On Mon, May 21, 2018 at 03:14:45PM +0200, Martin Pieuchot wrote:
> On 21/05/18(Mon) 14:18, Alexander Bluhm wrote:
> > On Mon, May 21, 2018 at 01:41:45PM +0200, Martin Pieuchot wrote:
> > > Diff below fixes that, ok?
> > 
> > This part modifies the struct socket.  It would run without
> > netlock in your diff.
> 
> Indeed, updated diff.

OK bluhm@

> Index: kern/uipc_syscalls.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/uipc_syscalls.c,v
> retrieving revision 1.170
> diff -u -p -r1.170 uipc_syscalls.c
> --- kern/uipc_syscalls.c      8 May 2018 08:53:41 -0000       1.170
> +++ kern/uipc_syscalls.c      21 May 2018 13:09:28 -0000
> @@ -340,24 +340,25 @@ doaccept(struct proc *p, int sock, struc
>       error = soaccept(so, nam);
>       if (!error && name != NULL)
>               error = copyaddrout(p, nam, name, namelen, anamelen);
> +out:
>       if (!error) {
>               if (nflag & FNONBLOCK)
>                       so->so_state |= SS_NBIO;
>               else
>                       so->so_state &= ~SS_NBIO;
> +             sounlock(s);
>               fp->f_data = so;
>               FILE_SET_MATURE(fp, p);
>               *retval = tmpfd;
> -     }
> -out:
> -     sounlock(s);
> -     m_freem(nam);
> -     if (error) {
> +     } else {
> +             sounlock(s);
>               fdplock(fdp);
>               fdremove(fdp, tmpfd);
>               closef(fp, p);
>               fdpunlock(fdp);
>       }
> +
> +     m_freem(nam);
>       FRELE(headfp, p);
>       return (error);
>  }

Reply via email to