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); } _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"