From owner-svn-src-head@freebsd.org  Sat Jun  1 01:22:23 2019
Return-Path: <owner-svn-src-head@freebsd.org>
Delivered-To: svn-src-head@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3F7B315A6DD7;
 Sat,  1 Jun 2019 01:22:23 +0000 (UTC) (envelope-from cem@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id D92C28C7C8;
 Sat,  1 Jun 2019 01:22:22 +0000 (UTC) (envelope-from cem@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B60A18A06;
 Sat,  1 Jun 2019 01:22:22 +0000 (UTC) (envelope-from cem@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x511MMk5009353;
 Sat, 1 Jun 2019 01:22:22 GMT (envelope-from cem@FreeBSD.org)
Received: (from cem@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x511MLMo009345;
 Sat, 1 Jun 2019 01:22:21 GMT (envelope-from cem@FreeBSD.org)
Message-Id: <201906010122.x511MLMo009345@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org
 using -f
From: Conrad Meyer <cem@FreeBSD.org>
Date: Sat, 1 Jun 2019 01:22:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r348489 - in head/sys: conf dev/random dev/virtio/random
X-SVN-Group: head
X-SVN-Commit-Author: cem
X-SVN-Commit-Paths: in head/sys: conf dev/random dev/virtio/random
X-SVN-Commit-Revision: 348489
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: D92C28C7C8
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.97 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_SHORT(-0.97)[-0.967,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-1.00)[-1.000,0]
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
 <svn-src-head.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-head>,
 <mailto:svn-src-head-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-head/>
List-Post: <mailto:svn-src-head@freebsd.org>
List-Help: <mailto:svn-src-head-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-head>,
 <mailto:svn-src-head-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 01 Jun 2019 01:22:23 -0000

Author: cem
Date: Sat Jun  1 01:22:21 2019
New Revision: 348489
URL: https://svnweb.freebsd.org/changeset/base/348489

Log:
  random(4): Fix RANDOM_LOADABLE build
  
  I introduced an obvious compiler error in r346282, so this change fixes
  that.
  
  Unfortunately, RANDOM_LOADABLE isn't covered by our existing tinderbox, and
  it seems like there were existing latent linking problems.  I believe these
  were introduced on accident in r338324 during reduction of the boolean
  expression(s) adjacent to randomdev.c and hash.c.  It seems the
  RANDOM_LOADABLE build breakage has gone unnoticed for nine months.
  
  This change correctly annotates randomdev.c and hash.c with !random_loadable
  to match the pre-r338324 logic; and additionally updates the HWRNG drivers
  in MD 'files.*', which depend on random_device symbols, with
  !random_loadable (it is invalid for the kernel to depend on symbols from a
  module).
  
  (The expression for both randomdev.c and hash.c was the same, prior to
  r338324: "optional random random_yarrow | random !random_yarrow
  !random_loadable".  I.e., "random && (yarrow || !loadable)."  When Yarrow
  was removed ("yarrow := False"), the expression was incorrectly reduced to
  "optional random" when it should have retained "random && !loadable".)
  
  Additionally, I discovered that virtio_random was missing a MODULE_DEPEND on
  random_device, which breaks kld load/link of the driver on RANDOM_LOADABLE
  kernels.  Address that issue as well.
  
  PR:		238223
  Reported by:	Eir Nym <eirnym AT gmail.com>
  Reviewed by:	delphij, markm
  Approved by:	secteam(delphij)
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D20466

Modified:
  head/sys/conf/files
  head/sys/conf/files.amd64
  head/sys/conf/files.arm64
  head/sys/conf/files.i386
  head/sys/conf/files.powerpc
  head/sys/dev/random/random_infra.c
  head/sys/dev/virtio/random/virtio_random.c

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/conf/files	Sat Jun  1 01:22:21 2019	(r348489)
@@ -2758,9 +2758,9 @@ rt2860.fw			optional rt2860fw | ralfw		\
 	clean		"rt2860.fw"
 dev/random/random_infra.c	optional random
 dev/random/random_harvestq.c	optional random
-dev/random/randomdev.c		optional random
+dev/random/randomdev.c		optional random !random_loadable
 dev/random/fortuna.c		optional random !random_loadable
-dev/random/hash.c		optional random
+dev/random/hash.c		optional random !random_loadable
 dev/rc/rc.c			optional rc
 dev/rccgpio/rccgpio.c		optional rccgpio gpio
 dev/re/if_re.c			optional re

Modified: head/sys/conf/files.amd64
==============================================================================
--- head/sys/conf/files.amd64	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/conf/files.amd64	Sat Jun  1 01:22:21 2019	(r348489)
@@ -368,8 +368,8 @@ dev/nvme/nvme_sysctl.c		optional	nvme
 dev/nvme/nvme_test.c		optional	nvme
 dev/nvme/nvme_util.c		optional	nvme
 dev/nvram/nvram.c		optional	nvram isa
-dev/random/ivy.c		optional	rdrand_rng
-dev/random/nehemiah.c		optional	padlock_rng
+dev/random/ivy.c		optional	rdrand_rng !random_loadable
+dev/random/nehemiah.c		optional	padlock_rng !random_loadable
 dev/qlxge/qls_dbg.c		optional	qlxge pci
 dev/qlxge/qls_dump.c		optional	qlxge pci
 dev/qlxge/qls_hw.c		optional	qlxge pci

Modified: head/sys/conf/files.arm64
==============================================================================
--- head/sys/conf/files.arm64	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/conf/files.arm64	Sat Jun  1 01:22:21 2019	(r348489)
@@ -87,7 +87,7 @@ arm/broadcom/bcm2835/bcm2835_ft5406.c		optional evdev 
 arm/broadcom/bcm2835/bcm2835_gpio.c		optional gpio soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_intr.c		optional soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_mbox.c		optional soc_brcm_bcm2837 fdt
-arm/broadcom/bcm2835/bcm2835_rng.c		optional random soc_brcm_bcm2837 fdt
+arm/broadcom/bcm2835/bcm2835_rng.c		optional random !random_loadable soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_sdhci.c		optional sdhci soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_sdhost.c		optional sdhci soc_brcm_bcm2837 fdt
 arm/broadcom/bcm2835/bcm2835_spi.c		optional bcm2835_spi soc_brcm_bcm2837 fdt

Modified: head/sys/conf/files.i386
==============================================================================
--- head/sys/conf/files.i386	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/conf/files.i386	Sat Jun  1 01:22:21 2019	(r348489)
@@ -301,8 +301,8 @@ dev/nvme/nvme_util.c		optional nvme
 dev/nvram/nvram.c		optional nvram isa
 dev/ofw/ofwpci.c		optional fdt pci
 dev/pcf/pcf_isa.c		optional pcf
-dev/random/ivy.c		optional rdrand_rng
-dev/random/nehemiah.c		optional padlock_rng
+dev/random/ivy.c		optional rdrand_rng !random_loadable
+dev/random/nehemiah.c		optional padlock_rng !random_loadable
 dev/sbni/if_sbni.c		optional sbni
 dev/sbni/if_sbni_isa.c		optional sbni isa
 dev/sbni/if_sbni_pci.c		optional sbni pci

Modified: head/sys/conf/files.powerpc
==============================================================================
--- head/sys/conf/files.powerpc	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/conf/files.powerpc	Sat Jun  1 01:22:21 2019	(r348489)
@@ -62,7 +62,7 @@ dev/ofw/ofw_standard.c		optional	aim powerpc
 dev/ofw/ofw_subr.c		standard
 dev/powermac_nvram/powermac_nvram.c optional	powermac_nvram powermac
 dev/quicc/quicc_bfe_fdt.c	optional	quicc mpc85xx
-dev/random/darn.c		optional	powerpc64 random
+dev/random/darn.c		optional	powerpc64 random !random_loadable
 dev/scc/scc_bfe_macio.c		optional	scc powermac
 dev/sdhci/fsl_sdhci.c		optional	mpc85xx sdhci
 dev/sec/sec.c			optional	sec mpc85xx

Modified: head/sys/dev/random/random_infra.c
==============================================================================
--- head/sys/dev/random/random_infra.c	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/dev/random/random_infra.c	Sat Jun  1 01:22:21 2019	(r348489)
@@ -198,9 +198,12 @@ read_random(void *buf, u_int len)
 bool
 is_random_seeded(void)
 {
+	bool result;
+
 	RANDOM_CONFIG_S_LOCK();
-	random_reader_context.is_random_seeded();
+	result = random_reader_context.is_random_seeded();
 	RANDOM_CONFIG_S_UNLOCK();
+	return (result);
 }
 
 

Modified: head/sys/dev/virtio/random/virtio_random.c
==============================================================================
--- head/sys/dev/virtio/random/virtio_random.c	Sat Jun  1 01:08:40 2019	(r348488)
+++ head/sys/dev/virtio/random/virtio_random.c	Sat Jun  1 01:22:21 2019	(r348489)
@@ -88,6 +88,7 @@ DRIVER_MODULE(virtio_random, virtio_pci, vtrnd_driver,
     vtrnd_modevent, 0);
 MODULE_VERSION(virtio_random, 1);
 MODULE_DEPEND(virtio_random, virtio, 1, 1, 1);
+MODULE_DEPEND(virtio_random, random_device, 1, 1, 1);
 
 static int
 vtrnd_modevent(module_t mod, int type, void *unused)