The issue is related to the tpm pm suspend() function in the Linux kernel, 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. The estimated number of potentially affected devices worldwide is not available. There is no information about real-world incidents where this issue was exploited.
The function `tpm pm suspend()` is vulnerable, and the `tpm get random()` function is called in a loop from a kthread.
To fix this, the `tpm try get ops()` function is called, which itself is a wrapper around `tpm chip start()`, but takes the appropriate mutex.