Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: fix buffer overflow in efi_init()
x86: Add quirk to make Apple MacBookPro5,1 use reboot=pci
x86: Fix MSI-X initialization by using online_mask for x2apic target_cpus
x86: Fix VMI && stack protector

+21 -9
+5 -3
arch/x86/kernel/apic/x2apic_cluster.c
··· 17 return x2apic_enabled(); 18 } 19 20 - /* Start with all IRQs pointing to boot CPU. IRQ balancing will shift them. */ 21 - 22 static const struct cpumask *x2apic_target_cpus(void) 23 { 24 - return cpumask_of(0); 25 } 26 27 /*
··· 17 return x2apic_enabled(); 18 } 19 20 + /* 21 + * need to use more than cpu 0, because we need more vectors when 22 + * MSI-X are used. 23 + */ 24 static const struct cpumask *x2apic_target_cpus(void) 25 { 26 + return cpu_online_mask; 27 } 28 29 /*
+5 -3
arch/x86/kernel/apic/x2apic_phys.c
··· 27 return 0; 28 } 29 30 - /* Start with all IRQs pointing to boot CPU. IRQ balancing will shift them. */ 31 - 32 static const struct cpumask *x2apic_target_cpus(void) 33 { 34 - return cpumask_of(0); 35 } 36 37 static void x2apic_vector_allocation_domain(int cpu, struct cpumask *retmask)
··· 27 return 0; 28 } 29 30 + /* 31 + * need to use more than cpu 0, because we need more vectors when 32 + * MSI-X are used. 33 + */ 34 static const struct cpumask *x2apic_target_cpus(void) 35 { 36 + return cpu_online_mask; 37 } 38 39 static void x2apic_vector_allocation_domain(int cpu, struct cpumask *retmask)
+1 -1
arch/x86/kernel/efi.c
··· 354 */ 355 c16 = tmp = early_ioremap(efi.systab->fw_vendor, 2); 356 if (c16) { 357 - for (i = 0; i < sizeof(vendor) && *c16; ++i) 358 vendor[i] = *c16++; 359 vendor[i] = '\0'; 360 } else
··· 354 */ 355 c16 = tmp = early_ioremap(efi.systab->fw_vendor, 2); 356 if (c16) { 357 + for (i = 0; i < sizeof(vendor) - 1 && *c16; ++i) 358 vendor[i] = *c16++; 359 vendor[i] = '\0'; 360 } else
+9 -1
arch/x86/kernel/reboot.c
··· 405 #endif /* CONFIG_X86_32 */ 406 407 /* 408 - * Apple MacBook5,2 (2009 MacBook) needs reboot=p 409 */ 410 static int __init set_pci_reboot(const struct dmi_system_id *d) 411 { ··· 424 .matches = { 425 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 426 DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5,2"), 427 }, 428 }, 429 { }
··· 405 #endif /* CONFIG_X86_32 */ 406 407 /* 408 + * Some Apple MacBook and MacBookPro's needs reboot=p to be able to reboot 409 */ 410 static int __init set_pci_reboot(const struct dmi_system_id *d) 411 { ··· 424 .matches = { 425 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 426 DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5,2"), 427 + }, 428 + }, 429 + { /* Handle problems with rebooting on Apple MacBookPro5,1 */ 430 + .callback = set_pci_reboot, 431 + .ident = "Apple MacBookPro5,1", 432 + .matches = { 433 + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 434 + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5,1"), 435 }, 436 }, 437 { }
+1 -1
arch/x86/kernel/vmi_32.c
··· 441 ap.ds = __USER_DS; 442 ap.es = __USER_DS; 443 ap.fs = __KERNEL_PERCPU; 444 - ap.gs = 0; 445 446 ap.eflags = 0; 447
··· 441 ap.ds = __USER_DS; 442 ap.es = __USER_DS; 443 ap.fs = __KERNEL_PERCPU; 444 + ap.gs = __KERNEL_STACK_CANARY; 445 446 ap.eflags = 0; 447