summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorParav Pandit <parav@mellanox.com>2019-05-02 10:48:07 +0300
committerJason Gunthorpe <jgg@mellanox.com>2019-05-03 11:10:03 -0300
commit943bd984b108b3bb778790c2da4ae8d186b547e6 (patch)
treeaad82acd480dd5ede4446830524e0dc0faec1fb0 /include
parent5102eca9039ba1df6d2e8756b0c030676021f56b (diff)
downloadlinux-943bd984b108b3bb778790c2da4ae8d186b547e6.tar.gz
linux-943bd984b108b3bb778790c2da4ae8d186b547e6.tar.bz2
linux-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')
-rw-r--r--include/rdma/ib_verbs.h2
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;