|
@@ -2072,7 +2072,8 @@ rpc_verify_header(struct rpc_task *task)
|
|
|
dprintk("RPC: %5u %s: XDR representation not a multiple of"
|
|
|
" 4 bytes: 0x%x\n", task->tk_pid, __func__,
|
|
|
task->tk_rqstp->rq_rcv_buf.len);
|
|
|
- goto out_eio;
|
|
|
+ error = -EIO;
|
|
|
+ goto out_err;
|
|
|
}
|
|
|
if ((len -= 3) < 0)
|
|
|
goto out_overflow;
|
|
@@ -2081,6 +2082,7 @@ rpc_verify_header(struct rpc_task *task)
|
|
|
if ((n = ntohl(*p++)) != RPC_REPLY) {
|
|
|
dprintk("RPC: %5u %s: not an RPC reply: %x\n",
|
|
|
task->tk_pid, __func__, n);
|
|
|
+ error = -EIO;
|
|
|
goto out_garbage;
|
|
|
}
|
|
|
|
|
@@ -2099,7 +2101,8 @@ rpc_verify_header(struct rpc_task *task)
|
|
|
dprintk("RPC: %5u %s: RPC call rejected, "
|
|
|
"unknown error: %x\n",
|
|
|
task->tk_pid, __func__, n);
|
|
|
- goto out_eio;
|
|
|
+ error = -EIO;
|
|
|
+ goto out_err;
|
|
|
}
|
|
|
if (--len < 0)
|
|
|
goto out_overflow;
|
|
@@ -2144,9 +2147,11 @@ rpc_verify_header(struct rpc_task *task)
|
|
|
task->tk_pid, __func__, n);
|
|
|
goto out_err;
|
|
|
}
|
|
|
- if (!(p = rpcauth_checkverf(task, p))) {
|
|
|
- dprintk("RPC: %5u %s: auth check failed\n",
|
|
|
- task->tk_pid, __func__);
|
|
|
+ p = rpcauth_checkverf(task, p);
|
|
|
+ if (IS_ERR(p)) {
|
|
|
+ error = PTR_ERR(p);
|
|
|
+ dprintk("RPC: %5u %s: auth check failed with %d\n",
|
|
|
+ task->tk_pid, __func__, error);
|
|
|
goto out_garbage; /* bad verifier, retry */
|
|
|
}
|
|
|
len = p - (__be32 *)iov->iov_base - 1;
|
|
@@ -2199,8 +2204,6 @@ out_garbage:
|
|
|
out_retry:
|
|
|
return ERR_PTR(-EAGAIN);
|
|
|
}
|
|
|
-out_eio:
|
|
|
- error = -EIO;
|
|
|
out_err:
|
|
|
rpc_exit(task, error);
|
|
|
dprintk("RPC: %5u %s: call failed with error %d\n", task->tk_pid,
|