Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [PATCH v2] mm, futex: Fix shared futex pgoff on shmem huge page | Date | Tue, 15 Jun 2021 16:53:27 +0200 |
| |
On Sat, Jun 12 2021 at 20:16, Hugh Dickins wrote: > If more than one futex is placed on a shmem huge page, it can happen that > waking the second wakes the first instead, and leaves the second waiting: > the key's shared.pgoff is wrong. > > When 3.11 commit 13d60f4b6ab5 ("futex: Take hugepages into account when > generating futex_key"), the only shared huge pages came from hugetlbfs, > and the code added to deal with its exceptional page->index was put into > hugetlb source. Then that was missed when 4.8 added shmem huge pages. > > page_to_pgoff() is what others use for this nowadays: except that, as > currently written, it gives the right answer on hugetlbfs head, but > nonsense on hugetlbfs tails. Fix that by calling hugetlbfs-specific > hugetlb_basepage_index() on PageHuge tails as well as on head. > > Yes, it's unconventional to declare hugetlb_basepage_index() there in > pagemap.h, rather than in hugetlb.h; but I do not expect anything but > page_to_pgoff() ever to need it. > > Fixes: 800d8c63b2e9 ("shmem: add huge pages support") > Reported-by: Neel Natu <neelnatu@google.com> > Signed-off-by: Hugh Dickins <hughd@google.com> > Cc: <stable@vger.kernel.org>
Assuming this goes through mm:
Acked-by: Thomas Gleixner <tglx@linutronix.de>
| |