From patchwork Mon Sep 21 02:00:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Jun X-Patchwork-Id: 11788189 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D6FBA6CA for ; Mon, 21 Sep 2020 02:03:01 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3C7AD207D3 for ; Mon, 21 Sep 2020 02:03:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C7AD207D3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 415DD900017; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 39DB9900009; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 264BA900017; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0089.hostedemail.com [216.40.44.89]) by kanga.kvack.org (Postfix) with ESMTP id 05EBC900009 for ; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Received: from smtpin23.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id BA8B73624 for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) X-FDA: 77285420478.23.goose88_430782e27141 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin23.hostedemail.com (Postfix) with ESMTP id 98F4D37604 for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) X-Spam-Summary: 1,0,0,,d41d8cd98f00b204,chenjun102@huawei.com,,RULES_HIT:30051:30054:30090,0,RBL:45.249.212.32:@huawei.com:.lbl8.mailshell.net-64.95.201.95 62.18.2.100;04y8ruhjaabdf8oe656od9jskj1s7ypp3icgxb5th8e5q5uscm4udnt9b5qszb8.os79i8bz6e3em1ktfpss5n15jbqmniq7db4dsm83z4aap4ge7dq5whthdunmk1u.c-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: goose88_430782e27141 X-Filterd-Recvd-Size: 2928 Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf02.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Sep 2020 02:02:58 +0000 (UTC) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 969C04D159F87F639888; Mon, 21 Sep 2020 10:02:55 +0800 (CST) Received: from mdc.huawei.com (10.175.112.208) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Mon, 21 Sep 2020 10:02:47 +0800 From: Chen Jun To: , CC: , , , Subject: [PATCH -next 1/5] mm/kmemleak: make create_object return void Date: Mon, 21 Sep 2020 02:00:03 +0000 Message-ID: <20200921020007.35803-2-chenjun102@huawei.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200921020007.35803-1-chenjun102@huawei.com> References: <20200921020007.35803-1-chenjun102@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.208] X-CFilter-Loop: Reflected 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: From: Wei Yongjun No user cares about the return value of create_object, so make it return void. Signed-off-by: Wei Yongjun Signed-off-by: Chen Jun Acked-by: Catalin Marinas --- mm/kmemleak.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index c0014d3b91c1..b3f603fd9fc3 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -567,8 +567,8 @@ static int __save_stack_trace(unsigned long *trace) * Create the metadata (struct kmemleak_object) corresponding to an allocated * memory block and add it to the object_list and object_tree_root. */ -static struct kmemleak_object *create_object(unsigned long ptr, size_t size, - int min_count, gfp_t gfp) +static void create_object(unsigned long ptr, size_t size, int min_count, + gfp_t gfp) { unsigned long flags; struct kmemleak_object *object, *parent; @@ -579,7 +579,7 @@ static struct kmemleak_object *create_object(unsigned long ptr, size_t size, if (!object) { pr_warn("Cannot allocate a kmemleak_object structure\n"); kmemleak_disable(); - return NULL; + return; } INIT_LIST_HEAD(&object->object_list); @@ -640,7 +640,6 @@ static struct kmemleak_object *create_object(unsigned long ptr, size_t size, */ dump_object_info(parent); kmem_cache_free(object_cache, object); - object = NULL; goto out; } } @@ -650,7 +649,6 @@ static struct kmemleak_object *create_object(unsigned long ptr, size_t size, list_add_tail_rcu(&object->object_list, &object_list); out: raw_spin_unlock_irqrestore(&kmemleak_lock, flags); - return object; } /* From patchwork Mon Sep 21 02:00:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Jun X-Patchwork-Id: 11788197 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2DCD516BC for ; Mon, 21 Sep 2020 02:03:09 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id EF62D222BB for ; Mon, 21 Sep 2020 02:03:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EF62D222BB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E28EA90001A; Sun, 20 Sep 2020 22:03:01 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DB351900018; Sun, 20 Sep 2020 22:03:01 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C2DD290001A; Sun, 20 Sep 2020 22:03:01 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0037.hostedemail.com [216.40.44.37]) by kanga.kvack.org (Postfix) with ESMTP id A7DDE900018 for ; Sun, 20 Sep 2020 22:03:01 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 712071EE6 for ; Mon, 21 Sep 2020 02:03:01 +0000 (UTC) X-FDA: 77285420562.27.humor71_120bb5a27141 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin27.hostedemail.com (Postfix) with ESMTP id 52AFF3D663 for ; Mon, 21 Sep 2020 02:03:01 +0000 (UTC) X-Spam-Summary: 1,0,0,,d41d8cd98f00b204,chenjun102@huawei.com,,RULES_HIT:30054:30070:30090,0,RBL:45.249.212.32:@huawei.com:.lbl8.mailshell.net-62.18.2.100 64.95.201.95;04yg3x3n3up5zt4hhb9rsu4ha3qfbyp8akjcg9wzxj49znf9s79dr57h88op1zw.cu6dwsu436fnor6im45oibbn8g6ujazyf7xi6qyrnru9g356xohbzwb5zmpn4pu.w-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: humor71_120bb5a27141 X-Filterd-Recvd-Size: 2046 Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf48.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Sep 2020 02:03:00 +0000 (UTC) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id A042E89730D559E4C866; Mon, 21 Sep 2020 10:02:55 +0800 (CST) Received: from mdc.huawei.com (10.175.112.208) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Mon, 21 Sep 2020 10:02:47 +0800 From: Chen Jun To: , CC: , , , Subject: [PATCH -next 2/5] mm/kmemleak: skip update_checksum for OBJECT_NO_SCAN objects Date: Mon, 21 Sep 2020 02:00:04 +0000 Message-ID: <20200921020007.35803-3-chenjun102@huawei.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200921020007.35803-1-chenjun102@huawei.com> References: <20200921020007.35803-1-chenjun102@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.208] X-CFilter-Loop: Reflected 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: From: Wei Yongjun Objects marked with OBJECT_NO_SCAN are never scanned. So there is no need to update checksum for them. Signed-off-by: Wei Yongjun Signed-off-by: Chen Jun --- mm/kmemleak.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index b3f603fd9fc3..c09c6b59eda6 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -1166,6 +1166,10 @@ static bool update_checksum(struct kmemleak_object *object) { u32 old_csum = object->checksum; + /* always return false for not scan object */ + if (object->flags & OBJECT_NO_SCAN) + return false; + kasan_disable_current(); kcsan_disable_current(); object->checksum = crc32(0, (void *)object->pointer, object->size); From patchwork Mon Sep 21 02:00:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Jun X-Patchwork-Id: 11788193 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 31C6A6CA for ; Mon, 21 Sep 2020 02:03:05 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CB28A207DE for ; Mon, 21 Sep 2020 02:03:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB28A207DE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id B415F900016; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A7DFC900018; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 884DB900016; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0056.hostedemail.com [216.40.44.56]) by kanga.kvack.org (Postfix) with ESMTP id 5082D900018 for ; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Received: from smtpin12.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 102CA180AD801 for ; Mon, 21 Sep 2020 02:03:00 +0000 (UTC) X-FDA: 77285420520.12.debt71_19173ed27141 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin12.hostedemail.com (Postfix) with ESMTP id E1475180070E1 for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) X-Spam-Summary: 1,0,0,,d41d8cd98f00b204,chenjun102@huawei.com,,RULES_HIT:30003:30034:30054:30070:30090,0,RBL:45.249.212.32:@huawei.com:.lbl8.mailshell.net-62.18.2.100 64.95.201.95;04y8gjfmkgahdcjcoj3kgjy14shfcoccf3s378kxi1rs8311kxk1w6k4c1a8fo3.1baqgsnq7ugiuz7g1nbe5zswsyshxsh78m9pzhmxttay3kytbkksmhjj6ycjwu7.k-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: debt71_19173ed27141 X-Filterd-Recvd-Size: 8045 Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf01.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 91434B8DB0F749D7C350; Mon, 21 Sep 2020 10:02:55 +0800 (CST) Received: from mdc.huawei.com (10.175.112.208) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Mon, 21 Sep 2020 10:02:48 +0800 From: Chen Jun To: , CC: , , , Subject: [PATCH -next 3/5] mm/kmemleak: Add support for percpu memory leak detect Date: Mon, 21 Sep 2020 02:00:05 +0000 Message-ID: <20200921020007.35803-4-chenjun102@huawei.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200921020007.35803-1-chenjun102@huawei.com> References: <20200921020007.35803-1-chenjun102@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.208] X-CFilter-Loop: Reflected 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: From: Wei Yongjun Currently the reporting of the percpu chunks leaking problem are not supported. This patch introduces this function. Since __percpu pointer is not pointing directly to the actual chunks, this patch creates an object for __percpu pointer, but marks it as no scan block, only check whether this pointer is referenced by other blocks. Introduce two global variables, min_percpu_addr and max_percpu_addr, to store the range of valid percpu pointer values, in order to speed up pointer lookup when scanning blocks. Signed-off-by: Wei Yongjun Signed-off-by: Chen Jun --- mm/kmemleak.c | 71 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index c09c6b59eda6..feedb72f06f2 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -170,6 +170,8 @@ struct kmemleak_object { #define OBJECT_NO_SCAN (1 << 2) /* flag set to fully scan the object when scan_area allocation failed */ #define OBJECT_FULL_SCAN (1 << 3) +/* flag set to percpu ptr object */ +#define OBJECT_PERCPU (1 << 4) #define HEX_PREFIX " " /* number of bytes to print per line; must be 16 or 32 */ @@ -212,6 +214,9 @@ static int kmemleak_error; /* minimum and maximum address that may be valid pointers */ static unsigned long min_addr = ULONG_MAX; static unsigned long max_addr; +/* minimum and maximum address that may be valid percpu pointers */ +static unsigned long min_percpu_addr = ULONG_MAX; +static unsigned long max_percpu_addr; static struct task_struct *scan_thread; /* used to avoid reporting of recently allocated objects */ @@ -283,6 +288,9 @@ static void hex_dump_object(struct seq_file *seq, const u8 *ptr = (const u8 *)object->pointer; size_t len; + if (object->flags & OBJECT_PERCPU) + ptr = this_cpu_ptr((void __percpu *)object->pointer); + /* limit the number of lines to HEX_MAX_LINES */ len = min_t(size_t, object->size, HEX_MAX_LINES * HEX_ROW_SIZE); @@ -563,17 +571,32 @@ static int __save_stack_trace(unsigned long *trace) return stack_trace_save(trace, MAX_TRACE, 2); } +static void __update_address_range(struct kmemleak_object *object) +{ + unsigned long ptr = object->pointer; + size_t size = object->size; + unsigned long untagged_ptr; + + if (object->flags & OBJECT_PERCPU) { + min_percpu_addr = min(min_percpu_addr, ptr); + max_percpu_addr = max(max_percpu_addr, ptr + size); + } else { + untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr); + min_addr = min(min_addr, untagged_ptr); + max_addr = max(max_addr, untagged_ptr + size); + } +} + /* * Create the metadata (struct kmemleak_object) corresponding to an allocated * memory block and add it to the object_list and object_tree_root. */ -static void create_object(unsigned long ptr, size_t size, int min_count, - gfp_t gfp) +static void __create_object(unsigned long ptr, size_t size, int min_count, + unsigned int obj_flags, gfp_t gfp) { unsigned long flags; struct kmemleak_object *object, *parent; struct rb_node **link, *rb_parent; - unsigned long untagged_ptr; object = mem_pool_alloc(gfp); if (!object) { @@ -587,7 +610,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count, INIT_HLIST_HEAD(&object->area_list); raw_spin_lock_init(&object->lock); atomic_set(&object->use_count, 1); - object->flags = OBJECT_ALLOCATED; + object->flags = OBJECT_ALLOCATED | obj_flags; object->pointer = ptr; object->size = size; object->excess_ref = 0; @@ -619,9 +642,7 @@ static void create_object(unsigned long ptr, size_t size, int min_count, raw_spin_lock_irqsave(&kmemleak_lock, flags); - untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr); - min_addr = min(min_addr, untagged_ptr); - max_addr = max(max_addr, untagged_ptr + size); + __update_address_range(object); link = &object_tree_root.rb_node; rb_parent = NULL; while (*link) { @@ -651,6 +672,19 @@ static void create_object(unsigned long ptr, size_t size, int min_count, raw_spin_unlock_irqrestore(&kmemleak_lock, flags); } +static void create_object(unsigned long ptr, size_t size, int min_count, + gfp_t gfp) +{ + __create_object(ptr, size, min_count, 0, gfp); +} + +static void create_object_percpu(unsigned long ptr, size_t size, int min_count, + gfp_t gfp) +{ + __create_object(ptr, size, min_count, OBJECT_PERCPU | OBJECT_NO_SCAN, + gfp); +} + /* * Mark the object as not allocated and schedule RCU freeing via put_object(). */ @@ -912,10 +946,12 @@ void __ref kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, * Percpu allocations are only scanned and not reported as leaks * (min_count is set to 0). */ - if (kmemleak_enabled && ptr && !IS_ERR(ptr)) + if (kmemleak_enabled && ptr && !IS_ERR(ptr)) { for_each_possible_cpu(cpu) create_object((unsigned long)per_cpu_ptr(ptr, cpu), size, 0, gfp); + create_object_percpu((unsigned long)ptr, size, 1, gfp); + } } EXPORT_SYMBOL_GPL(kmemleak_alloc_percpu); @@ -991,10 +1027,12 @@ void __ref kmemleak_free_percpu(const void __percpu *ptr) pr_debug("%s(0x%p)\n", __func__, ptr); - if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) + if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) { for_each_possible_cpu(cpu) delete_object_full((unsigned long)per_cpu_ptr(ptr, cpu)); + delete_object_full((unsigned long)ptr); + } } EXPORT_SYMBOL_GPL(kmemleak_free_percpu); @@ -1224,6 +1262,17 @@ static int scan_should_stop(void) return 0; } +static bool is_valid_address(unsigned long ptr) +{ + unsigned long untagged_ptr; + + if (ptr >= min_percpu_addr && ptr < max_percpu_addr) + return true; + + untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr); + return (untagged_ptr >= min_addr && untagged_ptr < max_addr); +} + /* * Scan a memory block (exclusive range) for valid pointers and add those * found to the gray list. @@ -1235,7 +1284,6 @@ static void scan_block(void *_start, void *_end, unsigned long *start = PTR_ALIGN(_start, BYTES_PER_POINTER); unsigned long *end = _end - (BYTES_PER_POINTER - 1); unsigned long flags; - unsigned long untagged_ptr; raw_spin_lock_irqsave(&kmemleak_lock, flags); for (ptr = start; ptr < end; ptr++) { @@ -1250,8 +1298,7 @@ static void scan_block(void *_start, void *_end, pointer = *ptr; kasan_enable_current(); - untagged_ptr = (unsigned long)kasan_reset_tag((void *)pointer); - if (untagged_ptr < min_addr || untagged_ptr >= max_addr) + if (!is_valid_address(pointer)) continue; /* From patchwork Mon Sep 21 02:00:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Jun X-Patchwork-Id: 11788191 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 175DE6CA for ; Mon, 21 Sep 2020 02:03:03 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C78CE207C3 for ; Mon, 21 Sep 2020 02:03:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C78CE207C3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6F339900009; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5CC69900019; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 41282900016; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0086.hostedemail.com [216.40.44.86]) by kanga.kvack.org (Postfix) with ESMTP id 1401E900016 for ; Sun, 20 Sep 2020 22:03:00 -0400 (EDT) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id CB8223628 for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) X-FDA: 77285420478.17.twig42_2d0d64127141 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin17.hostedemail.com (Postfix) with ESMTP id A9FA3180D0180 for ; Mon, 21 Sep 2020 02:02:59 +0000 (UTC) X-Spam-Summary: 1,0,0,,d41d8cd98f00b204,chenjun102@huawei.com,,RULES_HIT:30054:30056:30090,0,RBL:45.249.212.32:@huawei.com:.lbl8.mailshell.net-62.18.2.100 64.95.201.95;04yfn5ytnu984fy37uaygygjnfjrfopx6s9tcys4asyqa3s7mrt5cpoz77bsryo.crapp6nmhz1opsgjuhtu58j3kip5e7mf5metaz6zonsxyt4phzpjhwcn7xz18so.y-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: twig42_2d0d64127141 X-Filterd-Recvd-Size: 4360 Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf40.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Sep 2020 02:02:58 +0000 (UTC) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 9B6A2D59F4361EE129AF; Mon, 21 Sep 2020 10:02:55 +0800 (CST) Received: from mdc.huawei.com (10.175.112.208) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Mon, 21 Sep 2020 10:02:48 +0800 From: Chen Jun To: , CC: , , , Subject: [PATCH -next 4/5] mm/kmemleak-test: use %px instead of %p in print Date: Mon, 21 Sep 2020 02:00:06 +0000 Message-ID: <20200921020007.35803-5-chenjun102@huawei.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200921020007.35803-1-chenjun102@huawei.com> References: <20200921020007.35803-1-chenjun102@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.208] X-CFilter-Loop: Reflected 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: From: Wei Yongjun Real addresses are used for diagnose issues. Convert %p with %px to print kernel addresses. Signed-off-by: Wei Yongjun Signed-off-by: Chen Jun Acked-by: Catalin Marinas --- mm/kmemleak-test.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/mm/kmemleak-test.c b/mm/kmemleak-test.c index e19279ff6aa3..75fe1b8c3226 100644 --- a/mm/kmemleak-test.c +++ b/mm/kmemleak-test.c @@ -40,25 +40,25 @@ static int __init kmemleak_test_init(void) pr_info("Kmemleak testing\n"); /* make some orphan objects */ - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); + pr_info("kmalloc(32) = %px\n", kmalloc(32, GFP_KERNEL)); + pr_info("kmalloc(32) = %px\n", kmalloc(32, GFP_KERNEL)); + pr_info("kmalloc(1024) = %px\n", kmalloc(1024, GFP_KERNEL)); + pr_info("kmalloc(1024) = %px\n", kmalloc(1024, GFP_KERNEL)); + pr_info("kmalloc(2048) = %px\n", kmalloc(2048, GFP_KERNEL)); + pr_info("kmalloc(2048) = %px\n", kmalloc(2048, GFP_KERNEL)); + pr_info("kmalloc(4096) = %px\n", kmalloc(4096, GFP_KERNEL)); + pr_info("kmalloc(4096) = %px\n", kmalloc(4096, GFP_KERNEL)); #ifndef CONFIG_MODULES - pr_info("kmem_cache_alloc(files_cachep) = %p\n", + pr_info("kmem_cache_alloc(files_cachep) = %px\n", kmem_cache_alloc(files_cachep, GFP_KERNEL)); - pr_info("kmem_cache_alloc(files_cachep) = %p\n", + pr_info("kmem_cache_alloc(files_cachep) = %px\n", kmem_cache_alloc(files_cachep, GFP_KERNEL)); #endif - pr_info("vmalloc(64) = %p\n", vmalloc(64)); - pr_info("vmalloc(64) = %p\n", vmalloc(64)); - pr_info("vmalloc(64) = %p\n", vmalloc(64)); - pr_info("vmalloc(64) = %p\n", vmalloc(64)); - pr_info("vmalloc(64) = %p\n", vmalloc(64)); + pr_info("vmalloc(64) = %px\n", vmalloc(64)); + pr_info("vmalloc(64) = %px\n", vmalloc(64)); + pr_info("vmalloc(64) = %px\n", vmalloc(64)); + pr_info("vmalloc(64) = %px\n", vmalloc(64)); + pr_info("vmalloc(64) = %px\n", vmalloc(64)); /* * Add elements to a list. They should only appear as orphan @@ -66,7 +66,7 @@ static int __init kmemleak_test_init(void) */ for (i = 0; i < 10; i++) { elem = kzalloc(sizeof(*elem), GFP_KERNEL); - pr_info("kzalloc(sizeof(*elem)) = %p\n", elem); + pr_info("kzalloc(sizeof(*elem)) = %px\n", elem); if (!elem) return -ENOMEM; INIT_LIST_HEAD(&elem->list); @@ -75,7 +75,7 @@ static int __init kmemleak_test_init(void) for_each_possible_cpu(i) { per_cpu(kmemleak_test_pointer, i) = kmalloc(129, GFP_KERNEL); - pr_info("kmalloc(129) = %p\n", + pr_info("kmalloc(129) = %px\n", per_cpu(kmemleak_test_pointer, i)); } From patchwork Mon Sep 21 02:00:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Jun X-Patchwork-Id: 11788199 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2D06C6CA for ; Mon, 21 Sep 2020 02:03:11 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id F1DCB2193E for ; Mon, 21 Sep 2020 02:03:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F1DCB2193E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D178B90001B; Sun, 20 Sep 2020 22:03:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C7C9F900018; Sun, 20 Sep 2020 22:03:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B430590001B; Sun, 20 Sep 2020 22:03:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0188.hostedemail.com [216.40.44.188]) by kanga.kvack.org (Postfix) with ESMTP id 9925A900018 for ; Sun, 20 Sep 2020 22:03:04 -0400 (EDT) Received: from smtpin19.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 61AE3181AEF1A for ; Mon, 21 Sep 2020 02:03:04 +0000 (UTC) X-FDA: 77285420688.19.camp11_101691227141 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin19.hostedemail.com (Postfix) with ESMTP id 4539E1AD1B7 for ; Mon, 21 Sep 2020 02:03:04 +0000 (UTC) X-Spam-Summary: 1,0,0,,d41d8cd98f00b204,chenjun102@huawei.com,,RULES_HIT:30004:30054:30056:30090,0,RBL:45.249.212.32:@huawei.com:.lbl8.mailshell.net-62.18.2.100 64.95.201.95;04yg5dugkm5u6eonmih33hwxmsttmop7jgyancfpxdwjiywdb58ja995fmxycgt.rd1munxme47ptu69byw49ubmjur5beyomcsdtu9ybctd9f73xmxjjmhsmy3qwi4.6-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: camp11_101691227141 X-Filterd-Recvd-Size: 2801 Received: from huawei.com (szxga06-in.huawei.com [45.249.212.32]) by imf38.hostedemail.com (Postfix) with ESMTP for ; Mon, 21 Sep 2020 02:03:03 +0000 (UTC) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id A86B3588FA98689880E4; Mon, 21 Sep 2020 10:02:55 +0800 (CST) Received: from mdc.huawei.com (10.175.112.208) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Mon, 21 Sep 2020 10:02:49 +0800 From: Chen Jun To: , CC: , , , Subject: [PATCH -next 5/5] mm/kmemleak-test: Add a test case for alloc_percpu Date: Mon, 21 Sep 2020 02:00:07 +0000 Message-ID: <20200921020007.35803-6-chenjun102@huawei.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200921020007.35803-1-chenjun102@huawei.com> References: <20200921020007.35803-1-chenjun102@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.112.208] X-CFilter-Loop: Reflected X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: After insmod kmemleak-test.ko, a leaking for alloc_percpu will be reported as below: kmemleak: alloc_percpu(sizeof(*elem)) = 00007dfdd26a2c40 : : unreferenced object 0x7dfdd26a2c40 (size 8): comm "insmod", pid 183, jiffies 4294905864 (age 40.520s) hex dump (first 8 bytes): 00 00 00 00 00 00 00 00 ........ backtrace: [<(____ptrval____)>] pcpu_alloc+0x3ec/0x8c8 [<(____ptrval____)>] __alloc_percpu+0x18/0x28 [<(____ptrval____)>] 0xffff800008df525c [<(____ptrval____)>] do_one_initcall+0x60/0x1d8 [<(____ptrval____)>] do_init_module+0x58/0x1d0 [<(____ptrval____)>] load_module+0x1d8c/0x23d0 [<(____ptrval____)>] __do_sys_finit_module+0xdc/0xf8 [<(____ptrval____)>] __arm64_sys_finit_module+0x20/0x30 [<(____ptrval____)>] el0_svc_common.constprop.3+0x68/0x170 [<(____ptrval____)>] do_el0_svc+0x24/0x90 [<(____ptrval____)>] el0_sync_handler+0x13c/0x1a8 [<(____ptrval____)>] el0_sync+0x158/0x180 Signed-off-by: Wei Yongjun Signed-off-by: Chen Jun --- mm/kmemleak-test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/kmemleak-test.c b/mm/kmemleak-test.c index 75fe1b8c3226..8f3e4a60166b 100644 --- a/mm/kmemleak-test.c +++ b/mm/kmemleak-test.c @@ -79,6 +79,9 @@ static int __init kmemleak_test_init(void) per_cpu(kmemleak_test_pointer, i)); } + pr_info("alloc_percpu(sizeof(*elem)) = %px\n", + alloc_percpu(sizeof(*elem))); + return 0; } module_init(kmemleak_test_init);