blob: 94bfd26fd5d7d167d4c051257b5dd90f0e97dfc4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
rpmsg_dev_probe() calls rpdev->ops->announce_create() only when the driver
specifies a callback and an endpoint was opened, but rpmsg_dev_remove()
calls announce_destroy() unconditionally. Fix this by adding the missing
check.
Cc: stable@vger.kernel.org
Fixes: 7586516ca043 ("rpmsg: Only invoke announce_create for rpdev with endpoints")
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
drivers/rpmsg/rpmsg_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c
index 5d661681a..fb444dc2f 100644
--- a/drivers/rpmsg/rpmsg_core.c
+++ b/drivers/rpmsg/rpmsg_core.c
@@ -533,7 +533,7 @@ static void rpmsg_dev_remove(struct device *dev)
struct rpmsg_device *rpdev = to_rpmsg_device(dev);
struct rpmsg_driver *rpdrv = to_rpmsg_driver(rpdev->dev.driver);
- if (rpdev->ops->announce_destroy)
+ if (rpdev->ept && rpdev->ops->announce_destroy)
rpdev->ops->announce_destroy(rpdev);
if (rpdrv->remove)
|