Skip to content

Commit 3f5280c

Browse files
Hakon-Buggejfvogel
authored andcommitted
rds: Protect __rds_send_complete() with correct lock
Commit ad31046 ("rds: Add per peer RDS socket send buffer") incorrectly changed the lock guarding __rds_send_complete from rs_lock to rs_snd_lock. This leads to list corruption in rds_rdma_send_complete(). Fixed by restoring said hunks. Orabug: 30694458 Fixes: ad31046 ("rds: Add per peer RDS socket send buffer") Signed-off-by: Håkon Bugge <[email protected]> Tested-by: Jun Yang <[email protected]> Reviewed-by: Ka-Cheong Poon <[email protected]> Signed-off-by: Somasundaram Krishnasamy <[email protected]> Orabug: 30820081 UEK5 => UEK6 (cherry picked from commit c575a18) cherry-pick-repo=UEK/production/linux-uek.git Signed-off-by: Gerd Rausch <[email protected]> Reviewed-by: Sharon Liu <[email protected]> Orabug: 33590097 UEK6 => UEK7 (cherry picked from commit 99e0dcf) cherry-pick-repo=UEK/production/linux-uek.git Signed-off-by: Gerd Rausch <[email protected]> Reviewed-by: William Kucharski <[email protected]>
1 parent b8d9ada commit 3f5280c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

net/rds/send.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -961,9 +961,9 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in6 *dest)
961961
*/
962962
spin_lock_irqsave(&rm->m_rs_lock, flags);
963963

964-
spin_lock(&rs->rs_snd_lock);
964+
spin_lock(&rs->rs_lock);
965965
__rds_send_complete(rs, rm, RDS_RDMA_SEND_CANCELED);
966-
spin_unlock(&rs->rs_snd_lock);
966+
spin_unlock(&rs->rs_lock);
967967

968968
rm->m_rs = NULL;
969969
spin_unlock_irqrestore(&rm->m_rs_lock, flags);
@@ -1002,9 +1002,9 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in6 *dest)
10021002
*/
10031003
spin_lock_irqsave(&rm->m_rs_lock, flags);
10041004

1005-
spin_lock(&rs->rs_snd_lock);
1005+
spin_lock(&rs->rs_lock);
10061006
__rds_send_complete(rs, rm, RDS_RDMA_SEND_CANCELED);
1007-
spin_unlock(&rs->rs_snd_lock);
1007+
spin_unlock(&rs->rs_lock);
10081008

10091009
rm->m_rs = NULL;
10101010
spin_unlock_irqrestore(&rm->m_rs_lock, flags);

0 commit comments

Comments
 (0)