Skip to contentSkip to conversation

7.2.11-rc1 review

PATCH In review Greg Kroah-Hartman 9 participants 291 messages Oct 13 – Oct 14 Page 3 of 3

Subsystems (2)
lore
Share & tools
lore
author maintainer
#275 lore raw

PATCH 274/281 drm/vc4: Fix binner slot allocation failing on an idle GPU

In reply to Greg Kroah-Hartman

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

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

From: Maíra Canal <[email protected]>

[ Upstream commit cca01232d94adcb10f7c8c5bb8ce072b045fcb58 ]

A job's binner slots are returned to bin_alloc_used by vc4_complete_exec(), which runs from the job_done workqueue, but the seqno vc4_v3d_get_bin_slot() waits on is incremented earlier, in the function vc4_irq_finish_render_job(). Therefore, a waiter can wake, retry, and still find the pool full because the worker has not run. By then, the job might have left the render_job_list, so no seqno remains to wait on and the allocation fails returning -ENOMEM.

This scenario can be reproduced on a Raspberry Pi 3 by using a burst of small jobs (e.g. Piglit's quick_gl suite), with userspace seeing a rejected submit for a pool about to become free.

Note that the slots are held from validation until the render completes, so the pool can also be exhausted by jobs still queued on bin_job_list, leaving render_job_list empty and nothing to wait on.

Release the slots from the FRDONE handler and wait on the pool instead of on one job's seqno. This bounds the wait to the actual resource. Also, by claiming the slot inside the wait condition, another submit is unable to take the slot between the wakeup and the retry. vc4_complete_exec() keeps clearing the slots for jobs that never completed, and now wakes the waiters too.

Note that the wait takes a deadline, since the two callers need different ones. The submit path is a user task and can be interrupted, so it waits without one. On the other hand, vc4_overflow_mem_work() runs on a worker and never sees a signal, so it needs a deadline. During a reset, vc4_irq_disable() masks V3D_DRIVER_IRQS before draining the worker, and with those masked nothing can release a slot. This deadlocks: the worker would wait for slots that only the reset can free, while the reset waits in cancel_work_sync() for the worker.

Fixes 553c942f8b2c ("drm/vc4: Allow using more than 256MB of CMA memory.")
---
 drivers/gpu/drm/vc4/vc4_drv.h      |  2 +-
 drivers/gpu/drm/vc4/vc4_gem.c      |  8 +++++-
 drivers/gpu/drm/vc4/vc4_irq.c      |  6 +++-
 drivers/gpu/drm/vc4/vc4_v3d.c      | 44 ++++++++++++++----------------
 drivers/gpu/drm/vc4/vc4_validate.c |  2 +-
 5 files changed, 34 insertions(+), 28 deletions(-)
drivers/gpu/drm/vc4/vc4_drv.h +1 -1
index 0f5958c1e6b60..b0e82c2dc1bae 100644
@@ -1051,7 +1051,7 @@ void vc4_plane_async_set_fb(struct drm_plane *plane,
 /* vc4_v3d.c */
 extern struct platform_driver vc4_v3d_driver;
 extern const struct of_device_id vc4_v3d_dt_match[];
-int vc4_v3d_get_bin_slot(struct vc4_dev *vc4);
+int vc4_v3d_get_bin_slot(struct vc4_dev *vc4, long timeout);
 int vc4_v3d_bin_bo_get(struct vc4_dev *vc4, bool *used);
 void vc4_v3d_bin_bo_put(struct vc4_dev *vc4);
 int vc4_v3d_pm_get(struct vc4_dev *vc4);
drivers/gpu/drm/vc4/vc4_gem.c +7 -1
index e231c906709c1..6ee4bd77d4331 100644
@@ -877,11 +877,17 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
 		drm_gem_object_put(&bo->base.base);
 	}
 
-	/* Free up the allocation of any bin slots we used. */
+	/* Free up the allocation of any bin slots we used. Jobs that ran to
+	 * completion had their slots released in vc4_irq_finish_render_job().
+	 * Only jobs that never completed still have slots to be released here.
+	 */
 	spin_lock_irqsave(&vc4->job_lock, irqflags);
 	vc4->bin_alloc_used &= ~exec->bin_slots;
 	spin_unlock_irqrestore(&vc4->job_lock, irqflags);
 
+	/* Let anyone waiting on the binner pool retry. */
+	wake_up_all(&vc4->job_wait_queue);
+
 	/* Release the reference on the binner BO if needed. */
 	if (exec->bin_bo_used)
 		vc4_v3d_bin_bo_put(vc4);
drivers/gpu/drm/vc4/vc4_irq.c +5 -1
index 98a8db7200917..dc10d3a4d90f2 100644
@@ -74,7 +74,7 @@ vc4_overflow_mem_work(struct work_struct *work)
 
 	bo = vc4->bin_bo;
 
-	bin_bo_slot = vc4_v3d_get_bin_slot(vc4);
+	bin_bo_slot = vc4_v3d_get_bin_slot(vc4, msecs_to_jiffies(500));
 	if (bin_bo_slot < 0) {
 		drm_err(&vc4->base, "Couldn't allocate binner overflow mem\n");
 		goto complete;
@@ -165,6 +165,10 @@ vc4_irq_finish_render_job(struct drm_device *dev)
 	trace_vc4_rcl_end_irq(dev, exec->seqno);
 
 	vc4->finished_seqno++;
+
+	vc4->bin_alloc_used &= ~exec->bin_slots;
+	exec->bin_slots = 0;
+
 	list_move_tail(&exec->head, &vc4->job_done_list);
 
 	nextbin = vc4_first_bin_job(vc4);
drivers/gpu/drm/vc4/vc4_v3d.c +20 -24

66 lines not on this page · raw message

drivers/gpu/drm/vc4/vc4_validate.c +1 -1
index d2a65c968b1f9..565227657b43b 100644
@@ -402,7 +402,7 @@ validate_tile_binning_config(VALIDATE_ARGS)
 		return -EINVAL;
 	}
 
-	bin_slot = vc4_v3d_get_bin_slot(vc4);
+	bin_slot = vc4_v3d_get_bin_slot(vc4, MAX_SCHEDULE_TIMEOUT);
 	if (bin_slot < 0) {
 		if (bin_slot != -EINTR && bin_slot != -ERESTARTSYS) {
 			drm_err(dev, "Failed to allocate binner memory: %d\n",
Signature · 1 line
2.53.0
author maintainer
#276 lore raw

PATCH 275/281 sched_ext: Generate qseq from a per-task counter

In reply to Greg Kroah-Hartman

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

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

From: Kuba Piecuch <[email protected]>

commit e6ac89b8b1c12e9104df45a14a26e2dfa96ded06 upstream.

finish_dispatch() uses the qseq embedded in p->scx.ops_state to tell whether the QUEUED instance of a task it's about to claim is the one scx_bpf_dsq_insert() saw. qseq is generated from rq->scx.ops_qseq, but the counters of different rqs are independent, so if a task is dequeued and re-enqueued on a different rq between scx_bpf_dsq_insert() and finish_dispatch(), the new QUEUED instance can end up with the same qseq as the old one:

CPU X CPU Z
----- -----
enqueue p on rq A, qseq = N
ops.dispatch()
scx_bpf_dsq_insert(p)
records qseq N
sched_setaffinity(p)
dequeue p from rq A enqueue p on rq B, qseq = N
finish_dispatch(p, N)
qseq matches, p is claimed

The claim itself is still atomic so the core stays consistent, but an insert issued for a previous QUEUED instance gets applied to a new one which the BPF scheduler has just received through ops.enqueue(). This breaks the guarantee that dispatches targeting a stale instance are ignored.

Generate qseq from a per-task counter, p->scx.ops_qseq, instead so that consecutive QUEUED instances of a task never share a qseq regardless of which rq they're on. The counter is only updated in scx_do_enqueue_task() with the task's rq locked, so no additional synchronization is needed, and it fits in an existing hole in struct sched_ext_entity on 64bit. Remove the now unused rq->scx.ops_qseq.

Never generate qseq 0. NONE and DISPATCHING don't carry a qseq, so scx_bpf_dsq_insert() on a task in either state records 0. With a per-task counter, every task's first QUEUED instance would otherwise get qseq 0 and could be claimed by such an insert. Wrap the counter where the QSEQ field wraps so that it can't reach a value that shifts to 0 on 32bit either.

Fixes f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
Cc [email protected] # v6.12+
Assisted-by Claude:claude-opus-5.5

[ jpiecuch: 7.2.y lacks runnable_cpu in sched_ext_entity, so ops_qseq goes
after selected_cpu; adjust context in scx_rq and the dump_line() CPU line ]

---
 include/linux/sched/ext.h   |    1 +
 kernel/sched/ext/ext.c      |   15 ++++++++++-----
 kernel/sched/ext/internal.h |    5 +++++
 kernel/sched/sched.h        |    1 -
 4 files changed, 16 insertions(+), 6 deletions(-)
include/linux/sched/ext.h +1 -0
@@ -198,6 +198,7 @@ struct sched_ext_entity {
 	s32			sticky_cpu;
 	s32			holding_cpu;
 	s32			selected_cpu;
+	u32			ops_qseq;	/* protected by rq lock */
 	struct task_struct	*kf_tasks[2];	/* see SCX_CALL_OP_TASK() */
 
 	struct list_head	runnable_node;	/* rq->scx.runnable_list */
kernel/sched/ext/ext.c +10 -5
@@ -1953,8 +1953,14 @@ static void do_enqueue_task(struct rq *r
 	if (unlikely(!SCX_HAS_OP(sch, enqueue)))
 		goto global;
 
-	/* DSQ bypass didn't trigger, enqueue on the BPF scheduler */
-	qseq = rq->scx.ops_qseq++ << SCX_OPSS_QSEQ_SHIFT;
+	/*
+	 * DSQ bypass didn't trigger, enqueue on the BPF scheduler. Wrap the
+	 * per-task qseq counter where the QSEQ field wraps and skip 0, which is
+	 * what scx_bpf_dsq_insert() records for a task in NONE or DISPATCHING.
+	 */
+	p->scx.ops_qseq = ((p->scx.ops_qseq + 1) &
+			   (SCX_OPSS_QSEQ_MASK >> SCX_OPSS_QSEQ_SHIFT)) ?: 1;
+	qseq = (unsigned long)p->scx.ops_qseq << SCX_OPSS_QSEQ_SHIFT;
 
 	WARN_ON_ONCE(atomic_long_read(&p->scx.ops_state) != SCX_OPSS_NONE);
 	atomic_long_set(&p->scx.ops_state, SCX_OPSS_QUEUEING | qseq);
@@ -6690,10 +6696,9 @@ static void scx_dump_cpu(struct scx_sche
 	seq_buf_init(&ns, buf, avail);
 
 	dump_newline(&ns);
-	dump_line(&ns, "CPU %-4d: nr_run=%u flags=0x%x cpu_rel=%d ops_qseq=%lu ksync=%lu",
+	dump_line(&ns, "CPU %-4d: nr_run=%u flags=0x%x cpu_rel=%d ksync=%lu",
 		  cpu, rq->scx.nr_running, rq->scx.flags,
-		  rq->scx.cpu_released, rq->scx.ops_qseq,
-		  rq->scx.kick_sync);
+		  rq->scx.cpu_released, rq->scx.kick_sync);
 	dump_line(&ns, "          curr=%s[%d] class=%ps",
 		  rq->curr->comm, rq->curr->pid,
 		  rq->curr->sched_class);
kernel/sched/ext/internal.h +5 -0
@@ -1508,6 +1508,11 @@ enum scx_ops_state {
 	 * dequeue/requeue, the dispatcher can tell whether it still has a claim
 	 * on the task being dispatched.
 	 *
+	 * QSEQ is generated from the per-task p->scx.ops_qseq counter so that
+	 * it doesn't repeat across QUEUED instances of the same task even if
+	 * the task moves between rqs. 0 is never used as a valid QSEQ since
+	 * NONE and DISPATCHING map to this value.
+	 *
 	 * As some 32bit archs can't do 64bit store_release/load_acquire,
 	 * p->scx.ops_state is atomic_long_t which leaves 30 bits for QSEQ on
 	 * 32bit machines. The dispatch race window QSEQ protects is very narrow
kernel/sched/sched.h +0 -1
@@ -795,7 +795,6 @@ struct scx_rq {
 	struct scx_dispatch_q	local_dsq;
 	struct list_head	runnable_list;		/* runnable tasks on this rq */
 	struct list_head	ddsp_deferred_locals;	/* deferred ddsps from enq */
-	unsigned long		ops_qseq;
 	u64			extra_enq_flags;	/* see move_task_to_local_dsq() */
 	u32			nr_running;
 	u32			cpuperf_target;		/* [0, SCHED_CAPACITY_SCALE] */
author maintainer
#277 lore raw

PATCH 276/281 sched_ext: Call ops.dequeue() when a task arrives on a remote local DSQ

In reply to Greg Kroah-Hartman

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

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

From: Kuba Piecuch <[email protected]>

commit af701b8d3238b9eb7cd450b0491300452c700bf5 upstream.

When a task in the BPF scheduler's custody is moved to another CPU's local DSQ, ops.dequeue() is only called once the task is picked for execution, from set_next_task_scx() with SCX_DEQ_CORE_SCHED_EXEC, even though no core-sched pick took place. It should instead be called without flags when the task is inserted into the destination DSQ, as it is for same-rq dispatches.

move_remote_task_to_local_dsq() sets p->scx.sticky_cpu across the migration so that deactivate_task() on the source rq doesn't end custody. Since commit b75aaea24c9f ("sched_ext: Properly mark SCX-internal migrations via sticky_cpu"), enqueue_task_scx() only clears it after inserting the task, so task_leave_custody() still sees the migration in progress and skips the custody exit.

Clear p->scx.sticky_cpu as soon as enqueue_task_scx() has read it, as was done before that commit. The source side is unaffected.

Fixes ebf1ccff79c4 ("sched_ext: Fix ops.dequeue() semantics")
Cc [email protected] # 7.1.x: 18d62044cda7: sched_ext: Preserve rq tracking across local DSQ dispatch
Assisted-by Claude:claude-opus-5.5
(cherry picked from commit af701b8d3238b9eb7cd450b0491300452c700bf5)

[ jpiecuch: resolved context conflict, 7.2.y still names the function
do_enqueue_task() rather than scx_do_enqueue_task() ]

---
 kernel/sched/ext/ext.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
kernel/sched/ext/ext.c +7 -3
@@ -2051,6 +2051,13 @@ static void enqueue_task_scx(struct rq *
 	u64 enq_flags = core_enq_flags | rq->scx.extra_enq_flags;
 
 	/*
+	 * An SCX-internal migration ends on arrival. Clear sticky_cpu so @p can
+	 * leave custody when inserted into the destination DSQ.
+	 */
+	if (sticky_cpu >= 0)
+		p->scx.sticky_cpu = -1;
+
+	/*
 	 * SCX_RQ_IN_WAKEUP promises a task_woken_scx() call once this enqueue
 	 * returns. Only the core's wakeup path delivers one. The flags stashed
 	 * for a remote activation may carry the wakeup bit without it.
@@ -2088,9 +2095,6 @@ static void enqueue_task_scx(struct rq *
 		dl_server_start(&rq->ext_server);
 
 	do_enqueue_task(rq, p, enq_flags, sticky_cpu);
-
-	if (sticky_cpu >= 0)
-		p->scx.sticky_cpu = -1;
 out:
 	rq->scx.flags &= ~SCX_RQ_IN_WAKEUP;
 
author maintainer
#278 lore raw

PATCH 277/281 drm/amd/display: Dont replace a sink mode that shares the native totals

In reply to Greg Kroah-Hartman

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

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

From: Adrian Betschart <[email protected]>

commit 54c998c55fc9cbc391b350d67b86e0c2a0748f1a upstream.

decide_crtc_timing_for_drm_display_mode() copies the native mode's CRTC timing into the requested mode when clock, htotal and vtotal match. That is meant for the modes amdgpu inserts itself:
amdgpu_dm_create_common_mode() duplicates the native mode and changes only hdisplay and vdisplay, so those are sent with the native timing and scaled.

A sink can also offer a real mode with the same clock and totals as its native mode. CTA-861 VIC 102 (4096x2160@60) and VIC 97 (3840x2160@60) both use 594 MHz and 4400x2250. With 3840x2160@60 as the preferred mode, a 4096x2160@60 request goes out with the 3840x2160 timing and the framebuffer scaled into it (dst 3840x2025 at y=67), while the AVI InfoFrame still carries VIC 102. A JVC projector then reports 3840x2160 and shows a corrupted right edge. 4096x2160@24, whose totals differ, is sent and displayed correctly.

Inserted modes keep the native sync positions; a real mode with its own active width does not. Compare those too, so only inserted modes are patched.

Fixes 4562236b3bc0 ("drm/amd/dc: Add dc display driver (v2)")
Assisted-by Claude-Code:claude-opus-5-5
(cherry picked from commit 22f9a2da101c37f821cd00954f81dc598754f4d5)

[ Adrian: this tree keeps the function in amdgpu_dm.c; dropped the KUnit
test, its file does not exist here. ]

Assisted-by Claude-Code:claude-opus-5-5
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +6 -1
@@ -7260,10 +7260,15 @@ decide_crtc_timing_for_drm_display_mode(
 					const struct drm_display_mode *native_mode,
 					bool scale_enabled)
 {
+	/* Inserted modes copy the native sync; a sink mode with equal totals may not */
 	if (scale_enabled || (
 	    native_mode->clock == drm_mode->clock &&
 	    native_mode->htotal == drm_mode->htotal &&
-	    native_mode->vtotal == drm_mode->vtotal)) {
+	    native_mode->vtotal == drm_mode->vtotal &&
+	    native_mode->hsync_start == drm_mode->hsync_start &&
+	    native_mode->hsync_end == drm_mode->hsync_end &&
+	    native_mode->vsync_start == drm_mode->vsync_start &&
+	    native_mode->vsync_end == drm_mode->vsync_end)) {
 		if (native_mode->crtc_clock)
 			copy_crtc_timing_for_drm_display_mode(native_mode, drm_mode);
 	} else {
author maintainer
#279 lore raw

PATCH 278/281 io_uring/memmap: account the pages a compound region really uses

In reply to Greg Kroah-Hartman

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

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

From: Ali Ahmet Memis <[email protected]>

[ Upstream commit f12f0234cc14886bcfd53ffb7c8df4216dad51f1 ]

io_mem_alloc_compound() allocates get_order(size) pages, which rounds a region size that is not a power of two up to the next order. The pages past the region are part of the same allocation and cannot be used for anything else, but io_create_region() accounts reg->size >> PAGE_SHIFT, so they are never charged against RLIMIT_MEMLOCK. For a ring with 4096 SQ entries and the default CQ size the region is 37 pages while the allocation is 64.

Account the tail pages together with the region, and fall back to the exact sized bulk allocation when they do not fit the limit, so a user close to their limit still gets the region rather than an error. io_free_region() gives the same amount back, the compound case being the one that set IO_REGION_F_SINGLE_REF.

Counting how many 4096 entry rings an unprivileged user can create under a given RLIMIT_MEMLOCK, before and after:

	limit (pages)	before	after
	256		2	2
	300		2	2
	350		3	2
	400		3	3
	512		5	4

Five rings under a 512 page limit really pin 640 pages.

Stable-dep-of: b59cabf9b4ac ("io_uring: do not charge the SQ/CQ rings to RLIMIT_MEMLOCK")

---
 io_uring/memmap.c |   37 ++++++++++++++++++++++++++++++-------
 1 file changed, 30 insertions(+), 7 deletions(-)
io_uring/memmap.c +30 -7
@@ -16,8 +16,10 @@
 #include "zcrx.h"
 
 static bool io_mem_alloc_compound(struct page **pages, int nr_pages,
-				  size_t size, gfp_t gfp)
+				  size_t size, gfp_t gfp,
+				  struct user_struct *user)
 {
+	unsigned long nr_compound, extra;
 	struct page *page;
 	int i, order;
 
@@ -27,9 +29,22 @@ static bool io_mem_alloc_compound(struct
 	else if (order)
 		gfp |= __GFP_COMP;
 
+	/*
+	 * get_order() rounds a non power of two size up, so the allocation
+	 * can hold more pages than the region exposes. Account those too,
+	 * and leave the compound allocation alone if they do not fit.
+	 */
+	nr_compound = 1UL << order;
+	extra = nr_compound - nr_pages;
+	if (extra && user && __io_account_mem(user, extra))
+		return false;
+
 	page = alloc_pages(gfp, order);
-	if (!page)
+	if (!page) {
+		if (extra && user)
+			__io_unaccount_mem(user, extra);
 		return false;
+	}
 
 	for (i = 0; i < nr_pages; i++)
 		pages[i] = page + i;
@@ -105,8 +120,15 @@ void io_free_region(struct user_struct *
 	}
 	if ((mr->flags & IO_REGION_F_VMAP) && mr->ptr)
 		vunmap(mr->ptr);
-	if (mr->nr_pages && user)
-		__io_unaccount_mem(user, mr->nr_pages);
+	if (mr->nr_pages && user) {
+		unsigned long nr_accounted = mr->nr_pages;
+
+		/* a compound region was accounted for the whole allocation */
+		if (mr->flags & IO_REGION_F_SINGLE_REF)
+			nr_accounted = 1UL << get_order(io_region_size(mr));
+
+		__io_unaccount_mem(user, nr_accounted);
+	}
 
 	memset(mr, 0, sizeof(*mr));
 }
@@ -151,7 +173,8 @@ static int io_region_pin_pages(struct io
 
 static int io_region_allocate_pages(struct io_mapped_region *mr,
 				    struct io_uring_region_desc *reg,
-				    unsigned long mmap_offset)
+				    unsigned long mmap_offset,
+				    struct user_struct *user)
 {
 	gfp_t gfp = GFP_KERNEL_ACCOUNT | __GFP_ZERO | __GFP_NOWARN;
 	size_t size = io_region_size(mr);
@@ -162,7 +185,7 @@ static int io_region_allocate_pages(stru
 	if (!pages)
 		return -ENOMEM;
 
-	if (io_mem_alloc_compound(pages, mr->nr_pages, size, gfp)) {
+	if (io_mem_alloc_compound(pages, mr->nr_pages, size, gfp, user)) {
 		mr->flags |= IO_REGION_F_SINGLE_REF;
 		goto done;
 	}
@@ -217,7 +240,7 @@ int io_create_region(struct io_ring_ctx
 	if (reg->flags & IORING_MEM_REGION_TYPE_USER)
 		ret = io_region_pin_pages(mr, reg);
 	else
-		ret = io_region_allocate_pages(mr, reg, mmap_offset);
+		ret = io_region_allocate_pages(mr, reg, mmap_offset, ctx->user);
 	if (ret)
 		goto out_free;
 
author maintainer
#280 lore raw

PATCH 279/281 io_uring: do not charge the SQ/CQ rings to RLIMIT_MEMLOCK

In reply to Greg Kroah-Hartman

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

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

From: Hengyu Liang <[email protected]>

[ Upstream commit b59cabf9b4acb65f3f9968087ca0e18010d85076 ]

Commit 8078486e1d53 ("io_uring: use region api for SQ") and commit 81a4058e0cd0 ("io_uring: use region api for CQ") made io_uring_setup() allocate the rings with io_create_region().

However, io_create_region() charges the memory to RLIMIT_MEMLOCK, and the rings had been exempt from that limit since commit 26bfa89e25f4 ("io_uring: place ring SQ/CQ arrays under memcg memory limits"). As of now, a user without CAP_IPC_LOCK gets ENOMEM from io_uring_setup() when their rings exceed the limit, which is 8 MiB by default. PostgreSQL developers have already hit this in their io_uring tests [1].

The issue can be reproduced with a simple liburing program, run as an unprivileged user:

    #include <liburing.h>
    #include <stdio.h>

    int main(void)
    {
            static struct io_uring ring[64];
            int i;

            for (i = 0; i < 64; i++)
                    if (io_uring_queue_init(4096, &ring[i], 0) < 0)
                            break;
            printf("%d rings\n", i);
            return 0;
    }

Before those commits (v6.13), it prints "64 rings". After those commits (v6.14), it prints "21 rings".

This patch makes io_create_region() take the user to charge, and passes no user for the SQ/CQ rings.

---
 io_uring/io_uring.c |   10 ++++++----
 io_uring/kbuf.c     |    2 +-
 io_uring/memmap.c   |   10 +++++-----
 io_uring/memmap.h   |    2 +-
 io_uring/register.c |   12 +++++++-----
 io_uring/zcrx.c     |    2 +-
 6 files changed, 21 insertions(+), 17 deletions(-)
io_uring/io_uring.c +6 -4
@@ -2077,8 +2077,9 @@ int io_submit_sqes(struct io_ring_ctx *c
 
 static void io_rings_free(struct io_ring_ctx *ctx)
 {
-	io_free_region(ctx->user, &ctx->sq_region);
-	io_free_region(ctx->user, &ctx->ring_region);
+	/* ring memory is not charged to RLIMIT_MEMLOCK, hence no user */
+	io_free_region(NULL, &ctx->sq_region);
+	io_free_region(NULL, &ctx->ring_region);
 	ctx->rings = NULL;
 	RCU_INIT_POINTER(ctx->rings_rcu, NULL);
 	ctx->sq_sqes = NULL;
@@ -2742,7 +2743,8 @@ static __cold int io_allocate_scq_urings
 		rd.user_addr = p->cq_off.user_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx, &ctx->ring_region, &rd, IORING_OFF_CQ_RING);
+	/* ring memory is not charged to RLIMIT_MEMLOCK, hence no user */
+	ret = io_create_region(NULL, &ctx->ring_region, &rd, IORING_OFF_CQ_RING);
 	if (ret)
 		return ret;
 	ctx->rings = rings = io_region_get_ptr(&ctx->ring_region);
@@ -2756,7 +2758,7 @@ static __cold int io_allocate_scq_urings
 		rd.user_addr = p->sq_off.user_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx, &ctx->sq_region, &rd, IORING_OFF_SQES);
+	ret = io_create_region(NULL, &ctx->sq_region, &rd, IORING_OFF_SQES);
 	if (ret) {
 		io_rings_free(ctx);
 		return ret;
io_uring/kbuf.c +1 -1
@@ -675,7 +675,7 @@ int io_register_pbuf_ring(struct io_ring
 		rd.user_addr = reg.ring_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx, &bl->region, &rd, mmap_offset);
+	ret = io_create_region(ctx->user, &bl->region, &rd, mmap_offset);
 	if (ret)
 		goto fail;
 	br = io_region_get_ptr(&bl->region);
io_uring/memmap.c +5 -5
@@ -204,7 +204,7 @@ done:
 	return 0;
 }
 
-int io_create_region(struct io_ring_ctx *ctx, struct io_mapped_region *mr,
+int io_create_region(struct user_struct *user, struct io_mapped_region *mr,
 		     struct io_uring_region_desc *reg,
 		     unsigned long mmap_offset)
 {
@@ -230,8 +230,8 @@ int io_create_region(struct io_ring_ctx
 		return -EOVERFLOW;
 
 	nr_pages = reg->size >> PAGE_SHIFT;
-	if (ctx->user) {
-		ret = __io_account_mem(ctx->user, nr_pages);
+	if (user) {
+		ret = __io_account_mem(user, nr_pages);
 		if (ret)
 			return ret;
 	}
@@ -240,7 +240,7 @@ int io_create_region(struct io_ring_ctx
 	if (reg->flags & IORING_MEM_REGION_TYPE_USER)
 		ret = io_region_pin_pages(mr, reg);
 	else
-		ret = io_region_allocate_pages(mr, reg, mmap_offset, ctx->user);
+		ret = io_region_allocate_pages(mr, reg, mmap_offset, user);
 	if (ret)
 		goto out_free;
 
@@ -249,7 +249,7 @@ int io_create_region(struct io_ring_ctx
 		goto out_free;
 	return 0;
 out_free:
-	io_free_region(ctx->user, mr);
+	io_free_region(user, mr);
 	return ret;
 }
 
io_uring/memmap.h +1 -1
@@ -18,7 +18,7 @@ unsigned long io_uring_get_unmapped_area
 int io_uring_mmap(struct file *file, struct vm_area_struct *vma);
 
 void io_free_region(struct user_struct *user, struct io_mapped_region *mr);
-int io_create_region(struct io_ring_ctx *ctx, struct io_mapped_region *mr,
+int io_create_region(struct user_struct *user, struct io_mapped_region *mr,
 		     struct io_uring_region_desc *reg,
 		     unsigned long mmap_offset);
 
io_uring/register.c +7 -5
@@ -480,8 +480,9 @@ struct io_ring_ctx_rings {
 static void io_register_free_rings(struct io_ring_ctx *ctx,
 				   struct io_ring_ctx_rings *r)
 {
-	io_free_region(ctx->user, &r->sq_region);
-	io_free_region(ctx->user, &r->ring_region);
+	/* ring memory is not charged to RLIMIT_MEMLOCK, hence no user */
+	io_free_region(NULL, &r->sq_region);
+	io_free_region(NULL, &r->ring_region);
 }
 
 #define swap_old(ctx, o, n, field)		\
@@ -529,7 +530,7 @@ static int io_register_resize_rings(stru
 		rd.user_addr = p->cq_off.user_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx, &n.ring_region, &rd, IORING_OFF_CQ_RING);
+	ret = io_create_region(NULL, &n.ring_region, &rd, IORING_OFF_CQ_RING);
 	if (ret)
 		return ret;
 
@@ -559,7 +560,7 @@ static int io_register_resize_rings(stru
 		rd.user_addr = p->sq_off.user_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx, &n.sq_region, &rd, IORING_OFF_SQES);
+	ret = io_create_region(NULL, &n.sq_region, &rd, IORING_OFF_SQES);
 	if (ret) {
 		io_register_free_rings(ctx, &n);
 		return ret;
@@ -730,7 +731,8 @@ static int io_register_mem_region(struct
 	    !(ctx->flags & IORING_SETUP_R_DISABLED))
 		return -EINVAL;
 
-	ret = io_create_region(ctx, &region, &rd, IORING_MAP_OFF_PARAM_REGION);
+	ret = io_create_region(ctx->user, &region, &rd,
+			       IORING_MAP_OFF_PARAM_REGION);
 	if (ret)
 		return ret;
 	if (copy_to_user(rd_uptr, &rd, sizeof(rd))) {
io_uring/zcrx.c +1 -1
@@ -398,7 +398,7 @@ static int io_allocate_rbuf_ring(struct
 	mmap_offset = IORING_MAP_OFF_ZCRX_REGION;
 	mmap_offset += (u64)id << IORING_OFF_ZCRX_SHIFT;
 
-	ret = io_create_region(ctx, &ifq->rq_region, rd, mmap_offset);
+	ret = io_create_region(ctx->user, &ifq->rq_region, rd, mmap_offset);
 	if (ret < 0)
 		return ret;
 
author maintainer
#281 lore raw

PATCH 280/281 io_uring/kbuf: dont charge provided buffer rings to RLIMIT_MEMLOCK

In reply to Greg Kroah-Hartman

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

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

From: Jens Axboe <[email protected]>

[ Upstream commit cde56daf4b93f474dc256dbcc5205035223ae6f5 ]

Just like with the SQ and CQ rings, the provided buffer rings were also not charged against the memlock limit prior to the below mentioned commit. Restore that behavior.

Fixes ef62de3c4ad5 ("io_uring/kbuf: use region api for pbuf rings")

---
Depends on <[email protected]>

 io_uring/kbuf.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
io_uring/kbuf.c +3 -3
@@ -458,7 +458,7 @@ static int io_remove_buffers_legacy(stru
 static void io_put_bl(struct io_ring_ctx *ctx, struct io_buffer_list *bl)
 {
 	if (bl->flags & IOBL_BUF_RING)
-		io_free_region(ctx->user, &bl->region);
+		io_free_region(NULL, &bl->region);
 	else
 		io_remove_buffers_legacy(ctx, bl, -1U);
 
@@ -675,7 +675,7 @@ int io_register_pbuf_ring(struct io_ring
 		rd.user_addr = reg.ring_addr;
 		rd.flags |= IORING_MEM_REGION_TYPE_USER;
 	}
-	ret = io_create_region(ctx->user, &bl->region, &rd, mmap_offset);
+	ret = io_create_region(NULL, &bl->region, &rd, mmap_offset);
 	if (ret)
 		goto fail;
 	br = io_region_get_ptr(&bl->region);
@@ -708,7 +708,7 @@ int io_register_pbuf_ring(struct io_ring
 	if (!ret)
 		return 0;
 fail:
-	io_free_region(ctx->user, &bl->region);
+	io_free_region(NULL, &bl->region);
 	kfree(bl);
 	return ret;
 }
author maintainer
#282 lore raw

PATCH 281/281 mm/mremap: fix locked_vm leak from MREMAP_DONTUNMAP self-merge

In reply to Greg Kroah-Hartman

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

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

From: "Lorenzo Stoakes (ARM)" <[email protected]>

[ Upstream commit 838bb60dc21553e32df90f2f3bac5b905376e7aa ]

Patch series "mm/mremap: fix two issues with MREMAP_DONTUNMAP", v2.

The MREMAP_DONTUNMAP feature is highly unusual in that it permits mremap() operations that keep the original VMA in place.

Historically this has led to a lot of bugs where non-obvious interactions occur between existing mremap() operations and the original VMA.

Commit 397432cab17b ("mm/mremap: account mm->locked_vm correctly for MREMAP_DONTUNMAP") fixed an accidentally introduced bug around mm->locked_vm accounting, but this wasn't the only issue.

And thus history repeats itself, as it turns out that mm->locked_vm accounting is broken by MREMAP_DONTUNMAP yet again by two further cases, and has been broken ever since the feature was introduced.

Both relate to the fact that VMA_LOCKED_BIT is cleared on the source VMA (it has to be as all page tables are moved):

1. If an unfaulted VMA_LOCKONFAULT_BIT anonymous VMA self-merges it clears the VMA_LOCKED_BIT flag and permanently leaks mm->locked_vm pages.

2. If a partial mremap() is performed on a locked VMA there is a leak equal to the number of pages not copied.

(Both for MREMAP_DONTUNMAP operations only)

Both issues can be fixed by treating the source range as distinct from the destination range, which is the definition of what MREMAP_DONTUNMAP does so is appropriate.

In case 1, simply disallow the self-merge, keeping adjacent source and destination VMAs distinct.

In case 2, split the source range ahead of time if the VMA is mlock()'d, so accounting is always correct.

Both changes were tested locally and confirmed to fix the issues.

For the purposes of a backport, the fixes are kept distinct, a follow-up series can add self-tests.

This patch (of 2):

The MREMAP_DONTUNMAP feature is highly unusual in that it permits mremap() operations that keep the original VMA in place.

Historically this has led to a lot of bugs where non-obvious interactions occur between existing mremap() operations and the original VMA.

Fix another of these - self-merge.

Self-merge occurs when a VMA is moved in front of or behind itself and the attributes of the VMA permit such a merge.

Practically this can only happen for unfaulted anonymous VMAs due to the page offset equality requirement for merge:

                           |------------|
                           |            |
                           |            v
        |...........||-----------||...........|
        |           || unfaulted ||           |
        |...........||-----------||...........|
              ^            |
              |            |
              |------------|

This becomes problematic if the VMA is configured by the user to mlock-on-fault, i.e. the VMA_LOCKED_BIT, VMA_LOCKONFAULT_BIT VMA flags are set.

MREMAP_DONTUNMAP clears mlock flags for the source VMA and maintains them for the destination VMA.

Self-merge makes this impossible (there is only one VMA) and incorrectly clears the destination VMA's mlock flags.

This causes a leak in mm->locked_vm as clearing this flag does not decrement the counter and the VMA no longer has VMA_LOCKED_BIT set so it is not decremented on unmap.

Resolve this by simply disallowing a self-merge in this case - the source and destination VMAs are kept distinct and then are able to have distinct mlock() flags.

Update dontunmap_complete() to make the now-redundant self-merge check a VM_WARN_ON_ONCE() instead to guard against future regressions.

Also update the VMA userland tests to reflect the change.

---
 mm/mremap.c                   |    8 ++++++--
 mm/vma.c                      |   17 ++++++++++++++++-
 mm/vma.h                      |    2 +-
 tools/testing/vma/tests/vma.c |    4 ++--
 4 files changed, 25 insertions(+), 6 deletions(-)
mm/mremap.c +6 -2
@@ -1295,7 +1295,8 @@ static int copy_vma_and_data(struct vma_
 	PAGETABLE_MOVE(pmc, NULL, NULL, vrm->addr, vrm->new_addr, vrm->old_len);
 
 	new_vma = copy_vma(&vma, vrm->new_addr, vrm->new_len, new_pgoff,
-			   &pmc.need_rmap_locks);
+			   &pmc.need_rmap_locks,
+			   vrm->flags & MREMAP_DONTUNMAP);
 	if (!new_vma) {
 		vrm_uncharge(vrm);
 		*new_vma_ptr = NULL;
@@ -1355,6 +1356,9 @@ static void dontunmap_complete(struct vm
 	unsigned long old_start = vma->vm_start;
 	unsigned long old_end = vma->vm_end;
 
+	/* Self-merge is disallowed. */
+	VM_WARN_ON_ONCE(new_vma == vma);
+
 	/* We always clear VM_LOCKED[ONFAULT] on the old VMA. */
 	vm_flags_clear(vma, VM_LOCKED_MASK);
 
@@ -1362,7 +1366,7 @@ static void dontunmap_complete(struct vm
 	 * anon_vma links of the old vma is no longer needed after its page
 	 * table has been moved.
 	 */
-	if (new_vma != vma && start == old_start && end == old_end) {
+	if (start == old_start && end == old_end) {
 		const pgoff_t pgoff_unfaulted = vma->vm_start >> PAGE_SHIFT;
 
 		unlink_anon_vmas(vma);
mm/vma.c +16 -1
@@ -1863,7 +1863,7 @@ static int vma_link(struct mm_struct *mm
  */
 struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
 	unsigned long addr, unsigned long len, pgoff_t pgoff,
-	bool *need_rmap_locks)
+	bool *need_rmap_locks, bool keep_source)
 {
 	struct vm_area_struct *vma = *vmap;
 	unsigned long vma_start = vma->vm_start;
@@ -1896,6 +1896,21 @@ struct vm_area_struct *copy_vma(struct v
 
 	vmg.pgoff = pgoff;
 	vmg.next = vma_iter_next_rewind(&vmi, NULL);
+
+	/*
+	 * If the original VMA is kept (MREMAP_DONTUNMAP), the source and
+	 * destination VMA must be treated distinctly.
+	 *
+	 * A merge violates this, so in this case disallow a self-merge.
+	 */
+	if (!faulted_in_anon_vma && keep_source) {
+		if (vmg.prev == vma)
+			vmg.prev = NULL;
+		if (vmg.next == vma)
+			vmg.next = NULL;
+		faulted_in_anon_vma = true;
+	}
+
 	new_vma = vma_merge_copied_range(&vmg);
 
 	if (new_vma) {
mm/vma.h +1 -1
@@ -449,7 +449,7 @@ void unlink_file_vma_batch_add(struct un
 
 struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
 	unsigned long addr, unsigned long len, pgoff_t pgoff,
-	bool *need_rmap_locks);
+	bool *need_rmap_locks, bool keep_source);
 
 struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma);
 
tools/testing/vma/tests/vma.c +2 -2
@@ -38,7 +38,7 @@ static bool test_copy_vma(void)
 	/* Move backwards and do not merge. */
 
 	vma = alloc_and_link_vma(&mm, 0x3000, 0x5000, 3, vma_flags);
-	vma_new = copy_vma(&vma, 0, 0x2000, 0, &need_locks);
+	vma_new = copy_vma(&vma, 0, 0x2000, 0, &need_locks, false);
 	ASSERT_NE(vma_new, vma);
 	ASSERT_EQ(vma_new->vm_start, 0);
 	ASSERT_EQ(vma_new->vm_end, 0x2000);
@@ -51,7 +51,7 @@ static bool test_copy_vma(void)
 
 	vma = alloc_and_link_vma(&mm, 0, 0x2000, 0, vma_flags);
 	vma_next = alloc_and_link_vma(&mm, 0x6000, 0x8000, 6, vma_flags);
-	vma_new = copy_vma(&vma, 0x4000, 0x2000, 4, &need_locks);
+	vma_new = copy_vma(&vma, 0x4000, 0x2000, 4, &need_locks, false);
 	vma_assert_attached(vma_new);
 
 	ASSERT_EQ(vma_new, vma_next);
#283 lore raw
In reply to Greg Kroah-Hartman

Hi!

Quoted 7 lines

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 15 Oct 2026 11:28:22 +0000. Anything received after that time might be too late.

There's build failure on risc-v:

https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/jobs/17139155257
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/pipelines/2942353460

Best regards,
Pavel

arch/riscv/kernel/cpufeature.c: In function 'riscv_clear_hypervisor_csr':
400
13:14:38
arch/riscv/kernel/cpufeature.c:1189:43: error: 'RISCV_ISA_EXT_H' undeclared (first use in this function); did you mean 'RISCV_ISA_EXT_h'? 401
13:14:38
1189 | if (!riscv_has_extension_unlikely(RISCV_ISA_EXT_H))
402
13:14:38

      |                                           ^~~~~~~~~~~~~~~

403
13:14:38
| RISCV_ISA_EXT_h
404
13:14:38
arch/riscv/kernel/cpufeature.c:1189:43: note: each undeclared identifier is reported only once for each function it appears in 405
13:14:38
CC io_uring/kbuf.o
406
13:14:38
make[4]: *** [scripts/Makefile.build:289: arch/riscv/kernel/cpufeature.o] Error 1
407
13:14:38
make[3]: *** [scripts/Makefile.build:550: arch/riscv/kernel] Error 2
408
13:14:38
CC ipc/sem.o
409
13:14:38
make[3]: *** Waiting for unfinished jobs....
410
13:14:38
CC kernel/printk/printk.o
411
13:14:39

Quoted 1,156 lines

The whole patch series can be found in one patch at:

	https://www.kernel.org/pub/linux/kernel/v7.x/stable-review/patch-7.2.11-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-7.2.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>

    Linux 7.2.11-rc1

Lorenzo Stoakes (ARM) <[email protected]>
mm/mremap: fix locked_vm leak from MREMAP_DONTUNMAP self-merge

Jens Axboe <[email protected]>
io_uring/kbuf: don't charge provided buffer rings to RLIMIT_MEMLOCK

Hengyu Liang <[email protected]>
io_uring: do not charge the SQ/CQ rings to RLIMIT_MEMLOCK

Ali Ahmet Memis <[email protected]>
io_uring/memmap: account the pages a compound region really uses

Adrian Betschart <[email protected]>
drm/amd/display: Don't replace a sink mode that shares the native totals

Kuba Piecuch <[email protected]>
sched_ext: Call ops.dequeue() when a task arrives on a remote local DSQ

Kuba Piecuch <[email protected]>
sched_ext: Generate qseq from a per-task counter

Maíra Canal <[email protected]>
drm/vc4: Fix binner slot allocation failing on an idle GPU

Maíra Canal <[email protected]>
drm/vc4: Disable the V3D interrupt across runtime suspend

Ilia Gavrilov <[email protected]>
vsock: Fix memory leak in vmci_transport_recv_dgram_cb()

Fernando Fernandez Mancera <[email protected]>
net: openvswitch: validate transport header presence in set_ipv6_addr

Vadim Fedorenko <[email protected]>
ptp: ocp: fix PCIe delay estimation calculation

Willem de Bruijn <[email protected]>
net/packet: call packet_parse_headers after virtio_net_hdr_to_skb

Petr Machata <[email protected]>
mlxsw: spectrum_flower: Fix port range register leak in tmplt_create()

Li RongQing <[email protected]>
net/mlx5e: Order ICOSQ cc update after CQ doorbell

Tianyi Gao <[email protected]>
veth: fix peer NETDEV_XDP_ACT_NDO_XMIT after GRO is toggled while down

Gyeyoung Baek <[email protected]>
drm/imagination: Fix reference and vm_bo handling in remap()

Haishuang Yan <[email protected]>
bareudp: set the inner protocol to the protocol of the packet

Eric Dumazet <[email protected]>
flow_dissector: avoid u16 truncation of hlen in bpf_flow_dissect()

Pavan Chebbi <[email protected]>
bnxt_en: Re-write the BARs following any type of PCIe errors

Michael Chan <[email protected]>
bnxt_en: Fix driver init in kdump kernel

Michael Chan <[email protected]>
bnxt_en: Add bnxt_clear_bars() helper

Zongmin Zhou <[email protected]>
riscv: ptrace: Zero-initialize regset buffers before copyin

Leo Yu-Chi Liang <[email protected]>
riscv: fix NR_CPUS range leaking 64-bit default onto 32-bit builds

Richard Fitzgerald <[email protected]>

    ASoC: sdw_utils: Switch CS35L56/57/62/63 to use OT25 DAI

Stefan Binding <[email protected]>
ASoC: sdw_utils: Add codec info for CS35L62

Haishuang Yan <[email protected]>
pfcp: make sure the SEID is linear before reading it

Justin Chen <[email protected]>
net: bcmgenet: if UMAC was suspended in SW_RESET, restore it to SW_RESET

Or Har-Toov <[email protected]>
Revert "net/mlx5: E-Switch, preserve max tx speed on vport state modification"

Victor Nogueira <[email protected]>
net/sched: cls_route: reject change with no routing attribute

Haishuang Yan <[email protected]>
devlink: fix devlink_rel reference leak when notify work is pending

Quentin Freimanis <[email protected]>
net: sparx5: start the TOD counters on non-PTP lan969x variants

Eric Dumazet <[email protected]>
net: always dissect GSO packets in __virtio_net_hdr_to_skb()

Eric Dumazet <[email protected]>

    flow_dissector: avoid u16 truncation of skb->len when computing thoff

Waiman Long <[email protected]>
cgroup/cpuset: Call is_in_v2_mode() after acquiring cpuset_mutex in cpuset_handle_hotplug()

Han Gao <[email protected]>
spi: sg2044-nor: Honor SPI clock limits

Han Gao <[email protected]>
spi: sg2044-nor: Return transfer errors

Marek Szyprowski <[email protected]>
ASoC: samsung: i2s: enable op_clk in probe to balance runtime PM

Alvin Šipraga <[email protected]>
ASoC: adau1372: fix invalid default state of output ASRC and DAC muxes

Alvin Šipraga <[email protected]>
ASoC: adau1372: allow sleepy powerdown GPIOs

Yingying Tang <[email protected]>
Revert "wifi: ath12k: add panic handler"

Mallesh Koujalagi <[email protected]>
drm/xe/sysctrl: Fix mailbox header handling

Devin Wittmayer <[email protected]>
wifi: mt76: mt792x: pick the SAR table layout from the table itself

Junjie Cao <[email protected]>

    wifi: mt76: mt792x: treat 0xff ACPI SAR entries as no limit

Devin Wittmayer <[email protected]>
wifi: mt76: mt7925: don't put the band auto marker in TGID

Nicolas Cavallari <[email protected]>
wifi: mt76: mt7915: disable rx napi when removing device

Tao Gong <[email protected]>

    wifi: mt76: mt7996: fix struct mt7996_mcu_wed_rro_ba_delete_event layout

Aaron Ma <[email protected]>
wifi: mt76: mt7925: restore the legacy BSS after MLO teardown

Felix Fietkau <[email protected]>
wifi: mt76: use ALTX queue for packets to disassociated stations

Felix Fietkau <[email protected]>
wifi: mt76: account non-AQL frames per peer rather than per link

Felix Fietkau <[email protected]>
wifi: mt76: add PS buffering support for HW-managed TIM drivers

Felix Fietkau <[email protected]>

    wifi: mac80211: add ieee80211_txq_aql_pending()

Felix Fietkau <[email protected]>
wifi: mac80211: add AQL support for multicast packets

Felix Fietkau <[email protected]>
wifi: mt76: mt7996: take over connection monitoring

Pengpeng Hou <[email protected]>
scsi: ufs: mediatek: Handle mPHY power-on failures

Jakub Kicinski <[email protected]>
Revert "net: stmmac: propagate PTP addend and system time programming errors"

Aurelien Jarno <[email protected]>
riscv: vector: Fix output operands in context save

Troy Mitchell <[email protected]>
riscv: vector: Fix data pointer constraints in context save/restore

Leto Liu (刘涛) <[email protected]>
net: airoha: Add retry mechanism to airoha_qdma_set_trtcm_param()

Ovidiu Panait <[email protected]>
net: stmmac: Disable S-Tag processing on dwmac4

Ovidiu Panait <[email protected]>
net: stmmac: Do not advertise S-VLAN stripping when it is disabled

Or Har-Toov <[email protected]>
net/mlx5: Lag, split aggregate speed into oper and max helpers

Jakub Kicinski <[email protected]>
net: make dev_xdp_sb_prog_count() see programs attached through a link

Tvrtko Ursulin <[email protected]>

    drm/xe: Do not emit Wa_16010904313 twice

Alan Previn <[email protected]>
drm/xe/mmio: Fix xe_mmio_wait32() to honor delay/sleep maximums

Filipe Manana <[email protected]>
btrfs: fix lost error return value in btrfs_listxattr()

Filipe Manana <[email protected]>
btrfs: fix xattr replace when multiple xattrs are packed in the same item

Yang Xiuwei <[email protected]>
btrfs: don't stash io_uring encoded data across -EAGAIN

Yang Xiuwei <[email protected]>
btrfs: unlock inode and extent in caller when io_uring read extent fails

Yang Xiuwei <[email protected]>
btrfs: free iov when btrfs_uring_read_extent() fails

Yang Xiuwei <[email protected]>
btrfs: always return -EIOCBQUEUED after btrfs_uring_read_extent_endio

Shin'ichiro Kawasaki <[email protected]>
zloop: zero out only the unread tail of short reads

Haibo Chen <[email protected]>
spi: spi-nxp-fspi: exit stop mode before waiting for DLL lock

Fuad Tabba <[email protected]>
arm64/boot: Don't set PMUv3p9 FGT2 bits without PMUv3

Sang-Hoon Choi <[email protected]>
nvmet: use the local P2P device on metadata allocation failure

Guixin Liu <[email protected]>
nvmet: return Invalid Field for invalid NSIDs feature 82h

Bryan Fraschetti <[email protected]>
ice: Restore Ordered MMIO Writes for Tx Doorbells

Jakub Kicinski <[email protected]>
bonding: fix the program leak when XDP is replaced

Mahantesh Salimath <[email protected]>
tee: optee: ffa: support shared memory offsets on large-page kernels

Lorenzo Bianconi <[email protected]>
net: stmmac: propagate PTP addend and system time programming errors

Felix Fietkau <[email protected]>
wifi: mt76: mt7996: program a link again if the driver holds it

Sang-Hoon Choi <[email protected]>
cxgb4/ch_ktls: disable softirqs around tid_list erases

Shashank Mohan Jain <[email protected]>
lib/dim: fix 32-bit overflow in dim_calc_stats() rates

Omar Ramadan <[email protected]>
amt: send the relay's General Query directly from the receive path

Jamal Hadi Salim <[email protected]>
net/sched: em_text: reject unterminated algo before autoload

Maíra Canal <[email protected]>
drm/vc4: Use kvmalloc_objs() for the BO cache size list

Maíra Canal <[email protected]>
drm/vc4: Free the BO cache size list on teardown

Myeonghun Pak <[email protected]>
drm/aspeed: Balance the display clock enable on teardown

Sang-Hoon Choi <[email protected]>
gpio: exar: initialize the ID before registering its cleanup

Oleg Keri <[email protected]>
drm/dp: don't mark the AUX backlight enabled when enabling failed

Waiman Long <[email protected]>
cgroup/cpuset: Don't access cpuset_cgrp_subsys.root in is_in_v2_mode()

Cristian Ciocaltea <[email protected]>
drm/bridge: Fix unlocked list access in drm_bridge_attach()

Cristian Ciocaltea <[email protected]>
drm/bridge: Fix unlocked list_del in drm_bridge_add()

Sai Teja Aluvala <[email protected]>
Bluetooth: btintel_pcie: Add shared HW reset for clean start

Ravindra <[email protected]>
Bluetooth: btintel_pcie: fix TX descriptor bounds check

Naomi Chu <[email protected]>
scsi: ufs: core: Hold a clock reference across the probe

Christian Brauner <[email protected]>
fs: don't let a migrating task hide its reference from do_umount()

Christian Brauner <[email protected]>
mount: refuse MOVE_MOUNT_SET_GROUP on an unbindable mount

Peng Fan <[email protected]>
iommu/dma: skip swiotlb bounce for DMA_ATTR_MMIO in iommu_dma_map_phys

Vincent Jardin <[email protected]>
arm64: dts: lx2160a: fix the iic5 spi3 pinmux offset and value

Vincent Jardin <[email protected]>
arm64: dts: lx2160a: fix IIC1 pinmux submask rejected by pinctrl-single

Vincent Jardin <[email protected]>
arm64: dts: lx2160a: fix incorrect pinmux

Taniya Das <[email protected]>
clk: qcom: gpucc-kaanapali: Mark the GPU CX GDSC as votable

Taniya Das <[email protected]>
clk: qcom: gpucc-glymur: Mark the GPU CX GDSC as votable

Luca Weiss <[email protected]>
clk: qcom: gcc-kaanapali: Fix always-enabling PCIE_RSCC clocks

Luca Weiss <[email protected]>
clk: qcom: gcc-eliza: Fix always-enabling PCIE_RSCC clocks

Darrick J. Wong <[email protected]>
xfs: fix exchange-range-to-eof file size exchange

Norbert Szetei <[email protected]>
xfs: stop exchanging reflink flags when exchanging mappings

Christian Brauner <[email protected]>
namespace: keep the lock on a mount that a propagated copy is moved beneath

Christian Brauner <[email protected]>
namespace: handle mount locking for automounts correctly

Christian Brauner <[email protected]>
namespace: never expire a locked mount

Christian Brauner <[email protected]>
nullfs: don't update the access time

Christian Brauner <[email protected]>
namespace: refuse an automount below a mount that is in no namespace

Christian Brauner <[email protected]>
fcntl: refuse F_SET_RW_HINT on an immutable inode

Christian Brauner <[email protected]>
namei: don't reveal overmounted entries in refwalk

Christian Brauner <[email protected]>
namespace: unhash a dentry before detaching the mounts on it

Christian Brauner <[email protected]>
namespace: don't let a pseudo dentry become the root of a mount

Christian Brauner <[email protected]>
unshare: don't drop active namespace references that were never taken

Christian Brauner <[email protected]>
dcache: don't put a mountpoint on a dentry that's being removed

Christian Brauner <[email protected]>
namespace: check the mounts before reading their parents in pivot_root()

Christian Brauner <[email protected]>
namespace: remove the fsnotify marks of a mount namespace in process context

Christian Brauner <[email protected]>
namespace: don't reconfigure internal superblocks via remount and umount

Christian Brauner <[email protected]>
namespace: look at the topmost mount for a mount namespace file

Christian Brauner <[email protected]>
namespace: keep covered mounts covered in OPEN_TREE_NAMESPACE

Christian Brauner <[email protected]>
namespace: check a recursive bind mount for mount namespace loops

Christian Brauner <[email protected]>
namespace: check a submount for references right before unmounting it

Christian Brauner <[email protected]>
namespace: queue a mount only once for mount notifications

Christian Brauner <[email protected]>
namespace: check the target before walking it in do_mount_setattr()

Christian Brauner <[email protected]>
fs: refuse fspick() on internal superblocks

Christian Brauner <[email protected]>
namespace: don't copy an unmounted mount tree

Christian Brauner <[email protected]>
namespace: don't inherit MNT_UMOUNT in clone_mnt()

Christian Brauner <[email protected]>
statmount: read the parent of an unmounted mount under mount_lock

Christian Brauner <[email protected]>

    namespace: reset the old parent's ->overmount in mnt_change_mountpoint()

Christian Brauner <[email protected]>
fs: don't silently unmount busy mounts

Christian Brauner <[email protected]>
mount: keep a copied mount unbindable

Leo Li <[email protected]>
drm/amd/display: disable self-refresh on tearing flips

Leo Li <[email protected]>
drm/amd/display: Fix direct scanout alpha on some DRM_FORMATs

Jesse Zhang <[email protected]>
drm/amdgpu/userq: return the memdup_user() error for the user MQD

Jesse Zhang <[email protected]>
drm/amdgpu/userq: only accept doorbell BOs as queue doorbell

Mikhail Gavrilov <[email protected]>
drm/amdgpu: copy debugfs register data outside the GRBM/SRBM locks

Alex Deucher <[email protected]>
drm/amdgpu: make Mac FB workaround generic

Vitaly Prosyak <[email protected]>
drm/amdgpu: serialize vblank counter reads against GPU reset

Haojie Li <[email protected]>
drm/amdkfd: fix dma_buf reference leak in get_dmabuf_info

Saleel Kudchadker <[email protected]>
drm/amdkfd: align SDMA doorbell base for shader doorbell writes

Felix Gu <[email protected]>
drm/bridge: th1520-dw-hdmi: Fix remove() callback

Felix Gu <[email protected]>
drm/bridge: th1520-dw-hdmi: Fix error check on dw_hdmi_probe() return value

Thomas Hellström <[email protected]>
drm/xe: Fix stale pinned_link entry when fb-pin performs the final unpin

Thomas Hellström <[email protected]>
drm/xe: Fix shrinker accounting double-subtraction on nested external pins

Fan Wu <[email protected]>
drm/xe/i2c: cancel the client work on remove

Zack Rusin <[email protected]>
drm/vmwgfx: validate pitch coming from userspace

Wentao Liang <[email protected]>
drm/vc4: Fix firmware reference leak in vc4_drm_bind()

Fan Wu <[email protected]>
drm/vc4: drain the hangcheck timer and works on V3D unbind

Osama Abdelkader <[email protected]>
drm/panthor: validate userspace queue count against initialized firmware slot count

Gyeyoung Baek <[email protected]>
drm/imagination: Size page table preallocation by device address

Krzysztof Karas <[email protected]>
drm/i915/gt: Unmask interrupts only when ACTIVE is true

Krzysztof Karas <[email protected]>
drm/i915/gem: Prevent overstepping exec array boundary

Sajal Gupta <[email protected]>
drm/gud: don't keep a connector without a CRTC as connector_state

Nguyen Ngoc Thang <[email protected]>
drm/fb-helper: defer setup when fbdev_probe() fails, not just on -EAGAIN

Palla Raghunath <[email protected]>
Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown

Mikhail Gavrilov <[email protected]>
Bluetooth: RFCOMM: connect the session socket without rfcomm_mutex

Maxim Skokov <[email protected]>
Bluetooth: RFCOMM: free the skb when the DLC has no owner

Aldo Ariel Panzardo <[email protected]>
Bluetooth: SCO: serialise sco_conn lifetime against sco_recv_scodata()

Iaroslav Voitovych <[email protected]>
Bluetooth: MGMT: Fix status of pending commands flushed on power off

Chengfeng Ye <[email protected]>
Bluetooth: ISO: Serialize concurrent connect calls

Chengfeng Ye <[email protected]>
Bluetooth: ISO: Reject concurrent BIS listener setup

Chengfeng Ye <[email protected]>
Bluetooth: hci_sync: Fix command skb lifetime during scan setup

Chengfeng Ye <[email protected]>
Bluetooth: hci_sock: Serialize dead-device detachment

Runyu Xiao <[email protected]>
Bluetooth: btintel_pcie: use managed IRQ teardown

Chen Pei <[email protected]>
riscv: ptrace: reject CFI regset access when extensions are absent

Wei-Jie Hung <[email protected]>
riscv: patch: fix handling of bpf-jit execmem addresses

Shao Mingyin <[email protected]>
riscv: lib: Fix ZBB strnlen wrap-around regression on huge counts

Zongmin Zhou <[email protected]>
riscv: hwprobe: use _BITULL() rather than BIT() in MIPS vendor uapi header

Ziyi Guo <[email protected]>
riscv: futex: untag the user pointer before the atomic access

Karl Mehltretter <[email protected]>
riscv: fix load_unaligned_zeropad() fixup for RV32

Zongmin Zhou <[email protected]>
riscv: errata: select RISCV_ALTERNATIVE_EARLY for THEAD GHOSTWRITE

Ziyi Guo <[email protected]>
riscv: entry: gate shadow call stack reload on sstatus.SPP, not tp

Stanley Jhu <[email protected]>
scsi: ufs: core: Decouple CQ sweep from request iterator in MCQ

Stanley Jhu <[email protected]>
scsi: ufs: core: Avoid unsafe MMIO reads in ufshcd_mcq_compl_all_cqes_lock()

Runyu Xiao <[email protected]>
scsi: qedi: Initialize callback state before registration

Ahmed Abdelhaleem Ahmed <[email protected]>
scsi: ch: Do not keep references to data transfer element devices

Shawn Lin <[email protected]>
pmdomain: rockchip: propagate subdomain add errors

Shawn Lin <[email protected]>
pmdomain: rockchip: fix clock leak on domain probe failure

Shawn Lin <[email protected]>
pmdomain: rockchip: don't ignore clock lookup errors on attach

Ming Qian <[email protected]>
pmdomain: imx8m-blk-ctrl: Serialize power on/off across sibling domains

Ridham Khurana <[email protected]>
regulator: tps6594-regulator: Fix n_linear_ranges for TPS65224 BUCK2-4

Alexey Charkov <[email protected]>
regulator: of: fill in supply names in of_regulator_bulk_get_all()

Abhishek Ojha <[email protected]>
regulator: ltc3676: don't read the write-only HRST and CLIRQ registers

Alexey Charkov <[email protected]>
power: sequencing: pcie-m2: Fix leaking array from of_regulator_bulk_get_all()

Shao-Fu Chen <[email protected]>
optee: register TEE devices only once fully initialized

Denis V. Lunev <[email protected]>
openvswitch: fix soft lockup in the netlink flow dump

Karl Bonde Torp <[email protected]>
nvme: fix swapped ZRASF zone state values for full and read only

Weiming Shi <[email protected]>
net: team: free skb when broadcast has no txable port

Weiming Shi <[email protected]>
net: team: stop reusing skb after queue override

Suraj Gupta <[email protected]>
net: xilinx: axienet: Free outstanding DMA buffers on dmaengine stop

Fredrik Nyberg <[email protected]>
net: usb: ax88179_178a: fix rx frame length for non-last packets

Daniel Machon <[email protected]>
net: sparx5: free the matchall entry on destroy

Josef Bacik <[email protected]>
net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()

Sebastien Royen <[email protected]>
net: dsa: microchip: fix KSZ8765 fiber detection

Zixuan Chai <[email protected]>
net: bridge: avoid recursive multicast port cleanup

Chengfeng Ye <[email protected]>
net/smc: protect clcsock lifetime in smc_getname

Quchaosheng <[email protected]>
net/packet: guard the ll header push in packet_rcv_spkt()

Guangshuo Li <[email protected]>
mmc: sdhci-sprd: disable runtime PM on remove

Yibo Tan <[email protected]>
mmc: mtk-sd: Cancel request timeout work on remove

Guangshuo Li <[email protected]>
mmc: cavium-thunderx: destroy slot platform devices on remove

Guangshuo Li <[email protected]>
mmc: cavium-octeon: destroy slot platform devices on remove

Mikulas Patocka <[email protected]>
dm: fix reading free memory in do_resume

Ma Xinmeng <[email protected]>
dm-snap: reject the transient exception store for snapshot-merge

Ben Cressey <[email protected]>
dm-integrity: fix buffer overflow in inline mode with large tag size

Ben Cressey <[email protected]>
dm-crypt: reject the lmk IV mode with AEAD ciphers

Mikhail Gavrilov <[email protected]>
mm: don't schedule deferred kernel page table freeing while booting

Lorenzo Stoakes (ARM) <[email protected]>
mm/mremap: fix locked_vm leak by splitting VMA for MREMAP_DONTUNMAP

Nguyen Ngoc Thang <[email protected]>
memstick: rtsx_usb_ms: complete requests after eject instead of dropping them

Raj Ojha <[email protected]>
memstick: core: wait for request completion before freeing card

성병찬 <[email protected]>
KEYS: Fix add_key() race with keyring restriction

Karl Mehltretter <[email protected]>
keys: finalize persistent keyring timeout after link attempt

Daehyeon Ko <[email protected]>
ip6_gre: remove obsolete ERSPAN PMTU update

Natasha Klaus <[email protected]>
io_uring/net: populate CONNECT filter fields for 24-byte sockaddr_in6

Eugene Gvozdetsky <[email protected]>
io_uring/register: don't exempt disabled rings from task restrictions

Tristan Madani <[email protected]>
ice: fix metadata_dst refcount handling on representor teardown

Xuanqiang Luo <[email protected]>
ice: fix use-after-free in dynamic port cleanup

Mingming Cao <[email protected]>
ibmveth: fix TX LTB and filter unwind on open-fail

Mingming Cao <[email protected]>
ibmveth: h_free logical LAN on open-fail after register

Joshua Washington <[email protected]>
gve: fix XSK buffer leak on error descriptor

Joshua Washington <[email protected]>
gve: fix XSK buffer leak when rings are stopped

Joshua Washington <[email protected]>
gve: fix napi_disable deadlock when attempting to disable XSK pools

Jose Ignacio Tornos Martinez <[email protected]>
iavf: send MAC change request synchronously

Ridham Khurana <[email protected]>
gpio: xilinx: fix runtime PM leak on request error path

Fan Wu <[email protected]>
gpio: mpsse: fix race when arming the IRQ poll worker

Eric Biggers <[email protected]>
fsverity: RCU-delay the freeing of struct fsverity_info

Vishal Badole <[email protected]>
EDAC/amd64: Mask UMC chip select to the four implemented selects

Tony Nguyen <[email protected]>
e1000e: add system to disable K1 list

Carlos Llamas <[email protected]>
selftests/mm: cleanup -Wformat issues in hugetlb-mmap

Hui Peng <[email protected]>
sctp: copy zeroed stats to user in sctp_getsockopt_pr_streamstatus() when !streamoute

Stephen Smalley <[email protected]>
selinux: preserve NATIVE_LABELS on already-initialized sb in set_mnt_opts

Christian Göttsche <[email protected]>
selinux: fix data race on AVC latest_notif

Yong-Xuan Wang <[email protected]>
RISC-V: Clear HSTATUS.HU on CPU initialization

Johannes Berg <[email protected]>
Revert "wifi: libertas: reject short monitor TX frames"

Chengfeng Ye <[email protected]>
tipc: hold a reference to nodes found by link name

Yuqi Xu <[email protected]>
tipc: destroy topsrv workqueues before closing connections

Daehyeon Ko <[email protected]>
tcp: reject net_iov in zerocopy receive mapping hints

Marek Szyprowski <[email protected]>
swiotlb: fix default_swiotlb_limit() for non-growable default pool

Sabrina Dubroca <[email protected]>
strparser: make sure __strp_recv isn't running before tearing down the parser

Georgiy Osokin <[email protected]>
tee: shm: reject zero-sized allocations in tee_dyn_shm_alloc_helper()

Josef Bacik <[email protected]>
xen/netfront: don't leak the skb when xennet_fill_frags() fails

Borislav Petkov (AMD) <[email protected]>

    x86/CPU/AMD: Fix AMD TLBI Erratum #1718

Pavankumar Kondeti <[email protected]>
workqueue: Fix NULL current_pwq deref in chained work check

Jason A. Donenfeld <[email protected]>
wireguard: noise: reject response consumption after intermediate initiation

Ramses de Norre <[email protected]>
wireguard: queueing: preserve tstamp_type when encapsulating packet

Lu Huang <[email protected]>
wifi: mt76: mt7996: fix uninitialized buf read in mt7996_variant_fem_init()

Cristian Papa <[email protected]>
wifi: mt76: mt7603: initialize global station WCID

Michele Dionisio <[email protected]>
wifi: brcmfmac: fix P2P device removal race in brcmf_detach()

Daehyeon Ko <[email protected]>
vsock/virtio: account only unread bytes in read_skb()

Ji-Ze Hong (Peter Hong) <[email protected]>

    usb: f81604: fix struct f81604_int_data size mismatch

Palla Raghunath <[email protected]>
dm ioctl: don't let data_start run past the buffer

Daehyeon Ko <[email protected]>
cipso: adjust cached option offsets when removing CIPSO

Waiman Long <[email protected]>
cgroup/cpuset: Handle cpu hotplug race in guarantee_active_cpus()

Oliver Hartkopp <[email protected]>
can: fix unique skb identifier regression under RPS

zjamg <[email protected]>
can: dev: init_can_skb(): restore skb header initialization

Wentao Liang <[email protected]>
btrfs: scrub: fix local_root reference leak in scrub_print_warning_inode()

Hengyu Liang <[email protected]>
ata: libata-scsi: do not lose CHECK CONDITION for failed ATAPI commands

Michael Garland <[email protected]>
ASoC: amd: yc: Add DMI quirk for Acer Aspire Go 15 (AG15-21P)

Karl Mehltretter <[email protected]>
arm64: irq: exclude the softirq stack switch from KCOV

Mohamed Yassine Jebabli <[email protected]>
ALSA: hda/tas2781: Accept V1 calibration data without CRC

Harin Lee <[email protected]>
ALSA: ctxfi: Fix memory leakage when clearing DAO input mappers

Krzysztof Furman <[email protected]>
Input: xpad - add support for Corsair Novablade Pro

Bihaan Sen <[email protected]>
Input: xpad - add support for 8BitDo Pro 2 Wired Controller for Xbox

Haotian Zhang <[email protected]>
Input: ati_remote2 - fix type confusion in device attribute handlers

Daehyeon Ko <[email protected]>
ipv6: do not warn on route notification size race

Daehyeon Ko <[email protected]>
ipv4: do not warn on route notification size race

Daehyeon Ko <[email protected]>
ipv4: stop route notification sizing when nexthop group shrinks

Daehyeon Ko <[email protected]>
ipv4: stop exception dump when nexthop group shrinks

Daehyeon Ko <[email protected]>
ipv4: stop PMTU walk when nexthop group shrinks

Alice Ryhl <[email protected]>
rust_binder: reschedule node refcount update on thread exit

Michael S. Tsirkin <[email protected]>
ipv4: validate checksum_start before completing checksum

Ido Schimmel <[email protected]>
ipv6: udp: Create exceptions before socket matching

Ido Schimmel <[email protected]>
ipv4: udp: Create exceptions before socket matching

Ido Schimmel <[email protected]>
ipv6: Fix redirect exception creation for UDP/RAW sockets

Jerome Tollet <[email protected]>
net/mlx5e: Prevent stale XSK buffer release on MPWQE refill retry

Jerome Tollet <[email protected]>
net/mlx5e: Prevent stale XSK buffer release on refill retry

Matthew Wilcox (Oracle) <[email protected]>
fs: Free any excess xarray nodes in clear_inode()

Eric Dumazet <[email protected]>
bnxt_en: fix DMA mapping length for padded small packets

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

Diffstat:

 Documentation/networking/strparser.rst             |   2 +-
 Makefile                                           |   4 +-
 arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi     |  19 +-
 arch/arm64/include/asm/el2_setup.h                 |   5 +-
 arch/arm64/kernel/Makefile                         |   3 +
 arch/riscv/Kconfig                                 |   5 +-
 arch/riscv/Kconfig.errata                          |   1 +
 arch/riscv/include/asm/cpufeature.h                |   2 +
 arch/riscv/include/asm/futex.h                     |   2 +
 arch/riscv/include/asm/scs.h                       |  17 +-
 arch/riscv/include/asm/vector.h                    |   8 +-
 arch/riscv/include/uapi/asm/vendor/mips.h          |   4 +-
 arch/riscv/kernel/cpufeature.c                     |  12 +
 arch/riscv/kernel/entry.S                          |   2 +-
 arch/riscv/kernel/patch.c                          |   2 +-
 arch/riscv/kernel/ptrace.c                         |   8 +
 arch/riscv/kernel/setup.c                          |   2 +
 arch/riscv/kernel/smpboot.c                        |   2 +
 arch/riscv/kernel/suspend.c                        |   2 +
 arch/riscv/lib/strnlen.S                           |  20 +-
 arch/riscv/mm/extable.c                            |   4 +-
 arch/um/drivers/vector_transports.c                |   1 +
 arch/x86/include/asm/cpufeatures.h                 |   3 +
 arch/x86/include/asm/tlb.h                         |   6 +
 arch/x86/kernel/cpu/amd.c                          |   4 +
 drivers/android/binder/node.rs                     |  20 +-
 drivers/android/binder/node/wrapper.rs             |  34 ++-
 drivers/ata/libata-scsi.c                          |  13 +-
 drivers/block/zloop.c                              |  31 ++-
 drivers/bluetooth/btintel_pcie.c                   |  17 +-
 drivers/clk/qcom/gcc-eliza.c                       |   6 +-
 drivers/clk/qcom/gcc-kaanapali.c                   |   6 +-
 drivers/clk/qcom/gpucc-glymur.c                    |   2 +-
 drivers/clk/qcom/gpucc-kaanapali.c                 |   2 +-
 drivers/edac/amd64_edac.c                          |   4 +-
 drivers/gpio/gpio-exar.c                           |   2 +-
 drivers/gpio/gpio-mpsse.c                          |  24 +-
 drivers/gpio/gpio-xilinx.c                         |   9 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c         |   8 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c        |  77 ++++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c            |  17 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c            |   5 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c          |  13 +-
 drivers/gpu/drm/amd/amdgpu/mes_userqueue.c         |   9 +-
 .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c  |  32 ++-
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h              |   7 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  26 ++-
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c    |  20 +-
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c            |   5 +-
 drivers/gpu/drm/bridge/th1520-dw-hdmi.c            |   8 +-
 drivers/gpu/drm/display/drm_dp_helper.c            |   4 +-
 drivers/gpu/drm/drm_bridge.c                       |   8 +-
 drivers/gpu/drm/drm_fb_helper.c                    |   6 +-
 drivers/gpu/drm/gud/gud_pipe.c                     |   1 +
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c     |   2 +-
 drivers/gpu/drm/i915/gt/intel_rps.c                |   3 +-
 drivers/gpu/drm/imagination/pvr_mmu.c              |  25 +-
 drivers/gpu/drm/imagination/pvr_vm.c               |   8 +-
 drivers/gpu/drm/panthor/panthor_sched.c            |   3 +
 drivers/gpu/drm/vc4/vc4_bo.c                       |   5 +-
 drivers/gpu/drm/vc4/vc4_drv.c                      |   5 +-
 drivers/gpu/drm/vc4/vc4_drv.h                      |   2 +-
 drivers/gpu/drm/vc4/vc4_gem.c                      |   8 +-
 drivers/gpu/drm/vc4/vc4_irq.c                      |  24 +-
 drivers/gpu/drm/vc4/vc4_v3d.c                      |  65 +++---
 drivers/gpu/drm/vc4/vc4_validate.c                 |   2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c       |  26 ++-
 drivers/gpu/drm/xe/display/xe_fb_pin.c             |   6 +-
 drivers/gpu/drm/xe/xe_bo.c                         | 139 ++++++++---
 drivers/gpu/drm/xe/xe_bo.h                         |   2 +
 drivers/gpu/drm/xe/xe_i2c.c                        |   5 +-
 drivers/gpu/drm/xe/xe_lrc.c                        |  38 +--
 drivers/gpu/drm/xe/xe_mmio.c                       |   5 +-
 drivers/gpu/drm/xe/xe_sysctrl_mailbox.c            |  16 +-
 drivers/input/joystick/xpad.c                      |   4 +
 drivers/input/misc/ati_remote2.c                   |  12 +-
 drivers/iommu/dma-iommu.c                          |   4 +-
 drivers/md/dm-crypt.c                              |   7 +-
 drivers/md/dm-integrity.c                          |   4 +-
 drivers/md/dm-ioctl.c                              |  14 +-
 drivers/md/dm-snap.c                               |  14 ++
 drivers/memstick/core/memstick.c                   |   8 +-
 drivers/memstick/host/rtsx_usb_ms.c                |  31 +--
 drivers/mmc/host/cavium-octeon.c                   |   5 +-
 drivers/mmc/host/cavium-thunderx.c                 |   5 +-
 drivers/mmc/host/mtk-sd.c                          |   1 +
 drivers/mmc/host/sdhci-sprd.c                      |   4 +
 drivers/net/amt.c                                  |  48 ++--
 drivers/net/bareudp.c                              |   3 +-
 drivers/net/bonding/bond_main.c                    |   8 +-
 drivers/net/can/dev/skb.c                          |   4 +
 drivers/net/can/usb/f81604.c                       |   2 +-
 drivers/net/can/vxcan.c                            |   3 +
 drivers/net/dsa/microchip/ksz_common.h             |   2 +-
 drivers/net/ethernet/airoha/airoha_eth.c           |  32 ++-
 drivers/net/ethernet/airoha/airoha_eth.h           |   2 +
 drivers/net/ethernet/broadcom/bnxt/bnxt.c          | 199 ++++++++++------
 drivers/net/ethernet/broadcom/bnxt/bnxt.h          |   1 -
 drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c |  11 +
 .../chelsio/inline_crypto/ch_ktls/chcr_ktls.c      |   4 +-
 drivers/net/ethernet/google/gve/gve_main.c         |   8 +-
 drivers/net/ethernet/google/gve/gve_rx_dqo.c       |  13 +-
 drivers/net/ethernet/ibm/ibmveth.c                 |  22 +-
 drivers/net/ethernet/intel/e1000e/netdev.c         |   7 +
 drivers/net/ethernet/intel/iavf/iavf.h             |  11 +-
 drivers/net/ethernet/intel/iavf/iavf_main.c        |  85 +++++--
 drivers/net/ethernet/intel/iavf/iavf_virtchnl.c    |  99 +++++++-
 drivers/net/ethernet/intel/ice/devlink/port.c      |   2 +-
 drivers/net/ethernet/intel/ice/ice_eswitch.c       |   2 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c          |   4 +-
 .../net/ethernet/mellanox/mlx5/core/en/xsk/rx.c    |   2 +
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c    |  13 +-
 .../ethernet/mellanox/mlx5/core/esw/adj_vport.c    |  20 --
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c  |  79 +++++--
 drivers/net/ethernet/mellanox/mlx5/core/vport.c    |  24 --
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h     |   2 +
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c |  10 +-
 .../net/ethernet/mellanox/mlxsw/spectrum_flower.c  |   9 +-
 drivers/net/ethernet/microchip/sparx5/sparx5_ptp.c |  28 ++-
 .../ethernet/microchip/sparx5/sparx5_tc_matchall.c |   1 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  |  15 +-
 drivers/net/ethernet/xilinx/xilinx_axienet.h       |   7 +-
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c  |  53 ++++-
 drivers/net/pfcp.c                                 |   7 +
 drivers/net/team/team_core.c                       |  16 +-
 drivers/net/team/team_mode_broadcast.c             |   2 +
 drivers/net/tun.c                                  |  23 +-
 drivers/net/usb/ax88179_178a.c                     |   6 +-
 drivers/net/veth.c                                 |   1 +
 drivers/net/virtio_net.c                           |   2 +
 drivers/net/wireguard/noise.c                      |   7 +-
 drivers/net/wireguard/queueing.h                   |   2 +
 drivers/net/wireless/ath/ath12k/core.c             |  33 +--
 drivers/net/wireless/ath/ath12k/core.h             |   3 -
 drivers/net/wireless/ath/ath12k/hif.h              |   9 -
 drivers/net/wireless/ath/ath12k/pci.c              |   8 -
 .../wireless/broadcom/brcm80211/brcmfmac/core.c    |  27 ++-
 drivers/net/wireless/marvell/libertas/tx.c         |   7 -
 drivers/net/wireless/mediatek/mt76/mt76.h          |  10 +
 drivers/net/wireless/mediatek/mt76/mt7603/init.c   |   1 +
 .../net/wireless/mediatek/mt76/mt76_connac_mcu.h   |   1 +
 drivers/net/wireless/mediatek/mt76/mt7915/init.c   |   6 +
 drivers/net/wireless/mediatek/mt76/mt7915/main.c   |   2 +
 drivers/net/wireless/mediatek/mt76/mt7925/mac.c    |   3 +-
 drivers/net/wireless/mediatek/mt76/mt7925/main.c   |  12 +
 .../net/wireless/mediatek/mt76/mt792x_acpi_sar.c   | 134 +++++++----
 .../net/wireless/mediatek/mt76/mt792x_acpi_sar.h   |   2 +
 drivers/net/wireless/mediatek/mt76/mt7996/init.c   |   3 +-
 drivers/net/wireless/mediatek/mt76/mt7996/main.c   |  10 +-
 drivers/net/wireless/mediatek/mt76/mt7996/mcu.h    |   3 +
 drivers/net/wireless/mediatek/mt76/tx.c            |  89 +++++++-
 drivers/net/xen-netfront.c                         |   4 +-
 drivers/nvme/target/core.c                         |   2 +-
 drivers/nvme/target/pr.c                           |   4 +
 drivers/pmdomain/imx/imx8m-blk-ctrl.c              |  15 ++
 drivers/pmdomain/rockchip/pm-domains.c             |  20 +-
 drivers/power/sequencing/pwrseq-pcie-m2.c          |   2 +
 drivers/ptp/ptp_ocp.c                              |   2 +-
 drivers/regulator/ltc3676.c                        |  15 +-
 drivers/regulator/of_regulator.c                   |  24 +-
 drivers/regulator/tps6594-regulator.c              |   6 +-
 drivers/scsi/ch.c                                  |  29 +--
 drivers/scsi/qedi/qedi_main.c                      |   3 +-
 drivers/spi/spi-nxp-fspi.c                         |  22 +-
 drivers/spi/spi-sg2044-nor.c                       |  60 ++++-
 drivers/tee/optee/ffa_abi.c                        |  38 ++-
 drivers/tee/optee/optee_msg.h                      |   4 +-
 drivers/tee/optee/smc_abi.c                        |  17 +-
 drivers/tee/tee_shm.c                              |   4 +
 drivers/ufs/core/ufs-mcq.c                         |  30 +--
 drivers/ufs/core/ufshcd.c                          |  53 +++--
 drivers/ufs/host/ufs-mediatek.c                    |  18 +-
 fs/btrfs/inode.c                                   |   7 +-
 fs/btrfs/ioctl.c                                   |  31 +--
 fs/btrfs/scrub.c                                   |   4 +-
 fs/btrfs/xattr.c                                   |  15 +-
 fs/dcache.c                                        |   4 +-
 fs/fcntl.c                                         |   3 +
 fs/fs_context.c                                    |   4 +
 fs/inode.c                                         |  23 +-
 fs/mount.h                                         |   6 +-
 fs/namei.c                                         |  29 +++
 fs/namespace.c                                     | 254 ++++++++++++++++-----
 fs/nullfs.c                                        |   4 +-
 fs/pnode.c                                         | 108 +++++++--
 fs/verity/fsverity_private.h                       |  15 +-
 fs/verity/open.c                                   |  13 +-
 fs/xfs/libxfs/xfs_exchmaps.c                       | 103 ++-------
 fs/xfs/libxfs/xfs_log_format.h                     |   4 +-
 fs/xfs/xfs_bmap_util.c                             |  15 +-
 fs/xfs/xfs_exchrange.c                             |  51 +++--
 include/linux/can/core.h                           |   3 +-
 include/linux/can/skb.h                            |   4 +-
 include/linux/io_uring_types.h                     |   2 +
 include/linux/mount.h                              |   2 +-
 include/linux/nsproxy.h                            |   1 +
 include/linux/nvme.h                               |   4 +-
 include/linux/sched/ext.h                          |   1 +
 include/linux/virtio_net.h                         |  64 +++---
 include/net/amt.h                                  |   4 -
 include/net/bluetooth/rfcomm.h                     |   1 +
 include/net/can.h                                  |   2 +
 include/net/cfg80211.h                             |   1 +
 include/net/ip.h                                   |   7 +
 include/net/mac80211.h                             |  14 +-
 include/net/strparser.h                            |  10 +-
 io_uring/io_uring.c                                |  13 +-
 io_uring/kbuf.c                                    |   6 +-
 io_uring/memmap.c                                  |  47 +++-
 io_uring/memmap.h                                  |   2 +-
 io_uring/net.c                                     |   4 +-
 io_uring/register.c                                |  21 +-
 io_uring/zcrx.c                                    |   2 +-
 kernel/cgroup/cpuset.c                             |  40 +++-
 kernel/dma/swiotlb.c                               |   6 +-
 kernel/fork.c                                      |   3 +-
 kernel/nsproxy.c                                   |   2 +-
 kernel/sched/ext/ext.c                             |  25 +-
 kernel/sched/ext/internal.h                        |   5 +
 kernel/sched/sched.h                               |   1 -
 kernel/workqueue.c                                 |   2 +-
 lib/dim/dim.c                                      |  10 +-
 mm/mremap.c                                        |  70 ++++--
 mm/pgtable-generic.c                               |  20 +-
 mm/vma.c                                           |  21 +-
 mm/vma.h                                           |   7 +-
 net/bluetooth/hci_core.c                           |   4 +
 net/bluetooth/hci_sock.c                           |   2 +
 net/bluetooth/hci_sync.c                           |  10 +-
 net/bluetooth/iso.c                                |  52 ++++-
 net/bluetooth/mgmt.c                               |   2 +-
 net/bluetooth/rfcomm/core.c                        | 134 +++++++----
 net/bluetooth/rfcomm/sock.c                        |   5 +-
 net/bluetooth/rfcomm/tty.c                         |   2 +-
 net/bluetooth/sco.c                                |  87 +++++--
 net/bridge/br_multicast.c                          |  23 +-
 net/bridge/netfilter/nf_conntrack_bridge.c         |  10 +-
 net/can/af_can.c                                   |  47 +++-
 net/can/gw.c                                       |   3 +
 net/can/isotp.c                                    |  16 +-
 net/can/raw.c                                      |  10 +-
 net/core/dev.c                                     |  11 +-
 net/core/flow_dissector.c                          |  11 +-
 net/core/skbuff.c                                  |   6 +-
 net/devlink/core.c                                 |  10 +-
 net/ipv4/cipso_ipv4.c                              |   8 +
 net/ipv4/fib_semantics.c                           |   3 +
 net/ipv4/fib_trie.c                                |   2 -
 net/ipv4/ip_output.c                               |  10 +-
 net/ipv4/route.c                                   |   5 +
 net/ipv4/tcp.c                                     |   2 +
 net/ipv4/udp.c                                     |  11 +
 net/ipv6/ip6_gre.c                                 |   7 -
 net/ipv6/route.c                                   |   4 +-
 net/ipv6/udp.c                                     |  13 ++
 net/mac80211/debugfs.c                             |  13 +-
 net/mac80211/ieee80211_i.h                         |   2 +
 net/mac80211/main.c                                |   1 +
 net/mac80211/sta_info.c                            |  17 +-
 net/mac80211/sta_info.h                            |   3 +-
 net/mac80211/status.c                              |   5 +-
 net/mac80211/tx.c                                  |  70 ++++--
 net/netfilter/nfnetlink_queue.c                    |   7 +
 net/netfilter/xt_CHECKSUM.c                        |   6 +-
 net/openvswitch/actions.c                          |   7 +-
 net/openvswitch/datapath.c                         |   8 +
 net/packet/af_packet.c                             |  28 ++-
 net/sched/cls_route.c                              |   6 +
 net/sched/em_text.c                                |   3 +
 net/sctp/socket.c                                  |   6 +-
 net/smc/af_smc.c                                   |   7 +-
 net/strparser/strparser.c                          |   6 +-
 net/tipc/node.c                                    |  10 +-
 net/tipc/topsrv.c                                  |  80 +++++--
 net/vmw_vsock/af_vsock.c                           |   2 +
 net/vmw_vsock/virtio_transport_common.c            |   4 +-
 net/xfrm/xfrm_output.c                             |  16 +-
 security/keys/key.c                                |   6 +-
 security/keys/persistent.c                         |  55 +++--
 security/selinux/avc.c                             |   5 +-
 security/selinux/hooks.c                           |   9 +-
 sound/hda/codecs/side-codecs/tas2781_hda.c         |  18 +-
 sound/pci/ctxfi/ctdaio.c                           |   6 +-
 sound/soc/amd/yc/acp6x-mach.c                      |   7 +
 sound/soc/codecs/adau1372.c                        |  18 +-
 sound/soc/samsung/i2s.c                            |   8 +
 sound/soc/sdw_utils/soc_sdw_utils.c                |  35 ++-
 tools/testing/selftests/mm/hugetlb-mmap.c          |   4 +-
 tools/testing/vma/tests/vma.c                      |   4 +-
 289 files changed, 3322 insertions(+), 1484 deletions(-)
Tested-by on the v1 series
#285 lore raw
In reply to Greg Kroah-Hartman
Quoted 8 lines · On Tue, 13 Oct 2026 13:35:16 +0200 Greg Kroah-Hartman…

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 15 Oct 2026 11:28:22 +0000. Anything received after that time might be too late.

Boot-tested under QEMU for Rust x86_64, arm64; built-tested for loongarch64 and arm32:

riscv64 fails (as mentioned in the patch).

Thanks!

Cheers,
Miguel

Tested-by on the v1 series
#286 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 15 Oct 2026 11:28:22 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v7.x/stable-review/patch-7.2.11-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-7.2.y
and the diffstat can be found below.

thanks,

greg k-h

On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:

Signature · 1 line
Florian
Tested-by on the v1 series
#287 lore raw
In reply to Greg Kroah-Hartman

Am 13.10.2026 um 13:35 schrieb Greg Kroah-Hartman:

Quoted 4 lines

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697v2 server. No dmesg oddities or regressions found.

Beste Grüße,
Peter Schneider

Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge,
enjoy the air and behold the view. Climb it so you can see the world,
not so the world can see you.                    -- David McCullough Jr.

OpenPGP:  0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244
Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc
https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
Tested-by on the v1 series
#288 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 15 Oct 2026 11:28:22 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 9 lines
	https://www.kernel.org/pub/linux/kernel/v7.x/stable-review/patch-7.2.11-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-7.2.y
and the diffstat can be found below.

thanks,

greg k-h

Compiled and booted on my test system. No dmesg regressions.

thanks,
-- Shuah

Tested-by on the v1 series
#289 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 7.2.11 release. There are 281 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 15 Oct 2026 11:28:22 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v7.x/stable-review/patch-7.2.11-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-7.2.y
and the diffstat can be found below.

thanks,

greg k-h

Tested rc1 against the Fedora build system (aarch64, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.