Some of the ftrace internal events use a zero for a data size of
a field event. This is increasingly important for the histogram trigger work that is being extended. While auditing trace events, I found that a couple of the xen events were used as just marking that a function was called, by creating a static array of size zero. This can play havoc with the tracing features if these events are used, because a zero size of a static array is denoted as a special nul terminated dynamic array (this is what the trace_marker code uses). But since the xen events have no size, they are not nul terminated, and unexpected results may occur. As trace events were never intended on being a marker to denote that a function was hit or not, especially since function tracing and kprobes can trivially do the same, the best course of action is to simply remove these events. -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCWvtgDhQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qtY0AQC2HSSRkP5GVL1/c1Xoxl202O1tQ9Dp G08oci4bfcRCIAEA8ATc+1LZPGQUvd0ucrD4FiJnfpYUHrCTvvRsz4d9LQQ= =HUQR -----END PGP SIGNATURE----- Merge tag 'trace-v4.17-rc4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace Pull tracing fix from Steven Rostedt: "Some of the ftrace internal events use a zero for a data size of a field event. This is increasingly important for the histogram trigger work that is being extended. While auditing trace events, I found that a couple of the xen events were used as just marking that a function was called, by creating a static array of size zero. This can play havoc with the tracing features if these events are used, because a zero size of a static array is denoted as a special nul terminated dynamic array (this is what the trace_marker code uses). But since the xen events have no size, they are not nul terminated, and unexpected results may occur. As trace events were never intended on being a marker to denote that a function was hit or not, especially since function tracing and kprobes can trivially do the same, the best course of action is to simply remove these events" * tag 'trace-v4.17-rc4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: tracing/x86/xen: Remove zero data size trace events trace_xen_mmu_flush_tlb{_all}
This commit is contained in:
commit
e6506eb241
|
@ -42,13 +42,11 @@ xmaddr_t arbitrary_virt_to_machine(void *vaddr)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);
|
EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);
|
||||||
|
|
||||||
static void xen_flush_tlb_all(void)
|
static noinline void xen_flush_tlb_all(void)
|
||||||
{
|
{
|
||||||
struct mmuext_op *op;
|
struct mmuext_op *op;
|
||||||
struct multicall_space mcs;
|
struct multicall_space mcs;
|
||||||
|
|
||||||
trace_xen_mmu_flush_tlb_all(0);
|
|
||||||
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
|
|
||||||
mcs = xen_mc_entry(sizeof(*op));
|
mcs = xen_mc_entry(sizeof(*op));
|
||||||
|
|
|
@ -1310,13 +1310,11 @@ unsigned long xen_read_cr2_direct(void)
|
||||||
return this_cpu_read(xen_vcpu_info.arch.cr2);
|
return this_cpu_read(xen_vcpu_info.arch.cr2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xen_flush_tlb(void)
|
static noinline void xen_flush_tlb(void)
|
||||||
{
|
{
|
||||||
struct mmuext_op *op;
|
struct mmuext_op *op;
|
||||||
struct multicall_space mcs;
|
struct multicall_space mcs;
|
||||||
|
|
||||||
trace_xen_mmu_flush_tlb(0);
|
|
||||||
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
|
|
||||||
mcs = xen_mc_entry(sizeof(*op));
|
mcs = xen_mc_entry(sizeof(*op));
|
||||||
|
|
|
@ -352,22 +352,6 @@ DECLARE_EVENT_CLASS(xen_mmu_pgd,
|
||||||
DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin);
|
DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin);
|
||||||
DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin);
|
DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin);
|
||||||
|
|
||||||
TRACE_EVENT(xen_mmu_flush_tlb_all,
|
|
||||||
TP_PROTO(int x),
|
|
||||||
TP_ARGS(x),
|
|
||||||
TP_STRUCT__entry(__array(char, x, 0)),
|
|
||||||
TP_fast_assign((void)x),
|
|
||||||
TP_printk("%s", "")
|
|
||||||
);
|
|
||||||
|
|
||||||
TRACE_EVENT(xen_mmu_flush_tlb,
|
|
||||||
TP_PROTO(int x),
|
|
||||||
TP_ARGS(x),
|
|
||||||
TP_STRUCT__entry(__array(char, x, 0)),
|
|
||||||
TP_fast_assign((void)x),
|
|
||||||
TP_printk("%s", "")
|
|
||||||
);
|
|
||||||
|
|
||||||
TRACE_EVENT(xen_mmu_flush_tlb_one_user,
|
TRACE_EVENT(xen_mmu_flush_tlb_one_user,
|
||||||
TP_PROTO(unsigned long addr),
|
TP_PROTO(unsigned long addr),
|
||||||
TP_ARGS(addr),
|
TP_ARGS(addr),
|
||||||
|
|
Loading…
Reference in New Issue