From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 DC1303B3893 for ; Wed, 6 May 2026 21:14:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778102044; cv=none; b=OuwmgUUfv1lTw/vuSo0Ru5xUENAxCc2lhsStJkewPnyV5BIBrp1LYJHDVyq3NWQhLiUBMmEiqWff/nlJKrOZCrY3o8yLQ2otReJPYypfUXwbVX/eelwV+1buyOD45qk4773bU2Qw40/kVQxqXrvZ17aGdUQwzJEfwPeEwOLRLeM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778102044; c=relaxed/simple; bh=mrs33gwyXYYksIamyxpT/skyjGMUYhds2gPM1h88ZjI=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PuIGTHIAAXBRwh58thtVULn3OumGYKf7uJfMvIx1i/659oobXwhyZ1dkpHe+Z0v99Mn0x1DXYXIzTMVhghfQd3Idpuu/0WYoiJIUccENsL1CQ8cVd3Fd8VoG9geIIW+IXy1f5pDAWcz1A05nzGyMaXCTynD/v/HEveeRgksitqY= 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=M+oV3yvC; arc=none smtp.client-ip=209.85.128.51 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="M+oV3yvC" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-48374014a77so1591575e9.3 for ; Wed, 06 May 2026 14:14:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778102041; x=1778706841; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=X97wysjOr3lFu30H+gcrFHrWvOgZ1GUmxbYI7Sxyn5c=; b=M+oV3yvC+DbwjHWMdh6KoH6BPTK9tcsiQZUmoYmA8AtkZWsfKWMFDUbzza+XCJ4Lqm LZvl2IEbjpT8TgEb7uoI9PSoEslhtXKWoX/F/QyZ8OspxeWcoJCYcxfPjJ9ZKQPysLtr QwiyZBrEiuM7OTEl0QlJ2e2LzDrA9w0cRn80oRkrE5iure/ZPesZfelHsvZwgLHpKMlV YuWwoIYQJ9+lxdWanYvmmd8Ck9yeaE93hKqe6Fr1170++GysffX0qUmVuBBScKazYnX/ 65Xq3fizV7LYVij1jPq8nIcvnLhuC2uBvDD9pf0YU7jATtTJlTnC2A0VwdDLKJ0EvLsk P/vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778102041; x=1778706841; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=X97wysjOr3lFu30H+gcrFHrWvOgZ1GUmxbYI7Sxyn5c=; b=BBc1rgs+iE+/MPwF9PVfkF114VqJqEHiCIKCjPP8hdnbCmcf6f6DWaF3vvWXM4hDU+ 94FXbNgWJa6VAoznB9Gt2PmQJg5i7ZnkcKceIyrV34CHWZvcOonjqwejrRBEk+dH2/wI ImpQlZfPE137JEKnqfZNPkb8baTRFnN6iL6oySoZaprCHOTvxJR7JZ9OI66J0y1+H/Pc o6Wehup/dOtutPTUQF8Qg8EEn/ngcZgLm2WMsCaCz9DQUM/0GYEfUy0P8XqPkmvjrksF pQX3gWHhimET2DjiPux8/TdSgWt7GyB2XHtQ0IWgSV0YQkOX5e+/TvUdxW8GbVM+KHGv 7BSA== X-Forwarded-Encrypted: i=1; AFNElJ/wc0aXNVQDhHIxmDWAMI9dgeKXQw6NNHuJp3Yr29qb0Uf+Ig8g738/XQHA0D/dGdbHFa/ZxCNEj5TkiF8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2CHOATi5Qkk4fEyFX4p9ek62FgZAqYHAesgElAXiqfz1mClYY x2/ed9TiZjGlpgSGVnD9MqewoeZZSqQx99UqPz5c1zKUO+5nn1dqmH2/ X-Gm-Gg: AeBDiesxoNLKXoZV2up9qc8IEc0VIlCsFhH2yCu1+AktAGjnpb10lfgOo0JVs1voDh0 Dy+xQRWrB4o7swvI3WHBuQfTXwDL/eGVbsvx83orPDor5l6tdFK4b96t8zKP6rW2DhpgKzvkqAH I4/S40wadcMNR6zxVSmZpKaKJ3/IbbKAVVJiONzE33Pls2OGk/9DDIRhoWnHYaGBJZdbh9lJ6Ta wD3nUNintbKz6zJGjDZ+GFasgRre4+X9OqaoduaA2gHBi6WEWM2AP/wT4Qsdb+RS0BtA5g4TSUK 8Xby3Bz3fIw370up4XLc5CQ0jeKIF82b9un3XlCWJ29m4mOlEIW1RNUWqctf5EK9pIkicgxneLf tlNY+OVVJ43GEF37IzSVn913F34HtbdBZh74tLXs6n+4g1Vb6KvgJh69fQRzprPLbxSFFR2eb4k 0vMpI1t3TbB+ITG4bqWX2RvmMf+keW+kEWRvNOTJlMHs5W47ATJlSOIv7L+WkQAAm2lLD6d8s= X-Received: by 2002:a05:600c:8b8b:b0:48a:97b6:7420 with SMTP id 5b1f17b1804b1-48e51f4143fmr85845735e9.24.1778102041063; Wed, 06 May 2026 14:14:01 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e53826022sm78527045e9.0.2026.05.06.14.14.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 May 2026 14:14:00 -0700 (PDT) Date: Wed, 6 May 2026 22:13:58 +0100 From: David Laight To: Jens Remus Cc: Steven Rostedt , Josh Poimboeuf , Dave Hansen , "H. Peter Anvin" , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, x86@kernel.org, bpf@vger.kernel.org, linux-mm@kvack.org, Namhyung Kim , Andrii Nakryiko , "Jose E. Marchesi" , Beau Belgrave , Florian Weimer , "Carlos O'Donell" , Masami Hiramatsu , Jiri Olsa , Arnaldo Carvalho de Melo , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Heiko Carstens , Vasily Gorbik , Ilya Leoshkevich , "Steven Rostedt (Google)" , Indu Bhagat , Peter Zijlstra , Dylan Hatch , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Mathieu Desnoyers , Kees Cook , Sam James Subject: Re: [PATCH v14 04/19] x86/uaccess: Add unsafe_copy_from_user() implementation Message-ID: <20260506221358.55ba5187@pumpkin> In-Reply-To: <9f85f092-c376-4350-9a12-479d7b70399a@linux.ibm.com> References: <20260505121718.3572346-1-jremus@linux.ibm.com> <20260505121718.3572346-5-jremus@linux.ibm.com> <9f85f092-c376-4350-9a12-479d7b70399a@linux.ibm.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 6 May 2026 16:09:16 +0200 Jens Remus wrote: > On 5/5/2026 2:17 PM, Jens Remus wrote: > > From: Josh Poimboeuf > > > > Add an x86 implementation of unsafe_copy_from_user() similar to the > > existing unsafe_copy_to_user(). > > > diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h > > > -#define unsafe_copy_to_user(_dst,_src,_len,label) \ > > -do { \ > > - char __user *__ucu_dst = (_dst); \ > > - const char *__ucu_src = (_src); \ > > - size_t __ucu_len = (_len); \ > > - unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u64, label); \ > > - unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u32, label); \ > > - unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u16, label); \ > > - unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label); \ > > +#define unsafe_copy_to_user(_dst, _src, _len, label) \ > > +do { \ > > + void __user *__dst = (_dst); \ > > + const void *__src = (_src); \ > > + size_t __len = (_len); \ > > + unsafe_copy_to_user_loop(__dst, __src, __len, u64, label); \ > > + unsafe_copy_to_user_loop(__dst, __src, __len, u32, label); \ > > + unsafe_copy_to_user_loop(__dst, __src, __len, u16, label); \ > > + unsafe_copy_to_user_loop(__dst, __src, __len, u8, label); \ > > +} while (0) > > + > > +#define unsafe_copy_from_user_loop(dst, src, len, type, label) \ > > + while (len >= sizeof(type)) { \ > > + unsafe_get_user(*(type *)(dst), (type __user *)(src), label); \ > > + dst += sizeof(type); \ > > + src += sizeof(type); \ > > + len -= sizeof(type); \ > > + } > > + > > +#define unsafe_copy_from_user(_dst, _src, _len, label) \ > > +do { \ > > + void *__dst = (_dst); \ > > + void __user *__src = (_src); \ > > const void __user *__src = (_src); \ > > This was suggested by Sashiko AI review. Any objections? Try compiling it :-) -- David > > > + size_t __len = (_len); \ > > + unsafe_copy_from_user_loop(__dst, __src, __len, u64, label); \ > > + unsafe_copy_from_user_loop(__dst, __src, __len, u32, label); \ > > + unsafe_copy_from_user_loop(__dst, __src, __len, u16, label); \ > > + unsafe_copy_from_user_loop(__dst, __src, __len, u8, label); \ > > } while (0) > > > > #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT > > Thanks and regards, > Jens