If we successfully call input_register_device() in psmouse_connect but sysfs_create_group() fails, we'll enter the error path without ever having called input_unregister_device() (potentially leaking memory, or creating a race condition if something else attempts to access the new input device). This calls input_unregister_device from the error path, and sets input_dev to NULL so that we don't attempt to also call input_free_device on it. Signed-off-by: Andres Salomon <dilinger@xxxxxxxxxx> --- drivers/input/mouse/psmouse-base.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 21a9c0b..df25e7b 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c @@ -1247,6 +1247,8 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv) err_pt_deactivate: if (parent && parent->pt_deactivate) parent->pt_deactivate(parent); + input_unregister_device(psmouse->dev); + input_dev = NULL; err_protocol_disconnect: if (psmouse->disconnect) psmouse->disconnect(psmouse); -- 1.5.3.5 - To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html