lcs: Recognize return codes of ccw_device_set_online().
authorKlaus-Dieter Wacker <kdwacker@de.ibm.com>
Wed, 14 Oct 2009 22:54:58 +0000 (22:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Oct 2009 06:57:22 +0000 (23:57 -0700)
The creation of a new lcs device requires a call to the function
ccw_device_set_online() for the read and the write channel. Failure
of either call should terminate the lcs device creation immediately
with return code -ENODEV.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/lcs.c

index f8dfd70a89d90f256b512e4087d8a3e9bdad579a..5e46415d3e13a9f15955d0ca9a0ba8034fa61d10 100644 (file)
@@ -2130,8 +2130,12 @@ lcs_new_device(struct ccwgroup_device *ccwgdev)
        card->write.ccwdev = ccwgdev->cdev[1];
 
        recover_state = card->state;
-       ccw_device_set_online(card->read.ccwdev);
-       ccw_device_set_online(card->write.ccwdev);
+       rc = ccw_device_set_online(card->read.ccwdev);
+       if (rc)
+               goto out_err;
+       rc = ccw_device_set_online(card->write.ccwdev);
+       if (rc)
+               goto out_werr;
 
        LCS_DBF_TEXT(3, setup, "lcsnewdv");
 
@@ -2210,8 +2214,10 @@ netdev_out:
        return 0;
 out:
 
-       ccw_device_set_offline(card->read.ccwdev);
        ccw_device_set_offline(card->write.ccwdev);
+out_werr:
+       ccw_device_set_offline(card->read.ccwdev);
+out_err:
        return -ENODEV;
 }