]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
remoteproc: qcom: q6v5: Avoid handling handover twice
authorStephan Gerhold <stephan.gerhold@linaro.org>
Wed, 20 Aug 2025 16:02:34 +0000 (18:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Dec 2025 11:45:13 +0000 (12:45 +0100)
[ Upstream commit 54898664e1eb6b5b3e6cdd9343c6eb15da776153 ]

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 <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Link: https://lore.kernel.org/r/20250820-rproc-qcom-q6v5-fixes-v2-2-910b1a3aff71@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/remoteproc/qcom_q6v5.c

index 9c9beeb3bcd748a6e93f473021c2c11045e909df..a6ddb58330eb5020948702ddaec2e83aa0e86128 100644 (file)
@@ -121,6 +121,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);