From patchwork Mon Dec 12 00:37:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 13070701 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 AC582C4332F for ; Mon, 12 Dec 2022 00:38:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4CA87940008; Sun, 11 Dec 2022 19:38:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 47A8B940007; Sun, 11 Dec 2022 19:38:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3426A940008; Sun, 11 Dec 2022 19:38:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2136E940007 for ; Sun, 11 Dec 2022 19:38:20 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id EDAD7AAC82 for ; Mon, 12 Dec 2022 00:38:19 +0000 (UTC) X-FDA: 80231792718.10.A881967 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf29.hostedemail.com (Postfix) with ESMTP id 541B9120006 for ; Mon, 12 Dec 2022 00:38:18 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eI2+IZqP; spf=pass (imf29.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670805498; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wzAnvaTBJovo8xlms0y3igjQiNiSLX0cTsxqHTkuwSM=; b=jOYCj7gL0ti2Axq2fd2ewjOx3nde++LUmqRNGUi78KUjuZSauJ8Kyw1nAhdVn8RVZytfXN P1rL9fDjlH0NEBgfLe7ZOVot0PLzHQvcPXYokkedA6Jyhbzwd2K4Onur3pudXYQBLGslTS XkhD5HZZJuD3/YuqaBYyM0jKxXvrKkM= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eI2+IZqP; spf=pass (imf29.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670805498; a=rsa-sha256; cv=none; b=C0+Egdke/5RtatmbIYyqetAi8Fk8LLpGpWYmRLG+W2u8vXu3xF7WcyM9HGXVGnNU8NIgE0 wd2Oqw/HRMque6SEL3LbpVhIiGd/PW81MRQR86Nf4p+v8DCv3nI5V3LRgiffLQ2y1Wx6ID yYYXMU7nNjkYfeflMat7bYO0SOWaLBg= Received: by mail-pl1-f182.google.com with SMTP id jn7so10401423plb.13 for ; Sun, 11 Dec 2022 16:38:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wzAnvaTBJovo8xlms0y3igjQiNiSLX0cTsxqHTkuwSM=; b=eI2+IZqPnNU+fWYDGLSbjTEgzHl4BXtLMuGhA0MtZ/EVxW2o2LK1qM8+6vA0Qk6JD9 avFzijOjoV482Nc2xWtNub++FUgX2aQQeh8wyK4R2ltGlzHEFPz6p9oSU4CilG47spe/ wAMMsCWcJf7Yiupe6+CCTwSTzn1Ef6ow/O1PRSmqvhYuuo38Ez8SBGxe0QeJtxeFn7ik 3WfYXwhlyHCNbsTQXRzne+6AJytjw2lHIwee4IH7b82XSUiHCjtp7YGkBm8oxARfv6cJ aVUBb5N8UcXGeog32P/+1cJdhozcbt/PmipuOqt0dJBNY3XIGjYd4my+0OEFVlpRZdI2 BMaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wzAnvaTBJovo8xlms0y3igjQiNiSLX0cTsxqHTkuwSM=; b=4HMVrJ/MVG7h1BrAM5+VESbLhJZ4UOmd5PGbGkfZf0ga4W/R0TK9ExnSKLF/XRizs9 N5uvn4NjHgk+5WkcS6KfQVRMhWEuzZPOux0AcKh1A7nDnBMyEjsQ+6KD13i14fwyQjXc wDxtj3Y4t+DF3cdeHtMHu10GNMCBdY70/4eb1G8mwZo2L3IY5vY4hCJQXHJfG7OjWEpN LwvVAkEiqUYuMzAhZDiZ3VO+AUy7QshQ+vVx3QBhYSvj8T2+rZFsHmKSHglEQMPG3uTn Dbm6Vcjt4jEYIj32gu/BNTbBX4fkIPg3Lt3TJA+FU32MdFOW5BKz/7tghGcyq1gFd+MP XxWQ== X-Gm-Message-State: ANoB5pnH5o7vbXb8xxOy3U7dga7KpPtI56UEUeXp5qyO1zhrFGWokxcd h8HFsTzcUM5nsNla7ARcDKg= X-Google-Smtp-Source: AA0mqf4zVo0bbhsURr5t16X4g/g03JHmX3vwRlJEnZVQmsaxmoghlhj+eGYNGx0eCT7QsIDY4UOTuw== X-Received: by 2002:a05:6a21:329a:b0:a4:829f:a43f with SMTP id yt26-20020a056a21329a00b000a4829fa43fmr22545343pzb.2.1670805497345; Sun, 11 Dec 2022 16:38:17 -0800 (PST) Received: from vultr.guest ([2001:19f0:7002:8c7:5400:4ff:fe3d:656a]) by smtp.gmail.com with ESMTPSA id w9-20020a170902e88900b00177fb862a87sm4895960plg.20.2022.12.11.16.38.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Dec 2022 16:38:16 -0800 (PST) From: Yafang Shao To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, tj@kernel.org, dennis@kernel.org, cl@linux.com, akpm@linux-foundation.org, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, vbabka@suse.cz, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com Cc: linux-mm@kvack.org, bpf@vger.kernel.org, Yafang Shao Subject: [RFC PATCH bpf-next 8/9] bpf: Use bpf_map_kvcalloc in bpf_local_storage Date: Mon, 12 Dec 2022 00:37:10 +0000 Message-Id: <20221212003711.24977-9-laoar.shao@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20221212003711.24977-1-laoar.shao@gmail.com> References: <20221212003711.24977-1-laoar.shao@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 541B9120006 X-Stat-Signature: b6pnsn5yk8dypg9r9gqwoqxti4y9fc1i X-HE-Tag: 1670805498-362245 X-HE-Meta: U2FsdGVkX1+X6BWCZF2Ztd1XIv+sdS4x0yHlwMoLZgbfwAS5Z03EXeyfiLi/2TEwtsF0qFh6Ce3tNcYDRhqdP/O6wqsnNnFP8kV0GgOKjvP9aX/xRDeWU9raKPPqg8H3oKyKK0/1mK00WW2VpTnA/rY2+4tW3YEHePfE1zfTGiNqN6cFElEGkmqcIfM4vADZE5tVSPsAJSU33JEQxAhZd9DJOGxENwu6gyTwQVuh7mitJeLD8Zb1zPWD4VE4djq1BrtMCQKTgPZkwkfy6oRaLyThW5CtcfIWmRw0fpB85+tw4P+LrXz4T7/hXTydhUmwzy4lcQkw6cgbx22biSNVWzoXTtOaCQxt0Kni1h854QAlo7h4hc8sRIyctRXk0Y5zqV0xtQtsJ6T+tC7DKDXqb/B6eNxKNqVqFNIsSOuMhBsZqC45gUMf7ch0im3Pu8lqUVsQaQL4jNjBJnBskcaOP22Dr80JKi/W1/eoIfr7qukLIqBZhoIska2iCcGd9o8DCMWh9SYW+Ldd9SEaRDgscg7GqYqpPXEslJlLw+PfjIs2JQdnfLdAwfTwbLpwtYhyKt0t1IVtbjCMBzCgHAe3k/Cpe/PmrLqPPZ9Q23Bm85IhDR+fGQw8yPs1m8Z8WicqRu0PDoPg+XGXckoKi1B+qDTN5kfmSVeAP/hUgqYoiTi4m2rsUnPhzlwcK9Dsb+0I1DLXitXtVIURxogEQlsvd7Z/XaiR8VWszpDSbqFacM+NYg90wGP0T+LP389YcYq/mnNKV5GSkbgu67e6H7CvdiapfGMextupjUlYMo1d22f3XXzO3Od2FWBdvV6ne2ZUT98k290/tUeYqwiDP6Manqm6VS8rHjqwvUKacDtck2saL0mDNjVKyuvAWWuJj237mbWayaJFERkcVRD72npc+7Eu/ClN8aQbGxm+qMWkixFKYmQavVyNLCc3z5xep0vp8/OrZEDvWdSYM90wIGc QgWLPjBd I+hgnkO3mNf2DZfeWty3/fmNQjFgMdDjBp2stBoAkoR143EOURnYEDUdZp+wuFTKahziepsPiIJY45GRzMJWzlb/QrKvgfevxhc1r7cF8Uh8fPy9GQXgZs70e9T32Gcf4lP+wY/sF6ifBAMhZCDFZi2UDTp9JEA66YITGkZjvKqilglTUARWX+/fPCd1rHeMjqbBH4u3OlEDu4RDtUI9g8Mn633re49BseURwFMpWvM1s1PRUPmfDouRitd1lrSTZyc9OM6wEOqHKMB6bZDyhD4TBHc4ujWv4jALd 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: Introduce new helper bpf_map_kvcalloc() for this memory allocation. Signed-off-by: Yafang Shao --- include/linux/bpf.h | 8 ++++++++ kernel/bpf/bpf_local_storage.c | 4 ++-- kernel/bpf/syscall.c | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index 3de24cfb7a3d..80aca1ef8cc5 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -1873,6 +1873,8 @@ struct bpf_prog *bpf_prog_get_curr_or_next(u32 *id); void *bpf_map_kmalloc_node(const struct bpf_map *map, size_t size, gfp_t flags, int node); void *bpf_map_kzalloc(const struct bpf_map *map, size_t size, gfp_t flags); +void *bpf_map_kvcalloc(struct bpf_map *map, size_t n, size_t size, + gfp_t flags); void __percpu *bpf_map_alloc_percpu(const struct bpf_map *map, size_t size, size_t align, gfp_t flags); #else @@ -1889,6 +1891,12 @@ bpf_map_kzalloc(const struct bpf_map *map, size_t size, gfp_t flags) return kzalloc(size, flags); } +static inline void * +bpf_map_kvcalloc(struct bpf_map *map, size_t n, size_t size, gfp_t flags) +{ + return kvcalloc(n, size, flags); +} + static inline void __percpu * bpf_map_alloc_percpu(const struct bpf_map *map, size_t size, size_t align, gfp_t flags) diff --git a/kernel/bpf/bpf_local_storage.c b/kernel/bpf/bpf_local_storage.c index b39a46e8fb08..0e43cecfdc07 100644 --- a/kernel/bpf/bpf_local_storage.c +++ b/kernel/bpf/bpf_local_storage.c @@ -568,8 +568,8 @@ static struct bpf_local_storage_map *__bpf_local_storage_map_alloc(union bpf_att nbuckets = max_t(u32, 2, nbuckets); smap->bucket_log = ilog2(nbuckets); - smap->buckets = kvcalloc(sizeof(*smap->buckets), nbuckets, - GFP_USER | __GFP_NOWARN | __GFP_ACCOUNT); + smap->buckets = bpf_map_kvcalloc(&smap->map, sizeof(*smap->buckets), + nbuckets, GFP_USER | __GFP_NOWARN); if (!smap->buckets) { bpf_map_area_free(smap); return ERR_PTR(-ENOMEM); diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 35972afb6850..c38875d6aea4 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -470,6 +470,21 @@ void *bpf_map_kzalloc(const struct bpf_map *map, size_t size, gfp_t flags) return ptr; } +void *bpf_map_kvcalloc(struct bpf_map *map, size_t n, size_t size, + gfp_t flags) +{ + struct mem_cgroup *memcg, *old_memcg; + void *ptr; + + memcg = bpf_map_get_memcg(map); + old_memcg = set_active_memcg(memcg); + ptr = kvcalloc(n, size, flags | __GFP_ACCOUNT); + set_active_memcg(old_memcg); + mem_cgroup_put(memcg); + + return ptr; +} + void __percpu *bpf_map_alloc_percpu(const struct bpf_map *map, size_t size, size_t align, gfp_t flags) {