cm4000_cs: fix error paths
PATCH 1/1 cm4000_cs: fix error paths
This patch fixes error paths in module_init and probe functions in cm4000_cs and cm4040_cs drivers.
Cc Harald Welte <[email protected]>
Signed-off-by Akinobu Mita <[email protected]>
--- drivers/char/pcmcia/cm4000_cs.c | 9 +++++++-- drivers/char/pcmcia/cm4040_cs.c | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-)
drivers/char/pcmcia/cm4000_cs.c +7 -2
@@ -1881,8 +1881,11 @@ static int cm4000_probe(struct pcmcia_deinit_waitqueue_head (&dev->readq); ret =cm4000_config (link, i); -if (ret) +if (ret) { + dev_table[i] =NULL ; +kfree (dev);return ret; + }class_device_create (cmm_class,NULL ,MKDEV (major, i),NULL ,"cmm%d" , i);
@@ -1907,7 +1910,7 @@ static void cm4000_detach(struct pcmcia_cm4000_release (link); dev_table[devno] =NULL ; -kfree (dev); +kfree (dev);class_device_destroy (cmm_class,MKDEV (major, devno));
@@ -1956,12 +1959,14 @@ static int __init cmm_init(void)if (major <0 ) { printk(KERN_WARNING MODULE_NAME ": could not get major number\n"); +class_destroy (cmm_class);return major; } rc =pcmcia_register_driver (&cm4000_driver);if (rc <0 ) {unregister_chrdev (major,DEVICE_NAME ); +class_destroy (cmm_class);return rc; }
drivers/char/pcmcia/cm4040_cs.c +6 -1
@@ -636,8 +636,11 @@ static int reader_probe(struct pcmcia_desetup_timer (&dev->poll_timer, cm4040_do_poll,0 ); ret =reader_config (link, i); -if (ret) +if (ret) { + dev_table[i] =NULL ; +kfree (dev);return ret; + }class_device_create (cmx_class,NULL ,MKDEV (major, i),NULL ,"cmx%d" , i);
@@ -708,12 +711,14 @@ static int __init cm4040_init(void)if (major <0 ) { printk(KERN_WARNING MODULE_NAME ": could not get major number\n"); +class_destroy (cmx_class);return major; } rc =pcmcia_register_driver (&reader_driver);if (rc <0 ) {unregister_chrdev (major,DEVICE_NAME ); +class_destroy (cmx_class);return rc; }