diff options
Diffstat (limited to 'drivers/serial/ioc4_serial.c')
-rw-r--r-- | drivers/serial/ioc4_serial.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c index 2e02c3026d24..8ad28fc64926 100644 --- a/drivers/serial/ioc4_serial.c +++ b/drivers/serial/ioc4_serial.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
23 | #include <linux/ioc4.h> | 23 | #include <linux/ioc4.h> |
24 | #include <linux/serial_core.h> | 24 | #include <linux/serial_core.h> |
25 | #include <linux/slab.h> | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * interesting things about the ioc4 | 28 | * interesting things about the ioc4 |
@@ -2904,7 +2905,7 @@ static struct ioc4_submodule ioc4_serial_submodule = { | |||
2904 | /** | 2905 | /** |
2905 | * ioc4_serial_init - module init | 2906 | * ioc4_serial_init - module init |
2906 | */ | 2907 | */ |
2907 | int ioc4_serial_init(void) | 2908 | static int __init ioc4_serial_init(void) |
2908 | { | 2909 | { |
2909 | int ret; | 2910 | int ret; |
2910 | 2911 | ||
@@ -2913,20 +2914,30 @@ int ioc4_serial_init(void) | |||
2913 | printk(KERN_WARNING | 2914 | printk(KERN_WARNING |
2914 | "%s: Couldn't register rs232 IOC4 serial driver\n", | 2915 | "%s: Couldn't register rs232 IOC4 serial driver\n", |
2915 | __func__); | 2916 | __func__); |
2916 | return ret; | 2917 | goto out; |
2917 | } | 2918 | } |
2918 | if ((ret = uart_register_driver(&ioc4_uart_rs422)) < 0) { | 2919 | if ((ret = uart_register_driver(&ioc4_uart_rs422)) < 0) { |
2919 | printk(KERN_WARNING | 2920 | printk(KERN_WARNING |
2920 | "%s: Couldn't register rs422 IOC4 serial driver\n", | 2921 | "%s: Couldn't register rs422 IOC4 serial driver\n", |
2921 | __func__); | 2922 | __func__); |
2922 | return ret; | 2923 | goto out_uart_rs232; |
2923 | } | 2924 | } |
2924 | 2925 | ||
2925 | /* register with IOC4 main module */ | 2926 | /* register with IOC4 main module */ |
2926 | return ioc4_register_submodule(&ioc4_serial_submodule); | 2927 | ret = ioc4_register_submodule(&ioc4_serial_submodule); |
2928 | if (ret) | ||
2929 | goto out_uart_rs422; | ||
2930 | return 0; | ||
2931 | |||
2932 | out_uart_rs422: | ||
2933 | uart_unregister_driver(&ioc4_uart_rs422); | ||
2934 | out_uart_rs232: | ||
2935 | uart_unregister_driver(&ioc4_uart_rs232); | ||
2936 | out: | ||
2937 | return ret; | ||
2927 | } | 2938 | } |
2928 | 2939 | ||
2929 | static void __devexit ioc4_serial_exit(void) | 2940 | static void __exit ioc4_serial_exit(void) |
2930 | { | 2941 | { |
2931 | ioc4_unregister_submodule(&ioc4_serial_submodule); | 2942 | ioc4_unregister_submodule(&ioc4_serial_submodule); |
2932 | uart_unregister_driver(&ioc4_uart_rs232); | 2943 | uart_unregister_driver(&ioc4_uart_rs232); |