tree: git://git.cmpxchg.org/linux-mmotm.git master head: c7d9284ee4a63d6419a16b75fe101bad8235b98b commit: 5bcdae54ed7910798c2e284d4caab5f2115a92e8 [18/224] rtc: armada38x: fix concurrency access in armada38x_rtc_set_time config: arm-allmodconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 5bcdae54ed7910798c2e284d4caab5f2115a92e8 # save the attached .config to linux build tree make.cross ARCH=arm All warnings: drivers/rtc/rtc-armada38x.c: In function 'armada38x_rtc_read_time': >> drivers/rtc/rtc-armada38x.c:67:34: warning: unused variable 'flags' [-Wunused-variable] unsigned long time, time_check, flags; ^ drivers/rtc/rtc-armada38x.c: In function 'armada38x_rtc_set_time': >> drivers/rtc/rtc-armada38x.c:91:22: warning: unused variable 'flags' [-Wunused-variable] unsigned long time, flags; ^ vim +/flags +67 drivers/rtc/rtc-armada38x.c a3a42806 Gregory CLEMENT 2015-02-13 61 udelay(5); a3a42806 Gregory CLEMENT 2015-02-13 62 } a3a42806 Gregory CLEMENT 2015-02-13 63 a3a42806 Gregory CLEMENT 2015-02-13 64 static int armada38x_rtc_read_time(struct device *dev, struct rtc_time *tm) a3a42806 Gregory CLEMENT 2015-02-13 65 { a3a42806 Gregory CLEMENT 2015-02-13 66 struct armada38x_rtc *rtc = dev_get_drvdata(dev); a3a42806 Gregory CLEMENT 2015-02-13 @67 unsigned long time, time_check, flags; a3a42806 Gregory CLEMENT 2015-02-13 68 5bcdae54 Gregory CLEMENT 2015-05-06 69 mutex_lock(&rtc->mutex_time); a3a42806 Gregory CLEMENT 2015-02-13 70 time = readl(rtc->regs + RTC_TIME); a3a42806 Gregory CLEMENT 2015-02-13 71 /* a3a42806 Gregory CLEMENT 2015-02-13 72 * WA for failing time set attempts. As stated in HW ERRATA if a3a42806 Gregory CLEMENT 2015-02-13 73 * more than one second between two time reads is detected a3a42806 Gregory CLEMENT 2015-02-13 74 * then read once again. a3a42806 Gregory CLEMENT 2015-02-13 75 */ a3a42806 Gregory CLEMENT 2015-02-13 76 time_check = readl(rtc->regs + RTC_TIME); a3a42806 Gregory CLEMENT 2015-02-13 77 if ((time_check - time) > 1) a3a42806 Gregory CLEMENT 2015-02-13 78 time_check = readl(rtc->regs + RTC_TIME); a3a42806 Gregory CLEMENT 2015-02-13 79 5bcdae54 Gregory CLEMENT 2015-05-06 80 mutex_unlock(&rtc->mutex_time); a3a42806 Gregory CLEMENT 2015-02-13 81 a3a42806 Gregory CLEMENT 2015-02-13 82 rtc_time_to_tm(time_check, tm); a3a42806 Gregory CLEMENT 2015-02-13 83 a3a42806 Gregory CLEMENT 2015-02-13 84 return 0; a3a42806 Gregory CLEMENT 2015-02-13 85 } a3a42806 Gregory CLEMENT 2015-02-13 86 a3a42806 Gregory CLEMENT 2015-02-13 87 static int armada38x_rtc_set_time(struct device *dev, struct rtc_time *tm) a3a42806 Gregory CLEMENT 2015-02-13 88 { a3a42806 Gregory CLEMENT 2015-02-13 89 struct armada38x_rtc *rtc = dev_get_drvdata(dev); a3a42806 Gregory CLEMENT 2015-02-13 90 int ret = 0; a3a42806 Gregory CLEMENT 2015-02-13 @91 unsigned long time, flags; a3a42806 Gregory CLEMENT 2015-02-13 92 a3a42806 Gregory CLEMENT 2015-02-13 93 ret = rtc_tm_to_time(tm, &time); a3a42806 Gregory CLEMENT 2015-02-13 94 :::::: The code at line 67 was first introduced by commit :::::: a3a42806920ad12ec831fb2de4f63e251778300f drivers/rtc/rtc-armada38x: add a new RTC driver for recent mvebu SoCs :::::: TO: Gregory CLEMENT :::::: CC: Linus Torvalds --- 0-DAY kernel test infrastructure Open Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation