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)
committerRaspbian kernel package updater <root@raspbian.org>
Sun, 8 Oct 2017 01:09:35 +0000 (01:09 +0000)
commita224d3b887548a3e2c67f1c39b74c2ed538b67dd
treec59b2b0ba9ce00fa4b740b193de4c619d40a1a6e
parent5c4f78f8855a3e286c8c50238df4c16d5e3f3431
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