Loading fs/nfsd/nfsproc.c +2 −2 Original line number Diff line number Diff line Loading @@ -627,7 +627,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_GETATTR] = { .pc_func = nfsd_proc_getattr, .pc_decode = nfssvc_decode_fhandle, .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_attrstat, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), Loading Loading @@ -793,7 +793,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_STATFS] = { .pc_func = nfsd_proc_statfs, .pc_decode = nfssvc_decode_fhandle, .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_statfsres, .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_statfsres), Loading fs/nfsd/nfsxdr.c +20 −6 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ static u32 nfs_ftypes[] = { /* * XDR functions for basic NFS types * Basic NFSv2 data types (RFC 1094 Section 2.3) */ static __be32 * decode_fh(__be32 *p, struct svc_fh *fhp) { Loading @@ -37,6 +38,21 @@ decode_fh(__be32 *p, struct svc_fh *fhp) return p + (NFS_FHSIZE >> 2); } static bool svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) { __be32 *p; p = xdr_inline_decode(xdr, NFS_FHSIZE); if (!p) return false; fh_init(fhp, NFS_FHSIZE); memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); fhp->fh_handle.fh_size = NFS_FHSIZE; return true; } /* Helper function for NFSv2 ACL code */ __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp) { Loading Loading @@ -194,14 +210,12 @@ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *f */ int nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) { struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_fhandle *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; return xdr_argsize_check(rqstp, p); return svcxdr_decode_fhandle(xdr, &args->fh); } int Loading fs/nfsd/xdr.h +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ union nfsd_xdrstore { #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *); int nfssvc_decode_fhandleargs(struct svc_rqst *, __be32 *); int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readargs(struct svc_rqst *, __be32 *); Loading Loading
fs/nfsd/nfsproc.c +2 −2 Original line number Diff line number Diff line Loading @@ -627,7 +627,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_GETATTR] = { .pc_func = nfsd_proc_getattr, .pc_decode = nfssvc_decode_fhandle, .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_attrstat, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), Loading Loading @@ -793,7 +793,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_STATFS] = { .pc_func = nfsd_proc_statfs, .pc_decode = nfssvc_decode_fhandle, .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_statfsres, .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_statfsres), Loading
fs/nfsd/nfsxdr.c +20 −6 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ static u32 nfs_ftypes[] = { /* * XDR functions for basic NFS types * Basic NFSv2 data types (RFC 1094 Section 2.3) */ static __be32 * decode_fh(__be32 *p, struct svc_fh *fhp) { Loading @@ -37,6 +38,21 @@ decode_fh(__be32 *p, struct svc_fh *fhp) return p + (NFS_FHSIZE >> 2); } static bool svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) { __be32 *p; p = xdr_inline_decode(xdr, NFS_FHSIZE); if (!p) return false; fh_init(fhp, NFS_FHSIZE); memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); fhp->fh_handle.fh_size = NFS_FHSIZE; return true; } /* Helper function for NFSv2 ACL code */ __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp) { Loading Loading @@ -194,14 +210,12 @@ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *f */ int nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) { struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_fhandle *args = rqstp->rq_argp; p = decode_fh(p, &args->fh); if (!p) return 0; return xdr_argsize_check(rqstp, p); return svcxdr_decode_fhandle(xdr, &args->fh); } int Loading
fs/nfsd/xdr.h +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ union nfsd_xdrstore { #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *); int nfssvc_decode_fhandleargs(struct svc_rqst *, __be32 *); int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readargs(struct svc_rqst *, __be32 *); Loading