[DTrace-devel] DTrace-V1-ized 5.11.14 pushed to github
Nick Alcock
nick.alcock at oracle.com
Wed Apr 14 13:29:47 PDT 2021
Tests passed on x86-64 and AArch64 with https://github.com/oracle/dtrace-utils
(1.x-branch-dev branch). (Non-stress tests only: one stress test currently
fails on x86-64. This is unlikely to affect normal use unless you do
something most unusual like chill()ing on all fbt probes at once.)
Pushed to <https://github.com/oracle/dtrace-linux-kernel>, as a branch
with v1 in the name.
This push is of DTrace v1, using a specialized kernel module rather than BPF.
Changes since 5.11.6 involve squashing back a fixup, doing some conflict
adapation, and adapting to the dropping of an error condition in the
IPv6 code in stable 5.11.13 so DTrace doesn't need to report on it any
more:
1: 9b2f2261e2f5 = 1: d899ebed7e36 ctf: generate CTF information for the kernel
2: c63a36a9ca35 = 2: 620b443058c6 kallsyms: introduce new /proc/kallmodsyms including builtin modules too
3: 291708a48979 = 3: cd0f73be3c06 waitfd: new syscall implementing waitpid() over fds
4: 91d1b20f3df7 ! 4: e5a505793c0b dtrace: core and x86
@@ include/dtrace/provider.h (new)
+ \
+ DT_PROV_EXIT(name) \
+ \
-+ static int __init name##_init(void) \
++ static int __init name##_pinit(void) \
+ { \
+ int ret = -ENOMEM; \
+ struct dtrace_module *pdata = THIS_MODULE->pdata; \
@@ include/dtrace/provider.h (new)
+ return ret; \
+ } \
+ \
-+ static void __exit name##_exit(void) \
++ static void __exit name##_pexit(void) \
+ { \
+ name##_dev_exit(); \
+ } \
+ \
-+ module_init(name##_init); \
-+ module_exit(name##_exit);
++ module_init(name##_pinit); \
++ module_exit(name##_pexit);
+
+#ifdef DTRACE_HAVE_PROV_EXIT
+# define DT_META_PROV_EXIT(name) \
5: 212fc90e5cc8 = 5: 7d6e4958d46f dtrace: modular components and x86 support
6: 92d2c47016cb = 6: 83f2a0555023 dtrace: systrace provider core components
7: f6d3e605d306 = 7: 14157d2ae8d9 dtrace: systrace provider
8: 0fd149269149 = 8: 42c037f16d1e dtrace: sdt provider core components
9: 91314397f4dc = 9: d66cfa3ee06c dtrace: sdt provider for x86
10: fc95b75f13de = 10: cca5b3510bfa dtrace: profile provider and test probe core components
11: 62b31fce6163 = 11: a7b75b0d2753 dtrace: profile and tick providers built on cyclics
12: 11f900afb25c = 12: 463020ead9ee dtrace: USDT and pid provider core and x86 components
13: 446783fa5e7b = 13: bce97b41fdc5 dtrace: USDT and pid providers
14: 71de58a6174f ! 14: 18c9ee8ebaa2 dtrace: function boundary tracing (FBT) core and x86 components
@@ arch/x86/kernel/sev-es.c: DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication)
+ return 0;
}
- instrumentation_begin();
+ irq_state = irqentry_nmi_enter(regs);
@@ arch/x86/kernel/sev-es.c: DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication)
- out:
instrumentation_end();
+ irqentry_nmi_exit(regs, irq_state);
- return;
+ return 0;
@@ arch/x86/kernel/traps.c: DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
}
tsk = current;
-@@ arch/x86/kernel/traps.c: DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
- tsk->thread.trap_nr = X86_TRAP_GP;
-
- if (fixup_vdso_exception(regs, X86_TRAP_GP, error_code, 0))
-- return;
-+ return 0;
-
- show_signal(tsk, SIGSEGV, "", desc, regs, error_code);
- force_sig(SIGSEGV);
@@ arch/x86/kernel/traps.c: DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
goto exit;
15: 4866f2c488d4 = 15: f08e0f83e00b dtrace: fbt provider, modular components
16: a1a769c19e4a = 16: 7eb4cecd50e5 dtrace, arm: arm64 port
17: e5ed75159888 ! 17: 67c6059d5e47 dtrace: add SDT probes
@@ kernel/locking/mutex.c: __mutex_lock_common(struct mutex *lock, long state, unsi
struct ww_mutex *ww;
@@ kernel/locking/mutex.c: __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
if (__mutex_trylock(lock) ||
- mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx, NULL)) {
+ mutex_optimistic_spin(lock, ww_ctx, NULL)) {
/* got the lock, yay! */
+
lock_acquired(&lock->dep_map, ip);
- if (use_ww_ctx && ww_ctx)
+ if (ww_ctx)
ww_mutex_set_context_fastpath(ww, ww_ctx);
+ DTRACE_LOCKSTAT(adaptive__acquire, struct mutex *, lock);
preempt_enable();
@@ net/ipv6/ip6_input.c: static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, s
goto err;
+ }
- /* While RFC4291 is not explicit about v4mapped addresses
- * in IPv6 headers, it seems clear linux dual-stack
-@@ net/ipv6/ip6_input.c: static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
- * https://tools.ietf.org/html/draft-itojun-v6ops-v4mapped-harmful-02
- */
- if (ipv6_addr_v4mapped(&hdr->saddr))
-+ {
-+ dropreason = "v4-mapped address in IPv6 packet";
- goto err;
-+ }
-
skb->transport_header = skb->network_header + sizeof(*hdr);
IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr);
@@ net/ipv6/ip6_input.c: static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
18: 12cf1f142394 = 18: 9d03db97967b dtrace: add sample script for building DTrace on Fedora
19: aa20923cb3fa = 19: 11da80d6ceb8 locking: publicize mutex_owner and mutex_owned again
20: 40e922e0d9dc = 20: 86910dd28cfd dtrace: fix buffer overflow in profile provider
21: 392311b7d696 < -: ------------ fixup! dtrace: core and x86
More information about the DTrace-devel
mailing list