[3.16.y-ckt stable] Patch "x86/efi: Store upper bits of command line buffer address in ext_cmd_line_ptr" has been added to staging queue

Luis Henriques luis.henriques at canonical.com
Wed May 20 12:30:48 UTC 2015


This is a note to let you know that I have just added a patch titled

    x86/efi: Store upper bits of command line buffer address in ext_cmd_line_ptr

to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree 
which can be found at:

    http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-queue

This patch is scheduled to be released in version 3.16.7-ckt12.

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.16.y-ckt tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Luis

------

>From f2b73ee2676db3c34684601a918e308207eaa5f9 Mon Sep 17 00:00:00 2001
From: Roy Franz <roy.franz at linaro.org>
Date: Wed, 15 Apr 2015 16:32:24 -0700
Subject: x86/efi: Store upper bits of command line buffer address in
 ext_cmd_line_ptr

commit 98b228f55014870092c15d7d168fecac69f2f12a upstream.

Until now, the EFI stub was only setting the 32 bit cmd_line_ptr in
the setup_header structure, so on 64 bit platforms this could be truncated.
This patch adds setting the upper bits of the buffer address in
ext_cmd_line_ptr.  This case was likely never hit, as the allocation
for this buffer is done at the lowest available address.  Only
x86_64 kernels have this problem, as the 1-1 mapping mandated
by EFI ensures that all memory is 32 bit addressable on 32 bit
platforms.  The EFI stub does not support mixed mode, so the
32 bit kernel on 64 bit firmware case does not need to be handled.

Signed-off-by: Roy Franz <roy.franz at linaro.org>
Signed-off-by: Matt Fleming <matt.fleming at intel.com>
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
---
 arch/x86/boot/compressed/eboot.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
index 0331d765c2bb..bfb3908493f8 100644
--- a/arch/x86/boot/compressed/eboot.c
+++ b/arch/x86/boot/compressed/eboot.c
@@ -1091,6 +1091,8 @@ struct boot_params *make_boot_params(struct efi_config *c)
 	if (!cmdline_ptr)
 		goto fail;
 	hdr->cmd_line_ptr = (unsigned long)cmdline_ptr;
+	/* Fill in upper bits of command line address, NOP on 32 bit  */
+	boot_params->ext_cmd_line_ptr = (u64)(unsigned long)cmdline_ptr >> 32;

 	hdr->ramdisk_image = 0;
 	hdr->ramdisk_size = 0;




More information about the kernel-team mailing list