If ipoib_open() fails, it should clear IPOIB_FLAG_ADMIN_UP bit and not leave if on. This is already fixed in 2.6.30.
Reported-by: Jack Morgenstein <[email protected]> Signed-off-by: Yossi Etigin <[email protected]> --- Index: b/drivers/infiniband/ulp/ipoib/ipoib_main.c =================================================================== --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c 2009-04-22 19:45:11.000000000 +0300 +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c 2009-04-22 19:51:51.000000000 +0300 @@ -112,11 +112,11 @@ int ipoib_open(struct net_device *dev) return 0; if (ipoib_ib_dev_open(dev)) - return -EINVAL; + goto err; if (ipoib_ib_dev_up(dev)) { ipoib_ib_dev_stop(dev, 1); - return -EINVAL; + goto err; } if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { @@ -139,6 +139,9 @@ int ipoib_open(struct net_device *dev) netif_start_queue(dev); return 0; +err: + clear_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); + return -EINVAL; } static int ipoib_stop(struct net_device *dev) _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
