From 32f0ed67b358127d8ec92f7615d13f8fed0dad9f Mon Sep 17 00:00:00 2001 From: skra Date: Sun, 8 Nov 2015 18:48:35 +0000 Subject: 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) --- sys/contrib/vchiq/interface/vchiq_arm/vchiq_2835_arm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'sys/contrib') 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); -- cgit v1.1