Commit 76502abc authored by Heiko Carstens's avatar Heiko Carstens
Browse files

s390/mm: Change comment and die() message if teid.b61 is zero



The comments in do_protection() give the impression that a TEID, where bit
61 is zero, indicates a low address protection exception. This is not
necessarily true, and it depends on the type of Suppression-on-Protection
facility of the machine (see Princples of Operation) what this means.

Rework the comments and the die() message to reflect this. This may also
help to avoid confusion.

Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 02310adc
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -368,20 +368,15 @@ void do_protection_exception(struct pt_regs *regs)
	if (!(regs->int_code & 0x200))
		regs->psw.addr = __rewind_psw(regs->psw, regs->int_code >> 16);
	/*
	 * Check for low-address protection.  This needs to be treated
	 * as a special case because the translation exception code
	 * field is not guaranteed to contain valid data in this case.
	 * If bit 61 if the TEID is not set, the remainder of the
	 * TEID is unpredictable. Special handling is required.
	 */
	if (unlikely(!teid.b61)) {
		if (user_mode(regs)) {
			/* Low-address protection in user mode: cannot happen */
			dump_fault_info(regs);
			die(regs, "Low-address protection");
			die(regs, "Unexpected TEID");
		}
		/*
		 * Low-address protection in kernel mode means
		 * NULL pointer write access in kernel mode.
		 */
		/* Assume low-address protection in kernel mode. */
		return handle_fault_error_nolock(regs, 0);
	}
	if (unlikely(cpu_has_nx() && teid.b56)) {