Date: Thu, 9 May 2019 00:31:17 -0400 From: Mark Johnston <markj@freebsd.org> To: Larry Rosenman <ler@freebsd.org> Cc: freebsd-current@freebsd.org Subject: Re: Crash loading dtraceall Message-ID: <20190509043117.GF11774@raichu> In-Reply-To: <8418ec8f5e303dce4225a53be88fc49d@FreeBSD.org> References: <20190508205245.ulbo6fusk3b4py7t@ler-imac.local> <20190508222932.GB11774@raichu> <845dd186ef038d98c1a95a7454e432d2@FreeBSD.org> <20190508225553.GC11774@raichu> <460d563e2fe48bfd90b489015b4c0f9d@FreeBSD.org> <20190509033211.GE11774@raichu> <8418ec8f5e303dce4225a53be88fc49d@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 08, 2019 at 11:01:58PM -0500, Larry Rosenman wrote: > On 05/08/2019 10:32 pm, Mark Johnston wrote: > > On Wed, May 08, 2019 at 05:57:18PM -0500, Larry Rosenman wrote: > >> On 05/08/2019 5:55 pm, Mark Johnston wrote: > >> > On Wed, May 08, 2019 at 05:47:08PM -0500, Larry Rosenman wrote: > >> >> On 05/08/2019 5:29 pm, Mark Johnston wrote: > >> >> > On Wed, May 08, 2019 at 03:52:45PM -0500, Larry Rosenman wrote: > >> >> >> Greetings, > >> >> >> > >> >> >> Somewhere between r346483 and r347241 loading dtraceall causes a > >> >> >> crash. I have the cores and kernels. > >> >> >> > >> >> >> It's hard for me to bisect more than this, as the box is remote. > >> >> >> > >> >> >> What more do you need? (this dump is fropm r347355). > >> >> > > > The problem is with the kernel linker's handling of ifuncs. When > > enumerating symbols, it replaces ifunc symbol values with the return > > value of the resolver but preserves the original symbol size, which is > > that of the resolver. I believe this patch will address the panic > > you're seeing: > > > It does *NOT*. I see, my theory above is not the real problem here. The resolver for x86_rng_store() may return NULL, which we do not expect. Can you show the CPU info and features lines from the dmesg to confirm? Also see if this patch helps: diff --git a/sys/dev/random/ivy.c b/sys/dev/random/ivy.c index 57f3d0a1d80b..71065d788cf9 100644 --- a/sys/dev/random/ivy.c +++ b/sys/dev/random/ivy.c @@ -97,6 +97,13 @@ x86_rdseed_store(u_long *buf) return (retry); } +static int +x86_dead_store(u_long *buf __unused) +{ + + panic("missing hardware PRNG support"); +} + DEFINE_IFUNC(static, int, x86_rng_store, (u_long *buf), static) { has_rdrand = (cpu_feature2 & CPUID2_RDRAND); @@ -107,7 +114,7 @@ DEFINE_IFUNC(static, int, x86_rng_store, (u_long *buf), static) else if (has_rdrand) return (x86_rdrand_store); else - return (NULL); + return (x86_dead_store); } /* It is required that buf length is a multiple of sizeof(u_long). */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190509043117.GF11774>