remoteproc: qcom_q6v5_mss: fix q6v5_probe() error paths
authorAlex Elder <elder@linaro.org>
Fri, 3 Apr 2020 17:50:05 +0000 (12:50 -0500)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Thu, 16 Apr 2020 22:53:15 +0000 (15:53 -0700)
commit5839681002383bf369d303ecb955a34f6e20e3d4
tree1e50ec5c857575fd0ca4b8f78150bf70569e007f
parent13c060b50a341dd60303e5264d12108b5747f200
remoteproc: qcom_q6v5_mss: fix q6v5_probe() error paths

If an error occurs in q6v5_probe() after the proxy power domains
are attached, but before qcom_add_ipa_notify_subdev() is called,
qcom_remove_ipa_notify_subdev() is called in the error path, which
is a bug.  Fix this by having that call be reached through a
different label.

Additionally, if qcom_add_sysmon_subdev() returns an error, the
subdevs that had already been added will not be properly removed.
Fix this by having the added subdevs (including the IPA notify one)
be removed in this case.

Finally, arrange for the sysmon subdev to be removed before the rest
in the event rproc_add() returns an error.

Have cleanup activity done in q6v5_remove() be done in the reverse
order they are set up in q6v5_probe() (the same order they're done
in the q6v5_probe() error path).  Use a local variable for the
remoteproc pointer, which is used repeatedly.

Remove errant semicolons at the end of two function blocks.

Signed-off-by: Alex Elder <elder@linaro.org>
Link: https://lore.kernel.org/r/20200403175005.17130-4-elder@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
drivers/remoteproc/qcom_q6v5_mss.c