Message ID | 20230814-void-sound-soc-codecs-rt5677-v1-1-5c468c60fa37@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: rt5677: fix -Wvoid-pointer-to-enum-cast warning | expand |
On Mon, Aug 14, 2023 at 09:58:56PM +0000, Justin Stitt wrote: > `match_id->data` is a void* and as such is being truncated when cast to > `enum rt5677_type` which is only int-width. This doesn't apply against current code, please check and resend.
On Tue, Aug 15, 2023 at 01:54:40PM +0100, Mark Brown wrote: > On Mon, Aug 14, 2023 at 09:58:56PM +0000, Justin Stitt wrote: > > `match_id->data` is a void* and as such is being truncated when cast to > > `enum rt5677_type` which is only int-width. > > This doesn't apply against current code, please check and resend. It looks like Andy fixed this warning as part of the refactoring to device_get_match_data(): https://git.kernel.org/broonie/sound/c/043bb9c012ee7d092a477159cc66dbdf62fd2666 Cheers, Nathan
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c index ad14d18860fc..278cb0b265e5 100644 --- a/sound/soc/codecs/rt5677.c +++ b/sound/soc/codecs/rt5677.c @@ -5578,7 +5578,7 @@ static int rt5677_i2c_probe(struct i2c_client *i2c) match_id = of_match_device(rt5677_of_match, &i2c->dev); if (match_id) - rt5677->type = (enum rt5677_type)match_id->data; + rt5677->type = (uintptr_t)match_id->data; } else if (ACPI_HANDLE(&i2c->dev)) { const struct acpi_device_id *acpi_id;
`match_id->data` is a void* and as such is being truncated when cast to `enum rt5677_type` which is only int-width. There is likely no data loss occurring, though, as `enum rt5677_type` consists of only two fields from 0 to 1 wherein obviously no data loss happens from pointer-width -> int-width. Link: https://github.com/ClangBuiltLinux/linux/issues/1910 Reported-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Justin Stitt <justinstitt@google.com> --- Note: I'm not sure if `uintptr_t` is the correct solution here as I've also seen a cast to `unsigned long` suffice. Any thoughts on the semantically correct option? --- sound/soc/codecs/rt5677.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: 2ccdd1b13c591d306f0401d98dedc4bdcd02b421 change-id: 20230814-void-sound-soc-codecs-rt5677-dfc041c1a734 Best regards, -- Justin Stitt <justinstitt@google.com>