Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Conflicts are simple overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -3754,6 +3754,8 @@ continue_func:
|
||||
if (tail_call_reachable)
|
||||
for (j = 0; j < frame; j++)
|
||||
subprog[ret_prog[j]].tail_call_reachable = true;
|
||||
if (subprog[0].tail_call_reachable)
|
||||
env->prog->aux->tail_call_reachable = true;
|
||||
|
||||
/* end of for() loop means the last insn of the 'subprog'
|
||||
* was reached. Doesn't matter whether it was JA or EXIT
|
||||
|
||||
@@ -1045,8 +1045,8 @@ int gdb_serial_stub(struct kgdb_state *ks)
|
||||
gdb_cmd_detachkill(ks);
|
||||
return DBG_PASS_EVENT;
|
||||
}
|
||||
#endif
|
||||
fallthrough;
|
||||
#endif
|
||||
case 'C': /* Exception passing */
|
||||
tmp = gdb_cmd_exception_pass(ks);
|
||||
if (tmp > 0)
|
||||
|
||||
@@ -487,13 +487,13 @@ ref_scale_reader(void *arg)
|
||||
s64 duration;
|
||||
|
||||
VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: task started", me);
|
||||
set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids));
|
||||
WARN_ON_ONCE(set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids)));
|
||||
set_user_nice(current, MAX_NICE);
|
||||
atomic_inc(&n_init);
|
||||
if (holdoff)
|
||||
schedule_timeout_interruptible(holdoff * HZ);
|
||||
repeat:
|
||||
VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: waiting to start next experiment on cpu %d", me, smp_processor_id());
|
||||
VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: waiting to start next experiment on cpu %d", me, raw_smp_processor_id());
|
||||
|
||||
// Wait for signal that this reader can start.
|
||||
wait_event(rt->wq, (atomic_read(&nreaders_exp) && smp_load_acquire(&rt->start_reader)) ||
|
||||
@@ -503,7 +503,7 @@ repeat:
|
||||
goto end;
|
||||
|
||||
// Make sure that the CPU is affinitized appropriately during testing.
|
||||
WARN_ON_ONCE(smp_processor_id() != me);
|
||||
WARN_ON_ONCE(raw_smp_processor_id() != me);
|
||||
|
||||
WRITE_ONCE(rt->start_reader, 0);
|
||||
if (!atomic_dec_return(&n_started))
|
||||
|
||||
+2
-4
@@ -953,10 +953,9 @@ static bool trc_inspect_reader(struct task_struct *t, void *arg)
|
||||
in_qs = likely(!t->trc_reader_nesting);
|
||||
}
|
||||
|
||||
// Mark as checked. Because this is called from the grace-period
|
||||
// kthread, also remove the task from the holdout list.
|
||||
// Mark as checked so that the grace-period kthread will
|
||||
// remove it from the holdout list.
|
||||
t->trc_reader_checked = true;
|
||||
trc_del_holdout(t);
|
||||
|
||||
if (in_qs)
|
||||
return true; // Already in quiescent state, done!!!
|
||||
@@ -983,7 +982,6 @@ static void trc_wait_for_one_reader(struct task_struct *t,
|
||||
// The current task had better be in a quiescent state.
|
||||
if (t == current) {
|
||||
t->trc_reader_checked = true;
|
||||
trc_del_holdout(t);
|
||||
WARN_ON_ONCE(t->trc_reader_nesting);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -795,9 +795,9 @@ void show_rcu_gp_kthreads(void)
|
||||
jr = j - data_race(rcu_state.gp_req_activity);
|
||||
js = j - data_race(rcu_state.gp_start);
|
||||
jw = j - data_race(rcu_state.gp_wake_time);
|
||||
pr_info("%s: wait state: %s(%d) ->state: %#lx ->rt_priority %u delta ->gp_start %lu ->gp_activity %lu ->gp_req_activity %lu ->gp_wake_time %lu ->gp_wake_seq %ld ->gp_seq %ld ->gp_seq_needed %ld ->gp_max %lu ->gp_flags %#x\n",
|
||||
pr_info("%s: wait state: %s(%d) ->state: %#x ->rt_priority %u delta ->gp_start %lu ->gp_activity %lu ->gp_req_activity %lu ->gp_wake_time %lu ->gp_wake_seq %ld ->gp_seq %ld ->gp_seq_needed %ld ->gp_max %lu ->gp_flags %#x\n",
|
||||
rcu_state.name, gp_state_getname(rcu_state.gp_state),
|
||||
rcu_state.gp_state, t ? t->__state : 0x1ffffL, t ? t->rt_priority : 0xffU,
|
||||
rcu_state.gp_state, t ? t->__state : 0x1ffff, t ? t->rt_priority : 0xffU,
|
||||
js, ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq),
|
||||
(long)data_race(rcu_state.gp_seq),
|
||||
(long)data_race(rcu_get_root()->gp_seq_needed),
|
||||
|
||||
+3
-3
@@ -405,15 +405,15 @@ static int scftorture_invoker(void *arg)
|
||||
|
||||
VERBOSE_SCFTORTOUT("scftorture_invoker %d: task started", scfp->cpu);
|
||||
cpu = scfp->cpu % nr_cpu_ids;
|
||||
set_cpus_allowed_ptr(current, cpumask_of(cpu));
|
||||
WARN_ON_ONCE(set_cpus_allowed_ptr(current, cpumask_of(cpu)));
|
||||
set_user_nice(current, MAX_NICE);
|
||||
if (holdoff)
|
||||
schedule_timeout_interruptible(holdoff * HZ);
|
||||
|
||||
VERBOSE_SCFTORTOUT("scftorture_invoker %d: Waiting for all SCF torturers from cpu %d", scfp->cpu, smp_processor_id());
|
||||
VERBOSE_SCFTORTOUT("scftorture_invoker %d: Waiting for all SCF torturers from cpu %d", scfp->cpu, raw_smp_processor_id());
|
||||
|
||||
// Make sure that the CPU is affinitized appropriately during testing.
|
||||
curcpu = smp_processor_id();
|
||||
curcpu = raw_smp_processor_id();
|
||||
WARN_ONCE(curcpu != scfp->cpu % nr_cpu_ids,
|
||||
"%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n",
|
||||
__func__, scfp->cpu, curcpu, nr_cpu_ids);
|
||||
|
||||
@@ -1689,7 +1689,9 @@ static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data,
|
||||
if (WARN_ON_ONCE(!field))
|
||||
goto out;
|
||||
|
||||
if (is_string_field(field)) {
|
||||
/* Pointers to strings are just pointers and dangerous to dereference */
|
||||
if (is_string_field(field) &&
|
||||
(field->filter_type != FILTER_PTR_STRING)) {
|
||||
flags |= HIST_FIELD_FL_STRING;
|
||||
|
||||
hist_field->size = MAX_FILTER_STR_VAL;
|
||||
@@ -4495,8 +4497,6 @@ static inline void add_to_key(char *compound_key, void *key,
|
||||
field = key_field->field;
|
||||
if (field->filter_type == FILTER_DYN_STRING)
|
||||
size = *(u32 *)(rec + field->offset) >> 16;
|
||||
else if (field->filter_type == FILTER_PTR_STRING)
|
||||
size = strlen(key);
|
||||
else if (field->filter_type == FILTER_STATIC_STRING)
|
||||
size = field->size;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user