All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Paul Moore <paul@paul-moore.com>, Peilin Ye <yepeilin.cs@gmail.com>
Cc: Pavel Begunkov <asml.silence@gmail.com>,
	Eric Paris <eparis@redhat.com>,
	Peilin Ye <peilin.ye@bytedance.com>,
	io-uring@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-audit@redhat.com
Subject: Re: [PATCH v2] audit, io_uring, io-wq: Fix memory leak in io_sq_thread() and io_wqe_worker()
Date: Thu, 4 Aug 2022 08:32:27 -0600	[thread overview]
Message-ID: <5756a75e-ea84-a04b-be07-90e7ee6626d6@kernel.dk> (raw)
In-Reply-To: <CAHC9VhSjA444kYPEsBwWz3fuvY7ohmYb-HKWej4EmBy4mbS4Fw@mail.gmail.com>

On 8/4/22 7:51 AM, Paul Moore wrote:
> On Wed, Aug 3, 2022 at 6:24 PM Peilin Ye <yepeilin.cs@gmail.com> wrote:
>>
>> From: Peilin Ye <peilin.ye@bytedance.com>
>>
>> Currently @audit_context is allocated twice for io_uring workers:
>>
>>   1. copy_process() calls audit_alloc();
>>   2. io_sq_thread() or io_wqe_worker() calls audit_alloc_kernel() (which
>>      is effectively audit_alloc()) and overwrites @audit_context,
>>      causing:
>>
>>   BUG: memory leak
>>   unreferenced object 0xffff888144547400 (size 1024):
>> <...>
>>     hex dump (first 32 bytes):
>>       00 00 00 00 00 00 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  ................
>>     backtrace:
>>       [<ffffffff8135cfc3>] audit_alloc+0x133/0x210
>>       [<ffffffff81239e63>] copy_process+0xcd3/0x2340
>>       [<ffffffff8123b5f3>] create_io_thread+0x63/0x90
>>       [<ffffffff81686604>] create_io_worker+0xb4/0x230
>>       [<ffffffff81686f68>] io_wqe_enqueue+0x248/0x3b0
>>       [<ffffffff8167663a>] io_queue_iowq+0xba/0x200
>>       [<ffffffff816768b3>] io_queue_async+0x113/0x180
>>       [<ffffffff816840df>] io_req_task_submit+0x18f/0x1a0
>>       [<ffffffff816841cd>] io_apoll_task_func+0xdd/0x120
>>       [<ffffffff8167d49f>] tctx_task_work+0x11f/0x570
>>       [<ffffffff81272c4e>] task_work_run+0x7e/0xc0
>>       [<ffffffff8125a688>] get_signal+0xc18/0xf10
>>       [<ffffffff8111645b>] arch_do_signal_or_restart+0x2b/0x730
>>       [<ffffffff812ea44e>] exit_to_user_mode_prepare+0x5e/0x180
>>       [<ffffffff844ae1b2>] syscall_exit_to_user_mode+0x12/0x20
>>       [<ffffffff844a7e80>] do_syscall_64+0x40/0x80
>>
>> Then,
>>
>>   3. io_sq_thread() or io_wqe_worker() frees @audit_context using
>>      audit_free();
>>   4. do_exit() eventually calls audit_free() again, which is okay
>>      because audit_free() does a NULL check.
>>
>> As suggested by Paul Moore, fix it by deleting audit_alloc_kernel() and
>> redundant audit_free() calls.
>>
>> Fixes: 5bd2182d58e9 ("audit,io_uring,io-wq: add some basic audit support to io_uring")
>> Suggested-by: Paul Moore <paul@paul-moore.com>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
>> ---
>> Change since v1:
>>   - Delete audit_alloc_kernel() (Paul Moore)
>>
>>  fs/io-wq.c            |  3 ---
>>  fs/io_uring.c         |  4 ----
>>  include/linux/audit.h |  5 -----
>>  kernel/auditsc.c      | 25 -------------------------
>>  4 files changed, 37 deletions(-)
> 
> This looks good to me, thanks!  Although it looks like the io_uring
> related changes will need to be applied by hand as they are pointing
> to the old layout under fs/ as opposed to the newer layout in
> io_uring/ introduced during this merge window.
> 
> Jens, did you want to take this via the io_uring tree or should I take
> it via the audit tree?  If the latter, an ACK would be appreciated, if
> the former my ACK is below.
> 
> Acked-by: Paul Moore <paul@paul-moore.com>

Probably better if I take it, since I need to massage it into the
current tree anyway. We can then use this one as the base for the stable
backports that are going to be required.

-- 
Jens Axboe


WARNING: multiple messages have this Message-ID (diff)
From: Jens Axboe <axboe@kernel.dk>
To: Paul Moore <paul@paul-moore.com>, Peilin Ye <yepeilin.cs@gmail.com>
Cc: linux-kernel@vger.kernel.org, Eric Paris <eparis@redhat.com>,
	io-uring@vger.kernel.org, linux-audit@redhat.com,
	Peilin Ye <peilin.ye@bytedance.com>,
	Pavel Begunkov <asml.silence@gmail.com>
Subject: Re: [PATCH v2] audit, io_uring, io-wq: Fix memory leak in io_sq_thread() and io_wqe_worker()
Date: Thu, 4 Aug 2022 08:32:27 -0600	[thread overview]
Message-ID: <5756a75e-ea84-a04b-be07-90e7ee6626d6@kernel.dk> (raw)
In-Reply-To: <CAHC9VhSjA444kYPEsBwWz3fuvY7ohmYb-HKWej4EmBy4mbS4Fw@mail.gmail.com>

On 8/4/22 7:51 AM, Paul Moore wrote:
> On Wed, Aug 3, 2022 at 6:24 PM Peilin Ye <yepeilin.cs@gmail.com> wrote:
>>
>> From: Peilin Ye <peilin.ye@bytedance.com>
>>
>> Currently @audit_context is allocated twice for io_uring workers:
>>
>>   1. copy_process() calls audit_alloc();
>>   2. io_sq_thread() or io_wqe_worker() calls audit_alloc_kernel() (which
>>      is effectively audit_alloc()) and overwrites @audit_context,
>>      causing:
>>
>>   BUG: memory leak
>>   unreferenced object 0xffff888144547400 (size 1024):
>> <...>
>>     hex dump (first 32 bytes):
>>       00 00 00 00 00 00 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  ................
>>     backtrace:
>>       [<ffffffff8135cfc3>] audit_alloc+0x133/0x210
>>       [<ffffffff81239e63>] copy_process+0xcd3/0x2340
>>       [<ffffffff8123b5f3>] create_io_thread+0x63/0x90
>>       [<ffffffff81686604>] create_io_worker+0xb4/0x230
>>       [<ffffffff81686f68>] io_wqe_enqueue+0x248/0x3b0
>>       [<ffffffff8167663a>] io_queue_iowq+0xba/0x200
>>       [<ffffffff816768b3>] io_queue_async+0x113/0x180
>>       [<ffffffff816840df>] io_req_task_submit+0x18f/0x1a0
>>       [<ffffffff816841cd>] io_apoll_task_func+0xdd/0x120
>>       [<ffffffff8167d49f>] tctx_task_work+0x11f/0x570
>>       [<ffffffff81272c4e>] task_work_run+0x7e/0xc0
>>       [<ffffffff8125a688>] get_signal+0xc18/0xf10
>>       [<ffffffff8111645b>] arch_do_signal_or_restart+0x2b/0x730
>>       [<ffffffff812ea44e>] exit_to_user_mode_prepare+0x5e/0x180
>>       [<ffffffff844ae1b2>] syscall_exit_to_user_mode+0x12/0x20
>>       [<ffffffff844a7e80>] do_syscall_64+0x40/0x80
>>
>> Then,
>>
>>   3. io_sq_thread() or io_wqe_worker() frees @audit_context using
>>      audit_free();
>>   4. do_exit() eventually calls audit_free() again, which is okay
>>      because audit_free() does a NULL check.
>>
>> As suggested by Paul Moore, fix it by deleting audit_alloc_kernel() and
>> redundant audit_free() calls.
>>
>> Fixes: 5bd2182d58e9 ("audit,io_uring,io-wq: add some basic audit support to io_uring")
>> Suggested-by: Paul Moore <paul@paul-moore.com>
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
>> ---
>> Change since v1:
>>   - Delete audit_alloc_kernel() (Paul Moore)
>>
>>  fs/io-wq.c            |  3 ---
>>  fs/io_uring.c         |  4 ----
>>  include/linux/audit.h |  5 -----
>>  kernel/auditsc.c      | 25 -------------------------
>>  4 files changed, 37 deletions(-)
> 
> This looks good to me, thanks!  Although it looks like the io_uring
> related changes will need to be applied by hand as they are pointing
> to the old layout under fs/ as opposed to the newer layout in
> io_uring/ introduced during this merge window.
> 
> Jens, did you want to take this via the io_uring tree or should I take
> it via the audit tree?  If the latter, an ACK would be appreciated, if
> the former my ACK is below.
> 
> Acked-by: Paul Moore <paul@paul-moore.com>

Probably better if I take it, since I need to massage it into the
current tree anyway. We can then use this one as the base for the stable
backports that are going to be required.

-- 
Jens Axboe

--
Linux-audit mailing list
Linux-audit@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-audit


  reply	other threads:[~2022-08-04 14:32 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-03  5:02 [PATCH] audit, io_uring, io-wq: Fix memory leak in io_sq_thread() and io_wqe_worker() Peilin Ye
2022-08-03  5:02 ` Peilin Ye
2022-08-03 13:16 ` Paul Moore
2022-08-03 13:16   ` Paul Moore
2022-08-03 19:28   ` Paul Moore
2022-08-03 19:28     ` Paul Moore
2022-08-03 19:39     ` Jens Axboe
2022-08-03 19:39       ` Jens Axboe
2022-08-03 20:24     ` Peilin Ye
2022-08-03 20:24       ` Peilin Ye
2022-08-03 22:23 ` [PATCH v2] " Peilin Ye
2022-08-03 22:23   ` Peilin Ye
2022-08-04 13:51   ` Paul Moore
2022-08-04 13:51     ` Paul Moore
2022-08-04 14:32     ` Jens Axboe [this message]
2022-08-04 14:32       ` Jens Axboe
2022-08-04 14:44       ` Paul Moore
2022-08-04 14:44         ` Paul Moore
2022-08-04 14:36   ` Jens Axboe
2022-08-04 14:36     ` Jens Axboe

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=5756a75e-ea84-a04b-be07-90e7ee6626d6@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=asml.silence@gmail.com \
    --cc=eparis@redhat.com \
    --cc=io-uring@vger.kernel.org \
    --cc=linux-audit@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=peilin.ye@bytedance.com \
    --cc=yepeilin.cs@gmail.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 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.