mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-12 05:23:57 -04:00
s390/boot: Allow KASAN mapping to fallback to small pages
For KASAN shadow mappings, switch from physmem_alloc_or_die() to physmem_alloc() and return INVALID_PHYS_ADDR on allocation failure. This allows gracefully falling back from large pages to smaller pages (1MB or 4KB) if the allocation of 2GB size/aligned pages cannot be fulfilled. Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
This commit is contained in:
committed by
Alexander Gordeev
parent
aeb4358a52
commit
490a5e99ea
@@ -247,9 +247,13 @@ static unsigned long resolve_pa_may_alloc(unsigned long addr, unsigned long size
|
||||
return __identity_pa(addr);
|
||||
#ifdef CONFIG_KASAN
|
||||
case POPULATE_KASAN_MAP_SHADOW:
|
||||
addr = physmem_alloc_or_die(RR_VMEM, size, size);
|
||||
memset((void *)addr, 0, size);
|
||||
return addr;
|
||||
/* Allow to fail large page allocations, this will fall back to 1mb/4k pages */
|
||||
addr = physmem_alloc(RR_VMEM, size, size, size == PAGE_SIZE);
|
||||
if (addr) {
|
||||
memset((void *)addr, 0, size);
|
||||
return addr;
|
||||
}
|
||||
return INVALID_PHYS_ADDR;
|
||||
#endif
|
||||
default:
|
||||
return INVALID_PHYS_ADDR;
|
||||
|
||||
Reference in New Issue
Block a user