On 7/11/23 10:18 PM, Sergey Shtylyov wrote: > If this driver enables the xHC clocks while resuming from sleep, it calls > clk_prepare_enable() without checking for errors and blithely goes on to > read/write the xHC's registers -- which, with the xHC not being clocked, > at least on ARM32 usually causes an imprecise external abort exceptions > which cause kernel oops. Currently, the chips for which the driver does > the clock dance on suspend/resume seem to be the Broadcom STB SoCs, based > on ARM32 CPUs, as it seems... > > In order to fix this issue, add the result checks for clk_prepare_enable() > calls in xhci_plat_resume(), add conditional clk_disable_unprepare() calls > on the error path of xhci_plat_resume(); then factor out the common clock > disabling code from the suspend() and resume() driver PM methods into a > separate function to avoid code duplication. > > Found by Linux Verification Center (linuxtesting.org) with the Svace static > analysis tool. > > Fixes: 8bd954c56197 ("usb: host: xhci-plat: suspend and resume clocks") > Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx> > > --- > This patch is against the 'usb-linus' branch of Greg KH's 'usb.git' repo... The v4 of the patch was posted almost 2 months ago... What's going on, is Mathias still opn vacations? [...] MBR, Sergey