summaryrefslogtreecommitdiffstats
path: root/sys/contrib
diff options
context:
space:
mode:
authorskra <skra@FreeBSD.org>2015-11-08 18:48:35 +0000
committerskra <skra@FreeBSD.org>2015-11-08 18:48:35 +0000
commit32f0ed67b358127d8ec92f7615d13f8fed0dad9f (patch)
tree1635a0dc398ef0c6e993a6a7f97ad2bc6985d816 /sys/contrib
parent425e227d0238d5c8165dc91f128206b6e6e5043f (diff)
downloadFreeBSD-src-32f0ed67b358127d8ec92f7615d13f8fed0dad9f.zip
FreeBSD-src-32f0ed67b358127d8ec92f7615d13f8fed0dad9f.tar.gz
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)
Diffstat (limited to 'sys/contrib')
-rw-r--r--sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c b/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
index 9b97615..6e5f320 100644
--- a/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
+++ b/sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c
@@ -542,9 +542,8 @@ create_pagelist(char __user *buf, size_t count, unsigned short type,
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);
OpenPOWER on IntegriCloud