#include "allowedips.h"
 #include "peer.h"
 
+enum { MAX_ALLOWEDIPS_BITS = 128 };
+
 static struct kmem_cache *node_cache;
 
 static void swap_endian(u8 *dst, const u8 *src, u8 bits)
                     struct allowedips_node __rcu *p, unsigned int *len)
 {
        if (rcu_access_pointer(p)) {
-               WARN_ON(IS_ENABLED(DEBUG) && *len >= 128);
+               if (WARN_ON(IS_ENABLED(DEBUG) && *len >= MAX_ALLOWEDIPS_BITS))
+                       return;
                stack[(*len)++] = rcu_dereference_raw(p);
        }
 }
 
 static void root_free_rcu(struct rcu_head *rcu)
 {
-       struct allowedips_node *node, *stack[128] = {
+       struct allowedips_node *node, *stack[MAX_ALLOWEDIPS_BITS] = {
                container_of(rcu, struct allowedips_node, rcu) };
        unsigned int len = 1;
 
 
 static void root_remove_peer_lists(struct allowedips_node *root)
 {
-       struct allowedips_node *node, *stack[128] = { root };
+       struct allowedips_node *node, *stack[MAX_ALLOWEDIPS_BITS] = { root };
        unsigned int len = 1;
 
        while (len > 0 && (node = stack[--len])) {
 
        wg_allowedips_remove_by_peer(&t, a, &mutex);
        test_negative(4, a, 192, 168, 0, 1);
 
-       /* These will hit the WARN_ON(len >= 128) in free_node if something
-        * goes wrong.
+       /* These will hit the WARN_ON(len >= MAX_ALLOWEDIPS_BITS) in free_node
+        * if something goes wrong.
         */
-       for (i = 0; i < 128; ++i) {
+       for (i = 0; i < MAX_ALLOWEDIPS_BITS; ++i) {
                part = cpu_to_be64(~(1LLU << (i % 64)));
                memset(&ip, 0xff, 16);
                memcpy((u8 *)&ip + (i < 64) * 8, &part, 8);