Commit cbfe53599eeb for kernel

commit cbfe53599eebffd188938ab6774cc41794f6f9d5
Author: Florian Westphal <fw@strlen.de>
Date:   Sat Jul 4 10:23:31 2026 +0200

    netfilter: ebtables: zero chainstack array

    sashiko reports:
     looking at ebtables table
     translation, could a sparse cpu_possible_mask lead to an uninitialized pointer
     free?

     If cpu_possible_mask is sparse (for example, CPU 0 and CPU 2 are possible,
     but CPU 1 is not), the allocation loop skips CPU 1. If vmalloc_node() fails at
     CPU 2, the cleanup loop will blindly decrement and call vfree() on
     newinfo->chainstack[1].

    Not a real-world bug, such allocation isn't expected to fail
    in the first place.

    Cc: stable@vger.kernel.org
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Florian Westphal <fw@strlen.de>

diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index 5b74ff827493..48187598cdd0 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -921,8 +921,7 @@ static int translate_table(struct net *net, const char *name,
 		 * if an error occurs
 		 */
 		newinfo->chainstack =
-			vmalloc_array(nr_cpu_ids,
-				      sizeof(*(newinfo->chainstack)));
+			vcalloc(nr_cpu_ids, sizeof(*(newinfo->chainstack)));
 		if (!newinfo->chainstack)
 			return -ENOMEM;
 		for_each_possible_cpu(i) {