static int linux_bind(struct thread *td, struct linux_bind_args *args) { struct sockaddr *sa; int error; error = linux_getsockaddr(&sa, PTRIN(args->name), args->namelen); if (error) return (error); error = kern_bind(td, args->s, sa); free(sa, M_SONAME); if (error == EADDRNOTAVAIL && args->namelen != sizeof(struct sockaddr_in)) return (EINVAL); return (error); }
static int linux_bind(struct linux_bind_args *args, int *res) { struct linux_bind_args linux_args; struct sockaddr *sa; int error; error = copyin(args, &linux_args, sizeof(linux_args)); if (error) return (error); error = linux_getsockaddr(&sa, linux_args.name, linux_args.namelen); if (error) return (error); error = kern_bind(linux_args.s, sa); kfree(sa, M_SONAME); return (error); }