Re: 2.1.117 NFS Oops

Alan Cox (alan@lxorguk.ukuu.org.uk)
Thu, 20 Aug 1998 22:04:55 +0100 (BST)


> 0xc0148d55 <nfs_flush_dirty_pages+385>: movl 0x5c(%eax),%eax <- BOOM
> 0xc0148d58 <nfs_flush_dirty_pages+388>: movl 0x44(%eax),%eax
> 0xc0148d5b <nfs_flush_dirty_pages+391>: pushl %eax
> 0xc0148d5c <nfs_flush_dirty_pages+392>: call 0xc01726b0 <rpc_clnt_sigunmask>
> 0xc0148d61 <nfs_flush_dirty_pages+397>: addl $0x8,%esp
> 0xc0148d64 <nfs_flush_dirty_pages+400>: jmp 0xc0148c18 <nfs_flush_dirty_pages+68>
>
> Which I believe corresponds to the following piece of code from
> fs/nfs/write.c:

It does here

> looks like someone clears the inode pointer stored in req->wb_inode
> during the schedule()? Thus the reference to the inode in the
> NFS_CLIENT macro will reference a bogus NULL pointer.

Yes. I belive you are right. Save the NFS_CLIENT() value at the top of
the code and reuse the saved pointer at the end.

> how this can happen or whether the addition of the rpc_clnt_sig*mask()
> calls is used correctly (it was introduced somewhere between 2.1.114
> and 2.1.117).

It is. They set the signal masks correctly to allow for ^C/^\ and sigkill
only and only if unhandled.

Alan

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html