mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [syzbot] [net?] [nfs?] WARNING in svc_destroy
@ 2026-11-06 18:09 syzbot
  2026-11-08  5:52 ` [syzbot] [nfs?] [net?] " syzbot
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: syzbot @ 2026-11-06 18:09 UTC (permalink / raw)
  To: Dai.Ngo, anna, cel, davem, edumazet, horms, jlayton, kuba,
	linux-kernel, linux-nfs, neil, netdev, okorniev, pabeni,
	syzkaller-bugs, tom, trondmy

Hello,

syzbot found the following issue on:

HEAD commit:    05441d697f7f Merge tag 'cocci-7.4-rc1' of git://git.kernel..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=14721d2d580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=1cf189394a856f11
dashboard link: https://syzkaller.appspot.com/bug?extid=8cbdf9aa6c281a4e6bbe
compiler:       gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44

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

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/e8f55ecc1d55/disk-05441d69.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/db66972c51fd/vmlinux-05441d69.xz
kernel image: https://storage.googleapis.com/syzbot-assets/6628bc03aa4a/bzImage-05441d69.xz

AI-generated root cause summary:
In fs/nfs/callback.c, nfs4_callback_up_net() first initializes an IPv4 TCP
listener transport via svc_xprt_create(..., PF_INET, ...), which links the
transport onto serv->sv_permsocks. When a subsequent call to
svc_xprt_create(..., PF_INET6, ...) fails with an error other than
-EAFNOSUPPORT, nfs4_callback_up_net() returns the error immediately without
tearing down the existing IPv4 transport. As a result, nfs_callback_up() unwinds
on error and calls xprt_svc_destroy_nullify_bc() -> svc_destroy(), which
triggers the WARN_ONCE(!list_empty(&serv->sv_permsocks)) warning because the
IPv4 transport is still attached to the service, and subsequently frees the
service while leaving the active listener with a dangling pointer.

full analysis:  https://syzkaller.appspot.com/x/ai_root_cause?x=8cbdf9aa6c281a4e6bbe

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+8cbdf9aa6c281a4e6bbe@syzkaller.appspotmail.com

NFS: callback service start failed
------------[ cut here ]------------
SVC: permsocks remain for NFSv4 callback
WARNING: net/sunrpc/svc.c:532 at svc_destroy+0x299/0x330 net/sunrpc/svc.c:532, CPU#1: syz.2.321/6994
Modules linked in:
CPU: 1 UID: 0 PID: 6994 Comm: syz.2.321 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/15/2026
RIP: 0010:svc_destroy+0x29d/0x330 net/sunrpc/svc.c:532
Code: 48 b8 00 00 00 00 00 fc ff df 49 8b 5d 00 48 8d 7b 18 48 89 fa 48 c1 ea 03 80 3c 02 00 75 67 48 8d 3d 17 5e 78 07 48 8b 73 18 <67> 48 0f b9 3a e9 d0 fd ff ff 48 8b 7c 24 08 e8 bf 13 86 f7 e9 a5
RSP: 0018:ffffc900042af860 EFLAGS: 00010246
RAX: dffffc0000000000 RBX: ffffffff9040ba80 RCX: ffffc900063d9000
RDX: 1ffffffff2081753 RSI: ffffffff8c37e800 RDI: ffffffff927aee30
RBP: 0000000000000000 R08: 00000000ffffffff R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888035744000
R13: ffff888055f04c00 R14: ffff88802de30000 R15: ffffffff9cd5b540
FS:  00007ff81118f6c0(0000) GS:ffff88812257c000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000110c29af61 CR3: 0000000056a04000 CR4: 00000000003526f0
Call Trace:
 <TASK>
 nfs_callback_up+0x511/0xad0 fs/nfs/callback.c:236
 nfs4_init_callback fs/nfs/nfs4client.c:327 [inline]
 nfs4_init_client_minor_version fs/nfs/nfs4client.c:379 [inline]
 nfs4_init_client+0x236/0x420 fs/nfs/nfs4client.c:429
 nfs_get_client+0xf38/0x1230 fs/nfs/client.c:467
 nfs4_set_client+0x3f6/0x640 fs/nfs/nfs4client.c:763
 nfs4_init_server.isra.0+0x5be/0xf80 fs/nfs/nfs4client.c:1014
 nfs4_create_server+0x185/0x2b0 fs/nfs/nfs4client.c:1063
 nfs4_try_get_tree+0x93/0x140 fs/nfs/nfs4super.c:228
 nfs_get_tree+0xa61/0x1440 fs/nfs/fs_context.c:1621
 vfs_get_tree+0x92/0x320 fs/super.c:1881
 fc_mount fs/namespace.c:1282 [inline]
 do_new_mount_fc fs/namespace.c:3910 [inline]
 do_new_mount fs/namespace.c:3986 [inline]
 path_mount+0x7d0/0x2850 fs/namespace.c:4337
 do_mount fs/namespace.c:4350 [inline]
 __do_sys_mount fs/namespace.c:4565 [inline]
 __se_sys_mount fs/namespace.c:4542 [inline]
 __x64_sys_mount+0x293/0x310 fs/namespace.c:4542
 do_syscall_x64 arch/x86/entry/syscall_64.c:61 [inline]
 do_syscall_64+0x123/0x790 arch/x86/entry/syscall_64.c:84
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7ff81039fb19
Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 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 e8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ff81118f028 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00007ff810625fa0 RCX: 00007ff81039fb19
RDX: 0000200000000480 RSI: 0000200000000440 RDI: 0000200000000400
RBP: 00007ff810437b70 R08: 00002000000004c0 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ff810626038 R14: 00007ff810625fa0 R15: 00007ffd2a563db8
 </TASK>
----------------
Code disassembly (best guess):
   0:	48 b8 00 00 00 00 00 	movabs $0xdffffc0000000000,%rax
   7:	fc ff df
   a:	49 8b 5d 00          	mov    0x0(%r13),%rbx
   e:	48 8d 7b 18          	lea    0x18(%rbx),%rdi
  12:	48 89 fa             	mov    %rdi,%rdx
  15:	48 c1 ea 03          	shr    $0x3,%rdx
  19:	80 3c 02 00          	cmpb   $0x0,(%rdx,%rax,1)
  1d:	75 67                	jne    0x86
  1f:	48 8d 3d 17 5e 78 07 	lea    0x7785e17(%rip),%rdi        # 0x7785e3d
  26:	48 8b 73 18          	mov    0x18(%rbx),%rsi
* 2a:	67 48 0f b9 3a       	ud1    (%edx),%rdi <-- trapping instruction
  2f:	e9 d0 fd ff ff       	jmp    0xfffffe04
  34:	48 8b 7c 24 08       	mov    0x8(%rsp),%rdi
  39:	e8 bf 13 86 f7       	call   0xf78613fd
  3e:	e9                   	.byte 0xe9
  3f:	a5                   	movsl  %ds:(%rsi),%es:(%rdi)


---
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@googlegroups.com.

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [syzbot] [nfs?] [net?] WARNING in svc_destroy
  2026-11-06 18:09 [syzbot] [net?] [nfs?] WARNING in svc_destroy syzbot
@ 2026-11-08  5:52 ` syzbot
  2026-11-08 14:08 ` Forwarded: [PATCH] Fix warning empty list " syzbot
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: syzbot @ 2026-11-08  5:52 UTC (permalink / raw)
  To: anna, cel, dai.ngo, davem, edumazet, horms, jlayton, kuba,
	linux-kernel, linux-nfs, neil, netdev, okorniev, pabeni,
	syzkaller-bugs, tom, trondmy

syzbot has found a reproducer for the following issue on:

HEAD commit:    d164c7d754f0 Merge tag 'devicetree-fixes-for-7.4-1' of git..
git tree:       git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
console output: https://syzkaller.appspot.com/x/log.txt?x=13ac11a1580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=1cf189394a856f11
dashboard link: https://syzkaller.appspot.com/bug?extid=8cbdf9aa6c281a4e6bbe
compiler:       gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=1494d369580000

AI-generated root cause summary:
In fs/nfs/callback.c, nfs4_callback_up_net() first initializes an IPv4 TCP
listener transport via svc_xprt_create(..., PF_INET, ...), which links the
transport onto serv->sv_permsocks. When a subsequent call to
svc_xprt_create(..., PF_INET6, ...) fails with an error other than
-EAFNOSUPPORT, nfs4_callback_up_net() returns the error immediately without
tearing down the existing IPv4 transport. As a result, nfs_callback_up() unwinds
on error and calls xprt_svc_destroy_nullify_bc() -> svc_destroy(), which
triggers the WARN_ONCE(!list_empty(&serv->sv_permsocks)) warning because the
IPv4 transport is still attached to the service, and subsequently frees the
service while leaving the active listener with a dangling pointer.

full analysis:  https://syzkaller.appspot.com/x/ai_root_cause?x=8cbdf9aa6c281a4e6bbe

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+8cbdf9aa6c281a4e6bbe@syzkaller.appspotmail.com

NFS: callback service start failed
------------[ cut here ]------------
SVC: permsocks remain for NFSv4 callback
WARNING: net/sunrpc/svc.c:532 at svc_destroy+0x299/0x330 net/sunrpc/svc.c:532, CPU#1: syz-executor154/6024
Modules linked in:
CPU: 1 UID: 0 PID: 6024 Comm: syz-executor154 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/06/2026
RIP: 0010:svc_destroy+0x29d/0x330 net/sunrpc/svc.c:532
Code: 48 b8 00 00 00 00 00 fc ff df 49 8b 5d 00 48 8d 7b 18 48 89 fa 48 c1 ea 03 80 3c 02 00 75 67 48 8d 3d e7 6d 77 07 48 8b 73 18 <67> 48 0f b9 3a e9 d0 fd ff ff 48 8b 7c 24 08 e8 7f 4d 85 f7 e9 a5
RSP: 0018:ffffc9000393f860 EFLAGS: 00010246
RAX: dffffc0000000000 RBX: ffffffff9040bf80 RCX: 0000000000000000
RDX: 1ffffffff20817f3 RSI: ffffffff8c37ebc0 RDI: ffffffff927b0660
RBP: 0000000000000000 R08: 00000000ffffffff R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888020bcc000
R13: ffff8880274a0000 R14: ffff88802c3c4000 R15: ffffffff9cd624c0
FS:  000055556ff69400(0000) GS:ffff888122575000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055fdb0009fd0 CR3: 00000000377ff000 CR4: 00000000003526f0
Call Trace:
 <TASK>
 nfs_callback_up+0x511/0xad0 fs/nfs/callback.c:236
 nfs4_init_callback fs/nfs/nfs4client.c:327 [inline]
 nfs4_init_client_minor_version fs/nfs/nfs4client.c:379 [inline]
 nfs4_init_client+0x236/0x420 fs/nfs/nfs4client.c:429
 nfs_get_client+0xf38/0x1230 fs/nfs/client.c:467
 nfs4_set_client+0x3f6/0x640 fs/nfs/nfs4client.c:763
 nfs4_init_server.isra.0+0x5be/0xf80 fs/nfs/nfs4client.c:1014
 nfs4_create_server+0x185/0x2b0 fs/nfs/nfs4client.c:1063
 nfs4_try_get_tree+0x93/0x140 fs/nfs/nfs4super.c:228
 nfs_get_tree+0xa61/0x1440 fs/nfs/fs_context.c:1621
 vfs_get_tree+0x92/0x320 fs/super.c:1881
 fc_mount fs/namespace.c:1282 [inline]
 do_new_mount_fc fs/namespace.c:3910 [inline]
 do_new_mount fs/namespace.c:3986 [inline]
 path_mount+0x7d0/0x2850 fs/namespace.c:4337
 do_mount fs/namespace.c:4350 [inline]
 __do_sys_mount fs/namespace.c:4565 [inline]
 __se_sys_mount fs/namespace.c:4542 [inline]
 __x64_sys_mount+0x293/0x310 fs/namespace.c:4542
 do_syscall_x64 arch/x86/entry/syscall_64.c:61 [inline]
 do_syscall_64+0x123/0x790 arch/x86/entry/syscall_64.c:84
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fd324de7f1a
Code: 48 c7 c2 d8 ff ff ff f7 d8 64 89 02 b8 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 d8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffca5d506e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fd324de7f1a
RDX: 00007fd324e4603f RSI: 00007fd324e45ffe RDI: 00007fd324e46044
RBP: 0000000000000004 R08: 00007ffca5d50760 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fd324e45ffe
R13: 0000000000001789 R14: 0000000000000801 R15: 00007ffca5d50760
 </TASK>
----------------
Code disassembly (best guess):
   0:	48 b8 00 00 00 00 00 	movabs $0xdffffc0000000000,%rax
   7:	fc ff df
   a:	49 8b 5d 00          	mov    0x0(%r13),%rbx
   e:	48 8d 7b 18          	lea    0x18(%rbx),%rdi
  12:	48 89 fa             	mov    %rdi,%rdx
  15:	48 c1 ea 03          	shr    $0x3,%rdx
  19:	80 3c 02 00          	cmpb   $0x0,(%rdx,%rax,1)
  1d:	75 67                	jne    0x86
  1f:	48 8d 3d e7 6d 77 07 	lea    0x7776de7(%rip),%rdi        # 0x7776e0d
  26:	48 8b 73 18          	mov    0x18(%rbx),%rsi
* 2a:	67 48 0f b9 3a       	ud1    (%edx),%rdi <-- trapping instruction
  2f:	e9 d0 fd ff ff       	jmp    0xfffffe04
  34:	48 8b 7c 24 08       	mov    0x8(%rsp),%rdi
  39:	e8 7f 4d 85 f7       	call   0xf7854dbd
  3e:	e9                   	.byte 0xe9
  3f:	a5                   	movsl  %ds:(%rsi),%es:(%rdi)


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Forwarded: [PATCH] Fix warning empty list in svc_destroy
  2026-11-06 18:09 [syzbot] [net?] [nfs?] WARNING in svc_destroy syzbot
  2026-11-08  5:52 ` [syzbot] [nfs?] [net?] " syzbot
@ 2026-11-08 14:08 ` syzbot
  2026-11-08 14:08 ` syzbot
  2026-11-08 18:42 ` Forwarded: Re: [syzbot] [net?] [nfs?] WARNING " syzbot
  3 siblings, 0 replies; 5+ messages in thread
From: syzbot @ 2026-11-08 14:08 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: [PATCH] Fix warning empty list in svc_destroy
Author: drifabdelmalekmohamedsaid@gmail.com

#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master

diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index bc282b744f34..ebcca3dd1269 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -60,8 +60,15 @@ static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net)
 		nn->nfs_callback_tcpport6 = ret;
 		dprintk("NFS: Callback listener port = %u (af %u, net %x)\n",
 			nn->nfs_callback_tcpport6, PF_INET6, net->ns.inum);
-	} else if (ret != -EAFNOSUPPORT)
+	} else if (ret != -EAFNOSUPPORT) {
+		struct svc_xprt *xprt = svc_find_xprt(serv, "tcp", net, PF_INET,
+			     nn->nfs_callback_tcpport);
+		if (xprt) {
+			svc_xprt_close(xprt);
+			svc_xprt_put(xprt);
+		}
 		goto out_err;
+	}
 	return 0;
 
 out_err:
-- 
2.47.3


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Forwarded: [PATCH] Fix warning empty list in svc_destroy
  2026-11-06 18:09 [syzbot] [net?] [nfs?] WARNING in svc_destroy syzbot
  2026-11-08  5:52 ` [syzbot] [nfs?] [net?] " syzbot
  2026-11-08 14:08 ` Forwarded: [PATCH] Fix warning empty list " syzbot
@ 2026-11-08 14:08 ` syzbot
  2026-11-08 18:42 ` Forwarded: Re: [syzbot] [net?] [nfs?] WARNING " syzbot
  3 siblings, 0 replies; 5+ messages in thread
From: syzbot @ 2026-11-08 14:08 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: [PATCH] Fix warning empty list in svc_destroy
Author: drifabdelmalekmohamedsaid@gmail.com

#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master

diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index bc282b744f34..ebcca3dd1269 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -60,8 +60,15 @@ static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net)
 		nn->nfs_callback_tcpport6 = ret;
 		dprintk("NFS: Callback listener port = %u (af %u, net %x)\n",
 			nn->nfs_callback_tcpport6, PF_INET6, net->ns.inum);
-	} else if (ret != -EAFNOSUPPORT)
+	} else if (ret != -EAFNOSUPPORT) {
+		struct svc_xprt *xprt = svc_find_xprt(serv, "tcp", net, PF_INET,
+			     nn->nfs_callback_tcpport);
+		if (xprt) {
+			svc_xprt_close(xprt);
+			svc_xprt_put(xprt);
+		}
 		goto out_err;
+	}
 	return 0;
 
 out_err:
-- 
2.47.3


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Forwarded: Re: [syzbot] [net?] [nfs?] WARNING in svc_destroy
  2026-11-06 18:09 [syzbot] [net?] [nfs?] WARNING in svc_destroy syzbot
                   ` (2 preceding siblings ...)
  2026-11-08 14:08 ` syzbot
@ 2026-11-08 18:42 ` syzbot
  3 siblings, 0 replies; 5+ messages in thread
From: syzbot @ 2026-11-08 18:42 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: Re: [syzbot] [net?] [nfs?] WARNING in svc_destroy
Author: pavankumaryalagada@gmail.com

#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d164c7d754f0

diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index bc282b744f34..29134e2c56cd 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -61,9 +61,11 @@ static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net)
                dprintk("NFS: Callback listener port = %u (af %u, net %x)\n",
                        nn->nfs_callback_tcpport6, PF_INET6, net->ns.inum);
        } else if (ret != -EAFNOSUPPORT)
-               goto out_err;
+               goto out_destroy_xprts;
        return 0;
 
+out_destroy_xprts:
+       svc_xprt_destroy_all(serv, net, false);
 out_err:
        return (ret) ? ret : -ENOMEM;
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-11-08 18:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-06 18:09 [syzbot] [net?] [nfs?] WARNING in svc_destroy syzbot
2026-11-08  5:52 ` [syzbot] [nfs?] [net?] " syzbot
2026-11-08 14:08 ` Forwarded: [PATCH] Fix warning empty list " syzbot
2026-11-08 14:08 ` syzbot
2026-11-08 18:42 ` Forwarded: Re: [syzbot] [net?] [nfs?] WARNING " syzbot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®