3.2-stable review patch.  If anyone has any objections, please let me know.

I'm not sure whether my expansion of the fix is correct here.

------------------

From: Weston Andros Adamson <[email protected]>

commit 01913b49cf1dc6409a07dd2a4cc6af2e77f3c410 upstream.

If decode_getfh failed, nfs4_xdr_dec_open would return 0 since the last
decode_* call must have succeeded.

Signed-off-by: Weston Andros Adamson <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
[bwh: Backported to 3.2: this function makes two more function calls
 (no longer present in mainline) with the same issue, so fix them up
 similarly.]
Signed-off-by: Ben Hutchings <[email protected]>
---
 fs/nfs/nfs4xdr.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -6113,12 +6113,15 @@ static int nfs4_xdr_dec_open(struct rpc_
        status = decode_open(xdr, res);
        if (status)
                goto out;
-       if (decode_getfh(xdr, &res->fh) != 0)
+       status = decode_getfh(xdr, &res->fh);
+       if (status)
                goto out;
-       if (decode_getfattr(xdr, res->f_attr, res->server,
-                               !RPC_IS_ASYNC(rqstp->rq_task)) != 0)
+       status = decode_getfattr(xdr, res->f_attr, res->server,
+                                !RPC_IS_ASYNC(rqstp->rq_task));
+       if (status)
                goto out;
-       if (decode_restorefh(xdr) != 0)
+       status = decode_restorefh(xdr);
+       if (status)
                goto out;
        decode_getfattr(xdr, res->dir_attr, res->server,
                        !RPC_IS_ASYNC(rqstp->rq_task));


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to