Messages in this thread | | | Subject | Re: [PATCH] alarmtimer: ensure RTC module is not unloaded | From | Michal Simek <> | Date | Mon, 21 Aug 2017 11:42:31 +0200 |
| |
On 21.8.2017 00:01, Alexandre Belloni wrote: > When registering the rtc device to be used to handle alarm timers, > get_device is used to ensure the device doesn't go away but the module can > still be unloaded. Call try_module_get to ensure the rtc driver will not go > away. > > Reported-by: Michal Simek <monstr@monstr.eu> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> > --- > kernel/time/alarmtimer.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c > index 0b8ff7d257ea..1c682eef7e6b 100644 > --- a/kernel/time/alarmtimer.c > +++ b/kernel/time/alarmtimer.c > @@ -28,6 +28,7 @@ > #include <linux/workqueue.h> > #include <linux/freezer.h> > #include <linux/compat.h> > +#include <linux/module.h> > > #include "posix-timers.h" > > @@ -100,6 +101,11 @@ static int alarmtimer_rtc_add_device(struct device *dev, > > spin_lock_irqsave(&rtcdev_lock, flags); > if (!rtcdev) { > + if (!try_module_get(rtc->owner)) { > + spin_unlock_irqrestore(&rtcdev_lock, flags); > + return -1; > + } > + > rtcdev = rtc; > /* hold a reference so it doesn't go away */ > get_device(dev); >
Tested-by: Michal Simek <michal.simek@xilinx.com>
Thanks, Michal
-- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs
[unhandled content-type:application/pgp-signature] | |