PCI Hotplug changes for 2.4.19-rc1-ac6
PATCH 1/1 PCI Hotplug changes for 2.4.19-rc1-ac6
Hi,
Here's a patch against 2.4.19-rc1-ac6 that fixes a bug in the PCI core for PCI hotplug drivers. When pci_scan_slot() is called, pci_name_device() can eventually be called, which uses data declared as __initdata, instead of __devinitdata. This patch from Takayoshi KOCHI <[email protected]> fixes this problem (thanks also to him for finding the bug in the first place.)
thanks,
greg k-h
drivers/pci/names.c +5 -5
@@ -32,18 +32,18 @@* real memory.. Parse the same file multiple times * to get all the info. */ -#define VENDOR ( vendor, name ) static char __vendorstr_##vendor[] __initdata = name; +#define VENDOR ( vendor, name ) static char __vendorstr_##vendor[] __devinitdata = name;#define ENDVENDOR () -#define DEVICE ( vendor, device, name ) static char __devicestr_##vendor##device[] __initdata = name; +#define DEVICE ( vendor, device, name ) static char __devicestr_##vendor##device[] __devinitdata = name;#include "devlist.h" -#define VENDOR ( vendor, name ) static struct pci_device_info __devices_##vendor[] __initdata = { +#define VENDOR ( vendor, name ) static struct pci_device_info __devices_##vendor[] __devinitdata = {#define ENDVENDOR () };#define DEVICE ( vendor, device, name ) { 0x##device, 0, __devicestr_##vendor##device },#include "devlist.h" -static struct pci_vendor_info __initdata pci_vendor_list[] = { +static struct pci_vendor_info __devinitdata pci_vendor_list[] = { #define VENDOR( vendor, name ) { 0x##vendor, sizeof(__devices_##vendor) / sizeof(struct pci_device_info), __vendorstr_##vendor, __devices_##vendor },#define ENDVENDOR ()#define DEVICE ( vendor, device, name )
@@ -121,7 +121,7 @@#else -void __init pci_name_device (struct pci_dev *dev) +void __devinit pci_name_device (struct pci_dev *dev) { }