mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 15:26:03 +09:00
dm: core: Add DM_DEVICE_REMOVE condition to all exit paths
At present device_bind() does some unnecessary work if a device fails to bind in SPL. Add the missing conditions. Also fix a style nit in the same function while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
24fd7e383d
commit
15421b71bc
|
@ -137,9 +137,8 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
|
|||
|
||||
if (parent) {
|
||||
size = parent->driver->per_child_plat_auto;
|
||||
if (!size) {
|
||||
if (!size)
|
||||
size = parent->uclass->uc_drv->per_child_plat_auto;
|
||||
}
|
||||
if (size) {
|
||||
dev_or_flags(dev, DM_FLAG_ALLOC_PARENT_PDATA);
|
||||
ptr = calloc(1, size);
|
||||
|
@ -209,14 +208,18 @@ fail_uclass_bind:
|
|||
}
|
||||
}
|
||||
fail_alloc3:
|
||||
if (dev_get_flags(dev) & DM_FLAG_ALLOC_UCLASS_PDATA) {
|
||||
free(dev_get_uclass_plat(dev));
|
||||
dev_set_uclass_plat(dev, NULL);
|
||||
if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) {
|
||||
if (dev_get_flags(dev) & DM_FLAG_ALLOC_UCLASS_PDATA) {
|
||||
free(dev_get_uclass_plat(dev));
|
||||
dev_set_uclass_plat(dev, NULL);
|
||||
}
|
||||
}
|
||||
fail_alloc2:
|
||||
if (dev_get_flags(dev) & DM_FLAG_ALLOC_PDATA) {
|
||||
free(dev_get_plat(dev));
|
||||
dev_set_plat(dev, NULL);
|
||||
if (CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)) {
|
||||
if (dev_get_flags(dev) & DM_FLAG_ALLOC_PDATA) {
|
||||
free(dev_get_plat(dev));
|
||||
dev_set_plat(dev, NULL);
|
||||
}
|
||||
}
|
||||
fail_alloc1:
|
||||
devres_release_all(dev);
|
||||
|
|
Loading…
Reference in New Issue
Block a user