stable-rc/linux-6.1.y build: 22 builds: 18 failed, 4 passed, 108 errors, 19 warnings (v6.1.52-547-g0480b8535974)
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-6.1.y/kernel/v6.1.52-547-…
Tree: stable-rc
Branch: linux-6.1.y
Git Describe: v6.1.52-547-g0480b8535974
Git Commit: 0480b8535974b203450ef268b4f9277c0aff3544
Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Built: 7 unique architectures
Build Failures Detected:
arc:
haps_hs_smp_defconfig: (gcc-10) FAIL
arm64:
allnoconfig: (gcc-10) FAIL
defconfig: (gcc-10) FAIL
defconfig+arm64-chromebook: (gcc-10) FAIL
arm:
imx_v6_v7_defconfig: (gcc-10) FAIL
multi_v5_defconfig: (gcc-10) FAIL
multi_v7_defconfig: (gcc-10) FAIL
omap2plus_defconfig: (gcc-10) FAIL
vexpress_defconfig: (gcc-10) FAIL
i386:
allnoconfig: (gcc-10) FAIL
i386_defconfig: (gcc-10) FAIL
mips:
32r2el_defconfig: (gcc-10) FAIL
riscv:
allnoconfig: (gcc-10) FAIL
defconfig: (gcc-10) FAIL
rv32_defconfig: (gcc-10) FAIL
x86_64:
allnoconfig: (gcc-10) FAIL
x86_64_defconfig: (gcc-10) FAIL
x86_64_defconfig+x86-chromebook: (gcc-10) FAIL
Errors and Warnings Detected:
arc:
haps_hs_smp_defconfig (gcc-10): 6 errors, 1 warning
arm64:
allnoconfig (gcc-10): 6 errors, 1 warning
defconfig (gcc-10): 6 errors, 1 warning
defconfig+arm64-chromebook (gcc-10): 6 errors, 1 warning
arm:
imx_v6_v7_defconfig (gcc-10): 6 errors, 1 warning
multi_v5_defconfig (gcc-10): 6 errors, 1 warning
multi_v7_defconfig (gcc-10): 6 errors, 1 warning
omap2plus_defconfig (gcc-10): 6 errors, 1 warning
vexpress_defconfig (gcc-10): 6 errors, 1 warning
i386:
allnoconfig (gcc-10): 6 errors, 1 warning
i386_defconfig (gcc-10): 6 errors, 1 warning
mips:
32r2el_defconfig (gcc-10): 6 errors, 2 warnings
riscv:
allnoconfig (gcc-10): 6 errors, 1 warning
defconfig (gcc-10): 6 errors, 1 warning
rv32_defconfig (gcc-10): 6 errors, 1 warning
x86_64:
allnoconfig (gcc-10): 6 errors, 1 warning
x86_64_defconfig (gcc-10): 6 errors, 1 warning
x86_64_defconfig+x86-chromebook (gcc-10): 6 errors, 1 warning
Errors summary:
85 io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
18 io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
5 io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
Warnings summary:
15 cc1: some warnings being treated as errors
3 cc1: all warnings being treated as errors
1 arch/mips/boot/dts/img/boston.dts:128.19-178.5: Warning (pci_device_reg): /pci@14000000/pci2_root@0,0,0: PCI unit address format error, expected "0,0"
================================================================================
Detailed per-defconfig build reports:
--------------------------------------------------------------------------------
32r2el_defconfig (mips, gcc-10) — FAIL, 6 errors, 2 warnings, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
arch/mips/boot/dts/img/boston.dts:128.19-178.5: Warning (pci_device_reg): /pci@14000000/pci2_root@0,0,0: PCI unit address format error, expected "0,0"
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
allnoconfig (arm64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
allnoconfig (x86_64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
allnoconfig (riscv, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
allnoconfig (i386, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
defconfig (arm64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
defconfig (riscv, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
defconfig+arm64-chromebook (arm64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
haps_hs_smp_defconfig (arc, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
io_uring/io-wq.c:191:43: error: 'struct io_worker' has no member named 'wq'; did you mean 'wqe'?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
i386_defconfig (i386, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: all warnings being treated as errors
--------------------------------------------------------------------------------
imx_v6_v7_defconfig (arm, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
multi_v5_defconfig (arm, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
multi_v7_defconfig (arm, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
nommu_k210_defconfig (riscv, gcc-10) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
nommu_k210_sdcard_defconfig (riscv, gcc-10) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
omap2plus_defconfig (arm, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
rv32_defconfig (riscv, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
tinyconfig (i386, gcc-10) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (x86_64, gcc-10) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
vexpress_defconfig (arm, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
x86_64_defconfig (x86_64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: all warnings being treated as errors
--------------------------------------------------------------------------------
x86_64_defconfig+x86-chromebook (x86_64, gcc-10) — FAIL, 6 errors, 1 warning, 0 section mismatches
Errors:
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:191:43: error: ‘struct io_worker’ has no member named ‘wq’; did you mean ‘wqe’?
io_uring/io-wq.c:192:1: error: control reaches end of non-void function [-Werror=return-type]
Warnings:
cc1: all warnings being treated as errors
---
For more info write to <info(a)kernelci.org>
The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090909-unnatural-giddiness-7f7a@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
45500dc4e01c ("io_uring: break out of iowq iopoll on teardown")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Thu, 7 Sep 2023 13:50:07 +0100
Subject: [PATCH] io_uring: break out of iowq iopoll on teardown
io-wq will retry iopoll even when it failed with -EAGAIN. If that
races with task exit, which sets TIF_NOTIFY_SIGNAL for all its workers,
such workers might potentially infinitely spin retrying iopoll again and
again and each time failing on some allocation / waiting / etc. Don't
keep spinning if io-wq is dying.
Fixes: 561fb04a6a225 ("io_uring: replace workqueue usage with io-wq")
Cc: stable(a)vger.kernel.org
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c
index 62f345587df5..1ecc8c748768 100644
--- a/io_uring/io-wq.c
+++ b/io_uring/io-wq.c
@@ -174,6 +174,16 @@ static void io_worker_ref_put(struct io_wq *wq)
complete(&wq->worker_done);
}
+bool io_wq_worker_stopped(void)
+{
+ struct io_worker *worker = current->worker_private;
+
+ if (WARN_ON_ONCE(!io_wq_current_is_worker()))
+ return true;
+
+ return test_bit(IO_WQ_BIT_EXIT, &worker->wq->state);
+}
+
static void io_worker_cancel_cb(struct io_worker *worker)
{
struct io_wq_acct *acct = io_wq_get_acct(worker);
diff --git a/io_uring/io-wq.h b/io_uring/io-wq.h
index 06d9ca90c577..2b2a6406dd8e 100644
--- a/io_uring/io-wq.h
+++ b/io_uring/io-wq.h
@@ -52,6 +52,7 @@ void io_wq_hash_work(struct io_wq_work *work, void *val);
int io_wq_cpu_affinity(struct io_uring_task *tctx, cpumask_var_t mask);
int io_wq_max_workers(struct io_wq *wq, int *new_count);
+bool io_wq_worker_stopped(void);
static inline bool io_wq_is_hashed(struct io_wq_work *work)
{
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 0f0ba31c3850..58d8dd34a45f 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1975,6 +1975,8 @@ void io_wq_submit_work(struct io_wq_work *work)
if (!needs_poll) {
if (!(req->ctx->flags & IORING_SETUP_IOPOLL))
break;
+ if (io_wq_worker_stopped())
+ break;
cond_resched();
continue;
}
On Sat, 9 Sept 2023 at 18:16, <gregkh(a)linuxfoundation.org> wrote:
>
>
> This is a note to let you know that I've just added the patch titled
>
> arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved
>
> to the 5.10-stable tree which can be found at:
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
>
> The filename of the patch is:
> arm64-dts-qcom-sdm845-db845c-mark-cont-splash-memory-region-as-reserved.patch
> and it can be found in the queue-5.10 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable(a)vger.kernel.org> know about it.
>
Please skip this patch for 5.10.y. We ran into a boot (mdss crash)
regression with this patch.
Regards,
Amit Pundir
>
> From 110e70fccce4f22b53986ae797d665ffb1950aa6 Mon Sep 17 00:00:00 2001
> From: Amit Pundir <amit.pundir(a)linaro.org>
> Date: Wed, 26 Jul 2023 18:57:19 +0530
> Subject: arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved
>
> From: Amit Pundir <amit.pundir(a)linaro.org>
>
> commit 110e70fccce4f22b53986ae797d665ffb1950aa6 upstream.
>
> Adding a reserved memory region for the framebuffer memory
> (the splash memory region set up by the bootloader).
>
> It fixes a kernel panic (arm-smmu: Unhandled context fault
> at this particular memory region) reported on DB845c running
> v5.10.y.
>
> Cc: stable(a)vger.kernel.org # v5.10+
> Reviewed-by: Caleb Connolly <caleb.connolly(a)linaro.org>
> Signed-off-by: Amit Pundir <amit.pundir(a)linaro.org>
> Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski(a)linaro.org>
> Link: https://lore.kernel.org/r/20230726132719.2117369-2-amit.pundir@linaro.org
> Signed-off-by: Bjorn Andersson <andersson(a)kernel.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
> ---
> arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> --- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
> @@ -85,6 +85,14 @@
> };
> };
>
> + reserved-memory {
> + /* Cont splash region set up by the bootloader */
> + cont_splash_mem: framebuffer@9d400000 {
> + reg = <0x0 0x9d400000 0x0 0x2400000>;
> + no-map;
> + };
> + };
> +
> lt9611_1v8: lt9611-vdd18-regulator {
> compatible = "regulator-fixed";
> regulator-name = "LT9611_1V8";
> @@ -482,6 +490,7 @@
> };
>
> &mdss {
> + memory-region = <&cont_splash_mem>;
> status = "okay";
> };
>
>
>
> Patches currently in stable-queue which might be from amit.pundir(a)linaro.org are
>
> queue-5.10/arm64-dts-qcom-sdm845-db845c-mark-cont-splash-memory-region-as-reserved.patch
The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090946-waking-jokester-8c89@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..
Possible dependencies:
45500dc4e01c ("io_uring: break out of iowq iopoll on teardown")
ed29b0b4fd83 ("io_uring: move to separate directory")
e0deb6a025ae ("io_uring: avoid io-wq -EAGAIN looping for !IOPOLL")
1d5f5ea7cb7d ("io-wq: remove worker to owner tw dependency")
d01905db14eb ("io_uring: clean iowq submit work cancellation")
255657d23704 ("io_uring: clean io_wq_submit_work()'s main loop")
90fa02883f06 ("io_uring: implement async hybrid mode for pollable requests")
3b44b3712c5b ("io_uring: split logic of force_nonblock")
9882131cd9de ("io_uring: kill io_wq_current_is_worker() in iopoll")
9983028e7660 ("io_uring: optimise req->ctx reloads")
5e49c973fc39 ("io_uring: clean up io_import_iovec")
51aac424aef9 ("io_uring: optimise io_import_iovec nonblock passing")
c88598a92a58 ("io_uring: optimise read/write iov state storing")
538941e2681c ("io_uring: encapsulate rw state")
d886e185a128 ("io_uring: control ->async_data with a REQ_F flag")
30d51dd4ad20 ("io_uring: clean up buffer select")
ef05d9ebcc92 ("io_uring: kill off ->inflight_entry field")
6f33b0bc4ea4 ("io_uring: use slist for completion batching")
c450178d9be9 ("io_uring: dedup CQE flushing non-empty checks")
4c928904ff77 ("block: move CONFIG_BLOCK guard to top Makefile")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Thu, 7 Sep 2023 13:50:07 +0100
Subject: [PATCH] io_uring: break out of iowq iopoll on teardown
io-wq will retry iopoll even when it failed with -EAGAIN. If that
races with task exit, which sets TIF_NOTIFY_SIGNAL for all its workers,
such workers might potentially infinitely spin retrying iopoll again and
again and each time failing on some allocation / waiting / etc. Don't
keep spinning if io-wq is dying.
Fixes: 561fb04a6a225 ("io_uring: replace workqueue usage with io-wq")
Cc: stable(a)vger.kernel.org
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c
index 62f345587df5..1ecc8c748768 100644
--- a/io_uring/io-wq.c
+++ b/io_uring/io-wq.c
@@ -174,6 +174,16 @@ static void io_worker_ref_put(struct io_wq *wq)
complete(&wq->worker_done);
}
+bool io_wq_worker_stopped(void)
+{
+ struct io_worker *worker = current->worker_private;
+
+ if (WARN_ON_ONCE(!io_wq_current_is_worker()))
+ return true;
+
+ return test_bit(IO_WQ_BIT_EXIT, &worker->wq->state);
+}
+
static void io_worker_cancel_cb(struct io_worker *worker)
{
struct io_wq_acct *acct = io_wq_get_acct(worker);
diff --git a/io_uring/io-wq.h b/io_uring/io-wq.h
index 06d9ca90c577..2b2a6406dd8e 100644
--- a/io_uring/io-wq.h
+++ b/io_uring/io-wq.h
@@ -52,6 +52,7 @@ void io_wq_hash_work(struct io_wq_work *work, void *val);
int io_wq_cpu_affinity(struct io_uring_task *tctx, cpumask_var_t mask);
int io_wq_max_workers(struct io_wq *wq, int *new_count);
+bool io_wq_worker_stopped(void);
static inline bool io_wq_is_hashed(struct io_wq_work *work)
{
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 0f0ba31c3850..58d8dd34a45f 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1975,6 +1975,8 @@ void io_wq_submit_work(struct io_wq_work *work)
if (!needs_poll) {
if (!(req->ctx->flags & IORING_SETUP_IOPOLL))
break;
+ if (io_wq_worker_stopped())
+ break;
cond_resched();
continue;
}
The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090945-mural-humming-67c0@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
45500dc4e01c ("io_uring: break out of iowq iopoll on teardown")
ed29b0b4fd83 ("io_uring: move to separate directory")
e0deb6a025ae ("io_uring: avoid io-wq -EAGAIN looping for !IOPOLL")
1d5f5ea7cb7d ("io-wq: remove worker to owner tw dependency")
d01905db14eb ("io_uring: clean iowq submit work cancellation")
255657d23704 ("io_uring: clean io_wq_submit_work()'s main loop")
90fa02883f06 ("io_uring: implement async hybrid mode for pollable requests")
3b44b3712c5b ("io_uring: split logic of force_nonblock")
9882131cd9de ("io_uring: kill io_wq_current_is_worker() in iopoll")
9983028e7660 ("io_uring: optimise req->ctx reloads")
5e49c973fc39 ("io_uring: clean up io_import_iovec")
51aac424aef9 ("io_uring: optimise io_import_iovec nonblock passing")
c88598a92a58 ("io_uring: optimise read/write iov state storing")
538941e2681c ("io_uring: encapsulate rw state")
d886e185a128 ("io_uring: control ->async_data with a REQ_F flag")
30d51dd4ad20 ("io_uring: clean up buffer select")
ef05d9ebcc92 ("io_uring: kill off ->inflight_entry field")
6f33b0bc4ea4 ("io_uring: use slist for completion batching")
c450178d9be9 ("io_uring: dedup CQE flushing non-empty checks")
4c928904ff77 ("block: move CONFIG_BLOCK guard to top Makefile")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 45500dc4e01c167ee063f3dcc22f51ced5b2b1e9 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Thu, 7 Sep 2023 13:50:07 +0100
Subject: [PATCH] io_uring: break out of iowq iopoll on teardown
io-wq will retry iopoll even when it failed with -EAGAIN. If that
races with task exit, which sets TIF_NOTIFY_SIGNAL for all its workers,
such workers might potentially infinitely spin retrying iopoll again and
again and each time failing on some allocation / waiting / etc. Don't
keep spinning if io-wq is dying.
Fixes: 561fb04a6a225 ("io_uring: replace workqueue usage with io-wq")
Cc: stable(a)vger.kernel.org
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c
index 62f345587df5..1ecc8c748768 100644
--- a/io_uring/io-wq.c
+++ b/io_uring/io-wq.c
@@ -174,6 +174,16 @@ static void io_worker_ref_put(struct io_wq *wq)
complete(&wq->worker_done);
}
+bool io_wq_worker_stopped(void)
+{
+ struct io_worker *worker = current->worker_private;
+
+ if (WARN_ON_ONCE(!io_wq_current_is_worker()))
+ return true;
+
+ return test_bit(IO_WQ_BIT_EXIT, &worker->wq->state);
+}
+
static void io_worker_cancel_cb(struct io_worker *worker)
{
struct io_wq_acct *acct = io_wq_get_acct(worker);
diff --git a/io_uring/io-wq.h b/io_uring/io-wq.h
index 06d9ca90c577..2b2a6406dd8e 100644
--- a/io_uring/io-wq.h
+++ b/io_uring/io-wq.h
@@ -52,6 +52,7 @@ void io_wq_hash_work(struct io_wq_work *work, void *val);
int io_wq_cpu_affinity(struct io_uring_task *tctx, cpumask_var_t mask);
int io_wq_max_workers(struct io_wq *wq, int *new_count);
+bool io_wq_worker_stopped(void);
static inline bool io_wq_is_hashed(struct io_wq_work *work)
{
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 0f0ba31c3850..58d8dd34a45f 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1975,6 +1975,8 @@ void io_wq_submit_work(struct io_wq_work *work)
if (!needs_poll) {
if (!(req->ctx->flags & IORING_SETUP_IOPOLL))
break;
+ if (io_wq_worker_stopped())
+ break;
cond_resched();
continue;
}
The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x 1bfed23349716a7811645336a7ce42c4b8f250bc
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090926-basics-violet-94a6@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
1bfed2334971 ("io_uring/net: don't overflow multishot accept")
d86eaed185e9 ("io_uring: cleanup io_aux_cqe() API")
ea97f6c8558e ("io_uring: add support for multishot timeouts")
a282967c848f ("io_uring: encapsulate task_work state")
13bfa6f15d0b ("io_uring: remove extra tw trylocks")
9d2789ac9d60 ("block/io_uring: pass in issue_flags for uring_cmd task_work handling")
6bb30855560e ("io_uring: if a linked request has REQ_F_FORCE_ASYNC then run it async")
f58680085478 ("io_uring: add reschedule point to handle_tw_list()")
50470fc5723a ("io_uring: return normal tw run linking optimisation")
31f084b7b028 ("io_uring: simplify fallback execution")
b0b7a7d24b66 ("io_uring: return back links tw run optimisation")
c3f4d39ee4bc ("io_uring: optimise deferred tw execution")
360173ab9e1a ("io_uring: move io_run_local_work_locked")
3e5655552a82 ("io_uring: mark io_run_local_work static")
2f413956cc8a ("io_uring: don't set TASK_RUNNING in local tw runner")
140102ae9a9f ("io_uring: move defer tw task checks")
1414d6298584 ("io_uring: kill io_run_task_work_ctx")
f36ba6cf1ab6 ("io_uring: don't iterate cq wait fast path")
0c4fe008c9cb ("io_uring: rearrange defer list checks")
6e5aedb9324a ("io_uring/poll: attempt request issue after racy poll wakeup")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 1bfed23349716a7811645336a7ce42c4b8f250bc Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Fri, 11 Aug 2023 13:53:41 +0100
Subject: [PATCH] io_uring/net: don't overflow multishot accept
Don't allow overflowing multishot accept CQEs, we want to limit
the grows of the overflow list.
Cc: stable(a)vger.kernel.org
Fixes: 4e86a2c980137 ("io_uring: implement multishot mode for accept")
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Link: https://lore.kernel.org/r/7d0d749649244873772623dd7747966f516fe6e2.16917576…
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/net.c b/io_uring/net.c
index eb1f51ddcb23..1599493544a5 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -1367,7 +1367,7 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
if (ret < 0)
return ret;
if (io_aux_cqe(req, issue_flags & IO_URING_F_COMPLETE_DEFER, ret,
- IORING_CQE_F_MORE, true))
+ IORING_CQE_F_MORE, false))
goto retry;
return -ECANCELED;
The patch below does not apply to the 6.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.4.y
git checkout FETCH_HEAD
git cherry-pick -x 1bfed23349716a7811645336a7ce42c4b8f250bc
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090925-saline-prorate-1854@gregkh' --subject-prefix 'PATCH 6.4.y' HEAD^..
Possible dependencies:
1bfed2334971 ("io_uring/net: don't overflow multishot accept")
d86eaed185e9 ("io_uring: cleanup io_aux_cqe() API")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 1bfed23349716a7811645336a7ce42c4b8f250bc Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Fri, 11 Aug 2023 13:53:41 +0100
Subject: [PATCH] io_uring/net: don't overflow multishot accept
Don't allow overflowing multishot accept CQEs, we want to limit
the grows of the overflow list.
Cc: stable(a)vger.kernel.org
Fixes: 4e86a2c980137 ("io_uring: implement multishot mode for accept")
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Link: https://lore.kernel.org/r/7d0d749649244873772623dd7747966f516fe6e2.16917576…
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/net.c b/io_uring/net.c
index eb1f51ddcb23..1599493544a5 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -1367,7 +1367,7 @@ int io_accept(struct io_kiocb *req, unsigned int issue_flags)
if (ret < 0)
return ret;
if (io_aux_cqe(req, issue_flags & IO_URING_F_COMPLETE_DEFER, ret,
- IORING_CQE_F_MORE, true))
+ IORING_CQE_F_MORE, false))
goto retry;
return -ECANCELED;
The patch below does not apply to the 6.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.4.y
git checkout FETCH_HEAD
git cherry-pick -x b2e74db55dd93d6db22a813c9a775b5dbf87c560
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2023090908-cursor-reshape-7963@gregkh' --subject-prefix 'PATCH 6.4.y' HEAD^..
Possible dependencies:
b2e74db55dd9 ("io_uring/net: don't overflow multishot recv")
d86eaed185e9 ("io_uring: cleanup io_aux_cqe() API")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b2e74db55dd93d6db22a813c9a775b5dbf87c560 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Fri, 11 Aug 2023 13:53:42 +0100
Subject: [PATCH] io_uring/net: don't overflow multishot recv
Don't allow overflowing multishot recv CQEs, it might get out of
hand, hurt performance, and in the worst case scenario OOM the task.
Cc: stable(a)vger.kernel.org
Fixes: b3fdea6ecb55c ("io_uring: multishot recv")
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Link: https://lore.kernel.org/r/0b295634e8f1b71aa764c984608c22d85f88f75c.16917576…
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/io_uring/net.c b/io_uring/net.c
index 1599493544a5..8c419c01a5db 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -642,7 +642,7 @@ static inline bool io_recv_finish(struct io_kiocb *req, int *ret,
if (!mshot_finished) {
if (io_aux_cqe(req, issue_flags & IO_URING_F_COMPLETE_DEFER,
- *ret, cflags | IORING_CQE_F_MORE, true)) {
+ *ret, cflags | IORING_CQE_F_MORE, false)) {
io_recv_prep_retry(req);
/* Known not-empty or unknown state, retry */
if (cflags & IORING_CQE_F_SOCK_NONEMPTY ||