s390/vdso: correct vdso mapping for compat tasks
authorVasily Gorbik <gor@linux.ibm.com>
Wed, 2 Jan 2019 12:43:22 +0000 (13:43 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 11 Jan 2019 16:12:02 +0000 (17:12 +0100)
commit190f056fba230abee80712eb810939ef9a8c462f
treec7488d185009c27a167dd1f22c15d23ecd76091b
parentb7cb707c373094ce4008d4a6ac9b6b366ec52da5
s390/vdso: correct vdso mapping for compat tasks

While "s390/vdso: avoid 64-bit vdso mapping for compat tasks" fixed
64-bit vdso mapping for compat tasks under gdb it introduced another
problem. "compat_mm" flag is not inherited during fork and when
31-bit process forks a child (but does not perform exec) it ends up
with 64-bit vdso. To address that, init_new_context (which is called
during fork and exec) now initialize compat_mm based on thread TIF_31BIT
flag. Later compat_mm is adjusted in arch_setup_additional_pages, which
is called during exec.

Fixes: d1befa65823e ("s390/vdso: avoid 64-bit vdso mapping for compat tasks")
Reported-by: Stefan Liebler <stli@linux.ibm.com>
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: <stable@vger.kernel.org> # v4.20+
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/mmu_context.h
arch/s390/kernel/vdso.c