nfsd4: fix file leak on open_downgrade
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 29 Jun 2011 12:23:50 +0000 (08:23 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 5 Aug 2011 04:58:40 +0000 (21:58 -0700)
commit4beae54c192e6f1dee12b70e205b800fd99d1fc7
treeeb86700ab34520ed416fa38edb57411c5a096175
parentecf6c7480f0c9aef2a39e8cb881ebd98bfcb8caa
nfsd4: fix file leak on open_downgrade

commit f197c27196a5e7631b89e2e92daa096fcf7c302c upstream.

Stateid's hold a read reference for a read open, a write reference for a
write open, and an additional one of each for each read+write open.  The
latter wasn't getting put on a downgrade, so something like:

open RW
open R
downgrade to R

was resulting in a file leak.

Also fix an imbalance in an error path.

Regression from 7d94784293096c0a46897acdb83be5abd9278ece "nfsd4: fix
downgrade/lock logic".

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/nfsd/nfs4state.c