On Mon, Oct 09 2023 at 17:02, Biju Das wrote: >> On Mon, Oct 09 2023 at 15:30, Biju Das wrote: >> > You mean we should update[1] (charger-manager driver)as it is the one >> > using alarmtimer_get_rtcdev()?? >> >> # git grep -c alarmtimer_get_rtcdev >> drivers/power/supply/charger-manager.c:1 >> include/linux/alarmtimer.h:2 >> kernel/time/alarmtimer.c:10 > > kernel/time/alarmtimer.c has alarmtimer_get_rtcdev()check everywhere, > that is missing in charger-manager.c. I will add the same, is it ok? The code does in the init function: if (alarmtimer_get_rtcdev()) { .... } IOW, charger-manager.c expects that alarm is working when alarmtimer_get_rtcdev() returns non NULL at init. So ripping the RTC device out under it is going to result in a disfunctional driver. I'm not convinced that you can fix this by sprinkling a ton of checks around the code. But that's not the worst of it. The alarmtimer infrastructure is generally not designed for device/module removal. Why? The posix timer interface is fundamentally expecting that an armed alarm timer is actually functional. The fact that the class interface does not have a remove_dev callback is not an oversight and holding a reference on the module and a reference on the device is intended to ensure that the device cannot vanish. The changelog lacks any form of explanation why this is required and how removal of the registered RTC device is actually possible. Neither does it provide any analysis why this cannot result in malfunction. Thanks, tglx