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)
|
||||
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) {
|
||||
ret = devm_request_threaded_irq(dev, ds3232->irq, NULL,
|
||||
ds3232_irq,
|
||||
@ -380,10 +385,8 @@ static int ds3232_probe(struct device *dev, struct regmap *regmap, int irq,
|
||||
} else
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user