]> git.itanic.dy.fi Git - linux-stable/commitdiff
s390/mm: Fix NULL pointer dereference
authorSven Schnelle <svens@linux.ibm.com>
Mon, 15 Apr 2024 05:52:13 +0000 (07:52 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Wed, 17 Apr 2024 15:26:34 +0000 (17:26 +0200)
The recently added check to figure out if a fault happened on gmap ASCE
dereferences the gmap pointer in lowcore without checking that it is not
NULL. For all non-KVM processes the pointer is NULL, so that some value
from lowcore will be read. With the current layouts of struct gmap and
struct lowcore the read value (aka ASCE) is zero, so that this doesn't lead
to any observable bug; at least currently.

Fix this by adding the missing NULL pointer check.

Fixes: 64c3431808bd ("s390/entry: compare gmap asce to determine guest/host fault")
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/kernel/entry.S

index 3dc85638bc63b7d96eb3ebc25c558cff967395c6..6a1e0fbbaa15b325c898548afe1189905d4b0520 100644 (file)
@@ -340,7 +340,8 @@ SYM_CODE_START(pgm_check_handler)
        mvc     __PT_LAST_BREAK(8,%r11),__LC_PGM_LAST_BREAK
        stctg   %c1,%c1,__PT_CR1(%r11)
 #if IS_ENABLED(CONFIG_KVM)
-       lg      %r12,__LC_GMAP
+       ltg     %r12,__LC_GMAP
+       jz      5f
        clc     __GMAP_ASCE(8,%r12), __PT_CR1(%r11)
        jne     5f
        BPENTER __SF_SIE_FLAGS(%r10),_TIF_ISOLATE_BP_GUEST