Commit 9058be43cf9f32b6c636aa6954b4f1a6b22098f6

Authored by Antonino A. Daplas
Committed by Linus Torvalds
1 parent c771eba1fe

gbefb: the pseudo_palette is only 16 elements long

The pseudo_palette is only 16 elements long.

Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 21 additions and 20 deletions Side-by-side Diff

drivers/video/gbefb.c
... ... @@ -86,7 +86,7 @@
86 86  
87 87 static int ypan, ywrap;
88 88  
89   -static uint32_t pseudo_palette[256];
  89 +static uint32_t pseudo_palette[16];
90 90  
91 91 static char *mode_option __initdata = NULL;
92 92  
... ... @@ -854,8 +854,7 @@
854 854 green >>= 8;
855 855 blue >>= 8;
856 856  
857   - switch (info->var.bits_per_pixel) {
858   - case 8:
  857 + if (info->var.bits_per_pixel <= 8) {
859 858 /* wait for the color map FIFO to have a free entry */
860 859 for (i = 0; i < 1000 && gbe->cm_fifo >= 63; i++)
861 860 udelay(10);
... ... @@ -864,23 +863,25 @@
864 863 return 1;
865 864 }
866 865 gbe->cmap[regno] = (red << 24) | (green << 16) | (blue << 8);
867   - break;
868   - case 15:
869   - case 16:
870   - red >>= 3;
871   - green >>= 3;
872   - blue >>= 3;
873   - pseudo_palette[regno] =
874   - (red << info->var.red.offset) |
875   - (green << info->var.green.offset) |
876   - (blue << info->var.blue.offset);
877   - break;
878   - case 32:
879   - pseudo_palette[regno] =
880   - (red << info->var.red.offset) |
881   - (green << info->var.green.offset) |
882   - (blue << info->var.blue.offset);
883   - break;
  866 + } else if (regno < 16) {
  867 + switch (info->var.bits_per_pixel) {
  868 + case 15:
  869 + case 16:
  870 + red >>= 3;
  871 + green >>= 3;
  872 + blue >>= 3;
  873 + pseudo_palette[regno] =
  874 + (red << info->var.red.offset) |
  875 + (green << info->var.green.offset) |
  876 + (blue << info->var.blue.offset);
  877 + break;
  878 + case 32:
  879 + pseudo_palette[regno] =
  880 + (red << info->var.red.offset) |
  881 + (green << info->var.green.offset) |
  882 + (blue << info->var.blue.offset);
  883 + break;
  884 + }
884 885 }
885 886  
886 887 return 0;