[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(¤t->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