Merge tag 'v3.10.85' into update
This is the 3.10.85 stable release
This commit is contained in:
@@ -434,6 +434,7 @@ enum {
|
||||
|
||||
TRACE_CONTROL_BIT,
|
||||
|
||||
TRACE_BRANCH_BIT,
|
||||
/*
|
||||
* Abuse of the trace_recursion.
|
||||
* As we need a way to maintain state if we are tracing the function
|
||||
|
||||
@@ -37,9 +37,12 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)
|
||||
struct trace_branch *entry;
|
||||
struct ring_buffer *buffer;
|
||||
unsigned long flags;
|
||||
int cpu, pc;
|
||||
int pc;
|
||||
const char *p;
|
||||
|
||||
if (current->trace_recursion & TRACE_BRANCH_BIT)
|
||||
return;
|
||||
|
||||
/*
|
||||
* I would love to save just the ftrace_likely_data pointer, but
|
||||
* this code can also be used by modules. Ugly things can happen
|
||||
@@ -50,10 +53,10 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)
|
||||
if (unlikely(!tr))
|
||||
return;
|
||||
|
||||
local_irq_save(flags);
|
||||
cpu = raw_smp_processor_id();
|
||||
data = per_cpu_ptr(tr->trace_buffer.data, cpu);
|
||||
if (atomic_inc_return(&data->disabled) != 1)
|
||||
raw_local_irq_save(flags);
|
||||
current->trace_recursion |= TRACE_BRANCH_BIT;
|
||||
data = this_cpu_ptr(tr->trace_buffer.data);
|
||||
if (atomic_read(&data->disabled))
|
||||
goto out;
|
||||
|
||||
pc = preempt_count();
|
||||
@@ -82,8 +85,8 @@ probe_likely_condition(struct ftrace_branch_data *f, int val, int expect)
|
||||
__buffer_unlock_commit(buffer, event);
|
||||
|
||||
out:
|
||||
atomic_dec(&data->disabled);
|
||||
local_irq_restore(flags);
|
||||
current->trace_recursion &= ~TRACE_BRANCH_BIT;
|
||||
raw_local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline
|
||||
|
||||
@@ -1015,6 +1015,9 @@ static void parse_init(struct filter_parse_state *ps,
|
||||
|
||||
static char infix_next(struct filter_parse_state *ps)
|
||||
{
|
||||
if (!ps->infix.cnt)
|
||||
return 0;
|
||||
|
||||
ps->infix.cnt--;
|
||||
|
||||
return ps->infix.string[ps->infix.tail++];
|
||||
@@ -1030,6 +1033,9 @@ static char infix_peek(struct filter_parse_state *ps)
|
||||
|
||||
static void infix_advance(struct filter_parse_state *ps)
|
||||
{
|
||||
if (!ps->infix.cnt)
|
||||
return;
|
||||
|
||||
ps->infix.cnt--;
|
||||
ps->infix.tail++;
|
||||
}
|
||||
@@ -1342,7 +1348,9 @@ static int check_preds(struct filter_parse_state *ps)
|
||||
continue;
|
||||
}
|
||||
n_normal_preds++;
|
||||
WARN_ON_ONCE(cnt < 0);
|
||||
/* all ops should have operands */
|
||||
if (cnt < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (cnt != 1 || !n_normal_preds || n_logical_preds >= n_normal_preds) {
|
||||
|
||||
Reference in New Issue
Block a user