diff options
-rw-r--r-- | hcid/device.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/hcid/device.c b/hcid/device.c index ef29f368..15bb41a1 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -1142,14 +1142,16 @@ void device_probe_drivers(struct device *device) } if (do_probe == TRUE && !g_slist_find_custom(device->drivers, - driver->name, (GCompareFunc) strcmp)) { + driver, (GCompareFunc) strcmp)) { err = driver->probe(&device->dev); - if (err < 0) + if (err < 0) { error("probe failed for driver %s", driver->name); - else - device->drivers = g_slist_append(device->drivers, - driver); + continue; + } + + device->drivers = g_slist_append(device->drivers, + driver); } } } |