diff for duplicates of <1531436398.2965.18.camel@intel.com> diff --git a/a/content_digest b/N1/content_digest index 7148c94..f852598 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 <pavel@ucw.cz>Peter\0" + Pavel Machek <pavel@ucw.cz> + Peter Zijlstra <peterz@infradead.org> + Ravi V. Shankar <ravi.v.shankar@intel.com> + " Vedvyas Shanbhogue <vedvyas.shanbhogue@intel.com>\0" "\00:1\0" "b\0" "On Tue, 2018-07-10 at 16:48 -0700, Dave Hansen wrote:\n" @@ -70,4 +73,4 @@ "\n" Ok. -02bfe51ffb507deeed868203e46dda53a5f5871f7bc68a5784f809ac4b0f56c2 +1af5591ff3f5199e951c083055dc164081d9e4f0b65fde5810813a836cdd04c1
diff --git a/a/1.txt b/N2/1.txt index c295876..9bfe095 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -38,3 +38,7 @@ It needs to mention the WRUSS case. > This needs commenting about why is_wruss() is special. Ok. +-- +To unsubscribe from this list: send the line "unsubscribe linux-doc" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N2/content_digest index 7148c94..1c50e2f 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 <pavel@ucw.cz>Peter\0" + Pavel Machek <pavel@ucw.cz> + Peter Zijlstra <peterz@infradead.org> + Ravi V. Shankar <ravi.v.shankar@intel.com> + " Vedvyas Shanbhogue <vedvyas.shanbhogue@intel.com>\0" "\00:1\0" "b\0" "On Tue, 2018-07-10 at 16:48 -0700, Dave Hansen wrote:\n" @@ -68,6 +71,10 @@ "> > \302\240\t\t\302\240*/\n" "> This needs commenting about why is_wruss() is special.\n" "\n" - Ok. + "Ok.\n" + "--\n" + "To unsubscribe from this list: send the line \"unsubscribe linux-doc\" in\n" + "the body of a message to majordomo@vger.kernel.org\n" + More majordomo info at http://vger.kernel.org/majordomo-info.html -02bfe51ffb507deeed868203e46dda53a5f5871f7bc68a5784f809ac4b0f56c2 +9d703f6827afca3fbe07f0b48cf0ae4ad261acf801faf7515be56588283232b1
diff --git a/a/1.txt b/N3/1.txt index c295876..28cfac9 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -2,7 +2,7 @@ On Tue, 2018-07-10 at 16:48 -0700, Dave Hansen wrote: > > > > +/* > > + * WRUSS is a kernel instrcution and but writes to user -> > + * shadow stack memory. When a fault occurs, both +> > + * shadow stack memory.A A When a fault occurs, both > > + * X86_PF_USER and X86_PF_SHSTK are set. > > + */ > > +static int is_wruss(struct pt_regs *regs, unsigned long error_code) @@ -11,30 +11,30 @@ On Tue, 2018-07-10 at 16:48 -0700, Dave Hansen wrote: > > + (X86_PF_USER | X86_PF_SHSTK)) && !user_mode(regs)); > > +} > I thought X86_PF_USER was set based on the mode in which the fault -> occurred. Does this mean that the architecture of this bit is different +> occurred.A A Does this mean that the architecture of this bit is different > now? Yes. -> That seems like something we need to call out if so. It also means we +> That seems like something we need to call out if so.A A It also means we > need to update the SDM because some of the text is wrong. It needs to mention the WRUSS case. > > > -> > static void -> > show_fault_oops(struct pt_regs *regs, unsigned long error_code, -> > unsigned long address) +> > A static void +> > A show_fault_oops(struct pt_regs *regs, unsigned long error_code, +> > A unsigned long address) > > @@ -848,7 +859,7 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code, -> > struct task_struct *tsk = current; -> > -> > /* User mode accesses just cause a SIGSEGV */ +> > A struct task_struct *tsk = current; +> > A +> > A /* User mode accesses just cause a SIGSEGV */ > > - if (error_code & X86_PF_USER) { > > + if ((error_code & X86_PF_USER) && !is_wruss(regs, error_code)) { -> > /* -> > * It's possible to have interrupts off here: -> > */ +> > A /* +> > A A * It's possible to have interrupts off here: +> > A A */ > This needs commenting about why is_wruss() is special. Ok. diff --git a/a/content_digest b/N3/content_digest index 7148c94..c89bcd5 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -26,14 +26,17 @@ Mike Kravetz <mike.kravetz@oracle.com> Nadav Amit <nadav.amit@gmail.com> Oleg Nesterov <oleg@redhat.com> - " Pavel Machek <pavel@ucw.cz>Peter\0" + Pavel Machek <pavel@ucw.cz> + Peter Zijlstra <peterz@infradead.org> + Ravi V. Shankar <ravi.v.shankar@intel.com> + " Vedvyas Shanbhogue <vedvyas.shanbhogue@intel.com>\0" "\00:1\0" "b\0" "On Tue, 2018-07-10 at 16:48 -0700, Dave Hansen wrote:\n" "> > \n" "> > +/*\n" "> > + * WRUSS is a kernel instrcution and but writes to user\n" - "> > + * shadow stack memory.\302\240\302\240When a fault occurs, both\n" + "> > + * shadow stack memory.A A When a fault occurs, both\n" "> > + * X86_PF_USER and X86_PF_SHSTK are set.\n" "> > + */\n" "> > +static int is_wruss(struct pt_regs *regs, unsigned long error_code)\n" @@ -42,32 +45,32 @@ "> > +\t\t(X86_PF_USER | X86_PF_SHSTK)) && !user_mode(regs));\n" "> > +}\n" "> I thought X86_PF_USER was set based on the mode in which the fault\n" - "> occurred.\302\240\302\240Does this mean that the architecture of this bit is different\n" + "> occurred.A A Does this mean that the architecture of this bit is different\n" "> now?\n" "\n" "Yes.\n" "\n" - "> That seems like something we need to call out if so.\302\240\302\240It also means we\n" + "> That seems like something we need to call out if so.A A It also means we\n" "> need to update the SDM because some of the text is wrong.\n" "\n" "It needs to mention the WRUSS case.\n" "\n" "> \n" "> > \n" - "> > \302\240static void\n" - "> > \302\240show_fault_oops(struct pt_regs *regs, unsigned long error_code,\n" - "> > \302\240\t\tunsigned long address)\n" + "> > A static void\n" + "> > A show_fault_oops(struct pt_regs *regs, unsigned long error_code,\n" + "> > A \t\tunsigned long address)\n" "> > @@ -848,7 +859,7 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,\n" - "> > \302\240\tstruct task_struct *tsk = current;\n" - "> > \302\240\n" - "> > \302\240\t/* User mode accesses just cause a SIGSEGV */\n" + "> > A \tstruct task_struct *tsk = current;\n" + "> > A \n" + "> > A \t/* User mode accesses just cause a SIGSEGV */\n" "> > -\tif (error_code & X86_PF_USER) {\n" "> > +\tif ((error_code & X86_PF_USER) && !is_wruss(regs, error_code)) {\n" - "> > \302\240\t\t/*\n" - "> > \302\240\t\t\302\240* It's possible to have interrupts off here:\n" - "> > \302\240\t\t\302\240*/\n" + "> > A \t\t/*\n" + "> > A \t\tA * It's possible to have interrupts off here:\n" + "> > A \t\tA */\n" "> This needs commenting about why is_wruss() is special.\n" "\n" Ok. -02bfe51ffb507deeed868203e46dda53a5f5871f7bc68a5784f809ac4b0f56c2 +6ca5e7a68d70d146ec969cb002efbb44684f89bbc5f5db78f43e29264045704e
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.