]> git.baikalelectronics.ru Git - kernel.git/commit
mm, mempolicy: fix up gup usage in lookup_node
authorMichal Hocko <mhocko@suse.com>
Wed, 3 Jun 2020 23:03:25 +0000 (16:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Jun 2020 03:09:49 +0000 (20:09 -0700)
commit96dc31a0231f9279998c84edf4f66cdc90047cfa
tree7095a011438bf9ee1fac60a18ce6bb336b19d2f3
parent1e47dd4c962d746156008b6f1918e72a47998ee9
mm, mempolicy: fix up gup usage in lookup_node

a970f48055e4 ("mm/mempolicy: Allow lookup_node() to handle fatal signal")
has added a special casing for 0 return value because that was a possible
gup return value when interrupted by fatal signal.  This has been fixed by
2baf50d068ff ("mm/gup: Let __get_user_pages_locked() return -EINTR for
fatal signal") in the mean time so a970f48055e4 can be reverted.

This patch however doesn't go all the way to revert it because the check
for 0 is wrong and confusing here.  Firstly it is inherently unsafe to
access the page when get_user_pages_locked returns 0 (aka no page
returned).

Fortunatelly this will not happen because get_user_pages_locked will not
return 0 when nr_pages > 0 unless FOLL_NOWAIT is specified which is not
the case here.  Document this potential error code in gup code while we
are at it.

Signed-off-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Xu <peterx@redhat.com>
Link: http://lkml.kernel.org/r/20200421071026.18394-1-mhocko@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/gup.c
mm/mempolicy.c