diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-24 17:17:16 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-24 17:36:06 -0400 |
commit | 6fdf339b0ca73abd879394ad03a9e4695d644e13 (patch) | |
tree | 2101a95060d740395a1106c93ac71b3e8301a7e0 /fs/nfs | |
parent | 139978239b53a981b45c53b835c020015c6c819e (diff) | |
download | lwn-6fdf339b0ca73abd879394ad03a9e4695d644e13.tar.gz lwn-6fdf339b0ca73abd879394ad03a9e4695d644e13.zip |
NFSv4.2: Fix warning "variable ‘stateids’ set but not used"
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>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/nfs42xdr.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c index 6dc6f2aea0d6..8b2605882a20 100644 --- a/fs/nfs/nfs42xdr.c +++ b/fs/nfs/nfs42xdr.c @@ -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); |