From 5789813e73220a0bfd85a44bc565a6ae624e8745 Mon Sep 17 00:00:00 2001 From: Costantino Leandro Date: Tue, 17 Feb 2009 11:10:48 -0500 Subject: [PATCH] Staging: panel: fix oops on panel_cleanup_module Check for null pardevice (not registered, ej: panel never attached, inexistent parport, etc. ) before calling parport_release, parport_unregister_device, and related funcs on module release. Signed-off-by: Costantino Leandro Acked-by: Willy Tarreau Signed-off-by: Greg Kroah-Hartman --- drivers/staging/panel/panel.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/staging/panel/panel.c b/drivers/staging/panel/panel.c index ab69c1bf36a8..c2747bc88c6f 100644 --- a/drivers/staging/panel/panel.c +++ b/drivers/staging/panel/panel.c @@ -2164,19 +2164,20 @@ static void __exit panel_cleanup_module(void) if (scan_timer.function != NULL) del_timer(&scan_timer); - if (keypad_enabled) - misc_deregister(&keypad_dev); + if (pprt != NULL) { + if (keypad_enabled) + misc_deregister(&keypad_dev); + + if (lcd_enabled) { + panel_lcd_print("\x0cLCD driver " PANEL_VERSION + "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-"); + misc_deregister(&lcd_dev); + } - if (lcd_enabled) { - panel_lcd_print("\x0cLCD driver " PANEL_VERSION - "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-"); - misc_deregister(&lcd_dev); + /* TODO: free all input signals */ + parport_release(pprt); + parport_unregister_device(pprt); } - - /* TODO: free all input signals */ - - parport_release(pprt); - parport_unregister_device(pprt); parport_unregister_driver(&panel_driver); } -- 2.39.5