Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1557660
| From | Sebastian Reichel <sre@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning |
| Date | 2017-01-12 18:50 +0100 |
| Message-ID | <sYRFE-6Pt-17@gated-at.bofh.it> (permalink) |
| References | <sYsxA-89i-31@gated-at.bofh.it> <sYDMl-6He-13@gated-at.bofh.it> <sYJ5o-1Jo-21@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
[Multipart message — attachments visible in raw view] - view raw
On Thu, Jan 12, 2017 at 09:32:26AM +0100, Arnd Bergmann wrote:
> On Thursday, January 12, 2017 3:58:24 AM CET Sebastian Reichel wrote:
> > 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@arndb.de>
> >
> > 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.
gcc does not generate warnings as far as I can see and the precision
loss itself is not a problem in this case, since we only store the
enum values in the pointer anyways.
I don't mind adding the uintptr_t cast. But in that case it should
probably be added in a few other places, too:
$ git grep of_device_get_match_data | grep "(enum"
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c: adv7511->type = (enum adv7511_type)of_device_get_match_data(dev);
drivers/i2c/busses/i2c-rcar.c: priv->devtype = (enum rcar_i2c_type)of_device_get_match_data(dev);
drivers/net/ethernet/renesas/ravb_main.c: chip_id = (enum ravb_chip_id)of_device_get_match_data(&pdev->dev);
drivers/pci/host/pci-imx6.c: (enum imx6_pcie_variants)of_device_get_match_data(dev);
drivers/power/supply/axp20x_usb_power.c: power->axp20x_id = (enum axp20x_variants)of_device_get_match_data(
drivers/reset/hisilicon/hi6220_reset.c: type = (enum hi6220_reset_ctrl_type)of_device_get_match_data(dev);
drivers/usb/phy/phy-msm-usb.c: pdata->phy_type = (enum msm_usb_phy_type)of_device_get_match_data(&pdev->dev);
--Sebastian
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Arnd Bergmann <arnd@arndb.de> - 2017-01-11 16:00 +0100
Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Sebastian Reichel <sre@kernel.org> - 2017-01-12 04:00 +0100
Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Arnd Bergmann <arnd@arndb.de> - 2017-01-12 09:40 +0100
Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Arnd Bergmann <arnd@arndb.de> - 2017-01-12 17:20 +0100
Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Michal Suchánek <msuchanek@suse.de> - 2017-01-12 17:20 +0100
Re: [PATCH] power: supply: axp20x_usb_power: fix 64-bit build warning Sebastian Reichel <sre@kernel.org> - 2017-01-12 18:50 +0100
csiph-web