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 X-Spam-Level: X-Spam-Status: No, score=-2.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 31268C35254 for ; Mon, 10 Feb 2020 19:50:26 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id DB6F520715 for ; Mon, 10 Feb 2020 19:50:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="sPvX7AOE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB6F520715 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6038D6B0144; Mon, 10 Feb 2020 14:50:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5B6206B015F; Mon, 10 Feb 2020 14:50:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C9B26B0160; Mon, 10 Feb 2020 14:50:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0178.hostedemail.com [216.40.44.178]) by kanga.kvack.org (Postfix) with ESMTP id 341CC6B0144 for ; Mon, 10 Feb 2020 14:50:25 -0500 (EST) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id BBDD21F1F for ; Mon, 10 Feb 2020 19:50:24 +0000 (UTC) X-FDA: 76475259168.17.duck32_209a22c17a152 X-HE-Tag: duck32_209a22c17a152 X-Filterd-Recvd-Size: 3992 Received: from hqnvemgate24.nvidia.com (hqnvemgate24.nvidia.com [216.228.121.143]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Mon, 10 Feb 2020 19:50:23 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 10 Feb 2020 11:49:19 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 10 Feb 2020 11:50:22 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 10 Feb 2020 11:50:22 -0800 Received: from [10.110.48.28] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 10 Feb 2020 19:50:22 +0000 Subject: Re: [PATCH] mm: Improve dump_page() for compound pages To: "Kirill A. Shutemov" , Matthew Wilcox CC: , "Kirill A . Shutemov" References: <20200208044415.30012-1-willy@infradead.org> <20200210124225.56cjwblfa7njgp5o@box> From: John Hubbard X-Nvconfidentiality: public Message-ID: <92d69132-6664-3fc3-4743-11109df0b079@nvidia.com> Date: Mon, 10 Feb 2020 11:50:21 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 MIME-Version: 1.0 In-Reply-To: <20200210124225.56cjwblfa7njgp5o@box> X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1581364159; bh=j5uf0rjUaI+aypbOe0L9mqr0wcAalRj0+psi1pEKVGI=; h=X-PGP-Universal:Subject:To:CC:References:From:X-Nvconfidentiality: Message-ID:Date:User-Agent:MIME-Version:In-Reply-To: X-Originating-IP:X-ClientProxiedBy:Content-Type:Content-Language: Content-Transfer-Encoding; b=sPvX7AOEDM8brgiWNLp6f3mWSez5kgDNP7qjtKjfCcK92DgrjoM4aLiqxuVwZ8tSC FgZ1caW3Cv5LO0RB9CcObhqM9z0vUUyFEpmtrYdkxFTDHc5NckzxUmWPVULJM6lstU APb+8Ee6ISO1QsCUYgOlNV2GSjqi0gi7R8bTImKKnhxSWKB+QEHbVFg8p1VDEWdovZ EUEN9km5D72wObBm2KtzfR6nyvGlY57W6dzE+LJ4qDg7mc8jqKigjCgtILhwXWGBZ7 ejdiikPVX0K+pXdWwXFtXMvHSMur0CYNZap+hJ8hKa/F+CSET+zkR2LtO4kEo9AqLj hVugJsLqOXZeg== 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 2/10/20 4:42 AM, Kirill A. Shutemov wrote: ... >> @@ -66,25 +68,32 @@ void __dump_page(struct page *page, const char *reason) >> goto hex_only; >> } >> >> - mapping = page_mapping(page); >> + if (page < head || (page >= head + MAX_ORDER_NR_PAGES)) { >> + /* Corrupt page, cannot call page_mapping */ >> + mapping = page->mapping; >> + head = page; >> + compound = false; >> + } else { >> + mapping = page_mapping(page); >> + } >> >> /* >> * Avoid VM_BUG_ON() in page_mapcount(). >> * page->_mapcount space in struct page is used by sl[aou]b pages to >> * encode own info. >> */ >> - mapcount = PageSlab(page) ? 0 : page_mapcount(page); >> + mapcount = PageSlab(head) ? 0 : page_mapcount(head); > > This is wrong. We want to see mapcount for the tail page, not head. > I see what you mean: page_mapcount(page) sums up both the page's and the head page's mapcount in some cases. The function doesn't seem to work correctly unless it is fed the tail page. Here, even though the "head" variable's meaning is overloaded (=="head page, unless the tail page was corrupted, in which case, tail page"), it would still be accurate to change that line back to the original line, so that it once again reads: mapcount = PageSlab(page) ? 0 : page_mapcount(page); Matthew? (Also, I see that __page_mapcount is EXPORT-ed, which is odd: nothing uses it other than page_mapcount. Micro-housecleaning time maybe...) thanks, -- John Hubbard NVIDIA