From: Sakar Arora Date: Mon, 19 Sep 2016 19:31:17 +0000 (+0530) Subject: net/ip: Fix limit_time calculation in freeing old fragments X-Git-Tag: 2.02-rc1~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e563928ba42ad400abd8d329a879a632abddcd0c;p=thirdparty%2Fgrub.git net/ip: Fix limit_time calculation in freeing old fragments limit_time underflows when current time is less than 90000ms. This causes packet fragments received during this time, i.e., till 90000ms pass since timer init, to be rejected. Hence, set it to 0 if its less than 90000. Signed-off-by: Sakar Arora --- diff --git a/grub-core/net/ip.c b/grub-core/net/ip.c index 8c56baaf7..aba4f8908 100644 --- a/grub-core/net/ip.c +++ b/grub-core/net/ip.c @@ -363,7 +363,9 @@ static void free_old_fragments (void) { struct reassemble *rsm, **prev; - grub_uint64_t limit_time = grub_get_time_ms () - 90000; + grub_uint64_t limit_time = grub_get_time_ms (); + + limit_time = (limit_time > 90000) ? limit_time - 90000 : 0; for (prev = &reassembles, rsm = *prev; rsm; rsm = *prev) if (rsm->last_time < limit_time)