]> git.itanic.dy.fi Git - linux-stable/blobdiff - drivers/net/wireguard/selftest/ratelimiter.c
wireguard: ratelimiter: disable timings test by default
[linux-stable] / drivers / net / wireguard / selftest / ratelimiter.c
index ba87d294604fe436e9a672dce65a37139a7a32bf..d4bb40a695ab6785968babc1060a8b1010651e8b 100644 (file)
@@ -6,29 +6,28 @@
 #ifdef DEBUG
 
 #include <linux/jiffies.h>
-#include <linux/hrtimer.h>
 
 static const struct {
        bool result;
-       u64 nsec_to_sleep_before;
+       unsigned int msec_to_sleep_before;
 } expected_results[] __initconst = {
        [0 ... PACKETS_BURSTABLE - 1] = { true, 0 },
        [PACKETS_BURSTABLE] = { false, 0 },
-       [PACKETS_BURSTABLE + 1] = { true, NSEC_PER_SEC / PACKETS_PER_SECOND },
+       [PACKETS_BURSTABLE + 1] = { true, MSEC_PER_SEC / PACKETS_PER_SECOND },
        [PACKETS_BURSTABLE + 2] = { false, 0 },
-       [PACKETS_BURSTABLE + 3] = { true, (NSEC_PER_SEC / PACKETS_PER_SECOND) * 2 },
+       [PACKETS_BURSTABLE + 3] = { true, (MSEC_PER_SEC / PACKETS_PER_SECOND) * 2 },
        [PACKETS_BURSTABLE + 4] = { true, 0 },
        [PACKETS_BURSTABLE + 5] = { false, 0 }
 };
 
 static __init unsigned int maximum_jiffies_at_index(int index)
 {
-       u64 total_nsecs = 2 * NSEC_PER_SEC / PACKETS_PER_SECOND / 3;
+       unsigned int total_msecs = 2 * MSEC_PER_SEC / PACKETS_PER_SECOND / 3;
        int i;
 
        for (i = 0; i <= index; ++i)
-               total_nsecs += expected_results[i].nsec_to_sleep_before;
-       return nsecs_to_jiffies(total_nsecs);
+               total_msecs += expected_results[i].msec_to_sleep_before;
+       return msecs_to_jiffies(total_msecs);
 }
 
 static __init int timings_test(struct sk_buff *skb4, struct iphdr *hdr4,
@@ -43,12 +42,8 @@ static __init int timings_test(struct sk_buff *skb4, struct iphdr *hdr4,
        loop_start_time = jiffies;
 
        for (i = 0; i < ARRAY_SIZE(expected_results); ++i) {
-               if (expected_results[i].nsec_to_sleep_before) {
-                       ktime_t timeout = ktime_add(ktime_add_ns(ktime_get_coarse_boottime(), TICK_NSEC * 4 / 3),
-                                                   ns_to_ktime(expected_results[i].nsec_to_sleep_before));
-                       set_current_state(TASK_UNINTERRUPTIBLE);
-                       schedule_hrtimeout_range_clock(&timeout, 0, HRTIMER_MODE_ABS, CLOCK_BOOTTIME);
-               }
+               if (expected_results[i].msec_to_sleep_before)
+                       msleep(expected_results[i].msec_to_sleep_before);
 
                if (time_is_before_jiffies(loop_start_time +
                                           maximum_jiffies_at_index(i)))
@@ -132,7 +127,7 @@ bool __init wg_ratelimiter_selftest(void)
        if (IS_ENABLED(CONFIG_KASAN) || IS_ENABLED(CONFIG_UBSAN))
                return true;
 
-       BUILD_BUG_ON(NSEC_PER_SEC % PACKETS_PER_SECOND != 0);
+       BUILD_BUG_ON(MSEC_PER_SEC % PACKETS_PER_SECOND != 0);
 
        if (wg_ratelimiter_init())
                goto out;
@@ -172,7 +167,7 @@ bool __init wg_ratelimiter_selftest(void)
        ++test;
 #endif
 
-       for (trials = TRIALS_BEFORE_GIVING_UP;;) {
+       for (trials = TRIALS_BEFORE_GIVING_UP; IS_ENABLED(DEBUG_RATELIMITER_TIMINGS);) {
                int test_count = 0, ret;
 
                ret = timings_test(skb4, hdr4, skb6, hdr6, &test_count);