Merge ../linux-2.6-watchdog-mm
[pandora-kernel.git] / drivers / char / agp / sgi-agp.c
index 7957fc9..902648d 100644 (file)
@@ -281,14 +281,17 @@ static int __devinit agp_sgi_init(void)
        else
                return 0;
 
-       sgi_tioca_agp_bridges =
-           (struct agp_bridge_data **)kmalloc(tioca_gart_found *
-                                              sizeof(struct agp_bridge_data *),
-                                              GFP_KERNEL);
+       sgi_tioca_agp_bridges = kmalloc(tioca_gart_found *
+                                       sizeof(struct agp_bridge_data *),
+                                       GFP_KERNEL);
+       if (!sgi_tioca_agp_bridges)
+               return -ENOMEM;
 
        j = 0;
        list_for_each_entry(info, &tioca_list, ca_list) {
                struct list_head *tmp;
+               if (list_empty(info->ca_devices))
+                       continue;
                list_for_each(tmp, info->ca_devices) {
                        u8 cap_ptr;
                        pdev = pci_dev_b(tmp);
@@ -327,9 +330,8 @@ static int __devinit agp_sgi_init(void)
 
 static void __devexit agp_sgi_cleanup(void)
 {
-       if(sgi_tioca_agp_bridges)
-               kfree(sgi_tioca_agp_bridges);
-       sgi_tioca_agp_bridges=NULL;
+       kfree(sgi_tioca_agp_bridges);
+       sgi_tioca_agp_bridges = NULL;
 }
 
 module_init(agp_sgi_init);