fault.c (db1177ee6206f957f579fdbfebb2c6a64e82c694) | fault.c (33692f27597fcab536d7cbbcc8f52905133e4aa7) |
---|---|
1/* 2 * S390 version 3 * Copyright IBM Corp. 1999 4 * Author(s): Hartmut Penner (hp@de.ibm.com) 5 * Ulrich Weigand (uweigand@de.ibm.com) 6 * 7 * Derived from "arch/i386/mm/fault.c" 8 * Copyright (C) 1995 Linus Torvalds --- 157 unchanged lines hidden (view full) --- 166 if (*table & (_REGION_ENTRY_INVALID | _REGION3_ENTRY_LARGE)) 167 goto out; 168 table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN); 169 /* fallthrough */ 170 case _ASCE_TYPE_SEGMENT: 171 table = table + ((address >> 20) & 0x7ff); 172 if (bad_address(table)) 173 goto bad; | 1/* 2 * S390 version 3 * Copyright IBM Corp. 1999 4 * Author(s): Hartmut Penner (hp@de.ibm.com) 5 * Ulrich Weigand (uweigand@de.ibm.com) 6 * 7 * Derived from "arch/i386/mm/fault.c" 8 * Copyright (C) 1995 Linus Torvalds --- 157 unchanged lines hidden (view full) --- 166 if (*table & (_REGION_ENTRY_INVALID | _REGION3_ENTRY_LARGE)) 167 goto out; 168 table = (unsigned long *)(*table & _REGION_ENTRY_ORIGIN); 169 /* fallthrough */ 170 case _ASCE_TYPE_SEGMENT: 171 table = table + ((address >> 20) & 0x7ff); 172 if (bad_address(table)) 173 goto bad; |
174 pr_cont("S:%016lx ", *table); | 174 pr_cont(KERN_CONT "S:%016lx ", *table); |
175 if (*table & (_SEGMENT_ENTRY_INVALID | _SEGMENT_ENTRY_LARGE)) 176 goto out; 177 table = (unsigned long *)(*table & _SEGMENT_ENTRY_ORIGIN); 178 } 179 table = table + ((address >> 12) & 0xff); 180 if (bad_address(table)) 181 goto bad; 182 pr_cont("P:%016lx ", *table); --- 73 unchanged lines hidden (view full) --- 256static inline void report_user_fault(struct pt_regs *regs, long signr) 257{ 258 if ((task_pid_nr(current) > 1) && !show_unhandled_signals) 259 return; 260 if (!unhandled_signal(current, signr)) 261 return; 262 if (!printk_ratelimit()) 263 return; | 175 if (*table & (_SEGMENT_ENTRY_INVALID | _SEGMENT_ENTRY_LARGE)) 176 goto out; 177 table = (unsigned long *)(*table & _SEGMENT_ENTRY_ORIGIN); 178 } 179 table = table + ((address >> 12) & 0xff); 180 if (bad_address(table)) 181 goto bad; 182 pr_cont("P:%016lx ", *table); --- 73 unchanged lines hidden (view full) --- 256static inline void report_user_fault(struct pt_regs *regs, long signr) 257{ 258 if ((task_pid_nr(current) > 1) && !show_unhandled_signals) 259 return; 260 if (!unhandled_signal(current, signr)) 261 return; 262 if (!printk_ratelimit()) 263 return; |
264 printk(KERN_ALERT "User process fault: interruption code %04x ilc:%d ", | 264 printk(KERN_ALERT "User process fault: interruption code %04x ilc:%d", |
265 regs->int_code & 0xffff, regs->int_code >> 17); 266 print_vma_addr(KERN_CONT "in ", regs->psw.addr & PSW_ADDR_INSN); 267 printk(KERN_CONT "\n"); 268 printk(KERN_ALERT "failing address: %016lx TEID: %016lx\n", 269 regs->int_parm_long & __FAIL_ADDR_MASK, regs->int_parm_long); 270 dump_fault_info(regs); 271 show_regs(regs); 272} --- 96 unchanged lines hidden (view full) --- 369 do_no_context(regs); 370 break; 371 default: /* fault & VM_FAULT_ERROR */ 372 if (fault & VM_FAULT_OOM) { 373 if (!user_mode(regs)) 374 do_no_context(regs); 375 else 376 pagefault_out_of_memory(); | 265 regs->int_code & 0xffff, regs->int_code >> 17); 266 print_vma_addr(KERN_CONT "in ", regs->psw.addr & PSW_ADDR_INSN); 267 printk(KERN_CONT "\n"); 268 printk(KERN_ALERT "failing address: %016lx TEID: %016lx\n", 269 regs->int_parm_long & __FAIL_ADDR_MASK, regs->int_parm_long); 270 dump_fault_info(regs); 271 show_regs(regs); 272} --- 96 unchanged lines hidden (view full) --- 369 do_no_context(regs); 370 break; 371 default: /* fault & VM_FAULT_ERROR */ 372 if (fault & VM_FAULT_OOM) { 373 if (!user_mode(regs)) 374 do_no_context(regs); 375 else 376 pagefault_out_of_memory(); |
377 } else if (fault & VM_FAULT_SIGSEGV) { 378 /* Kernel mode? Handle exceptions or die */ 379 if (!user_mode(regs)) 380 do_no_context(regs); 381 else 382 do_sigsegv(regs, SEGV_MAPERR); |
|
377 } else if (fault & VM_FAULT_SIGBUS) { 378 /* Kernel mode? Handle exceptions or die */ 379 if (!user_mode(regs)) 380 do_no_context(regs); 381 else 382 do_sigbus(regs); 383 } else 384 BUG(); --- 404 unchanged lines hidden --- | 383 } else if (fault & VM_FAULT_SIGBUS) { 384 /* Kernel mode? Handle exceptions or die */ 385 if (!user_mode(regs)) 386 do_no_context(regs); 387 else 388 do_sigbus(regs); 389 } else 390 BUG(); --- 404 unchanged lines hidden --- |