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

Commit 4d462b9e authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: tmdc - handle errors from input_register_device()



Also set .owner in driver structure so we'll have a link between
module and driver in sysfs.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent ab52cd66
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -284,13 +284,13 @@ static int tmdc_setup_port(struct tmdc *tmdc, int idx, unsigned char *data)
	struct tmdc_port *port;
	struct input_dev *input_dev;
	int i, j, b = 0;
	int err;

	tmdc->port[idx] = port = kzalloc(sizeof (struct tmdc_port), GFP_KERNEL);
	input_dev = input_allocate_device();
	if (!port || !input_dev) {
		kfree(port);
		input_free_device(input_dev);
		return -ENOMEM;
		err = -ENOMEM;
		goto fail;
	}

	port->mode = data[TMDC_BYTE_ID];
@@ -347,9 +347,15 @@ static int tmdc_setup_port(struct tmdc *tmdc, int idx, unsigned char *data)
		b += port->btnc[i];
	}

	input_register_device(port->dev);
	err = input_register_device(port->dev);
	if (err)
		goto fail;

	return 0;

 fail:	input_free_device(input_dev);
	kfree(port);
	return err;
}

/*
@@ -424,6 +430,7 @@ static void tmdc_disconnect(struct gameport *gameport)
static struct gameport_driver tmdc_drv = {
	.driver		= {
		.name	= "tmdc",
		.owner	= THIS_MODULE,
	},
	.description	= DRIVER_DESC,
	.connect	= tmdc_connect,