w1: fix data abort if no one wire bus master present
[oweals/u-boot.git] / drivers / w1 / w1-uclass.c
index aecf7fec77cf7bcc90e4d7f34fb4cbe919f9c16f..cb41b68eff1a4de7dee2b9b37e39fbac934d0109 100644 (file)
@@ -115,17 +115,19 @@ int w1_get_bus(int busnum, struct udevice **busp)
        struct udevice *dev;
 
        for (ret = uclass_first_device(UCLASS_W1, &dev);
-            !ret;
-            uclass_next_device(&dev), i++) {
-               if (ret) {
-                       debug("Cannot find w1 bus %d\n", busnum);
-                       return ret;
-               }
+            dev && !ret;
+            ret = uclass_next_device(&dev), i++) {
                if (i == busnum) {
                        *busp = dev;
                        return 0;
                }
        }
+
+       if (!ret) {
+               debug("Cannot find w1 bus %d\n", busnum);
+               ret = -ENODEV;
+       }
+
        return ret;
 }