kmod/0010-modprobe-Implement-allow-unsupported-modules.patch
Jan Engelhardt e6ff04cc91 Accepting request 298324 from home:michal-m:branches:Base:System
- Update to kmod 20
* More robust ELF parsing
* To fix a race, modprobe only looks at modules.builtin to
  determine a builtin module, so e.g. 'modprobe vt' will no longer
  work.
* Other fixes
* Testsuite moved to a separate package, since it is now building
  the test modules from sources, which requires the kernel package.
* dropped kmod-blacklist-fixtest.patch (merged upstream)


- Run the kmod testsuite in a separate build, to avoid a buildloop
  with the kernel.

OBS-URL: https://build.opensuse.org/request/show/298324
OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=96
2015-04-21 16:20:20 +00:00

91 lines
2.7 KiB
Diff

From ea7f79db6890b99558adc9badd543e8ab59bc756 Mon Sep 17 00:00:00 2001
From: Michal Marek <mmarek@suse.cz>
Date: Wed, 5 Mar 2014 15:02:44 +0100
Subject: [PATCH 4/5] modprobe: Implement --allow-unsupported-modules
References: fate#316971
Patch-mainline: never
---
Makefile.am | 4 +++-
libkmod/libkmod-unsupported.c | 9 +++++++++
libkmod/libkmod-unsupported.h | 8 ++++++++
tools/modprobe.c | 8 +++++++-
4 files changed, 27 insertions(+), 2 deletions(-)
create mode 100644 libkmod/libkmod-unsupported.c
create mode 100644 libkmod/libkmod-unsupported.h
--- kmod-20.orig/Makefile.am
+++ kmod-20/Makefile.am
@@ -87,7 +87,9 @@ libkmod_libkmod_la_LIBADD = \
${liblzma_LIBS} ${zlib_LIBS}
noinst_LTLIBRARIES += libkmod/libkmod-internal.la
-libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES)
+libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES) \
+ libkmod/libkmod-unsupported.c \
+ libkmod/libkmod-unsupported.h
libkmod_libkmod_internal_la_LDFLAGS = $(AM_LDFLAGS) \
-Wl,--version-script=$(top_srcdir)/libkmod/libkmod.sym
libkmod_libkmod_internal_la_DEPENDENCIES = $(libkmod_libkmod_la_DEPENDENCIES)
--- /dev/null
+++ kmod-20/libkmod/libkmod-unsupported.c
@@ -0,0 +1,9 @@
+#include "libkmod-internal.h"
+#include "libkmod-unsupported.h"
+
+void kmod_internal_allow_unsupported(struct kmod_ctx *ctx)
+{
+ struct kmod_config *config = (struct kmod_config *)kmod_get_config(ctx);
+
+ config->block_unsupported = 0;
+}
--- /dev/null
+++ kmod-20/libkmod/libkmod-unsupported.h
@@ -0,0 +1,8 @@
+#pragma once
+
+/*
+ * This function implements the --allow-unsupported-modules modprobe
+ * option. It is not part of the kmod API and not exported by the shared
+ * library
+ */
+void kmod_internal_allow_unsupported(struct kmod_ctx *ctx);
--- kmod-20.orig/tools/modprobe.c
+++ kmod-20/tools/modprobe.c
@@ -38,6 +38,8 @@
#include "kmod.h"
+#include "libkmod/libkmod-unsupported.h"
+
static int log_priority = LOG_CRIT;
static int use_syslog = 0;
#define LOG(...) log_printf(log_priority, __VA_ARGS__)
@@ -730,6 +732,7 @@ static int do_modprobe(int argc, char **
int do_remove = 0;
int do_show_config = 0;
int do_show_modversions = 0;
+ int allow_unsupported = 0;
int err;
argv = prepend_options_from_env(&argc, orig_argv);
@@ -813,7 +816,7 @@ static int do_modprobe(int argc, char **
kversion = optarg;
break;
case 128:
- /* --allow-unsupported-modules does nothing for now */
+ allow_unsupported = 1;
break;
case 's':
env_modprobe_options_append("-s");
@@ -885,6 +888,9 @@ static int do_modprobe(int argc, char **
log_setup_kmod_log(ctx, verbose);
+ if (allow_unsupported)
+ kmod_internal_allow_unsupported(ctx);
+
kmod_load_resources(ctx);
if (do_show_config)