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 3E1E7CD4F21 for ; Wed, 4 Sep 2024 18:53:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C28D06B00AC; Wed, 4 Sep 2024 14:53:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BD7D46B0364; Wed, 4 Sep 2024 14:53:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A7BDA6B0479; Wed, 4 Sep 2024 14:53:29 -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 88EE26B00AC for ; Wed, 4 Sep 2024 14:53:29 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 37F7F1C618D for ; Wed, 4 Sep 2024 18:53:29 +0000 (UTC) X-FDA: 82527954138.14.F12DF4D Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by imf05.hostedemail.com (Postfix) with ESMTP id 109B7100008 for ; Wed, 4 Sep 2024 18:53:26 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=P3qj69GR; dmarc=none; spf=pass (imf05.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.178 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725475929; a=rsa-sha256; cv=none; b=lScz/LhSzLhyOK8BpURoywcU2siBRE1s0C8E6WzeRqjkIfw6ZznvtJY1LjM3+ErY/KWcV6 S1WkcZoIt0tdpsyv+KpRBNTWc4Gi39j68dGiHeeHSOQTwXC0M7U0OCU44jLfBv4wz5dkHS p4LTooOQ3yfROmTpN6pKpBS9jO0Y7so= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=P3qj69GR; dmarc=none; spf=pass (imf05.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.178 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725475929; 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=We1YdZoqz1zXgWa47nfs+iTUp8ErAHxC3mdSZ/mbYN0=; b=naILXxvNHUWI0tlcYUh0qwmQBFgsY93bEmu/Wxkn2o6ULhdwU/WUJJBxtUtr6YkAj53vJX JzvscKQ0XpsNB1KTlXpD8OB2ragrgj+FXSsTmPtyOxloKoqZxuRS6Clcr6lF4rOJ5/6/Pv F7XeJhpuT6xRj6o5rpFA9GmVSfPXEwo= Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2f40a1a2c1aso66259881fa.3 for ; Wed, 04 Sep 2024 11:53:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1725476005; x=1726080805; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=We1YdZoqz1zXgWa47nfs+iTUp8ErAHxC3mdSZ/mbYN0=; b=P3qj69GR4wNxiex9fO6CIagXwPs/xit5I41FBU/nkEsW1b1BrltUjpF8OnM8oi2wBb CdF0oH1MByoZtwanaUczD0JjnIhwMlWajtccYKTfZCWdyIgJM39gOQXlG2y2pDb4l6Fm a/A/skimkGC7WzGsRcNYPqz2DZsGk8TWaTr8I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725476005; x=1726080805; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=We1YdZoqz1zXgWa47nfs+iTUp8ErAHxC3mdSZ/mbYN0=; b=ByHtV06IBJRAGw1s0D9nUljUoI3xZ5MeGawgiNb7UAQe6DQ9be3gU0OPOloPqTg0gY 4sBGnj5jD2ZeIo7B5jiP9vjAPnvk3UxtDe9B/DsQXV0G5Xz9wr2CxJkFVsOb5zy/mDdV lxnb25pZGdckLpMusxVOI2c5VSPjxbGwZkGKAzTVNY26ZcB8IVNF3ItmgT9FTA9SJpPK o+f3ldwGVXzSYa/NCkSWVtFTUJgb+ezSWOIETkDFrbRTT4tAaGD7+uJsBXcfeycmbLsj CqMC6FZT4NmkVb8K0rpBl/iyh05FQU+R6mqrtsIOdfloePCsN8DARPyrwuS4MDhUSF3e /1qg== X-Forwarded-Encrypted: i=1; AJvYcCX3JT9WkqTyRGMjUPUIq4miU3Zj70+W3wKuFw4psO46P0upssU0u9t6riyGeO0WArJoXcD8sj6Dcw==@kvack.org X-Gm-Message-State: AOJu0Yy/NWyU+cY1YE8Au0vv3yk6hb0eev94/4oxFxgFS0pO5zXHqYBn XohkU4a0lj43/EtIb/j/gpptasMYDSItdH4P2TIBtnqofe+5Vrd/GJIpkhAi/IdLwI/3SyMitXQ t+A0/Uw== X-Google-Smtp-Source: AGHT+IFelG6jG74YsT8YewIoWImTzJQnoXEJW9r3DYAtnHiSH6HoxkzZxWUgbAULQplvNO+NUSkx5Q== X-Received: by 2002:a05:651c:508:b0:2ef:24a9:a75d with SMTP id 38308e7fff4ca-2f6103a23damr167466431fa.14.1725476004252; Wed, 04 Sep 2024 11:53:24 -0700 (PDT) Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com. [209.85.218.54]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c3cc6a4c4csm213154a12.84.2024.09.04.11.53.23 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Sep 2024 11:53:23 -0700 (PDT) Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a868d7f92feso815849066b.2 for ; Wed, 04 Sep 2024 11:53:23 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCWMxEbFUnyLXsS/OUAcIW1EFIOMS9H6ixUwUz4CATG5s2DPZmjoaEGxNeevi7rcjYtxsF3xMmuc4A==@kvack.org X-Received: by 2002:a17:907:e92:b0:a86:81b8:543f with SMTP id a640c23a62f3a-a897fad6921mr1415500366b.64.1725476002634; Wed, 04 Sep 2024 11:53:22 -0700 (PDT) MIME-Version: 1.0 References: <20240903-work-kmem_cache_args-v2-0-76f97e9a4560@kernel.org> <20240903-work-kmem_cache_args-v2-2-76f97e9a4560@kernel.org> <9303896a-e3c8-4dc3-926b-c7e8fc75cf6b@suse.cz> <3ade6827-701d-4b50-b9bd-96c60ba38658@suse.cz> <20240904-kauffreudig-bauch-c2890b265e7e@brauner> In-Reply-To: <20240904-kauffreudig-bauch-c2890b265e7e@brauner> From: Linus Torvalds Date: Wed, 4 Sep 2024 11:53:05 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 02/15] slab: add struct kmem_cache_args To: Christian Brauner Cc: Vlastimil Babka , Mike Rapoport , Jens Axboe , Jann Horn , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 109B7100008 X-Stat-Signature: x7a3gxh3oi7qp83b5kwpcbxgrdezjodd X-Rspam-User: X-HE-Tag: 1725476006-55767 X-HE-Meta: U2FsdGVkX19GSayIBf1Q9BQEvIZl5z+nmEaGHr5Yfv5YTHL1VYmYTw9Djh8WknfWmLaoCLnQ13thtFy6Nv0zYdJgqJn1nO8bS+ITYeWac9t/MXWqp4/BXF13d7iqLB8j9npt+sP3MfUJGcb++fu9QDfg1dhlpEReyX2usTqo94w/DyHwL8RMMCV1aW8S8STlQ02IVNf3gyN6xbxC4xRfMBrCdp8tmcmj41dRXPsshKffsBAS41Enuq1nkdS1zjSaBpO2XESKoJDqIjJo0hkN8uqICMBAz1oA0ZaZwAfXSyvPkMnEnQX4v39uW56Qp+qTNrD545P7yNjOWs1M7Zzn+NDDNp40CM+FpsaWE9LNetGIYg978uFBjdA8yyjGX69zcuJDjO1P3PybY2rN32I2tys5VRXbvbmRQrC9D7/7d2t/uSh4eAzX4GWddOHGSOeuKt1hGa4DbZOW+epLM+xZLv4ytCqRJtbMbKjIxGWqWzun7iP8+Rvg2WWI3/37RZT6HWBjbIwqiI6QRb/iweLcIrB04Gmv4JRAVzE2spPWnQsFDkNi9+Wy9lNG/HMNsBXM2iZHLOpAgpfbIdDSY8c+vFdJyUT0uSIbN67vrJQ1O9jFz+yKQJDRheDROxkStVypWwxx6HOAMKjy7KBxgoGgt7t53eyVfcfTT+3ttBRlvBDaM9jpFAxSLq2ds3SZ/DRQoGP58bPmrGm7/HmybdRxAgnJUrV5qAk+C4DFzjpDyb6VDon2e1uJUa3hxU1PgMMB9mvPJj7BuHV8SH33dNE91+dyyWsLDG06JUu/mil9iNWLyE5PBJDlpTRkCZHR5XGAtrvNkFAFiatDlWfGUBWQfaEJuYRpnkNaKJMfjetZtS69e4h6x7Y/E4a4He6Uuv8RyWi9VquJu55DUbNx8/x8rnthIw77/UJu9rNwTpWhjJe22gfeRfC9fhydUhRtnkbrocNApBTBbbmwSO+1ybt yPHgsYA4 buMOu8TAHGpitNKBzepxB9CLEP2siisciGJPu5fpLis0n/TEWIm57tVuhPQPxA+2qLbyZX8QLWUwbcSE2dV0GvkEHFZiPvNmrQ5SUNn1uBHLNXj71mRrm3pfk/iyv+saSsTp5xqAbpTuKiPM/BeUavxxq47/i6hwQSQf4DJCvC/dLXpR1JLwOiKAnEKPyoTmSGePiD9un6fbmkWvB6We80fS5t4UuxAYCm64lkEXGZ5cjYkfQvc8OqTMVWZJNk2GJd2umixHLT59SM9MUGg/GLJOmUw3ZDxKuNnDdbmnPk1Oj5MFWcj9pZFk+I+HSyRgjPs5FEXWRn0NPfcu4+QWSksJXIa4I3lI/h90c3MonKcDzrpQjZwT50Vy5z3YteRkXVZaExeM4nAGYzPQNUv8J4VFRM425Negi/wpRUT0aeWEvxumA4LdnqJETavs+6m1K2kZ1n+pLO3aErLQhBsPkyDOaHW1E8H+V5Sgho2njz7ZbxzSX5vv4B5mQSqGhWWDqw1a4LewB+tQBt9VSRWWgkDbtwVcB3beF0YV0FgE98TBvPHoUARf/jOXR3clEDM9N6RXIRG5F9X59GM0= 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 Wed, 4 Sept 2024 at 11:21, Christian Brauner wrote: > > Sure. So can you fold your suggestion above and the small diff below > into the translation layer patch? Please don't. This seems horrible. First you have a _Generic() macro that turns NULL into the same function that a proper __kmem_cache_create_args() with a real argument uses, and then you make that function check for NULL and turn it into something else. That seems *entirely* pointless. I think the right model is to either (a) not allow a NULL pointer at all (ie not have a _Generic() case for 'void *') and just error for that behavior OR (b) make a NULL pointer explicitly go to some other function than the one that gets a proper pointer but not this "do extra work in the function to make it accept the NULL we shunted to it". IOW, something like this: #define kmem_cache_create(__name, __object_size, __args, ...) \ _Generic((__args), \ struct kmem_cache_args *: __kmem_cache_create_args, \ void *: __kmem_cache_default_args, \ default: __kmem_cache_create)(__name, __object_size, __args, __VA_ARGS__) and then we have static inline struct kmem_cache *__kmem_cache_default_args(const char *name, unsigned int object_size, struct kmem_cache_args *args, slab_flags_t flags) { WARN_ON_ONCE(args); // It had *better* be NULL, not some random 'void *' return __kmem_cache_create_args(name, size, &kmem_args, flags); } which basically just does a "turn NULL into &kmem_args" thing. Notice how that does *not* add some odd NULL pointer check to the main path (and the WARN_ON_ONCE() check should be compiled away for any actual constant NULL argument, which is the only valid reason to have that 'void *' anyway). Linus