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 1AE9AC433EF for ; Fri, 20 May 2022 14:49:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1D6A6B0072; Fri, 20 May 2022 10:49:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CC4E6B0073; Fri, 20 May 2022 10:49:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8001A8D0001; Fri, 20 May 2022 10:49:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6AD7A6B0072 for ; Fri, 20 May 2022 10:49:35 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 335BB21B9C for ; Fri, 20 May 2022 14:49:35 +0000 (UTC) X-FDA: 79486405110.25.A5A4601 Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-eopbgr90083.outbound.protection.outlook.com [40.107.9.83]) by imf11.hostedemail.com (Postfix) with ESMTP id BEE0040002 for ; Fri, 20 May 2022 14:49:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kaAqn2qtEep+1Fvf9BP1sOCxbYkcTyAXCnCazzK+nuIrPj4uNzsCmVDabVQCyhpQZv6Jj5Rtb3zMbnHZ4I5atjqj7GaWukbQQtI1+byzAYG0rwl4t2h9ehsnP9oHShc7RcwvPHaoetaPzYVUV7mxKGXC0Mkjvb0qHPNaqlW6k+1MhM5l8/yLeG4JcelNHDBg+EaXY3rvKNEs43P4BMfOIfRvXWdrSmFLVuEzdvGPjQcI9p48/M3sBkoBiN4XZ5hZPHybsJL5RC2HVHGOHcQLJHCa0mrzEKxsX5BDpaHFOjgxeHJVpVHrHC2v8YffQoZT2EMlQB0p5UO4SQT6B9jZMg== 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=4/sxPvgRGLGZLCKVfIFmDWenVNt0Pp2sQjowCm4lGqo=; b=Q+HeR6o/bTR6qOi9/EzAGM1MZS1Q2UcnipdLTPTbGFZXsvcM5518lS+Xvn4VEQ1QnqSVSfP4QdbA4BejKTapzFj88ms7abkFT1TspVa5+WH6pl5k6P4vH/CXuZs4g8Z0Vjpd2L0Ddtvzab9umuArCrVtCKOAVeMxxrQ7NppWsMdTVm9KKHZXTPV1QfA7XOJYJp/MeGHlQ1PXtEXsymS8gnBKusFUlqy88/k1l5YklXOd88JbxsWJNju47TwX5j87yCIEQ0RJ3zYh1wXEPc6YDw/5mDo91gzLn9/0dzb9R4jSsCoH3Li4dPAhg38MsQ1nXRryZAselqxcaKccUzD9Ig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by MRZP264MB1525.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.16; Fri, 20 May 2022 14:49:31 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::ad4e:c157:e9ac:385d]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::ad4e:c157:e9ac:385d%8]) with mapi id 15.20.5273.016; Fri, 20 May 2022 14:49:31 +0000 From: Christophe Leroy To: Chih-En Lin , Andrew Morton , "linux-mm@kvack.org" CC: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Christian Brauner , "Matthew Wilcox (Oracle)" , Vlastimil Babka , William Kucharski , John Hubbard , Yunsheng Lin , Arnd Bergmann , Suren Baghdasaryan , Colin Cross , Feng Tang , "Eric W. Biederman" , Mike Rapoport , Geert Uytterhoeven , Anshuman Khandual , Aneesh Kumar K.V , Daniel Axtens , Jonathan Marek , Pasha Tatashin , Peter Xu , Andrea Arcangeli , Thomas Gleixner , Andy Lutomirski , Sebastian Andrzej Siewior , Fenghua Yu , David Hildenbrand , "linux-kernel@vger.kernel.org" , Kaiyang Zhao , Huichun Feng , Jim Huang Subject: Re: [RFC PATCH 6/6] mm: Expand Copy-On-Write to PTE table Thread-Topic: [RFC PATCH 6/6] mm: Expand Copy-On-Write to PTE table Thread-Index: AQHYa66N/KVMQwvwm0eoyQnep1LUNa0n2kEA Date: Fri, 20 May 2022 14:49:31 +0000 Message-ID: <0c152776-6851-eb3e-b5c2-16826779891f@csgroup.eu> References: <20220519183127.3909598-1-shiyn.lin@gmail.com> <20220519183127.3909598-7-shiyn.lin@gmail.com> In-Reply-To: <20220519183127.3909598-7-shiyn.lin@gmail.com> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6857d71b-149f-4625-0069-08da3a6ff294 x-ms-traffictypediagnostic: MRZP264MB1525:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bhwxm8wxAYSNfgWR4v3M6w8pGQtMo6H1u8pWPaAGhJ5I9t+yijFmUxVB6zfWKeVN2NcYpF+9f3B2pv70udTtE1NY6y9eClmyf4M7QE5bvV1U0o84cQ6yZRUZHrpAr1SaHPXdguPH48kX4hrXvbx7a9mYJ2dnDR8T39pR7ae7TK2SaJkaxeHMNKfiWcvePVkBpU7M++M6IQC7gHn1cy6Tzr84lNI/CrPmTxKlGvdq1HEAYmL865s34h/fkVMltU3lgTuWRPIHNaSzsjyougNcblk5Qt7HIdRaZGFm0Ln+0BqNuMe6W+UJ+i15qvJNAPL8q6X4W52ZmqXd5qU7bbH88KCx2ZuZSyuVH46nMmv/QrO/owFLh4HoPk+pmDjfc+sreL1e48ex1Z7KQpkMp+n6naKJEkCctJSQpD3c/W/o/dLHjRGqL6Dul30x2p6X2vZ9etZvyYEC/XUl64wzJ0/nDU63KLJXlEY5bXpqS0nrrkNDreLcXd1uwxfGQL62pGqJns/czaatQOELMibQF3dju1Qj3puw4mwsgJ4L5MvVzRr4izGzKuRUpSks2koJlg3XdcRARCNamkAigQAZLX5hPiUglIuCKiZPXvSnNfKv1FuRIzo8ZT9Sh4bzGLQbt90mReO0v6yidyS6qu8oV9fo78RdgprqmTeHWbd3r66UGbqgL/qrLke1mphgaBvqywjZ/er9h3TIo/rkBmTfuaosr+Cv6ghNVtDg0XvC/I4OWk5qoVpV+KzosbBfEPcwGYnJOi1ki9cdz2XdGUC2IZZfpGO6IuQVWzCXTNLn+2TSWjM= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(66946007)(71200400001)(7406005)(7416002)(8676002)(76116006)(66556008)(91956017)(66476007)(66446008)(64756008)(83380400001)(4326008)(38070700005)(38100700002)(26005)(6512007)(31696002)(5660300002)(44832011)(30864003)(86362001)(2906002)(6486002)(2616005)(31686004)(122000001)(508600001)(8936002)(316002)(186003)(66574015)(6506007)(110136005)(54906003)(36756003)(21314003)(45980500001)(43740500002)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L256c0lhVFc4YWcwMXZPVHVTcTdadG4rNkNNeStFSG1ualpLa1phcHRpUmdr?= =?utf-8?B?aVpOSjJXdzZLOGtXbEZZSERZZnBFWUVnbHRhb3czRGZUdUNKOCtQdCtKcktC?= =?utf-8?B?N2hvT1NsWm84cGVxRWQ1NURWTFV2K1Nkc3BYWlNxWlZQOC85T0xGYmVKalBJ?= =?utf-8?B?UVhscmdRcG9UQXlaMXBYc3h2UUJVL1pqZm5talZMTUxkMWplU2IyV1V5VXdW?= =?utf-8?B?ZzgvcCtvMUN0TEEyYU1WVnlvSDhqd09iUVYvNEhiTWFpamRyeE96a3NrNTU4?= =?utf-8?B?TlVqUFE2NXhYWG44MUNaNFRQWkZ0SkZsUmJ6ZzlBWXF2cHhybGl0YkZIbS9r?= =?utf-8?B?cUdXbE1sN09HNFI4VnNHdjUrZEFVcEYyT2cxQ3RzZ0o5bVlWL1IrVTAxdWhz?= =?utf-8?B?QUhFRUJzdXhQZDJrak8xT2V5MEtVYlVuanN0ME45NTVCd0dwQjlzZldqWHhE?= =?utf-8?B?ZHBQc2Z4SzFHUHA4dTlNNE02N2loMjYzeWdDU3NnZStSVUs2c2J3bEhWV1k1?= =?utf-8?B?L0J3ektYeEd3Ui9FSHMreU1ZeCs2K0RtTUNLanI1TFJqejFON3BQRGlFZTl4?= =?utf-8?B?YkNlT1JQcWplWkRKOVdRZ0JjbUJZR0JlS1hmQXoxM2RMY3pRQkNpUTBId250?= =?utf-8?B?blpOSzV1QjhRdXBTSHlETzcwdjBvOEVxK01zT2l3NkdBTlBJYWVqUnJZV3l1?= =?utf-8?B?cHhpWG81Y29FcFd2ZWYvSFpPK2RrS3gzcEVveVg1Y3pWZHVHbVhYVnhyMGQr?= =?utf-8?B?dkFOZFVVejlmM0pnUVpEZjBhSlZoU2NZaitpSHZvWFhxVEpmUmJxbWo4cHRw?= =?utf-8?B?ZFpva2V3blRIZVU2c2R1NHV3QTFTTTNHK2cwZ29BNmdEYWVFUlVoaDB2VnlV?= =?utf-8?B?SVpVaGRjZ2NmWi9iSDR3QzRJME15ajNGcG1pUHpHRmRGOXZqaEZMZWI3RHRy?= =?utf-8?B?UkxIN1N1OGlKbTZzbHRZSitmaTVhdnc0djJuYTZOcmdvMlFkYVlaT2pWVXlG?= =?utf-8?B?Z1lBRjhWYkd4QUJkcHZCcm54QVRMQlRKbWNOcGU2eVhrOHJreUtrMm9WMFJK?= =?utf-8?B?d0FUYU5GSEVzb2lXTUJoK2lpWHRsVmowcUhudXF1dUtINlY2aEZ5MTk5MzdM?= =?utf-8?B?RzRWVCsyci9wZURHREl3dHFrQWU2RG9SUE5uU1luenR0Vk4rc0kzYmMyL0h3?= =?utf-8?B?SmQ3QzBPeVM4akdEQXYwc0lyQ05HcnNLSHc5U1RrQnhDS3RydEpYSVJOZmhp?= =?utf-8?B?N0dTMDk1WDB6bVpmRVZpUFBhNmtwSXdOR1REY3cwQzhVc3hLUkx3dUVSaHpq?= =?utf-8?B?cWJ3ZU9KQUloOXJ5U2piZ0hsQ29iR2pDYWtuOUI3dzFDUXdMZnFxVFpMMWov?= =?utf-8?B?VVIwMjJDTUc3UGNBMTAvaUFrb0hibDRiMnFYR0VFLzFDendsZ1BGcFExNGx6?= =?utf-8?B?T0NNZzlyUU43WEhMRFV6ZXZwenhoWWNjVDFOTlZHcFUzVHFXdUtXSFZlYnZi?= =?utf-8?B?MklPdUlndHVCWjNCNGtTRDZCSjN3V3RNMzlKcExPczJ3UERhMFhBYnRtd1Vn?= =?utf-8?B?Ulo5bVZNeXJQUE5WZUxpVGFLOVRDWUUzb3dlRmZzemZDQ1dadm5vV2hwUHVW?= =?utf-8?B?b2dEdGNiYmtKUG1rTCs3em5ndS9GK1Z0K2Z3K2JkNGR6SmpUeHB4a3RBQm5n?= =?utf-8?B?M0REWFFHQlJLRUpLaGo1UXV0TFlaTkdseHhqWSt3SVB2VkxmZldwb1BXL3B2?= =?utf-8?B?cEFvc1ZkRkVyNnBadkc5Y1plTHdNaUw2bVN3bzc3Y3hGUDUzL2xLckxZeWVk?= =?utf-8?B?eXNtNk9rdFVwZXoxRHd6UEJkL29ZS1NxV3oxUVBla210dVVETTRydDE5c2xP?= =?utf-8?B?UWppVHVURFYwNzlVcExOb1dPQktHcFFUWGhDdGE2UjNqK3k1SkQvWmxqQ0JX?= =?utf-8?B?SlFYVzgzS2FKMHBYTnhQK1NGcmZwUHlTM0Z5akY2ODRIblhQS1Q1eXM1QVNh?= =?utf-8?B?OEFid1NBVHhFbk53bFVVMVhjKzdDTlVCcVZOdkdkOFp0VlZNb3Y2OHhTV3k1?= =?utf-8?B?SXE4QkpTQUxMOXhnZXZYVWNHcTRDYzZ1UGJpL0RValpxMmdiTWo1eGlJdlNB?= =?utf-8?B?MDlGeklJWXo3YllyMkJaUjdHb29pZkdIdnRPaGRwN0lZLzFUOXZRMXVZbk12?= =?utf-8?B?UEtDczQxWlhFcUFrZDkvS1NNNk0xRTE4MWl5aG9VUjg0cmJkcUNzZDFDS2JF?= =?utf-8?B?cHJ2bG1ya1NEN1B1TnF1SDlFTFNDZFl4MjlDU3dFUjkyaWNuV016RWZ4Qm01?= =?utf-8?B?azkrd0w3VzYrMXl4QVdqS2d3dnhHUUUrTkx2ZDhyY3dMT0xoT2d3NURKeUtT?= =?utf-8?Q?dV6j2O7K8edgmlM6C4ZtHOAFngJVxRjTLyAeL?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 6857d71b-149f-4625-0069-08da3a6ff294 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 May 2022 14:49:31.1288 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: N+JMnumV5u9/3K5QT40xIcxJyu7rEXYhwda1sDSHz6wMIS6yCbEJm76x/3S2MM3IhzOvjpYrc6Pem/eQm6YRGSqonHh5gUQ0hWUUDZxllpo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRZP264MB1525 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: BEE0040002 X-Rspam-User: Authentication-Results: imf11.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf11.hostedemail.com: domain of christophe.leroy@csgroup.eu designates 40.107.9.83 as permitted sender) smtp.mailfrom=christophe.leroy@csgroup.eu X-Stat-Signature: gna3eexr44zoce98txkukadtx9nxodyk X-HE-Tag: 1653058167-840598 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: DQoNCkxlIDE5LzA1LzIwMjIgw6AgMjA6MzEsIENoaWgtRW4gTGluIGEgw6ljcml0wqA6DQo+IFRo aXMgcGF0Y2ggYWRkcyB0aGUgQ29weS1Pbi1Xcml0ZSAoQ09XKSBtZWNoYW5pc20gdG8gdGhlIFBU RSB0YWJsZS4NCj4gVG8gZW5hYmxlIHRoZSBDT1cgcGFnZSB0YWJsZSB1c2UgdGhlIGNsb25lMygp IHN5c3RlbSBjYWxsIHdpdGggdGhlDQo+IENMT05FX0NPV19QR1RBQkxFIGZsYWcuIEl0IHdpbGwg c2V0IHRoZSBNTUZfQ09XX1BHVEFCTEUgZmxhZyB0byB0aGUNCj4gcHJvY2Vzc2VzLg0KPiANCj4g SXQgdXNlcyB0aGUgTU1GX0NPV19QR1RBQkxFIGZsYWcgdG8gZGlzdGluZ3Vpc2ggdGhlIGRlZmF1 bHQgcGFnZSB0YWJsZQ0KPiBhbmQgdGhlIENPVyBvbmUuIE1vcmVvdmVyLCBpdCBpcyBkaWZmaWN1 bHQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0aGUNCj4gZW50aXJlIHBhZ2UgdGFibGUgaXMgb3V0 IG9mIENPVyBzdGF0ZS4gU28gdGhlIE1NRl9DT1dfUEdUQUJMRSBmbGFnIHdvbid0DQo+IGJlIGRp c2FibGVkIGFmdGVyIGl0cyBzZXR1cC4NCj4gDQo+IFNpbmNlIHRoZSBtZW1vcnkgc3BhY2Ugb2Yg dGhlIHBhZ2UgdGFibGUgaXMgZGlzdGluY3RpdmUgZm9yIGVhY2ggcHJvY2Vzcw0KPiBpbiBrZXJu ZWwgc3BhY2UuIEl0IHVzZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFBNRCBpbmRleCBmb3IgdGhlIG93 bmVyc2hpcA0KPiBvZiB0aGUgUFRFIHRhYmxlIHRvIGlkZW50aWZ5IHdoaWNoIG9uZSBvZiB0aGUg cHJvY2Vzc2VzIG5lZWRzIHRvIHVwZGF0ZQ0KPiB0aGUgcGFnZSB0YWJsZSBzdGF0ZS4gSW4gb3Ro ZXIgd29yZHMsIG9ubHkgdGhlIG93bmVyIHdpbGwgdXBkYXRlIENPVyBQVEUNCj4gc3RhdGUsIGxp a2UgdGhlIFJTUyBhbmQgcGd0YWJsZV9ieXRlcy4NCj4gDQo+IEl0IHVzZXMgdGhlIHJlZmVyZW5j ZSBjb3VudCB0byBjb250cm9sIHRoZSBsaWZldGltZSBvZiBDT1cgUFRFIHRhYmxlLg0KPiBXaGVu IHNvbWVvbmUgYnJlYWtzIENPVywgaXQgd2lsbCBjb3B5IHRoZSBDT1cgUFRFIHRhYmxlIGFuZCBk ZWNyZWFzZSB0aGUNCj4gcmVmZXJlbmNlIGNvdW50LiBCdXQgaWYgdGhlIHJlZmVyZW5jZSBjb3Vu dCBpcyBlcXVhbCB0byBvbmUgYmVmb3JlIHRoZQ0KPiBicmVhayBDT1csIGl0IHdpbGwgcmV1c2Ug dGhlIENPVyBQVEUgdGFibGUuDQo+IA0KPiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJ0IG9m IHRoZSBjb3B5IHBhZ2UgdGFibGUgdG8gZG8gdGhlIGJhc2ljIENPVy4NCj4gRm9yIHRoZSBicmVh ayBDT1csIGl0IG1vZGlmaWVzIHRoZSBwYXJ0IG9mIGEgcGFnZSBmYXVsdCwgemFwcyBwYWdlIHRh YmxlDQo+ICwgdW5tYXBwaW5nLCBhbmQgcmVtYXBwaW5nLg0KPiANCj4gU2lnbmVkLW9mZi1ieTog Q2hpaC1FbiBMaW4gPHNoaXluLmxpbkBnbWFpbC5jb20+DQo+IC0tLQ0KPiAgIGluY2x1ZGUvbGlu dXgvcGd0YWJsZS5oIHwgICAzICsNCj4gICBtbS9tZW1vcnkuYyAgICAgICAgICAgICB8IDI2MiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+ICAgbW0vbW1hcC5jICAg ICAgICAgICAgICAgfCAgIDQgKw0KPiAgIG1tL21yZW1hcC5jICAgICAgICAgICAgIHwgICA1ICsN Cj4gICA0IGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkN Cj4gDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BndGFibGUuaCBiL2luY2x1ZGUvbGlu dXgvcGd0YWJsZS5oDQo+IGluZGV4IDMzYzAxZmVjN2I5Mi4uMzU3Y2UzNzIyZWU4IDEwMDY0NA0K PiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BndGFibGUuaA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L3Bn dGFibGUuaA0KPiBAQCAtNjMxLDYgKzYzMSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNvd19wdGVf cmVmY291bnRfcmVhZChwbWRfdCAqcG1kKQ0KPiAgICAgICAgICByZXR1cm4gYXRvbWljX3JlYWQo JnBtZF9wYWdlKCpwbWQpLT5jb3dfcGd0YWJsZV9yZWZjb3VudCk7DQo+ICAgfQ0KPiANCj4gK2V4 dGVybiBpbnQgaGFuZGxlX2Nvd19wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90 ICpwbWQsDQo+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgYWxsb2Mp Ow0KPiArDQo+ICAgI2lmbmRlZiBwdGVfYWNjZXNzX3Blcm1pdHRlZA0KPiAgICNkZWZpbmUgcHRl X2FjY2Vzc19wZXJtaXR0ZWQocHRlLCB3cml0ZSkgXA0KPiAgICAgICAgICAocHRlX3ByZXNlbnQo cHRlKSAmJiAoISh3cml0ZSkgfHwgcHRlX3dyaXRlKHB0ZSkpKQ0KPiBkaWZmIC0tZ2l0IGEvbW0v bWVtb3J5LmMgYi9tbS9tZW1vcnkuYw0KPiBpbmRleCBhYTY2YWY3NmUyMTQuLmZmM2ZjYmU0ZGZi NSAxMDA2NDQNCj4gLS0tIGEvbW0vbWVtb3J5LmMNCj4gKysrIGIvbW0vbWVtb3J5LmMNCj4gQEAg LTI0Nyw2ICsyNDcsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9wbWRfcmFuZ2Uoc3RydWN0 IG1tdV9nYXRoZXIgKnRsYiwgcHVkX3QgKnB1ZCwNCj4gICAgICAgICAgICAgICAgICBuZXh0ID0g cG1kX2FkZHJfZW5kKGFkZHIsIGVuZCk7DQo+ICAgICAgICAgICAgICAgICAgaWYgKHBtZF9ub25l X29yX2NsZWFyX2JhZChwbWQpKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 DQo+ICsgICAgICAgICAgICAgICBCVUdfT04oY293X3B0ZV9yZWZjb3VudF9yZWFkKHBtZCkgIT0g MSk7DQo+ICsgICAgICAgICAgICAgICBCVUdfT04oIWNvd19wdGVfb3duZXJfaXNfc2FtZShwbWQs IE5VTEwpKTsNCg0KU2VlIGNvbW1lbnQgb24gYSBwcmV2aW91cyBwYXRjaCBvZiB0aGlzIHNlcmll cywgdGhlcmUgc2VlbSB0byBiZSBhIGh1Z2UgDQpudW1iZXIgb2YgbmV3IEJVR19PTnMuDQoNCj4g ICAgICAgICAgICAgICAgICBmcmVlX3B0ZV9yYW5nZSh0bGIsIHBtZCwgYWRkcik7DQo+ICAgICAg ICAgIH0gd2hpbGUgKHBtZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBlbmQpOw0KPiANCj4gQEAg LTEwMzEsNyArMTAzMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3dfcHRlX3JzcyhzdHJ1Y3Qg bW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsDQo+ICAgc3RhdGljIGlu dA0KPiAgIGNvcHlfcHRlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZHN0X3ZtYSwgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICpzcmNfdm1hLA0KPiAgICAgICAgICAgICAgICAgcG1kX3QgKmRz dF9wbWQsIHBtZF90ICpzcmNfcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsDQo+IC0gICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgZW5kKQ0KPiArICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVu ZCwgYm9vbCBpc19zcmNfcHRlX2xvY2tlZCkNCj4gICB7DQo+ICAgICAgICAgIHN0cnVjdCBtbV9z dHJ1Y3QgKmRzdF9tbSA9IGRzdF92bWEtPnZtX21tOw0KPiAgICAgICAgICBzdHJ1Y3QgbW1fc3Ry dWN0ICpzcmNfbW0gPSBzcmNfdm1hLT52bV9tbTsNCj4gQEAgLTEwNTMsOCArMTA1NSwxMCBAQCBj b3B5X3B0ZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqc3JjX3ZtYSwNCj4gICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gICAg ICAgICAgfQ0KPiAgICAgICAgICBzcmNfcHRlID0gcHRlX29mZnNldF9tYXAoc3JjX3BtZCwgYWRk cik7DQo+IC0gICAgICAgc3JjX3B0bCA9IHB0ZV9sb2NrcHRyKHNyY19tbSwgc3JjX3BtZCk7DQo+ IC0gICAgICAgc3Bpbl9sb2NrX25lc3RlZChzcmNfcHRsLCBTSU5HTEVfREVQVEhfTkVTVElORyk7 DQo+ICsgICAgICAgaWYgKCFpc19zcmNfcHRlX2xvY2tlZCkgew0KPiArICAgICAgICAgICAgICAg c3JjX3B0bCA9IHB0ZV9sb2NrcHRyKHNyY19tbSwgc3JjX3BtZCk7DQo+ICsgICAgICAgICAgICAg ICBzcGluX2xvY2tfbmVzdGVkKHNyY19wdGwsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsNCj4gKyAg ICAgICB9DQoNCk9kZCBjb25zdHJ1Y3QsIHRoYXQga2luZCBvZiBjb25zdHJ1Y3Qgb2Z0ZW4gbGVh ZHMgdG8gbWVzc3kgZXJyb3JzLg0KDQpDb3VsZCB5b3UgY29uc3RydWN0IHRoaW5ncyBkaWZmZXJl bnRseSBieSByZWZhY3RvcmluZyB0aGUgY29kZSA/DQoNCj4gICAgICAgICAgb3JpZ19zcmNfcHRl ID0gc3JjX3B0ZTsNCj4gICAgICAgICAgb3JpZ19kc3RfcHRlID0gZHN0X3B0ZTsNCj4gICAgICAg ICAgYXJjaF9lbnRlcl9sYXp5X21tdV9tb2RlKCk7DQo+IEBAIC0xMDY3LDcgKzEwNzEsOCBAQCBj b3B5X3B0ZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqc3JjX3ZtYSwNCj4gICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPj0g MzIpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzID0gMDsNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChuZWVkX3Jlc2NoZWQoKSB8fA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3Bpbl9uZWVkYnJlYWsoc3JjX3B0bCkgfHwgc3Bpbl9uZWVkYnJlYWso ZHN0X3B0bCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWlzX3NyY19wdGVfbG9j a2VkICYmIHNwaW5fbmVlZGJyZWFrKHNyY19wdGwpKSB8fA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3Bpbl9uZWVkYnJlYWsoZHN0X3B0bCkpDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAg ICAgICBpZiAocHRlX25vbmUoKnNyY19wdGUpKSB7DQo+IEBAIC0xMTE4LDcgKzExMjMsOCBAQCBj b3B5X3B0ZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqc3JjX3ZtYSwNCj4gICAgICAgICAgfSB3aGlsZSAoZHN0X3B0ZSsrLCBzcmNf cHRlKyssIGFkZHIgKz0gUEFHRV9TSVpFLCBhZGRyICE9IGVuZCk7DQo+IA0KPiAgICAgICAgICBh cmNoX2xlYXZlX2xhenlfbW11X21vZGUoKTsNCj4gLSAgICAgICBzcGluX3VubG9jayhzcmNfcHRs KTsNCj4gKyAgICAgICBpZiAoIWlzX3NyY19wdGVfbG9ja2VkKQ0KPiArICAgICAgICAgICAgICAg c3Bpbl91bmxvY2soc3JjX3B0bCk7DQo+ICAgICAgICAgIHB0ZV91bm1hcChvcmlnX3NyY19wdGUp Ow0KPiAgICAgICAgICBhZGRfbW1fcnNzX3ZlYyhkc3RfbW0sIHJzcyk7DQo+ICAgICAgICAgIHB0 ZV91bm1hcF91bmxvY2sob3JpZ19kc3RfcHRlLCBkc3RfcHRsKTsNCj4gQEAgLTExODAsMTEgKzEx ODYsNTUgQEAgY29weV9wbWRfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICpkc3Rfdm1hLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnNyY192bWEsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZmFsbCB0 aHJvdWdoICovDQo+ICAgICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAgICAgaWYgKHBt ZF9ub25lX29yX2NsZWFyX2JhZChzcmNfcG1kKSkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7DQo+IC0gICAgICAgICAgICAgICBpZiAoY29weV9wdGVfcmFuZ2UoZHN0X3ZtYSwg c3JjX3ZtYSwgZHN0X3BtZCwgc3JjX3BtZCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhZGRyLCBuZXh0KSkNCj4gKw0KPiArICAgICAgICAgICAgICAgaWYgKHRlc3RfYml0 KE1NRl9DT1dfUEdUQUJMRSwgJnNyY19tbS0+ZmxhZ3MpKSB7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwbWRfbm9uZSgqc3JjX3BtZCkpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQoNCldoeSBub3Qga2VlcCB0aGUgcG1kX25vbmVfb3Jf Y2xlYXJfYmFkKHNyY19wbWQpIGluc3RlYWQgPw0KDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgLyogWFhYOiBTa2lwIGlmIHRoZSBQVEUgYWxyZWFkeSBDT1cgdGhpcyB0aW1lLiAqLw0K PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBtZF9ub25lKCpkc3RfcG1kKSAmJg0KDQpT aG91bGRuJ3QgaXMgYmUgYSBwbWRfbm9uZV9vcl9jbGVhcl9iYWQoKSA/DQoNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvd19wdGVfcmVmY291bnRfcmVhZChzcmNfcG1kKSA+IDEpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgLyogSWYgUFRFIGRvZXNuJ3QgaGF2ZSBhbiBvd25lciwgdGhlIHBh cmVudCBuZWVkcyB0bw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKiB0YWtlIHRoaXMgUFRF Lg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGNvd19wdGVfb3duZXJfaXNfc2FtZShzcmNfcG1kLCBOVUxMKSkgew0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9jb3dfcHRlX293bmVyKHNyY19wbWQsIHNyY19w bWQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWDogVGhlIHByb2Nl c3MgbWF5IENPVyBQVEUgZm9yayB0d28gdGltZXMuDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogQnV0IGluIHNvbWUgc2l0dWF0aW9ucywgb3duZXIgaGFzIGNsZWFyZWQuDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogUHJldmlvdXNseSBDaGlsZCAoVGhp cyB0aW1lIGlzIHRoZSBwYXJlbnQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICogQ09XIFBURSBmb3JraW5nLCBidXQgcHJldmlvdXNseSBwYXJlbnQsIG93bmVyDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogLCBicmVhayBDT1cuIFNvIGl0IG5lZWRzIHRv IGFkZCBiYWNrIHRoZSBSU1MNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBz dGF0ZSBhbmQgcGd0YWJsZSBieXRlcy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBtZF93cml0ZSgq c3JjX3BtZCkpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgcHRlX3N0YXJ0ID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWRkciAmIFBNRF9NQVNLOw0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwdGVfZW5kID0NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHIgKyBQTURfU0laRSkg JiBQTURfTUFTSzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv d19wdGVfcnNzKHNyY19tbSwgc3JjX3ZtYSwgc3JjX3BtZCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdGVfc3RhcnQsIHB0ZV9lbmQsIHRydWUgLyogaW5j ICovKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tX2luY19u cl9wdGVzKHNyY19tbSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzbXBfd21iKCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw bWRfcG9wdWxhdGUoc3JjX21tLCBzcmNfcG1kLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtZF9wYWdlKCpzcmNfcG1kKSk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcG1kcF9zZXRfd3Jwcm90ZWN0KHNy Y19tbSwgYWRkciwgc3JjX3BtZCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyog Q2hpbGQgcmVmZXJlbmNlIGNvdW50ICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBtZF9n ZXRfcHRlKHNyY19wbWQpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIENPVyBm b3IgUFRFIHRhYmxlICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNldF9wbWRfYXQoZHN0 X21tLCBhZGRyLCBkc3RfcG1kLCAqc3JjX3BtZCk7DQo+ICsgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKCFwbWRfbm9uZV9vcl9jbGVhcl9iYWQoc3JjX3BtZCkgJiYNCg0KQ2FuJ3Qgd2Uga2VlcCBw bWRfbm9uZV9vcl9jbGVhcl9iYWQoc3JjX3BtZCkgY29tbW9uIHRvIGJvdGggY2FzZXMgPw0KDQoN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcHRlX3JhbmdlKGRzdF92bWEsIHNy Y192bWEsIGRzdF9wbWQsIHNyY19wbWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkZHIsIG5leHQsIGZhbHNlKSkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07DQo+ICsgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgIH0gd2hpbGUg KGRzdF9wbWQrKywgc3JjX3BtZCsrLCBhZGRyID0gbmV4dCwgYWRkciAhPSBlbmQpOw0KPiAgICAg ICAgICByZXR1cm4gMDsNCj4gICB9DQo+IEBAIC0xMzM2LDYgKzEzODYsNyBAQCBjb3B5X3BhZ2Vf cmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICpkc3Rfdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnNyY192bWEpDQo+ICAgc3RydWN0IHphcF9kZXRhaWxzIHsNCj4gICAgICAgICAgc3RydWN0 IGZvbGlvICpzaW5nbGVfZm9saW87ICAgICAvKiBMb2NrZWQgZm9saW8gdG8gYmUgdW5tYXBwZWQg Ki8NCj4gICAgICAgICAgYm9vbCBldmVuX2Nvd3M7ICAgICAgICAgICAgICAgICAvKiBaYXAgQ09X ZWQgcHJpdmF0ZSBwYWdlcyB0b28/ICovDQo+ICsgICAgICAgYm9vbCBjb3dfcHRlOyAgICAgICAg ICAgICAgICAgICAvKiBEbyBub3QgZnJlZSBDT1cgUFRFICovDQo+ICAgfTsNCj4gDQo+ICAgLyog V2hldGhlciB3ZSBzaG91bGQgemFwIGFsbCBDT1dlZCAocHJpdmF0ZSkgcGFnZXMgdG9vICovDQo+ IEBAIC0xMzk4LDggKzE0NDksOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB6YXBfcHRlX3Jhbmdl KHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdl ID0gdm1fbm9ybWFsX3BhZ2Uodm1hLCBhZGRyLCBwdGVudCk7DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAodW5saWtlbHkoIXNob3VsZF96YXBfcGFnZShkZXRhaWxzLCBwYWdlKSkpDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtICAgICAgICAg ICAgICAgICAgICAgICBwdGVudCA9IHB0ZXBfZ2V0X2FuZF9jbGVhcl9mdWxsKG1tLCBhZGRyLCBw dGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGxiLT5mdWxsbW0pOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRldGFp bHMgfHwgIWRldGFpbHMtPmNvd19wdGUpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHRlbnQgPSBwdGVwX2dldF9hbmRfY2xlYXJfZnVsbChtbSwgYWRkciwgcHRlLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGxiLT5mdWxsbW0pOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgdGxiX3JlbW92ZV90 bGJfZW50cnkodGxiLCBwdGUsIGFkZHIpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KHVubGlrZWx5KCFwYWdlKSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGludWU7DQo+IEBAIC0xNDEzLDggKzE0NjUsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgemFw X3B0ZV9yYW5nZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlrZWx5KCEodm1hLT52bV9mbGFncyAmIFZNX1NFUV9SRUFEKSkp DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya19wYWdlX2Fj Y2Vzc2VkKHBhZ2UpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAg ICAgICAgICAgICAgICByc3NbbW1fY291bnRlcihwYWdlKV0tLTsNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgcGFnZV9yZW1vdmVfcm1hcChwYWdlLCB2bWEsIGZhbHNlKTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgaWYgKCFkZXRhaWxzIHx8ICFkZXRhaWxzLT5jb3dfcHRlKSB7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNzW21tX2NvdW50ZXIocGFnZSldLS07DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9yZW1vdmVfcm1hcChwYWdlLCB2 bWEsIGZhbHNlKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQoNCkNhbiB5b3UgZG8gdGhlIHJldmVy c2U6DQoNCgkJCWlmIChkZXRhaWxzICYmIGRldGFpbHMtPmNvd19wdGUpDQoJCQkJY29udGludWU7 DQoNCgkJCXJzc1ttbV9jb3VudGVyKHBhZ2UpXS0tOw0KCQkJcGFnZV9yZW1vdmVfcm1hcChwYWdl LCB2bWEsIGZhbHNlKTsNCg0KDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtl bHkocGFnZV9tYXBjb3VudChwYWdlKSA8IDApKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmludF9iYWRfcHRlKHZtYSwgYWRkciwgcHRlbnQsIHBhZ2UpOw0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KF9fdGxiX3JlbW92ZV9wYWdlKHRsYiwgcGFn ZSkpKSB7DQo+IEBAIC0xNDI1LDYgKzE0ODAsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB6YXBf cHRlX3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsNCj4gICAgICAgICAgICAgICAgICB9DQo+IA0KPiArICAgICAgICAgICAg ICAgLy8gVE9ETzogRGVhbCBDT1cgUFRFIHdpdGggc3dhcA0KPiArDQo+ICAgICAgICAgICAgICAg ICAgZW50cnkgPSBwdGVfdG9fc3dwX2VudHJ5KHB0ZW50KTsNCj4gICAgICAgICAgICAgICAgICBp ZiAoaXNfZGV2aWNlX3ByaXZhdGVfZW50cnkoZW50cnkpIHx8DQo+ICAgICAgICAgICAgICAgICAg ICAgIGlzX2RldmljZV9leGNsdXNpdmVfZW50cnkoZW50cnkpKSB7DQo+IEBAIC0xNTEzLDE2ICsx NTcwLDM0IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB6YXBfcG1kX3JhbmdlKHN0cnVj dCBtbXVfZ2F0aGVyICp0bGIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9j ayhwdGwpOw0KPiAgICAgICAgICAgICAgICAgIH0NCj4gDQo+IC0gICAgICAgICAgICAgICAvKg0K PiAtICAgICAgICAgICAgICAgICogSGVyZSB0aGVyZSBjYW4gYmUgb3RoZXIgY29uY3VycmVudCBN QURWX0RPTlRORUVEIG9yDQo+IC0gICAgICAgICAgICAgICAgKiB0cmFucyBodWdlIHBhZ2UgZmF1 bHRzIHJ1bm5pbmcsIGFuZCBpZiB0aGUgcG1kIGlzDQo+IC0gICAgICAgICAgICAgICAgKiBub25l IG9yIHRyYW5zIGh1Z2UgaXQgY2FuIGNoYW5nZSB1bmRlciB1cy4gVGhpcyBpcw0KPiAtICAgICAg ICAgICAgICAgICogYmVjYXVzZSBNQURWX0RPTlRORUVEIGhvbGRzIHRoZSBtbWFwX2xvY2sgaW4g cmVhZA0KPiAtICAgICAgICAgICAgICAgICogbW9kZS4NCj4gLSAgICAgICAgICAgICAgICAqLw0K PiAtICAgICAgICAgICAgICAgaWYgKHBtZF9ub25lX29yX3RyYW5zX2h1Z2Vfb3JfY2xlYXJfYmFk KHBtZCkpDQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dDsNCj4gLSAgICAgICAg ICAgICAgIG5leHQgPSB6YXBfcHRlX3JhbmdlKHRsYiwgdm1hLCBwbWQsIGFkZHIsIG5leHQsIGRl dGFpbHMpOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAodGVzdF9iaXQoTU1GX0NPV19QR1RB QkxFLCAmdGxiLT5tbS0+ZmxhZ3MpICYmDQo+ICsgICAgICAgICAgICAgICAgICAgIXBtZF9ub25l KCpwbWQpICYmICFwbWRfd3JpdGUoKnBtZCkpIHsNCg0KQ2FuJ3QgeW91IHVzZSBwbWRfbm9uZV9v cl90cmFuc19odWdlX29yX2NsZWFyX2JhZCgpIGFuZCBrZWVwIGl0IGNvbW1vbiA/IC4uLg0KDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6YXBfZGV0YWlscyBjb3dfcHRlX2RldGFp bHMgPSB7MH07DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvd19wdGVfZGV0YWlscyA9ICpkZXRhaWxzOw0K PiArICAgICAgICAgICAgICAgICAgICAgICBjb3dfcHRlX2RldGFpbHMuY293X3B0ZSA9IHRydWU7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIEZsdXNoIHRoZSBUTEIgYnV0IGRvIG5vdCBm cmVlIHRoZSBDT1cgUFRFICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSB6YXBf cHRlX3JhbmdlKHRsYiwgdm1hLCBwbWQsIGFkZHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsICZjb3dfcHRlX2RldGFpbHMpOw0KPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAoZGV0YWlscykNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqZGV0YWlscyA9IGNvd19wdGVfZGV0YWlsczsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaGFuZGxlX2Nvd19wdGUodm1hLCBwbWQsIGFkZHIsIGZhbHNlKTsNCg0KT3IgYWRk IGEgY29udGludWU7IGhlcmUgYW5kIGF2b2lkIHRoZSBlbHNlIGJlbG93DQoNCj4gKyAgICAgICAg ICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMtPmNvd19wdGUgPSBmYWxz ZTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICogSGVyZSB0aGVyZSBjYW4gYmUgb3RoZXIgY29uY3VycmVudCBNQURWX0RPTlRORUVEIG9y DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIHRyYW5zIGh1Z2UgcGFnZSBmYXVsdHMgcnVu bmluZywgYW5kIGlmIHRoZSBwbWQgaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogbm9u ZSBvciB0cmFucyBodWdlIGl0IGNhbiBjaGFuZ2UgdW5kZXIgdXMuIFRoaXMgaXMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICogYmVjYXVzZSBNQURWX0RPTlRORUVEIGhvbGRzIHRoZSBtbWFw X2xvY2sgaW4gcmVhZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBtb2RlLg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBt ZF9ub25lX29yX3RyYW5zX2h1Z2Vfb3JfY2xlYXJfYmFkKHBtZCkpDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ290byBuZXh0Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICBu ZXh0ID0gemFwX3B0ZV9yYW5nZSh0bGIsIHZtYSwgcG1kLCBhZGRyLCBuZXh0LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscyk7DQo+ICsgICAgICAgICAg ICAgICB9DQo+ICAgbmV4dDoNCj4gICAgICAgICAgICAgICAgICBjb25kX3Jlc2NoZWQoKTsNCj4g ICAgICAgICAgfSB3aGlsZSAocG1kKyssIGFkZHIgPSBuZXh0LCBhZGRyICE9IGVuZCk7DQo+IEBA IC00NjIxLDYgKzQ2OTYsMTM0IEBAIHZvaWQgY293X3B0ZV9mYWxsYmFjayhzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCwNCj4gICAgICAgICAgQlVHX09OKHBtZF9wYWdlKCpw bWQpLT5jb3dfcHRlX293bmVyKTsNCj4gICB9DQo+IA0KPiArLyogQnJlYWsgQ09XIFBURToNCj4g KyAqIC0gdHdvIHN0YXRlIGhlcmUNCj4gKyAqICAgLSBBZnRlciBmb3JrIDogICBbcGFyZW50LCBy c3M9MSwgcmVmPTIsIHdyaXRlPU5PICwgb3duZXI9cGFyZW50XQ0KPiArICogICAgICAgICAgICAg ICAgIHRvIFtwYXJlbnQsIHJzcz0xLCByZWY9MSwgd3JpdGU9WUVTLCBvd25lcj1OVUxMICBdDQo+ ICsgKiAgICAgICAgICAgICAgICAgICAgQ09XIFBURSBiZWNvbWUgW3JlZj0xLCB3cml0ZT1OTyAs IG93bmVyPU5VTEwgIF0NCj4gKyAqICAgICAgICAgICAgICAgICAgICBbY2hpbGQgLCByc3M9MCwg cmVmPTIsIHdyaXRlPU5PICwgb3duZXI9cGFyZW50XQ0KPiArICogICAgICAgICAgICAgICAgIHRv IFtjaGlsZCAsIHJzcz0xLCByZWY9MSwgd3JpdGU9WUVTLCBvd25lcj1OVUxMICBdDQo+ICsgKiAg ICAgICAgICAgICAgICAgICAgQ09XIFBURSBiZWNvbWUgW3JlZj0xLCB3cml0ZT1OTyAsIG93bmVy PXBhcmVudF0NCj4gKyAqICAgTk9URQ0KPiArICogICAgIC0gQ29weSB0aGUgQ09XIFBURSB0byBu ZXcgUFRFLg0KPiArICogICAgIC0gQ2xlYXIgdGhlIG93bmVyIG9mIENPVyBQVEUgYW5kIHNldCBQ TUQgZW50cnkgd3JpdGFibGUgd2hlbiBpdCBpcyBvd25lci4NCj4gKyAqICAgICAtIEluY3JlYXNl IFJTUyBpZiBpdCBpcyBub3Qgb3duZXIuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgYnJlYWtfY293 X3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCwNCj4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbW1fc3Ry dWN0ICptbSA9IHZtYS0+dm1fbW07DQo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5k Ow0KPiArICAgICAgIHBtZF90IGNvd2VkX2VudHJ5ID0gKnBtZDsNCj4gKw0KPiArICAgICAgIGlm IChjb3dfcHRlX3JlZmNvdW50X3JlYWQoJmNvd2VkX2VudHJ5KSA9PSAxKSB7DQo+ICsgICAgICAg ICAgICAgICBjb3dfcHRlX2ZhbGxiYWNrKHZtYSwgcG1kLCBhZGRyKTsNCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAxOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIEJVR19PTihwbWRfd3Jp dGUoY293ZWRfZW50cnkpKTsNCj4gKw0KPiArICAgICAgIHN0YXJ0ID0gYWRkciAmIFBNRF9NQVNL Ow0KPiArICAgICAgIGVuZCA9IChhZGRyICsgUE1EX1NJWkUpICYgUE1EX01BU0s7DQo+ICsNCj4g KyAgICAgICBwbWRfY2xlYXIocG1kKTsNCj4gKyAgICAgICBpZiAoY29weV9wdGVfcmFuZ2Uodm1h LCB2bWEsIHBtZCwgJmNvd2VkX2VudHJ5LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXJ0LCBlbmQsIHRydWUpKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 DQo+ICsNCj4gKyAgICAgICAvKiBIZXJlLCBpdCBpcyB0aGUgb3duZXIsIHNvIGNsZWFyIHRoZSBv d25lcnNoaXAuIFRvIGtlZXAgUlNTIHN0YXRlIGFuZA0KPiArICAgICAgICAqIHBhZ2UgdGFibGUg Ynl0ZXMgY29ycmVjdCwgaXQgbmVlZHMgdG8gZGVjcmVhc2UgdGhlbS4NCj4gKyAgICAgICAgKi8N Cj4gKyAgICAgICBpZiAoY293X3B0ZV9vd25lcl9pc19zYW1lKCZjb3dlZF9lbnRyeSwgcG1kKSkg ew0KPiArICAgICAgICAgICAgICAgc2V0X2Nvd19wdGVfb3duZXIoJmNvd2VkX2VudHJ5LCBOVUxM KTsNCj4gKyAgICAgICAgICAgICAgIGNvd19wdGVfcnNzKG1tLCB2bWEsIHBtZCwgc3RhcnQsIGVu ZCwgZmFsc2UgLyogZGVjICovKTsNCj4gKyAgICAgICAgICAgICAgIG1tX2RlY19ucl9wdGVzKG1t KTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBwbWRfcHV0X3B0ZSh2bWEsICZjb3dlZF9l bnRyeSwgYWRkcik7DQo+ICsNCj4gKyAgICAgICBCVUdfT04oIXBtZF93cml0ZSgqcG1kKSk7DQo+ ICsgICAgICAgQlVHX09OKGNvd19wdGVfcmVmY291bnRfcmVhZChwbWQpICE9IDEpOw0KPiArDQo+ ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgemFwX2Nvd19wdGUo c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHBtZF90ICpwbWQsDQo+ICsgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGFkZHIpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IG1tX3N0cnVjdCAq bW0gPSB2bWEtPnZtX21tOw0KPiArICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsNCj4g Kw0KPiArICAgICAgIGlmIChwbWRfcHV0X3B0ZSh2bWEsIHBtZCwgYWRkcikpIHsNCj4gKyAgICAg ICAgICAgICAgIC8vIGZhbGxiYWNrDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMTsNCj4gKyAg ICAgICB9DQoNCk5vIHsgfSBmb3IgYSBzaW5nbGUgbGluZSBpZi4gVGhlIGNvbW1lbnQgY291bGQg Z28ganVzdCBiZWZvcmUgdGhlIGlmLg0KDQo+ICsNCj4gKyAgICAgICBzdGFydCA9IGFkZHIgJiBQ TURfTUFTSzsNCj4gKyAgICAgICBlbmQgPSAoYWRkciArIFBNRF9TSVpFKSAmIFBNRF9NQVNLOw0K PiArDQo+ICsgICAgICAgLyogSWYgUE1EIGVudHJ5IGlzIG93bmVyLCBjbGVhciB0aGUgb3duZXJz aGlwLCBhbmQgZGVjcmVhc2UgUlNTIHN0YXRlDQo+ICsgICAgICAgICogYW5kIHBndGFibGVfYnl0 ZXMuDQo+ICsgICAgICAgICovDQoNClBsZWFzZSBmb2xsb3cgdGhlIHN0YW5kYXJkIGNvbW1lbnRz IHN0eWxlOg0KDQovKg0KICAqIFNvbWUgdGV4dA0KICAqIE1vcmUgdGV4dA0KICAqLw0KDQo+ICsg ICAgICAgaWYgKGNvd19wdGVfb3duZXJfaXNfc2FtZShwbWQsIHBtZCkpIHsNCj4gKyAgICAgICAg ICAgICAgIHNldF9jb3dfcHRlX293bmVyKHBtZCwgTlVMTCk7DQo+ICsgICAgICAgICAgICAgICBj b3dfcHRlX3JzcyhtbSwgdm1hLCBwbWQsIHN0YXJ0LCBlbmQsIGZhbHNlIC8qIGRlYyAqLyk7DQo+ ICsgICAgICAgICAgICAgICBtbV9kZWNfbnJfcHRlcyhtbSk7DQo+ICsgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgcG1kX2NsZWFyKHBtZCk7DQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsN Cj4gKy8qIElmIGFsbG9jIHNldCBtZWFucyBpdCB3b24ndCBicmVhayBDT1cuIEZvciB0aGlzIGNh c2UsIGl0IHdpbGwganVzdCBkZWNyZWFzZQ0KPiArICogdGhlIHJlZmVyZW5jZSBjb3VudC4gVGhl IGFkZHJlc3MgbmVlZHMgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgUFRFIHBhZ2UNCj4g KyAqIHNpbmNlIENPVyBQVEUgaXMgY29weS1vbi13cml0ZSB0aGUgZW50aXJlIFBURS4NCj4gKyAq IElmIHBtZCBpcyBOVUxMLCBpdCB3aWxsIGdldCB0aGUgcG1kIGZyb20gdm1hIGFuZCBjaGVjayBp dCBpcyBjb3dpbmcuDQo+ICsgKi8NCj4gK2ludCBoYW5kbGVfY293X3B0ZShzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKnBtZCwNCj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgYWRkciwgYm9vbCBhbGxvYykNCj4gK3sNCj4gKyAgICAgICBwZ2RfdCAqcGdkOw0KPiArICAg ICAgIHA0ZF90ICpwNGQ7DQo+ICsgICAgICAgcHVkX3QgKnB1ZDsNCj4gKyAgICAgICBzdHJ1Y3Qg bW1fc3RydWN0ICptbSA9IHZtYS0+dm1fbW07DQo+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ICsg ICAgICAgc3BpbmxvY2tfdCAqcHRsID0gTlVMTDsNCj4gKw0KPiArICAgICAgIGlmICghcG1kKSB7 DQo+ICsgICAgICAgICAgICAgICBwZ2QgPSBwZ2Rfb2Zmc2V0KG1tLCBhZGRyKTsNCj4gKyAgICAg ICAgICAgICAgIGlmIChwZ2Rfbm9uZV9vcl9jbGVhcl9iYWQocGdkKSkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgICAgICAgICBwNGQgPSBwNGRfb2Zmc2V0 KHBnZCwgYWRkcik7DQo+ICsgICAgICAgICAgICAgICBpZiAocDRkX25vbmVfb3JfY2xlYXJfYmFk KHA0ZCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAgICAg ICAgICAgcHVkID0gcHVkX29mZnNldChwNGQsIGFkZHIpOw0KPiArICAgICAgICAgICAgICAgaWYg KHB1ZF9ub25lX29yX2NsZWFyX2JhZChwdWQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gMDsNCj4gKyAgICAgICAgICAgICAgIHBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTsN Cj4gKyAgICAgICAgICAgICAgIGlmIChwbWRfbm9uZSgqcG1kKSB8fCBwbWRfd3JpdGUoKnBtZCkp DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAgIH0NCj4gKw0K PiArICAgICAgIC8vIFRPRE86IGhhbmRsZSBDT1cgUFRFIHdpdGggc3dhcA0KPiArICAgICAgIEJV R19PTihpc19zd2FwX3BtZCgqcG1kKSk7DQo+ICsgICAgICAgQlVHX09OKHBtZF90cmFuc19odWdl KCpwbWQpKTsNCj4gKyAgICAgICBCVUdfT04ocG1kX2Rldm1hcCgqcG1kKSk7DQo+ICsNCj4gKyAg ICAgICBCVUdfT04ocG1kX25vbmUoKnBtZCkpOw0KPiArICAgICAgIEJVR19PTihwbWRfd3JpdGUo KnBtZCkpOw0KDQpTbyBtYW55IEJVR19PTiA/IEFsbCB0aGlzIGhhcyBhIGNvc3QgZHVyaW5nIHRo ZSBleGVjdXRpb24uDQoNCj4gKw0KPiArICAgICAgIHB0bCA9IHB0ZV9sb2NrcHRyKG1tLCBwbWQp Ow0KPiArICAgICAgIHNwaW5fbG9jayhwdGwpOw0KPiArICAgICAgIGlmICghYWxsb2MpDQo+ICsg ICAgICAgICAgICAgICByZXQgPSB6YXBfY293X3B0ZSh2bWEsIHBtZCwgYWRkcik7DQo+ICsgICAg ICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgcmV0ID0gYnJlYWtfY293X3B0ZSh2bWEsIHBtZCwg YWRkcik7DQoNCkJldHRlciBhcw0KDQoJaWYgKGFsbG9jKQ0KCQlicmVha19jb3dfcHRlKCkNCgll bHNlDQoJCXphcF9jb3dfcHRlKCkNCg0KPiArICAgICAgIHNwaW5fdW5sb2NrKHB0bCk7DQo+ICsN Cj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICAgLyoNCj4gICAgKiBUaGVzZSBy b3V0aW5lcyBhbHNvIG5lZWQgdG8gaGFuZGxlIHN0dWZmIGxpa2UgbWFya2luZyBwYWdlcyBkaXJ0 eQ0KPiAgICAqIGFuZC9vciBhY2Nlc3NlZCBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0IGRv IGl0IGluIGhhcmR3YXJlIChtb3N0DQo+IEBAIC00ODI1LDYgKzUwMjgsMTkgQEAgc3RhdGljIHZt X2ZhdWx0X3QgX19oYW5kbGVfbW1fZmF1bHQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAg ICAgICAgLyogV2hlbiB0aGUgUE1EIGVudHJ5IGlzIHNldCB3aXRoIHdyaXRlIHByb3RlY3Rpb24s IGl0IG5lZWRzIHRvDQo+ICsgICAgICAgICAgICAgICAgKiBoYW5kbGUgdGhlIG9uLWRlbWFuZCBQ VEUuIEl0IHdpbGwgYWxsb2NhdGUgYSBuZXcgUFRFIGFuZCBjb3B5DQo+ICsgICAgICAgICAgICAg ICAgKiB0aGUgb2xkIG9uZSwgdGhlbiBzZXQgdGhpcyBlbnRyeSB3cml0ZWFibGUgYW5kIGRlY3Jl YXNlIHRoZQ0KPiArICAgICAgICAgICAgICAgICogcmVmZXJlbmNlIGNvdW50IGF0IENPVyBQVEUu DQo+ICsgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgIGlmICh0ZXN0X2JpdChN TUZfQ09XX1BHVEFCTEUsICZtbS0+ZmxhZ3MpICYmDQo+ICsgICAgICAgICAgICAgICAgICAgIXBt ZF9ub25lKHZtZi5vcmlnX3BtZCkgJiYgIXBtZF93cml0ZSh2bWYub3JpZ19wbWQpKSB7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVfY293X3B0ZSh2bWYudm1hLCB2bWYucG1k LCB2bWYucmVhbF9hZGRyZXNzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAoY293X3B0 ZV9yZWZjb3VudF9yZWFkKCZ2bWYub3JpZ19wbWQpID4gMSkgPw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICB0cnVlIDogZmFsc2UpIDwgMCkNCg0KKGNvbmRpdGlvbiA/IHRydWUgOiBmYWxz ZSkgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyAoY29uZGl0aW9uKQ0KDQoNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVk1fRkFVTFRfT09NOw0KPiArICAgICAgICAgICAg ICAgfQ0KPiAgICAgICAgICB9DQo+IA0KPiAgICAgICAgICByZXR1cm4gaGFuZGxlX3B0ZV9mYXVs dCgmdm1mKTsNCj4gZGlmZiAtLWdpdCBhL21tL21tYXAuYyBiL21tL21tYXAuYw0KPiBpbmRleCAz MTNiNTdkNTVhNjMuLmUzYTljMzhlODdlOCAxMDA2NDQNCj4gLS0tIGEvbW0vbW1hcC5jDQo+ICsr KyBiL21tL21tYXAuYw0KPiBAQCAtMjcwOSw2ICsyNzA5LDEwIEBAIGludCBfX3NwbGl0X3ZtYShz dHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOw0KPiAgICAgICAgICB9DQo+IA0KPiArICAg ICAgIGlmICh0ZXN0X2JpdChNTUZfQ09XX1BHVEFCTEUsICZ2bWEtPnZtX21tLT5mbGFncykgJiYN Cj4gKyAgICAgICAgICAgaGFuZGxlX2Nvd19wdGUodm1hLCBOVUxMLCBhZGRyLCB0cnVlKSA8IDAp DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiAgICAgICAgICBuZXcg PSB2bV9hcmVhX2R1cCh2bWEpOw0KPiAgICAgICAgICBpZiAoIW5ldykNCj4gICAgICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsNCj4gZGlmZiAtLWdpdCBhL21tL21yZW1hcC5jIGIvbW0vbXJl bWFwLmMNCj4gaW5kZXggMzAzZDMyOTBiOTM4Li4wMWFlZmRmYzYxYjcgMTAwNjQ0DQo+IC0tLSBh L21tL21yZW1hcC5jDQo+ICsrKyBiL21tL21yZW1hcC5jDQo+IEBAIC01MzIsNiArNTMyLDExIEBA IHVuc2lnbmVkIGxvbmcgbW92ZV9wYWdlX3RhYmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwNCj4gICAgICAgICAgICAgICAgICBvbGRfcG1kID0gZ2V0X29sZF9wbWQodm1hLT52bV9tbSwg b2xkX2FkZHIpOw0KPiAgICAgICAgICAgICAgICAgIGlmICghb2xkX3BtZCkNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAodGVz dF9iaXQoTU1GX0NPV19QR1RBQkxFLCAmdm1hLT52bV9tbS0+ZmxhZ3MpICYmDQo+ICsgICAgICAg ICAgICAgICAgICAgIXBtZF9ub25lKCpvbGRfcG1kKSAmJiAhcG1kX3dyaXRlKCpvbGRfcG1kKSkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2Nvd19wdGUodm1hLCBvbGRfcG1kLCBv bGRfYWRkciwgdHJ1ZSk7DQo+ICsNCj4gICAgICAgICAgICAgICAgICBuZXdfcG1kID0gYWxsb2Nf bmV3X3BtZCh2bWEtPnZtX21tLCB2bWEsIG5ld19hZGRyKTsNCj4gICAgICAgICAgICAgICAgICBp ZiAoIW5ld19wbWQpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gLS0NCj4g Mi4zNi4xDQo+IA==