diff options
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 904b1f3567b..b447e1998c6 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -924,6 +924,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
924 | enum qeth_card_states recover_flag; | 924 | enum qeth_card_states recover_flag; |
925 | 925 | ||
926 | BUG_ON(!card); | 926 | BUG_ON(!card); |
927 | mutex_lock(&card->conf_mutex); | ||
927 | QETH_DBF_TEXT(SETUP, 2, "setonlin"); | 928 | QETH_DBF_TEXT(SETUP, 2, "setonlin"); |
928 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); | 929 | QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *)); |
929 | 930 | ||
@@ -956,7 +957,7 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
956 | dev_warn(&card->gdev->dev, | 957 | dev_warn(&card->gdev->dev, |
957 | "The LAN is offline\n"); | 958 | "The LAN is offline\n"); |
958 | card->lan_online = 0; | 959 | card->lan_online = 0; |
959 | return 0; | 960 | goto out; |
960 | } | 961 | } |
961 | rc = -ENODEV; | 962 | rc = -ENODEV; |
962 | goto out_remove; | 963 | goto out_remove; |
@@ -995,6 +996,8 @@ static int __qeth_l2_set_online(struct ccwgroup_device *gdev, int recovery_mode) | |||
995 | } | 996 | } |
996 | /* let user_space know that device is online */ | 997 | /* let user_space know that device is online */ |
997 | kobject_uevent(&gdev->dev.kobj, KOBJ_CHANGE); | 998 | kobject_uevent(&gdev->dev.kobj, KOBJ_CHANGE); |
999 | out: | ||
1000 | mutex_unlock(&card->conf_mutex); | ||
998 | return 0; | 1001 | return 0; |
999 | 1002 | ||
1000 | out_remove: | 1003 | out_remove: |
@@ -1007,6 +1010,7 @@ out_remove: | |||
1007 | card->state = CARD_STATE_RECOVER; | 1010 | card->state = CARD_STATE_RECOVER; |
1008 | else | 1011 | else |
1009 | card->state = CARD_STATE_DOWN; | 1012 | card->state = CARD_STATE_DOWN; |
1013 | mutex_unlock(&card->conf_mutex); | ||
1010 | return rc; | 1014 | return rc; |
1011 | } | 1015 | } |
1012 | 1016 | ||
@@ -1022,6 +1026,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev, | |||
1022 | int rc = 0, rc2 = 0, rc3 = 0; | 1026 | int rc = 0, rc2 = 0, rc3 = 0; |
1023 | enum qeth_card_states recover_flag; | 1027 | enum qeth_card_states recover_flag; |
1024 | 1028 | ||
1029 | mutex_lock(&card->conf_mutex); | ||
1025 | QETH_DBF_TEXT(SETUP, 3, "setoffl"); | 1030 | QETH_DBF_TEXT(SETUP, 3, "setoffl"); |
1026 | QETH_DBF_HEX(SETUP, 3, &card, sizeof(void *)); | 1031 | QETH_DBF_HEX(SETUP, 3, &card, sizeof(void *)); |
1027 | 1032 | ||
@@ -1040,6 +1045,7 @@ static int __qeth_l2_set_offline(struct ccwgroup_device *cgdev, | |||
1040 | card->state = CARD_STATE_RECOVER; | 1045 | card->state = CARD_STATE_RECOVER; |
1041 | /* let user_space know that device is offline */ | 1046 | /* let user_space know that device is offline */ |
1042 | kobject_uevent(&cgdev->dev.kobj, KOBJ_CHANGE); | 1047 | kobject_uevent(&cgdev->dev.kobj, KOBJ_CHANGE); |
1048 | mutex_unlock(&card->conf_mutex); | ||
1043 | return 0; | 1049 | return 0; |
1044 | } | 1050 | } |
1045 | 1051 | ||