agp: balance ioremap checks

patchset against 2.6.23-rc3.
corrects missing ioremap return checks and balancing on iounmap calls, integrated changes per list
recommendations on the original set of patches..

Signed-off-by: Scott Thompson <postfail <at> hushmail.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>

authored by Scott Thompson and committed by Dave Airlie 5bdbc7dc 32ddef98

+22 -5
+2
drivers/char/agp/amd-k7-agp.c
··· 223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); 224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); 225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 226 227 /* Write out the address of the gatt table */ 228 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE);
··· 223 pci_read_config_dword(agp_bridge->dev, AMD_MMBASE, &temp); 224 temp = (temp & PCI_BASE_ADDRESS_MEM_MASK); 225 amd_irongate_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 226 + if (!amd_irongate_private.registers) 227 + return -ENOMEM; 228 229 /* Write out the address of the gatt table */ 230 writel(agp_bridge->gatt_bus_addr, amd_irongate_private.registers+AMD_ATTBASE);
+3
drivers/char/agp/ati-agp.c
··· 213 temp = (temp & 0xfffff000); 214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 215 216 if (is_r200()) 217 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); 218 else
··· 213 temp = (temp & 0xfffff000); 214 ati_generic_private.registers = (volatile u8 __iomem *) ioremap(temp, 4096); 215 216 + if (!ati_generic_private.registers) 217 + return -ENOMEM; 218 + 219 if (is_r200()) 220 pci_write_config_dword(agp_bridge->dev, ATI_RS100_IG_AGPMODE, 0x20000); 221 else
+1
drivers/char/agp/hp-agp.c
··· 221 if (cap != PCI_CAP_ID_AGP) { 222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n", 223 cap, hp->lba_cap_offset); 224 return -ENODEV; 225 } 226
··· 221 if (cap != PCI_CAP_ID_AGP) { 222 printk(KERN_ERR PFX "Invalid capability ID 0x%02x at 0x%x\n", 223 cap, hp->lba_cap_offset); 224 + iounmap(hp->lba_regs); 225 return -ENODEV; 226 } 227
+4
drivers/char/agp/i460-agp.c
··· 249 num_entries = A_SIZE_8(temp)->num_entries; 250 251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order); 252 253 /* These are no good, the should be removed from the agp_bridge strucure... */ 254 agp_bridge->gatt_table_real = NULL;
··· 249 num_entries = A_SIZE_8(temp)->num_entries; 250 251 i460.gatt = ioremap(INTEL_I460_ATTBASE, PAGE_SIZE << page_order); 252 + if (!i460.gatt) { 253 + printk(KERN_ERR PFX "ioremap failed\n"); 254 + return -ENOMEM; 255 + } 256 257 /* These are no good, the should be removed from the agp_bridge strucure... */ 258 agp_bridge->gatt_table_real = NULL;
+9 -5
drivers/char/agp/intel-agp.c
··· 930 temp &= 0xfff80000; 931 932 intel_private.registers = ioremap(temp,128 * 4096); 933 - if (!intel_private.registers) 934 return -ENOMEM; 935 936 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 937 global_cache_flush(); /* FIXME: ? */ ··· 987 temp &= 0xfff00000; 988 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 989 990 - if (!intel_private.gtt) 991 - return -ENOMEM; 992 993 994 intel_private.registers = ioremap(temp,128 * 4096); 995 - if (!intel_private.registers) 996 - return -ENOMEM; 997 998 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 999 global_cache_flush(); /* FIXME: ? */
··· 930 temp &= 0xfff80000; 931 932 intel_private.registers = ioremap(temp,128 * 4096); 933 + if (!intel_private.registers) { 934 + iounmap(intel_private.gtt); 935 return -ENOMEM; 936 + } 937 938 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 939 global_cache_flush(); /* FIXME: ? */ ··· 985 temp &= 0xfff00000; 986 intel_private.gtt = ioremap((temp + (512 * 1024)) , 512 * 1024); 987 988 + if (!intel_private.gtt) 989 + return -ENOMEM; 990 991 992 intel_private.registers = ioremap(temp,128 * 4096); 993 + if (!intel_private.registers) { 994 + iounmap(intel_private.gtt); 995 + return -ENOMEM; 996 + } 997 998 temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; 999 global_cache_flush(); /* FIXME: ? */
+3
drivers/char/agp/nvidia-agp.c
··· 157 nvidia_private.aperture = 158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); 159 160 return 0; 161 } 162
··· 157 nvidia_private.aperture = 158 (volatile u32 __iomem *) ioremap(apbase, 33 * PAGE_SIZE); 159 160 + if (!nvidia_private.aperture) 161 + return -ENOMEM; 162 + 163 return 0; 164 } 165