Skip to content

Commit 3c7aa15

Browse files
kinglongmeeJ. Bruce Fields
authored andcommitted
NFSD: Using min/max/min_t/max_t for calculate
Signed-off-by: Kinglong Mee <[email protected]> Signed-off-by: J. Bruce Fields <[email protected]>
1 parent a497c3b commit 3c7aa15

File tree

8 files changed

+31
-64
lines changed

8 files changed

+31
-64
lines changed

fs/nfsd/nfs3proc.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,7 @@ nfsd3_proc_read(struct svc_rqst *rqstp, struct nfsd3_readargs *argp,
157157
* 1 (status) + 22 (post_op_attr) + 1 (count) + 1 (eof)
158158
* + 1 (xdr opaque byte count) = 26
159159
*/
160-
161-
resp->count = argp->count;
162-
if (max_blocksize < resp->count)
163-
resp->count = max_blocksize;
164-
160+
resp->count = min(argp->count, max_blocksize);
165161
svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4);
166162

167163
fh_copy(&resp->fh, &argp->fh);

fs/nfsd/nfs3xdr.c

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,7 @@ decode_sattr3(__be32 *p, struct iattr *iap)
120120

121121
iap->ia_valid |= ATTR_SIZE;
122122
p = xdr_decode_hyper(p, &newsize);
123-
if (newsize <= NFS_OFFSET_MAX)
124-
iap->ia_size = newsize;
125-
else
126-
iap->ia_size = NFS_OFFSET_MAX;
123+
iap->ia_size = min_t(u64, newsize, NFS_OFFSET_MAX);
127124
}
128125
if ((tmp = ntohl(*p++)) == 1) { /* set to server time */
129126
iap->ia_valid |= ATTR_ATIME;
@@ -338,18 +335,16 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
338335
return 0;
339336
p = xdr_decode_hyper(p, &args->offset);
340337

341-
len = args->count = ntohl(*p++);
342-
343-
if (len > max_blocksize)
344-
len = max_blocksize;
338+
args->count = ntohl(*p++);
339+
len = min(args->count, max_blocksize);
345340

346341
/* set up the kvec */
347342
v=0;
348343
while (len > 0) {
349344
struct page *p = *(rqstp->rq_next_page++);
350345

351346
rqstp->rq_vec[v].iov_base = page_address(p);
352-
rqstp->rq_vec[v].iov_len = len < PAGE_SIZE? len : PAGE_SIZE;
347+
rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE);
353348
len -= rqstp->rq_vec[v].iov_len;
354349
v++;
355350
}
@@ -484,9 +479,7 @@ nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p,
484479
}
485480
/* now copy next page if there is one */
486481
if (len && !avail && rqstp->rq_arg.page_len) {
487-
avail = rqstp->rq_arg.page_len;
488-
if (avail > PAGE_SIZE)
489-
avail = PAGE_SIZE;
482+
avail = min_t(unsigned int, rqstp->rq_arg.page_len, PAGE_SIZE);
490483
old = page_address(rqstp->rq_arg.pages[0]);
491484
}
492485
while (len && avail && *old) {
@@ -571,10 +564,7 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,
571564
args->verf = p; p += 2;
572565
args->dircount = ~0;
573566
args->count = ntohl(*p++);
574-
575-
if (args->count > PAGE_SIZE)
576-
args->count = PAGE_SIZE;
577-
567+
args->count = min_t(u32, args->count, PAGE_SIZE);
578568
args->buffer = page_address(*(rqstp->rq_next_page++));
579569

580570
return xdr_argsize_check(rqstp, p);
@@ -595,10 +585,7 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,
595585
args->dircount = ntohl(*p++);
596586
args->count = ntohl(*p++);
597587

598-
len = (args->count > max_blocksize) ? max_blocksize :
599-
args->count;
600-
args->count = len;
601-
588+
len = args->count = min(args->count, max_blocksize);
602589
while (len > 0) {
603590
struct page *p = *(rqstp->rq_next_page++);
604591
if (!args->buffer)
@@ -913,8 +900,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, int namlen,
913900
*/
914901

915902
/* truncate filename if too long */
916-
if (namlen > NFS3_MAXNAMLEN)
917-
namlen = NFS3_MAXNAMLEN;
903+
namlen = min(namlen, NFS3_MAXNAMLEN);
918904

919905
slen = XDR_QUADLEN(namlen);
920906
elen = slen + NFS3_ENTRY_BAGGAGE

fs/nfsd/nfs4proc.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,21 +1529,17 @@ static inline u32 nfsd4_read_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
15291529
u32 maxcount = 0, rlen = 0;
15301530

15311531
maxcount = svc_max_payload(rqstp);
1532-
rlen = op->u.read.rd_length;
1533-
1534-
if (rlen > maxcount)
1535-
rlen = maxcount;
1532+
rlen = min(op->u.read.rd_length, maxcount);
15361533

15371534
return (op_encode_hdr_size + 2 + XDR_QUADLEN(rlen)) * sizeof(__be32);
15381535
}
15391536

15401537
static inline u32 nfsd4_readdir_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
15411538
{
1542-
u32 maxcount = svc_max_payload(rqstp);
1543-
u32 rlen = op->u.readdir.rd_maxcount;
1539+
u32 maxcount = 0, rlen = 0;
15441540

1545-
if (rlen > maxcount)
1546-
rlen = maxcount;
1541+
maxcount = svc_max_payload(rqstp);
1542+
rlen = min(op->u.readdir.rd_maxcount, maxcount);
15471543

15481544
return (op_encode_hdr_size + op_encode_verifier_maxsz +
15491545
XDR_QUADLEN(rlen)) * sizeof(__be32);

fs/nfsd/nfs4xdr.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3134,9 +3134,7 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
31343134
len = maxcount;
31353135
v = 0;
31363136

3137-
thislen = (void *)xdr->end - (void *)xdr->p;
3138-
if (len < thislen)
3139-
thislen = len;
3137+
thislen = min(len, ((void *)xdr->end - (void *)xdr->p));
31403138
p = xdr_reserve_space(xdr, (thislen+3)&~3);
31413139
WARN_ON_ONCE(!p);
31423140
resp->rqstp->rq_vec[v].iov_base = p;
@@ -3203,10 +3201,8 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
32033201
xdr_commit_encode(xdr);
32043202

32053203
maxcount = svc_max_payload(resp->rqstp);
3206-
if (maxcount > xdr->buf->buflen - xdr->buf->len)
3207-
maxcount = xdr->buf->buflen - xdr->buf->len;
3208-
if (maxcount > read->rd_length)
3209-
maxcount = read->rd_length;
3204+
maxcount = min_t(unsigned long, maxcount, (xdr->buf->buflen - xdr->buf->len));
3205+
maxcount = min_t(unsigned long, maxcount, read->rd_length);
32103206

32113207
if (!read->rd_filp) {
32123208
err = nfsd_get_tmp_read_open(resp->rqstp, read->rd_fhp,

fs/nfsd/nfsctl.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,7 @@ static ssize_t write_filehandle(struct file *file, char *buf, size_t size)
369369

370370
if (maxsize < NFS_FHSIZE)
371371
return -EINVAL;
372-
if (maxsize > NFS3_FHSIZE)
373-
maxsize = NFS3_FHSIZE;
372+
maxsize = min(maxsize, NFS3_FHSIZE);
374373

375374
if (qword_get(&mesg, mesg, size)>0)
376375
return -EINVAL;
@@ -871,10 +870,8 @@ static ssize_t write_maxblksize(struct file *file, char *buf, size_t size)
871870
/* force bsize into allowed range and
872871
* required alignment.
873872
*/
874-
if (bsize < 1024)
875-
bsize = 1024;
876-
if (bsize > NFSSVC_MAXBLKSIZE)
877-
bsize = NFSSVC_MAXBLKSIZE;
873+
bsize = max_t(int, bsize, 1024);
874+
bsize = min_t(int, bsize, NFSSVC_MAXBLKSIZE);
878875
bsize &= ~(1024-1);
879876
mutex_lock(&nfsd_mutex);
880877
if (nn->nfsd_serv) {

fs/nfsd/nfssvc.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,7 @@ int nfsd_set_nrthreads(int n, int *nthreads, struct net *net)
469469
/* enforce a global maximum number of threads */
470470
tot = 0;
471471
for (i = 0; i < n; i++) {
472-
if (nthreads[i] > NFSD_MAXSERVS)
473-
nthreads[i] = NFSD_MAXSERVS;
472+
nthreads[i] = min(nthreads[i], NFSD_MAXSERVS);
474473
tot += nthreads[i];
475474
}
476475
if (tot > NFSD_MAXSERVS) {
@@ -519,11 +518,11 @@ nfsd_svc(int nrservs, struct net *net)
519518

520519
mutex_lock(&nfsd_mutex);
521520
dprintk("nfsd: creating service\n");
522-
if (nrservs <= 0)
523-
nrservs = 0;
524-
if (nrservs > NFSD_MAXSERVS)
525-
nrservs = NFSD_MAXSERVS;
521+
522+
nrservs = max(nrservs, 0);
523+
nrservs = min(nrservs, NFSD_MAXSERVS);
526524
error = 0;
525+
527526
if (nrservs == 0 && nn->nfsd_serv == NULL)
528527
goto out;
529528

fs/nfsd/nfsxdr.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,7 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
257257
len = args->count = ntohl(*p++);
258258
p++; /* totalcount - unused */
259259

260-
if (len > NFSSVC_MAXBLKSIZE_V2)
261-
len = NFSSVC_MAXBLKSIZE_V2;
260+
len = min_t(unsigned int, len, NFSSVC_MAXBLKSIZE_V2);
262261

263262
/* set up somewhere to store response.
264263
* We take pages, put them on reslist and include in iovec
@@ -268,7 +267,7 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
268267
struct page *p = *(rqstp->rq_next_page++);
269268

270269
rqstp->rq_vec[v].iov_base = page_address(p);
271-
rqstp->rq_vec[v].iov_len = len < PAGE_SIZE?len:PAGE_SIZE;
270+
rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE);
272271
len -= rqstp->rq_vec[v].iov_len;
273272
v++;
274273
}
@@ -400,9 +399,7 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,
400399
return 0;
401400
args->cookie = ntohl(*p++);
402401
args->count = ntohl(*p++);
403-
if (args->count > PAGE_SIZE)
404-
args->count = PAGE_SIZE;
405-
402+
args->count = min_t(u32, args->count, PAGE_SIZE);
406403
args->buffer = page_address(*(rqstp->rq_next_page++));
407404

408405
return xdr_argsize_check(rqstp, p);
@@ -516,10 +513,11 @@ nfssvc_encode_entry(void *ccdv, const char *name,
516513
}
517514
if (cd->offset)
518515
*cd->offset = htonl(offset);
519-
if (namlen > NFS2_MAXNAMLEN)
520-
namlen = NFS2_MAXNAMLEN;/* truncate filename */
521516

517+
/* truncate filename */
518+
namlen = min(namlen, NFS2_MAXNAMLEN);
522519
slen = XDR_QUADLEN(namlen);
520+
523521
if ((buflen = cd->buflen - slen - 4) < 0) {
524522
cd->common.err = nfserr_toosmall;
525523
return -EINVAL;

fs/nfsd/vfs.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,8 +2093,7 @@ nfsd_racache_init(int cache_size)
20932093
if (raparm_hash[0].pb_head)
20942094
return 0;
20952095
nperbucket = DIV_ROUND_UP(cache_size, RAPARM_HASH_SIZE);
2096-
if (nperbucket < 2)
2097-
nperbucket = 2;
2096+
nperbucket = max(2, nperbucket);
20982097
cache_size = nperbucket * RAPARM_HASH_SIZE;
20992098

21002099
dprintk("nfsd: allocating %d readahead buffers.\n", cache_size);

0 commit comments

Comments
 (0)