Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1301863 > unrolled thread

Re: [PATCH 1/5] x86: fix early command-line parsing when matching at end

Started byBorislav Petkov <bp@suse.de>
First post2016-01-05 19:40 +0100
Last post2016-01-05 20:00 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH 1/5] x86: fix early command-line parsing when matching at  end Borislav Petkov <bp@suse.de> - 2016-01-05 19:40 +0100
    Re: [PATCH 1/5] x86: fix early command-line parsing when matching at  end Dave Hansen <dave@sr71.net> - 2016-01-05 20:00 +0100

#1301863 — Re: [PATCH 1/5] x86: fix early command-line parsing when matching at end

FromBorislav Petkov <bp@suse.de>
Date2016-01-05 19:40 +0100
SubjectRe: [PATCH 1/5] x86: fix early command-line parsing when matching at end
Message-ID<qNEGv-6GR-33@gated-at.bofh.it>
On Tue, Dec 22, 2015 at 02:52:38PM -0800, Dave Hansen wrote:
> 
> From: Dave Hansen <dave.hansen@linux.intel.com>
> 
> The x86 early command line parsing in cmdline_find_option_bool()
> is buggy.  If it matches a specified 'option' all the way to
> the end of the command-line, it will consider it a match.
> 
> For instance,
> 
>     	cmdline = "foo";
>     	cmdline_find_option_bool(cmdline, "fool");
> 
> will return 1.  This is particularly annoying since we have
> actual FPU options like "noxsave" and "noxsaves"  So,
> command-line "foo bar noxsave" will match *BOTH* a "noxsave" and
> "noxsaves". (This turns out not to be an actual problem because
> "noxsave" implies "noxsaves", but it's still confusing.)

So I booted a guest with this command line:

[    0.000000] Kernel command line: root=/dev/sda1 resume=/dev/sdb1 debug ignore_loglevel log_buf_len=16M earlyprintk=ttyS0,115200 console=ttyS0,115200 console=tty0 noxsave

after applying the debug hunk below. However, the only debug output I
got is this:

[    0.000000] x86_noxsave_setup

If I supply "noxsaves", I get, as expected

[    0.000000] x86_noxsaves_setup

only. Ditto for "noxsaveopt".

So what am I missing?

---
diff --git a/arch/x86/kernel/fpu/init.c b/arch/x86/kernel/fpu/init.c
index 1a6adcb4fbce..472f6edfb8d9 100644
--- a/arch/x86/kernel/fpu/init.c
+++ b/arch/x86/kernel/fpu/init.c
@@ -354,6 +354,8 @@ static int __init x86_noxsave_setup(char *s)
 	if (strlen(s))
 		return 0;
 
+	pr_info("%s\n", __func__);
+
 	fpu__xstate_clear_all_cpu_caps();
 
 	return 1;
@@ -367,6 +369,8 @@ static int __init x86_noxsaveopt_setup(char *s)
 {
 	setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT);
 
+	pr_info("%s\n", __func__);
+
 	return 1;
 }
 __setup("noxsaveopt", x86_noxsaveopt_setup);
@@ -378,6 +382,8 @@ static int __init x86_noxsaves_setup(char *s)
 {
 	setup_clear_cpu_cap(X86_FEATURE_XSAVES);
 
+	pr_info("%s\n", __func__);
+
 	return 1;
 }
 __setup("noxsaves", x86_noxsaves_setup);

-- 
Regards/Gruss,
    Boris.

SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1301878

FromDave Hansen <dave@sr71.net>
Date2016-01-05 20:00 +0100
Message-ID<qNEZQ-6P2-29@gated-at.bofh.it>
In reply to#1301863
On 01/05/2016 10:35 AM, Borislav Petkov wrote:
> On Tue, Dec 22, 2015 at 02:52:38PM -0800, Dave Hansen wrote:
>> From: Dave Hansen <dave.hansen@linux.intel.com>
>> The x86 early command line parsing in cmdline_find_option_bool()
>> is buggy.  If it matches a specified 'option' all the way to
>> the end of the command-line, it will consider it a match.
>>
>> For instance,
>>
>>     	cmdline = "foo";
>>     	cmdline_find_option_bool(cmdline, "fool");
>>
>> will return 1.  This is particularly annoying since we have
>> actual FPU options like "noxsave" and "noxsaves"  So,
>> command-line "foo bar noxsave" will match *BOTH* a "noxsave" and
>> "noxsaves". (This turns out not to be an actual problem because
>> "noxsave" implies "noxsaves", but it's still confusing.)
> 
> So I booted a guest with this command line:
> 
> [    0.000000] Kernel command line: root=/dev/sda1 resume=/dev/sdb1 debug ignore_loglevel log_buf_len=16M earlyprintk=ttyS0,115200 console=ttyS0,115200 console=tty0 noxsave
> 
> after applying the debug hunk below. However, the only debug output I
> got is this:
> 
> [    0.000000] x86_noxsave_setup
> 
> If I supply "noxsaves", I get, as expected
> 
> [    0.000000] x86_noxsaves_setup
> 
> only. Ditto for "noxsaveopt".
> 
> So what am I missing?

The current code uses __setup() which uses different parsing than
cmdline_find_option_bool().  We're going to have to move the noxsave*
ones over to cmdline_find_option_bool() since we need the parsing
earlier than __setup() works.

The changelog should have been more clear on this, though.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web