batman-adv: Utilize prandom_u32_max for random [0, max) values
authorSven Eckelmann <sven@narfation.org>
Mon, 13 Apr 2020 19:23:29 +0000 (21:23 +0200)
committerSimon Wunderlich <sw@simonwunderlich.de>
Tue, 21 Apr 2020 08:07:31 +0000 (10:07 +0200)
The kernel provides a function to create random values from 0 - (max-1)
since commit f337db64af05 ("random32: add prandom_u32_max and convert open
coded users"). Simply use this function to replace code sections which use
prandom_u32 and a handcrafted method to map it to the correct range.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/bat_iv_ogm.c
net/batman-adv/bat_v_elp.c
net/batman-adv/bat_v_ogm.c

index a7c8dd7..e87f19c 100644 (file)
@@ -280,7 +280,7 @@ batadv_iv_ogm_emit_send_time(const struct batadv_priv *bat_priv)
        unsigned int msecs;
 
        msecs = atomic_read(&bat_priv->orig_interval) - BATADV_JITTER;
-       msecs += prandom_u32() % (2 * BATADV_JITTER);
+       msecs += prandom_u32_max(2 * BATADV_JITTER);
 
        return jiffies + msecs_to_jiffies(msecs);
 }
@@ -288,7 +288,7 @@ batadv_iv_ogm_emit_send_time(const struct batadv_priv *bat_priv)
 /* when do we schedule a ogm packet to be sent */
 static unsigned long batadv_iv_ogm_fwd_send_time(void)
 {
-       return jiffies + msecs_to_jiffies(prandom_u32() % (BATADV_JITTER / 2));
+       return jiffies + msecs_to_jiffies(prandom_u32_max(BATADV_JITTER / 2));
 }
 
 /* apply hop penalty for a normal link */
index 1e3172d..353e49c 100644 (file)
@@ -49,7 +49,7 @@ static void batadv_v_elp_start_timer(struct batadv_hard_iface *hard_iface)
        unsigned int msecs;
 
        msecs = atomic_read(&hard_iface->bat_v.elp_interval) - BATADV_JITTER;
-       msecs += prandom_u32() % (2 * BATADV_JITTER);
+       msecs += prandom_u32_max(2 * BATADV_JITTER);
 
        queue_delayed_work(batadv_event_workqueue, &hard_iface->bat_v.elp_wq,
                           msecs_to_jiffies(msecs));
index 9694662..0959d32 100644 (file)
@@ -88,7 +88,7 @@ static void batadv_v_ogm_start_queue_timer(struct batadv_hard_iface *hard_iface)
        unsigned int msecs = BATADV_MAX_AGGREGATION_MS * 1000;
 
        /* msecs * [0.9, 1.1] */
-       msecs += prandom_u32() % (msecs / 5) - (msecs / 10);
+       msecs += prandom_u32_max(msecs / 5) - (msecs / 10);
        queue_delayed_work(batadv_event_workqueue, &hard_iface->bat_v.aggr_wq,
                           msecs_to_jiffies(msecs / 1000));
 }
@@ -107,7 +107,7 @@ static void batadv_v_ogm_start_timer(struct batadv_priv *bat_priv)
                return;
 
        msecs = atomic_read(&bat_priv->orig_interval) - BATADV_JITTER;
-       msecs += prandom_u32() % (2 * BATADV_JITTER);
+       msecs += prandom_u32_max(2 * BATADV_JITTER);
        queue_delayed_work(batadv_event_workqueue, &bat_priv->bat_v.ogm_wq,
                           msecs_to_jiffies(msecs));
 }