Conflicts are simple overlapping changes.
Showing the changes to kernel (7 of 371 files). Show all
Unified · Split
| @@ -3754,6 +3754,8 @@ continue_func: · 3753 unmodified lines | ||
| 3754 | 3754 | if (tail_call_reachable) |
| 3755 | 3755 | for (j = 0; j < frame; j++) |
| 3756 | 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 | 3760 | /* end of for() loop means the last insn of the 'subprog' |
| 3759 | 3761 | * was reached. Doesn't matter whether it was JA or EXIT |
| @@ -1045,8 +1045,8 @@ int gdb_serial_stub(struct kgdb_state *ks) · 1044 unmodified lines | ||
| 1045 | 1045 | gdb_cmd_detachkill(ks); |
| 1046 | 1046 | return DBG_PASS_EVENT; |
| 1047 | 1047 | } |
| 1048 | −#endif | |
| 1049 | 1048 | fallthrough; |
| 1049 | +#endif | |
| 1050 | 1050 | case 'C': /* Exception passing */ |
| 1051 | 1051 | tmp = gdb_cmd_exception_pass(ks); |
| 1052 | 1052 | if (tmp > 0) |
| @@ -487,13 +487,13 @@ ref_scale_reader(void *arg) · 486 unmodified lines | ||
| 487 | 487 | s64 duration; |
| 488 | 488 | |
| 489 | 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 | 491 | set_user_nice(current, MAX_NICE); |
| 492 | 492 | atomic_inc(&n_init); |
| 493 | 493 | if (holdoff) |
| 494 | 494 | schedule_timeout_interruptible(holdoff * HZ); |
| 495 | 495 | repeat: |
| 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 | 498 | // Wait for signal that this reader can start. |
| 499 | 499 | wait_event(rt->wq, (atomic_read(&nreaders_exp) && smp_load_acquire(&rt->start_reader)) || |
| @@ -503,7 +503,7 @@ repeat: · 3 unmodified lines | ||
| 503 | 503 | goto end; |
| 504 | 504 | |
| 505 | 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 | 508 | WRITE_ONCE(rt->start_reader, 0); |
| 509 | 509 | if (!atomic_dec_return(&n_started)) |
| @@ -953,10 +953,9 @@ static bool trc_inspect_reader(struct task_struct *t, void *arg) · 952 unmodified lines | ||
| 953 | 953 | in_qs = likely(!t->trc_reader_nesting); |
| 954 | 954 | } |
| 955 | 955 | |
| 956 | − // Mark as checked. Because this is called from the grace-period | |
| 957 | − // kthread, also remove the task from the holdout list. | |
| 956 | + // Mark as checked so that the grace-period kthread will | |
| 957 | + // remove it from the holdout list. | |
| 958 | 958 | t->trc_reader_checked = true; |
| 959 | − trc_del_holdout(t); | |
| 960 | 959 | |
| 961 | 960 | if (in_qs) |
| 962 | 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 | 982 | // The current task had better be in a quiescent state. |
| 984 | 983 | if (t == current) { |
| 985 | 984 | t->trc_reader_checked = true; |
| 986 | − trc_del_holdout(t); | |
| 987 | 985 | WARN_ON_ONCE(t->trc_reader_nesting); |
| 988 | 986 | return; |
| 989 | 987 | } |
| @@ -795,9 +795,9 @@ void show_rcu_gp_kthreads(void) · 794 unmodified lines | ||
| 795 | 795 | jr = j - data_race(rcu_state.gp_req_activity); |
| 796 | 796 | js = j - data_race(rcu_state.gp_start); |
| 797 | 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 | 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 | 801 | js, ja, jr, jw, (long)data_race(rcu_state.gp_wake_seq), |
| 802 | 802 | (long)data_race(rcu_state.gp_seq), |
| 803 | 803 | (long)data_race(rcu_get_root()->gp_seq_needed), |
| @@ -405,15 +405,15 @@ static int scftorture_invoker(void *arg) · 404 unmodified lines | ||
| 405 | 405 | |
| 406 | 406 | VERBOSE_SCFTORTOUT("scftorture_invoker %d: task started", scfp->cpu); |
| 407 | 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 | 409 | set_user_nice(current, MAX_NICE); |
| 410 | 410 | if (holdoff) |
| 411 | 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 | 415 | // Make sure that the CPU is affinitized appropriately during testing. |
| 416 | − curcpu = smp_processor_id(); | |
| 416 | + curcpu = raw_smp_processor_id(); | |
| 417 | 417 | WARN_ONCE(curcpu != scfp->cpu % nr_cpu_ids, |
| 418 | 418 | "%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n", |
| 419 | 419 | __func__, scfp->cpu, curcpu, nr_cpu_ids); |
| @@ -1689,7 +1689,9 @@ static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data, · 1688 unmodified lines | ||
| 1689 | 1689 | if (WARN_ON_ONCE(!field)) |
| 1690 | 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 | 1695 | flags |= HIST_FIELD_FL_STRING; |
| 1694 | 1696 | |
| 1695 | 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 | 4497 | field = key_field->field; |
| 4496 | 4498 | if (field->filter_type == FILTER_DYN_STRING) |
| 4497 | 4499 | size = *(u32 *)(rec + field->offset) >> 16; |
| 4498 | − else if (field->filter_type == FILTER_PTR_STRING) | |
| 4499 | − size = strlen(key); | |
| 4500 | 4500 | else if (field->filter_type == FILTER_STATIC_STRING) |
| 4501 | 4501 | size = field->size; |
| 4502 | 4502 | |