···115115 if (trans_exc_code == 2)116116 /* Access via secondary space, set_fs setting decides */117117 return current->thread.mm_segment.ar4;118118- if (s390_user_mode == HOME_SPACE_MODE)119119- /* User space if the access has been done via home space. */120120- return trans_exc_code == 3;121118 /*122122- * If the user space is not the home space the kernel runs in home123123- * space. Access via secondary space has already been covered,124124- * access via primary space or access register is from user space119119+ * Access via primary space or access register is from user space125120 * and access via home space is from the kernel.126121 */127122 return trans_exc_code != 3;···466471 int access, fault;467472468473 /* Emulate a uaccess fault from kernel mode. */469469- regs.psw.mask = psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK;474474+ regs.psw.mask = PSW_KERNEL_BITS | PSW_MASK_DAT | PSW_MASK_MCHECK;470475 if (!irqs_disabled())471476 regs.psw.mask |= PSW_MASK_IO | PSW_MASK_EXT;472477 regs.psw.addr = (unsigned long) __builtin_return_address(0);
-4
arch/s390/mm/pgtable.c
···11571157 struct mm_struct *mm = tsk->mm;11581158 struct mmu_gather tlb;1159115911601160- /* Do we have switched amode? If no, we cannot do sie */11611161- if (s390_user_mode == HOME_SPACE_MODE)11621162- return -EINVAL;11631163-11641160 /* Do we have pgstes? if yes, we are done */11651161 if (mm_has_pgste(tsk->mm))11661162 return 0;