Skip to content

Commit 98241a7

Browse files
Viken Dadhaniyagregkh
authored andcommitted
slimbus: qcom-ngd-ctrl: Add timeout for wait operation
In current driver qcom_slim_ngd_up_worker() indefinitely waiting for ctrl->qmi_up completion object. This is resulting in workqueue lockup on Kthread. Added wait_for_completion_interruptible_timeout to allow the thread to wait for specific timeout period and bail out instead waiting infinitely. Fixes: a899d32 ("slimbus: qcom-ngd-ctrl: add Sub System Restart support") Cc: stable@vger.kernel.org Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Viken Dadhaniya <quic_vdadhani@quicinc.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20240430091238.35209-2-srinivas.kandagatla@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 00e7d3b commit 98241a7

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/slimbus/qcom-ngd-ctrl.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1451,7 +1451,11 @@ static void qcom_slim_ngd_up_worker(struct work_struct *work)
14511451
ctrl = container_of(work, struct qcom_slim_ngd_ctrl, ngd_up_work);
14521452

14531453
/* Make sure qmi service is up before continuing */
1454-
wait_for_completion_interruptible(&ctrl->qmi_up);
1454+
if (!wait_for_completion_interruptible_timeout(&ctrl->qmi_up,
1455+
msecs_to_jiffies(MSEC_PER_SEC))) {
1456+
dev_err(ctrl->dev, "QMI wait timeout\n");
1457+
return;
1458+
}
14551459

14561460
mutex_lock(&ctrl->ssr_lock);
14571461
qcom_slim_ngd_enable(ctrl, true);

0 commit comments

Comments
 (0)