nfs4: have do_vfs_lock take an inode pointer
authorJeff Layton <jeff.layton@primarydata.com>
Sat, 11 Jul 2015 10:43:03 +0000 (06:43 -0400)
committerJeff Layton <jeff.layton@primarydata.com>
Mon, 13 Jul 2015 10:29:11 +0000 (06:29 -0400)
commit83bfff23e9ed19f37c4ef0bba84e75bd88e5cf21
treee8b8f8238118d2d3c16f3f83625223377b9719ee
parent29d01b22eaa18d8b46091d3c98c6001c49f78e4a
nfs4: have do_vfs_lock take an inode pointer

Now that we have file locking helpers that can deal with an inode
instead of a filp, we can change the NFSv4 locking code to use that
instead.

This should fix the case where we have a filp that is closed while flock
or OFD locks are set on it, and the task is signaled so that it doesn't
wait for the LOCKU reply to come in before the filp is freed. At that
point we can end up with a use-after-free with the current code, which
relies on dereferencing the fl_file in the lock request.

Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Reviewed-by: "J. Bruce Fields" <bfields@fieldses.org>
Tested-by: "J. Bruce Fields" <bfields@fieldses.org>
fs/nfs/nfs4proc.c