projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
dc2ad16
)
selftests/seccomp: Avoid redundant register flushes
author
Kees Cook
<keescook@chromium.org>
Sat, 12 Sep 2020 11:08:15 +0000
(
04:08
-0700)
committer
Kees Cook
<keescook@chromium.org>
Sat, 19 Sep 2020 07:59:59 +0000
(
00:59
-0700)
When none of the registers have changed, don't flush them back. This can
happen if the architecture uses a non-register way to change the syscall
(e.g. arm64) , and a return value hasn't been written.
Signed-off-by: Kees Cook <keescook@chromium.org>
Link:
https://lore.kernel.org/lkml/20200912110820.597135-11-keescook@chromium.org
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
tools/testing/selftests/seccomp/seccomp_bpf.c
patch
|
blob
|
history
diff --git
a/tools/testing/selftests/seccomp/seccomp_bpf.c
b/tools/testing/selftests/seccomp/seccomp_bpf.c
index
00056e0
..
638cea8
100644
(file)
--- a/
tools/testing/selftests/seccomp/seccomp_bpf.c
+++ b/
tools/testing/selftests/seccomp/seccomp_bpf.c
@@
-1859,11
+1859,12
@@
int get_syscall(struct __test_metadata *_metadata, pid_t tracee)
void change_syscall(struct __test_metadata *_metadata,
pid_t tracee, int syscall, int result)
{
- ARCH_REGS regs;
+ ARCH_REGS
orig,
regs;
EXPECT_EQ(0, ARCH_GETREGS(regs)) {
return;
}
+ orig = regs;
SYSCALL_NUM_SET(regs, syscall);
@@
-1876,7
+1877,8
@@
void change_syscall(struct __test_metadata *_metadata,
#endif
/* Flush any register changes made. */
- EXPECT_EQ(0, ARCH_SETREGS(regs));
+ if (memcmp(&orig, ®s, sizeof(orig)) != 0)
+ EXPECT_EQ(0, ARCH_SETREGS(regs));
}
void tracer_seccomp(struct __test_metadata *_metadata, pid_t tracee,