提交 501e279c 编写于 作者: M Michael Ellerman

selftests/powerpc: Fix out of bounds access in TM signal test

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: NMichael Ellerman <mpe@ellerman.id.au>
上级 5c3c7ede
...@@ -40,7 +40,7 @@ void signal_usr1(int signum, siginfo_t *info, void *uc) ...@@ -40,7 +40,7 @@ void signal_usr1(int signum, siginfo_t *info, void *uc)
#ifdef __powerpc64__ #ifdef __powerpc64__
ucp->uc_mcontext.gp_regs[PT_MSR] |= (7ULL << 32); ucp->uc_mcontext.gp_regs[PT_MSR] |= (7ULL << 32);
#else #else
ucp->uc_mcontext.regs->gpr[PT_MSR] |= (7ULL); ucp->uc_mcontext.uc_regs->gregs[PT_MSR] |= (7ULL);
#endif #endif
/* Should segv on return becuase of invalid context */ /* Should segv on return becuase of invalid context */
segv_expected = 1; segv_expected = 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册