From: Justin Pettit Date: Fri, 8 Oct 2010 20:50:16 +0000 (-0700) Subject: netdev: Don't divide by zero when "linux-htb" zero min-rate is used X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=015c93a49a4380a1645de83a0567d4736ddde622;p=openvswitch 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 --- diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index abfbe6ef..dfea605d 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -2938,7 +2938,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 @@ -3284,9 +3284,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) {