mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
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: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
02310adcc6
commit
76502abca2
|
|
@ -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)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user