Commit 137ee2f5 authored by Breno Leitao's avatar Breno Leitao Committed by Greg Kroah-Hartman

jsm: fixing error if the driver fails to load

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: default avatarBreno Leitao <leitao@linux.vnet.ibm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 54862ee0
...@@ -432,7 +432,7 @@ int __devinit jsm_tty_init(struct jsm_board *brd) ...@@ -432,7 +432,7 @@ int __devinit jsm_tty_init(struct jsm_board *brd)
int jsm_uart_port_init(struct jsm_board *brd) int jsm_uart_port_init(struct jsm_board *brd)
{ {
int i; int i, rc;
unsigned int line; unsigned int line;
struct jsm_channel *ch; struct jsm_channel *ch;
...@@ -467,8 +467,11 @@ int jsm_uart_port_init(struct jsm_board *brd) ...@@ -467,8 +467,11 @@ int jsm_uart_port_init(struct jsm_board *brd)
} else } else
set_bit(line, linemap); set_bit(line, linemap);
brd->channels[i]->uart_port.line = line; brd->channels[i]->uart_port.line = line;
if (uart_add_one_port (&jsm_uart_driver, &brd->channels[i]->uart_port)) rc = uart_add_one_port (&jsm_uart_driver, &brd->channels[i]->uart_port);
printk(KERN_INFO "jsm: add device failed\n"); if (rc){
printk(KERN_INFO "jsm: Port %d failed. Aborting...\n", i);
return rc;
}
else else
printk(KERN_INFO "jsm: Port %d added\n", i); printk(KERN_INFO "jsm: Port %d added\n", i);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment