3.8.13.5 -stable review patch.  If anyone has any objections, please let me 
know.

------------------

From: Mikulas Patocka <[email protected]>

Set noio flag while calling __vmalloc() because it doesn't fully respect
gfp flags to avoid a possible deadlock (see commit
502624bdad3dba45dfaacaf36b7d83e39e74b2d2).

This should be backported to stable kernels 3.8 and newer. The kernel 3.8
doesn't have memalloc_noio_save(), so we should set and restore process
flag PF_MEMALLOC instead.

Signed-off-by: Mikulas Patocka <[email protected]>
Signed-off-by: Alasdair G Kergon <[email protected]>
[ kamal: backport to 3.8 (memalloc_noio_save is available in linux-3.8.y.z) ]
Signed-off-by: Kamal Mostafa <[email protected]>
---
 drivers/md/dm-ioctl.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index eee353d..4c260aa 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1585,7 +1585,10 @@ static int copy_params(struct dm_ioctl __user *user, 
struct dm_ioctl **param, in
                dmi = kmalloc(tmp.data_size, GFP_NOIO | __GFP_NORETRY | 
__GFP_NOMEMALLOC | __GFP_NOWARN);
 
        if (!dmi) {
+               unsigned noio_flag;
+               noio_flag = memalloc_noio_save();
                dmi = __vmalloc(tmp.data_size, GFP_NOIO | __GFP_REPEAT | 
__GFP_HIGH, PAGE_KERNEL);
+               memalloc_noio_restore(noio_flag);
                *param_flags |= DM_PARAMS_VMALLOC;
        }
 
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to