Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sai Sree Kartheek Adivi" <s-adivi@ti.com>
Cc: vkoul@kernel.org, Frank.Li@kernel.org, dmaengine@vger.kernel.org,
	robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v11 11/19] dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to k3-udma-common.c
Date: Thu, 01 Oct 2026 09:06:37 +0000	[thread overview]
Message-ID: <20261001090637.832AD1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261001084105.1692228-12-s-adivi@ti.com>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] mm: UAF in of_xudma_dev_get() due to dereference after put_device()
- [High] mm: UAF in xudma_dev_put() due to devm_ unbind race
- [Medium] Commit message claims 'No functional changes intended' but adds features
--

commit d7ff936b088ca2c00890bff99f72a6c55660576f
Author: Sai Sree Kartheek Adivi <s-adivi@ti.com>

dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to k3-udma-common.c

Relocate the #include directive for k3-udma-private.c to k3-udma-common.c
to share code between UDMA variants and prepare for variant-specific
implementations.

>     No functional changes intended.

[Severity: Medium]
The commit message explicitly asserts "No functional changes intended", but the
patch actively introduces functional module pinning logic (try_module_get).
Could the commit message be updated to accurately reflect these lifecycle
changes?

> diff --git a/drivers/dma/ti/k3-udma-private.c b/drivers/dma/ti/k3-udma-private.c
> index 44c097fff5ee6..d2501e074bcfb 100644
> --- a/drivers/dma/ti/k3-udma-private.c
> +++ b/drivers/dma/ti/k3-udma-private.c
> @@ -54,10 +54,26 @@ struct udma_dev *of_xudma_dev_get(struct device_node *np, const char *property)
>  		return ERR_PTR(-EPROBE_DEFER);
>  	}
>  
> +	/*
> +	 * Callers keep using ud (via function pointers stored in it, e.g.
> +	 * ud->psil_pair) after this call returns, bypassing the dmaengine
> +	 * core's own try_module_get() protection. Pin the owning driver's
> +	 * module here so it can't be unloaded out from under a live glue
> +	 * client; xudma_dev_put() releases it.
> +	 */
> +	if (!try_module_get(ud->ddev.owner))

[Severity: High]
Does this code introduce a use-after-free race?

Earlier in of_xudma_dev_get(), put_device(&pdev->dev) is called, which drops
the reference to the platform device:

	ud = platform_get_drvdata(pdev);
	put_device(&pdev->dev);
	if (!ud) {
		pr_debug("UDMA has not been probed\n");
		return ERR_PTR(-EPROBE_DEFER);
	}

Immediately after this, the new code executes try_module_get(ud->ddev.owner).

If a concurrent device unbind (e.g., via sysfs) occurs in this tight window,
the devres-managed ud object can be freed. The subsequent access to
ud->ddev.owner dereferences the freed pointer.

Should put_device() be called after we are done accessing ud?

> +		return ERR_PTR(-ENODEV);
> +
>  	return ud;
>  }
>  EXPORT_SYMBOL(of_xudma_dev_get);
>  
> +void xudma_dev_put(struct udma_dev *ud)
> +{
> +	module_put(ud->ddev.owner);

[Severity: High]
Can this dereference a freed pointer upon device unbind?

The ud pointer is implicitly managed by devres. When of_xudma_dev_get() returns
it to the client, it explicitly drops the device reference without establishing
a device link. The module pinning added here does not prevent sysfs device
unbinding.

If the UDMA device is unbound, devres frees ud. Later, when the client cleans
up, it calls this new xudma_dev_put(), which dereferences the already-freed
ud->ddev.owner.

> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261001084105.1692228-1-s-adivi@ti.com?part=11

  reply	other threads:[~2026-10-01  9:06 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01  8:40 [PATCH v11 00/19] dmaengine: ti: Add support for BCDMA v2 and PKTDMA v2 Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 01/19] dmaengine: ti: k3-udma: Fix sporadic crash on AM62x Sai Sree Kartheek Adivi
2026-10-01  8:57   ` sashiko-bot
2026-10-01  8:40 ` [PATCH v11 02/19] dmaengine: ti: k3-udma: move macros to header file Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 03/19] dmaengine: ti: k3-udma: move structs and enums " Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 04/19] dmaengine: ti: k3-udma: move static inline helper functions " Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 05/19] dmaengine: ti: k3-udma: move descriptor management to k3-udma-common.c Sai Sree Kartheek Adivi
2026-10-01  9:03   ` sashiko-bot
2026-10-01  8:40 ` [PATCH v11 06/19] dmaengine: ti: k3-udma: move ring management functions " Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 07/19] dmaengine: ti: k3-udma: Add variant-specific function pointers to udma_dev Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 08/19] dmaengine: ti: k3-udma: move udma utility functions to k3-udma-common.c Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 09/19] dmaengine: ti: k3-udma: move resource management " Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 10/19] dmaengine: ti: k3-udma: refactor resource setup functions Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 11/19] dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to k3-udma-common.c Sai Sree Kartheek Adivi
2026-10-01  9:06   ` sashiko-bot [this message]
2026-10-01  8:40 ` [PATCH v11 12/19] drivers: soc: ti: k3-ringacc: handle absence of tisci Sai Sree Kartheek Adivi
2026-10-05 16:05   ` Vinod Koul
2026-10-01  8:40 ` [PATCH v11 13/19] dt-bindings: dma: ti: Add K3 BCDMA V2 Sai Sree Kartheek Adivi
2026-10-01  9:08   ` sashiko-bot
2026-10-01  8:40 ` [PATCH v11 14/19] dt-bindings: dma: ti: Add K3 PKTDMA V2 Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 15/19] dmaengine: ti: k3-psil-am62l: Add AM62Lx PSIL and PDMA data Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 16/19] dmaengine: ti: k3-udma-v2: New driver for K3 BCDMA_V2 Sai Sree Kartheek Adivi
2026-10-01  9:18   ` sashiko-bot
2026-10-01  8:40 ` [PATCH v11 17/19] dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2 Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 18/19] dmaengine: ti: k3-udma-v2: Update glue layer to support " Sai Sree Kartheek Adivi
2026-10-01  8:40 ` [PATCH v11 19/19] dmaengine: ti: k3-udma: Validate resource ID and fix logging in reservation Sai Sree Kartheek Adivi

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=20261001090637.832AD1F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=s-adivi@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox