mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-23 14:51:31 +02:00
dm: core: Fix iteration over driver_info records
We should only perform additional iteration steps when needed to initialize the parent of a device. Other binding errors (such as a missing driver) should not lead to additional iteration steps. Unnecessary iteration steps can cause issues when memory is tightly constrained (such as in the TPL/SPL) since device_bind_by_name() unconditionally allocates memory for a struct udevice. On the SanCloud BBE this led to boot failure caused by memory exhaustion in the SPL when booting from SPI flash. Signed-off-by: Paul Barker <paul.barker@sancloud.com>
This commit is contained in:
parent
9f52e765dc
commit
dec64d55af
@ -120,10 +120,10 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only)
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = bind_drivers_pass(parent, pre_reloc_only);
|
ret = bind_drivers_pass(parent, pre_reloc_only);
|
||||||
if (!ret)
|
if (!result || result == -EAGAIN)
|
||||||
break;
|
|
||||||
if (ret != -EAGAIN && !result)
|
|
||||||
result = ret;
|
result = ret;
|
||||||
|
if (ret != -EAGAIN)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user