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