In cm_req_handler error flows, sometimes cm_id_priv->timewait_info
isn't free'd.
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
        listen_cm_id_priv = cm_match_req(work, cm_id_priv);
        if (!listen_cm_id_priv) {
                ret = -EINVAL;
-               kfree(cm_id_priv->timewait_info);
-               goto destroy;
+               goto free_timeinfo;
        }
 
        cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler;
 rejected:
        atomic_dec(&cm_id_priv->refcount);
        cm_deref_id(listen_cm_id_priv);
+free_timeinfo:
+       kfree(cm_id_priv->timewait_info);
 destroy:
        ib_destroy_cm_id(cm_id);
        return ret;