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 <s...@chromium.org>
---

 boot/image-board.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/boot/image-board.c b/boot/image-board.c
index 4e4d1c157d7..14b595977e1 100644
--- a/boot/image-board.c
+++ b/boot/image-board.c
@@ -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;
-- 
2.37.2.672.g94769d06f0-goog

Reply via email to