Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Mar 2014 18:23:46 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Mateusz Guzik <mjguzik@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, David Xu <davidxu@freebsd.org>, Mateusz Guzik <mjg@FreeBSD.org>
Subject:   Re: svn commit: r263755 - head/sys/kern
Message-ID:  <20140327162346.GR21331@kib.kiev.ua>
In-Reply-To: <20140327150512.GB4730@dft-labs.eu>
References:  <201403252330.s2PNUaei052956@svn.freebsd.org> <5333D70D.7050306@freebsd.org> <20140327083730.GA22942@dft-labs.eu> <5333E581.1000100@freebsd.org> <20140327145819.GA4730@dft-labs.eu> <20140327150512.GB4730@dft-labs.eu>

next in thread | previous in thread | raw e-mail | index | archive | help

--Dx1O6sYEs5STvSrm
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Mar 27, 2014 at 04:05:12PM +0100, Mateusz Guzik wrote:
> On Thu, Mar 27, 2014 at 03:58:19PM +0100, Mateusz Guzik wrote:
> > On Thu, Mar 27, 2014 at 04:46:57PM +0800, David Xu wrote:
> > > On 2014/03/27 16:37, Mateusz Guzik wrote:
> > > >On Thu, Mar 27, 2014 at 03:45:17PM +0800, David Xu wrote:
> > > >>I think the async process pointer can be cleared when a process exi=
ts
> > > >>by registering an event handler. please see attached patch.
> > > >>
> > > >
> > > >Sure, but I'm not very fond of this solution.
> > > >
> > > >This is a rather obscure bug you wont hit unless you explicitly try,
> > > >and even then you need root privs by default.
> > > >
> > > OK, but I don't like the bug exists in kernel. It is not obscure for =
me,
> > > I can run "shutdown now" command, and insert a device, and then the
> > > kernel will write garbage data into freed memory space.
> > >=20
> >=20
> > Not sure what you mean. devd does not use this feature, and even if it
> > did async_proc is cleared on close, which happens while signal delivery
> > is still legal.
> >=20
> > That said, you are not going to encounter this bug unless you code
> > something up to specifically trigger it.
> >=20
> > fwiw, I think we could axe this feature if there was no way to fix it
> > without introducing a check for every process.
> >=20
> > > >As such writing a callback function which will be executed for all e=
xiting
> > > >processes seems unjustified for me.
> > > >
> > > >Ideally we would get some mechanism which would allow to register
> > > >callbacks for events related to given entity. Then it could be used =
to
> > > >provide a "call this function when process p exits", amongst other t=
hings.
> > > >
> > >=20
> > > Yes, but the callback itself is cheap enough and is not worth to be
> > > per-entity entry.
> > >=20
> >=20
> > There is other code in the kernel which would benefit from such
> > functionality - dev/syscons/scmouse, dev/vt/vt_core.c, aio and possibly
> > more.
> >=20
> > As such I think this is worth pursuing.
> >=20
>=20
> We can hack around this one the way the other code is doing - apart from
> from proc pointer you store pid and then compare result of pfind(pid).
>=20
> This is still buggy as both proc and pid pointer can be recycled and end
> up being the same (but you have an entrirely new process).
>=20
> However, then in absolutely worst cae you send SIGIO to incorrect
> process, always an existing process so no more corruption.
>=20
> Would you be ok with such hack for the time being?

Isn't p_sigiolist and fsetown(9) already provide the neccessary registration
and cleanup on the process exit ?  The KPI might require some generalizatio=
n,
but I think that the mechanism itself is enough.

--Dx1O6sYEs5STvSrm
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (FreeBSD)

iQIcBAEBAgAGBQJTNFCRAAoJEJDCuSvBvK1BRQ4P/1PXSIzOOABjwrDZbHzOLnd5
AlE/LbJ73FNQ3QXyQL0Lk/iLMvpgkwiTjkf37XoYb+CoUZlohRajeB1YB1FCHh10
Lkd+AAYd1lGa8s6ZdAn+luiIpO8TaPjKKFj2rkpju2n9OuiK6uCjsYopTu90UMAF
SHp7qAjVcIBxguKOJaOiFCOhW+Amg0lWq1lbG+yawVr6lZW5kraQlxQQQmnRCm41
8cOoekkWbRcRV39sAO+FN1WF2JkVYCkaxk1Z5XvBEJT38piOVHMAJrFfkDy1ASOY
OzCFEi8Z64E4I2JunjvU8LKMrQoLhaX8emA7sKawa2t66MGlycdptEyFN+wFUrvM
Rkikg5Qc9WuHSeEgYVTVSerpxXI7miKCa2EJJb2qH76a7NWbLpZJ3fCbZAxnYVnm
IBTgoPmXAbivCqr0Dnk/O3afu0UdrGbJPwEWx8IlLL0iHl7UBz/OS3k28vU7G2Yj
33KkgDSKEWYFLkzku1kf8cGVKGuAKManKbPN31s5vPw6rZcSixRrJgP5o3TQPYiP
4EL5PJUmGYEOgK+LNezSAQ5bAqaHoH5RbpiCMWJ61SWT6ZzpFmkFHnkvwrAaY4GH
k05k1bUppDnUrt7LESD9RbTBqft2dpLpdlIkz00hXLt4fqBdaQ/H5S2/viVan3zp
EJXqOieP3hFkuKW2h3Nk
=AwI1
-----END PGP SIGNATURE-----

--Dx1O6sYEs5STvSrm--



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