]> git.neil.brown.name Git - history.git/commitdiff
[AGPGART] More failure path sanity checking.
authorDave Jones <davej@tetrachloride.(none)>
Mon, 10 Feb 2003 16:52:55 +0000 (15:52 -0100)
committerDave Jones <davej@tetrachloride.(none)>
Mon, 10 Feb 2003 16:52:55 +0000 (15:52 -0100)
drivers/char/agp/backend.c

index a413a443509e4de06141a54cbc26a913345e780a..3d2436b1ff2568d6c986cf5531ab5675e50ff9dc 100644 (file)
@@ -181,13 +181,16 @@ err_out:
 /* cannot be __exit b/c as it could be called from __init code */
 static void agp_backend_cleanup(void)
 {
-       agp_bridge.cleanup();
-       agp_bridge.free_gatt_table();
-       vfree(agp_bridge.key_list);
+       if (agp_bridge.cleanup != NULL)
+               agp_bridge.cleanup();
+       if (agp_bridge.free_gatt_table != NULL)
+               agp_bridge.free_gatt_table();
+       if (agp_bridge.key_list)
+               vfree(agp_bridge.key_list);
 
-       if (agp_bridge.needs_scratch_page == TRUE) {
+       if ((agp_bridge.agp_destroy_page!=NULL) &&
+                       (agp_bridge.needs_scratch_page == TRUE))
                agp_bridge.agp_destroy_page(phys_to_virt(agp_bridge.scratch_page_real));
-       }
 }
 
 static int agp_power(struct pm_dev *dev, pm_request_t rq, void *data)