All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH 1/1] OCFS2: don't leave free'd mle attached to hb events
@ 2009-12-07 14:52 wengang wang
  2009-12-07 21:42 ` Sunil Mushran
  0 siblings, 1 reply; 5+ messages in thread
From: wengang wang @ 2009-12-07 14:52 UTC (permalink / raw)
  To: ocfs2-devel

don't leave free'd mle attached to hb events.
    
in dlm_add_migration_mle() the mle is attched to "heartbeat events" anyway no
matter there is an existing mle with same name(returns -EEXIST).
dlm_migrate_lockres() calls dlm_add_migration_mle(). in case the later function
returning -EEXIST, dlm_migrate_lockres() frees the (new) mle without detaching
it from "hb events". so that later "hb events" related operations could improperly
operate against wrong mle objects or against an invalid memory address.

the patch fixes above problem. it marks the mle as "added" just after
dlm_add_migration_mle() is called.

Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>

diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 83bcaf2..0df80e9 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -2498,11 +2498,12 @@ static int dlm_migrate_lockres(struct dlm_ctxt *dlm,
 	spin_unlock(&dlm->master_lock);
 	spin_unlock(&dlm->spinlock);
 
+	mle_added = 1;
+
 	if (ret == -EEXIST) {
 		mlog(0, "another process is already migrating it\n");
 		goto fail;
 	}
-	mle_added = 1;
 
 	/*
 	 * set the MIGRATING flag and flush asts

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-02-02 12:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-07 14:52 [Ocfs2-devel] [PATCH 1/1] OCFS2: don't leave free'd mle attached to hb events wengang wang
2009-12-07 21:42 ` Sunil Mushran
2009-12-08  1:43   ` Wengang Wang
2009-12-08  1:57     ` Sunil Mushran
2010-02-02 12:23       ` Wengang Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.