Re: [PATCH v2 00/12] s390: More this_cpu_*() changes

From: Mark Rutland

Date: Fri Sep 18 2026 - 07:56:02 EST


On Fri, Sep 18, 2026 at 12:59:22PM +0200, Heiko Carstens wrote:
> On Fri, Sep 18, 2026 at 11:31:25AM +0100, Mark Rutland wrote:
> > > v2:
> > > - Yet another brown paper bug: Re-add CPU migration check to last
> > > patch. Unconditionally recalculating and updating the percpu variable
> > > address and percpu offset register can corrupt previous context
> > > register state in several cases (not only the single case reported by
> > > Sashiko).
> >
> > Do all of those case boil down to:
> >
> > * During exception entry from context A to context B, a nested exception
> > is taken from context B to context C before percpu_entry() is called,
> > and the nested exception handler updates B's live regs using A's
> > percpu register indices.
> >
> > * During exception return from context B to context A, a nested
> > exception is taken from context B to context C after percpu_entry() is
> ^^^^^^^^^^^^
> That should have been percpu_exit(), I guess.

Whoops; yes!

> > called, and the nested exception handler updates B's live regs using
> > A's percpu register indices.
> >
> > ... or was there another case that you spotted (e.g. some case where
> > percpu_{entry,exit}() aren't called)?
>
> Yes, all scenarios boil down to exactly the above.
>
> > On arm64, I think we avoid those two cases by virtue of not taking
> > nested (architectural) exceptions during those windows, and by not
> > applying fixups for SDEI events (SW NMIs that can be taken during those
> > windows).
> >
> > If there's another case to consider, it'd be handy to know.
>
> I'm not aware of more cases.

Perfect, thanks for confirming!

Mark.