The patch titled Prep for paravirt: Be careful about touching BIOS address space has been removed from the -mm tree. Its filename was prep-for-paravirt-be-careful-about-touching-bios.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: Prep for paravirt: Be careful about touching BIOS address space From: Rusty Russell <rusty@xxxxxxxxxxxxxxx> BIOS ROM areas may not be mapped into the guest address space, so be careful when touching those addresses to make sure they appear to be mapped. [akpm@xxxxxxxx: fix unused var warning] Signed-off-by: Jeremy Fitzhardinge <jeremy@xxxxxxxxxxxxx> Signed-off-by: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx> Cc: Andi Kleen <ak@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/i386/kernel/e820.c | 9 ++++++++- arch/i386/pci/pcbios.c | 11 +++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff -puN arch/i386/kernel/e820.c~prep-for-paravirt-be-careful-about-touching-bios arch/i386/kernel/e820.c --- a/arch/i386/kernel/e820.c~prep-for-paravirt-be-careful-about-touching-bios +++ a/arch/i386/kernel/e820.c @@ -155,7 +155,14 @@ static struct resource standard_io_resou .flags = IORESOURCE_BUSY | IORESOURCE_IO } }; -#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) +static int romsignature(const unsigned char *x) +{ + unsigned short sig; + int ret = 0; + if (__get_user(sig, (const unsigned short *)x) == 0) + ret = (sig == 0xaa55); + return ret; +} static int __init romchecksum(unsigned char *rom, unsigned long length) { diff -puN arch/i386/pci/pcbios.c~prep-for-paravirt-be-careful-about-touching-bios arch/i386/pci/pcbios.c --- a/arch/i386/pci/pcbios.c~prep-for-paravirt-be-careful-about-touching-bios +++ a/arch/i386/pci/pcbios.c @@ -5,6 +5,7 @@ #include <linux/pci.h> #include <linux/init.h> #include <linux/module.h> +#include <asm/uaccess.h> #include "pci.h" #include "pci-functions.h" @@ -314,6 +315,10 @@ static struct pci_raw_ops * __devinit pc for (check = (union bios32 *) __va(0xe0000); check <= (union bios32 *) __va(0xffff0); ++check) { + long sig; + if (__get_user(sig, &check->fields.signature)) + continue; + if (check->fields.signature != BIOS32_SIGNATURE) continue; length = check->fields.length * 16; @@ -331,11 +336,13 @@ static struct pci_raw_ops * __devinit pc } DBG("PCI: BIOS32 Service Directory structure at 0x%p\n", check); if (check->fields.entry >= 0x100000) { - printk("PCI: BIOS32 entry (0x%p) in high memory, cannot use.\n", check); + printk("PCI: BIOS32 entry (0x%p) in high memory, " + "cannot use.\n", check); return NULL; } else { unsigned long bios32_entry = check->fields.entry; - DBG("PCI: BIOS32 Service Directory entry at 0x%lx\n", bios32_entry); + DBG("PCI: BIOS32 Service Directory entry at 0x%lx\n", + bios32_entry); bios32_indirect.address = bios32_entry + PAGE_OFFSET; if (check_pcibios()) return &pci_bios_access; _ Patches currently in -mm which might be from rusty@xxxxxxxxxxxxxxx are fix-kunmap_atomics-use-of-kpte_clear_flush.patch generic-bug-implementation.patch generic-bug-for-i386.patch generic-bug-for-x86-64.patch bug-test-1.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html