Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4b77f3c authored by Qianyu Gong's avatar Qianyu Gong Committed by Alexandre Belloni
Browse files

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: default avatarGong Qianyu <Qianyu.Gong@nxp.com>
Reviewed-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
parent a350259d
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -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