s390/mm: fix write access check in gup_huge_pmd()
authorGerald Schaefer <gerald.schaefer@de.ibm.com>
Mon, 18 Sep 2017 14:51:51 +0000 (16:51 +0200)
committerpopcornmix <popcornmix@gmail.com>
Fri, 6 Oct 2017 12:06:50 +0000 (13:06 +0100)
commita9c526cb02badedfb975e9fe6a7c2bc0de250a70
tree611cb934793bb8babf6aa231829876e036368724
parent0e8f09b18e2c54af1f5ffcabdd5b2232028cef33
s390/mm: fix write access check in gup_huge_pmd()

commit ba385c0594e723d41790ecfb12c610e6f90c7785 upstream.

The check for the _SEGMENT_ENTRY_PROTECT bit in gup_huge_pmd() is the
wrong way around. It must not be set for write==1, and not be checked for
write==0. Fix this similar to how it was fixed for ptes long time ago in
commit 25591b070336 ("[S390] fix get_user_pages_fast").

One impact of this bug would be unnecessarily using the gup slow path for
write==0 on r/w mappings. A potentially more severe impact would be that
gup_huge_pmd() will succeed for write==1 on r/o mappings.

Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/s390/mm/gup.c