[PATCH] timer: prevent overflow in apply_slack

From: Jiri Bohac
Date: Thu Apr 17 2014 - 15:42:31 EST


Prevent overflow in the computation of timer expiry time inside
apply_slack().

Signed-off-by: Jiri Bohac <jbohac@xxxxxxx>
Suggested-by: Deborah Townsend <dstownse@xxxxxxxxxx>

diff --git a/kernel/timer.c b/kernel/timer.c
index 87bd529..4c36c91 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -838,7 +838,7 @@ unsigned long apply_slack(struct timer_list *timer, unsigned long expires)

bit = find_last_bit(&mask, BITS_PER_LONG);

- mask = (1 << bit) - 1;
+ mask = (1LL << bit) - 1;

expires_limit = expires_limit & ~(mask);

--
Jiri Bohac <jbohac@xxxxxxx>
SUSE Labs, SUSE CZ

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/