lkml.org 
[lkml]   [2006]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: How is Code in do_sys_settimeofday() safe in case of SMP and Nest Kernel Path?
    On Sat, 30 Sep 2006, Nick Piggin wrote
    >
    > You should write a patch and send it to Mister Morton.
    >
    > --
    > SUSE Labs, Novell Inc.
    > Send instant messages to your online friends http://au.messenger.yahoo.com
    >
    >

    This is a patch for your review.

    --- kernel/time.c.orig 2006-09-30 23:21:29.000000000 +0800
    +++ kernel/time.c 2006-09-30 23:38:18.000000000 +0800
    @@ -107,7 +107,16 @@ asmlinkage long sys_gettimeofday(struct
    return -EFAULT;
    }
    if (unlikely(tz != NULL)) {
    - if (copy_to_user(tz, &sys_tz, sizeof(sys_tz)))
    + struct timezone ktz;
    + unsigned long seq;
    +
    + do {
    + seq = read_seqbegin(&xtime_lock);
    + ktz.tz_minuteswest = sys_tz.tz_minuteswest;
    + ktz.tz_dsttime = sys_tz.tz_dsttime;
    + } while (unlikely(read_seqretry(&xtime_lock, seq)));
    +
    + if (copy_to_user(tz, &ktz, sizeof(ktz)))
    return -EFAULT;
    }
    return 0;
    @@ -164,12 +173,16 @@ int do_sys_settimeofday(struct timespec

    if (tz) {
    /* SMP safe, global irq locking makes it work. */
    - sys_tz = *tz;
    - if (firsttime) {
    - firsttime = 0;
    - if (!tv)
    - warp_clock();
    + write_seqlock_irq(&xtime_lock);
    + {
    + sys_tz = *tz;
    + if (firsttime) {
    + firsttime = 0;
    + if (!tv)
    + warp_clock();
    + }
    }
    + write_sequnlock_irq(&xtime_lock);
    }
    if (tv)
    {
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-09-30 18:13    [W:0.025 / U:32.356 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site