summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/zfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/zfd.c')
-rw-r--r--usr/src/uts/common/io/zfd.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/zfd.c b/usr/src/uts/common/io/zfd.c
index 0b52a9179d..3edaa62bbe 100644
--- a/usr/src/uts/common/io/zfd.c
+++ b/usr/src/uts/common/io/zfd.c
@@ -694,6 +694,21 @@ zfd_wput(queue_t *qp, mblk_t *mp)
M_HANGUP);
miocack(qp, mp, 0, 0);
return;
+ case ZFD_HAS_SLAVE:
+ /*
+ * The process that passed the ioctl must be running in
+ * the global zone.
+ */
+ if (crgetzoneid(iocbp->ioc_cr) != GLOBAL_ZONEID) {
+ miocack(qp, mp, 0, EINVAL);
+ return;
+ }
+ if ((zfds->zfd_state & ZFD_STATE_SOPEN) != 0) {
+ miocack(qp, mp, 0, 0);
+ } else {
+ miocack(qp, mp, 0, ENOTTY);
+ }
+ return;
default:
break;
}