openvswitch: Use kmalloc_size_roundup() to match ksize() usage
authorKees Cook <keescook@chromium.org>
Tue, 18 Oct 2022 09:06:33 +0000 (02:06 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:59 +0000 (13:32 +0100)
[ Upstream commit ab3f7828c9793a5dfa99a54dc19ae3491c38bfa3 ]

Round up allocations with kmalloc_size_roundup() so that openvswitch's
use of ksize() is always accurate and no special handling of the memory
is needed by KASAN, UBSAN_BOUNDS, nor FORTIFY_SOURCE.

Cc: Pravin B Shelar <pshelar@ovn.org>
Cc: dev@openvswitch.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20221018090628.never.537-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/openvswitch/flow_netlink.c

index 4a07ab0..ead5418 100644 (file)
@@ -2309,7 +2309,7 @@ static struct sw_flow_actions *nla_alloc_flow_actions(int size)
 
        WARN_ON_ONCE(size > MAX_ACTIONS_BUFSIZE);
 
-       sfa = kmalloc(sizeof(*sfa) + size, GFP_KERNEL);
+       sfa = kmalloc(kmalloc_size_roundup(sizeof(*sfa) + size), GFP_KERNEL);
        if (!sfa)
                return ERR_PTR(-ENOMEM);