Message ID | 20221116151726.129217-1-jlayton@kernel.org |
---|---|
Headers | show |
Series | fs: fix inode->i_flctx accesses | expand |
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
On Wed, Nov 16, 2022 at 10:17:25AM -0500, Jeff Layton wrote: > nfs currently doesn't access i_flctx safely. This requires a > smp_load_acquire, as the pointer is set via cmpxchg (a release > operation). Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
On Wed, 2022-11-16 at 08:08 -0800, Christoph Hellwig wrote: > On Wed, Nov 16, 2022 at 10:17:20AM -0500, Jeff Layton wrote: > > - ctx = smp_load_acquire(&inode->i_flctx); > > + ctx = locks_inode_context(inode); > > Nit: this might be a good time to drop the weird double space here. > > Otherwise looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> Fixed the nit in my tree. After sending this, I converted locks_remove_file to use the helper too. I also think we probably need to use this helper in locks_free_lock_context. Folded all 3 changes into this patch, and pushed to my linux-next feeder branch. Thanks Christoph!
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>