Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Apr 2017 23:58:55 -0700
From:      Peter Wemm <peter@wemm.org>
To:        "Ngie Cooper (yaneurabeya)" <yaneurabeya@gmail.com>
Cc:        svn-src-all@freebsd.org, src-committers <src-committers@freebsd.org>, Hiroki Sato <hrs@freebsd.org>, Hiren Panchasara <hiren@freebsd.org>, svn-src-head@freebsd.org, Maxim Sobolev <sobomax@sippysoft.com>
Subject:   Re: svn commit: r316874 - head/sys/kern
Message-ID:  <11221477.gRA6BXfcIE@overcee.wemm.org>
In-Reply-To: <CDFAE7DD-8F3A-43D9-AAD5-DF9FABEC4669@gmail.com>
References:  <201704141723.v3EHNS3B043902@repo.freebsd.org> <2109294.KVn8xeR1jZ@overcee.wemm.org> <CDFAE7DD-8F3A-43D9-AAD5-DF9FABEC4669@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart10292938.hy7NMZA4S1
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="us-ascii"

On Friday, April 14, 2017 08:13:52 PM Ngie Cooper wrote:
> > On Apr 14, 2017, at 20:12, Peter Wemm <peter@wemm.org> wrote:
> >=20
> > On Friday, April 14, 2017 07:36:55 PM Peter Wemm wrote:
> >> On Friday, April 14, 2017 02:14:16 PM Ngie Cooper wrote:
> >>>> On Apr 14, 2017, at 14:10, Maxim Sobolev <sobomax@sippysoft.com>=
 wrote:
> >>>>=20
> >>>> Peter, Ngie,
> >>>>=20
> >>>> Looks like out of that refactoring came a logical bug that is pr=
esent
> >>>> in
> >>>> the head, which causes syslod to first to shutdown the socket fo=
r
> >>>> reading
> >>>> and then try to select/recv on it (which is somewhat stupid). An=
d that
> >>>> issue has been masked by shutdown() on datagram socket becoming
> >>>> effectively a NOP in 11 & head 20 months ago. It only affects he=
ad
> >>>> though, 11-stable still has the old code which does not include =
that
> >>>> half-closed socket into the select list. Attached patch is expec=
ted to
> >>>> fix head, Peter, it would be nice if you can give it a try (rest=
oring
> >>>> latest changes into uipc_sockets.c) and let me know if it helps.=

> >>>>=20
> >>>> Thanks!
> >>>=20
> >>> CCing hrs@ for input as he did the refactoring.
> >>> Thanks!
> >>> -Ngie
> >>>=20
> >>> PS LGTM with the change. Will wait for feedback from wemm@.
> >>=20
> >> This is definitely not working.  I get ENOSPC  and listen queue ov=
erflows
> >> on /var/run/logpriv now.
> >>=20
> >> Grabbing an old 10.3 /usr/sbin/syslogd and placing it on the top o=
f the
> >> 12.x one worked fine, aside from the include statements.
> >=20
> > This can't be right:
> >                 if (SecureMode || res->ai_family =3D=3D AF_LOCAL) {=

> >                =20
> >                        /* Forbid communication in secure mode. */
> >                        if (shutdown(s, SHUT_RD) < 0 &&
> >                       =20
> >                            errno !=3D ENOTCONN) {
> >                           =20
> >                                logerror("shutdown");
> >                                if (!Debug)
> >                               =20
> >                                        die(0);
> >                       =20
> >                        }
> >                        dprintf("listening on socket\n");
> >                        sl_recv =3D NULL;
> >                  =20
> >                   }
> >=20
> > This appears to disable unix domain sockets like /var/run/log and
> > /var/run/logpriv.
>=20
> ACK. This looks like a fun bug.

> -Ngie

I suspect it's meant to be "if (SecureMode && res->ai_family !=3D AF_LO=
CAL) {"=20
as a simple logic inversion error of another line earlier.  However the=
re's an=20
awful lot of strange things in this code.

1) listen(s, 5) - on datagram sockets.
2) dprintf("shutdown") in code regardless of whether the shutdown is go=
ing to=20
happen.
3) dprintf("listening on socket") in code that only happens when we're =
NOT=20
going to listen.
4) dprintf("sending on socket") in the code path when we're going to li=
sten.
5) shutdown on all unix domain sockets, regardless of securemode..

This code block makes my head spin.

=2D-=20
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI=
6FJV
UTF-8: for when a ' or ... just won\342\200\231t do\342\200\246
--nextPart10292938.hy7NMZA4S1
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iQEzBAABCAAdFiEEBgrA0Vr/vfNVuPoUNdaXCeyAngQFAljxxK8ACgkQNdaXCeyA
ngTWzAgAwTxqh8URPRWoP4xssbIcrHxQp24Vo3b2ybHpVmG+4VNudT2X2gb5tRso
CpCy4rMNZd8OY+rIcC8lzIexFgmvnwGEfZQgBjXiDK1cup5ylg6aR/CPziJ38jk/
uR56sh3hPiIONPHht5TlRrXpZAMN3NrX08GqTP1gXC5uoB0nCViffBkew+54bK+h
OduYGUkqkiIV2aHzVKDX/sv8dnqS0SOJKZIf4YRyDp5qyg3Wu2yAj7427+vI2pPc
d1R4A5BHajEPLcxssFRWD/SQug0hUG7cZwyX7d8qoD3LqZEFecF/Oe3sdJAFFiQZ
ZGxmddHKfLwJhhtvOwIbYn+4IFvc9g==
=XJBZ
-----END PGP SIGNATURE-----

--nextPart10292938.hy7NMZA4S1--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?11221477.gRA6BXfcIE>