On Sun, 2023-10-01 at 21:39 -0700, Mike Kravetz wrote: > > Something is not right here. I have not looked closely at the patch, > but running libhugetlbfs test suite hits this NULL deref in misalign > (2M: 32). Hi Mike, fixing the null dereference was easy, but I continued running into a test case failure with linkhuge_rw. After tweaking the code in my patches quite a few times, I finally ran out of ideas and tried it on a tree without my patches. I still see the test failure on upstream 2cf0f7156238 ("Merge tag 'nfs-for-6.6-2' of git://git.linux- nfs.org/projects/anna/linux-nfs") This is with a modern glibc, and the __morecore assignments in libhugetlbfs/morecore.c commented out. HUGETLB_ELFMAP=R HUGETLB_SHARE=1 linkhuge_rw (2M: 32): Pool state: (('hugepages-2048kB', (('free_hugepages', 1), ('resv_hugepages', 0), ('surplus_hugepages', 0), ('nr_hugepages_mempolicy', 1), ('nr_hugepages', 1), ('nr_overcommit_hugepages', 0))),) Hugepage pool state not preserved! BEFORE: (('hugepages-2048kB', (('free_hugepages', 1), ('resv_hugepages', 0), ('surplus_hugepages', 0), ('nr_hugepages_mempolicy', 1), ('nr_hugepages', 1), ('nr_overcommit_hugepages', 0))),) AFTER: (('hugepages-2048kB', (('free_hugepages', 0), ('resv_hugepages', 0), ('surplus_hugepages', 0), ('nr_hugepages_mempolicy', 1), ('nr_hugepages', 1), ('nr_overcommit_hugepages', 0))),) It may take a little while to figure this one out. I did some bpftracing, but don't have a real smoking gun yet. The trace certainly shows the last user of the leaked huge page going into __unmap_hugepage_range. -- All Rights Reversed.