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 DB119C001DF for ; Thu, 3 Aug 2023 10:35:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 53498280231; Thu, 3 Aug 2023 06:35:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E37F28022C; Thu, 3 Aug 2023 06:35:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3AAC3280231; Thu, 3 Aug 2023 06:35:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 29C0428022C for ; Thu, 3 Aug 2023 06:35:02 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E4A9FC1133 for ; Thu, 3 Aug 2023 10:35:01 +0000 (UTC) X-FDA: 81082435602.10.06B011D Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf29.hostedemail.com (Postfix) with ESMTP id C5096120006 for ; Thu, 3 Aug 2023 10:34:59 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=WHS9GyBr; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=+PeNjKME; dmarc=none; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691058900; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cYn5KTL6hoclU8R8tOQwMLLVXag1TZw3PWIRsarQ/JU=; b=W2/6ZywNUEMVt4bM2Xjp2WQTy5xGiIx1yI93pUzYtMHT1YN8pXbnh6SRzrKFofXvQM/aw6 DAD7AY3Alaji3IRPmdvVFqPmn82digcRm2qZVp+i13ZuMRlKxCbxcK8/9t09CStxvKDJYJ iqPWPyAOt/E5AIeJk5LGEAYNfoL/NhI= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=WHS9GyBr; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=+PeNjKME; dmarc=none; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691058900; a=rsa-sha256; cv=none; b=HYKSy0EyrX8BXa5BirpTYpVAJgoISexiAUgFsVvokQO5OvF/Ya6ejIz0O3JaYlkwx3VzM7 8eJauhXltHejWcUp6dMwLCSL2AU4//A9Gbs5DfJ/NESQqh+DIPuJqbUT11oVPgb2c18cB5 SxaA+yj3vMpJ8NVVg9q6fWXYbzifDAw= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 2C07B1F853; Thu, 3 Aug 2023 10:34:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1691058898; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cYn5KTL6hoclU8R8tOQwMLLVXag1TZw3PWIRsarQ/JU=; b=WHS9GyBrNm1Q32Q6akgqrEDRLlMuziSOm0sS4ZqVqfoCCLRBcGOGliKsEUOpvB8pdK8gaq 2irAU7N+SJj+EQGj6IFxUk8oyYdSCHAp3WE4ozKfWaqRiJhmEFb0sisnHahQllSvMz8hS/ ZdPh43f2o/87KkA0OZKU7GTqq9RVN3k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1691058898; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cYn5KTL6hoclU8R8tOQwMLLVXag1TZw3PWIRsarQ/JU=; b=+PeNjKME0A1mlH6xUdfp4hc1szcFjxSYfCFO3FRSxlnXJDNvqAFJA1qwv0GDK20ivobkvD my5WiFPlCRqr8LCg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C24FD134B0; Thu, 3 Aug 2023 10:34:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id BDi+LtGCy2RrFgAAMHmgww (envelope-from ); Thu, 03 Aug 2023 10:34:57 +0000 Message-ID: <8a08b7aa-ce1f-4b3d-abb5-cf3191474725@suse.cz> Date: Thu, 3 Aug 2023 12:34:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.1 Subject: Re: [PATCH v5 3/3] mm: Dump the memory of slab object in kmem_dump_obj() Content-Language: en-US To: thunder.leizhen@huaweicloud.com, Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, "Paul E . McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , rcu@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Zhen Lei References: <20230803101754.1149-1-thunder.leizhen@huaweicloud.com> <20230803101754.1149-4-thunder.leizhen@huaweicloud.com> From: Vlastimil Babka In-Reply-To: <20230803101754.1149-4-thunder.leizhen@huaweicloud.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C5096120006 X-Stat-Signature: mt4f5w9pqjwxr819c838akdhocubc6p6 X-Rspam-User: X-HE-Tag: 1691058899-554721 X-HE-Meta: U2FsdGVkX1+NqtXHbmyuU3k5/T+jhpaE1+Rs61iFfEl/CSW1HrZZGSA8ddUFGD1lxsIBuV5tdNQfEjTgSntGmJpp6d5066Ub6xRrxh6vibgFI+u0xOSMn7lVsz+Gihpvi1t2iHTeXWMMUcaKT9jA7Pn2r9KCwIRkYGT7RWYcFFRYG9qVb40pEmPRIQiAGKy5j43N0pQpOZ6WAA1m+PgTA5W1iP/Ovfo2dQ+JPTurUbH3W+erXHRGNUVrNcBY8ABtIlZ7ePnZmDQdG6y4RKdapdmc6O+tD2EmeSY0zUVKpmV6KLnzm+o6B50OK1tNulB5snJ2z2wj+TPgqM+ptLcu4hmOCFP+3HmWGmnefBssgDLK/k0gzMsJDzBRW4wugxQt0hNCqZJQME8ey/+1EsTZ4TIdl6dLHu5bSFgR3SKt59n1pogheJGJwp25ynm3WKBiUHgZkZYN7LduQZkLijzFcyDt/mnyJ2zHEd/uaX8b1How4WmhgU2X9+LTJB7wwyWslG54FN1xdymcQO1On6OfV3ETWpwA7LT6JzxO3GLsDX1qFndCkXDyWzEHxt4sjWme62TemrY4OBUuGsrF5XyB3aBRNtNjG/VUe4TY6Blwpnj4jJig0Qv1+VX2LtzCg6pAw2r6E57Hj78Dp5dwK25Dry6TiNwMv4VLZ/u9BMFErtYZCv6aHA3LOpPpl9ekzea6rxWTmpHwAs1BvT4e0nSI3GZnQqRxaMSX8WiyXfFYXWZnPuIX410rehOMVQ0bbUF+H0rUWcz8mURy9Xtqsnn770BnPaS1aNwdr7pdfLG7v7TOLh/XOjcYRgfG2YsonzeTFI5iJi2T2pCCgwIZ5BebGTnhPKLQ1DvEERegOnUp1lNV6EQBoRoWmSd1+HBkJrGLKEz2mgOMRCvY40+ZA36XVqx79HDW/W1ODQB1PxaUxU7UHJqyfAXQdx24CRX1Ig3A//d9d1A01PcHXKm03UJ jfKPXccN 4897+SunrCAdTGgsHVNlTPWMZEpRVhN0hQzZ6IydD3v8+T4AUQzqRyCMOVQv0hdZw2xRHI+hm/8FhT2nus9o7xMK3L5uAtnmrV9K4eK4bw+tJhAUma0txQ2+0Snje/BibUIvAeI5hxmnwm+Wu51P6qM8TLGVAELWPG29AcQJsu0+5CeylQc4On1/iahXt0ZtBgCNWHrjf/lTrsn3jYfGLh8wPUXO9OakXoOQ39ucxqNkqPpgma8aynpZjVDp7F1c0bTHvreneIPv15NmrGPHJ7RfBk/qdZO4//iFinw9TGsoBvQxqNrFm1n+IJSz2w4gumbBpOaWbhz0N4WeARtoCIp+Yi8XNP1sfnV4UdkyKEIMGRYiaq4rOooad8UCaWNHh4aPqlKL223gbkXE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 8/3/23 12:17, thunder.leizhen@huaweicloud.com wrote: > From: Zhen Lei > > The contents of the slab object may contain some magic words and other > useful information that may be helpful in locating problems such as > memory corruption and use-after-free. > > To avoid print flooding, dump up to "16 * sizeof(int) = 64" bytes > centered on argument 'ojbect'. > > For example: > slab kmalloc-64 start ffff4043802d8b40 pointer offset 24 size 64 > [8b40]: 12345678 00000000 8092d000 ffff8000 > [8b50]: 00101000 00000000 8199ee00 ffff4043 > [8b60]: 00000000 00000000 00000000 00000100 > [8b70]: 00000000 9abcdef0 a8744de4 ffffc7fe > > Signed-off-by: Zhen Lei > --- > mm/slab_common.c | 30 +++++++++++++++++++++++++++--- > 1 file changed, 27 insertions(+), 3 deletions(-) > > diff --git a/mm/slab_common.c b/mm/slab_common.c > index ee6ed6dd7ba9fa5..0232de9a3b29cf5 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -553,7 +553,7 @@ static void kmem_obj_info(struct kmem_obj_info *kpp, void *object, struct slab * > bool kmem_dump_obj(void *object) > { > char *cp = IS_ENABLED(CONFIG_MMU) ? "" : "/vmalloc"; > - int i; > + int i, object_size = 0; > struct slab *slab; > unsigned long ptroffset; > struct kmem_obj_info kp = { }; > @@ -580,12 +580,36 @@ bool kmem_dump_obj(void *object) > ptroffset = ((char *)object - (char *)kp.kp_objp) - kp.kp_data_offset; > pr_cont(" pointer offset %lu", ptroffset); > } > - if (kp.kp_slab_cache && kp.kp_slab_cache->object_size) > - pr_cont(" size %u", kp.kp_slab_cache->object_size); > + if (kp.kp_slab_cache && kp.kp_slab_cache->object_size) { > + object_size = kp.kp_slab_cache->object_size; > + pr_cont(" size %u", object_size); > + } > if (kp.kp_ret) > pr_cont(" allocated at %pS\n", kp.kp_ret); > else > pr_cont("\n"); > + > + /* Dump a small piece of memory centered on 'object' */ > + if (kp.kp_objp && object_size) { > + int *p = object, n = 16; > + > + p += n / 2; > + if ((void *)p > kp.kp_objp + object_size) > + p = kp.kp_objp + object_size; > + > + p -= n; > + if ((void *)p < kp.kp_objp) > + p = kp.kp_objp; > + > + n = min_t(int, object_size / sizeof(int), n); > + for (i = 0; i < n; i++, p++) { > + if (i % 4 == 0) > + pr_info("[%04lx]:", 0xffff & (unsigned long)p); > + pr_cont(" %08x", *p); > + } > + pr_cont("\n"); There's a print_hex_dump() for this, see how it's used from e.g. __dump_page(). > + } > + > for (i = 0; i < ARRAY_SIZE(kp.kp_stack); i++) { > if (!kp.kp_stack[i]) > break;