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

Commit 23de1510 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: gameport core - handle errors returned by device_bind_driver()



Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 0a66045b
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -191,6 +191,8 @@ static void gameport_run_poll_handler(unsigned long d)

static void gameport_bind_driver(struct gameport *gameport, struct gameport_driver *drv)
{
	int error;

	down_write(&gameport_bus.subsys.rwsem);

	gameport->dev.driver = &drv->driver;
@@ -198,7 +200,19 @@ static void gameport_bind_driver(struct gameport *gameport, struct gameport_driv
		gameport->dev.driver = NULL;
		goto out;
	}
	device_bind_driver(&gameport->dev);

	error = device_bind_driver(&gameport->dev);
	if (error) {
		printk(KERN_WARNING
			"gameport: device_bind_driver() failed "
			"for %s (%s) and %s, error: %d\n",
			gameport->phys, gameport->name,
			drv->description, error);
		drv->disconnect(gameport);
		gameport->dev.driver = NULL;
		goto out;
	}

 out:
	up_write(&gameport_bus.subsys.rwsem);
}