• Mark Rutland's avatar
    arm64: extable: add `type` and `data` fields · d6e2cc56
    Mark Rutland authored
    Subsequent patches will add specialized handlers for fixups, in addition
    to the simple PC fixup and BPF handlers we have today. In preparation,
    this patch adds a new `type` field to struct exception_table_entry, and
    uses this to distinguish the fixup and BPF cases. A `data` field is also
    added so that subsequent patches can associate data specific to each
    exception site (e.g. register numbers).
    
    Handlers are named ex_handler_*() for consistency, following the exmaple
    of x86. At the same time, get_ex_fixup() is split out into a helper so
    that it can be used by other ex_handler_*() functions ins subsequent
    patches.
    
    This patch will increase the size of the exception tables, which will be
    remedied by subsequent patches removing redundant fixup code. There
    should be no functional change as a result of this patch.
    
    Since each entry is now 12 bytes in size, we must reduce the alignment
    of each entry from `.align 3` (i.e. 8 bytes) to `.align 2` (i.e. 4
    bytes), which is the natrual alignment of the `insn` and `fixup` fields.
    The current 8-byte alignment is a holdover from when the `insn` and
    `fixup` fields was 8 bytes, and while not harmful has not been necessary
    since commit:
    
      6c94f27a ("arm64: switch to relative exception tables")
    
    Similarly, RO_EXCEPTION_TABLE_ALIGN is dropped to 4 bytes.
    
    Concurrently with this patch, x86's exception table entry format is
    being updated (similarly to a 12-byte format, with 32-bytes of absolute
    data). Once both have been merged it should be possible to unify the
    sorttable logic for the two.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: James Morse <james.morse@arm.com>
    Cc: Jean-Philippe Brucker <jean-philippe@linaro.org>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20211019160219.5202-11-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    d6e2cc56
extable.c 860 Bytes