summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2010-08-09 18:12:52 +0200
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2010-08-09 18:12:53 +0200
commit7cd403142d5dbffa354b7dd369b1069e01b1ae19 (patch)
treecea6fccf5b48466599a79ad19b22bebc21a56f0b
parentdbedd0ee47313f2a3c94b19346785fcdfa721390 (diff)
[S390] cio: ccw_device_online_store return -EINVAL in case of missing driver
If no driver is attached to a device or the driver provides no set_online/set_offline function, setting this device online/offline via its sysfs online attribute will silently fail but return success. This patch changes the behavior to return -EINVAL in those cases. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/cio/device.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 75acec3b2d6b..51bd3687d163 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -487,9 +487,11 @@ static int online_store_handle_offline(struct ccw_device *cdev)
spin_lock_irq(cdev->ccwlock);
ccw_device_sched_todo(cdev, CDEV_TODO_UNREG_EVAL);
spin_unlock_irq(cdev->ccwlock);
- } else if (cdev->online && cdev->drv && cdev->drv->set_offline)
+ return 0;
+ }
+ if (cdev->drv && cdev->drv->set_offline)
return ccw_device_set_offline(cdev);
- return 0;
+ return -EINVAL;
}
static int online_store_recog_and_online(struct ccw_device *cdev)
@@ -506,8 +508,8 @@ static int online_store_recog_and_online(struct ccw_device *cdev)
return -EAGAIN;
}
if (cdev->drv && cdev->drv->set_online)
- ccw_device_set_online(cdev);
- return 0;
+ return ccw_device_set_online(cdev);
+ return -EINVAL;
}
static int online_store_handle_online(struct ccw_device *cdev, int force)