On Thu, Jan 03, 2013 at 04:48:34PM -0800, Yinghai Lu wrote: > cmdline.c::__cmdline_find_option... are shared between 16-bit setup code > and 32/64 bit decompressor code. > > for 32/64 only path via kexec, we should not check if ptr is less 1M. > as those cmdline could be put above 1M, or even 4G. > > Move out accessible checking out of __cmdline_find_option() > So decompressor in misc.c can parse cmdline correctly. > > Signed-off-by: Yinghai Lu <ying...@kernel.org> > --- > arch/x86/boot/boot.h | 14 ++++++++++++-- > arch/x86/boot/cmdline.c | 8 ++++---- > 2 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/boot/boot.h b/arch/x86/boot/boot.h > index 18997e5..7fadf80 100644 > --- a/arch/x86/boot/boot.h > +++ b/arch/x86/boot/boot.h > @@ -289,12 +289,22 @@ int __cmdline_find_option(u32 cmdline_ptr, const char > *option, char *buffer, int > int __cmdline_find_option_bool(u32 cmdline_ptr, const char *option); > static inline int cmdline_find_option(const char *option, char *buffer, int > bufsize) > { > - return __cmdline_find_option(boot_params.hdr.cmd_line_ptr, option, > buffer, bufsize); > + u32 cmd_line_ptr = boot_params.hdr.cmd_line_ptr;
This check could very well use a comment for why we're checking it to be under 1Mb, no matter that the original code didn't have it. > + if (cmd_line_ptr >= 0x100000) > + return -1; /* inaccessible */ > + > + return __cmdline_find_option(cmd_line_ptr, option, buffer, bufsize); > } [ … ] Thanks. -- Regards/Gruss, Boris. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/