]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
nfsd4: zero-length WRITE should succeed
authorJ. Bruce Fields <bfields@redhat.com>
Thu, 15 Nov 2018 16:21:40 +0000 (11:21 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 27 Nov 2018 21:23:12 +0000 (16:23 -0500)
Zero-length writes are legal; from 5661 section 18.32.3: "If the count
is zero, the WRITE will succeed and return a count of zero subject to
permissions checking".

This check is unnecessary and is causing zero-length reads to return
EINVAL.

Cc: stable@vger.kernel.org
Fixes: 3fd9557aec91 "NFSD: Refactor the generic write vector fill helper"
Cc: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c

index d505990dac7c9137b33120762b4606af655a0fc2..c364acbb6aba0c3a4bfb594dd637d14159e0fb45 100644 (file)
@@ -1016,8 +1016,6 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 
        nvecs = svc_fill_write_vector(rqstp, write->wr_pagelist,
                                      &write->wr_head, write->wr_buflen);
-       if (!nvecs)
-               return nfserr_io;
        WARN_ON_ONCE(nvecs > ARRAY_SIZE(rqstp->rq_vec));
 
        status = nfsd_vfs_write(rqstp, &cstate->current_fh, filp,