LTTng Kernel Trace Thread Flag
Subsystems (4)
PATCH 20/26 LTTng Kernel Trace Thread Flag sparc64
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-sparc64/thread_info.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
include/asm-sparc64/thread_info.h +2 -1
@@ -225,7 +225,7 @@ register struct thread_info *current_thr#define TIF_UNALIGNED 5/* allowed to do unaligned accesses */ #define TIF_NEWSIGNALS 6/* wants new-style signals */ #define TIF_32BIT 7/* 32-bit binary */ -/* flag bit 8 is available */ +#define TIF_KERNEL_TRACE 8/* kernel trace active */ #define TIF_SECCOMP 9/* secure computing */ #define TIF_SYSCALL_AUDIT 10/* syscall auditing active */ /* flag bit 11 is available */
@@ -244,6 +244,7 @@ register struct thread_info *current_thr#define _TIF_UNALIGNED (1<<TIF_UNALIGNED)#define _TIF_NEWSIGNALS (1<<TIF_NEWSIGNALS)#define _TIF_32BIT (1<<TIF_32BIT) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_SECCOMP (1<<TIF_SECCOMP)#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 21/26 LTTng Kernel Trace Thread Flag UML
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-um/thread_info.h | 2 ++ 1 file changed, 2 insertions(+)
include/asm-um/thread_info.h +2 -0
@@ -82,6 +82,7 @@ static inline struct thread_info *curren#define TIF_MEMDIE 5#define TIF_SYSCALL_AUDIT 6#define TIF_RESTORE_SIGMASK 7 +#define TIF_KERNEL_TRACE 8/* kernel trace active */ #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
@@ -90,5 +91,6 @@ static inline struct thread_info *curren#define _TIF_MEMDIE (1 << TIF_MEMDIE)#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)#endif
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 22/26 LTTng Kernel Trace Thread Flag v850
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-v850/thread_info.h | 2 ++ 1 file changed, 2 insertions(+)
include/asm-v850/thread_info.h +2 -0
@@ -82,12 +82,14 @@ struct thread_info {#define TIF_POLLING_NRFLAG 3/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 4 +#define TIF_KERNEL_TRACE 5/* kernel trace active */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)/* Size of kernel stack for each process. */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 25/26 LTTng Kernel Trace Thread Flag xtensa
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-xtensa/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-xtensa/thread_info.h +3 -1
@@ -116,6 +116,7 @@ static inline struct thread_info *curren#define TIF_IRET 4/* return with iret */ #define TIF_MEMDIE 5#define TIF_RESTORE_SIGMASK 6/* restore signal mask in do_signal() */ +#define TIF_KERNEL_TRACE 7/* kernel trace active */ #define TIF_POLLING_NRFLAG 16/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -123,10 +124,11 @@ static inline struct thread_info *curren#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)#define _TIF_IRET (1<<TIF_IRET) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FF7E/* work to do on interrupt/exception return */ #define _TIF_ALLWORK_MASK 0x0000FFFF/* work to do on any return to u-space */ /*
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 1/26 LTTng Kernel Trace Thread Flag Alpha
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-alpha/thread_info.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
include/asm-alpha/thread_info.h +4 -2
@@ -76,19 +76,21 @@ register struct thread_info *__current_t#define TIF_UAC_SIGBUS 7#define TIF_MEMDIE 8#define TIF_RESTORE_SIGMASK 9/* restore signal mask in do_signal */ +#define TIF_KERNEL_TRACE 10/* Kernel tracing of syscalls */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)/* Work to do on interrupt/exception return. */ #define _TIF_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED)/* Work to do on any return to userspace. */ -#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ - | _TIF_SYSCALL_TRACE) +#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ + | _TIF_SYSCALL_TRACE | _TIF_KERNEL_TRACE)#define ALPHA_UAC_SHIFT 6#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 3/26 LTTng Kernel Trace Thread Flag AVR32
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-avr32/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-avr32/thread_info.h +3 -1
@@ -83,6 +83,7 @@ static inline struct thread_info *curren#define TIF_MEMDIE 6#define TIF_RESTORE_SIGMASK 7/* restore signal mask in do_signal */ #define TIF_CPU_GOING_TO_SLEEP 8/* CPU is entering sleep 0 mode */ +#define TIF_KERNEL_TRACE 9/* kernel trace active */ #define TIF_USERSPACE 31/* true if FS sets userspace */ #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
@@ -94,12 +95,13 @@ static inline struct thread_info *curren#define _TIF_MEMDIE (1 << TIF_MEMDIE)#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)#define _TIF_CPU_GOING_TO_SLEEP (1 << TIF_CPU_GOING_TO_SLEEP) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)/* XXX: These two masks must never span more than 16 bits! */ /* work to do on interrupt/exception return */ #define _TIF_WORK_MASK 0x0000013e/* work to do on any return to userspace */ -#define _TIF_ALLWORK_MASK 0x0000013f +#define _TIF_ALLWORK_MASK 0x0000033f/* work to do on return from debug mode */ #define _TIF_DBGWORK_MASK 0x0000017e
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 26/26 LTTng Kernel Trace Thread Flag API
In reply to Mathieu DesnoyersAdd an API to set/clear the kernel wide tracing thread flags. Implemented in kernel/sched.c. Updates thread flags *asynchronously* while holding the tasklist lock.
Upon fork, the flag must be re-copied while the tasklist lock is held.
--- include/linux/sched.h | 3 ++ kernel/fork.c | 9 ++++++++ kernel/sched.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+)
include/linux/sched.h +3 -0
@@ -2000,6 +2000,9 @@ static inline void migration_init(void) }#endif +extern void clear_kernel_trace_flag_all_tasks (void ); +extern void set_kernel_trace_flag_all_tasks (void ); +#endif /* __KERNEL__ */ #endif
kernel/fork.c +9 -0
@@ -1241,6 +1241,15 @@ static struct task_struct *copy_process( !cpu_online(task_cpu(p))))set_task_cpu (p,smp_processor_id ()); +/* +* The state of the parent's TIF_KTRACE flag may have changed +* since it was copied in dup_task_struct() so we re-copy it here. +*/ +if (test_thread_flag (TIF_KERNEL_TRACE )) +set_tsk_thread_flag (p,TIF_KERNEL_TRACE ); +else +clear_tsk_thread_flag (p,TIF_KERNEL_TRACE ); +/* CLONE_PARENT re-uses the old parent */ if (clone_flags & (CLONE_PARENT |CLONE_THREAD )) p->real_parent = current->real_parent;
kernel/sched.c +55 -0
58 lines not on this page · raw message
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 2/26 LTTng Kernel Trace Thread Flag ARM
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-arm/thread_info.h | 3 +++ 1 file changed, 3 insertions(+)
include/asm-arm/thread_info.h +3 -0
@@ -134,6 +134,7 @@ extern void iwmmxt_task_switch(struct th/* * thread information flags: * TIF_SYSCALL_TRACE - syscall trace active +* TIF_KERNEL_TRACE - kernel trace active * TIF_SIGPENDING - signal pending * TIF_NEED_RESCHED - rescheduling necessary * TIF_USEDFPU - FPU was used by this task this quantum (SMP)
@@ -141,6 +142,7 @@ extern void iwmmxt_task_switch(struct th*/ #define TIF_SIGPENDING 0#define TIF_NEED_RESCHED 1 +#define TIF_KERNEL_TRACE 7#define TIF_SYSCALL_TRACE 8#define TIF_POLLING_NRFLAG 16#define TIF_USING_IWMMXT 17
@@ -149,6 +151,7 @@ extern void iwmmxt_task_switch(struct th#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 10/26 LTTng Kernel Trace Thread Flag m32r
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-m32r/thread_info.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
include/asm-m32r/thread_info.h +7 -2
@@ -149,6 +149,7 @@ static inline unsigned int get_thread_fa#define TIF_NEED_RESCHED 2/* rescheduling necessary */ #define TIF_SINGLESTEP 3/* restore singlestep on return to user mode */ #define TIF_IRET 4/* return with iret */ +#define TIF_KERNEL_TRACE 5/* kernel trace active */ #define TIF_RESTORE_SIGMASK 8/* restore signal mask in do_signal() */ #define TIF_USEDFPU 16/* FPU was used by this task this quantum (SMP) */ #define TIF_POLLING_NRFLAG 17/* true if poll_idle() is polling TIF_NEED_RESCHED */
@@ -160,13 +161,17 @@ static inline unsigned int get_thread_fa#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)#define _TIF_IRET (1<<TIF_IRET) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)#define _TIF_USEDFPU (1<<TIF_USEDFPU)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_FREEZE (1<<TIF_FREEZE) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ -#define _TIF_ALLWORK_MASK 0x0000FFFF/* work to do on any return to u-space */ +/* work to do on any return to u-space */ +#define _TIF_ALLWORK_MASK 0x0000FFFF +/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK \ + (0x0000FFFF & ~(_TIF_SYSCALL_TRACE | _TIF_KERNEL_TRACE))/* * Thread-synchronous status.
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
cover LTTng Kernel Trace Thread Flag
Hi,
This is an RFC for addition of a new thread flag, TIF_KERNEL_TRACE, to each architecture to activate system-wide system call tracing.
This is needed by LTTng architecture dependent instrumentation.
It applies on 2.6.24-rc4-git3.
Mathieu
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 6/26 LTTng Kernel Trace Thread Flag Frv
Add a thread flag to activate system-wide syscall tracing.
--- include/asm-frv/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-frv/thread_info.h +3 -1
@@ -112,6 +112,7 @@ register struct thread_info *__current_t#define TIF_SINGLESTEP 3/* restore singlestep on return to user mode */ #define TIF_IRET 4/* return with iret */ #define TIF_RESTORE_SIGMASK 5/* restore signal mask in do_signal() */ +#define TIF_KERNEL_TRACE 6/* kernel trace active */ #define TIF_POLLING_NRFLAG 16/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 17/* OOM killer killed process */ #define TIF_FREEZE 18/* freezing for suspend */
@@ -122,10 +123,11 @@ register struct thread_info *__current_t#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)#define _TIF_IRET (1 << TIF_IRET)#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)#define _TIF_FREEZE (1 << TIF_FREEZE) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FFBE/* work to do on interrupt/exception return */ #define _TIF_ALLWORK_MASK 0x0000FFFF/* work to do on any return to u-space */ /*
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 4/26 LTTng Kernel Trace Thread Flag Blackfin
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-blackfin/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-blackfin/thread_info.h +3 -1
@@ -125,6 +125,7 @@ static inline struct thread_info *curren#define TIF_MEMDIE 4#define TIF_RESTORE_SIGMASK 5/* restore signal mask in do_signal() */ #define TIF_FREEZE 6/* is freezing for suspend */ +#define TIF_KERNEL_TRACE 7/* kernel trace active */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -133,8 +134,9 @@ static inline struct thread_info *curren#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)#define _TIF_FREEZE (1<<TIF_FREEZE) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FF7E/* work to do on interrupt/exception return */ #endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 9/26 LTTng Kernel Trace Thread Flag ia64
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- arch/ia64/kernel/entry.S | 6 ++++-- include/asm-ia64/thread_info.h | 13 +++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-)
include/asm-ia64/thread_info.h +9 -4
@@ -86,6 +86,7 @@#define TIF_SINGLESTEP 4/* restore singlestep on return to user mode */ #define TIF_RESTORE_SIGMASK 5/* restore signal mask in do_signal() */ #define TIF_PERFMON_WORK 6/* work for pfm_handle_work() */ +#define TIF_KERNEL_TRACE 7/* kernel trace active */ #define TIF_POLLING_NRFLAG 16/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 17#define TIF_MCA_INIT 18/* this task is processing MCA or INIT */
@@ -95,7 +96,8 @@#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP) -#define _TIF_SYSCALL_TRACEAUDIT (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE) +#define _TIF_SYSCALL_TRACEAUDIT (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP|_TIF_KERNEL_TRACE)#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)#define _TIF_PERFMON_WORK (1 << TIF_PERFMON_WORK)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
@@ -108,9 +110,12 @@/* "work to do on user-return" bits */ #define TIF_ALLWORK_MASK (_TIF_SIGPENDING|_TIF_PERFMON_WORK|_TIF_SYSCALL_AUDIT|\ _TIF_NEED_RESCHED| _TIF_SYSCALL_TRACE|\ - _TIF_RESTORE_SIGMASK) -/* like TIF_ALLWORK_BITS but sans TIF_SYSCALL_TRACE or TIF_SYSCALL_AUDIT */ -#define TIF_WORK_MASK (TIF_ALLWORK_MASK&~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)) + _TIF_RESTORE_SIGMASK|_TIF_KERNEL_TRACE) +/* +* like TIF_ALLWORK_BITS but sans TIF_SYSCALL_TRACE, TIF_KERNEL_TRACE +* or TIF_SYSCALL_AUDIT +*/ +#define TIF_WORK_MASK (TIF_ALLWORK_MASK&~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_KERNEL_TRACE))#define TS_POLLING 1/* true if in idle loop and not sleeping */
arch/ia64/kernel/entry.S +4 -2
@@ -621,9 +621,11 @@ ;; ld4 r2=[r2] ;; + movl r8=_TIF_SYSCALL_TRACEAUDIT + ;; // added stop bits to prevent r8 dependency + and r2=r8,r2 mov r8=0 - and r2=_TIF_SYSCALL_TRACEAUDIT,r2 - ;; + ;; // added stop bits to prevent r2 dependency cmp.ne p6,p0=r2,r0 (p6) br.cond.spnt .strace_check_retval ;; // added stop bits to prevent r8 dependency
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 5/26 LTTng Kernel Trace Thread Flag Cris
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-cris/thread_info.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
include/asm-cris/thread_info.h +7 -2
@@ -83,6 +83,7 @@ struct thread_info {#define TIF_NOTIFY_RESUME 1/* resumption notification requested */ #define TIF_SIGPENDING 2/* signal pending */ #define TIF_NEED_RESCHED 3/* rescheduling necessary */ +#define TIF_KERNEL_TRACE 4/* kernel trace active */ #define TIF_RESTORE_SIGMASK 9/* restore signal mask in do_signal() */ #define TIF_POLLING_NRFLAG 16/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 17
@@ -91,11 +92,15 @@ struct thread_info {#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ -#define _TIF_ALLWORK_MASK 0x0000FFFF/* work to do on any return to u-space */ +/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FFFF & \ + (~_TIF_SYSCALL_TRACE | ~_TIF_KERNEL_TRACE) +/* work to do on any return to u-space */ +#define _TIF_ALLWORK_MASK 0x0000FFFF#endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 18/26 LTTng Kernel Trace Thread Flag sh64
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-sh64/thread_info.h | 2 ++ 1 file changed, 2 insertions(+)
include/asm-sh64/thread_info.h +2 -0
@@ -75,11 +75,13 @@ static inline struct thread_info *curren/* thread information flags */ #define TIF_SYSCALL_TRACE 0/* syscall trace active */ +#define TIF_KERNEL_TRACE 1/* kernel trace active */ #define TIF_SIGPENDING 2/* signal pending */ #define TIF_NEED_RESCHED 3/* rescheduling necessary */ #define TIF_MEMDIE 4#define TIF_RESTORE_SIGMASK 5/* Restore signal mask in do_signal */ +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 15/26 LTTng Kernel Trace Thread Flag powerpc
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-powerpc/thread_info.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
include/asm-powerpc/thread_info.h +5 -3
@@ -112,7 +112,7 @@ static inline struct thread_info *curren#define TIF_POLLING_NRFLAG 3/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_32BIT 4/* 32 bit binary */ -#define TIF_PERFMON_WORK 5/* work for pfm_handle_work() */ +#define TIF_KERNEL_TRACE 5/* kernel trace active */ #define TIF_PERFMON_CTXSW 6/* perfmon needs ctxsw calls */ #define TIF_SYSCALL_AUDIT 7/* syscall auditing active */ #define TIF_SINGLESTEP 8/* singlestepping active */
@@ -124,6 +124,7 @@ static inline struct thread_info *curren#define TIF_FREEZE 14/* Freezing for suspend */ #define TIF_RUNLATCH 15/* Is the runlatch enabled? */ #define TIF_ABI_PENDING 16/* 32/64 bit switch needed */ +#define TIF_PERFMON_WORK 17/* work for pfm_handle_work() */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -131,7 +132,7 @@ static inline struct thread_info *curren#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_32BIT (1<<TIF_32BIT) -#define _TIF_PERFMON_WORK (1<<TIF_PERFMON_WORK) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_PERFMON_CTXSW (1<<TIF_PERFMON_CTXSW)#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
@@ -142,7 +143,8 @@ static inline struct thread_info *curren#define _TIF_FREEZE (1<<TIF_FREEZE)#define _TIF_RUNLATCH (1<<TIF_RUNLATCH)#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) -#define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) +#define _TIF_PERFMON_WORK (1<<TIF_PERFMON_WORK) +#define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP|_TIF_KERNEL_TRACE)#define _TIF_USER_WORK_MASK ( _TIF_SIGPENDING | \ _TIF_NEED_RESCHED | _TIF_RESTORE_SIGMASK)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 17/26 LTTng Kernel Trace Thread Flag SH
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-sh/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-sh/thread_info.h +3 -1
@@ -111,6 +111,7 @@ static inline struct thread_info *curren#define TIF_NEED_RESCHED 2/* rescheduling necessary */ #define TIF_RESTORE_SIGMASK 3/* restore signal mask in do_signal() */ #define TIF_SINGLESTEP 4/* singlestepping active */ +#define TIF_KERNEL_TRACE 5/* kernel trace active */ #define TIF_USEDFPU 16/* FPU was used by this task this quantum (SMP) */ #define TIF_POLLING_NRFLAG 17/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 18
@@ -121,11 +122,12 @@ static inline struct thread_info *curren#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_USEDFPU (1<<TIF_USEDFPU)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_FREEZE (1<<TIF_FREEZE) -#define _TIF_WORK_MASK 0x000000FE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x000000DE/* work to do on interrupt/exception return */ #define _TIF_ALLWORK_MASK 0x000000FF/* work to do on any return to u-space */ #endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 19/26 LTTng Kernel Trace Thread Flag sparc
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-sparc/thread_info.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
include/asm-sparc/thread_info.h +2 -1
@@ -128,7 +128,7 @@ BTFIXUPDEF_CALL(void, free_thread_info,* thread information flag bit numbers */ #define TIF_SYSCALL_TRACE 0/* syscall trace active */ -/* flag bit 1 is available */ +#define TIF_KERNEL_TRACE 1/* kernel trace active */ #define TIF_SIGPENDING 2/* signal pending */ #define TIF_NEED_RESCHED 3/* rescheduling necessary */ #define TIF_RESTORE_SIGMASK 4/* restore signal mask in do_signal() */
@@ -140,6 +140,7 @@ BTFIXUPDEF_CALL(void, free_thread_info,/* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 12/26 LTTng Kernel Trace Thread Flag m68knommu
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-m68knommu/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-m68knommu/thread_info.h +3 -1
@@ -88,14 +88,16 @@ static inline struct thread_info *curren#define TIF_POLLING_NRFLAG 3/* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 4 +#define TIF_KERNEL_TRACE 5/* kernel trace active */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FFDE/* work to do on interrupt/exception return */ #endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 7/26 LTTng Kernel Trace Thread Flag H8300
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-h8300/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-h8300/thread_info.h +3 -1
@@ -92,6 +92,7 @@ static inline struct thread_info *currenTIF_NEED_RESCHED */ #define TIF_MEMDIE 4#define TIF_RESTORE_SIGMASK 5/* restore signal mask in do_signal() */ +#define TIF_KERNEL_TRACE 6/* kernel trace active */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -99,8 +100,9 @@ static inline struct thread_info *curren#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE) -#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */ +#define _TIF_WORK_MASK 0x0000FFBE/* work to do on interrupt/exception return */ #endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 14/26 LTTng Kernel Trace Thread Flag parisc
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-parisc/thread_info.h | 2 ++ 1 file changed, 2 insertions(+)
include/asm-parisc/thread_info.h +2 -0
@@ -62,6 +62,7 @@ struct thread_info {#define TIF_32BIT 4/* 32 bit binary */ #define TIF_MEMDIE 5#define TIF_RESTORE_SIGMASK 6/* restore saved signal mask */ +#define TIF_KERNEL_TRACE 7/* kernel trace active */ #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
@@ -69,6 +70,7 @@ struct thread_info {#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)#define _TIF_32BIT (1 << TIF_32BIT)#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1 << TIF_KERNEL_TRACE)#define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | \ _TIF_NEED_RESCHED | _TIF_RESTORE_SIGMASK)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 16/26 LTTng Kernel Trace Thread Flag s390
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- arch/s390/kernel/entry.S | 5 ++++- include/asm-s390/thread_info.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-)
include/asm-s390/thread_info.h +2 -0
@@ -96,6 +96,7 @@#define TIF_SYSCALL_AUDIT 5/* syscall auditing active */ #define TIF_SINGLE_STEP 6/* deliver sigtrap on return to user */ #define TIF_MCCK_PENDING 7/* machine check handling is pending */ +#define TIF_KERNEL_TRACE 8/* kernel trace active */ #define TIF_USEDFPU 16/* FPU was used by this task this quantum (SMP) */ #define TIF_POLLING_NRFLAG 17/* true if poll_idle() is polling TIF_NEED_RESCHED */
@@ -110,6 +111,7 @@#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)#define _TIF_SINGLE_STEP (1<<TIF_SINGLE_STEP)#define _TIF_MCCK_PENDING (1<<TIF_MCCK_PENDING) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_USEDFPU (1<<TIF_USEDFPU)#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_31BIT (1<<TIF_31BIT)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 11/26 LTTng Kernel Trace Thread Flag m68k
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-m68k/thread_info.h | 1 + 1 file changed, 1 insertion(+)
include/asm-m68k/thread_info.h +1 -0
@@ -55,6 +55,7 @@ struct thread_info {*/ #define TIF_SIGPENDING 6/* signal pending */ #define TIF_NEED_RESCHED 7/* rescheduling necessary */ +#define TIF_KERNEL_TRACE 13/* kernel trace active */ #define TIF_DELAYED_TRACE 14/* single step a syscall */ #define TIF_SYSCALL_TRACE 15/* syscall trace active */ #define TIF_MEMDIE 16
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 13/26 LTTng Kernel Trace Thread Flag MIPS
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-mips/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-mips/thread_info.h +3 -1
@@ -122,9 +122,11 @@ register struct thread_info *__current_t#define TIF_32BIT_REGS 22/* also implies 16/32 fprs */ #define TIF_32BIT_ADDR 23/* 32-bit address space (o32/n32) */ #define TIF_FPUBOUND 24/* thread bound to FPU-full CPU set */ +#define TIF_KERNEL_TRACE 30/* kernel trace active */ #define TIF_SYSCALL_TRACE 31/* syscall trace active */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
@@ -142,7 +144,7 @@ register struct thread_info *__current_t/* work to do on interrupt/exception return */ #define _TIF_WORK_MASK (0x0000ffef & ~_TIF_SECCOMP)/* work to do on any return to u-space */ -#define _TIF_ALLWORK_MASK (0x8000ffff & ~_TIF_SECCOMP) +#define _TIF_ALLWORK_MASK (0xc000ffff & ~_TIF_SECCOMP)#endif /* __KERNEL__ */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 24/26 LTTng Linux Kernel Trace Thread Flag x86_64
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-x86/thread_info_64.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-x86/thread_info_64.h +3 -1
@@ -107,6 +107,7 @@ static inline struct thread_info *stack_* Warning: layout of LSW is hardcoded in entry.S */ #define TIF_SYSCALL_TRACE 0/* syscall trace active */ +#define TIF_KERNEL_TRACE 1/* kernel trace active */ #define TIF_SIGPENDING 2/* signal pending */ #define TIF_NEED_RESCHED 3/* rescheduling necessary */ #define TIF_SINGLESTEP 4/* reenable singlestep on user return*/
@@ -125,6 +126,7 @@ static inline struct thread_info *stack_#define TIF_FREEZE 23/* is freezing for suspend */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
@@ -142,7 +144,7 @@ static inline struct thread_info *stack_/* work to do on interrupt/exception return */ #define _TIF_WORK_MASK \ - (0x0000FFFF & ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP|_TIF_SECCOMP)) + (0x0000FFFF & ~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_KERNEL_TRACE|_TIF_SINGLESTEP|_TIF_SECCOMP))/* work to do on any return to user space */ #define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 8/26 LTTng Linux Kernel Trace Thread Flags x86_32
In reply to Mathieu DesnoyersAdd a thread flag to activate system-wide syscall tracing.
--- include/asm-i386/thread_info.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
include/asm-x86/thread_info_32.h +3 -1
@@ -132,6 +132,7 @@ static inline struct thread_info *curren#define TIF_SYSCALL_AUDIT 6/* syscall auditing active */ #define TIF_SECCOMP 7/* secure computing */ #define TIF_RESTORE_SIGMASK 8/* restore signal mask in do_signal() */ +#define TIF_KERNEL_TRACE 9/* kernel trace active */ #define TIF_MEMDIE 16#define TIF_DEBUG 17/* uses debug registers */ #define TIF_IO_BITMAP 18/* uses I/O bitmap */
@@ -147,6 +148,7 @@ static inline struct thread_info *curren#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)#define _TIF_SECCOMP (1<<TIF_SECCOMP)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) +#define _TIF_KERNEL_TRACE (1<<TIF_KERNEL_TRACE)#define _TIF_DEBUG (1<<TIF_DEBUG)#define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP)#define _TIF_FREEZE (1<<TIF_FREEZE)
@@ -154,7 +156,7 @@ static inline struct thread_info *curren/* work to do on interrupt/exception return */ #define _TIF_WORK_MASK \ - (0x0000FFFF & ~(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ + (0x0000FFFF & ~(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_KERNEL_TRACE |\ _TIF_SECCOMP | _TIF_SYSCALL_EMU))/* work to do on any return to u-space */ #define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP)
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
PATCH 23/26 Prepare x86_64 for TIF_SYSCALL_TRACE async flag set in entry.S
In reply to Mathieu DesnoyersWhen the flag is inactive upon syscall entry and concurrently activated before exit, we seem to reach a state where the top of stack is incorrect upon return to user space.
Fix this by fixing the top of stack and jumping to int_ret_from_sys_call if we detect that thread flags has been modified.
We make sure that the thread flag read is coherent between our new test and the ALLWORK_MASK test by first saving it in a register used for both comparisons.
--- arch/x86/kernel/entry_64.S | 12 ++++++++++++ 1 file changed, 12 insertions(+)
arch/x86/kernel/entry_64.S +12 -0
@@ -268,6 +268,8 @@ sysret_check: /* Handle reschedules */ /* edx: work, edi: workmask */ sysret_careful: + testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),%edx + jnz ret_from_sys_call_trace bt $TIF_NEED_RESCHED,%edx jnc sysret_signal TRACE_IRQS_ON
@@ -279,6 +281,16 @@ sysret_careful: CFI_ADJUST_CFA_OFFSET -8 jmp sysret_check +ret_from_sys_call_trace: + TRACE_IRQS_ON + sti + SAVE_REST + FIXUP_TOP_OF_STACK %rdi + movq %rsp,%rdi + LOAD_ARGS ARGOFFSET /* reload args from stack in case ptrace changed it */ + RESTORE_REST + jmp int_ret_from_sys_call + /* Handle a signal */ sysret_signal: TRACE_IRQS_ON
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Quoted 3 lines · Mathieu Desnoyers
This is an RFC for addition of a new thread flag,
TIF_KERNEL_TRACE, to each architecture to activate system-wide system call tracing.
[...]
Instead of creating a new flag, could you overload TIF_SYSCALL_TRACE, putting the marker into syscall_trace(), and letting !PT_TRACED cause a skip over the ptrace notification logic?
- FChE
Quoted 11 lines · * Frank Ch. Eigler ([email protected]) wrote:
Quoted 3 lines · Mathieu Desnoyers
This is an RFC for addition of a new thread flag,
TIF_KERNEL_TRACE, to each architecture to activate system-wide system call tracing.
[...]Instead of creating a new flag, could you overload
TIF_SYSCALL_TRACE, putting the marker intosyscall_trace(), and letting !PT_TRACED cause a skip over the ptrace notification logic?- FChE
I don't see any PT_TRACED flag in current kernel HEAD ?
Hrm, let's see. If we share TIF_SYSCALL_TRACE with ptrace, we would then have to figure out how to get this working :
- kernel tracing activated
- ptracing some random processes
- kernel tracing deactivated
- stop ptracing those processes
It means that we would have to keep some state information about the ptrace status of each process. This is currently kept by TIF_SYSCALL_TRACE, but since we would be overloading it, it would be lost when we deactivate kernel tracing. Adding a supplementary field to the thread_info structure is out of question here : we have to keep it as small as possible. So where do you propose to keep this information other than... another thread flag ?
Mathieu
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68