cluster: RHEL54 - dm-log-clustered: Remove an entry from a list before freeing memory (bz544253)

Jonathan Brassow jbrassow at fedoraproject.org
Tue Feb 9 17:07:38 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=6adfa2e69f30d1773035ce495b1a1e0aae618196
Commit:        6adfa2e69f30d1773035ce495b1a1e0aae618196
Parent:        02520053ae20cffc89cf6f221a9519797171ff59
Author:        Jonathan Brassow <jbrassow at redhat.com>
AuthorDate:    Tue Dec 22 03:04:18 2009 -0600
Committer:     Jonathan Brassow <jbrassow at 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 {


More information about the cluster-commits mailing list