svn commit: r290553 - head/sys/contrib/vchiq/interface/vchiq_arm

Svatopluk Kraus skra at FreeBSD.org
Sun Nov 8 18:48:36 UTC 2015


Author: skra
Date: Sun Nov  8 18:48:35 2015
New Revision: 290553
URL: https://svnweb.freebsd.org/changeset/base/290553

Log:
  Fix pagelist bus_dmamap_t map handling. Memory for pagelist is allocated
  by bus_dmamem_alloc() which creates associated bus_dmamap_t map for us.
  When this memory is freed by bus_dmamem_free(), the map is freed as well.
  
  Thus there is no need to free it explicitly by bus_dmamap_destroy(),
  which leads to double freeing.
  
  Discussed with:	gonzo
  Approved by:	kib (mentor)

Modified:
  head/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c

Modified: head/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
==============================================================================
--- head/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c	Sun Nov  8 18:11:24 2015	(r290552)
+++ head/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c	Sun Nov  8 18:48:35 2015	(r290553)
@@ -542,9 +542,8 @@ create_pagelist(char __user *buf, size_t
 	return 0;
 
 failed_load:
-	bus_dmamap_unload(bi->pagelist_dma_tag, bi->pagelist_dma_map);
+	bus_dmamem_free(bi->pagelist_dma_tag, bi->pagelist, bi->pagelist_dma_map);
 failed_alloc:
-	bus_dmamap_destroy(bi->pagelist_dma_tag, bi->pagelist_dma_map);
 	bus_dma_tag_destroy(bi->pagelist_dma_tag);
 
 	return err;
@@ -613,7 +612,6 @@ free_pagelist(BULKINFO_T *bi, int actual
 
 	bus_dmamap_unload(bi->pagelist_dma_tag, bi->pagelist_dma_map);
 	bus_dmamem_free(bi->pagelist_dma_tag, bi->pagelist, bi->pagelist_dma_map);
-	bus_dmamap_destroy(bi->pagelist_dma_tag, bi->pagelist_dma_map);
 	bus_dma_tag_destroy(bi->pagelist_dma_tag);
 
 	free(bi, M_VCPAGELIST);


More information about the svn-src-head mailing list