Re: [PATCH v3] char: tpm: Protect tpm_pm_suspend with locks

From: Jason A. Donenfeld
Date: Sat Dec 03 2022 - 05:25:20 EST


Hi Thorsten / Linus,

On Fri, Dec 02, 2022 at 10:32:31AM +0100, Thorsten Leemhuis wrote:
> Hi, this is your Linux kernel regression tracker.
>
> On 28.11.22 20:56, Jason A. Donenfeld wrote:
>
> BTW, many thx for taking care of this Jason!
>
> > From: Jan Dabros <jsd@xxxxxxxxxxxx>
> >
> > Currently tpm transactions are executed unconditionally in
> > tpm_pm_suspend() function, which may lead to races with other tpm
> > accessors in the system. Specifically, the hw_random tpm driver makes
> > use of tpm_get_random(), and this function is called in a loop from a
> > kthread, which means it's not frozen alongside userspace, and so can
> > race with the work done during system suspend:
>
> Peter, Jarkko, did you look at this patch or even applied it already to
> send it to Linus soon? Doesn't look like it from here, but maybe I
> missed something.
>
> Thing is: the linked regression afaics is overdue fixing (for details
> see "Prioritize work on fixing regressions" in
> https://www.kernel.org/doc/html/latest/process/handling-regressions.html
> ). Hence if this doesn't make any progress I'll likely have to point
> Linus to this patch and suggest to apply it directly if it looks okay
> from his perspective.

I'm very concerned about this. Jan posted the original fix a month ago,
and then it fizzled out. Then I got word of the bug last week and
revived the fix [1], while also figuring out how to reproduce it
together with the reporter. I emailed the tpm maintainers offlist to
poke them, and nobody woke up. And tomorrow is rc8 day. Given that this
patch is pretty simple, has been tested to fix an annoying regression,
and that neither of the three maintainers has popped up this week to get
things rolling, I think we should just commit this now anyway, to make
sure it gets in for rc8. This way there's still a solid week of testing.
I'm in general not a big fan of the "nuclear option" of not waiting for
out to lunch maintainers, but given that it is now December 3, it seems
like the right decision.

[1] https://lore.kernel.org/all/20221128195651.322822-1-Jason@xxxxxxxxx/

Jason