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 43D40CF885A for ; Fri, 4 Oct 2024 20:33:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBC298D0007; Fri, 4 Oct 2024 16:33:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B463F8D0003; Fri, 4 Oct 2024 16:33:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BDE28D0007; Fri, 4 Oct 2024 16:33:34 -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 7B6088D0003 for ; Fri, 4 Oct 2024 16:33:34 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 26D8D1C126B for ; Fri, 4 Oct 2024 20:33:34 +0000 (UTC) X-FDA: 82637070348.18.9F04EC7 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf13.hostedemail.com (Postfix) with ESMTP id 3735820002 for ; Fri, 4 Oct 2024 20:33:32 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=tuc+VHDc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of song@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=song@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728073915; a=rsa-sha256; cv=none; b=agHEX+81Z03Wipcp2GQcf9zlDDrJonVcIUvCG5grALdklWXgzixs+8NEdTfkkRejgmIywZ W2dn1Ee39GIh/oaY1BflhL+Vofk33AdOzA/GyiHvwes+g7WgpdZflWUXTkYKd5DiANThIB ZsdUZeZz4vxSjyaYhdxKtwIaubPN7z4= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=tuc+VHDc; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of song@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=song@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728073915; 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=P4nZcF1VdosVkiid/JOQ6WsVk7ib5TczO8GupB+BBz0=; b=GWLSB57gy5RxQDRUGBR213LF/XUMUwgSwpHf8Li78O+JucHrwTOJ8N3Nmy6QUvFFfw87kX VadzuPGwc10tqxZ197SCxLUxb0McgdFbU/NrNIvJEtpuWaiT9rC04LeVktk9qABEnQK92W +8gRUK2qEgG+KCECzsucEH5+7a9hXtk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 44A3C5C56D0 for ; Fri, 4 Oct 2024 20:33:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0DDD4C4CECD for ; Fri, 4 Oct 2024 20:33:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1728074011; bh=dgu2VTGNBz0Q3vaF2UYNqERBE89cxhqUTRShhpNWnp0=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=tuc+VHDccH39CXrTezK0z2rbgd7J0q7dlmwsAy5dKNHgSYcKWuroaqSstMCjRJGKj GoUXDiv3QuvVYH7tGzSefGkkl0hCBVAroujlYjJI2CEw1kxtNxtIppLExKoXxf6XzR vWzRQOBaPh5Yp3Zj62ndrGyW2DwIKxhIoKx3IcolAe0vymm82NLtHDqp3kr9n+AZw+ V6fXqz0jM4s6BtLx5B6gqHoGMPKMJpY9CdRb8HJpxY0dieJrAyJtKaMWxdDNr/tpcl oFfCtQznBihdAnN39VinI/Z2erzEZz5nRdl/z1q4nE4qI9/y42HhXba+Uf3KkQ83Py LZ+8CVk8j8Uug== Received: by mail-il1-f169.google.com with SMTP id e9e14a558f8ab-3a344f92143so10880195ab.2 for ; Fri, 04 Oct 2024 13:33:31 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCXVETOHPHLBk9sNf712FJxsHe4eHl+rDbQ9cEXznB6E65nDaqtg19Bm5I/El9l6nMdy1QYBNR2gdw==@kvack.org X-Gm-Message-State: AOJu0YzBvfPE0WTsZ8L3X4dV4dgobUebRzasX7fbd5s6/AWlqyID3N5V l+/2CzcRxC7yq/8f955A6kvIVlZUU3Q3qCbL8wsm/TKbVcmym0Nos5NGlqUmfiUddUoqf5kLJQh 5+/L4MuguzfVCm1HwiRFxh9yAcGA= X-Google-Smtp-Source: AGHT+IHKcUX7A7EqBxhx0p8LA2IErluMnPnMlNw7uAMVTmuO7e0uQR4F1tGjJKCmJfYI5Lh+nTutnwcr1eMdldwatRU= X-Received: by 2002:a05:6e02:144d:b0:3a3:3e1f:1168 with SMTP id e9e14a558f8ab-3a375bb6c76mr40195255ab.17.1728074010416; Fri, 04 Oct 2024 13:33:30 -0700 (PDT) MIME-Version: 1.0 References: <20241002180956.1781008-1-namhyung@kernel.org> <20241002180956.1781008-2-namhyung@kernel.org> In-Reply-To: <20241002180956.1781008-2-namhyung@kernel.org> From: Song Liu Date: Fri, 4 Oct 2024 13:33:19 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4 bpf-next 1/3] bpf: Add kmem_cache iterator To: Namhyung Kim Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , 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-Rspamd-Queue-Id: 3735820002 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 6jrw49h4ks4i86usrarskfqjh5pyseua X-HE-Tag: 1728074012-755291 X-HE-Meta: U2FsdGVkX1/6nkrCgC/GSfQ6N7oMHqt5EGx4AfoNhUJekO6Drq8g6PFFDiHy3FTQWYvlOF1Ge2iBJDHwCbYJ6wCL9ljnWsf3N4FFc3ew8ZmR7aLLnhSWQleDQ91sIcnKmDNQ7nNnL5v5jDsPCQEp3BEZr57d+3X58Dpfia9VAYzEgn05Xaapb3FgWBKHqK9fRZxN/ltT5VucNK57DmrjuC9dww9x+GmtnHBpY7hS/tK9XQb/qyVmbpk0l2NvqsyKSvosHft63xbemk2YEofEUcaulo5Iq4qPIeRMNvdM9bb07SkYjwFQutpI0HfIpwZmM/6sYypekfUK/kV1fjOXXghzI9Tq1zPUQLMVSp6UDeHLQpw7YGy9U8PfoaZ8JVMVBL9/RMVZDEtj/lxII/AcpGrSQhI+Z4sHy/wT/DOTHIir0cuKKmdCjzMAuOoGcAtE9vYdeuGi96MNCmguUlBzxZqR2z5pkHACVAHyDJ24iDQj+51PLvjzO4shQIPza4QSTIlGZ5LvazJGOX+Wf8Pgd4rq8rOiRIIQqvRVqxqWWPH1Eb99xomCoCPvLT0ljRnF69VnauSFLvGEq8pfa4FI8PwBOugWv/3ALE6zX32jRKdwX6YQ/fnsML0wnLzHdVdk5w77ZWkdvTHCbywKAGaGaZco3mqTM7SBSk2/6gC3VuJ/Sse1jFWEOFHJIoYwhhvnqduaL7ziIUdV6vVS9m2IbSUfgpvX66vzRs2MilAAZq9VnPslBWXg0Y5o54KlrOozEnMy2Y1UAL7I1LewsTsPA1QOZ9MfXh7MCo8gYK2J7FND8uZSgSqTVNELjIGOU/VT+V11Lu5+xIkb2sB31YJQfWxRQPu0NVskx6fszrGXQd2c7bGFoxJLJTt2Q0u2Ms2EbIeG08jZcu8+t4BTH0Zq2Cut3EYE6t4uGfMgNLVs/tf0OiM8TQ8P93zuqzlDB6XNXuxurSWX8qkeYW5qhEr J+DTkwCp ph128Q+E8ecxoDwM3nxhLxjea2D37Oi8PlQsyhrDHqMRm2cOL7sPgI6KNQLMapoOlgQ7cm1VABlgucE0CQAI1GBUxWSCFTxTGUVRDUqT0tLiBe8azG0sSRx2IMkFYTeeeDN9ZIOVL7rd+0reb/macHLfpo4Xutr5cyFCfHj8MRIKj+JjQfo8SW10opKslm+vAM3v9l/varLfKfD1ebJbsDdoGffBIWz7ccvqeLteA9zhPWPI8JxTEKm0dHx+A2s1Rb5H+A1f3TDwBOntCZwVZqXHyDwTP2ShbVXi093KKbiNSn9gyfDHpiussiH4HthE/HGIhGqsyWLXoNCrSlPShRzgd1p3a19hnShOvHay2TfHqZisIvrtJllaFqjTQQLe/GcodbZGWyDHfg812nm8HaHVH1mPgKYyMLNGSlM/Lrtds9fw= 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, Oct 2, 2024 at 11:09=E2=80=AFAM Namhyung Kim = wrote: > [...] > + > + mutex_lock(&slab_mutex); > + > + /* > + * Find an entry at the given position in the slab_caches list in= stead Nit: style of multi-line comment: "/* Find ...". > + * of keeping a reference (of the last visited entry, if any) out= of > + * slab_mutex. It might miss something if one is deleted in the m= iddle > + * while it releases the lock. But it should be rare and there's= not > + * much we can do about it. > + */ > + list_for_each_entry(s, &slab_caches, list) { > + if (cnt =3D=3D *pos) { > + /* > + * Make sure this entry remains in the list by ge= tting > + * a new reference count. Note that boot_cache e= ntries > + * have a negative refcount, so don't touch them. > + */ > + if (s->refcount > 0) > + s->refcount++; > + found =3D true; > + break; > + } > + cnt++; > + } > + mutex_unlock(&slab_mutex); > + > + if (!found) > + return NULL; > + > + ++*pos; > + return s; > +} > + > +static void kmem_cache_iter_seq_stop(struct seq_file *seq, void *v) > +{ > + struct bpf_iter_meta meta; > + struct bpf_iter__kmem_cache ctx =3D { > + .meta =3D &meta, > + .s =3D v, > + }; > + struct bpf_prog *prog; > + bool destroy =3D false; > + > + meta.seq =3D seq; > + prog =3D bpf_iter_get_info(&meta, true); > + if (prog) > + bpf_iter_run_prog(prog, &ctx); > + > + if (ctx.s =3D=3D NULL) > + return; > + > + mutex_lock(&slab_mutex); > + > + /* Skip kmem_cache_destroy() for active entries */ > + if (ctx.s->refcount > 1) > + ctx.s->refcount--; > + else if (ctx.s->refcount =3D=3D 1) > + destroy =3D true; > + > + mutex_unlock(&slab_mutex); > + > + if (destroy) > + kmem_cache_destroy(ctx.s); > +} > + > +static void *kmem_cache_iter_seq_next(struct seq_file *seq, void *v, lof= f_t *pos) > +{ > + struct kmem_cache *s =3D v; > + struct kmem_cache *next =3D NULL; > + bool destroy =3D false; > + > + ++*pos; > + > + mutex_lock(&slab_mutex); > + > + if (list_last_entry(&slab_caches, struct kmem_cache, list) !=3D s= ) { > + next =3D list_next_entry(s, list); > + if (next->refcount > 0) > + next->refcount++; What if next->refcount <=3D0? Shall we find next of next? > + } > + > + /* Skip kmem_cache_destroy() for active entries */ > + if (s->refcount > 1) > + s->refcount--; > + else if (s->refcount =3D=3D 1) > + destroy =3D true; > + > + mutex_unlock(&slab_mutex); > + > + if (destroy) > + kmem_cache_destroy(s); > + > + return next; > +} [...]