[PATCH v2] ARM: imx: romapi: Fix signed integer bitwise ops misuse

Bitwise operations on signed integers are not defined, replace them with per-call checks.
Reviewed-by: Peng Fan peng.fan@nxp.com Signed-off-by: Marek Vasut marex@denx.de --- Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: Fabio Estevam festevam@denx.de Cc: Heiko Schocher hs@denx.de Cc: Heinrich Schuchardt xypron.glpk@gmx.de Cc: Rasmus Villemoes rasmus.villemoes@prevas.dk Cc: Simon Glass sjg@chromium.org Cc: Stefano Babic sbabic@denx.de Cc: Tom Rini trini@konsulko.com Cc: Ye Li ye.li@nxp.com --- V2: - s@then@them@ - Add RB from Peng --- arch/arm/mach-imx/spl_imx_romapi.c | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-imx/spl_imx_romapi.c b/arch/arm/mach-imx/spl_imx_romapi.c index 9164045115f..4af41699678 100644 --- a/arch/arm/mach-imx/spl_imx_romapi.c +++ b/arch/arm/mach-imx/spl_imx_romapi.c @@ -76,13 +76,16 @@ static int spl_romapi_load_image_seekable(struct spl_image_info *spl_image, u32 image_offset;
ret = rom_api_query_boot_infor(QUERY_IVT_OFF, &offset); - ret |= rom_api_query_boot_infor(QUERY_PAGE_SZ, &pagesize); - ret |= rom_api_query_boot_infor(QUERY_IMG_OFF, &image_offset); + if (ret != ROM_API_OKAY) + goto err;
- if (ret != ROM_API_OKAY) { - puts("ROMAPI: Failure query boot infor pagesize/offset\n"); - return -1; - } + ret = rom_api_query_boot_infor(QUERY_PAGE_SZ, &pagesize); + if (ret != ROM_API_OKAY) + goto err; + + ret = rom_api_query_boot_infor(QUERY_IMG_OFF, &image_offset); + if (ret != ROM_API_OKAY) + goto err;
header = (struct legacy_img_hdr *)(CONFIG_SPL_IMX_ROMAPI_LOADADDR);
@@ -124,6 +127,10 @@ static int spl_romapi_load_image_seekable(struct spl_image_info *spl_image, }
return 0; + +err: + puts("ROMAPI: Failure query boot infor pagesize/offset\n"); + return -1; }
static ulong spl_ram_load_read(struct spl_load_info *load, ulong sector, @@ -344,12 +351,12 @@ int board_return_to_bootrom(struct spl_image_info *spl_image, u32 boot, bstage;
ret = rom_api_query_boot_infor(QUERY_BT_DEV, &boot); - ret |= rom_api_query_boot_infor(QUERY_BT_STAGE, &bstage); + if (ret != ROM_API_OKAY) + goto err;
- if (ret != ROM_API_OKAY) { - puts("ROMAPI: failure at query_boot_info\n"); - return -1; - } + ret = rom_api_query_boot_infor(QUERY_BT_STAGE, &bstage); + if (ret != ROM_API_OKAY) + goto err;
printf("Boot Stage: ");
@@ -374,4 +381,7 @@ int board_return_to_bootrom(struct spl_image_info *spl_image, return spl_romapi_load_image_stream(spl_image, bootdev);
return spl_romapi_load_image_seekable(spl_image, bootdev, boot); +err: + puts("ROMAPI: failure at query_boot_info\n"); + return -1; }

On 01/07/2023 22:03, Marek Vasut wrote:
Bitwise operations on signed integers are not defined, replace them with per-call checks.
Reviewed-by: Peng Fan peng.fan@nxp.com Signed-off-by: Marek Vasut marex@denx.de
Reviewed-by: Fabio Estevam festevam@denx.de

Hello Marek,
On 02.07.23 03:03, Marek Vasut wrote:
Bitwise operations on signed integers are not defined, replace them with per-call checks.
Reviewed-by: Peng Fan peng.fan@nxp.com Signed-off-by: Marek Vasut marex@denx.de
Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: Fabio Estevam festevam@denx.de Cc: Heiko Schocher hs@denx.de Cc: Heinrich Schuchardt xypron.glpk@gmx.de Cc: Rasmus Villemoes rasmus.villemoes@prevas.dk Cc: Simon Glass sjg@chromium.org Cc: Stefano Babic sbabic@denx.de Cc: Tom Rini trini@konsulko.com Cc: Ye Li ye.li@nxp.com
V2: - s@then@them@ - Add RB from Peng
arch/arm/mach-imx/spl_imx_romapi.c | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-)
good catch!
Reviewed-by: Heiko Schocher hs@denx.de
bye, Heiko

Bitwise operations on signed integers are not defined, replace them with per-call checks. Reviewed-by: Peng Fan peng.fan@nxp.com Signed-off-by: Marek Vasut marex@denx.de Reviewed-by: Fabio Estevam festevam@denx.de Reviewed-by: Heiko Schocher hs@denx.de
Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic
participants (4)
-
Fabio Estevam
-
Heiko Schocher
-
Marek Vasut
-
sbabic@denx.de