[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