Updates to Tracing:
- Rename the staging files to give them some meaning. Just stage1,stag2,etc, does not show what they are for - Check for NULL from allocation in bootconfig - Hold event mutex for dyn_event call in user events - Mark user events to broken (to work on the API) - Remove eBPF updates from user events - Remove user events from uapi header to keep it from being installed. - Move ftrace_graph_is_dead() into inline as it is called from hot paths and also convert it into a static branch. -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCYkmyIBQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qutfAQD90gbUgFMFe2akF5sKhonF5T6mm0+w BsWqNlBEKBxmfwD+Krfpxql/PKp/gCufcIUUkYC4E6Wl9akf3eO1qQel1Ao= =ZTn1 -----END PGP SIGNATURE----- Merge tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace Pull more tracing updates from Steven Rostedt: - Rename the staging files to give them some meaning. Just stage1,stag2,etc, does not show what they are for - Check for NULL from allocation in bootconfig - Hold event mutex for dyn_event call in user events - Mark user events to broken (to work on the API) - Remove eBPF updates from user events - Remove user events from uapi header to keep it from being installed. - Move ftrace_graph_is_dead() into inline as it is called from hot paths and also convert it into a static branch. * tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: tracing: Move user_events.h temporarily out of include/uapi ftrace: Make ftrace_graph_is_dead() a static branch tracing: Set user_events to BROKEN tracing/user_events: Remove eBPF interfaces tracing/user_events: Hold event_mutex during dyn_event_add proc: bootconfig: Add null pointer check tracing: Rename the staging files for trace_events
This commit is contained in:
commit
09bb8856d4
15 changed files with 44 additions and 167 deletions
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include <linux/trace_recursion.h>
|
||||
#include <linux/trace_clock.h>
|
||||
#include <linux/jump_label.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/bitops.h>
|
||||
|
|
@ -1018,7 +1019,20 @@ unsigned long ftrace_graph_ret_addr(struct task_struct *task, int *idx,
|
|||
extern int register_ftrace_graph(struct fgraph_ops *ops);
|
||||
extern void unregister_ftrace_graph(struct fgraph_ops *ops);
|
||||
|
||||
extern bool ftrace_graph_is_dead(void);
|
||||
/**
|
||||
* ftrace_graph_is_dead - returns true if ftrace_graph_stop() was called
|
||||
*
|
||||
* ftrace_graph_stop() is called when a severe error is detected in
|
||||
* the function graph tracing. This function is called by the critical
|
||||
* paths of function graph to keep those paths from doing any more harm.
|
||||
*/
|
||||
DECLARE_STATIC_KEY_FALSE(kill_ftrace_graph);
|
||||
|
||||
static inline bool ftrace_graph_is_dead(void)
|
||||
{
|
||||
return static_branch_unlikely(&kill_ftrace_graph);
|
||||
}
|
||||
|
||||
extern void ftrace_graph_stop(void);
|
||||
|
||||
/* The current handlers in use */
|
||||
|
|
|
|||
|
|
@ -32,9 +32,6 @@
|
|||
/* Create dynamic location entry within a 32-bit value */
|
||||
#define DYN_LOC(offset, size) ((size) << 16 | (offset))
|
||||
|
||||
/* Use raw iterator for attached BPF program(s), no affect on ftrace/perf */
|
||||
#define FLAG_BPF_ITER (1 << 0)
|
||||
|
||||
/*
|
||||
* Describes an event registration and stores the results of the registration.
|
||||
* This structure is passed to the DIAG_IOCSREG ioctl, callers at a minimum
|
||||
|
|
@ -63,54 +60,4 @@ struct user_reg {
|
|||
/* Requests to delete a user_event */
|
||||
#define DIAG_IOCSDEL _IOW(DIAG_IOC_MAGIC, 1, char*)
|
||||
|
||||
/* Data type that was passed to the BPF program */
|
||||
enum {
|
||||
/* Data resides in kernel space */
|
||||
USER_BPF_DATA_KERNEL,
|
||||
|
||||
/* Data resides in user space */
|
||||
USER_BPF_DATA_USER,
|
||||
|
||||
/* Data is a pointer to a user_bpf_iter structure */
|
||||
USER_BPF_DATA_ITER,
|
||||
};
|
||||
|
||||
/*
|
||||
* Describes an iovec iterator that BPF programs can use to access data for
|
||||
* a given user_event write() / writev() call.
|
||||
*/
|
||||
struct user_bpf_iter {
|
||||
|
||||
/* Offset of the data within the first iovec */
|
||||
__u32 iov_offset;
|
||||
|
||||
/* Number of iovec structures */
|
||||
__u32 nr_segs;
|
||||
|
||||
/* Pointer to iovec structures */
|
||||
const struct iovec *iov;
|
||||
};
|
||||
|
||||
/* Context that BPF programs receive when attached to a user_event */
|
||||
struct user_bpf_context {
|
||||
|
||||
/* Data type being passed (see union below) */
|
||||
__u32 data_type;
|
||||
|
||||
/* Length of the data */
|
||||
__u32 data_len;
|
||||
|
||||
/* Pointer to data, varies by data type */
|
||||
union {
|
||||
/* Kernel data (data_type == USER_BPF_DATA_KERNEL) */
|
||||
void *kdata;
|
||||
|
||||
/* User data (data_type == USER_BPF_DATA_USER) */
|
||||
void *udata;
|
||||
|
||||
/* Direct iovec (data_type == USER_BPF_DATA_ITER) */
|
||||
struct user_bpf_iter *iter;
|
||||
};
|
||||
};
|
||||
|
||||
#endif /* _UAPI_LINUX_USER_EVENTS_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue