When tap_flow_implicit_create() gets EEXIST from the kernel, the
allocated remote_flow is never freed. Add rte_free() on that path.

Bugzilla ID: 1880
Fixes: 2ef1c0da894a ("net/tap: fix isolation mode toggling")
Cc: [email protected]

Signed-off-by: Stephen Hemminger <[email protected]>
---
 drivers/net/tap/tap_flow.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index 427faf75d5..da1e70019a 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -1625,8 +1625,10 @@ int tap_flow_implicit_create(struct pmd_internals *pmd,
        err = tap_nl_recv_ack(pmd->nlsk_fd);
        if (err < 0) {
                /* Silently ignore re-entering existing rule */
-               if (errno == EEXIST)
+               if (errno == EEXIST) {
+                       rte_free(remote_flow);
                        goto success;
+               }
                TAP_LOG(ERR,
                        "Kernel refused TC filter rule creation (%d): %s",
                        errno, strerror(errno));
-- 
2.51.0

Reply via email to