]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.53/xprtrdma-return-enobufs-when-no-pages-are-available.patch
5.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.14.53 / xprtrdma-return-enobufs-when-no-pages-are-available.patch
CommitLineData
d1cf1a50
GKH
1From a8f688ec437dc2045cc8f0c89fe877d5803850da Mon Sep 17 00:00:00 2001
2From: Chuck Lever <chuck.lever@oracle.com>
3Date: Fri, 4 May 2018 15:35:46 -0400
4Subject: xprtrdma: Return -ENOBUFS when no pages are available
5
6From: Chuck Lever <chuck.lever@oracle.com>
7
8commit a8f688ec437dc2045cc8f0c89fe877d5803850da upstream.
9
10The use of -EAGAIN in rpcrdma_convert_iovs() is a latent bug: the
11transport never calls xprt_write_space() when more pages become
12available. -ENOBUFS will trigger the correct "delay briefly and call
13again" logic.
14
15Fixes: 7a89f9c626e3 ("xprtrdma: Honor ->send_request API contract")
16Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
17Cc: stable@vger.kernel.org # 4.8+
18Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21---
22 net/sunrpc/xprtrdma/rpc_rdma.c | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25--- a/net/sunrpc/xprtrdma/rpc_rdma.c
26+++ b/net/sunrpc/xprtrdma/rpc_rdma.c
27@@ -229,7 +229,7 @@ rpcrdma_convert_iovs(struct rpcrdma_xprt
28 */
29 *ppages = alloc_page(GFP_ATOMIC);
30 if (!*ppages)
31- return -EAGAIN;
32+ return -ENOBUFS;
33 }
34 seg->mr_page = *ppages;
35 seg->mr_offset = (char *)page_base;