From: Michal Hocko <mho...@suse.com>

copy_params seems to be little bit confused about which allocation flags
to use. It enforces GFP_NOIO even though it uses
memalloc_noio_{save,restore} which enforces GFP_NOIO at the page
allocator level automatically (via memalloc_noio_flags). It also
uses __GFP_REPEAT for the __vmalloc request which doesn't make much
sense either because vmalloc doesn't rely on costly high order
allocations. Let's just drop the __GFP_REPEAT and leave the further
cleanup to later changes.

Cc: Shaohua Li <s...@kernel.org>
Cc: Mikulas Patocka <mpato...@redhat.com>
Cc: dm-de...@redhat.com
Signed-off-by: Michal Hocko <mho...@suse.com>
---
 drivers/md/dm-ioctl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index 2adf81d81fca..2c7ca258c4e4 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1723,7 +1723,7 @@ static int copy_params(struct dm_ioctl __user *user, 
struct dm_ioctl *param_kern
        if (!dmi) {
                unsigned noio_flag;
                noio_flag = memalloc_noio_save();
-               dmi = __vmalloc(param_kernel->data_size, GFP_NOIO | 
__GFP_REPEAT | __GFP_HIGH | __GFP_HIGHMEM, PAGE_KERNEL);
+               dmi = __vmalloc(param_kernel->data_size, GFP_NOIO | __GFP_HIGH 
| __GFP_HIGHMEM, PAGE_KERNEL);
                memalloc_noio_restore(noio_flag);
                if (dmi)
                        *param_flags |= DM_PARAMS_VMALLOC;
-- 
2.8.0.rc3

Reply via email to