From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753749AbcHPVL1 (ORCPT ); Tue, 16 Aug 2016 17:11:27 -0400 Received: from mail-pf0-f173.google.com ([209.85.192.173]:35101 "EHLO mail-pf0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753669AbcHPVLX (ORCPT ); Tue, 16 Aug 2016 17:11:23 -0400 From: Kees Cook To: "Paul E . McKenney" Cc: Kees Cook , Stephen Boyd , Daniel Micay , Arnd Bergmann , Greg Kroah-Hartman , Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Peter Zijlstra , Ingo Molnar , Tejun Heo , Michael Ellerman , "Aneesh Kumar K.V" , "Kirill A. Shutemov" , Andrew Morton , Dan Williams , Jan Kara , Josef Bacik , Thomas Gleixner , Andrey Ryabinin , Nikolay Aleksandrov , Dmitry Vyukov , linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com Subject: [PATCH 0/5] bug: Provide toggle for BUG on data corruption Date: Tue, 16 Aug 2016 14:11:00 -0700 Message-Id: <1471381865-25724-1-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds a CONFIG to trigger BUG()s when the kernel encounters unexpected data structure integrity as currently detected with CONFIG_DEBUG_LIST, CONFIG_DEBUG_SPINLOCK, and with workqueues. Specifically list operations have been a target for widening flaws to gain "write anywhere" primitives for attackers, so this also consolidates the debug checking to avoid code and check duplication (e.g. RCU list debug was missing a check that got added to regular list debug). It also stops manipulations when corruption is detected, since worsening the corruption makes no sense. (Really, everyone should build with CONFIG_DEBUG_LIST since the checks are so inexpensive.) This is mostly a refactoring of similar code from PaX and Grsecurity, along with MSM kernel changes by Stephen Boyd. Along with the patches is a new lkdtm test to validate that setting CONFIG_DEBUG_LIST actually does what is desired. Thanks, -Kees