nfsd4: remove lockowner when removing lock stateid
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 20 May 2014 19:55:21 +0000 (15:55 -0400)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 9 Jun 2014 12:29:14 +0000 (13:29 +0100)
commit780c2efc83852e093aa1e53dfebe2e0429f22c04
treeb8e9aa556c6bea269e302e777096e6059565d3f9
parentf15c1e78cd172ba3a1e5049efcc8fbcb54198234
nfsd4: remove lockowner when removing lock stateid

commit a1b8ff4c97b4375d21b6d6c45d75877303f61b3b upstream.

The nfsv4 state code has always assumed a one-to-one correspondance
between lock stateid's and lockowners even if it appears not to in some
places.

We may actually change that, but for now when FREE_STATEID releases a
lock stateid it also needs to release the parent lockowner.

Symptoms were a subsequent LOCK crashing in find_lockowner_str when it
calls same_lockowner_ino on a lockowner that unexpectedly has an empty
so_stateids list.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/nfsd/nfs4state.c