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