lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 10 Feb 2013 09:18:24 +0100 From: Jiri Pirko <jiri@...nulli.us> To: Eric Dumazet <eric.dumazet@...il.com> Cc: netdev@...r.kernel.org, davem@...emloft.net, edumazet@...gle.com, jhs@...atatu.com, kuznet@....inr.ac.ru, j.vimal@...il.com Subject: Re: [patch net-next v3 08/11] tbf: fix value set for q->ptokens Sun, Feb 10, 2013 at 02:30:46AM CET, eric.dumazet@...il.com wrote: >On Sat, 2013-02-09 at 17:45 +0100, Jiri Pirko wrote: >> q->ptokens is in ns and we are assigning q->mtu directly to it. That is >> wrong. psched_l2t_ns() should be used to compute correct value. >> > > >Not clear why its a separate patch, and not folded in the 6th This is independent on 6th. Would be needed even if 6th wouldn't be there. > > >> Signed-off-by: Jiri Pirko <jiri@...nulli.us> >> --- >> net/sched/sch_tbf.c | 9 +++++---- >> 1 file changed, 5 insertions(+), 4 deletions(-) >> >> diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c >> index dc562a8..6e8b670 100644 >> --- a/net/sched/sch_tbf.c >> +++ b/net/sched/sch_tbf.c >> @@ -165,8 +165,8 @@ static struct sk_buff *tbf_dequeue(struct Qdisc *sch) >> >> if (q->peak_present) { >> ptoks = toks + q->ptokens; >> - if (ptoks > (long)q->mtu) >> - ptoks = q->mtu; >> + if (ptoks > (s64) psched_l2t_ns(&q->peak, q->mtu)) >> + ptoks = (s64) psched_l2t_ns(&q->peak, q->mtu); > >It seems a bit expensive to perform this in fast path. > >Please add a variable to cache psched_l2t_ns(&q->peak, q->mtu) Okay, I did not think that this is necessary, but sure, I will do that. Thanks! > > >> ptoks -= (s64) psched_l2t_ns(&q->peak, len); >> } >> toks += q->tokens; >> @@ -215,7 +215,8 @@ static void tbf_reset(struct Qdisc *sch) >> sch->q.qlen = 0; >> q->t_c = ktime_to_ns(ktime_get()); >> q->tokens = q->buffer; >> - q->ptokens = q->mtu; >> + if (q->peak_present) >> + q->ptokens = (s64) psched_l2t_ns(&q->peak, q->mtu); >> qdisc_watchdog_cancel(&q->watchdog); >> } >> >> @@ -296,11 +297,11 @@ static int tbf_change(struct Qdisc *sch, struct nlattr *opt) >> q->max_size = max_size; >> q->buffer = PSCHED_TICKS2NS(qopt->buffer); >> q->tokens = q->buffer; >> - q->ptokens = q->mtu; >> >> psched_ratecfg_precompute(&q->rate, rtab->rate.rate); >> if (ptab) { >> psched_ratecfg_precompute(&q->peak, ptab->rate.rate); >> + q->ptokens = (s64) psched_l2t_ns(&q->peak, q->mtu); > >Here probably. > > > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists