aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/mm/fault.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/mm/fault.c')
-rw-r--r--arch/s390/mm/fault.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 44f0cda7e72e..f2b9a84dc2bf 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -355,6 +355,7 @@ out_of_memory:
355 up_read(&mm->mmap_sem); 355 up_read(&mm->mmap_sem);
356 if (tsk->pid == 1) { 356 if (tsk->pid == 1) {
357 yield(); 357 yield();
358 down_read(&mm->mmap_sem);
358 goto survive; 359 goto survive;
359 } 360 }
360 printk("VM: killing process %s\n", tsk->comm); 361 printk("VM: killing process %s\n", tsk->comm);
@@ -423,20 +424,13 @@ int pfault_init(void)
423 424
424 if (pfault_disable) 425 if (pfault_disable)
425 return -1; 426 return -1;
426 __asm__ __volatile__( 427 asm volatile(
427 " diag %1,%0,0x258\n" 428 " diag %1,%0,0x258\n"
428 "0: j 2f\n" 429 "0: j 2f\n"
429 "1: la %0,8\n" 430 "1: la %0,8\n"
430 "2:\n" 431 "2:\n"
431 ".section __ex_table,\"a\"\n" 432 EX_TABLE(0b,1b)
432 " .align 4\n" 433 : "=d" (rc) : "a" (&refbk), "m" (refbk) : "cc");
433#ifndef CONFIG_64BIT
434 " .long 0b,1b\n"
435#else /* CONFIG_64BIT */
436 " .quad 0b,1b\n"
437#endif /* CONFIG_64BIT */
438 ".previous"
439 : "=d" (rc) : "a" (&refbk), "m" (refbk) : "cc" );
440 __ctl_set_bit(0, 9); 434 __ctl_set_bit(0, 9);
441 return rc; 435 return rc;
442} 436}
@@ -449,18 +443,11 @@ void pfault_fini(void)
449 if (pfault_disable) 443 if (pfault_disable)
450 return; 444 return;
451 __ctl_clear_bit(0,9); 445 __ctl_clear_bit(0,9);
452 __asm__ __volatile__( 446 asm volatile(
453 " diag %0,0,0x258\n" 447 " diag %0,0,0x258\n"
454 "0:\n" 448 "0:\n"
455 ".section __ex_table,\"a\"\n" 449 EX_TABLE(0b,0b)
456 " .align 4\n" 450 : : "a" (&refbk), "m" (refbk) : "cc");
457#ifndef CONFIG_64BIT
458 " .long 0b,0b\n"
459#else /* CONFIG_64BIT */
460 " .quad 0b,0b\n"
461#endif /* CONFIG_64BIT */
462 ".previous"
463 : : "a" (&refbk), "m" (refbk) : "cc" );
464} 451}
465 452
466asmlinkage void 453asmlinkage void