On Fri, 2009-08-14 at 17:19 +0300, Benny Halevy wrote: > Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> > --- > fs/nfs/nfs4xdr.c | 20 +++++++++++--------- > 1 files changed, 11 insertions(+), 9 deletions(-) > > diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c > index 86e6983..b835dcc 100644 > --- a/fs/nfs/nfs4xdr.c > +++ b/fs/nfs/nfs4xdr.c > @@ -3320,17 +3320,19 @@ static int decode_close(struct xdr_stream *xdr, struct nfs_closeres *res) > return status; > } > > +static int decode_verifier(struct xdr_stream *xdr, void *verifier) > +{ > + return decode_opaque_fixed(xdr, verifier, 8); > +} > + > static int decode_commit(struct xdr_stream *xdr, struct nfs_writeres *res) > { > - __be32 *p; > int status; > > status = decode_op_hdr(xdr, OP_COMMIT); > - if (status) > - return status; > - READ_BUF(8); > - COPYMEM(res->verf->verifier, 8); > - return 0; > + if (!status) > + status = decode_verifier(xdr, res->verf->verifier); > + return status; > } > > static int decode_create(struct xdr_stream *xdr, struct nfs4_change_info *cinfo) > @@ -3852,10 +3854,10 @@ static int decode_readdir(struct xdr_stream *xdr, struct rpc_rqst *req, struct n > int status; > > status = decode_op_hdr(xdr, OP_READDIR); > - if (status) > + if (!status) > + status = decode_verifier(xdr, readdir->verifier.data); > + if (unlikely(status)) > return status; > - READ_BUF(8); > - COPYMEM(readdir->verifier.data, 8); > dprintk("%s: verifier = %08x:%08x\n", > __func__, > ((u32 *)readdir->verifier.data)[0], This introduces an uninitialised variable warning into decode_readdir. The fix would be to use xdr->p in the calculation of hdrlen. I'll add that, no need to resend. -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- 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