From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@suse.de>, Alexei Starovoitov <ast@kernel.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 144/201] x86/extable: Rework the exception table mechanics
Date: Wed, 27 Jul 2022 18:10:48 +0200 [thread overview]
Message-ID: <20220727161033.775548242@linuxfoundation.org> (raw)
In-Reply-To: <20220727161026.977588183@linuxfoundation.org>
From: Thomas Gleixner <tglx@linutronix.de>
[ Upstream commit 46d28947d9876fc0f8f93d3c69813ef6e9852595 ]
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>
---
arch/x86/include/asm/asm.h | 22 ++--
arch/x86/include/asm/extable.h | 44 +++++---
arch/x86/include/asm/extable_fixup_types.h | 19 ++++
arch/x86/include/asm/fpu/internal.h | 4 +-
arch/x86/include/asm/msr.h | 4 +-
arch/x86/include/asm/segment.h | 2 +-
arch/x86/kernel/cpu/mce/core.c | 24 +---
arch/x86/kernel/cpu/mce/internal.h | 10 --
arch/x86/kernel/cpu/mce/severity.c | 21 ++--
arch/x86/mm/extable.c | 123 +++++++++------------
arch/x86/net/bpf_jit_comp.c | 11 +-
scripts/sorttable.c | 4 +-
12 files changed, 133 insertions(+), 155 deletions(-)
create mode 100644 arch/x86/include/asm/extable_fixup_types.h
diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
index 719955e658a2..6aadb9a620ee 100644
--- a/arch/x86/include/asm/asm.h
+++ b/arch/x86/include/asm/asm.h
@@ -122,14 +122,17 @@
#ifdef __KERNEL__
+# include <asm/extable_fixup_types.h>
+
/* Exception table entry */
#ifdef __ASSEMBLY__
-# define _ASM_EXTABLE_HANDLE(from, to, handler) \
+
+# define _ASM_EXTABLE_TYPE(from, to, type) \
.pushsection "__ex_table","a" ; \
.balign 4 ; \
.long (from) - . ; \
.long (to) - . ; \
- .long (handler) - . ; \
+ .long type ; \
.popsection
# ifdef CONFIG_KPROBES
@@ -143,13 +146,13 @@
# endif
#else /* ! __ASSEMBLY__ */
-# define _EXPAND_EXTABLE_HANDLE(x) #x
-# define _ASM_EXTABLE_HANDLE(from, to, handler) \
+
+# define _ASM_EXTABLE_TYPE(from, to, type) \
" .pushsection \"__ex_table\",\"a\"\n" \
" .balign 4\n" \
" .long (" #from ") - .\n" \
" .long (" #to ") - .\n" \
- " .long (" _EXPAND_EXTABLE_HANDLE(handler) ") - .\n" \
+ " .long " __stringify(type) " \n" \
" .popsection\n"
/* For C file, we already have NOKPROBE_SYMBOL macro */
@@ -165,17 +168,16 @@ register unsigned long current_stack_pointer asm(_ASM_SP);
#endif /* __ASSEMBLY__ */
#define _ASM_EXTABLE(from, to) \
- _ASM_EXTABLE_HANDLE(from, to, ex_handler_default)
+ _ASM_EXTABLE_TYPE(from, to, EX_TYPE_DEFAULT)
#define _ASM_EXTABLE_UA(from, to) \
- _ASM_EXTABLE_HANDLE(from, to, ex_handler_uaccess)
+ _ASM_EXTABLE_TYPE(from, to, EX_TYPE_UACCESS)
#define _ASM_EXTABLE_CPY(from, to) \
- _ASM_EXTABLE_HANDLE(from, to, ex_handler_copy)
+ _ASM_EXTABLE_TYPE(from, to, EX_TYPE_COPY)
#define _ASM_EXTABLE_FAULT(from, to) \
- _ASM_EXTABLE_HANDLE(from, to, ex_handler_fault)
+ _ASM_EXTABLE_TYPE(from, to, EX_TYPE_FAULT)
#endif /* __KERNEL__ */
-
#endif /* _ASM_X86_ASM_H */
diff --git a/arch/x86/include/asm/extable.h b/arch/x86/include/asm/extable.h
index 1f0cbc52937c..93f400eb728f 100644
--- a/arch/x86/include/asm/extable.h
+++ b/arch/x86/include/asm/extable.h
@@ -1,12 +1,18 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_EXTABLE_H
#define _ASM_X86_EXTABLE_H
+
+#include <asm/extable_fixup_types.h>
+
/*
- * The exception table consists of triples of addresses relative to the
- * exception table entry itself. The first address is of an instruction
- * that is allowed to fault, the second is the target at which the program
- * should continue. The third is a handler function to deal with the fault
- * caused by the instruction in the first field.
+ * The exception table consists of two addresses relative to the
+ * exception table entry itself and a type selector field.
+ *
+ * The first address is of an instruction that is allowed to fault, the
+ * second is the target at which the program should continue.
+ *
+ * The type entry is used by fixup_exception() to select the handler to
+ * deal with the fault caused by the instruction in the first field.
*
* All the routines below use bits of fixup code that are out of line
* with the main instruction path. This means when everything is well,
@@ -15,7 +21,7 @@
*/
struct exception_table_entry {
- int insn, fixup, handler;
+ int insn, fixup, type;
};
struct pt_regs;
@@ -25,21 +31,27 @@ struct pt_regs;
do { \
(a)->fixup = (b)->fixup + (delta); \
(b)->fixup = (tmp).fixup - (delta); \
- (a)->handler = (b)->handler + (delta); \
- (b)->handler = (tmp).handler - (delta); \
+ (a)->type = (b)->type; \
+ (b)->type = (tmp).type; \
} while (0)
-enum handler_type {
- EX_HANDLER_NONE,
- EX_HANDLER_FAULT,
- EX_HANDLER_UACCESS,
- EX_HANDLER_OTHER
-};
-
extern int fixup_exception(struct pt_regs *regs, int trapnr,
unsigned long error_code, unsigned long fault_addr);
extern int fixup_bug(struct pt_regs *regs, int trapnr);
-extern enum handler_type ex_get_fault_handler_type(unsigned long ip);
+extern int ex_get_fixup_type(unsigned long ip);
extern void early_fixup_exception(struct pt_regs *regs, int trapnr);
+#ifdef CONFIG_X86_MCE
+extern void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr);
+#else
+static inline void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr) { }
+#endif
+
+#if defined(CONFIG_BPF_JIT) && defined(CONFIG_X86_64)
+bool ex_handler_bpf(const struct exception_table_entry *x, struct pt_regs *regs);
+#else
+static inline bool ex_handler_bpf(const struct exception_table_entry *x,
+ struct pt_regs *regs) { return false; }
+#endif
+
#endif
diff --git a/arch/x86/include/asm/extable_fixup_types.h b/arch/x86/include/asm/extable_fixup_types.h
new file mode 100644
index 000000000000..0adc117618e6
--- /dev/null
+++ b/arch/x86/include/asm/extable_fixup_types.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_X86_EXTABLE_FIXUP_TYPES_H
+#define _ASM_X86_EXTABLE_FIXUP_TYPES_H
+
+#define EX_TYPE_NONE 0
+#define EX_TYPE_DEFAULT 1
+#define EX_TYPE_FAULT 2
+#define EX_TYPE_UACCESS 3
+#define EX_TYPE_COPY 4
+#define EX_TYPE_CLEAR_FS 5
+#define EX_TYPE_FPU_RESTORE 6
+#define EX_TYPE_WRMSR 7
+#define EX_TYPE_RDMSR 8
+#define EX_TYPE_BPF 9
+
+#define EX_TYPE_WRMSR_IN_MCE 10
+#define EX_TYPE_RDMSR_IN_MCE 11
+
+#endif
diff --git a/arch/x86/include/asm/fpu/internal.h b/arch/x86/include/asm/fpu/internal.h
index 5a18694a89b2..ce6fc4f8d1d1 100644
--- a/arch/x86/include/asm/fpu/internal.h
+++ b/arch/x86/include/asm/fpu/internal.h
@@ -126,7 +126,7 @@ extern void save_fpregs_to_fpstate(struct fpu *fpu);
#define kernel_insn(insn, output, input...) \
asm volatile("1:" #insn "\n\t" \
"2:\n" \
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_fprestore) \
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_FPU_RESTORE) \
: output : input)
static inline int fnsave_to_user_sigframe(struct fregs_state __user *fx)
@@ -253,7 +253,7 @@ static inline void fxsave(struct fxregs_state *fx)
XRSTORS, X86_FEATURE_XSAVES) \
"\n" \
"3:\n" \
- _ASM_EXTABLE_HANDLE(661b, 3b, ex_handler_fprestore)\
+ _ASM_EXTABLE_TYPE(661b, 3b, EX_TYPE_FPU_RESTORE) \
: \
: "D" (st), "m" (*st), "a" (lmask), "d" (hmask) \
: "memory")
diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
index a3f87f1015d3..6b52182e178a 100644
--- a/arch/x86/include/asm/msr.h
+++ b/arch/x86/include/asm/msr.h
@@ -92,7 +92,7 @@ static __always_inline unsigned long long __rdmsr(unsigned int msr)
asm volatile("1: rdmsr\n"
"2:\n"
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_rdmsr_unsafe)
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR)
: EAX_EDX_RET(val, low, high) : "c" (msr));
return EAX_EDX_VAL(val, low, high);
@@ -102,7 +102,7 @@ static __always_inline void __wrmsr(unsigned int msr, u32 low, u32 high)
{
asm volatile("1: wrmsr\n"
"2:\n"
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_unsafe)
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR)
: : "c" (msr), "a"(low), "d" (high) : "memory");
}
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h
index 72044026eb3c..8dd8e8ec9fa5 100644
--- a/arch/x86/include/asm/segment.h
+++ b/arch/x86/include/asm/segment.h
@@ -339,7 +339,7 @@ static inline void __loadsegment_fs(unsigned short value)
"1: movw %0, %%fs \n"
"2: \n"
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_clear_fs)
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_CLEAR_FS)
: : "rm" (value) : "memory");
}
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index d8da3acf1ffd..773037e5fd76 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -382,7 +382,7 @@ static int msr_to_offset(u32 msr)
return -1;
}
-static void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr)
+void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr)
{
if (wrmsr) {
pr_emerg("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n",
@@ -401,15 +401,6 @@ static void ex_handler_msr_mce(struct pt_regs *regs, bool wrmsr)
cpu_relax();
}
-__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
-{
- ex_handler_msr_mce(regs, false);
- return true;
-}
-
/* MSR access wrappers used for error injection */
static noinstr u64 mce_rdmsrl(u32 msr)
{
@@ -439,22 +430,13 @@ static noinstr u64 mce_rdmsrl(u32 msr)
*/
asm volatile("1: rdmsr\n"
"2:\n"
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_rdmsr_fault)
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_RDMSR_IN_MCE)
: EAX_EDX_RET(val, low, high) : "c" (msr));
return EAX_EDX_VAL(val, low, high);
}
-__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
-{
- ex_handler_msr_mce(regs, true);
- return true;
-}
-
static noinstr void mce_wrmsrl(u32 msr, u64 v)
{
u32 low, high;
@@ -479,7 +461,7 @@ static noinstr void mce_wrmsrl(u32 msr, u64 v)
/* See comment in mce_rdmsrl() */
asm volatile("1: wrmsr\n"
"2:\n"
- _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_fault)
+ _ASM_EXTABLE_TYPE(1b, 2b, EX_TYPE_WRMSR_IN_MCE)
: : "c" (msr), "a"(low), "d" (high) : "memory");
}
diff --git a/arch/x86/kernel/cpu/mce/internal.h b/arch/x86/kernel/cpu/mce/internal.h
index 88dcc79cfb07..80dc94313bcf 100644
--- a/arch/x86/kernel/cpu/mce/internal.h
+++ b/arch/x86/kernel/cpu/mce/internal.h
@@ -186,14 +186,4 @@ extern bool amd_filter_mce(struct mce *m);
static inline bool amd_filter_mce(struct mce *m) { return false; };
#endif
-__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr);
-
-__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr);
-
#endif /* __X86_MCE_INTERNAL_H__ */
diff --git a/arch/x86/kernel/cpu/mce/severity.c b/arch/x86/kernel/cpu/mce/severity.c
index 17e631443116..74fe763bffda 100644
--- a/arch/x86/kernel/cpu/mce/severity.c
+++ b/arch/x86/kernel/cpu/mce/severity.c
@@ -265,25 +265,24 @@ static bool is_copy_from_user(struct pt_regs *regs)
*/
static int error_context(struct mce *m, struct pt_regs *regs)
{
- enum handler_type t;
-
if ((m->cs & 3) == 3)
return IN_USER;
if (!mc_recoverable(m->mcgstatus))
return IN_KERNEL;
- t = ex_get_fault_handler_type(m->ip);
- if (t == EX_HANDLER_FAULT) {
- m->kflags |= MCE_IN_KERNEL_RECOV;
- return IN_KERNEL_RECOV;
- }
- if (t == EX_HANDLER_UACCESS && regs && is_copy_from_user(regs)) {
- m->kflags |= MCE_IN_KERNEL_RECOV;
+ switch (ex_get_fixup_type(m->ip)) {
+ case EX_TYPE_UACCESS:
+ case EX_TYPE_COPY:
+ if (!regs || !is_copy_from_user(regs))
+ return IN_KERNEL;
m->kflags |= MCE_IN_KERNEL_COPYIN;
+ fallthrough;
+ case EX_TYPE_FAULT:
+ m->kflags |= MCE_IN_KERNEL_RECOV;
return IN_KERNEL_RECOV;
+ default:
+ return IN_KERNEL;
}
-
- return IN_KERNEL;
}
static int mce_severity_amd_smca(struct mce *m, enum context err_ctx)
diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c
index d9a1046f3a98..5db46df409b5 100644
--- a/arch/x86/mm/extable.c
+++ b/arch/x86/mm/extable.c
@@ -9,40 +9,25 @@
#include <asm/traps.h>
#include <asm/kdebug.h>
-typedef bool (*ex_handler_t)(const struct exception_table_entry *,
- struct pt_regs *, int, unsigned long,
- unsigned long);
-
static inline unsigned long
ex_fixup_addr(const struct exception_table_entry *x)
{
return (unsigned long)&x->fixup + x->fixup;
}
-static inline ex_handler_t
-ex_fixup_handler(const struct exception_table_entry *x)
-{
- return (ex_handler_t)((unsigned long)&x->handler + x->handler);
-}
-__visible bool ex_handler_default(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_default(const struct exception_table_entry *fixup,
+ struct pt_regs *regs)
{
regs->ip = ex_fixup_addr(fixup);
return true;
}
-EXPORT_SYMBOL(ex_handler_default);
-__visible bool ex_handler_fault(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_fault(const struct exception_table_entry *fixup,
+ struct pt_regs *regs, int trapnr)
{
regs->ax = trapnr;
- return ex_handler_default(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_default(fixup, regs);
}
-EXPORT_SYMBOL_GPL(ex_handler_fault);
/*
* Handler for when we fail to restore a task's FPU state. We should never get
@@ -54,10 +39,8 @@ EXPORT_SYMBOL_GPL(ex_handler_fault);
* of vulnerability by restoring from the initial state (essentially, zeroing
* out all the FPU registers) if we can't restore from the task's FPU state.
*/
-__visible bool ex_handler_fprestore(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_fprestore(const struct exception_table_entry *fixup,
+ struct pt_regs *regs)
{
regs->ip = ex_fixup_addr(fixup);
@@ -67,32 +50,23 @@ __visible bool ex_handler_fprestore(const struct exception_table_entry *fixup,
__restore_fpregs_from_fpstate(&init_fpstate, xfeatures_mask_fpstate());
return true;
}
-EXPORT_SYMBOL_GPL(ex_handler_fprestore);
-__visible bool ex_handler_uaccess(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_uaccess(const struct exception_table_entry *fixup,
+ struct pt_regs *regs, int trapnr)
{
WARN_ONCE(trapnr == X86_TRAP_GP, "General protection fault in user access. Non-canonical address?");
- return ex_handler_default(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_default(fixup, regs);
}
-EXPORT_SYMBOL(ex_handler_uaccess);
-__visible bool ex_handler_copy(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_copy(const struct exception_table_entry *fixup,
+ struct pt_regs *regs, int trapnr)
{
WARN_ONCE(trapnr == X86_TRAP_GP, "General protection fault in user access. Non-canonical address?");
- return ex_handler_fault(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_fault(fixup, regs, trapnr);
}
-EXPORT_SYMBOL(ex_handler_copy);
-__visible bool ex_handler_rdmsr_unsafe(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_rdmsr_unsafe(const struct exception_table_entry *fixup,
+ struct pt_regs *regs)
{
if (pr_warn_once("unchecked MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n",
(unsigned int)regs->cx, regs->ip, (void *)regs->ip))
@@ -101,14 +75,11 @@ __visible bool ex_handler_rdmsr_unsafe(const struct exception_table_entry *fixup
/* Pretend that the read succeeded and returned 0. */
regs->ax = 0;
regs->dx = 0;
- return ex_handler_default(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_default(fixup, regs);
}
-EXPORT_SYMBOL(ex_handler_rdmsr_unsafe);
-__visible bool ex_handler_wrmsr_unsafe(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_wrmsr_unsafe(const struct exception_table_entry *fixup,
+ struct pt_regs *regs)
{
if (pr_warn_once("unchecked MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n",
(unsigned int)regs->cx, (unsigned int)regs->dx,
@@ -116,44 +87,29 @@ __visible bool ex_handler_wrmsr_unsafe(const struct exception_table_entry *fixup
show_stack_regs(regs);
/* Pretend that the write succeeded. */
- return ex_handler_default(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_default(fixup, regs);
}
-EXPORT_SYMBOL(ex_handler_wrmsr_unsafe);
-__visible bool ex_handler_clear_fs(const struct exception_table_entry *fixup,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code,
- unsigned long fault_addr)
+static bool ex_handler_clear_fs(const struct exception_table_entry *fixup,
+ struct pt_regs *regs)
{
if (static_cpu_has(X86_BUG_NULL_SEG))
asm volatile ("mov %0, %%fs" : : "rm" (__USER_DS));
asm volatile ("mov %0, %%fs" : : "rm" (0));
- return ex_handler_default(fixup, regs, trapnr, error_code, fault_addr);
+ return ex_handler_default(fixup, regs);
}
-EXPORT_SYMBOL(ex_handler_clear_fs);
-enum handler_type ex_get_fault_handler_type(unsigned long ip)
+int ex_get_fixup_type(unsigned long ip)
{
- const struct exception_table_entry *e;
- ex_handler_t handler;
+ const struct exception_table_entry *e = search_exception_tables(ip);
- e = search_exception_tables(ip);
- if (!e)
- return EX_HANDLER_NONE;
- handler = ex_fixup_handler(e);
- if (handler == ex_handler_fault)
- return EX_HANDLER_FAULT;
- else if (handler == ex_handler_uaccess || handler == ex_handler_copy)
- return EX_HANDLER_UACCESS;
- else
- return EX_HANDLER_OTHER;
+ return e ? e->type : EX_TYPE_NONE;
}
int fixup_exception(struct pt_regs *regs, int trapnr, unsigned long error_code,
unsigned long fault_addr)
{
const struct exception_table_entry *e;
- ex_handler_t handler;
#ifdef CONFIG_PNPBIOS
if (unlikely(SEGMENT_IS_PNP_CODE(regs->cs))) {
@@ -173,8 +129,33 @@ int fixup_exception(struct pt_regs *regs, int trapnr, unsigned long error_code,
if (!e)
return 0;
- handler = ex_fixup_handler(e);
- return handler(e, regs, trapnr, error_code, fault_addr);
+ switch (e->type) {
+ case EX_TYPE_DEFAULT:
+ return ex_handler_default(e, regs);
+ case EX_TYPE_FAULT:
+ return ex_handler_fault(e, regs, trapnr);
+ case EX_TYPE_UACCESS:
+ return ex_handler_uaccess(e, regs, trapnr);
+ case EX_TYPE_COPY:
+ return ex_handler_copy(e, regs, trapnr);
+ case EX_TYPE_CLEAR_FS:
+ return ex_handler_clear_fs(e, regs);
+ case EX_TYPE_FPU_RESTORE:
+ return ex_handler_fprestore(e, regs);
+ case EX_TYPE_RDMSR:
+ return ex_handler_rdmsr_unsafe(e, regs);
+ case EX_TYPE_WRMSR:
+ return ex_handler_wrmsr_unsafe(e, regs);
+ case EX_TYPE_BPF:
+ return ex_handler_bpf(e, regs);
+ case EX_TYPE_RDMSR_IN_MCE:
+ ex_handler_msr_mce(regs, false);
+ break;
+ case EX_TYPE_WRMSR_IN_MCE:
+ ex_handler_msr_mce(regs, true);
+ break;
+ }
+ BUG();
}
extern unsigned int early_recursion_flag;
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index 131f7ceb54dc..4f3a60037150 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -832,9 +832,7 @@ static int emit_atomic(u8 **pprog, u8 atomic_op,
return 0;
}
-static bool ex_handler_bpf(const struct exception_table_entry *x,
- struct pt_regs *regs, int trapnr,
- unsigned long error_code, unsigned long fault_addr)
+bool ex_handler_bpf(const struct exception_table_entry *x, struct pt_regs *regs)
{
u32 reg = x->fixup >> 8;
@@ -1344,12 +1342,7 @@ st: if (is_imm8(insn->off))
}
ex->insn = delta;
- delta = (u8 *)ex_handler_bpf - (u8 *)&ex->handler;
- if (!is_simm32(delta)) {
- pr_err("extable->handler doesn't fit into 32-bit\n");
- return -EFAULT;
- }
- ex->handler = delta;
+ ex->type = EX_TYPE_BPF;
if (dst_reg > BPF_REG_9) {
pr_err("verifier error\n");
diff --git a/scripts/sorttable.c b/scripts/sorttable.c
index 6ee4fa882919..278bb53b325c 100644
--- a/scripts/sorttable.c
+++ b/scripts/sorttable.c
@@ -240,7 +240,7 @@ static void x86_sort_relative_table(char *extab_image, int image_size)
w(r(loc) + i, loc);
w(r(loc + 1) + i + 4, loc + 1);
- w(r(loc + 2) + i + 8, loc + 2);
+ /* Don't touch the fixup type */
i += sizeof(uint32_t) * 3;
}
@@ -253,7 +253,7 @@ static void x86_sort_relative_table(char *extab_image, int image_size)
w(r(loc) - i, loc);
w(r(loc + 1) - (i + 4), loc + 1);
- w(r(loc + 2) - (i + 8), loc + 2);
+ /* Don't touch the fixup type */
i += sizeof(uint32_t) * 3;
}
--
2.35.1
next prev parent reply other threads:[~2022-07-27 17:20 UTC|newest]
Thread overview: 212+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-27 16:08 [PATCH 5.15 000/201] 5.15.58-rc1 review Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 001/201] pinctrl: stm32: fix optional IRQ support to gpios Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 002/201] riscv: add as-options for modules with assembly compontents Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 003/201] mlxsw: spectrum_router: Fix IPv4 nexthop gateway indication Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 004/201] lockdown: Fix kexec lockdown bypass with ima policy Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 005/201] drm/ttm: fix locking in vmap/vunmap TTM GEM helpers Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 006/201] bus: mhi: host: pci_generic: add Telit FN980 v1 hardware revision Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 007/201] bus: mhi: host: pci_generic: add Telit FN990 Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 008/201] Revert "selftest/vm: verify remap destination address in mremap_test" Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 009/201] Revert "selftest/vm: verify mmap addr " Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 010/201] PCI: hv: Fix multi-MSI to allow more than one MSI vector Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 011/201] PCI: hv: Fix hv_arch_irq_unmask() for multi-MSI Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 012/201] PCI: hv: Reuse existing IRTE allocation in compose_msi_msg() Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 013/201] PCI: hv: Fix interrupt mapping for multi-MSI Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 014/201] serial: mvebu-uart: correctly report configured baudrate value Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 015/201] batman-adv: Use netif_rx_any_context() any Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 016/201] Revert "mt76: mt7921: Fix the error handling path of mt7921_pci_probe()" Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 017/201] Revert "mt76: mt7921e: fix possible probe failure after reboot" Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 018/201] mt76: mt7921: use physical addr to unify register access Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 019/201] mt76: mt7921e: fix possible probe failure after reboot Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 020/201] mt76: mt7921: Fix the error handling path of mt7921_pci_probe() Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 021/201] xfs: fix maxlevels comparisons in the btree staging code Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 022/201] xfs: fold perag loop iteration logic into helper function Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 023/201] xfs: rename the next_agno perag iteration variable Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 024/201] xfs: terminate perag iteration reliably on agcount Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 025/201] xfs: fix perag reference leak on iteration race with growfs Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 026/201] xfs: prevent a WARN_ONCE() in xfs_ioc_attr_list() Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 027/201] r8152: fix a WOL issue Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 028/201] ip: Fix data-races around sysctl_ip_default_ttl Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 029/201] xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in xfrm_bundle_lookup() Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 030/201] power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 031/201] RDMA/irdma: Do not advertise 1GB page size for x722 Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 032/201] RDMA/irdma: Fix sleep from invalid context BUG Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 033/201] pinctrl: ralink: rename MT7628(an) functions to MT76X8 Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 034/201] pinctrl: ralink: rename pinctrl-rt2880 to pinctrl-ralink Greg Kroah-Hartman
2022-07-27 16:08 ` [PATCH 5.15 035/201] pinctrl: ralink: Check for null return of devm_kcalloc Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 036/201] perf/core: Fix data race between perf_event_set_output() and perf_mmap_close() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 037/201] ipv4/tcp: do not use per netns ctl sockets Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 038/201] net: tun: split run_ebpf_filter() and pskb_trim() into different "if statement" Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 039/201] mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30% Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 040/201] sysctl: move some boundary constants from sysctl.c to sysctl_vals Greg Kroah-Hartman
2022-07-27 17:31 ` Luis Chamberlain
2022-07-27 18:11 ` Greg Kroah-Hartman
2022-07-27 20:44 ` Sasha Levin
2022-07-27 16:09 ` [PATCH 5.15 041/201] tcp: Fix data-races around sysctl_tcp_ecn Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 042/201] drm/amd/display: Support for DMUB HPD interrupt handling Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 043/201] drm/amd/display: Add option to defer works of hpd_rx_irq Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 044/201] drm/amd/display: Fork thread to offload work " Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 045/201] drm/amdgpu/display: add quirk handling for stutter mode Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 046/201] drm/amd/display: Ignore First MST Sideband Message Return Error Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 047/201] scsi: megaraid: Clear READ queue maps nr_queues Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 048/201] scsi: ufs: core: Drop loglevel of WriteBoost message Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 049/201] nvme: check for duplicate identifiers earlier Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 050/201] nvme: fix block device naming collision Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 051/201] e1000e: Enable GPT clock before sending message to CSME Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 052/201] Revert "e1000e: Fix possible HW unit hang after an s0ix exit" Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 053/201] igc: Reinstate IGC_REMOVED logic and implement it properly Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 054/201] ip: Fix data-races around sysctl_ip_no_pmtu_disc Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 055/201] ip: Fix data-races around sysctl_ip_fwd_use_pmtu Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 056/201] ip: Fix data-races around sysctl_ip_fwd_update_priority Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 057/201] ip: Fix data-races around sysctl_ip_nonlocal_bind Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 058/201] ip: Fix a data-race around sysctl_ip_autobind_reuse Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 059/201] ip: Fix a data-race around sysctl_fwmark_reflect Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 060/201] tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 061/201] tcp: sk->sk_bound_dev_if once in inet_request_bound_dev_if() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 062/201] tcp: Fix data-races around sysctl_tcp_l3mdev_accept Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 063/201] tcp: Fix data-races around sysctl_tcp_mtu_probing Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 064/201] tcp: Fix data-races around sysctl_tcp_base_mss Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 065/201] tcp: Fix data-races around sysctl_tcp_min_snd_mss Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 066/201] tcp: Fix a data-race around sysctl_tcp_mtu_probe_floor Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 067/201] tcp: Fix a data-race around sysctl_tcp_probe_threshold Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 068/201] tcp: Fix a data-race around sysctl_tcp_probe_interval Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 069/201] net: stmmac: fix pm runtime issue in stmmac_dvr_remove() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 070/201] net: stmmac: fix unbalanced ptp clock issue in suspend/resume flow Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 071/201] mtd: rawnand: gpmi: validate controller clock rate Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 072/201] mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 073/201] net: dsa: microchip: ksz_common: Fix refcount leak bug Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 074/201] net: skb: introduce kfree_skb_reason() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 075/201] net: skb: use kfree_skb_reason() in tcp_v4_rcv() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 076/201] net: skb: use kfree_skb_reason() in __udp4_lib_rcv() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 077/201] net: socket: rename SKB_DROP_REASON_SOCKET_FILTER Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 078/201] net: skb_drop_reason: add document for drop reasons Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 079/201] net: netfilter: use kfree_drop_reason() for NF_DROP Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 080/201] net: ipv4: use kfree_skb_reason() in ip_rcv_core() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 081/201] net: ipv4: use kfree_skb_reason() in ip_rcv_finish_core() Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 082/201] i2c: mlxcpld: Fix register setting for 400KHz frequency Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 083/201] i2c: cadence: Change large transfer count reset logic to be unconditional Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 084/201] perf tests: Fix Convert perf time to TSC test for hybrid Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 085/201] net: stmmac: fix dma queue left shift overflow issue Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 086/201] net/tls: Fix race in TLS device down flow Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 087/201] igmp: Fix data-races around sysctl_igmp_llm_reports Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 088/201] igmp: Fix a data-race around sysctl_igmp_max_memberships Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 089/201] igmp: Fix data-races around sysctl_igmp_max_msf Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 090/201] tcp: Fix data-races around keepalive sysctl knobs Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 091/201] tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 092/201] tcp: Fix data-races around sysctl_tcp_syncookies Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 093/201] tcp: Fix data-races around sysctl_tcp_migrate_req Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 094/201] tcp: Fix data-races around sysctl_tcp_reordering Greg Kroah-Hartman
2022-07-27 16:09 ` [PATCH 5.15 095/201] tcp: Fix data-races around some timeout sysctl knobs Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 096/201] tcp: Fix a data-race around sysctl_tcp_notsent_lowat Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 097/201] tcp: Fix a data-race around sysctl_tcp_tw_reuse Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 098/201] tcp: Fix data-races around sysctl_max_syn_backlog Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 099/201] tcp: Fix data-races around sysctl_tcp_fastopen Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 100/201] tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 101/201] iavf: Fix handling of dummy receive descriptors Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 102/201] pinctrl: armada-37xx: Use temporary variable for struct device Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 103/201] pinctrl: armada-37xx: Make use of the devm_platform_ioremap_resource() Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 104/201] pinctrl: armada-37xx: Convert to use dev_err_probe() Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 105/201] pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait context Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 106/201] i40e: Fix erroneous adapter reinitialization during recovery process Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 107/201] ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 108/201] net: stmmac: remove redunctant disable xPCS EEE call Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 109/201] gpio: pca953x: only use single read/write for No AI mode Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 110/201] gpio: pca953x: use the correct range when do regmap sync Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 111/201] gpio: pca953x: use the correct register address when regcache sync during init Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 112/201] be2net: Fix buffer overflow in be_get_module_eeprom Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 113/201] net: dsa: sja1105: silent spi_device_id warnings Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 114/201] net: dsa: vitesse-vsc73xx: " Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 115/201] drm/imx/dcss: Add missing of_node_put() in fail path Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 116/201] ipv4: Fix a data-race around sysctl_fib_multipath_use_neigh Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 117/201] ipv4: Fix data-races around sysctl_fib_multipath_hash_policy Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 118/201] ipv4: Fix data-races around sysctl_fib_multipath_hash_fields Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 119/201] ip: Fix data-races around sysctl_ip_prot_sock Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 120/201] udp: Fix a data-race around sysctl_udp_l3mdev_accept Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 121/201] tcp: Fix data-races around sysctl knobs related to SYN option Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 122/201] tcp: Fix a data-race around sysctl_tcp_early_retrans Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 123/201] tcp: Fix data-races around sysctl_tcp_recovery Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 124/201] tcp: Fix a data-race around sysctl_tcp_thin_linear_timeouts Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 125/201] tcp: Fix data-races around sysctl_tcp_slow_start_after_idle Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 126/201] tcp: Fix a data-race around sysctl_tcp_retrans_collapse Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 127/201] tcp: Fix a data-race around sysctl_tcp_stdurg Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 128/201] tcp: Fix a data-race around sysctl_tcp_rfc1337 Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 129/201] tcp: Fix a data-race around sysctl_tcp_abort_on_overflow Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 130/201] tcp: Fix data-races around sysctl_tcp_max_reordering Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 131/201] gpio: gpio-xilinx: Fix integer overflow Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 132/201] KVM: selftests: Fix target thread to be migrated in rseq_test Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 133/201] spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA transfers Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 134/201] KVM: Dont null dereference ops->destroy Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 135/201] mm/mempolicy: fix uninit-value in mpol_rebind_policy() Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 136/201] bpf: Make sure mac_header was set before using it Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 137/201] sched/deadline: Fix BUG_ON condition for deboosted tasks Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 138/201] x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 139/201] dlm: fix pending remove if msg allocation fails Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 140/201] x86/uaccess: Implement macros for CMPXCHG on user addresses Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 141/201] x86/extable: Tidy up redundant handler functions Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 142/201] x86/extable: Get rid of redundant macros Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 143/201] x86/mce: Deduplicate exception handling Greg Kroah-Hartman
2022-07-27 16:10 ` Greg Kroah-Hartman [this message]
2022-07-27 16:10 ` [PATCH 5.15 145/201] x86/extable: Provide EX_TYPE_DEFAULT_MCE_SAFE and EX_TYPE_FAULT_MCE_SAFE Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 146/201] bitfield.h: Fix "type of reg too small for mask" test Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 147/201] x86/entry_32: Remove .fixup usage Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 148/201] x86/extable: Extend extable functionality Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 149/201] x86/msr: Remove .fixup usage Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 150/201] x86/futex: " Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 151/201] KVM: x86: Use __try_cmpxchg_user() to emulate atomic accesses Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 152/201] xhci: dbc: refactor xhci_dbc_init() Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 153/201] xhci: dbc: create and remove dbc structure in dbgtty driver Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 154/201] xhci: dbc: Rename xhci_dbc_init and xhci_dbc_exit Greg Kroah-Hartman
2022-07-27 16:10 ` [PATCH 5.15 155/201] xhci: Set HCD flag to defer primary roothub registration Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 156/201] mt76: fix use-after-free by removing a non-RCU wcid pointer Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 157/201] iwlwifi: fw: uefi: add missing include guards Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 158/201] crypto: qat - set to zero DH parameters before free Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 159/201] crypto: qat - use pre-allocated buffers in datapath Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 160/201] crypto: qat - refactor submission logic Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 161/201] crypto: qat - add backlog mechanism Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 162/201] crypto: qat - fix memory leak in RSA Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 163/201] crypto: qat - remove dma_free_coherent() for RSA Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 164/201] crypto: qat - remove dma_free_coherent() for DH Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 165/201] crypto: qat - add param check for RSA Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 166/201] crypto: qat - add param check for DH Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 167/201] crypto: qat - re-enable registration of algorithms Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 168/201] exfat: fix referencing wrong parent directory information after renaming Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 169/201] tracing: Have event format check not flag %p* on __get_dynamic_array() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 170/201] tracing: Place trace_pid_list logic into abstract functions Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 171/201] tracing: Fix return value of trace_pid_write() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 172/201] um: virtio_uml: Allow probing from devicetree Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 173/201] um: virtio_uml: Fix broken device handling in time-travel Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 174/201] Bluetooth: Add bt_skb_sendmsg helper Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 175/201] Bluetooth: Add bt_skb_sendmmsg helper Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 176/201] Bluetooth: SCO: Replace use of memcpy_from_msg with bt_skb_sendmsg Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 177/201] Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 178/201] Bluetooth: Fix passing NULL to PTR_ERR Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 179/201] Bluetooth: SCO: Fix sco_send_frame returning skb->len Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 180/201] Bluetooth: Fix bt_skb_sendmmsg not allocating partial chunks Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 181/201] exfat: use updated exfat_chain directly during renaming Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 182/201] drm/amd/display: Reset DMCUB before HW init Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 183/201] drm/amd/display: Optimize bandwidth on following fast update Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 184/201] drm/amd/display: Fix surface optimization regression on Carrizo Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 185/201] x86/amd: Use IBPB for firmware calls Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 186/201] x86/alternative: Report missing return thunk details Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 187/201] watchqueue: make sure to serialize wqueue->defunct properly Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 188/201] tty: drivers/tty/, stop using tty_schedule_flip() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 189/201] tty: the rest, " Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 190/201] tty: drop tty_schedule_flip() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 191/201] tty: extract tty_flip_buffer_commit() from tty_flip_buffer_push() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 192/201] tty: use new tty_insert_flip_string_and_push_buffer() in pty_write() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 193/201] net: usb: ax88179_178a needs FLAG_SEND_ZLP Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 194/201] watch-queue: remove spurious double semicolon Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 195/201] drm/amd/display: Dont lock connection_mutex for DMUB HPD Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 196/201] drm/amd/display: invalid parameter check in dmub_hpd_callback Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 197/201] x86/extable: Prefer local labels in .set directives Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 198/201] KVM: x86: fix typo in __try_cmpxchg_user causing non-atomicness Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 199/201] x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 200/201] drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq() Greg Kroah-Hartman
2022-07-27 16:11 ` [PATCH 5.15 201/201] x86/entry_32: Fix segment exceptions Greg Kroah-Hartman
2022-07-28 0:27 ` [PATCH 5.15 000/201] 5.15.58-rc1 review Florian Fainelli
2022-07-28 5:42 ` Naresh Kamboju
2022-07-28 7:43 ` Bagas Sanjaya
2022-07-28 13:13 ` Guenter Roeck
2022-07-28 13:20 ` Greg Kroah-Hartman
2022-07-28 14:32 ` Jon Hunter
2022-07-28 14:39 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220727161033.775548242@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=ast@kernel.org \
--cc=bp@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).