diff for duplicates of <1535752180.31230.4.camel@intel.com>
diff --git a/a/content_digest b/N1/content_digest
index 9001c88..a88c925 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -47,11 +47,7 @@
" Mike Kravetz <mike.kravetz\@oracle.com>",
" Nadav Amit <nadav.amit\@gmail.com>",
" Oleg Nesterov <oleg\@redhat.com>",
- " Pavel Machek <pavel\@ucw.cz>",
- " Peter Zijlstra <peterz\@infradead.org>",
- " Ravi V. Shankar <ravi.v.shankar\@intel.com>",
- " Shanbhogue",
- " Vedvyas <vedvyas.shanbhogue\@intel.com>\0"
+ " Pavel Machek <pavel\@ucw.cz>\0"
]
[
"\0000:1\0"
@@ -145,4 +141,4 @@
"}"
]
-f537d77d8294e6ee7f99b462cea60cfccda52c074fee78d6e97f46f3337a4297
+b7517239d06aa30caff223d345eb026f22bb632b7e6456e4889ba9b9fdc9d45d
diff --git a/a/1.txt b/N2/1.txt
index 42760aa..3b6b401 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -12,12 +12,12 @@ On Thu, 2018-08-30 at 09:22 -0700, Yu-cheng Yu wrote:
> > > >
> > > >
> > > > WRUSS is a new kernel-mode instruction but writes directly
-> > > > to user shadow stack memory. This is used to construct
+> > > > to user shadow stack memory.A A This is used to construct
> > > > a return address on the shadow stack for the signal
> > > > handler.
> > > >
> > > > This instruction can fault if the user shadow stack is
-> > > > invalid shadow stack memory. In that case, the kernel does
+> > > > invalid shadow stack memory.A A In that case, the kernel does
> > > > fixup.
> > > >
> > > > Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com>
@@ -27,16 +27,16 @@ On Thu, 2018-08-30 at 09:22 -0700, Yu-cheng Yu wrote:
> > > > +static inline int write_user_shstk_64(unsigned long addr,
> > > > unsigned long val)
> > > > +{
-> > > > + int err = 0;
+> > > > +A A A A A A A int err = 0;
> > > > +
-> > > > + asm volatile("1: wrussq %1, (%0)\n"
-> > > > + "2:\n"
-> > > > + _ASM_EXTABLE_HANDLE(1b, 2b,
+> > > > +A A A A A A A asm volatile("1: wrussq %1, (%0)\n"
+> > > > +A A A A A A A A A A A A A A A A A A A A "2:\n"
+> > > > +A A A A A A A A A A A A A A A A A A A A _ASM_EXTABLE_HANDLE(1b, 2b,
> > > > ex_handler_wruss)
-> > > > + :
-> > > > + : "r" (addr), "r" (val));
+> > > > +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 A A A A A A A A A A A A A A A : "r" (addr), "r" (val));
> > > > +
-> > > > + return err;
+> > > > +A A A A A A A return err;
> > > > +}
> > > What's up with "err"? You set it to zero, and then you return
> > > it,
@@ -47,12 +47,12 @@ On Thu, 2018-08-30 at 09:22 -0700, Yu-cheng Yu wrote:
> > > >
> > > > +__visible bool ex_handler_wruss(const struct
> > > > exception_table_entry *fixup,
-> > > > + struct pt_regs *regs, int
+> > > > +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 A A A A A A struct pt_regs *regs, int
> > > > trapnr)
> > > > +{
-> > > > + regs->ip = ex_fixup_addr(fixup);
-> > > > + regs->ax = -1;
-> > > > + return true;
+> > > > +A A A A A A A regs->ip = ex_fixup_addr(fixup);
+> > > > +A A A A A A A regs->ax = -1;
+> > > > +A A A A A A A return true;
> > > > +}
> > > And here you just write into regs->ax, but your "asm volatile"
> > > doesn't
@@ -60,22 +60,22 @@ On Thu, 2018-08-30 at 09:22 -0700, Yu-cheng Yu wrote:
> > >
> > > I think you probably want to add something like an explicit
> > > `"+&a"(err)` output to the asm statements.
-> > We require asm goto support these days. How about using
-> > that? You
+> > We require asm goto support these days.A A How about using
+> > that?A A You
> > won't even need a special exception handler.
-Maybe something like this? It looks simple now.
+Maybe something like this? A It looks simple now.
static inline int write_user_shstk_64(unsigned long addr, unsigned
long val)
{
asm_volatile_goto("wrussq %1, (%0)\n"
- "jmp %l[ok]\n"
- ".section .fixup,\"ax\"n"
- "jmp %l[fail]\n"
- ".previous\n"
- :: "r" (addr), "r" (val)
- :: ok, fail);
+ A A A A A "jmp %l[ok]\n"
+ A A A A A ".section .fixup,\"ax\"n"
+ A A A A A "jmp %l[fail]\n"
+ A A A A A ".previous\n"
+ A A A A A :: "r" (addr), "r" (val)
+ A A A A A :: ok, fail);
ok:
return 0;
fail:
diff --git a/a/content_digest b/N2/content_digest
index 9001c88..23b3d64 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -74,12 +74,12 @@
"> > > > \n",
"> > > > \n",
"> > > > WRUSS is a new kernel-mode instruction but writes directly\n",
- "> > > > to user shadow stack memory.\302\240\302\240This is used to construct\n",
+ "> > > > to user shadow stack memory.A A This is used to construct\n",
"> > > > a return address on the shadow stack for the signal\n",
"> > > > handler.\n",
"> > > > \n",
"> > > > This instruction can fault if the user shadow stack is\n",
- "> > > > invalid shadow stack memory.\302\240\302\240In that case, the kernel does\n",
+ "> > > > invalid shadow stack memory.A A In that case, the kernel does\n",
"> > > > fixup.\n",
"> > > > \n",
"> > > > Signed-off-by: Yu-cheng Yu <yu-cheng.yu\@intel.com>\n",
@@ -89,16 +89,16 @@
"> > > > +static inline int write_user_shstk_64(unsigned long addr,\n",
"> > > > unsigned long val)\n",
"> > > > +{\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int err = 0;\n",
+ "> > > > +A A A A A A A int err = 0;\n",
"> > > > +\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240asm volatile(\"1: wrussq %1, (%0)\\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\240\302\240\302\240\302\240\302\240\302\240\"2:\\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\240\302\240\302\240\302\240\302\240\302\240_ASM_EXTABLE_HANDLE(1b, 2b,\n",
+ "> > > > +A A A A A A A asm volatile(\"1: wrussq %1, (%0)\\n\"\n",
+ "> > > > +A A A A A A A A A A A A A A A A A A A A \"2:\\n\"\n",
+ "> > > > +A A A A A A A A A A A A A A A A A A A A _ASM_EXTABLE_HANDLE(1b, 2b,\n",
"> > > > ex_handler_wruss)\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:\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: \"r\" (addr), \"r\" (val));\n",
+ "> > > > +A A A A A A A A A A A A A A A A A A A A :\n",
+ "> > > > +A A A A A A A A A A A A A A A A A A A A : \"r\" (addr), \"r\" (val));\n",
"> > > > +\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return err;\n",
+ "> > > > +A A A A A A A return err;\n",
"> > > > +}\n",
"> > > What's up with \"err\"? You set it to zero, and then you return\n",
"> > > it,\n",
@@ -109,12 +109,12 @@
"> > > > \n",
"> > > > +__visible bool ex_handler_wruss(const struct\n",
"> > > > exception_table_entry *fixup,\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\302\240\302\240\302\240\302\240\302\240\302\240struct pt_regs *regs, int\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 A A A A A A struct pt_regs *regs, int\n",
"> > > > trapnr)\n",
"> > > > +{\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240regs->ip = ex_fixup_addr(fixup);\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240regs->ax = -1;\n",
- "> > > > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return true;\n",
+ "> > > > +A A A A A A A regs->ip = ex_fixup_addr(fixup);\n",
+ "> > > > +A A A A A A A regs->ax = -1;\n",
+ "> > > > +A A A A A A A return true;\n",
"> > > > +}\n",
"> > > And here you just write into regs->ax, but your \"asm volatile\"\n",
"> > > doesn't\n",
@@ -122,22 +122,22 @@
"> > > \n",
"> > > I think you probably want to add something like an explicit\n",
"> > > `\"+&a\"(err)` output to the asm statements.\n",
- "> > We require asm goto support these days.\302\240\302\240How about using\n",
- "> > that?\302\240\302\240You\n",
+ "> > We require asm goto support these days.A A How about using\n",
+ "> > that?A A You\n",
"> > won't even need a special exception handler.\n",
"\n",
- "Maybe something like this? \302\240It looks simple now.\n",
+ "Maybe something like this? A It looks simple now.\n",
"\n",
"static inline int write_user_shstk_64(unsigned long addr, unsigned\n",
"long val)\n",
"{\n",
"\tasm_volatile_goto(\"wrussq %1, (%0)\\n\"\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240\"jmp %l[ok]\\n\"\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240\".section .fixup,\\\"ax\\\"n\"\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240\"jmp %l[fail]\\n\"\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240\".previous\\n\"\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240:: \"r\" (addr), \"r\" (val)\n",
- "\t\t\302\240\302\240\302\240\302\240\302\240:: ok, fail);\n",
+ "\t\tA A A A A \"jmp %l[ok]\\n\"\n",
+ "\t\tA A A A A \".section .fixup,\\\"ax\\\"n\"\n",
+ "\t\tA A A A A \"jmp %l[fail]\\n\"\n",
+ "\t\tA A A A A \".previous\\n\"\n",
+ "\t\tA A A A A :: \"r\" (addr), \"r\" (val)\n",
+ "\t\tA A A A A :: ok, fail);\n",
"ok:\n",
"\treturn 0;\n",
"fail:\n",
@@ -145,4 +145,4 @@
"}"
]
-f537d77d8294e6ee7f99b462cea60cfccda52c074fee78d6e97f46f3337a4297
+cadb5806853f5a619aa5a23b58c22399ef32220d08e96faf24fc21cd9e980d7d
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.