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=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 527AAC433DF for ; Thu, 9 Jul 2020 20:21:35 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1197720720 for ; Thu, 9 Jul 2020 20:21:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="cTGy724p" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1197720720 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 5C7F86B0008; Thu, 9 Jul 2020 16:21:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 551178D0002; Thu, 9 Jul 2020 16:21:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 32F746B000C; Thu, 9 Jul 2020 16:21:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0248.hostedemail.com [216.40.44.248]) by kanga.kvack.org (Postfix) with ESMTP id 16DED6B0008 for ; Thu, 9 Jul 2020 16:21:29 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id CEAC9824805A for ; Thu, 9 Jul 2020 20:21:28 +0000 (UTC) X-FDA: 77019657456.21.gate68_070aa8626ec8 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin21.hostedemail.com (Postfix) with ESMTP id A4159180442C0 for ; Thu, 9 Jul 2020 20:21:28 +0000 (UTC) X-HE-Tag: gate68_070aa8626ec8 X-Filterd-Recvd-Size: 4695 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Thu, 9 Jul 2020 20:21:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=ZkXTtNpA63HETBTcy8I3F0OWwWRe+1bbE8cocqWtUAY=; b=cTGy724pcTtX9cNepP+irSGhKN a5vCcvxEwZ3k38fzXCDA4dfAVf2fqKe/eUWM+UoJrKfQsNEoPHzG2bwXJko/8HOAYonbV19jxIzJU MXkw2q2+S5dfIzkxWUAL2u936BPkW9S4jEiIiLWbmtu/POO8vxgDqI3hkLD76xDdSJX5fUKdvs9RP CVL1dAvIUxwAcPru+77F+EjFgw9zmMf3mGL+45uL0pevI5BiSENn0R47Mg3XcNYYQSo+utbVtVHxn 0Rn0NWwLzNQ6hbte/dwA/UoommbzWHlB9W72tvVjzvgeP42hQ+P0vVL3v1jyobjogAXu+/PTsDTju Lmuocu5A==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jtd2q-0001uJ-S8; Thu, 09 Jul 2020 20:21:24 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , Andrew Morton , Vlastimil Babka , John Hubbard , "Kirill A. Shutemov" , William Kucharski , Mike Rapoport Subject: [PATCH v2 4/6] mm: Switch dump_page to get_kernel_nofault Date: Thu, 9 Jul 2020 21:21:15 +0100 Message-Id: <20200709202117.7216-5-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200709202117.7216-1-willy@infradead.org> References: <20200709202117.7216-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: A4159180442C0 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam05 Content-Transfer-Encoding: quoted-printable 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 is simpler to use than copy_from_kernel_nofault(). Also make some of the related error messages less verbose. Signed-off-by: Matthew Wilcox (Oracle) --- mm/debug.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/mm/debug.c b/mm/debug.c index d2ffc926d8f5..fb64ff7454b6 100644 --- a/mm/debug.c +++ b/mm/debug.c @@ -109,54 +109,50 @@ void __dump_page(struct page *page, const char *rea= son) else if (PageAnon(page)) type =3D "anon "; else if (mapping) { - const struct inode *host; + struct inode *host; const struct address_space_operations *a_ops; - const struct hlist_node *dentry_first; - const struct dentry *dentry_ptr; + struct hlist_node *dentry_first; + struct dentry *dentry_ptr; struct dentry dentry; =20 /* * mapping can be invalid pointer and we don't want to crash * accessing it, so probe everything depending on it carefully */ - if (copy_from_kernel_nofault(&host, &mapping->host, - sizeof(struct inode *)) || - copy_from_kernel_nofault(&a_ops, &mapping->a_ops, - sizeof(struct address_space_operations *))) { - pr_warn("failed to read mapping->host or a_ops, mapping not a valid k= ernel address?\n"); + if (get_kernel_nofault(host, &mapping->host) || + get_kernel_nofault(a_ops, &mapping->a_ops)) { + pr_warn("failed to read mapping contents, not a valid kernel address?= \n"); goto out_mapping; } =20 if (!host) { - pr_warn("mapping->a_ops:%ps\n", a_ops); + pr_warn("aops:%ps\n", a_ops); goto out_mapping; } =20 - if (copy_from_kernel_nofault(&dentry_first, - &host->i_dentry.first, sizeof(struct hlist_node *))) { - pr_warn("mapping->a_ops:%ps with invalid mapping->host inode address = %px\n", - a_ops, host); + if (get_kernel_nofault(dentry_first, &host->i_dentry.first)) { + pr_warn("aops:%ps with invalid host inode %px\n", + a_ops, host); goto out_mapping; } =20 if (!dentry_first) { - pr_warn("mapping->a_ops:%ps\n", a_ops); + pr_warn("aops:%ps\n", a_ops); goto out_mapping; } =20 dentry_ptr =3D container_of(dentry_first, struct dentry, d_u.d_alias); - if (copy_from_kernel_nofault(&dentry, dentry_ptr, - sizeof(struct dentry))) { - pr_warn("mapping->aops:%ps with invalid mapping->host->i_dentry.first= %px\n", - a_ops, dentry_ptr); + if (get_kernel_nofault(dentry, dentry_ptr)) { + pr_warn("aops:%ps with invalid dentry %px\n", a_ops, + dentry_ptr); } else { /* * if dentry is corrupted, the %pd handler may still * crash, but it's unlikely that we reach here with a * corrupted struct page */ - pr_warn("mapping->aops:%ps dentry name:\"%pd\"\n", - a_ops, &dentry); + pr_warn("aops:%ps dentry name:\"%pd\"\n", a_ops, + &dentry); } } out_mapping: --=20 2.27.0