lib: system() is bad, use libkmod instead
For an as of yet unknown reason, calling system("modprobe") from inside
igt/gem_wait causes kasan to spend 1-5 minutes copying the process
pagetables. This evaporates if we replace the fork-happy call to system
with a call to load the module using libkmod. So be it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
diff --git a/lib/drmtest.c b/lib/drmtest.c
index 35f71c0..fab705a 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -51,8 +51,9 @@
#include "i915_drm.h"
#include "intel_chipset.h"
#include "intel_io.h"
-#include "igt_gt.h"
#include "igt_debugfs.h"
+#include "igt_gt.h"
+#include "igt_kmod.h"
#include "version.h"
#include "config.h"
#include "intel_reg.h"
@@ -228,9 +229,7 @@
static int modprobe(const char *driver)
{
- char buf[128];
- snprintf(buf, sizeof(buf), "/sbin/modprobe -s %s", driver);
- return system(buf);
+ return igt_kmod_load(driver, "");
}
/**
diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
index 10cd3a2..fd307a4 100644
--- a/lib/igt_kmod.h
+++ b/lib/igt_kmod.h
@@ -26,6 +26,8 @@
#include <libkmod.h>
+#include "igt_aux.h"
+
bool igt_kmod_is_loaded(const char *mod_name);
void igt_kmod_list_loaded(void);