diff options
author | Roland Dreier <rolandd@cisco.com> | 2005-11-29 19:55:58 +0100 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2005-11-29 19:55:58 +0100 |
commit | 267ee88ed34c76dc527eeb3d95f9f9558ac99973 (patch) | |
tree | 1f53cd0db55372192cc088788dadbed102845a17 | |
parent | IPoIB: protect child list in ipoib_ib_dev_flush (diff) | |
download | linux-267ee88ed34c76dc527eeb3d95f9f9558ac99973.tar.xz linux-267ee88ed34c76dc527eeb3d95f9f9558ac99973.zip |
IPoIB: fix error handling in ipoib_open
If ipoib_ib_dev_up() fails after ipoib_ib_dev_open() is called, then
ipoib_ib_dev_stop() needs to be called to clean up.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 826d7a73ef84..475d98fa9e26 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -94,8 +94,10 @@ int ipoib_open(struct net_device *dev) if (ipoib_ib_dev_open(dev)) return -EINVAL; - if (ipoib_ib_dev_up(dev)) + if (ipoib_ib_dev_up(dev)) { + ipoib_ib_dev_stop(dev); return -EINVAL; + } if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { struct ipoib_dev_priv *cpriv; |