On Fri, Jul 17, 2020 at 01:13:23AM +0200, KP Singh wrote: > > > On 6/28/20 9:42 PM, Jiri Olsa wrote: > > On Fri, Jun 26, 2020 at 01:38:27PM -0700, Andrii Nakryiko wrote: > >> On Thu, Jun 25, 2020 at 4:49 PM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > >>> > >>> Adding d_path helper function that returns full path > >>> for give 'struct path' object, which needs to be the > >>> kernel BTF 'path' object. > >>> > >>> The helper calls directly d_path function. > >>> > >>> Updating also bpf.h tools uapi header and adding > >>> 'path' to bpf_helpers_doc.py script. > >>> > >>> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > >>> --- > >>> include/uapi/linux/bpf.h | 14 +++++++++- > >>> kernel/trace/bpf_trace.c | 47 ++++++++++++++++++++++++++++++++++ > >>> scripts/bpf_helpers_doc.py | 2 ++ > >>> tools/include/uapi/linux/bpf.h | 14 +++++++++- > >>> 4 files changed, 75 insertions(+), 2 deletions(-) > >>> > >>> diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > >>> index 0cb8ec948816..23274c81f244 100644 > >>> --- a/include/uapi/linux/bpf.h > >>> +++ b/include/uapi/linux/bpf.h > >>> @@ -3285,6 +3285,17 @@ union bpf_attr { > >>> * Dynamically cast a *sk* pointer to a *udp6_sock* pointer. > >>> * Return > >>> * *sk* if casting is valid, or NULL otherwise. > >>> + * > >>> + * int bpf_d_path(struct path *path, char *buf, u32 sz) > >>> + * Description > >>> + * Return full path for given 'struct path' object, which > >>> + * needs to be the kernel BTF 'path' object. The path is > >>> + * returned in buffer provided 'buf' of size 'sz'. > >>> + * > >>> + * Return > >>> + * length of returned string on success, or a negative > >>> + * error in case of failure > >> > >> It's important to note whether string is always zero-terminated (I'm > >> guessing it is, right?). > > > > right, will add > > Also note that bpf_probe_read_{kernel, user}_str return the length including > the NUL byte: > > * Return > * On success, the strictly positive length of the string, > * including the trailing NUL character. On error, a negative > * value. > > It would be good to keep this uniform. So you will need a len += 1 here as well. good point, will keep it that way thanks, jirka