[PATCH] PCI Hotplug ibmphp_pci.c: Fix masking out needed information too early
here is the patch that fixes the bug introduced by my previous patch which already went into 2.6.12-rc2 and is likely to cause trouble is someone hits one the else case here by accident. Using the &= operation before the if statement destroys the information the if asks for so we always go into the else branch. Signed-off-by: Rolf Eike Beer <eike-hotplug@sf-tec.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
c895817722
commit
034ecc724c
1 changed files with 5 additions and 2 deletions
|
@ -1308,10 +1308,10 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
|
|||
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
|
||||
} else {
|
||||
/* This is Memory */
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
|
||||
/* pfmem */
|
||||
debug ("start address of pfmem is %x\n", start_address);
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
|
||||
if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) {
|
||||
err ("cannot find corresponding PFMEM resource to remove\n");
|
||||
|
@ -1325,6 +1325,8 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
|
|||
} else {
|
||||
/* regular memory */
|
||||
debug ("start address of mem is %x\n", start_address);
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
|
||||
if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) {
|
||||
err ("cannot find corresponding MEM resource to remove\n");
|
||||
return -EIO;
|
||||
|
@ -1422,9 +1424,9 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
|
|||
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
|
||||
} else {
|
||||
/* This is Memory */
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
|
||||
/* pfmem */
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) {
|
||||
err ("cannot find corresponding PFMEM resource to remove\n");
|
||||
return -EINVAL;
|
||||
|
@ -1436,6 +1438,7 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
|
|||
}
|
||||
} else {
|
||||
/* regular memory */
|
||||
start_address &= PCI_BASE_ADDRESS_MEM_MASK;
|
||||
if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) {
|
||||
err ("cannot find corresponding MEM resource to remove\n");
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Reference in a new issue