[PATCH v2] lib: fix pointer of type 'void *' used in arithmetic

Jessica Clarke jrtc27 at jrtc27.com
Thu Jan 13 03:41:57 PST 2022


]On 13 Jan 2022, at 11:37, Damien Le Moal <damien.lemoal at opensource.wdc.com> wrote:
> 
> On 2022/01/13 20:03, Jukka Laitinen wrote:
>> Thanks for comments!
>> 
>> 
>> On 13.1.2022 12.52, Damien Le Moal wrote:
>>> [Re-sending this since my emails end up being empty...]
>>> 
>>> On 2022/01/13 17:49, Jukka Laitinen wrote:
>>>> Using "void *" in arithmetic causes errors with strict compiler settings:
>>>> "error: pointer of type 'void *' used in arithmetic [-Werror=pointer-arith]"
>>>> 
>>>> Just remove these by calculating on "char *" where 1-byte data size is assumed
>>> s/Just Remove/Avoid
>>> (and nit: add a period at the end of the sentence)
>> 
>> I will add these to patchset v3 !
>> 
>>> 
>>> I would also suggest a cast to unsigned long instead of char *. unsigned long is
>>> more common/natural for addresses arithmetic.
>> 
>> You are right, that is is more natural to do arithmetic on integers than 
>> pointers.
>> 
>> However, I don't like to change pointer to unsigned long and back for 
>> several reasons; one being that afaik no stardard states that 
>> sizeof(unsigned long) == sizeof(void *). And even while this is a 
>> typical case, there is quarantee that this wouldn't have other side 
>> effects (such as padding bits ...).
> 
> Well, unlike Linux kernel, the nice thing with OpenSBI is that we only need this
> unsigned long cast to work on risc-v 32 and 64. And as far as I know, it does,
> and that is mandated by the RISC-V ISA specs.

Except for our work unsigned long *does not work*. We extend RISC-V
with new instructions and add a new ABI where pointers are not unsigned
long and any attempt to treat them like that will result in crashing
when you dereference the result. So please don’t or I will just have to
later submit a patch to fix it to use an actual pointer rather than
rely on implementation-defined behaviour. Keep the Linux kernel
abominations like unsigned long everywhere out of OpenSBI.

Jess




More information about the opensbi mailing list