From cb32dde3be831096e98c66398159f7d7ddf3d672 Mon Sep 17 00:00:00 2001 From: Leif Delgass Date: Fri, 25 Apr 2003 19:42:47 +0000 Subject: Fix potential oops and memory leaks when allocations fail in addbufs_agp/pci. Add support for buffer private structs with PCI DMA buffers. Also some debug format string fixes. --- linux/drm_dma.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'linux/drm_dma.h') diff --git a/linux/drm_dma.h b/linux/drm_dma.h index 640e245d..7c1785b4 100644 --- a/linux/drm_dma.h +++ b/linux/drm_dma.h @@ -84,22 +84,24 @@ void DRM(dma_takedown)(drm_device_t *dev) dma->bufs[i].buf_count, dma->bufs[i].seg_count); for (j = 0; j < dma->bufs[i].seg_count; j++) { - DRM(free_pages)(dma->bufs[i].seglist[j], - dma->bufs[i].page_order, - DRM_MEM_DMA); + if (dma->bufs[i].seglist[j]) { + DRM(free_pages)(dma->bufs[i].seglist[j], + dma->bufs[i].page_order, + DRM_MEM_DMA); + } } DRM(free)(dma->bufs[i].seglist, dma->bufs[i].seg_count * sizeof(*dma->bufs[0].seglist), DRM_MEM_SEGS); } - if(dma->bufs[i].buf_count) { - for(j = 0; j < dma->bufs[i].buf_count; j++) { - if(dma->bufs[i].buflist[j].dev_private) { - DRM(free)(dma->bufs[i].buflist[j].dev_private, - dma->bufs[i].buflist[j].dev_priv_size, - DRM_MEM_BUFS); - } + if (dma->bufs[i].buf_count) { + for (j = 0; j < dma->bufs[i].buf_count; j++) { + if (dma->bufs[i].buflist[j].dev_private) { + DRM(free)(dma->bufs[i].buflist[j].dev_private, + dma->bufs[i].buflist[j].dev_priv_size, + DRM_MEM_BUFS); + } } DRM(free)(dma->bufs[i].buflist, dma->bufs[i].buf_count * -- cgit v1.2.3