[Letux-kernel] New LetuxOS Kernels - strcmp(NULL)

H. Nikolaus Schaller hns at goldelico.com
Sun Jun 24 22:20:06 CEST 2018


> Am 24.06.2018 um 22:12 schrieb Andreas Kemnade <andreas at kemnade.info>:
> 
> On Sun, 24 Jun 2018 20:17:38 +0200
> "H. Nikolaus Schaller" <hns at goldelico.com> wrote:
> 
>> 
>> http://git.goldelico.com/?p=gta04-kernel.git;a=blob;f=drivers/power/supply/generic-adc-battery.c;h=359cc8dac245c071f1ff21b12791ad6c5a9332c4;hb=dca26f608a765008b869991bf29fa241769599fb#l429
>> 
>>   memcpy(properties + sizeof(*(psy_desc->properties)) * index,
>> 
>> the + of 'properties' and some integer already multiplies the index by sizeof(*properties).
>> 
> Well, the enum might or might not be 8bit size, so that multiply might
> be a nop, or it will not be a not at some time.
> 
> Lets cite the standard:
> 6.7.2.2 Enumeration specifiers
> [...]
> Constraints
> The expression that defines the value of an enumeration constant shall be an integer constant expression that has a value representable as an int.
> [...]
> Each enumerated type shall be compatible with char, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined, but shall be capable of representing the values of all the members of the enumeration.
> 
>> Hence it should IMHO be
>> 
>>   memcpy(properties + index,
>> 
>> or to better describe that memcpy takes an address
>> 
>>   memcpy(&properties[index],
>> 
>> What do you think?
> Why not simply
> 
>                        properties[index] = gab_dyn_props[chan];

Because that is far too simple :)

What I assume is that someone developed that before the variable was an enum.
Maybe a struct with multiple fields. But even then struct assignments are possible...

But see my overlapping mail - it was originally introduced that way long ago in 3.7-rc1.

Now I am curious what your statistical test shows. It is of course a much
better validation than mine (with 0/5 failures vs. 1/3 failures).

BR,
Nikolaus

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20180624/4a1a3e94/attachment.asc>


More information about the Letux-kernel mailing list