]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ipvs: Fix clamp() of ip_vs_conn_tab on small memory systems
authorDavid Laight <David.Laight@ACULAB.COM>
Sat, 14 Dec 2024 17:30:53 +0000 (17:30 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 18 Dec 2024 22:37:27 +0000 (23:37 +0100)
commitcf2c97423a4f89c8b798294d3f34ecfe7e7035c3
treecd4108ce0c89d81355addea2949e4407194e6502
parent954a2b40719a21e763a1bba2f0da92347e058fce
ipvs: Fix clamp() of ip_vs_conn_tab on small memory systems

The 'max_avail' value is calculated from the system memory
size using order_base_2().
order_base_2(x) is defined as '(x) ? fn(x) : 0'.
The compiler generates two copies of the code that follows
and then expands clamp(max, min, PAGE_SHIFT - 12) (11 on 32bit).
This triggers a compile-time assert since min is 5.

In reality a system would have to have less than 512MB memory
for the bounds passed to clamp to be reversed.

Swap the order of the arguments to clamp() to avoid the warning.

Replace the clamp_val() on the line below with clamp().
clamp_val() is just 'an accident waiting to happen' and not needed here.

Detected by compile time checks added to clamp(), specifically:
minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp()

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Closes: https://lore.kernel.org/all/CA+G9fYsT34UkGFKxus63H6UVpYi5GRZkezT9MRLfAbM3f6ke0g@mail.gmail.com/
Fixes: 4f325e26277b ("ipvs: dynamically limit the connection hash table")
Tested-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: David Laight <david.laight@aculab.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/ipvs/ip_vs_conn.c