security: fix session counter
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Thu, 9 Apr 2020 17:24:52 +0000 (19:24 +0200)
committerAkhil Goyal <akhil.goyal@nxp.com>
Sun, 19 Apr 2020 15:15:14 +0000 (17:15 +0200)
Fix session counter to be decreased in rte_security_session_destroy
only when session was successfully destroyed.

Formerly session counter was decreased prior session destroying
and returning session object to mempool. It remained decreased even
if session was not destroyed and mempool object released making counter
invalid.

Fixes: c261d1431bd8 ("security: introduce security API and framework")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
lib/librte_security/rte_security.c

index 38ccc2e..d475b09 100644 (file)
@@ -90,14 +90,16 @@ rte_security_session_destroy(struct rte_security_ctx *instance,
                        -ENOTSUP);
        RTE_PTR_OR_ERR_RET(sess, -EINVAL);
 
+       ret = instance->ops->session_destroy(instance->device, sess);
+       if (ret != 0)
+               return ret;
+
+       rte_mempool_put(rte_mempool_from_obj(sess), (void *)sess);
+
        if (instance->sess_cnt)
                instance->sess_cnt--;
 
-       ret = instance->ops->session_destroy(instance->device, sess);
-       if (!ret)
-               rte_mempool_put(rte_mempool_from_obj(sess), (void *)sess);
-
-       return ret;
+       return 0;
 }
 
 int