From: "Michael S. Tsirkin" <mst@redhat.com>
To: Eric Dumazet <edumazet@google.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Simon Horman <horms@kernel.org>,
eric.dumazet@gmail.com,
syzbot+4f66250f6663c0c1d67e@syzkaller.appspotmail.com,
stable@vger.kernel.org, Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH net] net: tun: fix tun_napi_alloc_frags()
Date: Fri, 13 Dec 2024 13:56:49 -0500 [thread overview]
Message-ID: <20241213135635-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20241212222247.724674-1-edumazet@google.com>
On Thu, Dec 12, 2024 at 10:22:47PM +0000, Eric Dumazet wrote:
> syzbot reported the following crash [1]
>
> Issue came with the blamed commit. Instead of going through
> all the iov components, we keep using the first one
> and end up with a malformed skb.
>
> [1]
>
> kernel BUG at net/core/skbuff.c:2849 !
> Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
> CPU: 0 UID: 0 PID: 6230 Comm: syz-executor132 Not tainted 6.13.0-rc1-syzkaller-00407-g96b6fcc0ee41 #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
> RIP: 0010:__pskb_pull_tail+0x1568/0x1570 net/core/skbuff.c:2848
> Code: 38 c1 0f 8c 32 f1 ff ff 4c 89 f7 e8 92 96 74 f8 e9 25 f1 ff ff e8 e8 ae 09 f8 48 8b 5c 24 08 e9 eb fb ff ff e8 d9 ae 09 f8 90 <0f> 0b 66 0f 1f 44 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90
> RSP: 0018:ffffc90004cbef30 EFLAGS: 00010293
> RAX: ffffffff8995c347 RBX: 00000000fffffff2 RCX: ffff88802cf45a00
> RDX: 0000000000000000 RSI: 00000000fffffff2 RDI: 0000000000000000
> RBP: ffff88807df0c06a R08: ffffffff8995b084 R09: 1ffff1100fbe185c
> R10: dffffc0000000000 R11: ffffed100fbe185d R12: ffff888076e85d50
> R13: ffff888076e85c80 R14: ffff888076e85cf4 R15: ffff888076e85c80
> FS: 00007f0dca6ea6c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007f0dca6ead58 CR3: 00000000119da000 CR4: 00000000003526f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> <TASK>
> skb_cow_data+0x2da/0xcb0 net/core/skbuff.c:5284
> tipc_aead_decrypt net/tipc/crypto.c:894 [inline]
> tipc_crypto_rcv+0x402/0x24e0 net/tipc/crypto.c:1844
> tipc_rcv+0x57e/0x12a0 net/tipc/node.c:2109
> tipc_l2_rcv_msg+0x2bd/0x450 net/tipc/bearer.c:668
> __netif_receive_skb_list_ptype net/core/dev.c:5720 [inline]
> __netif_receive_skb_list_core+0x8b7/0x980 net/core/dev.c:5762
> __netif_receive_skb_list net/core/dev.c:5814 [inline]
> netif_receive_skb_list_internal+0xa51/0xe30 net/core/dev.c:5905
> gro_normal_list include/net/gro.h:515 [inline]
> napi_complete_done+0x2b5/0x870 net/core/dev.c:6256
> napi_complete include/linux/netdevice.h:567 [inline]
> tun_get_user+0x2ea0/0x4890 drivers/net/tun.c:1982
> tun_chr_write_iter+0x10d/0x1f0 drivers/net/tun.c:2057
> do_iter_readv_writev+0x600/0x880
> vfs_writev+0x376/0xba0 fs/read_write.c:1050
> do_writev+0x1b6/0x360 fs/read_write.c:1096
> do_syscall_x64 arch/x86/entry/common.c:52 [inline]
> do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
> Fixes: de4f5fed3f23 ("iov_iter: add iter_iovec() helper")
> Reported-by: syzbot+4f66250f6663c0c1d67e@syzkaller.appspotmail.com
> Closes: https://lore.kernel.org/netdev/675b61aa.050a0220.599f4.00bb.GAE@google.com/T/#u
> Cc: stable@vger.kernel.org
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Jens Axboe <axboe@kernel.dk>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> drivers/net/tun.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index d7a865ef370b6968c095510ae16b5196e30e54b9..e816aaba8e5f2ed06f8832f79553b6c976e75bb8 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -1481,7 +1481,7 @@ static struct sk_buff *tun_napi_alloc_frags(struct tun_file *tfile,
> skb->truesize += skb->data_len;
>
> for (i = 1; i < it->nr_segs; i++) {
> - const struct iovec *iov = iter_iov(it);
> + const struct iovec *iov = iter_iov(it) + i;
> size_t fragsz = iov->iov_len;
> struct page *page;
> void *frag;
> --
> 2.47.1.613.gc27f4b7a9f-goog
>
next prev parent reply other threads:[~2024-12-13 18:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-12 22:22 [PATCH net] net: tun: fix tun_napi_alloc_frags() Eric Dumazet
2024-12-12 22:33 ` Joe Damato
2024-12-12 22:33 ` Jens Axboe
2024-12-13 17:13 ` Willem de Bruijn
2024-12-13 18:56 ` Michael S. Tsirkin [this message]
2024-12-14 3:40 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241213135635-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=axboe@kernel.dk \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eric.dumazet@gmail.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
--cc=syzbot+4f66250f6663c0c1d67e@syzkaller.appspotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.