All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Vincent Donnefort" <vdonnefort@google.com>,
	linux-trace-kernel@vger.kernel.org
Subject: Re: [PATCH v8 02/21] tracing/remotes: Release tracefs,eventfs on registration failure
Date: Fri, 06 Nov 2026 18:21:41 +0000	[thread overview]
Message-ID: <sashiko-outbox-202014@kernel.org> (raw)
In-Reply-To: <20261106180657.2460376-3-vdonnefort@google.com>

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Medium] tracing/remotes: NULL deref in trace_remote_init_eventfs()
  under lockdown
- [Low] tracing/remotes: missing Fixes trailers for
  trace_remote_register() leaks
--

commit 02468907e3da178a9b587aedf4931ee736d0fcda
Author: Vincent Donnefort <vdonnefort@google.com>

> tracing/remotes: Release tracefs,eventfs on registration failure
>
> In trace_remote_register(), if registration of events or the init
> callback fails, the created tracefs and eventfs directories are leaked.
>
> Release the entire eventfs and tracefs hierarchy on trace_remote
> registration failure.
>
> Signed-off-by: Vincent Donnefort <vdonnefort@google.com>

[Severity: Low]
This fixes resource leaks on the trace_remote_register() error paths.
Should it include Fixes: tags for the commits that introduced them:

  Fixes: 072529158e60 ("tracing: Add events to trace remotes")
  Fixes: bf2ba0f8ca1a ("tracing: Add init callback to trace remotes")

> diff --git a/kernel/trace/trace_remote.c b/kernel/trace/trace_remote.c
> index e8cbbd01964df..10091ff9d42ab 100644
> --- a/kernel/trace/trace_remote.c
> +++ b/kernel/trace/trace_remote.c

[ ... ]

> @@ -1374,35 +1395,37 @@ static int trace_remote_init_eventfs(const char *remote_name, struct trace_remot
>  			.callback	= remote_event_callback,
>  		}
>  	};
> -	bool eventfs_create = false;
> +	struct eventfs_inode *eventfs_root, *eventfs_subdir, *e;
>  
> -	if (!eventfs) {
> -		eventfs = eventfs_create_events_dir("events", remote->dentry, dir_entries,
> -						    ARRAY_SIZE(dir_entries), remote);
> -		if (IS_ERR(eventfs))
> -			return PTR_ERR(eventfs);
> +	eventfs_root = remote->eventfs_root;
> +	eventfs_subdir = remote->eventfs_subdir;
> +	if (!eventfs_root) {
> +		eventfs_root = eventfs_create_events_dir("events", remote->dentry, dir_entries,
> +							 ARRAY_SIZE(dir_entries), remote);
> +		if (IS_ERR(eventfs_root))
> +			return PTR_ERR(eventfs_root);
>  
>  		/*
>  		 * Create similar hierarchy as local events even if a single system is supported at
>  		 * the moment
>  		 */
> -		eventfs = eventfs_create_dir(remote_name, eventfs, NULL, 0, NULL);
> -		if (IS_ERR(eventfs))
> -			return PTR_ERR(eventfs);
> -
> -		remote->eventfs = eventfs;
> -		eventfs_create = true;
> +		eventfs_subdir = eventfs_create_dir(remote_name, eventfs_root, NULL, 0, NULL);
> +		if (IS_ERR(eventfs_subdir)) {
> +			eventfs_remove_events_dir(eventfs_root);
> +			return PTR_ERR(eventfs_subdir);
> +		}
>  	}

[Severity: Medium]
Can this dereference a NULL eventfs_root in eventfs_remove_events_dir() if
kernel lockdown becomes active between trace_remote_init_tracefs() and
trace_remote_init_eventfs()?

When security_locked_down(LOCKDOWN_TRACEFS) is true,
eventfs_create_events_dir() returns NULL rather than an ERR_PTR.
IS_ERR(eventfs_root) does not catch NULL, so eventfs_create_dir() is called
with a NULL parent and returns ERR_PTR(-EINVAL).  The new cleanup path then
passes eventfs_root == NULL to eventfs_remove_events_dir(), which
unconditionally dereferences it in get_root_inode().

Checking IS_ERR_OR_NULL(eventfs_root) or !eventfs_root after
eventfs_create_events_dir() would avoid this regression.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261106180657.2460376-1-vdonnefort@google.com?part=2

  reply	other threads:[~2026-11-06 18:21 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06 18:06 [PATCH v8 00/21] tracing/remotes: Add printk, dump_on_panic and boot parameters Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 01/21] tracing/remotes: Gate tracefs files opening on trace remote registration Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 02/21] tracing/remotes: Release tracefs,eventfs on registration failure Vincent Donnefort
2026-11-06 18:21   ` sashiko-bot [this message]
2026-11-06 18:06 ` [PATCH v8 03/21] tracing/remotes: Use kstrtobool for boolean tracefs files Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 04/21] tracing/remotes: Initialise pos in trace_start() Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 05/21] tracing/remotes: Annotate remote shared fields with READ_ONCE/WRITE_ONCE Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 06/21] tracing/remotes: Use a single per-remote polling work Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 07/21] tracing/simple_ring_buffer: Add support for compressed length Vincent Donnefort
2026-11-06 18:20   ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 08/21] tracing/remotes: Add dmesg tracefs file Vincent Donnefort
2026-11-06 18:26   ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 09/21] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-11-06 18:26   ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 10/21] tracing/remotes: selftests: Prefix hypervisor folder Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 11/21] ring-buffer: Use irqsave for the reader lock in ring_buffer_poll_remote Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 12/21] ring-buffer: Avoid reader_lock deadlock during panic Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 13/21] ring-buffer: Use panic-friendly locking in ring_buffer_iter interface Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 14/21] ring-buffer: Add kerneldoc for ring_buffer_poll_remote Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 15/21] tracing/remotes: Use ring_buffer_capacity() in trace_remote_has_cpu() Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 16/21] tracing/remotes: Add dump_on_panic tracefs file Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 17/21] tracing/remotes: selftests: Add a test for the " Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 18/21] tracing/remotes: Add poll_ms " Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 19/21] tracing/remotes: Add trace_remote cmdline options Vincent Donnefort
2026-11-06 18:33   ` sashiko-bot
2026-11-06 18:06 ` [PATCH v8 20/21] Documentation: tracing/remotes: Add detailed tracefs layout Vincent Donnefort
2026-11-06 18:06 ` [PATCH v8 21/21] Documentation/kernel-parameters: Add trace_remote Vincent Donnefort

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=sashiko-outbox-202014@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vdonnefort@google.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.