[PATCH] soc: apple: sart: require device link for consumers
Joshua Peisach
jpeisach at ubuntu.com
Tue Jun 16 04:58:23 PDT 2026
On Mon Jun 15, 2026 at 8:53 PM EDT, Pengpeng Hou wrote:
> devm_apple_sart_get() obtains the supplier platform device and attempts
> to create a runtime-PM device link to it, but it ignores device_link_add()
> failure. A consumer can then continue without the dependency that keeps
> the SART supplier ordered and runtime-PM reachable.
>
> Treat a failed device link as an error and drop the supplier device
> reference before returning.
>
> Signed-off-by: Pengpeng Hou <pengpeng at iscas.ac.cn>
> ---
> drivers/soc/apple/sart.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/soc/apple/sart.c b/drivers/soc/apple/sart.c
> index 9eaf3febb382..66b99955b395 100644
> --- a/drivers/soc/apple/sart.c
> +++ b/drivers/soc/apple/sart.c
> @@ -218,6 +218,7 @@ struct apple_sart *devm_apple_sart_get(struct device *dev)
> {
> struct device_node *sart_node;
> struct platform_device *sart_pdev;
> + struct device_link *link;
> struct apple_sart *sart;
>
> sart_node = of_parse_phandle(dev->of_node, "apple,sart", 0);
> @@ -236,8 +237,12 @@ struct apple_sart *devm_apple_sart_get(struct device *dev)
> return ERR_PTR(-EPROBE_DEFER);
> }
>
> - device_link_add(dev, &sart_pdev->dev,
> - DL_FLAG_PM_RUNTIME | DL_FLAG_AUTOREMOVE_SUPPLIER);
> + link = device_link_add(dev, &sart_pdev->dev,
> + DL_FLAG_PM_RUNTIME | DL_FLAG_AUTOREMOVE_SUPPLIER);
> + if (!link) {
> + put_device(&sart_pdev->dev);
> + return ERR_PTR(-ENODEV);
> + }
>
> put_device(&sart_pdev->dev);
>
I *think* this is okay...
Reviewed-by: Joshua Peisach <jpeisach at ubuntu.com>
More information about the linux-arm-kernel
mailing list