rtc: ds3232: fix call trace when rtc->ops_lock is used as NULL
The rtc->ops_lock would be accessed in ds3232_irq() without being initialized as rtc_device_register() is called too late. So move devm_rtc_device_register() just before registering irq handler to initialize rtc->ops_lock earlier. Signed-off-by: Gong Qianyu <Qianyu.Gong@nxp.com> Reviewed-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
parent
a350259da4
commit
b4b77f3c28
@ -369,6 +369,11 @@ static int ds3232_probe(struct device *dev, struct regmap *regmap, int irq,
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
ds3232->rtc = devm_rtc_device_register(dev, name, &ds3232_rtc_ops,
|
||||||
|
THIS_MODULE);
|
||||||
|
if (IS_ERR(ds3232->rtc))
|
||||||
|
return PTR_ERR(ds3232->rtc);
|
||||||
|
|
||||||
if (ds3232->irq > 0) {
|
if (ds3232->irq > 0) {
|
||||||
ret = devm_request_threaded_irq(dev, ds3232->irq, NULL,
|
ret = devm_request_threaded_irq(dev, ds3232->irq, NULL,
|
||||||
ds3232_irq,
|
ds3232_irq,
|
||||||
@ -380,10 +385,8 @@ static int ds3232_probe(struct device *dev, struct regmap *regmap, int irq,
|
|||||||
} else
|
} else
|
||||||
device_init_wakeup(dev, 1);
|
device_init_wakeup(dev, 1);
|
||||||
}
|
}
|
||||||
ds3232->rtc = devm_rtc_device_register(dev, name, &ds3232_rtc_ops,
|
|
||||||
THIS_MODULE);
|
|
||||||
|
|
||||||
return PTR_ERR_OR_ZERO(ds3232->rtc);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
|
Loading…
Reference in New Issue
Block a user