diff options
-rw-r--r-- | drivers/s390/cio/blacklist.c | 7 | ||||
-rw-r--r-- | drivers/s390/cio/css.c | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c index 2d444cb2fdf7..daf21e03b21d 100644 --- a/drivers/s390/cio/blacklist.c +++ b/drivers/s390/cio/blacklist.c @@ -299,10 +299,9 @@ cio_ignore_proc_seq_start(struct seq_file *s, loff_t *offset) if (*offset >= (__MAX_SUBCHANNEL + 1) * (__MAX_SSID + 1)) return NULL; - iter = kmalloc(sizeof(struct ccwdev_iter), GFP_KERNEL); + iter = kzalloc(sizeof(struct ccwdev_iter), GFP_KERNEL); if (!iter) return ERR_PTR(-ENOMEM); - memset(iter, 0, sizeof(struct ccwdev_iter)); iter->ssid = *offset / (__MAX_SUBCHANNEL + 1); iter->devno = *offset % (__MAX_SUBCHANNEL + 1); return iter; @@ -322,7 +321,7 @@ cio_ignore_proc_seq_next(struct seq_file *s, void *it, loff_t *offset) if (*offset >= (__MAX_SUBCHANNEL + 1) * (__MAX_SSID + 1)) return NULL; - iter = (struct ccwdev_iter *)it; + iter = it; if (iter->devno == __MAX_SUBCHANNEL) { iter->devno = 0; iter->ssid++; @@ -339,7 +338,7 @@ cio_ignore_proc_seq_show(struct seq_file *s, void *it) { struct ccwdev_iter *iter; - iter = (struct ccwdev_iter *)it; + iter = it; if (!is_blacklisted(iter->ssid, iter->devno)) /* Not blacklisted, nothing to output. */ return 0; diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 9e9d4a157a4c..e565193650c7 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c @@ -444,6 +444,15 @@ css_generate_pgid(struct channel_subsystem *css, u32 tod_high) } +static void +channel_subsystem_release(struct device *dev) +{ + struct channel_subsystem *css; + + css = to_css(dev); + kfree(css); +} + static inline void __init setup_css(int nr) { @@ -453,6 +462,7 @@ setup_css(int nr) css[nr]->valid = 1; css[nr]->cssid = nr; sprintf(css[nr]->device.bus_id, "css%x", nr); + css[nr]->device.release = channel_subsystem_release; tod_high = (u32) (get_clock() >> 32); css_generate_pgid(css[nr], tod_high); } |