Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Sep 2016 00:34:40 +0200
From:      Mariusz Zaborski <oshogbo@freebsd.org>
To:        Ruslan Bukin <ruslan.bukin@cl.cam.ac.uk>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r306174 - in head/sys: compat/cloudabi compat/linux kern netinet sys
Message-ID:  <CAGOYWV_wo4wO7FF6Cvuo6%2BAfB6G35ABEhnRp%2B7b9LSpOtRYy6g@mail.gmail.com>
In-Reply-To: <20160922161102.GA71374@bsdpad.com>
References:  <201609220958.u8M9wkfh034759@repo.freebsd.org> <20160922143412.GA69951@bsdpad.com> <CAGOYWV_9hJpggps37fRB4pzYzSn4gSsv6n=xvvnkPfyvZGosMw@mail.gmail.com> <20160922145625.GA70214@bsdpad.com> <CAGOYWV9Tf8n=u3ynhmSNqbLHGd1uGf_So-ScUNsNmxuX9B_6sA@mail.gmail.com> <20160922152153.GA70762@bsdpad.com> <20160922161102.GA71374@bsdpad.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a1144375aa10e4c053d20446c
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Thanks, I was able to reproduce that :)
I attached the patch. Could you please confirm that it fix the problem?

Thank you and sorry for inconveniences,
Mariusz

On 22 September 2016 at 18:11, Ruslan Bukin <ruslan.bukin@cl.cam.ac.uk> wro=
te:
> I have just tested this with MIPS64EL and the result is the same.
> So you can try both EL or EB
>
> e.g. make -j16 TARGET=3Dmips TARGET_ARCH=3Dmips64el KERNCONF=3DMALTA64 bu=
ildkernel
>
> Ruslan
>
> On Thu, Sep 22, 2016 at 03:21:53PM +0000, Ruslan Bukin wrote:
>> Hi
>>
>> It reports nothing. Yes I use qemu:
>> /home/rb743/dev/qemu/qemu/build1/mips64-softmmu/qemu-system-mips64 -M ma=
lta -kernel ~/obj/mips.mips64/home/rb743/dev/freebsd-mips/sys/MALTA64/kerne=
l -hda /home/rb743/world-mips64eb/mips64eb.img -nographic -smp 1 -cpu 5kf -=
net nic -net user -m 2048M -redir tcp:4022::22
>>
>> Ruslan
>>
>> On Thu, Sep 22, 2016 at 05:11:07PM +0200, Mariusz Zaborski wrote:
>> > I tested it on the mips for Malta kernel and it's works fine. I will
>> > try to do it on mips64, are you using qemu to test it?
>> > What is ctrl + t reporting you?
>> >
>> >
>> > On 22 September 2016 at 16:56, Ruslan Bukin <ruslan.bukin@cl.cam.ac.uk=
> wrote:
>> > > May be. The next line should be
>> > > /etc/rc: WARNING: $hostname is not set -- see rc.conf(5).
>> > >
>> > > but it hangs before this line
>> > >
>> > > Ruslan
>> > >
>> > > On Thu, Sep 22, 2016 at 04:39:16PM +0200, Mariusz Zaborski wrote:
>> > >> Hi Ruslan,
>> > >>
>> > >> Does it hang on some network script?
>> > >>
>> > >> Thanks,
>> > >> Mariusz
>> > >>
>> > >>
>> > >> On 22 September 2016 at 16:34, Ruslan Bukin <ruslan.bukin@cl.cam.ac=
.uk> wrote:
>> > >> > Hi Mariusz
>> > >> >
>> > >> > my MIPS64EB kernel stops booting with this
>> > >> >
>> > >> > somewhere here:
>> > >> > [...]
>> > >> > Starting file system checks:
>> > >> > /dev/ada0: 20369 files, 794696 used, 7573573 free (933 frags, 946=
580 blocks, 0.0% fragmentation)
>> > >> > Mounting local filesystems:.
>> > >> > ELF ldconfig path: /lib /usr/lib /usr/lib/compat
>> > >> > random: unblocking device.
>> > >> >
>> > >> > any idea ? (should I rebuild something?)
>> > >> >
>> > >> > thanks!
>> > >> >
>> > >> > Ruslan
>> > >> >
>> > >> > On Thu, Sep 22, 2016 at 09:58:46AM +0000, Mariusz Zaborski wrote:
>> > >> >> Author: oshogbo
>> > >> >> Date: Thu Sep 22 09:58:46 2016
>> > >> >> New Revision: 306174
>> > >> >> URL: https://svnweb.freebsd.org/changeset/base/306174
>> > >> >>
>> > >> >> Log:
>> > >> >>   capsicum: propagate rights on accept(2)
>> > >> >>
>> > >> >>   Descriptor returned by accept(2) should inherits capabilities =
rights from
>> > >> >>   the listening socket.
>> > >> >>
>> > >> >>   PR:         201052
>> > >> >>   Reviewed by:        emaste, jonathan
>> > >> >>   Discussed with:     many
>> > >> >>   Differential Revision:      https://reviews.freebsd.org/D7724
>> > >> >>
>> > >> >> Modified:
>> > >> >>   head/sys/compat/cloudabi/cloudabi_sock.c
>> > >> >>   head/sys/compat/linux/linux_socket.c
>> > >> >>   head/sys/kern/kern_sendfile.c
>> > >> >>   head/sys/kern/uipc_syscalls.c
>> > >> >>   head/sys/netinet/sctp_syscalls.c
>> > >> >>   head/sys/sys/socketvar.h
>> > >> >>
>> > >> >> Modified: head/sys/compat/cloudabi/cloudabi_sock.c
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/compat/cloudabi/cloudabi_sock.c  Thu Sep 22 09:33:2=
2 2016        (r306173)
>> > >> >> +++ head/sys/compat/cloudabi/cloudabi_sock.c  Thu Sep 22 09:58:4=
6 2016        (r306174)
>> > >> >> @@ -210,7 +210,7 @@ cloudabi_sys_sock_stat_get(struct thread
>> > >> >>       int error;
>> > >> >>
>> > >> >>       error =3D getsock_cap(td, uap->sock, cap_rights_init(&righ=
ts,
>> > >> >> -         CAP_GETSOCKOPT, CAP_GETPEERNAME, CAP_GETSOCKNAME), &fp=
, NULL);
>> > >> >> +         CAP_GETSOCKOPT, CAP_GETPEERNAME, CAP_GETSOCKNAME), &fp=
, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >>
>> > >> >> Modified: head/sys/compat/linux/linux_socket.c
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/compat/linux/linux_socket.c      Thu Sep 22 09:33:2=
2 2016        (r306173)
>> > >> >> +++ head/sys/compat/linux/linux_socket.c      Thu Sep 22 09:58:4=
6 2016        (r306174)
>> > >> >> @@ -855,7 +855,7 @@ linux_accept_common(struct thread *td, i
>> > >> >>               if (error =3D=3D EFAULT && namelen !=3D sizeof(str=
uct sockaddr_in))
>> > >> >>                       return (EINVAL);
>> > >> >>               if (error =3D=3D EINVAL) {
>> > >> >> -                     error1 =3D getsock_cap(td, s, &rights, &fp=
, NULL);
>> > >> >> +                     error1 =3D getsock_cap(td, s, &rights, &fp=
, NULL, NULL);
>> > >> >>                       if (error1 !=3D 0)
>> > >> >>                               return (error1);
>> > >> >>                       so =3D fp->f_data;
>> > >> >>
>> > >> >> Modified: head/sys/kern/kern_sendfile.c
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/kern/kern_sendfile.c     Thu Sep 22 09:33:22 2016  =
      (r306173)
>> > >> >> +++ head/sys/kern/kern_sendfile.c     Thu Sep 22 09:58:46 2016  =
      (r306174)
>> > >> >> @@ -502,7 +502,7 @@ sendfile_getsock(struct thread *td, int
>> > >> >>        * The socket must be a stream socket and connected.
>> > >> >>        */
>> > >> >>       error =3D getsock_cap(td, s, cap_rights_init(&rights, CAP_=
SEND),
>> > >> >> -         sock_fp, NULL);
>> > >> >> +         sock_fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       *so =3D (*sock_fp)->f_data;
>> > >> >>
>> > >> >> Modified: head/sys/kern/uipc_syscalls.c
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/kern/uipc_syscalls.c     Thu Sep 22 09:33:22 2016  =
      (r306173)
>> > >> >> +++ head/sys/kern/uipc_syscalls.c     Thu Sep 22 09:58:46 2016  =
      (r306174)
>> > >> >> @@ -89,20 +89,23 @@ static int sockargs(struct mbuf **, char
>> > >> >>  /*
>> > >> >>   * Convert a user file descriptor to a kernel file entry and ch=
eck if required
>> > >> >>   * capability rights are present.
>> > >> >> + * If required copy of current set of capability rights is retu=
rned.
>> > >> >>   * A reference on the file entry is held upon returning.
>> > >> >>   */
>> > >> >>  int
>> > >> >>  getsock_cap(struct thread *td, int fd, cap_rights_t *rightsp,
>> > >> >> -    struct file **fpp, u_int *fflagp)
>> > >> >> +    struct file **fpp, u_int *fflagp, struct filecaps *havecaps=
p)
>> > >> >>  {
>> > >> >>       struct file *fp;
>> > >> >>       int error;
>> > >> >>
>> > >> >> -     error =3D fget_unlocked(td->td_proc->p_fd, fd, rightsp, &f=
p, NULL);
>> > >> >> +     error =3D fget_cap(td, fd, rightsp, &fp, havecapsp);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       if (fp->f_type !=3D DTYPE_SOCKET) {
>> > >> >>               fdrop(fp, td);
>> > >> >> +             if (havecapsp !=3D NULL)
>> > >> >> +                     filecaps_free(havecapsp);
>> > >> >>               return (ENOTSOCK);
>> > >> >>       }
>> > >> >>       if (fflagp !=3D NULL)
>> > >> >> @@ -188,7 +191,7 @@ kern_bindat(struct thread *td, int dirfd
>> > >> >>       AUDIT_ARG_FD(fd);
>> > >> >>       AUDIT_ARG_SOCKADDR(td, dirfd, sa);
>> > >> >>       error =3D getsock_cap(td, fd, cap_rights_init(&rights, CAP=
_BIND),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >> @@ -235,7 +238,7 @@ sys_listen(struct thread *td, struct lis
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(uap->s);
>> > >> >>       error =3D getsock_cap(td, uap->s, cap_rights_init(&rights,=
 CAP_LISTEN),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error =3D=3D 0) {
>> > >> >>               so =3D fp->f_data;
>> > >> >>  #ifdef MAC
>> > >> >> @@ -308,6 +311,7 @@ kern_accept4(struct thread *td, int s, s
>> > >> >>       struct file *headfp, *nfp =3D NULL;
>> > >> >>       struct sockaddr *sa =3D NULL;
>> > >> >>       struct socket *head, *so;
>> > >> >> +     struct filecaps fcaps;
>> > >> >>       cap_rights_t rights;
>> > >> >>       u_int fflag;
>> > >> >>       pid_t pgid;
>> > >> >> @@ -318,7 +322,7 @@ kern_accept4(struct thread *td, int s, s
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(s);
>> > >> >>       error =3D getsock_cap(td, s, cap_rights_init(&rights, CAP_=
ACCEPT),
>> > >> >> -         &headfp, &fflag);
>> > >> >> +         &headfp, &fflag, &fcaps);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       head =3D headfp->f_data;
>> > >> >> @@ -331,7 +335,8 @@ kern_accept4(struct thread *td, int s, s
>> > >> >>       if (error !=3D 0)
>> > >> >>               goto done;
>> > >> >>  #endif
>> > >> >> -     error =3D falloc(td, &nfp, &fd, (flags & SOCK_CLOEXEC) ? O=
_CLOEXEC : 0);
>> > >> >> +     error =3D falloc_caps(td, &nfp, &fd,
>> > >> >> +         (flags & SOCK_CLOEXEC) ? O_CLOEXEC : 0, &fcaps);
>> > >> >>       if (error !=3D 0)
>> > >> >>               goto done;
>> > >> >>       ACCEPT_LOCK();
>> > >> >> @@ -440,6 +445,8 @@ noconnection:
>> > >> >>        * a reference on nfp to the caller on success if they req=
uest it.
>> > >> >>        */
>> > >> >>  done:
>> > >> >> +     if (nfp =3D=3D NULL)
>> > >> >> +             filecaps_free(&fcaps);
>> > >> >>       if (fp !=3D NULL) {
>> > >> >>               if (error =3D=3D 0) {
>> > >> >>                       *fp =3D nfp;
>> > >> >> @@ -511,7 +518,7 @@ kern_connectat(struct thread *td, int di
>> > >> >>       AUDIT_ARG_FD(fd);
>> > >> >>       AUDIT_ARG_SOCKADDR(td, dirfd, sa);
>> > >> >>       error =3D getsock_cap(td, fd, cap_rights_init(&rights, CAP=
_CONNECT),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >> @@ -754,7 +761,7 @@ kern_sendit(struct thread *td, int s, st
>> > >> >>               AUDIT_ARG_SOCKADDR(td, AT_FDCWD, mp->msg_name);
>> > >> >>               cap_rights_set(&rights, CAP_CONNECT);
>> > >> >>       }
>> > >> >> -     error =3D getsock_cap(td, s, &rights, &fp, NULL);
>> > >> >> +     error =3D getsock_cap(td, s, &rights, &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D (struct socket *)fp->f_data;
>> > >> >> @@ -923,7 +930,7 @@ kern_recvit(struct thread *td, int s, st
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(s);
>> > >> >>       error =3D getsock_cap(td, s, cap_rights_init(&rights, CAP_=
RECV),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >> @@ -1198,7 +1205,7 @@ sys_shutdown(struct thread *td, struct s
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(uap->s);
>> > >> >>       error =3D getsock_cap(td, uap->s, cap_rights_init(&rights,=
 CAP_SHUTDOWN),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error =3D=3D 0) {
>> > >> >>               so =3D fp->f_data;
>> > >> >>               error =3D soshutdown(so, uap->how);
>> > >> >> @@ -1257,7 +1264,7 @@ kern_setsockopt(struct thread *td, int s
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(s);
>> > >> >>       error =3D getsock_cap(td, s, cap_rights_init(&rights, CAP_=
SETSOCKOPT),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error =3D=3D 0) {
>> > >> >>               so =3D fp->f_data;
>> > >> >>               error =3D sosetopt(so, &sopt);
>> > >> >> @@ -1323,7 +1330,7 @@ kern_getsockopt(struct thread *td, int s
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(s);
>> > >> >>       error =3D getsock_cap(td, s, cap_rights_init(&rights, CAP_=
GETSOCKOPT),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error =3D=3D 0) {
>> > >> >>               so =3D fp->f_data;
>> > >> >>               error =3D sogetopt(so, &sopt);
>> > >> >> @@ -1376,7 +1383,7 @@ kern_getsockname(struct thread *td, int
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(fd);
>> > >> >>       error =3D getsock_cap(td, fd, cap_rights_init(&rights, CAP=
_GETSOCKNAME),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >> @@ -1463,7 +1470,7 @@ kern_getpeername(struct thread *td, int
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(fd);
>> > >> >>       error =3D getsock_cap(td, fd, cap_rights_init(&rights, CAP=
_GETPEERNAME),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>       so =3D fp->f_data;
>> > >> >>
>> > >> >> Modified: head/sys/netinet/sctp_syscalls.c
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/netinet/sctp_syscalls.c  Thu Sep 22 09:33:22 2016  =
      (r306173)
>> > >> >> +++ head/sys/netinet/sctp_syscalls.c  Thu Sep 22 09:58:46 2016  =
      (r306174)
>> > >> >> @@ -248,7 +248,7 @@ sys_sctp_generic_sendmsg (td, uap)
>> > >> >>       }
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(uap->sd);
>> > >> >> -     error =3D getsock_cap(td, uap->sd, &rights, &fp, NULL);
>> > >> >> +     error =3D getsock_cap(td, uap->sd, &rights, &fp, NULL, NUL=
L);
>> > >> >>       if (error !=3D 0)
>> > >> >>               goto sctp_bad;
>> > >> >>  #ifdef KTRACE
>> > >> >> @@ -361,7 +361,7 @@ sys_sctp_generic_sendmsg_iov(td, uap)
>> > >> >>       }
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(uap->sd);
>> > >> >> -     error =3D getsock_cap(td, uap->sd, &rights, &fp, NULL);
>> > >> >> +     error =3D getsock_cap(td, uap->sd, &rights, &fp, NULL, NUL=
L);
>> > >> >>       if (error !=3D 0)
>> > >> >>               goto sctp_bad1;
>> > >> >>
>> > >> >> @@ -477,7 +477,7 @@ sys_sctp_generic_recvmsg(td, uap)
>> > >> >>
>> > >> >>       AUDIT_ARG_FD(uap->sd);
>> > >> >>       error =3D getsock_cap(td, uap->sd, cap_rights_init(&rights=
, CAP_RECV),
>> > >> >> -         &fp, NULL);
>> > >> >> +         &fp, NULL, NULL);
>> > >> >>       if (error !=3D 0)
>> > >> >>               return (error);
>> > >> >>  #ifdef COMPAT_FREEBSD32
>> > >> >>
>> > >> >> Modified: head/sys/sys/socketvar.h
>> > >> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
>> > >> >> --- head/sys/sys/socketvar.h  Thu Sep 22 09:33:22 2016        (r=
306173)
>> > >> >> +++ head/sys/sys/socketvar.h  Thu Sep 22 09:58:46 2016        (r=
306174)
>> > >> >> @@ -321,6 +321,7 @@ extern u_long     sb_max;
>> > >> >>  extern so_gen_t so_gencnt;
>> > >> >>
>> > >> >>  struct file;
>> > >> >> +struct filecaps;
>> > >> >>  struct filedesc;
>> > >> >>  struct mbuf;
>> > >> >>  struct sockaddr;
>> > >> >> @@ -340,7 +341,7 @@ struct uio;
>> > >> >>   */
>> > >> >>  int  getsockaddr(struct sockaddr **namp, caddr_t uaddr, size_t =
len);
>> > >> >>  int  getsock_cap(struct thread *td, int fd, cap_rights_t *right=
sp,
>> > >> >> -         struct file **fpp, u_int *fflagp);
>> > >> >> +         struct file **fpp, u_int *fflagp, struct filecaps *hav=
ecaps);
>> > >> >>  void soabort(struct socket *so);
>> > >> >>  int  soaccept(struct socket *so, struct sockaddr **nam);
>> > >> >>  void soaio_enqueue(struct task *task);
>> > >> >>
>> >
>>

--001a1144375aa10e4c053d20446c
Content-Type: text/x-patch; charset=US-ASCII; name="fget_cap.patch"
Content-Disposition: attachment; filename="fget_cap.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_itex0rw30

ZGlmZiAtLWdpdCBhL3N5cy9rZXJuL2tlcm5fZGVzY3JpcC5jIGIvc3lzL2tlcm4va2Vybl9kZXNj
cmlwLmMKaW5kZXggMzEwNzJmMS4uNDcyNDVlNyAxMDA2NDQKLS0tIGEvc3lzL2tlcm4va2Vybl9k
ZXNjcmlwLmMKKysrIGIvc3lzL2tlcm4va2Vybl9kZXNjcmlwLmMKQEAgLTI0ODEsMTIgKzI0ODEs
MTYgQEAgaW50CiBmZ2V0X2NhcChzdHJ1Y3QgdGhyZWFkICp0ZCwgaW50IGZkLCBjYXBfcmlnaHRz
X3QgKm5lZWRyaWdodHNwLAogICAgIHN0cnVjdCBmaWxlICoqZnBwLCBzdHJ1Y3QgZmlsZWNhcHMg
KmhhdmVjYXBzcCkKIHsKLQlzdHJ1Y3QgZmlsZWRlc2MgKmZkcDsKLQlzdHJ1Y3QgZmlsZSAqZnA7
CisJc3RydWN0IGZpbGVkZXNjICpmZHAgPSB0ZC0+dGRfcHJvYy0+cF9mZDsKIAlpbnQgZXJyb3I7
CisjaWZuZGVmIENBUEFCSUxJVElFUworCWVycm9yID0gZmdldF91bmxvY2tlZChmZHAsIGZkLCBu
ZWVkcmlnaHRzcCwgZnBwLCBOVUxMKTsKKwlpZiAoZXJyb3IgPT0gMCAmJiBoYXZlY2Fwc3AgIT0g
TlVMTCkKKwkJZmlsZWNhcHNfZmlsbChoYXZlY2Fwc3ApOworI2Vsc2UKKwlzdHJ1Y3QgZmlsZSAq
ZnA7CiAJc2VxX3Qgc2VxOwogCi0JZmRwID0gdGQtPnRkX3Byb2MtPnBfZmQ7CiAJZm9yICg7Oykg
ewogCQllcnJvciA9IGZnZXRfdW5sb2NrZWQoZmRwLCBmZCwgbmVlZHJpZ2h0c3AsICZmcCwgJnNl
cSk7CiAJCWlmIChlcnJvciAhPSAwKQpAQCAtMjUxMiw3ICsyNTE2LDcgQEAgZ2V0X2xvY2tlZDoK
IAlGSUxFREVTQ19TTE9DSyhmZHApOwogCWVycm9yID0gZmdldF9jYXBfbG9ja2VkKGZkcCwgZmQs
IG5lZWRyaWdodHNwLCBmcHAsIGhhdmVjYXBzcCk7CiAJRklMRURFU0NfU1VOTE9DSyhmZHApOwot
CisjZW5kaWYKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAo=
--001a1144375aa10e4c053d20446c--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGOYWV_wo4wO7FF6Cvuo6%2BAfB6G35ABEhnRp%2B7b9LSpOtRYy6g>