From: Simon Horman <horms@kernel.org>
To: Kuniyuki Iwashima <kuniyu@google.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Kuniyuki Iwashima <kuni1840@gmail.com>,
netdev@vger.kernel.org,
syzbot+0c77cccd6b7cd917b35a@syzkaller.appspotmail.com
Subject: Re: [PATCH v2 net 3/3] atm: clip: Fix infinite recursive call of clip_push().
Date: Wed, 9 Jul 2025 19:54:49 +0100 [thread overview]
Message-ID: <20250709185449.GM721198@horms.kernel.org> (raw)
In-Reply-To: <20250704062416.1613927-4-kuniyu@google.com>
On Fri, Jul 04, 2025 at 06:23:53AM +0000, Kuniyuki Iwashima wrote:
> syzbot reported the splat below. [0]
>
> This happens if we call ioctl(ATMARP_MKIP) more than once.
>
> During the first call, clip_mkip() sets clip_push() to vcc->push(),
> and the second call copies it to clip_vcc->old_push().
>
> Later, when the socket is close()d, vcc_destroy_socket() passes
> NULL skb to clip_push(), which calls clip_vcc->old_push(),
> triggering the infinite recursion.
>
> Let's prevent the second ioctl(ATMARP_MKIP) by checking
> vcc->user_back, which is allocated by the first call as clip_vcc.
>
> Note also that we use lock_sock() to prevent racy calls.
>
> [0]:
> BUG: TASK stack guard page was hit at ffffc9000d66fff8 (stack is ffffc9000d670000..ffffc9000d678000)
> Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI
> CPU: 0 UID: 0 PID: 5322 Comm: syz.0.0 Not tainted 6.16.0-rc4-syzkaller #0 PREEMPT(full)
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
> RIP: 0010:clip_push+0x5/0x720 net/atm/clip.c:191
> Code: e0 8f aa 8c e8 1c ad 5b fa eb ae 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 55 <41> 57 41 56 41 55 41 54 53 48 83 ec 20 48 89 f3 49 89 fd 48 bd 00
> RSP: 0018:ffffc9000d670000 EFLAGS: 00010246
> RAX: 1ffff1100235a4a5 RBX: ffff888011ad2508 RCX: ffff8880003c0000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888037f01000
> RBP: dffffc0000000000 R08: ffffffff8fa104f7 R09: 1ffffffff1f4209e
> R10: dffffc0000000000 R11: ffffffff8a99b300 R12: ffffffff8a99b300
> R13: ffff888037f01000 R14: ffff888011ad2500 R15: ffff888037f01578
> FS: 000055557ab6d500(0000) GS:ffff88808d250000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: ffffc9000d66fff8 CR3: 0000000043172000 CR4: 0000000000352ef0
> Call Trace:
> <TASK>
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> ...
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> clip_push+0x6dc/0x720 net/atm/clip.c:200
> vcc_destroy_socket net/atm/common.c:183 [inline]
> vcc_release+0x157/0x460 net/atm/common.c:205
> __sock_release net/socket.c:647 [inline]
> sock_close+0xc0/0x240 net/socket.c:1391
> __fput+0x449/0xa70 fs/file_table.c:465
> task_work_run+0x1d1/0x260 kernel/task_work.c:227
> resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
> exit_to_user_mode_loop+0xec/0x110 kernel/entry/common.c:114
> exit_to_user_mode_prepare include/linux/entry-common.h:330 [inline]
> syscall_exit_to_user_mode_work include/linux/entry-common.h:414 [inline]
> syscall_exit_to_user_mode include/linux/entry-common.h:449 [inline]
> do_syscall_64+0x2bd/0x3b0 arch/x86/entry/syscall_64.c:100
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
> RIP: 0033:0x7ff31c98e929
> Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
> RSP: 002b:00007fffb5aa1f78 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
> RAX: 0000000000000000 RBX: 0000000000012747 RCX: 00007ff31c98e929
> RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
> RBP: 00007ff31cbb7ba0 R08: 0000000000000001 R09: 0000000db5aa226f
> R10: 00007ff31c7ff030 R11: 0000000000000246 R12: 00007ff31cbb608c
> R13: 00007ff31cbb6080 R14: ffffffffffffffff R15: 00007fffb5aa2090
> </TASK>
> Modules linked in:
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Reported-by: syzbot+0c77cccd6b7cd917b35a@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=2371d94d248d126c1eb1
> Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2025-07-09 18:54 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-04 6:23 [PATCH v2 net 0/3] atm: clip: Fix infinite recursion, potential null-ptr-deref, and memleak Kuniyuki Iwashima
2025-07-04 6:23 ` [PATCH v2 net 1/3] atm: clip: Fix potential null-ptr-deref in to_atmarpd() Kuniyuki Iwashima
2025-07-09 18:54 ` Simon Horman
2025-07-04 6:23 ` [PATCH v2 net 2/3] atm: clip: Fix memory leak of struct clip_vcc Kuniyuki Iwashima
2025-07-09 18:54 ` Simon Horman
2025-07-04 6:23 ` [PATCH v2 net 3/3] atm: clip: Fix infinite recursive call of clip_push() Kuniyuki Iwashima
2025-07-09 18:54 ` Simon Horman [this message]
2025-07-10 1:35 ` [PATCH v2 net 0/3] atm: clip: Fix infinite recursion, potential null-ptr-deref, and memleak 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=20250709185449.GM721198@horms.kernel.org \
--to=horms@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=kuni1840@gmail.com \
--cc=kuniyu@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=syzbot+0c77cccd6b7cd917b35a@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.