From eec846a8ebd62868490ba0aa2a16d6052b0fa9d3 Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Sun, 29 Jan 2006 21:51:36 -0500 Subject: [PATCH] --- yaml --- r: 19292 b: refs/heads/master c: 2e9d675ed24bcefd0d99b531a9d7faf794b762c8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/input/joystick/db9.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 4cdb5306a2a2..b5ae15098e26 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 84c61896bd756a440c54be07b6e97ad230f31a16 +refs/heads/master: 2e9d675ed24bcefd0d99b531a9d7faf794b762c8 diff --git a/trunk/drivers/input/joystick/db9.c b/trunk/drivers/input/joystick/db9.c index 98479b82842d..dcffc34f30c3 100644 --- a/trunk/drivers/input/joystick/db9.c +++ b/trunk/drivers/input/joystick/db9.c @@ -616,7 +616,7 @@ static struct db9 __init *db9_probe(int parport, int mode) if (!input_dev) { printk(KERN_ERR "db9.c: Not enough memory for input device\n"); err = -ENOMEM; - goto err_free_devs; + goto err_unreg_devs; } sprintf(db9->phys[i], "%s/input%d", db9->pd->port->name, i); @@ -642,13 +642,17 @@ static struct db9 __init *db9_probe(int parport, int mode) input_set_abs_params(input_dev, db9_abs[j], 1, 255, 0, 0); } - input_register_device(input_dev); + err = input_register_device(input_dev); + if (err) + goto err_free_dev; } parport_put_port(pp); return db9; - err_free_devs: + err_free_dev: + input_free_device(db9->dev[i]); + err_unreg_devs: while (--i >= 0) input_unregister_device(db9->dev[i]); kfree(db9); @@ -660,7 +664,7 @@ static struct db9 __init *db9_probe(int parport, int mode) return ERR_PTR(err); } -static void __exit db9_remove(struct db9 *db9) +static void db9_remove(struct db9 *db9) { int i; @@ -698,7 +702,8 @@ static int __init db9_init(void) if (err) { while (--i >= 0) - db9_remove(db9_base[i]); + if (db9_base[i]) + db9_remove(db9_base[i]); return err; }