On Mon, Aug 19, 2024 at 01:07:44PM -0700, Bjorn Andersson wrote: > Amit and Johan both reported a NULL pointer dereference in the > pmic_glink client code during initialization, and Stephen Boyd pointed > out the problem (race condition). > > While investigating, and writing the fix, I noticed that > ucsi_unregister() is called in atomic context but tries to sleep, and I > also noticed that the condition for when to inform the pmic_glink client > drivers when the remote has gone down is just wrong. > > So, let's fix all three. > Changes in v2: > - Refer to the correct commit in the ucsi_unregister() patch. > - Updated wording in the same commit message about the new error message > in the log. > - Changed the data type of the introduced state variables, opted to go > for a bool as we only represent two states (and I would like to > further clean this up going forward) > - Initialized the spinlock > - Link to v1: https://lore.kernel.org/r/20240818-pmic-glink-v6-11-races-v1-0-f87c577e0bc9@xxxxxxxxxxx > > --- > Bjorn Andersson (3): > soc: qcom: pmic_glink: Fix race during initialization > usb: typec: ucsi: Move unregister out of atomic section > soc: qcom: pmic_glink: Actually communicate with remote goes down Tested-by: Johan Hovold <johan+linaro@xxxxxxxxxx>