From: Horst Hummel The proc_mkdir calls in the dasd driver are not check for NULL pointers. Add code to check the pointers and bail out if one of the proc entries could not be created. Signed-off-by: Horst Hummel Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton --- drivers/s390/block/dasd_proc.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+) diff -puN drivers/s390/block/dasd_proc.c~s390-dasd-proc-entries drivers/s390/block/dasd_proc.c --- 25/drivers/s390/block/dasd_proc.c~s390-dasd-proc-entries Mon Apr 3 16:03:43 2006 +++ 25-akpm/drivers/s390/block/dasd_proc.c Mon Apr 3 16:03:43 2006 @@ -294,23 +294,40 @@ out_error: #endif /* CONFIG_DASD_PROFILE */ } +/* + * Create dasd proc-fs entries. + * In case creation failed, cleanup and return -ENOENT. + */ int dasd_proc_init(void) { dasd_proc_root_entry = proc_mkdir("dasd", &proc_root); + if (!dasd_proc_root_entry) + goto out_nodasd; dasd_proc_root_entry->owner = THIS_MODULE; dasd_devices_entry = create_proc_entry("devices", S_IFREG | S_IRUGO | S_IWUSR, dasd_proc_root_entry); + if (!dasd_devices_entry) + goto out_nodevices; dasd_devices_entry->proc_fops = &dasd_devices_file_ops; dasd_devices_entry->owner = THIS_MODULE; dasd_statistics_entry = create_proc_entry("statistics", S_IFREG | S_IRUGO | S_IWUSR, dasd_proc_root_entry); + if (!dasd_statistics_entry) + goto out_nostatistics; dasd_statistics_entry->read_proc = dasd_statistics_read; dasd_statistics_entry->write_proc = dasd_statistics_write; dasd_statistics_entry->owner = THIS_MODULE; return 0; + + out_nostatistics: + remove_proc_entry("devices", dasd_proc_root_entry); + out_nodevices: + remove_proc_entry("dasd", &proc_root); + out_nodasd: + return -ENOENT; } void _