From: Frank Mori Hess Date: Wed, 2 May 2007 13:30:21 +0000 (+0000) Subject: Tweaked order deallocations happen for an async buffer allocated X-Git-Tag: r0_7_74~89 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=464ab11ad6cf370dcf1b98019ebe8f434289047f;p=comedi.git Tweaked order deallocations happen for an async buffer allocated with vmalloc. --- diff --git a/comedi/drivers.c b/comedi/drivers.c index e96cd2d3..49997aac 100644 --- a/comedi/drivers.c +++ b/comedi/drivers.c @@ -437,15 +437,10 @@ int comedi_buf_alloc(comedi_device *dev, comedi_subdevice *s, if(async->prealloc_buf && async->prealloc_bufsz == new_size){ return 0; } - if(async->prealloc_buf) + // deallocate old buffer + if(async->prealloc_buf && s->async_dma_dir != DMA_NONE) { - if(s->async_dma_dir != DMA_NONE) - { - vunmap(async->prealloc_buf); - }else - { - vfree(async->prealloc_buf); - } + vunmap(async->prealloc_buf); async->prealloc_buf = NULL; async->prealloc_bufsz = 0; } @@ -466,6 +461,12 @@ int comedi_buf_alloc(comedi_device *dev, comedi_subdevice *s, async->buf_page_list = NULL; async->n_buf_pages = 0; } + if(async->prealloc_buf && s->async_dma_dir == DMA_NONE) + { + vfree(async->prealloc_buf); + async->prealloc_buf = NULL; + async->prealloc_bufsz = 0; + } // allocate new buffer if(new_size){ int i;