From 080576a303358fd71b75c584987881464f86624f Mon Sep 17 00:00:00 2001 From: "J. Bruce Fields" Date: Wed, 18 Jan 2006 17:43:18 -0800 Subject: [PATCH] --- yaml --- r: 18947 b: refs/heads/master c: 8a280510852959c0d51b1d625e90c0491c238368 h: refs/heads/master i: 18945: 9f2024abf80d8a8abb63eb96d6a3f149db65470f 18943: 11a33311a474987c09b9a616bf2d4afde83d697e v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfs4state.c | 18 ++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 1eff126a46c8..10aa90d4fdd2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a6f6ef2f1d7329111fcad7db48fb7adba5062d0a +refs/heads/master: 8a280510852959c0d51b1d625e90c0491c238368 diff --git a/trunk/fs/nfsd/nfs4state.c b/trunk/fs/nfsd/nfs4state.c index 3d4a2ec97caa..5bf7fd3947ce 100644 --- a/trunk/fs/nfsd/nfs4state.c +++ b/trunk/fs/nfsd/nfs4state.c @@ -2744,10 +2744,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock if (lock_sop == NULL) goto out; lock_stp = alloc_init_lock_stateid(lock_sop, fp, open_stp); - if (lock_stp == NULL) { - release_stateowner(lock_sop); + if (lock_stp == NULL) goto out; - } } else { /* lock (lock owner + lock stateid) already exists */ status = nfs4_preprocess_seqid_op(current_fh, @@ -2815,7 +2813,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock status = nfserr_deadlock; default: dprintk("NFSD: nfsd4_lock: posix_lock_file() failed! status %d\n",status); - goto out_destroy_new_stateid; + goto out; } conflicting_lock: @@ -2829,17 +2827,9 @@ nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock goto out; } nfs4_set_lock_denied(conflock, &lock->lk_denied); - -out_destroy_new_stateid: - if (lock->lk_is_new) { - dprintk("NFSD: nfsd4_lock: destroy new stateid!\n"); - /* - * An error encountered after instantiation of the new - * stateid has forced us to destroy it. - */ - release_state_owner(lock_stp, LOCK_STATE); - } out: + if (status && lock->lk_is_new && lock_sop) + release_stateowner(lock_sop); if (lock->lk_stateowner) { nfs4_get_stateowner(lock->lk_stateowner); *replay_owner = lock->lk_stateowner;