From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1728C3DA7F for ; Mon, 5 Aug 2024 03:35:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF93F6B007B; Sun, 4 Aug 2024 23:35:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B82D16B0082; Sun, 4 Aug 2024 23:35:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A22276B0085; Sun, 4 Aug 2024 23:35:42 -0400 (EDT) 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 83FF56B007B for ; Sun, 4 Aug 2024 23:35:42 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id A32D41A1E7A for ; Mon, 5 Aug 2024 03:35:41 +0000 (UTC) X-FDA: 82416777282.16.9C51A07 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf21.hostedemail.com (Postfix) with ESMTP id CDB671C000B for ; Mon, 5 Aug 2024 03:35:39 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=e0q3J1pf; spf=pass (imf21.hostedemail.com: domain of qiwuchen55@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=qiwuchen55@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722828878; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0gLtqxxJQQL5ckpGj5N/lb9KPTO94eZK4kflR9Rxq9g=; b=SUFKPtQ84Zu6t+6tPRlGHW7oMgW9ImlYVbF7Cq7u9QNkPSvaxbNHI//qp538iGuM/8CCEc QTQ5Tdr83THMa4brdy6wJqO5sLFTXdRbZpzX5/Bf8jgn47FdTSyangfsENZ8HzUQrYRVRv OgV1Y71sYszTHnU10XkftZVWTth5EZE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722828878; a=rsa-sha256; cv=none; b=Rbt161Nrb2Q/I9697shAtoSI4y0C2jyJ1/DZSkLSEV9Z7US2PpmukYlPQaM4AT3R3tdjnY mBrbFLHvhDE79NEUXdztscIcCuVKVlQQOFmdXzjWEfsFoz0XBiSwwTt1JgcPlOBYQftiE4 jePZohox8KwbyIfM0MmUzsOxCkgFv10= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=e0q3J1pf; spf=pass (imf21.hostedemail.com: domain of qiwuchen55@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=qiwuchen55@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1fd640a6454so75003505ad.3 for ; Sun, 04 Aug 2024 20:35:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722828938; x=1723433738; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0gLtqxxJQQL5ckpGj5N/lb9KPTO94eZK4kflR9Rxq9g=; b=e0q3J1pfZjfIteS5MXmD6MRcq2Wb0dPCFdiBmL/YMiRQdi2sUFOjSNUdZDKfw2BSr0 4j/mEM4m8d9YoBTApObD4smvTwe/nQXgNLpFioYQ5/Y5ym7/K5VOkm5rFTAYV4lJJXxF gGfVcFemEZaM6xaXwqN1U3Pp6IorPfZuPstsjl3Ru/Yangn0UteiFAJul13Tx0M9edlJ 64PvQ0eyI6JQUcCDIYcDMIVJwQiL7gkv8quFpQPnyiBS4I6xHftbRfiOfvZRQw36m3Eg h+wxDq51COo49YidePCg3bCMDzQae9x2yrG/rP6E+goni4vCjU/OPu8kPHxJMm95/gAQ niQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722828938; x=1723433738; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0gLtqxxJQQL5ckpGj5N/lb9KPTO94eZK4kflR9Rxq9g=; b=QTeAYt2JfsEhb+K7jeLGKhZFL85IuB2bVwtaj/ibJ3i5JteOMKO1kqrx1wjb1MOXLm bW8Qas77zNEFIFlT8KLfdlUcjzYBPcxBq0Rld8OxRHH5rDWPCNhCv7asMEQFaPxW5CmF TvEwEPWBl4/w05mtwQNhvx/C3zMX3mYk0J4GiaX/x11cU6XEVA6vqI5hwxtOA+nTLD6u elWF78rhBwlMA4T2rHrRXOhI//noAnKKLB4LUbsWsRqB6S37XfLXm5sBEluE73y+Mdnh NCrR2gwWgddmEzXvqi0lWp2VR6HOnkahFAjnSsh1awhz7aW4yuIVP4CPEgsm7+AWcxQq mF6Q== X-Forwarded-Encrypted: i=1; AJvYcCWjfprjRCUMLjw7XOT9dvAXE7HVGmPlEuYW8XDqmxUXNKfPdjoapnunpsfYcRL+61Ln7upyq4cYcDklaC58qDZcGXg= X-Gm-Message-State: AOJu0YyXLcuiML3IBsUor8atoik/AEeSgy65U0YzJocPFkfoVZIk/2m0 IM9R2qGC/+jvQrxDpzILmwimsMl0vF1IutdBEoom+dv71ByCuEOsdBHsKmU2 X-Google-Smtp-Source: AGHT+IE4IW9Vq8oamJ6Bp+TAOsIA5fcp1tFbCFmkFBe4GT65usMNocmwUubLF5E1os3/odHTJLLx3g== X-Received: by 2002:a17:902:f54b:b0:1fb:5d9e:22ab with SMTP id d9443c01a7336-1ff572b960bmr96655475ad.22.1722828938387; Sun, 04 Aug 2024 20:35:38 -0700 (PDT) Received: from localhost ([107.155.12.245]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff58f19ca6sm57003345ad.49.2024.08.04.20.35.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Aug 2024 20:35:38 -0700 (PDT) Date: Mon, 5 Aug 2024 11:35:34 +0800 From: chenqiwu To: Marco Elver Cc: glider@google.com, dvyukov@google.com, akpm@linux-foundation.org, kasan-dev@googlegroups.com, linux-mm@kvack.org Subject: Re: [PATCH] mm: kfence: print the age time for alloacted objectes to trace memleak Message-ID: <20240805033534.GA15091@rlk> References: <20240803133608.2124-1-chenqiwu@xiaomi.com> <20240804034607.GA11291@rlk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: CDB671C000B X-Stat-Signature: 4c7ftk8odxnjxsmye1tux8pr8634urya X-HE-Tag: 1722828939-301207 X-HE-Meta: U2FsdGVkX1+wsAvl24PR4YJavxTyuJ7g1ZK+nm+0UDZD+5/uaIqxqWdNSEVrYe0fi+7p4QZD9oVxdk8Po+uB7mGR4RXlvfzGvnqz2tvaLQAM9K0W+9HSjjM/oW/i9PuhGK5Ht6TwKsEBKTn7uXs3xY8VADVYsLq9JxbeThourasU5iK2rFb0eUQkjLJg1KafLStmS0jKCOh9iXZ6Djq72QHm2h3RRkmuKmruq1tCEbHjEPDwl7rwR3NMmi74ihKcyZzSpw31fCYfTq8c3lg1ElJNR0TO9zl/PgsTv/eu4kVCcCtXCWYXioHynX/nLLyzCYC4/KmO1uqPoBS9CvrAH9c+hbsngoTNNvqxEGMN8jsUW56/S5XZkNcOI6Kw9r5i5IjD/T5tXPruFABAkIfNxwCKvHfJni3qeApwommxfMtC8vgf8u+lqjP7t6VlWbINTTDeiht3erJxRNxgcS/+O7nRnlrMgpXc8PXaZ6mrbbGZZc47u4Zy+sIRjo4piEONZ7LGJQWnxjur+a2xeA7/s9VCet941HuvwdO47HCwTfMevvYc8bAMo62R26ThYxnxaCBzPzwunOsy9CWhnbNlOYcj1mVDh+9DhC+c9fWwvx2XswzE4QX7z6ckRNo4Tihdmlm+Q6HISuCxJiXpcYEey8buNlc2x1iSk/hQKfECGMcjYS1HwJmUZieUi2OthrptDJk7LBkIAXpauT3GU5mtcuewZkVO+jCM5QHK+xf5jW11Y8b7YI7hGrrNM9RIlMJtFphgOJmomXCflpSaCTTnV1zATdYZP2+eHgdR6yDEicIr4RR01W3zbb+Tlar6kJRPj/CbBzXmFhUgbyg/mS7OM6bCzMGW325cZsn03yAnm3f/cVepKWh6vN/RyKe/KQ3WaVS1oZXDePmolmLKIenzfj6GTNXsBz0RIo2QbMazzdT2kOqAWpBM0enlAsW/G11RR6X3FTw3WPbdJ30Zv3K X8bd1O/n QSecQGGhvCgtsHb41mdoWSPVOB7YKC7lnvzTPsy3GJcDKmixBT8JMguUi2cm6Z8a4jVNsT83guEcGmlN210DpwQqMptVOgmOrgRIMyIouP3WzZJPpIapwbsNwZLNAZVb5DNravpf2hCQR3pga0EXyTChX6scJpiwJ5vSe/1dgpCRVlQ++B/app3/6ftvcBlPdiQK/cXzpC4B3diWEYf7BOJlX9fis8wMaAQDcd9X0wQVcsiu/dthXiM8o3bYlX2b4atHhO22SeJAmMDWGsSdPCKMZ7iZKoC9cscx2L2Q7aP6OrvSrW+zKsffJBw5ZrVnaLx9QcFqKTHbKOF/E4rFK5iyGT8AulhEoc9JUoBr/JUZr/tc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.038234, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sun, Aug 04, 2024 at 10:37:43AM +0200, Marco Elver wrote: > > Well, what I'm saying, having this info also for FREED objects on the > free stack can be useful in some debugging scenarios when you get a > use-after-free, and you want to know the elapsed time since the free > happened. I have done this calculation manually before, which is why I > suggested it. Maybe it's not useful for you for finding leaks, but > that's just one usecase. > Agreed with your concern scenarios. How about the following change with additonal object state info? + u64 interval_nsec = local_clock() - meta->alloc_track.ts_nsec; + unsigned long rem_interval_nsec = do_div(interval_nsec, NSEC_PER_SEC); /* Timestamp matches printk timestamp format. */ - seq_con_printf(seq, "%s by task %d on cpu %d at %lu.%06lus:\n", + seq_con_printf(seq, "%s by task %d on cpu %d at %lu.%06lus (%lu.%06lus ago) for %s object:\n", show_alloc ? "allocated" : "freed", track->pid, - track->cpu, (unsigned long)ts_sec, rem_nsec / 1000); + track->cpu, (unsigned long)ts_sec, rem_nsec / 1000, + (unsigned long)interval_nsec, rem_interval_nsec / 1000, + meta->state == KFENCE_OBJECT_ALLOCATED? "allocated" : "freed"); In this way, we can find leaks by grep "allocated object" and inspect the elapsed time of use-after-free by grep "freed object". Thanks Qiwu