From: Andrea Righi <arighi@nvidia.com>
To: Tejun Heo <tj@kernel.org>
Cc: David Vernet <void@manifault.com>,
Changwoo Min <changwoo@igalia.com>,
sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org,
Emil Tsalapatis <emil@etsalapatis.com>
Subject: Re: [PATCH sched_ext/for-7.1-fixes] sched_ext: Move scx_error() out of scx_link_sched()'s lock region
Date: Thu, 7 May 2026 06:31:13 +0200 [thread overview]
Message-ID: <afwVkU3160Ws9weF@gpd4> (raw)
In-Reply-To: <c14dc57cf2227c29e315122d11902a1a@kernel.org>
Hi Tejun,
On Wed, May 06, 2026 at 08:02:46AM -1000, Tejun Heo wrote:
> scx_link_sched() holds scx_sched_lock. The scx_error() calls inside take the
> same lock through scx_claim_exit() and deadlock. Move them out of the guard.
>
> Fixes: 6b4576b09714 ("sched_ext: Reject sub-sched attachment to a disabled parent")
> Signed-off-by: Tejun Heo <tj@kernel.org>
Looks good.
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Thanks,
-Andrea
> ---
> kernel/sched/ext.c | 22 +++++++++++++++++-----
> 1 file changed, 17 insertions(+), 5 deletions(-)
>
> --- a/kernel/sched/ext.c
> +++ b/kernel/sched/ext.c
> @@ -5661,10 +5661,12 @@ static void refresh_watchdog(void)
>
> static s32 scx_link_sched(struct scx_sched *sch)
> {
> + const char *err_msg;
> + s32 ret = 0;
> +
> scoped_guard(raw_spinlock_irq, &scx_sched_lock) {
> #ifdef CONFIG_EXT_SUB_SCHED
> struct scx_sched *parent = scx_parent(sch);
> - s32 ret;
>
> if (parent) {
> /*
> @@ -5674,15 +5676,16 @@ static s32 scx_link_sched(struct scx_sch
> * parent can shoot us down.
> */
> if (atomic_read(&parent->exit_kind) != SCX_EXIT_NONE) {
> - scx_error(sch, "parent disabled");
> - return -ENOENT;
> + err_msg = "parent disabled";
> + ret = -ENOENT;
> + break;
> }
>
> ret = rhashtable_lookup_insert_fast(&scx_sched_hash,
> &sch->hash_node, scx_sched_hash_params);
> if (ret) {
> - scx_error(sch, "failed to insert into scx_sched_hash (%d)", ret);
> - return ret;
> + err_msg = "failed to insert into scx_sched_hash";
> + break;
> }
>
> list_add_tail(&sch->sibling, &parent->children);
> @@ -5692,6 +5695,15 @@ static s32 scx_link_sched(struct scx_sch
> list_add_tail_rcu(&sch->all, &scx_sched_all);
> }
>
> + /*
> + * scx_error() takes scx_sched_lock via scx_claim_exit(), so it must run after
> + * the guard above is released.
> + */
> + if (ret) {
> + scx_error(sch, "%s (%d)", err_msg, ret);
> + return ret;
> + }
> +
> refresh_watchdog();
> return 0;
> }
next prev parent reply other threads:[~2026-05-07 4:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-06 18:02 [PATCH sched_ext/for-7.1-fixes] sched_ext: Move scx_error() out of scx_link_sched()'s lock region Tejun Heo
2026-05-07 4:31 ` Andrea Righi [this message]
2026-05-07 21:12 ` Tejun Heo
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=afwVkU3160Ws9weF@gpd4 \
--to=arighi@nvidia.com \
--cc=changwoo@igalia.com \
--cc=emil@etsalapatis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=tj@kernel.org \
--cc=void@manifault.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.