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

Re: [Xen-devel] [PATCH v7 13/14] arm/mem_access: Add short-descriptor based gpt



On 09/08/17 09:18, Sergej Proskurin wrote:
> Hi Andrew,
>
>
>>>> diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
>>>> index b258248322..7f34a2b1d3 100644
>>>> --- a/xen/arch/arm/guest_walk.c
>>>> +++ b/xen/arch/arm/guest_walk.c
>>>> @@ -112,7 +112,12 @@ static int guest_walk_sd(const struct vcpu *v,
>>>>           * level translation table does not need to be page aligned.
>>>>           */
>>>>          mask = GENMASK(19, 12);
>>>> -        paddr = (pte.walk.base << 10) | ((gva & mask) >> 10);
>>>> +        /*
>>>> +         * Cast pte.walk.base to paddr_t to cope with C type promotion
>>>> of types
>>>> +         * smaller than int. Otherwise pte.walk.base would be casted to
>>>> int and
>>>> +         * subsequently sign extended, thus leading to a wrong value.
>>>> +         */
>>>> +        paddr = ((paddr_t)pte.walk.base << 10) | ((gva & mask) >> 10);
>>> Why not change the bitfield type from unsigned int to paddr_t ?
>>>
>>> The result is 100% less liable to go wrong in this way.
>>>
> Actually, AFAICT we would get into same troubles as before. Because of
> the fact that the bitfield is smaller than an int (22 bit), it would be
> first promoted to int and then we would face the same issues as we
> already had.
>
> If that is ok for you, I will resubmit the next patch without changing
> the type of the bitfield. If you should not agree with me, I would
> gladly discuss this issue in v8 :)

Oh - that's unfortunate.  Never mind then.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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