projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e259934
)
IB/cma: Fix a race condition in iboe_addr_get_sgid()
author
Bart Van Assche
<
[email protected]
>
Mon, 19 Dec 2016 17:00:05 +0000
(18:00 +0100)
committer
Doug Ledford
<
[email protected]
>
Thu, 22 Dec 2016 16:33:57 +0000
(11:33 -0500)
Code that dereferences the struct net_device ip_ptr member must be
protected with an in_dev_get() / in_dev_put() pair. Hence insert
calls to these functions.
Fixes: commit 7b85627b9f02 ("IB/cma: IBoE (RoCE) IP-based GID addressing")
Signed-off-by: Bart Van Assche <
[email protected]
>
Reviewed-by: Moni Shoua <
[email protected]
>
Cc: Or Gerlitz <
[email protected]
>
Cc: Roland Dreier <
[email protected]
>
Cc: <
[email protected]
>
Signed-off-by: Doug Ledford <
[email protected]
>
include/rdma/ib_addr.h
patch
|
blob
|
history
diff --git
a/include/rdma/ib_addr.h
b/include/rdma/ib_addr.h
index 931a47ba45718ad5c329b1085c7fac5319e7448f..1beab5532035dc2126405384d44457f183de2a90 100644
(file)
--- a/
include/rdma/ib_addr.h
+++ b/
include/rdma/ib_addr.h
@@
-205,10
+205,12
@@
static inline void iboe_addr_get_sgid(struct rdma_dev_addr *dev_addr,
dev = dev_get_by_index(&init_net, dev_addr->bound_dev_if);
if (dev) {
- ip4 =
(struct in_device *)dev->ip_ptr
;
- if (ip4 && ip4->ifa_list && ip4->ifa_list->ifa_address)
+ ip4 =
in_dev_get(dev)
;
+ if (ip4 && ip4->ifa_list && ip4->ifa_list->ifa_address)
{
ipv6_addr_set_v4mapped(ip4->ifa_list->ifa_address,
(struct in6_addr *)gid);
+ in_dev_put(ip4);
+ }
dev_put(dev);
}
}