]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
intel-agp: Move repeated sglist free into separate function
authorDavid Woodhouse <David.Woodhouse@intel.com>
Wed, 29 Jul 2009 07:49:12 +0000 (08:49 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 3 Aug 2009 08:04:55 +0000 (09:04 +0100)
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/char/agp/intel-agp.c

index 148d7e38fddf5de59c419898454edac9af5878ae..b9d9886ff3c3405170082944ba9eba8058cb56cb 100644 (file)
@@ -196,6 +196,18 @@ static void intel_agp_unmap_page(struct page *page, dma_addr_t dma)
                       PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
 }
 
+static void intel_agp_free_sglist(struct agp_memory *mem)
+{
+
+       if (mem->sg_vmalloc_flag)
+               vfree(mem->sg_list);
+       else
+               kfree(mem->sg_list);
+       mem->sg_vmalloc_flag = 0;
+       mem->sg_list = NULL;
+       mem->num_sg = 0;
+}
+
 static int intel_agp_map_memory(struct agp_memory *mem)
 {
        struct scatterlist *sg;
@@ -224,13 +236,8 @@ static int intel_agp_map_memory(struct agp_memory *mem)
 
        mem->num_sg = pci_map_sg(intel_private.pcidev, mem->sg_list,
                                 mem->page_count, PCI_DMA_BIDIRECTIONAL);
-       if (!mem->num_sg) {
-               if (mem->sg_vmalloc_flag)
-                       vfree(mem->sg_list);
-               else
-                       kfree(mem->sg_list);
-               mem->sg_list = NULL;
-               mem->sg_vmalloc_flag = 0;
+       if (unlikely(!mem->num_sg)) {
+               intel_agp_free_sglist(mem);
                return -ENOMEM;
        }
        return 0;
@@ -242,13 +249,7 @@ static void intel_agp_unmap_memory(struct agp_memory *mem)
 
        pci_unmap_sg(intel_private.pcidev, mem->sg_list,
                     mem->page_count, PCI_DMA_BIDIRECTIONAL);
-       if (mem->sg_vmalloc_flag)
-               vfree(mem->sg_list);
-       else
-               kfree(mem->sg_list);
-       mem->sg_vmalloc_flag = 0;
-       mem->sg_list = NULL;
-       mem->num_sg = 0;
+       intel_agp_free_sglist(mem);
 }
 
 static void intel_agp_insert_sg_entries(struct agp_memory *mem,