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 2E329CD128A for ; Tue, 9 Apr 2024 20:06:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A8C16B009A; Tue, 9 Apr 2024 16:06:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 77F546B009B; Tue, 9 Apr 2024 16:06:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 620D46B009C; Tue, 9 Apr 2024 16:06:27 -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 44A506B009A for ; Tue, 9 Apr 2024 16:06:27 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E12F81604FF for ; Tue, 9 Apr 2024 20:06:26 +0000 (UTC) X-FDA: 81991075572.05.9CC3285 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2098.outbound.protection.outlook.com [40.107.101.98]) by imf11.hostedemail.com (Postfix) with ESMTP id 2E65940012 for ; Tue, 9 Apr 2024 20:06:22 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ND4t0vU0; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf11.hostedemail.com: domain of ziy@nvidia.com designates 40.107.101.98 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1712693183; a=rsa-sha256; cv=pass; b=6bfVl7VVvoEOEZdqwUkR6SUiRdx1SY25KnGRjYdn6c7dYzwGc/bst3MdNv9Az4McMCym/y wtYWEx2AT3cmtQCbaJog0ZAXNeAMGfEToonzlJWAwSueiESwjmbwyPKMSmCVKrTFAc45Oa yhVcAXRgoiDCZudnrE+04p2LNp3CxKE= ARC-Authentication-Results: i=2; imf11.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=ND4t0vU0; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf11.hostedemail.com: domain of ziy@nvidia.com designates 40.107.101.98 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712693183; 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=UOcr5SRPV6K0pEdtYTw5BgNx9AcWWP/Qjzs8xDjfxKU=; b=AjXztDyPKigdkg70xXnyvCypbIPZwxGW2rv4ykCUSnMRwjhJxCiCZLWd1QaGQ1nrcPX9Aa lFsDGdlxtUwDfARJq67uj4vg9vfg5rnhmXEbNxv9tlGQNG8Kw7RCcTbBtg5x/ATrionZNb nuMpo9Gw40IuU6yblAQooP5v/OK9oJY= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n6eM1SXMvA79NWtimb3XHG1cnA2QNhFJWKReCnmtaBUurPa0UMn6ApkfHafGk0eNeV6z7QQQTJM1j81Qn/61o2FkL/VQPHFTlFpokJaCB9SSPJcC+qloB87BgJJ4LJNkDeg4crqrtLb5r11hMdqNPUoIAi512/nAyMqMiLHXOwN4KgbMqsOKtYD9EjnWwg747VP7HzV+2iWGMxKGuWfijhKlCZLqlkpv3cDa2aFAR6oUrXH/EqDUvMLcSwKMOPj0SSiLtBJ9tAwAzHdKoLZUR84rnPTC8ZXCNS3PLzoC7VnHpZuFZ1ytxnOJ07rHziwYXzgdBVHbtAbTPmn2MfFZtQ== 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=UOcr5SRPV6K0pEdtYTw5BgNx9AcWWP/Qjzs8xDjfxKU=; b=I3schSCOPF33y1RwAt9j9g+LMRk9Ldd/ELmDdgY0rNQJzs08p/XuGh9Uawtx33huj3C7EQ8Mmfbxx2dAMR0uo1nJ9c5nDLy9YjIdP2IIS6ew6vMIWee/gj1ee3U8oNkVdmWd7PeAIFJOtfTK2lLN37sDzmZJDxJbhpzHGZNzFuwgN7/+9GXPXe5lVZ39GZEvZLH3e5RR98yQtZQTs6XmW8Q7rl627AAVdg0xsL2J56KDjf6PO3pF+dE2jjRU/3+KJYJCOf/dKulo7W1zviBCl2pZlHtXLBGShI3kndy1nf4Q3KE4o5Ok0Bjszvtu/QfJqRfZuW6S9kODnCLu93maBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UOcr5SRPV6K0pEdtYTw5BgNx9AcWWP/Qjzs8xDjfxKU=; b=ND4t0vU0bxaqQUDnb2/qyafTOz7umuVYC2OWqGMDMPFyzUfS7+CXC4xe75fqAvqTIPzxVpyKxnFNtuEQwgoeRw16dEpevHFHiR6fMgOUQnS/ZUiNn6dWJZYr0HsKA2tBUjL3pDhFrfXUur1ph4OuAG9uK6CJtst87o4/jDTnJqphHXvvqZdWVCUY88Tcf76f/6FHa0PU8EJIZ33DPdqVZ1ajkPXmO7t/XpAVA4Pfz5uDCZT9LBghzdsIsLFgseA3kBuW8DA4O8ODvBUJ3mNOXMcXjG1boDeMsRSnAd/4jqfisPg+35a/epMeXzWSyz1Rq/9UKlOBaR/ElqCc2+e8uA== Received: from DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) by SJ2PR12MB8832.namprd12.prod.outlook.com (2603:10b6:a03:4d0::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.54; Tue, 9 Apr 2024 20:06:18 +0000 Received: from DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::dc5c:2cf1:d5f5:9753]) by DS7PR12MB5744.namprd12.prod.outlook.com ([fe80::dc5c:2cf1:d5f5:9753%6]) with mapi id 15.20.7409.053; Tue, 9 Apr 2024 20:06:18 +0000 From: Zi Yan To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, cgroups@vger.kernel.org, linux-sh@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton , Matthew Wilcox , Peter Xu , Ryan Roberts , Yin Fengwei , Yang Shi , Jonathan Corbet , Hugh Dickins , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , Chris Zankel , Max Filippov , Muchun Song , Miaohe Lin , Naoya Horiguchi , Richard Chang Subject: Re: [PATCH v1 01/18] mm: allow for detecting underflows with page_mapcount() again Date: Tue, 09 Apr 2024 16:06:15 -0400 X-Mailer: MailMate (1.14r6028) Message-ID: <918813FA-4AC4-4B36-81F4-0066C6334175@nvidia.com> In-Reply-To: <20240409192301.907377-2-david@redhat.com> References: <20240409192301.907377-1-david@redhat.com> <20240409192301.907377-2-david@redhat.com> Content-Type: multipart/signed; boundary="=_MailMate_BFD76C58-D229-401C-8255-4BC7BD4A02AA_="; micalg=pgp-sha512; protocol="application/pgp-signature" X-ClientProxiedBy: MN2PR05CA0042.namprd05.prod.outlook.com (2603:10b6:208:236::11) To DS7PR12MB5744.namprd12.prod.outlook.com (2603:10b6:8:73::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5744:EE_|SJ2PR12MB8832:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xVtBSDjv0JFb9MxXxwDEle+dlls6ABllwVvcRWXOJyPC8ZMr6BHUPTBGpmBBZpwNsCV4XcMPbV+ORyPfGm7wlD/RAnH750PONAIYFczTjZD/i8FAVY85VHGkkr7n4mBSIY+dLjnoRzKVWTWEe8qED1iHdBeVG8qm6v1eN7IgWUoLsLWXwRJQ/Uwn2YqXMg1M5SKJgHNYlH6T//N20kt+okBc4GCWHRUVeqQTAD5oSTqOHHpiu77B+3L2UWGmJWpTUkyXORlgNJKxO+uikkK6G1rVxSOmzOF9gQOZAghSlX5Ogl6nE/FgDxDEzklcDpI5C1edohTrvgiONUbdjn6ynpnB02/k3op/gcPa+nCzdKbew70IYTmtqiUNCDCBMtB5FME/3AoQm+pWLFH6PhLmydjPFPJXQNM+dQLENiLARY+awAPqpASRdOX+1EbS7EZUZ3lrC9vL7FgAaPv4FeFWqxGrC/9sfKfVOIjAr66EFjRmTlF08lRGa5wnykEqM7TOMtSgYTXcYqyWBsTbI5Zt/sQ2jkekohigznn6vPU/cQPnUzPsZjv0TBa3hSjTmShiXD3IrJC/oVmE8kggyHqfl6gyjCXXwoKELRSZgqswFdZCG840I/0NgnMymImrQzMNAzqmIaX6kPP2Qfw/+y9FLGb91EyBDcguBIyRAdGHMBE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5744.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(376005)(1800799015)(7416005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?svI1XBq91M9w07BCyisqXNFKPtCardxgbcdUqP9yv20dju8GCHhvDSWVHvO8?= =?us-ascii?Q?1BnsRgjtLxi4/L0NQ+Oarh4ryZ8IKBUnOIxGcAjJUEmkuIIaC18e9jLg+LTd?= =?us-ascii?Q?70cZJltDrkJFD8JaCmBil2QJ9GoAUj2hDhShP2jxPWLLRC2WbFWDASIyyAaI?= =?us-ascii?Q?ggP+iKfSIvdzyWUoNVaRSuxWLOECKcuIImtpQShtReRLUFrbCJVkdgZ38Jlt?= =?us-ascii?Q?nBS3iZRtHHqBSFbAn9HqP2r48pglSt0PdA96EVJKjwx2CZ2m8/gr3qYg3JjO?= =?us-ascii?Q?QuBlClMIyAJjrBL5E5RYpNjxwnwcql8tnHARVp/vPaqBmKHzq5a/eQt0dOjL?= =?us-ascii?Q?cXjBQbY3VpkeWjUZvR8a+HTPPl8SjtXbDiX4mX00JmwfNnZD8P6CrYMoizSl?= =?us-ascii?Q?Z7Wkonx3VGkaaOcZYNPKU8yYEb59qEjR4r2BBXWEpEER1TaLJIkPdPkHyMz6?= =?us-ascii?Q?939MZXrz1fy/2L6KjCe6Zl7f+5FI6oncG/DUdOSgZNlEQo52isxDwlvs6Lxb?= =?us-ascii?Q?hAoXJmtjxuFB/wAwh5OSC2sWahHpM9sNBB74xosp8iXH6i/CpkvlUa3beaek?= =?us-ascii?Q?fDvp70LsfrufnYM8WA9owme3oRavoISb1bZbvWEMraR0F+4qyG/+tQAtW407?= =?us-ascii?Q?eIUoADSo+AVlsVqfBrFjvjeEouYQUv1JPEpZEwvJShvlvIJbwsRLbP01wg7Q?= =?us-ascii?Q?VXG3sBDwzXH8PbV6yPpfKPzkAJXxjFeSgnRit095Uf3yH20z1abacqr7BsMx?= =?us-ascii?Q?IJCPpAQPQQhbWgQw5gbsNYQJLGeidEWBIJ81oKUCIrVM3qdO9h9dXzOABil/?= =?us-ascii?Q?blNZ47dAdnEeYIgWgocoJ3RZZzQP+6Wa/Yfh4OAYqJJFLRKhjMgvsfzgLm6x?= =?us-ascii?Q?aBKTkE+92TLA+5mGkQ5SLMMC+YaSrp5ufASYPS7ScL4klwkSwd5d3kfpHyVo?= =?us-ascii?Q?ha6hb3eYM1V3TL5GFJEndeJzoXWTfPQzejQS1AysP4XnTMhWoHtcvkpTHeEH?= =?us-ascii?Q?nXeUPMVLN1zWHokEspGe7HUzwujOfCRzhiuSm5d69ruGn6AZqmxfjSjt1Mp5?= =?us-ascii?Q?XtbbMo5VBzoSOuCia+eoohT2g5/tH4CMzQEFE04aySOiptmPAFSd3VZXPdbU?= =?us-ascii?Q?ZhD1zzeGxeY7/oRCaYTxzL0srgDUTGkFF9p/1b0PtL5r9mGLHVk3N3oKfXm3?= =?us-ascii?Q?N7js1YDTujCCq9btPXUKWyF+XHxnIBBSH9mWZ93dD0sxy3QFjIdZ7msZqrnZ?= =?us-ascii?Q?m5wQlJoPm1PbSzG93fYDdVBBKC/ucVkIKHW8RjiR2DpD42E+DdcHBrJLoK38?= =?us-ascii?Q?BizbzWm5fNa721uP9K4fek3Ud66X99CkvVdfrFSvWVeD0w7hCLwGdVOKHx+U?= =?us-ascii?Q?voaaPRwHxW9Il46EIvP/Tl/F7hoiLnxM1aD70cs1fxnQaig3hoLM2fE99D6r?= =?us-ascii?Q?MI1lBcesgSqarSzZ34pfQL1MZ2Hjk0ROwYmY2x61yMJkqVWMuVyOaPFrInDC?= =?us-ascii?Q?23efQ/vgG5Revjy1HucORV2SikYl4/fnPMvnk+qgpV3ZPhSwrt502V0Oz4Km?= =?us-ascii?Q?IOokuqvMGnT87HSgp1RZxK1wdbxCtd4mDjNErYaW?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b00554b-9613-4d1d-62e1-08dc58d084e4 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5744.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2024 20:06:18.6852 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ENJsijIGN1tzrX5wWirWIXlXa8oNF7O2vVEEljLhzi5CS+Ri1SfpjMKDEBFo38mR X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8832 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2E65940012 X-Stat-Signature: 1ewdpwexegyetizanrkdbjb3ert5zcn7 X-HE-Tag: 1712693182-293136 X-HE-Meta: U2FsdGVkX1/CZgH15vTIFogSj81RUTIFdZE1liefKmhaRwV4LQH/BEdCQpOU4uYEv080iQqqLBYiinDpLs2GU/f+aIGuSg4Z0N1fWiQfN4GiuLQhVwc8tqzbEFUAMjOE3rsFp/8V9yqLRAXVDeLT4FFpMbJjSTIsiPOYEXgKLRsP3HX6PjTCC746wgZ/ts2STE/qIyUtIsrc4N59QLVLc0DncUwf0fYkdnYf1+f/BrTxoLXDUrKKsuc75NEirvBa6e2IOnMcrU144QK53UhWyCdYbW1EpZgbt4CgTeKU926pAcN2lHzaXQ4AddF11wZ9g7WHpPJirp1xKpvwvfB7OWBADvLnJXFpC5sVHFkao7mvEU7j78/k4k3M2iPDWhL/GrADFOaYnrvAG2rCMrp7eru/FTZeXR642+grMeNV8qjDy6D7zsNVVdaPHTczyLd7InryQLYbfIcF2DqcUcdu9S4Q+ZclV2HKWFcR6sWUtHUT14qwRB6yB6pm2vdvOnVg4kLlcHuASW5i1lY3kSDrjES+cOengCiJZZP2xgFRmIAyKX49MFQa0NaGLlGLQSb2X9UfDCLGIvy19efDeojEfrYYPOKu1dGLdCMnMfctfrhiE9imUQao2Am5u1bKXCRsS5Nk78iixwBT9h09Ghm6S4qGaFKSDQ3ZY1QjsnCAQ3gwzYotZEJa7gE9L9TIOm9m86uhJ9M6ZcrtRwA9B47g5LJ3SZOWQcyX3JVf1hwovK8Qn31YEfmgugcf8kRqOM/8Vn8jxhmuPxg99+KXDW7Y7obsHG6Wcc99oi1rCBMH0lYiT3pNcmOcv7lzkyUbpEGCRTXK2FvUlkUyJG9jVzxYKIRDEY/QcGzAcftc96ujpoUcNLcpBlWqkgHhK+LknTTgQQCIO9lWHfPGzGnWgJnAsxvFOWmvkiOwDmmiLJGBR8ABJPLsQnA3agLIRwonO0qhWNwSD407lcKph5O7gyR ZSgseEUG ijeJNK8XwyqDKqEzaTAhGe3PNP20eEykoWhlYcdFD0FAFQdWC7nvJOq76cPnw3pgrfJpl3+fAhNYlbAPC2L41Hj/Q2G9QsJjA5mMDkQuDh1cxMNStWmExEs05c1D4C4SRaX/Ws+/DwChKP6bgSc3TlriCD2fqi8n1B/dk8PfBkNcunDRSrlLEiJl18gmJxdYhUy4rAlpwltVYpiSROnoA7yIq/70otBd2T1z98wTRWRSeZv/7duIQacfrc6RQU1JebdrBr+T2uJLBhCCz7AFNBcuuI01izz37Ah+NvmL12ceWEzsWwErYGKp4uw7jz2uo4UNs3eKhN+5cqQmCM2DxF/+OsaE6NDa9KGB+u0zl8ekpn8LflYSVGcqXm9M7JNCnasoahC715p7gJ+Y= 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: List-Subscribe: List-Unsubscribe: --=_MailMate_BFD76C58-D229-401C-8255-4BC7BD4A02AA_= Content-Type: text/plain On 9 Apr 2024, at 15:22, David Hildenbrand wrote: > Commit 53277bcf126d ("mm: support page_mapcount() on page_has_type() > pages") made it impossible to detect mapcount underflows by treating > any negative raw mapcount value as a mapcount of 0. > > We perform such underflow checks in zap_present_folio_ptes() and > zap_huge_pmd(), which would currently no longer trigger. > > Let's check against PAGE_MAPCOUNT_RESERVE instead by using > page_type_has_type(), like page_has_type() would, so we can still catch > some underflows. > > Fixes: 53277bcf126d ("mm: support page_mapcount() on page_has_type() pages") > Signed-off-by: David Hildenbrand > --- > include/linux/mm.h | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index ef34cf54c14f..0fb8a40f82dd 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1229,11 +1229,10 @@ static inline void page_mapcount_reset(struct page *page) > */ > static inline int page_mapcount(struct page *page) > { > - int mapcount = atomic_read(&page->_mapcount) + 1; > + int mapcount = atomic_read(&page->_mapcount); > > /* Handle page_has_type() pages */ > - if (mapcount < 0) > - mapcount = 0; > + mapcount = page_type_has_type(mapcount) ? 0 : mapcount + 1; > if (unlikely(PageCompound(page))) > mapcount += folio_entire_mapcount(page_folio(page)); LGTM. This could be picked up separately. Reviewed-by: Zi Yan -- Best Regards, Yan, Zi --=_MailMate_BFD76C58-D229-401C-8255-4BC7BD4A02AA_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEE6rR4j8RuQ2XmaZol4n+egRQHKFQFAmYVn7gPHHppeUBudmlk aWEuY29tAAoJEOJ/noEUByhU468P/iMv7TtTxVFI2SJVhKEK/KA+QLDE1xG0g3C/ cR/1hWl4EFowLLGO8vpYM8cD6cnp5ah89fvEVHpTKBhyPRs72biZRLTsnFyHUDtw w7yqJccqNGWIXXj2cW/STK7XWfY9hOGNHT3f4P51jeooUbX8deU1LyG/yKT9OWkm gkv99P90KemBzqEgkdurM5oBJHZfl1IMy4GomJSgXkvBPRL8RCOt+mLezEIBYy+s XkrCOLqPc/arAUleD2v6C5nEcu7RnO6KxTYUQ8tvqafJp+Ao1C/H3hcY+JZ3rDGT WCC7zaTt3llPThFZgfWST2Qd8gTcDH7SldwIzB9jshdR/WEKDq/c6UmmGV8MORSO dF94MUAT1qH5dn9CxUcrcY2MT8x4eWu/Dn9ERUwUHf8y3ZeLlbg1nwHOqMVCrmrp 1F8Y1Rsi/6AL0Z7iHUT9lU6+OvdKJvvYaSLMfxSkLE11UFd+AXNtaanLNhGJJd1t fEwG5WtJYRaaSNrAk3bJrWF6wxcE0rFJ7M08QHxDXfqaTYMclXiJSV7gmbDI0Ev8 Oh4p+bis/I8YxRt2JabThl5lzFsYcdVLc3XOhRvZ/D+RexMHkSOed734GrtX/YVR xVOzO5JQUTvl2fEHDgOw2YoYtJ/v/pyDcK0uQtGevvqv4CjErBcrTwJkZan8z7Re RZAouX9w =dfHW -----END PGP SIGNATURE----- --=_MailMate_BFD76C58-D229-401C-8255-4BC7BD4A02AA_=--