In the Linux kernel, the following vulnerability has been resolved: spi: cadence-qspi: remove system-wide suspend helper calls from runtime PM hooks The ->runtimesuspend() and ->runtimeresume() callbacks are not expected to call spicontrollersuspend() and spicontrollerresume(). Remove calls to those in the cadence-qspi driver. Those helpers have two roles currently: - They stop/start the queue, including dealing with the kworker. - They toggle the SPI controller SPICONTROLLERSUSPENDED flag. It requires acquiring ctlr->buslockmutex. Step one is irrelevant because cadence-qspi is not queued. Step two however has two implications: - A deadlock occurs, because ->runtimeresume() is called in a context where the lock is already taken (in the ->execop() callback, where the usage count is incremented). - It would disallow all operations once the device is auto-suspended. Here is a brief call tree highlighting the mutex deadlock: spimemexecop() ... spimemaccessstart() mutexlock(&ctlr->buslockmutex) cqspiexecmemop() pmruntimeresumeandget() cqspiresume() spicontrollerresume() mutexlock(&ctlr->buslockmutex) ... spimemaccessend() mutexunlock(&ctlr->buslockmutex) ...