On 11/12/17(Mon) 09:29, Martin Pieuchot wrote:
> It's complicated to see which socket buffer associated to which socket
> need protection. So inline the defines, ok?
Anyone?
>
> Index: kern/uipc_usrreq.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/uipc_usrreq.c,v
> retrieving revision 1.120
> diff -u -p -r1.120 uipc_usrreq.c
> --- kern/uipc_usrreq.c 2 Nov 2017 14:01:18 -0000 1.120
> +++ kern/uipc_usrreq.c 11 Dec 2017 08:27:06 -0000
> @@ -231,8 +231,6 @@ uipc_usrreq(struct socket *so, int req,
>
> case SOCK_STREAM:
> case SOCK_SEQPACKET:
> -#define rcv (&so2->so_rcv)
> -#define snd (&so->so_snd)
> if (so->so_state & SS_CANTSENDMORE) {
> error = EPIPE;
> break;
> @@ -248,22 +246,21 @@ uipc_usrreq(struct socket *so, int req,
> * Wake up readers.
> */
> if (control) {
> - if (sbappendcontrol(so2, rcv, m, control))
> + if (sbappendcontrol(so2, &so2->so_rcv, m,
> + control)) {
> control = NULL;
> - else {
> + } else {
> error = ENOBUFS;
> break;
> }
> } else if (so->so_type == SOCK_SEQPACKET)
> - sbappendrecord(so2, rcv, m);
> + sbappendrecord(so2, &so2->so_rcv, m);
> else
> - sbappend(so2, rcv, m);
> - snd->sb_mbcnt = rcv->sb_mbcnt;
> - snd->sb_cc = rcv->sb_cc;
> + sbappend(so2, &so2->so_rcv, m);
> + so->so_snd.sb_mbcnt = so2->so_rcv.sb_mbcnt;
> + so->so_snd.sb_cc = so2->so_rcv.sb_cc;
> sorwakeup(so2);
> m = NULL;
> -#undef snd
> -#undef rcv
> break;
>
> default:
>