On Wed, 2023-03-08 at 11:41 +0200, Mike Rapoport wrote: > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index ef910bf349e1..84220ec45ec2 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -2892,7 +2892,7 @@ vm_area_alloc_pages(gfp_t gfp, int nid, > * to fails, fallback to a single page allocator that is > * more permissive. > */ > - if (!order) { > + if (!order && !(gfp & __GFP_UNMAPPED)) { > gfp_t bulk_gfp = gfp & ~__GFP_NOFAIL; > > while (nr_allocated < nr_pages) { This is obviously a quick POC patch, but I guess we should skip the whole vm_remove_mappings() thing since it would reset the direct map to RW for these unmapped pages. Or rather modules shouldn't set VM_FLUSH_RESET_PERMS if it uses this.