lkml.org 
[lkml]   [2018]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.16 022/110] tracing/x86/xen: Remove zero data size trace events trace_xen_mmu_flush_tlb{_all}
    Date
    4.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Steven Rostedt (VMware) <rostedt@goodmis.org>

    commit 45dd9b0666a162f8e4be76096716670cf1741f0e upstream.

    Doing an audit of trace events, I discovered two trace events in the xen
    subsystem that use a hack to create zero data size trace events. This is not
    what trace events are for. Trace events add memory footprint overhead, and
    if all you need to do is see if a function is hit or not, simply make that
    function noinline and use function tracer filtering.

    Worse yet, the hack used was:

    __array(char, x, 0)

    Which creates a static string of zero in length. There's assumptions about
    such constructs in ftrace that this is a dynamic string that is nul
    terminated. This is not the case with these tracepoints and can cause
    problems in various parts of ftrace.

    Nuke the trace events!

    Link: http://lkml.kernel.org/r/20180509144605.5a220327@gandalf.local.home

    Cc: stable@vger.kernel.org
    Fixes: 95a7d76897c1e ("xen/mmu: Use Xen specific TLB flush instead of the generic one.")
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/xen/mmu.c | 4 +---
    arch/x86/xen/mmu_pv.c | 4 +---
    include/trace/events/xen.h | 16 ----------------
    3 files changed, 2 insertions(+), 22 deletions(-)

    --- a/arch/x86/xen/mmu.c
    +++ b/arch/x86/xen/mmu.c
    @@ -42,13 +42,11 @@ xmaddr_t arbitrary_virt_to_machine(void
    }
    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 multicall_space mcs;

    - trace_xen_mmu_flush_tlb_all(0);
    -
    preempt_disable();

    mcs = xen_mc_entry(sizeof(*op));
    --- a/arch/x86/xen/mmu_pv.c
    +++ b/arch/x86/xen/mmu_pv.c
    @@ -1280,13 +1280,11 @@ unsigned long xen_read_cr2_direct(void)
    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 multicall_space mcs;

    - trace_xen_mmu_flush_tlb(0);
    -
    preempt_disable();

    mcs = xen_mc_entry(sizeof(*op));
    --- a/include/trace/events/xen.h
    +++ b/include/trace/events/xen.h
    @@ -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_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,
    TP_PROTO(unsigned long addr),
    TP_ARGS(addr),

    \
     
     \ /
      Last update: 2018-05-21 23:52    [W:2.895 / U:0.332 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site