diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-07-26 20:06:17 +0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-08-07 23:13:17 +0400 |
commit | 5e11934d13c9a3bcb0cadad6c7a7de5c32660422 (patch) | |
tree | 639e5660e9081bc16afccf0c509ff41c413b483d /include/linux/nfs_fs.h | |
parent | b247bbf1da69ce376aa1ceb8057331214589e366 (diff) | |
download | linux-5e11934d13c9a3bcb0cadad6c7a7de5c32660422.tar.xz |
NFS: Fix put_nfs_open_context
We need to grab the inode->i_lock atomically with the last reference put in
order to remove the open context that is being freed from the
nfsi->open_files list.
Fix by converting the kref to a standard atomic counter and then using
atomic_dec_and_lock()...
Thanks to Arnd Bergmann for pointing out the problem.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/nfs_fs.h')
-rw-r--r-- | include/linux/nfs_fs.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 9ba4aec37c50..157dcb055b5c 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -71,7 +71,7 @@ struct nfs_access_entry { struct nfs4_state; struct nfs_open_context { - struct kref kref; + atomic_t count; struct path path; struct rpc_cred *cred; struct nfs4_state *state; |