git: c987ff4d7bd2 - main - linux(4): Replace linux32_copyinuio by freebsd32_copyinuio
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 20 Aug 2023 07:37:54 UTC
The branch main has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=c987ff4d7bd25e9186ffca84c7e873fd7382a1c7 commit c987ff4d7bd25e9186ffca84c7e873fd7382a1c7 Author: Dmitry Chagin <dchagin@FreeBSD.org> AuthorDate: 2023-08-20 07:36:32 +0000 Commit: Dmitry Chagin <dchagin@FreeBSD.org> CommitDate: 2023-08-20 07:36:32 +0000 linux(4): Replace linux32_copyinuio by freebsd32_copyinuio MFC after: 1 month --- sys/amd64/linux32/linux.h | 2 -- sys/amd64/linux32/linux32_machdep.c | 43 +------------------------------------ sys/compat/linux/linux_file.c | 4 ++-- 3 files changed, 3 insertions(+), 46 deletions(-) diff --git a/sys/amd64/linux32/linux.h b/sys/amd64/linux32/linux.h index 1feac8788292..382d010f9ed8 100644 --- a/sys/amd64/linux32/linux.h +++ b/sys/amd64/linux32/linux.h @@ -398,8 +398,6 @@ struct l_iovec32 { int linux32_copyiniov(struct l_iovec32 *iovp32, l_ulong iovcnt, struct iovec **iovp, int error); -int linux32_copyinuio(struct l_iovec32 *iovp, l_ulong iovcnt, - struct uio **uiop); int linux_copyout_rusage(struct rusage *ru, void *uaddr); #endif /* _KERNEL */ diff --git a/sys/amd64/linux32/linux32_machdep.c b/sys/amd64/linux32/linux32_machdep.c index ac8234503bdd..e0364f1e00d1 100644 --- a/sys/amd64/linux32/linux32_machdep.c +++ b/sys/amd64/linux32/linux32_machdep.c @@ -113,47 +113,6 @@ linux_copyout_rusage(struct rusage *ru, void *uaddr) CTASSERT(sizeof(struct l_iovec32) == 8); -int -linux32_copyinuio(struct l_iovec32 *iovp, l_ulong iovcnt, struct uio **uiop) -{ - struct l_iovec32 iov32; - struct iovec *iov; - struct uio *uio; - uint32_t iovlen; - int error, i; - - *uiop = NULL; - if (iovcnt > UIO_MAXIOV) - return (EINVAL); - iovlen = iovcnt * sizeof(struct iovec); - uio = malloc(iovlen + sizeof(*uio), M_IOV, M_WAITOK); - iov = (struct iovec *)(uio + 1); - for (i = 0; i < iovcnt; i++) { - error = copyin(&iovp[i], &iov32, sizeof(struct l_iovec32)); - if (error) { - free(uio, M_IOV); - return (error); - } - iov[i].iov_base = PTRIN(iov32.iov_base); - iov[i].iov_len = iov32.iov_len; - } - uio->uio_iov = iov; - uio->uio_iovcnt = iovcnt; - uio->uio_segflg = UIO_USERSPACE; - uio->uio_offset = -1; - uio->uio_resid = 0; - for (i = 0; i < iovcnt; i++) { - if (iov->iov_len > INT_MAX - uio->uio_resid) { - free(uio, M_IOV); - return (EINVAL); - } - uio->uio_resid += iov->iov_len; - iov++; - } - *uiop = uio; - return (0); -} - int linux32_copyiniov(struct l_iovec32 *iovp32, l_ulong iovcnt, struct iovec **iovp, int error) @@ -188,7 +147,7 @@ linux_readv(struct thread *td, struct linux_readv_args *uap) struct uio *auio; int error; - error = linux32_copyinuio(uap->iovp, uap->iovcnt, &auio); + error = freebsd32_copyinuio(uap->iovp, uap->iovcnt, &auio); if (error) return (error); error = kern_readv(td, uap->fd, auio); diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c index c3b69e54d257..6eab8980a5c5 100644 --- a/sys/compat/linux/linux_file.c +++ b/sys/compat/linux/linux_file.c @@ -1031,7 +1031,7 @@ linux_preadv(struct thread *td, struct linux_preadv_args *uap) if (offset < 0) return (EINVAL); #ifdef COMPAT_LINUX32 - error = linux32_copyinuio(PTRIN(uap->vec), uap->vlen, &auio); + error = freebsd32_copyinuio(PTRIN(uap->vec), uap->vlen, &auio); #else error = copyinuio(uap->vec, uap->vlen, &auio); #endif @@ -1058,7 +1058,7 @@ linux_pwritev(struct thread *td, struct linux_pwritev_args *uap) if (offset < 0) return (EINVAL); #ifdef COMPAT_LINUX32 - error = linux32_copyinuio(PTRIN(uap->vec), uap->vlen, &auio); + error = freebsd32_copyinuio(PTRIN(uap->vec), uap->vlen, &auio); #else error = copyinuio(uap->vec, uap->vlen, &auio); #endif