mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
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: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: Florian Westphal <fw@strlen.de>
This commit is contained in:
parent
a622d2e960
commit
cbfe53599e
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user