• Heiko Carstens's avatar
    s390/extable: add dedicated uaccess handler · 484a8ed8
    Heiko Carstens authored
    This is more or less a combination of commit 2e77a62c ("arm64:
    extable: add a dedicated uaccess handler") and commit 4b5305de
    ("x86/extable: Extend extable functionality").
    
    To describe the problem that needs to solved let's cite the full arm64
    commit message:
    
    ------
    For inline assembly, we place exception fixups out-of-line in the
    `.fixup` section such that these are out of the way of the fast path.
    This has a few drawbacks:
    
    * Since the fixup code is anonymous, backtraces will symbolize fixups
      as offsets from the nearest prior symbol, currently
      `__entry_tramp_text_end`. This is confusing, and painful to debug
      without access to the relevant vmlinux.
    
    * Since the exception handler adjusts the PC to execute the fixup, and
      the fixup uses a direct branch back into the function it fixes,
      backtraces of fixups miss the original function. This is confusing,
      and violates requirements for RELIABLE_STACKTRACE (and therefore
      LIVEPATCH).
    
    * Inline assembly and associated fixups are generated from templates,
      and we have many copies of logically identical fixups which only
      differ in which specific registers are written to and which address
      is branched to at the end of the fixup. This is potentially wasteful
      of I-cache resources, and makes it hard to add additional logic to
      fixups without significant bloat.
    
    This patch address all three concerns for inline uaccess fixups by
    adding a dedicated exception handler which updates registers in
    exception context and subsequent returns back into the function which
    faulted, removing the need for fixups specialized to each faulting
    instruction.
    
    Other than backtracing, there should be no functional change as a result
    of this patch.
    ------
    Acked-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    484a8ed8
uaccess.h 8.8 KB