[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