On (05/17/19 15:49), Masahiro Yamada wrote: [..] > @@ -211,6 +211,8 @@ static void dump_fault_info(struct pt_regs *regs) > asce = S390_lowcore.kernel_asce; > pr_cont("kernel "); > break; > + default: > + unreachable(); > } > pr_cont("ASCE.\n"); > dump_pagetable(asce, regs->int_parm_long & __FAIL_ADDR_MASK); Or have default fault type and asce? Just an idea. --- diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index c220399ae196..876d71c31894 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -174,7 +174,8 @@ static void dump_pagetable(unsigned long asce, unsigned long address) static void dump_fault_info(struct pt_regs *regs) { - unsigned long asce; + unsigned long asce = S390_lowcore.kernel_asce; + char *type = "kernel "; pr_alert("Failing address: %016lx TEID: %016lx\n", regs->int_parm_long & __FAIL_ADDR_MASK, regs->int_parm_long); @@ -197,22 +198,18 @@ static void dump_fault_info(struct pt_regs *regs) switch (get_fault_type(regs)) { case USER_FAULT: asce = S390_lowcore.user_asce; - pr_cont("user "); + type = "user "; break; case VDSO_FAULT: asce = S390_lowcore.vdso_asce; - pr_cont("vdso "); + type = "vdso "; break; case GMAP_FAULT: asce = ((struct gmap *) S390_lowcore.gmap)->asce; - pr_cont("gmap "); - break; - case KERNEL_FAULT: - asce = S390_lowcore.kernel_asce; - pr_cont("kernel "); + type = "gmap "; break; } - pr_cont("ASCE.\n"); + pr_cont("%s ASCE.\n", type); dump_pagetable(asce, regs->int_parm_long & __FAIL_ADDR_MASK); }