Skip to content

Commit 7cb9a23

Browse files
author
Florian Westphal
committed
netfilter: nf_tables: always walk all pending catchall elements
During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch. If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate. Otherwise, we get: WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404 RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables] [..] __nft_set_elem_destroy+0x106/0x380 [nf_tables] nf_tables_abort_release+0x348/0x8d0 [nf_tables] nf_tables_abort+0xcf2/0x3ac0 [nf_tables] nfnetlink_rcv_batch+0x9c9/0x20e0 [..] Fixes: 628bd3e ("netfilter: nf_tables: drop map element references from preparation phase") Reported-by: Yiming Qian <yimingqian591@gmail.com> Signed-off-by: Florian Westphal <fw@strlen.de>
1 parent b7cdc5a commit 7cb9a23

1 file changed

Lines changed: 0 additions & 2 deletions

File tree

net/netfilter/nf_tables_api.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,6 @@ static void nft_map_catchall_deactivate(const struct nft_ctx *ctx,
829829

830830
nft_set_elem_change_active(ctx->net, set, ext);
831831
nft_setelem_data_deactivate(ctx->net, set, catchall->elem);
832-
break;
833832
}
834833
}
835834

@@ -5873,7 +5872,6 @@ static void nft_map_catchall_activate(const struct nft_ctx *ctx,
58735872

58745873
nft_clear(ctx->net, ext);
58755874
nft_setelem_data_activate(ctx->net, set, catchall->elem);
5876-
break;
58775875
}
58785876
}
58795877

0 commit comments

Comments
 (0)