All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	Ingo Molnar <mingo@elte.hu>, Anant Nitya <kernel@prachanda.info>,
	linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"David S. Miller" <davem@davemloft.net>,
	Linux Netdev List <netdev@vger.kernel.org>
Subject: Re: bad networking related lag in v2.6.22-rc2
Date: Wed, 23 May 2007 19:16:30 +0200	[thread overview]
Message-ID: <465476EE.3090103@trash.net> (raw)
In-Reply-To: <alpine.LFD.0.98.0705230752040.3890@woody.linux-foundation.org>

Linus Torvalds wrote:
> There appear to be other obvious problems in the recent "cleanups" in this 
> area..
> 
> Look at
> 
> 	psched_tdiff_bounded(psched_time_t tv1, psched_time_t tv2, psched_time_t bound)
> 	{
> 		return min(tv1 - tv2, bound);
> 	}
> 
> and compare it to the previous code:
> 
> 	#define PSCHED_TDIFF_SAFE(tv1, tv2, bound) \
> 		min_t(long long, (tv1) - (tv2), bound)
> 
> and ponder how that "trivial cleanup" totally broke the thing. 
> 
> Hint: "psched_time_t" is an "u64". What does that mean for
> 
> 	min(tv1 - tv2, bound);
> 
> again, when "tv2" is larger than tv1. It _used_ to return a negative 
> value. Now it returns a positive "bound" upper bound, because "tv1-tv2" 
> will be used as a huge unsigned (and thus _positive_) integer. And was 
> that accidental, or done on purpose?
> 
> Sounds accidental to me, since you then want to return a "psched_tdiff_t", 
> which is typedeffed to be "long".
>
> Doesn't sound very safe to me, especially since the commit message for 
> this is "[NET_SCHED]: turn PSCHED_TDIFF_SAFE into inline function", and 
> there's no indication that anybody realized that it changed semantics in 
> the process.


I did realize it, but tv2 > tv1 can't happen and makes no sense for
the users of this function. I probably should have provided a more
detailed changelog entry.

> Hmm? What _should_ that thing do?


It is used to calculate the amount of tokens a tocken bucket has
accumulated since the last refill, thus we always have tv1 >= tv2
(modulo ktime wraps). In fact tv2 > tv1 was never properly
supported. This macro would have returned the negative long long
value, but all users assign it to a psched_tdiff_t (long), so
depending on the exact values, it might still be interpreted as a
large positive value. Additionally there was a second implementation
for the gettimeofday clocksource that didn't return the negative
difference but the bound value.


  reply	other threads:[~2007-05-23 17:19 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-17 17:45 [patch] CFS scheduler, -v13 Ingo Molnar
2007-05-17 21:47 ` Anant Nitya
2007-05-18 10:26   ` Ingo Molnar
2007-05-18 16:13     ` Anant Nitya
2007-05-19 21:16     ` Anant Nitya
2007-05-20  6:38       ` Ingo Molnar
2007-05-21  7:58       ` bad networking related lag in v2.6.22-rc2 Ingo Molnar
2007-05-21  8:03         ` Ingo Molnar
2007-05-21  8:05           ` Ingo Molnar
2007-05-21  8:12           ` Ingo Molnar
2007-05-21  8:29             ` David Miller
2007-05-21 10:09               ` Ingo Molnar
2007-05-21 10:14             ` Anant Nitya
2007-05-21 10:20               ` Ingo Molnar
2007-05-22  6:20                 ` Anant Nitya
2007-05-21 19:40             ` Anant Nitya
2007-05-21 20:46               ` Ingo Molnar
2007-05-21 21:02                 ` Patrick McHardy
2007-05-21 21:30                   ` Patrick McHardy
2007-05-22  6:17                     ` Anant Nitya
2007-05-22  6:22                       ` Ingo Molnar
2007-05-23  5:40                         ` Anant Nitya
2007-05-23  6:30                           ` Ingo Molnar
2007-05-23 10:56                             ` Patrick McHardy
2007-05-23 11:05                               ` Ingo Molnar
2007-05-23 11:25                               ` Herbert Xu
2007-05-23 11:33                                 ` Patrick McHardy
2007-05-23 15:00                                   ` Linus Torvalds
2007-05-23 17:16                                     ` Patrick McHardy [this message]
2007-05-23 11:40                                 ` Ingo Molnar
2007-05-23 21:30                                   ` David Miller
2007-05-24  5:41                                     ` Patrick McHardy
2007-05-24  6:40                                       ` David Miller
2007-05-24  7:12                                     ` Anant Nitya
2007-05-22  6:23                       ` Ingo Molnar
2007-05-22  6:24                         ` Ingo Molnar
2007-05-22  9:17                       ` Patrick McHardy
2007-05-22 12:47                         ` Anant Nitya
2007-05-21  8:25         ` David Miller
2007-05-21  8:28           ` Ingo Molnar
2007-05-21  8:30             ` David Miller
2007-05-21 15:57       ` [patch] CFS scheduler, -v13 Linus Torvalds
2007-05-22 22:06   ` Bill Davidsen
2007-05-23  5:45     ` Anant Nitya
2007-05-18 15:20 ` Michael Lothian
2007-05-18 15:56   ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=465476EE.3090103@trash.net \
    --to=kaber@trash.net \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=kernel@prachanda.info \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.