fbdev: bfin-t350mcqb-fb: fix fbmem allocation with blanking lines
The current allocation does not include the memory required for blanking lines. So avoid memory corruption when multiple devices are using the DMA memory near each other. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
747388d78a
commit
de145b44b9
1 changed files with 8 additions and 7 deletions
|
@ -488,9 +488,9 @@ static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
|
||||||
fbinfo->fbops = &bfin_t350mcqb_fb_ops;
|
fbinfo->fbops = &bfin_t350mcqb_fb_ops;
|
||||||
fbinfo->flags = FBINFO_FLAG_DEFAULT;
|
fbinfo->flags = FBINFO_FLAG_DEFAULT;
|
||||||
|
|
||||||
info->fb_buffer =
|
info->fb_buffer = dma_alloc_coherent(NULL, fbinfo->fix.smem_len +
|
||||||
dma_alloc_coherent(NULL, fbinfo->fix.smem_len, &info->dma_handle,
|
ACTIVE_VIDEO_MEM_OFFSET,
|
||||||
GFP_KERNEL);
|
&info->dma_handle, GFP_KERNEL);
|
||||||
|
|
||||||
if (NULL == info->fb_buffer) {
|
if (NULL == info->fb_buffer) {
|
||||||
printk(KERN_ERR DRIVER_NAME
|
printk(KERN_ERR DRIVER_NAME
|
||||||
|
@ -568,8 +568,8 @@ static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
|
||||||
out6:
|
out6:
|
||||||
fb_dealloc_cmap(&fbinfo->cmap);
|
fb_dealloc_cmap(&fbinfo->cmap);
|
||||||
out4:
|
out4:
|
||||||
dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
|
dma_free_coherent(NULL, fbinfo->fix.smem_len + ACTIVE_VIDEO_MEM_OFFSET,
|
||||||
info->dma_handle);
|
info->fb_buffer, info->dma_handle);
|
||||||
out3:
|
out3:
|
||||||
framebuffer_release(fbinfo);
|
framebuffer_release(fbinfo);
|
||||||
out2:
|
out2:
|
||||||
|
@ -592,8 +592,9 @@ static int __devexit bfin_t350mcqb_remove(struct platform_device *pdev)
|
||||||
free_irq(info->irq, info);
|
free_irq(info->irq, info);
|
||||||
|
|
||||||
if (info->fb_buffer != NULL)
|
if (info->fb_buffer != NULL)
|
||||||
dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
|
dma_free_coherent(NULL, fbinfo->fix.smem_len +
|
||||||
info->dma_handle);
|
ACTIVE_VIDEO_MEM_OFFSET, info->fb_buffer,
|
||||||
|
info->dma_handle);
|
||||||
|
|
||||||
fb_dealloc_cmap(&fbinfo->cmap);
|
fb_dealloc_cmap(&fbinfo->cmap);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue