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 B4689C64ED6 for ; Fri, 24 Feb 2023 02:51:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E3A56B0072; Thu, 23 Feb 2023 21:51:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 293D96B0073; Thu, 23 Feb 2023 21:51:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10E0C6B0074; Thu, 23 Feb 2023 21:51:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id F1D506B0072 for ; Thu, 23 Feb 2023 21:51:31 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BD1CCABA72 for ; Fri, 24 Feb 2023 02:51:31 +0000 (UTC) X-FDA: 80500659582.29.7EE72F3 Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01on2067.outbound.protection.outlook.com [40.107.113.67]) by imf30.hostedemail.com (Postfix) with ESMTP id 5CA9880011 for ; Fri, 24 Feb 2023 02:51:27 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=nec.com header.s=selector1 header.b=A9PZRU62; spf=pass (imf30.hostedemail.com: domain of naoya.horiguchi@nec.com designates 40.107.113.67 as permitted sender) smtp.mailfrom=naoya.horiguchi@nec.com; dmarc=pass (policy=quarantine) header.from=nec.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1677207088; a=rsa-sha256; cv=pass; b=yXFmfNN4rSf0EytJ0eLgY33n0o+VvHUo2ki6sCpCLR7i8oov1Ob2HfyPgZUd6HVSrzt34e Jytlz9/l6s2v1FN+n3Afft83GlNJiY7QY5YPwTPWI2tviyjwcJd4xZD8dR6qelnVh87G4N gPGzFL/KkMLOt6dI+Arp35SBEfNbCDg= ARC-Authentication-Results: i=2; imf30.hostedemail.com; dkim=pass header.d=nec.com header.s=selector1 header.b=A9PZRU62; spf=pass (imf30.hostedemail.com: domain of naoya.horiguchi@nec.com designates 40.107.113.67 as permitted sender) smtp.mailfrom=naoya.horiguchi@nec.com; dmarc=pass (policy=quarantine) header.from=nec.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=1677207088; 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=lMl+en8KDimhkHnFvi2+1OS/HaexSu7N3gL8+j3GE+I=; b=CN4o9LoV+CrhTj0aw3/IEfvnj82tGoqz5TOlL8sNheRXLb9GKFVIW79mHw2nYZe+Z9PqSD hkYKHymvfxx2dHyixhSVkzL6kMQEtE4d1x/F43O3R131qjDANL4P4cVWLGHYP2bkbn1+VI 8e2YTQJDwZuX8EOh9IkDNtV5+tfB7Aw= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X+/6KJRbNDzzkP1h22x+ajlPP/WTTmCDhEp8PXAIduRVbaPsT0liG5W8IwASzZ+Nsiaelp/KIogAPAd4z6ywnTku8hpbjMZ7/DUmvsCikzLvnjyowK6SNUrptEpmDOI26Bp3lS+9dFadRpHvKiSOEkgygnZ6T6XVk1qeqjLlORpGNlkETtt5rBHE4EFWxxxJVOQM0RqBT+/te7HYZ5vIh56VFLL8hmjJClOwHXpmMvD20I0y/Z1LMScutap/Ns61IqXTMlK7lYtE5dVCxlBKCd0OvVqvEGORJzQlyRtWHMg7vI3QxKRNP1XtDY5mC91XRP4rTDYzyoVTM3QSpi+ZpA== 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=lMl+en8KDimhkHnFvi2+1OS/HaexSu7N3gL8+j3GE+I=; b=gMSeTKgpjwCIA77TXlsm0bs32HVd4R2oJKfY4zAKkwprf3KpHGRAuYcOxJjs137OWCPkUVL66yqwrb6rVFJzcdGb7pDY9uEpotlzC6a8/Dhv6WO1bajrpp45by5X1lu9JIfcScDqTWTcG6qiRbOMB0kVyuhybFA/mlomoV9qWiWQW00pP1Twq06pJiwQhrVneNlwNHszRPOcX2p2bLlNOFH6t2wIRExQmvbH4NefcQ08960LDsG6SxMrFji6HoOhe/TOqmttNWWQHN84Ag7Oc+qKguPd3Eo7ZShplzamIKJZ+aaCSj0+t5qOxFOu9gz66YMHPdvbZMJz0ByjBG8Fgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nec.com; dmarc=pass action=none header.from=nec.com; dkim=pass header.d=nec.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nec.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lMl+en8KDimhkHnFvi2+1OS/HaexSu7N3gL8+j3GE+I=; b=A9PZRU62kBQuICNIK5oMZ534RtOyJTC55mAllCdrZlRuvwBPlJ+3jCclsHgIuOaqi4DOoVBjj1coPBQZHzFrN6GXNVBeoRkAfO99K2JTYX7Ija0l9XCkwAc3umDF7i9eekcVZ4jUqxOG9/CEiPa0SPWVpdiLhraZI4eIfM4j/nY= Received: from TYWPR01MB8591.jpnprd01.prod.outlook.com (2603:1096:400:13c::10) by TYYPR01MB7856.jpnprd01.prod.outlook.com (2603:1096:400:113::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.24; Fri, 24 Feb 2023 02:51:21 +0000 Received: from TYWPR01MB8591.jpnprd01.prod.outlook.com ([fe80::3924:5b48:7ad7:ab0]) by TYWPR01MB8591.jpnprd01.prod.outlook.com ([fe80::3924:5b48:7ad7:ab0%6]) with mapi id 15.20.6134.023; Fri, 24 Feb 2023 02:51:21 +0000 From: =?utf-8?B?SE9SSUdVQ0hJIE5BT1lBKOWggOWPo+OAgOebtOS5nyk=?= To: Yin Fengwei CC: Matthew Wilcox , "linux-mm@kvack.org" , "akpm@linux-foundation.org" , Sidhartha Kumar , Mike Kravetz , Jane Chu Subject: Re: [PATCH 1/5] rmap: move hugetlb try_to_unmap to dedicated function Thread-Topic: [PATCH 1/5] rmap: move hugetlb try_to_unmap to dedicated function Thread-Index: AQHZR6xGe1RDlwY1/kq4yjLrnTbhcK7dZmWA Date: Fri, 24 Feb 2023 02:51:21 +0000 Message-ID: <20230224025119.GA1911853@hori.linux.bs1.fc.nec.co.jp> References: <20230223083200.3149015-1-fengwei.yin@intel.com> <20230223083200.3149015-2-fengwei.yin@intel.com> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYWPR01MB8591:EE_|TYYPR01MB7856:EE_ x-ms-office365-filtering-correlation-id: 7b03491b-68c8-4645-cd3f-08db161202ea x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DF0DlzauZ+FABhr61bago3+Wm6n6q7bhljSdizTsT5zPeX+0YHB71DuhlDEbV5oNaXMbIHk7FhdKIS+MUyzB2SzziexB97/vf5j/oiBDyh6DMBC1vibgcdkq+GjklvFni4aDfx0kMuSU6HjB+zm+NqiF0vOrvaTKNNTHfXfGRlbFIGeRCkMrRYvat9SA/6KtUeav9BL+tCjpy+2ZBJlx6C4Rzf8DpgEP+Vbd6u8I15glr+Ah8T+YjRRnyhvTnqSqdE3l/ZGJDV0HlawZm5R+mHqkOGPumqAnkO0i1NCodvz+NNm47F0iSpEJq9YdpFtye0KqXHfL0BLIm1jKIazUjTqnpru03DTalCYc+Jj16F4YTHScmQ75vE5XYxuYeQ+Yi96Ou6NWaL9j7yeP36ANK/ZSr6i7dlAML0vwzcFdFhQ90NtwB4gdrVxdi6FK4kT9O90+aFSs2pKvDkPTOsdQhNNcayH/gF4nVAUSZDEuG1UnLsTSYvZSfKD+OYxDsJGnA/N2LtD46OWmLUrPkEgte3ZY5qlZranroUkInR6/KiJgomokHqsSqXPBDYA/LtTcqLCvSZ5IzGOfGXPzntAmVgHcgrnnxiIJuH5hzvFTlHPCgD8BDr0dFuW3Ad3xqXaF+Rn6l81+yRYgbvf9f1ZeLqGDrLexpS1fininNCOHcL1i0vWTKl3cG4BN8FqkQO/0i6hV0HTT5zGypeVMUHNzbQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYWPR01MB8591.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(376002)(366004)(39860400002)(396003)(346002)(136003)(451199018)(33656002)(85182001)(64756008)(71200400001)(82960400001)(6486002)(83380400001)(26005)(186003)(6506007)(6512007)(9686003)(1076003)(8936002)(41300700001)(38070700005)(86362001)(2906002)(5660300002)(54906003)(316002)(38100700002)(478600001)(122000001)(66946007)(8676002)(6916009)(66556008)(66476007)(66446008)(76116006)(4326008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SjlZZXRjdFBDbzBCbFVFMmtUSmxiSVdndGF3b29nTEZEVTNndXJSNHJremJt?= =?utf-8?B?Z1lvZ3lXanhobjlnUGtPZ3ZnWlpOZ1BrdnUyZ0VtQjNydUNkMUJ3dmd5Zlhr?= =?utf-8?B?ZEZQbEt4WnhaakJjUlRTajFJZC85Rlg3VEtNQ3V3SkgwMVluKzYrMkFzNlFv?= =?utf-8?B?VlIwT0pLODI4NlVNRjROQjZnSmM0enE1Tzlic0ZVUzlsa3hZbmlmYThqWnBn?= =?utf-8?B?Tm0rcHllQkZJNnhmbVZOYUdkQlZGVSs3ODBqUzZsdUlXTC8vaTIzaUJQMTZv?= =?utf-8?B?SGhvb1NjT2hiYXErNnc1SEcvcE94QzJkZkZBYWFOR053MFZtZzBYZ1VXdjJj?= =?utf-8?B?VFFtazdWWXpLUFBEMjBBeEQzSXl2RURxUzI3UzMxME9CNWFaSEJBdnpsTjlC?= =?utf-8?B?WXRWNHVTaXNtc3V2VFh6VG1qU3J3b0pVRk1pOEpZenFJTThIc051cEthVHEx?= =?utf-8?B?dUN2UGtWaUh2MnpQZTYwOGdQWGN6QXRpYTlnL1I2T1o4dithRDZPTDFMZEM2?= =?utf-8?B?YWQrdWg0czM3RzNJM2VlNFZQczh6ZUVrdUFSYnhrNittUEMrZ2N6bjBGZlVx?= =?utf-8?B?OXNURHY0dFRqRkpoZ1BQblJaem4zNUxVaUxQb0hjLzhWdW5zNFk4OGJhTU9J?= =?utf-8?B?VlFOZFkzcWdVRTdITVRPUUZLNGRYSENmOHdFMGpabVZiYUs2Tm93OGI0NkdT?= =?utf-8?B?R3U2aUtvQm1NSjMxUjVvVDJrQnZwV3d6N3BVTVFVTWdYc2hJakcvY0hZcENJ?= =?utf-8?B?WmhsMjVYQ0VxTWFBejdHcUlpZ2xOelhELzVBWmswVEZQNEh4MkNlN1dUVGNv?= =?utf-8?B?M3BIdjc1ZUFBN1RRME9PZ1h2ZVpTdGZtNEw2NjI3ODNRY0lpVmtucStSOVc2?= =?utf-8?B?VnNQaXJaSkZJQTJHTldBQm1QM0VpK3g2bktrK1dhQjU1RG9EQzVmNlo5bkR4?= =?utf-8?B?Um54NWMrZy9JNnhwdk1NeHByT3M4MEdkaDdhMU9qTExjR3NzeFU3aytySGQ4?= =?utf-8?B?QTQ1bmFUc0VoT2VoYVRHZzZzaUp1ZlNteXUyRzFaejZKZm9KL0FpSWRnQjRO?= =?utf-8?B?aFl4RmZUbC93NWY0VFBxejd6S3pFTy91NXc3VkNjWExBN3FQdHlWTkZmTFl2?= =?utf-8?B?WlM3bklldWFkV01qUFd4RHRna1gvSmhpTjd4Uk5Dc3ZNU0pLeitMREZKaFJ0?= =?utf-8?B?OVJVUHFTQUtzZG1MQ1p2QWlFWFhuV1NvUU0wY1JLN0tUdCtYZG9wV0xwcVh6?= =?utf-8?B?TW5KTlYybWZBbnowMFY4T2hvZFVSZllWNWhjNXk5NzUzaWpOcGhVWWRYTjNw?= =?utf-8?B?ZkRXWWJMZktLeDEycGRvSDBnNE9tN2VyL1Fub3ZOdGhkcGptY3JyYWJia0Nm?= =?utf-8?B?aUZueE9xNkZZdDM3ay9Lc0x0NjRWQU5kbDg5T2hURm85Tm9qS2NHNm00aWFB?= =?utf-8?B?SEJkMWhDbWIwa1dhd0habTN6ZlJWTGlqY25LUlZpZE5UaWFlQXRLcFQ4a0d6?= =?utf-8?B?R1dJY0VlbTIyWFppdXYvY1lPR3lqUW54Q3Zjb0Vsd2pzZm1aMmpscU9COEdh?= =?utf-8?B?emhmWlNFQ1JDMDl2cHM0NmNOd3hyaVJVYlptaXgrc3FxM2x3WlZDLzBQc2tQ?= =?utf-8?B?WHlObE5ORFlMT2o4OEVUNnVvTTJ4RkxHZDNsZUlKZis2STkrU0t5UkZHWEM0?= =?utf-8?B?aUw3ZVRFaFBnYXFPV3VsakY2RkVDTXZJeDBCeDdlWWxhZ0VCYkZuQnVOamZZ?= =?utf-8?B?b2V5UjZyaVpqTnZJN3kvalAwNTFOcHhrM2cydXNSMllObTBLK2lER2VEeHk4?= =?utf-8?B?WDJtaVV0WFVRbnZKK3NsV2htTm5EamoveTZMVWVGVDMwY2NWV1QzVEhhWENT?= =?utf-8?B?aStJZyt1T215aGo5Qmg2Y3lVeGdDb2VCNUk2TmRYZWNTNHRFNFJRczI0NWJ3?= =?utf-8?B?cHkxZ1V6ZVprd2ZFN1d4ekordGd5VlZhWjVCQVRka2g0c3JWam5jRUFoKzVZ?= =?utf-8?B?cmhiVC8vTVRlZGNvZlZzSnMzWExRV2VrTDRxOFBFVnVLSDlCYkxYSGRpZU1Z?= =?utf-8?B?TXU2ZXJBQ2srZUlRYWs2WkdHSG5LNUoyRVpqaXJQcEtoT3RFRjRKM25xY1V3?= =?utf-8?B?a0phS0FJR21HL1NUWHhPMW9zNkZDMmZrOXorQXVUbGp5Z1FydXN2NThkcGpl?= =?utf-8?B?cVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <61B5D957878E1C4E96D8EEEAD1E7A7ED@jpnprd01.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nec.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYWPR01MB8591.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b03491b-68c8-4645-cd3f-08db161202ea X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2023 02:51:21.6753 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: e67df547-9d0d-4f4d-9161-51c6ed1f7d11 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Bkk9CEsyMzYCuZCQBUYutjmEcccooE2c4kvTleXL3pFUJpNN0Uc5eo5cE55iNXamSeSHxQwVDve5iKrKe0dGFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB7856 X-Rspam-User: X-Rspamd-Queue-Id: 5CA9880011 X-Rspamd-Server: rspam01 X-Stat-Signature: 9nh6r4cqormz4c9cdw8q6jjiiqrh847t X-HE-Tag: 1677207087-809177 X-HE-Meta: U2FsdGVkX182ProR0Prmag2mE7k1g6TH0izRVN5sXiJvXTnf4FOdaRtg+FxjeqOttTalwIvtocaK5sqLzRPud72QLuFSNEwnsJTjGW3WkZ2GRWkFoEwtZSJdlZkSWxamRlvG9719a5h2ebuUoRcFs6s1suCHHxqCoutdplHWYrfL9ppYHDIP92BfZevSKW4wRTbxjLcDIeTdsZXcT42oGKqBhwHDF3Jst9Ta+resWbfpsuLqHPv46cPWbXxxMNKrYO1y9/9MlUjdAO8qYrW53/NYlQOj3WLJWlnckQtgQLsQHB5ltGK+f3u3nK5Y7P7AkGIO3xIoU2m1/YC6iwMdgExMY4NT0vvLqC3/yytY/s5fk+zn8c34ZvIYNdePV1oV8N0QMMPStflCr1zza5QEZiJ9ssNNxdrZruLhLkGg9obW4DhLCgTgt0ICMhAasfEx9Z2u2FMBOHbNCXbvtJ03/a7jT1q0y8VzvZTqNN02imAqiNjTG9F8Q4d0G04GlqwEYby4wATh0j/EsVSKkmRprTsBLSClFFvcjGmcw6GIWnIHXMV0sDvMqxloKWcHEFN0mlpRPY54q05D0gyoS8CKCiGi557RXplr0bwMeLHNddbqOxgZ6nPb1t+fdiBVn6RiLIGuPAKtRCta+/QqPZ8DoIEwLIeG/ENiO7eFxrdluHEVmVIuSsaPCWJF6Z7uBvc78NrFDUP4eTvhYRyDvw3AzRNWr+qpqU+niQbwhYfDbFLQDM5UjtfHGTZPDWMYuJHjfXaCjeu2C2FYq5aVdcy17FeeBuVv2OuGiti6bpeD6Omfhhlbqf7iMWyEMGOhoc+/3SYksGIqkQLKHfqgbhOwtJ3QCp8xRGKKBLigFKFTKZVNAFoLppo2ICmyLcLJoEAy4bdYNz8LKBy5F8nrFDqV9YjesmnziLEm9Y+aSQDFCMaipoGA6nafo25ojmuObYgzLLXnKybUnACS0Y9EkOH lutJbFDV MebKpf64lhxiAwztQI7XaRg/eHCytX/sOUnakuVIktlVjRa3tU99GJUow9CmRTK7tgSF9ALDYX1yzVMNWIBRvIn3YozQpIKSMTwnuD1Z59+umhkmzCRlET+dY2YiU2MHXMMrsnrkCCpgr1GhqJ62QZl31O/zcHfLR515ucXitgsOI8IuwnkQi+w1RGdw9S7vEW1JC0Y7WZ81sEHZ45K1vqulc33nB+0YRDzTIKbA+1m4HFT6eJmfuHh/4zvA8XpvG9dVUsGznfLRWM0dqcvuCu7v2A8zI3EAryjtZFzJv1BPjO0HcJfHTslJ+8vUfToje0MD3uCfb9cr3iFZ9ZlExstJCHa0OiO0KontRRUriOMex4LCwfL5tSe0yEZcHB4NvCVcz2HsD9tgQvYq0jVkNLjzdUA== 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: T24gVGh1LCBGZWIgMjMsIDIwMjMgYXQgMDU6Mjg6MTBQTSArMDAwMCwgTWF0dGhldyBXaWxjb3gg d3JvdGU6DQo+IE9uIFRodSwgRmViIDIzLCAyMDIzIGF0IDA0OjMxOjU2UE0gKzA4MDAsIFlpbiBG ZW5nd2VpIHdyb3RlOg0KPiA+IEl0J3MgdG8gcHJlcGFyZSB0aGUgYmF0Y2hlZCBybWFwIHVwZGF0 ZSBmb3IgbGFyZ2UgZm9saW8uDQo+ID4gTm8gbmVlZCB0byBsb29wZWQgaGFuZGxlIGh1Z2V0bGIu IEp1c3QgaGFuZGxlIGh1Z2V0bGIgYW5kDQo+ID4gYmFpbCBvdXQgZWFybHkuDQo+ID4gDQo+ID4g QWxtb3N0IG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiBKdXN0IG9uZSBjaGFuZ2UgdG8gbW0gY291bnRl cg0KPiA+IHVwZGF0ZS4NCj4gDQo+IFRoaXMgbG9va3MgbGlrZSBhIHZlcnkgd29ydGh3aGlsZSBj bGVhbnVwIGluIGl0cyBvd24gcmlnaHQuICBBZGRpbmcNCj4gdmFyaW91cyBodWdldGxiICYgbWVt b3J5IHBvaXNvbmluZyBleHBlcnRzIGZvciBjb21tZW50YXJ5IG9uIHRoZSBtbQ0KPiBjb3VudGVy IGNoYW5nZSAoc2VhcmNoIGZvciB0aHJlZSBhc3Rlcmlza3MpDQo+IA0KPiA+IFNpZ25lZC1vZmYt Ynk6IFlpbiBGZW5nd2VpIDxmZW5nd2VpLnlpbkBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIG1t L3JtYXAuYyB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCA3OSBk ZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5j DQo+ID4gaW5kZXggMTVhZTI0NTg1ZmM0Li5lN2FhNjNiODAwZjcgMTAwNjQ0DQo+ID4gLS0tIGEv bW0vcm1hcC5jDQo+ID4gKysrIGIvbW0vcm1hcC5jDQo+ID4gQEAgLTE0NDMsNiArMTQ0MywxMDgg QEAgdm9pZCBwYWdlX3JlbW92ZV9ybWFwKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwNCj4gPiAgCW11bmxvY2tfdm1hX2ZvbGlvKGZvbGlvLCB2bWEsIGNvbXBv dW5kKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZV9o dWdldGxiKHN0cnVjdCBmb2xpbyAqZm9saW8sDQo+ID4gKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsIHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2UsDQo+ID4gKwkJc3RydWN0IHBh Z2Vfdm1hX21hcHBlZF93YWxrIHB2bXcsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywNCj4gPiArCQll bnVtIHR0dV9mbGFncyBmbGFncykNCj4gPiArew0KPiA+ICsJc3RydWN0IG1tX3N0cnVjdCAqbW0g PSB2bWEtPnZtX21tOw0KPiA+ICsJcHRlX3QgcHRldmFsOw0KPiA+ICsJYm9vbCByZXQgPSB0cnVl LCBhbm9uID0gZm9saW9fdGVzdF9hbm9uKGZvbGlvKTsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJ ICogVGhlIHRyeV90b191bm1hcCgpIGlzIG9ubHkgcGFzc2VkIGEgaHVnZXRsYiBwYWdlDQo+ID4g KwkgKiBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaHVnZXRsYiBwYWdlIGlzIHBvaXNvbmVkLg0KPiA+ ICsJICovDQo+ID4gKwlWTV9CVUdfT05fRk9MSU8oIWZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8p LCBmb2xpbyk7DQo+ID4gKwkvKg0KPiA+ICsJICogaHVnZV9wbWRfdW5zaGFyZSBtYXkgdW5tYXAg YW4gZW50aXJlIFBNRCBwYWdlLg0KPiA+ICsJICogVGhlcmUgaXMgbm8gd2F5IG9mIGtub3dpbmcg ZXhhY3RseSB3aGljaCBQTURzIG1heQ0KPiA+ICsJICogYmUgY2FjaGVkIGZvciB0aGlzIG1tLCBz byB3ZSBtdXN0IGZsdXNoIHRoZW0gYWxsLg0KPiA+ICsJICogc3RhcnQvZW5kIHdlcmUgYWxyZWFk eSBhZGp1c3RlZCBhYm92ZSB0byBjb3ZlciB0aGlzDQo+ID4gKwkgKiByYW5nZS4NCj4gPiArCSAq Lw0KPiA+ICsJZmx1c2hfY2FjaGVfcmFuZ2Uodm1hLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsN Cj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICogVG8gY2FsbCBodWdlX3BtZF91bnNoYXJlLCBpX21t YXBfcndzZW0gbXVzdCBiZQ0KPiA+ICsJICogaGVsZCBpbiB3cml0ZSBtb2RlLiAgQ2FsbGVyIG5l ZWRzIHRvIGV4cGxpY2l0bHkNCj4gPiArCSAqIGRvIHRoaXMgb3V0c2lkZSBybWFwIHJvdXRpbmVz Lg0KPiA+ICsJICoNCj4gPiArCSAqIFdlIGFsc28gbXVzdCBob2xkIGh1Z2V0bGIgdm1hX2xvY2sg aW4gd3JpdGUgbW9kZS4NCj4gPiArCSAqIExvY2sgb3JkZXIgZGljdGF0ZXMgYWNxdWlyaW5nIHZt YV9sb2NrIEJFRk9SRQ0KPiA+ICsJICogaV9tbWFwX3J3c2VtLiAgV2UgY2FuIG9ubHkgdHJ5IGxv Y2sgaGVyZSBhbmQgZmFpbA0KPiA+ICsJICogaWYgdW5zdWNjZXNzZnVsLg0KPiA+ICsJICovDQo+ ID4gKwlpZiAoIWFub24pIHsNCj4gPiArCQlWTV9CVUdfT04oIShmbGFncyAmIFRUVV9STUFQX0xP Q0tFRCkpOw0KPiA+ICsJCWlmICghaHVnZXRsYl92bWFfdHJ5bG9ja193cml0ZSh2bWEpKSB7DQo+ ID4gKwkJCXJldCA9IGZhbHNlOw0KPiA+ICsJCQlnb3RvIG91dDsNCj4gPiArCQl9DQo+ID4gKwkJ aWYgKGh1Z2VfcG1kX3Vuc2hhcmUobW0sIHZtYSwgYWRkcmVzcywgcHZtdy5wdGUpKSB7DQo+ID4g KwkJCWh1Z2V0bGJfdm1hX3VubG9ja193cml0ZSh2bWEpOw0KPiA+ICsJCQlmbHVzaF90bGJfcmFu Z2Uodm1hLA0KPiA+ICsJCQkJCXJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOw0KPiA+ICsJCQltbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZShtbSwNCj4gPiArCQkJCQlyYW5nZS5zdGFydCwgcmFu Z2UuZW5kKTsNCj4gPiArCQkJLyoNCj4gPiArCQkJICogVGhlIHJlZiBjb3VudCBvZiB0aGUgUE1E IHBhZ2Ugd2FzDQo+ID4gKwkJCSAqIGRyb3BwZWQgd2hpY2ggaXMgcGFydCBvZiB0aGUgd2F5IG1h cA0KPiA+ICsJCQkgKiBjb3VudGluZyBpcyBkb25lIGZvciBzaGFyZWQgUE1Ecy4NCj4gPiArCQkJ ICogUmV0dXJuICd0cnVlJyBoZXJlLiAgV2hlbiB0aGVyZSBpcw0KPiA+ICsJCQkgKiBubyBvdGhl ciBzaGFyaW5nLCBodWdlX3BtZF91bnNoYXJlDQo+ID4gKwkJCSAqIHJldHVybnMgZmFsc2UgYW5k IHdlIHdpbGwgdW5tYXAgdGhlDQo+ID4gKwkJCSAqIGFjdHVhbCBwYWdlIGFuZCBkcm9wIG1hcCBj b3VudA0KPiA+ICsJCQkgKiB0byB6ZXJvLg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJZ290byBvdXQ7 DQo+ID4gKwkJfQ0KPiA+ICsJCWh1Z2V0bGJfdm1hX3VubG9ja193cml0ZSh2bWEpOw0KPiA+ICsJ fQ0KPiA+ICsJcHRldmFsID0gaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHZtYSwgYWRkcmVzcywgcHZt dy5wdGUpOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBOb3cgdGhlIHB0ZSBpcyBjbGVhcmVk LiBJZiB0aGlzIHB0ZSB3YXMgdWZmZC13cCBhcm1lZCwNCj4gPiArCSAqIHdlIG1heSB3YW50IHRv IHJlcGxhY2UgYSBub25lIHB0ZSB3aXRoIGEgbWFya2VyIHB0ZSBpZg0KPiA+ICsJICogaXQncyBm aWxlLWJhY2tlZCwgc28gd2UgZG9uJ3QgbG9zZSB0aGUgdHJhY2tpbmcgaW5mby4NCj4gPiArCSAq Lw0KPiA+ICsJcHRlX2luc3RhbGxfdWZmZF93cF9pZl9uZWVkZWQodm1hLCBhZGRyZXNzLCBwdm13 LnB0ZSwgcHRldmFsKTsNCj4gPiArDQo+ID4gKwkvKiBTZXQgdGhlIGRpcnR5IGZsYWcgb24gdGhl IGZvbGlvIG5vdyB0aGUgcHRlIGlzIGdvbmUuICovDQo+ID4gKwlpZiAocHRlX2RpcnR5KHB0ZXZh bCkpDQo+ID4gKwkJZm9saW9fbWFya19kaXJ0eShmb2xpbyk7DQo+ID4gKw0KPiA+ICsJLyogVXBk YXRlIGhpZ2ggd2F0ZXJtYXJrIGJlZm9yZSB3ZSBsb3dlciByc3MgKi8NCj4gPiArCXVwZGF0ZV9o aXdhdGVyX3JzcyhtbSk7DQo+ID4gKw0KPiA+ICsJaWYgKGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9s aW8pICYmICEoZmxhZ3MgJiBUVFVfSUdOT1JFX0hXUE9JU09OKSkgew0KPiA+ICsJCXB0ZXZhbCA9 IHN3cF9lbnRyeV90b19wdGUobWFrZV9od3BvaXNvbl9lbnRyeSgmZm9saW8tPnBhZ2UpKTsNCj4g PiArCQlzZXRfaHVnZV9wdGVfYXQobW0sIGFkZHJlc3MsIHB2bXcucHRlLCBwdGV2YWwpOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCS8qKiogdHJ5X3RvX3VubWFwX29uZSgpIGNhbGxlZCBkZWNfbW1f Y291bnRlciBmb3INCj4gPiArCSAqIChmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSAmJiAhKGZs YWdzICYgVFRVX0lHTk9SRV9IV1BPSVNPTikpIG5vdA0KPiA+ICsJICogdHJ1ZSBjYXNlLCBsb29r cyBpbmNvcnJlY3QuIENoYW5nZSBpdCB0byBodWdldGxiX2NvdW50X3N1YigpIGhlcmUuDQo+ID4g KwkgKi8NCj4gPiArCWh1Z2V0bGJfY291bnRfc3ViKGZvbGlvX25yX3BhZ2VzKGZvbGlvKSwgbW0p Ow0KDQpJIGhhdmUgbm8gb2JqZWN0aW9uIHRvIHRoaXMgY2hhbmdlIChtb3ZpbmcgaHVnZXRsYl9j b3VudF9zdWIoKSBvdXRzaWRlIHRoZQ0KaWYpLCBidXQgSSBoYXZlIGEgcXVlc3Rpb24gcmVsYXRl ZCB0byB0aGlzLg0KDQpHZW5lcmFsbHkgVFRVX0lHTk9SRV9IV1BPSVNPTiBpcyB1c2VkIHRvIGNv bnRyb2wgdGhlIHB0ZS1jb252ZXJzaW9uIGJhc2VkDQpvbiBwYWdlIGRpcnRpbmVzcy4gIEJ1dCBh Y3R1YWxseSB3aGF0IGl0IGRlcGVuZHMgb24gaXMgd2hldGhlciBkYXRhIGxvc3QNCmhhcHBlbnMg d2hlbiB0aGUgcGFnZSBpcyBmb3JjaWJseSBkcm9wcGVkLiAgQW5kIGZvciBodWdldGxiIHBhZ2Vz LCB0aGF0J3MNCnRydWUgcmVnYXJkbGVzcyBvZiBQYWdlRGlydHkgZmxhZyBvbiBpdC4NClNvIEkg dGhpbmsgd2UgY2FuIGFzc3VtZSB0aGF0IHRyeV90b191bm1hcF9vbmVfaHVnZXRsYigpIGlzIGNh bGxlZCB3aXRoDQpUVFVfSUdOT1JFX0hXUE9JU09OIGNsZWFyLiAgU28gbWF5YmUgd2UgZG9uJ3Qg bmVlZCB0aGUgaWYtY2hlY2s/DQoNCk90aGVyd2lzZSwgdGhlIGNsZWFudXAgbG9va3MgZ29vZCB0 byBtZS4NCg0KVGhhbmtzLA0KTmFveWEgSG9yaWd1Y2hpDQoNCj4gPiArDQo+ID4gKwkvKg0KPiA+ ICsJICogTm8gbmVlZCB0byBjYWxsIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlKCkgaXQg aGFzIGJlDQo+ID4gKwkgKiBkb25lIGFib3ZlIGZvciBhbGwgY2FzZXMgcmVxdWlyaW5nIGl0IHRv IGhhcHBlbiB1bmRlciBwYWdlDQo+ID4gKwkgKiB0YWJsZSBsb2NrIGJlZm9yZSBtbXVfbm90aWZp ZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoKQ0KPiA+ICsJICoNCj4gPiArCSAqIFNlZSBEb2N1bWVu dGF0aW9uL21tL21tdV9ub3RpZmllci5yc3QNCj4gPiArCSAqLw0KPiA+ICsJcGFnZV9yZW1vdmVf cm1hcCgmZm9saW8tPnBhZ2UsIHZtYSwgZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSk7DQo+ID4g KwlpZiAodm1hLT52bV9mbGFncyAmIFZNX0xPQ0tFRCkNCj4gPiArCQltbG9ja19kcmFpbl9sb2Nh bCgpOw0KPiA+ICsJZm9saW9fcHV0KGZvbGlvKTsNCj4gPiArDQo+ID4gK291dDoNCj4gPiArCXJl dHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIC8qDQo+ID4gICAqIEBhcmc6IGVudW0gdHR1 X2ZsYWdzIHdpbGwgYmUgcGFzc2VkIHRvIHRoaXMgYXJndW1lbnQNCj4gPiAgICovDQo+ID4gQEAg LTE1MDYsODYgKzE2MDgsMzcgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX3VubWFwX29uZShzdHJ1Y3Qg Zm9saW8gKmZvbGlvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwNCj4gPiAgCQkJYnJlYWs7 DQo+ID4gIAkJfQ0KPiA+ICANCj4gPiArCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOw0KPiA+ICsJ CWlmIChmb2xpb190ZXN0X2h1Z2V0bGIoZm9saW8pKSB7DQo+ID4gKwkJCXJldCA9IHRyeV90b191 bm1hcF9vbmVfaHVnZXRsYihmb2xpbywgdm1hLCByYW5nZSwNCj4gPiArCQkJCQkJCXB2bXcsIGFk ZHJlc3MsIGZsYWdzKTsNCj4gPiArDQo+ID4gKwkJCS8qIG5vIG5lZWQgdG8gbG9vcCBmb3IgaHVn ZXRsYiAqLw0KPiA+ICsJCQlwYWdlX3ZtYV9tYXBwZWRfd2Fsa19kb25lKCZwdm13KTsNCj4gPiAr CQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiAgCQlzdWJwYWdlID0gZm9saW9fcGFnZShm b2xpbywNCj4gPiAgCQkJCQlwdGVfcGZuKCpwdm13LnB0ZSkgLSBmb2xpb19wZm4oZm9saW8pKTsN Cj4gPiAtCQlhZGRyZXNzID0gcHZtdy5hZGRyZXNzOw0KPiA+ICAJCWFub25fZXhjbHVzaXZlID0g Zm9saW9fdGVzdF9hbm9uKGZvbGlvKSAmJg0KPiA+ICAJCQkJIFBhZ2VBbm9uRXhjbHVzaXZlKHN1 YnBhZ2UpOw0KPiA+ICANCj4gPiAtCQlpZiAoZm9saW9fdGVzdF9odWdldGxiKGZvbGlvKSkgew0K PiA+IC0JCQlib29sIGFub24gPSBmb2xpb190ZXN0X2Fub24oZm9saW8pOw0KPiA+IC0NCj4gPiAr CQlmbHVzaF9jYWNoZV9wYWdlKHZtYSwgYWRkcmVzcywgcHRlX3BmbigqcHZtdy5wdGUpKTsNCj4g PiArCQkvKiBOdWtlIHRoZSBwYWdlIHRhYmxlIGVudHJ5LiAqLw0KPiA+ICsJCWlmIChzaG91bGRf ZGVmZXJfZmx1c2gobW0sIGZsYWdzKSkgew0KPiA+ICAJCQkvKg0KPiA+IC0JCQkgKiBUaGUgdHJ5 X3RvX3VubWFwKCkgaXMgb25seSBwYXNzZWQgYSBodWdldGxiIHBhZ2UNCj4gPiAtCQkJICogaW4g dGhlIGNhc2Ugd2hlcmUgdGhlIGh1Z2V0bGIgcGFnZSBpcyBwb2lzb25lZC4NCj4gPiArCQkJICog V2UgY2xlYXIgdGhlIFBURSBidXQgZG8gbm90IGZsdXNoIHNvIHBvdGVudGlhbGx5DQo+ID4gKwkJ CSAqIGEgcmVtb3RlIENQVSBjb3VsZCBzdGlsbCBiZSB3cml0aW5nIHRvIHRoZSBmb2xpby4NCj4g PiArCQkJICogSWYgdGhlIGVudHJ5IHdhcyBwcmV2aW91c2x5IGNsZWFuIHRoZW4gdGhlDQo+ID4g KwkJCSAqIGFyY2hpdGVjdHVyZSBtdXN0IGd1YXJhbnRlZSB0aGF0IGEgY2xlYXItPmRpcnR5DQo+ ID4gKwkJCSAqIHRyYW5zaXRpb24gb24gYSBjYWNoZWQgVExCIGVudHJ5IGlzIHdyaXR0ZW4gdGhy b3VnaA0KPiA+ICsJCQkgKiBhbmQgdHJhcHMgaWYgdGhlIFBURSBpcyB1bm1hcHBlZC4NCj4gPiAg CQkJICovDQo+ID4gLQkJCVZNX0JVR19PTl9QQUdFKCFQYWdlSFdQb2lzb24oc3VicGFnZSksIHN1 YnBhZ2UpOw0KPiA+IC0JCQkvKg0KPiA+IC0JCQkgKiBodWdlX3BtZF91bnNoYXJlIG1heSB1bm1h cCBhbiBlbnRpcmUgUE1EIHBhZ2UuDQo+ID4gLQkJCSAqIFRoZXJlIGlzIG5vIHdheSBvZiBrbm93 aW5nIGV4YWN0bHkgd2hpY2ggUE1EcyBtYXkNCj4gPiAtCQkJICogYmUgY2FjaGVkIGZvciB0aGlz IG1tLCBzbyB3ZSBtdXN0IGZsdXNoIHRoZW0gYWxsLg0KPiA+IC0JCQkgKiBzdGFydC9lbmQgd2Vy ZSBhbHJlYWR5IGFkanVzdGVkIGFib3ZlIHRvIGNvdmVyIHRoaXMNCj4gPiAtCQkJICogcmFuZ2Uu DQo+ID4gLQkJCSAqLw0KPiA+IC0JCQlmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIHJhbmdlLnN0YXJ0 LCByYW5nZS5lbmQpOw0KPiA+ICsJCQlwdGV2YWwgPSBwdGVwX2dldF9hbmRfY2xlYXIobW0sIGFk ZHJlc3MsIHB2bXcucHRlKTsNCj4gPiAgDQo+ID4gLQkJCS8qDQo+ID4gLQkJCSAqIFRvIGNhbGwg aHVnZV9wbWRfdW5zaGFyZSwgaV9tbWFwX3J3c2VtIG11c3QgYmUNCj4gPiAtCQkJICogaGVsZCBp biB3cml0ZSBtb2RlLiAgQ2FsbGVyIG5lZWRzIHRvIGV4cGxpY2l0bHkNCj4gPiAtCQkJICogZG8g dGhpcyBvdXRzaWRlIHJtYXAgcm91dGluZXMuDQo+ID4gLQkJCSAqDQo+ID4gLQkJCSAqIFdlIGFs c28gbXVzdCBob2xkIGh1Z2V0bGIgdm1hX2xvY2sgaW4gd3JpdGUgbW9kZS4NCj4gPiAtCQkJICog TG9jayBvcmRlciBkaWN0YXRlcyBhY3F1aXJpbmcgdm1hX2xvY2sgQkVGT1JFDQo+ID4gLQkJCSAq IGlfbW1hcF9yd3NlbS4gIFdlIGNhbiBvbmx5IHRyeSBsb2NrIGhlcmUgYW5kIGZhaWwNCj4gPiAt CQkJICogaWYgdW5zdWNjZXNzZnVsLg0KPiA+IC0JCQkgKi8NCj4gPiAtCQkJaWYgKCFhbm9uKSB7 DQo+ID4gLQkJCQlWTV9CVUdfT04oIShmbGFncyAmIFRUVV9STUFQX0xPQ0tFRCkpOw0KPiA+IC0J CQkJaWYgKCFodWdldGxiX3ZtYV90cnlsb2NrX3dyaXRlKHZtYSkpIHsNCj4gPiAtCQkJCQlwYWdl X3ZtYV9tYXBwZWRfd2Fsa19kb25lKCZwdm13KTsNCj4gPiAtCQkJCQlyZXQgPSBmYWxzZTsNCj4g PiAtCQkJCQlicmVhazsNCj4gPiAtCQkJCX0NCj4gPiAtCQkJCWlmIChodWdlX3BtZF91bnNoYXJl KG1tLCB2bWEsIGFkZHJlc3MsIHB2bXcucHRlKSkgew0KPiA+IC0JCQkJCWh1Z2V0bGJfdm1hX3Vu bG9ja193cml0ZSh2bWEpOw0KPiA+IC0JCQkJCWZsdXNoX3RsYl9yYW5nZSh2bWEsDQo+ID4gLQkJ CQkJCXJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOw0KPiA+IC0JCQkJCW1tdV9ub3RpZmllcl9pbnZh bGlkYXRlX3JhbmdlKG1tLA0KPiA+IC0JCQkJCQlyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsNCj4g PiAtCQkJCQkvKg0KPiA+IC0JCQkJCSAqIFRoZSByZWYgY291bnQgb2YgdGhlIFBNRCBwYWdlIHdh cw0KPiA+IC0JCQkJCSAqIGRyb3BwZWQgd2hpY2ggaXMgcGFydCBvZiB0aGUgd2F5IG1hcA0KPiA+ IC0JCQkJCSAqIGNvdW50aW5nIGlzIGRvbmUgZm9yIHNoYXJlZCBQTURzLg0KPiA+IC0JCQkJCSAq IFJldHVybiAndHJ1ZScgaGVyZS4gIFdoZW4gdGhlcmUgaXMNCj4gPiAtCQkJCQkgKiBubyBvdGhl ciBzaGFyaW5nLCBodWdlX3BtZF91bnNoYXJlDQo+ID4gLQkJCQkJICogcmV0dXJucyBmYWxzZSBh bmQgd2Ugd2lsbCB1bm1hcCB0aGUNCj4gPiAtCQkJCQkgKiBhY3R1YWwgcGFnZSBhbmQgZHJvcCBt YXAgY291bnQNCj4gPiAtCQkJCQkgKiB0byB6ZXJvLg0KPiA+IC0JCQkJCSAqLw0KPiA+IC0JCQkJ CXBhZ2Vfdm1hX21hcHBlZF93YWxrX2RvbmUoJnB2bXcpOw0KPiA+IC0JCQkJCWJyZWFrOw0KPiA+ IC0JCQkJfQ0KPiA+IC0JCQkJaHVnZXRsYl92bWFfdW5sb2NrX3dyaXRlKHZtYSk7DQo+ID4gLQkJ CX0NCj4gPiAtCQkJcHRldmFsID0gaHVnZV9wdGVwX2NsZWFyX2ZsdXNoKHZtYSwgYWRkcmVzcywg cHZtdy5wdGUpOw0KPiA+ICsJCQlzZXRfdGxiX3ViY19mbHVzaF9wZW5kaW5nKG1tLCBwdGVfZGly dHkocHRldmFsKSk7DQo+ID4gIAkJfSBlbHNlIHsNCj4gPiAtCQkJZmx1c2hfY2FjaGVfcGFnZSh2 bWEsIGFkZHJlc3MsIHB0ZV9wZm4oKnB2bXcucHRlKSk7DQo+ID4gLQkJCS8qIE51a2UgdGhlIHBh Z2UgdGFibGUgZW50cnkuICovDQo+ID4gLQkJCWlmIChzaG91bGRfZGVmZXJfZmx1c2gobW0sIGZs YWdzKSkgew0KPiA+IC0JCQkJLyoNCj4gPiAtCQkJCSAqIFdlIGNsZWFyIHRoZSBQVEUgYnV0IGRv IG5vdCBmbHVzaCBzbyBwb3RlbnRpYWxseQ0KPiA+IC0JCQkJICogYSByZW1vdGUgQ1BVIGNvdWxk IHN0aWxsIGJlIHdyaXRpbmcgdG8gdGhlIGZvbGlvLg0KPiA+IC0JCQkJICogSWYgdGhlIGVudHJ5 IHdhcyBwcmV2aW91c2x5IGNsZWFuIHRoZW4gdGhlDQo+ID4gLQkJCQkgKiBhcmNoaXRlY3R1cmUg bXVzdCBndWFyYW50ZWUgdGhhdCBhIGNsZWFyLT5kaXJ0eQ0KPiA+IC0JCQkJICogdHJhbnNpdGlv biBvbiBhIGNhY2hlZCBUTEIgZW50cnkgaXMgd3JpdHRlbiB0aHJvdWdoDQo+ID4gLQkJCQkgKiBh bmQgdHJhcHMgaWYgdGhlIFBURSBpcyB1bm1hcHBlZC4NCj4gPiAtCQkJCSAqLw0KPiA+IC0JCQkJ cHRldmFsID0gcHRlcF9nZXRfYW5kX2NsZWFyKG1tLCBhZGRyZXNzLCBwdm13LnB0ZSk7DQo+ID4g LQ0KPiA+IC0JCQkJc2V0X3RsYl91YmNfZmx1c2hfcGVuZGluZyhtbSwgcHRlX2RpcnR5KHB0ZXZh bCkpOw0KPiA+IC0JCQl9IGVsc2Ugew0KPiA+IC0JCQkJcHRldmFsID0gcHRlcF9jbGVhcl9mbHVz aCh2bWEsIGFkZHJlc3MsIHB2bXcucHRlKTsNCj4gPiAtCQkJfQ0KPiA+ICsJCQlwdGV2YWwgPSBw dGVwX2NsZWFyX2ZsdXNoKHZtYSwgYWRkcmVzcywgcHZtdy5wdGUpOw0KPiA+ICAJCX0NCj4gPiAg DQo+ID4gIAkJLyoNCj4gPiBAQCAtMTYwNCwxNCArMTY1Nyw4IEBAIHN0YXRpYyBib29sIHRyeV90 b191bm1hcF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEsDQo+ID4gIA0KPiA+ICAJCWlmIChQYWdlSFdQb2lzb24oc3VicGFnZSkgJiYgIShmbGFncyAm IFRUVV9JR05PUkVfSFdQT0lTT04pKSB7DQo+ID4gIAkJCXB0ZXZhbCA9IHN3cF9lbnRyeV90b19w dGUobWFrZV9od3BvaXNvbl9lbnRyeShzdWJwYWdlKSk7DQo+ID4gLQkJCWlmIChmb2xpb190ZXN0 X2h1Z2V0bGIoZm9saW8pKSB7DQo+ID4gLQkJCQlodWdldGxiX2NvdW50X3N1Yihmb2xpb19ucl9w YWdlcyhmb2xpbyksIG1tKTsNCj4gPiAtCQkJCXNldF9odWdlX3B0ZV9hdChtbSwgYWRkcmVzcywg cHZtdy5wdGUsIHB0ZXZhbCk7DQo+ID4gLQkJCX0gZWxzZSB7DQo+ID4gLQkJCQlkZWNfbW1fY291 bnRlcihtbSwgbW1fY291bnRlcigmZm9saW8tPnBhZ2UpKTsNCj4gPiAtCQkJCXNldF9wdGVfYXQo bW0sIGFkZHJlc3MsIHB2bXcucHRlLCBwdGV2YWwpOw0KPiA+IC0JCQl9DQo+ID4gLQ0KPiA+ICsJ CQlkZWNfbW1fY291bnRlcihtbSwgbW1fY291bnRlcigmZm9saW8tPnBhZ2UpKTsNCj4gPiArCQkJ c2V0X3B0ZV9hdChtbSwgYWRkcmVzcywgcHZtdy5wdGUsIHB0ZXZhbCk7DQo+ID4gIAkJfSBlbHNl IGlmIChwdGVfdW51c2VkKHB0ZXZhbCkgJiYgIXVzZXJmYXVsdGZkX2FybWVkKHZtYSkpIHsNCj4g PiAgCQkJLyoNCj4gPiAgCQkJICogVGhlIGd1ZXN0IGluZGljYXRlZCB0aGF0IHRoZSBwYWdlIGNv bnRlbnQgaXMgb2Ygbm8NCj4gPiAtLSANCj4gPiAyLjMwLjINCj4gPiA=