image: Fix up ANDROID_BOOT_IMAGE ramdisk code
authorSimon Glass <sjg@chromium.org>
Sun, 28 Aug 2022 18:32:46 +0000 (12:32 -0600)
committerTom Rini <trini@konsulko.com>
Wed, 14 Sep 2022 13:03:06 +0000 (09:03 -0400)
Convert this to an if(), fix the cast from an address to a pointer and
make sure that any error is returned correctly.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/image-board.c

index 4e4d1c1..14b5959 100644 (file)
@@ -421,12 +421,19 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
                        images->fit_noffset_rd = rd_noffset;
                        break;
 #endif
-#ifdef CONFIG_ANDROID_BOOT_IMAGE
                case IMAGE_FORMAT_ANDROID:
-                       android_image_get_ramdisk((void *)images->os.start,
-                                                 rd_datap, rd_lenp);
-                       break;
-#endif
+                       if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE)) {
+                               void *ptr = map_sysmem(images->os.start, 0);
+                               int ret;
+
+                               ret = android_image_get_ramdisk(ptr, rd_datap,
+                                                               rd_lenp);
+                               unmap_sysmem(ptr);
+                               if (ret)
+                                       return ret;
+                               break;
+                       }
+                       fallthrough;
                default:
                        if (IS_ENABLED(CONFIG_SUPPORT_RAW_INITRD)) {
                                char *end = NULL;