SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Thu, 7 Apr 2022 18:10:23 +0000 (14:10 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Thu, 7 Apr 2022 20:20:01 +0000 (16:20 -0400)
The allocation is done with GFP_KERNEL, but it could still fail in a low
memory situation.

Fixes: 4a85a6a3320b ("SUNRPC: Handle TCP socket sends with kernel_sendpage() again")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/svcsock.c

index 478f857cdaed4548e7c181b3a6cc41ecf5a1425b..6ea3d87e11475ec46b36efbdd6675460f58876be 100644 (file)
@@ -1096,7 +1096,9 @@ static int svc_tcp_sendmsg(struct socket *sock, struct xdr_buf *xdr,
        int ret;
 
        *sentp = 0;
-       xdr_alloc_bvec(xdr, GFP_KERNEL);
+       ret = xdr_alloc_bvec(xdr, GFP_KERNEL);
+       if (ret < 0)
+               return ret;
 
        ret = kernel_sendmsg(sock, &msg, &rm, 1, rm.iov_len);
        if (ret < 0)