Re: [PATCH] x86: suppress sparse warning in copy_to_user()

From: Jan Beulich
Date: Tue Oct 04 2016 - 04:35:16 EST


>>> On 04.10.16 at 10:02, <johannes@xxxxxxxxxxxxxxxx> wrote:
> On Tue, 2016-10-04 at 01:51 -0600, Jan Beulich wrote:
>> >
>> > >
>> > > >
>> > > > On 04.10.16 at 09:33, <johannes@xxxxxxxxxxxxxxxx> wrote:
>> > From: Johannes Berg <johannes.berg@xxxxxxxxx>
>> >
>> > __compiletime_object_size() is simply defined to
>> > __builtin_object_size()
>> > which gcc declares with (void *, int type) prototype.
>>
>> If that was the case, everyone should have seen such warnings from
>> the day the original patch got introduced.
>
> Only if they run sparse. Clearly people don't, or we wouldn't have a
> history of a ton of such problems, e.g.

No - you say "which gcc declares with (void *, int type) prototype".
If that was the case, there would need to be a warning.

>> And the compiler warnings
>> I get when testing with all four combinations of const and volatile
>> also supports this by saying "expected 'const void *' but ..."
>
> It's not a compiler warning though that I'm getting.
>
> What tool are you using to get such a warning?

I'm talking about gcc and the warning surfacing when I additonally
add volatile.

> On gcc 6.1.1, I'm getting no warning (from the compiler) either way,
> even with W=2, and the gcc documentation notes the fact that it treats
> it as passing void *:
>
> https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html

Perhaps it's just the documentation which is imprecise here?

Jan