diff options
author | Jeff Layton <jlayton@kernel.org> | 2022-11-16 09:19:43 -0500 |
---|---|---|
committer | Jeff Layton <jlayton@kernel.org> | 2022-11-30 05:08:10 -0500 |
commit | 98b41ffe0afdfeaa1439a5d6bd2db4a94277e31b (patch) | |
tree | 7222c593c759fa14cb39743a74212efd2852ffe8 /fs/lockd | |
parent | 87f00aba211ef7308fd6c5d47d646a70bf196662 (diff) | |
download | lwn-98b41ffe0afdfeaa1439a5d6bd2db4a94277e31b.tar.gz lwn-98b41ffe0afdfeaa1439a5d6bd2db4a94277e31b.zip |
lockd: use locks_inode_context helper
lockd currently doesn't access i_flctx safely. This requires a
smp_load_acquire, as the pointer is set via cmpxchg (a release
operation).
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Anna Schumaker <anna@kernel.org>
Cc: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Diffstat (limited to 'fs/lockd')
-rw-r--r-- | fs/lockd/svcsubs.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c index e1c4617de771..720684345817 100644 --- a/fs/lockd/svcsubs.c +++ b/fs/lockd/svcsubs.c @@ -207,7 +207,7 @@ nlm_traverse_locks(struct nlm_host *host, struct nlm_file *file, { struct inode *inode = nlmsvc_file_inode(file); struct file_lock *fl; - struct file_lock_context *flctx = inode->i_flctx; + struct file_lock_context *flctx = locks_inode_context(inode); struct nlm_host *lockhost; if (!flctx || list_empty_careful(&flctx->flc_posix)) @@ -262,7 +262,7 @@ nlm_file_inuse(struct nlm_file *file) { struct inode *inode = nlmsvc_file_inode(file); struct file_lock *fl; - struct file_lock_context *flctx = inode->i_flctx; + struct file_lock_context *flctx = locks_inode_context(inode); if (file->f_count || !list_empty(&file->f_blocks) || file->f_shares) return 1; |