From c64369cba2e5a975d87d518737abbf04c9871a26 Mon Sep 17 00:00:00 2001 From: Amitay Isaacs Date: Thu, 25 Sep 2014 12:44:59 +1000 Subject: ctdb-locking: Reset ttimer before doing an early return When timer expires, timeout handler routine sets lock_ctx->ttimer to a newly created timer event. However, when a node is INACTIVE, timeout handler returns early with lock_ctx->ttimer set to the previous timer event. This timer event gets freed when the callback returns and lock_ctx->ttimer remains set to already freed timer event. Signed-off-by: Amitay Isaacs Reviewed-by: Martin Schwenke --- ctdb/server/ctdb_lock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c index e6653102ac..3a9b32703b 100644 --- a/ctdb/server/ctdb_lock.c +++ b/ctdb/server/ctdb_lock.c @@ -492,6 +492,7 @@ static void ctdb_lock_timeout_handler(struct tevent_context *ev, /* If a node stopped/banned, don't spam the logs */ if (ctdb->nodes[ctdb->pnn]->flags & NODE_FLAGS_INACTIVE) { + lock_ctx->ttimer = NULL; return; } if (lock_ctx->ctdb_db) { -- cgit