All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Sechang Lim <rhkrqnwk98@gmail.com>,
	Alexei Starovoitov <ast@kernel.org>,
	"Florent Revest (Anthropic)" <florent.revest@linux.dev>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 7.2 132/428] bpf: Skip detached progs in trampoline images that are still in use
Date: Fri,  9 Oct 2026 16:07:49 +0200	[thread overview]
Message-ID: <20261009140949.083169793@linuxfoundation.org> (raw)
In-Reply-To: <20261009140946.008206689@linuxfoundation.org>

7.2-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Florent Revest (Anthropic) <florent.revest@linux.dev>

[ Upstream commit 17637e1a581a22466ac3620a91e099683ff9cc6f ]

bpf_tramp_image_put() makes sure a trampoline image is not freed while
a task may still be running in it, but nothing similar is done for the
progs called by that image. Detach drops the last prog reference right
away and the prog is freed after grace periods, on the basis that a
task still in the traced function skips the fexit progs once the nop at
ip_after_call is patched to a jump.

That leaves out a task sleeping in a sleepable prog that runs before
the detached one, which no grace period waits for:

  CPU 0                               CPU 1
  in image I, sleeping in prog S
                                      detach P from I's trampoline
                                       -> new image, bpf_tramp_image_put(I)
                                      bpf_prog_put(P), last ref
                                      grace periods, P freed
  back from S
  __bpf_prog_enter(P)
  call P->bpf_func

If S and P are fexit progs the task is already past the patched jump,
and fentry only images don't have one. On x86 this is an int3 in
poisoned bpf_prog_pack memory:

  Oops: int3: 0000 [#1] SMP NOPTI
  CPU: 18 UID: 0 PID: 94573 Comm: x169 Not tainted 6.18.44 #1 PREEMPT(lazy)
  RIP: 0010:0xffffffffc0601d8d
  Call Trace:
   <TASK>
   ? bpf_trampoline_6442515411+0x1a4/0x21b
   bpf_lsm_bprm_committed_creds+0x5/0x10
   security_bprm_committed_creds+0x5f/0x70
   begin_new_exec+0x2d6/0x410
   ...

We hit this in production when progs attached through trampolines got
detached while their hooks were busy, and it was independently found
with a fuzzer and KASAN.

Have the JITs emit a patchable nop in front of each prog call sequence
and record it in the image. When a prog is detached, patch its nop to a
jump over the call sequence. Progs that stay attached keep running for
the tasks that are in the image, and ip_after_call isn't needed anymore.

The task can be in any image that isn't freed yet, not only in the
current one. It sleeps in image I1 that calls S, P and Q, then P is
detached and the trampoline moves to image I2, then Q is detached and
its call is still in I1. So the trampoline keeps a list of its images
until they are freed, and detaching a prog patches its nop in all of
them. Images hold a reference on the trampoline for that long.

On riscv and loongarch a jump of any range takes several instructions,
and a task preempted in the middle of them could resume into half of the
new sequence. The nop is a single instruction there, patched to a near
branch through arch_bpf_trampoline_skip().

With the extra nops, BPF_MAX_TRAMP_LINKS progs no longer fit in a page
on x86 and arm64 (and already didn't on powerpc), so lower the limit
there like s390 does.

Fixes: e21aa341785c ("bpf: Fix fexit trampoline.")
Reported-by: Sechang Lim <rhkrqnwk98@gmail.com>
Suggested-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Florent Revest (Anthropic) <florent.revest@linux.dev>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://patch.msgid.link/20260926135605.1217928-3-florent.revest@linux.dev
Closes: https://lore.kernel.org/bpf/20260815071927.147049-1-zirajs7@gmail.com/
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/arm64/net/bpf_jit_comp.c   | 37 +++++++++------
 arch/loongarch/net/bpf_jit.c    | 60 +++++++++++++++--------
 arch/powerpc/net/bpf_jit_comp.c | 45 +++++++++---------
 arch/riscv/net/bpf_jit_comp64.c | 56 +++++++++++++++-------
 arch/s390/net/bpf_jit_comp.c    | 46 +++++++++++-------
 arch/x86/net/bpf_jit_comp.c     | 26 ++++++----
 include/linux/bpf.h             | 44 +++++++++++++++--
 kernel/bpf/trampoline.c         | 84 ++++++++++++++++++++++++++-------
 8 files changed, 277 insertions(+), 121 deletions(-)

diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c
index 8c0c9b0fda16f..4405b06c03566 100644
--- a/arch/arm64/net/bpf_jit_comp.c
+++ b/arch/arm64/net/bpf_jit_comp.c
@@ -2358,10 +2358,11 @@ bool bpf_jit_supports_subprog_tailcalls(void)
 	return true;
 }
 
-static void invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_node *node,
-			    int bargs_off, int retval_off, int run_ctx_off,
-			    bool save_ret)
+static void invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_image *im,
+			    struct bpf_tramp_node *node, int bargs_off,
+			    int retval_off, int run_ctx_off, bool save_ret)
 {
+	void *skip;
 	__le32 *branch;
 	u64 enter_prog;
 	u64 exit_prog;
@@ -2371,6 +2372,10 @@ static void invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_node *node,
 	enter_prog = (u64)bpf_trampoline_enter(p);
 	exit_prog = (u64)bpf_trampoline_exit(p);
 
+	/* nop, patched to skip this prog when it is detached */
+	skip = ctx->ro_image + ctx->idx;
+	emit(A64_NOP, ctx);
+
 	if (node->cookie == 0) {
 		/* if cookie is zero, one instruction is enough to store it */
 		emit(A64_STR64I(A64_ZR, A64_SP, run_ctx_off + cookie_off), ctx);
@@ -2423,11 +2428,13 @@ static void invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_node *node,
 	emit(A64_ADD_I(1, A64_R(2), A64_SP, run_ctx_off), ctx);
 
 	emit_call(exit_prog, ctx);
+
+	bpf_tramp_image_add_skip(im, p, skip, ctx->ro_image + ctx->idx);
 }
 
-static void invoke_bpf_mod_ret(struct jit_ctx *ctx, struct bpf_tramp_nodes *tn,
-			       int bargs_off, int retval_off, int run_ctx_off,
-			       __le32 **branches)
+static void invoke_bpf_mod_ret(struct jit_ctx *ctx, struct bpf_tramp_image *im,
+			       struct bpf_tramp_nodes *tn, int bargs_off,
+			       int retval_off, int run_ctx_off, __le32 **branches)
 {
 	int i;
 
@@ -2436,7 +2443,7 @@ static void invoke_bpf_mod_ret(struct jit_ctx *ctx, struct bpf_tramp_nodes *tn,
 	 */
 	emit(A64_STR64I(A64_ZR, A64_SP, retval_off), ctx);
 	for (i = 0; i < tn->nr_nodes; i++) {
-		invoke_bpf_prog(ctx, tn->nodes[i], bargs_off, retval_off,
+		invoke_bpf_prog(ctx, im, tn->nodes[i], bargs_off, retval_off,
 				run_ctx_off, true);
 		/* if (*(u64 *)(sp + retval_off) !=  0)
 		 *	goto do_fexit;
@@ -2771,7 +2778,7 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
 			store_func_meta(ctx, meta, func_meta_off);
 			cookie_bargs_off--;
 		}
-		invoke_bpf_prog(ctx, fentry->nodes[i], bargs_off,
+		invoke_bpf_prog(ctx, im, fentry->nodes[i], bargs_off,
 				retval_off, run_ctx_off,
 				flags & BPF_TRAMP_F_RET_FENTRY_RET);
 	}
@@ -2782,7 +2789,7 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
 		if (!branches)
 			return -ENOMEM;
 
-		invoke_bpf_mod_ret(ctx, fmod_ret, bargs_off, retval_off,
+		invoke_bpf_mod_ret(ctx, im, fmod_ret, bargs_off, retval_off,
 				   run_ctx_off, branches);
 	}
 
@@ -2795,9 +2802,6 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
 		emit(A64_RET(A64_R(10)), ctx);
 		/* store return value */
 		emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx);
-		/* reserve a nop for bpf_tramp_image_put */
-		im->ip_after_call = ctx->ro_image + ctx->idx;
-		emit(A64_NOP, ctx);
 	}
 
 	/* update the branches saved in invoke_bpf_mod_ret with cbnz */
@@ -2819,12 +2823,11 @@ static int prepare_trampoline(struct jit_ctx *ctx, struct bpf_tramp_image *im,
 			store_func_meta(ctx, meta, func_meta_off);
 			cookie_bargs_off--;
 		}
-		invoke_bpf_prog(ctx, fexit->nodes[i], bargs_off, retval_off,
+		invoke_bpf_prog(ctx, im, fexit->nodes[i], bargs_off, retval_off,
 				run_ctx_off, false);
 	}
 
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		im->ip_epilogue = ctx->ro_image + ctx->idx;
 		/* for the first pass, assume the worst case */
 		if (!ctx->image)
 			ctx->idx += 4;
@@ -2883,7 +2886,7 @@ int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 		.image = NULL,
 		.idx = 0,
 	};
-	struct bpf_tramp_image im;
+	struct bpf_tramp_image im = {};
 	struct arg_aux aaux;
 	int ret;
 
@@ -3170,6 +3173,10 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
 	 *    longer reachable, since bpf_tramp_image_put() function already
 	 *    uses percpu_ref and task-based rcu to do the sync, no need to call
 	 *    the sync version here, see bpf_tramp_image_put() for details.
+	 *
+	 * 3. when a detached prog is patched out of a trampoline, a CPU that
+	 *    still executes the old nop calls the prog before it went through
+	 *    a quiescent state, and the prog is freed after grace periods.
 	 */
 	ret = aarch64_insn_patch_text_nosync(ip, new_insn);
 out:
diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c
index 45eee761df9ee..1b5ddb9642558 100644
--- a/arch/loongarch/net/bpf_jit.c
+++ b/arch/loongarch/net/bpf_jit.c
@@ -1580,6 +1580,24 @@ void *bpf_arch_text_copy(void *dst, void *src, size_t len)
 	return ret ? ERR_PTR(-EINVAL) : dst;
 }
 
+int arch_bpf_trampoline_skip(void *nop, void *target)
+{
+	u32 old_insn = INSN_NOP;
+	u32 new_insn = larch_insn_gen_b((unsigned long)nop, (unsigned long)target);
+	int ret;
+
+	if (memcmp(nop, &old_insn, LOONGARCH_INSN_SIZE))
+		return -EFAULT;
+
+	cpus_read_lock();
+	mutex_lock(&text_mutex);
+	ret = larch_insn_text_copy(nop, &new_insn, LOONGARCH_INSN_SIZE);
+	mutex_unlock(&text_mutex);
+	cpus_read_unlock();
+
+	return ret;
+}
+
 int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
 		       enum bpf_text_poke_type new_t, void *old_addr,
 		       void *new_addr)
@@ -1698,13 +1716,18 @@ static void restore_stk_args(struct jit_ctx *ctx, int nr_stk_args, int args_off,
 	}
 }
 
-static int invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_node *n,
-			   int args_off, int retval_off, int run_ctx_off, bool save_ret)
+static int invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_image *im,
+			   struct bpf_tramp_node *n, int args_off, int retval_off,
+			   int run_ctx_off, bool save_ret)
 {
 	int ret;
 	u32 *branch;
 	struct bpf_prog *p = n->link->prog;
 	int cookie_off = offsetof(struct bpf_tramp_run_ctx, bpf_cookie);
+	void *skip = ctx->ro_image + ctx->idx;
+
+	/* nop, patched to a b over this prog when it is detached */
+	emit_insn(ctx, nop);
 
 	if (n->cookie)
 		emit_store_stack_imm64(ctx, LOONGARCH_GPR_T1,
@@ -1757,13 +1780,17 @@ static int invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_node *n,
 	/* arg3: &run_ctx */
 	emit_insn(ctx, addid, LOONGARCH_GPR_A2, LOONGARCH_GPR_FP, -run_ctx_off);
 	ret = emit_call(ctx, (const u64)bpf_trampoline_exit(p));
+	if (ret)
+		return ret;
 
-	return ret;
+	bpf_tramp_image_add_skip(im, p, skip, ctx->ro_image + ctx->idx);
+	return 0;
 }
 
-static int invoke_bpf(struct jit_ctx *ctx, struct bpf_tramp_nodes *tn,
-		      int args_off, int retval_off, int run_ctx_off,
-		      int func_meta_off, bool save_ret, u64 func_meta, int cookie_off)
+static int invoke_bpf(struct jit_ctx *ctx, struct bpf_tramp_image *im,
+		      struct bpf_tramp_nodes *tn, int args_off, int retval_off,
+		      int run_ctx_off, int func_meta_off, bool save_ret,
+		      u64 func_meta, int cookie_off)
 {
 	int i, cur_cookie = (cookie_off - args_off) / 8;
 
@@ -1776,7 +1803,8 @@ static int invoke_bpf(struct jit_ctx *ctx, struct bpf_tramp_nodes *tn,
 			emit_store_stack_imm64(ctx, LOONGARCH_GPR_T1, -func_meta_off, meta);
 			cur_cookie--;
 		}
-		err = invoke_bpf_prog(ctx, tn->nodes[i], args_off, retval_off, run_ctx_off, save_ret);
+		err = invoke_bpf_prog(ctx, im, tn->nodes[i], args_off, retval_off,
+				      run_ctx_off, save_ret);
 		if (err)
 			return err;
 	}
@@ -2019,7 +2047,7 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
 	}
 
 	if (fentry->nr_nodes) {
-		ret = invoke_bpf(ctx, fentry, args_off, retval_off, run_ctx_off, func_meta_off,
+		ret = invoke_bpf(ctx, im, fentry, args_off, retval_off, run_ctx_off, func_meta_off,
 				 flags & BPF_TRAMP_F_RET_FENTRY_RET, func_meta, cookie_off);
 		if (ret)
 			return ret;
@@ -2031,7 +2059,7 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
 
 		emit_insn(ctx, std, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_FP, -retval_off);
 		for (i = 0; i < fmod_ret->nr_nodes; i++) {
-			ret = invoke_bpf_prog(ctx, fmod_ret->nodes[i],
+			ret = invoke_bpf_prog(ctx, im, fmod_ret->nodes[i],
 					      args_off, retval_off, run_ctx_off, true);
 			if (ret)
 				goto out;
@@ -2053,10 +2081,6 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
 			goto out;
 		emit_insn(ctx, std, LOONGARCH_GPR_A0, LOONGARCH_GPR_FP, -retval_off);
 		emit_insn(ctx, std, regmap[BPF_REG_0], LOONGARCH_GPR_FP, -(retval_off - 8));
-		im->ip_after_call = ctx->ro_image + ctx->idx;
-		/* Reserve space for the move_imm + jirl instruction */
-		for (i = 0; i < LOONGARCH_LONG_JUMP_NINSNS; i++)
-			emit_insn(ctx, nop);
 	}
 
 	for (i = 0; ctx->image && i < fmod_ret->nr_nodes; i++) {
@@ -2070,14 +2094,13 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
 		emit_store_stack_imm64(ctx, LOONGARCH_GPR_T1, -func_meta_off, func_meta);
 
 	if (fexit->nr_nodes) {
-		ret = invoke_bpf(ctx, fexit, args_off, retval_off, run_ctx_off,
+		ret = invoke_bpf(ctx, im, fexit, args_off, retval_off, run_ctx_off,
 				 func_meta_off, false, func_meta, cookie_off);
 		if (ret)
 			goto out;
 	}
 
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		im->ip_epilogue = ctx->ro_image + ctx->idx;
 		move_addr(ctx, LOONGARCH_GPR_A0, (const u64)im);
 		ret = emit_call(ctx, (const u64)__bpf_tramp_exit);
 		if (ret)
@@ -2179,11 +2202,8 @@ int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *func_addr)
 {
 	int ret;
-	struct jit_ctx ctx;
-	struct bpf_tramp_image im;
-
-	ctx.image = NULL;
-	ctx.idx = 0;
+	struct jit_ctx ctx = {};
+	struct bpf_tramp_image im = {};
 
 	ret = __arch_prepare_bpf_trampoline(&ctx, &im, m, tnodes, func_addr, flags);
 
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c
index 7b07b43575f11..7a612688e7a20 100644
--- a/arch/powerpc/net/bpf_jit_comp.c
+++ b/arch/powerpc/net/bpf_jit_comp.c
@@ -602,14 +602,18 @@ int arch_protect_bpf_trampoline(void *image, unsigned int size)
 }
 
 static int invoke_bpf_prog(u32 *image, u32 *ro_image, struct codegen_context *ctx,
-			   struct bpf_tramp_node *n, int regs_off, int retval_off,
-			   int run_ctx_off, bool save_ret)
+			   struct bpf_tramp_image *im, struct bpf_tramp_node *n,
+			   int regs_off, int retval_off, int run_ctx_off, bool save_ret)
 {
 	struct bpf_prog *p = n->link->prog;
 	ppc_inst_t branch_insn;
-	u32 jmp_idx;
+	u32 jmp_idx, skip_idx;
 	int ret = 0;
 
+	/* nop, patched to skip this prog when it is detached */
+	skip_idx = ctx->idx;
+	EMIT(PPC_RAW_NOP());
+
 	/* Save cookie */
 	if (IS_ENABLED(CONFIG_PPC64)) {
 		PPC_LI64(_R3, n->cookie);
@@ -679,13 +683,17 @@ static int invoke_bpf_prog(u32 *image, u32 *ro_image, struct codegen_context *ct
 	EMIT(PPC_RAW_ADDI(_R5, _R1, run_ctx_off));
 	ret = bpf_jit_emit_func_call_rel(image, ro_image, ctx,
 					 (unsigned long)bpf_trampoline_exit(p));
+	if (ret)
+		return ret;
 
-	return ret;
+	if (ro_image) /* image is NULL for dummy pass */
+		bpf_tramp_image_add_skip(im, p, &ro_image[skip_idx], &ro_image[ctx->idx]);
+	return 0;
 }
 
 static int invoke_bpf_mod_ret(u32 *image, u32 *ro_image, struct codegen_context *ctx,
-			      struct bpf_tramp_nodes *tn, int regs_off, int retval_off,
-			      int run_ctx_off, u32 *branches)
+			      struct bpf_tramp_image *im, struct bpf_tramp_nodes *tn,
+			      int regs_off, int retval_off, int run_ctx_off, u32 *branches)
 {
 	int i;
 
@@ -696,8 +704,8 @@ static int invoke_bpf_mod_ret(u32 *image, u32 *ro_image, struct codegen_context
 	EMIT(PPC_RAW_LI(_R3, 0));
 	EMIT(PPC_RAW_STL(_R3, _R1, retval_off));
 	for (i = 0; i < tn->nr_nodes; i++) {
-		if (invoke_bpf_prog(image, ro_image, ctx, tn->nodes[i], regs_off, retval_off,
-				    run_ctx_off, true))
+		if (invoke_bpf_prog(image, ro_image, ctx, im, tn->nodes[i], regs_off,
+				    retval_off, run_ctx_off, true))
 			return -EINVAL;
 
 		/*
@@ -1043,8 +1051,8 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 			cookie_ctx_off--;
 		}
 
-		if (invoke_bpf_prog(image, ro_image, ctx, fentry->nodes[i], regs_off, retval_off,
-				    run_ctx_off, flags & BPF_TRAMP_F_RET_FENTRY_RET))
+		if (invoke_bpf_prog(image, ro_image, ctx, im, fentry->nodes[i], regs_off,
+				    retval_off, run_ctx_off, flags & BPF_TRAMP_F_RET_FENTRY_RET))
 			return -EINVAL;
 	}
 
@@ -1053,7 +1061,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 		if (!branches)
 			return -ENOMEM;
 
-		if (invoke_bpf_mod_ret(image, ro_image, ctx, fmod_ret, regs_off, retval_off,
+		if (invoke_bpf_mod_ret(image, ro_image, ctx, im, fmod_ret, regs_off, retval_off,
 				       run_ctx_off, branches)) {
 			ret = -EINVAL;
 			goto cleanup;
@@ -1090,11 +1098,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 		/* Restore updated tail_call_cnt */
 		if (flags & BPF_TRAMP_F_TAIL_CALL_CTX)
 			bpf_trampoline_restore_tail_call_cnt(image, ctx, bpf_frame_size, r4_off);
-
-		/* Reserve space to patch branch instruction to skip fexit progs */
-		if (ro_image) /* image is NULL for dummy pass */
-			im->ip_after_call = &((u32 *)ro_image)[ctx->idx];
-		EMIT(PPC_RAW_NOP());
 	}
 
 	/* Update branches saved in invoke_bpf_mod_ret with address of do_fexit */
@@ -1123,16 +1126,14 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 			cookie_ctx_off--;
 		}
 
-		if (invoke_bpf_prog(image, ro_image, ctx, fexit->nodes[i], regs_off, retval_off,
-				    run_ctx_off, false)) {
+		if (invoke_bpf_prog(image, ro_image, ctx, im, fexit->nodes[i], regs_off,
+				    retval_off, run_ctx_off, false)) {
 			ret = -EINVAL;
 			goto cleanup;
 		}
 	}
 
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		if (ro_image) /* image is NULL for dummy pass */
-			im->ip_epilogue = &((u32 *)ro_image)[ctx->idx];
 		PPC_LI_ADDR(_R3, im);
 		ret = bpf_jit_emit_func_call_rel(image, ro_image, ctx,
 						 (unsigned long)__bpf_tramp_exit);
@@ -1192,7 +1193,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *func_addr)
 {
-	struct bpf_tramp_image im;
+	struct bpf_tramp_image im = {};
 	int ret;
 
 	ret = __arch_prepare_bpf_trampoline(&im, NULL, NULL, NULL, m, flags, tnodes, func_addr);
@@ -1320,7 +1321,7 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
 
 	/*
 	 * If we are not poking at bpf prog entry, then we are simply patching in/out
-	 * an unconditional branch instruction at im->ip_after_call
+	 * an unconditional branch instruction in a trampoline image
 	 */
 	if (offset) {
 		if (old_t == BPF_MOD_CALL || new_t == BPF_MOD_CALL) {
diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c
index a3af5070ac66d..0b66d2753d874 100644
--- a/arch/riscv/net/bpf_jit_comp64.c
+++ b/arch/riscv/net/bpf_jit_comp64.c
@@ -851,6 +851,24 @@ static int gen_jump_or_nops(void *target, void *ip, u32 *insns, bool is_call)
 	return emit_jump_and_link(is_call ? RV_REG_T0 : RV_REG_ZERO, rvoff, false, &ctx);
 }
 
+int arch_bpf_trampoline_skip(void *nop, void *target)
+{
+	u32 old_insn = rv_nop();
+	u32 new_insn = rv_jal(RV_REG_ZERO, (target - nop) >> 1);
+	int ret;
+
+	if (memcmp(nop, &old_insn, sizeof(old_insn)))
+		return -EFAULT;
+
+	cpus_read_lock();
+	mutex_lock(&text_mutex);
+	ret = patch_text(nop, &new_insn, sizeof(new_insn));
+	mutex_unlock(&text_mutex);
+	cpus_read_unlock();
+
+	return ret;
+}
+
 int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
 		       enum bpf_text_poke_type new_t, void *old_addr,
 		       void *new_addr)
@@ -933,12 +951,17 @@ static void emit_store_stack_imm64(u8 reg, int stack_off, u64 imm64,
 	emit_sd(RV_REG_FP, stack_off, reg, ctx);
 }
 
-static int invoke_bpf_prog(struct bpf_tramp_node *node, int args_off, int retval_off,
-			   int run_ctx_off, bool save_ret, struct rv_jit_context *ctx)
+static int invoke_bpf_prog(struct bpf_tramp_image *im, struct bpf_tramp_node *node,
+			   int args_off, int retval_off, int run_ctx_off, bool save_ret,
+			   struct rv_jit_context *ctx)
 {
 	int ret, branch_off;
 	struct bpf_prog *p = node->link->prog;
 	int cookie_off = offsetof(struct bpf_tramp_run_ctx, bpf_cookie);
+	void *skip = ctx->ro_insns + ctx->ninsns;
+
+	/* nop, patched to a jal over this prog when it is detached */
+	emit(rv_nop(), ctx);
 
 	if (node->cookie)
 		emit_store_stack_imm64(RV_REG_T1, -run_ctx_off + cookie_off, node->cookie, ctx);
@@ -991,13 +1014,17 @@ static int invoke_bpf_prog(struct bpf_tramp_node *node, int args_off, int retval
 	/* arg3: &run_ctx */
 	emit_addi(RV_REG_A2, RV_REG_FP, -run_ctx_off, ctx);
 	ret = emit_call((const u64)bpf_trampoline_exit(p), true, ctx);
+	if (ret)
+		return ret;
 
-	return ret;
+	bpf_tramp_image_add_skip(im, p, skip, ctx->ro_insns + ctx->ninsns);
+	return 0;
 }
 
-static int invoke_bpf(struct bpf_tramp_nodes *tn, int args_off, int retval_off,
-		      int run_ctx_off, int func_meta_off, bool save_ret, u64 func_meta,
-		      int cookie_off, struct rv_jit_context *ctx)
+static int invoke_bpf(struct bpf_tramp_image *im, struct bpf_tramp_nodes *tn,
+		      int args_off, int retval_off, int run_ctx_off, int func_meta_off,
+		      bool save_ret, u64 func_meta, int cookie_off,
+		      struct rv_jit_context *ctx)
 {
 	int i, cur_cookie = (cookie_off - args_off) / 8;
 
@@ -1010,8 +1037,8 @@ static int invoke_bpf(struct bpf_tramp_nodes *tn, int args_off, int retval_off,
 			emit_store_stack_imm64(RV_REG_T1, -func_meta_off, meta, ctx);
 			cur_cookie--;
 		}
-		err = invoke_bpf_prog(tn->nodes[i], args_off, retval_off, run_ctx_off,
-				      save_ret, ctx);
+		err = invoke_bpf_prog(im, tn->nodes[i], args_off, retval_off,
+				      run_ctx_off, save_ret, ctx);
 		if (err)
 			return err;
 	}
@@ -1187,7 +1214,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 	}
 
 	if (fentry->nr_nodes) {
-		ret = invoke_bpf(fentry, args_off, retval_off, run_ctx_off, func_meta_off,
+		ret = invoke_bpf(im, fentry, args_off, retval_off, run_ctx_off, func_meta_off,
 				 flags & BPF_TRAMP_F_RET_FENTRY_RET, func_meta, cookie_off, ctx);
 		if (ret)
 			return ret;
@@ -1201,7 +1228,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 		/* cleanup to avoid garbage return value confusion */
 		emit_sd(RV_REG_FP, -retval_off, RV_REG_ZERO, ctx);
 		for (i = 0; i < fmod_ret->nr_nodes; i++) {
-			ret = invoke_bpf_prog(fmod_ret->nodes[i], args_off, retval_off,
+			ret = invoke_bpf_prog(im, fmod_ret->nodes[i], args_off, retval_off,
 					      run_ctx_off, true, ctx);
 			if (ret)
 				goto out;
@@ -1222,10 +1249,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 			goto out;
 		emit_sd(RV_REG_FP, -retval_off, RV_REG_A0, ctx);
 		emit_sd(RV_REG_FP, -(retval_off - 8), regmap[BPF_REG_0], ctx);
-		im->ip_after_call = ctx->ro_insns + ctx->ninsns;
-		/* 2 nops reserved for auipc+jalr pair */
-		emit(rv_nop(), ctx);
-		emit(rv_nop(), ctx);
 	}
 
 	/* update branches saved in invoke_bpf_mod_ret with bnez */
@@ -1241,14 +1264,13 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 		emit_store_stack_imm64(RV_REG_T1, -func_meta_off, func_meta, ctx);
 
 	if (fexit->nr_nodes) {
-		ret = invoke_bpf(fexit, args_off, retval_off, run_ctx_off, func_meta_off,
+		ret = invoke_bpf(im, fexit, args_off, retval_off, run_ctx_off, func_meta_off,
 				 false, func_meta, cookie_off, ctx);
 		if (ret)
 			goto out;
 	}
 
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		im->ip_epilogue = ctx->ro_insns + ctx->ninsns;
 		emit_imm(RV_REG_A0, ctx->insns ? (const s64)im : RV_MAX_COUNT_IMM, ctx);
 		ret = emit_call((const u64)__bpf_tramp_exit, true, ctx);
 		if (ret)
@@ -1306,7 +1328,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *func_addr)
 {
-	struct bpf_tramp_image im;
+	struct bpf_tramp_image im = {};
 	struct rv_jit_context ctx;
 	int ret;
 
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c
index 408ae09be3a59..3e564e1d4e7ad 100644
--- a/arch/s390/net/bpf_jit_comp.c
+++ b/arch/s390/net/bpf_jit_comp.c
@@ -2529,6 +2529,8 @@ struct bpf_tramp_jit {
 	int r14_off;		/* Offset of saved %r14, has to be at the
 				 * bottom */
 	int do_fexit;		/* do_fexit: label */
+	int skip[BPF_MAX_TRAMP_LINKS];	/* skip: labels after each prog */
+	int nr_progs;
 };
 
 static void load_imm64(struct bpf_jit *jit, int dst_reg, u64 val)
@@ -2547,6 +2549,7 @@ static void emit_store_stack_imm64(struct bpf_jit *jit, int tmp_reg, int stack_o
 }
 
 static int invoke_bpf_prog(struct bpf_tramp_jit *tjit,
+			   struct bpf_tramp_image *im,
 			   const struct btf_func_model *m,
 			   struct bpf_tramp_node *node, bool save_ret)
 {
@@ -2554,8 +2557,20 @@ static int invoke_bpf_prog(struct bpf_tramp_jit *tjit,
 	int cookie_off = tjit->run_ctx_off +
 			 offsetof(struct bpf_tramp_run_ctx, bpf_cookie);
 	struct bpf_prog *p = node->link->prog;
+	void *skip = jit->prg_buf + jit->prg;
+	int idx = tjit->nr_progs++;
 	int patch;
 
+	if (idx >= ARRAY_SIZE(tjit->skip))
+		return -E2BIG;
+
+	/*
+	 * nop, patched to skip this prog when it is detached
+	 */
+
+	/* brcl 0,skip */
+	EMIT6_PCREL_RILC(0xc0040000, 0, tjit->skip[idx]);
+
 	/*
 	 * run_ctx.cookie = node->cookie;
 	 */
@@ -2615,10 +2630,15 @@ static int invoke_bpf_prog(struct bpf_tramp_jit *tjit,
 	/* brasl %r14,__bpf_prog_exit */
 	EMIT6_PCREL_RILB_PTR(0xc0050000, REG_14, bpf_trampoline_exit(p));
 
+	/* skip: */
+	tjit->skip[idx] = jit->prg;
+	bpf_tramp_image_add_skip(im, p, skip, jit->prg_buf + jit->prg);
+
 	return 0;
 }
 
 static int invoke_bpf(struct bpf_tramp_jit *tjit,
+		      struct bpf_tramp_image *im,
 		      const struct btf_func_model *m,
 		      struct bpf_tramp_nodes *tn, bool save_ret,
 		      u64 func_meta, int cookie_off)
@@ -2633,7 +2653,7 @@ static int invoke_bpf(struct bpf_tramp_jit *tjit,
 			emit_store_stack_imm64(jit, REG_0, tjit->func_meta_off, meta);
 			cur_cookie--;
 		}
-		if (invoke_bpf_prog(tjit, m, tn->nodes[i], save_ret))
+		if (invoke_bpf_prog(tjit, im, m, tn->nodes[i], save_ret))
 			return -EINVAL;
 	}
 
@@ -2675,6 +2695,11 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 	u64 func_meta;
 	int i, j;
 
+	/* The skip labels are taken from the previous pass. */
+	tjit->nr_progs = 0;
+	if (im)
+		im->nr_skips = 0;
+
 	/* Support as many stack arguments as "mvc" instruction can handle. */
 	nr_reg_args = min_t(int, m->nr_args, MAX_NR_REG_ARGS);
 	nr_stack_args = m->nr_args - nr_reg_args;
@@ -2836,7 +2861,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 		emit_store_stack_imm64(jit, REG_0, tjit->retval_off, 0);
 	}
 
-	if (invoke_bpf(tjit, m, fentry, flags & BPF_TRAMP_F_RET_FENTRY_RET,
+	if (invoke_bpf(tjit, im, m, fentry, flags & BPF_TRAMP_F_RET_FENTRY_RET,
 		       func_meta, cookie_off))
 		return -EINVAL;
 
@@ -2850,7 +2875,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 		       0xf000 | tjit->retval_off);
 
 		for (i = 0; i < fmod_ret->nr_nodes; i++) {
-			if (invoke_bpf_prog(tjit, m, fmod_ret->nodes[i], true))
+			if (invoke_bpf_prog(tjit, im, m, fmod_ret->nodes[i], true))
 				return -EINVAL;
 
 			/*
@@ -2904,15 +2929,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 		/* mvc tccnt_off(%r15),tail_call_cnt(4,%r15) */
 		_EMIT6(0xd203f000 | tjit->tccnt_off,
 		       0xf000 | offsetof(struct prog_frame, tail_call_cnt));
-
-		im->ip_after_call = jit->prg_buf + jit->prg;
-
-		/*
-		 * The following nop will be patched by bpf_tramp_image_put().
-		 */
-
-		/* brcl 0,im->ip_epilogue */
-		EMIT6_PCREL_RILC(0xc0040000, 0, (u64)im->ip_epilogue);
 	}
 
 	/* Set the "is_return" flag for fsession. */
@@ -2923,12 +2939,10 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 
 	/* do_fexit: */
 	tjit->do_fexit = jit->prg;
-	if (invoke_bpf(tjit, m, fexit, false, func_meta, cookie_off))
+	if (invoke_bpf(tjit, im, m, fexit, false, func_meta, cookie_off))
 		return -EINVAL;
 
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		im->ip_epilogue = jit->prg_buf + jit->prg;
-
 		/*
 		 * __bpf_tramp_exit(im);
 		 */
@@ -2977,7 +2991,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im,
 int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *orig_call)
 {
-	struct bpf_tramp_image im;
+	struct bpf_tramp_image im = {};
 	struct bpf_tramp_jit tjit;
 	int ret;
 
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
index ea74ff1d166cd..b06347da06fcc 100644
--- a/arch/x86/net/bpf_jit_comp.c
+++ b/arch/x86/net/bpf_jit_comp.c
@@ -3128,16 +3128,21 @@ static void restore_regs(const struct btf_func_model *m, u8 **prog,
 }
 
 static int invoke_bpf_prog(const struct btf_func_model *m, u8 **pprog,
+			   struct bpf_tramp_image *im,
 			   struct bpf_tramp_node *node, int stack_size,
 			   int run_ctx_off, bool save_ret,
 			   void *image, void *rw_image)
 {
 	u8 *prog = *pprog;
-	u8 *jmp_insn;
+	u8 *jmp_insn, *skip;
 	int ctx_cookie_off = offsetof(struct bpf_tramp_run_ctx, bpf_cookie);
 	struct bpf_prog *p = node->link->prog;
 	u64 cookie = node->cookie;
 
+	/* nop, patched to skip this prog when it is detached */
+	skip = image + (prog - (u8 *)rw_image);
+	emit_nops(&prog, X86_PATCH_SIZE);
+
 	/* mov rdi, cookie */
 	emit_mov_imm64(&prog, BPF_REG_1, (long) cookie >> 32, (u32) (long) cookie);
 
@@ -3212,6 +3217,8 @@ static int invoke_bpf_prog(const struct btf_func_model *m, u8 **pprog,
 	if (emit_rsb_call(&prog, bpf_trampoline_exit(p), image + (prog - (u8 *)rw_image)))
 		return -EINVAL;
 
+	bpf_tramp_image_add_skip(im, p, skip, image + (prog - (u8 *)rw_image));
+
 	*pprog = prog;
 	return 0;
 }
@@ -3243,6 +3250,7 @@ static int emit_cond_near_jump(u8 **pprog, void *func, void *ip, u8 jmp_cond)
 }
 
 static int invoke_bpf(const struct btf_func_model *m, u8 **pprog,
+		      struct bpf_tramp_image *im,
 		      struct bpf_tramp_nodes *tl, int stack_size,
 		      int run_ctx_off, int func_meta_off, bool save_ret,
 		      void *image, void *rw_image, u64 func_meta,
@@ -3257,7 +3265,7 @@ static int invoke_bpf(const struct btf_func_model *m, u8 **pprog,
 				func_meta | (cur_cookie << BPF_TRAMP_COOKIE_INDEX_SHIFT));
 			cur_cookie--;
 		}
-		if (invoke_bpf_prog(m, &prog, tl->nodes[i], stack_size,
+		if (invoke_bpf_prog(m, &prog, im, tl->nodes[i], stack_size,
 				    run_ctx_off, save_ret, image, rw_image))
 			return -EINVAL;
 	}
@@ -3266,6 +3274,7 @@ static int invoke_bpf(const struct btf_func_model *m, u8 **pprog,
 }
 
 static int invoke_bpf_mod_ret(const struct btf_func_model *m, u8 **pprog,
+			      struct bpf_tramp_image *im,
 			      struct bpf_tramp_nodes *tl, int stack_size,
 			      int run_ctx_off, u8 **branches,
 			      void *image, void *rw_image)
@@ -3279,7 +3288,7 @@ static int invoke_bpf_mod_ret(const struct btf_func_model *m, u8 **pprog,
 	emit_mov_imm32(&prog, false, BPF_REG_0, 0);
 	emit_stx(&prog, BPF_DW, BPF_REG_FP, BPF_REG_0, -8);
 	for (i = 0; i < tl->nr_nodes; i++) {
-		if (invoke_bpf_prog(m, &prog, tl->nodes[i], stack_size, run_ctx_off, true,
+		if (invoke_bpf_prog(m, &prog, im, tl->nodes[i], stack_size, run_ctx_off, true,
 				    image, rw_image))
 			return -EINVAL;
 
@@ -3548,7 +3557,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 	}
 
 	if (fentry->nr_nodes) {
-		if (invoke_bpf(m, &prog, fentry, regs_off, run_ctx_off, func_meta_off,
+		if (invoke_bpf(m, &prog, im, fentry, regs_off, run_ctx_off, func_meta_off,
 			       flags & BPF_TRAMP_F_RET_FENTRY_RET, image, rw_image,
 			       func_meta, cookie_off))
 			return -EINVAL;
@@ -3560,7 +3569,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 		if (!branches)
 			return -ENOMEM;
 
-		if (invoke_bpf_mod_ret(m, &prog, fmod_ret, regs_off,
+		if (invoke_bpf_mod_ret(m, &prog, im, fmod_ret, regs_off,
 				       run_ctx_off, branches, image, rw_image)) {
 			ret = -EINVAL;
 			goto cleanup;
@@ -3590,8 +3599,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 		}
 		/* remember return value in a stack for bpf prog to access */
 		emit_stx(&prog, BPF_DW, BPF_REG_FP, BPF_REG_0, -8);
-		im->ip_after_call = image + (prog - (u8 *)rw_image);
-		emit_nops(&prog, X86_PATCH_SIZE);
 	}
 
 	if (fmod_ret->nr_nodes) {
@@ -3616,7 +3623,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 		emit_store_stack_imm64(&prog, BPF_REG_0, -func_meta_off, func_meta);
 
 	if (fexit->nr_nodes) {
-		if (invoke_bpf(m, &prog, fexit, regs_off, run_ctx_off, func_meta_off,
+		if (invoke_bpf(m, &prog, im, fexit, regs_off, run_ctx_off, func_meta_off,
 			       false, image, rw_image, func_meta, cookie_off)) {
 			ret = -EINVAL;
 			goto cleanup;
@@ -3631,7 +3638,6 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
 	 * restored to R0.
 	 */
 	if (flags & BPF_TRAMP_F_CALL_ORIG) {
-		im->ip_epilogue = image + (prog - (u8 *)rw_image);
 		/* arg1: mov rdi, im */
 		emit_mov_imm64(&prog, BPF_REG_1, (long) im >> 32, (u32) (long) im);
 		if (emit_rsb_call(&prog, __bpf_tramp_exit, image + (prog - (u8 *)rw_image))) {
@@ -3719,7 +3725,7 @@ int arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *image, void *i
 int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *func_addr)
 {
-	struct bpf_tramp_image im;
+	struct bpf_tramp_image im = {};
 	void *image;
 	int ret;
 
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index c83339d45fcdd..3ad3c2038c402 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -1255,11 +1255,15 @@ struct btf_func_model {
 #define BPF_TRAMP_F_INDIRECT		BIT(8)
 
 /* Each call __bpf_prog_enter + call bpf_func + call __bpf_prog_exit is ~50
- * bytes on x86.
+ * bytes on x86. The trampoline image has to fit in PAGE_SIZE.
  */
 enum {
-#if defined(__s390x__)
+#if defined(__s390x__) || defined(__powerpc64__)
 	BPF_MAX_TRAMP_LINKS = 27,
+#elif defined(__x86_64__)
+	BPF_MAX_TRAMP_LINKS = 36,
+#elif defined(__aarch64__)
+	BPF_MAX_TRAMP_LINKS = 37,
 #else
 	BPF_MAX_TRAMP_LINKS = 38,
 #endif
@@ -1303,6 +1307,7 @@ int arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *image, void *i
 void *arch_alloc_bpf_trampoline(unsigned int size);
 void arch_free_bpf_trampoline(void *image, unsigned int size);
 int __must_check arch_protect_bpf_trampoline(void *image, unsigned int size);
+int arch_bpf_trampoline_skip(void *nop, void *target);
 int arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags,
 			     struct bpf_tramp_nodes *tnodes, void *func_addr);
 
@@ -1351,19 +1356,48 @@ enum bpf_tramp_prog_type {
 	BPF_TRAMP_FSESSION,
 };
 
+/*
+ * Each prog call in a trampoline image is preceded by a nop. When the prog is
+ * detached, the nop is patched to a jump to target, right after the call, so
+ * that tasks still running in the image skip the prog.
+ */
+struct bpf_tramp_skip {
+	struct bpf_prog *prog;
+	void *nop;
+	void *target;
+};
+
 struct bpf_tramp_image {
 	void *image;
 	int size;
 	struct bpf_ksym ksym;
 	struct percpu_ref pcref;
-	void *ip_after_call;
-	void *ip_epilogue;
+	bool call_orig;
+	/* entry in tr->images, the image holds a reference on tr */
+	struct bpf_trampoline *tr;
+	struct list_head list;
+	int nr_skips;
+	struct bpf_tramp_skip *skips;
 	union {
 		struct rcu_head rcu;
 		struct work_struct work;
 	};
 };
 
+static inline void bpf_tramp_image_add_skip(struct bpf_tramp_image *im, struct bpf_prog *prog,
+					    void *nop, void *target)
+{
+	struct bpf_tramp_skip *skip;
+
+	/* struct_ops trampolines and arch_bpf_trampoline_size() have no image */
+	if (!im || !im->skips)
+		return;
+	skip = &im->skips[im->nr_skips++];
+	skip->prog = prog;
+	skip->nop = nop;
+	skip->target = target;
+}
+
 struct bpf_trampoline {
 	/* hlist for trampoline_key_table */
 	struct hlist_node hlist_key;
@@ -1390,6 +1424,8 @@ struct bpf_trampoline {
 	int progs_cnt[BPF_TRAMP_MAX];
 	/* Executable image of trampoline */
 	struct bpf_tramp_image *cur_image;
+	/* Images not freed yet, cur_image and older ones still in use */
+	struct list_head images;
 	/* Used as temporary old image storage for multi_attach */
 	struct {
 		struct bpf_tramp_image *old_image;
diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c
index 674ffc7f06b73..b8812dbb31742 100644
--- a/kernel/bpf/trampoline.c
+++ b/kernel/bpf/trampoline.c
@@ -401,6 +401,7 @@ static struct bpf_trampoline *bpf_trampoline_lookup(u64 key, unsigned long ip)
 	head = &trampoline_ip_table[hash_64(tr->ip, TRAMPOLINE_HASH_BITS)];
 	hlist_add_head(&tr->hlist_ip, head);
 	refcount_set(&tr->refcnt, 1);
+	INIT_LIST_HEAD(&tr->images);
 	for (i = 0; i < BPF_TRAMP_MAX; i++)
 		INIT_HLIST_HEAD(&tr->progs_hlist[i]);
 out:
@@ -535,15 +536,22 @@ static void bpf_tramp_image_free(struct bpf_tramp_image *im)
 	arch_free_bpf_trampoline(im->image, im->size);
 	bpf_jit_uncharge_modmem(im->size);
 	percpu_ref_exit(&im->pcref);
+	kfree(im->skips);
 	kfree_rcu(im, rcu);
 }
 
 static void __bpf_tramp_image_put_deferred(struct work_struct *work)
 {
 	struct bpf_tramp_image *im;
+	struct bpf_trampoline *tr;
 
 	im = container_of(work, struct bpf_tramp_image, work);
+	tr = im->tr;
+	trampoline_lock(tr);
+	list_del(&im->list);
+	trampoline_unlock(tr);
 	bpf_tramp_image_free(im);
+	bpf_trampoline_put(tr);
 }
 
 /* callback, fexit step 3 or fentry step 2 */
@@ -571,7 +579,7 @@ static void __bpf_tramp_image_put_rcu_tasks(struct rcu_head *rcu)
 	struct bpf_tramp_image *im;
 
 	im = container_of(rcu, struct bpf_tramp_image, rcu);
-	if (im->ip_after_call)
+	if (im->call_orig)
 		/* the case of fmod_ret/fexit trampoline and CONFIG_PREEMPTION=y */
 		percpu_ref_kill(&im->pcref);
 	else
@@ -591,9 +599,9 @@ static void bpf_tramp_image_put(struct bpf_tramp_image *im)
 	 *
 	 * The trampoline is unreachable before bpf_tramp_image_put().
 	 *
-	 * First, patch the trampoline to avoid calling into fexit progs.
-	 * The progs will be freed even if the original function is still
-	 * executing or sleeping.
+	 * Progs are patched out of the image when they are detached, see
+	 * bpf_trampoline_skip_prog(), so they can be freed even if a task is
+	 * still in the image.
 	 * In case of CONFIG_PREEMPT=y use call_rcu_tasks() to wait on
 	 * first few asm instructions to execute and call into
 	 * __bpf_tramp_enter->percpu_ref_get.
@@ -607,11 +615,7 @@ static void bpf_tramp_image_put(struct bpf_tramp_image *im)
 	 * percpu_ref_kill will be waiting for. Hence the first
 	 * call_rcu_tasks() is not necessary.
 	 */
-	if (im->ip_after_call) {
-		int err = bpf_arch_text_poke(im->ip_after_call, BPF_MOD_NOP,
-					     BPF_MOD_JUMP, NULL,
-					     im->ip_epilogue);
-		WARN_ON(err);
+	if (im->call_orig) {
 		if (IS_ENABLED(CONFIG_TASKS_RCU))
 			call_rcu_tasks(&im->rcu, __bpf_tramp_image_put_rcu_tasks);
 		else
@@ -628,7 +632,7 @@ static void bpf_tramp_image_put(struct bpf_tramp_image *im)
 	call_rcu_tasks_trace(&im->rcu, __bpf_tramp_image_put_rcu_tasks);
 }
 
-static struct bpf_tramp_image *bpf_tramp_image_alloc(u64 key, int size)
+static struct bpf_tramp_image *bpf_tramp_image_alloc(u64 key, int size, int nr_progs)
 {
 	struct bpf_tramp_image *im;
 	struct bpf_ksym *ksym;
@@ -639,6 +643,10 @@ static struct bpf_tramp_image *bpf_tramp_image_alloc(u64 key, int size)
 	if (!im)
 		goto out;
 
+	im->skips = kzalloc_objs(*im->skips, nr_progs);
+	if (!im->skips)
+		goto out_free_im;
+
 	err = bpf_jit_charge_modmem(size);
 	if (err)
 		goto out_free_im;
@@ -665,6 +673,7 @@ static struct bpf_tramp_image *bpf_tramp_image_alloc(u64 key, int size)
 out_uncharge:
 	bpf_jit_uncharge_modmem(size);
 out_free_im:
+	kfree(im->skips);
 	kfree(im);
 out:
 	return ERR_PTR(err);
@@ -741,11 +750,12 @@ static int bpf_trampoline_update(struct bpf_trampoline *tr, bool lock_direct_mut
 		goto out;
 	}
 
-	im = bpf_tramp_image_alloc(tr->key, size);
+	im = bpf_tramp_image_alloc(tr->key, size, total);
 	if (IS_ERR(im)) {
 		err = PTR_ERR(im);
 		goto out;
 	}
+	im->call_orig = tr->flags & BPF_TRAMP_F_CALL_ORIG;
 
 	err = arch_prepare_bpf_trampoline(im, im->image, im->image + size,
 					  &tr->func.model, tr->flags, tnodes,
@@ -776,8 +786,14 @@ static int bpf_trampoline_update(struct bpf_trampoline *tr, bool lock_direct_mut
 #endif
 
 out_free:
-	if (err)
+	if (err) {
 		bpf_tramp_image_free(im);
+	} else {
+		/* track the image until it is freed, for bpf_trampoline_skip_prog() */
+		refcount_inc(&tr->refcnt);
+		im->tr = tr;
+		list_add(&im->list, &tr->images);
+	}
 out:
 	/* If any error happens, restore previous flags */
 	if (err)
@@ -891,6 +907,41 @@ static int bpf_trampoline_add_prog(struct bpf_trampoline *tr,
 	return 0;
 }
 
+/*
+ * Patch the nop in front of a prog call to a jump over it. A task can be
+ * preempted anywhere in the image, so archs that need several instructions for
+ * a jump of any range patch a single near branch here instead.
+ */
+int __weak arch_bpf_trampoline_skip(void *nop, void *target)
+{
+	return bpf_arch_text_poke(nop, BPF_MOD_NOP, BPF_MOD_JUMP, NULL, target);
+}
+
+/*
+ * prog was detached and can be freed, but tasks may still be running in images
+ * that call it, sleeping in an earlier prog for example. They can be in any
+ * image that is not freed yet, not only in cur_image, so patch all of them to
+ * jump over prog.
+ */
+static void bpf_trampoline_skip_prog(struct bpf_trampoline *tr, struct bpf_prog *prog)
+{
+	struct bpf_tramp_image *im;
+	int i, err;
+
+	list_for_each_entry(im, &tr->images, list) {
+		for (i = 0; i < im->nr_skips; i++) {
+			struct bpf_tramp_skip *skip = &im->skips[i];
+
+			if (skip->prog != prog)
+				continue;
+			err = arch_bpf_trampoline_skip(skip->nop, skip->target);
+			WARN_ON_ONCE(err);
+			/* not a nop anymore, and prog's address can be reused */
+			skip->prog = NULL;
+		}
+	}
+}
+
 static void bpf_trampoline_remove_prog(struct bpf_trampoline *tr,
 				       struct bpf_tramp_node *node)
 {
@@ -908,6 +959,7 @@ static void bpf_trampoline_remove_prog(struct bpf_trampoline *tr,
 	}
 	hlist_del_init(&node->tramp_hlist);
 	tr->progs_cnt[kind]--;
+	bpf_trampoline_skip_prog(tr, node->link->prog);
 }
 
 static int __bpf_trampoline_link_prog(struct bpf_tramp_node *node,
@@ -1206,11 +1258,9 @@ void bpf_trampoline_put(struct bpf_trampoline *tr)
 		if (WARN_ON_ONCE(!hlist_empty(&tr->progs_hlist[i])))
 			goto out;
 
-	/* This code will be executed even when the last bpf_tramp_image
-	 * is alive. All progs are detached from the trampoline and the
-	 * trampoline image is patched with jmp into epilogue to skip
-	 * fexit progs. The fentry-only trampoline will be freed via
-	 * multiple rcu callbacks.
+	/*
+	 * All progs are detached and the last image has been freed, images
+	 * hold a reference on the trampoline until then.
 	 */
 	hlist_del(&tr->hlist_key);
 	hlist_del(&tr->hlist_ip);
-- 
2.53.0




  parent reply	other threads:[~2026-10-09 14:29 UTC|newest]

Thread overview: 446+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-09 14:05 [PATCH 7.2 000/428] 7.2.10-rc1 review Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 001/428] dm-pcache: reject a kset that overruns its segment Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 002/428] dm-pcache: bound the logical key offset from persistent memory Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 003/428] drm/xe/i2c: Keep the i2c controller always enabled Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 004/428] selftests/cgroup: account for zswap shrinker writeback Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 005/428] sched/fair: Avoid creating misfits during cache-aware balancing Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 006/428] sched/cache: Keep nr_pref_llc_running in the runnable domain, to fix LLC mis-scheduling bug Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 007/428] sched/cache: Honor migrate_llc_task semantics in active load balance, " Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 008/428] sched/cache: Introduce task_struct->sched_cache_grp to fix UAF Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 009/428] sched/cache: Skip kernel threads for cache aware scheduling to rubustify the code Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 010/428] sched_ext: Build the cid tables privately and publish them with RCU Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 011/428] sched_ext: Add a size argument to scx_bpf_cid_topo() so struct scx_cid_topo can grow Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 012/428] sched_ext: Dont run ops.dequeue() with a DSQ lock held Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 013/428] sched_ext: Wait for SCX_OPSS_DISPATCHING before reenqueueing a task Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 014/428] KVM: x86: Re-pend GET_NESTED_STATE_PAGES if getting said pages fails Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 015/428] ASoC: sdw_utils: Set snd_soc_dai_link_ch_map.codec_ch_mask for capture Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 016/428] Bluetooth: btusb: Add IMC Networks QCA9377 to quirks table Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 017/428] KVM: x86: Fill kvm_run exit fields in common get_nested_state_pages() error paths Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 018/428] ALSA: usb-audio: Apply IGNORE_CTL_ERROR quirk to all Audient devices Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 019/428] audit: fix exe mark UAF in kill_rules() Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 020/428] crypto: x86/aes-gcm - fix always true check for last AAD segment Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 021/428] fprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching() Greg Kroah-Hartman
2026-10-09 14:05 ` [PATCH 7.2 022/428] HID: bpf: cast size to ssize_t when checking hid_bpf_hw_request Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 023/428] HID: multitouch: stop the release timer from being rearmed on remove Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 024/428] io_uring/cmd_net: end TX_TIMESTAMP multishot when the CQ is full Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 025/428] io_uring/zcrx: requeue multishot receives stopped by a local resource Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 026/428] io_uring: fix task_work add use-after-free with SQPOLL Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 027/428] ipvs: bound LBLCR and LBLC cache growth Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 028/428] kasan: unpoison task stack below watermark only in generic mode Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 029/428] kprobes: Skip disarmed probes when checking optkprobe overlap Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 030/428] octeontx2-pf: Fix RSS indirection table size Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 031/428] of/irq: Fix remaining refcount leaks in of_irq_init() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 032/428] of/overlay: put property on deadprops only after changeset add succeeds Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 033/428] of/overlay: only treat a positive changeset id as registered Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 034/428] net: gso: limit recursive IP-in-IP segmentation Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 035/428] net: extend IPv6 exthdr detection of tunneled packets Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 036/428] net: fix checksum offsets in skb_splice_from_iter() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 037/428] net: phy: aquantia: fix system interface type not updated in forced mode Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 038/428] netfilter: nft_flow_offload: drop flowtable reference on init error path Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 039/428] net/packet: prevent TX_RING byte count overflow Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 040/428] pfcp: fix socket lifetime on netdevice registration failure Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 041/428] r8169: disable EEE on RTL8168h/8111h Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 042/428] random: vDSO: avoid call to memset() when zeroing reserved parameter Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 043/428] rtc: ac100: Assign .num before accessing .hws Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 044/428] rtc: spear: initialize IRQ state before requesting alarm IRQ Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 045/428] sctp: check RCV_SHUTDOWN after the sendmsg connect wait Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 046/428] sysctl: Negate before converting in the int read path Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 047/428] time/jiffies: Saturate in mult_hz() instead of wrapping Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 048/428] tpm: Disable TPM on null key name mismatch Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 049/428] netfs: clear post-EOF pagecache when extending a file via write Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 050/428] netfs: zero gaps in read-gaps folio to avoid writing back stale data Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 051/428] netfs: zero the tail of a short DIO/unbuffered read Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 052/428] module: fix lost error code from codetag_load_module() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 053/428] virt: vmgenid: remap memory as decrypted Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 054/428] virt: vmgenid: set driver_data before registering notification handlers Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 055/428] mm/damon/core: dont skip damos_adjust_quota() while esz is not zero Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 056/428] mm/vma: predicate setting mmap_prepare VMA fields on new vma alloc Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 057/428] mm: shmem: ignore sysfs configs for shmem forced collapse Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 058/428] vc_screen: reload vc pointer before if (ret) in vcs_write() to avoid UAF Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 059/428] vt: selection: Fix unsigned underflow and slab-out-of-bounds read in paste_selection() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 060/428] vt: skip screen update for DEC alignment test on backgroup consoles Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 061/428] wifi: wlcore: Fix runtime PM leak in wlcore_remove() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 062/428] ALSA: caiaq: unregister the input device when probe fails Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 063/428] ALSA: ctxfi: Fix silent playback on Titanium HD (SB1270) Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 064/428] ALSA: line6: reject oversized playback packets Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 065/428] ext4: dont enable large folios on encrypted inodes Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 066/428] iio: dac: rohm-bd79703: Do not allow writing SCALE Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 067/428] iio: light: rohm-bu27034: Fix error return Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 068/428] iio: accel: kionix-kx022a: Fix array boundary check Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 069/428] mtd: core: avoid double-free of OTP NVMEM device Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 070/428] mtd: core: call _get_device() with the master MTD Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 071/428] nvmet: preserve device path on allocation failure Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 072/428] blk-cgroup: save IRQ state in blkg_tryget_closest() Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 073/428] random: fix vgetrandom_opaque_params kernel-doc Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 074/428] of/overlay: dont leak fragment references when changeset init fails Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 075/428] of/overlay: dont create "//" paths for fragments targeting the root Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 076/428] ASoC: wm8903: Move the DRC QR threshold to the register that holds it Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 077/428] wifi: wfx: validate MIB read length before copying to caller Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 078/428] ASoC: tegra: Fix ASRC Stream6 input threshold control Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 079/428] wifi: mac80211: drop oversized fragments to avoid extra_len overflow Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 080/428] wifi: ath11k: reset ar->num_stations on hardware start Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 081/428] wifi: ath9k: Clean up device initialisation guards Greg Kroah-Hartman
2026-10-09 14:06 ` [PATCH 7.2 082/428] wifi: ath9k: reject short WMI command responses Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 083/428] wifi: ath9k_htc: bound TX aggregation to MAX_TX_BUF_SIZE Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 084/428] rtc: dev: zero-initialize struct rtc_wkalrm to prevent information leak Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 085/428] rtc: ac100: Fix clock provider use-after-free on probe failure Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 086/428] rtc: mpfs: fix unchecked devm_clk_get() error pointer in probe() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 087/428] wifi: mac80211: validate TX status rate metadata Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 088/428] wifi: cfg80211: preserve hidden-group beacon IE ownership Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 089/428] wifi: mac80211: prevent AP VLAN tx from other interfaces Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 090/428] ASoC: codecs: rt286: Revert delay value for jack setup Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 091/428] ASoC: codecs: rt274: Fix format setting for 44100 rate Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 092/428] block: reject polled dio with user integrity metadata Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 093/428] blk-mq: set RQF_USE_SCHED when the operation is known Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 094/428] Bluetooth: hci_core: free the HCI ID if naming fails Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 095/428] Bluetooth: btintel: validate DDC record lengths Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 096/428] mm/slab: handle the !allow_spin case in kfree_rcu_sheaf() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 097/428] mm/slab: do not wake up kswapd in __kfree_rcu_sheaf() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 098/428] arm64: topology: fix arch_freq_get_on_cpu() overflow above 4.19 GHz Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 099/428] ASoC: SDCA: Set suspended flag after resuming within system suspend Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 100/428] ASoC: SDCA: Add better pm_runtime error handling in func probe Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 101/428] drbd: remove unused drbd_nl_mcgrps[] array Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 102/428] bpf: Fix overflow of jump offset in constant blinding Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 103/428] ARC: arch_cmpxchg_relaxed to use size of pointed type not pointer Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 104/428] nvme: add nvme_get_ns_head() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 105/428] nvme: fix cdev lifetime Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 106/428] nvme: work around -Wformat-security warning Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 107/428] nvme: fix command effects log lifetime for multipath heads Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 108/428] bpf: Hold map BTF for the memory allocator destructor record Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 109/428] net/mctp: publish the mctp_dev only after it is initialised Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 110/428] net/sched: cls_api: reclaim an empty proto on the error path Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 111/428] net: bcmgenet: allocate RX buffers as page fragments Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 112/428] ipv6: fix prefix route expiry in modify_prefix_route() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 113/428] netfilter: ipset: do not update comments from kernel-side adds Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 114/428] wifi: mac80211: fix slab-out-of-bounds read in ieee80211_monitor_select_queue() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 115/428] ALSA: hda/realtek - Add headset mode for Dell Pro QC1255 Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 116/428] drm/xe/pf: Refactor VF LMEM BAR resize helper function Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 117/428] drm/xe/pf: Keep VF LMEM BAR size low if no VFs enabled Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 118/428] Bluetooth: hci_sync: dont drain cmd_sync backlog on unregister Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 119/428] drm/mediatek: mtk_hdmi_v2: fix VID_DOWNSAMPLE_CONFIG register offset Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 120/428] net: systemport: Fix buffer overflow in bcm_sysport_get_stats() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 121/428] net: systemport: Fix RUNT MIB counter register offset calculation Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 122/428] net/mlx5: Fix slab-out-of-bounds when handling team device events Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 123/428] octeontx2-pf: Fix aura BPID assignment when CONFIG_DCB is enabled Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 124/428] octeontx2-af: mcs: Fix SC resource cleanup loop Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 125/428] tipc: prevent GCM nonce reuse on peer key changes Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 126/428] net: page_pool: fix use-after-free in page_pool_recycle_ring_bulk() Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 127/428] net: stmmac: fix rx Scatter-Gather support Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 128/428] seg6: ensure packet data is writable before modifying SRH and IPv6 DA Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 129/428] net: ethtool: let tsconfig reach a PHY-only timestamp provider Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 130/428] net: restrict SO_RESERVE_MEM to TCP sockets and cap max value Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 131/428] bpf: Wait for an RCU tasks grace period before freeing trampoline progs Greg Kroah-Hartman
2026-10-09 14:07 ` Greg Kroah-Hartman [this message]
2026-10-09 14:07 ` [PATCH 7.2 133/428] gve: DQO: accept TSO packets with non-protocol gso_type bits Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 134/428] net/sched: fq_codel: match the no-drop threshold to the packet size Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 135/428] net/sched: sch_codel: " Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 136/428] ALSA: usb-audio: Add boot quirk for Behringer CM1A Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 137/428] ALSA: usb-audio: Apply boot quirk for Behringer models generically Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 138/428] virtio_blk: set the zone write granularity Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 139/428] net: pcs: rzn1-miic: Clear MIIC protection state before unprotect sequence Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 140/428] net: bcmgenet: fix NULL dereference in set_coalesce before first open Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 141/428] net: cap skb->queue_mapping when the tx queue is picked Greg Kroah-Hartman
2026-10-09 14:07 ` [PATCH 7.2 142/428] net: ethernet: mtk_eth_soc: allocate dummy netdev sooner Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 143/428] net: phy: qcom: at803x: Fix IPQ5018 short-cable DAC values Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 144/428] net: sparx5: skip ptp deinit if init was skipped Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 145/428] tcp: refresh TS.Recent for accepted old ACKs Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 146/428] ipvs: fix missing counter decrement in lblc Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 147/428] ipvs: do not create invisible templates Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 148/428] ipvs: filter some flags received in the backup server Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 149/428] netfilter: bpf: reject invalid NAT manipulation types Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 150/428] netfilter: flowtable: generalize pending status bit Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 151/428] net: microchip: vcap: stop scanning after deleting key field Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 152/428] of: Put coreboot node after compatibility check Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 153/428] net: sparx5: make ports inherit the switch base mac address type Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 154/428] net/mlx5e: Fix AF_XDP TX timestamp teardown NULL dereference Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 155/428] ipv6: sr: use skb_get_hash_net() in seg6_make_flowlabel() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 156/428] net: mvneta: clear XDP pfmemalloc flag between frames Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 157/428] i2c: at91: release DMA channels when probe defers Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 158/428] perf: Fix race between perf_event_exit_task() and perf_pending_task() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 159/428] ALSA: core: Define auto-cleanup for snd_card_free() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 160/428] ALSA: ice1712: Fix the error handling via auto-cleanup at probe Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 161/428] spi: cs42l43: Workaround for wrong speaker ID on Dell XPS 13 DX13260 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 162/428] bpf: Factor out __do_call_rcu_ttrace() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 163/428] bpf: Fix objects stuck in free_by_rcu_ttrace Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 164/428] drm/mediatek: Fix runtime PM leak in mtk_hdmi_ddc_v2_probe() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 165/428] futex: Fix private hash use-after-free on resize Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 166/428] bpf: Fix missing migration protection in __rhtab_map_lookup_and_delete_batch() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 167/428] PCI: Accept AtomicOps already enabled by the hypervisor Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 168/428] drm/amd/display: guard dc_sink dereferences in MST mode validation Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 169/428] drm/amd/display: Preserve eDP mode on initial ASSR failure Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 170/428] drm/amd/display: check dc_state_create_copy() for NULL in dm_suspend Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 171/428] drm/amd/display: Fix fast updates on DCE 6.x Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 172/428] drm/amd/display: Fix fast updates on DCE 8.1 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 173/428] drm/amd/display: Fix stale replay_events after mod_power stream removal Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 174/428] drm/amd/display: Mark DCE 6.4 as not APU Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 175/428] drm/amd/pm/si: Check AMD_IS_MOBILITY flag for PPSMC_SYSTEMFLAG_GPIO_DC Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 176/428] drm/amd/pm/si: Fix updating clock limits on AC/DC Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 177/428] drm/amdgpu/gfx6: fix firmware leak on teardown Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 178/428] drm/amdgpu/gmc12.1: properly pass flush_type to gmc_v12_1_flush_vm_hub() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 179/428] drm/amdgpu/gmc12: properly pass flush_type to gmc_v12_0_flush_vm_hub() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 180/428] drm/i915/vrr: Disable DC balance by default Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 181/428] drm/radeon: Read the VRAM VBIOS signature with readb() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 182/428] drm/mediatek: Add missing IS_ERR check for ovl_adaptor platform device Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 183/428] drm/mediatek: Fix ovl adaptor platform device leak Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 184/428] drm/mediatek: Fix pdev reference leak in mtk_drm_bind() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 185/428] drm/amdgpu: fix IP instance memory leak on kobject add failure Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 186/428] drm/amdgpu: implement workaround for sdma dcc corruption Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 187/428] drm/amdgpu: drop userq callback assignment for sdma 7.1 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 188/428] drm/amdgpu: fix ACP MFD device leak on init failure Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 189/428] drm/amdgpu: skip the noirq suspend reset for a switcheroo-parked GPU Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 190/428] binder: fix is_failure flag for superseded transaction cleanup Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 191/428] binder: fix leaked fd fixups on TF_UPDATE_TXN supersede Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 192/428] binderfs: fix UAF write in binder_add_device Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 193/428] clk: spacemit: k3: add CPU PLL rate tables Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 194/428] hrtimer: Use the mask to clear TIF_HRTIMER_REARM from the exit work Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 195/428] kgdboc: Fix tty driver reference leak in configure_kgdboc() Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 196/428] Input: atkbd - skip deactivate for Lenovo IdeaPad Slim 3 15IWC11 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 197/428] Input: i8042 - add nomux quirk for Fujitsu LIFEBOOK U7410 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 198/428] Input: s6sy761 - fix resume ordering and restore sensing Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 199/428] Input: synaptics - add LEN205b entry to smbus_pnp_ids for ThinkPad T490 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 200/428] Input: synaptics - limit T440p InterTouch quirk to LEN0036 Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 201/428] nitro_enclaves: fix use-after-free on SLOT_ALLOC failure Greg Kroah-Hartman
2026-10-09 14:08 ` [PATCH 7.2 202/428] rust_binder: cancel deferred work items in thread exit Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 203/428] rust_binder: reschedule node refcount update on " Greg Kroah-Hartman
2026-10-10  7:05   ` Karl Mehltretter
2026-10-11 10:01     ` Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 204/428] soc: qcom: geni-se: Correct QUP Core ICC vote constants Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 205/428] USB: cdc-acm: fix racy TIOCMIWAIT implementation Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 206/428] USB: cdc-acm: skip URB restart in port_shutdown if disconnected Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 207/428] USB: serial: fix port tear down use-after-free Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 208/428] usb: storage: sierra_ms: reject short SWoC info transfers Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 209/428] usb: hub: use shorter 120ms post resume hold for SS root hubs Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 210/428] usb: octeon-hcd: fix the FIFO-flush timeout computation Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 211/428] usb: ohci-da8xx: disable controller wakeup on cleanup Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 212/428] usb: ohci-s3c2410: disable controller wakeup on removal Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 213/428] usb: ohci-spear: " Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 214/428] usb: ohci-st: " Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 215/428] usb: gadget: midi2: Fix the jack descriptor array sizes Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 216/428] usb: gadget: f_uac1_legacy: validate bRequest index in generic_{set,get}_cmd Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 217/428] usb: typec: anx7411 - stop the IRQ before destroying the workqueue Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 218/428] usb: typec: port-mapper: Only match USB4 port if host interface is available Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 219/428] usb: dwc3: am62: Fix runtime PM usage count leak on probe error path Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 220/428] usb: dwc3: gadget: fix IRQ storm on invalid event buffer count Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 221/428] usb: gadget: aspeed-vhub: cancel wake work on device removal Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 222/428] USB: gadget: dummy-hcd: Fix wait for outstanding request completions Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 223/428] usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 224/428] usb: chipidea: tegra: disable runtime PM on resume failure Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 225/428] usb: core: clear both ep_in and ep_out for non-ep0 control endpoints Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 226/428] USB: dwc2: shut down wakeup timer before freeing HCD state Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 227/428] usb: typec: tcpm: recover after failure to start the frs ams Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 228/428] usb: typec: tipd: dont send GAID when probe fails in APP mode Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 229/428] usb: typec: tipd: fix uninitialized typec_partner_desc in tps6598x_connect() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 230/428] usb: typec: tipd: fix uninitialized typec_partner_desc in cd321x_update_work() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 231/428] usb: typec: ucsi: glink: fix use-after-free of ucsi on remove Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 232/428] usb: typec: ucsi: acpi: Assume UCSI 1.2 on Acer Nitro ANV15-41 Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 233/428] usb: typec: ucsi: Get the connector fwnode based on reg value Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 234/428] usb: typec: ucsi: displayport: Current CAM OOB index fixup Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 235/428] usb: cdns3: fix use-after-free in cdns3_gadget_exit() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 236/428] usb: cdns3: Fix NULL pointer dereference in cdns3_pci_probe Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 237/428] tty: vt: fix memory leak in vc_allocate() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 238/428] tty: amiserial: fix broken TIOCMIWAIT Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 239/428] tty: vcc: zero-initialize control packet in vcc_send_ctl() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 240/428] tty: vcc: hold port lock when clearing tty pointer in vcc_cleanup Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 241/428] tty: n_gsm: fix missing modem controls after DLCI open in convergence layer type 2 Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 242/428] tty: tty_port: restore TTY_IO_ERROR on activation failure Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 243/428] tty: port: fix tty_port_tty_vhangup() race Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 244/428] tty: serial: qcom_geni_serial: Keep console RX functional after deep idle Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 245/428] tty: abort break signalling on hangup Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 246/428] tty: fix saved termios reset race Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 247/428] tty: serial: max3100: shut down timer before freeing port Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 248/428] perf: Replace perf_event_header__init_id with full header init Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 249/428] serial: 8250_bcm7271: fix use-after-free in brcmuart_remove() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 250/428] serial: 8250_omap: fix wake irq cleared during suspend Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 251/428] serial: abort TIOCMIWAIT on hangup Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 252/428] serial: core: fix NULL pointer dereference in serial_core_unregister_port() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 253/428] serial: revert guards in uart_wait_modem_status() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 254/428] serial: fix ioctl hangup race Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 255/428] serial: fix TIOCMIWAIT race Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 256/428] serial: ma35d1: Fix clock reference leak in ma35d1serial_probe() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 257/428] serial: tegra: dont clear the Tx FIFO on an Rx-only reset Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 258/428] serial: vt8500: Fix clock reference leak in vt8500_serial_probe() Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 259/428] serial: sc16is7xx: fix TX gap caused by kfifo circular buffer wrap-around Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 260/428] serial: sc16is7xx: refill TX FIFO below trigger using fresh TXLVL Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 261/428] arm64/fpsimd: signal: Forbid non-streaming SVE payload on SME-only systems Greg Kroah-Hartman
2026-10-09 14:09 ` [PATCH 7.2 262/428] arm64: mm: Fix the break-before-make flush range for erratum 2645198 Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 263/428] ASoC: codecs: lpass-wsa-macro: rewrite the interpolator volume after enabling clocks Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 264/428] ASoC: codecs: max98363: fix uninitialized stream_config->type Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 265/428] ASoC: codecs: rt1017-sdca-sdw: " Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 266/428] ASoC: qcom: lpass-cpu: use DAI table index for playback constraints Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 267/428] ALSA: hda/tegra: Re-enable SDO workaround for Tegra194 Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 268/428] ALSA: seq: Serialize compat port-info ioctls Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 269/428] ALSA: ua101: reject mismatched capture/playback packet sizes Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 270/428] ALSA: hda/realtek: Fix square wave output on ASUS Strix G615LR Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 271/428] ALSA: hda/realtek: Fix silent speaker on Higole F9B Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 272/428] ALSA: hda/realtek: Add micmute LED quirk for Acer Swift SFG16-72 Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 273/428] EDAC/versalnet: Drop remote processor handle refcount on driver removal Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 274/428] EDAC/altera: Do not allow driver unbinding Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 275/428] EDAC/altera: Drop __init from ECC setup paths for re-probe safety Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 276/428] EDAC/altera: Fix memory leak on dci allocation failure Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 277/428] EDAC/altera: Fix use-after-free in error paths Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 278/428] EDAC/altera: Fix device node reference leaks in the SDMMC ECC setup Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 279/428] i2c: xiic: preserve PEC byte length in SMBus block read setup Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 280/428] i2c: xiic: defer RX_FULL until all trailing bytes are in FIFO Greg Kroah-Hartman
2026-10-09 23:29   ` Abdurrahman Hussain
2026-10-09 14:10 ` [PATCH 7.2 281/428] i2c: xiic: dont clobber msg->len to signal block-read completion Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 282/428] Bluetooth: RFCOMM: Fix initial port reference race Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 283/428] Bluetooth: Serialize SMP remote OOB data access Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 284/428] Bluetooth: hci_sync: Fix inquiry cache use-after-free Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 285/428] Bluetooth: hci_conn: Lock parent access during enhanced SCO setup Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 286/428] Bluetooth: hci_core: Fix inquiry cache timestamps on 64-bit systems Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 287/428] Bluetooth: hci_core: Serialize ACL scheduling with channel deletion Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 288/428] Bluetooth: hci_core: Serialize SCO and ISO scheduling with teardown Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 289/428] Bluetooth: hci_core: Serialize fragmented ISO packet queueing Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 290/428] Bluetooth: btintel: fix buffer over-read in btintel_hw_error() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 291/428] Bluetooth: btintel_pcie: fix plen overflow in btintel_pcie_recv_frame() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 292/428] Bluetooth: btintel_pcie: reject oversized TX packets in send_frame() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 293/428] x86/mm: Dont apply va_align to hugetlb mappings on AMD F15h Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 294/428] x86/mm: Drop unnecessary PMD page copy when freeing Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 295/428] tpm: fix off-by-four bounds check in tpm2_get_random() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 296/428] nvme-multipath: set BLK_FEAT_ZONED only after the zone info is known Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 297/428] nvme-multipath: fix underflow in ANA log bounds checks Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 298/428] nvme-pci: add NVME_QUIRK_DMAPOOL_ALIGN_512 for Micron 4100AT Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 299/428] nvmet-auth: fix out-of-bounds write in nvmet_auth_challenge() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 300/428] nvmet: pci-epf: reject too-short SGL segments Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 301/428] nvmet: copy the hostid into the ctrl before creating PR pc_refs Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 302/428] mtd: block2mtd: Fix divide error when erase_size is zero Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 303/428] mtd: mtd_intel_dg: reset poll counter for each erase Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 304/428] mtd: rawnand: cadence: Initialize IRQ state before requesting IRQ Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 305/428] mtd: rawnand: vf610_nfc: fix reads on chips with more than 64 bytes of OOB Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 306/428] mtd: spi-nor: core: Fix mutex leak in spi_nor_rww_start_exclusive() Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 307/428] mtd: spinand: Enable QE on all dies Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 308/428] mtd: spinand: fix NULL pointer dereference with no ECC engine Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 309/428] mtd: spinand: fix zero oobavail when no ECC engine is used Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 310/428] mtd: spinand: Do not update the QE bit on devices without one Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 311/428] KVM: nVMX: Force MSR bitmap refresh if runtime eVMCS controls are modified Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 312/428] KVM: SEV: Nullify "have run CPUs" mask pointer when freeing it Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 313/428] KVM: SEV: Do cache maintenance on the source VM *before* clearing SEV state Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 314/428] KVM: x86/mmu: Bail from shadow walks if the root is invalid or a dummy Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 315/428] KVM: SVM: Use the active VMCBs MSR bitmap when checking if MSR is intercepted Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 316/428] KVM: SVM: Preserve TLB control (i.e. pending TLB flush) on failed VMRUN Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 317/428] KVM: SVM: Update control fields on #VMEXIT if and only if VMRUN succeeded Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 318/428] KVM: arm64: Clear HCR_EL2.RW for 32-bit non-protected vCPUs Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 319/428] KVM: arm64: Apply the fine-grained UNDEFs without FEAT_FGT Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 320/428] KVM: arm64: vgic: Allow last_lr_irq to be NULL when LRs are not overflowing Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 321/428] KVM: arm64: vgic: Take a refcount on IRQs referenced by last_lr_irq Greg Kroah-Hartman
2026-10-09 14:10 ` [PATCH 7.2 322/428] KVM: arm64: vgic-its: Fix MOVALL handling of source redistributor Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 323/428] KVM: arm64: Use stage-1 leaf size for VM_PFNMAP Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 324/428] wifi: cfg80211: fix RTS threshold setting for single-radio PHY Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 325/428] wifi: cw1200: fix TX padding OOB read leaking heap data to device Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 326/428] wifi: iwlegacy: 3945: free EEPROM data on remove Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 327/428] wifi: mac80211: count only matching reservations in reserved switch Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 328/428] wifi: mac80211: keep paired old chanctx alive Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 329/428] wifi: mac80211: shut down RX BA session timer on teardown Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 330/428] wifi: mac80211: drain PS delivery work during station teardown Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 331/428] wifi: mac80211: account proxy paths against the mesh path limit Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 332/428] wifi: mac80211: keep fallback association elements alive Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 333/428] wifi: mac80211: minstrel_ht: validate fixed rate index Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 334/428] wifi: mac80211: reject invalid 320 MHz CSA bandwidth Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 335/428] wifi: mac80211: release mesh path quota on failed additions Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 336/428] wifi: mac80211: set info->band for 802.3 encap offload frames Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 337/428] wifi: mac80211: fix mesh fast xmit path deletion UAF Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 338/428] wifi: mac80211: handle empty FILS association request payload Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 339/428] USB: serial: cp210x: add Corsair AX1500i Power Supply Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 340/428] USB: serial: quatech2: fix baud rate overflow Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 341/428] USB: serial: ssu100: " Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 342/428] USB: serial: fix dynamic id driver deregistration race Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 343/428] USB: serial: fix driver deregistration order Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 344/428] USB: serial: fix ioctl hangup race Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 345/428] USB: serial: option: add support for SIMCom SIM8260C Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 346/428] USB: serial: option: add Quectel EG060W Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 347/428] USB: serial: option: add Compal EXM-G1x support Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 348/428] USB: serial: option: add Quectel RG660QB Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 349/428] USB: serial: option: add Compal EXC-T1 support Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 350/428] thunderbolt: Fix KASAN reported use-after-free when request is canceled Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 351/428] thunderbolt: Hold a router reference for each allocated HopID Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 352/428] thunderbolt: Make the DP tunnel activation callback mandatory Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 353/428] thunderbolt: Mark discovered tunnels as active Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 354/428] thunderbolt: Tear down inactive DP tunnels when the domain is stopped Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 355/428] thunderbolt: Fix domain reference leak when DPRX read is canceled Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 356/428] thunderbolt: Dont access a DP tunnel after its DPRX read was canceled Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 357/428] thunderbolt: Fix NULL dereference in tb_remove_work() Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 358/428] thunderbolt: Disable CL states for the Anker Prime TB5 dock Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 359/428] thunderbolt: Reject oversized XDomain properties responses Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 360/428] smb: client: discard post-EOF pagecache when extending a file via zero range Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 361/428] smb: client: discard post-EOF pagecache when extending a file via copy range Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 362/428] smb: client: discard post-EOF pagecache when extending a file via clone range Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 363/428] smb: client: flush and commit data before querying allocated ranges Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 364/428] smb: client: only require read lease for size-extending zero range Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 365/428] smb: client: flush dirty data before zeroing a range Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 366/428] smb: client: distinguish real EOF from a stale remote_i_size on read Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 367/428] smb: client: drain and invalidate before server-side copy/clone Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 368/428] smb: client: require stable pages for signed connections Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 369/428] smb: client: split cifsFileInfo bitfields to avoid shared-byte RMW races Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 370/428] iio: accel: kionix-kx022a: Prevent memory leak and fix state Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 371/428] iio: accel: kxcjk-1013: reject duplicate event disable Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 372/428] iio: accel: sca3000: fix frequency divider condition check Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 373/428] iio: adc: ad4030: fix invalid oversampling_ratio validation Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 374/428] iio: adc: ad7173: Fix digital filter configuration Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 375/428] iio: adc: ad_sigma_delta: fix use-after-free on unbind Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 376/428] iio: adc: ade9000: fix NULL pointer dereference in clkout registration Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 377/428] iio: adc: ade9000: fix overlapping scan_index for current and voltage channels Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 378/428] iio: adc: ade9000: handle Phase C dip events in IRQ1 handler Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 379/428] iio: adc: ade9000: request interrupts after powering the device Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 380/428] iio: adc: adi-axi-adc: Initialize state mutex Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 381/428] iio: adc: aspeed: propagate reset deassert errors Greg Kroah-Hartman
2026-10-09 14:11 ` [PATCH 7.2 382/428] iio: adc: axp288: Add TS bias override for Haier HV103H Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 383/428] iio: adc: max1363: sign-extend bipolar differential channel reads Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 384/428] iio: adc: pac1934: check ACPI label duplication Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 385/428] iio: adc: rohm-bd79124: Catch regmap errors at measurement start/stop Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 386/428] iio: adc: rohm-bd79124: Fix channel initialization Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 387/428] iio: adc: rohm-bd79124: Fix GPIO mask check Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 388/428] iio: adc: rohm-bd79124: Fix rising alarm Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 389/428] iio: adc: stm32-adc: fix check on internal channel availability Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 390/428] iio: adc: stm32-adc: fix possible division by zero in processed channel Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 391/428] iio: adc: sun4i-gpadc-iio: clean up on thermal zone registration failure Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 392/428] iio: adc: sun4i-gpadc-iio: drop underflowing pm_runtime_put() calls Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 393/428] iio: adc: xilinx-xadc: free IRQ before cancelling the unmask worker on unbind Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 394/428] iio: admv1013: initialize callback mutex before registering notifier Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 395/428] iio: buffer: serialize buffer teardown with mode claims Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 396/428] iio: buffer: Ensure bounce buffer used for unaligned case is zeroed Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 397/428] iio: cdc: ad7150: fix OF matching and publish module aliases Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 398/428] iio: frequency: adf4377: Fully initialize clk_init_data and clk_parent_data Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 399/428] iio: frequency: admv1013: fix wrong channel field used in admv1013_read_raw() Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 400/428] iio: gyro: adis16136: fix unprotected debugfs reads Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 401/428] iio: health: max30102: fix NULL dereference in interrupt handler Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 402/428] iio: imu: adis16400: fix unprotected debugfs reads Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 403/428] iio: imu: adis16480: " Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 404/428] iio: light: gp2ap020a00f: drain irq_work after free_irq Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 405/428] iio: light: rohm-bu27034: Fix infinite delay on error Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 406/428] iio: pressure: bmp280: fix out-of-bounds access in sampling frequency lookup Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 407/428] iio: pressure: rohm-bm1390: Return error when read fails Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 408/428] iio: proximity: aw96103: validate firmware data length Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 409/428] iio: proximity: isl29501: Fix return type of isl29501_register_write Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 410/428] iio: proximity: pulsedlight: fix iio_device left registered on PM setup failure Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 411/428] iio: proximity: sx9324: Correct proximity channel resolution Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 412/428] iio: proximity: vcnl3020: fix ISR bitmask check in IRQ handler Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 413/428] iio: proximity: vl53l0x-i2c: claim direct mode for raw reads Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 414/428] iio: trigger: cancel reenable_work before freeing trigger Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 415/428] mptcp: fix msk->timer_ival reset Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 416/428] mtd: rawnand: vf610_nfc: fix false bitflips on reads of erased pages Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 417/428] rust: irq: pass RegistrationInner as cookie to request_irq Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 418/428] drm/amd/display: map PWM brightness through custom backlight curve Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 419/428] drm/amdgpu: reset VI ASIC on MacBookPro15,1 Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 420/428] drm/amdgpu: reset VI ASIC on MacBookPro14,3 Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 421/428] perf/core: Check kernel access when kernel callchains are requested Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 422/428] perf: Require kernel access for text poke events Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 423/428] arm64: errata: Factor out broken AMU const counter cap Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 424/428] arm64: errata: Add Cortex-A725 erratum 3821522 workaround Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 425/428] smb: client: only require read lease for size-extending preallocate Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 426/428] net: usb: qmi_wwan: add Quectel EG120K-EA Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 427/428] xen/netfront: drop RX packets with a short Ethernet header Greg Kroah-Hartman
2026-10-09 14:12 ` [PATCH 7.2 428/428] iio: buffer-dmaengine: fix sg entry iteration when building dma_vecs Greg Kroah-Hartman
2026-10-09 14:53 ` [PATCH 7.2 000/428] 7.2.10-rc1 review Brett A C Sheffield
2026-10-09 15:14 ` Ronald Warsow
2026-10-09 22:22 ` Peter Schneider
2026-10-10  7:19 ` Ron Economos
2026-10-10 13:29 ` Takeshi Ogasawara
2026-10-11  1:25 ` Slade Watkins
2026-10-11  8:25 ` Barry K. Nathan
2026-10-11 11:13 ` Miguel Ojeda
2026-10-11 13:10   ` Greg KH
2026-10-11 14:11     ` Miguel Ojeda
2026-10-11 14:17       ` Greg KH
2026-10-11 16:39         ` Miguel Ojeda
2026-10-11 21:07 ` Pavel Machek
2026-10-12 16:20 ` Florian Fainelli

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=20261009140949.083169793@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=ast@kernel.org \
    --cc=florent.revest@linux.dev \
    --cc=patches@lists.linux.dev \
    --cc=rhkrqnwk98@gmail.com \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.