Message ID | 20230807124811.16763-1-aboutphysycs@gmail.com |
---|---|
State | Rejected |
Headers | show |
Series | rtc: armada38x: remove unneeded call to platform_set_drvdata() | expand |
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 >
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 --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);
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(-)