From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753834AbaHMRI2 (ORCPT ); Wed, 13 Aug 2014 13:08:28 -0400 Received: from smtp.outflux.net ([198.145.64.163]:39148 "EHLO smtp.outflux.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753543AbaHMRHe (ORCPT ); Wed, 13 Aug 2014 13:07:34 -0400 From: Kees Cook To: linux-kernel@vger.kernel.org Cc: Kees Cook , Rob Herring , Laura Abbott , Leif Lindholm , Stephen Boyd , Mark Salter , Rabin Vincent , Liu hua , Nikolay Borisov , Nicolas Pitre , Tomasz Figa , Doug Anderson , Jason Wessel , Will Deacon , Catalin Marinas , Russell King - ARM Linux , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org Subject: [PATCH v4 0/8] arm: support CONFIG_RODATA Date: Wed, 13 Aug 2014 10:06:25 -0700 Message-Id: <1407949593-16121-1-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 1.9.1 X-HELO: www.outflux.net Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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! -Kees 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) From mboxrd@z Thu Jan 1 00:00:00 1970 From: keescook@chromium.org (Kees Cook) Date: Wed, 13 Aug 2014 10:06:25 -0700 Subject: [PATCH v4 0/8] arm: support CONFIG_RODATA Message-ID: <1407949593-16121-1-git-send-email-keescook@chromium.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 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! -Kees 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)