This is a note to let you know that I've just added the patch titled
RDS: fix rds-ping spinlock recursion
to the 3.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
rds-fix-rds-ping-spinlock-recursion.patch
and it can be found in the queue-3.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From 5997057681cd58c573aabdcc5aa94a6ddb3b2fe5 Mon Sep 17 00:00:00 2001
From: "jeff.liu" <[email protected]>
Date: Mon, 8 Oct 2012 18:57:27 +0000
Subject: RDS: fix rds-ping spinlock recursion
From: "jeff.liu" <[email protected]>
[ Upstream commit 5175a5e76bbdf20a614fb47ce7a38f0f39e70226 ]
This is the revised patch for fixing rds-ping spinlock recursion
according to Venkat's suggestions.
RDS ping/pong over TCP feature has been broken for years(2.6.39 to
3.6.0) since we have to set TCP cork and call kernel_sendmsg() between
ping/pong which both need to lock "struct sock *sk". However, this
lock has already been hold before rds_tcp_data_ready() callback is
triggerred. As a result, we always facing spinlock resursion which
would resulting in system panic.
Given that RDS ping is only used to test the connectivity and not for
serious performance measurements, we can queue the pong transmit to
rds_wq as a delayed response.
Reported-by: Dan Carpenter <[email protected]>
CC: Venkat Venkatsubra <[email protected]>
CC: David S. Miller <[email protected]>
CC: James Morris <[email protected]>
Signed-off-by: Jie Liu <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/rds/send.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -1122,7 +1122,7 @@ rds_send_pong(struct rds_connection *con
rds_stats_inc(s_send_pong);
if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags))
- rds_send_xmit(conn);
+ queue_delayed_work(rds_wq, &conn->c_send_w, 0);
rds_message_put(rm);
return 0;
Patches currently in stable-queue which might be from [email protected] are
queue-3.6/rds-fix-rds-ping-spinlock-recursion.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html