mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 19:07:52 +00:00
netfilter: nf_flow_table: fix missing error check for rhashtable_insert_fast
rhashtable_insert_fast() may return an error value when memory
allocation fails, but flow_offload_add() does not check for errors.
This patch just adds missing error checking.
Fixes: ac2a66665e
("netfilter: add generic flow table infrastructure")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
edbd82c5fb
commit
43c8f13118
1 changed files with 18 additions and 7 deletions
|
@ -185,14 +185,25 @@ static const struct rhashtable_params nf_flow_offload_rhash_params = {
|
||||||
|
|
||||||
int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow)
|
int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow)
|
||||||
{
|
{
|
||||||
flow->timeout = (u32)jiffies;
|
int err;
|
||||||
|
|
||||||
rhashtable_insert_fast(&flow_table->rhashtable,
|
err = rhashtable_insert_fast(&flow_table->rhashtable,
|
||||||
&flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].node,
|
&flow->tuplehash[0].node,
|
||||||
nf_flow_offload_rhash_params);
|
nf_flow_offload_rhash_params);
|
||||||
rhashtable_insert_fast(&flow_table->rhashtable,
|
if (err < 0)
|
||||||
&flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].node,
|
return err;
|
||||||
|
|
||||||
|
err = rhashtable_insert_fast(&flow_table->rhashtable,
|
||||||
|
&flow->tuplehash[1].node,
|
||||||
nf_flow_offload_rhash_params);
|
nf_flow_offload_rhash_params);
|
||||||
|
if (err < 0) {
|
||||||
|
rhashtable_remove_fast(&flow_table->rhashtable,
|
||||||
|
&flow->tuplehash[0].node,
|
||||||
|
nf_flow_offload_rhash_params);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
flow->timeout = (u32)jiffies;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(flow_offload_add);
|
EXPORT_SYMBOL_GPL(flow_offload_add);
|
||||||
|
|
Loading…
Reference in a new issue