Thomas Bogendoerfer 7a97f3
From: Roi Dayan <roid@nvidia.com>
Thomas Bogendoerfer 7a97f3
Date: Mon, 14 Nov 2022 20:04:29 +0200
Thomas Bogendoerfer 7a97f3
Subject: net/mlx5e: Fix use-after-free when reverting termination table
Thomas Bogendoerfer 7a97f3
Patch-mainline: v6.1-rc8
Thomas Bogendoerfer 7a97f3
Git-commit: 52c795af04441d76f565c4634f893e5b553df2ae
Thomas Bogendoerfer 7a97f3
References: jsc#PED-1549
Thomas Bogendoerfer 7a97f3
Thomas Bogendoerfer 7a97f3
When having multiple dests with termination tables and second one
Thomas Bogendoerfer 7a97f3
or afterwards fails the driver reverts usage of term tables but
Thomas Bogendoerfer 7a97f3
doesn't reset the assignment in attr->dests[num_vport_dests].termtbl
Thomas Bogendoerfer 7a97f3
which case a use-after-free when releasing the rule.
Thomas Bogendoerfer 7a97f3
Fix by resetting the assignment of termtbl to null.
Thomas Bogendoerfer 7a97f3
Thomas Bogendoerfer 7a97f3
Fixes: 10caabdaad5a ("net/mlx5e: Use termination table for VLAN push actions")
Thomas Bogendoerfer 7a97f3
Signed-off-by: Roi Dayan <roid@nvidia.com>
Thomas Bogendoerfer 7a97f3
Reviewed-by: Maor Dickman <maord@nvidia.com>
Thomas Bogendoerfer 7a97f3
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Thomas Bogendoerfer 7a97f3
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 7a97f3
---
Thomas Bogendoerfer 7a97f3
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c |    2 ++
Thomas Bogendoerfer 7a97f3
 1 file changed, 2 insertions(+)
Thomas Bogendoerfer 7a97f3
Thomas Bogendoerfer 7a97f3
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
Thomas Bogendoerfer 7a97f3
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
Thomas Bogendoerfer 7a97f3
@@ -312,6 +312,8 @@ revert_changes:
Thomas Bogendoerfer 7a97f3
 	for (curr_dest = 0; curr_dest < num_vport_dests; curr_dest++) {
Thomas Bogendoerfer 7a97f3
 		struct mlx5_termtbl_handle *tt = attr->dests[curr_dest].termtbl;
Thomas Bogendoerfer 7a97f3
 
Thomas Bogendoerfer 7a97f3
+		attr->dests[curr_dest].termtbl = NULL;
Thomas Bogendoerfer 7a97f3
+
Thomas Bogendoerfer 7a97f3
 		/* search for the destination associated with the
Thomas Bogendoerfer 7a97f3
 		 * current term table
Thomas Bogendoerfer 7a97f3
 		 */