From patchwork Mon Jan 23 17:04:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112579 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 5B579C38142 for ; Mon, 23 Jan 2023 17:05:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C8D936B0073; Mon, 23 Jan 2023 12:05:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C3D6E6B0074; Mon, 23 Jan 2023 12:05:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ADE066B0075; Mon, 23 Jan 2023 12:05:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 9C6AF6B0073 for ; Mon, 23 Jan 2023 12:05:09 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5F1791213E1 for ; Mon, 23 Jan 2023 17:05:09 +0000 (UTC) X-FDA: 80386689138.14.95C302A Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) by imf26.hostedemail.com (Postfix) with ESMTP id 4B1F9140011 for ; Mon, 23 Jan 2023 17:05:07 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=A9lLC3ve; spf=pass (imf26.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.170 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493507; a=rsa-sha256; cv=none; b=hu4GWpirhAmS7dholqU6l+JRUEEcEoCth+ZlKhv1kAG14p3MRGo1ifvSp5OuYpwDESeceo QFDFSHIgTPoZu1uel411pusTcL+B9rDlHJG6iXpwexqOuYVGRNrUuslPKZtBusoMGXzWzY oxBPDMkx95jPcGZJtx1Ln16hwqlNW0I= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=A9lLC3ve; spf=pass (imf26.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.170 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493507; 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=FThLWOoZZXBRMb3ocbeHMeCYRMJ3a8JkbY9XwLoGNJM=; b=GPC4OL6pHW6RUCwfMvEZF+aUqnF3/uA5Ejw5ATwYuHBTyxk2fnqfRe18zgacTMaLO+PsNu ZuBM9YKbUyNN/UtUW/gFn0doDtBeYZHgf1QfM/IyikSXT2QEFifE9rwvlB1LX+PLRs5pPO F4ee1SmJwqHs1hYpWx+qradzXWE3T/4= Received: by mail-oi1-f170.google.com with SMTP id i9so7143128oif.4 for ; Mon, 23 Jan 2023 09:05:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=FThLWOoZZXBRMb3ocbeHMeCYRMJ3a8JkbY9XwLoGNJM=; b=A9lLC3vexpFb3gkXoiJam0gSNrJv94xqiphCLdx0LFU3eh7KEeYgStPEfrRN9g8zpw A3GchVFNx8Xz92R77r69+TnXkwRpLv0f4SZTWcoUkzMuuJzYUJuOqeeBVn734rIYAV5a ZSElJIx6NA7ipjRKAKc6R/bCELanuH/z572MGTGOY/3RBmynGJYcxLyAB+MhLJjkzjTp eAzUI7z7K7TtjO4lofdlRwFJ+XwX3f4c3cbfcDtynWMve6g7lcHq27Ht6HeTI24ykwVL bpYboW7jXSyPhRl2YQPckiVdwmsGgnTOi1G2xrchCMOiIvay6/B7evJ0+peTalvlZgsC oWpQ== 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=FThLWOoZZXBRMb3ocbeHMeCYRMJ3a8JkbY9XwLoGNJM=; b=7vFQS0nyWxBI0j03c09wvTuQQ9MTTs9Xu9i2iMU98BAW+V0iD98BPZoIQjZDpvYQ1Z 7GWLEQWxRvn2CdfxRi4YM9NtJ10EX4yy/ATFV7YDh3yD5WGl3nF4vqVz0gvUQDOauTCr KOqIPfj3co1HZ8Z3+PWTEjWwnqBdPB8/nRpiC/nf+jv1CPPvB4Og3OT8uEy8+kR5cCKT R3//f1D+FZMw4daMD8kGgmEkZtt4sOPG8Yhd7ftJ9U+Bp2+A5yhLuA8iAKCDUndYZElt KAlHqmOwi8M21rXMJZd4ZeNcorvdssEbKriIEZtMRRCSem+riF53sctz8XfoKM8bHnkY mnUw== X-Gm-Message-State: AFqh2krvPhESOaCJaYVbOTLBfu0oXvkOZNeeyilcyq/xRQ+xcVLSTGcD SnGYiuglF8p/I9y8GQvJ0PqVCg== X-Google-Smtp-Source: AMrXdXtkuNeB5js0YY7EQvF6CWd2gqsNNMHEQebeRjWsftml8x/8mMpKwTlodh8Si41JeAy8tMMlEQ== X-Received: by 2002:a05:6808:300e:b0:364:f962:afd1 with SMTP id ay14-20020a056808300e00b00364f962afd1mr13072058oib.56.1674493506352; Mon, 23 Jan 2023 09:05:06 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:06 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 1/9] mm: kmemleak: properly disable task stack scanning Date: Mon, 23 Jan 2023 11:04:11 -0600 Message-Id: <20230123170419.7292-2-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 4B1F9140011 X-Rspamd-Server: rspam01 X-Stat-Signature: 3eujoqnuqkbmk56om7nurqx31ubdwtrm X-HE-Tag: 1674493507-816016 X-HE-Meta: U2FsdGVkX187KCNIYeOZoEg6kNA/FxAyenksdugtpk4SSNRzJoypA2E6QPuG8zI8baqwknCK29r3/rGc9TANEgRJdWyHF+RHOoq3e7In2GOchJGA0G4aKJGL/3VmNdJ/Wibp8iXwDEihS7H9mDBokwCqxzjnvWDzCy2xw+tfAJuku8ZnD+Fj1s8mXtzMDyl3eAEDKSd29pyu3vlgrsCf3dV62fMf76U+SuYj2M8SJTNFRqvyEur9Jx2Kj6reyc0zNUU01yDEtlPJcKGJnRY11CpAK6aD2WALp15NIOPRtul3x4oSNm6hjJWGRN6aFbHQWynizrrF+Jm1D/CHNgWJtmdPCm+dzKps+jTe5LFNYbbbrCRyTspf7DeGrcKCD8Q2vL+sNofAAtmX2RqALaltCwv43FXFKEOxh0b6W9z9bsfpvT3KSBeYl0BfozkmuzXAm+su7g75jSF4jNCQihtjnSQjc40r+qSz8JoWPLzA2Jg/tz4rymNhCpM/cIYHa3qJAWmiWqdEf2QbKJup1+7CXjkSkZAScAvvWECDYYhIde10lKwmME5bASbGtaGEYPUYCZRZrvcaBYlIGNBVPwyrYj5Ax52JCNw4NjSIlERktCTYoD50E89kcEA6WaHG4mufaeI4EZjwrWUMJzOFhhF8qLBVFxhAWgh90b31y3cNfXTFn6db3UhuE2znji1e7KPKhRTk2ZUDtjTJghs9dDu/R4A2yHAhDq5UGySx9ROaIHQoG6BO40YsB9YB4jze+ak8gokxFez7UyNKKeyjYuYNI6D2WlJxlmBYCJ9GWOYwklAoOk4KX0u27I39H9XeQRSLEOa+j8Uqh4VkXKHYoeX6vN6dixSeCCwP9XChCktKKBkmzqVKs1c5MhYZUhNewQmscKnMTy5Iui2Z/v0Z3m46OVQ7fUmzF06jM5gf20IwWmxdkzSf7202VeaNM8oXSZFIsEH3AiM+2DclkRShZ9E JyZxYhez 0g7EJ/NcBZtTE3j0Qypccmq0eqOKIh+1qwOZ2w2BKY/uv0JZIPDoC02Tpku0EQX1/f+wab3+uR8GVkoPBF95aomryPWBk9JPLrtq0RtrMw/MpSDVWns1yx8w3ZrfnuktymijYDPbAgbCc/ivQJkWAPUhGM/DTchkDTdpE4gHmeCsOevpolp5cDsjAShU9wFENJcikrB8UZEoZ/D2P7Y39AgKa/b8njaoxxWV6qdrKdMYbqbkBbvnBCYrd1ScFaztnz0PixPIxasiHzqFpXDIPvHTpB80YFGWkM6FBqp1H4m/KohRGjI0QvzvoR7/omCnO2HxwclCcRKbXfCfhX9MP5x5nnMiUs9buhI5kQUCl0699GyXUqJkpRKboyele7P7zJAX5dwrUgX4FXbZVZ+lrg0Dmh4DxH+Or0fb7hB4ghbnq/SNlBVo9vYXli3yUw7yV/qY46SGQAjnvFr8MCOb6QXpyebbTa55B99YV 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: kmemleak has a flag to enable or disable task stack scanning. Unfortunately, this flag does not work as intended. Even when the user disables stack scanning, kmemleak will scan them. Stacks are allocated with vmalloc and are included in the list of objects to scan of kmemleak. Introduce a new function kmemleak_mark_stack that marks an allocation as a stack. This allows kmemleak to properly decide whether to scan or not the object based on the respective flag. Signed-off-by: George Prekas --- include/linux/kmemleak.h | 1 + kernel/fork.c | 3 +++ mm/kmemleak.c | 39 ++++++++++++++++++++++----------------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h index 6a3cd1bf4680..1e2e8deac6dc 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h @@ -33,6 +33,7 @@ extern void kmemleak_alloc_phys(phys_addr_t phys, size_t size, gfp_t gfp) __ref; extern void kmemleak_free_part_phys(phys_addr_t phys, size_t size) __ref; extern void kmemleak_ignore_phys(phys_addr_t phys) __ref; +extern void kmemleak_mark_stack(const void *ptr) __ref; static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, int min_count, slab_flags_t flags, diff --git a/kernel/fork.c b/kernel/fork.c index 9f7fe3541897..e66337ce88d4 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -97,6 +97,7 @@ #include #include #include +#include #include #include @@ -316,6 +317,8 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) if (!stack) return -ENOMEM; + kmemleak_mark_stack(stack); + vm = find_vm_area(stack); if (memcg_charge_kernel_stack(vm)) { vfree(stack); diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 92f670edbf51..b40735539abd 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -176,6 +176,8 @@ struct kmemleak_object { #define OBJECT_FULL_SCAN (1 << 3) /* flag set for object allocated with physical address */ #define OBJECT_PHYS (1 << 4) +/* flag set by alloc_thread_stack_node for stacks */ +#define OBJECT_STACK (1 << 5) #define HEX_PREFIX " " /* number of bytes to print per line; must be 16 or 32 */ @@ -1229,6 +1231,24 @@ void __ref kmemleak_ignore_phys(phys_addr_t phys) } EXPORT_SYMBOL(kmemleak_ignore_phys); +/** + * kmemleak_mark_stack - mark the allocated object as a kernel stack + * + * @ptr: pointer to beginning of the object + */ +void __ref kmemleak_mark_stack(const void *ptr) +{ + struct kmemleak_object *object; + + if (kmemleak_enabled && ptr && !IS_ERR(ptr)) { + object = find_and_get_object(ptr, 0); + if (object) { + object->flags |= OBJECT_STACK; + put_object(object); + } + } +} + /* * Update an object's checksum and return true if it was modified. */ @@ -1404,6 +1424,8 @@ static void scan_object(struct kmemleak_object *object) if (!(object->flags & OBJECT_ALLOCATED)) /* already freed object */ goto out; + if (!kmemleak_stack_scan && object->flags & OBJECT_STACK) + goto out; obj_ptr = object->flags & OBJECT_PHYS ? __va((phys_addr_t)object->pointer) : @@ -1586,23 +1608,6 @@ static void kmemleak_scan(void) } put_online_mems(); - /* - * Scanning the task stacks (may introduce false negatives). - */ - if (kmemleak_stack_scan) { - struct task_struct *p, *g; - - rcu_read_lock(); - for_each_process_thread(g, p) { - void *stack = try_get_task_stack(p); - if (stack) { - scan_block(stack, stack + THREAD_SIZE, NULL); - put_task_stack(p); - } - } - rcu_read_unlock(); - } - /* * Scan the objects already referenced from the sections scanned * above. From patchwork Mon Jan 23 17:04:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112580 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 9979BC05027 for ; Mon, 23 Jan 2023 17:05:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2C9A96B0074; Mon, 23 Jan 2023 12:05:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 279946B0075; Mon, 23 Jan 2023 12:05:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1410C6B0078; Mon, 23 Jan 2023 12:05:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0209B6B0074 for ; Mon, 23 Jan 2023 12:05:11 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C42AA1212F6 for ; Mon, 23 Jan 2023 17:05:11 +0000 (UTC) X-FDA: 80386689222.04.5A12D3A Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) by imf05.hostedemail.com (Postfix) with ESMTP id CDA0F100029 for ; Mon, 23 Jan 2023 17:05:09 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=So8Z6Rqf; spf=pass (imf05.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.176 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493509; 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=Kp4WYRpASf5CVsJFYjl+ZnZkRci2IQqrsIcj0lr85Wg=; b=M6ZF1vBLKn8rwPUfwQRoaFQd14NtqVndEYElUWpmQoOX6FA3lSlsCK6VhI72exwa7fbw86 8k+PXlk1waZGI34wGAtnA1WFNCPHJ6iDtLvFYbhRRBC7BMAYRlLZ56PrYPwElHY/14LvzV DJ/53bYRbFAs4e62tlxzqFF6z1C+7mM= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=So8Z6Rqf; spf=pass (imf05.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.176 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493509; a=rsa-sha256; cv=none; b=7n2OfDpVcYf57J1XFrLuYeG/qZJb8KyEY1tkxw1AHF0wzQjYPxWxro/Y2tiS1WjP1nzER+ 9F43Lfd9bNkZNpxCaBmUO0KxayuXrCPu2L3Bw+e3YSqtoz6UZiXkCohWIEMQ1Kn80uvNkh OYpMwOJvAg/Y/jmw6I7UQltMrA6memI= Received: by mail-oi1-f176.google.com with SMTP id r205so10909733oib.9 for ; Mon, 23 Jan 2023 09:05:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=Kp4WYRpASf5CVsJFYjl+ZnZkRci2IQqrsIcj0lr85Wg=; b=So8Z6Rqf1NYD+bATgnx25yeR3ZEQYv6xfpev5aAJBoSfG0j6uNny0FS3K8CyhMwahK VxlTg7zggBSoEtqV9ZoZKkrhRfYhDRYT/aHS8hUc4S8IahBStPNwBWjYddsZaiduXtaL +fvHuVuUAVcrg4M+v9xOhd7Yw2REstoxg9WzPgGEpv3zo2QisRZzSno1G32LUG/6t38U xj//tnhcajOK+iOekBC+deLs5/CakXMUWxw03E3DsXu2vAktxqs1YMn840No/iWRsryS Ybkl28Qh0h3+YYcP23/lrgMYCIpGXi5x822cqBOqRVDkzSJhZOn54To1sN9Low5BrKq1 ZwQg== 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=Kp4WYRpASf5CVsJFYjl+ZnZkRci2IQqrsIcj0lr85Wg=; b=ilIrM4ZzTN7qUy1mcpN0GLahXR5dZJ3IiFjHSnEFLzTMZYggLaog/u7rkHtuKWxG4O Yn58A+HmxT38tnSXGPYHgWzKs6ee54vYonnNlGEBq9S9rvuoEfBZTDavvNr4yQxrM9sD UZPSOhbh1MNzhIPTKVfZgsqPxRScau/YXBrjtGZqSyVkrdG7F6arSP5hwrvO+Sn9UlEK b3ZerV7vjzPbdoSv2yE5XEiOMpf3LJz6UlK12jNkcZTs72sr7j0GVKLhDNnUwHByLNpV UpW89giDRussyaHBYmn37D64MIwqrZxz7Iw2L6LdwOmcXglKqRdkvLowXmOwhsUyObL2 JeUg== X-Gm-Message-State: AFqh2krO6Gx1BXokftHOUOsKBf5KzVrTPWEtNur23pzb0JXFN2Ma1by0 H8c8u75crluKY/wfABD3pJtMH4Y7QLT6yLCvH+oGZA== X-Google-Smtp-Source: AMrXdXuN1RJ5ZNaZEPdtdf1wuP6Clsbzl7xIblCQ8qoK09KR8XE7O+qkKulzCI9CedZR0H4QTQwr8g== X-Received: by 2002:aca:230f:0:b0:364:d7f0:3847 with SMTP id e15-20020aca230f000000b00364d7f03847mr10623413oie.38.1674493508937; Mon, 23 Jan 2023 09:05:08 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:08 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 2/9] Revert "mm/kmemleak: make create_object return void" Date: Mon, 23 Jan 2023 11:04:12 -0600 Message-Id: <20230123170419.7292-3-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: obrpcbkoe6j3ytn97ta1sob4i6ubtt1i X-Rspamd-Queue-Id: CDA0F100029 X-HE-Tag: 1674493509-152574 X-HE-Meta: U2FsdGVkX18Ipvx+hn2p0HYk5aEe1QW8pZFpdTAcf5Xy5EM84j0ScEurw66FswgXgsQfyTKh/4XIF6cVdD5HYD9Th3OUKXV/IZlMQTI+1rJvlm4bjOj2MeO0q+4LLe6Xm/jmlRJmyt8zmNoigTp2KhNvaOGzKNzJk+8R0aWu9ACd/8d5mziyJj4D37vciS81sV7jCOt9nvckHAG39pJgRB/e3pKasLEErfmdgSOFjX0rksKXU7Qt6VhYOqZp6FyKfAAfxnuHaEZRiY1Jrd+erTXFpcW8AOq9bBTbMkZZcdM7wXMP0D/MgNG6ws4q9544pb47DquqlsxIfH0XtayXxoTOwq/Qp603nomnAegYbQ112TyYweiBN0YJR99tUibGUKYEFF/x5iLyHTS8J5ZnRmkIVBCUxI/cwgJSpF52AmSjXAQsZG1j6DRDZX6BuzPBsdH3pLq6F0uiB2F2hCB9Eo0GEWRPl62wEUtyRhcf/uzEZ7oqPTH0eYvnWFn9HvHdPxxx8Ob2ErSXY9buNVHZ9BeC4dd6L73fHjtPzb0fP9pH79cjy8bykivcYBRhLOfzQJ6Tr4pSGylVUVI5kTsjfE6WMSKYmBj6+IGJ8h3w1g4z++7kvS5dJy9+doyCXrvE4o4S+RpgrH2cFMZjZd+JcC0mwZq9LXorgzdrGvlxL1Ybm1kyzL8Moz2GrZzBLC0/sAdrLLwpHISQGadMxGHhGRVe+tHqdkVlhHcDUjHfL/4yiIGWdWU0b7Hbe6+UMTtNEHqcN3IO0DRQAVr/J4zFL1g36Y4TKMgt2lqzmLvTWEq6BFyfDxv7F0BJyFlwd3HeZhXZyKM9TNjSrRrrzv1oIVqb+waGlmXn4menrUlAXjO5mXFkU7iwC9nyG4Tc8IPiPQnZjbaeGWMrCYDbJ2tsboFw+N6G3X8cppyA1+RdY0DtD8uddFn5fHViPeNy2sUrLNtWUDUHm8ueW7cDSdK 744ypnSS 9C7D3+boChg8UeCKibRXtHOmh0tBdSiwncIZmMGCn8eCtT8rJlt81X7Qnt849zoq2w0TCBIjei6i9wiFgujprWft64xq2J9K5GtV4HXPqtDazm+DcZ890BQAVgO8gC1jjo3pT75kRFs3KW5ySyfr/pq94WvzbGE7iCLHAPdBYKNoqHpsPpriiGsO7PHnkDTMLaQa8Cj9NY8etF5s+JTcGriGnQHoFFXXBT4NefQYZ/C62spLHnf1OUkPeHQ+6AwU+yw3hPfNdpAWr37pGjjhmWskZLAAiEfLR4g07dMbqv5FxzFI6SoB8HJ1smXBW98V4wPWxgopnnd15wrLeoSD+v6njR5/lI1FuWB6ReVbZyyIY4oTUOYF6BfmUqrrLY1Uu2aMl8NDFqCRPu+jE2oY9OE2WZdN3cz+XMhS7p7Jk8Gnbu97Bzk4YNlExITTKZFxc1M9sVvK3UAF2TvUuhqY60rNo0TdHlMpAy5dNxjFnOwnqlzDdeLcmyt/v/QyRSgWEdH3w/8CXcxel/9Y= 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 reverts commit b955aa70a3ac9f1dd5e26d4c7673ec3c28a8c2af. The function delete_object_part can use the return value of create_object to propagate flags from the old object to the new objects. Signed-off-by: George Prekas --- mm/kmemleak.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index b40735539abd..2b9c9ad68806 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -616,8 +616,9 @@ static noinline depot_stack_handle_t set_track_prepare(void) * memory block and add it to the object_list and object_tree_root (or * object_phys_tree_root). */ -static void __create_object(unsigned long ptr, size_t size, - int min_count, gfp_t gfp, bool is_phys) +static struct kmemleak_object *__create_object(unsigned long ptr, size_t size, + int min_count, gfp_t gfp, + bool is_phys) { unsigned long flags; struct kmemleak_object *object, *parent; @@ -629,7 +630,7 @@ static void __create_object(unsigned long ptr, size_t size, if (!object) { pr_warn("Cannot allocate a kmemleak_object structure\n"); kmemleak_disable(); - return; + return NULL; } INIT_LIST_HEAD(&object->object_list); @@ -698,6 +699,7 @@ static void __create_object(unsigned long ptr, size_t size, */ dump_object_info(parent); kmem_cache_free(object_cache, object); + object = NULL; goto out; } } @@ -707,20 +709,21 @@ static void __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; } /* Create kmemleak object which allocated with virtual address. */ -static void create_object(unsigned long ptr, size_t size, - int min_count, gfp_t gfp) +static struct kmemleak_object *create_object(unsigned long ptr, size_t size, + int min_count, gfp_t gfp) { - __create_object(ptr, size, min_count, gfp, false); + return __create_object(ptr, size, min_count, gfp, false); } /* Create kmemleak object which allocated with physical address. */ -static void create_object_phys(unsigned long ptr, size_t size, - int min_count, gfp_t gfp) +static struct kmemleak_object *create_object_phys(unsigned long ptr, size_t size, + int min_count, gfp_t gfp) { - __create_object(ptr, size, min_count, gfp, true); + return __create_object(ptr, size, min_count, gfp, true); } /* From patchwork Mon Jan 23 17:04:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112581 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 55D73C54E94 for ; Mon, 23 Jan 2023 17:05:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A93E16B0075; Mon, 23 Jan 2023 12:05:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A1ACA6B0078; Mon, 23 Jan 2023 12:05:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 895D46B007B; Mon, 23 Jan 2023 12:05:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 7B60C6B0075 for ; Mon, 23 Jan 2023 12:05:14 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 52A361C6C15 for ; Mon, 23 Jan 2023 17:05:14 +0000 (UTC) X-FDA: 80386689348.17.C2240C1 Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) by imf11.hostedemail.com (Postfix) with ESMTP id 7AD1240005 for ; Mon, 23 Jan 2023 17:05:12 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=NSgjC4hw; spf=pass (imf11.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.169 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493512; 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=yJTWO2OBrXE35+2ST38bazfrcM89QJcHIOlGqfogZ20=; b=Ol1O9zBmBm1AALm9QX1dG9T8HEgDvvVlyoJFZ3rIs0LgoV6WUwKPuer0nUtDBCZQW0nQcj g9d6W+LcvD+A7SeDvD7Qgn6vE9V4244zwbJrTW5Wrw6SCsGiC5wiaMg0jusX8Da8UF3W33 pqQQjP+c9BaTjk2EuYNGGsQCt7jq5xE= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=NSgjC4hw; spf=pass (imf11.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.169 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493512; a=rsa-sha256; cv=none; b=Nnax6mJOmxXTXfz8c47vl8cYJV0GVSI/VT5zuSa5Jvv6FVofXIl32xE3Jl+pJV/yIWvsJS d3imOJrOzwzytkA2YvuOhxPkcREC607dczXZst2T6RcRGipkT4zbSCDJpaWlnHB5WRfEQV 7on54l9Qp/pk+CWwidU1AWAe3fqxhyw= Received: by mail-oi1-f169.google.com with SMTP id r132so10899808oif.10 for ; Mon, 23 Jan 2023 09:05:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=yJTWO2OBrXE35+2ST38bazfrcM89QJcHIOlGqfogZ20=; b=NSgjC4hw3fEAnNl7SM0zZQjjJtjRvXkPMrmVnBT32ZBngvEkPukpqb5qQFusr1IW2l mEuBPgVWKLc4iYnfp0G67SkL5iJg8kRMUs51J/jV44M5Hxtl+7fET9rc2rczoADtB4Nj hmYLfi4G8LVKiw5v/UkyvyI4ccoDGf198WfeFl+kIsfNVB+khlUSI5d9UWwu+ySIg6qP UfiuTEqFgoZMwG/hO7JtE5Qo4t4GdoJ3FLvrwkLJfQ++q3yu2+l5RjoSe9bJOULtNmKq hogj8oFn/iRz3PC1y1jQTMMb/0ry+uFYKbAI389Cj7PSaVvdzQAGaC+V2Lhib2zuMTi3 IsXg== 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=yJTWO2OBrXE35+2ST38bazfrcM89QJcHIOlGqfogZ20=; b=eSrsbjOY6K4a8zB+U2giRjh0AnqBUSeWhvaUngYRgouch2/TmEyNZfLxe2HTwdHY3v +UiWaiHBebCBqaIdOo4J4KAZVU7V+N44FuSeudHRR7Vbf7RVWzYNdRorvD+q0eIBX0fv AYTM9SVasTMpd6LsDF/rZSDQX+UsZMtQW2FWUSnaqvFS5Oj76ixRuU76Qgn162oSOjfS x2Zp79ySWXLpQAcFIk9dpOzOMctZOOL0q1JBRJiEajn4v2QTQO9TuyNw6TNgPD5ouoCW nSCdNJe7SPx3/Foabni75NJXDm3AUYxXkG3kxwzkJltS2eWITKn1VP98XVd/z2AjTNgq +Xfw== X-Gm-Message-State: AFqh2koE3UXBV+GLfN0dF0/+BEIrdtBTpoiZmi3HlE5F2ogExQRM7dYV L6R1Y8NOfNA3WeeA1SAFn8aOVg== X-Google-Smtp-Source: AMrXdXuwAu7Phr7hWIyFW8DqKNxzBjmiQoF9ywUbD8dPtf/ETIlI/OPtYt0DkjFc7YBiZevXoCyc2A== X-Received: by 2002:a54:4009:0:b0:364:3792:97aa with SMTP id x9-20020a544009000000b00364379297aamr12138081oie.10.1674493511610; Mon, 23 Jan 2023 09:05:11 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:11 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 3/9] mm: kmemleak: propagate NO_SCAN flag in delete_object_part Date: Mon, 23 Jan 2023 11:04:13 -0600 Message-Id: <20230123170419.7292-4-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7AD1240005 X-Rspam-User: X-Stat-Signature: gzcrqcdfrq1sw4z1kgdprh3xsy66jeis X-HE-Tag: 1674493512-811556 X-HE-Meta: U2FsdGVkX1+cKgnkvHhvWuxOkGesFp26N8R2xLce02M3lUTOQpvB75uXJYe5V5T1Fo9E4/xXkFKsHX7/6adHuCBotCvMob/8voWTy37bzlj3u6avYLahUX+f8OlSvtrOuQPrl6Ut4v292FMyt0zd0J3mtDU7iwVJjSfXbTGoNYJPVOgli6nZvaO7SPHzJRJMCFy/4cfuLS/NTPZnaIRFgnAmWNJNkJI9u8FLlLB9Eqbl0b7K/uGVVTDdRlK2ctpZiwTnJnXiJR6yDGG5jzZYBjG5ntaX7iQxMQbRzF0/sclhziCO5HVeWYbG4dmRsEIx8pXvNjsLIbvK5kd2jpUDhLtKfgJ2+rlJefnY9MbDByu5UKBFnAi6rx/CU0zbR5DFO1yurHshhTpR7QNK0q9EWc3jLpIC5iuz0BjcCSBkk3PW4ix6LmDMT56OfhMx4DrUwXk2EWViJqGoOOzF4fwCBulstvGu4p/A+EYdUNQk7i8uaYUoohbWdFhxp44YB7wz0DjGc64njUxSNAYaouLNHIr/YwXTMccKgnQz+olGCXGq6L7uAFvQ87tmC+HXX/l8O+MfAcVR1LT3TejRFamurCNYJ5GbpJB6O62uAZZu0RHff+pRfUunuWw27W1WQyNZWK4HxRZuXfPhxQHln7asp/PwnjnnjIRAqW/g7Jbz1OBlenfv/tVfFVf591hABsNgIdRrA5tshF2tGcvAmVFRE4MlT+26kJMj/1RGt5N+gd5rQ6iI9nd72AHQ16Z33baAnGQLztRKEvnywRCXzlimprI2Un35YS0T7aFQDyxMbRG8kZESePyGpQjq+vmz6WrraadgqgXL3ANLpu5Lbu1OZr+GoIXRxb5aX3hduJpDvO04t1oqQoNb8OYN9H3/7gI3lEd4ZUgBU7TeMIbkbyuibgW4XnjP+I0GD0Ze+VsL3W/g7x/Bsr6aQ5VHX+ZNCzRs6ckM7rcV+LReuIau2TO +5jVuAeU c3DPf6wpRRvt/9boXJPPFSEocb8ek6kJQpzMgyhiGk6c0u6z9pveI0SWLp+jbObGmn1UyPerHD7qG0CTaKtAwsUWbpxdia9dN3+v7Ir1G9015IAz31eFBLg//HcJQVl6pthtRa/tYOsKDMMWQvU/izeCrKEW7s+LuycSTTc959oa2ab8PZc9dINkFdovucKs0ylydmJWhX3m5NiUmGzFlRfDLuIZ4IY8zn8+SrdEGAfx8gZBWPFXXbbPq9cYvgKtiI2qDnRz67LfrHwoApHZQG9VdMLVS5w4FH7x69eeY1bZxrUBvoW3hqPK5r/GTdNOR87bH4f7P6Ucb9DclZnOqdoBkweUlHegsmHpkrXGPp7fZ7YbIu4t78LuvC/hhQ0ugcmVZTnjUEYZ7qjVMpKj2Mnmacb9mtEZeV3DyPQCJZP3tRxe3r3Oe2Wjm0Ryl9GPIlll/zO3O0IeCDcmMWZe0Bww+pBwTSUqCMUWVmhlDLFVD2f68weeHkzCqWBjz2ygY2TZfzXw7bTy3pS4= 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: When part of an object is deleted, propagate the OBJECT_NO_SCAN flag to the 2 new created objects. Signed-off-by: George Prekas --- mm/kmemleak.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 2b9c9ad68806..5882f60d127c 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -772,7 +772,7 @@ static void delete_object_full(unsigned long ptr) */ static void delete_object_part(unsigned long ptr, size_t size, bool is_phys) { - struct kmemleak_object *object; + struct kmemleak_object *object, *o1 = NULL, *o2 = NULL; unsigned long start, end; object = find_and_remove_object(ptr, 1, is_phys); @@ -792,11 +792,19 @@ static void delete_object_part(unsigned long ptr, size_t size, bool is_phys) start = object->pointer; end = object->pointer + object->size; if (ptr > start) - __create_object(start, ptr - start, object->min_count, - GFP_KERNEL, is_phys); + o1 = __create_object(start, ptr - start, object->min_count, + GFP_KERNEL, is_phys); if (ptr + size < end) - __create_object(ptr + size, end - ptr - size, object->min_count, - GFP_KERNEL, is_phys); + o2 = __create_object(ptr + size, end - ptr - size, + object->min_count, GFP_KERNEL, is_phys); + + /* Propagate the NO_SCAN flag */ + if (object->flags & OBJECT_NO_SCAN) { + if (o1) + o1->flags |= OBJECT_NO_SCAN; + if (o2) + o2->flags |= OBJECT_NO_SCAN; + } __delete_object(object); } From patchwork Mon Jan 23 17:04:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112582 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 897DDC38142 for ; Mon, 23 Jan 2023 17:05:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DEC56B0078; Mon, 23 Jan 2023 12:05:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 18FD76B007B; Mon, 23 Jan 2023 12:05:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 02FA66B007D; Mon, 23 Jan 2023 12:05:18 -0500 (EST) 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 E74C76B0078 for ; Mon, 23 Jan 2023 12:05:18 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 9BBA4161566 for ; Mon, 23 Jan 2023 17:05:18 +0000 (UTC) X-FDA: 80386689516.07.3D017C9 Received: from mail-oi1-f182.google.com (mail-oi1-f182.google.com [209.85.167.182]) by imf29.hostedemail.com (Postfix) with ESMTP id 5CB0B12003C for ; Mon, 23 Jan 2023 17:05:15 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=S1Qps+QW; spf=pass (imf29.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.182 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493516; 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=88a4EcsyoImPea13g+jXS6DiIw9vwnj7Q3nYiAaYWFo=; b=H9krnlDxQts+Gu1jzKFXjdRaHF723odnaHduQTeGBYNpE4BR4LJtfkNzQnLwjYSsT15T6U F8rCwg7HIUiGj9jgoXQDpUehGmgKiEMnUFcFltkKDZYWp35LSfLpHSuAyDhnSnZHTPF6Hd tgiXYmjIq4fGKWW+We2bmVjELiGvvs0= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=S1Qps+QW; spf=pass (imf29.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.182 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493516; a=rsa-sha256; cv=none; b=Nw3nB64i/iihi3zohkVg9j6Ql+Dol0TR/C/i5OyaJmSmvHxNTObH1UXKe90K8c9elcbiiC 0ro+MJbO5fZTCJxbtu+RXdtW95ytlf2W0mR2v8XUiH4Cu2Cb/pg96Bm6AmBll9+pLnfNqV QSP2kI52z1yNQqBZU+aT3majHSXkWlE= Received: by mail-oi1-f182.google.com with SMTP id p185so10939794oif.2 for ; Mon, 23 Jan 2023 09:05:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=88a4EcsyoImPea13g+jXS6DiIw9vwnj7Q3nYiAaYWFo=; b=S1Qps+QWqSAgJqvVuhDhPBwLsxy8BoOsJSz/h0OhtVDBaooKT4fb8zDOwrF0VjUxZk ntDm0tto2zMPa/NYeadxggaX5k1JqfGiVRd5syWRqmWx0Ngs7KprGV3neIsYqBOXzLk4 smxVyWxlA0zkX3om66NoDSmZfbqV0ICYZZj1dKjW1SasAQ4dHHEoH/g05vV4tizc7u7H xBBiJpdsDNJcuk92X+NMceSQUHZasUDAuCjsbdGpzIu3xK65przH/X7fVdtM3qGWNFy3 g21a3V43cRiLYhbIFBI0N0GDROUsiZBqO4cApy4/Yav1LjzCk4H6o7H3ZIiR6gFiHrCj FcVA== 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=88a4EcsyoImPea13g+jXS6DiIw9vwnj7Q3nYiAaYWFo=; b=XtXz1+w0IL6BFshDx87iPz9UMLgY5peqI+0hoFc4bxxODG3rb8iisciK9xc7PFQxzl wsIcFfYb2uM2d7BWy1ohEuZYiZOiU2DusMvTIVhSoZa/ISpeILW40iw0tgf1OL1BykD0 NVQvCAbXDWBMsuokOUQP37W7Sd1lC7bOmZZI0u2f2SwLCHvf3gJbbF+fjrzwIkTeKwwl cw6wGLW1uzyvo1lYqzynuAbWxATykOmlvnIE5CjeUYWV/oEyHxK7IVfoeNhxVS0gbZLG 3foVP5ZBqAnZ8GHzfsbEaSlwl/pIH0TtHiNqZBkI7EdYFrPrdAJXFToK8lM6s/iz/PVN huIQ== X-Gm-Message-State: AFqh2koWIgh2DYfbr0N2ZcqKZK2BEt8Hz2PHJY6w74plOTG5Y0TuLuQd RG4/qOChPyZSBU66qcyk4OytlmDzdrwW+CRcJkJk4w== X-Google-Smtp-Source: AMrXdXvrTP6NKOk9RnbyL+czq+G2DpbJC3hFN/EnFfOXtejW+ehF57bYGWslNLJhLEGzZzI+Fm5ytw== X-Received: by 2002:a05:6808:120a:b0:364:cc8c:1870 with SMTP id a10-20020a056808120a00b00364cc8c1870mr14930314oil.41.1674493514028; Mon, 23 Jan 2023 09:05:14 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:13 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 4/9] mm: kmemleak: add kmemleak_noscan_phys function Date: Mon, 23 Jan 2023 11:04:14 -0600 Message-Id: <20230123170419.7292-5-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 5CB0B12003C X-Rspam-User: X-Stat-Signature: og5okcpbig6aou4d7ay645udme9pu4yd X-HE-Tag: 1674493515-671918 X-HE-Meta: U2FsdGVkX1+vTt6RtLlIzv1qTHMK78oK8hZFROkdKXbhBu1hkoDFa+l79h/XgcZ7rC4F3N5Yqz81JXLthCWo4cH6SRdH7lLpEm0GqBATPdo6pyC4v0MUyMN+gTavNLEAgqw4IKdcAaiY9tP6iuNuef5hM2cHf620xIOrOporUXAQWhAjMx0HTGcqGsgMjezzMzwioOnRocYhBPOPqwv+z8ItzLwdvADMuQWE7lfpllhYKfaE3N02OaT6MUJh4Nya7AmRCyh5W2irUgfGCNOPSOTobVfxfuhMuWMO4NMHzAe7INitXj1RWGzeB1OE+5BMwawjvlGOKb+V+XKsga2pzpx0/uqWG99RrczHX21CVV7ntsD19w9vY45KeG/xACrOqWBCgW3s7za3HmguZGOV2PfIcu2FCzg4kkeew/dRDYXA0CVhzHsTFXOYwtQdrfLLDot0/iQ4GRzzBT0yXYPFIaoWxMWodExKFueW6ipSMZzEMooeTD/p9BKuXkQcw+TdfIbhGso3qoMKWSLgQQDjq/R2cPUQMARfpiD8Jh+4O9IcqssEziyQyjfS9IkSLD7AkN+scUPPFOrA1T9Ae2tvRbr98txlpaneWaHnFKgqISOevoWFDrqc0nvDLdrivv+7L/H5x4ijaSxcs/xpyg9a7tP/8j1CnFI0J0Jt3CMbCRlr/yoXrYamEaJDjfmxPmEOcCAy78SWRRIjriHPJSVBXBO3AcnX5oUJhXoGEvFByzJQ2h13nVZR3Pf4qVf+SzMD0Csdz8CdSvzWAW3D1aVJFi/JUmmDkAeG7QnBVRUJQAMQXOGfORQ5/VsYntnZBom4hWUhkMEY1SVck2C0zRuoeyinirV/5+qu64/ahPJWbMTMgPZan/zRhUwSeMQnOpHuHZIjpV77QsASb+RFoxmsDffaC5XVY3K1y3lh0v0nZNmKaqr0PX+rs/hDw5YbmbqJHTqBa+PXg8ryJmgBTAw 3l7O+mzK UjmCfLOagpCcHMVGQzf5o8ltfTt3EwwWhrpfAixx0VaN7rXnd/ve6azqkzlHDT6t4iwSVniqpHu4Q+WVw1h23NazMwop6iynoe8zbQu7vMMS/8FhFXCHW/ip9NE9U5+rxj34qXEuv3UieXcitq1H3dCH+aDEupaWTpW/F4e0lC9eslHfDcmugNalBE7zAzDoopirouhSrc4NkdrSnmGp1BrUA6fYUwuvAIDm03IX7pclPSd2bkPDc4bHyReajVkh5fPItn90XrbbO1Jg5UdtcvtJVqhLJbvUziMJghmlrqeEcEq0RMICGZLsfuTaccWwZwO/RA/3chJwkNZ2tdt4BynsxIZIOTYDqoUxm2DKeLFJLrYuMsEHAsyJNM4pv293xD6kYmXW9C7zaek31uB5N+qKGg0YaYirmrNxWvE/LaCQ4Sh+03xWGXKkjRi+ldIp77/TI5zPuKgNSByqBu8DYqqZMuCczKSyVlh5H+huEeI1GX9sF79XYG/u90Mw9+OVv4ykFdPrscUW3Jo8= 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 function should be used instead of kmemleak_noscan when the object has been registered with kmemleak_alloc_phys. Signed-off-by: George Prekas --- include/linux/kmemleak.h | 4 ++++ mm/kmemleak.c | 20 +++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h index 1e2e8deac6dc..42069e0c1ac8 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h @@ -29,6 +29,7 @@ extern void kmemleak_not_leak(const void *ptr) __ref; extern void kmemleak_ignore(const void *ptr) __ref; extern void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) __ref; extern void kmemleak_no_scan(const void *ptr) __ref; +extern void kmemleak_no_scan_phys(phys_addr_t phys) __ref; extern void kmemleak_alloc_phys(phys_addr_t phys, size_t size, gfp_t gfp) __ref; extern void kmemleak_free_part_phys(phys_addr_t phys, size_t size) __ref; @@ -106,6 +107,9 @@ static inline void kmemleak_erase(void **ptr) static inline void kmemleak_no_scan(const void *ptr) { } +static inline void kmemleak_no_scan_phys(phys_addr_t phys) +{ +} static inline void kmemleak_alloc_phys(phys_addr_t phys, size_t size, gfp_t gfp) { diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 5882f60d127c..6e037dcf322f 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -939,12 +939,12 @@ static void object_set_excess_ref(unsigned long ptr, unsigned long excess_ref) * pointer. Such object will not be scanned by kmemleak but references to it * are searched. */ -static void object_no_scan(unsigned long ptr) +static void object_no_scan(unsigned long ptr, bool is_phys) { unsigned long flags; struct kmemleak_object *object; - object = find_and_get_object(ptr, 0); + object = __find_and_get_object(ptr, 0, is_phys); if (!object) { kmemleak_warn("Not scanning unknown object at 0x%08lx\n", ptr); return; @@ -1188,10 +1188,24 @@ void __ref kmemleak_no_scan(const void *ptr) pr_debug("%s(0x%p)\n", __func__, ptr); if (kmemleak_enabled && ptr && !IS_ERR(ptr)) - object_no_scan((unsigned long)ptr); + object_no_scan((unsigned long)ptr, false); } EXPORT_SYMBOL(kmemleak_no_scan); +/** + * kmemleak_no_scan_phys - similar to kmemleak_no_scan but taking a physical + * address argument + * @phys: physical address of the object + */ +void __ref kmemleak_no_scan_phys(phys_addr_t phys) +{ + pr_debug("%s(0x%pa)\n", __func__, &phys); + + if (kmemleak_enabled && phys) + object_no_scan((unsigned long)phys, true); +} +EXPORT_SYMBOL(kmemleak_no_scan_phys); + /** * kmemleak_alloc_phys - similar to kmemleak_alloc but taking a physical * address argument From patchwork Mon Jan 23 17:04:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112583 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 830E5C05027 for ; Mon, 23 Jan 2023 17:05:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 69A116B007B; Mon, 23 Jan 2023 12:05:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 671276B007D; Mon, 23 Jan 2023 12:05:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4EAC76B007E; Mon, 23 Jan 2023 12:05:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 2B5376B007D for ; Mon, 23 Jan 2023 12:05:19 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A5AF781853 for ; Mon, 23 Jan 2023 17:05:18 +0000 (UTC) X-FDA: 80386689516.10.1120DE8 Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) by imf05.hostedemail.com (Postfix) with ESMTP id BB83F10002A for ; Mon, 23 Jan 2023 17:05:16 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=Rngullo9; spf=pass (imf05.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.176 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493516; 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=bIxaYzXG+vaQkdBzDvgzY0uG6gWijIiHh8BJL3SYw7o=; b=I5ab06kjL3AhYomNvU4lqExNsaKW4CF+sNHNtm7KwuxC2TCliOLj/o91p2+hPDA/Nj3upy CJ3tWRHrr95KFsPAVQ67W2GgN4C2BJt1n1OuNWj6TArwHmsswywQ2/+SW8ghjECsw9QT+k MClLDaHMAX4YXASsb7k0drQDgpX1nx0= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=Rngullo9; spf=pass (imf05.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.176 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493516; a=rsa-sha256; cv=none; b=T9qFDySJn7mSlhxQtV4+TwamNR5pxY0bdIP2T4SarF35FvRPscoZ82GVJ/mZ0AcLfbJ8hm CsSS98aLK2Y0yrSXNgnYzRq5QKL1jdr/KCtncaKGLVkIjRwpxLuS94V7mt125GQMJRxidB HKJI8x5y5Ev1I9AJ57y9jLjxnswGeNE= Received: by mail-oi1-f176.google.com with SMTP id r205so10910048oib.9 for ; Mon, 23 Jan 2023 09:05:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=bIxaYzXG+vaQkdBzDvgzY0uG6gWijIiHh8BJL3SYw7o=; b=Rngullo9FIQWmYiF+ZxTZkXPONEiae8rLiI21tPQuQM7sel0wQrIaqKGTfGlyJBYHi BZloPHvNsYpAB8Gjfq+/MLy+JFG1bzk9t4DEAy5bahBhWPSMcKlhIaQDxnWkS4E2ZfMh wZxkcA3BZUUaKrNCRvUanXkMY/EQKELh7+/g1BPznjojLSKoZdicMlmspziUhSnqotUK 4gf7K+AEVEXHRBuH95fye+Pn26CWzGSzOf0MgsD7nrYkVs73JTz+/9vjgUZZkV5BCZEJ pKn+T9w2ueZQx9kRjRDuaeK0hP1PuZupTr0opup9/ZBIs7pDl5ZdZ4dC2rzu8Dko5QBl yiaQ== 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=bIxaYzXG+vaQkdBzDvgzY0uG6gWijIiHh8BJL3SYw7o=; b=AMApHQKEWUfxKxucr64WuPNS4ySgX4BklNrdyQipoaHNkSqQmj/fhQ3el7TS3RVlYq PvhmM+mPwcPkbfkpsn33++TBJG18/O+aImnkgSkwgVozZMus5ZLsaawijHWPQxN3B91v O6nrwyZb3jkldgkiuRNsFEVVbMbq22evgocR2JSGlsnxEtDQaH6nJNro8WMTAKe8Ll7Y CXbjwNAbcwIkABHcEbrBaAhu8w1nV9KDU5HZUcE5S3O6tW7Y0jy0SGUDvGzjAWHdQfuo wlJ6TA/iKmCjFgq7ed+V8UrMu+XTsnanw1N8s38WlDK2SHKdDdGDK/0SKjKgts+iGtQA zEvg== X-Gm-Message-State: AFqh2krbWPP3iAY6DoTItbiSeN07LUYe/ccs7kPRNvRL4sYSY8nhTO0r D6pLCSkBQderoJbYUuoQlrPcxw== X-Google-Smtp-Source: AMrXdXtmQsBbX7TxTVWro+5YzIyFVsPhCNiCtKLjq/clS6dNMO6H0Okkpr01ZFCld64pV0RG/sUUQA== X-Received: by 2002:aca:ea56:0:b0:364:458a:a719 with SMTP id i83-20020acaea56000000b00364458aa719mr12645525oih.23.1674493516311; Mon, 23 Jan 2023 09:05:16 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:15 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 5/9] mm: kmemleak: do not scan sparsemap_buf Date: Mon, 23 Jan 2023 11:04:15 -0600 Message-Id: <20230123170419.7292-6-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: 4hkoa4pf319pr7frq74kmukb6hk3tgqf X-Rspamd-Queue-Id: BB83F10002A X-HE-Tag: 1674493516-641458 X-HE-Meta: U2FsdGVkX18PVhas9m0Yblu2ZiBMaoWFCOddKk+7DdvyCHH2CyUl1Ux6h/kj3K+FTIVeby6n/j1ETdcmZf5SspeY7nrdFVae2T9z/X/5sRWKwLBy28XOljdqJxo5F40l0v//NRGz4JE3lz90KXa/8r9xgqB77LGXZoUA+O+8Iax8rXbEoSfk+HqgTa8tyCjaaMsJCWyK3W1qekWywHdti/wxLdW3LnIBc7mKCZvHN2j78T1Nws97cbLIHffeS85tJUxTACQl/cMD5FL09C8PMoo/eHvb7AqTmkxAPnzCtW4+21NR00FbR38YDKvJah2LsYIGq61NoKzPuSyBl3yAGlB5cUlJwyHlW7IB4b9RbuHkR4WSOxjHwHezsYNk/b9Lr5YB2jMNvGx7UtZW6uQs1+tMjcJy1GRh66ugKOcbGRY4XNqoOBVlPseMc3OzarYHxQ0QO6winqmo2ZdHEGEk1faw6x7klNoa0/kNMB9PapvvY5rZnqnsOoGc3YjkyeJSrcPXKL+PVXtjRLkRF8S/c085SNssDPBjjcuJbw6bWHCb8YMko+i0hjkpy9w8X9RaQtHTWG0qdvFc7vufYA995YI7mkaXCnRE91Kjf4a+auu453G2YDUPx7iOeo8tU4Mh+AJXJ3eevCJm4xamdzghQwfKF1qvKv89xVpXgNfMwMX5Ly2sAFQbUcRyyhq9TOmamh7+8QjOhkv+FsSA/8IuFeKWgCeXOUKJmZJrS9CJmK/HDhvclY7du65lIeAez1dE3SFrJYEfO5sauBHKcf0hP9L7OugokFQFOHSFtRBPc1+UCF/MQT365Zbgtfw5YkwO7ZJCsBElEMSskTjKwCygZi6m3OACOoegjaAefMYqajYMyDpWcecfthrW0krMkn2nwZssfY+qB0q+5mn0Qp7LD86AYxfl9HQzAvRaTIMEqTttCah2z2vJyloQLsa0xL1lOGAe9V0I1yZHCzGaUG2 KV0wXWCh 7ao4iLnWZTiDgLmjArzMi/qofABcCfPIqQKt2k2mXcrIZC2MtgCw4DwDSL/2C3vajVmjNgvDp10YP7TdBgHwu3CdbCErvG/YHRKhSMjoIuOvMzzworuMPEs+B1ZDobb5aRnPxWQVyyg0T7vdcboERdLhggLPCeFFOY1kzZBga3DDjdO7loUtCGbOaP5miKp74ZQtEjRslTtCzwuw1juvbni6e3JVY80I2jvK8+/pTXkesi8N0rBdbyy14pWyby49dYx+nqw0+Gu1rCyFwq1IEfTsSQc67QRIeTStnV01BmEn9xV7z3shaNy3qvz4N4VmFmeCOjFftjn9YbvNFhJDaPik3/q5FuEkUqYI/ogdp1i0HO+RVp76AsulPkakoCAFZjj0jPtH5WM1VlkXijNg3+wsHf9kBgyXEs6TdUudH9YwjkwilbB3ZHLn9f8cKnpZ9aBX30mOCnHFX54pQZ/s0z5tB6WvarfK5wgEWtJCxM4II1TWVRp4zrFvGifiXCTrUaJMfL6IgOvfuOqI= 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: sparsemap_buf is used for vmemmap and vmemmap contains an array of struct page. kmemleak scans the pages separately. If it scans them twice, then it will duplicate the number of found references and will cause missed leaks. Signed-off-by: George Prekas --- mm/sparse.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/sparse.c b/mm/sparse.c index 2779b419ef2a..49df7a052037 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "internal.h" #include @@ -466,6 +467,8 @@ static void __init sparse_buffer_init(unsigned long size, int nid) */ sparsemap_buf = memmap_alloc(size, section_map_size(), addr, nid, true); sparsemap_buf_end = sparsemap_buf + size; + /* sparsemap_buf has been registered with its physical address in kmemleak */ + kmemleak_no_scan_phys(virt_to_phys(sparsemap_buf)); } static void __init sparse_buffer_fini(void) From patchwork Mon Jan 23 17:04:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112584 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 B0C2BC38142 for ; Mon, 23 Jan 2023 17:05:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C1F26B007D; Mon, 23 Jan 2023 12:05:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 673436B007E; Mon, 23 Jan 2023 12:05:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53B976B0080; Mon, 23 Jan 2023 12:05:21 -0500 (EST) 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 377616B007D for ; Mon, 23 Jan 2023 12:05:21 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 135F4C0F2A for ; Mon, 23 Jan 2023 17:05:21 +0000 (UTC) X-FDA: 80386689642.04.2590E84 Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) by imf11.hostedemail.com (Postfix) with ESMTP id CC3B04002C for ; Mon, 23 Jan 2023 17:05:18 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=finZTNj1; spf=pass (imf11.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.169 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493518; 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=f2GRRNrDhCrnlwVW91CW9FSUCR/cr5m9HywrBeRIIiU=; b=4I2WMfzpb4Uup3PmOKSlDdHA4BMb3ZzinojMQxaL8GSUBskWr6wJA7FqDep0xHt+kAch2n ucEv449rH/nvdk7d9f1bVSvNhYZNS8bmQP0FbSuXBwQztYxtbWFCmal8o9kc56BYhy91HZ LN1Wf8jwyaKBkivUfa+/R27pQ9dP3SY= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=finZTNj1; spf=pass (imf11.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.169 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493518; a=rsa-sha256; cv=none; b=sXZywpS7JY26bbFbxVgBTqoz4QN6zox3s+F7+/NAhk1s0jUikA1ae6Om/aifc92IdzWfJn C6nhL4fT+Ydv6qxiHD+g4RfagUoyHXMh0d1vz6KWu/Kj895C/GFXFB2qLiN9rv3+WbNMnO QHlOhqu8LopgX0jgtL3JX++O7OWA+h8= Received: by mail-oi1-f169.google.com with SMTP id r132so10900161oif.10 for ; Mon, 23 Jan 2023 09:05:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=f2GRRNrDhCrnlwVW91CW9FSUCR/cr5m9HywrBeRIIiU=; b=finZTNj1eGWaV2AmpSJfvqcxLGxQU2fTE9yH9iw/wQIpHK0AtwI358OYChnUXm/8iJ 885GsZ7L+Qd2HsByw4673Ec8W+rPwybrY8NNH9uVdmzttMMGB3crZ6X3JaWMwMfvVtZ5 Kat9fNB7+JiCO6EMl4pHgb/8bzTiYCfgU5JtHk2K5dkGGaEJs7DbGIxeER6UUFvFSuBS gyV74PLOidorQhN12tk9QB59wPIuufCpu3l30daIVWeu9BC3GItN8Y5FYyuJDN1xy7xZ Dw46z8YRHz0afNEvAByA6Aq4wWLUJrJAEcTazwhOgd3Fof5IFs50ES3tOmcCZL68xZil mneg== 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=f2GRRNrDhCrnlwVW91CW9FSUCR/cr5m9HywrBeRIIiU=; b=pxzAVmwZmOL+gadrIV6Gj+GYtjXgPH/5HKjgOPXVtBbEUQozBE+hanmvTfLNB+TmsT 2n3a8MIgYITP+9YgaOEMDdI1DoTrUDkWUq06S9NVEnK0fcef0LV24FgiCxe0pSTo3srf aj3RWeZNavI1u+Q4BJN7lvgb9V3USSUIuXAKH8bIK/kiiZcPReQ74EdCgKkLKwXUIuLP 18mz0FJSa0tutoi1AAYbuMfGoW5IQlFQHtMQ7RhbdI0zmNl6iQOHP92XkqM4TRnSOU/X r+khi3M+dCqeb8aJX/hbTP/Utej/TPcavsfL6hUyRIgYdXv6ydXpc0OJJSESRash7PAU vGlg== X-Gm-Message-State: AFqh2krhFGAqXQHW5ENkSsch9zOJ33vTVQW6RFCpAeZLUSJwrQSU0WQl j1i4IzUMtOWPk9oyakKFS9yGcQ== X-Google-Smtp-Source: AMrXdXtf3m6tswAwu4JAcP7eCbHkFbal+Boirz42qiwEY8KwjUMPKGRMWdR5Ardxhr7Hb+ZCseEe/g== X-Received: by 2002:a05:6808:1414:b0:363:b9af:ec89 with SMTP id w20-20020a056808141400b00363b9afec89mr15920247oiv.1.1674493518413; Mon, 23 Jan 2023 09:05:18 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:18 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 6/9] mm: kmemleak: do not scan cpu_cache of struct kmem_cache Date: Mon, 23 Jan 2023 11:04:16 -0600 Message-Id: <20230123170419.7292-7-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: CC3B04002C X-Rspam-User: X-Stat-Signature: 7bmfx1dmjon83f1u6kza55ffb3r6qnrm X-HE-Tag: 1674493518-31708 X-HE-Meta: U2FsdGVkX1/lBOGQ0/fCducTcE3dOIx1s4OXPW2HYZhtNKIYjLg3TXFwZKrbCOOLyjaAQzD671eSVTzlmmBWuA7y5FcweyP0wTB75o3HYd/WL+Mu3Lh7/XWO4am3TRW8LhxQZ4klLiWKVeDCNvpokHcmV06cWI8y/Uq7xXMOeqt7gAyj1A4Si+OQHuo54Qsp4HnoyuzjGedEVIZXEf/NQcBzXeGNtInMxatQIiEhW1x/ZrhtQiMP7+tyzgHK5UANHfRh5tXDDNYGiNLV1aXFuh+fzmg/+lZUbnk6HmcFtTct4pu70fHjjFO0AwEUNGWASo7/1QxRJfywDVfnkXe4iu4FFQQyWVXUyjMaSPWpq5II1wyfnY5OEc34o9B5RBnOgnE+9WeGMTrypNBYwViKFUz93PZKszTFuU5nQnZLBQFCpNNbRVWO1kFXzc/Zbfs0J9tDkOQdduLbiZ0iDOKTgY4gzJsHokLRoyh339paJQnRooqjqZzWe9q+yFO1QDt16vR3/W9H+C7mGmjpsQ4C0G/VCXNH6P1E83gu7IrGm+/OSPP5ryXweSXY7cO2BH+3laDvN1SkxMUYfqrwAF+0gMTdzGF97u5V34JIdUbF9awMVgIL85qchT36TDwTBbr8YxJTvYMUN8ns0Uaaq/8guuQdjjT3poF3KK41DLgKCgKM6jjzib7JP2hOHHXW8F7lLbgFhVQk2J59dCB20YZLyC2OnbdypufNB/xqeOjaKh69ULRs0+HTxbletAD/EdkTlspvc0wfAuU4R7zLcJEU4OxafKJdGc18e1eFxs1TVyJMtTRu4QFD4DD+fxSzBXJG0UmFzepuB4H31XQuqR9VHMgzkeO1WhmSRtj6X+Nk+RizAugfyDJNSYV1RotjDSUZbpP14R+aYHHNy+MG4l8GdQG3mGbhKC5ma1GUS9Gaf9UjDzuS2EMR/If0/rWooXJ/mSIxSyz/KkUwRzPwexA EztI5C0T bYq/7Mu8KJRgZX4oGgkRoZSwrs/RdZ7ZzvJ28owJYYH5GeUIfJq/+odG2sjO4es6rWF+oppaY0xoYJDJrVM34KWwYh5Mk4bSOKlVr2vwyeGZyJS7RPzLH84JBWWpIst4kEQav98+HRqBWmFwICytjn6z6O4iFyTY0quY1GTddBB994saa/HyvSwpMrzmgEwA/N1XNRWg2OFTdmJ45AiCN1WwWozesWEOoBb8rfhXwRDwx59jTBbakerAO2f3dR51Wt6GA3pmnexul7vBCwkroPvnHSH1VmMurDB/TV0WSJsrAQGxNRGLayUzzTWEXaLC/HF4rK7gVzCKi0r5sW/hV5tiajSQ0rZMGuKBnODAuMgeICwgrt7gTvb6YmFN0ttzDMeVlG6bTqQoCWY0nLsZrjMjXpbaK0hZnVi6jCWVPR86FGhhspcCb9wphg/Sra1ZUZUnZmwXAc4HmvUm0myWqCroTEQI3VLXwyIWIul51PsyzGG9jgBvkIclUGXd+O2TmSvYCbLVrSGXzbEM= 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: The code already makes sure that kmemleak will not scan similar caches: array_cache and alien_cache. For the cpu_cache, the code takes a different approach using kmemleak_erase. This approach handles object allocations but does not handle transfers to other caches and leads to undetected leaks. According to the comment in alloc_arraycache: [...] when such objects are allocated or transferred to another cache the pointers are not cleared and they could be counted as valid references during a kmemleak scan. Therefore, kmemleak must not scan such objects. Signed-off-by: George Prekas --- mm/slab.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/mm/slab.c b/mm/slab.c index 29300fc1289a..a927e1a285d1 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1744,6 +1744,7 @@ static struct array_cache __percpu *alloc_kmem_cache_cpus( for_each_possible_cpu(cpu) { init_arraycache(per_cpu_ptr(cpu_cache, cpu), entries, batchcount); + kmemleak_no_scan(per_cpu_ptr(cpu_cache, cpu)); } return cpu_cache; @@ -3023,20 +3024,8 @@ static inline void *____cache_alloc(struct kmem_cache *cachep, gfp_t flags) STATS_INC_ALLOCMISS(cachep); objp = cache_alloc_refill(cachep, flags); - /* - * the 'ac' may be updated by cache_alloc_refill(), - * and kmemleak_erase() requires its correct value. - */ - ac = cpu_cache_get(cachep); out: - /* - * To avoid a false negative, if an object that is in one of the - * per-CPU caches is leaked, we need to make sure kmemleak doesn't - * treat the array pointers as a reference to the object. - */ - if (objp) - kmemleak_erase(&ac->entry[ac->avail]); return objp; } From patchwork Mon Jan 23 17:04:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112585 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 D245AC38142 for ; Mon, 23 Jan 2023 17:05:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6EA226B007E; Mon, 23 Jan 2023 12:05:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 698DC6B0080; Mon, 23 Jan 2023 12:05:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 538D96B0081; Mon, 23 Jan 2023 12:05:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 4095D6B007E for ; Mon, 23 Jan 2023 12:05:25 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F1854ABE71 for ; Mon, 23 Jan 2023 17:05:24 +0000 (UTC) X-FDA: 80386689768.02.D32224A Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.52]) by imf17.hostedemail.com (Postfix) with ESMTP id 813DC4001E for ; Mon, 23 Jan 2023 17:05:21 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=eRHkK9RS; spf=pass (imf17.hostedemail.com: domain of george@enfabrica.net designates 209.85.210.52 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493521; 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=6ru6CLB0URVzEwIi8l9mzpkjbwVXFEWjh4LnzIwtBgg=; b=1pATbomrLzn6slc4NUEqzqZAHqI6IXEFt9CeHnTALzVSJ/4CUOVNe2iJPyswCohFzvZk6h KWZnOME1ERz4HR1K5MZcbW1WKAF1bbIUfF7UMlzq6a1kwzDoe5SRe6XN29MZvgQUMAU3F4 ESl+5dX6DP4L5DBnSyZAK+2zVCcKNa8= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=eRHkK9RS; spf=pass (imf17.hostedemail.com: domain of george@enfabrica.net designates 209.85.210.52 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493521; a=rsa-sha256; cv=none; b=SxJpEkXK3KRfLsqMKtpwOW8mRr9C4ijgRfGfHaVo71DaHquPd74cSixInW5QFPg3Ao6gv0 f0HJIEO7FgXp+ivCgI1cT6vFPZNqQCqOfd6Di0p93AG0oC9GYeS/ZDfggySU6bYjv0A6BR +t4Q/91kRpeRKcdBqh8C+SfZBt891nU= Received: by mail-ot1-f52.google.com with SMTP id k1-20020a056830150100b006864d1cb279so7683360otp.5 for ; Mon, 23 Jan 2023 09:05:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=6ru6CLB0URVzEwIi8l9mzpkjbwVXFEWjh4LnzIwtBgg=; b=eRHkK9RSp5RdUPbYzc2ONDyMk1JVlFNsVwUGHf/NxgfjQtB2EguW9rSon5vUJDEQcR csImBlv1J/8eJb0qw56nUOkalGbV3a9x7Y+1iaTyUJQzHKwhtDEC6PfRxanAeXV8m/hK nTV9ZRDqUFiBL5abS70FxjIdsRGoYa90GQtfcK5xG7MVLKvFuzLiCfhSXpOsVNqfGowy yaZpYooq8OyDfvz1AP5wzOv1luRGdwp9M89VSrRpL+BaQ2XkmmKQ86jTzfYdyjLqmp4z KGg5dcZYHnUHIh/GT9M4dDHpW67G6ZesHaPm+nvGRaQp/gfK7aqKufdBPwIZeV8GR0OF sltA== 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=6ru6CLB0URVzEwIi8l9mzpkjbwVXFEWjh4LnzIwtBgg=; b=QWzTneSxz1dg0GHABiADvCE8quTpSS1Lo42X+pPHHB1o/X+879oQ1jgZ3c2PNOTZpd NlQRSHTFzIkjXiIkp6fY1QMN5KEGa/Vwdu8k/E7QZfHyJrOO5vfUzDF4lIK7UA8uNMrZ QLaBYro6d9lvkIJ5Gl3y827ctqXbwKGvINLP7EZZgdij0SUEExW41/zUnI/Ljurb1vwH tflSDBQzJ56QMcj75Fk+UFZDlKLcN02pvAMqHPBNgxBDBGTDpw2wh3mnsiVFvIHee6Ew +Glk6zbshqM3M5J6QhEIKo0P7VLjQ4cinPVCoIYepyuQZnZd1seY8mMXODIeJkkpzt5b mx4g== X-Gm-Message-State: AFqh2ko7Ys+8KjYmFAhmwHhZh5GHAfSr5fZXcwkL3PUDYP1qR9W0mQnf OJ9DgJd75/W3HbcL30nKZ8t/iQ== X-Google-Smtp-Source: AMrXdXvByCWK7YSdHMdSB0mW02MoC6pySSXn6CG8IdG7KukUbpOeHf13LuBKC6y/KYQF7TZq9bxuGw== X-Received: by 2002:a05:6830:1358:b0:670:9f08:2c48 with SMTP id r24-20020a056830135800b006709f082c48mr12522432otq.9.1674493520590; Mon, 23 Jan 2023 09:05:20 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:20 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 7/9] mm: kmemleak: erase page->s_mem in slab_destroy Date: Mon, 23 Jan 2023 11:04:17 -0600 Message-Id: <20230123170419.7292-8-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Stat-Signature: 6stfp33bz8w9of5aarbrr9hperaixfct X-Rspam-User: X-Rspamd-Queue-Id: 813DC4001E X-Rspamd-Server: rspam06 X-HE-Tag: 1674493521-259530 X-HE-Meta: U2FsdGVkX1+RneKmMxSmVKvvkJsNBnEXUrkbAyhea6J/UfUHh4Vc8PsCQ791tzV23U77eVm7llY+I5VbU7kphShREmRgOfhYO5h3aI3mSZ/so89aIB1ehBt7yEppypx4kC4HHDzctgLgld0tKaGq8T3qwKLJU169d0xynzI3hwPPLoEbtMMvHgRnp616PhcNBSisyBTj2tuASYT6/WEzT4WY1xLUjSAnfFBKUCkRMQ3FK8XIxGuZNpv9+WDppa1gZtwiiRsI4uv1R1b0au35xgJpFQ11JFkojFRfz7vslbBPHWQ1nK+xosw6T+ToJyqSTYYRfzEUC9GI/fUYbdc4BhJ0wBGcUFgkFxz6zEDr2M88mRHrC0jgiNowA5VPzjXMdxHIK7k37DoX0ppHk+HpCL7eY0Cf3YmBihS35LMMHx3Qmb6fU8RB3R7kG5K65/BAeS3XuqRt6cjLfYN0RyFCaH2e+8KKO3e2TMi+5BdYnyqDECMRZKeJc7+Q0KFLNL7H678cNSY4PYdCcqTOvxeEGsWwagEbNjt8qIoH+g45GhY8J6datD3r9v4TuzlYG10QDMbEH1sCw5AFhOPgvumZ00pt+9G4P8y3M+u9YYoG3HLyGF3gI9SOLFr/3DmEs6udEoMFkaaatUxmKdFMSIJCClHivej9npMqNi/LeUyN5ptBn2dRkmJSEXxD5vpohXqvLiYzJYVSMuEGj01Xh/041lqnuYfxJfVJc91YkGF6wuztztkZpoZHRARAHehojjp3f/yLJJ4SzJhp7X9x4a4iAmBkPflciDTDamgar/tPcA5MKRgpKqW2G/Cj/esqLx4yhxCdwUxt605JZ1osFyzExJIqVj6i2duYwuIoYqSSwG5NqeZH5c+6pURSCTqZGWzU7zAnC1EV99PMDJtIY4Bi4dcVVy6Lch3ysm8wZ8ozQsGTHQP3sELVZ3OG1OwmucMPtrfia2FaI9Pshvuq1S0 r3W87vp6 ucT/fio7QqjtWoBxgYXz3W8oRao5tDexiGrD4fa2AdjLlIZdkZk+HD1Wr27rcHuo6ylh3dqjuSIFeQ8f5YLkumnciMK8fHwCZSjSirfzXX+bUeE4iKK8nYx6pNU4O4+oFb6ioTPPws/J6txnlcIrldiK2XPpGLZJw2ONbgZqdo6gj7PfRyFv3Q6rv1BoZbVbj35K5qmhLArB7j3LPP/7s4lSA+3RY8wARnh7jVYajOR0uMzUju9F/XIdfketIprIPXLdBA0yYAKIchKrHrk3I75+u/r0n7CIdpmCMoX+9Qnsg65YNT+iG4me7XOzYg/xbICwq9lX/SExbaiADwgGjKUPIIY2NZsTXfoRzaD1FTglLnKohOKq1Lli+jciiCIUnyXU/Puz0qNLD0Cdg800gFegN1v2Vg0JYMoiDoeSpv3dJeteRVQRbvHuAoV05G5q5RHESdsaHYVq2/zgvEYoKeuuqOYIkj/HMyu4EOBB7wTU7XVCb7OX+miRi3N/KVjzYzZrTrGr5WYEdu0s= 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: The field s_mem of struct page is initialized with the virtual address of the page in function alloc_slabmgmt. If kmalloc allocates an object that starts on this page, then kmemleak knows that this object has 2 references. On slab_destroy, s_mem should not continue referring to any allocated object in the future. Specifically, assume that initially the 4KB cache uses page[5] and its s_mem = 0x5000. Then assume that this cache releases page[5] and the 8KB cache allocates page[4] and page[5]. Subsequently, kmalloc returns an 8KB object at address 0x4000 which will have 3 references: the returned pointer from kmalloc, page[4].s_mem = 0x4000, and page[5].s_mem. This object can leak without detection. Signed-off-by: George Prekas --- mm/slab.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/slab.c b/mm/slab.c index a927e1a285d1..aa5eb725ee9c 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1611,6 +1611,9 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slab) { void *freelist; + /* Erase the page's virtual address from s_mem */ + kmemleak_erase(&slab->s_mem); + freelist = slab->freelist; slab_destroy_debugcheck(cachep, slab); if (unlikely(cachep->flags & SLAB_TYPESAFE_BY_RCU)) From patchwork Mon Jan 23 17:04:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112586 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 CF458C05027 for ; Mon, 23 Jan 2023 17:05:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 70EE56B0080; Mon, 23 Jan 2023 12:05:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6990B6B0081; Mon, 23 Jan 2023 12:05:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5392D6B0082; Mon, 23 Jan 2023 12:05:27 -0500 (EST) 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 3D08E6B0080 for ; Mon, 23 Jan 2023 12:05:27 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 11300ABE4C for ; Mon, 23 Jan 2023 17:05:27 +0000 (UTC) X-FDA: 80386689894.18.FAE8A1F Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) by imf12.hostedemail.com (Postfix) with ESMTP id B1F8340041 for ; Mon, 23 Jan 2023 17:05:23 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=APL7TitI; spf=pass (imf12.hostedemail.com: domain of george@enfabrica.net designates 209.85.160.46 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493523; 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=ybecE7vl8IXqIAJRMP/wGF59IDlD/hkvogtnVPzlVAI=; b=Hjz+4qb6E9cw4KH7lpdEqHOlviuaSFWcQphEdYLD4x5+IKfaFnEHNTYX+RQFIBU7IAEmQH QPWxEP7nPIXK4bIMtoANmwD+BBQUaojCY0Da+5gyPPArLLNNGyWAWG/a+q4f3d/ODwXwkV pZ+5icUi8DGo7P2ZSb59y89bBU0UMqg= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=APL7TitI; spf=pass (imf12.hostedemail.com: domain of george@enfabrica.net designates 209.85.160.46 as permitted sender) smtp.mailfrom=george@enfabrica.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493523; a=rsa-sha256; cv=none; b=cvFgk0Pgc1zYmU0/DxSpEApZzRydgUtFbNfDDkxqTrbRxGwSwZY+j4I+bpYf61zS0Rt7wp NmBcd0sHHXd0ScTeKHwv87R8DhmoDCITxJLL04q30GMAiaRj6jI7IQyhAB45KzVl3VxYsV tV7C+yblEjkMrrGWFNo4dpXWC3xzjSA= Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-1433ef3b61fso14628939fac.10 for ; Mon, 23 Jan 2023 09:05:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=ybecE7vl8IXqIAJRMP/wGF59IDlD/hkvogtnVPzlVAI=; b=APL7TitIWu54rYa8SCVe8M3t0wMgLY+EV18cpTS1TnvN1zchHcLl1Ucf9YXLj3UDrT 7NgDbZrD/5d1Ri7Y5BX5j4wEvWROYTj6Ah0D07piXUurw4bQNf8fHkltGPmYEovdFyir W9EIKbIvyhtvwkPubU2J5RShw8WGwD7mOV65YKKY+C8iQUexFcSXqJ8D+Nu/qoUYtrgr UDfKq36+TkUnpoof+BMglXhqxWwr95hspOcKgpJ0NxFlgRsNSWsde/dbjtRXeJJuWh+J e0Jus9A143Rj74MtKcxi6llOf07toQnooc0l0KLGRcLgGCvhUs8IrZwiXNMGjX99G0Ta FxNg== 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=ybecE7vl8IXqIAJRMP/wGF59IDlD/hkvogtnVPzlVAI=; b=VWGwgG9C29RlbxsqOPsa/qwNV4muyOdncO+UcO9xu5GyaPxGvxP2EHunv8qf4DbiT0 BvoS8qBvgHEiD1nM8cFJw4OM8ma4VufG6WF9zhZyr3D9hPH/YN3mJaPm8VZC9aEVlhVz R9gVw93d3yoriErLxSAF8Ng+4owyoFNgXd+eBEmnxpIpBWtqlp3424XzBjp1DCTcvzml 27urvtOY0052Kuf9ezeCeZbY1l4TLNKdde8RIQ0eCpT11nv5FH0RsEB3NeJ+wYfzEb51 FEH+V7cfnBtYWvj9ztZ1frD70qxinMsxB0L2a+ob9TYdHYOAPd2l9F5YwLfheNQqz/ff hX7A== X-Gm-Message-State: AFqh2kqnwATO9wjv3oyGJT/HN1631+k7Ev/E1m/xscvlSpwqUEWFpYEn zMrPvHG1FqiJ3z23ekViUbSReA== X-Google-Smtp-Source: AMrXdXsRhvT7IPixwWUMSoAngcVnbBU4uqLsWAOHwwINbPYyJOELbPpvjBW1uZWQE2O5oDk3JmtS4w== X-Received: by 2002:a05:6870:ab84:b0:15f:32b:6e46 with SMTP id gs4-20020a056870ab8400b0015f032b6e46mr13704980oab.49.1674493522851; Mon, 23 Jan 2023 09:05:22 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:22 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 8/9] mm: kmemleak: erase page->freelist in slab_destroy Date: Mon, 23 Jan 2023 11:04:18 -0600 Message-Id: <20230123170419.7292-9-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: cmgoy9cmg9jzbe4i19yzqhxrt9a816dg X-Rspamd-Queue-Id: B1F8340041 X-HE-Tag: 1674493523-261332 X-HE-Meta: U2FsdGVkX18wuRI2YSxOzeZ/LsnG485js+xPA2gBAiTJ8UMoj/H+D+7DmRe/vqI+thBLjySaugIMHApsSgi6DcYtKaeEzG8VGvCme2Lw6Jg1axI2teBkjppSbTRfwldIlDAqKwyMdzLXZOofZf9Qs6X2tUsBTpsSucnAAX5liMECUZQkYwn8qaQoiiRbJbJgZHRPFvoM+hCSlm2L+EY6rhELc7VV0ZR7b3of4BNpwJNWwASpsrWP1bwWMQFqmyXbr5oWubR3HHYsP03VR8EGir5+ewEbbvAraf4eyWtOaYCRdsvhKlEXHyUIsqEadeGZUgGG1EIrs8TWtPeGsIGq5MQXJHO18pY0Iz3bG2CyQH+tvkfZ6aTiuLqB6YQhVd+NNIPJBB9RJ6rkYDgxIj5/pUFY0TUJQ0tqV/0WkSrF6tDxxWPxyUVPc4YGzYD5EIW2l52mB2dxBYEwW5ibSaOshNltH0wGnGxemferh6nTV+5q8jEiRxjw4FUXQsXsCVTizmaOA1Fc21f4l5KtpgSqJM3AdDDTJ9w+K8eJPBL776nMATYbsZve2lkRglSiT2+iONz1WFcqWVANOYo6EMQaoAMdpu7AEMGblGU4Jndknc147tjfUq6SfuO4kEinYtanRfR3lN1YlzLgvwgi1Q4E9nPoJh1q5hRT7kPPldcl9oXgyepJmnA+GTq1GDB0VpRsa30gVdGPMPJjAuz0fn8DVSQD8O+cd4OKuJ3DF+QiNq7kBlIYpPLVn7NRX3t66Fvxn5L/FzVRgY7UUpr1jjp1DrhivmsnU3jMemqWOD5SJ9kfVKEcM+jqYQVsnOWqxuEXGyTd/VcRwEGozS3RkqQQOJCC1vOiGzGcqy8et/YcKGAAWF+HsG8CeIpNvDkmqAZXjqar3E9Aja9Yid5pmsfoYzsFpjnES73wjXZT4qdiTrs+OFR0LMOyq8yrrkHQ4ip1X/ALjLm0bGTEteKYvZN fvhuCHi6 /QjW3RDA+j0W0Leo+cBbT6Ag8AlNjwN+pp69WSnYGOmXeawp67n0IhUH/sKYyrfuZ5HWHpavevCx9fbU5lYcUdQBVIlpA2F4Q9YxX8+qOuUnJUHBcfrqxlZQrRcWxUZ1GX1Zl96VEIKqKhyTQRr8cRLDvHmbb9lE6u9mydA+jeAjr+x6jn1336SMVaWAEK7e/qCRTqL2fZ+9uvlhFj8AR38CKnhXaFnqFIIftabGmx2JEk7FktQ0OJZTpi8i6KC4kT7rENfSEHmxu2IAke1P+SoyfutJ9NAino57nnwYLvsPoBstQQdGHmUhiQ5tdnrG/0qYrDuhrRhUn3WCM9W16666HPNqjwkv88ZzSL/3J3UmkqtknDUWc+JGLW4mtKHCCNfJqaHEGlJvSvRjBkHQQCbYJkZnybIEhFH72F68gKEiGvp1S+Lm1QqMP2/ijSgWZ9Cmc2eftgOqMPxE/hM9n13NKdtUdKermewlcCoIrin3fFCCWCnKNm2POYdsy73Pnl3xCVViDccy9LJw= 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: slab_destroy frees the allocated memory pointed by page->freelist. It should also erase the reference to it. Otherwise, when the memory is reused for another object, kmemleak will find the stale pointer and erroneously increase the reference count of the new object. That will lead to undetected memory leaks. Signed-off-by: George Prekas --- mm/slab.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/slab.c b/mm/slab.c index aa5eb725ee9c..12acce274502 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -1625,8 +1625,10 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slab) * From now on, we don't use freelist * although actual page can be freed in rcu context */ - if (OFF_SLAB(cachep)) + if (OFF_SLAB(cachep)) { kfree(freelist); + kmemleak_erase(&slab->freelist); + } } /* From patchwork Mon Jan 23 17:04:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: George Prekas X-Patchwork-Id: 13112587 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 82DEFC54EAA for ; Mon, 23 Jan 2023 17:05:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 33E6F6B0081; Mon, 23 Jan 2023 12:05:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2C8126B0082; Mon, 23 Jan 2023 12:05:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 02FB36B0083; Mon, 23 Jan 2023 12:05:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E63566B0081 for ; Mon, 23 Jan 2023 12:05:27 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B0F8C4103D for ; Mon, 23 Jan 2023 17:05:27 +0000 (UTC) X-FDA: 80386689894.06.1482B03 Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) by imf17.hostedemail.com (Postfix) with ESMTP id C21F04001C for ; Mon, 23 Jan 2023 17:05:25 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=ObJDc3GJ; dmarc=none; spf=pass (imf17.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.170 as permitted sender) smtp.mailfrom=george@enfabrica.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674493525; 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=8f88CXcixnrI/0j1gGMVDwRYunITviumj406DJ1Inns=; b=QKjFXLMs8O+xACFTWWlNaqaKWEqPwqRBUyYvmJUqnADtqtLt5Dm9c0y1TvqjxzhJOBLl93 NW4BIwlbTlaP43boWflw9TVZdvEE5ieHLlIDX/Yy7NCtKKtHyxwRPH2fq7nl9KKQdISlQm P5Qu595vN44xMnF5UYVCr/5ygGjN8oQ= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=enfabrica.net header.s=google header.b=ObJDc3GJ; dmarc=none; spf=pass (imf17.hostedemail.com: domain of george@enfabrica.net designates 209.85.167.170 as permitted sender) smtp.mailfrom=george@enfabrica.net ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674493525; a=rsa-sha256; cv=none; b=iEnW4DfsmgC/Lhdr0S7LV7BL1/80LjZxE5IMHmg24xYZ/HdETNT8bNS1Q5UWFH2lu+LXgz 5Ot10FLL5e/mST7Wq4lQtLk5R49o6F6/JbFNUq0R/4GBqqL8uqR541yYAOTu51PV62u97e p8ExjGOzYQBXmEUNFKxaUh84buEl46I= Received: by mail-oi1-f170.google.com with SMTP id n8so10976367oih.0 for ; Mon, 23 Jan 2023 09:05:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enfabrica.net; s=google; 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=8f88CXcixnrI/0j1gGMVDwRYunITviumj406DJ1Inns=; b=ObJDc3GJ8VcmrPLtvbGBaEyaJOUaLxXFD5DlwgYRAYb107fIdWq3sp37PFvexXW2O+ qDy5o60fDjYQGPlMWnhZRjjcK9Nf24oENVbFcVPE2xui9vzipy98GDJRKGTtB8KxuRx7 HGO2p7RRACpczYh8QIoQQyD/XbATvL1WU4jKphVHo7JWbxpYvN2oWQ56MnXuhmiXuYq3 1t1fQtsqvb5JgpF9ihIrEzFkntjB3E3tWbiMlTsoY9QQ+juCR38vimxgbRVFQBtxduwy fVw5bRmcm9HN+wjVYzvVr+L/2VKYKQ4KvMPsaJPjlehXxzkTbFY8dnG4VMlByzqj0y/h ACSg== 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=8f88CXcixnrI/0j1gGMVDwRYunITviumj406DJ1Inns=; b=FODuLHDmUH2tA/ULq8O3cKTX0gLiwgUI7PL/xE8o2DHnQ9sWJNYDJj3zV8v6v/XOzD 4olPbne99w4UTfbC0KMqlzkcMKMtuxzvitktqBIWR+CzSJFCaLFF9QdaMDzSqP0TxcRy ZEkPO69kRAGS633sGpusKZHCRlBzImI4H+R5OlsGTyWlEURttmVQS4eAxAOuG0ABhlhO f86orcyeFhuLYbCi9LFVlBg32zBM5BAxS7BmhtcedXPZrMRHf4COUGtd+6TgdVk45N9i MMhgioxTKQ8zkJ2IldMq1Nd17fKmXrUnWozeuedLiWLa2xWQqeqYILAL/vXZ2zZJCWzH VRoA== X-Gm-Message-State: AFqh2krKDfB2J45UfwvVgVPZwVXv2ULZi+G1WXh8hmR4MfWBGch4rsAU +/IWe1zUYUMNVj2I6SZRC213Gg== X-Google-Smtp-Source: AMrXdXsg6f/N8/NWAWLTaBNp5bBEClmYxq8/0OQjAJX+T5+d9whQAFDyY71xO+WqBPcWrsx5a5Kx7A== X-Received: by 2002:a05:6808:120a:b0:364:cc8c:1870 with SMTP id a10-20020a056808120a00b00364cc8c1870mr14930650oil.41.1674493524876; Mon, 23 Jan 2023 09:05:24 -0800 (PST) Received: from DESKTOP-B7RB26P.localdomain (cpe-70-114-202-97.austin.res.rr.com. [70.114.202.97]) by smtp.gmail.com with ESMTPSA id 2-20020aca0502000000b0035ec1384c9esm23160163oif.23.2023.01.23.09.05.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 09:05:24 -0800 (PST) From: George Prekas To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Thomas Gleixner , "Eric W. Biederman" , Sebastian Andrzej Siewior , Andy Lutomirski , Peter Zijlstra , "Liam R. Howlett" , Fenghua Yu , Andrei Vagin , George Prekas Subject: [PATCH 9/9] mm: kmemleak: fix undetected leaks for page aligned objects Date: Mon, 23 Jan 2023 11:04:19 -0600 Message-Id: <20230123170419.7292-10-george@enfabrica.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230123170419.7292-1-george@enfabrica.net> References: <20230123170419.7292-1-george@enfabrica.net> MIME-Version: 1.0 X-Rspamd-Queue-Id: C21F04001C X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: ayofjccf5hfsfhnd8w7nwugfo636u3yq X-HE-Tag: 1674493525-114219 X-HE-Meta: U2FsdGVkX1+7/zmMnT4JglES0e0XSIX9sibnuP5x7H7MOGOHR/ghcTecgnMv/thydZ9Zwuyuy8c9h482GhPrFK1/RzhlrHR7fTcRFQQhUGKsdPbD+9fjEANkUjDqeJ0C6JG4JQeIvl/Y0QA/TGXUjeOIzd0OqkYLVI4qTBlR2qg7AtsdfuXOH21Hs35dTjPQT6qNqFqQfhotWFLO3PnBfevm2PacwnQf6XSq9mKU4aYkgVR4nx5sQhZrSk2/KDeDNM2N8vuFMyc/w87YkaX1NAEPPxoSjZ6w0B9na7VR15OM9mI5nZJgEQ1t2CezsCWzBkiLCj1XanlaebC1rDD5Q8PHVu6De0z6SgmcRwZ9zA2llmv+6wUZ+Egd7dTT0YlrFXSyAZ+RJBUsYj7dIQRaSAP0pcK+9EM6hM3tJ2qAxKxdPjzOFvCrzRq8zc1P7Gzdg6BS4v4yOcjfClD8aRKeyFpPc+NrpncgSeDufwOSGA2GMEtYJZsnmGU0am0Ic+h+0EJDaL6k60HohFpV0bgrrU+AMqFkEk0RnoixKMMIDJ4qMGKCDx0lbCFR+6ArwvU3WrUBJRH/jpefGQgUGcGhpdW1zyy8/rmaUuwKiTP9SkCGcxeYiffRM+S10Q/v18LieybUULYVrrhhcjPF7IqgIoVOt/QM5CcTmr0gi2XzW90nZLr/1OosVKA52Sbudf2/hn/Tc73/VOjUcvlYgg0ql+DXqCcVMnwbbbXao1MgI6NPnAb7yM8Z6sHkgQ99+Dk0EtlDrrWimztp/liYq8uLDvCwy94/frVzmPHuO2H0/bl2bbjvL3MGubLY4VoZsuiOVXo3MJwL8LBaxZ3nHZNaT1h4cU3rQ769Ywy+bGGzEdJyu0bcule9ZkGVrTADUs7C6gUwQUdlS6nKMz856FQzUmZKWZVDf22K72zbVwPkuxPBUeC67Qk6b2hpvMhTmP1OKNSxH1rinMZKV5zMFAq 9WT/h0UE P1jsFNLCkf8ECY4G9PQuErbac3WlaF0+xEL0DQ5cT8NYQtvxqp3dkDEiSKANCk2hOV031evvPnsflgKSmxGFTpGjjNaRZ0aA95Q7aQoDdlfID9ZRb3B+P5b+q5/PS7iBXbHnjyjZhGYfu8pPjeEfJy4rn9o5voj3zxbhmuGWRPqNhTboNRdBfIsl39HfVmmsgIEpWmvl7EVG4IsM6zFKFnM6siXYL1Rz/HhPxmfNEWeRFdl1CEIyXcxbsS6SW7Z+OYo4LWwElIpTPA/shLpEkKviKx/T8tUdlDVIEZczInCUuB07KqIpV/ZENyKMoQe6Pxdl2SF0OreX+pLwUEltXnE4dZf8Yyu7jK8rZSnS6Aqmg5MO65ojIwTfoPCMnM9OLZHw/V1A1kH1ihUiVv0pqwHR59VsHVYvp7J0ulTK2sSOCrMAZempHnzaUUnJ3f7z30ZV9M1E8WRQuKPLFiM0MUgnIFDJzfJtNuD/3 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: If kmalloc returns a page aligned object, then the object has 2 references: the pointer returned by kmalloc and page->s_mem of the first page of the object. Account for this extra reference, so that kmemleak can correctly detect leaks for page aligned objects. Signed-off-by: George Prekas --- mm/slab.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/slab.h b/mm/slab.h index 7cc432969945..76341c7c048e 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -734,6 +734,7 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, unsigned int orig_size) { unsigned int zero_size = s->object_size; + int min_count; size_t i; flags &= gfp_allowed_mask; @@ -761,7 +762,11 @@ static inline void slab_post_alloc_hook(struct kmem_cache *s, p[i] = kasan_slab_alloc(s, p[i], flags, init); if (p[i] && init && !kasan_has_integrated_init()) memset(p[i], 0, zero_size); - kmemleak_alloc_recursive(p[i], s->object_size, 1, + min_count = 1; + /* If p[i] is page aligned, then a page->s_mem refers to it. */ + if (((uintptr_t)p[i] & ~PAGE_MASK) == 0) + min_count++; + kmemleak_alloc_recursive(p[i], s->object_size, min_count, s->flags, flags); kmsan_slab_alloc(s, p[i], flags); }