video: fbdev: imxfb: always allocate 256 entries for the color map
authorMartin Kaiser <martin@kaiser.cx>
Wed, 11 Jan 2017 16:09:50 +0000 (17:09 +0100)
committerBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Wed, 11 Jan 2017 16:09:50 +0000 (17:09 +0100)
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>
drivers/video/fbdev/imxfb.c

index fe0c4eeff2e4f1f11442272d03e3c784db06d49f..1b0faadb30801921d74231b6fc788fac5b67d9cd 100644 (file)
@@ -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;