diff options
| -rw-r--r-- | fs/nfsd/nfs3proc.c | 2 | ||||
| -rw-r--r-- | fs/nfsd/nfs3xdr.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index c9cf46e0c040..8f933e84cec1 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c | |||
| @@ -588,7 +588,7 @@ nfsd3_proc_fsinfo(struct svc_rqst *rqstp) | |||
| 588 | resp->f_wtmax = max_blocksize; | 588 | resp->f_wtmax = max_blocksize; |
| 589 | resp->f_wtpref = max_blocksize; | 589 | resp->f_wtpref = max_blocksize; |
| 590 | resp->f_wtmult = PAGE_SIZE; | 590 | resp->f_wtmult = PAGE_SIZE; |
| 591 | resp->f_dtpref = PAGE_SIZE; | 591 | resp->f_dtpref = max_blocksize; |
| 592 | resp->f_maxfilesize = ~(u32) 0; | 592 | resp->f_maxfilesize = ~(u32) 0; |
| 593 | resp->f_properties = NFS3_FSF_DEFAULT; | 593 | resp->f_properties = NFS3_FSF_DEFAULT; |
| 594 | 594 | ||
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 83919116d5cb..93fea246f676 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c | |||
| @@ -573,6 +573,8 @@ int | |||
| 573 | nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) | 573 | nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) |
| 574 | { | 574 | { |
| 575 | struct nfsd3_readdirargs *args = rqstp->rq_argp; | 575 | struct nfsd3_readdirargs *args = rqstp->rq_argp; |
| 576 | u32 max_blocksize = svc_max_payload(rqstp); | ||
| 577 | |||
| 576 | p = decode_fh(p, &args->fh); | 578 | p = decode_fh(p, &args->fh); |
| 577 | if (!p) | 579 | if (!p) |
| 578 | return 0; | 580 | return 0; |
| @@ -580,7 +582,7 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) | |||
| 580 | args->verf = p; p += 2; | 582 | args->verf = p; p += 2; |
| 581 | args->dircount = ~0; | 583 | args->dircount = ~0; |
| 582 | args->count = ntohl(*p++); | 584 | args->count = ntohl(*p++); |
| 583 | args->count = min_t(u32, args->count, PAGE_SIZE); | 585 | args->count = min_t(u32, args->count, max_blocksize); |
| 584 | args->buffer = page_address(*(rqstp->rq_next_page++)); | 586 | args->buffer = page_address(*(rqstp->rq_next_page++)); |
| 585 | 587 | ||
| 586 | return xdr_argsize_check(rqstp, p); | 588 | return xdr_argsize_check(rqstp, p); |
