Re: [PATCH v2] efi: Fix warning of int-to-pointer-cast on x86 32-bit builds

From: Ingo Molnar
Date: Fri Oct 23 2015 - 04:40:23 EST



* Taku Izumi <izumi.taku@xxxxxxxxxxxxxx> wrote:

> commit-0f96a99 introduces the following warning message:
>
> drivers/firmware/efi/fake_mem.c:186:20: warning: cast to pointer
> from integer of different size [-Wint-to-pointer-cast]
>
> new_memmap_phy was defined as a u64 value and casted to void*.
> This causes a warning of int-to-pointer-cast on x86 32-bit
> environment.
>
> This patch changes the type of "new_memmap_phy" variable
> from "u64" into "ulong" to avoid it.
>
> v1 -> v2:
> - change the type of "new_memmap_phy" from phys_addr_t
> into ulong according to Ard's comment
>
> Reported-by: Ingo Molnar <mingo@xxxxxxxxxx>
> Signed-off-by: Taku Izumi <izumi.taku@xxxxxxxxxxxxxx>
> ---
> drivers/firmware/efi/fake_mem.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/efi/fake_mem.c b/drivers/firmware/efi/fake_mem.c
> index 32bcb14..1f483b4 100644
> --- a/drivers/firmware/efi/fake_mem.c
> +++ b/drivers/firmware/efi/fake_mem.c
> @@ -59,7 +59,7 @@ void __init efi_fake_memmap(void)
> u64 start, end, m_start, m_end, m_attr;
> int new_nr_map = memmap.nr_map;
> efi_memory_desc_t *md;
> - u64 new_memmap_phy;
> + ulong new_memmap_phy;
> void *new_memmap;
> void *old, *new;
> int i;

Sight, this just makes the code outright buggy in another place.

Please don't just try to 'avoid a warning', that's the wrong mindset!

You need to look at how the various values are used, what their natural types are,
how they are used in other places, and accordingly fix the code.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/