diff options
| author | Andy Adamson <andros@netapp.com> | 2011-01-25 10:38:02 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-01-25 15:26:51 -0500 |
| commit | 2c4cdf8f6d3cfb48036400952329555099c8c92c (patch) | |
| tree | 06a2c1d0ff7bfc959cb62eca51ef5d8e08781f4a | |
| parent | 778be232a207e79088ba70d832ac25dfea6fbf1a (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>
| -rw-r--r-- | fs/nfs/callback_proc.c | 2 |
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 | ||
| 413 | out: | 412 | out: |
| 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); |
