From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F9FB2882DB for ; Sun, 14 Dec 2025 12:59:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765717152; cv=none; b=ABno9bK6JIg3zOfawjagEmkK3jOdyG4CwWDSQ/ltWk+LV+uPRt3V5vgcOKHTIca0uJikp62YUIEkyTMjE1M7lpXRcQV3lQMNPJ2uVa99tGjwlAxpIzNsv8CQYX22ELgAAUWsS683sxCMiErvPbXTuROVcQEMBDGZTDGUZWlGhxU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765717152; c=relaxed/simple; bh=xMEGH4NweNU1xqQFtUTgaFs29K3lMJGSbnOZdnhJmsE=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=D96omcQqAbURMX9slC0v5hUpIM9l7nXbib7Ryhz2rDSmBc0g+HjHtCSpSnQJ0aMx49CgUAAcTW8409PGcBg5Vo4TiZP0DQirZk61YvA8T4MOy4pPXcb3mI8xD9AXv3AFO8iMeFAcXAnprjTrhmlktm/EEIQDRCeVeUdrUypdyfk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Wh+eU5mm; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Wh+eU5mm" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4777771ed1aso20106095e9.2 for ; Sun, 14 Dec 2025 04:59:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765717149; x=1766321949; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=0bB7Mlw/k/LFYE5b/qYrx7BWAqAqgGsuaNPO4jblekM=; b=Wh+eU5mmMK1OoDwAKk+GjJ57oIqHGB7XwOHAZ7aB+k+c9LJoZj+Hi4kw9JN0QdmIrP s+Ov9KAvy20/f3GEyrIKdPOOZ0h5QdNpKWV1rg5aQ1hvINF/DGXpE7ZXUXhSw3zRsbu2 jmCqUV/uHKUGDJyLuYtivNaRCMJtFzdUBdAKJ/jCZgNePxQHXkBMgMeNS+Y1WLsFF8ny IilQItB9BplSI6WIRH36DBngmop6bVJ/kqhv5GRnmBF+MPLqnrw+ZiXKIgELe0nlklTp 4ygRRbsKqe18fFP6nKCD1VMiAe/PlmNr3O0BJqcd0G7UdkGhdh+kSZUhilicUS7Pigum 8ZuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765717149; x=1766321949; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0bB7Mlw/k/LFYE5b/qYrx7BWAqAqgGsuaNPO4jblekM=; b=mF06hyZ5ecbRUrqJFT9XuG2C6BxqEIiSAE943GndJKIz9FuKGTtneoiHCjVpyD1Lnq snsnr1m3xEFazue4LRt+c0oo+KMmd+HTlYq5E1k3JXZfBM5Xm3n47uD2A1gus+M7yBOb ojz6ldOTpVZ9yoMBGNcvgmkCacz8rKANDkQu51i0aZujShUX5A328r1fwljVBbaqpl4X 55LAhcJfQx4b0PApRvE0XZ7F3zx5PKOG/7dGCeKQ5X4FSWxeZLYRJp5VPCgS3cR8TD5E vYnET0CrB7BW/KcZLuMToqzPBKF8QHgJpEKWn2CEN4UcRcknbYA3dg4Ye3wO7a42Xqyh V0yQ== X-Forwarded-Encrypted: i=1; AJvYcCW2StuNiYK1TjrVn3X6ZnXmSfOKaf3ln8EZnBKPnVvM3o3Z5K9fTMTDXqNrJsuKzcnv7cR+QsuWEdE64W8=@vger.kernel.org X-Gm-Message-State: AOJu0YwF05EDczobteVsn0URpbH9OYZ1eZn0o1IMHJ3OSt4WaZhgmTDl IBrFmT2j3T+LOp/elPxV7I+J2YH/PJqpbv2X+h9IrWHc8VE/0R5RE1BKS8PQeA== X-Gm-Gg: AY/fxX6NVsqCwyNfLzofQg5NJ3cXL1r8U/LADveOM1mvOZl1jUF9UBtG8dk/go2tODq G/X2EI0uygQ9wVVf7xlsDnQ9tBTj1opzs+cpbD7LEgh4mw+EBG8mMXuqDmptmj/NVOWAimjP5TX HIbF1TFPLsq/wsEUYWVGu0SjgmU+1NeHPTg1R9Ib7gXwMtOcyyxEjS1WuQDESA/LG8zo2Q8Kr0o V0is/GkIbZ8WmxXCxWeaYFlXh81fc55bL1N7hqXqaNQNGOLzCkO8oeQKef4aahMv5qnKd7K0fud Rve78j5QHxhrB1qiAfYz2FkWvwzE21fBYNC3bnfTg7JYa/SL9UfFlfUjgFMFo4I0ZftdcL+DBYw dWKD43B0IcX5mdDbskWqNNXq+XUfQB58WBkmHuMAp9TINT8QJXHz0KiuXZrQFerhpB+7ld75AaZ kCwBTaw4POlwzzlQMHapywxz1U0imdxbiqZHi833BB5BvB6ewpEOEtyRy1fzXtAljEfnNcpFyo X-Google-Smtp-Source: AGHT+IE9mNnuMDVwglGrvGw2yTjbcynHYB9CF2CMUg4xIjOi2ZyTS7PoXLiWyXTcksqn0f/3QYf6yA== X-Received: by 2002:a05:600c:6291:b0:479:3a2a:94e7 with SMTP id 5b1f17b1804b1-47a8f8b1449mr81152125e9.10.1765717148670; Sun, 14 Dec 2025 04:59:08 -0800 (PST) Received: from snowdrop.snailnet.com (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a8f8e90f2sm129987495e9.13.2025.12.14.04.59.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Dec 2025 04:59:08 -0800 (PST) From: david.laight.linux@gmail.com To: Kees Cook , Alexander Lobakin , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org Cc: David Laight Subject: [PATCH 1/1] Fortify: Use C arithmetic not FIELD_xxx() in FORTIFY_REASON defines Date: Sun, 14 Dec 2025 12:58:57 +0000 Message-Id: <20251214125857.3308-1-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: David Laight FIELD_GET() and FIELD_PREP() are mainly useful for hardware register accesses, but here they are being used for some very simple oprations. This wouldn't matter much, but they contain a lot of compile-time checks (that really aren't needed here) that bloat the expansion of FIELD_GET(GENMASK(7, 1), func) to over 18KB. Even with the 'bloat reduced' FIELD_GET/PREP they are still hundreds of characters. Replace FIELD_GET(BIT(0), r) with ((r) & 1), FIELD_GET(GENMASK(7, 1), r) with (r) >> 1), and (FIELD_PREP(BIT(0), write) | FIELD_PREP(GENMASK(7, 1), func)) with ((func) << 1 | (write)). The generated code is the same, but it makes the .c file less obfuctaced, the .i file much easier to read, and should marginally decrease compilation time. Signed-off-by: David Laight --- Note that changing 'const u8 reason' to 'const unsigned int reason' generates better code - in this case removing 2 instructions (one in each of the called functions). include/linux/fortify-string.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h index b3b53f8c1b28..171982e53c9a 100644 --- a/include/linux/fortify-string.h +++ b/include/linux/fortify-string.h @@ -2,7 +2,6 @@ #ifndef _LINUX_FORTIFY_STRING_H_ #define _LINUX_FORTIFY_STRING_H_ -#include #include #include #include @@ -10,10 +9,9 @@ #define __FORTIFY_INLINE extern __always_inline __gnu_inline __overloadable #define __RENAME(x) __asm__(#x) -#define FORTIFY_REASON_DIR(r) FIELD_GET(BIT(0), r) -#define FORTIFY_REASON_FUNC(r) FIELD_GET(GENMASK(7, 1), r) -#define FORTIFY_REASON(func, write) (FIELD_PREP(BIT(0), write) | \ - FIELD_PREP(GENMASK(7, 1), func)) +#define FORTIFY_REASON_DIR(r) ((r) & 1) +#define FORTIFY_REASON_FUNC(r) ((r) >> 1) +#define FORTIFY_REASON(func, write) ((func) << 1 | (write)) /* Overridden by KUnit tests. */ #ifndef fortify_panic -- 2.39.5