diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-08-07 12:26:58 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-08-07 12:26:58 -0700 |
commit | 8f67365adb25b9124446fa7b1b6e52df28744b96 (patch) | |
tree | 736b4a755dcdafe18aaad6f637f9f94e59f201ec /drivers/net/wireguard/selftest | |
parent | 12f632d2d62345a7a7ea58c5106eb68ba2cb9d12 (diff) | |
parent | afb9fa9f88e4387b3c8390b7f54e2b0bdf20828f (diff) | |
download | wireguard-linux-trimmed-8f67365adb25b9124446fa7b1b6e52df28744b96.tar.gz wireguard-linux-trimmed-8f67365adb25b9124446fa7b1b6e52df28744b96.zip |
Merge branch 'wireguard-fixes-for-6-5-rc6'
Jason A. Donenfeld says:
====================
wireguard fixes for 6.5-rc6
Just one patch this time, somewhat late in the cycle:
1) Fix an off-by-one calculation for the maximum node depth size in the
allowedips trie data structure, and also adjust the self-tests to hit
this case so it doesn't regress again in the future.
====================
Link: https://lore.kernel.org/r/20230807132146.2191597-1-Jason@zx2c4.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/wireguard/selftest')
-rw-r--r-- | drivers/net/wireguard/selftest/allowedips.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/wireguard/selftest/allowedips.c b/drivers/net/wireguard/selftest/allowedips.c index 78ebe28..3d1f64f 100644 --- a/drivers/net/wireguard/selftest/allowedips.c +++ b/drivers/net/wireguard/selftest/allowedips.c @@ -593,16 +593,20 @@ bool __init wg_allowedips_selftest(void) wg_allowedips_remove_by_peer(&t, a, &mutex); test_negative(4, a, 192, 168, 0, 1); - /* These will hit the WARN_ON(len >= MAX_ALLOWEDIPS_BITS) in free_node + /* These will hit the WARN_ON(len >= MAX_ALLOWEDIPS_DEPTH) in free_node * if something goes wrong. */ - 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); + for (i = 0; i < 64; ++i) { + part = cpu_to_be64(~0LLU << i); + memset(&ip, 0xff, 8); + memcpy((u8 *)&ip + 8, &part, 8); + wg_allowedips_insert_v6(&t, &ip, 128, a, &mutex); + memcpy(&ip, &part, 8); + memset((u8 *)&ip + 8, 0, 8); wg_allowedips_insert_v6(&t, &ip, 128, a, &mutex); } - + memset(&ip, 0, 16); + wg_allowedips_insert_v6(&t, &ip, 128, a, &mutex); wg_allowedips_free(&t, &mutex); wg_allowedips_init(&t); |