aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio')
-rw-r--r--drivers/s390/cio/ccwgroup.c6
-rw-r--r--drivers/s390/cio/device.c11
-rw-r--r--drivers/s390/cio/device.h1
-rw-r--r--drivers/s390/cio/qdio_main.c3
4 files changed, 8 insertions, 13 deletions
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c
index 2864581d8ecb..5c567414c4bb 100644
--- a/drivers/s390/cio/ccwgroup.c
+++ b/drivers/s390/cio/ccwgroup.c
@@ -428,7 +428,7 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
428 gdev = to_ccwgroupdev(dev); 428 gdev = to_ccwgroupdev(dev);
429 gdrv = to_ccwgroupdrv(dev->driver); 429 gdrv = to_ccwgroupdrv(dev->driver);
430 430
431 if (!try_module_get(gdrv->owner)) 431 if (!try_module_get(gdrv->driver.owner))
432 return -EINVAL; 432 return -EINVAL;
433 433
434 ret = strict_strtoul(buf, 0, &value); 434 ret = strict_strtoul(buf, 0, &value);
@@ -442,7 +442,7 @@ ccwgroup_online_store (struct device *dev, struct device_attribute *attr, const
442 else 442 else
443 ret = -EINVAL; 443 ret = -EINVAL;
444out: 444out:
445 module_put(gdrv->owner); 445 module_put(gdrv->driver.owner);
446 return (ret == 0) ? count : ret; 446 return (ret == 0) ? count : ret;
447} 447}
448 448
@@ -616,8 +616,6 @@ int ccwgroup_driver_register(struct ccwgroup_driver *cdriver)
616{ 616{
617 /* register our new driver with the core */ 617 /* register our new driver with the core */
618 cdriver->driver.bus = &ccwgroup_bus_type; 618 cdriver->driver.bus = &ccwgroup_bus_type;
619 cdriver->driver.name = cdriver->name;
620 cdriver->driver.owner = cdriver->owner;
621 619
622 return driver_register(&cdriver->driver); 620 return driver_register(&cdriver->driver);
623} 621}
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index e50b12163afe..df14c51f6532 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -127,7 +127,7 @@ static int ccw_uevent(struct device *dev, struct kobj_uevent_env *env)
127 return ret; 127 return ret;
128} 128}
129 129
130struct bus_type ccw_bus_type; 130static struct bus_type ccw_bus_type;
131 131
132static void io_subchannel_irq(struct subchannel *); 132static void io_subchannel_irq(struct subchannel *);
133static int io_subchannel_probe(struct subchannel *); 133static int io_subchannel_probe(struct subchannel *);
@@ -547,7 +547,7 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr,
547 if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) 547 if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0)
548 return -EAGAIN; 548 return -EAGAIN;
549 549
550 if (cdev->drv && !try_module_get(cdev->drv->owner)) { 550 if (cdev->drv && !try_module_get(cdev->drv->driver.owner)) {
551 atomic_set(&cdev->private->onoff, 0); 551 atomic_set(&cdev->private->onoff, 0);
552 return -EINVAL; 552 return -EINVAL;
553 } 553 }
@@ -573,7 +573,7 @@ static ssize_t online_store (struct device *dev, struct device_attribute *attr,
573 } 573 }
574out: 574out:
575 if (cdev->drv) 575 if (cdev->drv)
576 module_put(cdev->drv->owner); 576 module_put(cdev->drv->driver.owner);
577 atomic_set(&cdev->private->onoff, 0); 577 atomic_set(&cdev->private->onoff, 0);
578 return (ret < 0) ? ret : count; 578 return (ret < 0) ? ret : count;
579} 579}
@@ -1970,7 +1970,7 @@ static const struct dev_pm_ops ccw_pm_ops = {
1970 .restore = ccw_device_pm_restore, 1970 .restore = ccw_device_pm_restore,
1971}; 1971};
1972 1972
1973struct bus_type ccw_bus_type = { 1973static struct bus_type ccw_bus_type = {
1974 .name = "ccw", 1974 .name = "ccw",
1975 .match = ccw_bus_match, 1975 .match = ccw_bus_match,
1976 .uevent = ccw_uevent, 1976 .uevent = ccw_uevent,
@@ -1993,8 +1993,6 @@ int ccw_driver_register(struct ccw_driver *cdriver)
1993 struct device_driver *drv = &cdriver->driver; 1993 struct device_driver *drv = &cdriver->driver;
1994 1994
1995 drv->bus = &ccw_bus_type; 1995 drv->bus = &ccw_bus_type;
1996 drv->name = cdriver->name;
1997 drv->owner = cdriver->owner;
1998 1996
1999 return driver_register(drv); 1997 return driver_register(drv);
2000} 1998}
@@ -2112,5 +2110,4 @@ EXPORT_SYMBOL(ccw_device_set_offline);
2112EXPORT_SYMBOL(ccw_driver_register); 2110EXPORT_SYMBOL(ccw_driver_register);
2113EXPORT_SYMBOL(ccw_driver_unregister); 2111EXPORT_SYMBOL(ccw_driver_unregister);
2114EXPORT_SYMBOL(get_ccwdev_by_busid); 2112EXPORT_SYMBOL(get_ccwdev_by_busid);
2115EXPORT_SYMBOL(ccw_bus_type);
2116EXPORT_SYMBOL_GPL(ccw_device_get_subchannel_id); 2113EXPORT_SYMBOL_GPL(ccw_device_get_subchannel_id);
diff --git a/drivers/s390/cio/device.h b/drivers/s390/cio/device.h
index 379de2d1ec49..7e297c7bb5ff 100644
--- a/drivers/s390/cio/device.h
+++ b/drivers/s390/cio/device.h
@@ -133,7 +133,6 @@ void ccw_device_set_notoper(struct ccw_device *cdev);
133/* qdio needs this. */ 133/* qdio needs this. */
134void ccw_device_set_timeout(struct ccw_device *, int); 134void ccw_device_set_timeout(struct ccw_device *, int);
135extern struct subchannel_id ccw_device_get_subchannel_id(struct ccw_device *); 135extern struct subchannel_id ccw_device_get_subchannel_id(struct ccw_device *);
136extern struct bus_type ccw_bus_type;
137 136
138/* Channel measurement facility related */ 137/* Channel measurement facility related */
139void retry_set_schib(struct ccw_device *cdev); 138void retry_set_schib(struct ccw_device *cdev);
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 5640c89cd9de..479c665e9e7c 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1508,7 +1508,8 @@ int do_QDIO(struct ccw_device *cdev, unsigned int callflags,
1508 1508
1509 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE) 1509 if (irq_ptr->state != QDIO_IRQ_STATE_ACTIVE)
1510 return -EBUSY; 1510 return -EBUSY;
1511 1511 if (!count)
1512 return 0;
1512 if (callflags & QDIO_FLAG_SYNC_INPUT) 1513 if (callflags & QDIO_FLAG_SYNC_INPUT)
1513 return handle_inbound(irq_ptr->input_qs[q_nr], 1514 return handle_inbound(irq_ptr->input_qs[q_nr],
1514 callflags, bufnr, count); 1515 callflags, bufnr, count);