Message ID | 20231020072135.450301-1-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Series | tests/tcg: fix out-of-bounds access in test-avx | expand |
On 10/20/23 00:21, Paolo Bonzini wrote: > This can cause differences between native and QEMU execution, due > to ASLR. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > tests/tcg/i386/test-avx.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > > diff --git a/tests/tcg/i386/test-avx.c b/tests/tcg/i386/test-avx.c > index c39c0e5bce8..910b0673535 100644 > --- a/tests/tcg/i386/test-avx.c > +++ b/tests/tcg/i386/test-avx.c > @@ -236,12 +236,15 @@ v4di val_i64[] = { > > v4di deadbeef = {0xa5a5a5a5deadbeefull, 0xa5a5a5a5deadbeefull, > 0xa5a5a5a5deadbeefull, 0xa5a5a5a5deadbeefull}; > -v4di indexq = {0x000000000000001full, 0x000000000000008full, > - 0xffffffffffffffffull, 0xffffffffffffff5full}; > -v4di indexd = {0x00000002000000efull, 0xfffffff500000010ull, > - 0x0000000afffffff0ull, 0x000000000000000eull}; > +/* &gather_mem[0x10] is 512 bytes from the base; indices must be >=-64, <64 > + * to account for scaling by 8 */ > +v4di indexq = {0x000000000000001full, 0x000000000000003dull, > + 0xffffffffffffffffull, 0xffffffffffffffdfull}; > +v4di indexd = {0x00000002ffffffcdull, 0xfffffff500000010ull, > + 0x0000003afffffff0ull, 0x000000000000000eull}; > > v4di gather_mem[0x20]; > +_Static_assert(sizeof(gather_mem) == 1024); > > void init_f16reg(v4di *r) > {
diff --git a/tests/tcg/i386/test-avx.c b/tests/tcg/i386/test-avx.c index c39c0e5bce8..910b0673535 100644 --- a/tests/tcg/i386/test-avx.c +++ b/tests/tcg/i386/test-avx.c @@ -236,12 +236,15 @@ v4di val_i64[] = { v4di deadbeef = {0xa5a5a5a5deadbeefull, 0xa5a5a5a5deadbeefull, 0xa5a5a5a5deadbeefull, 0xa5a5a5a5deadbeefull}; -v4di indexq = {0x000000000000001full, 0x000000000000008full, - 0xffffffffffffffffull, 0xffffffffffffff5full}; -v4di indexd = {0x00000002000000efull, 0xfffffff500000010ull, - 0x0000000afffffff0ull, 0x000000000000000eull}; +/* &gather_mem[0x10] is 512 bytes from the base; indices must be >=-64, <64 + * to account for scaling by 8 */ +v4di indexq = {0x000000000000001full, 0x000000000000003dull, + 0xffffffffffffffffull, 0xffffffffffffffdfull}; +v4di indexd = {0x00000002ffffffcdull, 0xfffffff500000010ull, + 0x0000003afffffff0ull, 0x000000000000000eull}; v4di gather_mem[0x20]; +_Static_assert(sizeof(gather_mem) == 1024); void init_f16reg(v4di *r) {
This can cause differences between native and QEMU execution, due to ASLR. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- tests/tcg/i386/test-avx.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)