| From 05154c7baf5c1cabe845dae0b4f5e712f8d73ee8 Mon Sep 17 00:00:00 2001 |
| From: Chris Lew <clew@codeaurora.org> |
| Date: Fri, 4 Oct 2019 15:27:00 -0700 |
| Subject: [PATCH] rpmsg: glink: Fix rpmsg_register_device err handling |
| |
| commit f7e714988edaffe6ac578318e99501149b067ba0 upstream. |
| |
| The device release function is set before registering with rpmsg. If |
| rpmsg registration fails, the framework will call device_put(), which |
| invokes the release function. The channel create logic does not need to |
| free rpdev if rpmsg_register_device() fails and release is called. |
| |
| Fixes: b4f8e52b89f6 ("rpmsg: Introduce Qualcomm RPM glink driver") |
| Cc: stable@vger.kernel.org |
| Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> |
| Signed-off-by: Chris Lew <clew@codeaurora.org> |
| Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c |
| index 56880d6c0dc0..fc10dbb8dcb0 100644 |
| --- a/drivers/rpmsg/qcom_glink_native.c |
| +++ b/drivers/rpmsg/qcom_glink_native.c |
| @@ -1423,15 +1423,13 @@ static int qcom_glink_rx_open(struct qcom_glink *glink, unsigned int rcid, |
| |
| ret = rpmsg_register_device(rpdev); |
| if (ret) |
| - goto free_rpdev; |
| + goto rcid_remove; |
| |
| channel->rpdev = rpdev; |
| } |
| |
| return 0; |
| |
| -free_rpdev: |
| - kfree(rpdev); |
| rcid_remove: |
| spin_lock_irqsave(&glink->idr_lock, flags); |
| idr_remove(&glink->rcids, channel->rcid); |
| -- |
| 2.7.4 |
| |