svn commit: r211522 - head/lib/libthr/thread
David Xu
davidxu at FreeBSD.org
Fri Aug 20 04:15:05 UTC 2010
Author: davidxu
Date: Fri Aug 20 04:15:05 2010
New Revision: 211522
URL: http://svn.freebsd.org/changeset/base/211522
Log:
According to specification, function fcntl() is a cancellation point only
when cmd argument is F_SETLKW.
Modified:
head/lib/libthr/thread/thr_syscalls.c
Modified: head/lib/libthr/thread/thr_syscalls.c
==============================================================================
--- head/lib/libthr/thread/thr_syscalls.c Fri Aug 20 01:23:17 2010 (r211521)
+++ head/lib/libthr/thread/thr_syscalls.c Fri Aug 20 04:15:05 2010 (r211522)
@@ -242,8 +242,6 @@ __fcntl(int fd, int cmd,...)
int ret;
va_list ap;
- _thr_cancel_enter(curthread);
-
va_start(ap, cmd);
switch (cmd) {
case F_DUPFD:
@@ -257,6 +255,17 @@ __fcntl(int fd, int cmd,...)
case F_GETFL:
ret = __sys_fcntl(fd, cmd);
break;
+
+ case F_OSETLKW:
+ case F_SETLKW:
+ _thr_cancel_enter(curthread);
+#ifdef SYSCALL_COMPAT
+ ret = __fcntl_compat(fd, cmd, va_arg(ap, void *));
+#else
+ ret = __sys_fcntl(fd, cmd, va_arg(ap, void *));
+#endif
+ _thr_cancel_leave(curthread);
+ break;
default:
#ifdef SYSCALL_COMPAT
ret = __fcntl_compat(fd, cmd, va_arg(ap, void *));
@@ -266,8 +275,6 @@ __fcntl(int fd, int cmd,...)
}
va_end(ap);
- _thr_cancel_leave(curthread);
-
return (ret);
}
More information about the svn-src-all
mailing list