On Fri, Jan 25, 2013 at 5:43 AM, Kent Overstreet <koverstreet@xxxxxxxxxx> wrote: > The batch completion code was trying to be a bit too clever, and skip > checking ctx where it couldn't be NULL - but that broke if a kiocb had > been cancelled. Move the check to kioctx_ring_unlock(). > > Reported-by: Valdis Kletnieks <Valdis.Kletnieks@xxxxxx> > Signed-off-by: Kent Overstreet <koverstreet@xxxxxxxxxx> > --- Acked-by: Hillf Danton <dhillf@xxxxxxxxx> > fs/aio.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 62573d3..0d2f39d 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -683,6 +683,9 @@ static inline void kioctx_ring_unlock(struct kioctx *ctx, unsigned tail) > { > struct aio_ring *ring; > > + if (!ctx) > + return; > + > smp_wmb(); > /* make event visible before updating tail */ > > @@ -760,8 +763,7 @@ void batch_complete_aio(struct batch_complete *batch) > } > > if (unlikely(req->ki_ctx != ctx)) { > - if (ctx) > - kioctx_ring_unlock(ctx, tail); > + kioctx_ring_unlock(ctx, tail); > > ctx = req->ki_ctx; > tail = kioctx_ring_lock(ctx); > -- > 1.7.12 > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html