From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4947894592527477858==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH v5] mm: slub: move sysfs slab alloc/free interfaces to debugfs Date: Fri, 07 May 2021 02:40:09 +0800 Message-ID: <202105070253.GuJL1RPR-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============4947894592527477858== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <1620296523-21922-1-git-send-email-faiyazm@codeaurora.org> References: <1620296523-21922-1-git-send-email-faiyazm@codeaurora.org> TO: Faiyaz Mohammed TO: cl(a)linux.com TO: penberg(a)kernel.org TO: rientjes(a)google.com TO: iamjoonsoo.kim(a)lge.com TO: akpm(a)linux-foundation.org TO: vbabka(a)suse.cz TO: linux-mm(a)kvack.org TO: linux-kernel(a)vger.kernel.org TO: glittao(a)gmail.com CC: vinmenon(a)codeaurora.org Hi Faiyaz, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.12] [cannot apply to hnaz-linux-mm/master next-20210506] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Faiyaz-Mohammed/mm-slub-mo= ve-sysfs-slab-alloc-free-interfaces-to-debugfs/20210506-182420 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = 8404c9fbc84b741f66cff7d4934a25dd2c344452 :::::: branch date: 8 hours ago :::::: commit date: 8 hours ago config: i386-randconfig-m021-20210506 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: mm/slub.c:5891 slab_debugfs_start() warn: possible memory leak of 'spos' vim +/spos +5891 mm/slub.c 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5876 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5877 static void *slab_debugfs_= start(struct seq_file *seq, loff_t *ppos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5878 { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5879 struct kmem_cache_node *n; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5880 struct kmem_cache *s; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5881 enum track_item alloc; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5882 int node; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5883 loff_t *spos =3D kmalloc(= sizeof(loff_t), GFP_KERNEL); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5884 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5885 s =3D seq->file->f_inode-= >i_private; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5886 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5887 if (!spos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5888 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5889 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5890 if (!(s->flags & SLAB_STO= RE_USER)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 @5891 return ERR_PTR(-EOPNOTSU= PP); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5892 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5893 if (*ppos =3D=3D 0) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5894 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5895 t.count =3D 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5896 t.max =3D 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5897 t.loc =3D NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5898 if (strcmp(seq->file->f_= path.dentry->d_name.name, "alloc_traces") =3D=3D 0) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5899 alloc =3D TRACK_ALLOC; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5900 else 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5901 alloc =3D TRACK_FREE; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5902 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5903 if (!alloc_loc_track(&t,= PAGE_SIZE / sizeof(struct location), 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5904 GFP_KERNEL)) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5905 seq_puts(seq, "Out of m= emory\n"); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5906 return ERR_PTR(-ENOMEM); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5907 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5908 /* Push back cpu slabs */ 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5909 flush_all(s); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5910 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5911 for_each_kmem_cache_node= (s, node, n) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5912 unsigned long flags; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5913 struct page *page; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5914 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5915 if (!atomic_long_read(&= n->nr_slabs)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5916 continue; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5917 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5918 spin_lock_irqsave(&n->l= ist_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5919 list_for_each_entry(pag= e, &n->partial, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5920 process_slab(&t, s, pa= ge, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5921 list_for_each_entry(pag= e, &n->full, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5922 process_slab(&t, s, pa= ge, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5923 spin_unlock_irqrestore(= &n->list_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5924 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5925 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5926 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5927 if (*ppos < t.count) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5928 *spos =3D *ppos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5929 return spos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5930 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5931 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5932 kfree(spos); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5933 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5934 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5935 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --===============4947894592527477858== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 FTRStcmqHQ5U4dNy53RTNiVywlqItKHtZGKOlkicIOitKxv8aXC6a+h15I+xUZW6TqPPvHmwcz6H PQ93fbKv3vf0vc39kCL01447sfgoKN50vaqDi+kX6yi0hH69et6/cPomiASbmePopM9uAwojCiLv xINL6a+HDnLvAnamgpP7GyPLhsNWqB6odUu7vYk1WOesrJPCX5waoR+tnIUyhgMO1pfqvnaBMlm2 gCvFNgZxEQUCepueHPYYRag/mon4Ouhp6MxtK3JbyU1BTKgLp6mPMwIbi5p7KwixWu+2LuA+hxXk fgYD1QF9Op06h6/8gNzYMoglfUvpN+ZR2w1zqxPaJv0xlgl9FA6/pT2ReDkI+KetajrM4zTCzC9q Avs9563EhsGJWx45Uo3mhogJ0j56r+AhMc8a5oR96xmaUDmEG2BMFnK10Met2fMPeZRV0ph3RRKl Zxc3l0Lhh88g9DcxqTe51I3XFxEHPlXPn7bWQIkTksaTKX+MrikZy5F/PQ7ty8c+DWdVdq91OVbO BsyIqzQsgrebaRnNUoG64vE0UEAktFjGY8uWR117s/Eka0nzdnEO97yS0hNig9EKAOP+HzWJSQu1 hE6XIzroukFBBvjq8a2n/upR7vO2K9AJHRqrWEAREpXMV6E5dQhR5QhezDgxEtaAiTf50pbTRXhp vE0GtXhtvpAZFnyliZJ87UVrqkKb9f6Alz98cYkwGdbqaW04kLfWW6MMdT28EFtg+8lawvhS7MXO vZ5KrBD+AhdffZFC3WNRDeGHjeNmThOZ3ykmgtmGayQnLOeNjNn/iwKaGdsBko3DjaVZnZnmAAiR T//OY4hTh+lQPjB9LDxnM65d+Mm2AE1a9I+DbvEJvhjQwo3TAq0gCr/I1iBSwCkleYCdVqSC01yI n/KpSvh+hPgxHvrAaN0lokDkRe7o2vV8uKWu/38bWY1Hkz0CAA== --===============4947894592527477858==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4031587955258146746==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH v5] mm: slub: move sysfs slab alloc/free interfaces to debugfs Date: Fri, 07 May 2021 08:21:20 +0300 Message-ID: <202105070253.GuJL1RPR-lkp@intel.com> In-Reply-To: <1620296523-21922-1-git-send-email-faiyazm@codeaurora.org> List-Id: --===============4031587955258146746== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Faiyaz, url: https://github.com/0day-ci/linux/commits/Faiyaz-Mohammed/mm-slub-mo= ve-sysfs-slab-alloc-free-interfaces-to-debugfs/20210506-182420 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = 8404c9fbc84b741f66cff7d4934a25dd2c344452 config: i386-randconfig-m021-20210506 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: mm/slub.c:5891 slab_debugfs_start() warn: possible memory leak of 'spos' vim +/spos +5891 mm/slub.c 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5877 static void *slab_debugfs_= start(struct seq_file *seq, loff_t *ppos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5878 { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5879 struct kmem_cache_node *n; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5880 struct kmem_cache *s; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5881 enum track_item alloc; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5882 int node; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5883 loff_t *spos =3D kmalloc(= sizeof(loff_t), GFP_KERNEL); ^^^^^^^^^^^^^^^^^^^= ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Generally avoid putting functions which can fail in the declaration block. Allocations inside the declaration block are a tiny percent of declarations over all but they are an outsize source of static checker bugs. 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5884 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5885 s =3D seq->file->f_inode-= >i_private; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5886 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5887 if (!spos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5888 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5889 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5890 if (!(s->flags & SLAB_STO= RE_USER)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 @5891 return ERR_PTR(-EOPNOTSU= PP); "spos" is leaked. 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5892 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5893 if (*ppos =3D=3D 0) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5894 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5895 t.count =3D 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5896 t.max =3D 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5897 t.loc =3D NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5898 if (strcmp(seq->file->f_= path.dentry->d_name.name, "alloc_traces") =3D=3D 0) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5899 alloc =3D TRACK_ALLOC; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5900 else 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5901 alloc =3D TRACK_FREE; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5902 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5903 if (!alloc_loc_track(&t,= PAGE_SIZE / sizeof(struct location), 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5904 GFP_KERNEL)) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5905 seq_puts(seq, "Out of m= emory\n"); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5906 return ERR_PTR(-ENOMEM); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5907 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5908 /* Push back cpu slabs */ 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5909 flush_all(s); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5910 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5911 for_each_kmem_cache_node= (s, node, n) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5912 unsigned long flags; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5913 struct page *page; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5914 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5915 if (!atomic_long_read(&= n->nr_slabs)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5916 continue; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5917 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5918 spin_lock_irqsave(&n->l= ist_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5919 list_for_each_entry(pag= e, &n->partial, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5920 process_slab(&t, s, pa= ge, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5921 list_for_each_entry(pag= e, &n->full, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5922 process_slab(&t, s, pa= ge, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5923 spin_unlock_irqrestore(= &n->list_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5924 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5925 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5926 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5927 if (*ppos < t.count) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5928 *spos =3D *ppos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5929 return spos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5930 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5931 = 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5932 kfree(spos); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5933 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5934 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --===============4031587955258146746==-- 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=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FAKE_REPLY_C, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED,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 60B21C433ED for ; Fri, 7 May 2021 05:21:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D55F4610A5 for ; Fri, 7 May 2021 05:21:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D55F4610A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 3F2696B007D; Fri, 7 May 2021 01:21:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3555A6B007E; Fri, 7 May 2021 01:21:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A77B6B0080; Fri, 7 May 2021 01:21:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0177.hostedemail.com [216.40.44.177]) by kanga.kvack.org (Postfix) with ESMTP id ED6466B007D for ; Fri, 7 May 2021 01:21:41 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 9DE72181AEF23 for ; Fri, 7 May 2021 05:21:41 +0000 (UTC) X-FDA: 78113287602.10.3DCD913 Received: from userp2120.oracle.com (userp2120.oracle.com [156.151.31.85]) by imf10.hostedemail.com (Postfix) with ESMTP id 0D25440002EA for ; Fri, 7 May 2021 05:21:26 +0000 (UTC) Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 1475IeFq009406; Fri, 7 May 2021 05:21:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : mime-version : content-type : in-reply-to; s=corp-2020-01-29; bh=m82Tiv3N8EyLayqOU7hdwku4RkRAu25qOSv0k1M7AEg=; b=fBe3qzh1ZTH7lIHkvNdevlu3sSq1gqVCaYoK+3Xsu0w/5E2d5tnQTf/it1cg6UMj9ZQv B6sXxaQJ+CbvwbRlLgQTyTpAQb8oDXaFMywtOwLd47TDiY0IVmjF0V2SNmnbIGoMV8ni VRK70eankEcPQipBSN3XoSNFCiDhr7BlbZuXrlNJxmOIk0cz6yJpRLj/5BRdU2L3rDk0 ST3PFHUeJ+A8h+JawsA/oxxYNao2bRDUFzkcoLG9lCArg8zYWyVN9m8nmQifYYySNwLX 6RCwNM5Kj+YMNzY/NRsIbm5f7u9yE8k8noRLHrhGt5rmNznxXvscz8RL5LHYMB9vtbvj kA== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by userp2120.oracle.com with ESMTP id 38csqvgdch-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 May 2021 05:21:33 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 1475LMUu109621; Fri, 7 May 2021 05:21:33 GMT Received: from pps.reinject (localhost [127.0.0.1]) by userp3030.oracle.com with ESMTP id 38css8567s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 May 2021 05:21:32 +0000 Received: from userp3030.oracle.com (userp3030.oracle.com [127.0.0.1]) by pps.reinject (8.16.0.36/8.16.0.36) with SMTP id 1475LVbG111523; Fri, 7 May 2021 05:21:31 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3030.oracle.com with ESMTP id 38css85674-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 07 May 2021 05:21:31 +0000 Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 1475LSpa010458; Fri, 7 May 2021 05:21:29 GMT Received: from kadam (/102.36.221.92) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 06 May 2021 22:21:28 -0700 Date: Fri, 7 May 2021 08:21:20 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Faiyaz Mohammed , cl@linux.com, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, akpm@linux-foundation.org, vbabka@suse.cz, linux-mm@kvack.org, linux-kernel@vger.kernel.org, glittao@gmail.com Cc: lkp@intel.com, kbuild-all@lists.01.org, vinmenon@codeaurora.org Subject: Re: [PATCH v5] mm: slub: move sysfs slab alloc/free interfaces to debugfs Message-ID: <202105070253.GuJL1RPR-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1620296523-21922-1-git-send-email-faiyazm@codeaurora.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-Proofpoint-ORIG-GUID: HMNtw0v1W_3vSp9qDEmtn0meStVYKtoz X-Proofpoint-GUID: HMNtw0v1W_3vSp9qDEmtn0meStVYKtoz X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=9976 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0 suspectscore=0 spamscore=0 impostorscore=0 phishscore=0 clxscore=1011 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105070038 Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2020-01-29 header.b=fBe3qzh1; dmarc=pass (policy=none) header.from=oracle.com; spf=none (imf10.hostedemail.com: domain of dan.carpenter@oracle.com has no SPF policy when checking 156.151.31.85) smtp.mailfrom=dan.carpenter@oracle.com X-Rspamd-Server: rspam03 X-Stat-Signature: 9mbt8k6jb1dfmbs655kg4tf7wqo7rjik X-Rspamd-Queue-Id: 0D25440002EA Received-SPF: none (oracle.com>: No applicable sender policy available) receiver=imf10; identity=mailfrom; envelope-from=""; helo=userp2120.oracle.com; client-ip=156.151.31.85 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620364886-954093 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: Hi Faiyaz, url: https://github.com/0day-ci/linux/commits/Faiyaz-Mohammed/mm-slub-move-sysfs-slab-alloc-free-interfaces-to-debugfs/20210506-182420 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 8404c9fbc84b741f66cff7d4934a25dd2c344452 config: i386-randconfig-m021-20210506 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: mm/slub.c:5891 slab_debugfs_start() warn: possible memory leak of 'spos' vim +/spos +5891 mm/slub.c 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5877 static void *slab_debugfs_start(struct seq_file *seq, loff_t *ppos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5878 { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5879 struct kmem_cache_node *n; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5880 struct kmem_cache *s; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5881 enum track_item alloc; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5882 int node; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5883 loff_t *spos = kmalloc(sizeof(loff_t), GFP_KERNEL); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Generally avoid putting functions which can fail in the declaration block. Allocations inside the declaration block are a tiny percent of declarations over all but they are an outsize source of static checker bugs. 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5884 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5885 s = seq->file->f_inode->i_private; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5886 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5887 if (!spos) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5888 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5889 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5890 if (!(s->flags & SLAB_STORE_USER)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 @5891 return ERR_PTR(-EOPNOTSUPP); "spos" is leaked. 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5892 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5893 if (*ppos == 0) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5894 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5895 t.count = 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5896 t.max = 0; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5897 t.loc = NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5898 if (strcmp(seq->file->f_path.dentry->d_name.name, "alloc_traces") == 0) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5899 alloc = TRACK_ALLOC; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5900 else 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5901 alloc = TRACK_FREE; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5902 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5903 if (!alloc_loc_track(&t, PAGE_SIZE / sizeof(struct location), 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5904 GFP_KERNEL)) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5905 seq_puts(seq, "Out of memory\n"); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5906 return ERR_PTR(-ENOMEM); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5907 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5908 /* Push back cpu slabs */ 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5909 flush_all(s); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5910 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5911 for_each_kmem_cache_node(s, node, n) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5912 unsigned long flags; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5913 struct page *page; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5914 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5915 if (!atomic_long_read(&n->nr_slabs)) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5916 continue; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5917 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5918 spin_lock_irqsave(&n->list_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5919 list_for_each_entry(page, &n->partial, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5920 process_slab(&t, s, page, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5921 list_for_each_entry(page, &n->full, slab_list) 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5922 process_slab(&t, s, page, alloc); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5923 spin_unlock_irqrestore(&n->list_lock, flags); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5924 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5925 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5926 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5927 if (*ppos < t.count) { 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5928 *spos = *ppos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5929 return spos; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5930 } 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5931 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5932 kfree(spos); 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5933 return NULL; 88e180b99466c1 Faiyaz Mohammed 2021-05-06 5934 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org