timeout_add() always sets a new expiry time unrelated to the previous
authorjsg <jsg@openbsd.org>
Wed, 14 Jul 2021 09:56:17 +0000 (09:56 +0000)
committerjsg <jsg@openbsd.org>
Wed, 14 Jul 2021 09:56:17 +0000 (09:56 +0000)
one and requeues as needed so no need to call timeout_del() before
timeout_add()

spotted by kettenis@

sys/dev/pci/drm/include/linux/timer.h

index 5ffa032..a5bc007 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: timer.h,v 1.7 2021/07/14 05:42:47 jsg Exp $   */
+/*     $OpenBSD: timer.h,v 1.8 2021/07/14 09:56:17 jsg Exp $   */
 /*
  * Copyright (c) 2013, 2014, 2015 Mark Kettenis
  *
 static inline int
 mod_timer(struct timeout *to, unsigned long j)
 {
-       if (j <= jiffies) {
-               timeout_del(to);
+       if (j <= jiffies)
                return timeout_add(to, 1);
-       }
        return timeout_add(to, j - jiffies);
 }