Re: [PATCH v3] perf test: Fix test trace+probe_vfs_getname.sh

From: Masami Hiramatsu
Date: Thu Feb 13 2020 - 12:01:58 EST


Hi Thomas and Arnaldo,

On Thu, 13 Feb 2020 11:30:48 -0300
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Em Thu, Feb 13, 2020 at 01:20:09PM +0100, Thomas Richter escreveu:
> > 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.
> >
> > The following patch specifies user space memory access first and if this
> > fails use type 'string' in case 'ustring' is not supported.
>
> What are you fixing?
>
> I haven't seen any example of this test failing, and right now testing
> it with:
>
> [root@quaco ~]# uname -a
> Linux quaco 5.6.0-rc1+ #1 SMP Wed Feb 12 15:42:16 -03 2020 x86_64 x86_64 x86_64 GNU/Linux
> [root@quaco ~]#

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,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>