netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Peilin Ye <yepeilin.cs@gmail.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Jiri Pirko <jiri@resnulli.us>,
	Peilin Ye <peilin.ye@bytedance.com>,
	Yuming Chen <chenyuming.junnan@bytedance.com>,
	Ted Lin <ted@mostlyuseful.tech>, Dave Taht <dave.taht@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Cong Wang <cong.wang@bytedance.com>
Subject: Re: [PATCH net] net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms
Date: Thu, 16 Jun 2022 20:08:14 -0700	[thread overview]
Message-ID: <20220616200814.15fff125@hermes.local> (raw)
In-Reply-To: <20220616234336.2443-1-yepeilin.cs@gmail.com>

On Thu, 16 Jun 2022 16:43:36 -0700
Peilin Ye <yepeilin.cs@gmail.com> wrote:

> From: Peilin Ye <peilin.ye@bytedance.com>
> 
> As reported by Yuming, currently tc always show a latency of UINT_MAX
> for netem Qdisc's on 32-bit platforms:
> 
>     $ tc qdisc add dev dummy0 root netem latency 100ms
>     $ tc qdisc show dev dummy0
>     qdisc netem 8001: root refcnt 2 limit 1000 delay 275s  275s
>                                                ^^^^^^^^^^^^^^^^
> 
> Let us take a closer look at netem_dump():
> 
>         qopt.latency = min_t(psched_tdiff_t, PSCHED_NS2TICKS(q->latency,
>                              UINT_MAX);
> 
> qopt.latency is __u32, psched_tdiff_t is signed long,
> (psched_tdiff_t)(UINT_MAX) is negative for 32-bit platforms, so
> qopt.latency is always UINT_MAX.
> 
> Fix it by using psched_time_t (u64) instead.
> 
> Note: confusingly, users have two ways to specify 'latency':
> 
>   1. normally, via '__u32 latency' in struct tc_netem_qopt;
>   2. via the TCA_NETEM_LATENCY64 attribute, which is s64.
> 
> For the second case, theoretically 'latency' could be negative.  This
> patch ignores that corner case, since it is broken (i.e. assigning a
> negative s64 to __u32) anyways, and should be handled separately.
> 
> Thanks Ted Lin for the analysis [1] .
> 
> [1] https://github.com/raspberrypi/linux/issues/3512
> 
> Reported-by: Yuming Chen <chenyuming.junnan@bytedance.com>
> Fixes: 112f9cb65643 ("netem: convert to qdisc_watchdog_schedule_ns")
> Reviewed-by: Cong Wang <cong.wang@bytedance.com>
> Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
> ---
>  net/sched/sch_netem.c | 4 ++--

Thanks for fixing. 
Guess it is time to run netem on one of the Pi's.

Acked-by: Stephen Hemminger <stephen@networkplumber.org>

  reply	other threads:[~2022-06-17  3:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-16 23:43 [PATCH net] net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms Peilin Ye
2022-06-17  3:08 ` Stephen Hemminger [this message]
2022-06-18  3:40 ` patchwork-bot+netdevbpf

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=20220616200814.15fff125@hermes.local \
    --to=stephen@networkplumber.org \
    --cc=chenyuming.junnan@bytedance.com \
    --cc=cong.wang@bytedance.com \
    --cc=dave.taht@gmail.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=peilin.ye@bytedance.com \
    --cc=ted@mostlyuseful.tech \
    --cc=xiyou.wangcong@gmail.com \
    --cc=yepeilin.cs@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).