diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c index 433b070272d9..985436f51d19 100644 --- a/drivers/soc/qcom/pmic_glink.c +++ b/drivers/soc/qcom/pmic_glink.c @@ -312,10 +312,13 @@ struct pmic_glink_client *pmic_glink_register_client(struct device *dev, return ERR_PTR(-ENODEV); } + down_read(&pgdev->rpdev_sem); if (!atomic_read(&pgdev->state)) { + up_read(&pgdev->rpdev_sem); pr_err("pmic_glink is not up\n"); return ERR_PTR(-EPROBE_DEFER); } + up_read(&pgdev->rpdev_sem); client = kzalloc(sizeof(*client), GFP_KERNEL); if (!client)