[DTrace-devel] DTrace-V1-ized 5.9.3 pushed to github

Nick Alcock nick.alcock at oracle.com
Sun Nov 1 13:45:44 PST 2020


Tests passed on x86-64 and AArch64 with https://github.com/oracle/dtrace-utils
(master 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.


A minor release to work around merge conflicts, and to cater for the
change from the __*notifier_call_chain functions into
*notifier_call_chain_robust in 5.9.3.  (A few commits that all touch the
FBT blacklist have been merged into one as well.)

Changes since 5.9:


 1:  c9c0769a51b6 =  1:  244de8221ebc ctf: generate CTF information for the kernel
 2:  9d2bf6eb3ee9 =  2:  7eb0f029ad3b kallsyms: introduce new /proc/kallmodsyms including builtin modules too
 3:  9b4fcbb25da4 =  3:  aa2742716035 waitfd: new syscall implementing waitpid() over fds
 4:  3f8362ef4278 !  4:  4521d80af3e9 dtrace: core and x86
    @@ arch/x86/mm/fault.c: void do_user_addr_fault(struct pt_regs *regs,
     
      ## fs/exec.c ##
     @@
    - #include <linux/oom.h>
      #include <linux/compat.h>
      #include <linux/vmalloc.h>
    + #include <linux/io_uring.h>
     +#include <linux/dtrace_os.h>
      
      #include <linux/uaccess.h>
    @@ kernel/exit.c: void __noreturn do_exit(long code)
     
      ## kernel/fork.c ##
     @@
    - #include <linux/stackleak.h>
      #include <linux/kasan.h>
      #include <linux/scs.h>
    + #include <linux/io_uring.h>
     +#include <linux/dtrace_task_impl.h>
      
      #include <asm/pgalloc.h>
    @@ kernel/module.c
     +#endif /* CONFIG_DTRACE */
      
      /* Work queue for freeing init sections in success case */
    - static struct work_struct init_free_wq;
    + static void do_free_init(struct work_struct *w);
     @@ kernel/module.c: SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
      		}
      	}
 5:  303a8f2e1064 =  5:  5ff6fe455274 dtrace: modular components and x86 support
 6:  1f20467d463a =  6:  c6582c50ec2b dtrace: systrace provider core components
 7:  b05219eb3600 =  7:  492a66b9a231 dtrace: systrace provider
 8:  30fac92b7707 =  8:  e89ae4981ac3 dtrace: sdt provider core components
 9:  bd6aed4de36e =  9:  2aab3c565ba0 dtrace: sdt provider for x86
10:  44b188df4c01 = 10:  6a1ab51438cd dtrace: profile provider and test probe core components
11:  f0ab47d4b61b = 11:  fb3a4f8f53b4 dtrace: profile and tick providers built on cyclics
12:  83bdd9292adb = 12:  be7aa9a95675 dtrace: USDT and pid provider core and x86 components
13:  9cb2ed1f5136 = 13:  fe7e28c7a973 dtrace: USDT and pid providers
14:  9afcc0094c04 ! 14:  582ef8833519 dtrace: function boundary tracing (FBT) core and x86 components
    @@ arch/x86/kernel/fbt_blacklist.h (new)
     + */
     +BL_SENTRY(void *, notify_die)
     +BL_DENTRY(void *, notifier_call_chain)
    -+BL_SENTRY(typeof(__atomic_notifier_call_chain), __atomic_notifier_call_chain)
    ++BL_SENTRY(typeof(atomic_notifier_call_chain_robust), atomic_notifier_call_chain_robust)
     +BL_SENTRY(typeof(atomic_notifier_call_chain), atomic_notifier_call_chain)
    -+BL_SENTRY(typeof(__raw_notifier_call_chain), __raw_notifier_call_chain)
    ++BL_SENTRY(typeof(raw_notifier_call_chain_robust), raw_notifier_call_chain_robust)
     +BL_SENTRY(typeof(raw_notifier_call_chain), raw_notifier_call_chain)
     +BL_DENTRY(void *, hw_breakpoint_exceptions_notify)
     +BL_DENTRY(void *, kprobe_exceptions_notify)
    @@ arch/x86/kernel/fbt_blacklist.h (new)
     +BL_DENTRY(void *, rcu_dynticks_eqs_exit)
     +BL_DENTRY(void *, trace_rcu_dyntick)
     +BL_DENTRY(void *, rcu_nmi_exit)
    ++BL_DENTRY(void *, rcu_irq_exit)
    ++BL_DENTRY(void *, rcu_nmi_exit_common)
     +BL_DENTRY(void *, rcu_dynticks_eqs_enter)
     +BL_DENTRY(void *, ist_exit)
     +
    @@ arch/x86/kernel/traps.c: static __always_inline void __user *error_get_trap_addr
      
      DEFINE_IDTENTRY(exc_divide_error)
      {
    --	do_error_trap(regs, 0, "divide_error", X86_TRAP_DE, SIGFPE,
    +-	do_error_trap(regs, 0, "divide error", X86_TRAP_DE, SIGFPE,
     -		      FPE_INTDIV, error_get_trap_addr(regs));
    -+	return do_error_trap(regs, 0, "divide_error", X86_TRAP_DE, SIGFPE,
    ++	return do_error_trap(regs, 0, "divide error", X86_TRAP_DE, SIGFPE,
     +			     FPE_INTDIV, error_get_trap_addr(regs));
      }
      
15:  c5af61db4875 = 15:  ec718dc20396 dtrace: fbt provider, modular components
16:  5617fe25b354 ! 16:  64fa0d2f10bc dtrace, arm: arm64 port
    @@ arch/arm64/kernel/fbt_blacklist.h (new)
     + */
     +BL_SENTRY(void *, notify_die)
     +BL_DENTRY(void *, notifier_call_chain)
    -+BL_SENTRY(typeof(__atomic_notifier_call_chain), __atomic_notifier_call_chain)
    ++BL_SENTRY(typeof(atomic_notifier_call_chain_robust), atomic_notifier_call_chain_robust)
     +BL_SENTRY(typeof(atomic_notifier_call_chain), atomic_notifier_call_chain)
    -+BL_SENTRY(typeof(__raw_notifier_call_chain), __raw_notifier_call_chain)
    ++BL_SENTRY(typeof(raw_notifier_call_chain_robust), raw_notifier_call_chain_robust)
     +BL_SENTRY(typeof(raw_notifier_call_chain), raw_notifier_call_chain)
     +BL_DENTRY(void *, hw_breakpoint_exceptions_notify)
     +BL_DENTRY(void *, kprobe_exceptions_notify)
17:  e756f3b9d344 ! 17:  231c240c25a3 dtrace: add SDT probes
    @@ block/blk-core.c: static noinline_for_stack bool submit_bio_checks(struct bio *b
     
      ## fs/exec.c ##
     @@
    - #include <linux/oom.h>
      #include <linux/compat.h>
      #include <linux/vmalloc.h>
    + #include <linux/io_uring.h>
     +#include <linux/sdt.h>
      #include <linux/dtrace_os.h>
      
    @@ kernel/exit.c: void __noreturn do_exit(long code)
     
      ## kernel/fork.c ##
     @@
    - #include <linux/stackleak.h>
      #include <linux/kasan.h>
      #include <linux/scs.h>
    + #include <linux/io_uring.h>
     +#include <linux/sdt.h>
      #include <linux/dtrace_task_impl.h>
      
18:  be29c750e742 <  -:  ------------ dtrace: add rcu_irq_exit and rcu_nmi_exit_common to FBT blacklist
19:  343e811c4804 = 18:  20d378e5ba7d dtrace: add sample script for building DTrace on Fedora
20:  1c33df24bb35 = 19:  c50a2647137b locking: publicize mutex_owner and mutex_owned again
21:  0236c7f19fef = 20:  19d11e414075 dtrace, sdt: use gawk everywhere, not awk
22:  c731ef8ca2d6 = 21:  90487031ad45 dtrace: move _sdt_probes array into a separately-compiled file
23:  8a688bf9ed2b = 22:  3fa35bf340e2 ctf: fix bashism



More information about the DTrace-devel mailing list