Message ID | 20230810093157.94244-4-krzysztof.kozlowski@linaro.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [01/15] hwmon: (adt7475) fix Wvoid-pointer-to-enum-cast warning | expand |
From: Krzysztof Kozlowski > Sent: 10 August 2023 10:32 > > 'chip' is an enum, thus cast of pointer on 64-bit compile test with W=1 > causes: > > ina2xx.c:627:10: error: cast to smaller integer type 'enum ina2xx_ids' from 'const void *' [- > Werror,-Wvoid-pointer-to-enum-cast] > > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > --- > drivers/hwmon/ina2xx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c > index a47973e2d606..d8415d1f21fc 100644 > --- a/drivers/hwmon/ina2xx.c > +++ b/drivers/hwmon/ina2xx.c > @@ -624,7 +624,7 @@ static int ina2xx_probe(struct i2c_client *client) > enum ina2xx_ids chip; > > if (client->dev.of_node) > -chip = (enum ina2xx_ids)of_device_get_match_data(&client->dev); > +chip = (uintptr_t)of_device_get_match_data(&client->dev); The kernel type would be 'long' not uintptr_t. But this all looks like something horrid is being done. (And you've clearly lost all the tabs) David > else > chip = i2c_match_id(ina2xx_id, client)->driver_data; > > -- > 2.34.1 > - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
On 14/08/2023 10:33, David Laight wrote: > From: Krzysztof Kozlowski >> Sent: 10 August 2023 10:32 >> >> 'chip' is an enum, thus cast of pointer on 64-bit compile test with W=1 >> causes: >> >> ina2xx.c:627:10: error: cast to smaller integer type 'enum ina2xx_ids' from 'const void *' [- >> Werror,-Wvoid-pointer-to-enum-cast] >> >> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> >> --- >> drivers/hwmon/ina2xx.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c >> index a47973e2d606..d8415d1f21fc 100644 >> --- a/drivers/hwmon/ina2xx.c >> +++ b/drivers/hwmon/ina2xx.c >> @@ -624,7 +624,7 @@ static int ina2xx_probe(struct i2c_client *client) >> enum ina2xx_ids chip; >> >> if (client->dev.of_node) >> -chip = (enum ina2xx_ids)of_device_get_match_data(&client->dev); >> +chip = (uintptr_t)of_device_get_match_data(&client->dev); > > The kernel type would be 'long' not uintptr_t. Yeah, Greg also pointed out. It was applied, so no sure if it is worth to change to kernel_ulong_t. > But this all looks like something horrid is being done. Why exactly? This is pretty often pattern, code is correct and easy to understand. > > (And you've clearly lost all the tabs) It's your email client who lost them: https://lore.kernel.org/all/20230810093157.94244-4-krzysztof.kozlowski@linaro.org/ Best regards, Krzysztof
diff --git a/drivers/hwmon/ina2xx.c b/drivers/hwmon/ina2xx.c index a47973e2d606..d8415d1f21fc 100644 --- a/drivers/hwmon/ina2xx.c +++ b/drivers/hwmon/ina2xx.c @@ -624,7 +624,7 @@ static int ina2xx_probe(struct i2c_client *client) enum ina2xx_ids chip; if (client->dev.of_node) - chip = (enum ina2xx_ids)of_device_get_match_data(&client->dev); + chip = (uintptr_t)of_device_get_match_data(&client->dev); else chip = i2c_match_id(ina2xx_id, client)->driver_data;
'chip' is an enum, thus cast of pointer on 64-bit compile test with W=1 causes: ina2xx.c:627:10: error: cast to smaller integer type 'enum ina2xx_ids' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast] Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> --- drivers/hwmon/ina2xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)