qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] linux-user: Fix fault address truncation AArch6


From: Claudio Fontana
Subject: Re: [Qemu-devel] [PATCH] linux-user: Fix fault address truncation AArch64
Date: Fri, 10 Oct 2014 16:58:27 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.0.1

On 10.10.2014 13:32, Peter Maydell wrote:
> On 10 October 2014 05:22, Amanieu d'Antras <address@hidden> wrote:
>> On AArch64 the si_addr field of siginfo_t is truncated to 32 bits
>> because the fault address passes through an uint32_t variable. This
>> is fixed by changing the variable to uint64_t.
>>
>> Signed-off-by: Amanieu d'Antras <address@hidden>
>> ---
>>  linux-user/main.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/linux-user/main.c b/linux-user/main.c
>> index 483eb3f..d63e093 100644
>> --- a/linux-user/main.c
>> +++ b/linux-user/main.c
>> @@ -1006,7 +1006,7 @@ void cpu_loop(CPUARMState *env)
>>      CPUState *cs = CPU(arm_env_get_cpu(env));
>>      int trapnr, sig;
>>      target_siginfo_t info;
>> -    uint32_t addr;
>> +    uint64_t addr;
>>
>>      for (;;) {
>>          cpu_exec_start(cs);
> 
> Thanks for catching this. Better to fix it by dropping
> the unnecessary local variable completely and just setting
>   info._sifields._sigfault._addr = env->exception.vaddress;
> at the only point where we currently use 'addr', though,
> I think.
> 
> -- PMM

We do use the name code pattern in most of the functions of that file,
meaning

uint32_t / uint64_t / target_ulong addr;

and then do_something_with_addr(addr);

Ciao,

Claudio





reply via email to

[Prev in Thread] Current Thread [Next in Thread]