diff mbox series

rtc: armada38x: remove unneeded call to platform_set_drvdata()

Message ID 20230807124811.16763-1-aboutphysycs@gmail.com
State Rejected
Headers show
Series rtc: armada38x: remove unneeded call to platform_set_drvdata() | expand

Commit Message

Andrei Coardos Aug. 7, 2023, 12:48 p.m. UTC
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 <aboutphysycs@gmail.com>
---
 drivers/rtc/rtc-armada38x.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Alexandru Ardelean Aug. 7, 2023, 5:32 p.m. UTC | #1
On Mon, Aug 7, 2023 at 3:48 PM Andrei Coardos <aboutphysycs@gmail.com> 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 <aboutphysycs@gmail.com>
> ---
>  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
>
Russell King (Oracle) Aug. 7, 2023, 10:36 p.m. UTC | #2
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.
diff mbox series

Patch

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);