[syzbot] [net?] WARNING: refcount bug in __netif_napi_del (3)

From: syzbot
Date: Sat May 25 2024 - 13:37:41 EST


Hello,

syzbot found the following issue on:

HEAD commit: 56fb6f92854f Merge tag 'drm-next-2024-05-25' of https://gi..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=14cdd544980000
kernel config: https://syzkaller.appspot.com/x/.config?x=2b8d1faad9ceb620
dashboard link: https://syzkaller.appspot.com/bug?extid=0ba117466149911217d5
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: i386

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/7bc7510fe41f/non_bootable_disk-56fb6f92.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/65ffe3ca9bb3/vmlinux-56fb6f92.xz
kernel image: https://storage.googleapis.com/syzbot-assets/354ef77a71b6/bzImage-56fb6f92.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+0ba117466149911217d5@xxxxxxxxxxxxxxxxxxxxxxxxx

------------[ cut here ]------------
refcount_t: underflow; use-after-free.
WARNING: CPU: 3 PID: 1086 at lib/refcount.c:28 refcount_warn_saturate+0x14a/0x210 lib/refcount.c:28
Modules linked in:
CPU: 3 PID: 1086 Comm: kworker/u32:5 Not tainted 6.9.0-syzkaller-12277-g56fb6f92854f #0
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Workqueue: netns cleanup_net
RIP: 0010:refcount_warn_saturate+0x14a/0x210 lib/refcount.c:28
Code: ff 89 de e8 48 53 0f fd 84 db 0f 85 66 ff ff ff e8 9b 58 0f fd c6 05 56 0f 4d 0b 01 90 48 c7 c7 20 57 8f 8b e8 87 db d1 fc 90 <0f> 0b 90 90 e9 43 ff ff ff e8 78 58 0f fd 0f b6 1d 31 0f 4d 0b 31
RSP: 0018:ffffc90006c879d0 EFLAGS: 00010282
RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff81510229
RDX: ffff888020412440 RSI: ffffffff81510236 RDI: 0000000000000001
RBP: ffffe8ffad34d889 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000003 R12: ffffe8ffad34d889
R13: 0000000000000000 R14: 0000000000000005 R15: ffffe8ffad34d7a5
FS: 0000000000000000(0000) GS:ffff88802c300000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000f5e79000 CR3: 0000000061526000 CR4: 0000000000350ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
__refcount_sub_and_test include/linux/refcount.h:275 [inline]
__refcount_dec_and_test include/linux/refcount.h:307 [inline]
refcount_dec_and_test include/linux/refcount.h:325 [inline]
skb_unref include/linux/skbuff.h:1224 [inline]
__kfree_skb_reason net/core/skbuff.c:1195 [inline]
kfree_skb_reason+0x1e8/0x210 net/core/skbuff.c:1222
kfree_skb include/linux/skbuff.h:1257 [inline]
flush_gro_hash net/core/dev.c:6682 [inline]
__netif_napi_del net/core/dev.c:6697 [inline]
__netif_napi_del+0x311/0x570 net/core/dev.c:6688
gro_cells_destroy net/core/gro_cells.c:117 [inline]
gro_cells_destroy+0x10a/0x4d0 net/core/gro_cells.c:106
ip_tunnel_dev_free+0x19/0x60 net/ipv4/ip_tunnel.c:1100
netdev_run_todo+0x775/0x1250 net/core/dev.c:10692
cleanup_net+0x591/0xbf0 net/core/net_namespace.c:636
process_one_work+0x958/0x1ad0 kernel/workqueue.c:3231
process_scheduled_works kernel/workqueue.c:3312 [inline]
worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
kthread+0x2c1/0x3a0 kernel/kthread.c:389
ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup