* linux-next NFSD: NULL pointer dereference at nfsd_svc()
@ 2010-08-02 7:47 Tetsuo Handa
2010-08-02 14:32 ` Jeff Layton
0 siblings, 1 reply; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-02 7:47 UTC (permalink / raw)
To: linux-fsdevel
Hello.
I got below failure on Debian Sarge when starting /usr/sbin/rpc.nfsd .
2.6.35 works fine.
Kernel config is at http://I-love.SAKURA.ne.jp/tmp/config-2.6.35-next-20100802
Regards.
[ 26.081814] pcnet32 0000:02:00.0: eth0: link up
[ 36.349815] BUG: unable to handle kernel NULL pointer dereference at 0000002c
[ 36.351254] IP: [<c11455a6>] nfsd_svc+0x56/0x110
[ 36.351398] *pde = 00000000
[ 36.351398] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[ 36.351398] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
[ 36.351398] Modules linked in: pcnet32
[ 36.351398]
[ 36.351398] Pid: 2615, comm: rpc.nfsd Tainted: G W 2.6.35-next-20100802 #2 440BX Desktop Reference Platform/VMware Virtual Platform
[ 36.351398] EIP: 0060:[<c11455a6>] EFLAGS: 00010202 CPU: 0
[ 36.351398] EIP is at nfsd_svc+0x56/0x110
[ 36.351398] EAX: 00000000 EBX: 00000008 ECX: 00000000 EDX: c154c728
[ 36.351398] ESI: 00000000 EDI: 00000801 EBP: dcf3bf68 ESP: dcf3bf54
[ 36.351398] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 36.351398] Process rpc.nfsd (pid: 2615, ti=dcf3b000 task=de6a8130 task.ti=dcf3b000)
[ 36.351398] Stack:
[ 36.351398] dec3cf28 00f3bf70 00000002 dec3cf28 00000008 dcf3bf70 c1145bba dcf3bf84
[ 36.351398] <0> c1145abf c1393f40 dec3cf28 00000000 dcf3bfac c10f633b dec3cf6c dec3cf6c
[ 36.351398] <0> 00000000 bfb34204 00000201 00000000 b7740b90 bfb3420c dcf3b000 c137fba1
[ 36.351398] Call Trace:
[ 36.351398] [<c1145bba>] ? write_svc+0x1a/0x30
[ 36.351398] [<c1145abf>] ? nfsctl_transaction_write+0x5f/0x80
[ 36.351398] [<c10f633b>] ? sys_nfsservctl+0xab/0xf0
[ 36.351398] [<c137fba1>] ? syscall_call+0x7/0xb
[ 36.351398] Code: 00 00 00 0f 4e d8 81 fb 01 20 00 00 b8 00 20 00 00 0f 4d d8 31 f6 85 db 0f 85 97 00 00 00 a1 84 95 c9 c1 85 c0 74 69 c6 45 f3 00 <8b> 48 2c 85 c9 75 13 85 db 74 0f c6 45 f3 01 8d 74 26 00 8d bc
[ 36.351398] EIP: [<c11455a6>] nfsd_svc+0x56/0x110 SS:ESP 0068:dcf3bf54
[ 36.351398] CR2: 000000000000002c
[ 36.397072] ---[ end trace 3ca898c1e9981f94 ]---
[ 37.597439] NET: Registered protocol family 10
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-02 7:47 linux-next NFSD: NULL pointer dereference at nfsd_svc() Tetsuo Handa
@ 2010-08-02 14:32 ` Jeff Layton
2010-08-02 14:36 ` Jeff Layton
0 siblings, 1 reply; 19+ messages in thread
From: Jeff Layton @ 2010-08-02 14:32 UTC (permalink / raw)
To: Tetsuo Handa, linux-nfs, bfields; +Cc: linux-fsdevel
On Mon, 02 Aug 2010 16:47:52 +0900
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> wrote:
> Hello.
>
> I got below failure on Debian Sarge when starting /usr/sbin/rpc.nfsd .
> 2.6.35 works fine.
> Kernel config is at http://I-love.SAKURA.ne.jp/tmp/config-2.6.35-next-20100802
> Regards.
>
>
> [ 26.081814] pcnet32 0000:02:00.0: eth0: link up
> [ 36.349815] BUG: unable to handle kernel NULL pointer dereference at 0000002c
> [ 36.351254] IP: [<c11455a6>] nfsd_svc+0x56/0x110
> [ 36.351398] *pde = 00000000
> [ 36.351398] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
> [ 36.351398] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
> [ 36.351398] Modules linked in: pcnet32
> [ 36.351398]
> [ 36.351398] Pid: 2615, comm: rpc.nfsd Tainted: G W 2.6.35-next-20100802 #2 440BX Desktop Reference Platform/VMware Virtual Platform
> [ 36.351398] EIP: 0060:[<c11455a6>] EFLAGS: 00010202 CPU: 0
> [ 36.351398] EIP is at nfsd_svc+0x56/0x110
> [ 36.351398] EAX: 00000000 EBX: 00000008 ECX: 00000000 EDX: c154c728
> [ 36.351398] ESI: 00000000 EDI: 00000801 EBP: dcf3bf68 ESP: dcf3bf54
> [ 36.351398] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 36.351398] Process rpc.nfsd (pid: 2615, ti=dcf3b000 task=de6a8130 task.ti=dcf3b000)
> [ 36.351398] Stack:
> [ 36.351398] dec3cf28 00f3bf70 00000002 dec3cf28 00000008 dcf3bf70 c1145bba dcf3bf84
> [ 36.351398] <0> c1145abf c1393f40 dec3cf28 00000000 dcf3bfac c10f633b dec3cf6c dec3cf6c
> [ 36.351398] <0> 00000000 bfb34204 00000201 00000000 b7740b90 bfb3420c dcf3b000 c137fba1
> [ 36.351398] Call Trace:
> [ 36.351398] [<c1145bba>] ? write_svc+0x1a/0x30
> [ 36.351398] [<c1145abf>] ? nfsctl_transaction_write+0x5f/0x80
> [ 36.351398] [<c10f633b>] ? sys_nfsservctl+0xab/0xf0
> [ 36.351398] [<c137fba1>] ? syscall_call+0x7/0xb
> [ 36.351398] Code: 00 00 00 0f 4e d8 81 fb 01 20 00 00 b8 00 20 00 00 0f 4d d8 31 f6 85 db 0f 85 97 00 00 00 a1 84 95 c9 c1 85 c0 74 69 c6 45 f3 00 <8b> 48 2c 85 c9 75 13 85 db 74 0f c6 45 f3 01 8d 74 26 00 8d bc
> [ 36.351398] EIP: [<c11455a6>] nfsd_svc+0x56/0x110 SS:ESP 0068:dcf3bf54
> [ 36.351398] CR2: 000000000000002c
> [ 36.397072] ---[ end trace 3ca898c1e9981f94 ]---
> [ 37.597439] NET: Registered protocol family 10
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
(cc'ing linux-nfs list...)
Ahh I think I see the bug, nfsd_svc does this:
first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
...and only later does this:
error = nfsd_create_serv();
if (error)
goto out_shutdown;
Because you're using the older nfsctl interface rather
than /proc/fs/nfsd, nfsd_svc is called before write_versions and
nfsd_serv is NULL.
Does the following patch fix it?
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 92173bd..79cfd7a 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -432,7 +432,9 @@ nfsd_svc(unsigned short port, int nrservs)
if (nrservs == 0 && nfsd_serv == NULL)
goto out;
- first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
+ first_thread = ((nfsd_serv == NULL) ||
+ (nfsd_serv->sv_nrthreads == 0)) &&
+ (nrservs != 0);
if (first_thread) {
error = nfsd_startup(port, nrservs);
--
Jeff Layton <jlayton@redhat.com>
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-02 14:32 ` Jeff Layton
@ 2010-08-02 14:36 ` Jeff Layton
[not found] ` <20100802103620.5638dac1-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: Jeff Layton @ 2010-08-02 14:36 UTC (permalink / raw)
To: Jeff Layton; +Cc: Tetsuo Handa, linux-nfs, bfields, linux-fsdevel
On Mon, 2 Aug 2010 10:32:14 -0400
Jeff Layton <jlayton@redhat.com> wrote:
> On Mon, 02 Aug 2010 16:47:52 +0900
> Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> wrote:
>
> > Hello.
> >
> > I got below failure on Debian Sarge when starting /usr/sbin/rpc.nfsd .
> > 2.6.35 works fine.
> > Kernel config is at http://I-love.SAKURA.ne.jp/tmp/config-2.6.35-next-20100802
> > Regards.
> >
> >
> > [ 26.081814] pcnet32 0000:02:00.0: eth0: link up
> > [ 36.349815] BUG: unable to handle kernel NULL pointer dereference at 0000002c
> > [ 36.351254] IP: [<c11455a6>] nfsd_svc+0x56/0x110
> > [ 36.351398] *pde = 00000000
> > [ 36.351398] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
> > [ 36.351398] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
> > [ 36.351398] Modules linked in: pcnet32
> > [ 36.351398]
> > [ 36.351398] Pid: 2615, comm: rpc.nfsd Tainted: G W 2.6.35-next-20100802 #2 440BX Desktop Reference Platform/VMware Virtual Platform
> > [ 36.351398] EIP: 0060:[<c11455a6>] EFLAGS: 00010202 CPU: 0
> > [ 36.351398] EIP is at nfsd_svc+0x56/0x110
> > [ 36.351398] EAX: 00000000 EBX: 00000008 ECX: 00000000 EDX: c154c728
> > [ 36.351398] ESI: 00000000 EDI: 00000801 EBP: dcf3bf68 ESP: dcf3bf54
> > [ 36.351398] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> > [ 36.351398] Process rpc.nfsd (pid: 2615, ti=dcf3b000 task=de6a8130 task.ti=dcf3b000)
> > [ 36.351398] Stack:
> > [ 36.351398] dec3cf28 00f3bf70 00000002 dec3cf28 00000008 dcf3bf70 c1145bba dcf3bf84
> > [ 36.351398] <0> c1145abf c1393f40 dec3cf28 00000000 dcf3bfac c10f633b dec3cf6c dec3cf6c
> > [ 36.351398] <0> 00000000 bfb34204 00000201 00000000 b7740b90 bfb3420c dcf3b000 c137fba1
> > [ 36.351398] Call Trace:
> > [ 36.351398] [<c1145bba>] ? write_svc+0x1a/0x30
> > [ 36.351398] [<c1145abf>] ? nfsctl_transaction_write+0x5f/0x80
> > [ 36.351398] [<c10f633b>] ? sys_nfsservctl+0xab/0xf0
> > [ 36.351398] [<c137fba1>] ? syscall_call+0x7/0xb
> > [ 36.351398] Code: 00 00 00 0f 4e d8 81 fb 01 20 00 00 b8 00 20 00 00 0f 4d d8 31 f6 85 db 0f 85 97 00 00 00 a1 84 95 c9 c1 85 c0 74 69 c6 45 f3 00 <8b> 48 2c 85 c9 75 13 85 db 74 0f c6 45 f3 01 8d 74 26 00 8d bc
> > [ 36.351398] EIP: [<c11455a6>] nfsd_svc+0x56/0x110 SS:ESP 0068:dcf3bf54
> > [ 36.351398] CR2: 000000000000002c
> > [ 36.397072] ---[ end trace 3ca898c1e9981f94 ]---
> > [ 37.597439] NET: Registered protocol family 10
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
> (cc'ing linux-nfs list...)
>
> Ahh I think I see the bug, nfsd_svc does this:
>
> first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
>
> ...and only later does this:
>
> error = nfsd_create_serv();
> if (error)
> goto out_shutdown;
>
> Because you're using the older nfsctl interface rather
> than /proc/fs/nfsd, nfsd_svc is called before write_versions and
> nfsd_serv is NULL.
>
> Does the following patch fix it?
>
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index 92173bd..79cfd7a 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -432,7 +432,9 @@ nfsd_svc(unsigned short port, int nrservs)
> if (nrservs == 0 && nfsd_serv == NULL)
> goto out;
>
> - first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
> + first_thread = ((nfsd_serv == NULL) ||
> + (nfsd_serv->sv_nrthreads == 0)) &&
> + (nrservs != 0);
>
> if (first_thread) {
> error = nfsd_startup(port, nrservs);
>
>
nevermind...that patch will probably fix this panic, but there's another
possible one in nfsd_init_socks. We'll have to fix that one too.
--
Jeff Layton <jlayton@redhat.com>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100802103620.5638dac1-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
@ 2010-08-02 18:16 ` J. Bruce Fields
2010-08-02 18:53 ` Jeff Layton
[not found] ` <20100802181634.GD12637-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 2 replies; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-02 18:16 UTC (permalink / raw)
To: Jeff Layton
Cc: Tetsuo Handa, linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA
On Mon, Aug 02, 2010 at 10:36:20AM -0400, Jeff Layton wrote:
> nevermind...that patch will probably fix this panic, but there's another
> possible one in nfsd_init_socks. We'll have to fix that one too.
(After private conversation with Jeff): something like this?
Compile-tested only.
--b.
commit 86d0cc3b91315c475c1c38ee7a06b5ebe5c01755
Author: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date: Mon Aug 2 14:12:44 2010 -0400
nfsd: fix startup/shutdown order bug
We must create the server before we can call init_socks or check the
number of threads.
Symptoms were a NULL pointer dereference in nfsd_svc(). Problem
identified by Jeff Layton.
Reported-by: Tetsuo Handa <penguin-kernel-JPay3/Yim36HaxMnTkn67Xf5DAMn2ifp@public.gmane.org>
Signed-off-by: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 92173bd..1de1cb3 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -432,29 +432,30 @@ nfsd_svc(unsigned short port, int nrservs)
if (nrservs == 0 && nfsd_serv == NULL)
goto out;
+ error = nfsd_create_serv();
+ if (error)
+ goto out;
+
first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
if (first_thread) {
error = nfsd_startup(port, nrservs);
if (error)
- goto out;
+ goto out_destroy;
}
- error = nfsd_create_serv();
- if (error)
- goto out_shutdown;
error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
if (error)
- goto out_destroy;
+ goto out_shutdown;
/* We are holding a reference to nfsd_serv which
* we don't want to count in the return value,
* so subtract 1
*/
error = nfsd_serv->sv_nrthreads - 1;
-out_destroy:
- svc_destroy(nfsd_serv); /* Release server */
out_shutdown:
if (error < 0 && first_thread)
nfsd_shutdown();
+out_destroy:
+ svc_destroy(nfsd_serv); /* Release server */
out:
mutex_unlock(&nfsd_mutex);
return error;
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-02 18:16 ` J. Bruce Fields
@ 2010-08-02 18:53 ` Jeff Layton
[not found] ` <20100802181634.GD12637-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
1 sibling, 0 replies; 19+ messages in thread
From: Jeff Layton @ 2010-08-02 18:53 UTC (permalink / raw)
To: J. Bruce Fields; +Cc: Tetsuo Handa, linux-nfs, linux-fsdevel
On Mon, 2 Aug 2010 14:16:34 -0400
"J. Bruce Fields" <bfields@fieldses.org> wrote:
> On Mon, Aug 02, 2010 at 10:36:20AM -0400, Jeff Layton wrote:
> > nevermind...that patch will probably fix this panic, but there's another
> > possible one in nfsd_init_socks. We'll have to fix that one too.
>
> (After private conversation with Jeff): something like this?
> Compile-tested only.
>
> --b.
>
> commit 86d0cc3b91315c475c1c38ee7a06b5ebe5c01755
> Author: J. Bruce Fields <bfields@redhat.com>
> Date: Mon Aug 2 14:12:44 2010 -0400
>
> nfsd: fix startup/shutdown order bug
>
> We must create the server before we can call init_socks or check the
> number of threads.
>
> Symptoms were a NULL pointer dereference in nfsd_svc(). Problem
> identified by Jeff Layton.
>
> Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
>
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index 92173bd..1de1cb3 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -432,29 +432,30 @@ nfsd_svc(unsigned short port, int nrservs)
> if (nrservs == 0 && nfsd_serv == NULL)
> goto out;
>
> + error = nfsd_create_serv();
> + if (error)
> + goto out;
> +
> first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
>
> if (first_thread) {
> error = nfsd_startup(port, nrservs);
> if (error)
> - goto out;
> + goto out_destroy;
> }
> - error = nfsd_create_serv();
> - if (error)
> - goto out_shutdown;
> error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
> if (error)
> - goto out_destroy;
> + goto out_shutdown;
> /* We are holding a reference to nfsd_serv which
> * we don't want to count in the return value,
> * so subtract 1
> */
> error = nfsd_serv->sv_nrthreads - 1;
> -out_destroy:
> - svc_destroy(nfsd_serv); /* Release server */
> out_shutdown:
> if (error < 0 && first_thread)
> nfsd_shutdown();
> +out_destroy:
> + svc_destroy(nfsd_serv); /* Release server */
> out:
> mutex_unlock(&nfsd_mutex);
> return error;
I was able to reproduce the problem and the patch fixes it. Assuming
that Tetsuo's testing goes well:
Reviewed-and-Tested-by: Jeff Layton <jlayton@redhat.com>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100802181634.GD12637-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-03 1:09 ` Tetsuo Handa
2010-08-03 15:48 ` J. Bruce Fields
0 siblings, 1 reply; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-03 1:09 UTC (permalink / raw)
To: bfields-uC3wQj2KruNg9hUCZPvPmw
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
Hello.
That patch solved the NULL pointer dereference problem. Thank you.
But I got another problem. After applying that patch on 2.6.35-next-20100802 ,
mount operation fails with timeout error.
# cat /etc/exports
/usr/src/ *(rw,no_root_squash,async)
# time mount 127.0.0.1:/usr/src/ /mnt/
mount: Connection timed out
real 1m21.099s
user 0m0.000s
sys 0m0.028s
2.6.35 works fine. (shown below)
# time mount 127.0.0.1:/usr/src/ /mnt/
real 0m0.105s
user 0m0.000s
sys 0m0.020s
Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-03 1:09 ` Tetsuo Handa
@ 2010-08-03 15:48 ` J. Bruce Fields
2010-08-03 16:24 ` J. Bruce Fields
[not found] ` <20100803154851.GA23467-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 2 replies; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-03 15:48 UTC (permalink / raw)
To: Tetsuo Handa; +Cc: linux-nfs, linux-fsdevel, jlayton
On Tue, Aug 03, 2010 at 10:09:03AM +0900, Tetsuo Handa wrote:
> Hello.
>
> That patch solved the NULL pointer dereference problem. Thank you.
>
> But I got another problem. After applying that patch on 2.6.35-next-20100802 ,
> mount operation fails with timeout error.
Argh, yes, problem found, I think--I'll do some more testing and send
you another attempt....
--b.
>
> # cat /etc/exports
> /usr/src/ *(rw,no_root_squash,async)
> # time mount 127.0.0.1:/usr/src/ /mnt/
> mount: Connection timed out
>
> real 1m21.099s
> user 0m0.000s
> sys 0m0.028s
>
>
> 2.6.35 works fine. (shown below)
>
> # time mount 127.0.0.1:/usr/src/ /mnt/
>
> real 0m0.105s
> user 0m0.000s
> sys 0m0.020s
>
> Regards.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-03 15:48 ` J. Bruce Fields
@ 2010-08-03 16:24 ` J. Bruce Fields
[not found] ` <20100803154851.GA23467-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
1 sibling, 0 replies; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-03 16:24 UTC (permalink / raw)
To: Tetsuo Handa; +Cc: linux-nfs, linux-fsdevel, jlayton
On Tue, Aug 03, 2010 at 11:48:51AM -0400, J. Bruce Fields wrote:
> On Tue, Aug 03, 2010 at 10:09:03AM +0900, Tetsuo Handa wrote:
> > Hello.
> >
> > That patch solved the NULL pointer dereference problem. Thank you.
> >
> > But I got another problem. After applying that patch on 2.6.35-next-20100802 ,
> > mount operation fails with timeout error.
>
> Argh, yes, problem found, I think--I'll do some more testing and send
> you another attempt....
How about this?
(By the way, are you using something other than the standard
/etc/init.d/nfs-kernel-server to start/stop the server? Or have you
customized your installation in any way? Just curious, as the bugs
you're finding are good, but I'd expect different symptoms from the
default setup.)
--b.
commit 3deb279d6e5625407919a875db3a2461199566b3
Author: J. Bruce Fields <bfields@redhat.com>
Date: Mon Aug 2 14:12:44 2010 -0400
nfsd: fix startup/shutdown order bug
We must create the server before we can call init_socks or check the
number of threads.
Symptoms were a NULL pointer dereference in nfsd_svc(). Problem
identified by Jeff Layton.
Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 92173bd..58e3d4c 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -420,7 +420,7 @@ int
nfsd_svc(unsigned short port, int nrservs)
{
int error;
- bool first_thread;
+ bool unstarted, first_thread;
mutex_lock(&nfsd_mutex);
dprintk("nfsd: creating service\n");
@@ -432,29 +432,31 @@ nfsd_svc(unsigned short port, int nrservs)
if (nrservs == 0 && nfsd_serv == NULL)
goto out;
- first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
+ unstarted = nfsd_serv == NULL || nfsd_serv->sv_nrthreads == 0;
+ first_thread = unstarted && (nrservs != 0);
+
+ error = nfsd_create_serv();
+ if (error)
+ goto out;
if (first_thread) {
error = nfsd_startup(port, nrservs);
if (error)
- goto out;
+ goto out_destroy;
}
- error = nfsd_create_serv();
- if (error)
- goto out_shutdown;
error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
if (error)
- goto out_destroy;
+ goto out_shutdown;
/* We are holding a reference to nfsd_serv which
* we don't want to count in the return value,
* so subtract 1
*/
error = nfsd_serv->sv_nrthreads - 1;
-out_destroy:
- svc_destroy(nfsd_serv); /* Release server */
out_shutdown:
if (error < 0 && first_thread)
nfsd_shutdown();
+out_destroy:
+ svc_destroy(nfsd_serv); /* Release server */
out:
mutex_unlock(&nfsd_mutex);
return error;
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100803154851.GA23467-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-04 0:13 ` Tetsuo Handa
[not found] ` <201008040013.o740DmYK024832-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-04 0:13 UTC (permalink / raw)
To: bfields-uC3wQj2KruNg9hUCZPvPmw
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
J. Bruce Fields wrote:
> How about this?
After reverting commit 86d0cc3b91315c475c1c38ee7a06b5ebe5c01755 and applying
commit 3deb279d6e5625407919a875db3a2461199566b3, I get below NULL pointer
dereference problem when doing "mount 127.0.0.1:/usr/src/ /mnt/".
[ 96.398495] BUG: unable to handle kernel NULL pointer dereference at 00000010
[ 96.400348] IP: [<c1356dd4>] svc_process_common+0x2c4/0x5c0
[ 96.401606] *pde = 00000000
[ 96.401606] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
[ 96.401606] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
[ 96.401606] Modules linked in: nfs ipv6 pcnet32
[ 96.401606]
[ 96.401606] Pid: 2623, comm: nfsd Tainted: G W 2.6.35-next-20100802 #4 440BX Desktop Reference Platform/VMware Virtual Platform
[ 96.401606] EIP: 0060:[<c1356dd4>] EFLAGS: 00010246 CPU: 1
[ 96.401606] EIP is at svc_process_common+0x2c4/0x5c0
[ 96.401606] EAX: 00000000 EBX: dfb8b0c8 ECX: 00000001 EDX: 00000004
[ 96.401606] ESI: dfb8b0f0 EDI: 00000010 EBP: dcac4f40 ESP: dcac4ef0
[ 96.401606] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[ 96.401606] Process nfsd (pid: 2623, ti=dcac4000 task=dc85a7b0 task.ti=dcac4000)
[ 96.401606] Stack:
[ 96.401606] dc85a7b0 00000002 00000000 dc85ac5c dc85a7b0 dcac4f28 00000004 00000000
[ 96.401606] <0> 00000002 000186a3 dcb6c008 dcb6c014 dc805f30 c154ca20 c154cca8 dfb8b000
[ 96.401606] <0> 01000000 8c4194fd dfb8b000 dfb8b0c8 dcac4f68 c13571cf dcac4f68 c105d087
[ 96.401606] Call Trace:
[ 96.401606] [<c13571cf>] ? svc_process+0xff/0x110
[ 96.401606] [<c105d087>] ? __validate_process_creds+0x47/0xd0
[ 96.401606] [<c1145739>] ? nfsd+0xc9/0x160
[ 96.401606] [<c1035f86>] ? complete+0x46/0x60
[ 96.401606] [<c1055d05>] ? kthread+0x75/0x80
[ 96.401606] [<c1145670>] ? nfsd+0x0/0x160
[ 96.401606] [<c1055c90>] ? kthread+0x0/0x80
[ 96.401606] [<c100317a>] ? kernel_thread_helper+0x6/0x1c
[ 96.401606] Code: 4d dc c7 01 00 00 00 00 8b 55 e4 83 46 04 04 8b 42 10 ff 42 18 8b 4d ec 8b b9 6c 0d 00 00 89 45 c8 89 c1 c1 e9 02 31 c0 8b 55 c8 <f3> ab f6 c2 02 74 02 66 ab f6 c2 01 74 01 aa 8b 45 e4 8b 4d ec
[ 96.401606] EIP: [<c1356dd4>] svc_process_common+0x2c4/0x5c0 SS:ESP 0068:dcac4ef0
[ 96.401606] CR2: 0000000000000010
[ 96.527321] ---[ end trace 0de1e1ad73b15980 ]---
> (By the way, are you using something other than the standard
> /etc/init.d/nfs-kernel-server to start/stop the server? Or have you
> customized your installation in any way? Just curious, as the bugs
> you're finding are good, but I'd expect different symptoms from the
> default setup.)
I'm using standard /etc/init.d/nfs-kernel-server script installed by Debian
Sarge and using it without modification.
# ls -l /etc/init.d/nfs-*
-rwxr-xr-x 1 root root 1984 Jan 5 2005 /etc/init.d/nfs-common
-rwxr-xr-x 1 root root 2356 Aug 4 2003 /etc/init.d/nfs-kernel-server
-rwxr-xr-x 1 root root 1241 Jan 30 2006 /etc/init.d/nfs-user-server
Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <201008040013.o740DmYK024832-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
@ 2010-08-04 19:40 ` J. Bruce Fields
[not found] ` <20100804194045.GD18200-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-04 19:40 UTC (permalink / raw)
To: Tetsuo Handa
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
On Wed, Aug 04, 2010 at 09:13:48AM +0900, Tetsuo Handa wrote:
> J. Bruce Fields wrote:
> > How about this?
>
> After reverting commit 86d0cc3b91315c475c1c38ee7a06b5ebe5c01755 and applying
> commit 3deb279d6e5625407919a875db3a2461199566b3, I get below NULL pointer
> dereference problem when doing "mount 127.0.0.1:/usr/src/ /mnt/".
OK, I'm not seeing the explanation yet.....
>
> [ 96.398495] BUG: unable to handle kernel NULL pointer dereference at 00000010
> [ 96.400348] IP: [<c1356dd4>] svc_process_common+0x2c4/0x5c0
Maybe figuring out exactly hwere that is would help work out what's
going on. Doing
make net/sunrpc/svc.lst
then looking for c1356dd4 (or just mailing me svc.lst) could help.
> [ 96.401606] *pde = 00000000
> [ 96.401606] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
> [ 96.401606] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
> [ 96.401606] Modules linked in: nfs ipv6 pcnet32
> [ 96.401606]
> [ 96.401606] Pid: 2623, comm: nfsd Tainted: G W 2.6.35-next-20100802 #4 440BX Desktop Reference Platform/VMware Virtual Platform
> [ 96.401606] EIP: 0060:[<c1356dd4>] EFLAGS: 00010246 CPU: 1
> [ 96.401606] EIP is at svc_process_common+0x2c4/0x5c0
> [ 96.401606] EAX: 00000000 EBX: dfb8b0c8 ECX: 00000001 EDX: 00000004
> [ 96.401606] ESI: dfb8b0f0 EDI: 00000010 EBP: dcac4f40 ESP: dcac4ef0
> [ 96.401606] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
> [ 96.401606] Process nfsd (pid: 2623, ti=dcac4000 task=dc85a7b0 task.ti=dcac4000)
> [ 96.401606] Stack:
> [ 96.401606] dc85a7b0 00000002 00000000 dc85ac5c dc85a7b0 dcac4f28 00000004 00000000
> [ 96.401606] <0> 00000002 000186a3 dcb6c008 dcb6c014 dc805f30 c154ca20 c154cca8 dfb8b000
> [ 96.401606] <0> 01000000 8c4194fd dfb8b000 dfb8b0c8 dcac4f68 c13571cf dcac4f68 c105d087
> [ 96.401606] Call Trace:
> [ 96.401606] [<c13571cf>] ? svc_process+0xff/0x110
> [ 96.401606] [<c105d087>] ? __validate_process_creds+0x47/0xd0
> [ 96.401606] [<c1145739>] ? nfsd+0xc9/0x160
> [ 96.401606] [<c1035f86>] ? complete+0x46/0x60
> [ 96.401606] [<c1055d05>] ? kthread+0x75/0x80
> [ 96.401606] [<c1145670>] ? nfsd+0x0/0x160
> [ 96.401606] [<c1055c90>] ? kthread+0x0/0x80
> [ 96.401606] [<c100317a>] ? kernel_thread_helper+0x6/0x1c
> [ 96.401606] Code: 4d dc c7 01 00 00 00 00 8b 55 e4 83 46 04 04 8b 42 10 ff 42 18 8b 4d ec 8b b9 6c 0d 00 00 89 45 c8 89 c1 c1 e9 02 31 c0 8b 55 c8 <f3> ab f6 c2 02 74 02 66 ab f6 c2 01 74 01 aa 8b 45 e4 8b 4d ec
> [ 96.401606] EIP: [<c1356dd4>] svc_process_common+0x2c4/0x5c0 SS:ESP 0068:dcac4ef0
> [ 96.401606] CR2: 0000000000000010
> [ 96.527321] ---[ end trace 0de1e1ad73b15980 ]---
>
> > (By the way, are you using something other than the standard
> > /etc/init.d/nfs-kernel-server to start/stop the server? Or have you
> > customized your installation in any way? Just curious, as the bugs
> > you're finding are good, but I'd expect different symptoms from the
> > default setup.)
> I'm using standard /etc/init.d/nfs-kernel-server script installed by Debian
> Sarge and using it without modification.
OK, I wonder if Sarge didn't yet mount the nfsd filesystem on
/proc/fs/nfsd.
--b.
>
> # ls -l /etc/init.d/nfs-*
> -rwxr-xr-x 1 root root 1984 Jan 5 2005 /etc/init.d/nfs-common
> -rwxr-xr-x 1 root root 2356 Aug 4 2003 /etc/init.d/nfs-kernel-server
> -rwxr-xr-x 1 root root 1241 Jan 30 2006 /etc/init.d/nfs-user-server
>
> Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100804194045.GD18200-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-05 1:10 ` Tetsuo Handa
[not found] ` <201008050110.o751AG18066496-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-05 1:10 UTC (permalink / raw)
To: bfields-uC3wQj2KruNg9hUCZPvPmw
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
J. Bruce Fields wrote:
> Maybe figuring out exactly hwere that is would help work out what's
> going on. Doing
>
> make net/sunrpc/svc.lst
>
> then looking for c1356dd4 (or just mailing me svc.lst) could help.
"make net/sunrpc/svc.lst" failed due to following error.
BFD: Dwarf Error: Abbrev offset (3238007024) greater than or equal to .debug_abbrev size (1607).
Manual printk() debug reported that
rqstp->rq_argp == rqstp->rq_resp == ZERO_SIZE_PTR and
procp->pc_argsize == procp->pc_ressize == 4.
--- linux-2.6.35-next.orig/net/sunrpc/svc.c
+++ linux-2.6.35-next/net/sunrpc/svc.c
@@ -1084,6 +1084,11 @@ svc_process_common(struct svc_rqst *rqst
procp->pc_count++;
/* Initialize storage for argp and resp */
+ printk(KERN_INFO "rqstp=%p procp=%p\n", rqstp, procp);
+ printk(KERN_INFO "rqstp->rq_argp=%p procp->pc_argsize=%u\n",
+ rqstp->rq_argp, procp->pc_argsize);
+ printk(KERN_INFO "rqstp->rq_resp=%p procp->pc_ressize=%u\n",
+ rqstp->rq_resp, procp->pc_ressize);
memset(rqstp->rq_argp, 0, procp->pc_argsize);
memset(rqstp->rq_resp, 0, procp->pc_ressize);
[ 37.669174] NET: Registered protocol family 10
[ 38.080725] svc: failed to register lockdv1 RPC service (errno 97).
[ 122.895707] rqstp=dcb91000 procp=c154ca20
[ 122.896533] rqstp->rq_argp=00000010 procp->pc_argsize=4
[ 122.897484] rqstp->rq_resp=00000010 procp->pc_ressize=4
[ 122.898609] BUG: unable to handle kernel NULL pointer dereference at 00000010
[ 122.899964] IP: [<c1356e80>] svc_process_common+0x370/0x640
[ 122.900493] *pde = 00000000
[ 122.900493] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
[ 122.923308] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
[ 122.923308] Modules linked in: nfs ipv6 pcnet32
> OK, I wonder if Sarge didn't yet mount the nfsd filesystem on
> /proc/fs/nfsd.
According to /proc/mounts , the nfsd filesystem is not mounted on
/proc/fs/nfsd . But mounting it manually before starting nfsd did not help.
Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <201008050110.o751AG18066496-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
@ 2010-08-05 20:46 ` J. Bruce Fields
[not found] ` <20100805204612.GA13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-05 20:46 UTC (permalink / raw)
To: Tetsuo Handa
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
On Thu, Aug 05, 2010 at 10:10:16AM +0900, Tetsuo Handa wrote:
> J. Bruce Fields wrote:
> > Maybe figuring out exactly hwere that is would help work out what's
> > going on. Doing
> >
> > make net/sunrpc/svc.lst
> >
> > then looking for c1356dd4 (or just mailing me svc.lst) could help.
>
> "make net/sunrpc/svc.lst" failed due to following error.
>
> BFD: Dwarf Error: Abbrev offset (3238007024) greater than or equal to .debug_abbrev size (1607).
>
> Manual printk() debug reported that
> rqstp->rq_argp == rqstp->rq_resp == ZERO_SIZE_PTR and
Huh. As far as I can tell that will only happen if you've not no nfsd
versions defined; how is that happening?
--b.
> procp->pc_argsize == procp->pc_ressize == 4.
>
> --- linux-2.6.35-next.orig/net/sunrpc/svc.c
> +++ linux-2.6.35-next/net/sunrpc/svc.c
> @@ -1084,6 +1084,11 @@ svc_process_common(struct svc_rqst *rqst
> procp->pc_count++;
>
> /* Initialize storage for argp and resp */
> + printk(KERN_INFO "rqstp=%p procp=%p\n", rqstp, procp);
> + printk(KERN_INFO "rqstp->rq_argp=%p procp->pc_argsize=%u\n",
> + rqstp->rq_argp, procp->pc_argsize);
> + printk(KERN_INFO "rqstp->rq_resp=%p procp->pc_ressize=%u\n",
> + rqstp->rq_resp, procp->pc_ressize);
> memset(rqstp->rq_argp, 0, procp->pc_argsize);
> memset(rqstp->rq_resp, 0, procp->pc_ressize);
>
>
> [ 37.669174] NET: Registered protocol family 10
> [ 38.080725] svc: failed to register lockdv1 RPC service (errno 97).
> [ 122.895707] rqstp=dcb91000 procp=c154ca20
> [ 122.896533] rqstp->rq_argp=00000010 procp->pc_argsize=4
> [ 122.897484] rqstp->rq_resp=00000010 procp->pc_ressize=4
> [ 122.898609] BUG: unable to handle kernel NULL pointer dereference at 00000010
> [ 122.899964] IP: [<c1356e80>] svc_process_common+0x370/0x640
> [ 122.900493] *pde = 00000000
> [ 122.900493] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
> [ 122.923308] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
> [ 122.923308] Modules linked in: nfs ipv6 pcnet32
>
> > OK, I wonder if Sarge didn't yet mount the nfsd filesystem on
> > /proc/fs/nfsd.
>
> According to /proc/mounts , the nfsd filesystem is not mounted on
> /proc/fs/nfsd . But mounting it manually before starting nfsd did not help.
>
> Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100805204612.GA13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-05 21:31 ` J. Bruce Fields
[not found] ` <20100805213107.GB13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-05 21:31 UTC (permalink / raw)
To: Tetsuo Handa
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
On Thu, Aug 05, 2010 at 04:46:12PM -0400, J. Bruce Fields wrote:
> On Thu, Aug 05, 2010 at 10:10:16AM +0900, Tetsuo Handa wrote:
> > J. Bruce Fields wrote:
> > > Maybe figuring out exactly hwere that is would help work out what's
> > > going on. Doing
> > >
> > > make net/sunrpc/svc.lst
> > >
> > > then looking for c1356dd4 (or just mailing me svc.lst) could help.
> >
> > "make net/sunrpc/svc.lst" failed due to following error.
> >
> > BFD: Dwarf Error: Abbrev offset (3238007024) greater than or equal to .debug_abbrev size (1607).
> >
> > Manual printk() debug reported that
> > rqstp->rq_argp == rqstp->rq_resp == ZERO_SIZE_PTR and
>
> Huh. As far as I can tell that will only happen if you've not no nfsd
> versions defined; how is that happening?
OK, I think it's another startup-order problem: depending on how things
are started up, sv_nrthreads may already be nonzero, causing us to skip
nfsd_reset_versions(), so that the loop in __svc_create() ends up
leaving xdrsize 0, and then the kmalloc's in svc_prepare_thread() assign
ZERO_SIZE_PTR.
I need to think a little more about what we should be doing here.
--b.
>
> --b.
>
> > procp->pc_argsize == procp->pc_ressize == 4.
> >
> > --- linux-2.6.35-next.orig/net/sunrpc/svc.c
> > +++ linux-2.6.35-next/net/sunrpc/svc.c
> > @@ -1084,6 +1084,11 @@ svc_process_common(struct svc_rqst *rqst
> > procp->pc_count++;
> >
> > /* Initialize storage for argp and resp */
> > + printk(KERN_INFO "rqstp=%p procp=%p\n", rqstp, procp);
> > + printk(KERN_INFO "rqstp->rq_argp=%p procp->pc_argsize=%u\n",
> > + rqstp->rq_argp, procp->pc_argsize);
> > + printk(KERN_INFO "rqstp->rq_resp=%p procp->pc_ressize=%u\n",
> > + rqstp->rq_resp, procp->pc_ressize);
> > memset(rqstp->rq_argp, 0, procp->pc_argsize);
> > memset(rqstp->rq_resp, 0, procp->pc_ressize);
> >
> >
> > [ 37.669174] NET: Registered protocol family 10
> > [ 38.080725] svc: failed to register lockdv1 RPC service (errno 97).
> > [ 122.895707] rqstp=dcb91000 procp=c154ca20
> > [ 122.896533] rqstp->rq_argp=00000010 procp->pc_argsize=4
> > [ 122.897484] rqstp->rq_resp=00000010 procp->pc_ressize=4
> > [ 122.898609] BUG: unable to handle kernel NULL pointer dereference at 00000010
> > [ 122.899964] IP: [<c1356e80>] svc_process_common+0x370/0x640
> > [ 122.900493] *pde = 00000000
> > [ 122.900493] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
> > [ 122.923308] last sysfs file: /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/type
> > [ 122.923308] Modules linked in: nfs ipv6 pcnet32
> >
> > > OK, I wonder if Sarge didn't yet mount the nfsd filesystem on
> > > /proc/fs/nfsd.
> >
> > According to /proc/mounts , the nfsd filesystem is not mounted on
> > /proc/fs/nfsd . But mounting it manually before starting nfsd did not help.
> >
> > Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100805213107.GB13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-06 1:37 ` Tetsuo Handa
2010-08-06 21:27 ` J. Bruce Fields
1 sibling, 0 replies; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-06 1:37 UTC (permalink / raw)
To: bfields-uC3wQj2KruNg9hUCZPvPmw
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
I compared using below patch.
fs/nfsd/nfssvc.c | 11 +++++++++++
net/sunrpc/svc.c | 12 ++++++++++++
2 files changed, 23 insertions(+)
--- linux-2.6.35-next.orig/fs/nfsd/nfssvc.c
+++ linux-2.6.35-next/fs/nfsd/nfssvc.c
@@ -263,15 +263,26 @@ void nfsd_reset_versions(void)
int found_one = 0;
int i;
+ printk(KERN_INFO "***** %s is called *****.\n", __func__);
for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++) {
if (nfsd_program.pg_vers[i])
found_one = 1;
}
+ printk(KERN_INFO "***** found_one=%u *****.\n", found_one);
if (!found_one) {
+ printk(KERN_INFO
+ "***** &nfsd_program=%p nfsd_version=%p *****.\n",
+ &nfsd_program, nfsd_version);
+ printk(KERN_INFO
+ "***** NFSD_MINVERS=%u NFSD_NRVERS=%u *****.\n",
+ NFSD_MINVERS, NFSD_NRVERS);
for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++)
nfsd_program.pg_vers[i] = nfsd_version[i];
#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)
+ printk(KERN_INFO
+ "***** NFSD_ACL_MINVERS=%u NFSD_ACL_NRVERS=%u *****.\n",
+ NFSD_ACL_MINVERS, NFSD_ACL_NRVERS);
for (i = NFSD_ACL_MINVERS; i < NFSD_ACL_NRVERS; i++)
nfsd_acl_program.pg_vers[i] =
nfsd_acl_version[i];
--- linux-2.6.35-next.orig/net/sunrpc/svc.c
+++ linux-2.6.35-next/net/sunrpc/svc.c
@@ -379,7 +379,9 @@ __svc_create(struct svc_program *prog, u
serv->sv_max_mesg = roundup(serv->sv_max_payload + PAGE_SIZE, PAGE_SIZE);
serv->sv_shutdown = shutdown;
xdrsize = 0;
+ printk(KERN_INFO "***** %s is called. *****\n", __func__);
while (prog) {
+ printk(KERN_INFO "***** prog=%p *****\n", prog);
prog->pg_lovers = prog->pg_nvers-1;
for (vers=0; vers<prog->pg_nvers ; vers++)
if (prog->pg_vers[vers]) {
@@ -389,8 +391,13 @@ __svc_create(struct svc_program *prog, u
if (prog->pg_vers[vers]->vs_xdrsize > xdrsize)
xdrsize = prog->pg_vers[vers]->vs_xdrsize;
}
+ else
+ printk(KERN_INFO
+ "***** prog->pg_vers[%u]=NULL *****\n",
+ vers);
prog = prog->pg_next;
}
+ printk(KERN_INFO "***** xdrsize=%u *****\n", xdrsize);
serv->sv_xdrsize = xdrsize;
INIT_LIST_HEAD(&serv->sv_tempsocks);
INIT_LIST_HEAD(&serv->sv_permsocks);
@@ -1084,6 +1091,11 @@ svc_process_common(struct svc_rqst *rqst
procp->pc_count++;
/* Initialize storage for argp and resp */
+ printk(KERN_INFO "rqstp=%p procp=%p\n", rqstp, procp);
+ printk(KERN_INFO "rqstp->rq_argp=%p procp->pc_argsize=%u\n",
+ rqstp->rq_argp, procp->pc_argsize);
+ printk(KERN_INFO "rqstp->rq_resp=%p procp->pc_ressize=%u\n",
+ rqstp->rq_resp, procp->pc_ressize);
memset(rqstp->rq_argp, 0, procp->pc_argsize);
memset(rqstp->rq_resp, 0, procp->pc_ressize);
--- 2.6.35 ---
Booting.
[ 27.086953] ifconfig used greatest stack depth: 1364 bytes left
[ 27.255143] pcnet32 0000:02:00.0: eth0: link up
[ 35.976256] mv used greatest stack depth: 1052 bytes left
[ 37.993094] ***** nfsd_reset_versions is called *****.
[ 37.995126] ***** found_one=0 *****.
[ 37.996103] ***** &nfsd_program=c1540780 nfsd_version=c1540770 *****.
[ 38.018003] ***** NFSD_MINVERS=2 NFSD_NRVERS=4 *****.
[ 38.019387] ***** __svc_create is called. *****
[ 38.020496] ***** prog=c1540780 *****
[ 38.021391] ***** prog->pg_vers[0]=NULL *****
[ 38.022425] ***** prog->pg_vers[1]=NULL *****
[ 38.023470] ***** xdrsize=544 *****
[ 38.069845] ***** __svc_create is called. *****
[ 38.070957] ***** prog=c1541a00 *****
[ 38.071844] ***** prog->pg_vers[0]=NULL *****
[ 38.072883] ***** prog->pg_vers[2]=NULL *****
[ 38.073941] ***** xdrsize=344 *****
[ 38.149718] NET: Registered protocol family 10
[ 38.588799] svc: failed to register lockdv1 RPC service (errno 97).
[ 38.664394] rqstp=dc81f000 procp=c1541220
[ 38.665395] rqstp->rq_argp=dcb93bf0 procp->pc_argsize=4
[ 38.666621] rqstp->rq_resp=dcb94bf0 procp->pc_ressize=4
[ 40.129085] ***** nfsd_reset_versions is called *****.
[ 40.130336] ***** found_one=1 *****.
Doing "mount 127.0.0.1:/usr/src/ /mnt/".
[ 75.786438] rqstp=de136000 procp=c1541220
[ 75.787464] rqstp->rq_argp=dc81abf0 procp->pc_argsize=4
[ 75.788681] rqstp->rq_resp=dc850bf0 procp->pc_ressize=4
[ 75.792740] rqstp=de136000 procp=c15414cc
[ 75.793701] rqstp->rq_argp=dc81abf0 procp->pc_argsize=264
[ 75.815618] rqstp->rq_resp=dc850bf0 procp->pc_ressize=44
[ 75.825175] rqstp=de136000 procp=c1541244
[ 75.847017] rqstp->rq_argp=dc81abf0 procp->pc_argsize=264
[ 75.848320] rqstp->rq_resp=dc850bf0 procp->pc_ressize=344
[ 75.854935] rqstp=de136000 procp=c15414cc
[ 75.855983] rqstp->rq_argp=dc81abf0 procp->pc_argsize=264
[ 75.877639] rqstp->rq_resp=dc850bf0 procp->pc_ressize=44
[ 75.879404] rqstp=de136000 procp=c1541244
[ 75.880366] rqstp->rq_argp=dc81abf0 procp->pc_argsize=264
[ 75.881639] rqstp->rq_resp=dc850bf0 procp->pc_ressize=344
--- 2.6.35-next-20100802 + 3deb279d6e5625407919a875db3a2461199566b3 ---
Booting.
[ 26.414571] ifconfig used greatest stack depth: 1028 bytes left
[ 26.587372] pcnet32 0000:02:00.0: eth0: link up
[ 36.854504] ***** __svc_create is called. *****
[ 36.861266] ***** prog=c154c760 *****
[ 36.862180] ***** prog->pg_vers[0]=NULL *****
[ 36.863221] ***** prog->pg_vers[1]=NULL *****
[ 36.864255] ***** prog->pg_vers[2]=NULL *****
[ 36.865284] ***** prog->pg_vers[3]=NULL *****
[ 36.866356] ***** xdrsize=0 *****
[ 36.874007] ***** __svc_create is called. *****
[ 36.875094] ***** prog=c154da00 *****
[ 36.875978] ***** prog->pg_vers[0]=NULL *****
[ 36.877017] ***** prog->pg_vers[2]=NULL *****
[ 36.878063] ***** xdrsize=344 *****
[ 36.992851] NET: Registered protocol family 10
[ 37.416006] svc: failed to register lockdv1 RPC service (errno 97).
[ 37.419146] ***** nfsd_reset_versions is called *****.
[ 37.420383] ***** found_one=0 *****.
[ 37.421255] ***** &nfsd_program=c154c760 nfsd_version=c154c750 *****.
[ 37.422776] ***** NFSD_MINVERS=2 NFSD_NRVERS=4 *****.
Doing "mount 127.0.0.1:/usr/src/ /mnt/".
[ 58.947605] rqstp=dcfb2000 procp=c154ca20
[ 58.948668] rqstp->rq_argp=00000010 procp->pc_argsize=4
[ 58.949976] rqstp->rq_resp=00000010 procp->pc_ressize=4
[ 58.951520] BUG: unable to handle kernel NULL pointer dereference at 00000010
[ 58.953374] IP: [<c1356f20>] svc_process_common+0x370/0x640
J. Bruce Fields wrote:
> OK, I think it's another startup-order problem: depending on how things
> are started up, sv_nrthreads may already be nonzero, causing us to skip
> nfsd_reset_versions(), so that the loop in __svc_create() ends up
> leaving xdrsize 0, and then the kmalloc's in svc_prepare_thread() assign
> ZERO_SIZE_PTR.
Indeed.
Regarding 2.6.35, nfsd_reset_versions() is called before __svc_create() is
called and xdrsize != 0. But regarding 2.6.35-next-20100802 +
3deb279d6e5625407919a875db3a2461199566b3, __svc_create() is called before
nfsd_reset_versions() is called and xdrsize == 0.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100805213107.GB13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-06 1:37 ` Tetsuo Handa
@ 2010-08-06 21:27 ` J. Bruce Fields
[not found] ` <20100806212727.GC29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
1 sibling, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-06 21:27 UTC (permalink / raw)
To: Tetsuo Handa
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
On Thu, Aug 05, 2010 at 05:31:07PM -0400, J. Bruce Fields wrote:
> On Thu, Aug 05, 2010 at 04:46:12PM -0400, J. Bruce Fields wrote:
> > On Thu, Aug 05, 2010 at 10:10:16AM +0900, Tetsuo Handa wrote:
> > > J. Bruce Fields wrote:
> > > > Maybe figuring out exactly hwere that is would help work out what's
> > > > going on. Doing
> > > >
> > > > make net/sunrpc/svc.lst
> > > >
> > > > then looking for c1356dd4 (or just mailing me svc.lst) could help.
> > >
> > > "make net/sunrpc/svc.lst" failed due to following error.
> > >
> > > BFD: Dwarf Error: Abbrev offset (3238007024) greater than or equal to .debug_abbrev size (1607).
> > >
> > > Manual printk() debug reported that
> > > rqstp->rq_argp == rqstp->rq_resp == ZERO_SIZE_PTR and
> >
> > Huh. As far as I can tell that will only happen if you've not no nfsd
> > versions defined; how is that happening?
>
> OK, I think it's another startup-order problem: depending on how things
> are started up, sv_nrthreads may already be nonzero, causing us to skip
> nfsd_reset_versions(), so that the loop in __svc_create() ends up
> leaving xdrsize 0, and then the kmalloc's in svc_prepare_thread() assign
> ZERO_SIZE_PTR.
>
> I need to think a little more about what we should be doing here.
Bah, so what you were hitting was simple--I just moved the
nfsd_reset_versions() call to the wrong place; the below should fix it.
There's also a couple other bugs in the area.
Thanks for the -next testing!
--b.
commit e844a7b9805a2b74cfd34c8604f5bba3e0869305
Author: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date: Fri Aug 6 15:48:03 2010 -0400
nfsd: initialize nfsd versions before creating svc
Commit 59db4a0c102e0de226a3395dbf25ea51bf845937 "nfsd: move more into
nfsd_startup()" inadvertently moved nfsd_versions after
nfsd_create_svc(). On older distributions using an rpc.nfsd that does
not explicitly set the list of nfsd versions, this results in
svc-create_pooled() being called with an empty versions array. The
resulting incomplete initialization leads to a NULL dereference in
svc_process_common() the first time a client accesses the server.
Move nfsd_reset_versions() back before the svc_create_pooled(); this
time, put it closer to the svc_create_pooled() call, to make this
mistake more difficult in the future.
Signed-off-by: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 39ced4a..e2c4346 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -224,7 +224,6 @@ static int nfsd_startup(unsigned short port, int nrservs)
ret = nfs4_state_start();
if (ret)
goto out_lockd;
- nfsd_reset_versions();
nfsd_up = true;
return 0;
out_lockd:
@@ -329,6 +328,7 @@ int nfsd_create_serv(void)
nfsd_max_blksize >= 8*1024*2)
nfsd_max_blksize /= 2;
}
+ nfsd_reset_versions();
nfsd_serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize,
nfsd_last_thread, nfsd, THIS_MODULE);
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100806212727.GC29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-06 22:05 ` J. Bruce Fields
2010-08-06 22:10 ` J. Bruce Fields
0 siblings, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-06 22:05 UTC (permalink / raw)
To: Tetsuo Handa
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
On Fri, Aug 06, 2010 at 05:27:28PM -0400, J. Bruce Fields wrote:
> Bah, so what you were hitting was simple--I just moved the
> nfsd_reset_versions() call to the wrong place; the below should fix it.
>
> There's also a couple other bugs in the area.
This isn't a serious bug, but I think it makes sense to fix it.
--b.
commit 7fa53cc872332b265bc5ba1266f39586f218ad4a
Author: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date: Fri Aug 6 18:00:33 2010 -0400
nfsd: don't allow setting maxblksize after svc created
It's harmless to set this after the server is created, but also
ineffective, since the value is only used at the time of
svc_create_pooled(). So fail the attempt, in keeping with the pattern
set by write_versions, write_{lease,grace}time and write_recoverydir.
(This could break userspace that tried to write to nfsd/max_block_size
between setting up sockets and starting the server. However, such code
wouldn't have worked anyway, and I don't know of any examples--rpc.nfsd
in nfs-utils, probably the only user of the interface, doesn't do that.)
Signed-off-by: J. Bruce Fields <bfields-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 12f0ee7..b53b1d0 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1190,7 +1190,7 @@ static ssize_t write_maxblksize(struct file *file, char *buf, size_t size)
bsize = NFSSVC_MAXBLKSIZE;
bsize &= ~(1024-1);
mutex_lock(&nfsd_mutex);
- if (nfsd_serv && nfsd_serv->sv_nrthreads) {
+ if (nfsd_serv) {
mutex_unlock(&nfsd_mutex);
return -EBUSY;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-06 22:05 ` J. Bruce Fields
@ 2010-08-06 22:10 ` J. Bruce Fields
[not found] ` <20100806221000.GF29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
0 siblings, 1 reply; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-06 22:10 UTC (permalink / raw)
To: Tetsuo Handa; +Cc: linux-nfs, linux-fsdevel, jlayton
On Fri, Aug 06, 2010 at 06:05:37PM -0400, J. Bruce Fields wrote:
> On Fri, Aug 06, 2010 at 05:27:28PM -0400, J. Bruce Fields wrote:
> > Bah, so what you were hitting was simple--I just moved the
> > nfsd_reset_versions() call to the wrong place; the below should fix it.
> >
> > There's also a couple other bugs in the area.
And also there was one more problem with my original "nfsd: fix
startup/shutdown order bug": it doesn't work to use sv_nrthreads
changing from zero to nonzero as the signal for when to do all this
startup, because write_pool_threads() adjusts the number of threads
without calling nfsd_svc(). (Maybe that should be fixed.)
For now, just use the nfsd_up variable to keep track of this (which is a
little closer to Jeff's original solution).
This is a replacement.
--b.
commit 4cd7eb015e92f7cefb43eaab3e111d1b3c7b3cbf
Author: J. Bruce Fields <bfields@redhat.com>
Date: Mon Aug 2 14:12:44 2010 -0400
nfsd: fix startup/shutdown order bug
We must create the server before we can call init_socks or check the
number of threads.
Symptoms were a NULL pointer dereference in nfsd_svc(). Problem
identified by Jeff Layton.
Also fix a minor cleanup-on-error case in nfsd_startup().
Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 92173bd..2a20f89 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -204,6 +204,9 @@ static bool nfsd_up = false;
static int nfsd_startup(unsigned short port, int nrservs)
{
int ret;
+
+ if (nfsd_up)
+ return 0;
/*
* Readahead param cache - will no-op if it already exists.
* (Note therefore results will be suboptimal if number of
@@ -217,7 +220,7 @@ static int nfsd_startup(unsigned short port, int nrservs)
goto out_racache;
ret = lockd_up();
if (ret)
- return ret;
+ goto out_racache;
ret = nfs4_state_start();
if (ret)
goto out_lockd;
@@ -420,7 +423,7 @@ int
nfsd_svc(unsigned short port, int nrservs)
{
int error;
- bool first_thread;
+ bool nfsd_up_before;
mutex_lock(&nfsd_mutex);
dprintk("nfsd: creating service\n");
@@ -432,29 +435,29 @@ nfsd_svc(unsigned short port, int nrservs)
if (nrservs == 0 && nfsd_serv == NULL)
goto out;
- first_thread = (nfsd_serv->sv_nrthreads == 0) && (nrservs != 0);
-
- if (first_thread) {
- error = nfsd_startup(port, nrservs);
- if (error)
- goto out;
- }
error = nfsd_create_serv();
if (error)
- goto out_shutdown;
- error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
+ goto out;
+
+ nfsd_up_before = nfsd_up;
+
+ error = nfsd_startup(port, nrservs);
if (error)
goto out_destroy;
+ }
+ error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
+ if (error)
+ goto out_shutdown;
/* We are holding a reference to nfsd_serv which
* we don't want to count in the return value,
* so subtract 1
*/
error = nfsd_serv->sv_nrthreads - 1;
-out_destroy:
- svc_destroy(nfsd_serv); /* Release server */
out_shutdown:
- if (error < 0 && first_thread)
+ if (error < 0 && !nfsd_up_before)
nfsd_shutdown();
+out_destroy:
+ svc_destroy(nfsd_serv); /* Release server */
out:
mutex_unlock(&nfsd_mutex);
return error;
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
[not found] ` <20100806221000.GF29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
@ 2010-08-07 1:48 ` Tetsuo Handa
2010-08-07 2:33 ` J. Bruce Fields
0 siblings, 1 reply; 19+ messages in thread
From: Tetsuo Handa @ 2010-08-07 1:48 UTC (permalink / raw)
To: bfields-uC3wQj2KruNg9hUCZPvPmw
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
jlayton-H+wXaHxf7aLQT0dZR+AlfA
Applying commit 4cd7eb015e92f7cefb43eaab3e111d1b3c7b3cbf (with below patch)
and commit e844a7b9805a2b74cfd34c8604f5bba3e0869305 and
commit 7fa53cc872332b265bc5ba1266f39586f218ad4a on linux-2.6.35-next-20100802
solved all problems found in my environment.
Thank you.
--------------------
Fix build error by commit 4cd7eb015e92f7cefb43eaab3e111d1b3c7b3cbf
"nfsd: fix startup/shutdown order bug".
---
fs/nfsd/nfssvc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.35-next.orig/fs/nfsd/nfssvc.c
+++ linux-2.6.35-next/fs/nfsd/nfssvc.c
@@ -444,7 +444,7 @@ nfsd_svc(unsigned short port, int nrserv
error = nfsd_startup(port, nrservs);
if (error)
goto out_destroy;
- }
+
error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
if (error)
goto out_shutdown;
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: linux-next NFSD: NULL pointer dereference at nfsd_svc()
2010-08-07 1:48 ` Tetsuo Handa
@ 2010-08-07 2:33 ` J. Bruce Fields
0 siblings, 0 replies; 19+ messages in thread
From: J. Bruce Fields @ 2010-08-07 2:33 UTC (permalink / raw)
To: Tetsuo Handa; +Cc: linux-nfs, linux-fsdevel, jlayton
On Sat, Aug 07, 2010 at 10:48:02AM +0900, Tetsuo Handa wrote:
> Applying commit 4cd7eb015e92f7cefb43eaab3e111d1b3c7b3cbf (with below patch)
> and commit e844a7b9805a2b74cfd34c8604f5bba3e0869305 and
> commit 7fa53cc872332b265bc5ba1266f39586f218ad4a on linux-2.6.35-next-20100802
> solved all problems found in my environment.
>
> Thank you.
Thank you for the confirmation.
> --------------------
>
> Fix build error by commit 4cd7eb015e92f7cefb43eaab3e111d1b3c7b3cbf
> "nfsd: fix startup/shutdown order bug".
Yes, apologies for that--I was compiling as sent that out!
--b.
>
> ---
> fs/nfsd/nfssvc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-2.6.35-next.orig/fs/nfsd/nfssvc.c
> +++ linux-2.6.35-next/fs/nfsd/nfssvc.c
> @@ -444,7 +444,7 @@ nfsd_svc(unsigned short port, int nrserv
> error = nfsd_startup(port, nrservs);
> if (error)
> goto out_destroy;
> - }
> +
> error = svc_set_num_threads(nfsd_serv, NULL, nrservs);
> if (error)
> goto out_shutdown;
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2010-08-07 2:34 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-02 7:47 linux-next NFSD: NULL pointer dereference at nfsd_svc() Tetsuo Handa
2010-08-02 14:32 ` Jeff Layton
2010-08-02 14:36 ` Jeff Layton
[not found] ` <20100802103620.5638dac1-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org>
2010-08-02 18:16 ` J. Bruce Fields
2010-08-02 18:53 ` Jeff Layton
[not found] ` <20100802181634.GD12637-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-03 1:09 ` Tetsuo Handa
2010-08-03 15:48 ` J. Bruce Fields
2010-08-03 16:24 ` J. Bruce Fields
[not found] ` <20100803154851.GA23467-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-04 0:13 ` Tetsuo Handa
[not found] ` <201008040013.o740DmYK024832-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
2010-08-04 19:40 ` J. Bruce Fields
[not found] ` <20100804194045.GD18200-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-05 1:10 ` Tetsuo Handa
[not found] ` <201008050110.o751AG18066496-etx+eQDEXHD7nzcFbJAaVXf5DAMn2ifp@public.gmane.org>
2010-08-05 20:46 ` J. Bruce Fields
[not found] ` <20100805204612.GA13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-05 21:31 ` J. Bruce Fields
[not found] ` <20100805213107.GB13821-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-06 1:37 ` Tetsuo Handa
2010-08-06 21:27 ` J. Bruce Fields
[not found] ` <20100806212727.GC29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-06 22:05 ` J. Bruce Fields
2010-08-06 22:10 ` J. Bruce Fields
[not found] ` <20100806221000.GF29536-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2010-08-07 1:48 ` Tetsuo Handa
2010-08-07 2:33 ` J. Bruce Fields
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).