Merge ../linux-2.6-watchdog-mm
[pandora-kernel.git] / drivers / char / agp / amd-k7-agp.c
index 3a41672..c85c8ca 100644 (file)
@@ -94,19 +94,21 @@ static int amd_create_gatt_pages(int nr_tables)
        int retval = 0;
        int i;
 
-       tables = kmalloc((nr_tables + 1) * sizeof(struct amd_page_map *),
-                        GFP_KERNEL);
+       tables = kzalloc((nr_tables + 1) * sizeof(struct amd_page_map *),GFP_KERNEL);
        if (tables == NULL)
                return -ENOMEM;
 
-       memset (tables, 0, sizeof(struct amd_page_map *) * (nr_tables + 1));
        for (i = 0; i < nr_tables; i++) {
-               entry = kmalloc(sizeof(struct amd_page_map), GFP_KERNEL);
+               entry = kzalloc(sizeof(struct amd_page_map), GFP_KERNEL);
                if (entry == NULL) {
+                       while (i > 0) {
+                               kfree(tables[i-1]);
+                               i--;
+                       }
+                       kfree(tables);
                        retval = -ENOMEM;
                        break;
                }
-               memset (entry, 0, sizeof(struct amd_page_map));
                tables[i] = entry;
                retval = amd_create_page_map(entry);
                if (retval != 0)
@@ -121,7 +123,7 @@ static int amd_create_gatt_pages(int nr_tables)
        return retval;
 }
 
-/* Since we don't need contigious memory we just try
+/* Since we don't need contiguous memory we just try
  * to get the gatt table once
  */