|
@@ -30,17 +30,20 @@ void mdiobus_setup_mdiodev_from_board_info(struct mii_bus *bus,
|
|
|
struct mdio_board_info *bi))
|
|
|
{
|
|
|
struct mdio_board_entry *be;
|
|
|
+ struct mdio_board_entry *tmp;
|
|
|
struct mdio_board_info *bi;
|
|
|
int ret;
|
|
|
|
|
|
mutex_lock(&mdio_board_lock);
|
|
|
- list_for_each_entry(be, &mdio_board_list, list) {
|
|
|
+ list_for_each_entry_safe(be, tmp, &mdio_board_list, list) {
|
|
|
bi = &be->board_info;
|
|
|
|
|
|
if (strcmp(bus->id, bi->bus_id))
|
|
|
continue;
|
|
|
|
|
|
+ mutex_unlock(&mdio_board_lock);
|
|
|
ret = cb(bus, bi);
|
|
|
+ mutex_lock(&mdio_board_lock);
|
|
|
if (ret)
|
|
|
continue;
|
|
|
|