summaryrefslogtreecommitdiff
path: root/boot/bootdev-uclass.c
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2026-05-18 16:32:05 -0600
committerTom Rini <[email protected]>2026-05-19 07:53:50 -0600
commit15cc283d1ba4f0821bf96dd709cc805513746da7 (patch)
tree879a807e70cc9b3e6ed58a66c99fb886743fb05d /boot/bootdev-uclass.c
parent21a3b9f03b05467ec7422399a92a43f89dd2b526 (diff)
bootdev: Fix the case where the driver ops field is null.
In the case where a bootdev does not have a custom get_bootflow function but instead relies on default_get_bootflow to provide one, bootdev_get_bootflow was not handling the case where ops was simply not set. Restructure the function to check for "ops && ops->get_bootflow" and add appropriate log_debug calls for both cases. Signed-off-by: Tom Rini <[email protected]>
Diffstat (limited to 'boot/bootdev-uclass.c')
-rw-r--r--boot/bootdev-uclass.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 3f8dc2c3c4e..657804949f8 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -566,13 +566,18 @@ int bootdev_get_bootflow(struct udevice *dev, struct bootflow_iter *iter,
{
const struct bootdev_ops *ops = bootdev_get_ops(dev);
- log_debug("->get_bootflow %s,%x=%p\n", dev->name, iter->part,
- ops->get_bootflow);
bootflow_init(bflow, dev, iter->method);
- if (!ops->get_bootflow)
- return default_get_bootflow(dev, iter, bflow);
- return ops->get_bootflow(dev, iter, bflow);
+ if (ops && ops->get_bootflow) {
+ log_debug("->get_bootflow %s,%x=%p\n", dev->name, iter->part,
+ ops->get_bootflow);
+
+ return ops->get_bootflow(dev, iter, bflow);
+ }
+
+ log_debug("->get_bootflow %s,%x is unset\n", dev->name, iter->part);
+
+ return default_get_bootflow(dev, iter, bflow);
}
int bootdev_next_label(struct bootflow_iter *iter, struct udevice **devp,