Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b50d8b8 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: elo - handle input_register_device() failures



Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent f287caee
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -189,9 +189,11 @@ static void elo_disconnect(struct serio *serio)
{
	struct elo *elo = serio_get_drvdata(serio);

	input_get_device(elo->dev);
	input_unregister_device(elo->dev);
	serio_close(serio);
	serio_set_drvdata(serio, NULL);
	input_put_device(elo->dev);
	kfree(elo);
}

@@ -211,7 +213,7 @@ static int elo_connect(struct serio *serio, struct serio_driver *drv)
	input_dev = input_allocate_device();
	if (!elo || !input_dev) {
		err = -ENOMEM;
		goto fail;
		goto fail1;
	}

	elo->serio = serio;
@@ -257,13 +259,17 @@ static int elo_connect(struct serio *serio, struct serio_driver *drv)

	err = serio_open(serio, drv);
	if (err)
		goto fail;
		goto fail2;

	err = input_register_device(elo->dev);
	if (err)
		goto fail3;

	input_register_device(elo->dev);
	return 0;

 fail:	serio_set_drvdata(serio, NULL);
	input_free_device(input_dev);
 fail3: serio_close(serio);
 fail2:	serio_set_drvdata(serio, NULL);
 fail1:	input_free_device(input_dev);
	kfree(elo);
	return err;
}