 2cfe6c4ac7
			
		
	
	
	2cfe6c4ac7
	
	
	
		
			
			Some of my configs I test with have CONFIG_A11Y_BRAILLE_CONSOLE set.
When I started testing against v3.11-rc4 my console went bonkers.  Using
ktest to bisect the issue, it came down to:
commit bbeddf52a "printk: move braille console support into separate
braille.[ch] files"
Looking into the patch I found the problem.  It's with the return of
braille_register_console().  As anything other than NULL is considered a
failure.
But for those of us that have CONFIG_A11Y_BRAILLE_CONSOLE set but do not
define a "brl" or "brl=" on the command line, we still may want a
console that those with sight can still use.
Return NULL (success) if "brl" or "brl=" is not on the console line.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Joe Perches <joe@perches.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
	
			
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			945 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			945 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 | |
| 
 | |
| #include <linux/kernel.h>
 | |
| #include <linux/console.h>
 | |
| #include <linux/string.h>
 | |
| 
 | |
| #include "console_cmdline.h"
 | |
| #include "braille.h"
 | |
| 
 | |
| char *_braille_console_setup(char **str, char **brl_options)
 | |
| {
 | |
| 	if (!memcmp(*str, "brl,", 4)) {
 | |
| 		*brl_options = "";
 | |
| 		*str += 4;
 | |
| 	} else if (!memcmp(str, "brl=", 4)) {
 | |
| 		*brl_options = *str + 4;
 | |
| 		*str = strchr(*brl_options, ',');
 | |
| 		if (!*str)
 | |
| 			pr_err("need port name after brl=\n");
 | |
| 		else
 | |
| 			*((*str)++) = 0;
 | |
| 	} else
 | |
| 		return NULL;
 | |
| 
 | |
| 	return *str;
 | |
| }
 | |
| 
 | |
| int
 | |
| _braille_register_console(struct console *console, struct console_cmdline *c)
 | |
| {
 | |
| 	int rtn = 0;
 | |
| 
 | |
| 	if (c->brl_options) {
 | |
| 		console->flags |= CON_BRL;
 | |
| 		rtn = braille_register_console(console, c->index, c->options,
 | |
| 					       c->brl_options);
 | |
| 	}
 | |
| 
 | |
| 	return rtn;
 | |
| }
 | |
| 
 | |
| int
 | |
| _braille_unregister_console(struct console *console)
 | |
| {
 | |
| 	if (console->flags & CON_BRL)
 | |
| 		return braille_unregister_console(console);
 | |
| 
 | |
| 	return 0;
 | |
| }
 |