Re: dynamic input_dev allocation for ibmasm driver

From: Dmitry Torokhov
Date: Sat Jan 07 2006 - 00:00:15 EST


On Friday 06 January 2006 18:59, Vernon Mauery wrote:
> This patch updates the ibmasm driver to use the dynamic allocation of input_dev
> structs to work with the sysfs subsystem. I have tested it on my machine and it
> seems to work fine.
>
> Signed-off-by: Vernon Mauery <vernux@xxxxxxxxxx>
>
> ibmasm.h | 6 ++---
> remote.c | 72 ++++++++++++++++++++++++++++++++++-----------------------------
> 2 files changed, 42 insertions(+), 36 deletions(-)
>
>
...
> - input_register_device(&remote->mouse_dev);
> - input_register_device(&remote->keybd_dev);
> + if ((ret = input_register_device(mouse_dev)))
> + goto error_alloc;
> + if ((ret = input_register_device(keybd_dev)))
> + goto error_alloc;
> +
> + sp->remote.mouse_dev = mouse_dev;
> + sp->remote.keybd_dev = keybd_dev;
> enable_mouse_interrupts(sp);
>
> printk(KERN_INFO "ibmasm remote responding to events on RSA card %d\n", sp->number);
>
> return 0;
> +
> +error_alloc:
> + input_free_device(mouse_dev);
> + input_free_device(keybd_dev);
> + return ret;

Error handling is rotten here. If 2nd input_register_device fails you will
whack fully registered remote->mouse_dev. You are missing call to
input_unregister_device() there.

Please fix it up and send it my way - I'll add it to the input tree.

Thanks!

--
Dmitry
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/