• Gerald Schaefer's avatar
    [S390] Fixed handling of access register mode faults. · 482b05dd
    Gerald Schaefer authored
    Replaced check_user_space() + __check_access_register with the new
    check_space(). The old functions made wrong assumptions about kernel
    and user space when the kernel and user address spaces are switched
    (kernel in home space, user in primary/secondary space).
    Secondly the user process can switch to the accress register mode if
    it is running in primary or secondary mode. In addition it can load
    an arbitrary value to the access registers. If any other value than
    0 for primary space or 1 for secondary space is loaded and memory
    is accessed using the base register related to the access register,
    the program should be terminated with a SIGSEGV. To achieve that the
    DUALD pointer in the DUCT and the PSALD pointer in the PASTE need
    to point to an array of 8 invalid access-list entries to get a
    ALEN-translation exception if an invalid alet is used.
    Signed-off-by: default avatarGerald Schaefer <geraldsc@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    482b05dd
fault.c 15.1 KB