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 A8251C54731 for ; Tue, 27 Aug 2024 15:45:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 040F76B0088; Tue, 27 Aug 2024 11:45:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F33776B008A; Tue, 27 Aug 2024 11:45:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DFA9E6B008C; Tue, 27 Aug 2024 11:45:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C17766B0088 for ; Tue, 27 Aug 2024 11:45:48 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 649D91A194E for ; Tue, 27 Aug 2024 15:45:48 +0000 (UTC) X-FDA: 82498450776.20.07C71C4 Received: from mail-il1-f171.google.com (mail-il1-f171.google.com [209.85.166.171]) by imf08.hostedemail.com (Postfix) with ESMTP id 3A76A16002B for ; Tue, 27 Aug 2024 15:45:46 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=Me4LRAWD; dmarc=none; spf=pass (imf08.hostedemail.com: domain of axboe@kernel.dk designates 209.85.166.171 as permitted sender) smtp.mailfrom=axboe@kernel.dk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724773476; a=rsa-sha256; cv=none; b=3t2HyctO+kGlIOU3+DqpRQJKtpjDBb+jzbbo3geWhLvKrAXJhEwKjU8KHD5dYhEHgl8WSO PuRONGI91z3rWDQzqnHKdlKbKAxDCbiJy7dAq+DS6vuzMvdgyIvfWHdj+INvp+aiFtmFC1 r/1fHsreiBbHhyvjRzDihIRHVS+drEc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=Me4LRAWD; dmarc=none; spf=pass (imf08.hostedemail.com: domain of axboe@kernel.dk designates 209.85.166.171 as permitted sender) smtp.mailfrom=axboe@kernel.dk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724773476; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6GqtkBfUXYofNnGhXwyXqxESbrTMdYmlyzWfXCDnI1s=; b=6S0TTfXx1dG0n8QpqTELt1IrotWOnDzPceIqDkhfApWZ2eWSAMBG33edPNB/UjAdvhRo6t aLXuv7cQ2SA8srgP4U7eRuLZa5OfsBK6ie0uIyOaOgw21daOIur5KY471/zNnfyO6Owrgu 4LvCilSl6dFppIbNwPNgKyoVYXkEjzM= Received: by mail-il1-f171.google.com with SMTP id e9e14a558f8ab-39b06af1974so23541935ab.2 for ; Tue, 27 Aug 2024 08:45:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1724773545; x=1725378345; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6GqtkBfUXYofNnGhXwyXqxESbrTMdYmlyzWfXCDnI1s=; b=Me4LRAWD0HR05tjXwWrKJUDxVyJ63l1zXMc6K1Ju3Th3BgAZeKCJzFY6T4d72MvCL9 bFNMSEk/be1TRduBcBVhnqbxtEll4l7XRYJBzExrlAI7mZDMjkQRceQsGkyZM1uBO+XN ITr33hcmalaVKl1SWef4ZyIRQvFVYlmlakx3E+ppvVN940ph1Q6JQHpQba0hdjDXntaM XQ/qhxt7Fi5B2PYHJrW4AMOckI6rIkbloHhFfuQTY31geWIg2gMBhhW5g//J5DC9Gh09 FQr7N+K34I3LeKZ9TKpP0mOPIVN0GfPMDe7zNgFHomQZ413BECBZWbwMDIfRH9LJmd1M La5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724773545; x=1725378345; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6GqtkBfUXYofNnGhXwyXqxESbrTMdYmlyzWfXCDnI1s=; b=IdxW/nll457Eg6ERbdOghBdsQuddtmkiZP+V5KqQ0C1dFzqfo3miMktRGHA+OFAPL8 WSXh0prvdJUKh1DTJwrTOnxYbIdIvAfs4nEFAbAkKWuJiBDWzYhvq+ByBE+4z2DFcwAX lmPBvvmoF50ZD4GK75TnpIpbObJR6/C7+uRbojWKN7fp9r+D2V8Qz9JImBpYVaGSkvVv YWM+N+/EazTtbNgPcStRoBN54DfToZuYncrmPRDH4fpNFKp4GmOAZkykwHzsecybid2p FWlM4wD95CkmONBNiQg2Uomj55GjFhVerZJBp1dN9KhRRroSIXJepjNG3LH2mPRxiSIy 9TNA== X-Forwarded-Encrypted: i=1; AJvYcCW3DO/kISMoNs5t2XsrieuxIp8CUeJ0SzcibtIS2HFC0IDQmuhMhqgWG+0JqdeHBwUkqf+PMHPhCQ==@kvack.org X-Gm-Message-State: AOJu0Yyja8VEu19SCu6tVS/JMmb2oseqOZXOxjJo4uw270N63q1bFoLg LgoTmi8EfjK9PQXLNsTNRsy+vTwe2nlOQv1UYEvKNU3rgGOWUBCXvYn/RzqJxys= X-Google-Smtp-Source: AGHT+IGUVhPV7tcDvsLt8E9jFpxp3Qj35DHzVVv1znhAEgL5/pNPaL1+mQo2Crlt4guusLBl9IfZpQ== X-Received: by 2002:a92:c548:0:b0:39a:ebcd:f2fa with SMTP id e9e14a558f8ab-39e63ea1077mr37497905ab.20.1724773544977; Tue, 27 Aug 2024 08:45:44 -0700 (PDT) Received: from [192.168.1.116] ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-39d73e757f8sm40308145ab.36.2024.08.27.08.45.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Aug 2024 08:45:44 -0700 (PDT) Message-ID: <28677022-1be8-402f-97c4-fc1aba33c77f@kernel.dk> Date: Tue, 27 Aug 2024 09:45:43 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] [RFC] mm: add kmem_cache_create_rcu() To: Jann Horn , Vlastimil Babka Cc: Christian Brauner , "Paul E. McKenney" , Roman Gushchin , Linus Torvalds , linux-mm@kvack.org References: <20240826-zweihundert-luftkammer-9b2b47f4338e@brauner> <20240826-okkupieren-nachdenken-d88ac627e9bc@brauner> <6063be1b-7d4f-487e-9890-7e8f727d6324@suse.cz> Content-Language: en-US From: Jens Axboe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3A76A16002B X-Stat-Signature: h63b8b3s63kpqy7zdfisxku4j1ut3rwi X-Rspam-User: X-HE-Tag: 1724773546-804480 X-HE-Meta: U2FsdGVkX1+QXSI5YHY4tdhPwMSs9DF2n4DGwjjUxMmqgPwkjtwnM/ZGeRy6gwg0NIJB9AWJWeRzptOPRRMBl8SxHfgOa96ojDNGAKbwBWtVmOtViHOxDwwa3QCbrhxr1ggYMhhUY7J3EDREZxtdLEBddzShnqJrH9gEAkrBQL0RCpPzqsRJbxKF9RU1285JhM5w4NxzWhKJwXL/39qae99w4qnI3KUWd2BhYpOJnFo7pt+yLYO0MqGOS2TrZe/GbCXUbvUzL+6TE5IeUhwrtH0orKyf1wpAIHDgtNrAHresxcMLefsiM7EFqNqWT+4i0WXqFF7TOYapz+CGL1v9qFJHDIUUihMY/Q27+es1nVNUspAhBz+SeNWuSvAO/GWdfOl5eZcRrZPSXSkY4tzJ1sMPMdDLtXpiWpGT8pSs00Z0k/7mwl/GZbpaNtnwWVjYFrMorahesDJgjsrfUjX/XwTC0cc9zKAvglSs3Z1KWzpGDhspsTX93My+83vMW+imqrRwqm+SfKRac73UCkqhWBb2n6vTYEEhff8ci7Kf1g9wzfSR/hgtO8gBHnne3PROX2asEdvKgj191enNH18x8uq4CfIT/qfwIRF7YdzjkdgmSbQAVvzRE5sGIGP92nZAh8XB6uwIZJI8m+FJATGJs+Tr/2sTwIHykuKMjosR1hey0cH7k9K7b/9Jdm3SoIz1A5tnad5R3F5gJ2TvLs1bslL3Y2nFh++UTB/KYCT24oKduk4duktElv6P3LsdR3lzijrFB/niYHGSdAsILxQHuRt6/LfwKjh0/GD8iua273q7lRfU9jp4beYARpWuCW8n2vGGMBBkiSySTOXPtQyilArSsEp0fkGMSkR3fwvXb4muCA+MXQCsTL6xPQFv1TIddmuJN/jPjEYqbo8V6RX4itskiaDP8vVmuqTyMTnY4/p7Qv29xq/zUH62uf24OlMWxdNXsfd41MX0fPoXlXv 7lS326Uk 99akTSYKI+RFzUanShpVXziJTHdqGk8TlwRooKLk2pUufSWMHvsVH+FZtEAlG2kKJ2P5cOehxDRSEtGOeFJd4kXL/Vnf4FN4XPuDIkxuZhyK2QyFgOJSiyfyPXIkxjjIV1JYk7CXqbOcPIzJobOPRNq+qARioAQJ3i6UHMFK+p26c0NO8arUiNwuTMQG1SdXLz5ZeJGYDGTNO/Em+0H7aRRmHtYEFBvPzIapJKT5f4a8xgEQGTkC7Wjcs2BHHOuKfXlC54vPJBBFxW3Nqu2Sp6k7+vuECv2YVS5/7XWTzBtrwsDK/owSBYsGmI26UEBiIUASigu6vdlH0jr/GeUDyQE8fiwFIUi7q0EKDndjO65lAgS+KYavlZZlYTW9JVTocMLSH 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 8/27/24 9:33 AM, Jann Horn wrote: > On Tue, Aug 27, 2024 at 4:05?PM Vlastimil Babka wrote: >> On 8/26/24 18:04, Christian Brauner wrote: >>> diff --git a/include/linux/slab.h b/include/linux/slab.h >>> index eb2bf4629157..fc3c3cc9f689 100644 >>> --- a/include/linux/slab.h >>> +++ b/include/linux/slab.h >>> @@ -242,6 +242,10 @@ struct kmem_cache *kmem_cache_create_usercopy(const char *name, >>> slab_flags_t flags, >>> unsigned int useroffset, unsigned int usersize, >>> void (*ctor)(void *)); >>> +struct kmem_cache *kmem_cache_create_rcu(const char *name, unsigned int size, >>> + unsigned int offset, >>> + slab_flags_t flags, >>> + void (*ctor)(void *)); >> >> I wonder if there's a way to do this in a more generic way, we'd now have 3 >> variants and neither supports everything (what about both rcu offset and >> usercopy?). > > The "pass all arguments as a struct" pattern might not look too bad > (or alternatively, "pass all optional arguments as a struct"), as long > as it's fine for unused arguments to be zero-initialized? Like: > > struct kcr_options { > const char *name; > unsigned int size; > ... > }; > > struct kmem_cache *kmem_cache_create(struct kcr_options opt); > > void blah() { > kmem_cache_create((struct kcr_options){ > .name = "blah", > .size = ..., > ... > }); > } > > I think maybe we can do this now that the kernel is C11? Yep should work. I like this approach as a way of unifying the various ways of creating a slab cache. Particularly as I'd want to use a free ptr myself for an in-kernel use case that currently creates a cache with kmem_cache_create_usercopy(). > But I guess if we want to allow leaving out the freeptr_offset > parameter, we'd have to have a flag to say whether the freeptr_offset > parameter value should be used... Maybe my proposal is too overly > fancy... I think we'll end up going down that route eventually anyway to cover all cases, so may as well do a prep patch that does that first. At least that's my opinion... -- Jens Axboe