]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: Fix out-of-order RDS_CMSG_RDMA_SEND_STATUS
authorWei Lin Guay <wei.lin.guay@oracle.com>
Wed, 11 Nov 2015 17:31:14 +0000 (09:31 -0800)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 11 Nov 2015 17:31:14 +0000 (09:31 -0800)
Orabug: 22126982

If the RDS user application requests notification of RDMA send
completions, there is a possibility that RDS_CMSG_RDMA_SEND_STATUS
will be delivered out-of-order.

This can happen if RDS drops sending ACK after it received an explicit
ACK. In this case, the rds message ended up in reverse order in the
list.

Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Knut Omang <knut.omang@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Reviewed-by: Ajaykumar Hotchandani <ajaykumar.hotchandani@oracle.com>
Signed-off-by: Wei Lin Guay <wei.lin.guay@oracle.com>
net/rds/send.c

index 3770ab718bb63e74316d24889fec832c9ceb9074..163bee4d64c92ab5938805393b90d03d9f39352e 100644 (file)
@@ -846,7 +846,7 @@ void rds_send_drop_acked(struct rds_connection *conn, u64 ack,
                if (!rds_send_is_acked(rm, ack, is_acked))
                        break;
 
-               list_move(&rm->m_conn_item, &list);
+               list_move_tail(&rm->m_conn_item, &list);
                clear_bit(RDS_MSG_ON_CONN, &rm->m_flags);
        }