Re: PROBLEM: Oops, nfsd, networking

From: Neil Brown
Date: Mon Jun 28 2004 - 19:08:28 EST


On Monday June 28, bvaughan@xxxxxxxxxxxxxx wrote:
> NFSD crash at large MTU and odd wsize/rsize.
>

Thanks for the report. It is very odd.
It seems to be crashing in fs/nfsd/nfs3xdrc.:nfs3svc_decode_writeargs
at:

while (len > args->vec[v].iov_len) {
len -= args->vec[v].iov_len;
v++;
args->vec[v].iov_base = page_address(rqstp->rq_argpages[v]);
args->vec[v].iov_len = PAGE_SIZE;
}

It looks like rqstp->rq_argpages[v] is NULL, and that is causing the
oops.
Obviously, that shouldn't happen :-)

Would you be able to change that code to:
while (len > args->vec[v].iov_len) {
len -= args->vec[v].iov_len;
v++;
if (rqstp->rq_argpages[v] == NULL) {
printk("NULL page at %d, c=%d al=%d l=%d pl=%d\n",
v, args->count, args->len, len, rqstp->rq_arg.len);
BUG();
}
args->vec[v].iov_base = page_address(rqstp->rq_argpages[v]);
args->vec[v].iov_len = PAGE_SIZE;
}

(i.e. add the if() { printk..} bit).
and tell me what gets printed out?

Thanks,
NeilBrown
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/