ソースを参照

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.
Rich Felker 13 年 前
コミット
8e8ddeff7e
1 ファイル変更1 行追加0 行削除
  1. 1 0
      src/fcntl/fcntl.c

+ 1 - 0
src/fcntl/fcntl.c

@@ -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);
 }