Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
[linux-2.6-block.git] / drivers / ide / ide-disk.c
index 234f5de3e929b6c0d10ee46a994e200f16f62646..4e5767968d7fecc76e366a1b1793dbb993aa20c2 100644 (file)
@@ -1034,12 +1034,12 @@ static int ide_disk_remove(struct device *dev)
        struct ide_disk_obj *idkp = drive->driver_data;
        struct gendisk *g = idkp->disk;
 
-       ide_cacheflush_p(drive);
-
        ide_unregister_subdriver(drive, idkp->driver);
 
        del_gendisk(g);
 
+       ide_cacheflush_p(drive);
+
        ide_disk_put(idkp);
 
        return 0;
@@ -1089,8 +1089,8 @@ static void ide_device_shutdown(struct device *dev)
 }
 
 static ide_driver_t idedisk_driver = {
-       .owner                  = THIS_MODULE,
        .gen_driver = {
+               .owner          = THIS_MODULE,
                .name           = "ide-disk",
                .bus            = &ide_bus_type,
                .probe          = ide_disk_probe,
@@ -1215,7 +1215,7 @@ static int ide_disk_probe(struct device *dev)
        if (drive->media != ide_disk)
                goto failed;
 
-       idkp = kmalloc(sizeof(*idkp), GFP_KERNEL);
+       idkp = kzalloc(sizeof(*idkp), GFP_KERNEL);
        if (!idkp)
                goto failed;
 
@@ -1228,8 +1228,6 @@ static int ide_disk_probe(struct device *dev)
 
        ide_register_subdriver(drive, &idedisk_driver);
 
-       memset(idkp, 0, sizeof(*idkp));
-
        kref_init(&idkp->kref);
 
        idkp->drive = drive;
@@ -1268,11 +1266,12 @@ static void __exit idedisk_exit (void)
        driver_unregister(&idedisk_driver.gen_driver);
 }
 
-static int idedisk_init (void)
+static int __init idedisk_init(void)
 {
        return driver_register(&idedisk_driver.gen_driver);
 }
 
+MODULE_ALIAS("ide:*m-disk*");
 module_init(idedisk_init);
 module_exit(idedisk_exit);
 MODULE_LICENSE("GPL");