diff for duplicates of <1531342404.15351.35.camel@intel.com> diff --git a/a/content_digest b/N1/content_digest index 2519456..5b64fa8 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:37 -0700, Jann Horn wrote:\n" @@ -112,4 +115,4 @@ "\n" Yu-cheng -8f1dbc1d35dc1b822e1735b91dfacb751b6cbb1736848791a0a11f800b98fe3e +1fddf162f084b92d23c8e608281e59addcff2f02342a9d416ac3ba5cf96afa04
diff --git a/a/1.txt b/N2/1.txt index 5351f69..a36dde7 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -80,3 +80,7 @@ application with CET enabled. Otherwise ld.so turns off SHSTK (and/or sets up legacy bitmap for IBT) before passing to the application. 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 2519456..c05a936 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:37 -0700, Jann Horn wrote:\n" @@ -110,6 +113,10 @@ "application with CET enabled. \302\240Otherwise ld.so turns off SHSTK (and/or\n" "sets up legacy bitmap for IBT) before passing to the application.\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 -8f1dbc1d35dc1b822e1735b91dfacb751b6cbb1736848791a0a11f800b98fe3e +071107e107fb8526c192343167cf13e93fea07e78b0f2042d98611bb9c7ff5f0
diff --git a/a/1.txt b/N3/1.txt index 5351f69..32fbe12 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -19,8 +19,8 @@ On Wed, 2018-07-11 at 12:37 -0700, Jann Horn wrote: > [...] > > > > +#define NOTE_SIZE_BAD(n, align, max) \ -> > + ((n->n_descsz < 8) || ((n->n_descsz % align) != 0) || \ -> > + (((u8 *)(n + 1) + 4 + n->n_descsz) > (max))) +> > +A A A A A A A ((n->n_descsz < 8) || ((n->n_descsz % align) != 0) || \ +> > +A A A A A A A A (((u8 *)(n + 1) + 4 + n->n_descsz) > (max))) > Please do not compute out-of-bounds pointers and then compare them > against an expected maximum pointer. Computing an out-of-bounds > pointer is undefined behavior according to the C99 specification, @@ -43,20 +43,20 @@ I will fix it. > > +++ b/fs/binfmt_elf.c > > @@ -1081,6 +1081,22 @@ static int load_elf_binary(struct > > linux_binprm *bprm) -> > goto out_free_dentry; -> > } +> > A A A A A A A A A A A A A A A A goto out_free_dentry; +> > A A A A A A A A } > > > > +#ifdef CONFIG_ARCH_HAS_PROGRAM_PROPERTIES > > + -> > + if (interpreter) { -> > + retval = arch_setup_features(&loc->interp_elf_ex, -> > + interp_elf_phdata, -> > + interpreter, true); -> > + } else { -> > + retval = arch_setup_features(&loc->elf_ex, -> > + elf_phdata, -> > + bprm->file, false); -> > + } +> > +A A A A A A A if (interpreter) { +> > +A A A A A A A A A A A A A A A retval = arch_setup_features(&loc->interp_elf_ex, +> > +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 A A A A interp_elf_phdata, +> > +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 A A A A interpreter, true); +> > +A A A A A A A } else { +> > +A A A A A A A A A A A A A A A retval = arch_setup_features(&loc->elf_ex, +> > +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 A A A A elf_phdata, +> > +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 A A A A bprm->file, false); +> > +A A A A A A A } > So for non-static binaries, the ELF headers of ld.so determine > whether > CET will be on or off for the entire system, right? Is the intent @@ -67,16 +67,16 @@ I will fix it. The kernel command-line options "no_cet_shstk" and "no_cet_ibt" turn -off CET features for the whole system. The GLIBC tunable +off CET features for the whole system. A The GLIBC tunable "glibc.tune.hwcap=-SHSTK,-IBT" turns off CET features for the current -shell. Another GLIBC tunable "glibc.tune.x86_shstk=<on, permissive>" +shell. A Another GLIBC tunable "glibc.tune.x86_shstk=<on, permissive>" determines, in the current shell, how dlopen() deals with SHSTK legacy lib's. So, if ld.so's ELF header has SHSTK/IBT, and CET is enabled in the -current shell, it will run with CET enabled. If the application +current shell, it will run with CET enabled. A If the application executable and all its dependent libraries have CET, ld.so runs the -application with CET enabled. Otherwise ld.so turns off SHSTK (and/or +application with CET enabled. A Otherwise ld.so turns off SHSTK (and/or sets up legacy bitmap for IBT) before passing to the application. Yu-cheng diff --git a/a/content_digest b/N3/content_digest index 2519456..340bc1a 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:37 -0700, Jann Horn wrote:\n" @@ -50,8 +53,8 @@ "> [...]\n" "> > \n" "> > +#define NOTE_SIZE_BAD(n, align, max) \\\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240((n->n_descsz < 8) || ((n->n_descsz % align) != 0) || \\\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240(((u8 *)(n + 1) + 4 + n->n_descsz) > (max)))\n" + "> > +A A A A A A A ((n->n_descsz < 8) || ((n->n_descsz % align) != 0) || \\\n" + "> > +A A A A A A A A (((u8 *)(n + 1) + 4 + n->n_descsz) > (max)))\n" "> Please do not compute out-of-bounds pointers and then compare them\n" "> against an expected maximum pointer. Computing an out-of-bounds\n" "> pointer is undefined behavior according to the C99 specification,\n" @@ -74,20 +77,20 @@ "> > +++ b/fs/binfmt_elf.c\n" "> > @@ -1081,6 +1081,22 @@ static int load_elf_binary(struct\n" "> > linux_binprm *bprm)\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\240goto out_free_dentry;\n" - "> > \302\240\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 goto out_free_dentry;\n" + "> > A A A A A A A A }\n" "> > \n" "> > +#ifdef CONFIG_ARCH_HAS_PROGRAM_PROPERTIES\n" "> > +\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (interpreter) {\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\240retval = arch_setup_features(&loc->interp_elf_ex,\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\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240interp_elf_phdata,\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\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240interpreter, true);\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\240retval = arch_setup_features(&loc->elf_ex,\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\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240elf_phdata,\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\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240bprm->file, false);\n" - "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n" + "> > +A A A A A A A if (interpreter) {\n" + "> > +A A A A A A A A A A A A A A A retval = arch_setup_features(&loc->interp_elf_ex,\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 A A A A A A A A A interp_elf_phdata,\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 A A A A A A A A A interpreter, true);\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 retval = arch_setup_features(&loc->elf_ex,\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 A A A A A A A A A elf_phdata,\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 A A A A A A A A A bprm->file, false);\n" + "> > +A A A A A A A }\n" "> So for non-static binaries, the ELF headers of ld.so determine\n" "> whether\n" "> CET will be on or off for the entire system, right? Is the intent\n" @@ -98,18 +101,18 @@ "\n" "\n" "The kernel command-line options \"no_cet_shstk\" and \"no_cet_ibt\" turn\n" - "off CET features for the whole system. \302\240The GLIBC tunable\n" + "off CET features for the whole system. A The GLIBC tunable\n" "\"glibc.tune.hwcap=-SHSTK,-IBT\" turns off CET features for the current\n" - "shell. \302\240Another GLIBC tunable \"glibc.tune.x86_shstk=<on, permissive>\"\n" + "shell. A Another GLIBC tunable \"glibc.tune.x86_shstk=<on, permissive>\"\n" "determines, in the current shell, how dlopen() deals with SHSTK legacy\n" "lib's.\n" "\n" "So, if ld.so's ELF header has SHSTK/IBT, and CET is enabled in the\n" - "current shell, it will run with CET enabled. \302\240If the application\n" + "current shell, it will run with CET enabled. A If the application\n" "executable and all its dependent libraries have CET, ld.so runs the\n" - "application with CET enabled. \302\240Otherwise ld.so turns off SHSTK (and/or\n" + "application with CET enabled. A Otherwise ld.so turns off SHSTK (and/or\n" "sets up legacy bitmap for IBT) before passing to the application.\n" "\n" Yu-cheng -8f1dbc1d35dc1b822e1735b91dfacb751b6cbb1736848791a0a11f800b98fe3e +22b0ca8ad5d88bbce07816ce10ccd87dbfcfa0e6dd587a6cf66b55119a85b81c
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.