]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
bootdev: Fix the case where the driver ops field is null.
authorTom Rini <trini@konsulko.com>
Mon, 18 May 2026 22:32:05 +0000 (16:32 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 19 May 2026 13:53:50 +0000 (07:53 -0600)
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 <trini@konsulko.com>
boot/bootdev-uclass.c

index 3f8dc2c3c4e69dc438321587f20f076e2dde91ba..657804949f8d6af510bebdf29dabfa5c54ab6280 100644 (file)
@@ -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,