RDMA: Make counters destroy symmetrical

Change counters to return failure like any other verbs destroy, however
this flow shouldn't return error at all.

Link: https://lore.kernel.org/r/20200907120921.476363-10-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
Leon Romanovsky 2020-09-07 15:09:21 +03:00 committed by Jason Gunthorpe
parent add53535fb
commit 71ff3f6268
3 changed files with 6 additions and 3 deletions

View File

@ -46,7 +46,9 @@ static int uverbs_free_counters(struct ib_uobject *uobject,
if (ret) if (ret)
return ret; return ret;
counters->device->ops.destroy_counters(counters); ret = counters->device->ops.destroy_counters(counters);
if (ret)
return ret;
kfree(counters); kfree(counters);
return 0; return 0;
} }

View File

@ -117,7 +117,7 @@ static int mlx5_ib_read_counters(struct ib_counters *counters,
return ret; return ret;
} }
static void mlx5_ib_destroy_counters(struct ib_counters *counters) static int mlx5_ib_destroy_counters(struct ib_counters *counters)
{ {
struct mlx5_ib_mcounters *mcounters = to_mcounters(counters); struct mlx5_ib_mcounters *mcounters = to_mcounters(counters);
@ -125,6 +125,7 @@ static void mlx5_ib_destroy_counters(struct ib_counters *counters)
if (mcounters->hw_cntrs_hndl) if (mcounters->hw_cntrs_hndl)
mlx5_fc_destroy(to_mdev(counters->device)->mdev, mlx5_fc_destroy(to_mdev(counters->device)->mdev,
mcounters->hw_cntrs_hndl); mcounters->hw_cntrs_hndl);
return 0;
} }
static int mlx5_ib_create_counters(struct ib_counters *counters, static int mlx5_ib_create_counters(struct ib_counters *counters,

View File

@ -2498,7 +2498,7 @@ struct ib_device_ops {
struct uverbs_attr_bundle *attrs); struct uverbs_attr_bundle *attrs);
int (*create_counters)(struct ib_counters *counters, int (*create_counters)(struct ib_counters *counters,
struct uverbs_attr_bundle *attrs); struct uverbs_attr_bundle *attrs);
void (*destroy_counters)(struct ib_counters *counters); int (*destroy_counters)(struct ib_counters *counters);
int (*read_counters)(struct ib_counters *counters, int (*read_counters)(struct ib_counters *counters,
struct ib_counters_read_attr *counters_read_attr, struct ib_counters_read_attr *counters_read_attr,
struct uverbs_attr_bundle *attrs); struct uverbs_attr_bundle *attrs);