Skip to contentSkip to conversation

fix alpha boot oops

PATCH New Richard Henderson 1 participant 1 message Jan 6, 2003 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix alpha boot oops

Oops in fb_set_cmap caused by palette_cmap.transp uninitialized. By inspection, fb_blank appears to have the same problem.

r~

===== fbmem.c 1.49 vs edited =====

fbmem.c renamed from drivers/video/fbmem.c +3 -2
@@ -386,6 +386,7 @@
 	palette_cmap.red = palette_red;
 	palette_cmap.green = palette_green;
 	palette_cmap.blue = palette_blue;
+	palette_cmap.transp = NULL;
 
 	for (i = 0; i < LINUX_LOGO_COLORS; i += n) {
 		n = LINUX_LOGO_COLORS - i;
@@ -767,6 +768,7 @@
 int
 fb_blank(int blank, struct fb_info *info)
 {	
+	/* ??? Varible sized stack allocation.  */
 	u16 black[info->cmap.len];
 	struct fb_cmap cmap;
 	
@@ -775,8 +777,7 @@
 	if (blank) { 
 		memset(black, 0, info->cmap.len * sizeof(u16));
 		cmap.red = cmap.green = cmap.blue = black;
-		if (info->cmap.transp)
-			cmap.transp = black;
+		cmap.transp = info->cmap.transp ? black : NULL;
 		cmap.start = info->cmap.start;
 		cmap.len = info->cmap.len;
 	} else