On Wed, May 26, 2021 at 10:17 AM Mike Kravetz <mike.kravetz@xxxxxxxxxx> wrote: > > On 5/25/21 8:19 PM, Muchun Song wrote: > > On Wed, May 26, 2021 at 7:31 AM Mike Kravetz <mike.kravetz@xxxxxxxxxx> wrote: > >> > >> Here is a modification to the reservation tracking for fixup on errors. > >> It is a more general change, but should work for the hugetlb_mcopy_pte_atomic > >> case as well. > >> > >> Perhaps use this as a prerequisite for your fix(es)? Pretty sure this > >> will eliminate the need for the call to hugetlb_unreserve_pages. > > > > Hi Mike, > > > > It seems like someone is fixing a bug, right? Maybe a link should be > > placed in the cover letter so that someone can know what issue > > we are facing. > > > > Thanks Muchun, > > I wanted to first see if these patches would work in the code Mina is > modifying. If this works for Mina, then a more formal patch and request > for inclusion will be sent. > So a quick test: I apply my patche and yours on top of linus/master, and I remove the hugetlb_unreserve_pages() call that triggered this conversation, and run the userfaultfd test, resv_huge_pages underflows again, so it seems on the surface this doesn't quite work as is. Not quite sure what to do off the top of my head. I think I will try to debug why the 3 patches don't work together and I will fix either your patch or mine. I haven't taken a deep look yet; I just ran a quick test. > I believe this issue has existed since the introduction of hugetlb > reservations in v2.6.18. Since the bug only shows up when we take error > paths, the issue may not have been observed. Mina found a similar issue > in an error path which could also expose this issue. > -- > Mike Kravetz