From: Sasha Levin Date: Mon, 17 Oct 2022 11:19:53 +0000 (-0400) Subject: Fixes for 5.4 X-Git-Tag: v5.4.219~13^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=feba61699d099f8c6b7b598dbe6ad15db6e18924;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.4 Signed-off-by: Sasha Levin --- diff --git a/queue-5.4/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch b/queue-5.4/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch new file mode 100644 index 00000000000..5cdc0b1c59b --- /dev/null +++ b/queue-5.4/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch @@ -0,0 +1,64 @@ +From 8d0063e3cac446a8156df645906967b071078c03 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 a92b11999e5f..6d6c28581770 100644 +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -273,6 +273,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-5.4/revert-net-ieee802154-reject-zero-sized-raw_sendmsg.patch b/queue-5.4/revert-net-ieee802154-reject-zero-sized-raw_sendmsg.patch new file mode 100644 index 00000000000..b1cbdffe402 --- /dev/null +++ b/queue-5.4/revert-net-ieee802154-reject-zero-sized-raw_sendmsg.patch @@ -0,0 +1,38 @@ +From f0790065a223cdc915e7bf0ae0d98a52fa0f30b9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 4 Oct 2022 21:47:49 -0400 +Subject: Revert "net/ieee802154: reject zero-sized raw_sendmsg()" + +From: Alexander Aring + +[ Upstream commit 2eb2756f6c9e9621e022d78321ce40a62c4520b5 ] + +This reverts commit 3a4d061c699bd3eedc80dc97a4b2a2e1af83c6f5. + +There is a v2 which does return zero if zero length is given. + +Signed-off-by: Alexander Aring +Link: https://lore.kernel.org/r/20221005014750.3685555-1-aahringo@redhat.com +Signed-off-by: Stefan Schmidt +Signed-off-by: Sasha Levin +--- + net/ieee802154/socket.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/net/ieee802154/socket.c b/net/ieee802154/socket.c +index 72637d5994d8..a92b11999e5f 100644 +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -252,9 +252,6 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) + return -EOPNOTSUPP; + } + +- if (!size) +- return -EINVAL; +- + lock_sock(sk); + if (!sk->sk_bound_dev_if) + dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); +-- +2.35.1 + diff --git a/queue-5.4/series b/queue-5.4/series index 81f46b830d5..00315bbf85c 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -271,3 +271,5 @@ clk-bcm2835-make-peripheral-pllc-critical.patch perf-intel-pt-fix-segfault-in-intel_pt_print_info-with-uclibc.patch io_uring-af_unix-defer-registered-files-gc-to-io_uring-release.patch net-ieee802154-return-einval-for-unknown-addr-type.patch +revert-net-ieee802154-reject-zero-sized-raw_sendmsg.patch +net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch