Commit e6ec07dc authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik

s390/mm: fix NULL pointer dereference

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: 64c34318 ("s390/entry: compare gmap asce to determine guest/host fault")
Acked-by: default avatarSven Schnelle <svens@linux.ibm.com>
Reviewed-by: default avatarClaudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 39cd87c4
...@@ -75,7 +75,7 @@ static enum fault_type get_fault_type(struct pt_regs *regs) ...@@ -75,7 +75,7 @@ static enum fault_type get_fault_type(struct pt_regs *regs)
if (!IS_ENABLED(CONFIG_PGSTE)) if (!IS_ENABLED(CONFIG_PGSTE))
return KERNEL_FAULT; return KERNEL_FAULT;
gmap = (struct gmap *)S390_lowcore.gmap; gmap = (struct gmap *)S390_lowcore.gmap;
if (regs->cr1 == gmap->asce) if (gmap && gmap->asce == regs->cr1)
return GMAP_FAULT; return GMAP_FAULT;
return KERNEL_FAULT; return KERNEL_FAULT;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment