@@ -304,11 +304,24 @@ static int vmap_range_noflush(unsigned long addr, unsigned long end,
304304 return err ;
305305}
306306
307+ int vmap_page_range (unsigned long addr , unsigned long end ,
308+ phys_addr_t phys_addr , pgprot_t prot )
309+ {
310+ int err ;
311+
312+ err = vmap_range_noflush (addr , end , phys_addr , pgprot_nx (prot ),
313+ ioremap_max_page_shift );
314+ flush_cache_vmap (addr , end );
315+ if (!err )
316+ err = kmsan_ioremap_page_range (addr , end , phys_addr , prot ,
317+ ioremap_max_page_shift );
318+ return err ;
319+ }
320+
307321int ioremap_page_range (unsigned long addr , unsigned long end ,
308322 phys_addr_t phys_addr , pgprot_t prot )
309323{
310324 struct vm_struct * area ;
311- int err ;
312325
313326 area = find_vm_area ((void * )addr );
314327 if (!area || !(area -> flags & VM_IOREMAP )) {
@@ -322,13 +335,7 @@ int ioremap_page_range(unsigned long addr, unsigned long end,
322335 (long )area -> addr + get_vm_area_size (area ));
323336 return - ERANGE ;
324337 }
325- err = vmap_range_noflush (addr , end , phys_addr , pgprot_nx (prot ),
326- ioremap_max_page_shift );
327- flush_cache_vmap (addr , end );
328- if (!err )
329- err = kmsan_ioremap_page_range (addr , end , phys_addr , prot ,
330- ioremap_max_page_shift );
331- return err ;
338+ return vmap_page_range (addr , end , phys_addr , prot );
332339}
333340
334341static void vunmap_pte_range (pmd_t * pmd , unsigned long addr , unsigned long end ,
0 commit comments