net/mlx5: DR, fix a potential use-after-free bug
authorWentao_Liang <Wentao_Liang_g@163.com>
Thu, 19 Aug 2021 14:30:05 +0000 (22:30 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 18 Sep 2021 11:40:34 +0000 (13:40 +0200)
[ Upstream commit 6cc64770fb386b10a64a1fe09328396de7bb5262 ]

In line 849 (#1), "mlx5dr_htbl_put(cur_htbl);" drops the reference to
cur_htbl and may cause cur_htbl to be freed.

However, cur_htbl is subsequently used in the next line, which may result
in an use-after-free bug.

Fix this by calling mlx5dr_err() before the cur_htbl is put.

Signed-off-by: Wentao_Liang <Wentao_Liang_g@163.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c

index b3c9dc032026ca056609e5aac796ddbbb7f9a66d..478de5ded7c2179ef1ccdd330af139e7c9f0514b 100644 (file)
@@ -824,9 +824,9 @@ again:
                        new_htbl = dr_rule_rehash(rule, nic_rule, cur_htbl,
                                                  ste_location, send_ste_list);
                        if (!new_htbl) {
-                               mlx5dr_htbl_put(cur_htbl);
                                mlx5dr_err(dmn, "Failed creating rehash table, htbl-log_size: %d\n",
                                           cur_htbl->chunk_size);
+                               mlx5dr_htbl_put(cur_htbl);
                        } else {
                                cur_htbl = new_htbl;
                        }