cstate->replay_owner = stp->st_stateowner;
 
        status = nfs4_seqid_op_checks(cstate, stateid, seqid, stp);
-       if (!status)
+       if (!status) {
+               /* FIXME: move into find_stateid_by_type */
+               atomic_inc(&stp->st_stid.sc_count);
                *stpp = stp;
+       }
        return status;
 }
 
 {
        __be32 status;
        struct nfs4_openowner *oo;
+       struct nfs4_ol_stateid *stp;
 
        status = nfs4_preprocess_seqid_op(cstate, seqid, stateid,
-                                               NFS4_OPEN_STID, stpp, nn);
+                                               NFS4_OPEN_STID, &stp, nn);
        if (status)
                return status;
-       /* FIXME: move into nfs4_preprocess_seqid_op */
-       atomic_inc(&(*stpp)->st_stid.sc_count);
-       oo = openowner((*stpp)->st_stateowner);
-       if (!(oo->oo_flags & NFS4_OO_CONFIRMED))
+       oo = openowner(stp->st_stateowner);
+       if (!(oo->oo_flags & NFS4_OO_CONFIRMED)) {
+               nfs4_put_stid(&stp->st_stid);
                return nfserr_bad_stateid;
+       }
+       *stpp = stp;
        return nfs_ok;
 }
 
                                        NFS4_OPEN_STID, &stp, nn);
        if (status)
                goto out;
-       /* FIXME: move into nfs4_preprocess_seqid_op */
-       atomic_inc(&stp->st_stid.sc_count);
        oo = openowner(stp->st_stateowner);
        status = nfserr_bad_stateid;
        if (oo->oo_flags & NFS4_OO_CONFIRMED)
        nfsd4_bump_seqid(cstate, status);
        if (status)
                goto out; 
-       /* FIXME: move into nfs4_preprocess_seqid_op */
-       atomic_inc(&stp->st_stid.sc_count);
        update_stateid(&stp->st_stid.sc_stateid);
        memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t));
 
                                       lock->lk_old_lock_seqid,
                                       &lock->lk_old_lock_stateid,
                                       NFS4_LOCK_STID, &lock_stp, nn);
-               /* FIXME: move into nfs4_preprocess_seqid_op */
-               if (!status)
-                       atomic_inc(&lock_stp->st_stid.sc_count);
        }
        if (status)
                goto out;
                                        &stp, nn);
        if (status)
                goto out;
-       /* FIXME: move into nfs4_preprocess_seqid_op */
-       atomic_inc(&stp->st_stid.sc_count);
        filp = find_any_file(stp->st_stid.sc_file);
        if (!filp) {
                status = nfserr_lock_range;