On Wed, Oct 31, 2018 at 02:52:20PM +0000, Punit Agrawal wrote: > Christoffer Dall <christoffer.dall@xxxxxxx> writes: > > > On Mon, Oct 01, 2018 at 04:54:35PM +0100, Punit Agrawal wrote: > >> PageTransCompoundMap() returns true for hugetlbfs and THP > >> hugepages. This behaviour incorrectly leads to stage 2 faults for > >> unsupported hugepage sizes (e.g., 64K hugepage with 4K pages) to be > >> treated as THP faults. > >> > >> Tighten the check to filter out hugetlbfs pages. This also leads to > >> consistently mapping all unsupported hugepage sizes as PTE level > >> entries at stage 2. > >> > >> Signed-off-by: Punit Agrawal <punit.agrawal@xxxxxxx> > >> Reviewed-by: Suzuki Poulose <suzuki.poulose@xxxxxxx> > >> Cc: Christoffer Dall <christoffer.dall@xxxxxxx> > >> Cc: Marc Zyngier <marc.zyngier@xxxxxxx> > >> Cc: stable@xxxxxxxxxxxxxxx # v4.13+ > > > > > > Hmm, this function is only actually called from user_mem_abort() if we > > have (!hugetlb), so I'm not sure the cc stable here was actually > > warranted, nor that this patch is strictly necessary. > > > > It doesn't hurt, and makes the code potentially more robust for the > > future though. > > > > Am I missing something? > > !hugetlb is only true for hugepage sizes supported at stage 2. The > function also got called for unsupported hugepage size at stage 2, e.g., > 64k hugepage with 4k page size, which then ended up doing the wrong > thing. > > Hope that adds some context. I should've added this to the commit log. > To be fair you did say that this was for unsupported hugepage sizes. Thanks for the explanation. Christoffer