提交 cff97102 编写于 作者: S Sebastian Ott 提交者: Martin Schwidefsky

s390/ccwgroup: set_online return error when already online

Return -EINVAL if set_{on,off}line is called for already {on,off}line
devices. Also return -EINVAL for drivers which do not provide a callback
for set_{on,off}line. This behaviour is now consistent with the one for
ccw devices.
Reported-by: NStefan Raspl <raspl@linux.vnet.ibm.com>
Signed-off-by: NSebastian Ott <sebott@linux.vnet.ibm.com>
Acked-by: NPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 ce6a04ac
...@@ -68,7 +68,7 @@ static void __ccwgroup_remove_cdev_refs(struct ccwgroup_device *gdev) ...@@ -68,7 +68,7 @@ static void __ccwgroup_remove_cdev_refs(struct ccwgroup_device *gdev)
static int ccwgroup_set_online(struct ccwgroup_device *gdev) static int ccwgroup_set_online(struct ccwgroup_device *gdev)
{ {
struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver); struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
int ret = 0; int ret = -EINVAL;
if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0) if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0)
return -EAGAIN; return -EAGAIN;
...@@ -88,7 +88,7 @@ static int ccwgroup_set_online(struct ccwgroup_device *gdev) ...@@ -88,7 +88,7 @@ static int ccwgroup_set_online(struct ccwgroup_device *gdev)
static int ccwgroup_set_offline(struct ccwgroup_device *gdev) static int ccwgroup_set_offline(struct ccwgroup_device *gdev)
{ {
struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver); struct ccwgroup_driver *gdrv = to_ccwgroupdrv(gdev->dev.driver);
int ret = 0; int ret = -EINVAL;
if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0) if (atomic_cmpxchg(&gdev->onoff, 0, 1) != 0)
return -EAGAIN; return -EAGAIN;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册