Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

lcs: Return zero from ccwgroup devs set_offline function

A return code of non-zero of the devs ccwgroup set_offline function
leaves the dev in online state. Having done a partly offlining
may leave the dev in unusable state. To make sure the dev is set to
offline, zero is returned. A setup trace entry is written in case
the offlining steps encountered some trouble.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Klaus-Dieter Wacker and committed by
David S. Miller
e427babe e0a8114c

+7 -5
+7 -5
drivers/s390/net/lcs.c
··· 2240 2240 { 2241 2241 struct lcs_card *card; 2242 2242 enum lcs_dev_states recover_state; 2243 - int ret; 2243 + int ret = 0, ret2 = 0, ret3 = 0; 2244 2244 2245 2245 LCS_DBF_TEXT(3, setup, "shtdndev"); 2246 2246 card = dev_get_drvdata(&ccwgdev->dev); ··· 2255 2255 recover_state = card->state; 2256 2256 2257 2257 ret = lcs_stop_device(card->dev); 2258 - ret = ccw_device_set_offline(card->read.ccwdev); 2259 - ret = ccw_device_set_offline(card->write.ccwdev); 2258 + ret2 = ccw_device_set_offline(card->read.ccwdev); 2259 + ret3 = ccw_device_set_offline(card->write.ccwdev); 2260 + if (!ret) 2261 + ret = (ret2) ? ret2 : ret3; 2262 + if (ret) 2263 + LCS_DBF_TEXT_(3, setup, "1err:%d", ret); 2260 2264 if (recover_state == DEV_STATE_UP) { 2261 2265 card->state = DEV_STATE_RECOVER; 2262 2266 } 2263 - if (ret) 2264 - return ret; 2265 2267 return 0; 2266 2268 } 2267 2269