diff options
author | Parav Pandit <parav@mellanox.com> | 2019-05-02 10:48:07 +0300 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2019-05-03 11:10:03 -0300 |
commit | 943bd984b108b3bb778790c2da4ae8d186b547e6 (patch) | |
tree | aad82acd480dd5ede4446830524e0dc0faec1fb0 /include/rdma/ib_verbs.h | |
parent | 5102eca9039ba1df6d2e8756b0c030676021f56b (diff) | |
download | linux-stable-943bd984b108b3bb778790c2da4ae8d186b547e6.tar.gz linux-stable-943bd984b108b3bb778790c2da4ae8d186b547e6.tar.bz2 linux-stable-943bd984b108b3bb778790c2da4ae8d186b547e6.zip |
RDMA/core: Allow detaching gid attribute netdevice for RoCE
When there is active traffic through a GID, a QP/AH holds reference to
this GID entry. RoCE GID entry holds reference to its attached
netdevice. Due to this when netdevice is deleted by admin user, its
refcount is not dropped.
Therefore, while deleting RoCE GID, wait for all GID attribute's netdev
users to finish accessing netdev in rcu context. Once all users done
accessing it, release the netdev refcount.
Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'include/rdma/ib_verbs.h')
-rw-r--r-- | include/rdma/ib_verbs.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 4312899231ca..8f8965f8ffdb 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -124,7 +124,7 @@ enum ib_gid_type { #define ROCE_V2_UDP_DPORT 4791 struct ib_gid_attr { - struct net_device *ndev; + struct net_device __rcu *ndev; struct ib_device *device; union ib_gid gid; enum ib_gid_type gid_type; |