Messages in this thread Patch in this message | | | From | Pavel Begunkov <> | Subject | [PATCH net-next] net: fix uninitialised msghdr->sg_from_iter | Date | Thu, 21 Jul 2022 15:25:46 +0100 |
| |
Because of how struct msghdr is usually initialised some fields and sg_from_iter in particular might be left out not initialised, so we can't safely use it in __zerocopy_sg_from_iter().
For now use the callback only when there is ->msg_ubuf set relying on the fact that they're used together and we properly zero ->msg_ubuf.
Fixes: ebe73a284f4de8 ("net: Allow custom iter handler in msghdr") Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> ---
It's not the best approach long term but let's fix first and later I'm going to clean up msghdr initialisation.
net/core/datagram.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/datagram.c b/net/core/datagram.c index 28cdb79df74d..ecbc0f471089 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c @@ -619,7 +619,7 @@ int __zerocopy_sg_from_iter(struct msghdr *msg, struct sock *sk, { int frag; - if (msg && msg->sg_from_iter) + if (msg && msg->msg_ubuf && msg->sg_from_iter) return msg->sg_from_iter(sk, skb, from, length); frag = skb_shinfo(skb)->nr_frags; -- 2.37.0
| |