summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-04-18 10:48:54 +0200
committerLennart Poettering <lennart@poettering.net>2023-04-18 10:52:04 +0200
commit0a5d3c0b5bfee68102de6345a3cd5580fbd5da02 (patch)
treef7a19deffe57e1e7e3258b67206c1145fc64917a /src/core
parentfa505db314ba74c71e5165c8857009ff9e7d4641 (diff)
downloadsystemd-0a5d3c0b5bfee68102de6345a3cd5580fbd5da02.tar.gz
kmod-setup: bypass heavy virtio-rng check if we are not running in a VM anyway
detect_vm() is cheap, because cached, let's hence do that early before we get out the big guns and sweep through sysfs.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/kmod-setup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
index 949b1a5854..adf817800f 100644
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -67,6 +67,10 @@ static int has_virtio_rng_recurse_dir_cb(
static bool has_virtio_rng(void) {
int r;
+ /* Directory traversal might be slow, hence let's do a cheap check first if it's even worth it */
+ if (detect_vm() == VIRTUALIZATION_NONE)
+ return false;
+
r = recurse_dir_at(
AT_FDCWD,
"/sys/devices/pci0000:00",