diff options
| author | Gleb Smirnoff <glebius@FreeBSD.org> | 2019-01-09 01:11:19 +0000 |
|---|---|---|
| committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2019-01-09 01:11:19 +0000 |
| commit | a68cc388790587b330a01380a0c1864fb9ff3f1e (patch) | |
| tree | f5bb270ef868e474632d85d470c6f571f63fbe1a /sys/ofed/drivers | |
| parent | 086566c1c1b306c7eda0485e11c870bfaed6c721 (diff) | |
Notes
Diffstat (limited to 'sys/ofed/drivers')
| -rw-r--r-- | sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c | 6 | ||||
| -rw-r--r-- | sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c b/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c index 8bdd7aed1ea3..0c397ebe8dce 100644 --- a/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c +++ b/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c @@ -186,6 +186,8 @@ roce_gid_update_addr_callback(struct ib_device *device, u8 port, CURVNET_SET(vnet_iter); IFNET_RLOCK(); CK_STAILQ_FOREACH(idev, &V_ifnet, if_link) { + struct epoch_tracker et; + if (idev != ndev) { if (idev->if_type != IFT_L2VLAN) continue; @@ -194,7 +196,7 @@ roce_gid_update_addr_callback(struct ib_device *device, u8 port, } /* clone address information for IPv4 and IPv6 */ - IF_ADDR_RLOCK(idev); + NET_EPOCH_ENTER(et); #if defined(INET) CK_STAILQ_FOREACH(ifa, &idev->if_addrhead, ifa_link) { if (ifa->ifa_addr == NULL || @@ -232,7 +234,7 @@ roce_gid_update_addr_callback(struct ib_device *device, u8 port, STAILQ_INSERT_TAIL(&ipx_head, entry, entry); } #endif - IF_ADDR_RUNLOCK(idev); + NET_EPOCH_EXIT(et); } IFNET_RUNLOCK(); CURVNET_RESTORE(); diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c index f634496fb914..ac3108edeabe 100644 --- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -1150,11 +1150,12 @@ ipoib_remove_one(struct ib_device *device, void *client_data) static int ipoib_match_dev_addr(const struct sockaddr *addr, struct net_device *dev) { + struct epoch_tracker et; struct ifaddr *ifa; int retval = 0; CURVNET_SET(dev->if_vnet); - IF_ADDR_RLOCK(dev); + NET_EPOCH_ENTER(et); CK_STAILQ_FOREACH(ifa, &dev->if_addrhead, ifa_link) { if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != addr->sa_family || @@ -1166,7 +1167,7 @@ ipoib_match_dev_addr(const struct sockaddr *addr, struct net_device *dev) break; } } - IF_ADDR_RUNLOCK(dev); + NET_EPOCH_EXIT(et); CURVNET_RESTORE(); return (retval); |
