In function `tc_init`, hz is parsed from the content of file
`"/proc/net/psched"` and can be 0.
In function `hierarchy_token_bucket_class_verify`, hz is directly used
as a divisor in
`htb->buffer = htb->rate / hz + htb->mtu;` without any check. This adds a check on hz before using it as a divisor.
Co-authored-by: jinyaoguo <guo846@purdue.edu>
(cherry picked from commit
1a596054a0f937bfc244580f07510759a0e45657)
if (r < 0)
return log_error_errno(r, "Failed to read /proc/net/psched: %m");
+ /* Kernel would never hand us 0 Hz. */
+ assert(hz > 0);
if (htb->buffer == 0)
htb->buffer = htb->rate / hz + htb->mtu;
if (htb->ceil_buffer == 0)