Phil Sutter <[email protected]> wrote:
> __nf_tables_dump_rules() stores the current idx value into cb->args[0]
> before returning to caller. With multiple chains present, cb->args[0] is
> therefore updated after each chain's rules have been traversed. This
> though causes the final nf_tables_dump_rules() run (which should return
> an skb->len of zero since no rules are left to dump) to continue dumping
> rules for each but the first chain. Fix this by moving the cb->args[0]
> update to nf_tables_dump_rules().
>
> With no final action to be performed anymore in
> __nf_tables_dump_rules(), drop 'out_unfinished' jump label and 'rc'
> variable - instead return the appropriate value directly.
Looks good, but I think this is a bug too:
list = rhltable_lookup(&table->chains_ht, ctx->chain,
nft_chain_ht_params);
if (!list)
goto done;
I think this should move to next table instead.
(Its not related to the bug at hand though).