diff options
-rw-r--r-- | drivers/s390/cio/blacklist.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c index 6565f027791e..7eab9ab9f406 100644 --- a/drivers/s390/cio/blacklist.c +++ b/drivers/s390/cio/blacklist.c | |||
@@ -265,13 +265,11 @@ struct ccwdev_iter { | |||
265 | static void * | 265 | static void * |
266 | cio_ignore_proc_seq_start(struct seq_file *s, loff_t *offset) | 266 | cio_ignore_proc_seq_start(struct seq_file *s, loff_t *offset) |
267 | { | 267 | { |
268 | struct ccwdev_iter *iter; | 268 | struct ccwdev_iter *iter = s->private; |
269 | 269 | ||
270 | if (*offset >= (__MAX_SUBCHANNEL + 1) * (__MAX_SSID + 1)) | 270 | if (*offset >= (__MAX_SUBCHANNEL + 1) * (__MAX_SSID + 1)) |
271 | return NULL; | 271 | return NULL; |
272 | iter = kzalloc(sizeof(struct ccwdev_iter), GFP_KERNEL); | 272 | memset(iter, 0, sizeof(*iter)); |
273 | if (!iter) | ||
274 | return ERR_PTR(-ENOMEM); | ||
275 | iter->ssid = *offset / (__MAX_SUBCHANNEL + 1); | 273 | iter->ssid = *offset / (__MAX_SUBCHANNEL + 1); |
276 | iter->devno = *offset % (__MAX_SUBCHANNEL + 1); | 274 | iter->devno = *offset % (__MAX_SUBCHANNEL + 1); |
277 | return iter; | 275 | return iter; |
@@ -280,8 +278,6 @@ cio_ignore_proc_seq_start(struct seq_file *s, loff_t *offset) | |||
280 | static void | 278 | static void |
281 | cio_ignore_proc_seq_stop(struct seq_file *s, void *it) | 279 | cio_ignore_proc_seq_stop(struct seq_file *s, void *it) |
282 | { | 280 | { |
283 | if (!IS_ERR(it)) | ||
284 | kfree(it); | ||
285 | } | 281 | } |
286 | 282 | ||
287 | static void * | 283 | static void * |
@@ -378,14 +374,15 @@ static const struct seq_operations cio_ignore_proc_seq_ops = { | |||
378 | static int | 374 | static int |
379 | cio_ignore_proc_open(struct inode *inode, struct file *file) | 375 | cio_ignore_proc_open(struct inode *inode, struct file *file) |
380 | { | 376 | { |
381 | return seq_open(file, &cio_ignore_proc_seq_ops); | 377 | return seq_open_private(file, &cio_ignore_proc_seq_ops, |
378 | sizeof(struct ccwdev_iter)); | ||
382 | } | 379 | } |
383 | 380 | ||
384 | static const struct file_operations cio_ignore_proc_fops = { | 381 | static const struct file_operations cio_ignore_proc_fops = { |
385 | .open = cio_ignore_proc_open, | 382 | .open = cio_ignore_proc_open, |
386 | .read = seq_read, | 383 | .read = seq_read, |
387 | .llseek = seq_lseek, | 384 | .llseek = seq_lseek, |
388 | .release = seq_release, | 385 | .release = seq_release_private, |
389 | .write = cio_ignore_write, | 386 | .write = cio_ignore_write, |
390 | }; | 387 | }; |
391 | 388 | ||