[PATCH] cfag12864b: fix crash when built-in and no parport present
The problem comes when ks0108/cfag12864b are built-in and no parallel port is present. ks0108_init() is called first, as it should be, but fails to load (as there is no parallel port to use). After that, cfag12864b_init() gets called, without knowing anything about ks0108 failed, and calls ks0108_writecontrol(), which dereferences an uninitialized pointer. Init order is OK, I think. The problem is how to stop cfag12864b_init() being called if ks0108 failed to load. modprobe does it for us, but, how when built-in? Signed-off-by: Miguel Ojeda Sandonis <maxextreme@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
e627432c29
commit
34173a4aad
@@ -110,6 +110,17 @@ EXPORT_SYMBOL_GPL(ks0108_startline);
|
||||
EXPORT_SYMBOL_GPL(ks0108_address);
|
||||
EXPORT_SYMBOL_GPL(ks0108_page);
|
||||
|
||||
/*
|
||||
* Is the module inited?
|
||||
*/
|
||||
|
||||
static unsigned char ks0108_inited;
|
||||
unsigned char ks0108_isinited(void)
|
||||
{
|
||||
return ks0108_inited;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ks0108_isinited);
|
||||
|
||||
/*
|
||||
* Module Init & Exit
|
||||
*/
|
||||
@@ -142,6 +153,7 @@ static int __init ks0108_init(void)
|
||||
goto registered;
|
||||
}
|
||||
|
||||
ks0108_inited = 1;
|
||||
return 0;
|
||||
|
||||
registered:
|
||||
|
Reference in New Issue
Block a user