fix F_GETOWN return value handling

the fcntl syscall can return a negative value when the command is
F_GETOWN, and this is not an error code but an actual value. thus we
must special-case it and avoid calling __syscall_ret to set errno.
this fix is better than the glibc fix (using F_GETOWN_EX) which only
works on newer kernels and is more complex.
This commit is contained in:
Rich Felker 2011-10-09 22:51:03 -04:00
parent 2b89e56c94
commit 8e8ddeff7e
1 changed files with 1 additions and 0 deletions

View File

@ -13,6 +13,7 @@ int fcntl(int fd, int cmd, ...)
va_end(ap);
if (cmd == F_SETFL) arg |= O_LARGEFILE;
if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, arg);
if (cmd == F_GETOWN) return __syscall(SYS_fcntl, fd, cmd, arg);
return syscall(SYS_fcntl, fd, cmd, arg);
}