mbox series

[v4,for-next,00/12] RDMA: Use refcount_t for reference counting

Message ID 1622194663-2383-1-git-send-email-liweihang@huawei.com (mailing list archive)
Headers show
Series RDMA: Use refcount_t for reference counting | expand

Message

Weihang Li May 28, 2021, 9:37 a.m. UTC
There are some refcnt in type of atomic_t in RDMA subsystem, almost all of
them is wrote before the refcount_t is acheived in kernel. refcount_t is
better than integer for reference counting, it will WARN on
overflow/underflow and avoid use-after-free risks.

Changes since v3:
* Drop the rdmavt patch because the refcount_t is not suitable for the
  logic.
* Link: https://patchwork.kernel.org/project/linux-rdma/cover/1621925504-33019-1-git-send-email-liweihang@huawei.com/

Changes since v2:
* Drop i40iw related parts because this driver will be removed soon.
* Link: https://patchwork.kernel.org/project/linux-rdma/cover/1621590825-60693-1-git-send-email-liweihang@huawei.com/

Changes since v1:
* Split these patches by variable granularity.
* Fix a warning on refcount of struct mcast_group.
* Add a patch on rdmavt.
* Drop "RDMA/hns: Use refcount_t APIs for HEM".
* Link: https://patchwork.kernel.org/project/linux-rdma/cover/1620958299-4869-1-git-send-email-liweihang@huawei.com/


Weihang Li (12):
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    iwcm_id_private
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    iwpm_admin_data
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    ib_mad_snoop_private
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    mcast_member
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    mcast_port
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    mcast_group
  RDMA/core: Use refcount_t instead of atomic_t on refcount of
    ib_uverbs_device
  RDMA/hns: Use refcount_t instead of atomic_t for CQ reference counting
  RDMA/hns: Use refcount_t instead of atomic_t for SRQ reference
    counting
  RDMA/hns: Use refcount_t instead of atomic_t for QP reference counting
  RDMA/cxgb4: Use refcount_t instead of atomic_t for reference counting
  RDMA/ipoib: Use refcount_t instead of atomic_t for reference counting

 drivers/infiniband/core/iwcm.c              |  9 ++++---
 drivers/infiniband/core/iwcm.h              |  2 +-
 drivers/infiniband/core/iwpm_util.c         | 12 ++++++----
 drivers/infiniband/core/iwpm_util.h         |  2 +-
 drivers/infiniband/core/mad_priv.h          |  2 +-
 drivers/infiniband/core/multicast.c         | 37 ++++++++++++++++-------------
 drivers/infiniband/core/uverbs.h            |  2 +-
 drivers/infiniband/core/uverbs_main.c       | 12 +++++-----
 drivers/infiniband/hw/cxgb4/cq.c            |  6 ++---
 drivers/infiniband/hw/cxgb4/ev.c            |  8 +++----
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h      |  2 +-
 drivers/infiniband/hw/hns/hns_roce_cq.c     |  8 +++----
 drivers/infiniband/hw/hns/hns_roce_device.h |  6 ++---
 drivers/infiniband/hw/hns/hns_roce_qp.c     | 12 +++++-----
 drivers/infiniband/hw/hns/hns_roce_srq.c    |  8 +++----
 drivers/infiniband/ulp/ipoib/ipoib.h        |  4 ++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c   |  8 +++----
 17 files changed, 74 insertions(+), 66 deletions(-)

Comments

Jason Gunthorpe June 8, 2021, 6:08 p.m. UTC | #1
On Fri, May 28, 2021 at 05:37:31PM +0800, Weihang Li wrote:
> There are some refcnt in type of atomic_t in RDMA subsystem, almost all of
> them is wrote before the refcount_t is acheived in kernel. refcount_t is
> better than integer for reference counting, it will WARN on
> overflow/underflow and avoid use-after-free risks.
> 
> Changes since v3:
> * Drop the rdmavt patch because the refcount_t is not suitable for the
>   logic.
> * Link: https://patchwork.kernel.org/project/linux-rdma/cover/1621925504-33019-1-git-send-email-liweihang@huawei.com/
> 
> Changes since v2:
> * Drop i40iw related parts because this driver will be removed soon.
> * Link: https://patchwork.kernel.org/project/linux-rdma/cover/1621590825-60693-1-git-send-email-liweihang@huawei.com/
> 
> Changes since v1:
> * Split these patches by variable granularity.
> * Fix a warning on refcount of struct mcast_group.
> * Add a patch on rdmavt.
> * Drop "RDMA/hns: Use refcount_t APIs for HEM".
> * Link: https://patchwork.kernel.org/project/linux-rdma/cover/1620958299-4869-1-git-send-email-liweihang@huawei.com/
> 
> 
> Weihang Li (12):
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     iwcm_id_private
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     iwpm_admin_data
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     ib_mad_snoop_private
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     mcast_member
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     mcast_port
>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     ib_uverbs_device
>   RDMA/hns: Use refcount_t instead of atomic_t for CQ reference counting
>   RDMA/hns: Use refcount_t instead of atomic_t for SRQ reference
>     counting
>   RDMA/hns: Use refcount_t instead of atomic_t for QP reference counting
>   RDMA/cxgb4: Use refcount_t instead of atomic_t for reference counting
>   RDMA/ipoib: Use refcount_t instead of atomic_t for reference counting

Applied to for-next, thanks

>   RDMA/core: Use refcount_t instead of atomic_t on refcount of
>     mcast_group

This one needs to be resent

Jason