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

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

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 0a66045b
...@@ -191,6 +191,8 @@ static void gameport_run_poll_handler(unsigned long d) ...@@ -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) static void gameport_bind_driver(struct gameport *gameport, struct gameport_driver *drv)
{ {
int error;
down_write(&gameport_bus.subsys.rwsem); down_write(&gameport_bus.subsys.rwsem);
gameport->dev.driver = &drv->driver; gameport->dev.driver = &drv->driver;
...@@ -198,8 +200,20 @@ static void gameport_bind_driver(struct gameport *gameport, struct gameport_driv ...@@ -198,8 +200,20 @@ static void gameport_bind_driver(struct gameport *gameport, struct gameport_driv
gameport->dev.driver = NULL; gameport->dev.driver = NULL;
goto out; goto out;
} }
device_bind_driver(&gameport->dev);
out: 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); up_write(&gameport_bus.subsys.rwsem);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment