[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4 2/2] xen: use SYMBOL when required



Hi,
On 13/11/2018 12:56, Jan Beulich wrote:
>>>> On 13.11.18 at 00:06, <sstabellini@xxxxxxxxxx> wrote:
>> --- a/xen/arch/x86/alternative.c
>> +++ b/xen/arch/x86/alternative.c
>> @@ -194,7 +194,7 @@ void init_or_livepatch apply_alternatives(struct 
>> alt_instr *start,
>>        * So be careful if you want to change the scan order to any other
>>        * order.
>>        */
>> -    for ( a = base = start; a < end; a++ )
>> +    for ( a = base = start; SYMBOL(a) < SYMBOL(end); a++ )
> 
> At this point all is fine: end is allowed to point to the end of start[].

But it can also point to somewhere else. The compiler cannot know it, right?

>> @@ -33,8 +33,8 @@ static int init_percpu_area(unsigned int cpu)
>>       if ( (p = alloc_xenheap_pages(PERCPU_ORDER, 0)) == NULL )
>>           return -ENOMEM;
>>   
>> -    memset(p, 0, __per_cpu_data_end - __per_cpu_start);
>> -    __per_cpu_offset[cpu] = p - __per_cpu_start;
>> +    memset(p, 0, SYMBOL(__per_cpu_data_end) - SYMBOL(__per_cpu_start));
>> +    __per_cpu_offset[cpu] = (unsigned long)p - SYMBOL(__per_cpu_start);
> 
> Can't you make SYMBOL() retain the original type, such that casts
> like this one aren't needed? As soon as the compiler doesn't know
> anymore that particular globals (or statics) are used, it can't infer
> anymore that two pointers can't possibly point into the same array.

If SYMBOL() keeps the original type, then you will still substract 2 
pointers. If the compiler can't infer the cannot possibly point into the 
same array, it also cannot infer they point to the same. So that would 
be undefined, right?

Cheers,

-- 
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.