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 B80D5D17148 for ; Mon, 21 Oct 2024 23:32:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4CED66B008A; Mon, 21 Oct 2024 19:32:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 431186B0095; Mon, 21 Oct 2024 19:32:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 284686B009A; Mon, 21 Oct 2024 19:32:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 030276B008A for ; Mon, 21 Oct 2024 19:32:25 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 937D1AD13E for ; Mon, 21 Oct 2024 23:31:54 +0000 (UTC) X-FDA: 82699210230.30.935C65E Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by imf01.hostedemail.com (Postfix) with ESMTP id 9449240013 for ; Mon, 21 Oct 2024 23:32:11 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HOxm7gXM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729553493; a=rsa-sha256; cv=none; b=HcatJwb8xoBHooFbSIzaVPPrL3FQncrxSo/jVro1cQynCvZveh4msPLRIe4CfZB5sZqNWN eugthejqULRCRleHPSytSy35akgsjIt6ONogn0gIbKpd/nnKeKjQlU9rxymjdm8rGm1m5z kTsLIgr6I5ecoMcpiZe7KCodSMg20jA= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HOxm7gXM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729553493; 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=apwv868bKjMTXfXoFh01HYLst30ORGniee4XhriVDbU=; b=MdgOScGRV0SDpcSFJ06E4L8ZeBpbe2Yfqzspexal4tCvs0yoCKSofeparvaDsQgyHWW3so L7kYlP6yZ4UtNC6zBqOteEfQXyHWEo4sSDNESS5l2rhr3m/X57K1pEa5pjBZoyqvkKEJYc PdvIkkEEE3ppUKkLam5RaGnrUtoTN7M= Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-7d4f85766f0so3792718a12.2 for ; Mon, 21 Oct 2024 16:32:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729553542; x=1730158342; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=apwv868bKjMTXfXoFh01HYLst30ORGniee4XhriVDbU=; b=HOxm7gXM/2hPVhfl3d6DQOY0zr+2EWWN/c3ECU+OXVR649Ege3Ke2Zx40YtSIL/44X /2Mdc7Ex9k90sF8SBa1zYnL4SkWYBrOtnXVgcb9C0feaO4r0OHdOECl6HkZTsw+nQDU0 pq6Xw3pF9n1C4U/kx9kP6mYufczLUC+wyp6Ot6NMmQCSVR+TfiibZuaWR6mwXgGDFe1D mjdrXzTavyOYvoQxSI1B7WawcZlgFxOqngVz/Fh+p90st1kUoXx7V0PlQHhNRMdZDRCj 0kQJsUo2IoLIqhBRYGXXgH1m1cZt33PDodV00EGIXvoBhsrngAYsPQQLR4gg17msQ+7J hq+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729553542; x=1730158342; h=content-transfer-encoding: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=apwv868bKjMTXfXoFh01HYLst30ORGniee4XhriVDbU=; b=pbumA8qX14GRQFX2ZW1kSHSygIPDcnhR8a/d+wvVzr1Aqkjr/vuQNIEq8RqTiREBD7 HlGCECvEJFhCoIxduD/w+vSH+N4ye7susg7vZr+MvSr6+Priwi9ekXJycamjm0PtjD6p hU6XEae37p7q/CsaSEvFK3T2URoKlNqKMxTIzi4BLyYmjATouaT3dwunHQyj5tg8R5Fo b50dRqYDkQiKO3dqUfp3OLlsL8uR4MKNOpvKHH6PFMSSZj82SJ/Na3tm3D17RZJ64wK1 einOGOquiuhAIClHL7ZXlTXY8+oLdN5uPcx1wBni5xKXZPIh8bk7wv5KYPt38bYvG9B7 9ICA== X-Forwarded-Encrypted: i=1; AJvYcCUwm7YdXgp6tG3jsoZu/A5SROEcq6zx04gL1IircIEzSn9VHHvBF9pj4eQuCNqMVSEELFXOg3iaaQ==@kvack.org X-Gm-Message-State: AOJu0YzkGHSJxF4plXP2jrabTOpN1rXOCWHlIC7h4vO/KE9b1pKFxmz+ kHgugRBuL67LuD8UuYvZZ/3UrNl8eQ36Q4Da9/67Cl3Q3AawndiY/gHdVL26HQLKEuQUU3FTSPS mpXvwgEmpm/p+VMR1QKSF6rkj+iM= X-Google-Smtp-Source: AGHT+IFfnz8xbnOp/mN6RWshJDT63VoloV048Uvab1RUbpuCe5ielvPCqhJZUaqjtBUq/XkuQIZeRY4qQEqRxkientk= X-Received: by 2002:a05:6a20:c888:b0:1d9:2b36:3e3c with SMTP id adf61e73a8af0-1d96df14595mr745570637.33.1729553542387; Mon, 21 Oct 2024 16:32:22 -0700 (PDT) MIME-Version: 1.0 References: <20241017080604.541872-1-namhyung@kernel.org> In-Reply-To: <20241017080604.541872-1-namhyung@kernel.org> From: Andrii Nakryiko Date: Mon, 21 Oct 2024 16:32:10 -0700 Message-ID: Subject: Re: [PATCH bpf-next 1/2] bpf: Add open coded version of kmem_cache iterator To: Namhyung Kim Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , LKML , bpf@vger.kernel.org, Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, Arnaldo Carvalho de Melo , Kees Cook Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 9449240013 X-Rspamd-Server: rspam01 X-Stat-Signature: 9pii8ebua9rmigbwwr4iq5xya3475gy9 X-HE-Tag: 1729553531-471790 X-HE-Meta: U2FsdGVkX1/Yr7myRnwJPnqsbKyU5McC3+FmjV8yLoTpVAJ1+eMj3iDLWBA3NtKuQVij+H+angteaNoGtkMtFnSbzzVoxf2yx7qAoTETMxHJBtvU++0o4oGzGX1lyn2CVFAVeJKJPK95JOXLTOhqcdyGETkNONUBhXCspkDhuTzVX0A0hnfxKdg4vCq9UsY6+a8qPMVfm6ZcYB2KlzX/UKSrrjyf+NMvA6ShlNzs4PRBLPnJiFQyhY4Iu5fipGX4MToLFrDg9q2dhStiKaY5G/cl41EGr8nJPF67JJclWhBHoUKjxJeI3RU871c4An899iC5Ym5qw2GvCu7NfFR1yZicm2tTakQEs2ck2DMVNEk4k3qwnM3BfbXmjjwstJFondwRP8REDmYakZPJs3uhS/F6Kzy2t7cc+uUziEjpMZMR3JibCzKCBMxNEsvb+8K+9KYZ866WeN+g2DvRlozEUV+XSzmOGPzohAZ3PkbNUSp+2/Z0670eDzQ3ZKGf3+OgEyD+OvtSsEzA21IzGQBMwcQ5xP44PdHVBiFVcuZCPT9Zwx4j7uE4DozSgzeB4nfuMCmN6ykPBLkdXU2HTRZsEf8ZGumJMjVuUugaSgOmMGgqo48U+a9H7ojKo/YjUamvoWI1tB/c3co9vVhcFVZQNZi8vwT96WB6hvRqRFpi6UNciwj3G/4+A+pBTg+/RlBs2wXzLYtNHzGphtsPPXg9OmrKub2pABrhD8nFLlsF5OvKakhl9zOcsbsO//mjD8/kCpExllph5YDPyCNR6aZ/gf/11d1AZxJUu2aSo6J4rBeC/N79MVbuJWAeDFI/hY1UfT7sxm+6IPCB5EA8sf+vSAzU5DUyB+SPdymvJdsnMu3r3PwSsxV/zHIxdYAKb90AmYEpB4xovwprI6jdAdwG9XGGFSmT67M8zV4qZoXsulHqt8GpzSRvH9fh4FTQu7h4/HQ3gFs/MBzAm3PsJhn cQgIQcES AOVD977xDgse56+HeR2iVo4FYWt9G5nCtYJIDV0rYhGSiJVh9+ywHvqPXK44uDDxObyQH+BxnOdFeg65aOH1GC2y6JZYgX4s1A724R3kog3pBmFDg+7jFhxSBU3oUfSvul0pDI5fc/l6vqG9GCeHdHnGUJJWCbZVt8X8HcgE6eTMwFVHZv3yIzz3lV7o4zy+xVU9OH6U2sRHgRCIiiOUIo3SyBhvva5emSJkFI6gwF6W5gdeCUznZhWHqTLS8txgGNqY1m4Mp0cEUr+2kiRyEWl3DfIL4+7BA2e7n7b2Q+CcgODrRv1PxS/jtbDS/5TLupCSkgeqjDsDRF6A/r1+OUwiNSLFtSAKakzgUmw+EdbNKFauLvIS3i2r8V3S3ErMv7ADBMzkIdWPScqlS76ohdv96t8eze6ctVALK3HWRXQ7ixBqMqkawH9bCEh23XHmcYT3HBZl4TZtvJDgiumPK5pcDCMJDXzQhqSJzqmEXZpk0cW4= 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 Thu, Oct 17, 2024 at 1:06=E2=80=AFAM Namhyung Kim = wrote: > > Add a new open coded iterator for kmem_cache which can be called from a > BPF program like below. It doesn't take any argument and traverses all > kmem_cache entries. > > struct kmem_cache *pos; > > bpf_for_each(kmem_cache, pos) { > ... > } > > As it needs to grab slab_mutex, it should be called from sleepable BPF > programs only. > > Signed-off-by: Namhyung Kim > --- > kernel/bpf/helpers.c | 3 ++ > kernel/bpf/kmem_cache_iter.c | 87 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 90 insertions(+) > > diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c > index 073e6f04f4d765ff..d1dfa4f335577914 100644 > --- a/kernel/bpf/helpers.c > +++ b/kernel/bpf/helpers.c > @@ -3111,6 +3111,9 @@ BTF_ID_FLAGS(func, bpf_iter_bits_next, KF_ITER_NEXT= | KF_RET_NULL) > BTF_ID_FLAGS(func, bpf_iter_bits_destroy, KF_ITER_DESTROY) > BTF_ID_FLAGS(func, bpf_copy_from_user_str, KF_SLEEPABLE) > BTF_ID_FLAGS(func, bpf_get_kmem_cache) > +BTF_ID_FLAGS(func, bpf_iter_kmem_cache_new, KF_ITER_NEW | KF_SLEEPABLE) > +BTF_ID_FLAGS(func, bpf_iter_kmem_cache_next, KF_ITER_NEXT | KF_RET_NULL = | KF_SLEEPABLE) > +BTF_ID_FLAGS(func, bpf_iter_kmem_cache_destroy, KF_ITER_DESTROY | KF_SLE= EPABLE) I'm curious. Having bpf_iter_kmem_cache_{new,next,destroy} functions, can we rewrite kmem_cache_iter_seq_next in terms of these ones, so that we have less duplication of iteration logic? Or there will be some locking concerns preventing this? (I haven't looked into the actual logic much, sorry, lazy question) > BTF_KFUNCS_END(common_btf_ids) > > static const struct btf_kfunc_id_set common_kfunc_set =3D { > diff --git a/kernel/bpf/kmem_cache_iter.c b/kernel/bpf/kmem_cache_iter.c > index ebc101d7da51b57c..31ddaf452b20a458 100644 > --- a/kernel/bpf/kmem_cache_iter.c > +++ b/kernel/bpf/kmem_cache_iter.c > @@ -145,6 +145,93 @@ static const struct bpf_iter_seq_info kmem_cache_ite= r_seq_info =3D { > .seq_ops =3D &kmem_cache_iter_seq_ops, > }; > [...]