No description
Find a file
Thomas Gleixner 260724cab0 x86/extable: Rework the exception table mechanics
[ Upstream commit 46d28947d9 ]

The exception table entries contain the instruction address, the fixup
address and the handler address. All addresses are relative. Storing the
handler address has a few downsides:

 1) Most handlers need to be exported

 2) Handlers can be defined everywhere and there is no overview about the
    handler types

 3) MCE needs to check the handler type to decide whether an in kernel #MC
    can be recovered. The functionality of the handler itself is not in any
    way special, but for these checks there need to be separate functions
    which in the worst case have to be exported.

    Some of these 'recoverable' exception fixups are pretty obscure and
    just reuse some other handler to spare code. That obfuscates e.g. the
    #MC safe copy functions. Cleaning that up would require more handlers
    and exports

Rework the exception fixup mechanics by storing a fixup type number instead
of the handler address and invoke the proper handler for each fixup
type. Also teach the extable sort to leave the type field alone.

This makes most handlers static except for special cases like the MCE
MSR fixup and the BPF fixup. This allows to add more types for cleaning up
the obscure places without adding more handler code and exports.

There is a marginal code size reduction for a production config and it
removes _eight_ exported symbols.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lkml.kernel.org/r/20210908132525.211958725@linutronix.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-04-19 17:51:45 +08:00
arch x86/extable: Rework the exception table mechanics 2023-04-19 17:51:45 +08:00
block block: fix rq-qos breakage from skipping rq_qos_done_bio() 2023-04-19 17:51:03 +08:00
certs certs/blacklist_hashes.c: fix const confusion in certs blacklist 2023-04-19 17:50:34 +08:00
crypto crypto: memneq - move into lib/ 2023-04-19 17:50:35 +08:00
Documentation mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30% 2023-04-19 17:51:37 +08:00
drivers spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA transfers 2023-04-19 17:51:45 +08:00
fs dlm: fix pending remove if msg allocation fails 2023-04-19 17:51:45 +08:00
include tcp: Fix data-races around sysctl_tcp_slow_start_after_idle. 2023-04-19 17:51:44 +08:00
init Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug 2023-04-19 17:50:04 +08:00
ipc ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() 2023-04-19 17:49:52 +08:00
kernel sched/deadline: Fix BUG_ON condition for deboosted tasks 2023-04-19 17:51:45 +08:00
lib ida: don't use BUG_ON() for debugging 2023-04-19 17:51:14 +08:00
LICENSES LICENSES/dual/CC-BY-4.0: Git rid of "smart quotes" 2021-07-15 06:31:24 -06:00
mm mm/mempolicy: fix uninit-value in mpol_rebind_policy() 2023-04-19 17:51:45 +08:00
net tcp: Fix data-races around sysctl_tcp_max_reordering. 2023-04-19 17:51:44 +08:00
samples samples/landlock: Format with clang-format 2023-04-19 17:50:01 +08:00
scripts x86/extable: Rework the exception table mechanics 2023-04-19 17:51:45 +08:00
security lockdown: Fix kexec lockdown bypass with ima policy 2023-04-19 17:51:35 +08:00
sound ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0) 2023-04-19 17:51:27 +08:00
tools KVM: selftests: Fix target thread to be migrated in rseq_test 2023-04-19 17:51:44 +08:00
usr usr/include/Makefile: add linux/nfc.h to the compile-test coverage 2023-04-19 17:44:58 +08:00
virt KVM: Don't null dereference ops->destroy 2023-04-19 17:51:45 +08:00
.clang-format clang-format: Update with the latest for_each macro list 2021-05-12 23:32:39 +02:00
.cocciconfig
.get_maintainer.ignore
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore .gitignore: ignore only top-level modules.builtin 2021-05-02 00:43:35 +09:00
.mailmap mailmap: add Andrej Shadura 2021-10-18 20:22:03 -10:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Move Daniel Drake to credits 2021-09-21 08:34:58 +03:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS Input: goodix - add a goodix.h header file 2023-04-19 17:50:59 +08:00
Makefile Linux 5.15.57 2023-04-19 17:51:35 +08:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.