aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-06-04 03:18:29 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-06-04 03:18:29 +0000
commit06cb140a8e4ac8db35c5139515faa5934a170225 (patch)
tree7332c2dc2c1488954834c763ef1ab381d036fc39
parent72e5e3c53365d0ca10aaba7801876f6d9cb0678c (diff)
parentdd5d5c1d63ab8024d94ceb18567287c6c6627922 (diff)
downloadlinux-kselftest-android10-qpr1-release.tar.gz
Change-Id: Idaf3e9e53f96bf0758415560df8f2bd6e04067dd
-rw-r--r--tools/testing/selftests/x86/syscall_arg_fault.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/testing/selftests/x86/syscall_arg_fault.c b/tools/testing/selftests/x86/syscall_arg_fault.c
index 7db4fc9fa09f..d2548401921f 100644
--- a/tools/testing/selftests/x86/syscall_arg_fault.c
+++ b/tools/testing/selftests/x86/syscall_arg_fault.c
@@ -43,7 +43,7 @@ static sigjmp_buf jmpbuf;
static volatile sig_atomic_t n_errs;
-static void sigsegv(int sig, siginfo_t *info, void *ctx_void)
+static void sigsegv_or_sigbus(int sig, siginfo_t *info, void *ctx_void)
{
ucontext_t *ctx = (ucontext_t*)ctx_void;
@@ -73,7 +73,13 @@ int main()
if (sigaltstack(&stack, NULL) != 0)
err(1, "sigaltstack");
- sethandler(SIGSEGV, sigsegv, SA_ONSTACK);
+ sethandler(SIGSEGV, sigsegv_or_sigbus, SA_ONSTACK);
+ /*
+ * The actual exception can vary. On Atom CPUs, we get #SS
+ * instead of #PF when the vDSO fails to access the stack when
+ * ESP is too close to 2^32, and #SS causes SIGBUS.
+ */
+ sethandler(SIGBUS, sigsegv_or_sigbus, SA_ONSTACK);
sethandler(SIGILL, sigill, SA_ONSTACK);
/*