NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/39777: NFS client triggers kernel panics
The following reply was made to PR kern/39777; it has been noted by GNATS.
From: Matthias Scheler <tron%zhadum.org.uk@localhost>
To: netbsd-bugs%NetBSD.org@localhost
Cc: gnats-bugs%NetBSD.org@localhost
Subject: Re: kern/39777: NFS client triggers kernel panics
Date: Fri, 31 Oct 2008 19:00:12 +0000
On Fri, Oct 31, 2008 at 06:30:11PM +0000, Matthias Scheler wrote:
> This looks like a stack overflow to me.
It seems that I'm right. The following change caused the problem:
http://mail-index.netbsd.org/source-changes/2008/10/17/msg211423.html
If I reduce the size of the stack arrays like this ...
Index: nfs_bio.c
===================================================================
RCS file: /cvsroot/src/sys/nfs/nfs_bio.c,v
retrieving revision 1.179
diff -u -r1.179 nfs_bio.c
--- nfs_bio.c 17 Oct 2008 14:24:43 -0000 1.179
+++ nfs_bio.c 31 Oct 2008 18:57:40 -0000
@@ -921,7 +921,7 @@
int iomode;
bool stalewriteverf = false;
int i, npages = (bp->b_bcount + PAGE_SIZE - 1) >> PAGE_SHIFT;
- struct vm_page **pgs, *spgs[64];
+ struct vm_page **pgs, *spgs[16];
#ifndef NFS_V2_ONLY
bool needcommit = true; /* need only COMMIT RPC */
#else
@@ -1224,7 +1224,7 @@
struct uvm_object *uobj = &vp->v_uobj;
struct nfsnode *np = VTONFS(vp);
const int npages = *ap->a_count;
- struct vm_page *pg, **pgs, **opgs, *spgs[64];
+ struct vm_page *pg, **pgs, **opgs, *spgs[16];
off_t origoffset, len;
int i, error;
bool v3 = NFS_ISV3(vp);
... the machine doesn't panic.
But that is probably not an appropriate fix. I wonder whether the stack
optimization should be eliminated.
Kind regards
--
Matthias Scheler http://zhadum.org.uk/
Home |
Main Index |
Thread Index |
Old Index