diff options
Diffstat (limited to 'usr/src/uts/common/syscall/fcntl.c')
-rw-r--r-- | usr/src/uts/common/syscall/fcntl.c | 16 |
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: |