On Thu, Nov 24, 2022 at 03:35:20PM +0100, Matija Glavinic Pecotic wrote: > set_rtc_noop, get_rtc_noop are used runtime, therefore need init removed. > Crash was observed on x86 platform where cmos rtc is unused and disabled > via device tree. Function was triggered from ntp: sync_hw_clock, although > CONFIG_RTC_SYSTOHC=n, however sync_cmos_clock doesn't honour that. > > Workqueue: events_power_efficient sync_hw_clock > RIP: 0010:set_rtc_noop > Call Trace: > update_persistent_clock64 > sync_hw_clock > > Fix by dropping __init and making set/get_rtc_noop available runtime. FWIW, Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> (I would change prefix to "x86/rtc:" but it's up to you and x86 maintainers) Note, you need to keep a tag if new version of the patch needs to be sent and nothing significantly changed there. You may utilize `b4` tool for that (I'm sure it's available in your distribution) by retrieving patch from the lore.kernel.org archive. > Fixes: c311ed6183f4 ("x86/init: Allow DT configured systems to disable RTC at boot time") > Signed-off-by: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@xxxxxxxxx> > --- > v3: Update commit message based on Andy's comments (further trim to backtrace, proper tag) > v2: Update commit message based on Andy's comments > > arch/x86/kernel/x86_init.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c > index 57353519bc11..0ab707bbefe2 100644 > --- a/arch/x86/kernel/x86_init.c > +++ b/arch/x86/kernel/x86_init.c > @@ -32,8 +32,8 @@ static int __init iommu_init_noop(void) { return 0; } > static void iommu_shutdown_noop(void) { } > bool __init bool_x86_init_noop(void) { return false; } > void x86_op_int_noop(int cpu) { } > -static __init int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; } > -static __init void get_rtc_noop(struct timespec64 *now) { } > +static int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; } > +static void get_rtc_noop(struct timespec64 *now) { } > > static __initconst const struct of_device_id of_cmos_match[] = { > { .compatible = "motorola,mc146818" }, > -- > 2.31.0 -- With Best Regards, Andy Shevchenko