net/enic: fix flow initialization error handling
Fix a rare case in rte_flow initialization where the action hash table
is not freed if allocating a NIC match table fails.
Fixes: ea7768b5bb
("net/enic: add flow implementation based on Flow Manager API")
Cc: stable@dpdk.org
Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Hyong Youb Kim <hyonkim@cisco.com>
This commit is contained in:
parent
3f3fac61bd
commit
5aa67931ec
@ -2890,7 +2890,7 @@ enic_fm_init(struct enic *enic)
|
||||
rc = enic_fm_init_actions(fm);
|
||||
if (rc) {
|
||||
ENICPMD_LOG(ERR, "cannot create action hash, error:%d", rc);
|
||||
goto error_tables;
|
||||
goto error_counters;
|
||||
}
|
||||
/*
|
||||
* One default exact match table for each direction. We hold onto
|
||||
@ -2899,7 +2899,7 @@ enic_fm_init(struct enic *enic)
|
||||
rc = enic_fet_alloc(fm, 1, NULL, 128, &fm->default_ig_fet);
|
||||
if (rc) {
|
||||
ENICPMD_LOG(ERR, "cannot alloc default IG exact match table");
|
||||
goto error_counters;
|
||||
goto error_actions;
|
||||
}
|
||||
fm->default_ig_fet->ref = 1;
|
||||
rc = enic_fet_alloc(fm, 0, NULL, 128, &fm->default_eg_fet);
|
||||
@ -2914,6 +2914,8 @@ enic_fm_init(struct enic *enic)
|
||||
|
||||
error_ig_fet:
|
||||
enic_fet_free(fm, fm->default_ig_fet);
|
||||
error_actions:
|
||||
rte_hash_free(fm->action_hash);
|
||||
error_counters:
|
||||
enic_fm_free_all_counters(fm);
|
||||
error_tables:
|
||||
|
Loading…
Reference in New Issue
Block a user