diff for duplicates of <1531503430.11680.2.camel@intel.com> diff --git a/a/content_digest b/N1/content_digest index 164cbcd..9ae2cb9 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 Fri, 2018-07-13 at 05:12 -0700, Dave Hansen wrote:\n" @@ -77,4 +80,4 @@ "\n" Yu-cheng -73b298e3212b6d155013f590720ef1b161dbd903b2e65e002f3a4c9d7a5c6281 +922c642d5ec02edcb1c8f6afa6ae4abc5a554ff5d39fbe66827044fe0a7b6807
diff --git a/a/1.txt b/N2/1.txt index 8f8bb87..194a524 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -45,3 +45,8 @@ On Fri, 2018-07-13 at 05:12 -0700, Dave Hansen wrote: Agree. I will change that. Yu-cheng + +-- +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 164cbcd..466e3eb 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 Fri, 2018-07-13 at 05:12 -0700, Dave Hansen wrote:\n" @@ -75,6 +78,11 @@ "\n" "Agree. \302\240I will change that.\n" "\n" - Yu-cheng + "Yu-cheng\n" + "\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 -73b298e3212b6d155013f590720ef1b161dbd903b2e65e002f3a4c9d7a5c6281 +ed5b24f3acebd21a0bbd69c38670d53430da21a10095ad80c2dbf9fddeced851
diff --git a/a/1.txt b/N3/1.txt index 8f8bb87..bcf5eaa 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -7,41 +7,41 @@ On Fri, 2018-07-13 at 05:12 -0700, Dave Hansen wrote: > > + (X86_PF_USER | X86_PF_SHSTK)) && !user_mode(regs)); > > +} > > + -> > 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 */ > Please don't do it this way. > > We have two styles of page fault: > 1. User page faults: find a VMA, try to handle (allocate memory et al.), -> kill process if we can't handle. +> A A A kill process if we can't handle. > 2. Kernel page faults: search for a *discrete* set of conditions that -> can be handled, including faults in instructions marked in exception -> tables. +> A A A can be handled, including faults in instructions marked in exception +> A A A tables. > -> X86_PF_USER *means*: do user page fault handling. In the places where +> X86_PF_USER *means*: do user page fault handling.A A In the places where > the hardware doesn't set it, but we still want user page fault handling, > we manually set it, like this where we "downgrade" an implicit > supervisor access to a user access: > -> if (user_mode(regs)) { -> local_irq_enable(); -> error_code |= X86_PF_USER; -> flags |= FAULT_FLAG_USER; +> A 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 A local_irq_enable(); +> A A A A A A A A A A A A A A A A error_code |= X86_PF_USER; +> A A A A A A A A A A A A A A A A flags |= FAULT_FLAG_USER; > > So, just please *clear* X86_PF_USER if !user_mode(regs) and X86_PF_SS. > We do not want user page fault handling, thus we should not keep the bit > set. -Agree. I will change that. +Agree. A I will change that. Yu-cheng diff --git a/a/content_digest b/N3/content_digest index 164cbcd..fecbfbb 100644 --- a/a/content_digest +++ b/N3/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 Fri, 2018-07-13 at 05:12 -0700, Dave Hansen wrote:\n" @@ -38,43 +41,43 @@ "> > +\t\t(X86_PF_USER | X86_PF_SHSTK)) && !user_mode(regs));\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" "> Please don't do it this way.\n" "> \n" "> We have two styles of page fault:\n" "> 1. User page faults: find a VMA, try to handle (allocate memory et al.),\n" - "> \302\240\302\240\302\240kill process if we can't handle.\n" + "> A A A kill process if we can't handle.\n" "> 2. Kernel page faults: search for a *discrete* set of conditions that\n" - "> \302\240\302\240\302\240can be handled, including faults in instructions marked in exception\n" - "> \302\240\302\240\302\240tables.\n" + "> A A A can be handled, including faults in instructions marked in exception\n" + "> A A A tables.\n" "> \n" - "> X86_PF_USER *means*: do user page fault handling.\302\240\302\240In the places where\n" + "> X86_PF_USER *means*: do user page fault handling.A A In the places where\n" "> the hardware doesn't set it, but we still want user page fault handling,\n" "> we manually set it, like this where we \"downgrade\" an implicit\n" "> supervisor access to a user access:\n" "> \n" - "> \302\240\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\240\302\240local_irq_enable();\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\240error_code |= X86_PF_USER;\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\240flags |= FAULT_FLAG_USER;\n" + "> A 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 A local_irq_enable();\n" + "> A A A A A A A A A A A A A A A A error_code |= X86_PF_USER;\n" + "> A A A A A A A A A A A A A A A A flags |= FAULT_FLAG_USER;\n" "> \n" "> So, just please *clear* X86_PF_USER if !user_mode(regs) and X86_PF_SS.\n" "> We do not want user page fault handling, thus we should not keep the bit\n" "> set.\n" "\n" - "Agree. \302\240I will change that.\n" + "Agree. A I will change that.\n" "\n" Yu-cheng -73b298e3212b6d155013f590720ef1b161dbd903b2e65e002f3a4c9d7a5c6281 +721a247564a504472c190731c03a2f6a3a5231a3ac1290d485d4b01ab958e793
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.