NFSv4.2: Fix READ_PLUS smatch warnings
authorAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 24 May 2023 21:27:08 +0000 (17:27 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 23 Aug 2023 19:58:47 +0000 (15:58 -0400)
Smatch reports:
  fs/nfs/nfs42xdr.c:1131 decode_read_plus() warn: missing error code? 'status'

Which Dan suggests to fix by doing a hardcoded "return 0" from the
"if (segments == 0)" check.

Additionally, smatch reports that the "status = -EIO" assignment is not
used. This patch addresses both these issues.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Closes: https://lore.kernel.org/r/202305222209.6l5VM2lL-lkp@intel.com/
Fixes: d3b00a802c845 ("NFS: Replace the READ_PLUS decoding code")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs42xdr.c

index 95234208dc9ee120baa0ea4e707a20a381ea0769..d0919c5bf61c7a6877fd1f5dfa7a4127552cf890 100644 (file)
@@ -1056,13 +1056,12 @@ static int decode_read_plus(struct xdr_stream *xdr, struct nfs_pgio_res *res)
        res->eof = be32_to_cpup(p++);
        segments = be32_to_cpup(p++);
        if (segments == 0)
-               return status;
+               return 0;
 
        segs = kmalloc_array(segments, sizeof(*segs), GFP_KERNEL);
        if (!segs)
                return -ENOMEM;
 
-       status = -EIO;
        for (i = 0; i < segments; i++) {
                status = decode_read_plus_segment(xdr, &segs[i]);
                if (status < 0)