On 2024/9/20 20:45, Stephan Gerhold wrote: > On Fri, Sep 20, 2024 at 06:07:11PM +0800, Jinjie Ruan wrote: >> It's important to undo pm_runtime_use_autosuspend() with >> pm_runtime_dont_use_autosuspend() at driver exit time. >> >> But the pm_runtime_disable() and pm_runtime_dont_use_autosuspend() >> is missing in the error path for bam_dmux_probe(). So add it. >> >> Fixes: 21a0ffd9b38c ("net: wwan: Add Qualcomm BAM-DMUX WWAN network driver") >> Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx> >> --- >> drivers/net/wwan/qcom_bam_dmux.c | 12 +++++++++--- >> 1 file changed, 9 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/net/wwan/qcom_bam_dmux.c b/drivers/net/wwan/qcom_bam_dmux.c >> index 26ca719fa0de..34a4e8095161 100644 >> --- a/drivers/net/wwan/qcom_bam_dmux.c >> +++ b/drivers/net/wwan/qcom_bam_dmux.c >> @@ -823,17 +823,17 @@ static int bam_dmux_probe(struct platform_device *pdev) >> ret = devm_request_threaded_irq(dev, pc_ack_irq, NULL, bam_dmux_pc_ack_irq, >> IRQF_ONESHOT, NULL, dmux); >> if (ret) >> - return ret; >> + goto err_disable_pm; >> >> ret = devm_request_threaded_irq(dev, dmux->pc_irq, NULL, bam_dmux_pc_irq, >> IRQF_ONESHOT, NULL, dmux); >> if (ret) >> - return ret; >> + goto err_disable_pm; >> >> ret = irq_get_irqchip_state(dmux->pc_irq, IRQCHIP_STATE_LINE_LEVEL, >> &dmux->pc_state); >> if (ret) >> - return ret; >> + goto err_disable_pm; >> >> /* Check if remote finished initialization before us */ >> if (dmux->pc_state) { >> @@ -844,6 +844,12 @@ static int bam_dmux_probe(struct platform_device *pdev) >> } >> >> return 0; >> + >> +err_disable_pm: >> + pm_runtime_disable(dev); >> + pm_runtime_dont_use_autosuspend(dev); >> + pm_runtime_set_suspended(dev); > > Please drop the pm_runtime_set_suspended(dev); line, it should be > unneeded since runtime PM documentation says: > > the initial runtime PM status of all devices is ‘suspended’ Thank you! > > Thanks, > Stephan