[DTrace-devel] DTrace-ized 5.7.14 pushed to github

Nick Alcock nick.alcock at oracle.com
Fri Aug 7 14:17:30 PDT 2020


Tests passed on x86-64 and AArch64 with https://github.com/oracle/dtrace-utils
(master branch).

Pushed to <https://github.com/oracle/dtrace-linux-kernel>, as a branch
with v1 in the name.

This push is of DTrace v1, with a specialized kernel module.


Changes since 5.7.6 are just conflict resolution, coping with the
addition of a new poll queue proc function, and fixing signal-handle for
fatal signals (it used to always report that the signal was SIGKILL, no
matter what it actually was):


 1:  02cbf45ae1c9 =  1:  6a7b864701a1 ctf: generate CTF information for the kernel
 2:  726b33c201a7 !  2:  930fdbbec615 kallsyms: introduce new /proc/kallmodsyms including builtin modules too
    @@ include/linux/kallsyms.h: static inline void *dereference_symbol_descriptor(void
      
     @@ include/linux/kallsyms.h: int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *
      /* How and when do we show kallsyms values? */
    - extern int kallsyms_show_value(void);
    + extern bool kallsyms_show_value(const struct cred *cred);
      
     +extern void kallsyms_iter_reset(struct kallsym_iter *, loff_t);
     +extern int kallsyms_iter_update(struct kallsym_iter *, loff_t);
    @@ kernel/kallsyms.c: static int s_show(struct seq_file *m, void *p)
      static const struct seq_operations kallsyms_op = {
      	.start = s_start,
      	.next = s_next,
    -@@ kernel/kallsyms.c: int kallsyms_show_value(void)
    +@@ kernel/kallsyms.c: bool kallsyms_show_value(const struct cred *cred)
      	}
      }
      
    @@ kernel/kallsyms.c: static int kallsyms_open(struct inode *inode, struct file *fi
     -	reset_iter(iter, 0);
     +	kallsyms_iter_reset(iter, 0);
      
    - 	iter->show_value = kallsyms_show_value();
    + 	/*
    + 	 * Instead of checking this on every s_show() call, cache
    +@@ kernel/kallsyms.c: static int kallsyms_open(struct inode *inode, struct file *file)
      	return 0;
      }
      
 3:  fdb4b83ae5de !  3:  47180d9de724 waitfd: new syscall implementing waitpid() over fds
    @@ fs/io_uring.c: static void __io_queue_proc(struct io_poll_iocb *poll, struct io_
     +				unsigned long fixed_event)
      {
      	struct io_poll_table *pt = container_of(p, struct io_poll_table, pt);
    - 
    + 	struct async_poll *apoll = pt->req->apoll;
     @@ fs/io_uring.c: static int io_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync,
      }
      
 4:  95355e599de8 =  4:  8fadfbb45a42 dtrace: core and x86
 5:  27d0341e561a =  5:  74dcdb98e178 dtrace: modular components and x86 support
 6:  40d17fc1255f =  6:  8bf6ed7987cc dtrace: systrace provider core components
 7:  a8bc8d69aea4 =  7:  b83d922b26c9 dtrace: systrace provider
 8:  eb9c2b35d389 =  8:  ea86232bd4aa dtrace: sdt provider core components
 9:  fd21d1c8d3bb =  9:  4980d42099f6 dtrace: sdt provider for x86
10:  2eb6ca182649 = 10:  f0028024303b dtrace: profile provider and test probe core components
11:  d09d1fd63e95 = 11:  3b40ab1a6404 dtrace: profile and tick providers built on cyclics
12:  f405f48e9d04 = 12:  66690bcb4344 dtrace: USDT and pid provider core and x86 components
13:  9a2b5b341826 = 13:  687c8c6754cb dtrace: USDT and pid providers
14:  759a6fc0967f = 14:  48faed4c149d dtrace: function boundary tracing (FBT) core and x86 components
15:  b95e7012d291 = 15:  85943a408c5e dtrace: fbt provider, modular components
16:  0048b703db7b = 16:  f778bcde7196 dtrace, arm: arm64 port
17:  e10d8485c80c ! 17:  eb64ac1f228d dtrace: add SDT probes
    @@ kernel/signal.c: int send_sigqueue(struct sigqueue *q, struct pid *pid, enum pid
      out:
      	trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result);
     @@ kernel/signal.c: bool get_signal(struct ksignal *ksig)
    - 		trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
    - 				&sighand->action[SIGKILL - 1]);
    - 		recalc_sigpending();
    + 
    + 	/* Has this task already been marked for death? */
    + 	if (signal_group_exit(signal)) {
     +		DTRACE_PROC(signal__handle,
     +			    int, signal->group_exit_code
     +						? signal->group_exit_code
     +						: signr,
     +			    siginfo_t *, NULL, void (*)(void), NULL);
    - 		goto fatal;
    - 	}
    - 
    + 		ksig->info.si_signo = signr = SIGKILL;
    + 		sigdelset(&current->pending.signal, SIGKILL);
    + 		trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
     @@ kernel/signal.c: bool get_signal(struct ksignal *ksig)
      
      		ka = &sighand->action[signr-1];
    @@ kernel/signal.c: static int do_sigtimedwait(const sigset_t *which, kernel_siginf
     
      ## kernel/time/timer.c ##
     @@
    - #include <linux/sched/debug.h>
      #include <linux/slab.h>
      #include <linux/compat.h>
    + #include <linux/random.h>
     +#include <linux/sdt.h>
      
      #include <linux/uaccess.h>
18:  fe4e9bdd6325 = 18:  135f988e1e32 dtrace: add rcu_irq_exit and rcu_nmi_exit_common to FBT blacklist
19:  d22ca7999ce6 = 19:  32a3729ba7ca dtrace: add sample script for building DTrace on Fedora
20:  3fe011061a35 = 20:  3bd2f155b627 locking: publicize mutex_owner and mutex_owned again



More information about the DTrace-devel mailing list