Commit f7e71498 authored by Chris Lew's avatar Chris Lew Committed by Bjorn Andersson
Browse files

rpmsg: glink: Fix rpmsg_register_device err handling



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: b4f8e52b ("rpmsg: Introduce Qualcomm RPM glink driver")
Cc: stable@vger.kernel.org
Tested-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarChris Lew <clew@codeaurora.org>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent b646293e
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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);