Browse Source

staging: speakup: fix memory leak

speakup_init() didn't free first_console if speakup_kobj_init() fails.
Also propagate speakup_kobj_init()'s return code.

Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Vasiliy Kulikov 14 years ago
parent
commit
b3495cebaa
1 changed files with 5 additions and 2 deletions
  1. 5 2
      drivers/staging/speakup/main.c

+ 5 - 2
drivers/staging/speakup/main.c

@@ -2259,8 +2259,11 @@ static int __init speakup_init(void)
 	first_console = kzalloc(sizeof(*first_console), GFP_KERNEL);
 	first_console = kzalloc(sizeof(*first_console), GFP_KERNEL);
 	if (!first_console)
 	if (!first_console)
 		return -ENOMEM;
 		return -ENOMEM;
-	if (speakup_kobj_init() < 0)
-		return -ENOMEM;
+	err = speakup_kobj_init();
+	if (err) {
+		kfree(first_console);
+		return err;
+	}
 
 
 	reset_default_chars();
 	reset_default_chars();
 	reset_default_chartab();
 	reset_default_chartab();