From: sashiko-bot@kernel.org
To: "Guangshuo Li" <lgs201920130244@gmail.com>
Cc: vkoul@kernel.org, dmaengine@vger.kernel.org, Frank.Li@kernel.org
Subject: Re: [PATCH] dmaengine: qcom: hidma: fix autosuspend cleanup during teardown
Date: Sat, 08 Aug 2026 11:41:48 +0000 [thread overview]
Message-ID: <20260808114149.397D01F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260808112551.2786782-1-lgs201920130244@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] The probe error path does not explicitly free the non-MSI interrupt before tearing down hardware data structures, leading to a potential Use-After-Free.
--
--- Patch [1]: [PATCH] dmaengine: qcom: hidma: fix autosuspend cleanup during teardown ---
commit 70b55f9899639dda5787b14a1ceb8890d7e7d005
Author: Guangshuo Li <lgs201920130244@gmail.com>
dmaengine: qcom: hidma: fix autosuspend cleanup during teardown
This patch fixes unbalanced usage counts during runtime PM teardown in the
Qualcomm HIDMA driver. It adds missing pm_runtime_dont_use_autosuspend() calls
to both the probe failure path and the device removal path.
> diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
> index 7a7f302a96991..d60d5f9a6182f 100644
> --- a/drivers/dma/qcom/hidma.c
> +++ b/drivers/dma/qcom/hidma.c
> @@ -894,6 +894,7 @@ static int hidma_probe(struct platform_device *pdev)
> hidma_free(dmadev);
> bailout:
> pm_runtime_put_sync(&pdev->dev);
> + pm_runtime_dont_use_autosuspend(&pdev->dev);
[Severity: High]
This is a pre-existing issue, but does the probe error path have a
use-after-free risk for the non-MSI interrupt?
Looking at the uninit path just above this in hidma_probe():
drivers/dma/qcom/hidma.c:hidma_probe() {
...
uninit:
if (msi)
hidma_free_msis(dmadev);
hidma_ll_uninit(dmadev->lldev);
...
}
If this is not an MSI interrupt, it remains active when hidma_ll_uninit()
is called because it was registered with devm_request_irq().
The hidma_ll_uninit() function calls tasklet_kill(&lldev->task) while
the hardware interrupt is still enabled.
If an interrupt fires during this window, the ISR hidma_ll_inthandler()
can call hidma_post_completed(), which reschedules the tasklet via
tasklet_schedule(&lldev->task).
Since devres will eventually free the IRQ and the lldev memory, could
the re-scheduled tasklet remain queued and execute later, dereferencing
the freed lldev pointer?
Should the non-MSI interrupt be explicitly freed using devm_free_irq()
before calling hidma_ll_uninit()?
> pm_runtime_disable(&pdev->dev);
> return rc;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260808112551.2786782-1-lgs201920130244@gmail.com?part=1
prev parent reply other threads:[~2026-08-08 11:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-08 11:25 [PATCH] dmaengine: qcom: hidma: fix autosuspend cleanup during teardown Guangshuo Li
2026-08-08 11:41 ` sashiko-bot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260808114149.397D01F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=lgs201920130244@gmail.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.