git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/virtio: fix memory leak when reinitializing device
[dpdk.git]
/
drivers
/
net
/
i40e
/
i40e_fdir.c
diff --git
a/drivers/net/i40e/i40e_fdir.c
b/drivers/net/i40e/i40e_fdir.c
index
f43cf4a
..
c392dc4
100644
(file)
--- a/
drivers/net/i40e/i40e_fdir.c
+++ b/
drivers/net/i40e/i40e_fdir.c
@@
-11,7
+11,7
@@
#include <stdarg.h>
#include <rte_ether.h>
#include <stdarg.h>
#include <rte_ether.h>
-#include <rte_ethdev.h>
+#include <rte_ethdev
_driver
.h>
#include <rte_log.h>
#include <rte_memzone.h>
#include <rte_malloc.h>
#include <rte_log.h>
#include <rte_memzone.h>
#include <rte_malloc.h>
@@
-1595,8
+1595,15
@@
i40e_flow_add_del_fdir_filter(struct rte_eth_dev *dev,
if (add) {
fdir_filter = rte_zmalloc("fdir_filter",
sizeof(*fdir_filter), 0);
if (add) {
fdir_filter = rte_zmalloc("fdir_filter",
sizeof(*fdir_filter), 0);
+ if (fdir_filter == NULL) {
+ PMD_DRV_LOG(ERR, "Failed to alloc memory.");
+ return -ENOMEM;
+ }
+
rte_memcpy(fdir_filter, &check_filter, sizeof(check_filter));
ret = i40e_sw_fdir_filter_insert(pf, fdir_filter);
rte_memcpy(fdir_filter, &check_filter, sizeof(check_filter));
ret = i40e_sw_fdir_filter_insert(pf, fdir_filter);
+ if (ret < 0)
+ rte_free(fdir_filter);
} else {
ret = i40e_sw_fdir_filter_del(pf, &node->fdir.input);
}
} else {
ret = i40e_sw_fdir_filter_del(pf, &node->fdir.input);
}