|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 16/27] x86, xsplice: Print payload's symbol name and payload name in backtraces
>>> On 26.04.16 at 14:48, <ross.lagerwall@xxxxxxxxxx> wrote:
> On 04/26/2016 01:41 PM, Jan Beulich wrote:
>>>>> On 26.04.16 at 13:06, <ross.lagerwall@xxxxxxxxxx> wrote:
>>> On 04/25/2016 04:35 PM, Konrad Rzeszutek Wilk wrote:
>>>> @@ -142,6 +145,55 @@ void *xsplice_symbols_lookup_by_name(const char
> *symname)
>>>> return 0;
>>>> }
>>>>
>>>> +static const char *xsplice_symbols_lookup(unsigned long addr,
>>>> + unsigned long *symbolsize,
>>>> + unsigned long *offset,
>>>> + char *namebuf)
>>>> +{
>>>> + const struct payload *data;
>>>> + unsigned int i, best;
>>>> + const void *va = (const void *)addr;
>>>> + const char *n = NULL;
>>>> +
>>>> + /*
>>>> + * Only RCU locking since this list is only ever changed during apply
>>>> + * or revert context. And in case it dies there we need an safe list.
>>>> + */
>>>> + rcu_read_lock(&rcu_applied_lock);
>>>> + list_for_each_entry_rcu ( data, &applied_list, applied_list )
>>>> + {
>>>> + if ( va < data->text_addr &&
>>>> + va >= (data->text_addr + data->pages * PAGE_SIZE) )
>>>
>>> This calculation is wrong due to the use of void * and results in
>>> incorrect backtrace results.
>>
>> When text_addr is void *, how is this calculation wrong then?
>
> I'm sorry, ignore that. I temporarily forgot how void* arithmetic is
> defined for GCC.
>
> The other two points are still valid and may result in incorrect
> backtraces with > 1 payload loaded.
Of course.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |