diff mbox series

[bootconfig,2/3] fs/proc: Add boot loader arguments as comment to /proc/bootconfig

Message ID 20231005171747.541123-2-paulmck@kernel.org (mailing list archive)
State New, archived
Headers show
Series Expose boot-loader kernel command-line arguments | expand

Commit Message

Paul E. McKenney Oct. 5, 2023, 5:17 p.m. UTC
In kernels built with CONFIG_BOOT_CONFIG_FORCE=y, /proc/cmdline will
show all kernel boot parameters, both those supplied by the boot loader
and those embedded in the kernel image.  This works well for those who
just want to see all of the kernel boot parameters, but is not helpful to
those who need to see only those parameters supplied by the boot loader.
This is especially important when these parameters are presented to the
boot loader by automation that might gather them from diverse sources.
It is also useful when booting the next kernel via kexec(), in which
case it is necessary to supply only those kernel command-line arguments
from the boot loader, and most definitely not those that were embedded
into the current kernel.

Therefore, add comments to /proc/bootconfig of the form:

	# Parameters from bootloader:
	# root=UUID=ac0f0548-a69d-43ca-a06b-7db01bcbd5ad ro quiet ...

The second added line shows only those kernel boot parameters supplied
by the boot loader.

Link: https://lore.kernel.org/all/CAHk-=wjpVAW3iRq_bfKnVfs0ZtASh_aT67bQBG11b4W6niYVUw@mail.gmail.com/
Link: https://lore.kernel.org/all/20230731233130.424913-1-paulmck@kernel.org/
Co-developed-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: <linux-trace-kernel@vger.kernel.org>
Cc: <linux-fsdevel@vger.kernel.org>
---
 fs/proc/bootconfig.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Masami Hiramatsu (Google) Oct. 6, 2023, 8:59 a.m. UTC | #1
On Thu,  5 Oct 2023 10:17:46 -0700
"Paul E. McKenney" <paulmck@kernel.org> wrote:

> In kernels built with CONFIG_BOOT_CONFIG_FORCE=y, /proc/cmdline will
> show all kernel boot parameters, both those supplied by the boot loader
> and those embedded in the kernel image.  This works well for those who
> just want to see all of the kernel boot parameters, but is not helpful to
> those who need to see only those parameters supplied by the boot loader.
> This is especially important when these parameters are presented to the
> boot loader by automation that might gather them from diverse sources.
> It is also useful when booting the next kernel via kexec(), in which
> case it is necessary to supply only those kernel command-line arguments
> from the boot loader, and most definitely not those that were embedded
> into the current kernel.
> 
> Therefore, add comments to /proc/bootconfig of the form:
> 
> 	# Parameters from bootloader:
> 	# root=UUID=ac0f0548-a69d-43ca-a06b-7db01bcbd5ad ro quiet ...
> 
> The second added line shows only those kernel boot parameters supplied
> by the boot loader.

Thanks for update it.

This looks good to me.

Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Thank you!

> 
> Link: https://lore.kernel.org/all/CAHk-=wjpVAW3iRq_bfKnVfs0ZtASh_aT67bQBG11b4W6niYVUw@mail.gmail.com/
> Link: https://lore.kernel.org/all/20230731233130.424913-1-paulmck@kernel.org/
> Co-developed-by: Masami Hiramatsu <mhiramat@kernel.org>
> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Cc: Arnd Bergmann <arnd@kernel.org>
> Cc: Nick Desaulniers <ndesaulniers@google.com>
> Cc: Alexey Dobriyan <adobriyan@gmail.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: <linux-trace-kernel@vger.kernel.org>
> Cc: <linux-fsdevel@vger.kernel.org>
> ---
>  fs/proc/bootconfig.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/fs/proc/bootconfig.c b/fs/proc/bootconfig.c
> index 2e244ada1f97..902b326e1e56 100644
> --- a/fs/proc/bootconfig.c
> +++ b/fs/proc/bootconfig.c
> @@ -62,6 +62,12 @@ static int __init copy_xbc_key_value_list(char *dst, size_t size)
>  				break;
>  			dst += ret;
>  		}
> +		if (ret >= 0 && boot_command_line[0]) {
> +			ret = snprintf(dst, rest(dst, end), "# Parameters from bootloader:\n# %s\n",
> +				       boot_command_line);
> +			if (ret > 0)
> +				dst += ret;
> +		}
>  	}
>  out:
>  	kfree(key);
> -- 
> 2.40.1
>
Paul E. McKenney Oct. 6, 2023, 4:52 p.m. UTC | #2
On Fri, Oct 06, 2023 at 05:59:48PM +0900, Masami Hiramatsu wrote:
> On Thu,  5 Oct 2023 10:17:46 -0700
> "Paul E. McKenney" <paulmck@kernel.org> wrote:
> 
> > In kernels built with CONFIG_BOOT_CONFIG_FORCE=y, /proc/cmdline will
> > show all kernel boot parameters, both those supplied by the boot loader
> > and those embedded in the kernel image.  This works well for those who
> > just want to see all of the kernel boot parameters, but is not helpful to
> > those who need to see only those parameters supplied by the boot loader.
> > This is especially important when these parameters are presented to the
> > boot loader by automation that might gather them from diverse sources.
> > It is also useful when booting the next kernel via kexec(), in which
> > case it is necessary to supply only those kernel command-line arguments
> > from the boot loader, and most definitely not those that were embedded
> > into the current kernel.
> > 
> > Therefore, add comments to /proc/bootconfig of the form:
> > 
> > 	# Parameters from bootloader:
> > 	# root=UUID=ac0f0548-a69d-43ca-a06b-7db01bcbd5ad ro quiet ...
> > 
> > The second added line shows only those kernel boot parameters supplied
> > by the boot loader.
> 
> Thanks for update it.
> 
> This looks good to me.
> 
> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> 
> Thank you!

And thank you!  I take this as meaning that I should push these three
commits for the upcoming v6.7 merge window.  Please let me know if I
should be doing something else.

							Thanx, Paul

> > Link: https://lore.kernel.org/all/CAHk-=wjpVAW3iRq_bfKnVfs0ZtASh_aT67bQBG11b4W6niYVUw@mail.gmail.com/
> > Link: https://lore.kernel.org/all/20230731233130.424913-1-paulmck@kernel.org/
> > Co-developed-by: Masami Hiramatsu <mhiramat@kernel.org>
> > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > Cc: Linus Torvalds <torvalds@linux-foundation.org>
> > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > Cc: Arnd Bergmann <arnd@kernel.org>
> > Cc: Nick Desaulniers <ndesaulniers@google.com>
> > Cc: Alexey Dobriyan <adobriyan@gmail.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Cc: Kees Cook <keescook@chromium.org>
> > Cc: <linux-trace-kernel@vger.kernel.org>
> > Cc: <linux-fsdevel@vger.kernel.org>
> > ---
> >  fs/proc/bootconfig.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/fs/proc/bootconfig.c b/fs/proc/bootconfig.c
> > index 2e244ada1f97..902b326e1e56 100644
> > --- a/fs/proc/bootconfig.c
> > +++ b/fs/proc/bootconfig.c
> > @@ -62,6 +62,12 @@ static int __init copy_xbc_key_value_list(char *dst, size_t size)
> >  				break;
> >  			dst += ret;
> >  		}
> > +		if (ret >= 0 && boot_command_line[0]) {
> > +			ret = snprintf(dst, rest(dst, end), "# Parameters from bootloader:\n# %s\n",
> > +				       boot_command_line);
> > +			if (ret > 0)
> > +				dst += ret;
> > +		}
> >  	}
> >  out:
> >  	kfree(key);
> > -- 
> > 2.40.1
> > 
> 
> 
> -- 
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
Masami Hiramatsu (Google) Oct. 7, 2023, 1:42 a.m. UTC | #3
On Fri, 6 Oct 2023 09:52:30 -0700
"Paul E. McKenney" <paulmck@kernel.org> wrote:

> On Fri, Oct 06, 2023 at 05:59:48PM +0900, Masami Hiramatsu wrote:
> > On Thu,  5 Oct 2023 10:17:46 -0700
> > "Paul E. McKenney" <paulmck@kernel.org> wrote:
> > 
> > > In kernels built with CONFIG_BOOT_CONFIG_FORCE=y, /proc/cmdline will
> > > show all kernel boot parameters, both those supplied by the boot loader
> > > and those embedded in the kernel image.  This works well for those who
> > > just want to see all of the kernel boot parameters, but is not helpful to
> > > those who need to see only those parameters supplied by the boot loader.
> > > This is especially important when these parameters are presented to the
> > > boot loader by automation that might gather them from diverse sources.
> > > It is also useful when booting the next kernel via kexec(), in which
> > > case it is necessary to supply only those kernel command-line arguments
> > > from the boot loader, and most definitely not those that were embedded
> > > into the current kernel.
> > > 
> > > Therefore, add comments to /proc/bootconfig of the form:
> > > 
> > > 	# Parameters from bootloader:
> > > 	# root=UUID=ac0f0548-a69d-43ca-a06b-7db01bcbd5ad ro quiet ...
> > > 
> > > The second added line shows only those kernel boot parameters supplied
> > > by the boot loader.
> > 
> > Thanks for update it.
> > 
> > This looks good to me.
> > 
> > Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> > 
> > Thank you!
> 
> And thank you!  I take this as meaning that I should push these three
> commits for the upcoming v6.7 merge window.  Please let me know if I
> should be doing something else.

I have my bootconfig branch, so I think I should pick this and push it
to the next window. Does it work?

Thank you,

> 
> 							Thanx, Paul
> 
> > > Link: https://lore.kernel.org/all/CAHk-=wjpVAW3iRq_bfKnVfs0ZtASh_aT67bQBG11b4W6niYVUw@mail.gmail.com/
> > > Link: https://lore.kernel.org/all/20230731233130.424913-1-paulmck@kernel.org/
> > > Co-developed-by: Masami Hiramatsu <mhiramat@kernel.org>
> > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > > Cc: Linus Torvalds <torvalds@linux-foundation.org>
> > > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > > Cc: Arnd Bergmann <arnd@kernel.org>
> > > Cc: Nick Desaulniers <ndesaulniers@google.com>
> > > Cc: Alexey Dobriyan <adobriyan@gmail.com>
> > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > Cc: Kees Cook <keescook@chromium.org>
> > > Cc: <linux-trace-kernel@vger.kernel.org>
> > > Cc: <linux-fsdevel@vger.kernel.org>
> > > ---
> > >  fs/proc/bootconfig.c | 6 ++++++
> > >  1 file changed, 6 insertions(+)
> > > 
> > > diff --git a/fs/proc/bootconfig.c b/fs/proc/bootconfig.c
> > > index 2e244ada1f97..902b326e1e56 100644
> > > --- a/fs/proc/bootconfig.c
> > > +++ b/fs/proc/bootconfig.c
> > > @@ -62,6 +62,12 @@ static int __init copy_xbc_key_value_list(char *dst, size_t size)
> > >  				break;
> > >  			dst += ret;
> > >  		}
> > > +		if (ret >= 0 && boot_command_line[0]) {
> > > +			ret = snprintf(dst, rest(dst, end), "# Parameters from bootloader:\n# %s\n",
> > > +				       boot_command_line);
> > > +			if (ret > 0)
> > > +				dst += ret;
> > > +		}
> > >  	}
> > >  out:
> > >  	kfree(key);
> > > -- 
> > > 2.40.1
> > > 
> > 
> > 
> > -- 
> > Masami Hiramatsu (Google) <mhiramat@kernel.org>
Paul E. McKenney Oct. 7, 2023, 3:42 a.m. UTC | #4
On Sat, Oct 07, 2023 at 10:42:09AM +0900, Masami Hiramatsu wrote:
> On Fri, 6 Oct 2023 09:52:30 -0700
> "Paul E. McKenney" <paulmck@kernel.org> wrote:
> 
> > On Fri, Oct 06, 2023 at 05:59:48PM +0900, Masami Hiramatsu wrote:
> > > On Thu,  5 Oct 2023 10:17:46 -0700
> > > "Paul E. McKenney" <paulmck@kernel.org> wrote:
> > > 
> > > > In kernels built with CONFIG_BOOT_CONFIG_FORCE=y, /proc/cmdline will
> > > > show all kernel boot parameters, both those supplied by the boot loader
> > > > and those embedded in the kernel image.  This works well for those who
> > > > just want to see all of the kernel boot parameters, but is not helpful to
> > > > those who need to see only those parameters supplied by the boot loader.
> > > > This is especially important when these parameters are presented to the
> > > > boot loader by automation that might gather them from diverse sources.
> > > > It is also useful when booting the next kernel via kexec(), in which
> > > > case it is necessary to supply only those kernel command-line arguments
> > > > from the boot loader, and most definitely not those that were embedded
> > > > into the current kernel.
> > > > 
> > > > Therefore, add comments to /proc/bootconfig of the form:
> > > > 
> > > > 	# Parameters from bootloader:
> > > > 	# root=UUID=ac0f0548-a69d-43ca-a06b-7db01bcbd5ad ro quiet ...
> > > > 
> > > > The second added line shows only those kernel boot parameters supplied
> > > > by the boot loader.
> > > 
> > > Thanks for update it.
> > > 
> > > This looks good to me.
> > > 
> > > Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> > > 
> > > Thank you!
> > 
> > And thank you!  I take this as meaning that I should push these three
> > commits for the upcoming v6.7 merge window.  Please let me know if I
> > should be doing something else.
> 
> I have my bootconfig branch, so I think I should pick this and push it
> to the next window. Does it work?

That works for me, and thank you!

(And thank you for taking and fixing my whitespace errors in the
other two patches!)

							Thanx, Paul

> > > > Link: https://lore.kernel.org/all/CAHk-=wjpVAW3iRq_bfKnVfs0ZtASh_aT67bQBG11b4W6niYVUw@mail.gmail.com/
> > > > Link: https://lore.kernel.org/all/20230731233130.424913-1-paulmck@kernel.org/
> > > > Co-developed-by: Masami Hiramatsu <mhiramat@kernel.org>
> > > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> > > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > > > Cc: Linus Torvalds <torvalds@linux-foundation.org>
> > > > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > > > Cc: Arnd Bergmann <arnd@kernel.org>
> > > > Cc: Nick Desaulniers <ndesaulniers@google.com>
> > > > Cc: Alexey Dobriyan <adobriyan@gmail.com>
> > > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > > Cc: Kees Cook <keescook@chromium.org>
> > > > Cc: <linux-trace-kernel@vger.kernel.org>
> > > > Cc: <linux-fsdevel@vger.kernel.org>
> > > > ---
> > > >  fs/proc/bootconfig.c | 6 ++++++
> > > >  1 file changed, 6 insertions(+)
> > > > 
> > > > diff --git a/fs/proc/bootconfig.c b/fs/proc/bootconfig.c
> > > > index 2e244ada1f97..902b326e1e56 100644
> > > > --- a/fs/proc/bootconfig.c
> > > > +++ b/fs/proc/bootconfig.c
> > > > @@ -62,6 +62,12 @@ static int __init copy_xbc_key_value_list(char *dst, size_t size)
> > > >  				break;
> > > >  			dst += ret;
> > > >  		}
> > > > +		if (ret >= 0 && boot_command_line[0]) {
> > > > +			ret = snprintf(dst, rest(dst, end), "# Parameters from bootloader:\n# %s\n",
> > > > +				       boot_command_line);
> > > > +			if (ret > 0)
> > > > +				dst += ret;
> > > > +		}
> > > >  	}
> > > >  out:
> > > >  	kfree(key);
> > > > -- 
> > > > 2.40.1
> > > > 
> > > 
> > > 
> > > -- 
> > > Masami Hiramatsu (Google) <mhiramat@kernel.org>
> 
> 
> -- 
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
diff mbox series

Patch

diff --git a/fs/proc/bootconfig.c b/fs/proc/bootconfig.c
index 2e244ada1f97..902b326e1e56 100644
--- a/fs/proc/bootconfig.c
+++ b/fs/proc/bootconfig.c
@@ -62,6 +62,12 @@  static int __init copy_xbc_key_value_list(char *dst, size_t size)
 				break;
 			dst += ret;
 		}
+		if (ret >= 0 && boot_command_line[0]) {
+			ret = snprintf(dst, rest(dst, end), "# Parameters from bootloader:\n# %s\n",
+				       boot_command_line);
+			if (ret > 0)
+				dst += ret;
+		}
 	}
 out:
 	kfree(key);