Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=6a…
Commit: 6adfa2e69f30d1773035ce495b1a1e0aae618196
Parent: 02520053ae20cffc89cf6f221a9519797171ff59
Author: Jonathan Brassow <jbrassow(a)redhat.com>
AuthorDate: Tue Dec 22 03:04:18 2009 -0600
Committer: Jonathan Brassow <jbrassow(a)redhat.com>
CommitterDate: Tue Feb 9 11:06:22 2010 -0600
dm-log-clustered: Remove an entry from a list before freeing memory (bz544253)
Error handling logic failed to remove an item from a list before freeing
it. Later, when the list is accessed, a panic occurs.
---
cmirror-kernel/src/dm-clog.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/cmirror-kernel/src/dm-clog.c b/cmirror-kernel/src/dm-clog.c
index 17e7486..de30d31 100644
--- a/cmirror-kernel/src/dm-clog.c
+++ b/cmirror-kernel/src/dm-clog.c
@@ -169,6 +169,9 @@ static int cluster_ctr(struct dm_dirty_log *log, struct dm_target *ti,
DMERR(" Userspace cluster log server not found");
if (r) {
+ spin_lock(&log_list_lock);
+ list_del(&lc->list);
+ spin_unlock(&log_list_lock);
kfree(lc);
kfree(ctr_str);
} else {