aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2006-03-14 00:12:08 -0500
committerDmitry Torokhov <dtor_core@ameritech.net>2006-03-14 00:12:08 -0500
commitdd55563f635751327eb06ae569d4761a0220f2e0 (patch)
treea87b2dca6e8eae4ca1f988a84f710a0181154ccd
parente5c6c8e457d16c7cbc12f849ad18d4d508950de2 (diff)
downloadkernel_samsung_smdk4412-dd55563f635751327eb06ae569d4761a0220f2e0.zip
kernel_samsung_smdk4412-dd55563f635751327eb06ae569d4761a0220f2e0.tar.gz
kernel_samsung_smdk4412-dd55563f635751327eb06ae569d4761a0220f2e0.tar.bz2
Input: ns558 - fix logic around pnp_register_driver()
Do not assume that pnp_register_driver() returns the number of devices claimed. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r--drivers/input/gameport/ns558.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/input/gameport/ns558.c b/drivers/input/gameport/ns558.c
index d2e55dc..3e2d28f 100644
--- a/drivers/input/gameport/ns558.c
+++ b/drivers/input/gameport/ns558.c
@@ -252,14 +252,14 @@ static struct pnp_driver ns558_pnp_driver;
#endif
-static int pnp_registered = 0;
-
static int __init ns558_init(void)
{
int i = 0;
+ int error;
- if (pnp_register_driver(&ns558_pnp_driver) >= 0)
- pnp_registered = 1;
+ error = pnp_register_driver(&ns558_pnp_driver);
+ if (error && error != -ENODEV) /* should be ENOSYS really */
+ return error;
/*
* Probe ISA ports after PnP, so that PnP ports that are already
@@ -270,7 +270,7 @@ static int __init ns558_init(void)
while (ns558_isa_portlist[i])
ns558_isa_probe(ns558_isa_portlist[i++]);
- return (list_empty(&ns558_list) && !pnp_registered) ? -ENODEV : 0;
+ return list_empty(&ns558_list) && error ? -ENODEV : 0;
}
static void __exit ns558_exit(void)
@@ -283,8 +283,7 @@ static void __exit ns558_exit(void)
kfree(ns558);
}
- if (pnp_registered)
- pnp_unregister_driver(&ns558_pnp_driver);
+ pnp_unregister_driver(&ns558_pnp_driver);
}
module_init(ns558_init);