From: Sasha Levin Date: Mon, 17 Oct 2022 11:19:54 +0000 (-0400) Subject: Fixes for 4.14 X-Git-Tag: v5.4.219~13^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97f693b3842dfde87b19b362bf52c26877f6120a;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.14 Signed-off-by: Sasha Levin --- diff --git a/queue-4.14/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch b/queue-4.14/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch new file mode 100644 index 00000000000..b7600dda666 --- /dev/null +++ b/queue-4.14/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch @@ -0,0 +1,64 @@ +From cf0e4efbf2e0235658e87bfa18493da126db02b8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 4 Oct 2022 21:47:50 -0400 +Subject: net/ieee802154: don't warn zero-sized raw_sendmsg() + +From: Tetsuo Handa + +[ Upstream commit b12e924a2f5b960373459c8f8a514f887adf5cac ] + +syzbot is hitting skb_assert_len() warning at __dev_queue_xmit() [1], +for PF_IEEE802154 socket's zero-sized raw_sendmsg() request is hitting +__dev_queue_xmit() with skb->len == 0. + +Since PF_IEEE802154 socket's zero-sized raw_sendmsg() request was +able to return 0, don't call __dev_queue_xmit() if packet length is 0. + + ---------- + #include + #include + + int main(int argc, char *argv[]) + { + struct sockaddr_in addr = { .sin_family = AF_INET, .sin_addr.s_addr = htonl(INADDR_LOOPBACK) }; + struct iovec iov = { }; + struct msghdr hdr = { .msg_name = &addr, .msg_namelen = sizeof(addr), .msg_iov = &iov, .msg_iovlen = 1 }; + sendmsg(socket(PF_IEEE802154, SOCK_RAW, 0), &hdr, 0); + return 0; + } + ---------- + +Note that this might be a sign that commit fd1894224407c484 ("bpf: Don't +redirect packets with invalid pkt_len") should be reverted, for +skb->len == 0 was acceptable for at least PF_IEEE802154 socket. + +Link: https://syzkaller.appspot.com/bug?extid=5ea725c25d06fb9114c4 [1] +Reported-by: syzbot +Fixes: fd1894224407c484 ("bpf: Don't redirect packets with invalid pkt_len") +Signed-off-by: Tetsuo Handa +Signed-off-by: Alexander Aring +Link: https://lore.kernel.org/r/20221005014750.3685555-2-aahringo@redhat.com +Signed-off-by: Stefan Schmidt +Signed-off-by: Sasha Levin +--- + net/ieee802154/socket.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/net/ieee802154/socket.c b/net/ieee802154/socket.c +index 16bf114118c3..a8929675b5ab 100644 +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -284,6 +284,10 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) + err = -EMSGSIZE; + goto out_dev; + } ++ if (!size) { ++ err = 0; ++ goto out_dev; ++ } + + hlen = LL_RESERVED_SPACE(dev); + tlen = dev->needed_tailroom; +-- +2.35.1 + diff --git a/queue-4.14/series b/queue-4.14/series index 22ca3bd3cf5..37bd7a6880e 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -214,3 +214,4 @@ revert-usb-storage-add-quirk-for-samsung-fit-flash.patch usb-idmouse-fix-an-uninit-value-in-idmouse_open.patch perf-intel-pt-fix-segfault-in-intel_pt_print_info-with-uclibc.patch net-ieee802154-return-einval-for-unknown-addr-type.patch +net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch