linux(4): Replace linux32_copyinuio by freebsd32_copyinuio

MFC after:		1 month
This commit is contained in:
Dmitry Chagin 2023-08-20 10:36:32 +03:00
parent 4e5f2eb0b6
commit c987ff4d7b
3 changed files with 3 additions and 46 deletions

View file

@ -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 */

View file

@ -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);

View file

@ -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