From: Kees Cook <keescook@chromium.org> To: linux-kernel@vger.kernel.org Cc: Kees Cook <keescook@chromium.org>, Will Deacon <will.deacon@arm.com>, Rabin Vincent <rabin@rab.in>, Laura Abbott <lauraa@codeaurora.org>, Rob Herring <robh@kernel.org>, Leif Lindholm <leif.lindholm@linaro.org>, Mark Salter <msalter@redhat.com>, Liu hua <sdu.liu@huawei.com>, Nikolay Borisov <Nikolay.Borisov@arm.com>, Nicolas Pitre <nicolas.pitre@linaro.org>, Doug Anderson <dianders@google.com>, Jason Wessel <jason.wessel@windriver.com>, Catalin Marinas <catalin.marinas@arm.com>, Russell King - ARM Linux <linux@arm.linux.org.uk>, linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 0/8] arm: support CONFIG_RODATA Date: Wed, 3 Sep 2014 14:57:01 -0700 [thread overview] Message-ID: <1409781429-27593-1-git-send-email-keescook@chromium.org> (raw) This is a series of patches to support CONFIG_RODATA on ARM, so that the kernel text is RO, and non-text sections default to NX. To support on-the-fly kernel text patching (via ftrace, kprobes, etc), fixmap support has been finalized based on several versions of various patches that are floating around on the mailing list. This series attempts to include the least intrusive version, so that others can build on it for future fixmap work. The series has been heavily tested, and appears to be working correctly: With CONFIG_ARM_PTDUMP, expected page table permissions are seen in /sys/kernel/debug/kernel_page_tables. Using CONFIG_LKDTM, the kernel now correctly detects bad accesses for for the following lkdtm tests via /sys/kernel/debug/provoke-crash/DIRECT: EXEC_DATA WRITE_RO WRITE_KERN ftrace works: CONFIG_FTRACE_STARTUP_TEST passes Enabling tracing works: echo function > /sys/kernel/debug/tracing/current_tracer kprobes works: CONFIG_ARM_KPROBES_TEST passes kexec works: kexec will load and start a new kernel Built with and without CONFIG_HIGHMEM, CONFIG_HIGHMEM_DEBUG, and CONFIG_NR_CPUS=32. Thanks to everyone who has been testing this series and working on its various pieces! Unless there are other concerns, I'd like to send a pull request to rmk soon. Thanks! -Kees v5: - clean up #includes in mmu.c (will.deacon) - optimize get_cr() test (will.deacon) - created free_tcmmem to avoid excessive #ifdefs (will.deacon) - explicitly test irqs_disabled in set_fixmap (will.deacon) v4: - expanded fixmap to 3MB to support 32 CPUs (robh) - corrected pmd-finding via vaddr instead of FIXMAP_START (robh) - switched structure size test to BUILD_BUG_ON (sboyd) - added locking annotations to keep sparse happy (sboyd) - adding missing "static" declarations noticed by sparse - reorganized fixmap portion of patches v3: - more cleanups in switch to generic fixmap (lauraa, robh) - fixed kexec merge hunk glitch (will.deacon) - added tested-by tags where appropriate from v2 testing v2: - fix typo in kexec merge (buildbot) - flip index order for highmem pte access (lauraa) - added kgdb updates (dianders)
WARNING: multiple messages have this Message-ID (diff)
From: keescook@chromium.org (Kees Cook) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 0/8] arm: support CONFIG_RODATA Date: Wed, 3 Sep 2014 14:57:01 -0700 [thread overview] Message-ID: <1409781429-27593-1-git-send-email-keescook@chromium.org> (raw) This is a series of patches to support CONFIG_RODATA on ARM, so that the kernel text is RO, and non-text sections default to NX. To support on-the-fly kernel text patching (via ftrace, kprobes, etc), fixmap support has been finalized based on several versions of various patches that are floating around on the mailing list. This series attempts to include the least intrusive version, so that others can build on it for future fixmap work. The series has been heavily tested, and appears to be working correctly: With CONFIG_ARM_PTDUMP, expected page table permissions are seen in /sys/kernel/debug/kernel_page_tables. Using CONFIG_LKDTM, the kernel now correctly detects bad accesses for for the following lkdtm tests via /sys/kernel/debug/provoke-crash/DIRECT: EXEC_DATA WRITE_RO WRITE_KERN ftrace works: CONFIG_FTRACE_STARTUP_TEST passes Enabling tracing works: echo function > /sys/kernel/debug/tracing/current_tracer kprobes works: CONFIG_ARM_KPROBES_TEST passes kexec works: kexec will load and start a new kernel Built with and without CONFIG_HIGHMEM, CONFIG_HIGHMEM_DEBUG, and CONFIG_NR_CPUS=32. Thanks to everyone who has been testing this series and working on its various pieces! Unless there are other concerns, I'd like to send a pull request to rmk soon. Thanks! -Kees v5: - clean up #includes in mmu.c (will.deacon) - optimize get_cr() test (will.deacon) - created free_tcmmem to avoid excessive #ifdefs (will.deacon) - explicitly test irqs_disabled in set_fixmap (will.deacon) v4: - expanded fixmap to 3MB to support 32 CPUs (robh) - corrected pmd-finding via vaddr instead of FIXMAP_START (robh) - switched structure size test to BUILD_BUG_ON (sboyd) - added locking annotations to keep sparse happy (sboyd) - adding missing "static" declarations noticed by sparse - reorganized fixmap portion of patches v3: - more cleanups in switch to generic fixmap (lauraa, robh) - fixed kexec merge hunk glitch (will.deacon) - added tested-by tags where appropriate from v2 testing v2: - fix typo in kexec merge (buildbot) - flip index order for highmem pte access (lauraa) - added kgdb updates (dianders)
next reply other threads:[~2014-09-03 21:59 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-09-03 21:57 Kees Cook [this message] 2014-09-03 21:57 ` [PATCH v5 0/8] arm: support CONFIG_RODATA Kees Cook 2014-09-03 21:57 ` [PATCH v5 1/8] arm: use generic fixmap.h Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 2/8] ARM: expand fixmap region to 3MB Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 3/8] arm: fixmap: implement __set_fixmap() Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-04 17:03 ` Will Deacon 2014-09-04 17:03 ` Will Deacon 2014-09-04 17:23 ` Kees Cook 2014-09-04 17:23 ` Kees Cook 2014-09-04 17:27 ` Will Deacon 2014-09-04 17:27 ` Will Deacon 2014-09-05 19:41 ` Kees Cook 2014-09-05 19:41 ` Kees Cook 2014-09-08 10:39 ` Will Deacon 2014-09-08 10:39 ` Will Deacon 2014-09-08 18:38 ` Kees Cook 2014-09-08 18:38 ` Kees Cook 2014-09-08 19:16 ` Kees Cook 2014-09-08 19:16 ` Kees Cook 2014-09-08 21:55 ` Rabin Vincent 2014-09-08 21:55 ` Rabin Vincent 2014-09-08 22:40 ` Kees Cook 2014-09-08 22:40 ` Kees Cook 2014-09-09 12:38 ` Will Deacon 2014-09-09 12:38 ` Will Deacon 2014-09-09 14:33 ` Kees Cook 2014-09-09 14:33 ` Kees Cook 2014-09-10 17:51 ` Will Deacon 2014-09-10 17:51 ` Will Deacon 2014-09-11 15:27 ` Kees Cook 2014-09-11 15:27 ` Kees Cook 2014-09-11 16:05 ` Kees Cook 2014-09-11 16:05 ` Kees Cook 2014-09-11 16:16 ` Will Deacon 2014-09-11 16:16 ` Will Deacon 2014-09-11 16:27 ` Kees Cook 2014-09-11 16:27 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 4/8] arm: use fixmap for text patching when text is RO Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 5/8] ARM: kexec: Make .text R/W in machine_kexec Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 6/8] arm: kgdb: Handle read-only text / modules Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 7/8] ARM: mm: allow non-text sections to be non-executable Kees Cook 2014-09-03 21:57 ` Kees Cook 2014-09-03 21:57 ` [PATCH v5 8/8] ARM: mm: allow text and rodata sections to be read-only Kees Cook 2014-09-03 21:57 ` Kees Cook
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1409781429-27593-1-git-send-email-keescook@chromium.org \ --to=keescook@chromium.org \ --cc=Nikolay.Borisov@arm.com \ --cc=catalin.marinas@arm.com \ --cc=dianders@google.com \ --cc=jason.wessel@windriver.com \ --cc=lauraa@codeaurora.org \ --cc=leif.lindholm@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=msalter@redhat.com \ --cc=nicolas.pitre@linaro.org \ --cc=rabin@rab.in \ --cc=robh@kernel.org \ --cc=sdu.liu@huawei.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.