From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>, Sasha Levin <sashal@kernel.org>,
io-uring@vger.kernel.org
Subject: [PATCH AUTOSEL 6.8 06/14] io_uring/sqpoll: work around a potential audit memory leak
Date: Sun, 26 May 2024 05:42:11 -0400 [thread overview]
Message-ID: <20240526094224.3412675-6-sashal@kernel.org> (raw)
In-Reply-To: <20240526094224.3412675-1-sashal@kernel.org>
From: Jens Axboe <axboe@kernel.dk>
[ Upstream commit c4ce0ab27646f4206a9eb502d6fe45cb080e1cae ]
kmemleak complains that there's a memory leak related to connect
handling:
unreferenced object 0xffff0001093bdf00 (size 128):
comm "iou-sqp-455", pid 457, jiffies 4294894164
hex dump (first 32 bytes):
02 00 fa ea 7f 00 00 01 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace (crc 2e481b1a):
[<00000000c0a26af4>] kmemleak_alloc+0x30/0x38
[<000000009c30bb45>] kmalloc_trace+0x228/0x358
[<000000009da9d39f>] __audit_sockaddr+0xd0/0x138
[<0000000089a93e34>] move_addr_to_kernel+0x1a0/0x1f8
[<000000000b4e80e6>] io_connect_prep+0x1ec/0x2d4
[<00000000abfbcd99>] io_submit_sqes+0x588/0x1e48
[<00000000e7c25e07>] io_sq_thread+0x8a4/0x10e4
[<00000000d999b491>] ret_from_fork+0x10/0x20
which can can happen if:
1) The command type does something on the prep side that triggers an
audit call.
2) The thread hasn't done any operations before this that triggered
an audit call inside ->issue(), where we have audit_uring_entry()
and audit_uring_exit().
Work around this by issuing a blanket NOP operation before the SQPOLL
does anything.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
io_uring/sqpoll.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/io_uring/sqpoll.c b/io_uring/sqpoll.c
index 65b5dbe3c850e..350436e55aafe 100644
--- a/io_uring/sqpoll.c
+++ b/io_uring/sqpoll.c
@@ -240,6 +240,14 @@ static int io_sq_thread(void *data)
sqd->sq_cpu = raw_smp_processor_id();
}
+ /*
+ * Force audit context to get setup, in case we do prep side async
+ * operations that would trigger an audit call before any issue side
+ * audit has been done.
+ */
+ audit_uring_entry(IORING_OP_NOP);
+ audit_uring_exit(true, 0);
+
mutex_lock(&sqd->lock);
while (1) {
bool cap_entries, sqt_spin = false;
--
2.43.0
next prev parent reply other threads:[~2024-05-26 9:42 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-26 9:42 [PATCH AUTOSEL 6.8 01/14] fs/writeback: bail out if there is no more inodes for IO and queued once Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 02/14] md: Fix overflow in is_mddev_idle Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 03/14] padata: Disable BH when taking works lock on MT path Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 04/14] crypto: hisilicon/sec - Fix memory leak for sec resource release Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 05/14] crypto: hisilicon/qm - Add the err memory release process to qm uninit Sasha Levin
2024-05-26 9:42 ` Sasha Levin [this message]
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 07/14] rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 08/14] rcutorture: Make stall-tasks directly exit when rcutorture tests end Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 09/14] rcutorture: Fix invalid context warning when enable srcu barrier testing Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 10/14] platform/chrome: cros_usbpd_logger: provide ID table for avoiding fallback match Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 11/14] platform/chrome: cros_usbpd_notify: " Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 12/14] binfmt_elf: Leave a gap between .bss and brk Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 13/14] arm64: defconfig: select INTERCONNECT_QCOM_SM6115 as built-in Sasha Levin
2024-05-26 9:42 ` [PATCH AUTOSEL 6.8 14/14] block/ioctl: prefer different overflow check 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=20240526094224.3412675-6-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 \
/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