lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 17 Feb 2020 11:21:11 +0100 From: Thomas Richter <tmricht@...ux.ibm.com> To: linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org, acme@...nel.org, mhiramat@...nel.org Cc: gor@...ux.ibm.com, sumanthk@...ux.ibm.com, heiko.carstens@...ibm.com, Thomas Richter <tmricht@...ux.ibm.com> Subject: [PATCH v4] perf test: Fix test trace+probe_vfs_getname.sh on s390 This test places a kprobe to function getname_flags() in the kernel which has the following prototype: struct filename * getname_flags(const char __user *filename, int flags, int *empty) Variable filename points to a filename located in user space memory. Looking at commit 88903c464321c ("tracing/probe: Add ustring type for user-space string") the kprobe should indicate that user space memory is accessed. Output before: [root@...lp76 perf]# ./perf test 66 67 66: Use vfs_getname probe to get syscall args filenames : FAILED! 67: Check open filename arg using perf trace + vfs_getname: FAILED! [root@...lp76 perf]# Output after: [root@...lp76 perf]# ./perf test 66 67 66: Use vfs_getname probe to get syscall args filenames : Ok 67: Check open filename arg using perf trace + vfs_getname: Ok [root@...lp76 perf]# Comments from Masami Hiramatsu: This bug doesn't happen on x86 or other archs on which user-address space and kernel address space is same. On some arch (ppc64 in this case?) user-address space is partially or completely same as kernel address space. (Yes, they switch the world when running into the kernel) In this case, we need to use different data access functions for each spaces. That is why I introduced "ustring" type for kprobe event. As far as I can see, Thomas's patch is sane. Thomas, could you show us your result on your test environment? Thank you Comments from Thomas Richter: Test results included above. Signed-off-by: Thomas Richter <tmricht@...ux.ibm.com> --- tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh index 7cb99b433888..c2cc42daf924 100644 --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh @@ -14,7 +14,7 @@ add_probe_vfs_getname() { if [ $had_vfs_getname -eq 1 ] ; then line=$(perf probe -L getname_flags 2>&1 | egrep 'result.*=.*filename;' | sed -r 's/[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*/\1/') perf probe -q "vfs_getname=getname_flags:${line} pathname=result->name:string" || \ - perf probe $verbose "vfs_getname=getname_flags:${line} pathname=filename:string" + perf probe $verbose "vfs_getname=getname_flags:${line} pathname=filename:ustring" fi } -- 2.21.0
Powered by blists - more mailing lists