Ping as a for-1.4 patch with reviews. patchwork url: http://patchwork.ozlabs.org/patch/217186/
Blue, Anthony: could one of you apply this, please? thanks -- PMM On 31 January 2013 12:50, Peter Maydell <peter.mayd...@linaro.org> wrote: > Commit 658f2dc97 accidentally dropped the cast to the target type of > the value loaded by get_user(). The most visible effect of this would > be that the sequence "uint64_t v; get_user_u32(v, addr)" would sign > extend the 32 bit loaded value into v rather than zero extending as > would be expected for a _u32 accessor. Put the cast back again to > restore the old behaviour. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > linux-user/qemu.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/linux-user/qemu.h b/linux-user/qemu.h > index 31a220a..b10e957 100644 > --- a/linux-user/qemu.h > +++ b/linux-user/qemu.h > @@ -306,12 +306,12 @@ static inline int access_ok(int type, abi_ulong addr, > abi_ulong size) > ((hptr), (x)), 0) > > #define __get_user_e(x, hptr, e) \ > - ((x) = \ > + ((x) = (typeof(*hptr))( \ > __builtin_choose_expr(sizeof(*(hptr)) == 1, ldub_p, \ > __builtin_choose_expr(sizeof(*(hptr)) == 2, lduw_##e##_p, \ > __builtin_choose_expr(sizeof(*(hptr)) == 4, ldl_##e##_p, \ > __builtin_choose_expr(sizeof(*(hptr)) == 8, ldq_##e##_p, abort)))) \ > - (hptr), 0) > + (hptr)), 0) > > #ifdef TARGET_WORDS_BIGENDIAN > # define __put_user(x, hptr) __put_user_e(x, hptr, be) > -- > 1.7.9.5