Message ID | 1456922671-31676-1-git-send-email-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Wed, 2016-02-03 at 12:44:31 UTC, Michael Ellerman wrote: > Gcc helpfully points out that we're accessing past the end of the gprs > array: > > tm-signal-msr-resv.c: In function 'signal_usr1': > tm-signal-msr-resv.c:43:37: error: array subscript is above array bounds [-Werror=array-bounds] > ucp->uc_mcontext.regs->gpr[PT_MSR] |= (7ULL); > > We haven't noticed previously because -flto was hiding it somehow. > > The code is confused, PT_MSR isn't a gpr, instead it's in > uc_regs->gregs, so fix it. > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Applied to powerpc next. https://git.kernel.org/powerpc/c/501e279c231bd8d5eed4ecea5a cheers
diff --git a/tools/testing/selftests/powerpc/tm/tm-signal-msr-resv.c b/tools/testing/selftests/powerpc/tm/tm-signal-msr-resv.c index d86653f282b1..8c54d18b3e9a 100644 --- a/tools/testing/selftests/powerpc/tm/tm-signal-msr-resv.c +++ b/tools/testing/selftests/powerpc/tm/tm-signal-msr-resv.c @@ -40,7 +40,7 @@ void signal_usr1(int signum, siginfo_t *info, void *uc) #ifdef __powerpc64__ ucp->uc_mcontext.gp_regs[PT_MSR] |= (7ULL << 32); #else - ucp->uc_mcontext.regs->gpr[PT_MSR] |= (7ULL); + ucp->uc_mcontext.uc_regs->gregs[PT_MSR] |= (7ULL); #endif /* Should segv on return becuase of invalid context */ segv_expected = 1;
Gcc helpfully points out that we're accessing past the end of the gprs array: tm-signal-msr-resv.c: In function 'signal_usr1': tm-signal-msr-resv.c:43:37: error: array subscript is above array bounds [-Werror=array-bounds] ucp->uc_mcontext.regs->gpr[PT_MSR] |= (7ULL); We haven't noticed previously because -flto was hiding it somehow. The code is confused, PT_MSR isn't a gpr, instead it's in uc_regs->gregs, so fix it. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- tools/testing/selftests/powerpc/tm/tm-signal-msr-resv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)