mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
soc: qcom: pmic_glink: use semaphore in pmic_glink_register_client()
Commit 922e045cea2f3 ("soc: qcom: pmic_glink: Fix a race condition
in removing rpmsg device") added a semaphore to protect rpdev
usage when it is added/removed when rpmsg driver is probed/removed
so that clients can use it in pmic_glink_write() concurrently.
When a client tries to register using pmic_glink_register_client()
it checks for the state of pmic_glink device. It's logical to use
the semaphore before reading the state.
Change-Id: Ib715819ea2008f14d204fe097ac1631dbd129e40
Signed-off-by: Subbaraman Narayanamurthy <quic_subbaram@quicinc.com>
This commit is contained in:
parent
3a218c2979
commit
b57cad08fb
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user