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 62F46FA3740 for ; Thu, 27 Oct 2022 18:08:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E353D6B0071; Thu, 27 Oct 2022 14:08:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DE56F6B0073; Thu, 27 Oct 2022 14:08:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C5ED18E0001; Thu, 27 Oct 2022 14:08:02 -0400 (EDT) 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 B5CB66B0071 for ; Thu, 27 Oct 2022 14:08:02 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5106C120256 for ; Thu, 27 Oct 2022 18:08:02 +0000 (UTC) X-FDA: 80067513204.16.0722D93 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf30.hostedemail.com (Postfix) with ESMTP id C54E180035 for ; Thu, 27 Oct 2022 18:08:00 +0000 (UTC) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29RHmxDh019860; Thu, 27 Oct 2022 18:07:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : in-reply-to : references : date : message-id : content-type : mime-version; s=corp-2022-7-12; bh=6Skr9NWbHZGL3GoFJXOaYVVSCCzkCfj8moCq0xpoVes=; b=nG0dlU0pDsZrIeZDQ93fCEH3JMhg0kEfcRGh+QSliD/odlgCMBXGBbMmTu75U0SzNelK ERr13lADzHIgxAtQ+ryo1ikgyflFTclphN62tqycx9nFx0ujvhjA8UzKTYFcIuuk1wCp p+J/FibJPPOcxg60NapW+zHlH0+su7TIcRy2mYZvW4bZ/17W9pDeeebqWyAbSir/Nrig pRRgPxjrtm+u8eOUQtO5hXr+rgWgprtHdKnrd2hwEog9zrb39DSFfLqBH+Mbt8qVgdMl T4hbWIK+vSE/rL6Dy4bQ7vcAcIYOs343/CwJtmt9gQaCkVGBTdS1OxceSwCIg0SUX80o sA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3kfax7tsg6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 27 Oct 2022 18:07:47 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 29RHg6a6012264; Thu, 27 Oct 2022 18:07:47 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kfagr8nb9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 27 Oct 2022 18:07:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T7w8FkBdxioQ/RX/OzrXNxT/PxEVxG+zYu1xTCNtFcAQfsf1fQf6pDkHsZZFGbrt4pjqVhFvqXE7nO1aSfJKmI1JjfX7asUzLNAUYdnWb7ARCm6FTf3JrXRquc62u69idMl1D51OzuceApf0Sz7ghvI9A6M7ZPOrF/oQHdLup2rEKyROxHB69R28Pp9ILzg7LjJQKvsw2QOKbstulsKrc3mnR5NcHeLig+KZo7kDNuxrVvjlLnyyyEYeXZvvNVzpMpT9WdhexuLE9hc/5au8wZ5aTKPre8Ygzgv1d24O6dF37FHKpAtdcRdSn+wqTwLYsHIrMjaiHsNw11s+ZeXmSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6Skr9NWbHZGL3GoFJXOaYVVSCCzkCfj8moCq0xpoVes=; b=RyTzqajFraCPY8disYKXroWTMwxdd0krpHeYE+qQHNpdAJPnyhyrYcs1jS4LrRuJsReHHB4s2aAZ8NNq9aFLYAHrNbToLKAxHF7rU/gwTroItv2+dB6mBFdAxZ5RllcgYuUC814DdVcTOQSJ3X9bQWnqgJV1rpc/vZZgHzrj3t1HVvITKLhjRlNsyqpB2gDGlhL4l3SSCIoFsYRzuLXe40qEfvZlUhqJTdjPsHvZCUPurFxW/flRNJRlIIMKDpFG8WUH2uH36YnNGKLT2l+HgzuZHAUZwxSw1bSSLkxawKwIyFiy6NFK0KnIfaT3bgos5TJPclSTSdfVIlWD1LKOiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Skr9NWbHZGL3GoFJXOaYVVSCCzkCfj8moCq0xpoVes=; b=u83lqDRsfPzQMB363duKq/OD8mwQLRrCiW2euY7eBG23UKx1LLxt5rwNmvxn8MThx9tS8EloMKYa2xT2YFFRoHdYKgqOIjjPzibojnpFR6ZDWezl3ChbccaX9B/gMSIyifQc3StJnJuhGHKlkEvMdpalhWx1XND+nYh2dQpAR28= Received: from CH2PR10MB4166.namprd10.prod.outlook.com (2603:10b6:610:78::20) by BLAPR10MB4964.namprd10.prod.outlook.com (2603:10b6:208:30c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.14; Thu, 27 Oct 2022 18:07:45 +0000 Received: from CH2PR10MB4166.namprd10.prod.outlook.com ([fe80::36b6:3767:c15f:3b24]) by CH2PR10MB4166.namprd10.prod.outlook.com ([fe80::36b6:3767:c15f:3b24%9]) with mapi id 15.20.5769.015; Thu, 27 Oct 2022 18:07:45 +0000 From: Stephen Brennan To: Baoquan He Cc: Andrew Morton , linux-mm@kvack.org, Uladzislau Rezki , Christoph Hellwig , Matthew Wilcox Subject: Re: /proc/kcore reads 0's for vmap_block In-Reply-To: References: <87ilk6gos2.fsf@oracle.com> Date: Thu, 27 Oct 2022 11:07:36 -0700 Message-ID: <87fsf9gmxj.fsf@oracle.com> Content-Type: text/plain X-ClientProxiedBy: DM6PR02CA0108.namprd02.prod.outlook.com (2603:10b6:5:1f4::49) To CH2PR10MB4166.namprd10.prod.outlook.com (2603:10b6:610:78::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR10MB4166:EE_|BLAPR10MB4964:EE_ X-MS-Office365-Filtering-Correlation-Id: 24b733d9-6e4c-4ed8-06ec-08dab84625ea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wJrlDF3c2ugIijn+wgu+1Ldt9naUaxnyRbKLPpPKKA6u+QOrkNLkkU++zmenisHYe1OEiISZyvMAh/k9Mo2c+umHfkdO6+ndIlowaoqchKKsjAtTEP+2I0NhDs0j8CClckDV2Y/NSsSquwkk5RGN7sK2QyT0VbS9YKn1vkvemgXZ0FKl33uXEYAHNRN8y8HarobxHiM9Zl4QV69wnBJtg8c/cqRH7lnGtJCUpmt25aClglVNG+8Fj2YZi7JO+pBMrEJOFlv6V2gQwFBtTRgJ65chuLX7DK1ZN/5oNGn5hydH5i643T51EI4ZJieW2R6f13VyqSPVGq+PFYlf+WgUjUlUIOK9VIpI5QgjHZcx98Ue/8Y9z099jA/5MqNos/wmqzqarp5EpPru0Kk8q/J00UdW9HEd5oCvesMw5Mtvu2411k63NEDotkcYZOYSl+whZmx5inVqx7XQux+DH7Al+hWnC3nZcXCTTpUnKGsFyaNCBWK40gPvGpnFfadMlJ9yMTaZtYh+C4s8KOV7b7qfoCTIGwuxWkW0CuS0p64XRB7gseH0PzTAp/bBFX5aVfjKg3Qdx5KDa9Yq9FZGkZp37VUrglN+0xo+sC58/xD6MExwz8ma5NQ0p6uVuZwx+lVYLn+sjYDtnktnesdw4Z+44uBbC4LxpCdTffuJrjgLN61raZaB7YLp86BJtKl1pzDY2dVG+xPaJUOWpfc8aC0NKIBQTUCd3lIQPsbzTiyTnRHKvDLw6ihijLUmATnC7LB6MNKD51/8+2XCngI0xTczRQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4166.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(39860400002)(136003)(451199015)(6666004)(316002)(6916009)(54906003)(8936002)(5660300002)(2616005)(66946007)(186003)(2906002)(66556008)(6506007)(36756003)(53546011)(8676002)(4326008)(6512007)(86362001)(26005)(83380400001)(66476007)(41300700001)(478600001)(38100700002)(66899015)(6486002)(966005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?styx3jHx3OutbCOaiGuigotG/EsDbH0qa2jWpnmJ5htj4w1JhkInquhWn1bg?= =?us-ascii?Q?JWri8i9TElpSEjGQgtZ1nWia3VHsDlho8Gvv7Qqs/DNWo9PTeFGnCJUZCLgK?= =?us-ascii?Q?evF0hUaA5P7Fx84oyoqVK9sXtSYvnxt9JDAYNZuA7mxIabOJBgndTX8SggBK?= =?us-ascii?Q?olCQeEla/r/hHeWCDNh9V6T4vWoeqddVcN5b8GB8wy0jysqTCF0NX3MqQSTg?= =?us-ascii?Q?gXbCEvltmibCCYqdtrsPWcHaxfu9Fc0oaDUdbTSgYE6CNESZo5TDMxXKinF8?= =?us-ascii?Q?QZg9Pu663KLuXgj6izYZkXwIbTvOmN9R15lqgsPRBX6cHP7XweEh81NIXbha?= =?us-ascii?Q?tKAWS/l5KtElFn7SEuvLj36EmCWTjnwtQsQtriNw6Md1918IEAX4x3oePO50?= =?us-ascii?Q?K4xhM3fUJhsGYIhGpIXUxeiMJO300pTTI7idFM6nHKWfPi1A/z4z8lmNTtQK?= =?us-ascii?Q?4NnMECAdXup9CewQeYvGbXWyIHa8M36UclFGGUzxGzo/0OUDngylM0Oqc1L+?= =?us-ascii?Q?NxdvgK84k+0wvXX+ph3qzT0UTuxwkoTGzSUcuzoDE726Cm126qCrqN/wkftf?= =?us-ascii?Q?AGrZLWdDbj726Ct3P1vJjM/q0DZcoOBcZfJO0V1bceXC5TEqSDqQUedDNUOn?= =?us-ascii?Q?jFEozMVOrYcOzs9TqWrDoSsF+H7/Px0HZnqClkStlMu89KkTJ4MozVsVgZ+6?= =?us-ascii?Q?wWvL9PV0amRYQRm0gWS8DB/3sbxhwrVMlg4ng1QBj42uLN8uPkn5M5fCkCep?= =?us-ascii?Q?BpAilMuSd+m9UEv7xpVPJkIPBWaoIWrx0at5ZaEIryHV5WksbnhuF5MqOhHI?= =?us-ascii?Q?SiLZ9BzLoMvG+Y8RHKl0tbgoQHgZPAArtexx3Y3mewpKaTyKtNzj25iTVbdQ?= =?us-ascii?Q?Bqa+tVoCd7ubgbCMafgmpEiWU5br+hcJklSNet23JQnMfZoRKR8Q3dg9xrSr?= =?us-ascii?Q?WeTRwR+OXH1crcdxiZ0N1btHueE3na53Eoo1BtO9K/TMg8X7jYKeBwfJwuye?= =?us-ascii?Q?aQay9GvOfOQ/OBEK7Pm9U8u8usYti2JV4AayUDwzrKUNP4pXGpbGa7rUWqHk?= =?us-ascii?Q?L9USSOMm8ygZCTYuItd8Hd40YOE6vMrjXx/OQWyrpMfZJw5kj9Uotg3UJ5m9?= =?us-ascii?Q?PPk/wZd80rgHc6Ebv74JvghBwksOTrQaWAeqsNwIlUCf4U/w96HlhUejKnT/?= =?us-ascii?Q?R9jtFvjsKKQKddPUCMWdMxw+3X7gXlN1+A/JgEAj9UcB6GIJDf94u2IjIP3N?= =?us-ascii?Q?WJU+cW2QD0QsDCn3ZYHckTlEsoN2TuAxGs1qpjv1hbpCxWewHkY+pa6M7dvq?= =?us-ascii?Q?jLxsAXrRPNKL6fZFYjkajBxluyk44woLC5u+OzmE+o4I99/HeAbVh3h55GEk?= =?us-ascii?Q?XnAePv6L8ZVjG1M4GJiJiWkQMXYfdAlbV4ZTxo9epBfGnAUK2ApVX+WjCpHh?= =?us-ascii?Q?dbRyZNUbnla/nz/20PxVdr03fxO7T9zgAifSgATSNdWRcyP04J3pY0s//XAX?= =?us-ascii?Q?YBuYHU+0CrKvEWeiaDMNFDd1UyPsLRoHZ0KCyj8muVJ0mTrVAiU2C6b/oiH3?= =?us-ascii?Q?rKXXogsv0lxb1eVsPTAbnL1jPY8w86SJaJJOZ24KC6ftMv7DBLBtFpM06331?= =?us-ascii?Q?7g=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24b733d9-6e4c-4ed8-06ec-08dab84625ea X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4166.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2022 18:07:45.1068 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Gur3vtJmgoyuiJR+qXCkEhHTIVsxLfwGMZgz7OKB6d39nDRghLzEl3Gt2lgkz+H8ZLIa95pMs7w3LGpFlVv4YfIvBEDnHMoJIJL2ZX+j+hQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4964 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-27_07,2022-10-27_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 phishscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2210270102 X-Proofpoint-GUID: aNylxqJOBBZgAQoBZF_6rseJSu7Vkbyu X-Proofpoint-ORIG-GUID: aNylxqJOBBZgAQoBZF_6rseJSu7Vkbyu ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1666894080; a=rsa-sha256; cv=pass; b=vbJoVZ2nEu8CKXXzjf3giSKkiR5vxJaIfbxYKwC6dAZcR/uuw1fDYJvuuEp4O4n4/eshC1 74bPabQvMdfDVClPlVGJP/NRmzc2Wwrd0ECA4w+DKDfP9naCni4S0yYZNpVtKJXfjz1cVi vRsOqyco711b6Ej154kp+TWOS+d373Q= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=nG0dlU0p; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=u83lqDRs; spf=pass (imf30.hostedemail.com: domain of stephen.s.brennan@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=stephen.s.brennan@oracle.com; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666894080; 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=6Skr9NWbHZGL3GoFJXOaYVVSCCzkCfj8moCq0xpoVes=; b=GN/gsI4meHnKdnsx6BqjAO+iPzN6I83Jma7bwglxz1+26+3QcqdG88irFBzriTs+I9/sPB RatxFjiTzI8aPHvAyPNaVtLYdNBMEt65KNYcIIkEvAd40o9pi+fTfgmFB811oKLIA/QUOy iJO28mxkktkY9312rn3zZMGuDL3oxG8= Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2022-7-12 header.b=nG0dlU0p; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=u83lqDRs; spf=pass (imf30.hostedemail.com: domain of stephen.s.brennan@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=stephen.s.brennan@oracle.com; dmarc=pass (policy=none) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: C54E180035 X-Stat-Signature: rjtmbmoim19jaqrbyyiz7g96qpdiqtd8 X-Rspam-User: X-HE-Tag: 1666894080-447343 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: Hi Baoquan, Thanks for taking a look and coming up with a patch! (responses inline) Baoquan He writes: > On 10/26/22 at 04:15pm, Stephen Brennan wrote: >> Hi all, >> >> The /proc/kcore interface uses vread() to read memory addresses which >> are in the vmalloc region, and it seems that vread() doesn't support >> vmap_areas which are associated with a vmap_block. As far as I can tell, >> those have vmap_area.vm == NULL, and get skipped during vread()'s >> iteration. So the end result is that the read simply returns 0's. > > Hmm, with my understanding, it should be vm_map_ram() which is called > without a struct vm_struct associated, and it's the only interface do > to so. vmap_block is the optimization way based on percpu to reduce vmap > lock race. > >> >> This impacts live debuggers like gdb and drgn, which is how I stumbled >> upon it[1]. It looks like crash avoids the issue by doing a page table >> walk and reading the physical address. >> >> I'm wondering if there's any rationale for this omission from vread(): >> is it a simple oversight, or was it omitted due to the difficulty? Is >> it possible for /proc/kcore to simply take the page faults when it reads >> unmapped memory and handle them? (I'm sure that's already discussed or >> is obviously infeasible for some reason beyond me.) > > From git history, the vmlist iterating was taken in vread() at the > first place. Later, in below commit, when people changed to iterate > vmap_area_list instead, they just inherited the old code logic. I guess > that's why vmap with NULL ->vm is skipped. > > commit e81ce85f960c ("mm, vmalloc: iterate vmap_area_list, instead of vmlist in vread/vwrite()") > >> >> Ideally, I'm just looking for a way forward that allows the debugger to >> *work* as expected, meaning either that /proc/kcore always reads the >> correct data, or that the debugger can know ahead of time that it will >> need to do some processing (like a page table walk) first. > > I think we can adjust vread() to allow those vmap_area with NULL ->vm > being read out? Made a draft patch at below, please feel free to have a > test. Not sure if there's any risk. I tested this out and it fully resolved the problem! I didn't encounter any issues with the debuggers using /proc/kcore. My test kernel module is here: https://github.com/brenns10/kernel_stuff/blob/master/drgn_vmalloc_test/drgn_vmalloc_test.c I was able to read the full contents of the mapped area correctly with drgn thanks to this patch. > > From 9f1b786730f3ee0a8d5b48a94dbefa674102d7b9 Mon Sep 17 00:00:00 2001 > From: Baoquan He > Date: Thu, 27 Oct 2022 16:20:26 +0800 > Subject: [PATCH] mm/vmalloc.c: allow to read out vm_map_ram() areas in vread() > Content-type: text/plain > > Currently, vread can read out vmalloc areas who is associated with > a vm_struct. While this doesn't work for areas created by vm_map_ram() > interface because it doesn't allocate a vm_struct. Then in vread(), > these areas will be skipped. > > Pages are passed into vm_map_ram() and mapped onto frea vmap area, > it should be safe to read them out. Change code to allow to read > out these vm_map_ram() areas in vread(). I see, we don't even need to worry about page faults because vm_map_ram() is guaranteed to have mapped them. That does make things easier :) > > Signed-off-by: Baoquan He Reviewed-by: Stephen Brennan (or Tested-by if you prefer) > --- > mm/vmalloc.c | 15 +++++++-------- > 1 file changed, 7 insertions(+), 8 deletions(-) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index ccaa461998f3..f899ab784671 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -3526,7 +3526,7 @@ long vread(char *buf, char *addr, unsigned long count) > struct vm_struct *vm; > char *vaddr, *buf_start = buf; > unsigned long buflen = count; > - unsigned long n; > + unsigned long n, size; > > addr = kasan_reset_tag(addr); > > @@ -3547,12 +3547,11 @@ long vread(char *buf, char *addr, unsigned long count) > if (!count) > break; > > - if (!va->vm) > - continue; > - > vm = va->vm; > - vaddr = (char *) vm->addr; > - if (addr >= vaddr + get_vm_area_size(vm)) > + vaddr = (char *) va->va_start; > + size = vm ? get_vm_area_size(vm) : va_size(va); > + > + if (addr >= vaddr + size) > continue; > while (addr < vaddr) { > if (count == 0) > @@ -3562,10 +3561,10 @@ long vread(char *buf, char *addr, unsigned long count) > addr++; > count--; > } > - n = vaddr + get_vm_area_size(vm) - addr; > + n = vaddr + size - addr; > if (n > count) > n = count; > - if (!(vm->flags & VM_IOREMAP)) > + if (!vm || !(vm->flags & VM_IOREMAP)) > aligned_vread(buf, addr, n); > else /* IOREMAP area is treated as memory hole */ > memset(buf, 0, n); > -- > 2.34.1