[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] Re: [PATCH RFC] do_settime is backwards?!
Check out the definition of do_div which works strangely. I was confused by that also, but the code in question does work (I think!). > -----Original Message----- > From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx > [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx]On Behalf Of > Rik van Riel > Sent: Wednesday, August 06, 2008 3:47 PM > To: Rik van Riel > Cc: xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: [Xen-devel] Re: [PATCH RFC] do_settime is backwards?! > > > This patch fixes an apparent bug in do_settime() that was found while > auditing the code to fix an unrelated bug. > > Signed-off-by: Rik van Riel <riel@xxxxxxxxxx> > --- > I still hope I am wrong :) > > On Wed, 6 Aug 2008 17:37:23 -0400 > Rik van Riel <riel@xxxxxxxxxx> wrote: > > > I hope I've overlooked some detail, but just in case I am > > right here's a patch to reverse the assignments. > > > > How did this ever work? > > Of course, that is still not enough. A u32 has some > more bits than a billion, so the wc_nsec variable > could be off by as much as 3 seconds... > > > diff -up xen/arch/x86/time.c.backwards xen/arch/x86/time.c > --- xen/arch/x86/time.c.backwards 2008-08-06 > 17:33:26.000000000 -0400 > +++ xen/arch/x86/time.c 2008-08-06 17:43:46.000000000 -0400 > @@ -819,12 +819,16 @@ void do_settime(unsigned long secs, unsi > u32 y, _wc_sec, _wc_nsec; > struct domain *d; > > + /* Calculate nanoseconds */ > x = (secs * 1000000000ULL) + (u64)nsecs - system_time_base; > + /* Calculate seconds. */ > y = do_div(x, 1000000000); > + /* Leave the remainder for the nanosecond field. */ > + x -= (y * 1000000000); > > spin_lock(&wc_lock); > - wc_sec = _wc_sec = (u32)x; > - wc_nsec = _wc_nsec = (u32)y; > + wc_sec = _wc_sec = (u32)y; > + wc_nsec = _wc_nsec = (u32)x; > spin_unlock(&wc_lock); > > rcu_read_lock(&domlist_read_lock); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |