s390/mm: handle PTE-mapped tail pages in fast gup
authorGerald Schaefer <gerald.schaefer@de.ibm.com>
Thu, 17 Mar 2016 14:00:04 +0000 (15:00 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 17 Mar 2016 15:42:14 +0000 (16:42 +0100)
commitfc897c95e91451271cd707ee0f71022b9b201ce9
treeb0a44cffdfb8193ba708719e9d7a9bb033f64e61
parent91d37211769510ae0b4747045d8f81d3b9dd4278
s390/mm: handle PTE-mapped tail pages in fast gup

With the THP refcounting rework it is possible to see THP compound tail
pages mapped with PTEs during a THP split. This needs to be considered
when using page_cache_get_speculative(), which will always fail on tail
pages because ->_count is always zero. commit 7aef4172 "mm: handle
PTE-mapped tail pages in gerneric fast gup implementaiton" fixed it for
the generic fast gup code by using compound_head(page) instead of page,
but not for s390.

This patch is a 1:1 adaption of commit 7aef4172 for the s390 fast gup
code. Without this fix, gup will fall back to the slow path or fail
in the unlikely scenario that we hit a THP under splitting in-between
the page table split and the compound page split.

Cc: stable@vger.kernel.org # v4.5
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/mm/gup.c