dlm: fix plock use-after-free
authorDavid Teigland <teigland@redhat.com>
Thu, 18 Jun 2009 18:20:24 +0000 (13:20 -0500)
committerDavid Teigland <teigland@redhat.com>
Thu, 18 Jun 2009 18:42:42 +0000 (13:42 -0500)
commitc78a87d0a1fc885dfdbe21fd5e07787691dfb068
tree73f6056f87cd9183e04f3b9f6a4245876cf0cb23
parenta566a6b11c86147fe9fc9db7ab15f9eecca3e862
dlm: fix plock use-after-free

Fix a regression from the original addition of nfs lock support
586759f03e2e9031ac5589912a51a909ed53c30a.  When a synchronous
(non-nfs) plock completes, the waiting thread will wake up and
free the op struct.  This races with the user thread in
dev_write() which goes on to read the op's callback field to
check if the lock is async and needs a callback.  This check
can happen on the freed op.  The fix is to note the callback
value before the op can be freed.

Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/plock.c