aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authorJonathan Brassow <jbrassow@redhat.com>2009-10-16 18:18:14 -0400
committerAlasdair G Kergon <agk@redhat.com>2009-10-16 18:18:14 -0400
commit034a186d29dbcef099e57ab23ec39440596be911 (patch)
treeab7b134d082581dd11fd9894f37d109d5d7a34b7 /drivers/md
parent6d45d93ead319423099b82a4efd775bc0f159121 (diff)
dm snapshot: free exception store on init failure
While initializing the snapshot module, if we fail to register the snapshot target then we must back-out the exception store module initialization. Cc: stable@kernel.org Signed-off-by: Jonathan Brassow <jbrassow@redhat.com> Reviewed-by: Mikulas Patocka <mpatocka@redhat.com> Reviewed-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm-snap.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c
index 3a53a5a9bec8..53f4063f7ea4 100644
--- a/drivers/md/dm-snap.c
+++ b/drivers/md/dm-snap.c
@@ -1470,7 +1470,7 @@ static int __init dm_snapshot_init(void)
1470 r = dm_register_target(&snapshot_target); 1470 r = dm_register_target(&snapshot_target);
1471 if (r) { 1471 if (r) {
1472 DMERR("snapshot target register failed %d", r); 1472 DMERR("snapshot target register failed %d", r);
1473 return r; 1473 goto bad_register_snapshot_target;
1474 } 1474 }
1475 1475
1476 r = dm_register_target(&origin_target); 1476 r = dm_register_target(&origin_target);
@@ -1527,6 +1527,9 @@ bad2:
1527 dm_unregister_target(&origin_target); 1527 dm_unregister_target(&origin_target);
1528bad1: 1528bad1:
1529 dm_unregister_target(&snapshot_target); 1529 dm_unregister_target(&snapshot_target);
1530
1531bad_register_snapshot_target:
1532 dm_exception_store_exit();
1530 return r; 1533 return r;
1531} 1534}
1532 1535