summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/syscall/fcntl.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/syscall/fcntl.c')
-rw-r--r--usr/src/uts/common/syscall/fcntl.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/usr/src/uts/common/syscall/fcntl.c b/usr/src/uts/common/syscall/fcntl.c
index 0750e54697..4a6e58f6b0 100644
--- a/usr/src/uts/common/syscall/fcntl.c
+++ b/usr/src/uts/common/syscall/fcntl.c
@@ -114,13 +114,21 @@ fcntl(int fdes, int cmd, intptr_t arg)
goto out;
case F_GETFL:
- if ((error = f_getfl(fdes, &flag)) == 0)
- retval = (flag & (FMASK | FASYNC)) + FOPEN;
+ if ((error = f_getfl(fdes, &flag)) == 0) {
+ retval = (flag & (FMASK | FASYNC));
+ if ((flag & (FSEARCH | FEXEC)) == 0)
+ retval += FOPEN;
+ else
+ retval |= (flag & (FSEARCH | FEXEC));
+ }
goto out;
case F_GETXFL:
- if ((error = f_getfl(fdes, &flag)) == 0)
- retval = flag + FOPEN;
+ if ((error = f_getfl(fdes, &flag)) == 0) {
+ retval = flag;
+ if ((flag & (FSEARCH | FEXEC)) == 0)
+ retval += FOPEN;
+ }
goto out;
case F_BADFD: