Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning

From: Arnd Bergmann
Date: Thu Jan 12 2017 - 03:32:52 EST


On Thursday, January 12, 2017 3:58:24 AM CET Sebastian Reichel wrote:
> Hi Arnd,
>
> On Wed, Jan 11, 2017 at 03:51:55PM +0100, Arnd Bergmann wrote:
> > Casting a pointer to 'int' is not always valid:
> >
> > drivers/power/supply/axp20x_usb_power.c: In function 'axp20x_usb_power_probe':
> > drivers/power/supply/axp20x_usb_power.c:297:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> >
> > This makes the code use uintptr_t explicitly.
> >
> > Fixes: 0dcc70ca8644 ("power: supply: axp20x_usb_power: use of_device_id data field instead of device_is_compatible")
> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
>
> I queued Michal's patch instead:
>
> https://git.kernel.org/cgit/linux/kernel/git/sre/linux-power-supply.git/commit/?h=for-next&id=15df6d98ec3b40775918fc6ef73d7f1c2d0cf870

Hmm, that doesn't look right: You can't really rely on an 'enum' type to
have a specific size, especially not the same size as a pointer, in portable
code.

IIRC on many architectures it defaults to 'int' rather than 'long', and
it might also be 'short' on architectures that default to enums being
the smallest integer type that fits.

Arnd