drivers/rtc/rtc-twl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
platform_get_irq() may fail, so check its return value and propagate
the error in case of failure.
Signed-off-by: Salah Triki <salah.triki@gmail.com>
---
drivers/rtc/rtc-twl.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c
index e6106e67e1f4..992b3e1347f2 100644
--- a/drivers/rtc/rtc-twl.c
+++ b/drivers/rtc/rtc-twl.c
@@ -224,8 +224,11 @@ static int twl_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
{
struct platform_device *pdev = to_platform_device(dev);
struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
- int irq = platform_get_irq(pdev, 0);
- int ret;
+ int irq, ret;
+
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0)
+ return irq;
if (enabled) {
ret = set_rtc_irq_bit(twl_rtc,
--
2.43.0
On 24/07/2025 03:06:31+0100, Salah Triki wrote:
> platform_get_irq() may fail, so check its return value and propagate
> the error in case of failure.
>
> Signed-off-by: Salah Triki <salah.triki@gmail.com>
> ---
> drivers/rtc/rtc-twl.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/rtc/rtc-twl.c b/drivers/rtc/rtc-twl.c
> index e6106e67e1f4..992b3e1347f2 100644
> --- a/drivers/rtc/rtc-twl.c
> +++ b/drivers/rtc/rtc-twl.c
> @@ -224,8 +224,11 @@ static int twl_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
> {
> struct platform_device *pdev = to_platform_device(dev);
> struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
> - int irq = platform_get_irq(pdev, 0);
> - int ret;
> + int irq, ret;
> +
> + irq = platform_get_irq(pdev, 0);
> + if (irq < 0)
> + return irq;
It won't ever fail because we know it already succeeded earlier.
>
> if (enabled) {
> ret = set_rtc_irq_bit(twl_rtc,
> --
> 2.43.0
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
…
> > +++ b/drivers/rtc/rtc-twl.c
> > @@ -224,8 +224,11 @@ static int twl_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
> > {
> > struct platform_device *pdev = to_platform_device(dev);
> > struct twl_rtc *twl_rtc = dev_get_drvdata(dev);
> > - int irq = platform_get_irq(pdev, 0);
> > - int ret;
> > + int irq, ret;
> > +
> > + irq = platform_get_irq(pdev, 0);
> > + if (irq < 0)
> > + return irq;
>
> It won't ever fail because we know it already succeeded earlier.
An execution failure would be strange at this place after a successful function call
within twl_rtc_probe(), wouldn't it?
https://elixir.bootlin.com/linux/v6.16-rc7/source/drivers/rtc/rtc-twl.c#L504-L519
Regards,
Markus
© 2016 - 2026 Red Hat, Inc.