summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorMartin Kaiser <martin@kaiser.cx>2017-01-11 19:09:50 +0300
committerBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>2017-01-11 19:09:50 +0300
commitdc312120b771fe6e4c4e753a73fd61e10de6d7b3 (patch)
tree1d99c3da4b80533f05d1db346f025272b27d5fb6 /drivers/video
parentd67fa87de05ff11758d505aa5b5143ae978f4d16 (diff)
downloadlinux-dc312120b771fe6e4c4e753a73fd61e10de6d7b3.tar.xz
video: fbdev: imxfb: always allocate 256 entries for the color map
The current code calculates the number of color map entries as 1 << info->var.bits_per_pixel. For 32bpp modes, 1 << 32 is 0 when written to an int variable. As a consequence, the subsequent copying of the default (non-empty) color map into our newly allocated color map fails and imxfb's probe function returns an error. On both imx1 and imx21 platforms, the color map is used only for modes with <= 8bpp. By allocating 256 entries for the color map, we're on the safe side. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/imxfb.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index fe0c4eeff2e4..1b0faadb3080 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -985,7 +985,11 @@ static int imxfb_probe(struct platform_device *pdev)
*/
imxfb_check_var(&info->var, info);
- ret = fb_alloc_cmap(&info->cmap, 1 << info->var.bits_per_pixel, 0);
+ /*
+ * For modes > 8bpp, the color map is bypassed.
+ * Therefore, 256 entries are enough.
+ */
+ ret = fb_alloc_cmap(&info->cmap, 256, 0);
if (ret < 0)
goto failed_cmap;