Message ID | 20221116151726.129217-3-jlayton@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fs: fix inode->i_flctx accesses | expand |
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
On 16/11/2022 23:17, Jeff Layton wrote: > ceph currently doesn't access i_flctx safely. This requires a > smp_load_acquire, as the pointer is set via cmpxchg (a release > operation). > > Cc: Xiubo Li <xiubli@redhat.com> > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/ceph/locks.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c > index 3e2843e86e27..f3b461c708a8 100644 > --- a/fs/ceph/locks.c > +++ b/fs/ceph/locks.c > @@ -364,7 +364,7 @@ void ceph_count_locks(struct inode *inode, int *fcntl_count, int *flock_count) > *fcntl_count = 0; > *flock_count = 0; > > - ctx = inode->i_flctx; > + ctx = locks_inode_context(inode); > if (ctx) { > spin_lock(&ctx->flc_lock); > list_for_each_entry(lock, &ctx->flc_posix, fl_list) > @@ -418,7 +418,7 @@ int ceph_encode_locks_to_buffer(struct inode *inode, > int num_fcntl_locks, int num_flock_locks) > { > struct file_lock *lock; > - struct file_lock_context *ctx = inode->i_flctx; > + struct file_lock_context *ctx = locks_inode_context(inode); > int err = 0; > int seen_fcntl = 0; > int seen_flock = 0; Thanks Jeff! Reviewed-by: Xiubo Li <xiubli@redhat.com>
diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c index 3e2843e86e27..f3b461c708a8 100644 --- a/fs/ceph/locks.c +++ b/fs/ceph/locks.c @@ -364,7 +364,7 @@ void ceph_count_locks(struct inode *inode, int *fcntl_count, int *flock_count) *fcntl_count = 0; *flock_count = 0; - ctx = inode->i_flctx; + ctx = locks_inode_context(inode); if (ctx) { spin_lock(&ctx->flc_lock); list_for_each_entry(lock, &ctx->flc_posix, fl_list) @@ -418,7 +418,7 @@ int ceph_encode_locks_to_buffer(struct inode *inode, int num_fcntl_locks, int num_flock_locks) { struct file_lock *lock; - struct file_lock_context *ctx = inode->i_flctx; + struct file_lock_context *ctx = locks_inode_context(inode); int err = 0; int seen_fcntl = 0; int seen_flock = 0;
ceph currently doesn't access i_flctx safely. This requires a smp_load_acquire, as the pointer is set via cmpxchg (a release operation). Cc: Xiubo Li <xiubli@redhat.com> Signed-off-by: Jeff Layton <jlayton@kernel.org> --- fs/ceph/locks.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)