diff for duplicates of <1531342544.15351.37.camel@intel.com> diff --git a/a/content_digest b/N1/content_digest index d98a230..84de3b6 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>Pete\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 Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote:\n" @@ -139,4 +142,4 @@ "\n" Yu-cheng -3132acfc88cb509a2a3d45ba8433ad2256936260b1d27e2c2792d150c77ff5e7 +31f5a2318182584b96a98e41e372f5ff7f46158538ff3fe33e2026fc077a12e3
diff --git a/a/1.txt b/N2/1.txt index 5b2f899..614b08b 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -107,3 +107,7 @@ On Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote: Yes, that simplifies the code. I will make that change. 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 d98a230..a5dbbc6 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>Pete\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 Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote:\n" @@ -137,6 +140,10 @@ "\n" "Yes, that simplifies the code. \302\240I will make that change.\n" "\n" - Yu-cheng + "Yu-cheng\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 -3132acfc88cb509a2a3d45ba8433ad2256936260b1d27e2c2792d150c77ff5e7 +b6840220fdfc015814b923ffd85dc363211e140c0f691ba70a42c094f4e3c960
diff --git a/a/1.txt b/N3/1.txt index 5b2f899..a7bfaad 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -4,42 +4,42 @@ On Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote: > > > > > > arch_prctl(ARCH_CET_STATUS, unsigned long *addr) -> > Return CET feature status. +> > A A A A Return CET feature status. > > -> > The parameter 'addr' is a pointer to a user buffer. -> > On returning to the caller, the kernel fills the following -> > information: +> > A A A A The parameter 'addr' is a pointer to a user buffer. +> > A A A A On returning to the caller, the kernel fills the following +> > A A A A information: > > -> > *addr = SHSTK/IBT status -> > *(addr + 1) = SHSTK base address -> > *(addr + 2) = SHSTK size +> > A A A A *addr = SHSTK/IBT status +> > A A A A *(addr + 1) = SHSTK base address +> > A A A A *(addr + 2) = SHSTK size > > > > arch_prctl(ARCH_CET_DISABLE, unsigned long features) -> > Disable SHSTK and/or IBT specified in 'features'. Return +> > A A A A Disable SHSTK and/or IBT specified in 'features'.A A Return > > -EPERM -> > if CET is locked out. +> > A A A A if CET is locked out. > > > > arch_prctl(ARCH_CET_LOCK) -> > Lock out CET feature. +> > A A A A Lock out CET feature. > > > > arch_prctl(ARCH_CET_ALLOC_SHSTK, unsigned long *addr) -> > Allocate a new SHSTK. +> > A A A A Allocate a new SHSTK. > > -> > The parameter 'addr' is a pointer to a user buffer and +> > A A A A The parameter 'addr' is a pointer to a user buffer and > > indicates -> > the desired SHSTK size to allocate. On returning to the caller -> > the buffer contains the address of the new SHSTK. +> > A A A A the desired SHSTK size to allocate.A A On returning to the caller +> > A A A A the buffer contains the address of the new SHSTK. > > > > arch_prctl(ARCH_CET_LEGACY_BITMAP, unsigned long *addr) -> > Allocate an IBT legacy code bitmap if the current task does not -> > have one. +> > A A A A Allocate an IBT legacy code bitmap if the current task does not +> > A A A A have one. > > -> > The parameter 'addr' is a pointer to a user buffer. -> > On returning to the caller, the kernel fills the following -> > information: +> > A A A A The parameter 'addr' is a pointer to a user buffer. +> > A A A A On returning to the caller, the kernel fills the following +> > A A A A information: > > -> > *addr = IBT bitmap base address -> > *(addr + 1) = IBT bitmap size +> > A A A A *addr = IBT bitmap base address +> > A A A A *(addr + 1) = IBT bitmap size > > > > Signed-off-by: H.J. Lu <hjl.tools@gmail.com> > > Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com> @@ -68,42 +68,42 @@ On Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote: > > + > > +static int handle_get_status(unsigned long arg2) > > +{ -> > + unsigned int features = 0; -> > + unsigned long shstk_base, shstk_size; +> > +A A A A A A A unsigned int features = 0; +> > +A A A A A A A unsigned long shstk_base, shstk_size; > > + -> > + if (current->thread.cet.shstk_enabled) -> > + features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; -> > + if (current->thread.cet.ibt_enabled) -> > + features |= GNU_PROPERTY_X86_FEATURE_1_IBT; +> > +A A A A A A A if (current->thread.cet.shstk_enabled) +> > +A A A A A A A A A A A A A A A features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK; +> > +A A A A A A A if (current->thread.cet.ibt_enabled) +> > +A A A A A A A A A A A A A A A features |= GNU_PROPERTY_X86_FEATURE_1_IBT; > > + -> > + shstk_base = current->thread.cet.shstk_base; -> > + shstk_size = current->thread.cet.shstk_size; +> > +A A A A A A A shstk_base = current->thread.cet.shstk_base; +> > +A A A A A A A shstk_size = current->thread.cet.shstk_size; > > + -> > + if (in_ia32_syscall()) { -> > + unsigned int buf[3]; +> > +A A A A A A A if (in_ia32_syscall()) { +> > +A A A A A A A A A A A A A A A unsigned int buf[3]; > > + -> > + buf[0] = features; -> > + buf[1] = (unsigned int)shstk_base; -> > + buf[2] = (unsigned int)shstk_size; -> > + return copy_to_user((unsigned int __user *)arg2, +> > +A A A A A A A A A A A A A A A buf[0] = features; +> > +A A A A A A A A A A A A A A A buf[1] = (unsigned int)shstk_base; +> > +A A A A A A A A A A A A A A A buf[2] = (unsigned int)shstk_size; +> > +A A A A A A A A A A A A A A A return copy_to_user((unsigned int __user *)arg2, > > buf, -> > + sizeof(buf)); -> > + } else { -> > + unsigned long buf[3]; +> > +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 sizeof(buf)); +> > +A A A A A A A } else { +> > +A A A A A A A A A A A A A A A unsigned long buf[3]; > > + -> > + buf[0] = (unsigned long)features; -> > + buf[1] = shstk_base; -> > + buf[2] = shstk_size; -> > + return copy_to_user((unsigned long __user *)arg2, +> > +A A A A A A A A A A A A A A A buf[0] = (unsigned long)features; +> > +A A A A A A A A A A A A A A A buf[1] = shstk_base; +> > +A A A A A A A A A A A A A A A buf[2] = shstk_size; +> > +A A A A A A A A A A A A A A A return copy_to_user((unsigned long __user *)arg2, > > buf, -> > + sizeof(buf)); -> > + } +> > +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 sizeof(buf)); +> > +A A A A A A A } > Other places in the kernel (e.g. the BPF subsystem) just > unconditionally use u64 instead of unsigned long to avoid having to > switch between different sizes. I wonder whether that would make > sense > here? -Yes, that simplifies the code. I will make that change. +Yes, that simplifies the code. A I will make that change. Yu-cheng diff --git a/a/content_digest b/N3/content_digest index d98a230..3066b30 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>Pete\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 Wed, 2018-07-11 at 12:45 -0700, Jann Horn wrote:\n" @@ -35,42 +38,42 @@ "> > \n" "> > \n" "> > arch_prctl(ARCH_CET_STATUS, unsigned long *addr)\n" - "> > \302\240\302\240\302\240\302\240Return CET feature status.\n" + "> > A A A A Return CET feature status.\n" "> > \n" - "> > \302\240\302\240\302\240\302\240The parameter 'addr' is a pointer to a user buffer.\n" - "> > \302\240\302\240\302\240\302\240On returning to the caller, the kernel fills the following\n" - "> > \302\240\302\240\302\240\302\240information:\n" + "> > A A A A The parameter 'addr' is a pointer to a user buffer.\n" + "> > A A A A On returning to the caller, the kernel fills the following\n" + "> > A A A A information:\n" "> > \n" - "> > \302\240\302\240\302\240\302\240*addr = SHSTK/IBT status\n" - "> > \302\240\302\240\302\240\302\240*(addr + 1) = SHSTK base address\n" - "> > \302\240\302\240\302\240\302\240*(addr + 2) = SHSTK size\n" + "> > A A A A *addr = SHSTK/IBT status\n" + "> > A A A A *(addr + 1) = SHSTK base address\n" + "> > A A A A *(addr + 2) = SHSTK size\n" "> > \n" "> > arch_prctl(ARCH_CET_DISABLE, unsigned long features)\n" - "> > \302\240\302\240\302\240\302\240Disable SHSTK and/or IBT specified in 'features'.\302\240\302\240Return\n" + "> > A A A A Disable SHSTK and/or IBT specified in 'features'.A A Return\n" "> > -EPERM\n" - "> > \302\240\302\240\302\240\302\240if CET is locked out.\n" + "> > A A A A if CET is locked out.\n" "> > \n" "> > arch_prctl(ARCH_CET_LOCK)\n" - "> > \302\240\302\240\302\240\302\240Lock out CET feature.\n" + "> > A A A A Lock out CET feature.\n" "> > \n" "> > arch_prctl(ARCH_CET_ALLOC_SHSTK, unsigned long *addr)\n" - "> > \302\240\302\240\302\240\302\240Allocate a new SHSTK.\n" + "> > A A A A Allocate a new SHSTK.\n" "> > \n" - "> > \302\240\302\240\302\240\302\240The parameter 'addr' is a pointer to a user buffer and\n" + "> > A A A A The parameter 'addr' is a pointer to a user buffer and\n" "> > indicates\n" - "> > \302\240\302\240\302\240\302\240the desired SHSTK size to allocate.\302\240\302\240On returning to the caller\n" - "> > \302\240\302\240\302\240\302\240the buffer contains the address of the new SHSTK.\n" + "> > A A A A the desired SHSTK size to allocate.A A On returning to the caller\n" + "> > A A A A the buffer contains the address of the new SHSTK.\n" "> > \n" "> > arch_prctl(ARCH_CET_LEGACY_BITMAP, unsigned long *addr)\n" - "> > \302\240\302\240\302\240\302\240Allocate an IBT legacy code bitmap if the current task does not\n" - "> > \302\240\302\240\302\240\302\240have one.\n" + "> > A A A A Allocate an IBT legacy code bitmap if the current task does not\n" + "> > A A A A have one.\n" "> > \n" - "> > \302\240\302\240\302\240\302\240The parameter 'addr' is a pointer to a user buffer.\n" - "> > \302\240\302\240\302\240\302\240On returning to the caller, the kernel fills the following\n" - "> > \302\240\302\240\302\240\302\240information:\n" + "> > A A A A The parameter 'addr' is a pointer to a user buffer.\n" + "> > A A A A On returning to the caller, the kernel fills the following\n" + "> > A A A A information:\n" "> > \n" - "> > \302\240\302\240\302\240\302\240*addr = IBT bitmap base address\n" - "> > \302\240\302\240\302\240\302\240*(addr + 1) = IBT bitmap size\n" + "> > A A A A *addr = IBT bitmap base address\n" + "> > A A A A *(addr + 1) = IBT bitmap size\n" "> > \n" "> > Signed-off-by: H.J. Lu <hjl.tools@gmail.com>\n" "> > Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com>\n" @@ -99,44 +102,44 @@ "> > +\n" "> > +static int handle_get_status(unsigned long arg2)\n" "> > +{\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned int features = 0;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long shstk_base, shstk_size;\n" + "> > +A A A A A A A unsigned int features = 0;\n" + "> > +A A A A A A A unsigned long shstk_base, shstk_size;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (current->thread.cet.shstk_enabled)\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\240features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (current->thread.cet.ibt_enabled)\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\240features |= GNU_PROPERTY_X86_FEATURE_1_IBT;\n" + "> > +A A A A A A A if (current->thread.cet.shstk_enabled)\n" + "> > +A A A A A A A A A A A A A A A features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;\n" + "> > +A A A A A A A if (current->thread.cet.ibt_enabled)\n" + "> > +A A A A A A A A A A A A A A A features |= GNU_PROPERTY_X86_FEATURE_1_IBT;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240shstk_base = current->thread.cet.shstk_base;\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240shstk_size = current->thread.cet.shstk_size;\n" + "> > +A A A A A A A shstk_base = current->thread.cet.shstk_base;\n" + "> > +A A A A A A A shstk_size = current->thread.cet.shstk_size;\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (in_ia32_syscall()) {\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 buf[3];\n" + "> > +A A A A A A A if (in_ia32_syscall()) {\n" + "> > +A A A A A A A A A A A A A A A unsigned int buf[3];\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\240buf[0] = features;\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\240buf[1] = (unsigned int)shstk_base;\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\240buf[2] = (unsigned int)shstk_size;\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 copy_to_user((unsigned int __user *)arg2,\n" + "> > +A A A A A A A A A A A A A A A buf[0] = features;\n" + "> > +A A A A A A A A A A A A A A A buf[1] = (unsigned int)shstk_base;\n" + "> > +A A A A A A A A A A A A A A A buf[2] = (unsigned int)shstk_size;\n" + "> > +A A A A A A A A A A A A A A A return copy_to_user((unsigned int __user *)arg2,\n" "> > buf,\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\240\302\240\302\240\302\240\302\240sizeof(buf));\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} else {\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 long buf[3];\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 A A A A sizeof(buf));\n" + "> > +A A A A A A A } else {\n" + "> > +A A A A A A A A A A A A A A A unsigned long buf[3];\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\240buf[0] = (unsigned long)features;\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\240buf[1] = shstk_base;\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\240buf[2] = shstk_size;\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 copy_to_user((unsigned long __user *)arg2,\n" + "> > +A A A A A A A A A A A A A A A buf[0] = (unsigned long)features;\n" + "> > +A A A A A A A A A A A A A A A buf[1] = shstk_base;\n" + "> > +A A A A A A A A A A A A A A A buf[2] = shstk_size;\n" + "> > +A A A A A A A A A A A A A A A return copy_to_user((unsigned long __user *)arg2,\n" "> > buf,\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\240\302\240\302\240\302\240\302\240sizeof(buf));\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\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 A A A A sizeof(buf));\n" + "> > +A A A A A A A }\n" "> Other places in the kernel (e.g. the BPF subsystem) just\n" "> unconditionally use u64 instead of unsigned long to avoid having to\n" "> switch between different sizes. I wonder whether that would make\n" "> sense\n" "> here?\n" "\n" - "Yes, that simplifies the code. \302\240I will make that change.\n" + "Yes, that simplifies the code. A I will make that change.\n" "\n" Yu-cheng -3132acfc88cb509a2a3d45ba8433ad2256936260b1d27e2c2792d150c77ff5e7 +4c48498c6d40200f2a0ff705d918e925440206fce6aa1003a5b4fdc00b585009
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.