s390: use non-racy method for proc entries creation
authorDenis V. Lunev <den@openvz.org>
Tue, 29 Apr 2008 08:02:20 +0000 (01:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 29 Apr 2008 15:06:21 +0000 (08:06 -0700)
Use proc_create() to make sure that ->proc_fops be setup before gluing PDE to
main tree.

Signed-off-by: Denis V. Lunev <den@openvz.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/s390/block/dasd_proc.c
drivers/s390/char/tape_proc.c
drivers/s390/cio/blacklist.c

index 8ae9406..03c0e40 100644 (file)
@@ -157,6 +157,7 @@ static int dasd_devices_open(struct inode *inode, struct file *file)
 }
 
 static const struct file_operations dasd_devices_file_ops = {
+       .owner          = THIS_MODULE,
        .open           = dasd_devices_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -315,13 +316,12 @@ dasd_proc_init(void)
        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);
+       dasd_devices_entry = proc_create("devices",
+                                        S_IFREG | S_IRUGO | S_IWUSR,
+                                        dasd_proc_root_entry,
+                                        &dasd_devices_file_ops);
        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);
index 0c39636..e7c888c 100644 (file)
@@ -111,6 +111,7 @@ static int tape_proc_open(struct inode *inode, struct file *file)
 
 static const struct file_operations tape_proc_ops =
 {
+       .owner          = THIS_MODULE,
        .open           = tape_proc_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -124,14 +125,12 @@ void
 tape_proc_init(void)
 {
        tape_proc_devices =
-               create_proc_entry ("tapedevices", S_IFREG | S_IRUGO | S_IWUSR,
-                                  NULL);
+               proc_create("tapedevices", S_IFREG | S_IRUGO | S_IWUSR, NULL,
+                           &tape_proc_ops);
        if (tape_proc_devices == NULL) {
                PRINT_WARN("tape: Cannot register procfs entry tapedevices\n");
                return;
        }
-       tape_proc_devices->proc_fops = &tape_proc_ops;
-       tape_proc_devices->owner = THIS_MODULE;
 }
 
 /*
index ef33d5d..40ef948 100644 (file)
@@ -374,13 +374,10 @@ cio_ignore_proc_init (void)
 {
        struct proc_dir_entry *entry;
 
-       entry = create_proc_entry ("cio_ignore", S_IFREG | S_IRUGO | S_IWUSR,
-                                  NULL);
+       entry = proc_create("cio_ignore", S_IFREG | S_IRUGO | S_IWUSR, NULL,
+                           &cio_ignore_proc_fops);
        if (!entry)
                return -ENOENT;
-
-       entry->proc_fops = &cio_ignore_proc_fops;
-
        return 0;
 }