All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Maximilian Luz <luzmaximilian@gmail.com>,
	Arnd Bergmann <arnd@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com
Subject: Re: [PATCH] platform/surface: aggregator: shut up clang -Wconstantn-conversion warning
Date: Fri, 14 May 2021 21:38:52 +0200	[thread overview]
Message-ID: <42f70914-e46c-20b9-6b13-8e8d855112a9@redhat.com> (raw)
In-Reply-To: <219848ed-e0ce-634a-29c2-caca813b054c@gmail.com>

Hi,

On 5/14/21 4:21 PM, Maximilian Luz wrote:
> On 5/14/21 4:05 PM, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> Clang complains about the assignment of SSAM_ANY_IID to
>> ssam_device_uid->instance:
>>
>> drivers/platform/surface/surface_aggregator_registry.c:478:25: error: implicit conversion from 'int' to '__u8' (aka 'unsigned char') changes value from 65535 to 255 [-Werror,-Wconstant-conversion]
>>          { SSAM_VDEV(HUB, 0x02, SSAM_ANY_IID, 0x00) },
>>          ~                      ^~~~~~~~~~~~
>> include/linux/surface_aggregator/device.h:71:23: note: expanded from macro 'SSAM_ANY_IID'
>>   #define SSAM_ANY_IID            0xffff
>>                                  ^~~~~~
>> include/linux/surface_aggregator/device.h:126:63: note: expanded from macro 'SSAM_VDEV'
>>          SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, tid, iid, fun)
>>                                                                       ^~~
>> include/linux/surface_aggregator/device.h:102:41: note: expanded from macro 'SSAM_DEVICE'
>>          .instance = ((iid) != SSAM_ANY_IID) ? (iid) : 0,                        \
>>                                                 ^~~
>>
>> The assignment doesn't actually happen, but clang checks the type limits
>> before checking whether this assignment is reached. Shut up the warning
>> using an explicit type cast.
> 
> I'm not too happy about this fix as (I believe) it will also shut up any
> valid GCC error message in case those macros are used with non-u8 (and
> non-SSAM_ANY_xxx) values.

Since you're the maintainer of this code, I'll go with your judgement here,
esp. since as the commit msg states SSAM_ANY_IID is never actually
assigned to .instance, instead it gets set to 0.

So this is a false-positive compiler warning, which may be best fixed in
the compiler itself.

With that said I think this is the second time this comes up now, maybe
we should add a comment to the code about the clang warning ?

Regards,

Hans


> 
> I'll let others judge and decide what's preferred, however.
> 
> In case you're deciding to apply this, feel free to add:
> 
> Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com>
> 
> Thanks,
> Max
> 
>> Fixes: eb0e90a82098 ("platform/surface: aggregator: Add dedicated bus and device type")
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>   include/linux/surface_aggregator/device.h | 6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/linux/surface_aggregator/device.h b/include/linux/surface_aggregator/device.h
>> index 4441ad667c3f..90df092ed565 100644
>> --- a/include/linux/surface_aggregator/device.h
>> +++ b/include/linux/surface_aggregator/device.h
>> @@ -98,9 +98,9 @@ struct ssam_device_uid {
>>                | (((fun) != SSAM_ANY_FUN) ? SSAM_MATCH_FUNCTION : 0),    \
>>       .domain   = d,                                \
>>       .category = cat,                            \
>> -    .target   = ((tid) != SSAM_ANY_TID) ? (tid) : 0,            \
>> -    .instance = ((iid) != SSAM_ANY_IID) ? (iid) : 0,            \
>> -    .function = ((fun) != SSAM_ANY_FUN) ? (fun) : 0                \
>> +    .target   = ((tid) != SSAM_ANY_TID) ? (u8)(tid) : 0,            \
>> +    .instance = ((iid) != SSAM_ANY_IID) ? (u8)(iid) : 0,            \
>> +    .function = ((fun) != SSAM_ANY_FUN) ? (u8)(fun) : 0            \
>>     /**
>>    * SSAM_VDEV() - Initialize a &struct ssam_device_id as virtual device with
>>
> 


  reply	other threads:[~2021-05-14 19:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-14 14:05 [PATCH] platform/surface: aggregator: shut up clang -Wconstantn-conversion warning Arnd Bergmann
2021-05-14 14:21 ` Maximilian Luz
2021-05-14 19:38   ` Hans de Goede [this message]
2021-05-14 19:41     ` Hans de Goede
2021-05-14 20:04       ` Arnd Bergmann
2021-05-14 22:07         ` Maximilian Luz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42f70914-e46c-20b9-6b13-8e8d855112a9@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=arnd@arndb.de \
    --cc=arnd@kernel.org \
    --cc=clang-built-linux@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luzmaximilian@gmail.com \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.