Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf4b7389 authored by Andy Grover's avatar Andy Grover
Browse files

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
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -468,8 +468,9 @@ void rds_atomic_send_complete(struct rds_message *rm, int status)
	struct rds_sock *rs = NULL;
	struct rm_atomic_op *ao;
	struct rds_notifier *notifier;
	unsigned long flags;

	spin_lock(&rm->m_rs_lock);
	spin_lock_irqsave(&rm->m_rs_lock, flags);

	ao = &rm->atomic;
	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)
		ao->op_notifier = NULL;
	}

	spin_unlock(&rm->m_rs_lock);
	spin_unlock_irqrestore(&rm->m_rs_lock, flags);

	if (rs) {
		rds_wake_sk_sleep(rs);