libalias: fix divide by zero causing panic

The packet_limit can fall to 0, leading to a divide by zero abort in
the "packets % packet_limit".

An possible solution would be to apply a lower limit of 1 after the
calculation of packet_limit, but since any number modulo 1 gives 0,
the more efficient solution is to skip the modulo operation for
packet_limit <= 1.

Since this is a fix for a panic observed in stable/12, merging this
fix to stable/12 and stable/13 before expiry of the 3 day waiting
period might be justified, if it works for the reporter of the issue.

Reported by:	Karl Denninger <karl@denninger.net>
MFC after:	3 days
This commit is contained in:
Stefan Eßer 2021-07-10 13:00:56 +02:00
parent 63ca9ea4f3
commit 58080fbca0

View File

@ -1769,7 +1769,7 @@ HouseKeeping(struct libalias *la)
* Reduce the amount of house keeping work substantially by
* sampling over the packets.
*/
if (packets % packet_limit == 0) {
if (packet_limit <= 1 || packets % packet_limit == 0) {
time_t now;
#ifdef _KERNEL