aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/nfs4xdr.c242
1 files changed, 232 insertions, 10 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 19ca0b519a1d..5b944cd57218 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -244,43 +244,63 @@ static int nfs4_stat_to_errno(int);
244 (encode_getattr_maxsz) 244 (encode_getattr_maxsz)
245#define decode_fs_locations_maxsz \ 245#define decode_fs_locations_maxsz \
246 (0) 246 (0)
247
248#if defined(CONFIG_NFS_V4_1)
249#define encode_sequence_maxsz 0 /* stub */
250#define decode_sequence_maxsz 0 /* stub */
251#else /* CONFIG_NFS_V4_1 */
252#define encode_sequence_maxsz 0
253#define decode_sequence_maxsz 0
254#endif /* CONFIG_NFS_V4_1 */
255
247#define NFS4_enc_compound_sz (1024) /* XXX: large enough? */ 256#define NFS4_enc_compound_sz (1024) /* XXX: large enough? */
248#define NFS4_dec_compound_sz (1024) /* XXX: large enough? */ 257#define NFS4_dec_compound_sz (1024) /* XXX: large enough? */
249#define NFS4_enc_read_sz (compound_encode_hdr_maxsz + \ 258#define NFS4_enc_read_sz (compound_encode_hdr_maxsz + \
259 encode_sequence_maxsz + \
250 encode_putfh_maxsz + \ 260 encode_putfh_maxsz + \
251 encode_read_maxsz) 261 encode_read_maxsz)
252#define NFS4_dec_read_sz (compound_decode_hdr_maxsz + \ 262#define NFS4_dec_read_sz (compound_decode_hdr_maxsz + \
263 decode_sequence_maxsz + \
253 decode_putfh_maxsz + \ 264 decode_putfh_maxsz + \
254 decode_read_maxsz) 265 decode_read_maxsz)
255#define NFS4_enc_readlink_sz (compound_encode_hdr_maxsz + \ 266#define NFS4_enc_readlink_sz (compound_encode_hdr_maxsz + \
267 encode_sequence_maxsz + \
256 encode_putfh_maxsz + \ 268 encode_putfh_maxsz + \
257 encode_readlink_maxsz) 269 encode_readlink_maxsz)
258#define NFS4_dec_readlink_sz (compound_decode_hdr_maxsz + \ 270#define NFS4_dec_readlink_sz (compound_decode_hdr_maxsz + \
271 decode_sequence_maxsz + \
259 decode_putfh_maxsz + \ 272 decode_putfh_maxsz + \
260 decode_readlink_maxsz) 273 decode_readlink_maxsz)
261#define NFS4_enc_readdir_sz (compound_encode_hdr_maxsz + \ 274#define NFS4_enc_readdir_sz (compound_encode_hdr_maxsz + \
275 encode_sequence_maxsz + \
262 encode_putfh_maxsz + \ 276 encode_putfh_maxsz + \
263 encode_readdir_maxsz) 277 encode_readdir_maxsz)
264#define NFS4_dec_readdir_sz (compound_decode_hdr_maxsz + \ 278#define NFS4_dec_readdir_sz (compound_decode_hdr_maxsz + \
279 decode_sequence_maxsz + \
265 decode_putfh_maxsz + \ 280 decode_putfh_maxsz + \
266 decode_readdir_maxsz) 281 decode_readdir_maxsz)
267#define NFS4_enc_write_sz (compound_encode_hdr_maxsz + \ 282#define NFS4_enc_write_sz (compound_encode_hdr_maxsz + \
283 encode_sequence_maxsz + \
268 encode_putfh_maxsz + \ 284 encode_putfh_maxsz + \
269 encode_write_maxsz + \ 285 encode_write_maxsz + \
270 encode_getattr_maxsz) 286 encode_getattr_maxsz)
271#define NFS4_dec_write_sz (compound_decode_hdr_maxsz + \ 287#define NFS4_dec_write_sz (compound_decode_hdr_maxsz + \
288 decode_sequence_maxsz + \
272 decode_putfh_maxsz + \ 289 decode_putfh_maxsz + \
273 decode_write_maxsz + \ 290 decode_write_maxsz + \
274 decode_getattr_maxsz) 291 decode_getattr_maxsz)
275#define NFS4_enc_commit_sz (compound_encode_hdr_maxsz + \ 292#define NFS4_enc_commit_sz (compound_encode_hdr_maxsz + \
293 encode_sequence_maxsz + \
276 encode_putfh_maxsz + \ 294 encode_putfh_maxsz + \
277 encode_commit_maxsz + \ 295 encode_commit_maxsz + \
278 encode_getattr_maxsz) 296 encode_getattr_maxsz)
279#define NFS4_dec_commit_sz (compound_decode_hdr_maxsz + \ 297#define NFS4_dec_commit_sz (compound_decode_hdr_maxsz + \
298 decode_sequence_maxsz + \
280 decode_putfh_maxsz + \ 299 decode_putfh_maxsz + \
281 decode_commit_maxsz + \ 300 decode_commit_maxsz + \
282 decode_getattr_maxsz) 301 decode_getattr_maxsz)
283#define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \ 302#define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \
303 encode_sequence_maxsz + \
284 encode_putfh_maxsz + \ 304 encode_putfh_maxsz + \
285 encode_savefh_maxsz + \ 305 encode_savefh_maxsz + \
286 encode_open_maxsz + \ 306 encode_open_maxsz + \
@@ -289,6 +309,7 @@ static int nfs4_stat_to_errno(int);
289 encode_restorefh_maxsz + \ 309 encode_restorefh_maxsz + \
290 encode_getattr_maxsz) 310 encode_getattr_maxsz)
291#define NFS4_dec_open_sz (compound_decode_hdr_maxsz + \ 311#define NFS4_dec_open_sz (compound_decode_hdr_maxsz + \
312 decode_sequence_maxsz + \
292 decode_putfh_maxsz + \ 313 decode_putfh_maxsz + \
293 decode_savefh_maxsz + \ 314 decode_savefh_maxsz + \
294 decode_open_maxsz + \ 315 decode_open_maxsz + \
@@ -305,43 +326,53 @@ static int nfs4_stat_to_errno(int);
305 decode_putfh_maxsz + \ 326 decode_putfh_maxsz + \
306 decode_open_confirm_maxsz) 327 decode_open_confirm_maxsz)
307#define NFS4_enc_open_noattr_sz (compound_encode_hdr_maxsz + \ 328#define NFS4_enc_open_noattr_sz (compound_encode_hdr_maxsz + \
329 encode_sequence_maxsz + \
308 encode_putfh_maxsz + \ 330 encode_putfh_maxsz + \
309 encode_open_maxsz + \ 331 encode_open_maxsz + \
310 encode_getattr_maxsz) 332 encode_getattr_maxsz)
311#define NFS4_dec_open_noattr_sz (compound_decode_hdr_maxsz + \ 333#define NFS4_dec_open_noattr_sz (compound_decode_hdr_maxsz + \
334 decode_sequence_maxsz + \
312 decode_putfh_maxsz + \ 335 decode_putfh_maxsz + \
313 decode_open_maxsz + \ 336 decode_open_maxsz + \
314 decode_getattr_maxsz) 337 decode_getattr_maxsz)
315#define NFS4_enc_open_downgrade_sz \ 338#define NFS4_enc_open_downgrade_sz \
316 (compound_encode_hdr_maxsz + \ 339 (compound_encode_hdr_maxsz + \
340 encode_sequence_maxsz + \
317 encode_putfh_maxsz + \ 341 encode_putfh_maxsz + \
318 encode_open_downgrade_maxsz + \ 342 encode_open_downgrade_maxsz + \
319 encode_getattr_maxsz) 343 encode_getattr_maxsz)
320#define NFS4_dec_open_downgrade_sz \ 344#define NFS4_dec_open_downgrade_sz \
321 (compound_decode_hdr_maxsz + \ 345 (compound_decode_hdr_maxsz + \
346 decode_sequence_maxsz + \
322 decode_putfh_maxsz + \ 347 decode_putfh_maxsz + \
323 decode_open_downgrade_maxsz + \ 348 decode_open_downgrade_maxsz + \
324 decode_getattr_maxsz) 349 decode_getattr_maxsz)
325#define NFS4_enc_close_sz (compound_encode_hdr_maxsz + \ 350#define NFS4_enc_close_sz (compound_encode_hdr_maxsz + \
351 encode_sequence_maxsz + \
326 encode_putfh_maxsz + \ 352 encode_putfh_maxsz + \
327 encode_close_maxsz + \ 353 encode_close_maxsz + \
328 encode_getattr_maxsz) 354 encode_getattr_maxsz)
329#define NFS4_dec_close_sz (compound_decode_hdr_maxsz + \ 355#define NFS4_dec_close_sz (compound_decode_hdr_maxsz + \
356 decode_sequence_maxsz + \
330 decode_putfh_maxsz + \ 357 decode_putfh_maxsz + \
331 decode_close_maxsz + \ 358 decode_close_maxsz + \
332 decode_getattr_maxsz) 359 decode_getattr_maxsz)
333#define NFS4_enc_setattr_sz (compound_encode_hdr_maxsz + \ 360#define NFS4_enc_setattr_sz (compound_encode_hdr_maxsz + \
361 encode_sequence_maxsz + \
334 encode_putfh_maxsz + \ 362 encode_putfh_maxsz + \
335 encode_setattr_maxsz + \ 363 encode_setattr_maxsz + \
336 encode_getattr_maxsz) 364 encode_getattr_maxsz)
337#define NFS4_dec_setattr_sz (compound_decode_hdr_maxsz + \ 365#define NFS4_dec_setattr_sz (compound_decode_hdr_maxsz + \
366 decode_sequence_maxsz + \
338 decode_putfh_maxsz + \ 367 decode_putfh_maxsz + \
339 decode_setattr_maxsz + \ 368 decode_setattr_maxsz + \
340 decode_getattr_maxsz) 369 decode_getattr_maxsz)
341#define NFS4_enc_fsinfo_sz (compound_encode_hdr_maxsz + \ 370#define NFS4_enc_fsinfo_sz (compound_encode_hdr_maxsz + \
371 encode_sequence_maxsz + \
342 encode_putfh_maxsz + \ 372 encode_putfh_maxsz + \
343 encode_fsinfo_maxsz) 373 encode_fsinfo_maxsz)
344#define NFS4_dec_fsinfo_sz (compound_decode_hdr_maxsz + \ 374#define NFS4_dec_fsinfo_sz (compound_decode_hdr_maxsz + \
375 decode_sequence_maxsz + \
345 decode_putfh_maxsz + \ 376 decode_putfh_maxsz + \
346 decode_fsinfo_maxsz) 377 decode_fsinfo_maxsz)
347#define NFS4_enc_renew_sz (compound_encode_hdr_maxsz + \ 378#define NFS4_enc_renew_sz (compound_encode_hdr_maxsz + \
@@ -363,64 +394,81 @@ static int nfs4_stat_to_errno(int);
363 decode_putrootfh_maxsz + \ 394 decode_putrootfh_maxsz + \
364 decode_fsinfo_maxsz) 395 decode_fsinfo_maxsz)
365#define NFS4_enc_lock_sz (compound_encode_hdr_maxsz + \ 396#define NFS4_enc_lock_sz (compound_encode_hdr_maxsz + \
397 encode_sequence_maxsz + \
366 encode_putfh_maxsz + \ 398 encode_putfh_maxsz + \
367 encode_lock_maxsz) 399 encode_lock_maxsz)
368#define NFS4_dec_lock_sz (compound_decode_hdr_maxsz + \ 400#define NFS4_dec_lock_sz (compound_decode_hdr_maxsz + \
401 decode_sequence_maxsz + \
369 decode_putfh_maxsz + \ 402 decode_putfh_maxsz + \
370 decode_lock_maxsz) 403 decode_lock_maxsz)
371#define NFS4_enc_lockt_sz (compound_encode_hdr_maxsz + \ 404#define NFS4_enc_lockt_sz (compound_encode_hdr_maxsz + \
405 encode_sequence_maxsz + \
372 encode_putfh_maxsz + \ 406 encode_putfh_maxsz + \
373 encode_lockt_maxsz) 407 encode_lockt_maxsz)
374#define NFS4_dec_lockt_sz (compound_decode_hdr_maxsz + \ 408#define NFS4_dec_lockt_sz (compound_decode_hdr_maxsz + \
409 decode_sequence_maxsz + \
375 decode_putfh_maxsz + \ 410 decode_putfh_maxsz + \
376 decode_lockt_maxsz) 411 decode_lockt_maxsz)
377#define NFS4_enc_locku_sz (compound_encode_hdr_maxsz + \ 412#define NFS4_enc_locku_sz (compound_encode_hdr_maxsz + \
413 encode_sequence_maxsz + \
378 encode_putfh_maxsz + \ 414 encode_putfh_maxsz + \
379 encode_locku_maxsz) 415 encode_locku_maxsz)
380#define NFS4_dec_locku_sz (compound_decode_hdr_maxsz + \ 416#define NFS4_dec_locku_sz (compound_decode_hdr_maxsz + \
417 decode_sequence_maxsz + \
381 decode_putfh_maxsz + \ 418 decode_putfh_maxsz + \
382 decode_locku_maxsz) 419 decode_locku_maxsz)
383#define NFS4_enc_access_sz (compound_encode_hdr_maxsz + \ 420#define NFS4_enc_access_sz (compound_encode_hdr_maxsz + \
421 encode_sequence_maxsz + \
384 encode_putfh_maxsz + \ 422 encode_putfh_maxsz + \
385 encode_access_maxsz + \ 423 encode_access_maxsz + \
386 encode_getattr_maxsz) 424 encode_getattr_maxsz)
387#define NFS4_dec_access_sz (compound_decode_hdr_maxsz + \ 425#define NFS4_dec_access_sz (compound_decode_hdr_maxsz + \
426 decode_sequence_maxsz + \
388 decode_putfh_maxsz + \ 427 decode_putfh_maxsz + \
389 decode_access_maxsz + \ 428 decode_access_maxsz + \
390 decode_getattr_maxsz) 429 decode_getattr_maxsz)
391#define NFS4_enc_getattr_sz (compound_encode_hdr_maxsz + \ 430#define NFS4_enc_getattr_sz (compound_encode_hdr_maxsz + \
431 encode_sequence_maxsz + \
392 encode_putfh_maxsz + \ 432 encode_putfh_maxsz + \
393 encode_getattr_maxsz) 433 encode_getattr_maxsz)
394#define NFS4_dec_getattr_sz (compound_decode_hdr_maxsz + \ 434#define NFS4_dec_getattr_sz (compound_decode_hdr_maxsz + \
435 decode_sequence_maxsz + \
395 decode_putfh_maxsz + \ 436 decode_putfh_maxsz + \
396 decode_getattr_maxsz) 437 decode_getattr_maxsz)
397#define NFS4_enc_lookup_sz (compound_encode_hdr_maxsz + \ 438#define NFS4_enc_lookup_sz (compound_encode_hdr_maxsz + \
439 encode_sequence_maxsz + \
398 encode_putfh_maxsz + \ 440 encode_putfh_maxsz + \
399 encode_lookup_maxsz + \ 441 encode_lookup_maxsz + \
400 encode_getattr_maxsz + \ 442 encode_getattr_maxsz + \
401 encode_getfh_maxsz) 443 encode_getfh_maxsz)
402#define NFS4_dec_lookup_sz (compound_decode_hdr_maxsz + \ 444#define NFS4_dec_lookup_sz (compound_decode_hdr_maxsz + \
445 decode_sequence_maxsz + \
403 decode_putfh_maxsz + \ 446 decode_putfh_maxsz + \
404 decode_lookup_maxsz + \ 447 decode_lookup_maxsz + \
405 decode_getattr_maxsz + \ 448 decode_getattr_maxsz + \
406 decode_getfh_maxsz) 449 decode_getfh_maxsz)
407#define NFS4_enc_lookup_root_sz (compound_encode_hdr_maxsz + \ 450#define NFS4_enc_lookup_root_sz (compound_encode_hdr_maxsz + \
451 encode_sequence_maxsz + \
408 encode_putrootfh_maxsz + \ 452 encode_putrootfh_maxsz + \
409 encode_getattr_maxsz + \ 453 encode_getattr_maxsz + \
410 encode_getfh_maxsz) 454 encode_getfh_maxsz)
411#define NFS4_dec_lookup_root_sz (compound_decode_hdr_maxsz + \ 455#define NFS4_dec_lookup_root_sz (compound_decode_hdr_maxsz + \
456 decode_sequence_maxsz + \
412 decode_putrootfh_maxsz + \ 457 decode_putrootfh_maxsz + \
413 decode_getattr_maxsz + \ 458 decode_getattr_maxsz + \
414 decode_getfh_maxsz) 459 decode_getfh_maxsz)
415#define NFS4_enc_remove_sz (compound_encode_hdr_maxsz + \ 460#define NFS4_enc_remove_sz (compound_encode_hdr_maxsz + \
461 encode_sequence_maxsz + \
416 encode_putfh_maxsz + \ 462 encode_putfh_maxsz + \
417 encode_remove_maxsz + \ 463 encode_remove_maxsz + \
418 encode_getattr_maxsz) 464 encode_getattr_maxsz)
419#define NFS4_dec_remove_sz (compound_decode_hdr_maxsz + \ 465#define NFS4_dec_remove_sz (compound_decode_hdr_maxsz + \
466 decode_sequence_maxsz + \
420 decode_putfh_maxsz + \ 467 decode_putfh_maxsz + \
421 decode_remove_maxsz + \ 468 decode_remove_maxsz + \
422 decode_getattr_maxsz) 469 decode_getattr_maxsz)
423#define NFS4_enc_rename_sz (compound_encode_hdr_maxsz + \ 470#define NFS4_enc_rename_sz (compound_encode_hdr_maxsz + \
471 encode_sequence_maxsz + \
424 encode_putfh_maxsz + \ 472 encode_putfh_maxsz + \
425 encode_savefh_maxsz + \ 473 encode_savefh_maxsz + \
426 encode_putfh_maxsz + \ 474 encode_putfh_maxsz + \
@@ -429,6 +477,7 @@ static int nfs4_stat_to_errno(int);
429 encode_restorefh_maxsz + \ 477 encode_restorefh_maxsz + \
430 encode_getattr_maxsz) 478 encode_getattr_maxsz)
431#define NFS4_dec_rename_sz (compound_decode_hdr_maxsz + \ 479#define NFS4_dec_rename_sz (compound_decode_hdr_maxsz + \
480 decode_sequence_maxsz + \
432 decode_putfh_maxsz + \ 481 decode_putfh_maxsz + \
433 decode_savefh_maxsz + \ 482 decode_savefh_maxsz + \
434 decode_putfh_maxsz + \ 483 decode_putfh_maxsz + \
@@ -437,6 +486,7 @@ static int nfs4_stat_to_errno(int);
437 decode_restorefh_maxsz + \ 486 decode_restorefh_maxsz + \
438 decode_getattr_maxsz) 487 decode_getattr_maxsz)
439#define NFS4_enc_link_sz (compound_encode_hdr_maxsz + \ 488#define NFS4_enc_link_sz (compound_encode_hdr_maxsz + \
489 encode_sequence_maxsz + \
440 encode_putfh_maxsz + \ 490 encode_putfh_maxsz + \
441 encode_savefh_maxsz + \ 491 encode_savefh_maxsz + \
442 encode_putfh_maxsz + \ 492 encode_putfh_maxsz + \
@@ -445,6 +495,7 @@ static int nfs4_stat_to_errno(int);
445 encode_restorefh_maxsz + \ 495 encode_restorefh_maxsz + \
446 decode_getattr_maxsz) 496 decode_getattr_maxsz)
447#define NFS4_dec_link_sz (compound_decode_hdr_maxsz + \ 497#define NFS4_dec_link_sz (compound_decode_hdr_maxsz + \
498 decode_sequence_maxsz + \
448 decode_putfh_maxsz + \ 499 decode_putfh_maxsz + \
449 decode_savefh_maxsz + \ 500 decode_savefh_maxsz + \
450 decode_putfh_maxsz + \ 501 decode_putfh_maxsz + \
@@ -453,16 +504,19 @@ static int nfs4_stat_to_errno(int);
453 decode_restorefh_maxsz + \ 504 decode_restorefh_maxsz + \
454 decode_getattr_maxsz) 505 decode_getattr_maxsz)
455#define NFS4_enc_symlink_sz (compound_encode_hdr_maxsz + \ 506#define NFS4_enc_symlink_sz (compound_encode_hdr_maxsz + \
507 encode_sequence_maxsz + \
456 encode_putfh_maxsz + \ 508 encode_putfh_maxsz + \
457 encode_symlink_maxsz + \ 509 encode_symlink_maxsz + \
458 encode_getattr_maxsz + \ 510 encode_getattr_maxsz + \
459 encode_getfh_maxsz) 511 encode_getfh_maxsz)
460#define NFS4_dec_symlink_sz (compound_decode_hdr_maxsz + \ 512#define NFS4_dec_symlink_sz (compound_decode_hdr_maxsz + \
513 decode_sequence_maxsz + \
461 decode_putfh_maxsz + \ 514 decode_putfh_maxsz + \
462 decode_symlink_maxsz + \ 515 decode_symlink_maxsz + \
463 decode_getattr_maxsz + \ 516 decode_getattr_maxsz + \
464 decode_getfh_maxsz) 517 decode_getfh_maxsz)
465#define NFS4_enc_create_sz (compound_encode_hdr_maxsz + \ 518#define NFS4_enc_create_sz (compound_encode_hdr_maxsz + \
519 encode_sequence_maxsz + \
466 encode_putfh_maxsz + \ 520 encode_putfh_maxsz + \
467 encode_savefh_maxsz + \ 521 encode_savefh_maxsz + \
468 encode_create_maxsz + \ 522 encode_create_maxsz + \
@@ -471,6 +525,7 @@ static int nfs4_stat_to_errno(int);
471 encode_restorefh_maxsz + \ 525 encode_restorefh_maxsz + \
472 encode_getattr_maxsz) 526 encode_getattr_maxsz)
473#define NFS4_dec_create_sz (compound_decode_hdr_maxsz + \ 527#define NFS4_dec_create_sz (compound_decode_hdr_maxsz + \
528 decode_sequence_maxsz + \
474 decode_putfh_maxsz + \ 529 decode_putfh_maxsz + \
475 decode_savefh_maxsz + \ 530 decode_savefh_maxsz + \
476 decode_create_maxsz + \ 531 decode_create_maxsz + \
@@ -479,49 +534,63 @@ static int nfs4_stat_to_errno(int);
479 decode_restorefh_maxsz + \ 534 decode_restorefh_maxsz + \
480 decode_getattr_maxsz) 535 decode_getattr_maxsz)
481#define NFS4_enc_pathconf_sz (compound_encode_hdr_maxsz + \ 536#define NFS4_enc_pathconf_sz (compound_encode_hdr_maxsz + \
537 encode_sequence_maxsz + \
482 encode_putfh_maxsz + \ 538 encode_putfh_maxsz + \
483 encode_getattr_maxsz) 539 encode_getattr_maxsz)
484#define NFS4_dec_pathconf_sz (compound_decode_hdr_maxsz + \ 540#define NFS4_dec_pathconf_sz (compound_decode_hdr_maxsz + \
541 decode_sequence_maxsz + \
485 decode_putfh_maxsz + \ 542 decode_putfh_maxsz + \
486 decode_getattr_maxsz) 543 decode_getattr_maxsz)
487#define NFS4_enc_statfs_sz (compound_encode_hdr_maxsz + \ 544#define NFS4_enc_statfs_sz (compound_encode_hdr_maxsz + \
545 encode_sequence_maxsz + \
488 encode_putfh_maxsz + \ 546 encode_putfh_maxsz + \
489 encode_statfs_maxsz) 547 encode_statfs_maxsz)
490#define NFS4_dec_statfs_sz (compound_decode_hdr_maxsz + \ 548#define NFS4_dec_statfs_sz (compound_decode_hdr_maxsz + \
549 decode_sequence_maxsz + \
491 decode_putfh_maxsz + \ 550 decode_putfh_maxsz + \
492 decode_statfs_maxsz) 551 decode_statfs_maxsz)
493#define NFS4_enc_server_caps_sz (compound_encode_hdr_maxsz + \ 552#define NFS4_enc_server_caps_sz (compound_encode_hdr_maxsz + \
553 encode_sequence_maxsz + \
494 encode_putfh_maxsz + \ 554 encode_putfh_maxsz + \
495 encode_getattr_maxsz) 555 encode_getattr_maxsz)
496#define NFS4_dec_server_caps_sz (compound_decode_hdr_maxsz + \ 556#define NFS4_dec_server_caps_sz (compound_decode_hdr_maxsz + \
557 decode_sequence_maxsz + \
497 decode_putfh_maxsz + \ 558 decode_putfh_maxsz + \
498 decode_getattr_maxsz) 559 decode_getattr_maxsz)
499#define NFS4_enc_delegreturn_sz (compound_encode_hdr_maxsz + \ 560#define NFS4_enc_delegreturn_sz (compound_encode_hdr_maxsz + \
561 encode_sequence_maxsz + \
500 encode_putfh_maxsz + \ 562 encode_putfh_maxsz + \
501 encode_delegreturn_maxsz + \ 563 encode_delegreturn_maxsz + \
502 encode_getattr_maxsz) 564 encode_getattr_maxsz)
503#define NFS4_dec_delegreturn_sz (compound_decode_hdr_maxsz + \ 565#define NFS4_dec_delegreturn_sz (compound_decode_hdr_maxsz + \
566 decode_sequence_maxsz + \
504 decode_delegreturn_maxsz + \ 567 decode_delegreturn_maxsz + \
505 decode_getattr_maxsz) 568 decode_getattr_maxsz)
506#define NFS4_enc_getacl_sz (compound_encode_hdr_maxsz + \ 569#define NFS4_enc_getacl_sz (compound_encode_hdr_maxsz + \
570 encode_sequence_maxsz + \
507 encode_putfh_maxsz + \ 571 encode_putfh_maxsz + \
508 encode_getacl_maxsz) 572 encode_getacl_maxsz)
509#define NFS4_dec_getacl_sz (compound_decode_hdr_maxsz + \ 573#define NFS4_dec_getacl_sz (compound_decode_hdr_maxsz + \
574 decode_sequence_maxsz + \
510 decode_putfh_maxsz + \ 575 decode_putfh_maxsz + \
511 decode_getacl_maxsz) 576 decode_getacl_maxsz)
512#define NFS4_enc_setacl_sz (compound_encode_hdr_maxsz + \ 577#define NFS4_enc_setacl_sz (compound_encode_hdr_maxsz + \
578 encode_sequence_maxsz + \
513 encode_putfh_maxsz + \ 579 encode_putfh_maxsz + \
514 encode_setacl_maxsz) 580 encode_setacl_maxsz)
515#define NFS4_dec_setacl_sz (compound_decode_hdr_maxsz + \ 581#define NFS4_dec_setacl_sz (compound_decode_hdr_maxsz + \
582 decode_sequence_maxsz + \
516 decode_putfh_maxsz + \ 583 decode_putfh_maxsz + \
517 decode_setacl_maxsz) 584 decode_setacl_maxsz)
518#define NFS4_enc_fs_locations_sz \ 585#define NFS4_enc_fs_locations_sz \
519 (compound_encode_hdr_maxsz + \ 586 (compound_encode_hdr_maxsz + \
587 encode_sequence_maxsz + \
520 encode_putfh_maxsz + \ 588 encode_putfh_maxsz + \
521 encode_lookup_maxsz + \ 589 encode_lookup_maxsz + \
522 encode_fs_locations_maxsz) 590 encode_fs_locations_maxsz)
523#define NFS4_dec_fs_locations_sz \ 591#define NFS4_dec_fs_locations_sz \
524 (compound_decode_hdr_maxsz + \ 592 (compound_decode_hdr_maxsz + \
593 decode_sequence_maxsz + \
525 decode_putfh_maxsz + \ 594 decode_putfh_maxsz + \
526 decode_lookup_maxsz + \ 595 decode_lookup_maxsz + \
527 decode_fs_locations_maxsz) 596 decode_fs_locations_maxsz)
@@ -1385,6 +1454,24 @@ static void encode_delegreturn(struct xdr_stream *xdr, const nfs4_stateid *state
1385 hdr->nops++; 1454 hdr->nops++;
1386 hdr->replen += decode_delegreturn_maxsz; 1455 hdr->replen += decode_delegreturn_maxsz;
1387} 1456}
1457
1458/* NFSv4.1 operations */
1459static void encode_sequence(struct xdr_stream *xdr,
1460 const struct nfs4_sequence_args *args,
1461 struct compound_hdr *hdr)
1462{
1463#if defined(CONFIG_NFS_V4_1)
1464 struct nfs4_session *session = args->sa_session;
1465
1466 if (!session)
1467 return;
1468
1469 /* stub */
1470 hdr->nops++;
1471 hdr->replen += decode_sequence_maxsz;
1472#endif /* CONFIG_NFS_V4_1 */
1473}
1474
1388/* 1475/*
1389 * END OF "GENERIC" ENCODE ROUTINES. 1476 * END OF "GENERIC" ENCODE ROUTINES.
1390 */ 1477 */
@@ -1410,6 +1497,7 @@ static int nfs4_xdr_enc_access(struct rpc_rqst *req, __be32 *p, const struct nfs
1410 1497
1411 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1498 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1412 encode_compound_hdr(&xdr, req, &hdr); 1499 encode_compound_hdr(&xdr, req, &hdr);
1500 encode_sequence(&xdr, &args->seq_args, &hdr);
1413 encode_putfh(&xdr, args->fh, &hdr); 1501 encode_putfh(&xdr, args->fh, &hdr);
1414 encode_access(&xdr, args->access, &hdr); 1502 encode_access(&xdr, args->access, &hdr);
1415 encode_getfattr(&xdr, args->bitmask, &hdr); 1503 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1429,6 +1517,7 @@ static int nfs4_xdr_enc_lookup(struct rpc_rqst *req, __be32 *p, const struct nfs
1429 1517
1430 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1518 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1431 encode_compound_hdr(&xdr, req, &hdr); 1519 encode_compound_hdr(&xdr, req, &hdr);
1520 encode_sequence(&xdr, &args->seq_args, &hdr);
1432 encode_putfh(&xdr, args->dir_fh, &hdr); 1521 encode_putfh(&xdr, args->dir_fh, &hdr);
1433 encode_lookup(&xdr, args->name, &hdr); 1522 encode_lookup(&xdr, args->name, &hdr);
1434 encode_getfh(&xdr, &hdr); 1523 encode_getfh(&xdr, &hdr);
@@ -1449,6 +1538,7 @@ static int nfs4_xdr_enc_lookup_root(struct rpc_rqst *req, __be32 *p, const struc
1449 1538
1450 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1539 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1451 encode_compound_hdr(&xdr, req, &hdr); 1540 encode_compound_hdr(&xdr, req, &hdr);
1541 encode_sequence(&xdr, &args->seq_args, &hdr);
1452 encode_putrootfh(&xdr, &hdr); 1542 encode_putrootfh(&xdr, &hdr);
1453 encode_getfh(&xdr, &hdr); 1543 encode_getfh(&xdr, &hdr);
1454 encode_getfattr(&xdr, args->bitmask, &hdr); 1544 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1468,6 +1558,7 @@ static int nfs4_xdr_enc_remove(struct rpc_rqst *req, __be32 *p, const struct nfs
1468 1558
1469 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1559 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1470 encode_compound_hdr(&xdr, req, &hdr); 1560 encode_compound_hdr(&xdr, req, &hdr);
1561 encode_sequence(&xdr, &args->seq_args, &hdr);
1471 encode_putfh(&xdr, args->fh, &hdr); 1562 encode_putfh(&xdr, args->fh, &hdr);
1472 encode_remove(&xdr, &args->name, &hdr); 1563 encode_remove(&xdr, &args->name, &hdr);
1473 encode_getfattr(&xdr, args->bitmask, &hdr); 1564 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1487,6 +1578,7 @@ static int nfs4_xdr_enc_rename(struct rpc_rqst *req, __be32 *p, const struct nfs
1487 1578
1488 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1579 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1489 encode_compound_hdr(&xdr, req, &hdr); 1580 encode_compound_hdr(&xdr, req, &hdr);
1581 encode_sequence(&xdr, &args->seq_args, &hdr);
1490 encode_putfh(&xdr, args->old_dir, &hdr); 1582 encode_putfh(&xdr, args->old_dir, &hdr);
1491 encode_savefh(&xdr, &hdr); 1583 encode_savefh(&xdr, &hdr);
1492 encode_putfh(&xdr, args->new_dir, &hdr); 1584 encode_putfh(&xdr, args->new_dir, &hdr);
@@ -1510,6 +1602,7 @@ static int nfs4_xdr_enc_link(struct rpc_rqst *req, __be32 *p, const struct nfs4_
1510 1602
1511 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1603 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1512 encode_compound_hdr(&xdr, req, &hdr); 1604 encode_compound_hdr(&xdr, req, &hdr);
1605 encode_sequence(&xdr, &args->seq_args, &hdr);
1513 encode_putfh(&xdr, args->fh, &hdr); 1606 encode_putfh(&xdr, args->fh, &hdr);
1514 encode_savefh(&xdr, &hdr); 1607 encode_savefh(&xdr, &hdr);
1515 encode_putfh(&xdr, args->dir_fh, &hdr); 1608 encode_putfh(&xdr, args->dir_fh, &hdr);
@@ -1533,6 +1626,7 @@ static int nfs4_xdr_enc_create(struct rpc_rqst *req, __be32 *p, const struct nfs
1533 1626
1534 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1627 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1535 encode_compound_hdr(&xdr, req, &hdr); 1628 encode_compound_hdr(&xdr, req, &hdr);
1629 encode_sequence(&xdr, &args->seq_args, &hdr);
1536 encode_putfh(&xdr, args->dir_fh, &hdr); 1630 encode_putfh(&xdr, args->dir_fh, &hdr);
1537 encode_savefh(&xdr, &hdr); 1631 encode_savefh(&xdr, &hdr);
1538 encode_create(&xdr, args, &hdr); 1632 encode_create(&xdr, args, &hdr);
@@ -1564,6 +1658,7 @@ static int nfs4_xdr_enc_getattr(struct rpc_rqst *req, __be32 *p, const struct nf
1564 1658
1565 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1659 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1566 encode_compound_hdr(&xdr, req, &hdr); 1660 encode_compound_hdr(&xdr, req, &hdr);
1661 encode_sequence(&xdr, &args->seq_args, &hdr);
1567 encode_putfh(&xdr, args->fh, &hdr); 1662 encode_putfh(&xdr, args->fh, &hdr);
1568 encode_getfattr(&xdr, args->bitmask, &hdr); 1663 encode_getfattr(&xdr, args->bitmask, &hdr);
1569 encode_nops(&hdr); 1664 encode_nops(&hdr);
@@ -1582,6 +1677,7 @@ static int nfs4_xdr_enc_close(struct rpc_rqst *req, __be32 *p, struct nfs_closea
1582 1677
1583 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1678 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1584 encode_compound_hdr(&xdr, req, &hdr); 1679 encode_compound_hdr(&xdr, req, &hdr);
1680 encode_sequence(&xdr, &args->seq_args, &hdr);
1585 encode_putfh(&xdr, args->fh, &hdr); 1681 encode_putfh(&xdr, args->fh, &hdr);
1586 encode_close(&xdr, args, &hdr); 1682 encode_close(&xdr, args, &hdr);
1587 encode_getfattr(&xdr, args->bitmask, &hdr); 1683 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1601,6 +1697,7 @@ static int nfs4_xdr_enc_open(struct rpc_rqst *req, __be32 *p, struct nfs_openarg
1601 1697
1602 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1698 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1603 encode_compound_hdr(&xdr, req, &hdr); 1699 encode_compound_hdr(&xdr, req, &hdr);
1700 encode_sequence(&xdr, &args->seq_args, &hdr);
1604 encode_putfh(&xdr, args->fh, &hdr); 1701 encode_putfh(&xdr, args->fh, &hdr);
1605 encode_savefh(&xdr, &hdr); 1702 encode_savefh(&xdr, &hdr);
1606 encode_open(&xdr, args, &hdr); 1703 encode_open(&xdr, args, &hdr);
@@ -1642,6 +1739,7 @@ static int nfs4_xdr_enc_open_noattr(struct rpc_rqst *req, __be32 *p, struct nfs_
1642 1739
1643 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1740 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1644 encode_compound_hdr(&xdr, req, &hdr); 1741 encode_compound_hdr(&xdr, req, &hdr);
1742 encode_sequence(&xdr, &args->seq_args, &hdr);
1645 encode_putfh(&xdr, args->fh, &hdr); 1743 encode_putfh(&xdr, args->fh, &hdr);
1646 encode_open(&xdr, args, &hdr); 1744 encode_open(&xdr, args, &hdr);
1647 encode_getfattr(&xdr, args->bitmask, &hdr); 1745 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1661,6 +1759,7 @@ static int nfs4_xdr_enc_open_downgrade(struct rpc_rqst *req, __be32 *p, struct n
1661 1759
1662 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1760 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1663 encode_compound_hdr(&xdr, req, &hdr); 1761 encode_compound_hdr(&xdr, req, &hdr);
1762 encode_sequence(&xdr, &args->seq_args, &hdr);
1664 encode_putfh(&xdr, args->fh, &hdr); 1763 encode_putfh(&xdr, args->fh, &hdr);
1665 encode_open_downgrade(&xdr, args, &hdr); 1764 encode_open_downgrade(&xdr, args, &hdr);
1666 encode_getfattr(&xdr, args->bitmask, &hdr); 1765 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1680,6 +1779,7 @@ static int nfs4_xdr_enc_lock(struct rpc_rqst *req, __be32 *p, struct nfs_lock_ar
1680 1779
1681 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1780 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1682 encode_compound_hdr(&xdr, req, &hdr); 1781 encode_compound_hdr(&xdr, req, &hdr);
1782 encode_sequence(&xdr, &args->seq_args, &hdr);
1683 encode_putfh(&xdr, args->fh, &hdr); 1783 encode_putfh(&xdr, args->fh, &hdr);
1684 encode_lock(&xdr, args, &hdr); 1784 encode_lock(&xdr, args, &hdr);
1685 encode_nops(&hdr); 1785 encode_nops(&hdr);
@@ -1698,6 +1798,7 @@ static int nfs4_xdr_enc_lockt(struct rpc_rqst *req, __be32 *p, struct nfs_lockt_
1698 1798
1699 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1799 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1700 encode_compound_hdr(&xdr, req, &hdr); 1800 encode_compound_hdr(&xdr, req, &hdr);
1801 encode_sequence(&xdr, &args->seq_args, &hdr);
1701 encode_putfh(&xdr, args->fh, &hdr); 1802 encode_putfh(&xdr, args->fh, &hdr);
1702 encode_lockt(&xdr, args, &hdr); 1803 encode_lockt(&xdr, args, &hdr);
1703 encode_nops(&hdr); 1804 encode_nops(&hdr);
@@ -1716,6 +1817,7 @@ static int nfs4_xdr_enc_locku(struct rpc_rqst *req, __be32 *p, struct nfs_locku_
1716 1817
1717 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1818 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1718 encode_compound_hdr(&xdr, req, &hdr); 1819 encode_compound_hdr(&xdr, req, &hdr);
1820 encode_sequence(&xdr, &args->seq_args, &hdr);
1719 encode_putfh(&xdr, args->fh, &hdr); 1821 encode_putfh(&xdr, args->fh, &hdr);
1720 encode_locku(&xdr, args, &hdr); 1822 encode_locku(&xdr, args, &hdr);
1721 encode_nops(&hdr); 1823 encode_nops(&hdr);
@@ -1734,6 +1836,7 @@ static int nfs4_xdr_enc_readlink(struct rpc_rqst *req, __be32 *p, const struct n
1734 1836
1735 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1837 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1736 encode_compound_hdr(&xdr, req, &hdr); 1838 encode_compound_hdr(&xdr, req, &hdr);
1839 encode_sequence(&xdr, &args->seq_args, &hdr);
1737 encode_putfh(&xdr, args->fh, &hdr); 1840 encode_putfh(&xdr, args->fh, &hdr);
1738 encode_readlink(&xdr, args, req, &hdr); 1841 encode_readlink(&xdr, args, req, &hdr);
1739 1842
@@ -1755,6 +1858,7 @@ static int nfs4_xdr_enc_readdir(struct rpc_rqst *req, __be32 *p, const struct nf
1755 1858
1756 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1859 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1757 encode_compound_hdr(&xdr, req, &hdr); 1860 encode_compound_hdr(&xdr, req, &hdr);
1861 encode_sequence(&xdr, &args->seq_args, &hdr);
1758 encode_putfh(&xdr, args->fh, &hdr); 1862 encode_putfh(&xdr, args->fh, &hdr);
1759 encode_readdir(&xdr, args, req, &hdr); 1863 encode_readdir(&xdr, args, req, &hdr);
1760 1864
@@ -1779,6 +1883,7 @@ static int nfs4_xdr_enc_read(struct rpc_rqst *req, __be32 *p, struct nfs_readarg
1779 1883
1780 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1884 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1781 encode_compound_hdr(&xdr, req, &hdr); 1885 encode_compound_hdr(&xdr, req, &hdr);
1886 encode_sequence(&xdr, &args->seq_args, &hdr);
1782 encode_putfh(&xdr, args->fh, &hdr); 1887 encode_putfh(&xdr, args->fh, &hdr);
1783 encode_read(&xdr, args, &hdr); 1888 encode_read(&xdr, args, &hdr);
1784 1889
@@ -1801,6 +1906,7 @@ static int nfs4_xdr_enc_setattr(struct rpc_rqst *req, __be32 *p, struct nfs_seta
1801 1906
1802 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1907 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1803 encode_compound_hdr(&xdr, req, &hdr); 1908 encode_compound_hdr(&xdr, req, &hdr);
1909 encode_sequence(&xdr, &args->seq_args, &hdr);
1804 encode_putfh(&xdr, args->fh, &hdr); 1910 encode_putfh(&xdr, args->fh, &hdr);
1805 encode_setattr(&xdr, args, args->server, &hdr); 1911 encode_setattr(&xdr, args, args->server, &hdr);
1806 encode_getfattr(&xdr, args->bitmask, &hdr); 1912 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1823,6 +1929,7 @@ nfs4_xdr_enc_getacl(struct rpc_rqst *req, __be32 *p,
1823 1929
1824 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1930 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1825 encode_compound_hdr(&xdr, req, &hdr); 1931 encode_compound_hdr(&xdr, req, &hdr);
1932 encode_sequence(&xdr, &args->seq_args, &hdr);
1826 encode_putfh(&xdr, args->fh, &hdr); 1933 encode_putfh(&xdr, args->fh, &hdr);
1827 replen = hdr.replen + nfs4_fattr_bitmap_maxsz + 1; 1934 replen = hdr.replen + nfs4_fattr_bitmap_maxsz + 1;
1828 encode_getattr_two(&xdr, FATTR4_WORD0_ACL, 0, &hdr); 1935 encode_getattr_two(&xdr, FATTR4_WORD0_ACL, 0, &hdr);
@@ -1845,6 +1952,7 @@ static int nfs4_xdr_enc_write(struct rpc_rqst *req, __be32 *p, struct nfs_writea
1845 1952
1846 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1953 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1847 encode_compound_hdr(&xdr, req, &hdr); 1954 encode_compound_hdr(&xdr, req, &hdr);
1955 encode_sequence(&xdr, &args->seq_args, &hdr);
1848 encode_putfh(&xdr, args->fh, &hdr); 1956 encode_putfh(&xdr, args->fh, &hdr);
1849 encode_write(&xdr, args, &hdr); 1957 encode_write(&xdr, args, &hdr);
1850 req->rq_snd_buf.flags |= XDRBUF_WRITE; 1958 req->rq_snd_buf.flags |= XDRBUF_WRITE;
@@ -1865,6 +1973,7 @@ static int nfs4_xdr_enc_commit(struct rpc_rqst *req, __be32 *p, struct nfs_write
1865 1973
1866 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1974 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1867 encode_compound_hdr(&xdr, req, &hdr); 1975 encode_compound_hdr(&xdr, req, &hdr);
1976 encode_sequence(&xdr, &args->seq_args, &hdr);
1868 encode_putfh(&xdr, args->fh, &hdr); 1977 encode_putfh(&xdr, args->fh, &hdr);
1869 encode_commit(&xdr, args, &hdr); 1978 encode_commit(&xdr, args, &hdr);
1870 encode_getfattr(&xdr, args->bitmask, &hdr); 1979 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -1884,6 +1993,7 @@ static int nfs4_xdr_enc_fsinfo(struct rpc_rqst *req, __be32 *p, struct nfs4_fsin
1884 1993
1885 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 1994 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1886 encode_compound_hdr(&xdr, req, &hdr); 1995 encode_compound_hdr(&xdr, req, &hdr);
1996 encode_sequence(&xdr, &args->seq_args, &hdr);
1887 encode_putfh(&xdr, args->fh, &hdr); 1997 encode_putfh(&xdr, args->fh, &hdr);
1888 encode_fsinfo(&xdr, args->bitmask, &hdr); 1998 encode_fsinfo(&xdr, args->bitmask, &hdr);
1889 encode_nops(&hdr); 1999 encode_nops(&hdr);
@@ -1902,6 +2012,7 @@ static int nfs4_xdr_enc_pathconf(struct rpc_rqst *req, __be32 *p, const struct n
1902 2012
1903 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 2013 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1904 encode_compound_hdr(&xdr, req, &hdr); 2014 encode_compound_hdr(&xdr, req, &hdr);
2015 encode_sequence(&xdr, &args->seq_args, &hdr);
1905 encode_putfh(&xdr, args->fh, &hdr); 2016 encode_putfh(&xdr, args->fh, &hdr);
1906 encode_getattr_one(&xdr, args->bitmask[0] & nfs4_pathconf_bitmap[0], 2017 encode_getattr_one(&xdr, args->bitmask[0] & nfs4_pathconf_bitmap[0],
1907 &hdr); 2018 &hdr);
@@ -1921,6 +2032,7 @@ static int nfs4_xdr_enc_statfs(struct rpc_rqst *req, __be32 *p, const struct nfs
1921 2032
1922 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 2033 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1923 encode_compound_hdr(&xdr, req, &hdr); 2034 encode_compound_hdr(&xdr, req, &hdr);
2035 encode_sequence(&xdr, &args->seq_args, &hdr);
1924 encode_putfh(&xdr, args->fh, &hdr); 2036 encode_putfh(&xdr, args->fh, &hdr);
1925 encode_getattr_two(&xdr, args->bitmask[0] & nfs4_statfs_bitmap[0], 2037 encode_getattr_two(&xdr, args->bitmask[0] & nfs4_statfs_bitmap[0],
1926 args->bitmask[1] & nfs4_statfs_bitmap[1], &hdr); 2038 args->bitmask[1] & nfs4_statfs_bitmap[1], &hdr);
@@ -1941,6 +2053,7 @@ static int nfs4_xdr_enc_server_caps(struct rpc_rqst *req, __be32 *p,
1941 2053
1942 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 2054 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
1943 encode_compound_hdr(&xdr, req, &hdr); 2055 encode_compound_hdr(&xdr, req, &hdr);
2056 encode_sequence(&xdr, &args->seq_args, &hdr);
1944 encode_putfh(&xdr, args->fhandle, &hdr); 2057 encode_putfh(&xdr, args->fhandle, &hdr);
1945 encode_getattr_one(&xdr, FATTR4_WORD0_SUPPORTED_ATTRS| 2058 encode_getattr_one(&xdr, FATTR4_WORD0_SUPPORTED_ATTRS|
1946 FATTR4_WORD0_LINK_SUPPORT| 2059 FATTR4_WORD0_LINK_SUPPORT|
@@ -2016,6 +2129,7 @@ static int nfs4_xdr_enc_delegreturn(struct rpc_rqst *req, __be32 *p, const struc
2016 2129
2017 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 2130 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
2018 encode_compound_hdr(&xdr, req, &hdr); 2131 encode_compound_hdr(&xdr, req, &hdr);
2132 encode_sequence(&xdr, &args->seq_args, &hdr);
2019 encode_putfh(&xdr, args->fhandle, &hdr); 2133 encode_putfh(&xdr, args->fhandle, &hdr);
2020 encode_delegreturn(&xdr, args->stateid, &hdr); 2134 encode_delegreturn(&xdr, args->stateid, &hdr);
2021 encode_getfattr(&xdr, args->bitmask, &hdr); 2135 encode_getfattr(&xdr, args->bitmask, &hdr);
@@ -2036,6 +2150,7 @@ static int nfs4_xdr_enc_fs_locations(struct rpc_rqst *req, __be32 *p, struct nfs
2036 2150
2037 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 2151 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
2038 encode_compound_hdr(&xdr, req, &hdr); 2152 encode_compound_hdr(&xdr, req, &hdr);
2153 encode_sequence(&xdr, &args->seq_args, &hdr);
2039 encode_putfh(&xdr, args->dir_fh, &hdr); 2154 encode_putfh(&xdr, args->dir_fh, &hdr);
2040 encode_lookup(&xdr, args->name, &hdr); 2155 encode_lookup(&xdr, args->name, &hdr);
2041 replen = hdr.replen; /* get the attribute into args->page */ 2156 replen = hdr.replen; /* get the attribute into args->page */
@@ -3762,6 +3877,20 @@ static int decode_delegreturn(struct xdr_stream *xdr)
3762 return decode_op_hdr(xdr, OP_DELEGRETURN); 3877 return decode_op_hdr(xdr, OP_DELEGRETURN);
3763} 3878}
3764 3879
3880static int decode_sequence(struct xdr_stream *xdr,
3881 struct nfs4_sequence_res *res,
3882 struct rpc_rqst *rqstp)
3883{
3884#if defined(CONFIG_NFS_V4_1)
3885 if (!res->sr_session)
3886 return 0;
3887
3888 /* stub */
3889#endif /* CONFIG_NFS_V4_1 */
3890
3891 return 0;
3892}
3893
3765/* 3894/*
3766 * END OF "GENERIC" DECODE ROUTINES. 3895 * END OF "GENERIC" DECODE ROUTINES.
3767 */ 3896 */
@@ -3779,6 +3908,9 @@ static int nfs4_xdr_dec_open_downgrade(struct rpc_rqst *rqstp, __be32 *p, struct
3779 status = decode_compound_hdr(&xdr, &hdr); 3908 status = decode_compound_hdr(&xdr, &hdr);
3780 if (status) 3909 if (status)
3781 goto out; 3910 goto out;
3911 status = decode_sequence(&xdr, &res->seq_res, rqstp);
3912 if (status)
3913 goto out;
3782 status = decode_putfh(&xdr); 3914 status = decode_putfh(&xdr);
3783 if (status) 3915 if (status)
3784 goto out; 3916 goto out;
@@ -3800,7 +3932,11 @@ static int nfs4_xdr_dec_access(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_ac
3800 int status; 3932 int status;
3801 3933
3802 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 3934 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3803 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 3935 status = decode_compound_hdr(&xdr, &hdr);
3936 if (status)
3937 goto out;
3938 status = decode_sequence(&xdr, &res->seq_res, rqstp);
3939 if (status)
3804 goto out; 3940 goto out;
3805 status = decode_putfh(&xdr); 3941 status = decode_putfh(&xdr);
3806 if (status != 0) 3942 if (status != 0)
@@ -3823,7 +3959,11 @@ static int nfs4_xdr_dec_lookup(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_lo
3823 int status; 3959 int status;
3824 3960
3825 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 3961 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3826 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 3962 status = decode_compound_hdr(&xdr, &hdr);
3963 if (status)
3964 goto out;
3965 status = decode_sequence(&xdr, &res->seq_res, rqstp);
3966 if (status)
3827 goto out; 3967 goto out;
3828 if ((status = decode_putfh(&xdr)) != 0) 3968 if ((status = decode_putfh(&xdr)) != 0)
3829 goto out; 3969 goto out;
@@ -3846,7 +3986,11 @@ static int nfs4_xdr_dec_lookup_root(struct rpc_rqst *rqstp, __be32 *p, struct nf
3846 int status; 3986 int status;
3847 3987
3848 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 3988 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3849 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 3989 status = decode_compound_hdr(&xdr, &hdr);
3990 if (status)
3991 goto out;
3992 status = decode_sequence(&xdr, &res->seq_res, rqstp);
3993 if (status)
3850 goto out; 3994 goto out;
3851 if ((status = decode_putrootfh(&xdr)) != 0) 3995 if ((status = decode_putrootfh(&xdr)) != 0)
3852 goto out; 3996 goto out;
@@ -3866,7 +4010,11 @@ static int nfs4_xdr_dec_remove(struct rpc_rqst *rqstp, __be32 *p, struct nfs_rem
3866 int status; 4010 int status;
3867 4011
3868 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 4012 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3869 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 4013 status = decode_compound_hdr(&xdr, &hdr);
4014 if (status)
4015 goto out;
4016 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4017 if (status)
3870 goto out; 4018 goto out;
3871 if ((status = decode_putfh(&xdr)) != 0) 4019 if ((status = decode_putfh(&xdr)) != 0)
3872 goto out; 4020 goto out;
@@ -3887,7 +4035,11 @@ static int nfs4_xdr_dec_rename(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_re
3887 int status; 4035 int status;
3888 4036
3889 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 4037 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3890 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 4038 status = decode_compound_hdr(&xdr, &hdr);
4039 if (status)
4040 goto out;
4041 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4042 if (status)
3891 goto out; 4043 goto out;
3892 if ((status = decode_putfh(&xdr)) != 0) 4044 if ((status = decode_putfh(&xdr)) != 0)
3893 goto out; 4045 goto out;
@@ -3917,7 +4069,11 @@ static int nfs4_xdr_dec_link(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_link
3917 int status; 4069 int status;
3918 4070
3919 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 4071 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3920 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 4072 status = decode_compound_hdr(&xdr, &hdr);
4073 if (status)
4074 goto out;
4075 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4076 if (status)
3921 goto out; 4077 goto out;
3922 if ((status = decode_putfh(&xdr)) != 0) 4078 if ((status = decode_putfh(&xdr)) != 0)
3923 goto out; 4079 goto out;
@@ -3950,7 +4106,11 @@ static int nfs4_xdr_dec_create(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_cr
3950 int status; 4106 int status;
3951 4107
3952 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 4108 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
3953 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 4109 status = decode_compound_hdr(&xdr, &hdr);
4110 if (status)
4111 goto out;
4112 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4113 if (status)
3954 goto out; 4114 goto out;
3955 if ((status = decode_putfh(&xdr)) != 0) 4115 if ((status = decode_putfh(&xdr)) != 0)
3956 goto out; 4116 goto out;
@@ -3990,6 +4150,9 @@ static int nfs4_xdr_dec_getattr(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_g
3990 status = decode_compound_hdr(&xdr, &hdr); 4150 status = decode_compound_hdr(&xdr, &hdr);
3991 if (status) 4151 if (status)
3992 goto out; 4152 goto out;
4153 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4154 if (status)
4155 goto out;
3993 status = decode_putfh(&xdr); 4156 status = decode_putfh(&xdr);
3994 if (status) 4157 if (status)
3995 goto out; 4158 goto out;
@@ -4012,6 +4175,7 @@ nfs4_xdr_enc_setacl(struct rpc_rqst *req, __be32 *p, struct nfs_setaclargs *args
4012 4175
4013 xdr_init_encode(&xdr, &req->rq_snd_buf, p); 4176 xdr_init_encode(&xdr, &req->rq_snd_buf, p);
4014 encode_compound_hdr(&xdr, req, &hdr); 4177 encode_compound_hdr(&xdr, req, &hdr);
4178 encode_sequence(&xdr, &args->seq_args, &hdr);
4015 encode_putfh(&xdr, args->fh, &hdr); 4179 encode_putfh(&xdr, args->fh, &hdr);
4016 status = encode_setacl(&xdr, args, &hdr); 4180 status = encode_setacl(&xdr, args, &hdr);
4017 encode_nops(&hdr); 4181 encode_nops(&hdr);
@@ -4033,6 +4197,9 @@ nfs4_xdr_dec_setacl(struct rpc_rqst *rqstp, __be32 *p,
4033 status = decode_compound_hdr(&xdr, &hdr); 4197 status = decode_compound_hdr(&xdr, &hdr);
4034 if (status) 4198 if (status)
4035 goto out; 4199 goto out;
4200 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4201 if (status)
4202 goto out;
4036 status = decode_putfh(&xdr); 4203 status = decode_putfh(&xdr);
4037 if (status) 4204 if (status)
4038 goto out; 4205 goto out;
@@ -4056,6 +4223,9 @@ nfs4_xdr_dec_getacl(struct rpc_rqst *rqstp, __be32 *p,
4056 status = decode_compound_hdr(&xdr, &hdr); 4223 status = decode_compound_hdr(&xdr, &hdr);
4057 if (status) 4224 if (status)
4058 goto out; 4225 goto out;
4226 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4227 if (status)
4228 goto out;
4059 status = decode_putfh(&xdr); 4229 status = decode_putfh(&xdr);
4060 if (status) 4230 if (status)
4061 goto out; 4231 goto out;
@@ -4078,6 +4248,9 @@ static int nfs4_xdr_dec_close(struct rpc_rqst *rqstp, __be32 *p, struct nfs_clos
4078 status = decode_compound_hdr(&xdr, &hdr); 4248 status = decode_compound_hdr(&xdr, &hdr);
4079 if (status) 4249 if (status)
4080 goto out; 4250 goto out;
4251 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4252 if (status)
4253 goto out;
4081 status = decode_putfh(&xdr); 4254 status = decode_putfh(&xdr);
4082 if (status) 4255 if (status)
4083 goto out; 4256 goto out;
@@ -4108,6 +4281,9 @@ static int nfs4_xdr_dec_open(struct rpc_rqst *rqstp, __be32 *p, struct nfs_openr
4108 status = decode_compound_hdr(&xdr, &hdr); 4281 status = decode_compound_hdr(&xdr, &hdr);
4109 if (status) 4282 if (status)
4110 goto out; 4283 goto out;
4284 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4285 if (status)
4286 goto out;
4111 status = decode_putfh(&xdr); 4287 status = decode_putfh(&xdr);
4112 if (status) 4288 if (status)
4113 goto out; 4289 goto out;
@@ -4162,6 +4338,9 @@ static int nfs4_xdr_dec_open_noattr(struct rpc_rqst *rqstp, __be32 *p, struct nf
4162 status = decode_compound_hdr(&xdr, &hdr); 4338 status = decode_compound_hdr(&xdr, &hdr);
4163 if (status) 4339 if (status)
4164 goto out; 4340 goto out;
4341 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4342 if (status)
4343 goto out;
4165 status = decode_putfh(&xdr); 4344 status = decode_putfh(&xdr);
4166 if (status) 4345 if (status)
4167 goto out; 4346 goto out;
@@ -4186,6 +4365,9 @@ static int nfs4_xdr_dec_setattr(struct rpc_rqst *rqstp, __be32 *p, struct nfs_se
4186 status = decode_compound_hdr(&xdr, &hdr); 4365 status = decode_compound_hdr(&xdr, &hdr);
4187 if (status) 4366 if (status)
4188 goto out; 4367 goto out;
4368 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4369 if (status)
4370 goto out;
4189 status = decode_putfh(&xdr); 4371 status = decode_putfh(&xdr);
4190 if (status) 4372 if (status)
4191 goto out; 4373 goto out;
@@ -4210,6 +4392,9 @@ static int nfs4_xdr_dec_lock(struct rpc_rqst *rqstp, __be32 *p, struct nfs_lock_
4210 status = decode_compound_hdr(&xdr, &hdr); 4392 status = decode_compound_hdr(&xdr, &hdr);
4211 if (status) 4393 if (status)
4212 goto out; 4394 goto out;
4395 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4396 if (status)
4397 goto out;
4213 status = decode_putfh(&xdr); 4398 status = decode_putfh(&xdr);
4214 if (status) 4399 if (status)
4215 goto out; 4400 goto out;
@@ -4231,6 +4416,9 @@ static int nfs4_xdr_dec_lockt(struct rpc_rqst *rqstp, __be32 *p, struct nfs_lock
4231 status = decode_compound_hdr(&xdr, &hdr); 4416 status = decode_compound_hdr(&xdr, &hdr);
4232 if (status) 4417 if (status)
4233 goto out; 4418 goto out;
4419 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4420 if (status)
4421 goto out;
4234 status = decode_putfh(&xdr); 4422 status = decode_putfh(&xdr);
4235 if (status) 4423 if (status)
4236 goto out; 4424 goto out;
@@ -4252,6 +4440,9 @@ static int nfs4_xdr_dec_locku(struct rpc_rqst *rqstp, __be32 *p, struct nfs_lock
4252 status = decode_compound_hdr(&xdr, &hdr); 4440 status = decode_compound_hdr(&xdr, &hdr);
4253 if (status) 4441 if (status)
4254 goto out; 4442 goto out;
4443 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4444 if (status)
4445 goto out;
4255 status = decode_putfh(&xdr); 4446 status = decode_putfh(&xdr);
4256 if (status) 4447 if (status)
4257 goto out; 4448 goto out;
@@ -4274,6 +4465,9 @@ static int nfs4_xdr_dec_readlink(struct rpc_rqst *rqstp, __be32 *p,
4274 status = decode_compound_hdr(&xdr, &hdr); 4465 status = decode_compound_hdr(&xdr, &hdr);
4275 if (status) 4466 if (status)
4276 goto out; 4467 goto out;
4468 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4469 if (status)
4470 goto out;
4277 status = decode_putfh(&xdr); 4471 status = decode_putfh(&xdr);
4278 if (status) 4472 if (status)
4279 goto out; 4473 goto out;
@@ -4295,6 +4489,9 @@ static int nfs4_xdr_dec_readdir(struct rpc_rqst *rqstp, __be32 *p, struct nfs4_r
4295 status = decode_compound_hdr(&xdr, &hdr); 4489 status = decode_compound_hdr(&xdr, &hdr);
4296 if (status) 4490 if (status)
4297 goto out; 4491 goto out;
4492 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4493 if (status)
4494 goto out;
4298 status = decode_putfh(&xdr); 4495 status = decode_putfh(&xdr);
4299 if (status) 4496 if (status)
4300 goto out; 4497 goto out;
@@ -4316,6 +4513,9 @@ static int nfs4_xdr_dec_read(struct rpc_rqst *rqstp, __be32 *p, struct nfs_readr
4316 status = decode_compound_hdr(&xdr, &hdr); 4513 status = decode_compound_hdr(&xdr, &hdr);
4317 if (status) 4514 if (status)
4318 goto out; 4515 goto out;
4516 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4517 if (status)
4518 goto out;
4319 status = decode_putfh(&xdr); 4519 status = decode_putfh(&xdr);
4320 if (status) 4520 if (status)
4321 goto out; 4521 goto out;
@@ -4339,6 +4539,9 @@ static int nfs4_xdr_dec_write(struct rpc_rqst *rqstp, __be32 *p, struct nfs_writ
4339 status = decode_compound_hdr(&xdr, &hdr); 4539 status = decode_compound_hdr(&xdr, &hdr);
4340 if (status) 4540 if (status)
4341 goto out; 4541 goto out;
4542 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4543 if (status)
4544 goto out;
4342 status = decode_putfh(&xdr); 4545 status = decode_putfh(&xdr);
4343 if (status) 4546 if (status)
4344 goto out; 4547 goto out;
@@ -4365,6 +4568,9 @@ static int nfs4_xdr_dec_commit(struct rpc_rqst *rqstp, __be32 *p, struct nfs_wri
4365 status = decode_compound_hdr(&xdr, &hdr); 4568 status = decode_compound_hdr(&xdr, &hdr);
4366 if (status) 4569 if (status)
4367 goto out; 4570 goto out;
4571 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4572 if (status)
4573 goto out;
4368 status = decode_putfh(&xdr); 4574 status = decode_putfh(&xdr);
4369 if (status) 4575 if (status)
4370 goto out; 4576 goto out;
@@ -4389,6 +4595,8 @@ static int nfs4_xdr_dec_fsinfo(struct rpc_rqst *req, __be32 *p,
4389 xdr_init_decode(&xdr, &req->rq_rcv_buf, p); 4595 xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
4390 status = decode_compound_hdr(&xdr, &hdr); 4596 status = decode_compound_hdr(&xdr, &hdr);
4391 if (!status) 4597 if (!status)
4598 status = decode_sequence(&xdr, &res->seq_res, req);
4599 if (!status)
4392 status = decode_putfh(&xdr); 4600 status = decode_putfh(&xdr);
4393 if (!status) 4601 if (!status)
4394 status = decode_fsinfo(&xdr, res->fsinfo); 4602 status = decode_fsinfo(&xdr, res->fsinfo);
@@ -4408,6 +4616,8 @@ static int nfs4_xdr_dec_pathconf(struct rpc_rqst *req, __be32 *p,
4408 xdr_init_decode(&xdr, &req->rq_rcv_buf, p); 4616 xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
4409 status = decode_compound_hdr(&xdr, &hdr); 4617 status = decode_compound_hdr(&xdr, &hdr);
4410 if (!status) 4618 if (!status)
4619 status = decode_sequence(&xdr, &res->seq_res, req);
4620 if (!status)
4411 status = decode_putfh(&xdr); 4621 status = decode_putfh(&xdr);
4412 if (!status) 4622 if (!status)
4413 status = decode_pathconf(&xdr, res->pathconf); 4623 status = decode_pathconf(&xdr, res->pathconf);
@@ -4427,6 +4637,8 @@ static int nfs4_xdr_dec_statfs(struct rpc_rqst *req, __be32 *p,
4427 xdr_init_decode(&xdr, &req->rq_rcv_buf, p); 4637 xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
4428 status = decode_compound_hdr(&xdr, &hdr); 4638 status = decode_compound_hdr(&xdr, &hdr);
4429 if (!status) 4639 if (!status)
4640 status = decode_sequence(&xdr, &res->seq_res, req);
4641 if (!status)
4430 status = decode_putfh(&xdr); 4642 status = decode_putfh(&xdr);
4431 if (!status) 4643 if (!status)
4432 status = decode_statfs(&xdr, res->fsstat); 4644 status = decode_statfs(&xdr, res->fsstat);
@@ -4443,7 +4655,11 @@ static int nfs4_xdr_dec_server_caps(struct rpc_rqst *req, __be32 *p, struct nfs4
4443 int status; 4655 int status;
4444 4656
4445 xdr_init_decode(&xdr, &req->rq_rcv_buf, p); 4657 xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
4446 if ((status = decode_compound_hdr(&xdr, &hdr)) != 0) 4658 status = decode_compound_hdr(&xdr, &hdr);
4659 if (status)
4660 goto out;
4661 status = decode_sequence(&xdr, &res->seq_res, req);
4662 if (status)
4447 goto out; 4663 goto out;
4448 if ((status = decode_putfh(&xdr)) != 0) 4664 if ((status = decode_putfh(&xdr)) != 0)
4449 goto out; 4665 goto out;
@@ -4516,7 +4732,10 @@ static int nfs4_xdr_dec_delegreturn(struct rpc_rqst *rqstp, __be32 *p, struct nf
4516 4732
4517 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); 4733 xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p);
4518 status = decode_compound_hdr(&xdr, &hdr); 4734 status = decode_compound_hdr(&xdr, &hdr);
4519 if (status != 0) 4735 if (status)
4736 goto out;
4737 status = decode_sequence(&xdr, &res->seq_res, rqstp);
4738 if (status)
4520 goto out; 4739 goto out;
4521 status = decode_putfh(&xdr); 4740 status = decode_putfh(&xdr);
4522 if (status != 0) 4741 if (status != 0)
@@ -4539,7 +4758,10 @@ static int nfs4_xdr_dec_fs_locations(struct rpc_rqst *req, __be32 *p,
4539 4758
4540 xdr_init_decode(&xdr, &req->rq_rcv_buf, p); 4759 xdr_init_decode(&xdr, &req->rq_rcv_buf, p);
4541 status = decode_compound_hdr(&xdr, &hdr); 4760 status = decode_compound_hdr(&xdr, &hdr);
4542 if (status != 0) 4761 if (status)
4762 goto out;
4763 status = decode_sequence(&xdr, &res->seq_res, req);
4764 if (status)
4543 goto out; 4765 goto out;
4544 if ((status = decode_putfh(&xdr)) != 0) 4766 if ((status = decode_putfh(&xdr)) != 0)
4545 goto out; 4767 goto out;