| To: | linux-kernel@xxxxxxxxxxxxxxx |
|---|---|
| Subject: | [ 12/33] xfs: Fix possible use-after-free with AIO |
| From: | Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> |
| Date: | Fri, 1 Feb 2013 11:49:17 +0100 |
| Cc: | Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, Jan Kara <jack@xxxxxxx>, Ben Myers <bpm@xxxxxxx>, xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <20130201104724.605715763@xxxxxxxxxxxxxxxxxxx> |
| References: | <20130201104724.605715763@xxxxxxxxxxxxxxxxxxx> |
| User-agent: | quilt/0.60-1 |
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <jack@xxxxxxx>
commit 4b05d09c18d9aa62d2e7fb4b057f54e5a38963f5 upstream.
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.
Signed-off-by: Jan Kara <jack@xxxxxxx>
CC: xfs@xxxxxxxxxxx
CC: Ben Myers <bpm@xxxxxxx>
Reviewed-by: Ben Myers <bpm@xxxxxxx>
Signed-off-by: Ben Myers <bpm@xxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
fs/xfs/xfs_aops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -89,11 +89,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);
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 18/18] ext4: Allow punch hole with bigalloc enabled, Lukas Czerner |
|---|---|
| Next by Date: | Re: Xfs fails in xfstests 013, Lukáš Czerner |
| Previous by Thread: | [RFC] mm: change invalidatepage prototype to accept length, Lukas Czerner |
| Next by Thread: | Re: Xfs fails in xfstests 013, Lukáš Czerner |
| Indexes: | [Date] [Thread] [Top] [All Lists] |