Linux-Modules Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname
@ 2020-03-10  8:23 Lucas De Marchi
  2020-03-10  8:23 ` [PATCH 2/2] testsuite: check for ill-formed kcmdline Lucas De Marchi
  2020-03-23 19:29 ` [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi
  0 siblings, 2 replies; 3+ messages in thread
From: Lucas De Marchi @ 2020-03-10  8:23 UTC (permalink / raw)
  To: linux-modules; +Cc: joao.moreira, leandro.maciel.dorileo, Lucas De Marchi

The error message is saying we are ignoring the option on the kernel
command line, so just do it.
---
 libkmod/libkmod-config.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
index 7b62367..971f20b 100644
--- a/libkmod/libkmod-config.c
+++ b/libkmod/libkmod-config.c
@@ -488,8 +488,9 @@ static void kcmdline_parse_result(struct kmod_config *config, char *modname,
 		if (underscores(modname) < 0) {
 			ERR(config->ctx, "Ignoring bad option on kernel command line while parsing module name: '%s'\n",
 			    modname);
+		} else {
+			kmod_config_add_options(config, modname, param);
 		}
-		kmod_config_add_options(config, modname, param);
 	}
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/2] testsuite: check for ill-formed kcmdline
  2020-03-10  8:23 [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi
@ 2020-03-10  8:23 ` Lucas De Marchi
  2020-03-23 19:29 ` [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi
  1 sibling, 0 replies; 3+ messages in thread
From: Lucas De Marchi @ 2020-03-10  8:23 UTC (permalink / raw)
  To: linux-modules; +Cc: joao.moreira, leandro.maciel.dorileo, Lucas De Marchi

Commit ca3bf5d47cec ("iommu/amd: Introduces ivrs_acpihid kernel parameter")
in the kernel introduced an ill-formed kernel parameter, ivrs_acpihid.
The problem is that it may have a dot on the key side:
"ivrs_acpihid[00:14.5]=AMD0020:0". This could potentially trip our
parser of module options, but right now it's working as intended: the
only thing that happens is that after deciding "ivrs_acpihid[00:14" is a
module name, it will fail the underscores() routine and the option will
be ignored from the kmod pov (not kernel's pov since that driver parsers
the kernel command line by itself).
---
 .../module-param-kcmdline6/correct.txt        |  6 +++++
 .../module-param-kcmdline6/proc/cmdline       |  1 +
 testsuite/test-modprobe.c                     | 25 +++++++++++++++++++
 3 files changed, 32 insertions(+)
 create mode 100644 testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt
 create mode 100644 testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline

diff --git a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt
new file mode 100644
index 0000000..7a087ef
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/correct.txt
@@ -0,0 +1,6 @@
+options psmouse foo=2
+options psmouse bar=1
+options psmouse zinga=test
+
+# End of configuration files. Dumping indexes now:
+
diff --git a/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline
new file mode 100644
index 0000000..14bbd2e
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/module-param-kcmdline6/proc/cmdline
@@ -0,0 +1 @@
+psmouse.foo=2 ivrs_acpihid[14:00.5]=AMD0020:00 psmouse.bar=1 psmouse.zinga=test
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index 1cace82..f908d56 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -328,6 +328,31 @@ DEFINE_TEST(modprobe_param_kcmdline5,
 	);
 
 
+static noreturn int modprobe_param_kcmdline6(const struct test *t)
+{
+	const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
+	const char *const args[] = {
+		progname,
+		"-c",
+		NULL,
+	};
+
+	test_spawn_prog(progname, args);
+	exit(EXIT_FAILURE);
+}
+DEFINE_TEST(modprobe_param_kcmdline6,
+	.description = "check if dots on other parts of kcmdline don't confuse our parser",
+	.config = {
+		[TC_UNAME_R] = "4.4.4",
+		[TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline6",
+	},
+	.output = {
+		.out = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline6/correct.txt",
+	},
+	.modules_loaded = "",
+	);
+
+
 static noreturn int modprobe_force(const struct test *t)
 {
 	const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
-- 
2.25.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname
  2020-03-10  8:23 [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi
  2020-03-10  8:23 ` [PATCH 2/2] testsuite: check for ill-formed kcmdline Lucas De Marchi
@ 2020-03-23 19:29 ` Lucas De Marchi
  1 sibling, 0 replies; 3+ messages in thread
From: Lucas De Marchi @ 2020-03-23 19:29 UTC (permalink / raw)
  To: linux-modules; +Cc: joao.moreira, leandro.maciel.dorileo

Both patches applied.

Lucas De Marchi

On Tue, Mar 10, 2020 at 01:23:07AM -0700, Lucas De Marchi wrote:
>The error message is saying we are ignoring the option on the kernel
>command line, so just do it.
>---
> libkmod/libkmod-config.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
>index 7b62367..971f20b 100644
>--- a/libkmod/libkmod-config.c
>+++ b/libkmod/libkmod-config.c
>@@ -488,8 +488,9 @@ static void kcmdline_parse_result(struct kmod_config *config, char *modname,
> 		if (underscores(modname) < 0) {
> 			ERR(config->ctx, "Ignoring bad option on kernel command line while parsing module name: '%s'\n",
> 			    modname);
>+		} else {
>+			kmod_config_add_options(config, modname, param);
> 		}
>-		kmod_config_add_options(config, modname, param);
> 	}
> }
>
>-- 
>2.25.1
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-10  8:23 [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi
2020-03-10  8:23 ` [PATCH 2/2] testsuite: check for ill-formed kcmdline Lucas De Marchi
2020-03-23 19:29 ` [PATCH 1/2] libkmod: ignore kcmdline option if we fail to parse modname Lucas De Marchi

Linux-Modules Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-modules/0 linux-modules/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-modules linux-modules/ https://lore.kernel.org/linux-modules \
		linux-modules@vger.kernel.org
	public-inbox-index linux-modules

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-modules


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git