SUNRPC: Add an IS_ERR() check back to where it was
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 11 Oct 2023 08:00:22 +0000 (11:00 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2023 17:19:48 +0000 (17:19 +0000)
[ Upstream commit 4f3ed837186fc0d2722ba8d2457a594322e9c2ef ]

This IS_ERR() check was deleted during in a cleanup because, at the time,
the rpcb_call_async() function could not return an error pointer.  That
changed in commit 25cf32ad5dba ("SUNRPC: Handle allocation failure in
rpc_new_task()") and now it can return an error pointer.  Put the check
back.

A related revert was done in commit 13bd90141804 ("Revert "SUNRPC:
Remove unreachable error condition"").

Fixes: 037e910b52b0 ("SUNRPC: Remove unreachable error condition in rpcb_getport_async()")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/sunrpc/rpcb_clnt.c

index 5988a5c..102c381 100644 (file)
@@ -769,6 +769,10 @@ void rpcb_getport_async(struct rpc_task *task)
 
        child = rpcb_call_async(rpcb_clnt, map, proc);
        rpc_release_client(rpcb_clnt);
+       if (IS_ERR(child)) {
+               /* rpcb_map_release() has freed the arguments */
+               return;
+       }
 
        xprt->stat.bind_count++;
        rpc_put_task(child);