Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6506eb2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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}
parents 9d38cd06 45dd9b06
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -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));
+1 −3
Original line number Original line Diff line number Diff line
@@ -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));
+0 −16
Original line number Original line Diff line number Diff line
@@ -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),