fm2fb: the pseudo_palette is only 16 elements long
authorAntonino A. Daplas <adaplas@gmail.com>
Tue, 17 Jul 2007 11:05:36 +0000 (04:05 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 17 Jul 2007 17:23:12 +0000 (10:23 -0700)
The pseudo_palette is only 16 elements long.

Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/fm2fb.c

index 70ff55b..6c91c61 100644 (file)
@@ -195,13 +195,15 @@ static int fm2fb_blank(int blank, struct fb_info *info)
 static int fm2fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
                          u_int transp, struct fb_info *info)
 {
-       if (regno > info->cmap.len)
-               return 1;
-       red >>= 8;
-       green >>= 8;
-       blue >>= 8;
+       if (regno < 16) {
+               red >>= 8;
+               green >>= 8;
+               blue >>= 8;
+
+               ((u32*)(info->pseudo_palette))[regno] = (red << 16) |
+                       (green << 8) | blue;
+       }
 
-       ((u32*)(info->pseudo_palette))[regno] = (red << 16) | (green << 8) | blue;
        return 0;
 }
 
@@ -237,7 +239,7 @@ static int __devinit fm2fb_probe(struct zorro_dev *z,
        if (!zorro_request_device(z,"fm2fb"))
                return -ENXIO;
 
-       info = framebuffer_alloc(256 * sizeof(u32), &z->dev);
+       info = framebuffer_alloc(16 * sizeof(u32), &z->dev);
        if (!info) {
                zorro_release_device(z);
                return -ENOMEM;