diff options
author | Kamal Heib <kamalh@mellanox.com> | 2016-08-28 18:13:48 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-28 23:24:15 -0400 |
commit | bf50082c15eb2bc47d1922e70f424c57f36646d5 (patch) | |
tree | a84ae34e39dd7d16c5cb1b5afbf17bf352a14a7c | |
parent | c8cf78fe100b0d152a1932327c24cefc0ba4bdbe (diff) |
net/mlx5e: Fix memory leak if refreshing TIRs fails
Free 'in' command object also when mlx5_core_modify_tir fails.
Fixes: 724b2aa15126 ("net/mlx5e: TIRs management refactoring")
Signed-off-by: Kamal Heib <kamalh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en_common.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_common.c b/drivers/net/ethernet/mellanox/mlx5/core/en_common.c index 673043ccd76c..9cce153e1035 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_common.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_common.c | |||
@@ -139,7 +139,7 @@ int mlx5e_refresh_tirs_self_loopback_enable(struct mlx5_core_dev *mdev) | |||
139 | struct mlx5e_tir *tir; | 139 | struct mlx5e_tir *tir; |
140 | void *in; | 140 | void *in; |
141 | int inlen; | 141 | int inlen; |
142 | int err; | 142 | int err = 0; |
143 | 143 | ||
144 | inlen = MLX5_ST_SZ_BYTES(modify_tir_in); | 144 | inlen = MLX5_ST_SZ_BYTES(modify_tir_in); |
145 | in = mlx5_vzalloc(inlen); | 145 | in = mlx5_vzalloc(inlen); |
@@ -151,10 +151,11 @@ int mlx5e_refresh_tirs_self_loopback_enable(struct mlx5_core_dev *mdev) | |||
151 | list_for_each_entry(tir, &mdev->mlx5e_res.td.tirs_list, list) { | 151 | list_for_each_entry(tir, &mdev->mlx5e_res.td.tirs_list, list) { |
152 | err = mlx5_core_modify_tir(mdev, tir->tirn, in, inlen); | 152 | err = mlx5_core_modify_tir(mdev, tir->tirn, in, inlen); |
153 | if (err) | 153 | if (err) |
154 | return err; | 154 | goto out; |
155 | } | 155 | } |
156 | 156 | ||
157 | out: | ||
157 | kvfree(in); | 158 | kvfree(in); |
158 | 159 | ||
159 | return 0; | 160 | return err; |
160 | } | 161 | } |