All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Fix possible use after free with AIO
@ 2013-01-23 12:56 Jan Kara
  2013-01-23 12:56 ` [PATCH 1/4] ext4: Fix possible use-after-free " Jan Kara
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: tytso, bpm, jlbec

  Hi,

  when simplifying ext4 IO completion code I realized that the only 
thing pinning inode while AIO is running is file reference from kiocb. 
Thus once aio_complete() is called, inode can be freed. So calling
inode_dio_complete() after aio_complete() is possibly modifying
already freed inode (although practically the race window is tiny).

This patch series fixes all the problematic sites. Patches are 
completely independent so each of them can go through the respective 
maintainer. 

                                                                Honza


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/4] ext4: Fix possible use-after-free with AIO
  2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
@ 2013-01-23 12:56 ` Jan Kara
  2013-01-23 13:18   ` Carlos Maiolino
  2013-01-23 12:56 ` [PATCH 2/4] xfs: " Jan Kara
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: tytso, bpm, jlbec, Jan Kara, linux-ext4, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: linux-ext4@vger.kernel.org
CC: "Theodore Ts'o" <tytso@mit.edu>
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext4/inode.c   |    2 +-
 fs/ext4/page-io.c |    9 ++++-----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index cbfe13b..ba06638 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2977,9 +2977,9 @@ static void ext4_end_io_dio(struct kiocb *iocb, loff_t offset,
 	if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) {
 		ext4_free_io_end(io_end);
 out:
+		inode_dio_done(inode);
 		if (is_async)
 			aio_complete(iocb, ret, 0);
-		inode_dio_done(inode);
 		return;
 	}
 
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index 0016fbc..b42d04f 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -103,14 +103,13 @@ static int ext4_end_io(ext4_io_end_t *io)
 			 "(inode %lu, offset %llu, size %zd, error %d)",
 			 inode->i_ino, offset, size, ret);
 	}
-	if (io->iocb)
-		aio_complete(io->iocb, io->result, 0);
-
-	if (io->flag & EXT4_IO_END_DIRECT)
-		inode_dio_done(inode);
 	/* Wake up anyone waiting on unwritten extent conversion */
 	if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten))
 		wake_up_all(ext4_ioend_wq(inode));
+	if (io->flag & EXT4_IO_END_DIRECT)
+		inode_dio_done(inode);
+	if (io->iocb)
+		aio_complete(io->iocb, io->result, 0);
 	return ret;
 }
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/4] xfs: Fix possible use-after-free with AIO
  2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
  2013-01-23 12:56 ` [PATCH 1/4] ext4: Fix possible use-after-free " Jan Kara
@ 2013-01-23 12:56 ` Jan Kara
  2013-01-23 22:00   ` Ben Myers
  2013-01-23 12:56   ` [Ocfs2-devel] " Jan Kara
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: tytso, bpm, jlbec, Jan Kara, xfs, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: xfs@oss.sgi.com
CC: Ben Myers <bpm@sgi.com>
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/xfs/xfs_aops.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 4111a40..5f707e5 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -86,11 +86,11 @@ xfs_destroy_ioend(
 	}
 
 	if (ioend->io_iocb) {
+		inode_dio_done(ioend->io_inode);
 		if (ioend->io_isasync) {
 			aio_complete(ioend->io_iocb, ioend->io_error ?
 					ioend->io_error : ioend->io_result, 0);
 		}
-		inode_dio_done(ioend->io_inode);
 	}
 
 	mempool_free(ioend, xfs_ioend_pool);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/4] ocfs2: Fix possible use-after-free with AIO
  2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
@ 2013-01-23 12:56   ` Jan Kara
  2013-01-23 12:56 ` [PATCH 2/4] xfs: " Jan Kara
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: tytso, bpm, jlbec, Jan Kara, ocfs2-devel, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: Joel Becker <jlbec@evilplan.org>
CC: ocfs2-devel@oss.oracle.com
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ocfs2/aops.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 6577432..340bd02 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -593,9 +593,9 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,
 	level = ocfs2_iocb_rw_locked_level(iocb);
 	ocfs2_rw_unlock(inode, level);
 
+	inode_dio_done(inode);
 	if (is_async)
 		aio_complete(iocb, ret, 0);
-	inode_dio_done(inode);
 }
 
 /*
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Ocfs2-devel] [PATCH 3/4] ocfs2: Fix possible use-after-free with AIO
@ 2013-01-23 12:56   ` Jan Kara
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: tytso, bpm, jlbec, Jan Kara, ocfs2-devel, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: Joel Becker <jlbec@evilplan.org>
CC: ocfs2-devel at oss.oracle.com
CC: stable at vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ocfs2/aops.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 6577432..340bd02 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -593,9 +593,9 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,
 	level = ocfs2_iocb_rw_locked_level(iocb);
 	ocfs2_rw_unlock(inode, level);
 
+	inode_dio_done(inode);
 	if (is_async)
 		aio_complete(iocb, ret, 0);
-	inode_dio_done(inode);
 }
 
 /*
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/4] fs: Fix possible use-after-free with AIO
  2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
                   ` (2 preceding siblings ...)
  2013-01-23 12:56   ` [Ocfs2-devel] " Jan Kara
@ 2013-01-23 12:56 ` Jan Kara
  2013-01-23 15:02   ` Jeff Moyer
  2013-01-23 16:03 ` [PATCH 0/4] Fix possible use after free " Jeff Moyer
  4 siblings, 1 reply; 13+ messages in thread
From: Jan Kara @ 2013-01-23 12:56 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: tytso, bpm, jlbec, Jan Kara, Christoph Hellwig, Jens Axboe,
	Jeff Moyer, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: Christoph Hellwig <hch@infradead.org>
CC: Jens Axboe <axboe@kernel.dk>
CC: Jeff Moyer <jmoyer@redhat.com>
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/direct-io.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/direct-io.c b/fs/direct-io.c
index cf5b44b..f853263 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -261,9 +261,9 @@ static ssize_t dio_complete(struct dio *dio, loff_t offset, ssize_t ret, bool is
 		dio->end_io(dio->iocb, offset, transferred,
 			    dio->private, ret, is_async);
 	} else {
+		inode_dio_done(dio->inode);
 		if (is_async)
 			aio_complete(dio->iocb, ret, 0);
-		inode_dio_done(dio->inode);
 	}
 
 	return ret;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/4] ext4: Fix possible use-after-free with AIO
  2013-01-23 12:56 ` [PATCH 1/4] ext4: Fix possible use-after-free " Jan Kara
@ 2013-01-23 13:18   ` Carlos Maiolino
  0 siblings, 0 replies; 13+ messages in thread
From: Carlos Maiolino @ 2013-01-23 13:18 UTC (permalink / raw)
  To: Jan Kara; +Cc: linux-fsdevel, tytso, bpm, jlbec, linux-ext4, stable

Looks Good,

Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
On Wed, Jan 23, 2013 at 01:56:17PM +0100, Jan Kara wrote:
> Running AIO is pinning inode in memory using file reference. Once AIO
> is completed using aio_complete(), file reference is put and inode can
> be freed from memory. So we have to be sure that calling aio_complete()
> is the last thing we do with the inode.
> 
> CC: linux-ext4@vger.kernel.org
> CC: "Theodore Ts'o" <tytso@mit.edu>
> CC: stable@vger.kernel.org
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  fs/ext4/inode.c   |    2 +-
>  fs/ext4/page-io.c |    9 ++++-----
>  2 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index cbfe13b..ba06638 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -2977,9 +2977,9 @@ static void ext4_end_io_dio(struct kiocb *iocb, loff_t offset,
>  	if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) {
>  		ext4_free_io_end(io_end);
>  out:
> +		inode_dio_done(inode);
>  		if (is_async)
>  			aio_complete(iocb, ret, 0);
> -		inode_dio_done(inode);
>  		return;
>  	}
>  
> diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
> index 0016fbc..b42d04f 100644
> --- a/fs/ext4/page-io.c
> +++ b/fs/ext4/page-io.c
> @@ -103,14 +103,13 @@ static int ext4_end_io(ext4_io_end_t *io)
>  			 "(inode %lu, offset %llu, size %zd, error %d)",
>  			 inode->i_ino, offset, size, ret);
>  	}
> -	if (io->iocb)
> -		aio_complete(io->iocb, io->result, 0);
> -
> -	if (io->flag & EXT4_IO_END_DIRECT)
> -		inode_dio_done(inode);
>  	/* Wake up anyone waiting on unwritten extent conversion */
>  	if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten))
>  		wake_up_all(ext4_ioend_wq(inode));
> +	if (io->flag & EXT4_IO_END_DIRECT)
> +		inode_dio_done(inode);
> +	if (io->iocb)
> +		aio_complete(io->iocb, io->result, 0);
>  	return ret;
>  }
>  
> -- 
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Carlos

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 4/4] fs: Fix possible use-after-free with AIO
  2013-01-23 12:56 ` [PATCH 4/4] fs: " Jan Kara
@ 2013-01-23 15:02   ` Jeff Moyer
  2013-01-23 19:18     ` Jan Kara
  0 siblings, 1 reply; 13+ messages in thread
From: Jeff Moyer @ 2013-01-23 15:02 UTC (permalink / raw)
  To: Jan Kara
  Cc: linux-fsdevel, tytso, bpm, jlbec, Christoph Hellwig, Jens Axboe, stable

Jan Kara <jack@suse.cz> writes:

> Running AIO is pinning inode in memory using file reference. Once AIO
> is completed using aio_complete(), file reference is put and inode can
> be freed from memory. So we have to be sure that calling aio_complete()
> is the last thing we do with the inode.
>
> CC: Christoph Hellwig <hch@infradead.org>
> CC: Jens Axboe <axboe@kernel.dk>
> CC: Jeff Moyer <jmoyer@redhat.com>
> CC: stable@vger.kernel.org
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  fs/direct-io.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/direct-io.c b/fs/direct-io.c
> index cf5b44b..f853263 100644
> --- a/fs/direct-io.c
> +++ b/fs/direct-io.c
> @@ -261,9 +261,9 @@ static ssize_t dio_complete(struct dio *dio, loff_t offset, ssize_t ret, bool is
>  		dio->end_io(dio->iocb, offset, transferred,
>  			    dio->private, ret, is_async);
>  	} else {
> +		inode_dio_done(dio->inode);
>  		if (is_async)
>  			aio_complete(dio->iocb, ret, 0);
> -		inode_dio_done(dio->inode);
>  	}

OK, so this is only a problem if nobody is waiting in inode_dio_wait,
yes?  Good catch, though it seems incredibly unlikely anyone would trip
over this in practice (since fput is done in a worker thread, or
deferred).

Acked-by: Jeff Moyer <jmoyer@redhat.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/4] Fix possible use after free with AIO
  2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
                   ` (3 preceding siblings ...)
  2013-01-23 12:56 ` [PATCH 4/4] fs: " Jan Kara
@ 2013-01-23 16:03 ` Jeff Moyer
  4 siblings, 0 replies; 13+ messages in thread
From: Jeff Moyer @ 2013-01-23 16:03 UTC (permalink / raw)
  To: Jan Kara; +Cc: linux-fsdevel, tytso, bpm, jlbec

Jan Kara <jack@suse.cz> writes:

>   Hi,
>
>   when simplifying ext4 IO completion code I realized that the only 
> thing pinning inode while AIO is running is file reference from kiocb. 
> Thus once aio_complete() is called, inode can be freed. So calling
> inode_dio_complete() after aio_complete() is possibly modifying
> already freed inode (although practically the race window is tiny).
>
> This patch series fixes all the problematic sites. Patches are 
> completely independent so each of them can go through the respective 
> maintainer. 

for the series:

Acked-by: Jeff Moyer <jmoyer@redhat.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 4/4] fs: Fix possible use-after-free with AIO
  2013-01-23 15:02   ` Jeff Moyer
@ 2013-01-23 19:18     ` Jan Kara
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-23 19:18 UTC (permalink / raw)
  To: Jeff Moyer
  Cc: Jan Kara, linux-fsdevel, tytso, bpm, jlbec, Christoph Hellwig,
	Jens Axboe, stable

On Wed 23-01-13 10:02:09, Jeff Moyer wrote:
> Jan Kara <jack@suse.cz> writes:
> 
> > Running AIO is pinning inode in memory using file reference. Once AIO
> > is completed using aio_complete(), file reference is put and inode can
> > be freed from memory. So we have to be sure that calling aio_complete()
> > is the last thing we do with the inode.
> >
> > CC: Christoph Hellwig <hch@infradead.org>
> > CC: Jens Axboe <axboe@kernel.dk>
> > CC: Jeff Moyer <jmoyer@redhat.com>
> > CC: stable@vger.kernel.org
> > Signed-off-by: Jan Kara <jack@suse.cz>
> > ---
> >  fs/direct-io.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/fs/direct-io.c b/fs/direct-io.c
> > index cf5b44b..f853263 100644
> > --- a/fs/direct-io.c
> > +++ b/fs/direct-io.c
> > @@ -261,9 +261,9 @@ static ssize_t dio_complete(struct dio *dio, loff_t offset, ssize_t ret, bool is
> >  		dio->end_io(dio->iocb, offset, transferred,
> >  			    dio->private, ret, is_async);
> >  	} else {
> > +		inode_dio_done(dio->inode);
> >  		if (is_async)
> >  			aio_complete(dio->iocb, ret, 0);
> > -		inode_dio_done(dio->inode);
> >  	}
> 
> OK, so this is only a problem if nobody is waiting in inode_dio_wait,
> yes?  Good catch, though it seems incredibly unlikely anyone would trip
> over this in practice (since fput is done in a worker thread, or
> deferred).
  Yes, it's mostly a theoretical race.

> Acked-by: Jeff Moyer <jmoyer@redhat.com>
  Thanks.

								Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/4] xfs: Fix possible use-after-free with AIO
  2013-01-23 12:56 ` [PATCH 2/4] xfs: " Jan Kara
@ 2013-01-23 22:00   ` Ben Myers
  0 siblings, 0 replies; 13+ messages in thread
From: Ben Myers @ 2013-01-23 22:00 UTC (permalink / raw)
  To: Jan Kara; +Cc: linux-fsdevel, tytso, jlbec, stable, xfs

On Wed, Jan 23, 2013 at 01:56:18PM +0100, Jan Kara wrote:
> Running AIO is pinning inode in memory using file reference. Once AIO
> is completed using aio_complete(), file reference is put and inode can
> be freed from memory. So we have to be sure that calling aio_complete()
> is the last thing we do with the inode.
> 
> CC: xfs@oss.sgi.com
> CC: Ben Myers <bpm@sgi.com>
> CC: stable@vger.kernel.org
> Signed-off-by: Jan Kara <jack@suse.cz>

Looks good!

Reviewed-by: Ben Myers <bpm@sgi.com>

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 3/4] ocfs2: Fix possible use-after-free with AIO
  2013-01-29 23:27 [PATCH 0/4 v2] " Jan Kara
@ 2013-01-29 23:28   ` Jan Kara
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-29 23:28 UTC (permalink / raw)
  To: Al Viro
  Cc: linux-fsdevel, xfs, linux-ext4, ocfs2-devel, Jan Kara,
	Joel Becker, stable

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: Joel Becker <jlbec@evilplan.org>
CC: ocfs2-devel@oss.oracle.com
CC: stable@vger.kernel.org
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ocfs2/aops.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 6577432..340bd02 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -593,9 +593,9 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,
 	level = ocfs2_iocb_rw_locked_level(iocb);
 	ocfs2_rw_unlock(inode, level);
 
+	inode_dio_done(inode);
 	if (is_async)
 		aio_complete(iocb, ret, 0);
-	inode_dio_done(inode);
 }
 
 /*
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/4] ocfs2: Fix possible use-after-free with AIO
@ 2013-01-29 23:28   ` Jan Kara
  0 siblings, 0 replies; 13+ messages in thread
From: Jan Kara @ 2013-01-29 23:28 UTC (permalink / raw)
  To: Al Viro
  Cc: Jan Kara, stable, xfs, Joel Becker, linux-fsdevel, linux-ext4,
	ocfs2-devel

Running AIO is pinning inode in memory using file reference. Once AIO
is completed using aio_complete(), file reference is put and inode can
be freed from memory. So we have to be sure that calling aio_complete()
is the last thing we do with the inode.

CC: Joel Becker <jlbec@evilplan.org>
CC: ocfs2-devel@oss.oracle.com
CC: stable@vger.kernel.org
Acked-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ocfs2/aops.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 6577432..340bd02 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -593,9 +593,9 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,
 	level = ocfs2_iocb_rw_locked_level(iocb);
 	ocfs2_rw_unlock(inode, level);
 
+	inode_dio_done(inode);
 	if (is_async)
 		aio_complete(iocb, ret, 0);
-	inode_dio_done(inode);
 }
 
 /*
-- 
1.7.1

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-01-29 23:28 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-23 12:56 [PATCH 0/4] Fix possible use after free with AIO Jan Kara
2013-01-23 12:56 ` [PATCH 1/4] ext4: Fix possible use-after-free " Jan Kara
2013-01-23 13:18   ` Carlos Maiolino
2013-01-23 12:56 ` [PATCH 2/4] xfs: " Jan Kara
2013-01-23 22:00   ` Ben Myers
2013-01-23 12:56 ` [PATCH 3/4] ocfs2: " Jan Kara
2013-01-23 12:56   ` [Ocfs2-devel] " Jan Kara
2013-01-23 12:56 ` [PATCH 4/4] fs: " Jan Kara
2013-01-23 15:02   ` Jeff Moyer
2013-01-23 19:18     ` Jan Kara
2013-01-23 16:03 ` [PATCH 0/4] Fix possible use after free " Jeff Moyer
2013-01-29 23:27 [PATCH 0/4 v2] " Jan Kara
2013-01-29 23:28 ` [PATCH 3/4] ocfs2: Fix possible use-after-free " Jan Kara
2013-01-29 23:28   ` Jan Kara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.