cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/include/asm/trace/mpx.h

/* SPDX-License-Identifier: GPL-2.0 */

#undef TRACE_SYSTEM

#define TRACE_SYSTEM mpx

#if !defined(_TRACE_MPX_H) || defined(TRACE_HEADER_MULTI_READ)

#define _TRACE_MPX_H

#include <linux/tracepoint.h>

#ifdef CONFIG_X86_INTEL_MPX

TRACE_EVENT(mpx_bounds_register_exception,

	TP_PROTO(void *addr_referenced,
                 const struct mpx_bndreg *bndreg),
	TP_ARGS(addr_referenced, bndreg),

	TP_STRUCT__entry(
                __field(void *, addr_referenced)
                __field(u64, lower_bound)
                __field(u64, upper_bound)
        ),

	TP_fast_assign(
                __entry->addr_referenced = addr_referenced;
                __entry->lower_bound = bndreg->lower_bound;
                __entry->upper_bound = bndreg->upper_bound;
        ),
	/*
         * Note that we are printing out the '~' of the upper
         * bounds register here.  It is actually stored in its
         * one's complement form so that its 'init' state
         * corresponds to all 0's.  But, that looks like
         * gibberish when printed out, so print out the 1's
         * complement instead of the actual value here.  Note
         * though that you still need to specify filters for the
         * actual value, not the displayed one.
         */
	TP_printk("address referenced: 0x%p bounds: lower: 0x%llx ~upper: 0x%llx",
                __entry->addr_referenced,
                __entry->lower_bound,
                ~__entry->upper_bound
        )
);

TRACE_EVENT(bounds_exception_mpx,

	TP_PROTO(const struct mpx_bndcsr *bndcsr),
	TP_ARGS(bndcsr),

	TP_STRUCT__entry(
                __field(u64, bndcfgu)
                __field(u64, bndstatus)
        ),

	TP_fast_assign(
		/* need to get rid of the 'const' on bndcsr */
		__entry->bndcfgu   = (u64)bndcsr->bndcfgu;
                __entry->bndstatus = (u64)bndcsr->bndstatus;
        ),

	TP_printk("bndcfgu:0x%llx bndstatus:0x%llx",
                __entry->bndcfgu,
                __entry->bndstatus)
);

DECLARE_EVENT_CLASS(mpx_range_trace,

	TP_PROTO(unsigned long start,
                 unsigned long end),
	TP_ARGS(start, end),

	TP_STRUCT__entry(
                __field(unsigned long, start)
                __field(unsigned long, end)
        ),

	TP_fast_assign(
                __entry->start = start;
                __entry->end   = end;
        ),

	TP_printk("[0x%p:0x%p]",
                (void *)__entry->start,
                (void *)__entry->end
        )
);

DEFINE_EVENT(mpx_range_trace, mpx_unmap_zap,
	TP_PROTO(unsigned long start, unsigned long end),
	TP_ARGS(start, end)
);

DEFINE_EVENT(mpx_range_trace, mpx_unmap_search,
	TP_PROTO(unsigned long start, unsigned long end),
	TP_ARGS(start, end)
);

TRACE_EVENT(mpx_new_bounds_table,

	TP_PROTO(unsigned long table_vaddr),
	TP_ARGS(table_vaddr),

	TP_STRUCT__entry(
                __field(unsigned long, table_vaddr)
        ),

	TP_fast_assign(
                __entry->table_vaddr = table_vaddr;
        ),

	TP_printk("table vaddr:%p", (void *)__entry->table_vaddr)
);

#else

/*
 * This gets used outside of MPX-specific code, so we need a stub.
 */

static inline void trace_bounds_exception_mpx(const struct mpx_bndcsr *bndcsr) { }

Contributors

PersonTokensPropCommitsCommitProp
Dave Hansen12100.00%2100.00%
Total12100.00%2100.00%

#endif /* CONFIG_X86_INTEL_MPX */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH asm/trace/ #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_FILE mpx #endif /* _TRACE_MPX_H */ /* This part must be outside protection */ #include <trace/define_trace.h>

Overall Contributors

PersonTokensPropCommitsCommitProp
Dave Hansen18099.45%583.33%
Greg Kroah-Hartman10.55%116.67%
Total181100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.