A remoteproc could theoretically signal handover twice. This is unexpected
and would break the reference counting for the handover resources (power
domains, clocks, regulators, etc), so add a check to prevent that from
happening.

Reviewed-by: Dmitry Baryshkov <[email protected]>
Signed-off-by: Stephan Gerhold <[email protected]>
---
 drivers/remoteproc/qcom_q6v5.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
index 
769c6d6d6a731672eca9f960b05c68f6d4d77af2..58d5b85e58cdadabdd3e23d39c06a39196c3a194
 100644
--- a/drivers/remoteproc/qcom_q6v5.c
+++ b/drivers/remoteproc/qcom_q6v5.c
@@ -164,6 +164,11 @@ static irqreturn_t q6v5_handover_interrupt(int irq, void 
*data)
 {
        struct qcom_q6v5 *q6v5 = data;
 
+       if (q6v5->handover_issued) {
+               dev_err(q6v5->dev, "Handover signaled, but it already 
happened\n");
+               return IRQ_HANDLED;
+       }
+
        if (q6v5->handover)
                q6v5->handover(q6v5);
 

-- 
2.50.1


Reply via email to