nfsd4: remove lockowner when removing lock stateid
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 20 May 2014 19:55:21 +0000 (15:55 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jun 2014 17:28:21 +0000 (10:28 -0700)
commit91c372b12c4a6dca1663338aed088e4c19d14f17
tree2570a7705724030e5de0bebe3fd63f73bdcd1008
parentbefdf0a5cec2ca490bca178b1baf2dba1e7ec261
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfsd/nfs4state.c