diff for duplicates of <1535732418.3789.7.camel@intel.com> diff --git a/a/content_digest b/N1/content_digest index da16d00..6bceb4e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -26,7 +26,10 @@ Mike Kravetz <mike.kravetz@oracle.com> Nadav Amit <nadav.amit@gmail.com> Oleg Nesterov <oleg@redhat.com> - " Pavel Machek <pave>\0" + Pavel Machek <pavel@ucw.cz> + Peter Zijlstra <peterz@infradead.org> + ravi.v.shankar@intel.com + " vedvyas.shanbhogue@intel.com\0" "\00:1\0" "b\0" "On Fri, 2018-08-31 at 17:01 +0200, Jann Horn wrote:\n" @@ -90,4 +93,4 @@ "\n" I will change it. -850c369f83c8dd3c123dee15bbb389e949bcca171967009348e89b6351c142d1 +dc8d8c416b999efe7c528741ba4b9bd24ff93200a99cc40399abce32f0a4cd5d
diff --git a/a/1.txt b/N2/1.txt index fe485f0..bbbc0a7 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -17,43 +17,43 @@ I will fix it. > > +dotraplinkage void > > +do_control_protection(struct pt_regs *regs, long error_code) > > +{ -> > + struct task_struct *tsk; +> > +A A A A A A A struct task_struct *tsk; > > + -> > + RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't +> > +A A A A A A A RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't > > wake RCU"); -> > + if (notify_die(DIE_TRAP, "control protection fault", regs, -> > + error_code, X86_TRAP_CP, SIGSEGV) == +> > +A A A A A A A if (notify_die(DIE_TRAP, "control protection fault", regs, +> > +A A A A A A A A A A A A A A A A A A A A A A error_code, X86_TRAP_CP, SIGSEGV) == > > NOTIFY_STOP) -> > + return; -> > + cond_local_irq_enable(regs); +> > +A A A A A A A A A A A A A A A return; +> > +A A A A A A A cond_local_irq_enable(regs); > > + -> > + if (!user_mode(regs)) -> > + die("kernel control protection fault", regs, +> > +A A A A A A A if (!user_mode(regs)) +> > +A A A A A A A A A A A A A A A die("kernel control protection fault", regs, > > error_code); > > + -> > + if (!static_cpu_has(X86_FEATURE_SHSTK) && -> > + !static_cpu_has(X86_FEATURE_IBT)) -> > + WARN_ONCE(1, "CET is disabled but got control " -> > + "protection fault\n"); +> > +A A A A A A A if (!static_cpu_has(X86_FEATURE_SHSTK) && +> > +A A A A A A A A A A A !static_cpu_has(X86_FEATURE_IBT)) +> > +A A A A A A A A A A A A A A A WARN_ONCE(1, "CET is disabled but got control " +> > +A A A A A A A A A A A A A A A A A A A A A A A A A "protection fault\n"); > > + -> > + tsk = current; -> > + tsk->thread.error_code = error_code; -> > + tsk->thread.trap_nr = X86_TRAP_CP; +> > +A A A A A A A tsk = current; +> > +A A A A A A A tsk->thread.error_code = error_code; +> > +A A A A A A A tsk->thread.trap_nr = X86_TRAP_CP; > > + -> > + if (show_unhandled_signals && unhandled_signal(tsk, +> > +A A A A A A A if (show_unhandled_signals && unhandled_signal(tsk, > > SIGSEGV) && -> > + printk_ratelimit()) { -> > + unsigned int max_err; +> > +A A A A A A A A A A A printk_ratelimit()) { +> > +A A A A A A A A A A A A A A A unsigned int max_err; > > + -> > + max_err = ARRAY_SIZE(control_protection_err) - 1; -> > + if ((error_code < 0) || (error_code > max_err)) -> > + error_code = 0; -> > + pr_info("%s[%d] control protection ip:%lx sp:%lx +> > +A A A A A A A A A A A A A A A max_err = ARRAY_SIZE(control_protection_err) - 1; +> > +A A A A A A A A A A A A A A A if ((error_code < 0) || (error_code > max_err)) +> > +A A A A A A A A A A A A A A A A A A A A A A A error_code = 0; +> > +A A A A A A A A A A A A A A A pr_info("%s[%d] control protection ip:%lx sp:%lx > > error:%lx(%s)", -> > + tsk->comm, task_pid_nr(tsk), -> > + regs->ip, regs->sp, error_code, -> > + control_protection_err[error_code]); -> > + print_vma_addr(" in ", regs->ip); +> > +A A A A A A A A A A A A A A A A A A A A A A A tsk->comm, task_pid_nr(tsk), +> > +A A A A A A A A A A A A A A A A A A A A A A A regs->ip, regs->sp, error_code, +> > +A A A A A A A A A A A A A A A A A A A A A A A control_protection_err[error_code]); +> > +A A A A A A A A A A A A A A A print_vma_addr(" in ", regs->ip); > Shouldn't this be using KERN_CONT, like other callers of > print_vma_addr(), to get the desired output? diff --git a/a/content_digest b/N2/content_digest index da16d00..fa1f4ba 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -26,7 +26,10 @@ Mike Kravetz <mike.kravetz@oracle.com> Nadav Amit <nadav.amit@gmail.com> Oleg Nesterov <oleg@redhat.com> - " Pavel Machek <pave>\0" + Pavel Machek <pavel@ucw.cz> + Peter Zijlstra <peterz@infradead.org> + ravi.v.shankar@intel.com + " vedvyas.shanbhogue@intel.com\0" "\00:1\0" "b\0" "On Fri, 2018-08-31 at 17:01 +0200, Jann Horn wrote:\n" @@ -48,46 +51,46 @@ "> > +dotraplinkage void\n" "> > +do_control_protection(struct pt_regs *regs, long error_code)\n" "> > +{\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct task_struct *tsk;\n" + "> > +A A A A A A A struct task_struct *tsk;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240RCU_LOCKDEP_WARN(!rcu_is_watching(), \"entry code didn't\n" + "> > +A A A A A A A RCU_LOCKDEP_WARN(!rcu_is_watching(), \"entry code didn't\n" "> > wake RCU\");\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (notify_die(DIE_TRAP, \"control protection fault\", regs,\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240error_code, X86_TRAP_CP, SIGSEGV) ==\n" + "> > +A A A A A A A if (notify_die(DIE_TRAP, \"control protection fault\", regs,\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A error_code, X86_TRAP_CP, SIGSEGV) ==\n" "> > NOTIFY_STOP)\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240cond_local_irq_enable(regs);\n" + "> > +A A A A A A A A A A A A A A A return;\n" + "> > +A A A A A A A cond_local_irq_enable(regs);\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!user_mode(regs))\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240die(\"kernel control protection fault\", regs,\n" + "> > +A A A A A A A if (!user_mode(regs))\n" + "> > +A A A A A A A A A A A A A A A die(\"kernel control protection fault\", regs,\n" "> > error_code);\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!static_cpu_has(X86_FEATURE_SHSTK) &&\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240!static_cpu_has(X86_FEATURE_IBT))\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240WARN_ONCE(1, \"CET is disabled but got control \"\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\"protection fault\\n\");\n" + "> > +A A A A A A A if (!static_cpu_has(X86_FEATURE_SHSTK) &&\n" + "> > +A A A A A A A A A A A !static_cpu_has(X86_FEATURE_IBT))\n" + "> > +A A A A A A A A A A A A A A A WARN_ONCE(1, \"CET is disabled but got control \"\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A A A A \"protection fault\\n\");\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240tsk = current;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240tsk->thread.error_code = error_code;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240tsk->thread.trap_nr = X86_TRAP_CP;\n" + "> > +A A A A A A A tsk = current;\n" + "> > +A A A A A A A tsk->thread.error_code = error_code;\n" + "> > +A A A A A A A tsk->thread.trap_nr = X86_TRAP_CP;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (show_unhandled_signals && unhandled_signal(tsk,\n" + "> > +A A A A A A A if (show_unhandled_signals && unhandled_signal(tsk,\n" "> > SIGSEGV) &&\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240printk_ratelimit()) {\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned int max_err;\n" + "> > +A A A A A A A A A A A printk_ratelimit()) {\n" + "> > +A A A A A A A A A A A A A A A unsigned int max_err;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240max_err = ARRAY_SIZE(control_protection_err) - 1;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if ((error_code < 0) || (error_code > max_err))\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240error_code = 0;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_info(\"%s[%d] control protection ip:%lx sp:%lx\n" + "> > +A A A A A A A A A A A A A A A max_err = ARRAY_SIZE(control_protection_err) - 1;\n" + "> > +A A A A A A A A A A A A A A A if ((error_code < 0) || (error_code > max_err))\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A A error_code = 0;\n" + "> > +A A A A A A A A A A A A A A A pr_info(\"%s[%d] control protection ip:%lx sp:%lx\n" "> > error:%lx(%s)\",\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240tsk->comm, task_pid_nr(tsk),\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240regs->ip, regs->sp, error_code,\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240control_protection_err[error_code]);\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240print_vma_addr(\" in \", regs->ip);\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A A tsk->comm, task_pid_nr(tsk),\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A A regs->ip, regs->sp, error_code,\n" + "> > +A A A A A A A A A A A A A A A A A A A A A A A control_protection_err[error_code]);\n" + "> > +A A A A A A A A A A A A A A A print_vma_addr(\" in \", regs->ip);\n" "> Shouldn't this be using KERN_CONT, like other callers of\n" "> print_vma_addr(), to get the desired output?\n" "\n" I will change it. -850c369f83c8dd3c123dee15bbb389e949bcca171967009348e89b6351c142d1 +1274c4e5f0e5351d2c2bbbeef30d475c4832e6fafe67e6c03e38de020c3f9724
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.