mlx5: Use refcount_t for refcount
Subsystems (5)
PATCH v3 1/1 mlx5: Use refcount_t for refcount
Reference counters are preferred to use refcount_t instead of atomic_t.
This is because the implementation of refcount_t can prevent overflows and detect possible use-after-free.
So convert atomic_t ref counters to refcount_t.
---
Changes in v3:
- Merge v2 patches together.
drivers/infiniband/hw/mlx5/srq_cmd.c | 6 +++--- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 6 +++--- include/linux/mlx5/driver.h | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-)
drivers/infiniband/hw/mlx5/srq_cmd.c +3 -3
@@ -86,7 +86,7 @@ struct mlx5_core_srq *mlx5_cmd_get_srq(struct mlx5_ib_dev *dev, u32 srqn)xa_lock (&table->array); srq =xa_load (&table->array, srqn);if (srq) -atomic_inc (&srq->common.refcount); +refcount_inc (&srq->common.refcount);xa_unlock (&table->array);return srq;
@@ -592,7 +592,7 @@ int mlx5_cmd_create_srq(struct mlx5_ib_dev *dev, struct mlx5_core_srq *srq,if (err)return err; -atomic_set (&srq->common.refcount,1 ); +refcount_set (&srq->common.refcount,1 );init_completion (&srq->common.free); err =xa_err (xa_store_irq (&table->array, srq->srqn, srq,GFP_KERNEL ));
@@ -675,7 +675,7 @@ static int srq_event_notifier(struct notifier_block *nb,xa_lock (&table->array); srq =xa_load (&table->array, srqn);if (srq) -atomic_inc (&srq->common.refcount); +refcount_inc (&srq->common.refcount);xa_unlock (&table->array);if (!srq)
drivers/net/ethernet/mellanox/mlx5/core/qp.c +3 -3
@@ -53,7 +53,7 @@ mlx5_get_rsc(struct mlx5_qp_table *table, u32 rsn) common =radix_tree_lookup (&table->tree, rsn);if (common) -atomic_inc (&common->refcount); +refcount_inc (&common->refcount);spin_unlock_irqrestore (&table->lock, flags);
@@ -62,7 +62,7 @@ mlx5_get_rsc(struct mlx5_qp_table *table, u32 rsn)void mlx5_core_put_rsc (struct mlx5_core_rsc_common *common) { -if (atomic_dec_and_test (&common->refcount)) +if (refcount_dec_and_test (&common->refcount))complete (&common->free); }
@@ -209,7 +209,7 @@ static int create_resource_common(struct mlx5_core_dev *dev,if (err)return err; -atomic_set (&qp->common.refcount,1 ); +refcount_set (&qp->common.refcount,1 );init_completion (&qp->common.free); qp->pid = current->pid;
include/linux/mlx5/driver.h +2 -1
@@ -47,6 +47,7 @@#include <linux/interrupt.h> #include <linux/idr.h> #include <linux/notifier.h> +#include <linux/refcount.h> #include <linux/mlx5/device.h> #include <linux/mlx5/doorbell.h>
@@ -398,7 +399,7 @@ enum mlx5_res_type {struct mlx5_core_rsc_common {enum mlx5_res_type res; -atomic_t refcount; +refcount_t refcount;struct completion free; };
Signature · 1 line
2.20.1
Quoted 7 lines · Chuhong Yuan
Reference counters are preferred to use
refcount_tinstead ofatomic_t.
This is because the implementation ofrefcount_tcan prevent overflows and detect possible use-after-free.
So convertatomic_tref counters torefcount_t.Signed-off-by Chuhong Yuan <[email protected]>
Quoted 9 lines
---
Changes in v3:
- Merge v2 patches together.drivers/infiniband/hw/mlx5/srq_cmd.c | 6 +++--- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 6 +++--- include/linux/mlx5/driver.h | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-)
LGTM, Leon, let me know if you are happy with this version, this should go to mlx5-next.
Leon Romanovsky
Acked-byQuoted 12 lines · Saeed Mahameed
Quoted 11 lines · Chuhong Yuan
Reference counters are preferred to use
refcount_tinstead ofatomic_t.
This is because the implementation ofrefcount_tcan prevent overflows and detect possible use-after-free.
So convertatomic_tref counters torefcount_t.Signed-off-by Chuhong Yuan <[email protected]>---
Changes in v3:
- Merge v2 patches together.
Quoted 8 lines
Quoted 5 lines
drivers/infiniband/hw/mlx5/srq_cmd.c | 6 +++--- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 6 +++--- include/linux/mlx5/driver.h | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-)LGTM, Leon, let me know if you are happy with this version, this should go to mlx5-next.
Thanks,
Saeed Mahameed
AppliedQuoted 19 lines · Leon Romanovsky
Quoted 18 lines · Saeed Mahameed
Quoted 16 lines · Chuhong Yuan
Reference counters are preferred to use
refcount_tinstead ofatomic_t.
This is because the implementation ofrefcount_tcan prevent overflows and detect possible use-after-free.
So convertatomic_tref counters torefcount_t.Signed-off-by Chuhong Yuan <[email protected]>---
Changes in v3:
- Merge v2 patches together.drivers/infiniband/hw/mlx5/srq_cmd.c | 6 +++--- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 6 +++--- include/linux/mlx5/driver.h | 3 ++- 3 files changed, 8 insertions(+), 7 deletions(-)
Quoted 5 lines
Quoted 2 lines
LGTM, Leon, let me know if you are happy with this version, this should go to mlx5-next.
Thanks,
Acked-by Leon Romanovsky <[email protected]>
Applied to mlx5-next.
Thanks !