Message ID | 52A92612.5080401@huawei.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Yang Yingliang <yangyingliang@huawei.com> Date: Thu, 12 Dec 2013 10:57:22 +0800 > It's doing a 64-bit divide which is not supported > on 32-bit architectures in psched_ns_t2l(). The > correct way to do this is to use do_div(). > > It's introduced by commit cc106e441a63 > ("net: sched: tbf: fix the calculation of max_size") > > Reported-by: kbuild test robot <fengguang.wu@intel.com> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> From: Yang Yingliang > It's doing a 64-bit divide which is not supported > on 32-bit architectures in psched_ns_t2l(). The > correct way to do this is to use do_div(). The 'len' value has just been divided by 1000000000, can it actually be larger than 32bit when the divide by 53 is done? ... > do_div(len, NSEC_PER_SEC); > > - if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) > - len = (len / 53) * 48; > + if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) { > + do_div(len, 53); > + len = len * 48; > + } David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c index a44928c..887e672 100644 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@ -131,8 +131,10 @@ static u64 psched_ns_t2l(const struct psched_ratecfg *r, do_div(len, NSEC_PER_SEC); - if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) - len = (len / 53) * 48; + if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) { + do_div(len, 53); + len = len * 48; + } if (len > r->overhead) len -= r->overhead;
It's doing a 64-bit divide which is not supported on 32-bit architectures in psched_ns_t2l(). The correct way to do this is to use do_div(). It's introduced by commit cc106e441a63 ("net: sched: tbf: fix the calculation of max_size") Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- Change note: Add commit which introduced this problem. --- net/sched/sch_tbf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -- 1.8.0 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html