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>
next prev parent 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 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.