diff options
author | alc <alc@FreeBSD.org> | 2003-08-01 02:21:54 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-08-01 02:21:54 +0000 |
commit | 7199d3e24fde7d072d014d516532d1c9751df5b2 (patch) | |
tree | 8197602a542d2c698ece4dfc0e8379d74a0194fb /sys/kern/sys_generic.c | |
parent | 62a83c402223f5a12dbb7a1aa092e0b45d9f5f40 (diff) | |
download | FreeBSD-src-7199d3e24fde7d072d014d516532d1c9751df5b2.zip FreeBSD-src-7199d3e24fde7d072d014d516532d1c9751df5b2.tar.gz |
Remove Giant from writev(2). Eliminate trivial style differences between
writev(2) and readv(2).
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r-- | sys/kern/sys_generic.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index e3393f3..eec9c76 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -468,25 +468,20 @@ writev(td, uap) struct uio ktruio; #endif - mtx_lock(&Giant); - if ((error = fget_write(td, uap->fd, &fp)) != 0) { - error = EBADF; - goto done2; - } + if ((error = fget_write(td, uap->fd, &fp)) != 0) + return (EBADF); + needfree = NULL; /* note: can't use iovlen until iovcnt is validated */ iovlen = uap->iovcnt * sizeof (struct iovec); if (uap->iovcnt > UIO_SMALLIOV) { if (uap->iovcnt > UIO_MAXIOV) { - needfree = NULL; error = EINVAL; goto done; } MALLOC(iov, struct iovec *, iovlen, M_IOV, M_WAITOK); needfree = iov; - } else { + } else iov = aiov; - needfree = NULL; - } auio.uio_iov = iov; auio.uio_iovcnt = uap->iovcnt; auio.uio_rw = UIO_WRITE; @@ -543,8 +538,6 @@ done: fdrop(fp, td); if (needfree) FREE(needfree, M_IOV); -done2: - mtx_unlock(&Giant); return (error); } |