| From 1ebbc30dc379461db55e105a7d5b5e27f4ab3d31 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 17 Sep 2018 16:07:07 +0200 |
| Subject: RDMA/i40iw: Fix incorrect iterator type |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Håkon Bugge <Haakon.Bugge@oracle.com> |
| |
| [ Upstream commit 802fa45cd320de319e86c93bca72abec028ba059 ] |
| |
| Commit f27b4746f378 ("i40iw: add connection management code") uses an |
| incorrect rcu iterator, whilst holding the rtnl_lock. Since the |
| critical region invokes i40iw_manage_qhash(), which is a sleeping |
| function, the rcu locking and traversal cannot be used. |
| |
| Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/infiniband/hw/i40iw/i40iw_cm.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c |
| index 423818a7d3330..771eb6bd07854 100644 |
| --- a/drivers/infiniband/hw/i40iw/i40iw_cm.c |
| +++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c |
| @@ -1689,7 +1689,7 @@ static enum i40iw_status_code i40iw_add_mqh_6(struct i40iw_device *iwdev, |
| unsigned long flags; |
| |
| rtnl_lock(); |
| - for_each_netdev_rcu(&init_net, ip_dev) { |
| + for_each_netdev(&init_net, ip_dev) { |
| if ((((rdma_vlan_dev_vlan_id(ip_dev) < I40IW_NO_VLAN) && |
| (rdma_vlan_dev_real_dev(ip_dev) == iwdev->netdev)) || |
| (ip_dev == iwdev->netdev)) && (ip_dev->flags & IFF_UP)) { |
| -- |
| 2.20.1 |
| |