lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 1027/1126] rtc: check if __rtc_read_time was successful
    Date
    From: Tom Rix <trix@redhat.com>

    commit 915593a7a663b2ad08b895a5f3ba8b19d89d4ebf upstream.

    Clang static analysis reports this issue
    interface.c:810:8: warning: Passed-by-value struct
    argument contains uninitialized data
    now = rtc_tm_to_ktime(tm);
    ^~~~~~~~~~~~~~~~~~~

    tm is set by a successful call to __rtc_read_time()
    but its return status is not checked. Check if
    it was successful before setting the enabled flag.
    Move the decl of err to function scope.

    Fixes: 2b2f5ff00f63 ("rtc: interface: ignore expired timers when enqueuing new timers")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Link: https://lore.kernel.org/r/20220326194236.2916310-1-trix@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/rtc/interface.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    --- a/drivers/rtc/interface.c
    +++ b/drivers/rtc/interface.c
    @@ -804,9 +804,13 @@ static int rtc_timer_enqueue(struct rtc_
    struct timerqueue_node *next = timerqueue_getnext(&rtc->timerqueue);
    struct rtc_time tm;
    ktime_t now;
    + int err;
    +
    + err = __rtc_read_time(rtc, &tm);
    + if (err)
    + return err;

    timer->enabled = 1;
    - __rtc_read_time(rtc, &tm);
    now = rtc_tm_to_ktime(tm);

    /* Skip over expired timers */
    @@ -820,7 +824,6 @@ static int rtc_timer_enqueue(struct rtc_
    trace_rtc_timer_enqueue(timer);
    if (!next || ktime_before(timer->node.expires, next->expires)) {
    struct rtc_wkalrm alarm;
    - int err;

    alarm.time = rtc_ktime_to_tm(timer->node.expires);
    alarm.enabled = 1;

    \
     
     \ /
      Last update: 2022-04-05 14:08    [W:6.460 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site