[PATCH 36/36] jsm: fixing error if the driver fails to load

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Greg Kroah-Hartman
Date: Tuesday, March 2, 2010 - 4:36 pm

From: Breno Leitao <leitao@linux.vnet.ibm.com>

Currently if the driver fails to register on port, the kernel
crashes with the following stack:

cpu 0x1: Vector: 300 (Data Access) at [c0000000e0303090]
    pc: c00000000039aa74: .__mutex_lock_slowpath+0x44/0x10c
    lr: c00000000039aa58: .__mutex_lock_slowpath+0x28/0x10c
[c0000000e03033c0] c00000000026b074 .uart_remove_one_port+0xbc/0x16c
[c0000000e0303460] d0000000000e0554 .jsm_remove_uart_port+0x8c/0x10c [jsm]
[c0000000e03034f0] d0000000000dc034 .jsm_remove_one+0x34/0x108 [jsm]
[c0000000e0303590] c0000000001f4aa0 .pci_device_remove+0x48/0x74
...

This patch just fixes the code flow to abort the load when an
error is detected.

Signed-off-by: Breno Leitao <leitao@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/serial/jsm/jsm_tty.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c
index cd95e21..5673ca9 100644
--- a/drivers/serial/jsm/jsm_tty.c
+++ b/drivers/serial/jsm/jsm_tty.c
@@ -432,7 +432,7 @@ int __devinit jsm_tty_init(struct jsm_board *brd)
 
 int jsm_uart_port_init(struct jsm_board *brd)
 {
-	int i;
+	int i, rc;
 	unsigned int line;
 	struct jsm_channel *ch;
 
@@ -467,8 +467,11 @@ int jsm_uart_port_init(struct jsm_board *brd)
 		} else
 			set_bit(line, linemap);
 		brd->channels[i]->uart_port.line = line;
-		if (uart_add_one_port (&jsm_uart_driver, &brd->channels[i]->uart_port))
-			printk(KERN_INFO "jsm: add device failed\n");
+		rc = uart_add_one_port (&jsm_uart_driver, &brd->channels[i]->uart_port);
+		if (rc){
+			printk(KERN_INFO "jsm: Port %d failed. Aborting...\n", i);
+			return rc;
+		}
 		else
 			printk(KERN_INFO "jsm: Port %d added\n", i);
 	}
-- 
1.7.0.1

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[GIT PATCH] TTY patches for 2.6.33-git, Greg KH, (Tue Mar 2, 4:09 pm)
[PATCH 01/36] serial: fit blackfin uart over sport driver ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 02/36] serial: copy UART properties of UPF_FIXED_TY ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 03/36] serial: 68328serial.c: remove BAUD_TABLE_SIZ ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 04/36] serial: atmel_serial: add poll_get_char and ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 05/36] serial: synclink_gt: dropped transmit data b ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 06/36] serial: 8250_pci: add support for MCS9865 / ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 07/36] serial: imx: fix NULL dereference Oops when ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 08/36] serial: add support for Korenix JetCard, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 09/36] serial: fix test of unsigned, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 10/36] serial: Char: cyclades, fix compiler warning, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 11/36] serial: cyclades: allow overriding ISA defau ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 12/36] tty: char: mxser, remove unnecessary tty test, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 13/36] serial: isicom.c: use pr_fmt and pr_&lt;level&gt;, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 14/36] hvc_console: fix test on unsigned in hvc_con ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 15/36] tty: moxa: remove #ifdef MODULE completely., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 16/36] ip2: remove #ifdef MODULE from ip2main.c, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 17/36] ip2: Add module parameter., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 18/36] tty: declare MODULE_FIRMWARE in various drivers, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 19/36] Char: synclink, remove unnecessary checks, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 20/36] serial: bfin_5xx: remove useless gpio handli ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 21/36] serial: bfin_5xx: need to disable DMA TX int ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 22/36] serial: bfin_5xx: kgdboc should accept gdb b ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 23/36] serial: bfin_5xx: pull in linux/io.h for ior ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 24/36] serial: bcm63xx_uart: don't use kfree() on n ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 25/36] serial: bcm63xx_uart: allow more than one ua ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 26/36] sdio_uart: Use kfifo instead of the messy ci ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 27/36] nozomi: Add tty_port usage, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 28/36] nozomi: Fix mutex handling, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 29/36] nozomi: Tidy up the PCI table, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 30/36] serial: timberdale: Remove dependancies, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 31/36] tty: Fix the ldisc hangup race, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 32/36] tty: Fix up char drivers request_room usage, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 33/36] tty: Keep the default buffering to sub-page ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 34/36] tty: Add a new VT mode which is like VT_PROC ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 35/36] jsm: removing the uart structure and filenam ..., Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)
[PATCH 36/36] jsm: fixing error if the driver fails to load, Greg Kroah-Hartman, (Tue Mar 2, 4:36 pm)