IPoIB: protect child list in ipoib_ib_dev_flush

race condition: ipoib_ib_dev_flush is accessing child list without locks.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>

authored by Michael S. Tsirkin and committed by Roland Dreier 4f71055a 2e86541e

+4
+4
drivers/infiniband/ulp/ipoib/ipoib_ib.c
··· 608 608 if (test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags)) 609 609 ipoib_ib_dev_up(dev); 610 610 611 + down(&priv->vlan_mutex); 612 + 611 613 /* Flush any child interfaces too */ 612 614 list_for_each_entry(cpriv, &priv->child_intfs, list) 613 615 ipoib_ib_dev_flush(&cpriv->dev); 616 + 617 + up(&priv->vlan_mutex); 614 618 } 615 619 616 620 void ipoib_ib_dev_cleanup(struct net_device *dev)