• M
    rtc: Check return value from mc146818_get_time() · 9a47e2db
    Mateusz Jończyk 提交于
    stable inclusion
    from stable-v5.10.159
    commit 775d4661f1455a623f5008a2b53b350df07da3a9
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I7NTXH
    
    Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=775d4661f1455a623f5008a2b53b350df07da3a9
    
    --------------------------------
    
    [ Upstream commit 0dd8d6cb ]
    
    There are 4 users of mc146818_get_time() and none of them was checking
    the return value from this function. Change this.
    
    Print the appropriate warnings in callers of mc146818_get_time() instead
    of in the function mc146818_get_time() itself, in order not to add
    strings to rtc-mc146818-lib.c, which is kind of a library.
    
    The callers of alpha_rtc_read_time() and cmos_read_time() may use the
    contents of (struct rtc_time *) even when the functions return a failure
    code. Therefore, set the contents of (struct rtc_time *) to 0x00,
    which looks more sensible then 0xff and aligns with the (possibly
    stale?) comment in cmos_read_time:
    
    	/*
    	 * If pm_trace abused the RTC for storage, set the timespec to 0,
    	 * which tells the caller that this RTC value is unusable.
    	 */
    
    For consistency, do this in mc146818_get_time().
    
    Note: hpet_rtc_interrupt() may call mc146818_get_time() many times a
    second. It is very unlikely, though, that the RTC suddenly stops
    working and mc146818_get_time() would consistently fail.
    
    Only compile-tested on alpha.
    Signed-off-by: NMateusz Jończyk <mat.jonczyk@o2.pl>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: linux-alpha@vger.kernel.org
    Cc: x86@kernel.org
    Signed-off-by: NAlexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20211210200131.153887-4-mat.jonczyk@o2.pl
    Stable-dep-of: cd17420e ("rtc: cmos: avoid UIP when writing alarm time")
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    Signed-off-by: Nsanglipeng <sanglipeng1@jd.com>
    9a47e2db
rtc-mc146818-lib.c 6.3 KB