Skip to content

Commit

Permalink
x86, boot: Pass cmd_line_ptr with unsigned long instead
Browse files Browse the repository at this point in the history
boot/compressed/misc.c is used for bzImage in 64bit and 32bit, and
cmd_line_ptr could point to buffer that is above 4g, cmd_line_ptr
should be 64bit otherwise high 32bit will be capped out.

So need to change data type to unsigned long, that will be 64bit get
correct address of command line buffer.

And it is still ok with 32bit bzImage, because unsigned long on 32bit kernel
is still 32bit.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/1359058816-7615-19-git-send-email-yinghai@kernel.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
  • Loading branch information
Yinghai Lu authored and H. Peter Anvin committed Jan 29, 2013
1 parent 16a4baa commit 3db07e7
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
8 changes: 4 additions & 4 deletions arch/x86/boot/boot.h
Original file line number Diff line number Diff line change
Expand Up @@ -285,11 +285,11 @@ struct biosregs {
void intcall(u8 int_no, const struct biosregs *ireg, struct biosregs *oreg);

/* cmdline.c */
int __cmdline_find_option(u32 cmdline_ptr, const char *option, char *buffer, int bufsize);
int __cmdline_find_option_bool(u32 cmdline_ptr, const char *option);
int __cmdline_find_option(unsigned long cmdline_ptr, const char *option, char *buffer, int bufsize);
int __cmdline_find_option_bool(unsigned long cmdline_ptr, const char *option);
static inline int cmdline_find_option(const char *option, char *buffer, int bufsize)
{
u32 cmd_line_ptr = boot_params.hdr.cmd_line_ptr;
unsigned long cmd_line_ptr = boot_params.hdr.cmd_line_ptr;

if (cmd_line_ptr >= 0x100000)
return -1; /* inaccessible */
Expand All @@ -299,7 +299,7 @@ static inline int cmdline_find_option(const char *option, char *buffer, int bufs

static inline int cmdline_find_option_bool(const char *option)
{
u32 cmd_line_ptr = boot_params.hdr.cmd_line_ptr;
unsigned long cmd_line_ptr = boot_params.hdr.cmd_line_ptr;

if (cmd_line_ptr >= 0x100000)
return -1; /* inaccessible */
Expand Down
4 changes: 2 additions & 2 deletions arch/x86/boot/cmdline.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ static inline int myisspace(u8 c)
* Returns the length of the argument (regardless of if it was
* truncated to fit in the buffer), or -1 on not found.
*/
int __cmdline_find_option(u32 cmdline_ptr, const char *option, char *buffer, int bufsize)
int __cmdline_find_option(unsigned long cmdline_ptr, const char *option, char *buffer, int bufsize)
{
addr_t cptr;
char c;
Expand Down Expand Up @@ -99,7 +99,7 @@ int __cmdline_find_option(u32 cmdline_ptr, const char *option, char *buffer, int
* Returns the position of that option (starts counting with 1)
* or 0 on not found
*/
int __cmdline_find_option_bool(u32 cmdline_ptr, const char *option)
int __cmdline_find_option_bool(unsigned long cmdline_ptr, const char *option)
{
addr_t cptr;
char c;
Expand Down

0 comments on commit 3db07e7

Please sign in to comment.