2009-05-21 21:27:55

by Trond Myklebust

[permalink] [raw]
Subject: Re: [Bug 13330] New: nfs4 NULL pointer dereference in _nfs4_do_setlk

On Thu, 2009-05-21 at 17:03 -0400, Trond Myklebust wrote:
> On Sun, 2009-05-17 at 04:44 +0000, bugzilla-daemon-590EEB7GvNiWaY/[email protected]
> wrote:
> > http://bugzilla.kernel.org/show_bug.cgi?id=13330
> >
> > Summary: nfs4 NULL pointer dereference in _nfs4_do_setlk
> > Product: File System
> > Version: 2.5
> > Kernel Version: 2.6.30-rc4
> > Platform: All
> > OS/Version: Linux
> > Tree: Mainline
> > Status: NEW
> > Severity: high
> > Priority: P1
> > Component: NFS
> > AssignedTo: [email protected]
> > ReportedBy: [email protected]
> > Regression: No
> >
> >
> > Created an attachment (id=21380)
> > --> (http://bugzilla.kernel.org/attachment.cgi?id=21380)
> > NFSv4 BUG ON log
> >
> > My NFS server rebooted.
> >
> > The machine with the kernel in question, one of many clients, spit out the
> > attached error in dmesg, and all NFS activity on the machine blocked forever,
> > necessitating a reboot.
> >
> > This is not true on any of the other NFS clients on the network, which vary
> > between 2.6.18 and 2.6.27, so it may be A) 64-bit specific somehow (the rest
> > are 32-bit), B) recently introduced, or C) recently exposed by some existing
> > bad behavior in NFS recovery being removed.
> >
> > Machine was "vanilla" 2.6.30-rc4 (with commits
> > b827e496c893de0c0f142abfaeb8730a2fd6b37f and
> > 7fdf523067666b0eaff330f362401ee50ce187c4 added), 64-bit. NFSv4 mounted with
> > rw,nosuid,nodev,noatime,hard,intr,nolock,sloppy,rsize=8192,wsize=8192,tcp,timeo=600.
> >
> > I'll try reproducing this on latest GIT shortly, but it's hard to reproduce
> > (since it only occurs after the NFS server reboots, and not even consistently
> > then), so I don't know when I'll be able to report back that it occurs or not.
>
> Switching to email...
>
> I'm having trouble reproducing this, and staring at the code itself
> isn't helping (as far as I can see, the locking using nfsi->rwsem should
> work).
>
> Could you therefore please try the attached patch?

You might also want to apply the attached fix to the RENEW function. It
corrects a bug that can cause NFSv4 clients to fail to recover state
during the grace period...

Cheers
Trond


Attachments:
linux-2.6.30-008-fix_async_renewal.dif (1.10 kB)
NFSv4: Fix NFSv4 async renewal