• Thomas Richter's avatar
    perf test: Fix test trace+probe_vfs_getname.sh on s390 · 345dc71a
    Thomas Richter authored
    [ Upstream commit 2bbc8353 ]
    
    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)
    
    The 'filename' argument points to a filename located in user space memory.
    
    Looking at commit 88903c46 ("tracing/probe: Add ustring type for
    user-space string") the kprobe should indicate that user space memory is
    accessed.
    
    Output before:
    
       [root@m35lp76 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@m35lp76 perf]#
    
    Output after:
    
       [root@m35lp76 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@m35lp76 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 the same. On some arches (ppc64 in
    this case?) user address space is partially or completely the 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 space.
    
    That is why I introduced the "ustring" type for kprobe events.
    
    As far as I can see, Thomas's patch is sane. Thomas, could you show us
    your result on your test environment?
    
    Comments from Thomas Richter:
    
    Test results for s/390 included above.
    Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/20200217102111.61137-1-tmricht@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    345dc71a
probe_vfs_getname.sh 808 Bytes