Commit cf4b7389 authored by Andy Grover's avatar Andy Grover

RDS: Fix locking in send on m_rs_lock

Do not nest m_rs_lock under c_lock

Disable interrupts in {rdma,atomic}_send_complete
Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
parent f2ec76f2
...@@ -468,8 +468,9 @@ void rds_atomic_send_complete(struct rds_message *rm, int status) ...@@ -468,8 +468,9 @@ void rds_atomic_send_complete(struct rds_message *rm, int status)
struct rds_sock *rs = NULL; struct rds_sock *rs = NULL;
struct rm_atomic_op *ao; struct rm_atomic_op *ao;
struct rds_notifier *notifier; struct rds_notifier *notifier;
unsigned long flags;
spin_lock(&rm->m_rs_lock); spin_lock_irqsave(&rm->m_rs_lock, flags);
ao = &rm->atomic; ao = &rm->atomic;
if (test_bit(RDS_MSG_ON_SOCK, &rm->m_flags) if (test_bit(RDS_MSG_ON_SOCK, &rm->m_flags)
...@@ -486,7 +487,7 @@ void rds_atomic_send_complete(struct rds_message *rm, int status) ...@@ -486,7 +487,7 @@ void rds_atomic_send_complete(struct rds_message *rm, int status)
ao->op_notifier = NULL; ao->op_notifier = NULL;
} }
spin_unlock(&rm->m_rs_lock); spin_unlock_irqrestore(&rm->m_rs_lock, flags);
if (rs) { if (rs) {
rds_wake_sk_sleep(rs); rds_wake_sk_sleep(rs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment