Skip to contentSkip to conversation

New nfsd-related kernel panic

2.6.8-rc4 walt 2 participants 2 messages Aug 11, 2004 NFS server

lore
Share & tools
lore
#1 lore raw
In reply to walt
Quoted 2 lines · On Wednesday August 11, [email protected] wrote:

Anyone else seeing this?

Yes. I've just sent the following patch to Linus/Andrew.

NeilBrown

fs/nfsd/nfs3xdr.c renamed from fs/nfsd/nfs3xdr.c~current~ +1 -1
diff ./fs/nfsd/nfs3xdr.c~current~ ./fs/nfsd/nfs3xdr.c
@@ -347,8 +347,8 @@ nfs3svc_decode_readargs(struct svc_rqst 
 		svc_take_page(rqstp);
 		args->vec[v].iov_base = page_address(rqstp->rq_respages[pn]);
 		args->vec[v].iov_len = len < PAGE_SIZE? len : PAGE_SIZE;
+		len -= args->vec[v].iov_len;
 		v++;
-		len -= PAGE_SIZE;
 	}
 	args->vlen = v;
 	return xdr_argsize_check(rqstp, p);
fs/nfsd/nfsxdr.c renamed from fs/nfsd/nfsxdr.c~current~ +1 -1
diff ./fs/nfsd/nfsxdr.c~current~ ./fs/nfsd/nfsxdr.c
@@ -255,8 +255,8 @@ nfssvc_decode_readargs(struct svc_rqst *
 		svc_take_page(rqstp);
 		args->vec[v].iov_base = page_address(rqstp->rq_respages[pn]);
 		args->vec[v].iov_len = len < PAGE_SIZE?len:PAGE_SIZE;
+		len -= args->vec[v].iov_len;
 		v++;
-		len -= PAGE_SIZE;
 	}
 	args->vlen = v;
 	return xdr_argsize_check(rqstp, p);

walt

author
#0 lore raw

The following patch of 09Aug is causing kernel panics:

$bk get -D fs/nfsd/nfsxdr.c
237d236
< int len;
237a237

Quoted 1 line
      unsigned int len;

269d268
< int len;
269a269

Quoted 1 line
      unsigned int len;

I can cause a kernel panic by mounting the remote filesystem read-only and merely copying a moderately large tarball from it. (The linux-kernel source tarball, for example.)

The panic occurs every time, after only a second or two at most. It's so easy to reproduce that I haven't copied down the backtrace, but I will if no one else can reproduce the problem.

Anyone else seeing this?