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 5785BC00140 for ; Wed, 24 Aug 2022 03:49:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A52E5940007; Tue, 23 Aug 2022 23:49:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A03C96B0074; Tue, 23 Aug 2022 23:49:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CAB7940007; Tue, 23 Aug 2022 23:49:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 7E23F6B0073 for ; Tue, 23 Aug 2022 23:49:10 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 495544093F for ; Wed, 24 Aug 2022 03:49:10 +0000 (UTC) X-FDA: 79833105660.22.2B9A7C1 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf23.hostedemail.com (Postfix) with ESMTP id D78A4140030 for ; Wed, 24 Aug 2022 03:49:09 +0000 (UTC) Received: by mail-pf1-f179.google.com with SMTP id y127so12338607pfy.5 for ; Tue, 23 Aug 2022 20:49:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc; bh=pMstgUwVyF7sr8huG/j915FXzKAXfh3GBGR9nsk2uiU=; b=Ciy0fz1HGIsEPLhIEZ+v0m0CYBLhq2FbeahxHEVsYrA3UfCuenL7HGJBLt1AN6apgV 0PifjwvFApDgbr4mZhvPw2iBvKm3HcnpJUlliX/9D4gtfZK05W+uMpWGWB1M8HpRDjm7 mr3bmSJfIp2hm3zEn2ErV6YADvk33PM3q0/sBP9P75b7TGaLCagrpNVWLs5REUGQs+CO v36V+Mb6UVWsBG7GK5zuJj22tP/gr4T9beLCEGFcGx0RXBd9L9Kxj6Bk17CxvWeB/GvS l4Ljcfzb1dcP6aoNYir4nFBx3RYswK7woMhjqtuBwTFGpfNZsfauZkSgesDUYwJB7gJM /3MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=pMstgUwVyF7sr8huG/j915FXzKAXfh3GBGR9nsk2uiU=; b=U0OYwqYmbKZhfibREUK650t/d3ftCjQChYgseji07YCHpPfppmdH41QOSG/Jzp8jPq MlEncEWU4QDnvdCCb7ZCBMUrn98KqOVxqvQ9cPpuuPRR5kSVWnef/oCAOIRmkyjmG4+1 29JPJfLfOCVm3IY/EdRrIS7Hjphhoqx5dVjob67PEd77xgGxtYngBgyAM0xL4wg3SZm+ ZIKO/A98dEvzcQ8k67sXcPn0YV794lK2l7H5luIURqWZzE1AYHJXIvUThvz04drhH+vP lYIum6bzqn9m4YFo5c9G10Sz0F8dcF8NjOgtge8qTHCpBmWS2geyq7iJrvQ/6w7c9WKt somw== X-Gm-Message-State: ACgBeo1Kg9+sk8NRcV+F+rp8yOD07FgXLhuYpLaxo4dqtLAKCc0a3TlY iGcNfOaO95SaAO3K5VzGD3s= X-Google-Smtp-Source: AA6agR4pySk4ssd2ZPjTpf57h9kzMrqiLXpzvdsSHcTOQxPkG3Zl8v3p9mIQJENgXFhBj9FBqh0h3Q== X-Received: by 2002:a63:290:0:b0:41c:506f:7ae9 with SMTP id 138-20020a630290000000b0041c506f7ae9mr23178039pgc.373.1661312948634; Tue, 23 Aug 2022 20:49:08 -0700 (PDT) Received: from hyeyoo ([114.29.91.56]) by smtp.gmail.com with ESMTPSA id bk2-20020a056a02028200b0041c0c9c0072sm9908528pgb.64.2022.08.23.20.49.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Aug 2022 20:49:07 -0700 (PDT) Date: Wed, 24 Aug 2022 12:49:03 +0900 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: kernel test robot Cc: kbuild-all@lists.01.org, linux-mm@kvack.org, Vlastimil Babka Subject: Re: [vbabka-slab:for-6.1/common_kmalloc 12/17] mm/slab_common.c:1023:7: warning: no previous prototype for '__kmalloc_large_node' Message-ID: References: <202208241004.jZykmQOH-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202208241004.jZykmQOH-lkp@intel.com> ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Ciy0fz1H; spf=pass (imf23.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661312949; a=rsa-sha256; cv=none; b=TK1c9J6Q9OQ8Pu3fkLHb6AoJQezNSAwgguRtteTMypOg3TOp201V6l6Gfqs3R3zjm1muwD fgIaXjsx5Asf0SzOY5oxEYEOz0DbOtB/frPlVyPN9xrX2nzg6dQ46xKZzzLFNePy1m1S2Z cKvEQm6JGhNqK5082bzrfm1huXPXUNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661312949; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=pMstgUwVyF7sr8huG/j915FXzKAXfh3GBGR9nsk2uiU=; b=tmy7sxoPy0THiX5eMGKcib23uIMy0pFE8+QN0y+TAZVWCGEEa+FfajlH3xfx6vtbv6NnE5 5bzErqZpwoOqfsk/J9Herpuq498AW4OmmGNXJyyG98xN+kFS+8jA43ScF9z584l4Ojggft mHkGPkw1n0nbx9szE4xPWyPq16tl49w= Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Ciy0fz1H; spf=pass (imf23.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Queue-Id: D78A4140030 X-Rspamd-Server: rspam05 X-Stat-Signature: f59noxzb5ni9hc8bjdr4oe6fqh4kwjrq X-HE-Tag: 1661312949-494596 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: On Wed, Aug 24, 2022 at 10:46:55AM +0800, kernel test robot wrote: > tree: git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git for-6.1/common_kmalloc > head: b261334803b44092acd06be3c9f32c46af818359 > commit: 79c7527b9805edf14c952deca45de60a8a06a414 [12/17] mm/sl[au]b: generalize kmalloc subsystem > config: x86_64-randconfig-a015 (https://download.01.org/0day-ci/archive/20220824/202208241004.jZykmQOH-lkp@intel.com/config) > compiler: gcc-11 (Debian 11.3.0-5) 11.3.0 > reproduce (this is a W=1 build): > # https://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git/commit/?id=79c7527b9805edf14c952deca45de60a8a06a414 > git remote add vbabka-slab git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git > git fetch --no-tags vbabka-slab for-6.1/common_kmalloc > git checkout 79c7527b9805edf14c952deca45de60a8a06a414 > # save the config file > mkdir build_dir && cp config build_dir/.config > make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash > > If you fix the issue, kindly add following tag where applicable > Reported-by: kernel test robot > > All warnings (new ones prefixed by >>): > > >> mm/slab_common.c:1023:7: warning: no previous prototype for '__kmalloc_large_node' [-Wmissing-prototypes] > 1023 | void *__kmalloc_large_node(size_t size, gfp_t flags, int node) > | ^~~~~~~~~~~~~~~~~~~~ Oh, I did not add static here. Please pull: https://github.com/hygoni/linux.git slab-common-v4r1 Fixed warning above and also fixed wrong comment (@objp in comment but its name is actually 'object') git range-diff for-6.1/common_kmalloc~17...for-6.1/common_kmalloc \ slab-common-v4r1~17...slab-common-v4r1: 1: 0276f0da97e3 = 1: 0276f0da97e3 mm/slab: move NUMA-related code to __do_cache_alloc() 2: d5ea00e8d8c9 = 2: d5ea00e8d8c9 mm/slab: cleanup slab_alloc() and slab_alloc_node() 3: 48c55c42e6b8 = 3: 48c55c42e6b8 mm/slab_common: remove CONFIG_NUMA ifdefs for common kmalloc functions 4: cd8523b488ec = 4: cd8523b488ec mm/slab_common: cleanup kmalloc_track_caller() 5: 0b92d497e03a = 5: 0b92d497e03a mm/sl[au]b: factor out __do_kmalloc_node() 6: d43649c0f472 = 6: d43649c0f472 mm/slab_common: fold kmalloc_order_trace() into kmalloc_large() 7: cd6d756d6118 = 7: cd6d756d6118 mm/slub: move kmalloc_large_node() to slab_common.c 8: fe8f3819416e ! 8: ec277200c5dd mm/slab_common: kmalloc_node: pass large requests to page allocator @@ mm/slab_common.c: void *kmalloc_large(size_t size, gfp_t flags) EXPORT_SYMBOL(kmalloc_large); -void *kmalloc_large_node(size_t size, gfp_t flags, int node) -+void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) ++static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) { struct page *page; void *ptr = NULL; 9: cc40615623ed ! 9: 3d1d49576f4a mm/slab_common: cleanup kmalloc_large() @@ mm/slab_common.c: gfp_t kmalloc_fix_flags(gfp_t flags) -} -EXPORT_SYMBOL(kmalloc_large); - void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) + static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) { -@@ mm/slab_common.c: void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) +@@ mm/slab_common.c: static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) void *ptr = NULL; unsigned int order = get_order(size); @@ mm/slab_common.c: void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int flags |= __GFP_COMP; page = alloc_pages_node(node, flags, order); if (page) { -@@ mm/slab_common.c: void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) +@@ mm/slab_common.c: static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) return ptr; } 10: e14d748cf9ad = 10: d6d55b2e745a mm/slab: kmalloc: pass requests larger than order-1 page to page allocator 11: 84000279b448 = 11: 28c1aabc9f73 mm/sl[au]b: introduce common alloc/free functions without tracepoint 12: 79c7527b9805 ! 12: 7fefa4235ba9 mm/sl[au]b: generalize kmalloc subsystem @@ mm/slab_common.c: void free_large_kmalloc(struct folio *folio, void *object) + +/** + * kfree - free previously allocated memory -+ * @objp: pointer returned by kmalloc. ++ * @object: pointer returned by kmalloc. + * -+ * If @objp is NULL, no operation is performed. ++ * If @object is NULL, no operation is performed. + * + * Don't free memory not originally allocated by kmalloc() + * or you will run into trouble. @@ mm/slab_common.c: void free_large_kmalloc(struct folio *folio, void *object) + +/** + * __ksize -- Uninstrumented ksize. -+ * @objp: pointer to the object ++ * @object: pointer to the object + * + * Unlike ksize(), __ksize() is uninstrumented, and does not provide the same + * safety checks as ksize() with KASAN instrumentation enabled. + * -+ * Return: size of the actual memory used by @objp in bytes ++ * Return: size of the actual memory used by @object in bytes + */ +size_t __ksize(const void *object) +{ @@ mm/slab_common.c: gfp_t kmalloc_fix_flags(gfp_t flags) * know the allocation order to free the pages properly in kfree. */ --void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) -+void *__kmalloc_large_node(size_t size, gfp_t flags, int node) +-static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) ++static void *__kmalloc_large_node(size_t size, gfp_t flags, int node) { struct page *page; void *ptr = NULL; -@@ mm/slab_common.c: void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) +@@ mm/slab_common.c: static void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node) void *kmalloc_large(size_t size, gfp_t flags) { 13: 31be83f97c43 = 13: 446064fdf403 mm/sl[au]b: cleanup kmem_cache_alloc[_node]_trace() 14: 583b9ef311da = 14: c923544d6d61 mm/slab_common: unify NUMA and UMA version of tracepoints 15: d0b3552d07e0 = 15: 72633319472e mm/slab_common: drop kmem_alloc & avoid dereferencing fields when not using 16: 0db36c104255 ! 16: c9b5ded32cc6 mm/slab_common: move declaration of __ksize() to mm/slab.h @@ mm/slab_common.c: void kfree(const void *object) -/** - * __ksize -- Uninstrumented ksize. -- * @objp: pointer to the object +- * @object: pointer to the object - * - * Unlike ksize(), __ksize() is uninstrumented, and does not provide the same - * safety checks as ksize() with KASAN instrumentation enabled. - * -- * Return: size of the actual memory used by @objp in bytes +- * Return: size of the actual memory used by @object in bytes - */ +/* Uninstrumented ksize. Only called by KASAN. */ size_t __ksize(const void *object) 17: b261334803b4 = 17: 0248c8a1af52 mm/sl[au]b: check if large object is valid in __ksize() > vim +/__kmalloc_large_node +1023 mm/slab_common.c > > 1016 > 1017 /* > 1018 * To avoid unnecessary overhead, we pass through large allocation requests > 1019 * directly to the page allocator. We use __GFP_COMP, because we will need to > 1020 * know the allocation order to free the pages properly in kfree. > 1021 */ > 1022 > > 1023 void *__kmalloc_large_node(size_t size, gfp_t flags, int node) > 1024 { > 1025 struct page *page; > 1026 void *ptr = NULL; > 1027 unsigned int order = get_order(size); > 1028 > 1029 if (unlikely(flags & GFP_SLAB_BUG_MASK)) > 1030 flags = kmalloc_fix_flags(flags); > 1031 > 1032 flags |= __GFP_COMP; > 1033 page = alloc_pages_node(node, flags, order); > 1034 if (page) { > 1035 ptr = page_address(page); > 1036 mod_lruvec_page_state(page, NR_SLAB_UNRECLAIMABLE_B, > 1037 PAGE_SIZE << order); > 1038 } > 1039 > 1040 ptr = kasan_kmalloc_large(ptr, size, flags); > 1041 /* As ptr might get tagged, call kmemleak hook after KASAN. */ > 1042 kmemleak_alloc(ptr, size, 1, flags); > 1043 > 1044 return ptr; > 1045 } > 1046 > > -- > 0-DAY CI Kernel Test Service > https://01.org/lkp -- Thanks, Hyeonggon