]> git.proxmox.com Git - mirror_ubuntu-disco-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)
committerSeth Forshee <seth.forshee@canonical.com>
Wed, 20 Mar 2019 19:08:24 +0000 (14:08 -0500)
commita435ef6b88c987c50ae63be4d885a632b9b5040f
tree9fe537a7957e75535cd6e15c0ff814d928951116
parentf611f5334da2d8dc6969f1a645a46654ccd7150a
rxrpc: Fix client call queueing, waiting for channel

BugLink: https://bugs.launchpad.net/bugs/1821074
[ Upstream commit 69ffaebb90369ce08657b5aea4896777b9d6e8fc ]

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: 45025bceef17 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
net/rxrpc/conn_client.c