Re: [Qemu-devel] [PATCH v3 2/2] loader: Fix 64-bit misaligned member access

2018-05-25 Thread Paolo Bonzini
On 23/04/2018 18:25, Philippe Mathieu-Daudé wrote: > The libfdt does not guarantee than fdt_getprop() returns a pointer > aligned to the property size. > > Assuming the base of the fdt is aligned, a 32-bit property returns > a 32-bit aligned pointer. This is however not guaranteed for 64-bit > pro

Re: [Qemu-devel] [PATCH v3 2/2] loader: Fix 64-bit misaligned member access

2018-04-23 Thread Philippe Mathieu-Daudé
On 04/23/2018 02:34 PM, Richard Henderson wrote: > On 04/23/2018 06:25 AM, Philippe Mathieu-Daudé wrote: >> Assuming the base of the fdt is aligned, a 32-bit property returns >> a 32-bit aligned pointer... > ... >> case 4: >> -*addr = fdt32_to_cpu(*(fdt32_t *)prop); >> +*addr =

Re: [Qemu-devel] [PATCH v3 2/2] loader: Fix 64-bit misaligned member access

2018-04-23 Thread Richard Henderson
On 04/23/2018 06:25 AM, Philippe Mathieu-Daudé wrote: > Assuming the base of the fdt is aligned, a 32-bit property returns > a 32-bit aligned pointer... ... > case 4: > -*addr = fdt32_to_cpu(*(fdt32_t *)prop); > +*addr = fdt32_to_cpu(ldl_he_p(prop)); > return 0; So wh

[Qemu-devel] [PATCH v3 2/2] loader: Fix 64-bit misaligned member access

2018-04-23 Thread Philippe Mathieu-Daudé
The libfdt does not guarantee than fdt_getprop() returns a pointer aligned to the property size. Assuming the base of the fdt is aligned, a 32-bit property returns a 32-bit aligned pointer. This is however not guaranteed for 64-bit properties, where 64-bit loads might trigger unaligned access. Fi