aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/callback_proc.c
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2011-01-25 10:38:02 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-01-25 15:26:51 -0500
commit2c4cdf8f6d3cfb48036400952329555099c8c92c (patch)
tree06a2c1d0ff7bfc959cb62eca51ef5d8e08781f4a /fs/nfs/callback_proc.c
parent778be232a207e79088ba70d832ac25dfea6fbf1a (diff)
NFS fix cb_sequence error processing
Always assign the cb_process_state nfs_client pointer so a processing error in cb_sequence after the nfs_client is found and referenced returns a non-NULL cb_process_state nfs_client and the matching nfs_put_client in nfs4_callback_compound dereferences the client. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/callback_proc.c')
-rw-r--r--fs/nfs/callback_proc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index 829f406e91dd..89587573fe50 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -408,9 +408,9 @@ __be32 nfs4_callback_sequence(struct cb_sequenceargs *args,
408 res->csr_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; 408 res->csr_highestslotid = NFS41_BC_MAX_CALLBACKS - 1;
409 res->csr_target_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; 409 res->csr_target_highestslotid = NFS41_BC_MAX_CALLBACKS - 1;
410 nfs4_cb_take_slot(clp); 410 nfs4_cb_take_slot(clp);
411 cps->clp = clp; /* put in nfs4_callback_compound */
412 411
413out: 412out:
413 cps->clp = clp; /* put in nfs4_callback_compound */
414 for (i = 0; i < args->csa_nrclists; i++) 414 for (i = 0; i < args->csa_nrclists; i++)
415 kfree(args->csa_rclists[i].rcl_refcalls); 415 kfree(args->csa_rclists[i].rcl_refcalls);
416 kfree(args->csa_rclists); 416 kfree(args->csa_rclists);