Re: [PATCH kmod v2 2/4] libkmod, depmod: Load modprobe.d, depmod.d from $prefix/lib.
From: Nicolas Schier <hidden>
Date: 2023-07-14 14:23:58
Also in:
linux-kbuild, lkml
On Wed, Jul 12, 2023 at 04:00:46PM +0200 Michal Suchanek wrote:
quoted hunk ↗ jump to hunk
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 <redacted> --- v2: Fix commit message typo --- Makefile.am | 1 + libkmod/libkmod.c | 3 ++- man/Makefile.am | 9 +++++++-- man/depmod.d.xml | 1 + man/modprobe.d.xml | 1 + tools/depmod.c | 1 + 6 files changed, 13 insertions(+), 3 deletions(-)diff --git a/Makefile.am b/Makefile.am index 8ba85c91a0f3..7aa5bfa5638d 100644 --- a/Makefile.am +++ b/Makefile.am@@ -19,6 +19,7 @@ AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ -I$(top_srcdir) \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DPREFIX=\""$(prefix)"\" \ ${zlib_CFLAGS} AM_CFLAGS = $(OUR_CFLAGS)diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c index 2670f9a4611a..13c82b069e84 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", + PREFIX "/lib/modprobe.d", "/lib/modprobe.d", NULL };@@ -237,7 +238,7 @@ static char *get_kernel_release(const char *dirname) * 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 + * /usr/local/lib/modprobe.d and PREFIX/lib/modprobe.d. Give an empty
In the chunk above, there still is /lib/modprobe.d included in the
default_config_paths array.
Kind regards,
Nicolas
--
epost|xmpp: nicolas@fjasle.eu irc://oftc.net/nsc
↳ gpg: 18ed 52db e34f 860e e9fb c82b 7d97 0932 55a0 ce7f
-- frykten for herren er opphav til kunnskap --