From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>,
syzbot+111d2a03f51f5ae73775@syzkaller.appspotmail.com,
Sasha Levin <sashal@kernel.org>,
io-uring@vger.kernel.org
Subject: [PATCH AUTOSEL 5.14 37/40] io_uring: allow conditional reschedule for intensive iterators
Date: Tue, 28 Sep 2021 01:55:21 -0400 [thread overview]
Message-ID: <20210928055524.172051-37-sashal@kernel.org> (raw)
In-Reply-To: <20210928055524.172051-1-sashal@kernel.org>
From: Jens Axboe <axboe@kernel.dk>
[ Upstream commit 8bab4c09f24ec8d4a7a78ab343620f89d3a24804 ]
If we have a lot of threads and rings, the tctx list can get quite big.
This is especially true if we keep creating new threads and rings.
Likewise for the provided buffers list. Be nice and insert a conditional
reschedule point while iterating the nodes for deletion.
Link: https://lore.kernel.org/io-uring/00000000000064b6b405ccb41113@google.com/
Reported-by: syzbot+111d2a03f51f5ae73775@syzkaller.appspotmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/io_uring.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 754d59f734d8..ddd241b28f91 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -8649,8 +8649,10 @@ static void io_destroy_buffers(struct io_ring_ctx *ctx)
struct io_buffer *buf;
unsigned long index;
- xa_for_each(&ctx->io_buffers, index, buf)
+ xa_for_each(&ctx->io_buffers, index, buf) {
__io_remove_buffers(ctx, buf, index, -1U);
+ cond_resched();
+ }
}
static void io_req_cache_free(struct list_head *list, struct task_struct *tsk)
@@ -9146,8 +9148,10 @@ static void io_uring_clean_tctx(struct io_uring_task *tctx)
struct io_tctx_node *node;
unsigned long index;
- xa_for_each(&tctx->xa, index, node)
+ xa_for_each(&tctx->xa, index, node) {
io_uring_del_tctx_node(index);
+ cond_resched();
+ }
if (wq) {
/*
* Must be after io_uring_del_task_file() (removes nodes under
--
2.33.0
next prev parent reply other threads:[~2021-09-28 5:58 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-28 5:54 [PATCH AUTOSEL 5.14 01/40] spi: rockchip: handle zero length transfers without timing out Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 02/40] afs: Add missing vnode validation checks Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 03/40] platform/x86: touchscreen_dmi: Add info for the Chuwi HiBook (CWI514) tablet Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 04/40] platform/x86: touchscreen_dmi: Update info for the Chuwi Hi10 Plus (CWI527) tablet Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 05/40] nfsd: back channel stuck in SEQ4_STATUS_CB_PATH_DOWN Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 06/40] btrfs: replace BUG_ON() in btrfs_csum_one_bio() with proper error handling Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 07/40] btrfs: fix mount failure due to past and transient device flush error Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 08/40] net: mdio: introduce a shutdown method to mdio device drivers Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 09/40] xen-netback: correct success/error reporting for the SKB-with-fraglist case Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 10/40] sparc64: fix pci_iounmap() when CONFIG_PCI is not set Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 11/40] platform/x86/intel: hid: Add DMI switches allow list Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 12/40] platform/x86: gigabyte-wmi: add support for B550I Aorus Pro AX Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 13/40] ext2: fix sleeping in atomic bugs on error Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 14/40] drm/amdkfd: handle svm migrate init error Sasha Levin
2021-09-28 5:54 ` [PATCH AUTOSEL 5.14 15/40] drm/amdkfd: fix svm_migrate_fini warning Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 16/40] scsi: sd: Free scsi_disk device via put_device() Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 17/40] scsi: elx: efct: Do not hold lock while calling fc_vport_terminate() Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 18/40] usb: testusb: Fix for showing the connection speed Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 19/40] usb: dwc2: check return value after calling platform_get_resource() Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 20/40] habanalabs/gaudi: use direct MSI in single mode Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 21/40] habanalabs: fail collective wait when not supported Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 22/40] habanalabs/gaudi: fix LBW RR configuration Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 23/40] selftests: be sure to make khdr before other targets Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 24/40] selftests:kvm: fix get_warnings_count() ignoring fscanf() return warn Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 25/40] selftests:kvm: fix get_trans_hugepagesz() " Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 26/40] selftests: kvm: move get_run_delay() into lib/test_util Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 27/40] selftests: kvm: fix get_run_delay() ignoring fscanf() return warn Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 28/40] Xen/gntdev: don't ignore kernel unmapping error Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 29/40] swiotlb-xen: ensure to issue well-formed XENMEM_exchange requests Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 30/40] nvme-fc: update hardware queues before using them Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 31/40] nvme-fc: avoid race between time out and tear down Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 32/40] thermal/drivers/tsens: Fix wrong check for tzd in irq handlers Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 33/40] scsi: ses: Retry failed Send/Receive Diagnostic commands Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 34/40] irqchip/gic: Work around broken Renesas integration Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 35/40] smb3: correct smb3 ACL security descriptor Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 36/40] x86/insn, tools/x86: Fix undefined behavior due to potential unaligned accesses Sasha Levin
2021-09-28 5:55 ` Sasha Levin [this message]
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 38/40] block: don't call rq_qos_ops->done_bio if the bio isn't tracked Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 39/40] tools/vm/page-types: remove dependency on opt_file for idle page tracking Sasha Levin
2021-09-28 5:55 ` [PATCH AUTOSEL 5.14 40/40] kasan: always respect CONFIG_KASAN_STACK Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210928055524.172051-37-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=syzbot+111d2a03f51f5ae73775@syzkaller.appspotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox