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 X-Spam-Level: X-Spam-Status: No, score=-16.3 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90721C433DF for ; Wed, 29 Jul 2020 23:40:47 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4CBBB2074B for ; Wed, 29 Jul 2020 23:40:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="mqCQBH9v" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4CBBB2074B Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C94DC6B0003; Wed, 29 Jul 2020 19:40:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C46096B0006; Wed, 29 Jul 2020 19:40:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B5B456B0007; Wed, 29 Jul 2020 19:40:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0254.hostedemail.com [216.40.44.254]) by kanga.kvack.org (Postfix) with ESMTP id A428C6B0003 for ; Wed, 29 Jul 2020 19:40:46 -0400 (EDT) Received: from smtpin12.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 349FB181AEF00 for ; Wed, 29 Jul 2020 23:40:46 +0000 (UTC) X-FDA: 77092735692.12.nut55_2a0b79526f76 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin12.hostedemail.com (Postfix) with ESMTP id 14AFA180559F5 for ; Wed, 29 Jul 2020 23:40:46 +0000 (UTC) X-HE-Tag: nut55_2a0b79526f76 X-Filterd-Recvd-Size: 5819 Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by imf07.hostedemail.com (Postfix) with ESMTP for ; Wed, 29 Jul 2020 23:40:45 +0000 (UTC) Received: by mail-pl1-f195.google.com with SMTP id t6so12792313plo.3 for ; Wed, 29 Jul 2020 16:40:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=ehka3Bw+qd9RU1NQVDq9GEs2det9sBZFzS6S/ACMdzA=; b=mqCQBH9vMHhimagKysVjN9pVeYMzrPOTA5ICK+rRv5APsM1O7Hptx0qoD/CSJ1A8Da n4hoN2jH/nJCLkamRiv7OdvcLtd8lqgPZIGkeLgqiPT8RMisVPsLQOXgN9klc1YnP75y dwikCB+pB1/CN52Wm++Hlq2jC5eicp0lpCaRLBo6usz5UXcHSlV1BwOYzmCtFMl0PjOI 3M2YNMRfnRNItbbPlUgMs4q38Kdk4fqjb9Iavq5kPuGr2CnzHB/NUyLHpPIZtxE3nuR9 LRkr6ApHxjUGcYzeWQCrzG/396tzmLd3Ye4k/bBxNzsDe4l93mGr/IuzGJJR2XEH872F ThRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=ehka3Bw+qd9RU1NQVDq9GEs2det9sBZFzS6S/ACMdzA=; b=g6vlRXNnRVqXOHLS72JE92PxHif2+OiulCpnOgPa44nzPAD8Q4aEzPwuxjHThf6W63 fnVZnFyIgX47n60PLjbgmMB3PQNKSPVYcdLN6+iAsXHAIgbmuOrGjbNc1ttrgWsGcfGQ 8DP8xHPNk1QQgPmQXOVDZmVyXO8WL++w6Hl3u2ZxlRCJDcQZzOe1AEplNzDMViXd28Mf 9RcwtFKsgntQjYridNdayOx/gkv5zew+TZOTNxeDShlEYkg2ycuY5zMrWHm0x+6ApM0c lEjkz57Q5k3XLq7LYinOcO8N1HFuxjswZWrC22Xqe1U8p/XCiQ8qPlhf6EL5kimj2aPW Y1eg== X-Gm-Message-State: AOAM530QKwvpfvbRrWyhW3b7yfyR4QuNdu5Qp1TRR2I5EjxVfdPNwQNu jbkcJVKEwQ+m5BpfJlqxyPg/2g== X-Google-Smtp-Source: ABdhPJxJSNtCj/X3Tb+Q37+Ym+uH8rDguC9MqpnlzO9RvztZlOCocJLBoapccfc1XEhib+ITKb8rAg== X-Received: by 2002:a17:902:7c8b:: with SMTP id y11mr28788386pll.142.1596066044318; Wed, 29 Jul 2020 16:40:44 -0700 (PDT) Received: from [2620:15c:17:3:4a0f:cfff:fe51:6667] ([2620:15c:17:3:4a0f:cfff:fe51:6667]) by smtp.gmail.com with ESMTPSA id m190sm2051252pfm.89.2020.07.29.16.40.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 16:40:43 -0700 (PDT) Date: Wed, 29 Jul 2020 16:40:42 -0700 (PDT) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Qianli Zhao , Roman Gushchin cc: cl@linux.com, penberg@kernel.org, iamjoonsoo.kim@lge.com, Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com, zhaoqianli@xiaomi.com Subject: Re: [PATCH] mm: slab: Avoid the use of one-element array and use struct_size() helper In-Reply-To: <1596034214-15010-1-git-send-email-zhaoqianligood@gmail.com> Message-ID: References: <1596034214-15010-1-git-send-email-zhaoqianligood@gmail.com> User-Agent: Alpine 2.23 (DEB 453 2020-06-18) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1482994552-2092936226-1596066043=:3120473" X-Rspamd-Queue-Id: 14AFA180559F5 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 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: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1482994552-2092936226-1596066043=:3120473 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, 29 Jul 2020, Qianli Zhao wrote: > From: Qianli Zhao >=20 > There is a regular need in the kernel to provide a way to declare havin= g a > dynamically sized set of trailing elements in a structure. Kernel code = should > always use =E2=80=9Cflexible array members=E2=80=9D[1] for these cases.= The older style of > one-element or zero-length arrays should no longer be used[2]. >=20 > Make use of the struct_size() helper instead of an open-coded version > in order to avoid any potential type mistakes. >=20 > [1] https://en.wikipedia.org/wiki/Flexible_array_member > [2] https://github.com/KSPP/linux/issues/21 >=20 > Signed-off-by: Qianli Zhao > --- > mm/slab.h | 2 +- > mm/slab_common.c | 7 ++----- > 2 files changed, 3 insertions(+), 6 deletions(-) >=20 > diff --git a/mm/slab.h b/mm/slab.h > index 74f7e09..c12fb65 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -34,7 +34,7 @@ struct kmem_cache { > =20 > struct memcg_cache_array { > struct rcu_head rcu; > - struct kmem_cache *entries[0]; > + struct kmem_cache *entries[]; > }; > =20 > /* This is removed in the -mm tree, see=20 https://www.ozlabs.org/~akpm/mmotm/broken-out/mm-memcg-slab-use-a-single-= set-of-kmem_caches-for-all-allocations.patch > diff --git a/mm/slab_common.c b/mm/slab_common.c > index fe8b684..56f4818 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -166,9 +166,7 @@ static int init_memcg_params(struct kmem_cache *s, > if (!memcg_nr_cache_ids) > return 0; > =20 > - arr =3D kvzalloc(sizeof(struct memcg_cache_array) + > - memcg_nr_cache_ids * sizeof(void *), > - GFP_KERNEL); > + arr =3D kvzalloc(struct_size(arr, entries, memcg_nr_cache_ids), GFP_K= ERNEL); > if (!arr) > return -ENOMEM; > =20 > @@ -199,8 +197,7 @@ static int update_memcg_params(struct kmem_cache *s= , int new_array_size) > { > struct memcg_cache_array *old, *new; > =20 > - new =3D kvzalloc(sizeof(struct memcg_cache_array) + > - new_array_size * sizeof(void *), GFP_KERNEL); > + new =3D kvzalloc(struct_size(new, entries, new_array_size), GFP_KERNE= L); > if (!new) > return -ENOMEM; > =20 > --=20 > 2.7.4 >=20 >=20 --1482994552-2092936226-1596066043=:3120473--