From nobody Sun Feb 8 01:30:08 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