Loading
usb: typec: ucsi: Move unregister out of atomic section
mainline inclusion from mainline-v6.11-rc6 commit 11bb2ffb679399f99041540cf662409905179e3a category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAR60S CVE: CVE-2024-46691 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=11bb2ffb679399f99041540cf662409905179e3a -------------------------------- Commit '9329933699b3 ("soc: qcom: pmic_glink: Make client-lock non-sleeping")' moved the pmic_glink client list under a spinlock, as it is accessed by the rpmsg/glink callback, which in turn is invoked from IRQ context. This means that ucsi_unregister() is now called from atomic context, which isn't feasible as it's expecting a sleepable context. An effort is under way to get GLINK to invoke its callbacks in a sleepable context, but until then lets schedule the unregistration. A side effect of this is that ucsi_unregister() can now happen after the remote processor, and thereby the communication link with it, is gone. pmic_glink_send() is amended with a check to avoid the resulting NULL pointer dereference. This does however result in the user being informed about this error by the following entry in the kernel log: ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: failed to send UCSI write request: -5 Fixes: 9329933699b3 ("soc: qcom: pmic_glink: Make client-lock non-sleeping") Cc: stable@vger.kernel.org Reviewed-by:Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by:
Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by:
Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Tested-by:
Amit Pundir <amit.pundir@linaro.org> Reviewed-by:
Johan Hovold <johan+linaro@kernel.org> Tested-by:
Johan Hovold <johan+linaro@kernel.org> Signed-off-by:
Bjorn Andersson <quic_bjorande@quicinc.com> Link: https://lore.kernel.org/r/20240820-pmic-glink-v6-11-races-v3-2-eec53c750a04@quicinc.com Signed-off-by:
Bjorn Andersson <andersson@kernel.org> Conflicts: drivers/usb/typec/ucsi/ucsi_glink.c [Yongqiang: GPIO reading was before ucsi_register, Only context adaption] Signed-off-by:
Yongqiang Liu <liuyongqiang13@huawei.com>