[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20091117161616.3DD7.A69D9226@jp.fujitsu.com>
Date: Tue, 17 Nov 2009 16:17:07 +0900 (JST)
From: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
To: LKML <linux-kernel@...r.kernel.org>
Cc: kosaki.motohiro@...fujitsu.com, linux-mm <linux-mm@...ck.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Alasdair G Kergon <agk@...hat.com>, dm-devel@...hat.com
Subject: [PATCH 1/7] dm: use __GFP_HIGH instead PF_MEMALLOC
Non MM subsystem must not use PF_MEMALLOC. Memory reclaim need few
memory, anyone must not prevent it. Otherwise the system cause
mysterious hang-up and/or OOM Killer invokation.
Cc: Alasdair G Kergon <agk@...hat.com>
Cc: dm-devel@...hat.com
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
---
drivers/md/dm-ioctl.c | 18 +++++++-----------
1 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index a679429..4d24b0a 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1396,7 +1396,13 @@ static int copy_params(struct dm_ioctl __user *user, struct dm_ioctl **param)
if (tmp.data_size < (sizeof(tmp) - sizeof(tmp.data)))
return -EINVAL;
- dmi = vmalloc(tmp.data_size);
+
+ /*
+ * We use __vmalloc(__GFP_HIGH) instead vmalloc() because trying to
+ * avoid low memory issues when a device is suspended.
+ */
+ dmi = __vmalloc(tmp.data_size, GFP_KERNEL | __GFP_HIGHMEM | __GFP_HIGH,
+ PAGE_KERNEL);
if (!dmi)
return -ENOMEM;
@@ -1473,20 +1479,10 @@ static int ctl_ioctl(uint command, struct dm_ioctl __user *user)
DMWARN("dm_ctl_ioctl: unknown command 0x%x", command);
return -ENOTTY;
}
-
- /*
- * Trying to avoid low memory issues when a device is
- * suspended.
- */
- current->flags |= PF_MEMALLOC;
-
/*
* Copy the parameters into kernel space.
*/
r = copy_params(user, ¶m);
-
- current->flags &= ~PF_MEMALLOC;
-
if (r)
return r;
--
1.6.2.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists