int error;
error = kern_socket(uap->domain, uap->type, uap->protocol,
- &uap->sysmsg_result);
+ &uap->sysmsg_iresult);
return (error);
}
if (error)
return (error);
- error = kern_accept(uap->s, 0, &sa, &sa_len, &uap->sysmsg_result);
+ error = kern_accept(uap->s, 0, &sa, &sa_len,
+ &uap->sysmsg_iresult);
if (error == 0)
error = copyout(sa, uap->name, sa_len);
if (sa)
FREE(sa, M_SONAME);
} else {
- error = kern_accept(uap->s, 0, NULL, 0, &uap->sysmsg_result);
+ error = kern_accept(uap->s, 0, NULL, 0,
+ &uap->sysmsg_iresult);
}
return (error);
}
if (error)
return (error);
- error = kern_accept(uap->s, fflags, &sa, &sa_len, &uap->sysmsg_result);
+ error = kern_accept(uap->s, fflags, &sa, &sa_len,
+ &uap->sysmsg_iresult);
if (error == 0)
error = copyout(sa, uap->name, sa_len);
if (sa)
FREE(sa, M_SONAME);
} else {
- error = kern_accept(uap->s, fflags, NULL, 0, &uap->sysmsg_result);
+ error = kern_accept(uap->s, fflags, NULL, 0,
+ &uap->sysmsg_iresult);
}
return (error);
}
int
kern_sendmsg(int s, struct sockaddr *sa, struct uio *auio,
- struct mbuf *control, int flags, int *res)
+ struct mbuf *control, int flags, size_t *res)
{
struct thread *td = curthread;
struct lwp *lp = td->td_lwp;
struct proc *p = td->td_proc;
struct file *fp;
- int len, error;
+ size_t len;
+ int error;
struct socket *so;
#ifdef KTRACE
struct iovec *ktriov = NULL;
error = holdsock(p->p_fd, s, &fp);
if (error)
return (error);
- if (auio->uio_resid < 0) {
- error = EINVAL;
- goto done;
- }
#ifdef KTRACE
if (KTRPOINT(td, KTR_GENIO)) {
int iovlen = auio->uio_iovcnt * sizeof (struct iovec);
auio.uio_td = td;
error = kern_sendmsg(uap->s, sa, &auio, NULL, uap->flags,
- &uap->sysmsg_result);
+ &uap->sysmsg_szresult);
if (sa)
FREE(sa, M_SONAME);
}
error = kern_sendmsg(uap->s, sa, &auio, control, uap->flags,
- &uap->sysmsg_result);
+ &uap->sysmsg_szresult);
cleanup:
iovec_free(&iov, aiov);
*/
int
kern_recvmsg(int s, struct sockaddr **sa, struct uio *auio,
- struct mbuf **control, int *flags, int *res)
+ struct mbuf **control, int *flags, size_t *res)
{
struct thread *td = curthread;
struct proc *p = td->td_proc;
struct file *fp;
- int len, error;
+ size_t len;
+ int error;
int lflags;
struct socket *so;
#ifdef KTRACE
error = holdsock(p->p_fd, s, &fp);
if (error)
return (error);
- if (auio->uio_resid < 0) {
- error = EINVAL;
- goto done;
- }
#ifdef KTRACE
if (KTRPOINT(td, KTR_GENIO)) {
int iovlen = auio->uio_iovcnt * sizeof (struct iovec);
auio.uio_td = td;
error = kern_recvmsg(uap->s, uap->from ? &sa : NULL, &auio, NULL,
- &uap->flags, &uap->sysmsg_result);
+ &uap->flags, &uap->sysmsg_szresult);
if (error == 0 && uap->from) {
/* note: sa may still be NULL */
flags = uap->flags;
- error = kern_recvmsg(uap->s, msg.msg_name ? &sa : NULL, &auio,
- msg.msg_control ? &control : NULL, &flags, &uap->sysmsg_result);
+ error = kern_recvmsg(uap->s,
+ (msg.msg_name ? &sa : NULL), &auio,
+ (msg.msg_control ? &control : NULL), &flags,
+ &uap->sysmsg_szresult);
/*
* Conditionally copyout the name and populate the namelen field.
struct iovec aiov[UIO_SMALLIOV], *iov = NULL;
struct uio auio;
struct mbuf *mheader = NULL;
- off_t hdtr_size = 0, sbytes;
- int error, hbytes = 0, tbytes;
+ size_t hbytes = 0;
+ size_t tbytes;
+ off_t hdtr_size = 0;
+ off_t sbytes;
+ int error;
KKASSERT(p);
crit_exit();
goto done;
}
- uap->sysmsg_result = fd;
+ uap->sysmsg_iresult = fd;
so = sctp_get_peeloff(head, assoc_id, &error);
if (so == NULL) {