]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/rxrpc/ar-connection.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs...
[karo-tx-linux.git] / net / rxrpc / ar-connection.c
index 67e38a056240df73712c56a0ba81ddc5a645626b..9f1ce841a0bbcd348e83c7ad518649079e95c357 100644 (file)
@@ -444,6 +444,11 @@ int rxrpc_connect_call(struct rxrpc_sock *rx,
                        conn = list_entry(bundle->avail_conns.next,
                                          struct rxrpc_connection,
                                          bundle_link);
+                       if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) {
+                               list_del_init(&conn->bundle_link);
+                               bundle->num_conns--;
+                               continue;
+                       }
                        if (--conn->avail_calls == 0)
                                list_move(&conn->bundle_link,
                                          &bundle->busy_conns);
@@ -461,6 +466,11 @@ int rxrpc_connect_call(struct rxrpc_sock *rx,
                        conn = list_entry(bundle->unused_conns.next,
                                          struct rxrpc_connection,
                                          bundle_link);
+                       if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) {
+                               list_del_init(&conn->bundle_link);
+                               bundle->num_conns--;
+                               continue;
+                       }
                        ASSERTCMP(conn->avail_calls, ==, RXRPC_MAXCALLS);
                        conn->avail_calls = RXRPC_MAXCALLS - 1;
                        ASSERT(conn->channels[0] == NULL &&