diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch new file mode 100644 index 00000000..1084fef2 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.23/0044-aio-make-kiocb-private-NUll-in-init_sync_kiocb.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 21dbeb828448f788ffb3590cf6706c074bb1048f Mon Sep 17 00:00:00 2001 | ||
2 | From: Junxiao Bi <junxiao.bi@oracle.com> | ||
3 | Date: Wed, 27 Jun 2012 17:09:54 +0800 | ||
4 | Subject: [PATCH 44/49] aio: make kiocb->private NUll in init_sync_kiocb() | ||
5 | |||
6 | commit 2dfd06036ba7ae8e7be2daf5a2fff1dac42390bf upstream. | ||
7 | |||
8 | Ocfs2 uses kiocb.*private as a flag of unsigned long size. In | ||
9 | commit a11f7e6 ocfs2: serialize unaligned aio, the unaligned | ||
10 | io flag is involved in it to serialize the unaligned aio. As | ||
11 | *private is not initialized in init_sync_kiocb() of do_sync_write(), | ||
12 | this unaligned io flag may be unexpectly set in an aligned dio. | ||
13 | And this will cause OCFS2_I(inode)->ip_unaligned_aio decreased | ||
14 | to -1 in ocfs2_dio_end_io(), thus the following unaligned dio | ||
15 | will hang forever at ocfs2_aiodio_wait() in ocfs2_file_aio_write(). | ||
16 | |||
17 | Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com> | ||
18 | Acked-by: Jeff Moyer <jmoyer@redhat.com> | ||
19 | Signed-off-by: Joel Becker <jlbec@evilplan.org> | ||
20 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
21 | --- | ||
22 | include/linux/aio.h | 1 + | ||
23 | 1 file changed, 1 insertion(+) | ||
24 | |||
25 | diff --git a/include/linux/aio.h b/include/linux/aio.h | ||
26 | index 2314ad8..b1a520e 100644 | ||
27 | --- a/include/linux/aio.h | ||
28 | +++ b/include/linux/aio.h | ||
29 | @@ -140,6 +140,7 @@ struct kiocb { | ||
30 | (x)->ki_dtor = NULL; \ | ||
31 | (x)->ki_obj.tsk = tsk; \ | ||
32 | (x)->ki_user_data = 0; \ | ||
33 | + (x)->private = NULL; \ | ||
34 | } while (0) | ||
35 | |||
36 | #define AIO_RING_MAGIC 0xa10a10a1 | ||
37 | -- | ||
38 | 1.7.10 | ||
39 | |||