]> git.baikalelectronics.ru Git - kernel.git/commit
RDS: make sure not to loop forever inside rds_send_xmit
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Wed, 8 Apr 2015 16:33:47 +0000 (12:33 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Apr 2015 19:17:32 +0000 (15:17 -0400)
commit1233498b9e70ba74c3185b58a7a3c1936ffd6f2c
tree74cfc543b82a49fd7b920aade205cdca1ecb586b
parent4f776fb2c05977a3d82a5226b5547eec35cdc6e4
RDS: make sure not to loop forever inside rds_send_xmit

If a determined set of concurrent senders keep the send queue full,
we can loop forever inside rds_send_xmit.  This fix has two parts.

First we are dropping out of the while(1) loop after we've processed a
large batch of messages.

Second we add a generation number that gets bumped each time the
xmit bit lock is acquired.  If someone else has jumped in and
made progress in the queue, we skip our goto restart.

Original patch by Chris Mason.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/connection.c
net/rds/rds.h
net/rds/send.c