Received: by 10.223.185.116 with SMTP id b49csp136260wrg; Thu, 8 Mar 2018 14:19:10 -0800 (PST) X-Google-Smtp-Source: AG47ELsgI6V6vO2UYI4OcMW+NUU/AUQcbaFfwwhfVKQphDx9RVKArv5UtZbb/GUiTFDsv9093/Fw X-Received: by 10.98.70.198 with SMTP id o67mr27473894pfi.173.1520547550567; Thu, 08 Mar 2018 14:19:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520547550; cv=none; d=google.com; s=arc-20160816; b=qY0JT3sCYdM19xW/K893KwTZKZ6yBd1mRnF1C2FcRZoD1WuW5pUrenY/dYWL/tVn58 p8wqFG75Cd51XQj/9neTgoztv48SFS4kxWF0GP6rL/zGlVfkJAWA+GcF2mP3zWOlTr49 4uFMzxCjChmK3lTTU33Pn7ru41ce83D94JQCWsejt1qa3vlvC8R/PmcfP4sqLmoh4aPR ke2B7GpaOLGesEG2jmOPYOck4ZtGIkuCW4OkeCm6eD43MMOzL3d4h2vHDCCweWS2nIKK 6tVqARsQ9EW/yK46ZP4da3QiMjhIqdDELvZLipsfW7hNvUeAUo9bZHp5Lxg2dg6yXWQb ryLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=zukZ1LIY9Ls8uVk3iY7ZhpLiFnv7N3HbWo3YJ12MA60=; b=wpYIxoUe6gIPCkV1TXzezy+LY53kLJHofowXRFOcCp2MXiQqdgoDvN0RSzjDYHQ/AG T4CZ+yZqZvDsFbWTe+eucHPMutz3icvgNnbu3jEw1pcDI7Ob6HGHowBjmgWGXeRAM16W e7CVGXVL+gmLHI3HgFhPdas7MxFiLOKGzyQnPZ22H8PfLj9DS03SonUx7qCBAlzVi6Oq +3oPjlr2XnYPPKcj82XeRODAo4nUU4sCbQy0fxlURPIJbjZtiLDDeGzc+tCp3DHVZbYZ 1Rn2VM71Ag8fw6hMuydszWGw2Hrb2mqRb1KkiHmldakTHOUvMT+e1fpDijRsN+prJV/c kvlQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h89si16638183pfa.182.2018.03.08.14.18.47; Thu, 08 Mar 2018 14:19:10 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751068AbeCHWRp (ORCPT + 99 others); Thu, 8 Mar 2018 17:17:45 -0500 Received: from benson.default.arb33.uk0.bigv.io ([46.43.0.16]:42259 "EHLO benson.default.arb33.uk0.bigv.io" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750883AbeCHWRn (ORCPT ); Thu, 8 Mar 2018 17:17:43 -0500 X-Greylist: delayed 1045 seconds by postgrey-1.27 at vger.kernel.org; Thu, 08 Mar 2018 17:17:42 EST Received: from cpc91198-cmbg18-2-0-cust103.5-4.cable.virginm.net ([81.98.98.104] helo=dagon.hellion.org.uk) by benson.default.arb33.uk0.bigv.io with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1eu3ZA-00057b-Md; Thu, 08 Mar 2018 21:59:12 +0000 Message-ID: <1520546351.23648.32.camel@hellion.org.uk> Subject: Re: [PATCH] kernel.h: Skip single-eval logic on literals in min()/max() From: Ian Campbell To: Kees Cook , Andrew Morton Cc: Josh Poimboeuf , Rasmus Villemoes , "Gustavo A. R. Silva" , "Tobin C. Harding" , rostedt@goodmis.org, corbet@lwn.net, Chris Mason , Josef Bacik , David Sterba , "David S. Miller" , Alexey Kuznetsov , Hideaki YOSHIFUJI , Ingo Molnar , Peter Zijlstra , Thomas Gleixner , Masahiro Yamada , Borislav Petkov , Randy Dunlap , Ian Abbott , Sergey Senozhatsky , Petr Mladek , Andy Shevchenko , Pantelis Antoniou , linux-btrfs@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com Date: Thu, 08 Mar 2018 21:59:11 +0000 In-Reply-To: <20180308214045.GA6787@beast> References: <20180308214045.GA6787@beast> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.26.2-1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2018-03-08 at 13:40 -0800, Kees Cook wrote: > > +#define __min(t1, t2, x, y) \ > + __builtin_choose_expr(__builtin_constant_p(x) && \ > + __builtin_constant_p(y) && \ > + __builtin_types_compatible_p(t1, t2), \ > + (t1)(x) < (t2)(y) ? (t1)(x) : (t2)(y), \ > + __single_eval_min(t1, t2, \ > + __UNIQUE_ID(max1_), \ > + __UNIQUE_ID(max2_), \ min1_ etc? Ian.