diff options
author | J. Bruce Fields <bfields@redhat.com> | 2014-06-02 12:32:51 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-06-06 19:22:47 -0400 |
commit | 06553991e7757c668efb3bce9dcc740f31aead60 (patch) | |
tree | e91f6074262f6b14b3dfef6a45524884830222e0 | |
parent | 05638dc73af2586517468b1159d4b76e90607359 (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.c | 255 |
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); |