lkml.org 
[lkml]   [2008]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 17/42] rtc_time_to_tm: fix signed/unsigned arithmetic
    2.6.26-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Jan Altenberg <jan.altenberg@linutronix.de>

    commit 73442daf2ea85e2a779396b76b1a39b10188ecb5 upstream

    commit 945185a69daa457c4c5e46e47f4afad7dcea734f ("rtc: rtc_time_to_tm: use
    unsigned arithmetic") changed the some types in rtc_time_to_tm() to
    unsigned:

    void rtc_time_to_tm(unsigned long time, struct rtc_time *tm)
    {
    - register int days, month, year;
    + unsigned int days, month, year;

    This doesn't work for all cases, because days is checked for < 0 later
    on:

    if (days < 0) {
    year -= 1;
    days += 365 + LEAP_YEAR(year);
    }

    I think the correct fix would be to keep days signed and do an appropriate
    cast later on.

    Signed-off-by: Jan Altenberg <jan.altenberg@linutronix.de>
    Cc: Maciej W. Rozycki <macro@linux-mips.org>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: David Brownell <david-b@pacbell.net>
    Cc: Dmitri Vorobiev <dmitri.vorobiev@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/rtc/rtc-lib.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/drivers/rtc/rtc-lib.c
    +++ b/drivers/rtc/rtc-lib.c
    @@ -51,10 +51,11 @@ EXPORT_SYMBOL(rtc_year_days);
    */
    void rtc_time_to_tm(unsigned long time, struct rtc_time *tm)
    {
    - unsigned int days, month, year;
    + unsigned int month, year;
    + int days;

    days = time / 86400;
    - time -= days * 86400;
    + time -= (unsigned int) days * 86400;

    /* day of the week, 1970-01-01 was a Thursday */
    tm->tm_wday = (days + 4) % 7;
    --


    \
     
     \ /
      Last update: 2008-09-03 19:43    [W:0.038 / U:60.924 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site