summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/nfs/nfs4_srv.c
diff options
context:
space:
mode:
authorDaniil Lunev <d.lunev.mail@gmail.com>2012-09-06 10:41:18 -0500
committerDaniil Lunev <d.lunev.mail@gmail.com>2012-09-06 10:41:18 -0500
commit21feb70aa388da939a1de2116f16a0da7c62bbf5 (patch)
treefbd4e4273793059475fd8b5ddcd4c91bab6802a3 /usr/src/uts/common/fs/nfs/nfs4_srv.c
parent945b8d4004f9c581cff8b81126bd9adef52b84d9 (diff)
downloadillumos-gate-21feb70aa388da939a1de2116f16a0da7c62bbf5.tar.gz
3161 nfs: OPEN_DOWNGRADE with non-regular file returns wrong error
Reviewed by: Eric Schrock <eric.schrock@delphix.com> Approved by: Richard Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/uts/common/fs/nfs/nfs4_srv.c')
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_srv.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv.c b/usr/src/uts/common/fs/nfs/nfs4_srv.c
index b9d76c9569..3f6a824b6d 100644
--- a/usr/src/uts/common/fs/nfs/nfs4_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs4_srv.c
@@ -7735,6 +7735,11 @@ rfs4_op_open_downgrade(nfs_argop4 *argop, nfs_resop4 *resop,
goto out;
}
+ if (cs->vp->v_type != VREG) {
+ *cs->statusp = resp->status = NFS4ERR_INVAL;
+ return;
+ }
+
status = rfs4_get_state(&args->open_stateid, &sp, RFS4_DBS_VALID);
if (status != NFS4_OK) {
*cs->statusp = resp->status = status;