summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHe Zhe <zhe.he@windriver.com>2020-06-15 09:57:34 +0000
committerKhem Raj <raj.khem@gmail.com>2020-06-16 11:57:26 -0700
commitdeaba90e3122e4c4b3849b384cb7a251a0e07ed4 (patch)
tree7b4e41dabc6686eabe8edfc2d8f5a35a5a78a47b
parent0c9da2c0646005d35b9845b4f91c5b25fb3d43d1 (diff)
downloadmeta-clang-deaba90e3122e4c4b3849b384cb7a251a0e07ed4.tar.gz
bcc: Make opensnoop compatible with kernel v5.6 and later
Since kernel v5.6, fddb5d430ad9 ("open: introduce openat2(2) syscall"), do_sys_openat2 instead of do_sys_open has been used as entry function for open. Signed-off-by: He Zhe <zhe.he@windriver.com>
-rw-r--r--dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/0001-tools-opensnoop-snoop-do_sys_openat2-for-kernel-v5.6.patch51
-rw-r--r--dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.13.0.bb3
2 files changed, 53 insertions, 1 deletions
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/0001-tools-opensnoop-snoop-do_sys_openat2-for-kernel-v5.6.patch b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/0001-tools-opensnoop-snoop-do_sys_openat2-for-kernel-v5.6.patch
new file mode 100644
index 0000000..f2b1495
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc/0001-tools-opensnoop-snoop-do_sys_openat2-for-kernel-v5.6.patch
@@ -0,0 +1,51 @@
1From 935f7e47f54df1af30f4a1cdfd2f385863ab9dec Mon Sep 17 00:00:00 2001
2From: He Zhe <zhe.he@windriver.com>
3Date: Mon, 15 Jun 2020 07:05:24 +0000
4Subject: [PATCH] tools: opensnoop: snoop do_sys_openat2 for kernel v5.6 and
5 later
6
7Since kernel v5.6, fddb5d430ad9 ("open: introduce openat2(2) syscall"),
8do_sys_openat2 instead of do_sys_open has been used as entry function for open.
9
10Upstream-Status: Inappropriate, upstream context has changed and needs more
11 tweak.
12
13Signed-off-by: He Zhe <zhe.he@windriver.com>
14---
15 tools/opensnoop.py | 13 +++++++++++--
16 1 file changed, 11 insertions(+), 2 deletions(-)
17
18diff --git a/tools/opensnoop.py b/tools/opensnoop.py
19index 6d1388b3..3f7e48a3 100755
20--- a/tools/opensnoop.py
21+++ b/tools/opensnoop.py
22@@ -21,6 +21,8 @@ from bcc.utils import printb
23 import argparse
24 from datetime import datetime, timedelta
25 import os
26+import platform
27+from pkg_resources import parse_version
28
29 # arguments
30 examples = """examples:
31@@ -195,8 +197,15 @@ if debug or args.ebpf:
32
33 # initialize BPF
34 b = BPF(text=bpf_text)
35-b.attach_kprobe(event="do_sys_open", fn_name="trace_entry")
36-b.attach_kretprobe(event="do_sys_open", fn_name="trace_return")
37+
38+# Since kernel v5.6, do_sys_openat2 instead of do_sys_open has been used as entry function for open
39+if parse_version(platform.uname().release.split('-')[0]) > parse_version('5.6.0'):
40+ entry = "do_sys_openat2"
41+else:
42+ entry = "do_sys_open"
43+
44+b.attach_kprobe(event=entry, fn_name="trace_entry")
45+b.attach_kretprobe(event=entry, fn_name="trace_return")
46
47 initial_ts = 0
48
49--
502.24.1
51
diff --git a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.13.0.bb b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.13.0.bb
index b4b5a92..563c6cc 100644
--- a/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.13.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-devtools/bcc/bcc_0.13.0.bb
@@ -12,10 +12,11 @@ DEPENDS += "bison-native \
12 clang \ 12 clang \
13 " 13 "
14 14
15RDEPENDS_${PN} += "bash python3 python3-core xz" 15RDEPENDS_${PN} += "bash python3 python3-core python3-setuptools xz"
16 16
17SRC_URI = "gitsm://github.com/iovisor/bcc \ 17SRC_URI = "gitsm://github.com/iovisor/bcc \
18 file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \ 18 file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \
19 file://0001-tools-opensnoop-snoop-do_sys_openat2-for-kernel-v5.6.patch \
19 " 20 "
20 21
21SRCREV = "942227484d3207f6a42103674001ef01fb5335a0" 22SRCREV = "942227484d3207f6a42103674001ef01fb5335a0"