summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs3xdr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs3xdr.c')
-rw-r--r--fs/nfsd/nfs3xdr.c74
1 files changed, 43 insertions, 31 deletions
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index 7fd361a75287..be8bf8af9917 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -273,8 +273,10 @@ void fill_post_wcc(struct svc_fh *fhp)
273 * XDR decode functions 273 * XDR decode functions
274 */ 274 */
275int 275int
276nfs3svc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p, struct nfsd_fhandle *args) 276nfs3svc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p)
277{ 277{
278 struct nfsd_fhandle *args = rqstp->rq_argp;
279
278 p = decode_fh(p, &args->fh); 280 p = decode_fh(p, &args->fh);
279 if (!p) 281 if (!p)
280 return 0; 282 return 0;
@@ -282,9 +284,10 @@ nfs3svc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p, struct nfsd_fhandle *a
282} 284}
283 285
284int 286int
285nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p, 287nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p)
286 struct nfsd3_sattrargs *args)
287{ 288{
289 struct nfsd3_sattrargs *args = rqstp->rq_argp;
290
288 p = decode_fh(p, &args->fh); 291 p = decode_fh(p, &args->fh);
289 if (!p) 292 if (!p)
290 return 0; 293 return 0;
@@ -300,9 +303,10 @@ nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p,
300} 303}
301 304
302int 305int
303nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p, 306nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p)
304 struct nfsd3_diropargs *args)
305{ 307{
308 struct nfsd3_diropargs *args = rqstp->rq_argp;
309
306 if (!(p = decode_fh(p, &args->fh)) 310 if (!(p = decode_fh(p, &args->fh))
307 || !(p = decode_filename(p, &args->name, &args->len))) 311 || !(p = decode_filename(p, &args->name, &args->len)))
308 return 0; 312 return 0;
@@ -311,9 +315,10 @@ nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p,
311} 315}
312 316
313int 317int
314nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p, 318nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p)
315 struct nfsd3_accessargs *args)
316{ 319{
320 struct nfsd3_accessargs *args = rqstp->rq_argp;
321
317 p = decode_fh(p, &args->fh); 322 p = decode_fh(p, &args->fh);
318 if (!p) 323 if (!p)
319 return 0; 324 return 0;
@@ -323,9 +328,9 @@ nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p,
323} 328}
324 329
325int 330int
326nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p, 331nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p)
327 struct nfsd3_readargs *args)
328{ 332{
333 struct nfsd3_readargs *args = rqstp->rq_argp;
329 unsigned int len; 334 unsigned int len;
330 int v; 335 int v;
331 u32 max_blocksize = svc_max_payload(rqstp); 336 u32 max_blocksize = svc_max_payload(rqstp);
@@ -356,9 +361,9 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
356} 361}
357 362
358int 363int
359nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p, 364nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p)
360 struct nfsd3_writeargs *args)
361{ 365{
366 struct nfsd3_writeargs *args = rqstp->rq_argp;
362 unsigned int len, v, hdr, dlen; 367 unsigned int len, v, hdr, dlen;
363 u32 max_blocksize = svc_max_payload(rqstp); 368 u32 max_blocksize = svc_max_payload(rqstp);
364 struct kvec *head = rqstp->rq_arg.head; 369 struct kvec *head = rqstp->rq_arg.head;
@@ -416,9 +421,10 @@ nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p,
416} 421}
417 422
418int 423int
419nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p, 424nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p)
420 struct nfsd3_createargs *args)
421{ 425{
426 struct nfsd3_createargs *args = rqstp->rq_argp;
427
422 if (!(p = decode_fh(p, &args->fh)) 428 if (!(p = decode_fh(p, &args->fh))
423 || !(p = decode_filename(p, &args->name, &args->len))) 429 || !(p = decode_filename(p, &args->name, &args->len)))
424 return 0; 430 return 0;
@@ -438,10 +444,12 @@ nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p,
438 444
439 return xdr_argsize_check(rqstp, p); 445 return xdr_argsize_check(rqstp, p);
440} 446}
447
441int 448int
442nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p, 449nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p)
443 struct nfsd3_createargs *args)
444{ 450{
451 struct nfsd3_createargs *args = rqstp->rq_argp;
452
445 if (!(p = decode_fh(p, &args->fh)) || 453 if (!(p = decode_fh(p, &args->fh)) ||
446 !(p = decode_filename(p, &args->name, &args->len))) 454 !(p = decode_filename(p, &args->name, &args->len)))
447 return 0; 455 return 0;
@@ -451,9 +459,9 @@ nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p,
451} 459}
452 460
453int 461int
454nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p, 462nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p)
455 struct nfsd3_symlinkargs *args)
456{ 463{
464 struct nfsd3_symlinkargs *args = rqstp->rq_argp;
457 unsigned int len, avail; 465 unsigned int len, avail;
458 char *old, *new; 466 char *old, *new;
459 struct kvec *vec; 467 struct kvec *vec;
@@ -503,9 +511,10 @@ nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p,
503} 511}
504 512
505int 513int
506nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p, 514nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p)
507 struct nfsd3_mknodargs *args)
508{ 515{
516 struct nfsd3_mknodargs *args = rqstp->rq_argp;
517
509 if (!(p = decode_fh(p, &args->fh)) 518 if (!(p = decode_fh(p, &args->fh))
510 || !(p = decode_filename(p, &args->name, &args->len))) 519 || !(p = decode_filename(p, &args->name, &args->len)))
511 return 0; 520 return 0;
@@ -525,9 +534,10 @@ nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p,
525} 534}
526 535
527int 536int
528nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p, 537nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p)
529 struct nfsd3_renameargs *args)
530{ 538{
539 struct nfsd3_renameargs *args = rqstp->rq_argp;
540
531 if (!(p = decode_fh(p, &args->ffh)) 541 if (!(p = decode_fh(p, &args->ffh))
532 || !(p = decode_filename(p, &args->fname, &args->flen)) 542 || !(p = decode_filename(p, &args->fname, &args->flen))
533 || !(p = decode_fh(p, &args->tfh)) 543 || !(p = decode_fh(p, &args->tfh))
@@ -538,9 +548,10 @@ nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p,
538} 548}
539 549
540int 550int
541nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p, 551nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p)
542 struct nfsd3_readlinkargs *args)
543{ 552{
553 struct nfsd3_readlinkargs *args = rqstp->rq_argp;
554
544 p = decode_fh(p, &args->fh); 555 p = decode_fh(p, &args->fh);
545 if (!p) 556 if (!p)
546 return 0; 557 return 0;
@@ -552,9 +563,10 @@ nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p,
552} 563}
553 564
554int 565int
555nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p, 566nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p)
556 struct nfsd3_linkargs *args)
557{ 567{
568 struct nfsd3_linkargs *args = rqstp->rq_argp;
569
558 if (!(p = decode_fh(p, &args->ffh)) 570 if (!(p = decode_fh(p, &args->ffh))
559 || !(p = decode_fh(p, &args->tfh)) 571 || !(p = decode_fh(p, &args->tfh))
560 || !(p = decode_filename(p, &args->tname, &args->tlen))) 572 || !(p = decode_filename(p, &args->tname, &args->tlen)))
@@ -564,9 +576,9 @@ nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p,
564} 576}
565 577
566int 578int
567nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p, 579nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p)
568 struct nfsd3_readdirargs *args)
569{ 580{
581 struct nfsd3_readdirargs *args = rqstp->rq_argp;
570 p = decode_fh(p, &args->fh); 582 p = decode_fh(p, &args->fh);
571 if (!p) 583 if (!p)
572 return 0; 584 return 0;
@@ -585,9 +597,9 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,
585} 597}
586 598
587int 599int
588nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p, 600nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p)
589 struct nfsd3_readdirargs *args)
590{ 601{
602 struct nfsd3_readdirargs *args = rqstp->rq_argp;
591 int len; 603 int len;
592 u32 max_blocksize = svc_max_payload(rqstp); 604 u32 max_blocksize = svc_max_payload(rqstp);
593 605
@@ -613,9 +625,9 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,
613} 625}
614 626
615int 627int
616nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p, 628nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p)
617 struct nfsd3_commitargs *args)
618{ 629{
630 struct nfsd3_commitargs *args = rqstp->rq_argp;
619 p = decode_fh(p, &args->fh); 631 p = decode_fh(p, &args->fh);
620 if (!p) 632 if (!p)
621 return 0; 633 return 0;