summaryrefslogtreecommitdiff
path: root/mm/ptdump.c
diff options
context:
space:
mode:
authorZach O'Keefe <zokeefe@google.com>2023-01-24 17:57:37 -0800
committerAndrew Morton <akpm@linux-foundation.org>2023-02-16 18:11:59 -0800
commitae63c898f4004bbc7d212f4adcb3bb14852c30d6 (patch)
treea41b6875863df80200687f388f218840566d8309 /mm/ptdump.c
parent5956592ce337330cdff0399a6f8b6a5aea397a8e (diff)
mm/MADV_COLLAPSE: set EAGAIN on unexpected page refcount
During collapse, in a few places we check to see if a given small page has any unaccounted references. If the refcount on the page doesn't match our expectations, it must be there is an unknown user concurrently interested in the page, and so it's not safe to move the contents elsewhere. However, the unaccounted pins are likely an ephemeral state. In this situation, MADV_COLLAPSE returns -EINVAL when it should return -EAGAIN. This could cause userspace to conclude that the syscall failed, when it in fact could succeed by retrying. Link: https://lkml.kernel.org/r/20230125015738.912924-1-zokeefe@google.com Fixes: 7d8faaf15545 ("mm/madvise: introduce MADV_COLLAPSE sync hugepage collapse") Signed-off-by: Zach O'Keefe <zokeefe@google.com> Reported-by: Hugh Dickins <hughd@google.com> Acked-by: Hugh Dickins <hughd@google.com> Reviewed-by: Yang Shi <shy828301@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/ptdump.c')
0 files changed, 0 insertions, 0 deletions