diff options
-rw-r--r-- | drivers/scsi/sd.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 352bc77b7c88..a45e12ac7e28 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -3116,10 +3116,6 @@ static int __init init_sd(void) | |||
3116 | if (err) | 3116 | if (err) |
3117 | goto err_out; | 3117 | goto err_out; |
3118 | 3118 | ||
3119 | err = scsi_register_driver(&sd_template.gendrv); | ||
3120 | if (err) | ||
3121 | goto err_out_class; | ||
3122 | |||
3123 | sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE, | 3119 | sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE, |
3124 | 0, 0, NULL); | 3120 | 0, 0, NULL); |
3125 | if (!sd_cdb_cache) { | 3121 | if (!sd_cdb_cache) { |
@@ -3133,8 +3129,15 @@ static int __init init_sd(void) | |||
3133 | goto err_out_cache; | 3129 | goto err_out_cache; |
3134 | } | 3130 | } |
3135 | 3131 | ||
3132 | err = scsi_register_driver(&sd_template.gendrv); | ||
3133 | if (err) | ||
3134 | goto err_out_driver; | ||
3135 | |||
3136 | return 0; | 3136 | return 0; |
3137 | 3137 | ||
3138 | err_out_driver: | ||
3139 | mempool_destroy(sd_cdb_pool); | ||
3140 | |||
3138 | err_out_cache: | 3141 | err_out_cache: |
3139 | kmem_cache_destroy(sd_cdb_cache); | 3142 | kmem_cache_destroy(sd_cdb_cache); |
3140 | 3143 | ||
@@ -3157,10 +3160,10 @@ static void __exit exit_sd(void) | |||
3157 | 3160 | ||
3158 | SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n")); | 3161 | SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n")); |
3159 | 3162 | ||
3163 | scsi_unregister_driver(&sd_template.gendrv); | ||
3160 | mempool_destroy(sd_cdb_pool); | 3164 | mempool_destroy(sd_cdb_pool); |
3161 | kmem_cache_destroy(sd_cdb_cache); | 3165 | kmem_cache_destroy(sd_cdb_cache); |
3162 | 3166 | ||
3163 | scsi_unregister_driver(&sd_template.gendrv); | ||
3164 | class_unregister(&sd_disk_class); | 3167 | class_unregister(&sd_disk_class); |
3165 | 3168 | ||
3166 | for (i = 0; i < SD_MAJORS; i++) | 3169 | for (i = 0; i < SD_MAJORS; i++) |