On Fri, Dec 11, 2009 at 07:10:49PM -0800, Ricardo Labiaga wrote: > The server incorrectly assumes that the operations in the > array start with value 0. The first operation (OP_ACCESS) > has a value of 3, causing the check in nfsd4_decode_compound > to be off. > > Instead of comparing that the operation number is less than > the number of elements in the array, the server should verify > that it is less than the maximum valid operation number > defined by LAST_NFS4_OP. Thanks. So the effect of this was to return an OP_ILLEGAL in some cases where we should have been returning a NOTSUPP error? --b. > > Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@xxxxxxxxxx> > --- > fs/nfsd/nfs4xdr.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c > index 0fbd50c..b83a24c 100644 > --- a/fs/nfsd/nfs4xdr.c > +++ b/fs/nfsd/nfs4xdr.c > @@ -1442,7 +1442,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) > } > op->opnum = ntohl(*argp->p++); > > - if (op->opnum >= OP_ACCESS && op->opnum < ops->nops) > + if (op->opnum >= OP_ACCESS && op->opnum <= LAST_NFS4_OP) > op->status = ops->decoders[op->opnum](argp, &op->u); > else { > op->opnum = OP_ILLEGAL; > -- > 1.5.4.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html