diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2017-06-23 17:17:24 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2017-06-28 14:21:43 -0400 |
commit | 107c1d0a991abe632a051de697c5acc33c03fd96 (patch) | |
tree | f9d870d640b0b26e53daee63e18918dc1680d221 /net/sunrpc/xprtrdma/svc_rdma_sendto.c | |
parent | 91a08eae7979417bf10c98f149c6ea28e6632114 (diff) | |
download | blackbird-op-linux-107c1d0a991abe632a051de697c5acc33c03fd96.tar.gz blackbird-op-linux-107c1d0a991abe632a051de697c5acc33c03fd96.zip |
svcrdma: Avoid Send Queue overflow
Sanity case: Catch the case where more Work Requests are being
posted to the Send Queue than there are Send Queue Entries.
This might happen if a client sends a chunk with more segments than
there are SQEs for the transport. The server can't send that reply,
so the transport will deadlock unless the client drops the RPC.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc/xprtrdma/svc_rdma_sendto.c')
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_sendto.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c index 5ba6d915c906..19fd01e4b690 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c @@ -684,7 +684,7 @@ int svc_rdma_sendto(struct svc_rqst *rqstp) return 0; err2: - if (ret != -E2BIG) + if (ret != -E2BIG || ret != -EINVAL) goto err1; ret = svc_rdma_post_recv(rdma, GFP_KERNEL); |