Input: serio core - handle errors returned by device_bind_driver()
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
07646e217f
commit
0a66045bcf
1 changed files with 14 additions and 2 deletions
|
@ -118,6 +118,8 @@ static int serio_match_port(const struct serio_device_id *ids, struct serio *ser
|
||||||
|
|
||||||
static void serio_bind_driver(struct serio *serio, struct serio_driver *drv)
|
static void serio_bind_driver(struct serio *serio, struct serio_driver *drv)
|
||||||
{
|
{
|
||||||
|
int error;
|
||||||
|
|
||||||
down_write(&serio_bus.subsys.rwsem);
|
down_write(&serio_bus.subsys.rwsem);
|
||||||
|
|
||||||
if (serio_match_port(drv->id_table, serio)) {
|
if (serio_match_port(drv->id_table, serio)) {
|
||||||
|
@ -126,9 +128,19 @@ static void serio_bind_driver(struct serio *serio, struct serio_driver *drv)
|
||||||
serio->dev.driver = NULL;
|
serio->dev.driver = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
device_bind_driver(&serio->dev);
|
error = device_bind_driver(&serio->dev);
|
||||||
|
if (error) {
|
||||||
|
printk(KERN_WARNING
|
||||||
|
"serio: device_bind_driver() failed "
|
||||||
|
"for %s (%s) and %s, error: %d\n",
|
||||||
|
serio->phys, serio->name,
|
||||||
|
drv->description, error);
|
||||||
|
serio_disconnect_driver(serio);
|
||||||
|
serio->dev.driver = NULL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
up_write(&serio_bus.subsys.rwsem);
|
up_write(&serio_bus.subsys.rwsem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue