ps3vram: Use proc_create_data() instead of proc_create()
authorGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Wed, 10 Jun 2009 04:38:38 +0000 (04:38 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 15 Jun 2009 03:26:18 +0000 (13:26 +1000)
Use proc_create_data() to avoid race conditions.

Reported-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: Jim Paris <jim@jtan.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
drivers/block/ps3vram.c

index 2e79d2c..6e73868 100644 (file)
@@ -546,12 +546,10 @@ static void __devinit ps3vram_proc_init(struct ps3_system_bus_device *dev)
        struct ps3vram_priv *priv = dev->core.driver_data;
        struct proc_dir_entry *pde;
 
-       pde = proc_create(DEVICE_NAME, 0444, NULL, &ps3vram_proc_fops);
-       if (!pde) {
+       pde = proc_create_data(DEVICE_NAME, 0444, NULL, &ps3vram_proc_fops,
+                              priv);
+       if (!pde)
                dev_warn(&dev->core, "failed to create /proc entry\n");
-               return;
-       }
-       pde->data = priv;
 }
 
 static int ps3vram_make_request(struct request_queue *q, struct bio *bio)