Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc9259a8 authored by Nicolas Dichtel's avatar Nicolas Dichtel Committed by David S. Miller
Browse files

inetpeer: fix token initialization



When jiffies wraps around (for example, 5 minutes after the boot, see
INITIAL_JIFFIES) and peer has just been created, now - peer->rate_last can be
< XRLIM_BURST_FACTOR * timeout, so token is not set to the maximum value, thus
some icmp packets can be unexpectedly dropped.

Fix this case by initializing last_rate to 60 seconds in the past.

Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 68b3f28c
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -510,7 +510,10 @@ relookup:
					secure_ipv6_id(daddr->addr.a6));
		p->metrics[RTAX_LOCK-1] = INETPEER_METRICS_NEW;
		p->rate_tokens = 0;
		p->rate_last = 0;
		/* 60*HZ is arbitrary, but chosen enough high so that the first
		 * calculation of tokens is at its maximum.
		 */
		p->rate_last = jiffies - 60*HZ;
		INIT_LIST_HEAD(&p->gc_list);

		/* Link the node. */