Skip to content

Commit

Permalink
Merge tag 'trace-v4.8-1' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/rostedt/linux-trace

Pull tracing fixes from Steven Rostedt:
 "A few updates and fixes:

   - move the suppressing of the __builtin_return_address >0 warning to
     the tracing directory only.

   - metag recordmcount fix for newer glibc's

   - two tracing histogram fixes that were reported by KASAN"

* tag 'trace-v4.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing: Fix use-after-free in hist_register_trigger()
  tracing: Fix use-after-free in hist_unreg_all/hist_enable_unreg_all
  Makefile: Mute warning for __builtin_return_address(>0) for tracing only
  ftrace/recordmcount: Work around for addition of metag magic but not relocations
  • Loading branch information
torvalds committed Aug 3, 2016
2 parents 4b2e016 + 7522c03 commit bf0f500
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 9 deletions.
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,6 @@ include arch/$(SRCARCH)/Makefile

KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,)
KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)

ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
KBUILD_CFLAGS += -Os
Expand Down
4 changes: 4 additions & 0 deletions kernel/trace/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

# We are fully aware of the dangers of __builtin_return_address()
FRAME_CFLAGS := $(call cc-disable-warning,frame-address)
KBUILD_CFLAGS += $(FRAME_CFLAGS)

# Do not instrument the tracer itself:

ifdef CONFIG_FUNCTION_TRACER
Expand Down
14 changes: 7 additions & 7 deletions kernel/trace/trace_events_hist.c
Original file line number Diff line number Diff line change
Expand Up @@ -1441,16 +1441,16 @@ static int hist_register_trigger(char *glob, struct event_trigger_ops *ops,
goto out;
}

if (hist_data->attrs->pause)
data->paused = true;

if (named_data) {
destroy_hist_data(data->private_data);
data->private_data = named_data->private_data;
set_named_trigger_data(data, named_data);
data->ops = &event_hist_trigger_named_ops;
}

if (hist_data->attrs->pause)
data->paused = true;

if (data->ops->init) {
ret = data->ops->init(data->ops, data);
if (ret < 0)
Expand Down Expand Up @@ -1500,9 +1500,9 @@ static void hist_unregister_trigger(char *glob, struct event_trigger_ops *ops,

static void hist_unreg_all(struct trace_event_file *file)
{
struct event_trigger_data *test;
struct event_trigger_data *test, *n;

list_for_each_entry_rcu(test, &file->triggers, list) {
list_for_each_entry_safe(test, n, &file->triggers, list) {
if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) {
list_del_rcu(&test->list);
trace_event_trigger_enable_disable(file, 0);
Expand Down Expand Up @@ -1699,9 +1699,9 @@ hist_enable_get_trigger_ops(char *cmd, char *param)

static void hist_enable_unreg_all(struct trace_event_file *file)
{
struct event_trigger_data *test;
struct event_trigger_data *test, *n;

list_for_each_entry_rcu(test, &file->triggers, list) {
list_for_each_entry_safe(test, n, &file->triggers, list) {
if (test->cmd_ops->trigger_type == ETT_HIST_ENABLE) {
list_del_rcu(&test->list);
update_cond_flag(file);
Expand Down
9 changes: 8 additions & 1 deletion scripts/recordmcount.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,17 @@
#include <string.h>
#include <unistd.h>

/*
* glibc synced up and added the metag number but didn't add the relocations.
* Work around this in a crude manner for now.
*/
#ifndef EM_METAG
/* Remove this when these make it to the standard system elf.h. */
#define EM_METAG 174
#endif
#ifndef R_METAG_ADDR32
#define R_METAG_ADDR32 2
#endif
#ifndef R_METAG_NONE
#define R_METAG_NONE 3
#endif

Expand Down

0 comments on commit bf0f500

Please sign in to comment.