From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0DEEC3DA59 for ; Sat, 20 Jul 2024 03:50:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 337FA6B0082; Fri, 19 Jul 2024 23:50:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2E8856B0085; Fri, 19 Jul 2024 23:50:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1AF9E6B0088; Fri, 19 Jul 2024 23:50:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id F28A56B0082 for ; Fri, 19 Jul 2024 23:50:46 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 570EE1A0A2F for ; Sat, 20 Jul 2024 03:50:46 +0000 (UTC) X-FDA: 82358754492.13.C5D5041 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by imf22.hostedemail.com (Postfix) with ESMTP id 85BC9C001C for ; Sat, 20 Jul 2024 03:50:44 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=q1HE8T4W; spf=pass (imf22.hostedemail.com: domain of rientjes@google.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721447387; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FgQ+bqKFrMl3Lq4YXQJFKFvrCLKIS6LwGYzQ+/HXsEs=; b=yYndKXaXZO1bmsBzQ7W4aVaAo5qlcF2oasaxlw/DFp6vKMuqJd/b2jpyfQSymJbfBOw+bz ZQaoA4VRw6O1pEAsoe/mRB3jpq+kOQKE4l7RDyvW2cPaSNv4dGIOAZPKbOq6oCaBevlpn2 3kJ/EBWs25PBNkFMFy4d88pLMzikRpo= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=q1HE8T4W; spf=pass (imf22.hostedemail.com: domain of rientjes@google.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721447387; a=rsa-sha256; cv=none; b=IN9aoaENDxVarFzT97uf5Fr+r7qTmzTjeMFYeq175nr3SGY5lCXvDzjdtd1BymDjAAhXL4 EZjfuAp7E15VHmlzIXptuPTr/eWzjuE9jdw3iKZ43qZKwV2D8IGubkzXEjqK59tVbU/OTj cXjuEO4xV4gPA9qvqCsWJX92qtBh8m4= Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-1fc4aff530dso365475ad.0 for ; Fri, 19 Jul 2024 20:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721447443; x=1722052243; darn=kvack.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=FgQ+bqKFrMl3Lq4YXQJFKFvrCLKIS6LwGYzQ+/HXsEs=; b=q1HE8T4WPu50/YynLPn9lZSx5WkTjbhHyPHQaSPPOv10r41fzjmKucCV8rlnw5CM2o jdsJmrSCBBejWX6a3sENJyi+j7w1rOv2xbB83OhUFNP2r7BvARUSMvtDIGk86GkPMGWJ SMU8gRkGgY946Y6du3Pt4k+NouDdpZWj6p4CSB2QbT6pkKh3+l+vPGYOJh3LSPkvsRyK 6s4noUjwsIEWx1DvnhXuFP9JJ3lUB21OjL413YtmkprJzAT+O53rO9nJiSDdjAZxLNJb hOZHnJIhewZp7unBAAhexlFIbNxkk2BIJFFSUhYta7+VsfNlVIO7EGTwvvjipnXXlSVh QQJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721447443; x=1722052243; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FgQ+bqKFrMl3Lq4YXQJFKFvrCLKIS6LwGYzQ+/HXsEs=; b=tr68UQid46IceIIjvaGE4y+enpYrJrxuuWVqDmsUgorCML9/2I44S8qs0qWvsD/zSb K7VxbGiTcEhIabxGivxCYuN1URtMCxg2yOt8cZMw2s/EhdI86xR4VjMo1H8pH7kpR8aI 0Z4ZJhrIAGb1ipD47Yk4A/rh9EyvPHt1VbL9Y6OkCuuFkmiGZnTUJED7xtuHcctSby1e uEXj6tJlbMjHLW44smIc15Qi2FxvTxBZl/usNgUUujumwRsJDvslsn93abyB3wZgqA4P Hp0s2rQMfRel5vc66zrDErAyINUdmg6ViwXASKvZo1DYxe1tZGbQCA0yYKYKjqyShYxx ppaw== X-Forwarded-Encrypted: i=1; AJvYcCW8CrIq9Ns5nmZGX86X4YZN/sfCePxdNTWvHqubD6PHartDsx9sRQczAHD2yc483mF9ZoJbMwrFJ2ucqZASxawcJQE= X-Gm-Message-State: AOJu0Yyq5uEwsNKpyFOZklIGKBJSnAhlQ0FBF8q/lSl5G0wZ0gyPmNO7 Xa5/GDVwgrqHFdNoPYNV+qDB3i/4PDx85eZ2EfMJvwV0tTQa27To9EB6a56uYA== X-Google-Smtp-Source: AGHT+IHEokE74H5QtFVoBeTaSZMI1xJoxtvJ+TwGyHBeFZo1COTFEtdls0gjNPTrhi0Y1hLNOUbWWA== X-Received: by 2002:a17:902:f68d:b0:1fc:548f:6533 with SMTP id d9443c01a7336-1fd7fe836c8mr69765ad.3.1721447442700; Fri, 19 Jul 2024 20:50:42 -0700 (PDT) Received: from [2620:0:1008:15:652e:fdf2:c177:d5b1] ([2620:0:1008:15:652e:fdf2:c177:d5b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2cb77504fa2sm3651308a91.46.2024.07.19.20.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jul 2024 20:50:42 -0700 (PDT) Date: Fri, 19 Jul 2024 20:50:41 -0700 (PDT) From: David Rientjes To: Kees Cook cc: Vlastimil Babka , Christoph Lameter , Pekka Enberg , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, "Gustavo A . R . Silva" , Bill Wendling , Justin Stitt , Jann Horn , Przemek Kitszel , Marco Elver , linux-mm@kvack.org, Nathan Chancellor , Nick Desaulniers , linux-kernel@vger.kernel.org, llvm@lists.linux.dev, linux-hardening@vger.kernel.org Subject: Re: [PATCH] slab: Introduce kmalloc_obj() and family In-Reply-To: <20240719192744.work.264-kees@kernel.org> Message-ID: References: <20240719192744.work.264-kees@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 85BC9C001C X-Stat-Signature: iynr913jjuep44uzugcpyaop4o8iu6ik X-Rspam-User: X-HE-Tag: 1721447444-286977 X-HE-Meta: U2FsdGVkX1972gh+tiwyZOBf9jwFE8TDtld0RIEag4+Bm4B+zwRRnTNNHSNjgwNT68WbJki3wiK1D+20vATYJpnQsberR/Y3TKgAg9QY9IBnnJiXQQYqESLrb75n2hEqCYgPS8X0Y3+rTIoyT6ZdG4ljbNMTbs4ORXsB/K+Z8bzHYD2jrzvg6LsWGsQQwclSc2qYfkSAaUJ3I49iabaJQBE9KzKP/VYuX8/8joaSrhtTQhSjTZyEGZEnvcBOoDBLgyzkhADcYt09/+wzClYDma3n31JafN+N317sfRU5phkxoCxpsubw42aNlBhZsQxXlTnfVyC2wYN2nO36isUZP13C517XeioDPf++mRlhUEvIfeODWJQBEw9CK1GtfwlDQjX9YzV9f6ZoMRqu4F3Zq6Jeg0k24Hc2XTyE1zWNtH2NuR2WBpd8kBnAIiRf3G4VirbRTjm1E80k8lqZfZgiqiBqF+QiPB59aQs9ZSlUhnNeFDRMbfq7yi96uO/WgL0VNp3HzAxqDDfduIomwWg/jV9MWf63BSmqNAAJlJXJ8Kys+9Xczas3T+ACDg12nHImE0sJzTIp/eA2F9lT4+1P41Ff31C2t/qBDd+CvaYnVCAGSnz4YkGl6tVaP80MGlW5ObgAdI1ZB6Jp4jb3wku7jf6yskw6ZIEOlf6MFD94JSiwCnFNrJbRl+tIhMtIwRhhvQv5uiPeHfcTZqwOv6nQQptuwAEE3us7B0NQqyeHPistpS/EfAarQLQjpDMI6G+TfKVrr4kNSHu96z8F/XEKyPAU7DgKX6D+fEG1Vovruj3QwACK+rrhJi/tO6Xecf/RtN1Cy5324fKgaT5ocnFe9YBCJtQIX1vXxfCerq8N0K5w+3AW3FZI6BtHMrh9r5HibUEqgTHWtlwudccJovEHPUlJQ4SVWDkX6Vmv3uW8ddi9dKEEZgF+GMtvwp06TyHvs5ALQO3fjMqRrDXLBPl 1ck/UYrA Zz1Bd8G0EX1NFtXWcnllH16pEajhhFPEJL2b6Vr1FtgSdbLN7q1CZOO6S8C3zjsqHNBSLJDeTizwK4wepNRX4hSrbTYO5MdDKi3xi+oISXPaa/2YCeEJcQyWa189n4ZRsBRwW7wm253IEhqBYhhWvWnIj5mqwJH/yN0xLlTxS4+gwuhV+0FMiwFvXYC8HVGy1VgkDrNMdx6w7+QoafEGXI+QJe7A1fnlO3B0ePN8pBVpHAzr1HArV9+H7QmGJ1oq6PTjj1ZGYJHNmjcxJ7TaGcYpye4DZ1z5+9fqQnwjf2ptPDW8sBnYXw4HnspUpZSWxCMUM0NhccAbWb8fWC+V57Cd90uawgvehVuQdXdsxOliUAOxQ5JlaL/XsgPmURVF/D9zKLlZ4KMai43o23IANZJshXLJiYmeWKfFyJOUISiqfymBETGu5Vtr4udEFPh1KgA0pGwTbCGxDlOwdn+oJ30lWtw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, 19 Jul 2024, Kees Cook wrote: > diff --git a/include/linux/slab.h b/include/linux/slab.h > index 7247e217e21b..3817554f2d51 100644 > --- a/include/linux/slab.h > +++ b/include/linux/slab.h > @@ -665,6 +665,44 @@ static __always_inline __alloc_size(1) void *kmalloc_noprof(size_t size, gfp_t f > } > #define kmalloc(...) alloc_hooks(kmalloc_noprof(__VA_ARGS__)) > > +#define __alloc_obj3(ALLOC, P, COUNT, FLAGS) \ > +({ \ > + size_t __obj_size = size_mul(sizeof(*P), COUNT); \ > + void *__obj_ptr; \ > + (P) = __obj_ptr = ALLOC(__obj_size, FLAGS); \ > + if (!__obj_ptr) \ > + __obj_size = 0; \ > + __obj_size; \ > +}) > + > +#define __alloc_obj2(ALLOC, P, FLAGS) __alloc_obj3(ALLOC, P, 1, FLAGS) > + > +#define __alloc_obj4(ALLOC, P, FAM, COUNT, FLAGS) \ > +({ \ > + size_t __obj_size = struct_size(P, FAM, COUNT); \ > + void *__obj_ptr; \ > + (P) = __obj_ptr = ALLOC(__obj_size, FLAGS); \ > + if (!__obj_ptr) \ > + __obj_size = 0; \ > + __obj_size; \ > +}) > + > +#define kmalloc_obj(...) \ > + CONCATENATE(__alloc_obj, \ > + COUNT_ARGS(__VA_ARGS__))(kmalloc, __VA_ARGS__) > + > +#define kzalloc_obj(...) \ > + CONCATENATE(__alloc_obj, \ > + COUNT_ARGS(__VA_ARGS__))(kzalloc, __VA_ARGS__) > + > +#define kvmalloc_obj(...) \ > + CONCATENATE(__alloc_obj, \ > + COUNT_ARGS(__VA_ARGS__))(kvmalloc, __VA_ARGS__) > + > +#define kvzalloc_obj(...) \ > + CONCATENATE(__alloc_obj, \ > + COUNT_ARGS(__VA_ARGS__))(kvzalloc, __VA_ARGS__) > + > static __always_inline __alloc_size(1) void *kmalloc_node_noprof(size_t size, gfp_t flags, int node) > { > if (__builtin_constant_p(size) && size) { I'm supportive of this especially because it will pave a pathway toward future hardening work. Request: could we get an addition to Documentation/ that explains how common idioms today can be converted to these new macros for future users? The above makes sense only when accompanied by your commit description :)