Date: Wed, 21 Mar 2018 11:09:29 -0700 From: Conrad Meyer <cem@freebsd.org> To: Xin LI <delphij@gmail.com> Cc: Konstantin Belousov <kostikbel@gmail.com>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org> Subject: Re: svn commit: r331279 - in head: include lib/libc/gen lib/libc/sys lib/libc/tests/gen sys/compat/freebsd32 sys/conf sys/kern sys/sys tests/sys/kern usr.bin/truss Message-ID: <CAG6CVpWBs8fTdFj=qSmD%2BbqB4hZMzavaqeXiR04v9kLYs9yc2A@mail.gmail.com> In-Reply-To: <CAGMYy3vKe6mbsadsyvUR=03JKWuTG%2BtR8pmtW7HzPkDQRV6f5g@mail.gmail.com> References: <201803210115.w2L1Fjt9084698@repo.freebsd.org> <20180321103325.GJ76926@kib.kiev.ua> <CAG6CVpW3tPVyh6D3FXpAc9DPqG9u_KnHBiZOFmg1zZsHmDb8jA@mail.gmail.com> <20180321152335.GL76926@kib.kiev.ua> <CAG6CVpVq4e9p7tWRhzD1YmK0Zoxg3M31bMsHMkUbqCFwBHe%2BDQ@mail.gmail.com> <CAGMYy3vKe6mbsadsyvUR=03JKWuTG%2BtR8pmtW7HzPkDQRV6f5g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Please see https://reviews.freebsd.org/D14785 . :-) Thanks, Conrad On Wed, Mar 21, 2018 at 10:31 AM, Xin LI <delphij@gmail.com> wrote: > > > > On Wed, Mar 21, 2018 at 8:37 AM Conrad Meyer <cem@freebsd.org> wrote: >> >> On Wed, Mar 21, 2018 at 8:23 AM, Konstantin Belousov >> <kostikbel@gmail.com> wrote: >> > On Wed, Mar 21, 2018 at 08:03:16AM -0700, Conrad Meyer wrote: >> >> On Wed, Mar 21, 2018 at 3:33 AM, Konstantin Belousov >> >> > Libraries must not abort the application. >> >> > Esp. libc. >> >> >> >> What do you propose instead? while (1); ? I don't see that as >> >> obviously better. >> > >> > Return the error to caller, as all, well most, correct library functions >> > do. >> >> The abort() in case of ENOSYS was proposed by delphij@. It is >> intended for users that getentropy() not fail. Another possible >> fallback is to use the kern.arandom sysctl. Would this be amenable to >> you? > > > My proposal was: "Note that ENOSYS should be handled by fallback with > kern.arandom or an explicit abort() should be done.". > > It seems that a more graceful way of doing this should be something like: > > if (sysctl({MIB: KERN, ARND}, 2, buf, &buflen_copy, NULL, 0) == -1 || > buflen_copy != buflen) { > /* > * The sysctl cannot fail. If it does fail on some FreeBSD > * derivative or after some future change, just abort so that > * the problem will be found and fixed. abort is not normally > * suitable for a library but makes sense here. > */ > abort(); > } > > Like it was done in srandomdev().
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpWBs8fTdFj=qSmD%2BbqB4hZMzavaqeXiR04v9kLYs9yc2A>