]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - kernel/posix-timers.c
posix-timer: Don't call idr_find() with out-of-range ID
[karo-tx-linux.git] / kernel / posix-timers.c
index 69185ae6b701742de8977760234c5accda366dfd..e885be1e8a1150bc144fb831ce52a675e2ae8af7 100644 (file)
@@ -639,6 +639,13 @@ static struct k_itimer *__lock_timer(timer_t timer_id, unsigned long *flags)
 {
        struct k_itimer *timr;
 
+       /*
+        * timer_t could be any type >= int and we want to make sure any
+        * @timer_id outside positive int range fails lookup.
+        */
+       if ((unsigned long long)timer_id > INT_MAX)
+               return NULL;
+
        rcu_read_lock();
        timr = idr_find(&posix_timers_id, (int)timer_id);
        if (timr) {