Received: by 10.213.65.68 with SMTP id h4csp321883imn; Fri, 30 Mar 2018 21:59:15 -0700 (PDT) X-Google-Smtp-Source: AIpwx49UmlRtVoNbzY0fz8kgQKxqIwdBFQ421hFJNz7wKmVxcIzhBsSRAGmAoUu5gBAW7Nds/y4i X-Received: by 2002:a17:902:8287:: with SMTP id y7-v6mr1741095pln.85.1522472355741; Fri, 30 Mar 2018 21:59:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522472355; cv=none; d=google.com; s=arc-20160816; b=QN0tRSta7kHy8Oz52C54Mk9qMr2mjEuBNmQS0TrcWqfhuMYUmOd9YHygcZ6a94qWuf nHoheKyiVQtJuGx4+Gv2ZPJKJgmTyn+OMqTOcf8y1966W8bl+iavveZPFFWfPhGjszD0 W4Gouh5HD9kudbP/euUY2fDfgL6++jitMCjlM3no0IGvNQD8nY8vC5suekYR2XkSlGtJ cgPK4W5ZvgvExKdhAuZ/o5odlvq8S8Rimz+cWviGNaveV+xEXsh+O91D9VWkJ44hh23l zVFS02/yEDjgfzQL/DGoszPokYxLV/7XeDptIBJLvdEkyNClVXca53QjMAy2dLHMXXwK 6oKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature:dkim-signature :arc-authentication-results; bh=c9R529rVbkgpTPxXJ9TrBefXaSfRE3l6gVa7yLBJd/c=; b=B3ENtbTCSSQOFOcvRkSkBiMDfzo42tjivUqD14qAYMASMD4ZuFqpFYPoYAxTIK/amt y6fipK01f9WmBg7w8Y0nZnajLSLECtJwSJXUwVzlC4PCaDiixY0OQCrzb3ZG1S11cVMU /pCqbHFdCHtBGS2frtzgwINseltY37W0TTxV+Jo4Lf1iCkWqZAe/Kg8WNrg/LS8il0/F F5ZlIORYOmUxzQqXABtBv1pwk/MExvOgIgb9PZqauxBQzflvCHIQCepDLGUE4GA2FTCx r78qnbR6Upff24U4sV83vtN2019hoL2gLFZv7miES6DKd0awWVY5vpkYNihNIFnSN7km b38Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@google.com header.s=20161025 header.b=RuOUh1XY; dkim=fail header.i=@chromium.org header.s=google header.b=bj7KgsR4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y3-v6si10243989plk.11.2018.03.30.21.58.50; Fri, 30 Mar 2018 21:59:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@google.com header.s=20161025 header.b=RuOUh1XY; dkim=fail header.i=@chromium.org header.s=google header.b=bj7KgsR4; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751352AbeCaE5G (ORCPT + 99 others); Sat, 31 Mar 2018 00:57:06 -0400 Received: from mail-ua0-f194.google.com ([209.85.217.194]:44989 "EHLO mail-ua0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750776AbeCaE5F (ORCPT ); Sat, 31 Mar 2018 00:57:05 -0400 Received: by mail-ua0-f194.google.com with SMTP id s92so6315075uas.11 for ; Fri, 30 Mar 2018 21:57:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=c9R529rVbkgpTPxXJ9TrBefXaSfRE3l6gVa7yLBJd/c=; b=RuOUh1XYpaz06BTnlTE9QmGYIYhlO/88kBk5bu8V1qkme8mpiJMdp0z9DUIH3aty9d xl3VM/8U8Uc4zSa0GN2AWEsMoOHiLDWIv7jBdMCHRCPFTnSgIuhoG8spYihbM4kO2fL9 w0KIMF0dMR63KQfsXkP06lVtRMfLAAsNft1EgUkvIJ4USRb9cfMzQwNru10gbFtk1Kil yGNrIL8pcjoK00tRkH5bUcj0SUA4gkeSKpoZzdfcCVEmOkIgFA9umlQd6vzAWwU7BRTM iLOlacpTv0w/TY/GuJuM5wbCF3UXYPRozQaseyCSVLLEegv+vYgEI4AkkooJ+n1IAyUv vhNQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=c9R529rVbkgpTPxXJ9TrBefXaSfRE3l6gVa7yLBJd/c=; b=bj7KgsR4sRaGJ3Y2c/Zst/yCYfYwW/Fq3xKY7pk3d04Haj2doDbOiceE45qJUE8rpg Xain3DmfTeqtIv1lHnmrmoPMyKtPUhR4MFJvbf8xMLr6ahZv671LOIZfpF7ZwQDMhooq D6n5xaWri4sPcOtsmE8Vemd45V95uULw0GaD8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=c9R529rVbkgpTPxXJ9TrBefXaSfRE3l6gVa7yLBJd/c=; b=gElC9a75Ol8QDqTn0X7RT27FOmr/dWDo5+LF0qGD+yv+DMxjTmKf9mP0x0b4J7iRtS 8dWCTa/4VL/wONHwa9jJZSPIxj7bMEsXEmElypIGUiIkBAH5lbo8ornv6BpzmB5jD11f YNGvBBLsCkSTOFa7VBr0wS2sFR8xzKmZLHw0ov232vrdDDz8FxZ9II3RqYKBX9kL6HbJ YbLABMFjiZsuoDIPW0yRnio3TXlO2SXQgcaov/tnI8t6Zyi5Z2pbg0unrEika3A6yyTG XvMxFPCNpMlb4vigW200YT0rvdS11a9N8iUOKKZLBXHNc93b9UFopMovcIYTZx3Z/N6s ImBw== X-Gm-Message-State: ALQs6tAe42eC4Gt8FlWu6BIsGmrix56k+DIPiM65VApgahesCLzU44jW qYHuOCovox9Ecf+sYOLrqXYq/1t4bPtRW4nYiEjd8A== X-Received: by 10.159.45.149 with SMTP id v21mr156526uaj.176.1522472223857; Fri, 30 Mar 2018 21:57:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.31.129.9 with HTTP; Fri, 30 Mar 2018 21:57:01 -0700 (PDT) In-Reply-To: <20180327054748.jx6mzywguuqfkqpv@gmail.com> References: <20180326221554.GA45166@beast> <20180327054748.jx6mzywguuqfkqpv@gmail.com> From: Kees Cook Date: Fri, 30 Mar 2018 21:57:01 -0700 X-Google-Sender-Auth: dp46AQF17_KdvWwnaajxP-WTdvE Message-ID: Subject: Re: [PATCH v6] kernel.h: Retain constant expression output for max()/min() To: Ingo Molnar Cc: Andrew Morton , Linus Torvalds , Martin Uecker , Josh Poimboeuf , Rasmus Villemoes , Randy Dunlap , Miguel Ojeda , David Laight , Ian Abbott , LKML , Kernel Hardening Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 26, 2018 at 10:47 PM, Ingo Molnar wrote: > > * Kees Cook wrote: > >> In the effort to remove all VLAs from the kernel[1], it is desirable to >> build with -Wvla. However, this warning is overly pessimistic, in that >> it is only happy with stack array sizes that are declared as constant >> expressions, and not constant values. One case of this is the evaluation >> of the max() macro which, due to its construction, ends up converting >> constant expression arguments into a constant value result. >> >> All attempts to rewrite this macro with __builtin_constant_p() failed with >> older compilers (e.g. gcc 4.4)[2]. However, Martin Uecker constructed[3] a >> mind-shattering solution that works everywhere. Cthulhu fhtagn! >> >> This patch updates the min()/max() macros to evaluate to a constant >> expression when called on constant expression arguments. This removes >> several false-positive stack VLA warnings from an x86 allmodconfig >> build when -Wvla is added: > > Cool! > > Acked-by: Ingo Molnar > > How many warnings are left in an allmodconfig build? For -Wvla? Out of the original 112 files with VLAs, 42 haven't had a patch applied yet. Doing a linux-next allmodconfig build with the max() patch and my latest ecc patch, we've gone from 316 warning instances to 205. More than half of those are in include/crypto/skcipher.h and include/crypto/hash.h. -Kees -- Kees Cook Pixel Security