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

Peng Fan peng.fan at oss.nxp.com
Mon Jun 26 03:12:02 CEST 2023



On 6/25/2023 6:34 PM, Marek Vasut wrote:
> Bitwise operations on signed integers are not defined,
> replace then with per-call checks.

You mean C99 standard?

Thanks,
Peng.

> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> ---
> Cc: "NXP i.MX U-Boot Team" <uboot-imx at nxp.com>
> Cc: Fabio Estevam <festevam at denx.de>
> Cc: Heiko Schocher <hs at denx.de>
> Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
> Cc: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Ye Li <ye.li at nxp.com>
> ---
>   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;
>   }


More information about the U-Boot mailing list