NFSD: Take care the return value from nfsd4_decode_stateid
Subsystems (2)
PATCH 1/1 NFSD: Take care the return value from nfsd4_decode_stateid
Return status after nfsd4_decode_stateid failed.
Signed-off-by Kinglong Mee <[email protected]>
--- fs/nfsd/nfs4xdr.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
fs/nfsd/nfs4xdr.c +15 -3
@@ -1562,7 +1562,11 @@ nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, p =xdr_decode_hyper (p, &lgp->lg_seg.offset); p =xdr_decode_hyper (p, &lgp->lg_seg.length); p =xdr_decode_hyper (p, &lgp->lg_minlength); -nfsd4_decode_stateid (argp, &lgp->lg_sid); + + status =nfsd4_decode_stateid (argp, &lgp->lg_sid); +if (status) +return status; +READ_BUF (4 ); lgp->lg_maxcount =be32_to_cpup (p++);
@@ -1580,7 +1584,11 @@ nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, p =xdr_decode_hyper (p, &lcp->lc_seg.offset); p =xdr_decode_hyper (p, &lcp->lc_seg.length); lcp->lc_reclaim =be32_to_cpup (p++); -nfsd4_decode_stateid (argp, &lcp->lc_sid); + + status =nfsd4_decode_stateid (argp, &lcp->lc_sid); +if (status) +return status; +READ_BUF (4 ); lcp->lc_newoffset =be32_to_cpup (p++);if (lcp->lc_newoffset) {
@@ -1628,7 +1636,11 @@ nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp,READ_BUF (16 ); p =xdr_decode_hyper (p, &lrp->lr_seg.offset); p =xdr_decode_hyper (p, &lrp->lr_seg.length); -nfsd4_decode_stateid (argp, &lrp->lr_sid); + + status =nfsd4_decode_stateid (argp, &lrp->lr_sid); +if (status) +return status; +READ_BUF (4 ); lrp->lrf_body_len =be32_to_cpup (p++);if (lrp->lrf_body_len >0 ) {
Signature · 1 line
2.3.3
Quoted 3 lines · Kinglong Mee
Return status after
nfsd4_decode_stateidfailed.Signed-off-by Kinglong Mee <[email protected]>
Looks good, I must have missed that during a rebase.
Reviewed-by Christoph Hellwig <[email protected]>