Messages in this thread | | | From | Jeff Moyer <> | Subject | Re: [PATCH 1/3] aio_ring_remap: turn the ctx->dead check into WARN_ON() | Date | Wed, 17 Jun 2015 13:50:51 -0400 |
| |
Oleg Nesterov <oleg@redhat.com> writes:
> atomic_read(&ctx->dead) in aio_ring_remap() looks confusing. > kill_ioctx() sets ctx->dead and removes ctx from ->ioctx_table > "atomically" under mm->ioctx_lock, so aio_ring_remap() can never > see a dead ctx. > > If we really want this check, we should put it under WARN_ON() > and it should not depend on aio_ring_file == file.
Just get rid of the check, it doesn't make any sense.
-Jeff
> > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > --- > fs/aio.c | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 480440f..0693333 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -325,14 +325,14 @@ static int aio_ring_remap(struct file *file, struct vm_area_struct *vma) > rcu_read_lock(); > table = rcu_dereference(mm->ioctx_table); > for (i = 0; i < table->nr; i++) { > - struct kioctx *ctx; > - > - ctx = table->table[i]; > - if (ctx && ctx->aio_ring_file == file) { > - if (!atomic_read(&ctx->dead)) { > - ctx->user_id = ctx->mmap_base = vma->vm_start; > - res = 0; > - } > + struct kioctx *ctx = table->table[i]; > + > + if (!ctx || WARN_ON(atomic_read(&ctx->dead))) > + continue; > + > + if (ctx->aio_ring_file == file) { > + ctx->user_id = ctx->mmap_base = vma->vm_start; > + res = 0; > break; > } > }
| |