diff options
author | phk <phk@FreeBSD.org> | 2004-11-07 15:59:27 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-11-07 15:59:27 +0000 |
commit | e65c41f01eb13b75567123a3634ece3b7aea79a0 (patch) | |
tree | d9743946f8826d5e836a33e385aaa16ff8d81c5a | |
parent | 02a22fcc9e339cebd74af8233fc2949356c09fda (diff) | |
download | FreeBSD-src-e65c41f01eb13b75567123a3634ece3b7aea79a0.zip FreeBSD-src-e65c41f01eb13b75567123a3634ece3b7aea79a0.tar.gz |
More sensible FILEDESC_ locking.
-rw-r--r-- | sys/compat/svr4/svr4_filio.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/compat/svr4/svr4_filio.c b/sys/compat/svr4/svr4_filio.c index c15c5b4..ef0352d 100644 --- a/sys/compat/svr4/svr4_filio.c +++ b/sys/compat/svr4/svr4_filio.c @@ -209,14 +209,15 @@ svr4_fil_ioctl(fp, td, retval, fd, cmd, data) *retval = 0; - FILEDESC_LOCK(fdp); switch (cmd) { case SVR4_FIOCLEX: + FILEDESC_LOCK(fdp); fdp->fd_ofileflags[fd] |= UF_EXCLOSE; FILEDESC_UNLOCK(fdp); return 0; case SVR4_FIONCLEX: + FILEDESC_LOCK(fdp); fdp->fd_ofileflags[fd] &= ~UF_EXCLOSE; FILEDESC_UNLOCK(fdp); return 0; @@ -226,7 +227,6 @@ svr4_fil_ioctl(fp, td, retval, fd, cmd, data) case SVR4_FIOASYNC: case SVR4_FIONBIO: case SVR4_FIONREAD: - FILEDESC_UNLOCK(fdp); if ((error = copyin(data, &num, sizeof(num))) != 0) return error; @@ -249,7 +249,6 @@ svr4_fil_ioctl(fp, td, retval, fd, cmd, data) return copyout(&num, data, sizeof(num)); default: - FILEDESC_UNLOCK(fdp); DPRINTF(("Unknown svr4 filio %lx\n", cmd)); return 0; /* ENOSYS really */ } |