NFSv4.2: Fix warning "variable ‘stateids’ set but not used"
authorTrond Myklebust <trond.myklebust@primarydata.com>
Sun, 24 Jul 2016 21:17:16 +0000 (17:17 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Sun, 24 Jul 2016 21:36:06 +0000 (17:36 -0400)
Replace it with a test for whether or not the sent a stateid in violation
of what we asked for.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs42xdr.c

index 6dc6f2aea0d6c5380d42369ae44f48cfbdcf7622..8b2605882a2016e603f7405304bb91c85b344fc5 100644 (file)
@@ -330,13 +330,21 @@ static int decode_write_response(struct xdr_stream *xdr,
                                 struct nfs42_write_res *res)
 {
        __be32 *p;
-       int stateids;
 
        p = xdr_inline_decode(xdr, 4 + 8 + 4);
        if (unlikely(!p))
                goto out_overflow;
 
-       stateids = be32_to_cpup(p++);
+       /*
+        * We never use asynchronous mode, so warn if a server returns
+        * a stateid.
+        */
+       if (unlikely(*p != 0)) {
+               pr_err_once("%s: server has set unrequested "
+                               "asynchronous mode\n", __func__);
+               return -EREMOTEIO;
+       }
+       p++;
        p = xdr_decode_hyper(p, &res->count);
        res->verifier.committed = be32_to_cpup(p);
        return decode_verifier(xdr, &res->verifier.verifier);