From: Sasha Levin Date: Mon, 17 Oct 2022 11:19:54 +0000 (-0400) Subject: Fixes for 4.19 X-Git-Tag: v5.4.219~13^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4c26bb02ce12cf2146618e3553147e1ffd3e1c8;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch b/queue-4.19/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch new file mode 100644 index 00000000000..b9494508efe --- /dev/null +++ b/queue-4.19/net-ieee802154-don-t-warn-zero-sized-raw_sendmsg.patch @@ -0,0 +1,64 @@ +From 0f51fbe8125ee9146a8c291b7c36e2cb74b42d79 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 80495c88bfb9..76ad550dd48e 100644 +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -285,6 +285,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.19/series b/queue-4.19/series index 31ff7ff34b8..f44ba455113 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -242,3 +242,4 @@ fsi-master-ast-cf-fix-missing-of_node_put-in-fsi_mas.patch clk-bcm2835-make-peripheral-pllc-critical.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