diff options
Diffstat (limited to 'sound/core/sgbuf.c')
| -rw-r--r-- | sound/core/sgbuf.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/core/sgbuf.c b/sound/core/sgbuf.c index d4564edd61d..4e7ec2b4987 100644 --- a/sound/core/sgbuf.c +++ b/sound/core/sgbuf.c @@ -38,6 +38,10 @@ int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab)  	if (! sgbuf)  		return -EINVAL; +	if (dmab->area) +		vunmap(dmab->area); +	dmab->area = NULL; +  	tmpb.dev.type = SNDRV_DMA_TYPE_DEV;  	tmpb.dev.dev = sgbuf->dev;  	for (i = 0; i < sgbuf->pages; i++) { @@ -48,9 +52,6 @@ int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab)  		tmpb.bytes = (sgbuf->table[i].addr & ~PAGE_MASK) << PAGE_SHIFT;  		snd_dma_free_pages(&tmpb);  	} -	if (dmab->area) -		vunmap(dmab->area); -	dmab->area = NULL;  	kfree(sgbuf->table);  	kfree(sgbuf->page_table);  |