From: Johannes Weiner <hannes@cmpxchg.org>
To: Mashiro Chen <mashiro.chen@mailbox.org>
Cc: surenb@google.com, peterz@infradead.org, mingo@redhat.com,
juri.lelli@redhat.com, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, rostedt@goodmis.org,
bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
syzbot+4b1bd55fba6260160779@syzkaller.appspotmail.com
Subject: Re: [PATCH] sched/psi: initialize *flags in psi_memstall_enter when PSI is disabled
Date: Wed, 8 Apr 2026 12:40:25 -0400 [thread overview]
Message-ID: <adaE-bHBJrh5FITI@cmpxchg.org> (raw)
In-Reply-To: <754f231c-f9a0-495d-b0d8-58f8c8e4dc12@mailbox.org>
On Thu, Apr 09, 2026 at 12:14:50AM +0800, Mashiro Chen wrote:
> Hi Johannes,
>
> Good question. You're right that KMSAN's stack tracking persisting
> across page reuse boundaries is arguably a tool limitation. That said,
> I think fixing it on the PSI side is still reasonable:
>
> psi_memstall_enter() takes a pointer parameter with an implicit contract:
> if the caller passes &flags, they expect *flags to be initialized upon
> return. The current early-return silently violates that contract by
> leaving *flags uninitialized, even though the value is never actually used
> functionally.
The caller has no expectations towards the contents of *flags and no
business reading or manipulating them. It's an opaque channel that
lets _enter() communicate with _leave().
> The fix is essentially free (we're already in the early-return path) and
> makes the contract explicit. You're right that the original patch lacked
> a comment explaining this, I should have added:
>
> /* Initialize to 0 even in psi_disabled case to honor the
> * implicit API contract that *flags is initialized on return.
> * psi_memstall_leave() also returns early when psi_disabled
> * and does not read *flags, so this is zero-cost. */
> *flags = 0;
> return;
>
> That said, if you prefer this stays in KMSAN (e.g., treating stack
> variables as out-of-scope once their frame returns), I'm happy to drop
> the patch and redirect the effort there instead.
It sounds to me like this would be a good thing to fix regardless of
what psi is doing here. Even if psi initialized it to some value that
is meaningful to psi - that value is totally random, and for all
intents and purposes "uninitialized", from the view of a subsequent
user of that stack slot?
next prev parent reply other threads:[~2026-04-08 16:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-05 5:50 [PATCH] sched/psi: initialize *flags in psi_memstall_enter when PSI is disabled Mashiro Chen
2026-04-08 15:10 ` Johannes Weiner
2026-04-08 16:14 ` Mashiro Chen
2026-04-08 16:40 ` Johannes Weiner [this message]
2026-04-08 16:58 ` Mashiro Chen
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=adaE-bHBJrh5FITI@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mashiro.chen@mailbox.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=surenb@google.com \
--cc=syzbot+4b1bd55fba6260160779@syzkaller.appspotmail.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.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.