From c31e9267d339a90a49389b8addd0357fdb93fdb4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 1 Sep 2009 11:04:17 -0700 Subject: [PATCH] kclient: don't leak ref when queuing fault work --- src/kernel/messenger.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/kernel/messenger.c b/src/kernel/messenger.c index 56c00c3a6dcc1..b55128316a6d7 100644 --- a/src/kernel/messenger.c +++ b/src/kernel/messenger.c @@ -1517,12 +1517,11 @@ static void ceph_fault(struct ceph_connection *con) con->delay *= 2; /* explicitly schedule work to try to reconnect again later. */ - dout("fault queueing %p %d -> %d delay %lu\n", con, - atomic_read(&con->nref), atomic_read(&con->nref) + 1, - con->delay); + dout("fault queueing %p delay %lu\n", con, con->delay); con->ops->get(con); - queue_delayed_work(ceph_msgr_wq, &con->work, - round_jiffies_relative(con->delay)); + if (queue_delayed_work(ceph_msgr_wq, &con->work, + round_jiffies_relative(con->delay)) == 0) + con->ops->put(con); } -- 2.39.5