From nobody Sat Feb 7 21:05:39 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 A0DB72FABE1 for ; Sat, 20 Dec 2025 21:56:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267784; cv=none; b=Runh4bBNCfi+a1rwnouO/Cmdep8W3UL/oGxU6p9NT//WZTzVUjky9o0lm5mGQqjKkC+honGmk6+OpoTbX6YFJh7RaAbPDL00rY/4vKWTZQ2y0s4UnWDfgaVrLM1+yZkOVTc7UAkTrfmcrleM6K6oYURjPynEqhdeugOpbxTJBuQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267784; c=relaxed/simple; bh=Fx5aCZeeMt9ZYBMbzATnVAKHustBXZbecoBJFoXPz2M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JzeD3HUSFhrSdoZNmXS9sBftvpv81BGNyCwuwhIot5wzXv77sM6XsFLE3mcHHIUrRgdOcPz2yPQ3kW0EfLFFI+pVQfn8k69Ct1DSRBarujUr7dgt/KaVVZPFnibXStxieGkC6N6u9bV0J/WLjz5ca/euGenK6Y1cEugJxIdjjPo= 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=GcY3QKZC; arc=none smtp.client-ip=209.85.128.44 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="GcY3QKZC" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-477aa218f20so17789635e9.0 for ; Sat, 20 Dec 2025 13:56:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267781; x=1766872581; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=B8Osr+F++GH9FA79jXiI6Ov9vv1IZU2/NVoXhdno6Hc=; b=GcY3QKZCyMO1fvZe1cuJITg3xnPek8o0NviFdCOJYmm3qQOUzgMqBLL2WwSC2iIYJq 1dWNx0NMvvxj2AvpLa+dLDPAvuFDC8dkpsLhOgGa6JgGUsYjwaX4YevLeqapqU0ZKJed wJZ26E23lRXop2uizlfwnbaokKm9tXGj/zgT2YZlMPPwLdCd+gnGn0MyZpdDDcZC46yB UVaiznsV7JCZE8LMmHLrAH0UxBQEgGG8uRvfq/QWwkNwbcBl+wgJImECBcakvM8a4yy+ oR1YlXX4GmrAP1QhH3u+kspxdwvO2vYSIvK5kXNLbaOdJMtFA9wnb8kue74UbtPuD8/J FrDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267781; x=1766872581; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=B8Osr+F++GH9FA79jXiI6Ov9vv1IZU2/NVoXhdno6Hc=; b=nbnA2EmtT4VnucN03fShDJ1+PjGqNBtoWn/ieVxDAjZB7PsIlsyH3j5o/ZtD+Pj2E4 C8jIVoOeNOS7rmt1iRJ44JSfUCsuBRqhOkJ/XWcfsfhp6LfYdU7UUitxtKuc0+yCVhxG u1mHFMm42csd5l3vfANvmGTtH5keGxJ6EciPGTA7CoY0SstCelR2z+3p66bKLaSeNdWc 30ib8pKy7lpbRRFe0mAYfvltpwwIv2/8bfbg4tSWVHTf56A5uyF+gqRwJj4ZQ1swOJtY WvAYX9MI3hOZ24wtCaErOCs/pTqGWkr2YyggMyq8sJZI/vIIYgyUFUwKI2XTfIiOIHO4 NnFA== X-Forwarded-Encrypted: i=1; AJvYcCVyNwDX+GvvPCJktgszzn0NQ1kTJuqKxBDide2jskHEMZtEcAVMAaZBCLrMmb9OFD98+dEMrIBtzH4KaCY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+cXpO+nGXe8QZRmNh3/wu7DijseMSIyIhLUitfFgH52jw9pDI L8XtaF+FtlfNOVex1upW3SECBZoWL4xxnKT4SPrb4RQrce/7CLL5Sp+szRVyhA== X-Gm-Gg: AY/fxX5g7OLGfBCxaP5ZcCuSO/sxdq1zPyMyWcP3EuHDSgu7TfyFEeOKAro58wHFuzu 46BLkCY8jlFKSEFx0GvLXqJ/dn5N7UiqAjINndcBidGKurTZWMnNJEGpZT3gYcd8VXJsDq61yJt 7DiqFZOwOhTTkCaSEVbjR1QBaWhc1TdB17Rr8g4VN8RhCzBwRHN0f17yTlJc5n6P95AmbPgLXZx t1bPr7JcOxw60vfOEHEsvz9JZgqIPjo+TNiRLni6uvgsg9YDJLVZKLaeCGeXHU9WkHk4H3OljxS bQErTsWFF4x6w/tmF4f58QWY8PERbwJfwFch8U9LIURkWKMqYXDHkNbuKYhEFbOOuGWh7SLA7DO si2xm0ysUQyuET8lndo4r4wc9PRj2+I//lcQ8gQ7aCENhKHMFnfE2acOTOxpiP8+QOckCL8qlMu Cv8XZIkYYN4GbwEiLxu/PMJMAKG7UKQO9whN4HoCKvyihCOpCfMiizROar1GcEc30PPkcgn3fF X-Google-Smtp-Source: AGHT+IEu54akV9bII+jyzLpZmNjsWtVPWap9kKVP9kqrtqMRobJYgoKOXsbf4rnQUhfuMV8qgeTbOw== X-Received: by 2002:a05:600c:1c21:b0:47b:e2a9:2bd9 with SMTP id 5b1f17b1804b1-47d19583142mr76281945e9.31.1766267780991; Sat, 20 Dec 2025 13:56:20 -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 ffacd0b85a97d-4325c052d34sm3601755f8f.25.2025.12.20.13.56.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Dec 2025 13:56:20 -0800 (PST) From: david.laight.linux@gmail.com To: Thomas Gleixner , Linus Torvalds , Peter Zijlstra , Mathieu Desnoyers , Kees Cook , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, Al Viro Cc: David Laight Subject: [PATCH 1/5] uaccess: Fix scoped_user_read_access() for 'pointer to const' Date: Sat, 20 Dec 2025 21:56:04 +0000 Message-Id: <20251220215608.434614-2-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20251220215608.434614-1-david.laight.linux@gmail.com> References: <20251220215608.434614-1-david.laight.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Laight If a 'const struct foo __user *ptr' is used for the address passed to scoped_user_read_access() then you get a warning/error uaccess.h:691:1: error: initialization discards 'const' qualifier from pointer target type [-Werror=3Ddiscarded-qualifiers] for the void __user *_tmpptr =3D __scoped_user_access_begin(mode, uptr, size, e= lbl) assignment. Fix by using typeof(uptr) in that assignment and changing the 'read' functi= ons to use 'const void __user *ptr' rather than 'void __user *ptr'. Fixes: e497310b4ffb "(uaccess: Provide scoped user access regions)" Signed-off-by: David Laight --- include/linux/uaccess.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 1f3804245c06..c5d5f2d395bc 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -650,32 +650,32 @@ static inline void user_access_restore(unsigned long = flags) { } #define user_rw_access_end() user_access_end() =20 /* Scoped user access */ -#define USER_ACCESS_GUARD(_mode) \ -static __always_inline void __user * \ -class_user_##_mode##_begin(void __user *ptr) \ +#define USER_ACCESS_GUARD(_mode, type) \ +static __always_inline type __user * \ +class_user_##_mode##_begin(type __user *ptr) \ { \ return ptr; \ } \ \ static __always_inline void \ -class_user_##_mode##_end(void __user *ptr) \ +class_user_##_mode##_end(type __user *ptr) \ { \ user_##_mode##_access_end(); \ } \ \ -DEFINE_CLASS(user_ ##_mode## _access, void __user *, \ +DEFINE_CLASS(user_ ##_mode## _access, type __user *, \ class_user_##_mode##_end(_T), \ - class_user_##_mode##_begin(ptr), void __user *ptr) \ + class_user_##_mode##_begin(ptr), type __user *ptr) \ \ static __always_inline class_user_##_mode##_access_t \ -class_user_##_mode##_access_ptr(void __user *scope) \ +class_user_##_mode##_access_ptr(type __user *scope) \ { \ return scope; \ } =20 -USER_ACCESS_GUARD(read) -USER_ACCESS_GUARD(write) -USER_ACCESS_GUARD(rw) +USER_ACCESS_GUARD(read, const void) +USER_ACCESS_GUARD(write, void) +USER_ACCESS_GUARD(rw, void) #undef USER_ACCESS_GUARD =20 /** @@ -752,7 +752,7 @@ USER_ACCESS_GUARD(rw) */ #define __scoped_user_access(mode, uptr, size, elbl) \ for (bool done =3D false; !done; done =3D true) \ - for (void __user *_tmpptr =3D __scoped_user_access_begin(mode, uptr, size= , elbl); \ + for (typeof(uptr) _tmpptr =3D __scoped_user_access_begin(mode, uptr, size= , elbl); \ !done; done =3D true) \ for (CLASS(user_##mode##_access, scope)(_tmpptr); !done; done =3D true) \ /* Force modified pointer usage within the scope */ \ --=20 2.39.5 From nobody Sat Feb 7 21:05:39 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 5CA7422257E for ; Sat, 20 Dec 2025 21:56:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267785; cv=none; b=cWxYzk28Ttcoj+PF3JJ1el+/rs18bGBYw3XyQ/CZLd0nUJeyFoJFB/UPc8uZNLyuSQLG23fMgeJhTgHae6vckxoYowIJE3KxXaScG4YXTZJR5E1ZSK2/Ss/cPppWUS2I7miYp1JAkobt5nwsbd53JY4QQ0j3DQVXf0B/mEU12s0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267785; c=relaxed/simple; bh=aQdQFCj0u/DYmnpX3yxUKCpgX0hAxOPpw7gffako07Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mHhmSlBoyfDQNTF+HUGmVn7rMaiay0uqjPM4c+J+xpBit19Cx/HHejxlzetLx2yEUlBiLZzmaaxfRvCpKEF06YmDm4lcgDVHEmuKyUzgG0B/30lwzJFGNKaWm96wbcJxggI9yuYzw/AdBtASyu1808hplreduIcmEZtbg/XI8bE= 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=SzLq1Aey; arc=none smtp.client-ip=209.85.128.54 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="SzLq1Aey" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-47755de027eso16665475e9.0 for ; Sat, 20 Dec 2025 13:56:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267782; x=1766872582; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TOBZQapw11hNFXG1jtZUyB8kVQYLqlZzSumqk/Qw0PM=; b=SzLq1Aey7Vm6D5as2SXEZf8o+PBNq5uXQZUPWjVLwU7nyS1VgH4HtNCnIaduhz/ANY is1nzukgl7BWgy1HoaIqjRzYC20i0fgFeb9zpQqbme0YpROgd+WlGAzPtSgsRTj97xNb 3P5AXeK/Rlj0Te+HljSA8NUgN4xk+lCENL5CquGw0Vl/dsnl1NUnZMeiH1TgOwCbaXaz 30B5fOSigWt7UwBMr6ff5xsatiNmeqRd768oikCvvBQ9WUjJ8xbL7pM//RxWCFJcXay2 mmjXsRIaxUHt5RK8YnkenRj373LoptDZi/KBoFzIb1BHI2DOF5ZthdCWnP67pnVSMSdi ZpwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267782; x=1766872582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TOBZQapw11hNFXG1jtZUyB8kVQYLqlZzSumqk/Qw0PM=; b=XCnLmaloYrh57kTbRA8+7bh5UNxOne0WrC/JUaDYfhVpeJmC4hyHR8zNxkvyvCrL+I sFp4gwpn8C6TyDpoY9ZwvJhFXB7lDH6XROHhBz+hmh9fCyPIGlzNKusvlS+m+vnTIoIn tu58M9uKN4+QtLff/oMA6YTaxtl50QJgzRM0EusJ5gKrOYW6POoPNI6CSpWPhYj4w1Gv 93WQDuhAmRhv9B2crDIPx0/Chyuq+7QO9kBTbz/q7VA5YtJXT1dIhFC8zMT9fHUIIK2Z botC3ZUynD8acx8KnZGtogn1pIBrhRBOmc1BGsiEVSjFAQuDYMAvSuXJEYwOKdXW8Cba jF2g== X-Forwarded-Encrypted: i=1; AJvYcCWKwUOFKjIclRp+MuQ3Chvlfabb84AYmnD/WL+iliHL0No242Jr2ihu9WpvZP7E5I4Tc8kS8GRlcbf6niw=@vger.kernel.org X-Gm-Message-State: AOJu0YzctG4nNPN/Xv8UY9eHOZC1H4EWglyZJaodjRqdWh1GV5tBrT26 EFfBW4F1XdkjwW4Bq9Ujep6isCTyZweZj3yAstVAKezyYEo+5/8DRY83 X-Gm-Gg: AY/fxX5GtRllecr2remTfCjwTUvW6/6qvQI22s9tJdCC2pvtS13zMTZpo00kW1SdN1P YAkjvoke5zXSP0fspMkGOWoXf/sipXLEvat455+SOTsmWjwpApSNXmRlDiSccaDHi2etJLpkfJb Wm6LHnFUH24oZBCmWC9wXpnzXO6T7Pfh1gxYQmuLBgft+JhnuFhiA+GV2A3YPa4UhMvgIPu+noU /aIKQBtDisIr4m3d9uI5JRhVYWUclXJ8AIZljDd8QnhTetGUCHWi3/acqQH8DJjLyYcnFIuRbur h+7pMSl+6QFxRXuPZOnB4JPS+9JL1GjtXCspvDuRVUcodMWAaEX4UAsPkyWWMwiR9fNKDGm4n3t vVyU1f0fSm0mViMCTUWzkbi2nv6iCUQg2lx7ebXQ6hhLTbgo7vNGUqo/Rx1fZMAXpoaosSBbsJg MnzytJSHoBRfO8zU8CdC7FjYhsQC2R/HFaFiCpG5cyhFl4bhdQejEepj8VjC8UGIXpTyeKMpZf X-Google-Smtp-Source: AGHT+IHShGsV361GAb6wZgyQyKUEthwNK7Hxfos7GBUE3Ck2qGgEI3QFOUr+7SqbRjn15NdhnqZeSg== X-Received: by 2002:a05:600c:828c:b0:479:3a87:2092 with SMTP id 5b1f17b1804b1-47d19598e86mr52887745e9.36.1766267781614; Sat, 20 Dec 2025 13:56:21 -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 ffacd0b85a97d-4325c052d34sm3601755f8f.25.2025.12.20.13.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Dec 2025 13:56:21 -0800 (PST) From: david.laight.linux@gmail.com To: Thomas Gleixner , Linus Torvalds , Peter Zijlstra , Mathieu Desnoyers , Kees Cook , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, Al Viro Cc: David Laight Subject: [PATCH 2/5] compiler.h: Add generic support for 'autoterminating nested for() loops' Date: Sat, 20 Dec 2025 21:56:05 +0000 Message-Id: <20251220215608.434614-3-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20251220215608.434614-1-david.laight.linux@gmail.com> References: <20251220215608.434614-1-david.laight.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Laight Autoterminating nested for() loops can be used inside #defines to declare variables that are scoped to the statement that follows. These are used by __scoped_user_access() but may have other uses and the gory details are best separated from the use. Using 'with (declaration)' and 'and_with (declaration)' seems to read reasonably well and doesn't seem to collide with any existing code. As an example the scoped user access definition becomes: with (typeof(uptr) _tmpptr =3D __scoped_user_access_begin(mode, uptr, size= , elbl)) \ and_with (CLASS(user_##mode##_access, scope)(_tmpptr)) \ /* Force modified pointer usage within the scope */ \ and_with (const typeof(uptr) uptr =3D _tmpptr) Signed-off-by: David Laight --- include/linux/compiler.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 04487c9bd751..da89a5efda5a 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -377,6 +377,32 @@ static inline void *offset_to_ptr(const int *off) */ #define prevent_tail_call_optimization() mb() =20 +/* + * Sometimes a #define needs to declare a variable that is scoped + * to the statement that follows without having mismatched {}. + * with (int x =3D expression) { + * statements + * } + * is the same as: + * { + * int x =3D expression; + * statements + * } + * but lets it all be hidden from the call site, eg: + * frobnicate(args) { + * statements + * }=20 + * Only a single variable can be defined, and_with() allows extra ones + * without adding an additional outer loop. + * + * The controlled scope can be terminated using break, continue or goto. + */ +#define with(declaration) \ + for (bool _with_done =3D false; !_with_done; _with_done =3D true) \ + and_with (declaration) +#define and_with(declaration) \ + for (declaration; !_with_done; _with_done =3D true) + #include =20 #endif /* __LINUX_COMPILER_H */ --=20 2.39.5 From nobody Sat Feb 7 21:05:39 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 1FAC22652B7 for ; Sat, 20 Dec 2025 21:56:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267785; cv=none; b=BpKKHY8oArcuU6DWHUaqnHgWeMZsG0e2N6Z2TS3EFxqdAjVuFKEViKTvYp6KFSnyQFu/cOQAAZdmgP5Cx0qu8mEfHKqqlCsZGB/pe1vXcFuKy5WfHOI5mX/bH4P61ffZWGf8KMzQef+OOMILH+PdolELCYbqffDsFKbQfOxuz6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267785; c=relaxed/simple; bh=Oidm8DV6oXpHE80i2rL3BbYaHeMTgxMXRuMNEofi8hU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=grVvBpE8InlBfUCpbKZ+FbwmQDUfZ7vB9yTLPiV78CPVqFYIcejfRX/tvBMu7vEqOJgU9fBbi40j++WsLyIn9i2Ovb+7O8Ow1baVyuZxBwFx/3T8a2RU5yzegHW6KSNlh9mbItCzH6HzQ/L/NWghOCflEd9u3ZuabSpRFxMHKvk= 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=I2ZeIdQ6; arc=none smtp.client-ip=209.85.128.47 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="I2ZeIdQ6" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47796a837c7so20164145e9.0 for ; Sat, 20 Dec 2025 13:56:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267782; x=1766872582; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=itp06tZNT8FGE8leG4kKklc3k+SPxyVzh2FPT8GGFTk=; b=I2ZeIdQ6Sl1a4g9dIT5t8tc1ctJwUZ1lOm4VtkOdkfSJmlHgVt++wiIUwl1Fq9ro5j RAULz0KZdBa32/jT3vH3aIG4R/6XQ0+Fo+cNXb6RnwsKxRKB4saiiK/vv3jIC2twEVxt +lMIS/iHAFAkZ0wAg5W4B/pSw2EI1/Xmpks6+u3iuuL9MOtqjQLX5WqSgHFP0J+wboq/ XwByax2vZusVmskQt4YEkTR0waROoY0U2LZxOj6teCFwA8iFiCc6lzRd4s4qYoCJEVyI HpkQKaowRIAyOf0ppKo2cLK9YSabXWRvSRtNq+jimSZRkwWyOe//n3a7qYXeYjFtg1qb A+PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267782; x=1766872582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=itp06tZNT8FGE8leG4kKklc3k+SPxyVzh2FPT8GGFTk=; b=a4ALQXTxV8Xw+xSJBdhA7MFuxuowqTXr4J8EMZGfivQHNNTljbL6N8R4otAttjz9NJ 6ngPQbuAso1vTajmudo7BtkJb1nLiPrPICIPsGVYwkFJWkixMNcTGJ6XZMoRi9DpZ19N CWqZRtouGm9BxJDQlbco8FTL5U9BFMTBuYumjAu3+xxWev7rUz3mWej5O9zq9i6gi4XC pJjn2NSdmnpozoEhgbuQxi4y8Yir8JZ5Qmd5EBzLEQrFOylFO6W3bv7hM7MtydJ7+PBA Yb2B+bz5Xj0lJwhQs98rOVJE0gxvF7k5EtnFk2IwJyALbE/5Xld6wMEaHS4xkto2Dcsv 2tfA== X-Forwarded-Encrypted: i=1; AJvYcCWAlS3PfqtA1ehowy22q4RtZFpVmucJ1TPJ9fccvhdzIb1Bg2HT2Y3p4YOw+rs3R1//78nPvQ8qrPaVEFE=@vger.kernel.org X-Gm-Message-State: AOJu0YxulYbO50RCUd6Zcl7EZdYYyh4IS1ChZs/Lx/6GPCtx7EJV4Pe6 QZH35xACR/Qv2HplQJ3vvOB9gpH9evf0jQNaIY6AsRdP5aQ54YTsOvoZ X-Gm-Gg: AY/fxX40Pqynf1px8yz5NBsicWoC91COytL2UotZQA2BTUBK8l15uqmp7woukANdYo7 402vc8hKrFEn8uXQtw2CCAkAUBcD9DAPgAc/M6N6n8+PRoGLhBqWHJTRhV+83FlY86PmLxBk0cn ubJ1viYmcf3IKHP2gN5GFmiqHcAySUf5e2w92RZeDLvfyPQeFp7X3xozSHp53/Os8PDfEeuEu0c KtoRgklbad6c5eW0U3okUZr1jQ12ioYYyVPXGf5v5zkCbELmehQOOaSBy/QFd/wUx6kjSdVYwns 8AGt6VaBm+RahAZWsEs2O8lYcGb5fyc4N9qek4Yf6WlC01umTmx+4RE0BcN3C2y/q4Z7uagwDal yDu0ZCtkasZ5OuSG2b2WkORdUmec6XXePN7RvT6pfFNAelJCL0MObGlIMMpdsiwhvslJFR25vN7 M1jE5zhR+Amesbul+/5AQtM7YEA1pfGNaUx+2SnqNdeC2L8BZUkKTHvQhpssXe48jkG9YNaGTl X-Google-Smtp-Source: AGHT+IGRznDP7O2FLvFlsVlKokPRLhTsReyNgzeIu3Zf2ecvIx0/z8KCHGXEJhCGwxamUAw1yHIh8Q== X-Received: by 2002:a05:6000:2387:b0:42f:8816:c01a with SMTP id ffacd0b85a97d-4324e701ea0mr7985145f8f.62.1766267782173; Sat, 20 Dec 2025 13:56:22 -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 ffacd0b85a97d-4325c052d34sm3601755f8f.25.2025.12.20.13.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Dec 2025 13:56:22 -0800 (PST) From: david.laight.linux@gmail.com To: Thomas Gleixner , Linus Torvalds , Peter Zijlstra , Mathieu Desnoyers , Kees Cook , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, Al Viro Cc: David Laight Subject: [PATCH 3/5] uaccess.h: Use with() and and_with() in __scoped_user_access() Date: Sat, 20 Dec 2025 21:56:06 +0000 Message-Id: <20251220215608.434614-4-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20251220215608.434614-1-david.laight.linux@gmail.com> References: <20251220215608.434614-1-david.laight.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Laight Wrappers for autoterminating nested for() loops have been added to compiler.h, use them to hide the gory details. Signed-off-by: David Laight --- include/linux/uaccess.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index c5d5f2d395bc..589cb2ef2e7b 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -751,12 +751,10 @@ USER_ACCESS_GUARD(rw, void) * Don't use directly. Use scoped_masked_user_$MODE_access() instead. */ #define __scoped_user_access(mode, uptr, size, elbl) \ -for (bool done =3D false; !done; done =3D true) \ - for (typeof(uptr) _tmpptr =3D __scoped_user_access_begin(mode, uptr, size= , elbl); \ - !done; done =3D true) \ - for (CLASS(user_##mode##_access, scope)(_tmpptr); !done; done =3D true) \ - /* Force modified pointer usage within the scope */ \ - for (const typeof(uptr) uptr =3D _tmpptr; !done; done =3D true) + with (typeof(uptr) _tmpptr =3D __scoped_user_access_begin(mode, uptr, siz= e, elbl)) \ + and_with (CLASS(user_##mode##_access, scope)(_tmpptr)) \ + /* Force modified pointer usage within the scope */ \ + and_with (const typeof(uptr) uptr =3D _tmpptr) =20 /** * scoped_user_read_access_size - Start a scoped user read access with giv= en size --=20 2.39.5 From nobody Sat Feb 7 21:05:39 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 A3E932F8BF0 for ; Sat, 20 Dec 2025 21:56:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267786; cv=none; b=EmilPsoU1UXMHpC+9gB/PeFeiu2hO1WjJAvmwO4U1owPUpdqA5sC0srYmWUYTXqzAvTUKTlftrJaVvEv+TnKrV5K3Fd1KrCv8rm9iKd6FrfFwgX4yijXpdxlFe138EagIeCgZWzdDZ8t/DrA36AdyS/cXpLqKfvr+M3sxQJrqyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267786; c=relaxed/simple; bh=lLtxAOVj0E/HCFGfp2Y1uRI37hsKIqZzaJIY5/DWKg4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UVbjnIn84fB4oWFGQHyer6w4GwOa3hIWdg3DjExi478tVncEizaNMkNAI1hw3P047BeogIwWLrxjyMIEAho4Is2NQ8pjVfFsxky8ET306vHO2zd4YZ5tFpkYZX/kNlfbkn8B26BLyn1RSITcCSdJm89Cin1oVlUs1pPSTKW9KMw= 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=iG2hKJa9; arc=none smtp.client-ip=209.85.221.54 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="iG2hKJa9" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-42e2e3c0dccso1846993f8f.2 for ; Sat, 20 Dec 2025 13:56:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267783; x=1766872583; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E5pz8lW+lTzRQZqpgTXzfgVq/vLzt1GAOwDRMxVJnhw=; b=iG2hKJa9CjqVR/giaSfMWEab4kLbXitsdJLaUgL++T0hRK03yNby1QpCNK7czp1osK ui6fgjT54JOEPWOs91ZtmbDoNiIZDEF8HjEumn0RWDvBXw04pUQq/21gZRoHgDj0lvRg 1Bh1Kofj2ofW+MQ6XjM4DXWzsRn66iIazIc7x5n2sDFvqP9R2D5HY3BSnRzqA5BuV77x xI6EovV40CBDyMTdO9UmEHW9tsw/erGFeUKO3L9cxHu4JfJaWAbpR9qj/j0VDyMu0ByY PFskvF8VK1BrQum2nDDihYRzsdZp6nNvyjA9zU/+iq1qvOU6H+pKMK3zIM3dGTuVT8XB y3LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267783; x=1766872583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E5pz8lW+lTzRQZqpgTXzfgVq/vLzt1GAOwDRMxVJnhw=; b=pQWpFYegV8N02L6xmKYBBs4MbjuH+6Nz0SmTb4/OtxNUQnvjxLxAKTmc1EnZly1ALV blpYfZ8S6/SW+mzX5Tuu+VUoSQckz3zpyIiO1pnRZopbtlgUxexyIb1N5HTSDk1dkrUk s8/QYr0j6AxYUq1pxx3sAx8AAE7c2b+Nxr0pGg6tE+AU2JGuaN9eYeazV0UZ7vaOd9QI Jm4cl0gue4ceSn/55Cns6rSmqWe8oPbNId/rLW+sEkdKaPwADPX1oJIKWnzu0k4ikiON 64mbbjgbvpbWz2YFn2r4o6PBN/nsi1Qt7YEPAC1bsqDMB1H4ntrtI3E2NxgEEp3IanU7 Osug== X-Forwarded-Encrypted: i=1; AJvYcCVZdX75jcdU2baM7SqEUMy5QItq/LWChs1LhNexrpkQg+Hs+7PT459LsBSHy35IC5R5BFErDe/0gK3KKug=@vger.kernel.org X-Gm-Message-State: AOJu0YwrABbUY3MBX+v3V6PWUb2hbSRRougP6/97Ag5naSL5b6mkyxcO vB+1UAJMbnjHmc12Yz2QU48CFiv/UUVqy6xsEXY4DC/Mpjau9/qir/0T X-Gm-Gg: AY/fxX4y4HCsLIBvw8d7kxm+gIZiql+/1mtJEbOa23lb6fnyzKfQY5lPjRBHJNT/fv9 aZeaAuspuUJatZKePjfFqPywG2Ct6N9cK04vyU/hRmKyv+z4l+kLlzWDNC/VtOGDOvCuZLRXAPc 8z5QR+W+Z0hAjwrKzIOjbyHl5D58Kx6N+BxiVIja3bs0cc9H87OUy2/hW422YuYSts3LwNDHf8m ncKTvv2iJ4JG8A0jjzp/gvzjlIJPZm4mz7Ekv60sSs9IuMFqn2Hl7QArD4p4WrigjIRPAeyMsMd j8EtvnfBVgPN2yOpqZ4XAJKODT0dp0vGZvfnaCse61ZagPplhDgTGDVmUIFN6QxoRDH/XJ41Gwv WppQdTKJa9Lmr+QTLHc6z0O5ySZW8MrJ3ZV04JZSbepg0Z7UlYulakPKmz5IUjUl9Ei1sQeAFF5 I9w+LxKtpCTQRcnGCvYsqSCMSvDNLjkvtTniSFKJWtR1mVf0UqJzVpFPWIrWS1ETs6vPXWW8yu X-Google-Smtp-Source: AGHT+IGp+INi5LLw4PUmXVrJGuVbDPQ2Xfj1cjuNOEwETREGTnByEF34uz9k2GMTHVLYSXXJJVG37g== X-Received: by 2002:a05:6000:2509:b0:42f:9f4d:a490 with SMTP id ffacd0b85a97d-4324e4c73e8mr7851275f8f.12.1766267782820; Sat, 20 Dec 2025 13:56:22 -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 ffacd0b85a97d-4325c052d34sm3601755f8f.25.2025.12.20.13.56.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Dec 2025 13:56:22 -0800 (PST) From: david.laight.linux@gmail.com To: Thomas Gleixner , Linus Torvalds , Peter Zijlstra , Mathieu Desnoyers , Kees Cook , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, Al Viro Cc: David Laight Subject: [PATCH 4/5] uaccess: Disable -Wshadow in __scoped_user_access() Date: Sat, 20 Dec 2025 21:56:07 +0000 Message-Id: <20251220215608.434614-5-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20251220215608.434614-1-david.laight.linux@gmail.com> References: <20251220215608.434614-1-david.laight.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Laight -Wshadow is enabled by W=3D2 builds and __scoped_user_access() quite deliberately creates a 'const' shadow of the 'user' address that references a 'guard page' when the application passes a kernel pointer. Signed-off-by: David Laight --- include/linux/uaccess.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 589cb2ef2e7b..e2ff4146c5d0 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -754,7 +754,9 @@ USER_ACCESS_GUARD(rw, void) with (typeof(uptr) _tmpptr =3D __scoped_user_access_begin(mode, uptr, siz= e, elbl)) \ and_with (CLASS(user_##mode##_access, scope)(_tmpptr)) \ /* Force modified pointer usage within the scope */ \ - and_with (const typeof(uptr) uptr =3D _tmpptr) + __diag_push() __diag_ignore_all("-Wshadow", "uptr is readonly copy") \ + and_with (const typeof(uptr) uptr =3D _tmpptr) \ + __diag_pop() =20 /** * scoped_user_read_access_size - Start a scoped user read access with giv= en size --=20 2.39.5 From nobody Sat Feb 7 21:05:39 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 7DF812FC881 for ; Sat, 20 Dec 2025 21:56:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267787; cv=none; b=fTnNnhIDFofXW95Z3D727wcn54R1Crq3JJdOI9cyNQuoN7BmVfDhFMgrku2qfwJKB+xtOhM23jcM6E/doGx5WFqdvxZQXaoZTQCqzoqAT5dMiwRZitLm9GMT2i/Uaf5XbZHAE/sYbXdha5pqXUROqnm8CwrSYCgGlKoY28qr9mU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766267787; c=relaxed/simple; bh=NK+TyB8fh0yFVhHCW1r2ai8ar6Mx4HmgkCCQoiXHLNw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MvQs+iz3xOmN7LF8GxIGTdjdOWHhBWi4Ep3GaytbPvPC5ST41kyeSEiJKIhcY1hNaSxUCIVpxB+iWPhSqRxS5gdPxkrs+Ai7WyKMSzKNwMg3QlQCL2MgR+/iQWeBtTroYHiZ3CCbJ34K4DDBGJAI3jJlrZR4wUrhHb8a1+wm1KM= 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=I2UR5tVN; arc=none smtp.client-ip=209.85.221.54 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="I2UR5tVN" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-4308d81fdf6so1335122f8f.2 for ; Sat, 20 Dec 2025 13:56:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766267784; x=1766872584; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dcTMb0ctL2F4sGzCDrh7YS5WyYCOXEQhbc7VgNfllQo=; b=I2UR5tVNoZvNXnPSv36BujXM6aR9a158/VeimVn4PtRwZv23ivhYkJCvhuOhYNduBU MRP2MScdQEpOttE3xpwK24pTaughKLaUEUsMgYvl3xxOl0w+WlHsejsLHrHq59iqZDli kGr6uasjgwwtnphKIwV+SWA32BuYiaF7ryxr/wa8HqyHy/TvceP9nB52ePUYLWQHPBP3 ZujhACad4dEQDRvvWx/b4uZZw5zz4zno9TYz6E6MQifWyfQkA7UUzGPRO5uK6sBa8l2F Ad9r+N/Pn1Srb4JF66BSbY9d9SjbClFd0aCpIRLMHANpwpxkwNwEkwTFwa5UvhqjWmRH v8CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766267784; x=1766872584; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dcTMb0ctL2F4sGzCDrh7YS5WyYCOXEQhbc7VgNfllQo=; b=tvRtcsRcoOSZE2WBQZu5JXEBzxTLUN6p4OLrbp3pIOdm0IstDDnVOZFtFWwF/yTByn x9i1M6qyKyP6LgZp0bNPisihqRcw4Y1kZvfHBD4i5+vgMnDVwRu4R/iInf/CNKN6zr7+ OMF0n8EyY8cbO2IvQS/TdDHOf3OSCfwc+fuKxcEhwtwnmEpCmyK4yTPhB90FSbhIW5J0 FlqsZkYouIn4xrTefXrkjDTqn4cDi4Pr5xWZVdZjX2m6yhLODNYBcW/MCY9Qs/dNJoMm pqW7htmmkr64SxbrbWBszUt6l3qsdqcxLM1hCSctfI4XViVeM/hsxGZ5HaasKAr4n2jx AR1A== X-Forwarded-Encrypted: i=1; AJvYcCUP6cqrL1YFCTp1/b7JpNSdPLrlT4m4+q9dTruE5E9GeIRjl/Ws0vdeJDWYPSfAuTTPkMAi4szIpBWUTj0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywyybmoh+XxXOJsy7VMOtXIjxCGdRIGJII2zrjJLVAzD5fslBRf KiikoiN5DcLb7K+FqfcFXwg3L2N0pvb7yAZkXqVSKhifj4vNPloIPl5K X-Gm-Gg: AY/fxX7O2kSyc847B7DTeM9xTW0ASVEjW73WYPomu99upgUGpdFYVe0Ye1M70NwTg4a Li6UG464H3FsF1kos4jkKisVjkvEujxP2L+kE5pQEmYsS462QQjmrKaMja9pva5ggkAtOOl2kCp HhwdrfcAwYKKGPeCRj8vaRUK02Nc9+mSYTy/E47cR/Ih1HmKaszhlfP1vr9ZzhNyFWnCE8gv9vO 0CLFr4twJ5hClKXc7XZCoorsplqKr8WwYsAxX5BcbO7/XgdHzeqj9OKH+zyZVZpfqPpNeZuLvka z908tJBDLUttS3+R6Lkt+gFY77qn8OJuV9+IN9hVNLmD1L2MIj2rNoxpSvtGSN0/sAfF6mdoLHX /WXL0Y1zjH9kfa1jQxSyexrqaHiHumqO4phIPO4kEe5dqOg7ojWyqABT9wugTwoJL4Do0//P1dF ydwRpUMq9iXYYYCuzp1mn389pvmwkbvmOShaj3AnCwXKfMFjSXekZQjtgpAQf8nMsiyy4AlsS1 X-Google-Smtp-Source: AGHT+IHEFxekC452uLpXGKjIh0M59cfflTIdiv7cyeJcvpQA8SulNZdCNNzhpTsZ2uQ3uY/w4D4zGw== X-Received: by 2002:a05:6000:26c3:b0:430:ff41:5c87 with SMTP id ffacd0b85a97d-4324e701157mr6944726f8f.60.1766267783381; Sat, 20 Dec 2025 13:56:23 -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 ffacd0b85a97d-4325c052d34sm3601755f8f.25.2025.12.20.13.56.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Dec 2025 13:56:23 -0800 (PST) From: david.laight.linux@gmail.com To: Thomas Gleixner , Linus Torvalds , Peter Zijlstra , Mathieu Desnoyers , Kees Cook , linux-kernel@vger.kernel.org, akpm@linux-foundation.org, Al Viro Cc: David Laight Subject: [PATCH 5/5] signal: Use scoped_user_access() instead of __put/get_user() Date: Sat, 20 Dec 2025 21:56:08 +0000 Message-Id: <20251220215608.434614-6-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20251220215608.434614-1-david.laight.linux@gmail.com> References: <20251220215608.434614-1-david.laight.linux@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Laight Mechanically change the access_ok() and __get/put_user() to use scoped_user_read/write_access() and unsafe_get/put_user(). This generates better code with fewer STAC/CLAC pairs. It also ensures that access_ok() is called near the user accesses. I failed to find the one for __save_altstack(). Looking at the change, perhaps there should be aliases: #define scoped_put_user unsafe_put_user #define scoped_get_user unsafe_get_user Signed-off-by: David Laight --- kernel/signal.c | 72 ++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/kernel/signal.c b/kernel/signal.c index e42b8bd6922f..806b19041f72 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -4469,10 +4469,16 @@ int restore_altstack(const stack_t __user *uss) int __save_altstack(stack_t __user *uss, unsigned long sp) { struct task_struct *t =3D current; - int err =3D __put_user((void __user *)t->sas_ss_sp, &uss->ss_sp) | - __put_user(t->sas_ss_flags, &uss->ss_flags) | - __put_user(t->sas_ss_size, &uss->ss_size); - return err; + + scoped_user_write_access(uss, Efault) { + unsafe_put_user((void __user *)t->sas_ss_sp, &uss->ss_sp, Efault); + unsafe_put_user(t->sas_ss_flags, &uss->ss_flags, Efault); + unsafe_put_user(t->sas_ss_size, &uss->ss_size, Efault); + } + return 0; + +Efault: + return -EFAULT; } =20 #ifdef CONFIG_COMPAT @@ -4705,12 +4711,12 @@ SYSCALL_DEFINE3(sigaction, int, sig, =20 if (act) { old_sigset_t mask; - if (!access_ok(act, sizeof(*act)) || - __get_user(new_ka.sa.sa_handler, &act->sa_handler) || - __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || - __get_user(new_ka.sa.sa_flags, &act->sa_flags) || - __get_user(mask, &act->sa_mask)) - return -EFAULT; + scoped_user_read_access(act, Efault) { + unsafe_get_user(new_ka.sa.sa_handler, &act->sa_handler, Efault); + unsafe_get_user(new_ka.sa.sa_restorer, &act->sa_restorer, Efault); + unsafe_get_user(new_ka.sa.sa_flags, &act->sa_flags, Efault); + unsafe_get_user(mask, &act->sa_mask, Efault); + } #ifdef __ARCH_HAS_KA_RESTORER new_ka.ka_restorer =3D NULL; #endif @@ -4720,15 +4726,18 @@ SYSCALL_DEFINE3(sigaction, int, sig, ret =3D do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); =20 if (!ret && oact) { - if (!access_ok(oact, sizeof(*oact)) || - __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || - __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || - __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) - return -EFAULT; + scoped_user_write_access(oact, Efault) { + unsafe_put_user(old_ka.sa.sa_handler, &oact->sa_handler, Efault); + unsafe_put_user(old_ka.sa.sa_restorer, &oact->sa_restorer, Efault); + unsafe_put_user(old_ka.sa.sa_flags, &oact->sa_flags, Efault); + unsafe_put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask, Efault); + } } =20 return ret; + +Efault: + return -EFAULT; } #endif #ifdef CONFIG_COMPAT_OLD_SIGACTION @@ -4742,12 +4751,12 @@ COMPAT_SYSCALL_DEFINE3(sigaction, int, sig, compat_uptr_t handler, restorer; =20 if (act) { - if (!access_ok(act, sizeof(*act)) || - __get_user(handler, &act->sa_handler) || - __get_user(restorer, &act->sa_restorer) || - __get_user(new_ka.sa.sa_flags, &act->sa_flags) || - __get_user(mask, &act->sa_mask)) - return -EFAULT; + scoped_user_read_access(act, Efault) { + unsafe_get_user(handler, &act->sa_handler, Efault); + unsafe_get_user(restorer, &act->sa_restorer, Efault); + unsafe_get_user(new_ka.sa.sa_flags, &act->sa_flags, Efault); + unsafe_get_user(mask, &act->sa_mask, Efault); + } =20 #ifdef __ARCH_HAS_KA_RESTORER new_ka.ka_restorer =3D NULL; @@ -4760,16 +4769,19 @@ COMPAT_SYSCALL_DEFINE3(sigaction, int, sig, ret =3D do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); =20 if (!ret && oact) { - if (!access_ok(oact, sizeof(*oact)) || - __put_user(ptr_to_compat(old_ka.sa.sa_handler), - &oact->sa_handler) || - __put_user(ptr_to_compat(old_ka.sa.sa_restorer), - &oact->sa_restorer) || - __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || - __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) - return -EFAULT; + scoped_user_write_access(oact, Efault) { + unsafe_put_user(ptr_to_compat(old_ka.sa.sa_handler), + &oact->sa_handler, Efault); + unsafe_put_user(ptr_to_compat(old_ka.sa.sa_restorer), + &oact->sa_restorer, Efault); + unsafe_put_user(old_ka.sa.sa_flags, &oact->sa_flags, Efault); + unsafe_put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask, Efault); + } } return ret; + +Efault: + return -EFAULT; } #endif =20 --=20 2.39.5