diff for duplicates of <15125811628183@kroah.com> diff --git a/a/1.txt b/N1/1.txt index 693c84f..9150ca5 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -12,116 +12,3 @@ and it can be found in the queue-4.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@vger.kernel.org> know about it. - - -From foo@baz Wed Dec 6 18:04:41 CET 2017 -From: Kees Cook <keescook@chromium.org> -Date: Sat, 2 Sep 2017 13:09:45 -0700 -Subject: locking/refcounts, x86/asm: Use unique .text section for refcount exceptions - -From: Kees Cook <keescook@chromium.org> - - -[ Upstream commit 564c9cc84e2adf8a6671c1937f0a9fe3da2a4b0e ] - -Using .text.unlikely for refcount exceptions isn't safe because gcc may -move entire functions into .text.unlikely (e.g. in6_dev_dev()), which -would cause any uses of a protected refcount_t function to stay inline -with the function, triggering the protection unconditionally: - - .section .text.unlikely,"ax",@progbits - .type in6_dev_get, @function -in6_dev_getx: -.LFB4673: - .loc 2 4128 0 - .cfi_startproc -... - lock; incl 480(%rbx) - js 111f - .pushsection .text.unlikely -111: lea 480(%rbx), %rcx -112: .byte 0x0f, 0xff -.popsection -113: - -This creates a unique .text..refcount section and adds an additional -test to the exception handler to WARN in the case of having none of OF, -SF, nor ZF set so we can see things like this more easily in the future. - -The double dot for the section name keeps it out of the TEXT_MAIN macro -namespace, to avoid collisions and so it can be put at the end with -text.unlikely to keep the cold code together. - -See commit: - - cb87481ee89db ("kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured") - -... which matches C names: [a-zA-Z0-9_] but not ".". - -Reported-by: Mike Galbraith <efault@gmx.de> -Signed-off-by: Kees Cook <keescook@chromium.org> -Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Cc: Elena <elena.reshetova@intel.com> -Cc: Linus Torvalds <torvalds@linux-foundation.org> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Thomas Gleixner <tglx@linutronix.de> -Cc: linux-arch <linux-arch@vger.kernel.org> -Fixes: 7a46ec0e2f48 ("locking/refcounts, x86/asm: Implement fast refcount overflow protection") -Link: http://lkml.kernel.org/r/1504382986-49301-2-git-send-email-keescook@chromium.org -Signed-off-by: Ingo Molnar <mingo@kernel.org> -Signed-off-by: Sasha Levin <alexander.levin@verizon.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/include/asm/refcount.h | 2 +- - arch/x86/mm/extable.c | 7 ++++++- - include/asm-generic/vmlinux.lds.h | 1 + - 3 files changed, 8 insertions(+), 2 deletions(-) - ---- a/arch/x86/include/asm/refcount.h -+++ b/arch/x86/include/asm/refcount.h -@@ -15,7 +15,7 @@ - * back to the regular execution flow in .text. - */ - #define _REFCOUNT_EXCEPTION \ -- ".pushsection .text.unlikely\n" \ -+ ".pushsection .text..refcount\n" \ - "111:\tlea %[counter], %%" _ASM_CX "\n" \ - "112:\t" ASM_UD0 "\n" \ - ASM_UNREACHABLE \ ---- a/arch/x86/mm/extable.c -+++ b/arch/x86/mm/extable.c -@@ -67,12 +67,17 @@ bool ex_handler_refcount(const struct ex - * wrapped around) will be set. Additionally, seeing the refcount - * reach 0 will set ZF (Zero Flag: result was zero). In each of - * these cases we want a report, since it's a boundary condition. -- * -+ * The SF case is not reported since it indicates post-boundary -+ * manipulations below zero or above INT_MAX. And if none of the -+ * flags are set, something has gone very wrong, so report it. - */ - if (regs->flags & (X86_EFLAGS_OF | X86_EFLAGS_ZF)) { - bool zero = regs->flags & X86_EFLAGS_ZF; - - refcount_error_report(regs, zero ? "hit zero" : "overflow"); -+ } else if ((regs->flags & X86_EFLAGS_SF) == 0) { -+ /* Report if none of OF, ZF, nor SF are set. */ -+ refcount_error_report(regs, "unexpected saturation"); - } - - return true; ---- a/include/asm-generic/vmlinux.lds.h -+++ b/include/asm-generic/vmlinux.lds.h -@@ -459,6 +459,7 @@ - #define TEXT_TEXT \ - ALIGN_FUNCTION(); \ - *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \ -+ *(.text..refcount) \ - *(.ref.text) \ - MEM_KEEP(init.text) \ - MEM_KEEP(exit.text) \ - - -Patches currently in stable-queue which might be from keescook@chromium.org are - -queue-4.14/locking-refcounts-x86-asm-use-unique-.text-section-for-refcount-exceptions.patch -queue-4.14/locking-refcounts-x86-asm-enable-config_arch_has_refcount.patch diff --git a/a/content_digest b/N1/content_digest index bacde12..2d56a25 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -29,119 +29,6 @@ "and it can be found in the queue-4.14 subdirectory.\n" "\n" "If you, or anyone else, feels it should not be added to the stable tree,\n" - "please let <stable@vger.kernel.org> know about it.\n" - "\n" - "\n" - "From foo@baz Wed Dec 6 18:04:41 CET 2017\n" - "From: Kees Cook <keescook@chromium.org>\n" - "Date: Sat, 2 Sep 2017 13:09:45 -0700\n" - "Subject: locking/refcounts, x86/asm: Use unique .text section for refcount exceptions\n" - "\n" - "From: Kees Cook <keescook@chromium.org>\n" - "\n" - "\n" - "[ Upstream commit 564c9cc84e2adf8a6671c1937f0a9fe3da2a4b0e ]\n" - "\n" - "Using .text.unlikely for refcount exceptions isn't safe because gcc may\n" - "move entire functions into .text.unlikely (e.g. in6_dev_dev()), which\n" - "would cause any uses of a protected refcount_t function to stay inline\n" - "with the function, triggering the protection unconditionally:\n" - "\n" - " .section .text.unlikely,\"ax\",@progbits\n" - " .type in6_dev_get, @function\n" - "in6_dev_getx:\n" - ".LFB4673:\n" - " .loc 2 4128 0\n" - " .cfi_startproc\n" - "...\n" - " lock; incl 480(%rbx)\n" - " js 111f\n" - " .pushsection .text.unlikely\n" - "111: lea 480(%rbx), %rcx\n" - "112: .byte 0x0f, 0xff\n" - ".popsection\n" - "113:\n" - "\n" - "This creates a unique .text..refcount section and adds an additional\n" - "test to the exception handler to WARN in the case of having none of OF,\n" - "SF, nor ZF set so we can see things like this more easily in the future.\n" - "\n" - "The double dot for the section name keeps it out of the TEXT_MAIN macro\n" - "namespace, to avoid collisions and so it can be put at the end with\n" - "text.unlikely to keep the cold code together.\n" - "\n" - "See commit:\n" - "\n" - " cb87481ee89db (\"kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured\")\n" - "\n" - "... which matches C names: [a-zA-Z0-9_] but not \".\".\n" - "\n" - "Reported-by: Mike Galbraith <efault@gmx.de>\n" - "Signed-off-by: Kees Cook <keescook@chromium.org>\n" - "Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>\n" - "Cc: Elena <elena.reshetova@intel.com>\n" - "Cc: Linus Torvalds <torvalds@linux-foundation.org>\n" - "Cc: Peter Zijlstra <peterz@infradead.org>\n" - "Cc: Thomas Gleixner <tglx@linutronix.de>\n" - "Cc: linux-arch <linux-arch@vger.kernel.org>\n" - "Fixes: 7a46ec0e2f48 (\"locking/refcounts, x86/asm: Implement fast refcount overflow protection\")\n" - "Link: http://lkml.kernel.org/r/1504382986-49301-2-git-send-email-keescook@chromium.org\n" - "Signed-off-by: Ingo Molnar <mingo@kernel.org>\n" - "Signed-off-by: Sasha Levin <alexander.levin@verizon.com>\n" - "Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n" - "---\n" - " arch/x86/include/asm/refcount.h | 2 +-\n" - " arch/x86/mm/extable.c | 7 ++++++-\n" - " include/asm-generic/vmlinux.lds.h | 1 +\n" - " 3 files changed, 8 insertions(+), 2 deletions(-)\n" - "\n" - "--- a/arch/x86/include/asm/refcount.h\n" - "+++ b/arch/x86/include/asm/refcount.h\n" - "@@ -15,7 +15,7 @@\n" - " * back to the regular execution flow in .text.\n" - " */\n" - " #define _REFCOUNT_EXCEPTION\t\t\t\t\\\n" - "-\t\".pushsection .text.unlikely\\n\"\t\t\t\\\n" - "+\t\".pushsection .text..refcount\\n\"\t\t\\\n" - " \t\"111:\\tlea %[counter], %%\" _ASM_CX \"\\n\"\t\t\\\n" - " \t\"112:\\t\" ASM_UD0 \"\\n\"\t\t\t\t\\\n" - " \tASM_UNREACHABLE\t\t\t\t\t\\\n" - "--- a/arch/x86/mm/extable.c\n" - "+++ b/arch/x86/mm/extable.c\n" - "@@ -67,12 +67,17 @@ bool ex_handler_refcount(const struct ex\n" - " \t * wrapped around) will be set. Additionally, seeing the refcount\n" - " \t * reach 0 will set ZF (Zero Flag: result was zero). In each of\n" - " \t * these cases we want a report, since it's a boundary condition.\n" - "-\t *\n" - "+\t * The SF case is not reported since it indicates post-boundary\n" - "+\t * manipulations below zero or above INT_MAX. And if none of the\n" - "+\t * flags are set, something has gone very wrong, so report it.\n" - " \t */\n" - " \tif (regs->flags & (X86_EFLAGS_OF | X86_EFLAGS_ZF)) {\n" - " \t\tbool zero = regs->flags & X86_EFLAGS_ZF;\n" - " \n" - " \t\trefcount_error_report(regs, zero ? \"hit zero\" : \"overflow\");\n" - "+\t} else if ((regs->flags & X86_EFLAGS_SF) == 0) {\n" - "+\t\t/* Report if none of OF, ZF, nor SF are set. */\n" - "+\t\trefcount_error_report(regs, \"unexpected saturation\");\n" - " \t}\n" - " \n" - " \treturn true;\n" - "--- a/include/asm-generic/vmlinux.lds.h\n" - "+++ b/include/asm-generic/vmlinux.lds.h\n" - "@@ -459,6 +459,7 @@\n" - " #define TEXT_TEXT\t\t\t\t\t\t\t\\\n" - " \t\tALIGN_FUNCTION();\t\t\t\t\t\\\n" - " \t\t*(.text.hot TEXT_MAIN .text.fixup .text.unlikely)\t\\\n" - "+\t\t*(.text..refcount)\t\t\t\t\t\\\n" - " \t\t*(.ref.text)\t\t\t\t\t\t\\\n" - " \tMEM_KEEP(init.text)\t\t\t\t\t\t\\\n" - " \tMEM_KEEP(exit.text)\t\t\t\t\t\t\\\n" - "\n" - "\n" - "Patches currently in stable-queue which might be from keescook@chromium.org are\n" - "\n" - "queue-4.14/locking-refcounts-x86-asm-use-unique-.text-section-for-refcount-exceptions.patch\n" - queue-4.14/locking-refcounts-x86-asm-enable-config_arch_has_refcount.patch + please let <stable@vger.kernel.org> know about it. -10e0369fb9e000d1339fe7da70234f341428880d93074fb9ae889438faff5dfe +bc414d3b7e64f48a0e117eba2b3622dd54a385fc611677736e190869b947c946
diff --git a/a/1.txt b/N2/1.txt index 693c84f..4b0586f 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -14,7 +14,7 @@ If you, or anyone else, feels it should not be added to the stable tree, please let <stable@vger.kernel.org> know about it. -From foo@baz Wed Dec 6 18:04:41 CET 2017 +>From foo@baz Wed Dec 6 18:04:41 CET 2017 From: Kees Cook <keescook@chromium.org> Date: Sat, 2 Sep 2017 13:09:45 -0700 Subject: locking/refcounts, x86/asm: Use unique .text section for refcount exceptions diff --git a/a/content_digest b/N2/content_digest index bacde12..ad79411 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -12,8 +12,8 @@ peterz@infradead.org tglx@linutronix.de " torvalds@linux-foundation.org\0" - "Cc\0stable@vger.kernel.org" - " stable-commits@vger.kernel.org\0" + "Cc\0<stable@vger.kernel.org>" + " <stable-commits@vger.kernel.org>\0" "\00:1\0" "b\0" "\n" @@ -32,7 +32,7 @@ "please let <stable@vger.kernel.org> know about it.\n" "\n" "\n" - "From foo@baz Wed Dec 6 18:04:41 CET 2017\n" + ">From foo@baz Wed Dec 6 18:04:41 CET 2017\n" "From: Kees Cook <keescook@chromium.org>\n" "Date: Sat, 2 Sep 2017 13:09:45 -0700\n" "Subject: locking/refcounts, x86/asm: Use unique .text section for refcount exceptions\n" @@ -144,4 +144,4 @@ "queue-4.14/locking-refcounts-x86-asm-use-unique-.text-section-for-refcount-exceptions.patch\n" queue-4.14/locking-refcounts-x86-asm-enable-config_arch_has_refcount.patch -10e0369fb9e000d1339fe7da70234f341428880d93074fb9ae889438faff5dfe +55461f31b1c1f883e53733cf047ac1a5bf24e56fe930fdc91fb3a113261cb98d
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.