summaryrefslogtreecommitdiff
path: root/net/sunrpc
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2022-04-07 16:50:19 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-04-13 22:01:07 +0300
commit9a45e08636bba2949819cbf4d9ee0b974dd5c7a6 (patch)
treea66376dce21a84aa356769807f792ed8bb5ac30e /net/sunrpc
parent132cbe2f182ab535e0a7fa309d2c73ed6257a246 (diff)
downloadlinux-9a45e08636bba2949819cbf4d9ee0b974dd5c7a6.tar.xz
SUNRPC: Handle low memory situations in call_status()
[ Upstream commit 9d82819d5b065348ce623f196bf601028e22ed00 ] We need to handle ENFILE, ENOBUFS, and ENOMEM, because xprt_wake_pending_tasks() can be called with any one of these due to socket creation failures. Fixes: b61d59fffd3e ("SUNRPC: xs_tcp_connect_worker{4,6}: merge common code") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/clnt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index bae42ada8c10..c5af31312e0c 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -2342,6 +2342,11 @@ call_status(struct rpc_task *task)
case -EPIPE:
case -EAGAIN:
break;
+ case -ENFILE:
+ case -ENOBUFS:
+ case -ENOMEM:
+ rpc_delay(task, HZ>>2);
+ break;
case -EIO:
/* shutdown or soft timeout */
goto out_exit;