All of lore.kernel.org
 help / color / mirror / Atom feed
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


  parent reply	other threads:[~2024-05-26  9:42 UTC|newest]

Thread overview: 15+ 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   ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.