2023-08-07 13:26:08

by Andrei Coardos

[permalink] [raw]
Subject: [PATCH] rtc: armada38x: remove unneeded call to platform_set_drvdata()

This function call was found to be unnecessary as there is no equivalent
platform_get_drvdata() call to access the private data of the driver. Also,
the private data is defined in this driver, so there is no risk of it being
accessed outside of this driver file.

Signed-off-by: Andrei Coardos <[email protected]>
---
drivers/rtc/rtc-armada38x.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c
index b4139c200676..5ed028429565 100644
--- a/drivers/rtc/rtc-armada38x.c
+++ b/drivers/rtc/rtc-armada38x.c
@@ -527,7 +527,6 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "Interrupt not available.\n");
rtc->irq = -1;
}
- platform_set_drvdata(pdev, rtc);

if (rtc->irq != -1)
device_init_wakeup(&pdev->dev, 1);
--
2.34.1



2023-08-07 19:38:43

by Alexandru Ardelean

[permalink] [raw]
Subject: Re: [PATCH] rtc: armada38x: remove unneeded call to platform_set_drvdata()

On Mon, Aug 7, 2023 at 3:48 PM Andrei Coardos <[email protected]> wrote:
>
> This function call was found to be unnecessary as there is no equivalent
> platform_get_drvdata() call to access the private data of the driver. Also,
> the private data is defined in this driver, so there is no risk of it being
> accessed outside of this driver file.
>

NAK on this.
This still calls dev_get_drvdata() in PM routines to access the private data.

> Signed-off-by: Andrei Coardos <[email protected]>
> ---
> drivers/rtc/rtc-armada38x.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/rtc/rtc-armada38x.c b/drivers/rtc/rtc-armada38x.c
> index b4139c200676..5ed028429565 100644
> --- a/drivers/rtc/rtc-armada38x.c
> +++ b/drivers/rtc/rtc-armada38x.c
> @@ -527,7 +527,6 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
> dev_warn(&pdev->dev, "Interrupt not available.\n");
> rtc->irq = -1;
> }
> - platform_set_drvdata(pdev, rtc);
>
> if (rtc->irq != -1)
> device_init_wakeup(&pdev->dev, 1);
> --
> 2.34.1
>

2023-08-07 23:07:24

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH] rtc: armada38x: remove unneeded call to platform_set_drvdata()

On Mon, Aug 07, 2023 at 03:48:11PM +0300, Andrei Coardos wrote:
> This function call was found to be unnecessary as there is no equivalent
> platform_get_drvdata() call to access the private data of the driver. Also,
> the private data is defined in this driver, so there is no risk of it being
> accessed outside of this driver file.

I hope you're not going about doing this _broken_ thing and thinking
"if there's no platform_get_drvdata(), then there shouldn't be any
platform_set_drvdata()" because that is WRONG. Wrong wrong wrong wrong
wrong.

platform_set_drvdata(pdev, foo);

sets the driver data on dev, and is basically implemented as:

dev_set_drvdata(&pdev->dev, foo);

So, to access the driver data, one can either use:

platform_get_drvdata(pdev)

or:

dev_get_drvdata(dev)

where one is dealing with a "struct device" pointer. So, the lack of
any platform_get_drvdata() does *NOT* mean that platform_set_drvdata()
can be removed.

If that's what you've been doing, you are *creating* bugs - and you
need to stop until you properly understand what you are doing.

Thanks anyway, but... your change is totally wrong and will wreck the
driver, causing it to oops the kernel.

Strong and definite NAK.

I do *NOT* expect to ever see a patch like this again for this driver.

Thanks.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!