Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de145b44 authored by Michael Hennerich's avatar Michael Hennerich Committed by Linus Torvalds
Browse files

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: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Cc: <stable@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 747388d7
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -488,9 +488,9 @@ static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
	fbinfo->fbops = &bfin_t350mcqb_fb_ops;
	fbinfo->flags = FBINFO_FLAG_DEFAULT;

	info->fb_buffer =
	    dma_alloc_coherent(NULL, fbinfo->fix.smem_len, &info->dma_handle,
			       GFP_KERNEL);
	info->fb_buffer = dma_alloc_coherent(NULL, fbinfo->fix.smem_len +
				ACTIVE_VIDEO_MEM_OFFSET,
				&info->dma_handle, GFP_KERNEL);

	if (NULL == info->fb_buffer) {
		printk(KERN_ERR DRIVER_NAME
@@ -568,8 +568,8 @@ static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
out6:
	fb_dealloc_cmap(&fbinfo->cmap);
out4:
	dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
			  info->dma_handle);
	dma_free_coherent(NULL, fbinfo->fix.smem_len + ACTIVE_VIDEO_MEM_OFFSET,
			 info->fb_buffer, info->dma_handle);
out3:
	framebuffer_release(fbinfo);
out2:
@@ -592,7 +592,8 @@ static int __devexit bfin_t350mcqb_remove(struct platform_device *pdev)
	free_irq(info->irq, info);

	if (info->fb_buffer != NULL)
		dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer,
		dma_free_coherent(NULL, fbinfo->fix.smem_len +
			ACTIVE_VIDEO_MEM_OFFSET, info->fb_buffer,
			info->dma_handle);

	fb_dealloc_cmap(&fbinfo->cmap);