From fe625318c2b9bc4e195e149baaee63531cff80f4 Mon Sep 17 00:00:00 2001 From: Kulikov Vasiliy Date: Fri, 30 Jul 2010 15:08:20 +0400 Subject: [PATCH] --- yaml --- r: 206060 b: refs/heads/master c: 10f3f5b7f6d1faca62c746d1a4e85f7afba4d7d0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/staging/panel/panel.c | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a250e1b012e7..db4c5fb04851 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d49d0e39a09209d0136c7da2a1a52e99af2d4656 +refs/heads/master: 10f3f5b7f6d1faca62c746d1a4e85f7afba4d7d0 diff --git a/trunk/drivers/staging/panel/panel.c b/trunk/drivers/staging/panel/panel.c index aeca01c05e40..3221814a856e 100644 --- a/trunk/drivers/staging/panel/panel.c +++ b/trunk/drivers/staging/panel/panel.c @@ -2124,12 +2124,18 @@ static void panel_attach(struct parport *port) NULL, /*PARPORT_DEV_EXCL */ 0, (void *)&pprt); + if (pprt == NULL) { + pr_err("panel_attach(): port->number=%d parport=%d, " + "parport_register_device() failed\n", + port->number, parport); + return; + } if (parport_claim(pprt)) { printk(KERN_ERR "Panel: could not claim access to parport%d. " "Aborting.\n", parport); - return; + goto err_unreg_device; } /* must init LCD first, just in case an IRQ from the keypad is @@ -2137,13 +2143,23 @@ static void panel_attach(struct parport *port) */ if (lcd_enabled) { lcd_init(); - misc_register(&lcd_dev); + if (misc_register(&lcd_dev)) + goto err_unreg_device; } if (keypad_enabled) { keypad_init(); - misc_register(&keypad_dev); + if (misc_register(&keypad_dev)) + goto err_lcd_unreg; } + return; + +err_lcd_unreg: + if (lcd_enabled) + misc_deregister(&lcd_dev); +err_unreg_device: + parport_unregister_device(pprt); + pprt = NULL; } static void panel_detach(struct parport *port)