diff options
author | Jiri Slaby <jslaby@suse.cz> | 2012-08-07 15:47:33 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-10 16:27:51 -0400 |
commit | 3140bae26c9105b4ec8ff4935631f2f09882553d (patch) | |
tree | 94295eeb0e1e86d3cc246fb91f5d81c34f884a7f | |
parent | 065185f604c604ce77c43d7f26faf712f0bfa265 (diff) |
misc: pti, do the opposite of ->probe in ->remove
Currently, probe initializes some parts. Then, some of them are
unwound in ->remove, some in module_exit. Let us do the opposite of
whole ->probe in ->remove.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: J Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/misc/pti.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/misc/pti.c b/drivers/misc/pti.c index 4a24421136a3..be6e6795d79d 100644 --- a/drivers/misc/pti.c +++ b/drivers/misc/pti.c | |||
@@ -874,11 +874,18 @@ static void __devexit pti_pci_remove(struct pci_dev *pdev) | |||
874 | { | 874 | { |
875 | struct pti_dev *drv_data = pci_get_drvdata(pdev); | 875 | struct pti_dev *drv_data = pci_get_drvdata(pdev); |
876 | 876 | ||
877 | unregister_console(&pti_console); | ||
878 | |||
879 | tty_unregister_device(pti_tty_driver, 0); | ||
880 | tty_unregister_device(pti_tty_driver, 1); | ||
881 | |||
877 | iounmap(drv_data->pti_ioaddr); | 882 | iounmap(drv_data->pti_ioaddr); |
878 | pci_set_drvdata(pdev, NULL); | 883 | pci_set_drvdata(pdev, NULL); |
879 | kfree(drv_data); | 884 | kfree(drv_data); |
880 | pci_release_region(pdev, 1); | 885 | pci_release_region(pdev, 1); |
881 | pci_disable_device(pdev); | 886 | pci_disable_device(pdev); |
887 | |||
888 | misc_deregister(&pti_char_driver); | ||
882 | } | 889 | } |
883 | 890 | ||
884 | static struct pci_driver pti_pci_driver = { | 891 | static struct pci_driver pti_pci_driver = { |
@@ -959,9 +966,6 @@ static void __exit pti_exit(void) | |||
959 | { | 966 | { |
960 | int retval; | 967 | int retval; |
961 | 968 | ||
962 | tty_unregister_device(pti_tty_driver, 0); | ||
963 | tty_unregister_device(pti_tty_driver, 1); | ||
964 | |||
965 | retval = tty_unregister_driver(pti_tty_driver); | 969 | retval = tty_unregister_driver(pti_tty_driver); |
966 | if (retval) { | 970 | if (retval) { |
967 | pr_err("%s(%d): TTY unregistration failed of pti driver\n", | 971 | pr_err("%s(%d): TTY unregistration failed of pti driver\n", |
@@ -971,17 +975,6 @@ static void __exit pti_exit(void) | |||
971 | } | 975 | } |
972 | 976 | ||
973 | pci_unregister_driver(&pti_pci_driver); | 977 | pci_unregister_driver(&pti_pci_driver); |
974 | |||
975 | retval = misc_deregister(&pti_char_driver); | ||
976 | if (retval) { | ||
977 | pr_err("%s(%d): CHAR unregistration failed of pti driver\n", | ||
978 | __func__, __LINE__); | ||
979 | pr_err("%s(%d): Error value returned: %d\n", | ||
980 | __func__, __LINE__, retval); | ||
981 | } | ||
982 | |||
983 | unregister_console(&pti_console); | ||
984 | return; | ||
985 | } | 978 | } |
986 | 979 | ||
987 | module_init(pti_init); | 980 | module_init(pti_init); |