Jan Engelhardt
4970184c4d
- Add upstream fixes since v31 * tools-depmod-fix-Walloc-size.patch * libkmod-remove-pkcs7-obj_to_hash_algo.patch * configure-Check-that-provided-paths-are-absolute.patch - Refresh usrmerge patches to upstream version (cosmetic change only) OBS-URL: https://build.opensuse.org/request/show/1131480 OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=234
151 lines
5.6 KiB
Diff
151 lines
5.6 KiB
Diff
From 8463809f8a29b254b2cab2ce755641bc690f07c9 Mon Sep 17 00:00:00 2001
|
|
From: Michal Suchanek <msuchanek@suse.de>
|
|
Date: Tue, 18 Jul 2023 14:01:54 +0200
|
|
Subject: [PATCH 3/9] libkmod, depmod: Load modprobe.d, depmod.d from
|
|
${prefix}/lib.
|
|
|
|
There is an ongoing effort to limit use of files outside of /usr (or
|
|
${prefix} on general). Currently all modprobe.d paths are hardcoded to
|
|
outside of $prefix. Teach kmod to load modprobe.d from ${prefix}/lib.
|
|
|
|
On some distributions /usr/lib and /lib are the same directory because
|
|
of a compatibility symlink, and it is possible to craft configuration
|
|
files with sideeffects that would behave differently when loaded twice.
|
|
However, the override semantic ensures that one 'overrides' the other,
|
|
and only one configuration file of the same name is loaded from any of
|
|
the search directories.
|
|
|
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
|
Link: https://lore.kernel.org/r/a290343ce32e2a3c25b134e4f27c13b26e06c9e0.1689681454.git.msuchanek@suse.de
|
|
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
|
|
---
|
|
Makefile.am | 1 +
|
|
configure.ac | 5 +++++
|
|
libkmod/libkmod.c | 7 ++++---
|
|
man/Makefile.am | 9 +++++++--
|
|
man/depmod.d.xml | 1 +
|
|
man/modprobe.d.xml | 1 +
|
|
tools/depmod.c | 1 +
|
|
7 files changed, 20 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/Makefile.am b/Makefile.am
|
|
index 5b7abfe6a20e..e6630a36e18c 100644
|
|
--- a/Makefile.am
|
|
+++ b/Makefile.am
|
|
@@ -19,6 +19,7 @@ AM_CPPFLAGS = \
|
|
-include $(top_builddir)/config.h \
|
|
-I$(top_srcdir) \
|
|
-DSYSCONFDIR=\""$(sysconfdir)"\" \
|
|
+ -DDISTCONFDIR=\""$(distconfdir)"\" \
|
|
${zlib_CFLAGS}
|
|
|
|
AM_CFLAGS = $(OUR_CFLAGS)
|
|
diff --git a/configure.ac b/configure.ac
|
|
index e5bceeaa1722..fd88d1fbdbf7 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -79,6 +79,10 @@ AC_COMPILE_IFELSE(
|
|
# --with-
|
|
#####################################################################
|
|
|
|
+AC_ARG_WITH([distconfdir], AS_HELP_STRING([--with-distconfdir=DIR], [directory to search for distribution configuration files]),
|
|
+ [], [with_distconfdir='${prefix}/lib'])
|
|
+AC_SUBST([distconfdir], [$with_distconfdir])
|
|
+
|
|
AC_ARG_WITH([rootlibdir],
|
|
AS_HELP_STRING([--with-rootlibdir=DIR], [rootfs directory to install shared libraries]),
|
|
[], [with_rootlibdir=$libdir])
|
|
@@ -313,6 +317,7 @@ AC_MSG_RESULT([
|
|
|
|
prefix: ${prefix}
|
|
sysconfdir: ${sysconfdir}
|
|
+ distconfdir: ${distconfdir}
|
|
libdir: ${libdir}
|
|
rootlibdir: ${rootlibdir}
|
|
includedir: ${includedir}
|
|
diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c
|
|
index 1b8773cdf452..57fac1cb9f7b 100644
|
|
--- a/libkmod/libkmod.c
|
|
+++ b/libkmod/libkmod.c
|
|
@@ -65,6 +65,7 @@ static const char *const default_config_paths[] = {
|
|
SYSCONFDIR "/modprobe.d",
|
|
"/run/modprobe.d",
|
|
"/usr/local/lib/modprobe.d",
|
|
+ DISTCONFDIR "/modprobe.d",
|
|
"/lib/modprobe.d",
|
|
NULL
|
|
};
|
|
@@ -272,9 +273,9 @@ static enum kmod_file_compression_type get_kernel_compression(struct kmod_ctx *c
|
|
* to load from user-defined configuration parameters such as
|
|
* alias, blacklists, commands (install, remove). If NULL
|
|
* defaults to /etc/modprobe.d, /run/modprobe.d,
|
|
- * /usr/local/lib/modprobe.d and /lib/modprobe.d. Give an empty
|
|
- * vector if configuration should not be read. This array must
|
|
- * be null terminated.
|
|
+ * /usr/local/lib/modprobe.d, DISTCONFDIR/modprobe.d, and
|
|
+ * /lib/modprobe.d. Give an empty vector if configuration should
|
|
+ * not be read. This array must be null terminated.
|
|
*
|
|
* Create kmod library context. This reads the kmod configuration
|
|
* and fills in the default values.
|
|
diff --git a/man/Makefile.am b/man/Makefile.am
|
|
index 11514d52a190..2fea8e46bf2f 100644
|
|
--- a/man/Makefile.am
|
|
+++ b/man/Makefile.am
|
|
@@ -17,9 +17,14 @@ EXTRA_DIST = $(MAN5:%.5=%.xml) $(MAN8:%.8=%.xml)
|
|
CLEANFILES = $(dist_man_MANS)
|
|
|
|
%.5 %.8: %.xml
|
|
- $(AM_V_XSLT)$(XSLT) \
|
|
+ $(AM_V_XSLT)if [ '$(distconfdir)' != '/lib' ] ; then \
|
|
+ sed -e 's|@DISTCONFDIR@|$(distconfdir)|g' $< ; \
|
|
+ else \
|
|
+ sed -e '/@DISTCONFDIR@/d' $< ; \
|
|
+ fi | \
|
|
+ $(XSLT) \
|
|
-o $@ \
|
|
--nonet \
|
|
--stringparam man.output.quietly 1 \
|
|
--param funcsynopsis.style "'ansi'" \
|
|
- http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
|
+ http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl -
|
|
diff --git a/man/depmod.d.xml b/man/depmod.d.xml
|
|
index 8d3d821cddc8..f282a39cc840 100644
|
|
--- a/man/depmod.d.xml
|
|
+++ b/man/depmod.d.xml
|
|
@@ -40,6 +40,7 @@
|
|
|
|
<refsynopsisdiv>
|
|
<para><filename>/lib/depmod.d/*.conf</filename></para>
|
|
+ <para><filename>@DISTCONFDIR@/depmod.d/*.conf</filename></para>
|
|
<para><filename>/usr/local/lib/depmod.d/*.conf</filename></para>
|
|
<para><filename>/run/depmod.d/*.conf</filename></para>
|
|
<para><filename>/etc/depmod.d/*.conf</filename></para>
|
|
diff --git a/man/modprobe.d.xml b/man/modprobe.d.xml
|
|
index 0ab3e9110a7e..2bf6537f07e6 100644
|
|
--- a/man/modprobe.d.xml
|
|
+++ b/man/modprobe.d.xml
|
|
@@ -41,6 +41,7 @@
|
|
|
|
<refsynopsisdiv>
|
|
<para><filename>/lib/modprobe.d/*.conf</filename></para>
|
|
+ <para><filename>@DISTCONFDIR@/modprobe.d/*.conf</filename></para>
|
|
<para><filename>/usr/local/lib/modprobe.d/*.conf</filename></para>
|
|
<para><filename>/run/modprobe.d/*.conf</filename></para>
|
|
<para><filename>/etc/modprobe.d/*.conf</filename></para>
|
|
diff --git a/tools/depmod.c b/tools/depmod.c
|
|
index 1d1d41db860f..630fef9c8fb0 100644
|
|
--- a/tools/depmod.c
|
|
+++ b/tools/depmod.c
|
|
@@ -54,6 +54,7 @@ static const char *const default_cfg_paths[] = {
|
|
SYSCONFDIR "/depmod.d",
|
|
"/run/depmod.d",
|
|
"/usr/local/lib/depmod.d",
|
|
+ DISTCONFDIR "/depmod.d",
|
|
"/lib/depmod.d",
|
|
NULL
|
|
};
|
|
--
|
|
2.42.0
|
|
|