History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Conflicts are simple overlapping changes.

David S. Miller committed 5 years ago

Commit 5af84df2 parents 090597b 9f42f67371 files · +3766 −3026Browse files

Showing the changes to kernel (7 of 371 files). Show all

Unified · Split

7 files
  1. kernel/bpf/verifier.c +2 −0
  2. kernel/debug/gdbstub.c +1 −1
  3. kernel/rcu/refscale.c +3 −3
  4. kernel/rcu/tasks.h +2 −4
  5. kernel/rcu/tree_stall.h +2 −2
  6. kernel/scftorture.c +3 −3
  7. kernel/trace/trace_events_hist.c +3 −3
kernel/bpf/verifier.c+2−0
@@ -3754,6 +3754,8 @@ continue_func: · 3753 unmodified lines
3754 if (tail_call_reachable)3754 if (tail_call_reachable)
3755 for (j = 0; j < frame; j++)3755 for (j = 0; j < frame; j++)
3756 subprog[ret_prog[j]].tail_call_reachable = true;3756 subprog[ret_prog[j]].tail_call_reachable = true;
3757 if (subprog[0].tail_call_reachable)
3758 env->prog->aux->tail_call_reachable = true;
3757 3759
3758 /* end of for() loop means the last insn of the 'subprog'3760 /* end of for() loop means the last insn of the 'subprog'
3759 * was reached. Doesn't matter whether it was JA or EXIT3761 * was reached. Doesn't matter whether it was JA or EXIT
kernel/debug/gdbstub.c+1−1
@@ -1045,8 +1045,8 @@ int gdb_serial_stub(struct kgdb_state *ks) · 1044 unmodified lines
1045 gdb_cmd_detachkill(ks);1045 gdb_cmd_detachkill(ks);
1046 return DBG_PASS_EVENT;1046 return DBG_PASS_EVENT;
1047 }1047 }
1048#endif
1049 fallthrough;1048 fallthrough;
1049#endif
1050 case 'C': /* Exception passing */1050 case 'C': /* Exception passing */
1051 tmp = gdb_cmd_exception_pass(ks);1051 tmp = gdb_cmd_exception_pass(ks);
1052 if (tmp > 0)1052 if (tmp > 0)
kernel/rcu/refscale.c+3−3
@@ -487,13 +487,13 @@ ref_scale_reader(void *arg) · 486 unmodified lines
487 s64 duration;487 s64 duration;
488 488
489 VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: task started", me);489 VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: task started", me);
490 set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids));490 WARN_ON_ONCE(set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids)));
491 set_user_nice(current, MAX_NICE);491 set_user_nice(current, MAX_NICE);
492 atomic_inc(&n_init);492 atomic_inc(&n_init);
493 if (holdoff)493 if (holdoff)
494 schedule_timeout_interruptible(holdoff * HZ);494 schedule_timeout_interruptible(holdoff * HZ);
495repeat:495repeat:
496 VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: waiting to start next experiment on cpu %d", me, smp_processor_id());496 VERBOSE_SCALEOUT_BATCH("ref_scale_reader %ld: waiting to start next experiment on cpu %d", me, raw_smp_processor_id());
497 497
498 // Wait for signal that this reader can start.498 // Wait for signal that this reader can start.
499 wait_event(rt->wq, (atomic_read(&nreaders_exp) && smp_load_acquire(&rt->start_reader)) ||499 wait_event(rt->wq, (atomic_read(&nreaders_exp) && smp_load_acquire(&rt->start_reader)) ||
@@ -503,7 +503,7 @@ repeat: · 3 unmodified lines
503 goto end;503 goto end;
504 504
505 // Make sure that the CPU is affinitized appropriately during testing.505 // Make sure that the CPU is affinitized appropriately during testing.
506 WARN_ON_ONCE(smp_processor_id() != me);506 WARN_ON_ONCE(raw_smp_processor_id() != me);
507 507
508 WRITE_ONCE(rt->start_reader, 0);508 WRITE_ONCE(rt->start_reader, 0);
509 if (!atomic_dec_return(&n_started))509 if (!atomic_dec_return(&n_started))
kernel/rcu/tasks.h+2−4
@@ -953,10 +953,9 @@ static bool trc_inspect_reader(struct task_struct *t, void *arg) · 952 unmodified lines
953 in_qs = likely(!t->trc_reader_nesting);953 in_qs = likely(!t->trc_reader_nesting);
954 }954 }
955 955
956 // Mark as checked. Because this is called from the grace-period956 // Mark as checked so that the grace-period kthread will
957 // kthread, also remove the task from the holdout list.957 // remove it from the holdout list.
958 t->trc_reader_checked = true;958 t->trc_reader_checked = true;
959 trc_del_holdout(t);
960 959
961 if (in_qs)960 if (in_qs)
962 return true; // Already in quiescent state, done!!!961 return true; // Already in quiescent state, done!!!
@@ -983,7 +982,6 @@ static void trc_wait_for_one_reader(struct task_struct *t, · 20 unmodified lines
983 // The current task had better be in a quiescent state.982 // The current task had better be in a quiescent state.
984 if (t == current) {983 if (t == current) {
985 t->trc_reader_checked = true;984 t->trc_reader_checked = true;
986 trc_del_holdout(t);
987 WARN_ON_ONCE(t->trc_reader_nesting);985 WARN_ON_ONCE(t->trc_reader_nesting);
988 return;986 return;
989 }987 }
kernel/rcu/tree_stall.h+2−2
@@ -795,9 +795,9 @@ void show_rcu_gp_kthreads(void) · 794 unmodified lines
795 jr = j - data_race(rcu_state.gp_req_activity);795 jr = j - data_race(rcu_state.gp_req_activity);
796 js = j - data_race(rcu_state.gp_start);796 js = j - data_race(rcu_state.gp_start);
797 jw = j - data_race(rcu_state.gp_wake_time);797 jw = j - data_race(rcu_state.gp_wake_time);
798 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",798 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",
799 rcu_state.name, gp_state_getname(rcu_state.gp_state),799 rcu_state.name, gp_state_getname(rcu_state.gp_state),
800 rcu_state.gp_state, t ? t->__state : 0x1ffffL, t ? t->rt_priority : 0xffU,800 rcu_state.gp_state, t ? t->__state : 0x1ffff, t ? t->rt_priority : 0xffU,
801 js, ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq),801 js, ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq),
802 (long)data_race(rcu_state.gp_seq),802 (long)data_race(rcu_state.gp_seq),
803 (long)data_race(rcu_get_root()->gp_seq_needed),803 (long)data_race(rcu_get_root()->gp_seq_needed),
kernel/scftorture.c+3−3
@@ -405,15 +405,15 @@ static int scftorture_invoker(void *arg) · 404 unmodified lines
405 405
406 VERBOSE_SCFTORTOUT("scftorture_invoker %d: task started", scfp->cpu);406 VERBOSE_SCFTORTOUT("scftorture_invoker %d: task started", scfp->cpu);
407 cpu = scfp->cpu % nr_cpu_ids;407 cpu = scfp->cpu % nr_cpu_ids;
408 set_cpus_allowed_ptr(current, cpumask_of(cpu));408 WARN_ON_ONCE(set_cpus_allowed_ptr(current, cpumask_of(cpu)));
409 set_user_nice(current, MAX_NICE);409 set_user_nice(current, MAX_NICE);
410 if (holdoff)410 if (holdoff)
411 schedule_timeout_interruptible(holdoff * HZ);411 schedule_timeout_interruptible(holdoff * HZ);
412 412
413 VERBOSE_SCFTORTOUT("scftorture_invoker %d: Waiting for all SCF torturers from cpu %d", scfp->cpu, smp_processor_id());413 VERBOSE_SCFTORTOUT("scftorture_invoker %d: Waiting for all SCF torturers from cpu %d", scfp->cpu, raw_smp_processor_id());
414 414
415 // Make sure that the CPU is affinitized appropriately during testing.415 // Make sure that the CPU is affinitized appropriately during testing.
416 curcpu = smp_processor_id();416 curcpu = raw_smp_processor_id();
417 WARN_ONCE(curcpu != scfp->cpu % nr_cpu_ids,417 WARN_ONCE(curcpu != scfp->cpu % nr_cpu_ids,
418 "%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n",418 "%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n",
419 __func__, scfp->cpu, curcpu, nr_cpu_ids);419 __func__, scfp->cpu, curcpu, nr_cpu_ids);
kernel/trace/trace_events_hist.c+3−3
@@ -1689,7 +1689,9 @@ static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data, · 1688 unmodified lines
1689 if (WARN_ON_ONCE(!field))1689 if (WARN_ON_ONCE(!field))
1690 goto out;1690 goto out;
1691 1691
1692 if (is_string_field(field)) {1692 /* Pointers to strings are just pointers and dangerous to dereference */
1693 if (is_string_field(field) &&
1694 (field->filter_type != FILTER_PTR_STRING)) {
1693 flags |= HIST_FIELD_FL_STRING;1695 flags |= HIST_FIELD_FL_STRING;
1694 1696
1695 hist_field->size = MAX_FILTER_STR_VAL;1697 hist_field->size = MAX_FILTER_STR_VAL;
@@ -4495,8 +4497,6 @@ static inline void add_to_key(char *compound_key, void *key, · 2799 unmodified lines
4495 field = key_field->field;4497 field = key_field->field;
4496 if (field->filter_type == FILTER_DYN_STRING)4498 if (field->filter_type == FILTER_DYN_STRING)
4497 size = *(u32 *)(rec + field->offset) >> 16;4499 size = *(u32 *)(rec + field->offset) >> 16;
4498 else if (field->filter_type == FILTER_PTR_STRING)
4499 size = strlen(key);
4500 else if (field->filter_type == FILTER_STATIC_STRING)4500 else if (field->filter_type == FILTER_STATIC_STRING)
4501 size = field->size;4501 size = field->size;
4502 4502

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t