summaryrefslogtreecommitdiff
path: root/fs/lockd
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2022-11-16 09:19:43 -0500
committerJeff Layton <jlayton@kernel.org>2022-11-30 05:08:10 -0500
commit98b41ffe0afdfeaa1439a5d6bd2db4a94277e31b (patch)
tree7222c593c759fa14cb39743a74212efd2852ffe8 /fs/lockd
parent87f00aba211ef7308fd6c5d47d646a70bf196662 (diff)
downloadlwn-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.c4
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;