destroy scsi_bidi_sdb_cache in scsi_exit_queue
PATCH 1/2 destroy scsi_bidi_sdb_cache in scsi_exit_queue
This patchset is against the scsi-bidi tree.
=
From: FUJITA Tomonori <[email protected]>
Subject: [PATCH 1/2] destroy scsi_bidi_sdb_cache in scsi_exit_queue
Needs to call kmem_cache_destroy for scsi_bidi_sdb_cache in scsi_exit_queue.
Signed-off-by FUJITA Tomonori <[email protected]>
--- drivers/scsi/scsi_lib.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
drivers/scsi/scsi_lib.c +1 -0
@@ -1712,6 +1712,7 @@ void scsi_exit_queue(void)int i;kmem_cache_destroy (scsi_io_context_cache); +kmem_cache_destroy (scsi_bidi_sdb_cache);for (i =0 ; i <SG_MEMPOOL_NR ; i++) {struct scsi_host_sg_pool *sgp = scsi_sg_pools + i;
Signature · 1 line
1.5.3.4
PATCH 2/2 handle scsi_init_queue failure properly
scsi_init_queue is expected to clean up allocated things when it fails.
Signed-off-by FUJITA Tomonori <[email protected]>
--- drivers/scsi/scsi_lib.c | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-)
drivers/scsi/scsi_lib.c +17 -1
@@ -1682,7 +1682,7 @@ int __init scsi_init_queue(void) 0, 0, NULL);if (!scsi_bidi_sdb_cache) {printk (KERN_ERR "SCSI: can't init scsi bidi sdb cache\n" ); -return -ENOMEM ; + goto cleanup_io_context; }for (i =0 ; i <SG_MEMPOOL_NR ; i++) {
@@ -1694,6 +1694,7 @@ int __init scsi_init_queue(void)if (!sgp->slab) {printk (KERN_ERR "SCSI: can't init sg slab %s\n" , sgp->name); + goto cleanup_bidi_sdb; } sgp->pool = mempool_create_slab_pool(SG_MEMPOOL_SIZE,
@@ -1701,10 +1702,25 @@ int __init scsi_init_queue(void)if (!sgp->pool) {printk (KERN_ERR "SCSI: can't init sg mempool %s\n" , sgp->name); + goto cleanup_bidi_sdb; } }return 0 ; + +cleanup_bidi_sdb: +for (i =0 ; i <SG_MEMPOOL_NR ; i++) { +struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; +if (sgp->pool) +mempool_destroy (sgp->pool); +if (sgp->slab) +kmem_cache_destroy (sgp->slab); + } +kmem_cache_destroy (scsi_bidi_sdb_cache); +cleanup_io_context: +kmem_cache_destroy (scsi_io_context_cache); + +return -ENOMEM ; }void scsi_exit_queue (void )
Signature · 1 line
1.5.3.4