From 8405ff67c0adfe81dccc4c59bb47d49cb234d254 Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Thu, 30 Oct 2008 13:33:12 +0000 Subject: [PATCH] --- yaml --- r: 118122 b: refs/heads/master c: 60c856c8e2f57a3f69c505735ef66e3719ea0bd6 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/dm-snap.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index d1aaaee54743..a21e85f4b30d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b34578a48459ed1bd5396631aaa4a65d6bcc7726 +refs/heads/master: 60c856c8e2f57a3f69c505735ef66e3719ea0bd6 diff --git a/trunk/drivers/md/dm-snap.c b/trunk/drivers/md/dm-snap.c index b2d9d1ac28ad..746603b42f86 100644 --- a/trunk/drivers/md/dm-snap.c +++ b/trunk/drivers/md/dm-snap.c @@ -229,19 +229,21 @@ static void __insert_origin(struct origin *o) */ static int register_snapshot(struct dm_snapshot *snap) { - struct origin *o; + struct origin *o, *new_o; struct block_device *bdev = snap->origin->bdev; + new_o = kmalloc(sizeof(*new_o), GFP_KERNEL); + if (!new_o) + return -ENOMEM; + down_write(&_origins_lock); o = __lookup_origin(bdev); - if (!o) { + if (o) + kfree(new_o); + else { /* New origin */ - o = kmalloc(sizeof(*o), GFP_KERNEL); - if (!o) { - up_write(&_origins_lock); - return -ENOMEM; - } + o = new_o; /* Initialise the struct */ INIT_LIST_HEAD(&o->snapshots);