From: Jesper Juhl <juhl-lkml@dif.dk>

One case turned out not to be one when I took a closer look, so I actually 
only missed one. Here's a patch to fix that last one and also put the 
check in bitblit.c back.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/video/console/bitblit.c |    6 +++++-
 25-akpm/drivers/video/w100fb.c          |    6 ++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff -puN drivers/video/console/bitblit.c~remove-redundant-null-checks-before-kfree-in-drivers-video-fix drivers/video/console/bitblit.c
--- 25/drivers/video/console/bitblit.c~remove-redundant-null-checks-before-kfree-in-drivers-video-fix	2005-03-20 16:25:04.000000000 -0800
+++ 25-akpm/drivers/video/console/bitblit.c	2005-03-20 16:25:04.000000000 -0800
@@ -199,7 +199,11 @@ static void bit_putcs(struct vc_data *vc
 		count -= cnt;
 	}
 
-	kfree(buf);
+	/* buf is always NULL except when in monochrome mode, so in this case
+	   it's a gain to check buf against NULL even though kfree() handles
+	   NULL pointers just fine */
+	if (unlikely(buf))
+		kfree(buf);
 }
 
 static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
diff -puN drivers/video/w100fb.c~remove-redundant-null-checks-before-kfree-in-drivers-video-fix drivers/video/w100fb.c
--- 25/drivers/video/w100fb.c~remove-redundant-null-checks-before-kfree-in-drivers-video-fix	2005-03-20 16:25:04.000000000 -0800
+++ 25-akpm/drivers/video/w100fb.c	2005-03-20 16:25:04.000000000 -0800
@@ -537,10 +537,8 @@ static void w100fb_clear_buffer(void)
 {
 	int i;
 	for (i = 0; i < W100_BUF_NUM; i++) {
-		if (gSaveImagePtr[i] != NULL) {
-			kfree(gSaveImagePtr[i]);
-			gSaveImagePtr[i] = NULL;
-		}
+		kfree(gSaveImagePtr[i]);
+		gSaveImagePtr[i] = NULL;
 	}
 }
 
_