]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
net/mlx5: Fix vport QoS cleanup on error
authorCarolina Jubran <cjubran@nvidia.com>
Tue, 25 Feb 2025 07:26:06 +0000 (09:26 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 27 Feb 2025 03:29:39 +0000 (19:29 -0800)
When enabling vport QoS fails, the scheduling node was never freed,
causing a leak.

Add the missing free and reset the vport scheduling node pointer to
NULL.

Fixes: be034baba83e ("net/mlx5: Make vport QoS enablement more flexible for future extensions")
Signed-off-by: Carolina Jubran <cjubran@nvidia.com>
Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20250225072608.526866-2-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c

index 8b7c843446e1157ce574beb6059784a1a8ddcf3d..07a28073a49eaa5ad2f40f4d7c8d43324b580b19 100644 (file)
@@ -591,8 +591,11 @@ static int mlx5_esw_qos_vport_enable(struct mlx5_vport *vport, enum sched_node_t
        sched_node->vport = vport;
        vport->qos.sched_node = sched_node;
        err = esw_qos_vport_enable(vport, parent, extack);
-       if (err)
+       if (err) {
+               __esw_qos_free_node(sched_node);
                esw_qos_put(esw);
+               vport->qos.sched_node = NULL;
+       }
 
        return err;
 }