Hi John, Is this patch a valid fix or just a noise?
Regards, Shawn On Thu, Jul 05, 2012 at 12:13:07AM +0800, Shawn Guo wrote: > The following is a test sequence that installs a rtc module, remove it > and installs it again. > > $ insmod rtc-snvs.ko > snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc0 > $ hwclock > Thu Jul 5 08:53:35 2012 0.000000 seconds > $ rmmod rtc-snvs.ko > $ insmod rtc-snvs.ko > snvs_rtc 20cc034.snvs-rtc-lp: rtc core: registered 20cc034.snvs-rtc-lp as rtc1 > $ hwclock > hwclock: can't open '/dev/misc/rtc': No such file or directory > $ > > The device is registered as rtc0 for the first time insmod, while it > becomes rtc1 with the later insmod. > > It's root caused by alarmtimer which never puts the device even when > the rtc is removed. The patch adds a .remove_dev hook to have device > properly put, so that above insmod/rmmod sequence can the rtc device > registered in a consistent behavior. > > Signed-off-by: Shawn Guo <shawn....@linaro.org> > --- > kernel/time/alarmtimer.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c > index aa27d39..39e8773 100644 > --- a/kernel/time/alarmtimer.c > +++ b/kernel/time/alarmtimer.c > @@ -96,6 +96,17 @@ static int alarmtimer_rtc_add_device(struct device *dev, > return 0; > } > > +static void alarmtimer_rtc_remove_device(struct device *dev, > + struct class_interface *class_intf) > +{ > + unsigned long flags; > + > + spin_lock_irqsave(&rtcdev_lock, flags); > + rtcdev = NULL; > + put_device(dev); > + spin_unlock_irqrestore(&rtcdev_lock, flags); > +} > + > static inline void alarmtimer_rtc_timer_init(void) > { > rtc_timer_init(&rtctimer, NULL, NULL); > @@ -103,6 +114,7 @@ static inline void alarmtimer_rtc_timer_init(void) > > static struct class_interface alarmtimer_rtc_interface = { > .add_dev = &alarmtimer_rtc_add_device, > + .remove_dev = &alarmtimer_rtc_remove_device, > }; > > static int alarmtimer_rtc_interface_setup(void) > -- > 1.7.5.4 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/