From b870199522666a66e378e90ca3dbef39c30f12c6 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Fri, 10 May 2019 04:28:17 +0000 Subject: [PATCH] Avoid returning a NULL pointer from the Intel hw PRNG ifunc resolver. DTrace expects kernel function symbols of a non-zero size to have an implementation, which is a reasonable invariant to preserve. Reported and tested by: ler Reviewed by: cem, kib Approved by: so (delphij) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D20218 --- sys/dev/random/ivy.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/dev/random/ivy.c b/sys/dev/random/ivy.c index 57f3d0a1d80..a85cc1e8996 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_unimpl_store(u_long *buf __unused) +{ + + panic("%s called", __func__); +} + 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_unimpl_store); } /* It is required that buf length is a multiple of sizeof(u_long). */