From 40271de1421e0d02f87b37b27a2d8a8d93cfdc8c Mon Sep 17 00:00:00 2001 From: Justin Pettit Date: Fri, 8 Oct 2010 13:50:16 -0700 Subject: [PATCH] netdev: Don't divide by zero when "linux-htb" zero min-rate is used A "min-rate" of zero for the "linux-htb" QoS type would cause a divide by zero exception. This patch prevents that by just returning zero. A later patch will try to enforce reasonable values for "min-rate". Bug #3745 --- lib/netdev-linux.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index f2afc3520..7668eff9f 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -2898,7 +2898,7 @@ tc_bytes_to_ticks(unsigned int rate, unsigned int size) if (!buffer_hz) { read_psched(); } - return ((unsigned long long int) ticks_per_s * size) / rate; + return rate ? ((unsigned long long int) ticks_per_s * size) / rate : 0; } /* Returns the number of bytes that need to be reserved for qdisc buffering at @@ -3244,9 +3244,7 @@ tc_put_rtab(struct ofpbuf *msg, uint16_t type, const struct tc_ratespec *rate) /* Calculates the proper value of 'buffer' or 'cbuffer' in HTB options given a * rate of 'Bps' bytes per second, the specified 'mtu', and a user-requested * burst size of 'burst_bytes'. (If no value was requested, a 'burst_bytes' of - * 0 is fine.) - * - * This */ + * 0 is fine.) */ static int tc_calc_buffer(unsigned int Bps, int mtu, uint64_t burst_bytes) { -- 2.43.0