diff options
author | Oscar Salvador <[email protected]> | 2024-05-28 22:53:23 +0200 |
---|---|---|
committer | Andrew Morton <[email protected]> | 2024-06-05 19:19:26 -0700 |
commit | 8daf9c702ee7f825f0de8600abff764acfedea13 (patch) | |
tree | 85e566f73d554ad7a37e1054b02b3f0ed7aa9e14 /drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.c | |
parent | c2dc78b86e0821ecf9a9d0c35dba2618279a5bb6 (diff) |
mm/hugetlb: do not call vma_add_reservation upon ENOMEM
sysbot reported a splat [1] on __unmap_hugepage_range(). This is because
vma_needs_reservation() can return -ENOMEM if
allocate_file_region_entries() fails to allocate the file_region struct
for the reservation.
Check for that and do not call vma_add_reservation() if that is the case,
otherwise region_abort() and region_del() will see that we do not have any
file_regions.
If we detect that vma_needs_reservation() returned -ENOMEM, we clear the
hugetlb_restore_reserve flag as if this reservation was still consumed, so
free_huge_folio() will not increment the resv count.
[1] https://lore.kernel.org/linux-mm/[email protected]/T/#ma5983bc1ab18a54910da83416b3f89f3c7ee43aa
Link: https://lkml.kernel.org/r/[email protected]
Fixes: df7a6d1f6405 ("mm/hugetlb: restore the reservation if needed")
Signed-off-by: Oscar Salvador <[email protected]>
Reported-and-tested-by: [email protected]
Closes: https://lore.kernel.org/linux-mm/[email protected]/
Cc: Breno Leitao <[email protected]>
Cc: Muchun Song <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.c')
0 files changed, 0 insertions, 0 deletions