Re: [patch] ns558 bug

Adam Belay
2005-02-05T00:48:44Z

On Fri, Feb 04, 2005 at 09:00:54PM +0100, matthieu castet wrote:
> Hi,
>
> this patch is based on http://bugzilla.kernel.org/show_bug.cgi?id=2962
> patch from adam belay.
>
> It solve a oops when pnp_register_driver(&ns558_pnp_driver) failed.
>
> Please apply this patch.
>
> Matthieu

I remember writing a version of this patch a while ago. The current behavior
is broken because it shouldn't be considered a failure if the driver doesn't
find any devices.

Thanks,
Adam

> Index: drivers/input/gameport/ns558.c
> ===================================================================
> RCS file: /home/mat/dev/linux-cvs-rep/linux-cvs/drivers/input/gameport/ns558.c,v
> retrieving revision 1.15
> diff -u -u -r1.15 ns558.c
> --- drivers/input/gameport/ns558.c 16 Sep 2004 14:04:04 -0000 1.15
> +++ drivers/input/gameport/ns558.c 4 Feb 2005 19:53:20 -0000
> @@ -261,6 +261,8 @@
>
> #endif
>
> +static int registered = 0;
> +
> int __init ns558_init(void)
> {
> int i = 0;
> @@ -272,8 +274,10 @@
> while (ns558_isa_portlist[i])
> ns558_isa_probe(ns558_isa_portlist[i++]);
>
> - pnp_register_driver(&ns558_pnp_driver);
> - return list_empty(&ns558_list) ? -ENODEV : 0;
> + if (pnp_register_driver(&ns558_pnp_driver) >= 0)
> + registered = 1;
> +
> + return (list_empty(&ns558_list) && !registered) ? -ENODEV : 0;
> }
>
> void __exit ns558_exit(void)
> @@ -297,7 +301,8 @@
> break;
> }
> }
> - pnp_unregister_driver(&ns558_pnp_driver);
> + if (registered)
> + pnp_unregister_driver(&ns558_pnp_driver);
> }
>
> module_init(ns558_init);