aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2014-06-02 12:32:51 -0400
committerJ. Bruce Fields <bfields@redhat.com>2014-06-06 19:22:47 -0400
commit06553991e7757c668efb3bce9dcc740f31aead60 (patch)
treee91f6074262f6b14b3dfef6a45524884830222e0
parent05638dc73af2586517468b1159d4b76e90607359 (diff)
nfsd4: kill READ32
While we're here, let's kill off a couple of the read-side macros. Leaving the more complicated ones alone for now. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r--fs/nfsd/nfs4xdr.c255
1 files changed, 127 insertions, 128 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index a7268b4a4954..a23fa002e0d0 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -98,7 +98,6 @@ xdr_error: \
98 status = nfserr_bad_xdr; \ 98 status = nfserr_bad_xdr; \
99 goto out 99 goto out
100 100
101#define READ32(x) (x) = ntohl(*p++)
102#define READ64(x) do { \ 101#define READ64(x) do { \
103 (x) = (u64)ntohl(*p++) << 32; \ 102 (x) = (u64)ntohl(*p++) << 32; \
104 (x) |= ntohl(*p++); \ 103 (x) |= ntohl(*p++); \
@@ -248,17 +247,17 @@ nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval)
248 bmval[2] = 0; 247 bmval[2] = 0;
249 248
250 READ_BUF(4); 249 READ_BUF(4);
251 READ32(bmlen); 250 bmlen = be32_to_cpup(p++);
252 if (bmlen > 1000) 251 if (bmlen > 1000)
253 goto xdr_error; 252 goto xdr_error;
254 253
255 READ_BUF(bmlen << 2); 254 READ_BUF(bmlen << 2);
256 if (bmlen > 0) 255 if (bmlen > 0)
257 READ32(bmval[0]); 256 bmval[0] = be32_to_cpup(p++);
258 if (bmlen > 1) 257 if (bmlen > 1)
259 READ32(bmval[1]); 258 bmval[1] = be32_to_cpup(p++);
260 if (bmlen > 2) 259 if (bmlen > 2)
261 READ32(bmval[2]); 260 bmval[2] = be32_to_cpup(p++);
262 261
263 DECODE_TAIL; 262 DECODE_TAIL;
264} 263}
@@ -278,7 +277,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
278 return status; 277 return status;
279 278
280 READ_BUF(4); 279 READ_BUF(4);
281 READ32(expected_len); 280 expected_len = be32_to_cpup(p++);
282 281
283 if (bmval[0] & FATTR4_WORD0_SIZE) { 282 if (bmval[0] & FATTR4_WORD0_SIZE) {
284 READ_BUF(8); 283 READ_BUF(8);
@@ -291,7 +290,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
291 struct nfs4_ace *ace; 290 struct nfs4_ace *ace;
292 291
293 READ_BUF(4); len += 4; 292 READ_BUF(4); len += 4;
294 READ32(nace); 293 nace = be32_to_cpup(p++);
295 294
296 if (nace > NFS4_ACL_MAX) 295 if (nace > NFS4_ACL_MAX)
297 return nfserr_fbig; 296 return nfserr_fbig;
@@ -305,10 +304,10 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
305 (*acl)->naces = nace; 304 (*acl)->naces = nace;
306 for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) { 305 for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) {
307 READ_BUF(16); len += 16; 306 READ_BUF(16); len += 16;
308 READ32(ace->type); 307 ace->type = be32_to_cpup(p++);
309 READ32(ace->flag); 308 ace->flag = be32_to_cpup(p++);
310 READ32(ace->access_mask); 309 ace->access_mask = be32_to_cpup(p++);
311 READ32(dummy32); 310 dummy32 = be32_to_cpup(p++);
312 READ_BUF(dummy32); 311 READ_BUF(dummy32);
313 len += XDR_QUADLEN(dummy32) << 2; 312 len += XDR_QUADLEN(dummy32) << 2;
314 READMEM(buf, dummy32); 313 READMEM(buf, dummy32);
@@ -330,14 +329,14 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
330 if (bmval[1] & FATTR4_WORD1_MODE) { 329 if (bmval[1] & FATTR4_WORD1_MODE) {
331 READ_BUF(4); 330 READ_BUF(4);
332 len += 4; 331 len += 4;
333 READ32(iattr->ia_mode); 332 iattr->ia_mode = be32_to_cpup(p++);
334 iattr->ia_mode &= (S_IFMT | S_IALLUGO); 333 iattr->ia_mode &= (S_IFMT | S_IALLUGO);
335 iattr->ia_valid |= ATTR_MODE; 334 iattr->ia_valid |= ATTR_MODE;
336 } 335 }
337 if (bmval[1] & FATTR4_WORD1_OWNER) { 336 if (bmval[1] & FATTR4_WORD1_OWNER) {
338 READ_BUF(4); 337 READ_BUF(4);
339 len += 4; 338 len += 4;
340 READ32(dummy32); 339 dummy32 = be32_to_cpup(p++);
341 READ_BUF(dummy32); 340 READ_BUF(dummy32);
342 len += (XDR_QUADLEN(dummy32) << 2); 341 len += (XDR_QUADLEN(dummy32) << 2);
343 READMEM(buf, dummy32); 342 READMEM(buf, dummy32);
@@ -348,7 +347,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
348 if (bmval[1] & FATTR4_WORD1_OWNER_GROUP) { 347 if (bmval[1] & FATTR4_WORD1_OWNER_GROUP) {
349 READ_BUF(4); 348 READ_BUF(4);
350 len += 4; 349 len += 4;
351 READ32(dummy32); 350 dummy32 = be32_to_cpup(p++);
352 READ_BUF(dummy32); 351 READ_BUF(dummy32);
353 len += (XDR_QUADLEN(dummy32) << 2); 352 len += (XDR_QUADLEN(dummy32) << 2);
354 READMEM(buf, dummy32); 353 READMEM(buf, dummy32);
@@ -359,7 +358,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
359 if (bmval[1] & FATTR4_WORD1_TIME_ACCESS_SET) { 358 if (bmval[1] & FATTR4_WORD1_TIME_ACCESS_SET) {
360 READ_BUF(4); 359 READ_BUF(4);
361 len += 4; 360 len += 4;
362 READ32(dummy32); 361 dummy32 = be32_to_cpup(p++);
363 switch (dummy32) { 362 switch (dummy32) {
364 case NFS4_SET_TO_CLIENT_TIME: 363 case NFS4_SET_TO_CLIENT_TIME:
365 /* We require the high 32 bits of 'seconds' to be 0, and we ignore 364 /* We require the high 32 bits of 'seconds' to be 0, and we ignore
@@ -367,7 +366,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
367 READ_BUF(12); 366 READ_BUF(12);
368 len += 12; 367 len += 12;
369 READ64(iattr->ia_atime.tv_sec); 368 READ64(iattr->ia_atime.tv_sec);
370 READ32(iattr->ia_atime.tv_nsec); 369 iattr->ia_atime.tv_nsec = be32_to_cpup(p++);
371 if (iattr->ia_atime.tv_nsec >= (u32)1000000000) 370 if (iattr->ia_atime.tv_nsec >= (u32)1000000000)
372 return nfserr_inval; 371 return nfserr_inval;
373 iattr->ia_valid |= (ATTR_ATIME | ATTR_ATIME_SET); 372 iattr->ia_valid |= (ATTR_ATIME | ATTR_ATIME_SET);
@@ -382,7 +381,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
382 if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) { 381 if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) {
383 READ_BUF(4); 382 READ_BUF(4);
384 len += 4; 383 len += 4;
385 READ32(dummy32); 384 dummy32 = be32_to_cpup(p++);
386 switch (dummy32) { 385 switch (dummy32) {
387 case NFS4_SET_TO_CLIENT_TIME: 386 case NFS4_SET_TO_CLIENT_TIME:
388 /* We require the high 32 bits of 'seconds' to be 0, and we ignore 387 /* We require the high 32 bits of 'seconds' to be 0, and we ignore
@@ -390,7 +389,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
390 READ_BUF(12); 389 READ_BUF(12);
391 len += 12; 390 len += 12;
392 READ64(iattr->ia_mtime.tv_sec); 391 READ64(iattr->ia_mtime.tv_sec);
393 READ32(iattr->ia_mtime.tv_nsec); 392 iattr->ia_mtime.tv_nsec = be32_to_cpup(p++);
394 if (iattr->ia_mtime.tv_nsec >= (u32)1000000000) 393 if (iattr->ia_mtime.tv_nsec >= (u32)1000000000)
395 return nfserr_inval; 394 return nfserr_inval;
396 iattr->ia_valid |= (ATTR_MTIME | ATTR_MTIME_SET); 395 iattr->ia_valid |= (ATTR_MTIME | ATTR_MTIME_SET);
@@ -408,13 +407,13 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval,
408 if (bmval[2] & FATTR4_WORD2_SECURITY_LABEL) { 407 if (bmval[2] & FATTR4_WORD2_SECURITY_LABEL) {
409 READ_BUF(4); 408 READ_BUF(4);
410 len += 4; 409 len += 4;
411 READ32(dummy32); /* lfs: we don't use it */ 410 dummy32 = be32_to_cpup(p++); /* lfs: we don't use it */
412 READ_BUF(4); 411 READ_BUF(4);
413 len += 4; 412 len += 4;
414 READ32(dummy32); /* pi: we don't use it either */ 413 dummy32 = be32_to_cpup(p++); /* pi: we don't use it either */
415 READ_BUF(4); 414 READ_BUF(4);
416 len += 4; 415 len += 4;
417 READ32(dummy32); 416 dummy32 = be32_to_cpup(p++);
418 READ_BUF(dummy32); 417 READ_BUF(dummy32);
419 if (dummy32 > NFSD4_MAX_SEC_LABEL_LEN) 418 if (dummy32 > NFSD4_MAX_SEC_LABEL_LEN)
420 return nfserr_badlabel; 419 return nfserr_badlabel;
@@ -445,7 +444,7 @@ nfsd4_decode_stateid(struct nfsd4_compoundargs *argp, stateid_t *sid)
445 DECODE_HEAD; 444 DECODE_HEAD;
446 445
447 READ_BUF(sizeof(stateid_t)); 446 READ_BUF(sizeof(stateid_t));
448 READ32(sid->si_generation); 447 sid->si_generation = be32_to_cpup(p++);
449 COPYMEM(&sid->si_opaque, sizeof(stateid_opaque_t)); 448 COPYMEM(&sid->si_opaque, sizeof(stateid_opaque_t));
450 449
451 DECODE_TAIL; 450 DECODE_TAIL;
@@ -457,7 +456,7 @@ nfsd4_decode_access(struct nfsd4_compoundargs *argp, struct nfsd4_access *access
457 DECODE_HEAD; 456 DECODE_HEAD;
458 457
459 READ_BUF(4); 458 READ_BUF(4);
460 READ32(access->ac_req_access); 459 access->ac_req_access = be32_to_cpup(p++);
461 460
462 DECODE_TAIL; 461 DECODE_TAIL;
463} 462}
@@ -472,7 +471,7 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_
472 471
473 /* callback_sec_params4 */ 472 /* callback_sec_params4 */
474 READ_BUF(4); 473 READ_BUF(4);
475 READ32(nr_secflavs); 474 nr_secflavs = be32_to_cpup(p++);
476 if (nr_secflavs) 475 if (nr_secflavs)
477 cbs->flavor = (u32)(-1); 476 cbs->flavor = (u32)(-1);
478 else 477 else
@@ -480,7 +479,7 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_
480 cbs->flavor = 0; 479 cbs->flavor = 0;
481 for (i = 0; i < nr_secflavs; ++i) { 480 for (i = 0; i < nr_secflavs; ++i) {
482 READ_BUF(4); 481 READ_BUF(4);
483 READ32(dummy); 482 dummy = be32_to_cpup(p++);
484 switch (dummy) { 483 switch (dummy) {
485 case RPC_AUTH_NULL: 484 case RPC_AUTH_NULL:
486 /* Nothing to read */ 485 /* Nothing to read */
@@ -490,21 +489,21 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_
490 case RPC_AUTH_UNIX: 489 case RPC_AUTH_UNIX:
491 READ_BUF(8); 490 READ_BUF(8);
492 /* stamp */ 491 /* stamp */
493 READ32(dummy); 492 dummy = be32_to_cpup(p++);
494 493
495 /* machine name */ 494 /* machine name */
496 READ32(dummy); 495 dummy = be32_to_cpup(p++);
497 READ_BUF(dummy); 496 READ_BUF(dummy);
498 SAVEMEM(machine_name, dummy); 497 SAVEMEM(machine_name, dummy);
499 498
500 /* uid, gid */ 499 /* uid, gid */
501 READ_BUF(8); 500 READ_BUF(8);
502 READ32(uid); 501 uid = be32_to_cpup(p++);
503 READ32(gid); 502 gid = be32_to_cpup(p++);
504 503
505 /* more gids */ 504 /* more gids */
506 READ_BUF(4); 505 READ_BUF(4);
507 READ32(dummy); 506 dummy = be32_to_cpup(p++);
508 READ_BUF(dummy * 4); 507 READ_BUF(dummy * 4);
509 if (cbs->flavor == (u32)(-1)) { 508 if (cbs->flavor == (u32)(-1)) {
510 kuid_t kuid = make_kuid(&init_user_ns, uid); 509 kuid_t kuid = make_kuid(&init_user_ns, uid);
@@ -524,14 +523,14 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_
524 "not supported!\n"); 523 "not supported!\n");
525 READ_BUF(8); 524 READ_BUF(8);
526 /* gcbp_service */ 525 /* gcbp_service */
527 READ32(dummy); 526 dummy = be32_to_cpup(p++);
528 /* gcbp_handle_from_server */ 527 /* gcbp_handle_from_server */
529 READ32(dummy); 528 dummy = be32_to_cpup(p++);
530 READ_BUF(dummy); 529 READ_BUF(dummy);
531 p += XDR_QUADLEN(dummy); 530 p += XDR_QUADLEN(dummy);
532 /* gcbp_handle_from_client */ 531 /* gcbp_handle_from_client */
533 READ_BUF(4); 532 READ_BUF(4);
534 READ32(dummy); 533 dummy = be32_to_cpup(p++);
535 READ_BUF(dummy); 534 READ_BUF(dummy);
536 break; 535 break;
537 default: 536 default:
@@ -547,7 +546,7 @@ static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, stru
547 DECODE_HEAD; 546 DECODE_HEAD;
548 547
549 READ_BUF(4); 548 READ_BUF(4);
550 READ32(bc->bc_cb_program); 549 bc->bc_cb_program = be32_to_cpup(p++);
551 nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec); 550 nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec);
552 551
553 DECODE_TAIL; 552 DECODE_TAIL;
@@ -559,7 +558,7 @@ static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp,
559 558
560 READ_BUF(NFS4_MAX_SESSIONID_LEN + 8); 559 READ_BUF(NFS4_MAX_SESSIONID_LEN + 8);
561 COPYMEM(bcts->sessionid.data, NFS4_MAX_SESSIONID_LEN); 560 COPYMEM(bcts->sessionid.data, NFS4_MAX_SESSIONID_LEN);
562 READ32(bcts->dir); 561 bcts->dir = be32_to_cpup(p++);
563 /* XXX: skipping ctsa_use_conn_in_rdma_mode. Perhaps Tom Tucker 562 /* XXX: skipping ctsa_use_conn_in_rdma_mode. Perhaps Tom Tucker
564 * could help us figure out we should be using it. */ 563 * could help us figure out we should be using it. */
565 DECODE_TAIL; 564 DECODE_TAIL;
@@ -571,7 +570,7 @@ nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close)
571 DECODE_HEAD; 570 DECODE_HEAD;
572 571
573 READ_BUF(4); 572 READ_BUF(4);
574 READ32(close->cl_seqid); 573 close->cl_seqid = be32_to_cpup(p++);
575 return nfsd4_decode_stateid(argp, &close->cl_stateid); 574 return nfsd4_decode_stateid(argp, &close->cl_stateid);
576 575
577 DECODE_TAIL; 576 DECODE_TAIL;
@@ -585,7 +584,7 @@ nfsd4_decode_commit(struct nfsd4_compoundargs *argp, struct nfsd4_commit *commit
585 584
586 READ_BUF(12); 585 READ_BUF(12);
587 READ64(commit->co_offset); 586 READ64(commit->co_offset);
588 READ32(commit->co_count); 587 commit->co_count = be32_to_cpup(p++);
589 588
590 DECODE_TAIL; 589 DECODE_TAIL;
591} 590}
@@ -596,19 +595,19 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create
596 DECODE_HEAD; 595 DECODE_HEAD;
597 596
598 READ_BUF(4); 597 READ_BUF(4);
599 READ32(create->cr_type); 598 create->cr_type = be32_to_cpup(p++);
600 switch (create->cr_type) { 599 switch (create->cr_type) {
601 case NF4LNK: 600 case NF4LNK:
602 READ_BUF(4); 601 READ_BUF(4);
603 READ32(create->cr_linklen); 602 create->cr_linklen = be32_to_cpup(p++);
604 READ_BUF(create->cr_linklen); 603 READ_BUF(create->cr_linklen);
605 SAVEMEM(create->cr_linkname, create->cr_linklen); 604 SAVEMEM(create->cr_linkname, create->cr_linklen);
606 break; 605 break;
607 case NF4BLK: 606 case NF4BLK:
608 case NF4CHR: 607 case NF4CHR:
609 READ_BUF(8); 608 READ_BUF(8);
610 READ32(create->cr_specdata1); 609 create->cr_specdata1 = be32_to_cpup(p++);
611 READ32(create->cr_specdata2); 610 create->cr_specdata2 = be32_to_cpup(p++);
612 break; 611 break;
613 case NF4SOCK: 612 case NF4SOCK:
614 case NF4FIFO: 613 case NF4FIFO:
@@ -618,7 +617,7 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create
618 } 617 }
619 618
620 READ_BUF(4); 619 READ_BUF(4);
621 READ32(create->cr_namelen); 620 create->cr_namelen = be32_to_cpup(p++);
622 READ_BUF(create->cr_namelen); 621 READ_BUF(create->cr_namelen);
623 SAVEMEM(create->cr_name, create->cr_namelen); 622 SAVEMEM(create->cr_name, create->cr_namelen);
624 if ((status = check_filename(create->cr_name, create->cr_namelen))) 623 if ((status = check_filename(create->cr_name, create->cr_namelen)))
@@ -650,7 +649,7 @@ nfsd4_decode_link(struct nfsd4_compoundargs *argp, struct nfsd4_link *link)
650 DECODE_HEAD; 649 DECODE_HEAD;
651 650
652 READ_BUF(4); 651 READ_BUF(4);
653 READ32(link->li_namelen); 652 link->li_namelen = be32_to_cpup(p++);
654 READ_BUF(link->li_namelen); 653 READ_BUF(link->li_namelen);
655 SAVEMEM(link->li_name, link->li_namelen); 654 SAVEMEM(link->li_name, link->li_namelen);
656 if ((status = check_filename(link->li_name, link->li_namelen))) 655 if ((status = check_filename(link->li_name, link->li_namelen)))
@@ -668,24 +667,24 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock)
668 * type, reclaim(boolean), offset, length, new_lock_owner(boolean) 667 * type, reclaim(boolean), offset, length, new_lock_owner(boolean)
669 */ 668 */
670 READ_BUF(28); 669 READ_BUF(28);
671 READ32(lock->lk_type); 670 lock->lk_type = be32_to_cpup(p++);
672 if ((lock->lk_type < NFS4_READ_LT) || (lock->lk_type > NFS4_WRITEW_LT)) 671 if ((lock->lk_type < NFS4_READ_LT) || (lock->lk_type > NFS4_WRITEW_LT))
673 goto xdr_error; 672 goto xdr_error;
674 READ32(lock->lk_reclaim); 673 lock->lk_reclaim = be32_to_cpup(p++);
675 READ64(lock->lk_offset); 674 READ64(lock->lk_offset);
676 READ64(lock->lk_length); 675 READ64(lock->lk_length);
677 READ32(lock->lk_is_new); 676 lock->lk_is_new = be32_to_cpup(p++);
678 677
679 if (lock->lk_is_new) { 678 if (lock->lk_is_new) {
680 READ_BUF(4); 679 READ_BUF(4);
681 READ32(lock->lk_new_open_seqid); 680 lock->lk_new_open_seqid = be32_to_cpup(p++);
682 status = nfsd4_decode_stateid(argp, &lock->lk_new_open_stateid); 681 status = nfsd4_decode_stateid(argp, &lock->lk_new_open_stateid);
683 if (status) 682 if (status)
684 return status; 683 return status;
685 READ_BUF(8 + sizeof(clientid_t)); 684 READ_BUF(8 + sizeof(clientid_t));
686 READ32(lock->lk_new_lock_seqid); 685 lock->lk_new_lock_seqid = be32_to_cpup(p++);
687 COPYMEM(&lock->lk_new_clientid, sizeof(clientid_t)); 686 COPYMEM(&lock->lk_new_clientid, sizeof(clientid_t));
688 READ32(lock->lk_new_owner.len); 687 lock->lk_new_owner.len = be32_to_cpup(p++);
689 READ_BUF(lock->lk_new_owner.len); 688 READ_BUF(lock->lk_new_owner.len);
690 READMEM(lock->lk_new_owner.data, lock->lk_new_owner.len); 689 READMEM(lock->lk_new_owner.data, lock->lk_new_owner.len);
691 } else { 690 } else {
@@ -693,7 +692,7 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock)
693 if (status) 692 if (status)
694 return status; 693 return status;
695 READ_BUF(4); 694 READ_BUF(4);
696 READ32(lock->lk_old_lock_seqid); 695 lock->lk_old_lock_seqid = be32_to_cpup(p++);
697 } 696 }
698 697
699 DECODE_TAIL; 698 DECODE_TAIL;
@@ -705,13 +704,13 @@ nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, struct nfsd4_lockt *lockt)
705 DECODE_HEAD; 704 DECODE_HEAD;
706 705
707 READ_BUF(32); 706 READ_BUF(32);
708 READ32(lockt->lt_type); 707 lockt->lt_type = be32_to_cpup(p++);
709 if((lockt->lt_type < NFS4_READ_LT) || (lockt->lt_type > NFS4_WRITEW_LT)) 708 if((lockt->lt_type < NFS4_READ_LT) || (lockt->lt_type > NFS4_WRITEW_LT))
710 goto xdr_error; 709 goto xdr_error;
711 READ64(lockt->lt_offset); 710 READ64(lockt->lt_offset);
712 READ64(lockt->lt_length); 711 READ64(lockt->lt_length);
713 COPYMEM(&lockt->lt_clientid, 8); 712 COPYMEM(&lockt->lt_clientid, 8);
714 READ32(lockt->lt_owner.len); 713 lockt->lt_owner.len = be32_to_cpup(p++);
715 READ_BUF(lockt->lt_owner.len); 714 READ_BUF(lockt->lt_owner.len);
716 READMEM(lockt->lt_owner.data, lockt->lt_owner.len); 715 READMEM(lockt->lt_owner.data, lockt->lt_owner.len);
717 716
@@ -724,10 +723,10 @@ nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku)
724 DECODE_HEAD; 723 DECODE_HEAD;
725 724
726 READ_BUF(8); 725 READ_BUF(8);
727 READ32(locku->lu_type); 726 locku->lu_type = be32_to_cpup(p++);
728 if ((locku->lu_type < NFS4_READ_LT) || (locku->lu_type > NFS4_WRITEW_LT)) 727 if ((locku->lu_type < NFS4_READ_LT) || (locku->lu_type > NFS4_WRITEW_LT))
729 goto xdr_error; 728 goto xdr_error;
730 READ32(locku->lu_seqid); 729 locku->lu_seqid = be32_to_cpup(p++);
731 status = nfsd4_decode_stateid(argp, &locku->lu_stateid); 730 status = nfsd4_decode_stateid(argp, &locku->lu_stateid);
732 if (status) 731 if (status)
733 return status; 732 return status;
@@ -744,7 +743,7 @@ nfsd4_decode_lookup(struct nfsd4_compoundargs *argp, struct nfsd4_lookup *lookup
744 DECODE_HEAD; 743 DECODE_HEAD;
745 744
746 READ_BUF(4); 745 READ_BUF(4);
747 READ32(lookup->lo_len); 746 lookup->lo_len = be32_to_cpup(p++);
748 READ_BUF(lookup->lo_len); 747 READ_BUF(lookup->lo_len);
749 SAVEMEM(lookup->lo_name, lookup->lo_len); 748 SAVEMEM(lookup->lo_name, lookup->lo_len);
750 if ((status = check_filename(lookup->lo_name, lookup->lo_len))) 749 if ((status = check_filename(lookup->lo_name, lookup->lo_len)))
@@ -759,7 +758,7 @@ static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *sh
759 u32 w; 758 u32 w;
760 759
761 READ_BUF(4); 760 READ_BUF(4);
762 READ32(w); 761 w = be32_to_cpup(p++);
763 *share_access = w & NFS4_SHARE_ACCESS_MASK; 762 *share_access = w & NFS4_SHARE_ACCESS_MASK;
764 *deleg_want = w & NFS4_SHARE_WANT_MASK; 763 *deleg_want = w & NFS4_SHARE_WANT_MASK;
765 if (deleg_when) 764 if (deleg_when)
@@ -811,7 +810,7 @@ static __be32 nfsd4_decode_share_deny(struct nfsd4_compoundargs *argp, u32 *x)
811 __be32 *p; 810 __be32 *p;
812 811
813 READ_BUF(4); 812 READ_BUF(4);
814 READ32(*x); 813 *x = be32_to_cpup(p++);
815 /* Note: unlinke access bits, deny bits may be zero. */ 814 /* Note: unlinke access bits, deny bits may be zero. */
816 if (*x & ~NFS4_SHARE_DENY_BOTH) 815 if (*x & ~NFS4_SHARE_DENY_BOTH)
817 return nfserr_bad_xdr; 816 return nfserr_bad_xdr;
@@ -825,7 +824,7 @@ static __be32 nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_ne
825 __be32 *p; 824 __be32 *p;
826 825
827 READ_BUF(4); 826 READ_BUF(4);
828 READ32(o->len); 827 o->len = be32_to_cpup(p++);
829 828
830 if (o->len == 0 || o->len > NFS4_OPAQUE_LIMIT) 829 if (o->len == 0 || o->len > NFS4_OPAQUE_LIMIT)
831 return nfserr_bad_xdr; 830 return nfserr_bad_xdr;
@@ -850,7 +849,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open)
850 open->op_xdr_error = 0; 849 open->op_xdr_error = 0;
851 /* seqid, share_access, share_deny, clientid, ownerlen */ 850 /* seqid, share_access, share_deny, clientid, ownerlen */
852 READ_BUF(4); 851 READ_BUF(4);
853 READ32(open->op_seqid); 852 open->op_seqid = be32_to_cpup(p++);
854 /* decode, yet ignore deleg_when until supported */ 853 /* decode, yet ignore deleg_when until supported */
855 status = nfsd4_decode_share_access(argp, &open->op_share_access, 854 status = nfsd4_decode_share_access(argp, &open->op_share_access,
856 &open->op_deleg_want, &dummy); 855 &open->op_deleg_want, &dummy);
@@ -865,13 +864,13 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open)
865 if (status) 864 if (status)
866 goto xdr_error; 865 goto xdr_error;
867 READ_BUF(4); 866 READ_BUF(4);
868 READ32(open->op_create); 867 open->op_create = be32_to_cpup(p++);
869 switch (open->op_create) { 868 switch (open->op_create) {
870 case NFS4_OPEN_NOCREATE: 869 case NFS4_OPEN_NOCREATE:
871 break; 870 break;
872 case NFS4_OPEN_CREATE: 871 case NFS4_OPEN_CREATE:
873 READ_BUF(4); 872 READ_BUF(4);
874 READ32(open->op_createmode); 873 open->op_createmode = be32_to_cpup(p++);
875 switch (open->op_createmode) { 874 switch (open->op_createmode) {
876 case NFS4_CREATE_UNCHECKED: 875 case NFS4_CREATE_UNCHECKED:
877 case NFS4_CREATE_GUARDED: 876 case NFS4_CREATE_GUARDED:
@@ -904,12 +903,12 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open)
904 903
905 /* open_claim */ 904 /* open_claim */
906 READ_BUF(4); 905 READ_BUF(4);
907 READ32(open->op_claim_type); 906 open->op_claim_type = be32_to_cpup(p++);
908 switch (open->op_claim_type) { 907 switch (open->op_claim_type) {
909 case NFS4_OPEN_CLAIM_NULL: 908 case NFS4_OPEN_CLAIM_NULL:
910 case NFS4_OPEN_CLAIM_DELEGATE_PREV: 909 case NFS4_OPEN_CLAIM_DELEGATE_PREV:
911 READ_BUF(4); 910 READ_BUF(4);
912 READ32(open->op_fname.len); 911 open->op_fname.len = be32_to_cpup(p++);
913 READ_BUF(open->op_fname.len); 912 READ_BUF(open->op_fname.len);
914 SAVEMEM(open->op_fname.data, open->op_fname.len); 913 SAVEMEM(open->op_fname.data, open->op_fname.len);
915 if ((status = check_filename(open->op_fname.data, open->op_fname.len))) 914 if ((status = check_filename(open->op_fname.data, open->op_fname.len)))
@@ -917,14 +916,14 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open)
917 break; 916 break;
918 case NFS4_OPEN_CLAIM_PREVIOUS: 917 case NFS4_OPEN_CLAIM_PREVIOUS:
919 READ_BUF(4); 918 READ_BUF(4);
920 READ32(open->op_delegate_type); 919 open->op_delegate_type = be32_to_cpup(p++);
921 break; 920 break;
922 case NFS4_OPEN_CLAIM_DELEGATE_CUR: 921 case NFS4_OPEN_CLAIM_DELEGATE_CUR:
923 status = nfsd4_decode_stateid(argp, &open->op_delegate_stateid); 922 status = nfsd4_decode_stateid(argp, &open->op_delegate_stateid);
924 if (status) 923 if (status)
925 return status; 924 return status;
926 READ_BUF(4); 925 READ_BUF(4);
927 READ32(open->op_fname.len); 926 open->op_fname.len = be32_to_cpup(p++);
928 READ_BUF(open->op_fname.len); 927 READ_BUF(open->op_fname.len);
929 SAVEMEM(open->op_fname.data, open->op_fname.len); 928 SAVEMEM(open->op_fname.data, open->op_fname.len);
930 if ((status = check_filename(open->op_fname.data, open->op_fname.len))) 929 if ((status = check_filename(open->op_fname.data, open->op_fname.len)))
@@ -962,7 +961,7 @@ nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_con
962 if (status) 961 if (status)
963 return status; 962 return status;
964 READ_BUF(4); 963 READ_BUF(4);
965 READ32(open_conf->oc_seqid); 964 open_conf->oc_seqid = be32_to_cpup(p++);
966 965
967 DECODE_TAIL; 966 DECODE_TAIL;
968} 967}
@@ -976,7 +975,7 @@ nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_d
976 if (status) 975 if (status)
977 return status; 976 return status;
978 READ_BUF(4); 977 READ_BUF(4);
979 READ32(open_down->od_seqid); 978 open_down->od_seqid = be32_to_cpup(p++);
980 status = nfsd4_decode_share_access(argp, &open_down->od_share_access, 979 status = nfsd4_decode_share_access(argp, &open_down->od_share_access,
981 &open_down->od_deleg_want, NULL); 980 &open_down->od_deleg_want, NULL);
982 if (status) 981 if (status)
@@ -993,7 +992,7 @@ nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, struct nfsd4_putfh *putfh)
993 DECODE_HEAD; 992 DECODE_HEAD;
994 993
995 READ_BUF(4); 994 READ_BUF(4);
996 READ32(putfh->pf_fhlen); 995 putfh->pf_fhlen = be32_to_cpup(p++);
997 if (putfh->pf_fhlen > NFS4_FHSIZE) 996 if (putfh->pf_fhlen > NFS4_FHSIZE)
998 goto xdr_error; 997 goto xdr_error;
999 READ_BUF(putfh->pf_fhlen); 998 READ_BUF(putfh->pf_fhlen);
@@ -1020,7 +1019,7 @@ nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read)
1020 return status; 1019 return status;
1021 READ_BUF(12); 1020 READ_BUF(12);
1022 READ64(read->rd_offset); 1021 READ64(read->rd_offset);
1023 READ32(read->rd_length); 1022 read->rd_length = be32_to_cpup(p++);
1024 1023
1025 DECODE_TAIL; 1024 DECODE_TAIL;
1026} 1025}
@@ -1033,8 +1032,8 @@ nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, struct nfsd4_readdir *read
1033 READ_BUF(24); 1032 READ_BUF(24);
1034 READ64(readdir->rd_cookie); 1033 READ64(readdir->rd_cookie);
1035 COPYMEM(readdir->rd_verf.data, sizeof(readdir->rd_verf.data)); 1034 COPYMEM(readdir->rd_verf.data, sizeof(readdir->rd_verf.data));
1036 READ32(readdir->rd_dircount); 1035 readdir->rd_dircount = be32_to_cpup(p++);
1037 READ32(readdir->rd_maxcount); 1036 readdir->rd_maxcount = be32_to_cpup(p++);
1038 if ((status = nfsd4_decode_bitmap(argp, readdir->rd_bmval))) 1037 if ((status = nfsd4_decode_bitmap(argp, readdir->rd_bmval)))
1039 goto out; 1038 goto out;
1040 1039
@@ -1047,7 +1046,7 @@ nfsd4_decode_remove(struct nfsd4_compoundargs *argp, struct nfsd4_remove *remove
1047 DECODE_HEAD; 1046 DECODE_HEAD;
1048 1047
1049 READ_BUF(4); 1048 READ_BUF(4);
1050 READ32(remove->rm_namelen); 1049 remove->rm_namelen = be32_to_cpup(p++);
1051 READ_BUF(remove->rm_namelen); 1050 READ_BUF(remove->rm_namelen);
1052 SAVEMEM(remove->rm_name, remove->rm_namelen); 1051 SAVEMEM(remove->rm_name, remove->rm_namelen);
1053 if ((status = check_filename(remove->rm_name, remove->rm_namelen))) 1052 if ((status = check_filename(remove->rm_name, remove->rm_namelen)))
@@ -1062,10 +1061,10 @@ nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename
1062 DECODE_HEAD; 1061 DECODE_HEAD;
1063 1062
1064 READ_BUF(4); 1063 READ_BUF(4);
1065 READ32(rename->rn_snamelen); 1064 rename->rn_snamelen = be32_to_cpup(p++);
1066 READ_BUF(rename->rn_snamelen + 4); 1065 READ_BUF(rename->rn_snamelen + 4);
1067 SAVEMEM(rename->rn_sname, rename->rn_snamelen); 1066 SAVEMEM(rename->rn_sname, rename->rn_snamelen);
1068 READ32(rename->rn_tnamelen); 1067 rename->rn_tnamelen = be32_to_cpup(p++);
1069 READ_BUF(rename->rn_tnamelen); 1068 READ_BUF(rename->rn_tnamelen);
1070 SAVEMEM(rename->rn_tname, rename->rn_tnamelen); 1069 SAVEMEM(rename->rn_tname, rename->rn_tnamelen);
1071 if ((status = check_filename(rename->rn_sname, rename->rn_snamelen))) 1070 if ((status = check_filename(rename->rn_sname, rename->rn_snamelen)))
@@ -1097,7 +1096,7 @@ nfsd4_decode_secinfo(struct nfsd4_compoundargs *argp,
1097 DECODE_HEAD; 1096 DECODE_HEAD;
1098 1097
1099 READ_BUF(4); 1098 READ_BUF(4);
1100 READ32(secinfo->si_namelen); 1099 secinfo->si_namelen = be32_to_cpup(p++);
1101 READ_BUF(secinfo->si_namelen); 1100 READ_BUF(secinfo->si_namelen);
1102 SAVEMEM(secinfo->si_name, secinfo->si_namelen); 1101 SAVEMEM(secinfo->si_name, secinfo->si_namelen);
1103 status = check_filename(secinfo->si_name, secinfo->si_namelen); 1102 status = check_filename(secinfo->si_name, secinfo->si_namelen);
@@ -1113,7 +1112,7 @@ nfsd4_decode_secinfo_no_name(struct nfsd4_compoundargs *argp,
1113 DECODE_HEAD; 1112 DECODE_HEAD;
1114 1113
1115 READ_BUF(4); 1114 READ_BUF(4);
1116 READ32(sin->sin_style); 1115 sin->sin_style = be32_to_cpup(p++);
1117 DECODE_TAIL; 1116 DECODE_TAIL;
1118} 1117}
1119 1118
@@ -1144,16 +1143,16 @@ nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclient
1144 if (status) 1143 if (status)
1145 return nfserr_bad_xdr; 1144 return nfserr_bad_xdr;
1146 READ_BUF(8); 1145 READ_BUF(8);
1147 READ32(setclientid->se_callback_prog); 1146 setclientid->se_callback_prog = be32_to_cpup(p++);
1148 READ32(setclientid->se_callback_netid_len); 1147 setclientid->se_callback_netid_len = be32_to_cpup(p++);
1149 1148
1150 READ_BUF(setclientid->se_callback_netid_len + 4); 1149 READ_BUF(setclientid->se_callback_netid_len + 4);
1151 SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len); 1150 SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len);
1152 READ32(setclientid->se_callback_addr_len); 1151 setclientid->se_callback_addr_len = be32_to_cpup(p++);
1153 1152
1154 READ_BUF(setclientid->se_callback_addr_len + 4); 1153 READ_BUF(setclientid->se_callback_addr_len + 4);
1155 SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len); 1154 SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len);
1156 READ32(setclientid->se_callback_ident); 1155 setclientid->se_callback_ident = be32_to_cpup(p++);
1157 1156
1158 DECODE_TAIL; 1157 DECODE_TAIL;
1159} 1158}
@@ -1186,7 +1185,7 @@ nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify
1186 * nfsd4_proc_verify */ 1185 * nfsd4_proc_verify */
1187 1186
1188 READ_BUF(4); 1187 READ_BUF(4);
1189 READ32(verify->ve_attrlen); 1188 verify->ve_attrlen = be32_to_cpup(p++);
1190 READ_BUF(verify->ve_attrlen); 1189 READ_BUF(verify->ve_attrlen);
1191 SAVEMEM(verify->ve_attrval, verify->ve_attrlen); 1190 SAVEMEM(verify->ve_attrval, verify->ve_attrlen);
1192 1191
@@ -1205,10 +1204,10 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write)
1205 return status; 1204 return status;
1206 READ_BUF(16); 1205 READ_BUF(16);
1207 READ64(write->wr_offset); 1206 READ64(write->wr_offset);
1208 READ32(write->wr_stable_how); 1207 write->wr_stable_how = be32_to_cpup(p++);
1209 if (write->wr_stable_how > 2) 1208 if (write->wr_stable_how > 2)
1210 goto xdr_error; 1209 goto xdr_error;
1211 READ32(write->wr_buflen); 1210 write->wr_buflen = be32_to_cpup(p++);
1212 1211
1213 /* Sorry .. no magic macros for this.. * 1212 /* Sorry .. no magic macros for this.. *
1214 * READ_BUF(write->wr_buflen); 1213 * READ_BUF(write->wr_buflen);
@@ -1254,7 +1253,7 @@ nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_rel
1254 1253
1255 READ_BUF(12); 1254 READ_BUF(12);
1256 COPYMEM(&rlockowner->rl_clientid, sizeof(clientid_t)); 1255 COPYMEM(&rlockowner->rl_clientid, sizeof(clientid_t));
1257 READ32(rlockowner->rl_owner.len); 1256 rlockowner->rl_owner.len = be32_to_cpup(p++);
1258 READ_BUF(rlockowner->rl_owner.len); 1257 READ_BUF(rlockowner->rl_owner.len);
1259 READMEM(rlockowner->rl_owner.data, rlockowner->rl_owner.len); 1258 READMEM(rlockowner->rl_owner.data, rlockowner->rl_owner.len);
1260 1259
@@ -1278,63 +1277,63 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
1278 return nfserr_bad_xdr; 1277 return nfserr_bad_xdr;
1279 1278
1280 READ_BUF(4); 1279 READ_BUF(4);
1281 READ32(exid->flags); 1280 exid->flags = be32_to_cpup(p++);
1282 1281
1283 /* Ignore state_protect4_a */ 1282 /* Ignore state_protect4_a */
1284 READ_BUF(4); 1283 READ_BUF(4);
1285 READ32(exid->spa_how); 1284 exid->spa_how = be32_to_cpup(p++);
1286 switch (exid->spa_how) { 1285 switch (exid->spa_how) {
1287 case SP4_NONE: 1286 case SP4_NONE:
1288 break; 1287 break;
1289 case SP4_MACH_CRED: 1288 case SP4_MACH_CRED:
1290 /* spo_must_enforce */ 1289 /* spo_must_enforce */
1291 READ_BUF(4); 1290 READ_BUF(4);
1292 READ32(dummy); 1291 dummy = be32_to_cpup(p++);
1293 READ_BUF(dummy * 4); 1292 READ_BUF(dummy * 4);
1294 p += dummy; 1293 p += dummy;
1295 1294
1296 /* spo_must_allow */ 1295 /* spo_must_allow */
1297 READ_BUF(4); 1296 READ_BUF(4);
1298 READ32(dummy); 1297 dummy = be32_to_cpup(p++);
1299 READ_BUF(dummy * 4); 1298 READ_BUF(dummy * 4);
1300 p += dummy; 1299 p += dummy;
1301 break; 1300 break;
1302 case SP4_SSV: 1301 case SP4_SSV:
1303 /* ssp_ops */ 1302 /* ssp_ops */
1304 READ_BUF(4); 1303 READ_BUF(4);
1305 READ32(dummy); 1304 dummy = be32_to_cpup(p++);
1306 READ_BUF(dummy * 4); 1305 READ_BUF(dummy * 4);
1307 p += dummy; 1306 p += dummy;
1308 1307
1309 READ_BUF(4); 1308 READ_BUF(4);
1310 READ32(dummy); 1309 dummy = be32_to_cpup(p++);
1311 READ_BUF(dummy * 4); 1310 READ_BUF(dummy * 4);
1312 p += dummy; 1311 p += dummy;
1313 1312
1314 /* ssp_hash_algs<> */ 1313 /* ssp_hash_algs<> */
1315 READ_BUF(4); 1314 READ_BUF(4);
1316 READ32(tmp); 1315 tmp = be32_to_cpup(p++);
1317 while (tmp--) { 1316 while (tmp--) {
1318 READ_BUF(4); 1317 READ_BUF(4);
1319 READ32(dummy); 1318 dummy = be32_to_cpup(p++);
1320 READ_BUF(dummy); 1319 READ_BUF(dummy);
1321 p += XDR_QUADLEN(dummy); 1320 p += XDR_QUADLEN(dummy);
1322 } 1321 }
1323 1322
1324 /* ssp_encr_algs<> */ 1323 /* ssp_encr_algs<> */
1325 READ_BUF(4); 1324 READ_BUF(4);
1326 READ32(tmp); 1325 tmp = be32_to_cpup(p++);
1327 while (tmp--) { 1326 while (tmp--) {
1328 READ_BUF(4); 1327 READ_BUF(4);
1329 READ32(dummy); 1328 dummy = be32_to_cpup(p++);
1330 READ_BUF(dummy); 1329 READ_BUF(dummy);
1331 p += XDR_QUADLEN(dummy); 1330 p += XDR_QUADLEN(dummy);
1332 } 1331 }
1333 1332
1334 /* ssp_window and ssp_num_gss_handles */ 1333 /* ssp_window and ssp_num_gss_handles */
1335 READ_BUF(8); 1334 READ_BUF(8);
1336 READ32(dummy); 1335 dummy = be32_to_cpup(p++);
1337 READ32(dummy); 1336 dummy = be32_to_cpup(p++);
1338 break; 1337 break;
1339 default: 1338 default:
1340 goto xdr_error; 1339 goto xdr_error;
@@ -1342,7 +1341,7 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
1342 1341
1343 /* Ignore Implementation ID */ 1342 /* Ignore Implementation ID */
1344 READ_BUF(4); /* nfs_impl_id4 array length */ 1343 READ_BUF(4); /* nfs_impl_id4 array length */
1345 READ32(dummy); 1344 dummy = be32_to_cpup(p++);
1346 1345
1347 if (dummy > 1) 1346 if (dummy > 1)
1348 goto xdr_error; 1347 goto xdr_error;
@@ -1350,13 +1349,13 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
1350 if (dummy == 1) { 1349 if (dummy == 1) {
1351 /* nii_domain */ 1350 /* nii_domain */
1352 READ_BUF(4); 1351 READ_BUF(4);
1353 READ32(dummy); 1352 dummy = be32_to_cpup(p++);
1354 READ_BUF(dummy); 1353 READ_BUF(dummy);
1355 p += XDR_QUADLEN(dummy); 1354 p += XDR_QUADLEN(dummy);
1356 1355
1357 /* nii_name */ 1356 /* nii_name */
1358 READ_BUF(4); 1357 READ_BUF(4);
1359 READ32(dummy); 1358 dummy = be32_to_cpup(p++);
1360 READ_BUF(dummy); 1359 READ_BUF(dummy);
1361 p += XDR_QUADLEN(dummy); 1360 p += XDR_QUADLEN(dummy);
1362 1361
@@ -1376,21 +1375,21 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,
1376 1375
1377 READ_BUF(16); 1376 READ_BUF(16);
1378 COPYMEM(&sess->clientid, 8); 1377 COPYMEM(&sess->clientid, 8);
1379 READ32(sess->seqid); 1378 sess->seqid = be32_to_cpup(p++);
1380 READ32(sess->flags); 1379 sess->flags = be32_to_cpup(p++);
1381 1380
1382 /* Fore channel attrs */ 1381 /* Fore channel attrs */
1383 READ_BUF(28); 1382 READ_BUF(28);
1384 READ32(dummy); /* headerpadsz is always 0 */ 1383 dummy = be32_to_cpup(p++); /* headerpadsz is always 0 */
1385 READ32(sess->fore_channel.maxreq_sz); 1384 sess->fore_channel.maxreq_sz = be32_to_cpup(p++);
1386 READ32(sess->fore_channel.maxresp_sz); 1385 sess->fore_channel.maxresp_sz = be32_to_cpup(p++);
1387 READ32(sess->fore_channel.maxresp_cached); 1386 sess->fore_channel.maxresp_cached = be32_to_cpup(p++);
1388 READ32(sess->fore_channel.maxops); 1387 sess->fore_channel.maxops = be32_to_cpup(p++);
1389 READ32(sess->fore_channel.maxreqs); 1388 sess->fore_channel.maxreqs = be32_to_cpup(p++);
1390 READ32(sess->fore_channel.nr_rdma_attrs); 1389 sess->fore_channel.nr_rdma_attrs = be32_to_cpup(p++);
1391 if (sess->fore_channel.nr_rdma_attrs == 1) { 1390 if (sess->fore_channel.nr_rdma_attrs == 1) {
1392 READ_BUF(4); 1391 READ_BUF(4);
1393 READ32(sess->fore_channel.rdma_attrs); 1392 sess->fore_channel.rdma_attrs = be32_to_cpup(p++);
1394 } else if (sess->fore_channel.nr_rdma_attrs > 1) { 1393 } else if (sess->fore_channel.nr_rdma_attrs > 1) {
1395 dprintk("Too many fore channel attr bitmaps!\n"); 1394 dprintk("Too many fore channel attr bitmaps!\n");
1396 goto xdr_error; 1395 goto xdr_error;
@@ -1398,23 +1397,23 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp,
1398 1397
1399 /* Back channel attrs */ 1398 /* Back channel attrs */
1400 READ_BUF(28); 1399 READ_BUF(28);
1401 READ32(dummy); /* headerpadsz is always 0 */ 1400 dummy = be32_to_cpup(p++); /* headerpadsz is always 0 */
1402 READ32(sess->back_channel.maxreq_sz); 1401 sess->back_channel.maxreq_sz = be32_to_cpup(p++);
1403 READ32(sess->back_channel.maxresp_sz); 1402 sess->back_channel.maxresp_sz = be32_to_cpup(p++);
1404 READ32(sess->back_channel.maxresp_cached); 1403 sess->back_channel.maxresp_cached = be32_to_cpup(p++);
1405 READ32(sess->back_channel.maxops); 1404 sess->back_channel.maxops = be32_to_cpup(p++);
1406 READ32(sess->back_channel.maxreqs); 1405 sess->back_channel.maxreqs = be32_to_cpup(p++);
1407 READ32(sess->back_channel.nr_rdma_attrs); 1406 sess->back_channel.nr_rdma_attrs = be32_to_cpup(p++);
1408 if (sess->back_channel.nr_rdma_attrs == 1) { 1407 if (sess->back_channel.nr_rdma_attrs == 1) {
1409 READ_BUF(4); 1408 READ_BUF(4);
1410 READ32(sess->back_channel.rdma_attrs); 1409 sess->back_channel.rdma_attrs = be32_to_cpup(p++);
1411 } else if (sess->back_channel.nr_rdma_attrs > 1) { 1410 } else if (sess->back_channel.nr_rdma_attrs > 1) {
1412 dprintk("Too many back channel attr bitmaps!\n"); 1411 dprintk("Too many back channel attr bitmaps!\n");
1413 goto xdr_error; 1412 goto xdr_error;
1414 } 1413 }
1415 1414
1416 READ_BUF(4); 1415 READ_BUF(4);
1417 READ32(sess->callback_prog); 1416 sess->callback_prog = be32_to_cpup(p++);
1418 nfsd4_decode_cb_sec(argp, &sess->cb_sec); 1417 nfsd4_decode_cb_sec(argp, &sess->cb_sec);
1419 DECODE_TAIL; 1418 DECODE_TAIL;
1420} 1419}
@@ -1437,7 +1436,7 @@ nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp,
1437 DECODE_HEAD; 1436 DECODE_HEAD;
1438 1437
1439 READ_BUF(sizeof(stateid_t)); 1438 READ_BUF(sizeof(stateid_t));
1440 READ32(free_stateid->fr_stateid.si_generation); 1439 free_stateid->fr_stateid.si_generation = be32_to_cpup(p++);
1441 COPYMEM(&free_stateid->fr_stateid.si_opaque, sizeof(stateid_opaque_t)); 1440 COPYMEM(&free_stateid->fr_stateid.si_opaque, sizeof(stateid_opaque_t));
1442 1441
1443 DECODE_TAIL; 1442 DECODE_TAIL;
@@ -1451,10 +1450,10 @@ nfsd4_decode_sequence(struct nfsd4_compoundargs *argp,
1451 1450
1452 READ_BUF(NFS4_MAX_SESSIONID_LEN + 16); 1451 READ_BUF(NFS4_MAX_SESSIONID_LEN + 16);
1453 COPYMEM(seq->sessionid.data, NFS4_MAX_SESSIONID_LEN); 1452 COPYMEM(seq->sessionid.data, NFS4_MAX_SESSIONID_LEN);
1454 READ32(seq->seqid); 1453 seq->seqid = be32_to_cpup(p++);
1455 READ32(seq->slotid); 1454 seq->slotid = be32_to_cpup(p++);
1456 READ32(seq->maxslots); 1455 seq->maxslots = be32_to_cpup(p++);
1457 READ32(seq->cachethis); 1456 seq->cachethis = be32_to_cpup(p++);
1458 1457
1459 DECODE_TAIL; 1458 DECODE_TAIL;
1460} 1459}
@@ -1511,7 +1510,7 @@ static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, str
1511 DECODE_HEAD; 1510 DECODE_HEAD;
1512 1511
1513 READ_BUF(4); 1512 READ_BUF(4);
1514 READ32(rc->rca_one_fs); 1513 rc->rca_one_fs = be32_to_cpup(p++);
1515 1514
1516 DECODE_TAIL; 1515 DECODE_TAIL;
1517} 1516}
@@ -1618,11 +1617,11 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
1618 int i; 1617 int i;
1619 1618
1620 READ_BUF(4); 1619 READ_BUF(4);
1621 READ32(argp->taglen); 1620 argp->taglen = be32_to_cpup(p++);
1622 READ_BUF(argp->taglen + 8); 1621 READ_BUF(argp->taglen + 8);
1623 SAVEMEM(argp->tag, argp->taglen); 1622 SAVEMEM(argp->tag, argp->taglen);
1624 READ32(argp->minorversion); 1623 argp->minorversion = be32_to_cpup(p++);
1625 READ32(argp->opcnt); 1624 argp->opcnt = be32_to_cpup(p++);
1626 max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2); 1625 max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2);
1627 1626
1628 if (argp->taglen > NFSD4_MAX_TAGLEN) 1627 if (argp->taglen > NFSD4_MAX_TAGLEN)
@@ -1647,7 +1646,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
1647 op->replay = NULL; 1646 op->replay = NULL;
1648 1647
1649 READ_BUF(4); 1648 READ_BUF(4);
1650 READ32(op->opnum); 1649 op->opnum = be32_to_cpup(p++);
1651 1650
1652 if (nfsd4_opnum_in_range(argp, op)) 1651 if (nfsd4_opnum_in_range(argp, op))
1653 op->status = nfsd4_dec_ops[op->opnum](argp, &op->u); 1652 op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);