Patchwork [3.5.yuz,extended,stable] Patch "libceph: verify state after retaking con lock after" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Nov. 20, 2012, 5:19 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/200473/
State New
Headers show


Herton Ronaldo Krzesinski - Nov. 20, 2012, 5:19 p.m.
This is a note to let you know that I have just added a patch titled

    libceph: verify state after retaking con lock after

to the linux-3.5.y-queue branch of the 3.5.yuz extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.yuz tree, see



From 9313bb12a82886938bcfd0e852dd42e596613996 Mon Sep 17 00:00:00 2001
From: Sage Weil <>
Date: Mon, 30 Jul 2012 18:16:56 -0700
Subject: [PATCH 65/78] libceph: verify state after retaking con lock after

commit 7b862e07b1a4d5c963d19027f10ea78085f27f9b upstream.

We drop the con mutex when delivering a message.  When we retake the
lock, we need to verify we are still in the OPEN state before
preparing to read the next tag, or else we risk stepping on a
connection that has been closed.

Signed-off-by: Sage Weil <>
Reviewed-by: Alex Elder <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 net/ceph/messenger.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)



diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index a6a0c7a..feb5a2a 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -2003,7 +2003,6 @@  static void process_message(struct ceph_connection *con)
 	con->ops->dispatch(con, msg);

-	prepare_read_tag(con);

@@ -2213,6 +2212,8 @@  more:
 		if (con->in_tag == CEPH_MSGR_TAG_READY)
 			goto more;
+		if (con->state == CON_STATE_OPEN)
+			prepare_read_tag(con);
 		goto more;
 	if (con->in_tag == CEPH_MSGR_TAG_ACK) {