| From: Usama Arif <usama.arif@bytedance.com> |
| Subject: mm: hugetlb: only prep and add allocated folios for non-gigantic pages |
| Date: Mon, 9 Oct 2023 15:56:05 +0100 |
| |
| Calling prep_and_add_allocated_folios when allocating gigantic pages at |
| boot time causes the kernel to crash as folio_list is empty and iterating |
| it causes a NULL pointer dereference. Call this only for non-gigantic |
| pages when folio_list has entries. |
| |
| Link: https://lkml.kernel.org/r/20231009145605.2150897-1-usama.arif@bytedance.com |
| Fixes: bfb41d6b2fe148 ("hugetlb: restructure pool allocations") |
| Signed-off-by: Usama Arif <usama.arif@bytedance.com> |
| Cc: Fam Zheng <fam.zheng@bytedance.com> |
| Cc: Mike Kravetz <mike.kravetz@oracle.com> |
| Cc: Muchun Song <songmuchun@bytedance.com> |
| Cc: Punit Agrawal <punit.agrawal@bytedance.com> |
| Cc: Anshuman Khandual <anshuman.khandual@arm.com> |
| Cc: Barry Song <21cnbao@gmail.com> |
| Cc: David Hildenbrand <david@redhat.com> |
| Cc: David Rientjes <rientjes@google.com> |
| Cc: James Houghton <jthoughton@google.com> |
| Cc: Joao Martins <joao.m.martins@oracle.com> |
| Cc: Konrad Dybcio <konradybcio@kernel.org> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Miaohe Lin <linmiaohe@huawei.com> |
| Cc: Michal Hocko <mhocko@suse.com> |
| Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev> |
| Cc: Oscar Salvador <osalvador@suse.de> |
| Cc: Xiongchun Duan <duanxiongchun@bytedance.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/hugetlb.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/mm/hugetlb.c~hugetlb-restructure-pool-allocations-fix |
| +++ a/mm/hugetlb.c |
| @@ -3478,7 +3478,8 @@ static void __init hugetlb_hstate_alloc_ |
| } |
| |
| /* list will be empty if hstate_is_gigantic */ |
| - prep_and_add_allocated_folios(h, &folio_list); |
| + if (!hstate_is_gigantic(h)) |
| + prep_and_add_allocated_folios(h, &folio_list); |
| |
| if (i < h->max_huge_pages) { |
| char buf[32]; |
| _ |