]> git.baikalelectronics.ru Git - kernel.git/commit
rxrpc: Fix client call queueing, waiting for channel
authorDavid Howells <dhowells@redhat.com>
Sat, 9 Mar 2019 00:29:58 +0000 (00:29 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Mar 2019 02:24:53 +0000 (18:24 -0800)
commitb7ffbef9cc3bc8bb61c4fe29bf5b27c4377d00d8
tree3c25e582f882c928651fd787ad2d13f8894d2ad5
parent16e901428e15adccd5f8435cc336ff2a424485f6
rxrpc: Fix client call queueing, waiting for channel

rxrpc_get_client_conn() adds a new call to the front of the waiting_calls
queue if the connection it's going to use already exists.  This is bad as
it allows calls to get starved out.

Fix this by adding to the tail instead.

Also change the other enqueue point in the same function to put it on the
front (ie. when we have a new connection).  This makes the point that in
the case of a new connection the new call goes at the front (though it
doesn't actually matter since the queue should be unoccupied).

Fixes: c347cd823044 ("rxrpc: Improve management and caching of client connection objects")
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rxrpc/conn_client.c