Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp631750pxv; Thu, 24 Jun 2021 16:16:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1SjdzUmBFUNiGwwCqPYkEGD8uUl//wVMGAfzJLF6LgkjbyJ/4UEYAKyY9V4jgQOQeenes X-Received: by 2002:a17:906:d83:: with SMTP id m3mr7648172eji.63.1624576578905; Thu, 24 Jun 2021 16:16:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624576578; cv=none; d=google.com; s=arc-20160816; b=nvn0ujk7KUMThBr7GEnewf+FnoeOEHb0KfVhHeTDu8cun2CWU70erftoyOkp42qVZh kM2ZXpK2M2rMw3nHfF8oR7F0pbv4IUQLeWOqQc5BnKFtqPyOrHMwXRj1Hhi7bC1PtVdV vHG8W4PbXujCyPzgk9aYGazodD5znC8hpznrcOui7R4NCt2oR3mtVV8b+IBIjpa4IGl8 HYmckE7Vu+JZxOGW8aNgojlIhoBNkGbyqsHCtM8MWYpPIJKFl2IhmPE3nFP7e69DLRJt DO0j8rW3SlBk3FgWW6Vp3m+95ODK9G1VheWqt9VAAY7HVgkd6bvNfYyTUn1b9ndmiXZu w4nQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=u3ZH98XqeUwzj7PVnBVUPtV6lrGKqwzixyXjdzSl2dE=; b=vUOl/Ou8NhTbDwnRdje/1nfvhSfDFbVZxDEzCWUvrKrrHcvQiIBxENYIoF7p/z8TnH N4DzBukJxnUBMWqb2lnSO/Gjrils8MuHR5g8M39BRurMTlQhS5i/Tb7302IYBn/DFXyD P6uPpabkZNWMrkNtYktYiCK8Qy97xanGSykVZa0chSslntROT9uP/YErEfML2DnHfxoK MFvyfREjKdBQk/0zDzODZsmP27htmZipSFIOlAIe1gY8cXEQMHCl48ExLJ2loLfeiXOX buaL1r8JxIy20RSgVYxN4yJ2CloIWyK6wYOoY+JFplCSAJvcjzJWx2HJ/X48Q3WO/1xO GBWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alliedtelesis.co.nz header.s=mail181024 header.b=WnEoLX25; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alliedtelesis.co.nz Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c11si4057024edw.330.2021.06.24.16.15.52; Thu, 24 Jun 2021 16:16:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@alliedtelesis.co.nz header.s=mail181024 header.b=WnEoLX25; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alliedtelesis.co.nz Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232871AbhFXXPB (ORCPT + 99 others); Thu, 24 Jun 2021 19:15:01 -0400 Received: from gate2.alliedtelesis.co.nz ([202.36.163.20]:47674 "EHLO gate2.alliedtelesis.co.nz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232614AbhFXXPA (ORCPT ); Thu, 24 Jun 2021 19:15:00 -0400 Received: from svr-chch-seg1.atlnz.lc (mmarshal3.atlnz.lc [10.32.18.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by gate2.alliedtelesis.co.nz (Postfix) with ESMTPS id 6641B80719; Fri, 25 Jun 2021 11:12:38 +1200 (NZST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alliedtelesis.co.nz; s=mail181024; t=1624576358; bh=u3ZH98XqeUwzj7PVnBVUPtV6lrGKqwzixyXjdzSl2dE=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=WnEoLX25WKFImfIwQ+CV2DW2j35tZZ1/sqA8NMXG9SPRudgvO+aYqYKsZkO8SfduU omXzb37JnrNU58Ez2208zq6l+CFDd1GNtqioRj4iHkYRfARe1Tv7DTje+cENVm1bCV cAD9OGLJfF4OpRjTGKY0X+h126uxO2B2PvjZtiuCkXaCnKms3dHEe//UKUvlWOY+AQ uHaTQi0zMUMjQ3dAsf7bTwWJhobp+QOdtghHM9brgErBtHFU0/ykmksJ364mgbLOLN ARWrUmbt1JFSgYTsoSOh/aXnTPix72PZllHuNRyGy4nQkrCFtJ9P6F2rXH0WKH4ct5 4vq/kmvd0wpbg== Received: from svr-chch-ex1.atlnz.lc (Not Verified[2001:df5:b000:bc8::77]) by svr-chch-seg1.atlnz.lc with Trustwave SEG (v8,2,6,11305) id ; Fri, 25 Jun 2021 11:12:38 +1200 Received: from svr-chch-ex1.atlnz.lc (2001:df5:b000:bc8:409d:36f5:8899:92e8) by svr-chch-ex1.atlnz.lc (2001:df5:b000:bc8:409d:36f5:8899:92e8) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 25 Jun 2021 11:12:37 +1200 Received: from svr-chch-ex1.atlnz.lc ([fe80::409d:36f5:8899:92e8]) by svr-chch-ex1.atlnz.lc ([fe80::409d:36f5:8899:92e8%12]) with mapi id 15.00.1497.018; Fri, 25 Jun 2021 11:12:37 +1200 From: Paul Davey To: "bbhatt@codeaurora.org" CC: "linux-kernel@vger.kernel.org" , "mani@kernel.org" , "linux-arm-msm@vger.kernel.org" , "hemantk@codeaurora.org" Subject: Re: [PATCH v2 2/2] bus: mhi: Fix MHI DMA structure endianness Thread-Topic: [PATCH v2 2/2] bus: mhi: Fix MHI DMA structure endianness Thread-Index: AQHXZ9mNSzGxb5mHCkaF0xSMlRRN1Ksho7oAgAFgQIA= Date: Thu, 24 Jun 2021 23:12:37 +0000 Message-ID: <35213f5d94e1e2d36396c5055c1f92c28581d922.camel@alliedtelesis.co.nz> References: <20210623024327.15029-1-paul.davey@alliedtelesis.co.nz> <20210623024327.15029-3-paul.davey@alliedtelesis.co.nz> In-Reply-To: Accept-Language: en-NZ, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [2001:df5:b000:23:ed41:9734:8f2a:446d] Content-Type: text/plain; charset="utf-8" Content-ID: <66F8A00685CE304A956ED36B00F3B62A@atlnz.lc> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-SEG-SpamProfiler-Analysis: v=2.3 cv=IOh89TnG c=1 sm=1 tr=0 a=Xf/6aR1Nyvzi7BryhOrcLQ==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=r6YtysWOX24A:10 a=LpQP-O61AAAA:8 a=Kvuy9FO3OA2LMie3zNsA:9 a=QEXdDO2ut3YA:10 a=pioyyrs4ZptJ924tMmac:22 X-SEG-SpamProfiler-Score: 0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIxLTA2LTIzIGF0IDE5OjExIC0wNzAwLCBCaGF1bWlrIEJoYXR0IHdyb3RlOg0K PiBPbiAyMDIxLTA2LTIyIDA3OjQzIFBNLCBQYXVsIERhdmV5IHdyb3RlOg0KPiA+IFRoZSBNSEkg ZHJpdmVyIGRvZXMgbm90IHdvcmsgb24gYmlnIGVuZGlhbiBhcmNoaXRlY3R1cmVzLiAgVGhlDQo+ ID4gY29udHJvbGxlciBuZXZlciB0cmFuc2l0aW9ucyBpbnRvIG1pc3Npb24gbW9kZS4gIFRoaXMg YXBwZWFycyB0byBiZQ0KPiA+IGR1ZQ0KPiA+IHRvIHRoZSBtb2RlbSBkZXZpY2UgZXhwZWN0aW5n IHRoZSB2YXJpb3VzIGNvbnRleHRzIGFuZCB0cmFuc2Zlcg0KPiA+IHJpbmdzIA0KPiA+IHRvDQo+ ID4gaGF2ZSBmaWVsZHMgaW4gbGl0dGxlIGVuZGlhbiBvcmRlciBpbiBtZW1vcnksIGJ1dCB0aGUg ZHJpdmVyDQo+ID4gY29uc3RydWN0cw0KPiA+IHRoZW0gaW4gbmF0aXZlIGVuZGlhbm5lc3MuDQo+ ID4gDQo+ID4gRml4IE1ISSBldmVudCwgY2hhbm5lbCBhbmQgY29tbWFuZCBjb250ZXh0cyBhbmQg VFJFIGhhbmRsaW5nIG1hY3Jvcw0KPiA+IHRvDQo+ID4gdXNlIGV4cGxpY2l0IGNvbnZlcnNpb24g dG8gbGl0dGxlIGVuZGlhbi4gIE1hcmsgZmllbGRzIGluIHJlbGV2YW50DQo+ID4gc3RydWN0dXJl cyBhcyBsaXR0bGUgZW5kaWFuIHRvIGRvY3VtZW50IHRoaXMgcmVxdWlyZW1lbnQuDQo+ID4gDQo+ ID4gVGVzdGVkLW9uOiBYODZfNjQgZGVza3RvcCBydW5uaW5nIFVidW50dSAxOC4wNCBkaXN0cmli dXRpb24gd2l0aA0KPiA+IFNEWDY1DQo+ID4gZGV2aWNlDQo+ID4gVGVzdGVkLWJ5OiBCaGF1bWlr IEJoYXR0IDxiYmhhdHRAY29kZWF1cm9yYS5vcmc+DQo+ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBE YXZleSA8cGF1bC5kYXZleUBhbGxpZWR0ZWxlc2lzLmNvLm56Pg0KPiA+IC0tLQ0KPiA+ICBkcml2 ZXJzL2J1cy9taGkvY29yZS9kZWJ1Z2ZzLmMgIHwgIDI2ICsrKy0tLS0NCj4gPiAgZHJpdmVycy9i dXMvbWhpL2NvcmUvaW5pdC5jICAgICB8ICAzNiArKysrLS0tLS0NCj4gPiAgZHJpdmVycy9idXMv bWhpL2NvcmUvaW50ZXJuYWwuaCB8IDEyOSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiA+ IC0tLS0tLQ0KPiA+ICBkcml2ZXJzL2J1cy9taGkvY29yZS9tYWluLmMgICAgIHwgIDM2ICsrKyst LS0tLQ0KPiA+ICBkcml2ZXJzL2J1cy9taGkvY29yZS9wbS5jICAgICAgIHwgICA4ICstDQo+ID4g IDUgZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkNCj4g PiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9idXMvbWhpL2NvcmUvZGVidWdmcy5jIA0KPiA+ IGIvZHJpdmVycy9idXMvbWhpL2NvcmUvZGVidWdmcy5jDQo+ID4gaW5kZXggODU4ZDc1MTY0MTBi Li5kODE4NTg2YzIyOWQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9idXMvbWhpL2NvcmUvZGVi dWdmcy5jDQo+ID4gKysrIGIvZHJpdmVycy9idXMvbWhpL2NvcmUvZGVidWdmcy5jDQo+ID4gQEAg LTYwLDE2ICs2MCwxNiBAQCBzdGF0aWMgaW50IG1oaV9kZWJ1Z2ZzX2V2ZW50c19zaG93KHN0cnVj dA0KPiA+IHNlcV9maWxlDQo+ID4gKm0sIHZvaWQgKmQpDQo+ID4gIAkJfQ0KPiA+IA0KPiA+ICAJ CXNlcV9wcmludGYobSwgIkluZGV4OiAlZCBpbnRtb2QgY291bnQ6ICVsdSB0aW1lOiAlbHUiLA0K PiA+IC0JCQkgICBpLCAoZXJfY3R4dC0+aW50bW9kICYgRVZfQ1RYX0lOVE1PRENfTUFTSykNCj4g PiA+Pg0KPiA+ICsJCQkgICBpLCAobGUzMl90b19jcHUoZXJfY3R4dC0+aW50bW9kKSAmDQo+ID4g RVZfQ1RYX0lOVE1PRENfTUFTSykgPj4NCj4gPiAgCQkJICAgRVZfQ1RYX0lOVE1PRENfU0hJRlQs DQo+ID4gLQkJCSAgIChlcl9jdHh0LT5pbnRtb2QgJiBFVl9DVFhfSU5UTU9EVF9NQVNLKSA+Pg0K PiA+ICsJCQkgICAobGUzMl90b19jcHUoZXJfY3R4dC0+aW50bW9kKSAmDQo+ID4gRVZfQ1RYX0lO VE1PRFRfTUFTSykgPj4NCj4gPiAgCQkJICAgRVZfQ1RYX0lOVE1PRFRfU0hJRlQpOw0KPiA+IA0K PiA+IC0JCXNlcV9wcmludGYobSwgIiBiYXNlOiAweCUwbGx4IGxlbjogMHglbGx4IiwgZXJfY3R4 dC0NCj4gPiA+cmJhc2UsDQo+ID4gLQkJCSAgIGVyX2N0eHQtPnJsZW4pOw0KPiA+ICsJCXNlcV9w cmludGYobSwgIiBiYXNlOiAweCUwbGx4IGxlbjogMHglbGx4IiwgDQo+ID4gbGU2NF90b19jcHUo ZXJfY3R4dC0+cmJhc2UpLA0KPiA+ICsJCQkgICBsZTY0X3RvX2NwdShlcl9jdHh0LT5ybGVuKSk7 DQo+ID4gDQo+ID4gLQkJc2VxX3ByaW50ZihtLCAiIHJwOiAweCVsbHggd3A6IDB4JWxseCIsIGVy X2N0eHQtPnJwLA0KPiA+IC0JCQkgICBlcl9jdHh0LT53cCk7DQo+ID4gKwkJc2VxX3ByaW50Ziht LCAiIHJwOiAweCVsbHggd3A6IDB4JWxseCIsDQo+ID4gbGU2NF90b19jcHUoZXJfY3R4dC0+cnAp LA0KPiA+ICsJCQkgICBsZTY0X3RvX2NwdShlcl9jdHh0LT53cCkpOw0KPiA+IA0KPiA+ICAJCXNl cV9wcmludGYobSwgIiBsb2NhbCBycDogMHglcEsgZGI6IDB4JXBhZFxuIiwgcmluZy0NCj4gPiA+ cnAsDQo+ID4gIAkJCSAgICZtaGlfZXZlbnQtPmRiX2NmZy5kYl92YWwpOw0KPiA+IEBAIC0xMDYs MTggKzEwNiwxOCBAQCBzdGF0aWMgaW50IG1oaV9kZWJ1Z2ZzX2NoYW5uZWxzX3Nob3coc3RydWN0 DQo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmQpDQo+ID4gDQo+ID4gIAkJc2VxX3ByaW50ZihtLA0K PiA+ICAJCQkgICAiJXMoJXUpIHN0YXRlOiAweCVseCBicnN0bW9kZTogMHglbHgNCj4gPiBwb2xs Y2ZnOiAweCVseCIsDQo+ID4gLQkJCSAgIG1oaV9jaGFuLT5uYW1lLCBtaGlfY2hhbi0+Y2hhbiwg KGNoYW5fY3R4dC0NCj4gPiA+Y2hjZmcgJg0KPiA+ICsJCQkgICBtaGlfY2hhbi0+bmFtZSwgbWhp X2NoYW4tPmNoYW4sDQo+ID4gKGxlMzJfdG9fY3B1KGNoYW5fY3R4dC0+Y2hjZmcpICYNCj4gPiAg CQkJICAgQ0hBTl9DVFhfQ0hTVEFURV9NQVNLKSA+Pg0KPiA+IENIQU5fQ1RYX0NIU1RBVEVfU0hJ RlQsDQo+ID4gLQkJCSAgIChjaGFuX2N0eHQtPmNoY2ZnICYgQ0hBTl9DVFhfQlJTVE1PREVfTUFT SykNCj4gPiA+Pg0KPiA+IC0JCQkgICBDSEFOX0NUWF9CUlNUTU9ERV9TSElGVCwgKGNoYW5fY3R4 dC0+Y2hjZmcgJg0KPiA+ICsJCQkgICAobGUzMl90b19jcHUoY2hhbl9jdHh0LT5jaGNmZykgJg0K PiA+IENIQU5fQ1RYX0JSU1RNT0RFX01BU0spID4+DQo+ID4gKwkJCSAgIENIQU5fQ1RYX0JSU1RN T0RFX1NISUZULA0KPiA+IChsZTMyX3RvX2NwdShjaGFuX2N0eHQtPmNoY2ZnKSAmDQo+ID4gIAkJ CSAgIENIQU5fQ1RYX1BPTExDRkdfTUFTSykgPj4NCj4gPiBDSEFOX0NUWF9QT0xMQ0ZHX1NISUZU KTsNCj4gPiANCj4gPiAtCQlzZXFfcHJpbnRmKG0sICIgdHlwZTogMHgleCBldmVudCByaW5nOiAl dSIsIGNoYW5fY3R4dC0NCj4gPiA+Y2h0eXBlLA0KPiA+IC0JCQkgICBjaGFuX2N0eHQtPmVyaW5k ZXgpOw0KPiA+ICsJCXNlcV9wcmludGYobSwgIiB0eXBlOiAweCV4IGV2ZW50IHJpbmc6ICV1Iiwg DQo+ID4gbGUzMl90b19jcHUoY2hhbl9jdHh0LT5jaHR5cGUpLA0KPiA+ICsJCQkgICBsZTMyX3Rv X2NwdShjaGFuX2N0eHQtPmVyaW5kZXgpKTsNCj4gPiANCj4gPiAgCQlzZXFfcHJpbnRmKG0sICIg YmFzZTogMHglbGx4IGxlbjogMHglbGx4IHJwOiAweCVsbHggd3A6DQo+ID4gMHglbGx4IiwNCj4g PiAtCQkJICAgY2hhbl9jdHh0LT5yYmFzZSwgY2hhbl9jdHh0LT5ybGVuLA0KPiA+IGNoYW5fY3R4 dC0+cnAsDQo+ID4gLQkJCSAgIGNoYW5fY3R4dC0+d3ApOw0KPiA+ICsJCQkgICBsZTY0X3RvX2Nw dShjaGFuX2N0eHQtPnJiYXNlKSwNCj4gPiBsZTY0X3RvX2NwdShjaGFuX2N0eHQtPnJsZW4pLA0K PiA+ICsJCQkgICBsZTY0X3RvX2NwdShjaGFuX2N0eHQtPnJwKSwNCj4gPiBsZTY0X3RvX2NwdShj aGFuX2N0eHQtPndwKSk7DQo+ID4gDQo+ID4gIAkJc2VxX3ByaW50ZihtLCAiIGxvY2FsIHJwOiAw eCVwSyBsb2NhbCB3cDogMHglcEsgZGI6DQo+ID4gMHglcGFkXG4iLA0KPiA+ICAJCQkgICByaW5n LT5ycCwgcmluZy0+d3AsDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYnVzL21oaS9jb3JlL2lu aXQuYw0KPiA+IGIvZHJpdmVycy9idXMvbWhpL2NvcmUvaW5pdC5jDQo+ID4gaW5kZXggMDcwNmVi MDQ2ZjJhLi43Nzk2MjgyOTk0MWEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9idXMvbWhpL2Nv cmUvaW5pdC5jDQo+ID4gKysrIGIvZHJpdmVycy9idXMvbWhpL2NvcmUvaW5pdC5jDQo+ID4gQEAg LTI5MywxNyArMjkzLDE3IEBAIGludCBtaGlfaW5pdF9kZXZfY3R4dChzdHJ1Y3QgbWhpX2NvbnRy b2xsZXIgDQo+ID4gKm1oaV9jbnRybCkNCj4gPiAgCQlpZiAobWhpX2NoYW4tPm9mZmxvYWRfY2gp DQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+IA0KPiA+IC0JCXRtcCA9IGNoYW5fY3R4dC0+Y2hjZmc7 DQo+ID4gKwkJdG1wID0gbGUzMl90b19jcHUoY2hhbl9jdHh0LT5jaGNmZyk7DQo+ID4gIAkJdG1w ICY9IH5DSEFOX0NUWF9DSFNUQVRFX01BU0s7DQo+ID4gIAkJdG1wIHw9IChNSElfQ0hfU1RBVEVf RElTQUJMRUQgPDwNCj4gPiBDSEFOX0NUWF9DSFNUQVRFX1NISUZUKTsNCj4gPiAgCQl0bXAgJj0g fkNIQU5fQ1RYX0JSU1RNT0RFX01BU0s7DQo+ID4gIAkJdG1wIHw9IChtaGlfY2hhbi0+ZGJfY2Zn LmJyc3Rtb2RlIDw8DQo+ID4gQ0hBTl9DVFhfQlJTVE1PREVfU0hJRlQpOw0KPiA+ICAJCXRtcCAm PSB+Q0hBTl9DVFhfUE9MTENGR19NQVNLOw0KPiA+ICAJCXRtcCB8PSAobWhpX2NoYW4tPmRiX2Nm Zy5wb2xsY2ZnIDw8DQo+ID4gQ0hBTl9DVFhfUE9MTENGR19TSElGVCk7DQo+ID4gLQkJY2hhbl9j dHh0LT5jaGNmZyA9IHRtcDsNCj4gPiArCQljaGFuX2N0eHQtPmNoY2ZnID0gY3B1X3RvX2xlMzIo dG1wKTsNCj4gPiANCj4gPiAtCQljaGFuX2N0eHQtPmNodHlwZSA9IG1oaV9jaGFuLT50eXBlOw0K PiA+IC0JCWNoYW5fY3R4dC0+ZXJpbmRleCA9IG1oaV9jaGFuLT5lcl9pbmRleDsNCj4gPiArCQlj aGFuX2N0eHQtPmNodHlwZSA9IGNwdV90b19sZTMyKG1oaV9jaGFuLT50eXBlKTsNCj4gPiArCQlj aGFuX2N0eHQtPmVyaW5kZXggPSBjcHVfdG9fbGUzMihtaGlfY2hhbi0+ZXJfaW5kZXgpOw0KPiA+ IA0KPiA+ICAJCW1oaV9jaGFuLT5jaF9zdGF0ZSA9IE1ISV9DSF9TVEFURV9ESVNBQkxFRDsNCj4g PiAgCQltaGlfY2hhbi0+dHJlX3JpbmcuZGJfYWRkciA9ICh2b2lkIF9faW9tZW0NCj4gPiAqKSZj aGFuX2N0eHQtPndwOw0KPiA+IEBAIC0zMjgsMTQgKzMyOCwxNCBAQCBpbnQgbWhpX2luaXRfZGV2 X2N0eHQoc3RydWN0IG1oaV9jb250cm9sbGVyIA0KPiA+ICptaGlfY250cmwpDQo+ID4gIAkJaWYg KG1oaV9ldmVudC0+b2ZmbG9hZF9ldikNCj4gPiAgCQkJY29udGludWU7DQo+ID4gDQo+ID4gLQkJ dG1wID0gZXJfY3R4dC0+aW50bW9kOw0KPiA+ICsJCXRtcCA9IGxlMzJfdG9fY3B1KGVyX2N0eHQt PmludG1vZCk7DQo+ID4gIAkJdG1wICY9IH5FVl9DVFhfSU5UTU9EQ19NQVNLOw0KPiA+ICAJCXRt cCAmPSB+RVZfQ1RYX0lOVE1PRFRfTUFTSzsNCj4gPiAgCQl0bXAgfD0gKG1oaV9ldmVudC0+aW50 bW9kIDw8IEVWX0NUWF9JTlRNT0RUX1NISUZUKTsNCj4gPiAtCQllcl9jdHh0LT5pbnRtb2QgPSB0 bXA7DQo+ID4gKwkJZXJfY3R4dC0+aW50bW9kID0gY3B1X3RvX2xlMzIodG1wKTsNCj4gPiANCj4g PiAtCQllcl9jdHh0LT5lcnR5cGUgPSBNSElfRVJfVFlQRV9WQUxJRDsNCj4gPiAtCQllcl9jdHh0 LT5tc2l2ZWMgPSBtaGlfZXZlbnQtPmlycTsNCj4gPiArCQllcl9jdHh0LT5lcnR5cGUgPSBjcHVf dG9fbGUzMihNSElfRVJfVFlQRV9WQUxJRCk7DQo+ID4gKwkJZXJfY3R4dC0+bXNpdmVjID0gY3B1 X3RvX2xlMzIobWhpX2V2ZW50LT5pcnEpOw0KPiA+ICAJCW1oaV9ldmVudC0+ZGJfY2ZnLmRiX21v ZGUgPSB0cnVlOw0KPiA+IA0KPiA+ICAJCXJpbmctPmVsX3NpemUgPSBzaXplb2Yoc3RydWN0IG1o aV90cmUpOw0KPiA+IEBAIC0zNDksOSArMzQ5LDkgQEAgaW50IG1oaV9pbml0X2Rldl9jdHh0KHN0 cnVjdCBtaGlfY29udHJvbGxlciANCj4gPiAqbWhpX2NudHJsKQ0KPiA+ICAJCSAqIHJpbmcgaXMg ZW1wdHkNCj4gPiAgCQkgKi8NCj4gPiAgCQlyaW5nLT5ycCA9IHJpbmctPndwID0gcmluZy0+YmFz ZTsNCj4gPiAtCQllcl9jdHh0LT5yYmFzZSA9IHJpbmctPmlvbW11X2Jhc2U7DQo+ID4gKwkJZXJf Y3R4dC0+cmJhc2UgPSBjcHVfdG9fbGU2NChyaW5nLT5pb21tdV9iYXNlKTsNCj4gPiAgCQllcl9j dHh0LT5ycCA9IGVyX2N0eHQtPndwID0gZXJfY3R4dC0+cmJhc2U7DQo+ID4gLQkJZXJfY3R4dC0+ cmxlbiA9IHJpbmctPmxlbjsNCj4gPiArCQllcl9jdHh0LT5ybGVuID0gY3B1X3RvX2xlNjQocmlu Zy0+bGVuKTsNCj4gPiAgCQlyaW5nLT5jdHh0X3dwID0gJmVyX2N0eHQtPndwOw0KPiA+ICAJfQ0K PiA+IA0KPiA+IEBAIC0zNzgsOSArMzc4LDkgQEAgaW50IG1oaV9pbml0X2Rldl9jdHh0KHN0cnVj dCBtaGlfY29udHJvbGxlciANCj4gPiAqbWhpX2NudHJsKQ0KPiA+ICAJCQlnb3RvIGVycm9yX2Fs bG9jX2NtZDsNCj4gPiANCj4gPiAgCQlyaW5nLT5ycCA9IHJpbmctPndwID0gcmluZy0+YmFzZTsN Cj4gPiAtCQljbWRfY3R4dC0+cmJhc2UgPSByaW5nLT5pb21tdV9iYXNlOw0KPiA+ICsJCWNtZF9j dHh0LT5yYmFzZSA9IGNwdV90b19sZTY0KHJpbmctPmlvbW11X2Jhc2UpOw0KPiA+ICAJCWNtZF9j dHh0LT5ycCA9IGNtZF9jdHh0LT53cCA9IGNtZF9jdHh0LT5yYmFzZTsNCj4gPiAtCQljbWRfY3R4 dC0+cmxlbiA9IHJpbmctPmxlbjsNCj4gPiArCQljbWRfY3R4dC0+cmxlbiA9IGNwdV90b19sZTY0 KHJpbmctPmxlbik7DQo+ID4gIAkJcmluZy0+Y3R4dF93cCA9ICZjbWRfY3R4dC0+d3A7DQo+ID4g IAl9DQo+ID4gDQo+ID4gQEAgLTU4MSwxMCArNTgxLDEwIEBAIHZvaWQgbWhpX2RlaW5pdF9jaGFu X2N0eHQoc3RydWN0DQo+ID4gbWhpX2NvbnRyb2xsZXINCj4gPiAqbWhpX2NudHJsLA0KPiA+ICAJ Y2hhbl9jdHh0LT5ycCA9IDA7DQo+ID4gIAljaGFuX2N0eHQtPndwID0gMDsNCj4gPiANCj4gPiAt CXRtcCA9IGNoYW5fY3R4dC0+Y2hjZmc7DQo+ID4gKwl0bXAgPSBsZTMyX3RvX2NwdShjaGFuX2N0 eHQtPmNoY2ZnKTsNCj4gPiAgCXRtcCAmPSB+Q0hBTl9DVFhfQ0hTVEFURV9NQVNLOw0KPiA+ICAJ dG1wIHw9IChNSElfQ0hfU1RBVEVfRElTQUJMRUQgPDwgQ0hBTl9DVFhfQ0hTVEFURV9TSElGVCk7 DQo+ID4gLQljaGFuX2N0eHQtPmNoY2ZnID0gdG1wOw0KPiA+ICsJY2hhbl9jdHh0LT5jaGNmZyA9 IGNwdV90b19sZTMyKHRtcCk7DQo+ID4gDQo+ID4gIAkvKiBVcGRhdGUgdG8gYWxsIGNvcmVzICov DQo+ID4gIAlzbXBfd21iKCk7DQo+ID4gQEAgLTYxOCwxNCArNjE4LDE0IEBAIGludCBtaGlfaW5p dF9jaGFuX2N0eHQoc3RydWN0IG1oaV9jb250cm9sbGVyIA0KPiA+ICptaGlfY250cmwsDQo+ID4g IAkJcmV0dXJuIC1FTk9NRU07DQo+ID4gIAl9DQo+ID4gDQo+ID4gLQl0bXAgPSBjaGFuX2N0eHQt PmNoY2ZnOw0KPiA+ICsJdG1wID0gbGUzMl90b19jcHUoY2hhbl9jdHh0LT5jaGNmZyk7DQo+ID4g IAl0bXAgJj0gfkNIQU5fQ1RYX0NIU1RBVEVfTUFTSzsNCj4gPiAgCXRtcCB8PSAoTUhJX0NIX1NU QVRFX0VOQUJMRUQgPDwgQ0hBTl9DVFhfQ0hTVEFURV9TSElGVCk7DQo+ID4gLQljaGFuX2N0eHQt PmNoY2ZnID0gdG1wOw0KPiA+ICsJY2hhbl9jdHh0LT5jaGNmZyA9IGNwdV90b19sZTMyKHRtcCk7 DQo+ID4gDQo+ID4gLQljaGFuX2N0eHQtPnJiYXNlID0gdHJlX3JpbmctPmlvbW11X2Jhc2U7DQo+ ID4gKwljaGFuX2N0eHQtPnJiYXNlID0gY3B1X3RvX2xlNjQodHJlX3JpbmctPmlvbW11X2Jhc2Up Ow0KPiA+ICAJY2hhbl9jdHh0LT5ycCA9IGNoYW5fY3R4dC0+d3AgPSBjaGFuX2N0eHQtPnJiYXNl Ow0KPiA+IC0JY2hhbl9jdHh0LT5ybGVuID0gdHJlX3JpbmctPmxlbjsNCj4gPiArCWNoYW5fY3R4 dC0+cmxlbiA9IGNwdV90b19sZTY0KHRyZV9yaW5nLT5sZW4pOw0KPiA+ICAJdHJlX3JpbmctPmN0 eHRfd3AgPSAmY2hhbl9jdHh0LT53cDsNCj4gPiANCj4gPiAgCXRyZV9yaW5nLT5ycCA9IHRyZV9y aW5nLT53cCA9IHRyZV9yaW5nLT5iYXNlOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9t aGkvY29yZS9pbnRlcm5hbC5oIA0KPiA+IGIvZHJpdmVycy9idXMvbWhpL2NvcmUvaW50ZXJuYWwu aA0KPiA+IGluZGV4IDY3MjA1MmZlM2I0NC4uNDQ2MzQxNTNlZDA0IDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvYnVzL21oaS9jb3JlL2ludGVybmFsLmgNCj4gPiArKysgYi9kcml2ZXJzL2J1cy9t aGkvY29yZS9pbnRlcm5hbC5oDQo+ID4gQEAgLTIwOSwxNCArMjA5LDE0IEBAIGV4dGVybiBzdHJ1 Y3QgYnVzX3R5cGUgbWhpX2J1c190eXBlOw0KPiA+ICAjZGVmaW5lIEVWX0NUWF9JTlRNT0RUX01B U0sgR0VOTUFTSygzMSwgMTYpDQo+ID4gICNkZWZpbmUgRVZfQ1RYX0lOVE1PRFRfU0hJRlQgMTYN Cj4gPiAgc3RydWN0IG1oaV9ldmVudF9jdHh0IHsNCj4gPiAtCV9fdTMyIGludG1vZDsNCj4gPiAt CV9fdTMyIGVydHlwZTsNCj4gPiAtCV9fdTMyIG1zaXZlYzsNCj4gPiAtDQo+ID4gLQlfX3U2NCBy YmFzZSBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gLQlfX3U2NCBybGVuIF9fcGFja2VkIF9f YWxpZ25lZCg0KTsNCj4gPiAtCV9fdTY0IHJwIF9fcGFja2VkIF9fYWxpZ25lZCg0KTsNCj4gPiAt CV9fdTY0IHdwIF9fcGFja2VkIF9fYWxpZ25lZCg0KTsNCj4gPiArCV9fbGUzMiBpbnRtb2Q7DQo+ ID4gKwlfX2xlMzIgZXJ0eXBlOw0KPiA+ICsJX19sZTMyIG1zaXZlYzsNCj4gPiArDQo+ID4gKwlf X2xlNjQgcmJhc2UgX19wYWNrZWQgX19hbGlnbmVkKDQpOw0KPiA+ICsJX19sZTY0IHJsZW4gX19w YWNrZWQgX19hbGlnbmVkKDQpOw0KPiA+ICsJX19sZTY0IHJwIF9fcGFja2VkIF9fYWxpZ25lZCg0 KTsNCj4gPiArCV9fbGU2NCB3cCBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gIH07DQo+ID4g DQo+ID4gICNkZWZpbmUgQ0hBTl9DVFhfQ0hTVEFURV9NQVNLIEdFTk1BU0soNywgMCkNCj4gPiBA QCAtMjI3LDI1ICsyMjcsMjUgQEAgc3RydWN0IG1oaV9ldmVudF9jdHh0IHsNCj4gPiAgI2RlZmlu ZSBDSEFOX0NUWF9QT0xMQ0ZHX1NISUZUIDEwDQo+ID4gICNkZWZpbmUgQ0hBTl9DVFhfUkVTRVJW RURfTUFTSyBHRU5NQVNLKDMxLCAxNikNCj4gPiAgc3RydWN0IG1oaV9jaGFuX2N0eHQgew0KPiA+ IC0JX191MzIgY2hjZmc7DQo+ID4gLQlfX3UzMiBjaHR5cGU7DQo+ID4gLQlfX3UzMiBlcmluZGV4 Ow0KPiA+IC0NCj4gPiAtCV9fdTY0IHJiYXNlIF9fcGFja2VkIF9fYWxpZ25lZCg0KTsNCj4gPiAt CV9fdTY0IHJsZW4gX19wYWNrZWQgX19hbGlnbmVkKDQpOw0KPiA+IC0JX191NjQgcnAgX19wYWNr ZWQgX19hbGlnbmVkKDQpOw0KPiA+IC0JX191NjQgd3AgX19wYWNrZWQgX19hbGlnbmVkKDQpOw0K PiA+ICsJX19sZTMyIGNoY2ZnOw0KPiA+ICsJX19sZTMyIGNodHlwZTsNCj4gPiArCV9fbGUzMiBl cmluZGV4Ow0KPiA+ICsNCj4gPiArCV9fbGU2NCByYmFzZSBfX3BhY2tlZCBfX2FsaWduZWQoNCk7 DQo+ID4gKwlfX2xlNjQgcmxlbiBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gKwlfX2xlNjQg cnAgX19wYWNrZWQgX19hbGlnbmVkKDQpOw0KPiA+ICsJX19sZTY0IHdwIF9fcGFja2VkIF9fYWxp Z25lZCg0KTsNCj4gPiAgfTsNCj4gPiANCj4gPiAgc3RydWN0IG1oaV9jbWRfY3R4dCB7DQo+ID4g LQlfX3UzMiByZXNlcnZlZDA7DQo+ID4gLQlfX3UzMiByZXNlcnZlZDE7DQo+ID4gLQlfX3UzMiBy ZXNlcnZlZDI7DQo+ID4gLQ0KPiA+IC0JX191NjQgcmJhc2UgX19wYWNrZWQgX19hbGlnbmVkKDQp Ow0KPiA+IC0JX191NjQgcmxlbiBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gLQlfX3U2NCBy cCBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gLQlfX3U2NCB3cCBfX3BhY2tlZCBfX2FsaWdu ZWQoNCk7DQo+ID4gKwlfX2xlMzIgcmVzZXJ2ZWQwOw0KPiA+ICsJX19sZTMyIHJlc2VydmVkMTsN Cj4gPiArCV9fbGUzMiByZXNlcnZlZDI7DQo+ID4gKw0KPiA+ICsJX19sZTY0IHJiYXNlIF9fcGFj a2VkIF9fYWxpZ25lZCg0KTsNCj4gPiArCV9fbGU2NCBybGVuIF9fcGFja2VkIF9fYWxpZ25lZCg0 KTsNCj4gPiArCV9fbGU2NCBycCBfX3BhY2tlZCBfX2FsaWduZWQoNCk7DQo+ID4gKwlfX2xlNjQg d3AgX19wYWNrZWQgX19hbGlnbmVkKDQpOw0KPiA+ICB9Ow0KPiA+IA0KPiA+ICBzdHJ1Y3QgbWhp X2N0eHQgew0KPiA+IEBAIC0yNTgsOCArMjU4LDggQEAgc3RydWN0IG1oaV9jdHh0IHsNCj4gPiAg fTsNCj4gPiANCj4gPiAgc3RydWN0IG1oaV90cmUgew0KPiA+IC0JdTY0IHB0cjsNCj4gPiAtCXUz MiBkd29yZFsyXTsNCj4gPiArCV9fbGU2NCBwdHI7DQo+ID4gKwlfX2xlMzIgZHdvcmRbMl07DQo+ ID4gIH07DQo+ID4gDQo+ID4gIHN0cnVjdCBiaGlfdmVjX2VudHJ5IHsNCj4gPiBAQCAtMjc3LDU3 ICsyNzcsNTggQEAgZW51bSBtaGlfY21kX3R5cGUgew0KPiA+ICAvKiBObyBvcGVyYXRpb24gY29t bWFuZCAqLw0KPiA+ICAjZGVmaW5lIE1ISV9UUkVfQ01EX05PT1BfUFRSICgwKQ0KPiA+ICAjZGVm aW5lIE1ISV9UUkVfQ01EX05PT1BfRFdPUkQwICgwKQ0KPiA+IC0jZGVmaW5lIE1ISV9UUkVfQ01E X05PT1BfRFdPUkQxIChNSElfQ01EX05PUCA8PCAxNikNCj4gPiArI2RlZmluZSBNSElfVFJFX0NN RF9OT09QX0RXT1JEMSAoY3B1X3RvX2xlMzIoTUhJX0NNRF9OT1AgPDwgMTYpKQ0KPiA+IA0KPiA+ ICAvKiBDaGFubmVsIHJlc2V0IGNvbW1hbmQgKi8NCj4gPiAgI2RlZmluZSBNSElfVFJFX0NNRF9S RVNFVF9QVFIgKDApDQo+ID4gICNkZWZpbmUgTUhJX1RSRV9DTURfUkVTRVRfRFdPUkQwICgwKQ0K PiA+IC0jZGVmaW5lIE1ISV9UUkVfQ01EX1JFU0VUX0RXT1JEMShjaGlkKSAoKGNoaWQgPDwgMjQp IHwgXA0KPiA+IC0JCQkJCShNSElfQ01EX1JFU0VUX0NIQU4gPDwgMTYpKQ0KPiA+ICsjZGVmaW5l IE1ISV9UUkVfQ01EX1JFU0VUX0RXT1JEMShjaGlkKSAoY3B1X3RvX2xlMzIoKGNoaWQgPDwgMjQp IHwNCj4gPiBcDQo+ID4gKwkJCQkJKE1ISV9DTURfUkVTRVRfQ0hBTiA8PCAxNikpKQ0KPiA+IA0K PiA+ICAvKiBDaGFubmVsIHN0b3AgY29tbWFuZCAqLw0KPiA+ICAjZGVmaW5lIE1ISV9UUkVfQ01E X1NUT1BfUFRSICgwKQ0KPiA+ICAjZGVmaW5lIE1ISV9UUkVfQ01EX1NUT1BfRFdPUkQwICgwKQ0K PiA+IC0jZGVmaW5lIE1ISV9UUkVfQ01EX1NUT1BfRFdPUkQxKGNoaWQpICgoY2hpZCA8PCAyNCkg fCBcDQo+ID4gLQkJCQkgICAgICAgKE1ISV9DTURfU1RPUF9DSEFOIDw8IDE2KSkNCj4gPiArI2Rl ZmluZSBNSElfVFJFX0NNRF9TVE9QX0RXT1JEMShjaGlkKSAoY3B1X3RvX2xlMzIoKGNoaWQgPDwg MjQpIHwNCj4gPiBcDQo+ID4gKwkJCQkgICAgICAgKE1ISV9DTURfU1RPUF9DSEFOIDw8IDE2KSkp DQo+ID4gDQo+ID4gIC8qIENoYW5uZWwgc3RhcnQgY29tbWFuZCAqLw0KPiA+ICAjZGVmaW5lIE1I SV9UUkVfQ01EX1NUQVJUX1BUUiAoMCkNCj4gPiAgI2RlZmluZSBNSElfVFJFX0NNRF9TVEFSVF9E V09SRDAgKDApDQo+ID4gLSNkZWZpbmUgTUhJX1RSRV9DTURfU1RBUlRfRFdPUkQxKGNoaWQpICgo Y2hpZCA8PCAyNCkgfCBcDQo+ID4gLQkJCQkJKE1ISV9DTURfU1RBUlRfQ0hBTiA8PCAxNikpDQo+ ID4gKyNkZWZpbmUgTUhJX1RSRV9DTURfU1RBUlRfRFdPUkQxKGNoaWQpIChjcHVfdG9fbGUzMigo Y2hpZCA8PCAyNCkgfA0KPiA+IFwNCj4gPiArCQkJCQkoTUhJX0NNRF9TVEFSVF9DSEFOIDw8IDE2 KSkpDQo+ID4gDQo+ID4gLSNkZWZpbmUgTUhJX1RSRV9HRVRfQ01EX0NISUQodHJlKSAoKCh0cmUp LT5kd29yZFsxXSA+PiAyNCkgJiAweEZGKQ0KPiA+IC0jZGVmaW5lIE1ISV9UUkVfR0VUX0NNRF9U WVBFKHRyZSkgKCgodHJlKS0+ZHdvcmRbMV0gPj4gMTYpICYgMHhGRikNCj4gPiArI2RlZmluZSBN SElfVFJFX0dFVF9EV09SRCh0cmUsIHdvcmQpIA0KPiA+IChsZTMyX3RvX2NwdSgodHJlKS0+ZHdv cmRbKHdvcmQpXSkpDQo+ID4gKyNkZWZpbmUgTUhJX1RSRV9HRVRfQ01EX0NISUQodHJlKSAoKE1I SV9UUkVfR0VUX0RXT1JEKHRyZSwgMSkgPj4NCj4gPiAyNCkgJiANCj4gPiAweEZGKQ0KPiA+ICsj ZGVmaW5lIE1ISV9UUkVfR0VUX0NNRF9UWVBFKHRyZSkgKChNSElfVFJFX0dFVF9EV09SRCh0cmUs IDEpID4+DQo+ID4gMTYpICYgDQo+ID4gMHhGRikNCj4gPiANCj4gPiAgLyogRXZlbnQgZGVzY3Jp cHRvciBtYWNyb3MgKi8NCj4gPiAtI2RlZmluZSBNSElfVFJFX0VWX1BUUihwdHIpIChwdHIpDQo+ ID4gLSNkZWZpbmUgTUhJX1RSRV9FVl9EV09SRDAoY29kZSwgbGVuKSAoKGNvZGUgPDwgMjQpIHwg bGVuKQ0KPiA+IC0jZGVmaW5lIE1ISV9UUkVfRVZfRFdPUkQxKGNoaWQsIHR5cGUpICgoY2hpZCA8 PCAyNCkgfCAodHlwZSA8PA0KPiA+IDE2KSkNCj4gPiAtI2RlZmluZSBNSElfVFJFX0dFVF9FVl9Q VFIodHJlKSAoKHRyZSktPnB0cikNCj4gPiAtI2RlZmluZSBNSElfVFJFX0dFVF9FVl9DT0RFKHRy ZSkgKCgodHJlKS0+ZHdvcmRbMF0gPj4gMjQpICYgMHhGRikNCj4gPiAtI2RlZmluZSBNSElfVFJF X0dFVF9FVl9MRU4odHJlKSAoKHRyZSktPmR3b3JkWzBdICYgMHhGRkZGKQ0KPiA+IC0jZGVmaW5l IE1ISV9UUkVfR0VUX0VWX0NISUQodHJlKSAoKCh0cmUpLT5kd29yZFsxXSA+PiAyNCkgJiAweEZG KQ0KPiA+IC0jZGVmaW5lIE1ISV9UUkVfR0VUX0VWX1RZUEUodHJlKSAoKCh0cmUpLT5kd29yZFsx XSA+PiAxNikgJiAweEZGKQ0KPiA+IC0jZGVmaW5lIE1ISV9UUkVfR0VUX0VWX1NUQVRFKHRyZSkg KCgodHJlKS0+ZHdvcmRbMF0gPj4gMjQpICYgMHhGRikNCj4gPiAtI2RlZmluZSBNSElfVFJFX0dF VF9FVl9FWEVDRU5WKHRyZSkgKCgodHJlKS0+ZHdvcmRbMF0gPj4gMjQpICYNCj4gPiAweEZGKQ0K PiA+IC0jZGVmaW5lIE1ISV9UUkVfR0VUX0VWX1NFUSh0cmUpICgodHJlKS0+ZHdvcmRbMF0pDQo+ ID4gLSNkZWZpbmUgTUhJX1RSRV9HRVRfRVZfVElNRSh0cmUpICgodHJlKS0+cHRyKQ0KPiA+IC0j ZGVmaW5lIE1ISV9UUkVfR0VUX0VWX0NPT0tJRSh0cmUpIGxvd2VyXzMyX2JpdHMoKHRyZSktPnB0 cikNCj4gPiAtI2RlZmluZSBNSElfVFJFX0dFVF9FVl9WRUlEKHRyZSkgKCgodHJlKS0+ZHdvcmRb MF0gPj4gMTYpICYgMHhGRikNCj4gPiAtI2RlZmluZSBNSElfVFJFX0dFVF9FVl9MSU5LU1BFRUQo dHJlKSAoKCh0cmUpLT5kd29yZFsxXSA+PiAyNCkgJg0KPiA+IDB4RkYpDQo+ID4gLSNkZWZpbmUg TUhJX1RSRV9HRVRfRVZfTElOS1dJRFRIKHRyZSkgKCh0cmUpLT5kd29yZFswXSAmIDB4RkYpDQo+ ID4gKyNkZWZpbmUgTUhJX1RSRV9FVl9QVFIocHRyKSAoY3B1X3RvX2xlNjQocHRyKSkNCj4gPiAr I2RlZmluZSBNSElfVFJFX0VWX0RXT1JEMChjb2RlLCBsZW4pIChjcHVfdG9fbGUzMigoY29kZSA8 PCAyNCkgfA0KPiA+IGxlbikpDQo+ID4gKyNkZWZpbmUgTUhJX1RSRV9FVl9EV09SRDEoY2hpZCwg dHlwZSkgKGNwdV90b19sZTMyKChjaGlkIDw8IDI0KSB8DQo+ID4gKHR5cGUgPDwgMTYpKSkNCj4g PiArI2RlZmluZSBNSElfVFJFX0dFVF9FVl9QVFIodHJlKSAobGU2NF90b19jcHUoKHRyZSktPnB0 cikpDQo+ID4gKyNkZWZpbmUgTUhJX1RSRV9HRVRfRVZfQ09ERSh0cmUpICgoTUhJX1RSRV9HRVRf RFdPUkQodHJlLCAwKSA+Pg0KPiA+IDI0KSAmIA0KPiA+IDB4RkYpDQo+ID4gKyNkZWZpbmUgTUhJ X1RSRV9HRVRfRVZfTEVOKHRyZSkgKE1ISV9UUkVfR0VUX0RXT1JEKHRyZSwgMCkgJg0KPiA+IDB4 RkZGRikNCj4gPiArI2RlZmluZSBNSElfVFJFX0dFVF9FVl9DSElEKHRyZSkgKChNSElfVFJFX0dF VF9EV09SRCh0cmUsIDEpID4+DQo+ID4gMjQpICYgDQo+ID4gMHhGRikNCj4gPiArI2RlZmluZSBN SElfVFJFX0dFVF9FVl9UWVBFKHRyZSkgKChNSElfVFJFX0dFVF9EV09SRCh0cmUsIDEpID4+DQo+ ID4gMTYpICYgDQo+ID4gMHhGRikNCj4gPiArI2RlZmluZSBNSElfVFJFX0dFVF9FVl9TVEFURSh0 cmUpICgoTUhJX1RSRV9HRVRfRFdPUkQodHJlLCAwKSA+Pg0KPiA+IDI0KSAmIA0KPiA+IDB4RkYp DQo+ID4gKyNkZWZpbmUgTUhJX1RSRV9HRVRfRVZfRVhFQ0VOVih0cmUpICgoTUhJX1RSRV9HRVRf RFdPUkQodHJlLCAwKSA+Pg0KPiA+IDI0KSANCj4gPiAmIDB4RkYpDQo+ID4gKyNkZWZpbmUgTUhJ X1RSRV9HRVRfRVZfU0VRKHRyZSkgTUhJX1RSRV9HRVRfRFdPUkQodHJlLCAwKQ0KPiA+ICsjZGVm aW5lIE1ISV9UUkVfR0VUX0VWX1RJTUUodHJlKSAoTUhJX1RSRV9HRVRfRVZfUFRSKHRyZSkpDQo+ ID4gKyNkZWZpbmUgTUhJX1RSRV9HRVRfRVZfQ09PS0lFKHRyZSkgDQo+ID4gbG93ZXJfMzJfYml0 cyhNSElfVFJFX0dFVF9FVl9QVFIodHJlKSkNCj4gPiArI2RlZmluZSBNSElfVFJFX0dFVF9FVl9W RUlEKHRyZSkgKChNSElfVFJFX0dFVF9EV09SRCh0cmUsIDApID4+DQo+ID4gMTYpICYgDQo+ID4g MHhGRikNCj4gPiArI2RlZmluZSBNSElfVFJFX0dFVF9FVl9MSU5LU1BFRUQodHJlKSAoKE1ISV9U UkVfR0VUX0RXT1JEKHRyZSwgMSkNCj4gPiA+Pg0KPiA+IDI0KSAmIDB4RkYpDQo+ID4gKyNkZWZp bmUgTUhJX1RSRV9HRVRfRVZfTElOS1dJRFRIKHRyZSkgKE1ISV9UUkVfR0VUX0RXT1JEKHRyZSwg MCkNCj4gPiAmIA0KPiA+IDB4RkYpDQo+ID4gDQo+ID4gIC8qIFRyYW5zZmVyIGRlc2NyaXB0b3Ig bWFjcm9zICovDQo+ID4gLSNkZWZpbmUgTUhJX1RSRV9EQVRBX1BUUihwdHIpIChwdHIpDQo+ID4g LSNkZWZpbmUgTUhJX1RSRV9EQVRBX0RXT1JEMChsZW4pIChsZW4gJiBNSElfTUFYX01UVSkNCj4g PiAtI2RlZmluZSBNSElfVFJFX0RBVEFfRFdPUkQxKGJlaSwgaWVvdCwgaWVvYiwgY2hhaW4pICgo MiA8PCAxNikgfA0KPiA+IChiZWkgDQo+ID4gPDwgMTApIFwNCj4gPiAtCXwgKGllb3QgPDwgOSkg fCAoaWVvYiA8PCA4KSB8IGNoYWluKQ0KPiA+ICsjZGVmaW5lIE1ISV9UUkVfREFUQV9QVFIocHRy KSAoY3B1X3RvX2xlNjQocHRyKSkNCj4gPiArI2RlZmluZSBNSElfVFJFX0RBVEFfRFdPUkQwKGxl bikgKGNwdV90b19sZTMyKGxlbiAmIE1ISV9NQVhfTVRVKSkNCj4gPiArI2RlZmluZSBNSElfVFJF X0RBVEFfRFdPUkQxKGJlaSwgaWVvdCwgaWVvYiwgY2hhaW4pDQo+ID4gKGNwdV90b19sZTMyKCgy DQo+ID4gPDwgMTYpIHwgKGJlaSA8PCAxMCkgXA0KPiA+ICsJfCAoaWVvdCA8PCA5KSB8IChpZW9i IDw8IDgpIHwgY2hhaW4pKQ0KPiA+IA0KPiA+ICAvKiBSU0MgdHJhbnNmZXIgZGVzY3JpcHRvciBt YWNyb3MgKi8NCj4gPiAtI2RlZmluZSBNSElfUlNDVFJFX0RBVEFfUFRSKHB0ciwgbGVuKSAoKCh1 NjQpbGVuIDw8IDQ4KSB8IHB0cikNCj4gPiAtI2RlZmluZSBNSElfUlNDVFJFX0RBVEFfRFdPUkQw KGNvb2tpZSkgKGNvb2tpZSkNCj4gPiAtI2RlZmluZSBNSElfUlNDVFJFX0RBVEFfRFdPUkQxIChN SElfUEtUX1RZUEVfQ09BTEVTQ0lORyA8PCAxNikNCj4gPiArI2RlZmluZSBNSElfUlNDVFJFX0RB VEFfUFRSKHB0ciwgbGVuKSAoY3B1X3RvX2xlNjQoKCh1NjQpbGVuIDw8DQo+ID4gNDgpIHwgDQo+ ID4gcHRyKSkNCj4gPiArI2RlZmluZSBNSElfUlNDVFJFX0RBVEFfRFdPUkQwKGNvb2tpZSkgKGNw dV90b19sZTMyKGNvb2tpZSkpDQo+ID4gKyNkZWZpbmUgTUhJX1JTQ1RSRV9EQVRBX0RXT1JEMQ0K PiA+IChjcHVfdG9fbGUzMihNSElfUEtUX1RZUEVfQ09BTEVTQ0lORyA8PCANCj4gPiAxNikpDQo+ ID4gDQo+ID4gIGVudW0gbWhpX3BrdF90eXBlIHsNCj4gPiAgCU1ISV9QS1RfVFlQRV9JTlZBTElE ID0gMHgwLA0KPiA+IEBAIC00ODAsMTAgKzQ4MSwxMCBAQCBzdHJ1Y3QgZGJfY2ZnIHsNCj4gPiAg CWJvb2wgZGJfbW9kZTsNCj4gPiAgCXUzMiBwb2xsY2ZnOw0KPiA+ICAJZW51bSBtaGlfZGJfYnJz dF9tb2RlIGJyc3Rtb2RlOw0KPiA+IC0JZG1hX2FkZHJfdCBkYl92YWw7DQo+ID4gKwlfX2xlNjQg ZGJfdmFsOw0KPiANCj4gQW0gSSBjb3JyZWN0IGluIGFzc3VtaW5nIHRoYXQgdGhpcyBjYW4gYnJl YWsgYXJtLzMyIGJpdA0KPiBhcmNoaXRlY3R1cmVzPw0KPiBXZSBtb3ZlZCB0byBkbWFfYWRkcl90 IHRvIGFjY29tbW9kYXRlIHRoZW0gYXMgd2UgaGFkIHNlZW4gdGhlIGlzc3VlDQo+IGluDQo+IHRo ZSBwYXN0Lg0KPiBTYW1lIGdvZXMgZm9yIGFsbCBpbnN0YW5jZXMgb2YgZG1hX2FkZHJfdCAtPiBf X2xlNjQNCg0KSSBzaG91bGQgYmUgYWJsZSB0byBwdXQgdGhlc2UgYWxsIGJhY2sgdG8gZG1hX2Fk ZHJfdCBhbmQganVzdCBkbyB0aGUNCmNvbnZlcnNpb24gd2hlbiB3cml0aW5nIHRvIGN0eHRfd3Au DQoNCj4gPiAgCXZvaWQgKCpwcm9jZXNzX2RiKShzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9j bnRybCwNCj4gPiAgCQkJICAgc3RydWN0IGRiX2NmZyAqZGJfY2ZnLCB2b2lkIF9faW9tZW0NCj4g PiAqaW9fYWRkciwNCj4gPiAtCQkJICAgZG1hX2FkZHJfdCBkYl92YWwpOw0KPiA+ICsJCQkgICBf X2xlNjQgZGJfdmFsKTsNCj4gPiAgfTsNCj4gPiANCj4gPiAgc3RydWN0IG1oaV9wbV90cmFuc2l0 aW9ucyB7DQo+ID4gQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdHJ1Y3Qgc3RhdGVfdHJhbnNpdGlvbiB7 DQo+ID4gIHN0cnVjdCBtaGlfcmluZyB7DQo+ID4gIAlkbWFfYWRkcl90IGRtYV9oYW5kbGU7DQo+ ID4gIAlkbWFfYWRkcl90IGlvbW11X2Jhc2U7DQo+ID4gLQl1NjQgKmN0eHRfd3A7IC8qIHBvaW50 IHRvIGN0eHQgd3AgKi8NCj4gPiArCV9fbGU2NCAqY3R4dF93cDsgLyogcG9pbnQgdG8gY3R4dCB3 cCAqLw0KPiA+ICAJdm9pZCAqcHJlX2FsaWduZWQ7DQo+ID4gIAl2b2lkICpiYXNlOw0KPiA+ICAJ dm9pZCAqcnA7DQo+ID4gQEAgLTY0OSwxMCArNjUwLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBt aGlfdHJpZ2dlcl9yZXN1bWUoc3RydWN0DQo+ID4gbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCkN Cj4gPiANCj4gPiAgLyogUmVnaXN0ZXIgYWNjZXNzIG1ldGhvZHMgKi8NCj4gPiAgdm9pZCBtaGlf ZGJfYnJzdG1vZGUoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsIHN0cnVjdA0KPiA+ IGRiX2NmZyANCj4gPiAqZGJfY2ZnLA0KPiA+IC0JCSAgICAgdm9pZCBfX2lvbWVtICpkYl9hZGRy LCBkbWFfYWRkcl90IGRiX3ZhbCk7DQo+ID4gKwkJICAgICB2b2lkIF9faW9tZW0gKmRiX2FkZHIs IF9fbGU2NCBkYl92YWwpOw0KPiA+ICB2b2lkIG1oaV9kYl9icnN0bW9kZV9kaXNhYmxlKHN0cnVj dCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLA0KPiA+ICAJCQkgICAgIHN0cnVjdCBkYl9jZmcg KmRiX21vZGUsIHZvaWQgX19pb21lbQ0KPiA+ICpkYl9hZGRyLA0KPiA+IC0JCQkgICAgIGRtYV9h ZGRyX3QgZGJfdmFsKTsNCj4gPiArCQkJICAgICBfX2xlNjQgZGJfdmFsKTsNCj4gPiAgaW50IF9f bXVzdF9jaGVjayBtaGlfcmVhZF9yZWcoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmws DQo+ID4gIAkJCSAgICAgIHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyDQo+ID4g Km91dCk7DQo+ID4gIGludCBfX211c3RfY2hlY2sgbWhpX3JlYWRfcmVnX2ZpZWxkKHN0cnVjdCBt aGlfY29udHJvbGxlcg0KPiA+ICptaGlfY250cmwsDQo+ID4gQEAgLTY2Nyw3ICs2NjgsNyBAQCB2 b2lkIG1oaV93cml0ZV9yZWdfZmllbGQoc3RydWN0IG1oaV9jb250cm9sbGVyDQo+ID4gKm1oaV9j bnRybCwgdm9pZCBfX2lvbWVtICpiYXNlLA0KPiA+ICAJCQkgdTMyIG9mZnNldCwgdTMyIG1hc2ss IHUzMiBzaGlmdCwgdTMyIHZhbCk7DQo+ID4gIHZvaWQgbWhpX3JpbmdfZXJfZGIoc3RydWN0IG1o aV9ldmVudCAqbWhpX2V2ZW50KTsNCj4gPiAgdm9pZCBtaGlfd3JpdGVfZGIoc3RydWN0IG1oaV9j b250cm9sbGVyICptaGlfY250cmwsIHZvaWQgX19pb21lbSANCj4gPiAqZGJfYWRkciwNCj4gPiAt CQkgIGRtYV9hZGRyX3QgZGJfdmFsKTsNCj4gPiArCQkgIF9fbGU2NCBkYl92YWwpOw0KPiA+ICB2 b2lkIG1oaV9yaW5nX2NtZF9kYihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCwgc3Ry dWN0DQo+ID4gbWhpX2NtZA0KPiA+ICptaGlfY21kKTsNCj4gPiAgdm9pZCBtaGlfcmluZ19jaGFu X2RiKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLA0KPiA+ICAJCSAgICAgIHN0cnVj dCBtaGlfY2hhbiAqbWhpX2NoYW4pOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9taGkv Y29yZS9tYWluLmMNCj4gPiBiL2RyaXZlcnMvYnVzL21oaS9jb3JlL21haW4uYw0KPiA+IGluZGV4 IDhhYzczZjllOTJhNi4uYThjNjgyMjBkNzY0IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYnVz L21oaS9jb3JlL21haW4uYw0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL21oaS9jb3JlL21haW4uYw0K PiA+IEBAIC04MiwxNiArODIsMTggQEAgdm9pZCBtaGlfd3JpdGVfcmVnX2ZpZWxkKHN0cnVjdCBt aGlfY29udHJvbGxlcg0KPiA+ICptaGlfY250cmwsIHZvaWQgX19pb21lbSAqYmFzZSwNCj4gPiAg fQ0KPiA+IA0KPiA+ICB2b2lkIG1oaV93cml0ZV9kYihzdHJ1Y3QgbWhpX2NvbnRyb2xsZXIgKm1o aV9jbnRybCwgdm9pZCBfX2lvbWVtIA0KPiA+ICpkYl9hZGRyLA0KPiA+IC0JCSAgZG1hX2FkZHJf dCBkYl92YWwpDQo+ID4gKwkJICBfX2xlNjQgZGJfdmFsKQ0KPiA+ICB7DQo+ID4gLQltaGlfd3Jp dGVfcmVnKG1oaV9jbnRybCwgZGJfYWRkciwgNCwgdXBwZXJfMzJfYml0cyhkYl92YWwpKTsNCj4g PiAtCW1oaV93cml0ZV9yZWcobWhpX2NudHJsLCBkYl9hZGRyLCAwLCBsb3dlcl8zMl9iaXRzKGRi X3ZhbCkpOw0KPiA+ICsJZG1hX2FkZHJfdCB0bXAgPSBsZTY0X3RvX2NwdShkYl92YWwpOw0KPiA+ ICsNCj4gPiArCW1oaV93cml0ZV9yZWcobWhpX2NudHJsLCBkYl9hZGRyLCA0LCB1cHBlcl8zMl9i aXRzKHRtcCkpOw0KPiA+ICsJbWhpX3dyaXRlX3JlZyhtaGlfY250cmwsIGRiX2FkZHIsIDAsIGxv d2VyXzMyX2JpdHModG1wKSk7DQo+ID4gIH0NCj4gPiANCj4gPiAgdm9pZCBtaGlfZGJfYnJzdG1v ZGUoc3RydWN0IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsDQo+ID4gIAkJICAgICBzdHJ1Y3Qg ZGJfY2ZnICpkYl9jZmcsDQo+ID4gIAkJICAgICB2b2lkIF9faW9tZW0gKmRiX2FkZHIsDQo+ID4g LQkJICAgICBkbWFfYWRkcl90IGRiX3ZhbCkNCj4gPiArCQkgICAgIF9fbGU2NCBkYl92YWwpDQo+ ID4gIHsNCj4gPiAgCWlmIChkYl9jZmctPmRiX21vZGUpIHsNCj4gPiAgCQlkYl9jZmctPmRiX3Zh bCA9IGRiX3ZhbDsNCj4gPiBAQCAtMTAzLDcgKzEwNSw3IEBAIHZvaWQgbWhpX2RiX2Jyc3Rtb2Rl KHN0cnVjdCBtaGlfY29udHJvbGxlciANCj4gPiAqbWhpX2NudHJsLA0KPiA+ICB2b2lkIG1oaV9k Yl9icnN0bW9kZV9kaXNhYmxlKHN0cnVjdCBtaGlfY29udHJvbGxlciAqbWhpX2NudHJsLA0KPiA+ ICAJCQkgICAgIHN0cnVjdCBkYl9jZmcgKmRiX2NmZywNCj4gPiAgCQkJICAgICB2b2lkIF9faW9t ZW0gKmRiX2FkZHIsDQo+ID4gLQkJCSAgICAgZG1hX2FkZHJfdCBkYl92YWwpDQo+ID4gKwkJCSAg ICAgX19sZTY0IGRiX3ZhbCkNCj4gPiAgew0KPiA+ICAJZGJfY2ZnLT5kYl92YWwgPSBkYl92YWw7 DQo+ID4gIAltaGlfd3JpdGVfZGIobWhpX2NudHJsLCBkYl9hZGRyLCBkYl92YWwpOw0KPiA+IEBA IC0xMTksMTAgKzEyMSwxMCBAQCB2b2lkIG1oaV9yaW5nX2VyX2RiKHN0cnVjdCBtaGlfZXZlbnQN Cj4gPiAqbWhpX2V2ZW50KQ0KPiA+IA0KPiA+ICB2b2lkIG1oaV9yaW5nX2NtZF9kYihzdHJ1Y3Qg bWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCwgc3RydWN0DQo+ID4gbWhpX2NtZCANCj4gPiAqbWhp X2NtZCkNCj4gPiAgew0KPiA+IC0JZG1hX2FkZHJfdCBkYjsNCj4gPiArCV9fbGU2NCBkYjsNCj4g PiAgCXN0cnVjdCBtaGlfcmluZyAqcmluZyA9ICZtaGlfY21kLT5yaW5nOw0KPiA+IA0KPiA+IC0J ZGIgPSByaW5nLT5pb21tdV9iYXNlICsgKHJpbmctPndwIC0gcmluZy0+YmFzZSk7DQo+ID4gKwlk YiA9IGNwdV90b19sZTY0KHJpbmctPmlvbW11X2Jhc2UgKyAocmluZy0+d3AgLSByaW5nLT5iYXNl KSk7DQo+ID4gIAkqcmluZy0+Y3R4dF93cCA9IGRiOw0KPiA+ICAJbWhpX3dyaXRlX2RiKG1oaV9j bnRybCwgcmluZy0+ZGJfYWRkciwgZGIpOw0KPiA+ICB9DQo+ID4gQEAgLTEzMSw5ICsxMzMsOSBA QCB2b2lkIG1oaV9yaW5nX2NoYW5fZGIoc3RydWN0IG1oaV9jb250cm9sbGVyIA0KPiA+ICptaGlf Y250cmwsDQo+ID4gIAkJICAgICAgc3RydWN0IG1oaV9jaGFuICptaGlfY2hhbikNCj4gPiAgew0K PiA+ICAJc3RydWN0IG1oaV9yaW5nICpyaW5nID0gJm1oaV9jaGFuLT50cmVfcmluZzsNCj4gPiAt CWRtYV9hZGRyX3QgZGI7DQo+ID4gKwlfX2xlNjQgZGI7DQo+ID4gDQo+ID4gLQlkYiA9IHJpbmct PmlvbW11X2Jhc2UgKyAocmluZy0+d3AgLSByaW5nLT5iYXNlKTsNCj4gPiArCWRiID0gY3B1X3Rv X2xlNjQocmluZy0+aW9tbXVfYmFzZSArIChyaW5nLT53cCAtIHJpbmctPmJhc2UpKTsNCj4gPiAN Cj4gPiAgCS8qDQo+ID4gIAkgKiBXcml0ZXMgdG8gdGhlIG5ldyByaW5nIGVsZW1lbnQgbXVzdCBi ZSB2aXNpYmxlIHRvIHRoZQ0KPiA+IGhhcmR3YXJlDQo+ID4gQEAgLTQzMiw3ICs0MzQsNyBAQCBp cnFyZXR1cm5fdCBtaGlfaXJxX2hhbmRsZXIoaW50IGlycV9udW1iZXIsDQo+ID4gdm9pZCANCj4g PiAqZGV2KQ0KPiA+ICAJc3RydWN0IG1oaV9ldmVudF9jdHh0ICplcl9jdHh0ID0NCj4gPiAgCQkm bWhpX2NudHJsLT5taGlfY3R4dC0+ZXJfY3R4dFttaGlfZXZlbnQtPmVyX2luZGV4XTsNCj4gPiAg CXN0cnVjdCBtaGlfcmluZyAqZXZfcmluZyA9ICZtaGlfZXZlbnQtPnJpbmc7DQo+ID4gLQlkbWFf YWRkcl90IHB0ciA9IGVyX2N0eHQtPnJwOw0KPiA+ICsJZG1hX2FkZHJfdCBwdHIgPSBsZTY0X3Rv X2NwdShlcl9jdHh0LT5ycCk7DQo+ID4gIAl2b2lkICpkZXZfcnA7DQo+ID4gDQo+ID4gIAlpZiAo IWlzX3ZhbGlkX3JpbmdfcHRyKGV2X3JpbmcsIHB0cikpIHsNCj4gPiBAQCAtNTM3LDE0ICs1Mzks MTQgQEAgc3RhdGljIHZvaWQNCj4gPiBtaGlfcmVjeWNsZV9ldl9yaW5nX2VsZW1lbnQoc3RydWN0 DQo+ID4gbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCwNCj4gPiANCj4gPiAgCS8qIFVwZGF0ZSB0 aGUgV1AgKi8NCj4gPiAgCXJpbmctPndwICs9IHJpbmctPmVsX3NpemU7DQo+ID4gLQljdHh0X3dw ID0gKnJpbmctPmN0eHRfd3AgKyByaW5nLT5lbF9zaXplOw0KPiA+ICsJY3R4dF93cCA9IGxlNjRf dG9fY3B1KCpyaW5nLT5jdHh0X3dwKSArIHJpbmctPmVsX3NpemU7DQo+ID4gDQo+ID4gIAlpZiAo cmluZy0+d3AgPj0gKHJpbmctPmJhc2UgKyByaW5nLT5sZW4pKSB7DQo+ID4gIAkJcmluZy0+d3Ag PSByaW5nLT5iYXNlOw0KPiA+ICAJCWN0eHRfd3AgPSByaW5nLT5pb21tdV9iYXNlOw0KPiA+ICAJ fQ0KPiA+IA0KPiA+IC0JKnJpbmctPmN0eHRfd3AgPSBjdHh0X3dwOw0KPiA+ICsJKnJpbmctPmN0 eHRfd3AgPSBjcHVfdG9fbGU2NChjdHh0X3dwKTsNCj4gPiANCj4gPiAgCS8qIFVwZGF0ZSB0aGUg UlAgKi8NCj4gPiAgCXJpbmctPnJwICs9IHJpbmctPmVsX3NpemU7DQo+ID4gQEAgLTc5OSw3ICs4 MDEsNyBAQCBpbnQgbWhpX3Byb2Nlc3NfY3RybF9ldl9yaW5nKHN0cnVjdA0KPiA+IG1oaV9jb250 cm9sbGVyDQo+ID4gKm1oaV9jbnRybCwNCj4gPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZtaGlf Y250cmwtPm1oaV9kZXYtPmRldjsNCj4gPiAgCXUzMiBjaGFuOw0KPiA+ICAJaW50IGNvdW50ID0g MDsNCj4gPiAtCWRtYV9hZGRyX3QgcHRyID0gZXJfY3R4dC0+cnA7DQo+ID4gKwlkbWFfYWRkcl90 IHB0ciA9IGxlNjRfdG9fY3B1KGVyX2N0eHQtPnJwKTsNCj4gPiANCj4gPiAgCS8qDQo+ID4gIAkg KiBUaGlzIGlzIGEgcXVpY2sgY2hlY2sgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZXZlbnQgcHJvY2Vz c2luZw0KPiA+IEBAIC05MzgsNyArOTQwLDcgQEAgaW50IG1oaV9wcm9jZXNzX2N0cmxfZXZfcmlu ZyhzdHJ1Y3QNCj4gPiBtaGlfY29udHJvbGxlcg0KPiA+ICptaGlfY250cmwsDQo+ID4gIAkJbWhp X3JlY3ljbGVfZXZfcmluZ19lbGVtZW50KG1oaV9jbnRybCwgZXZfcmluZyk7DQo+ID4gIAkJbG9j YWxfcnAgPSBldl9yaW5nLT5ycDsNCj4gPiANCj4gPiAtCQlwdHIgPSBlcl9jdHh0LT5ycDsNCj4g PiArCQlwdHIgPSBsZTY0X3RvX2NwdShlcl9jdHh0LT5ycCk7DQo+ID4gIAkJaWYgKCFpc192YWxp ZF9yaW5nX3B0cihldl9yaW5nLCBwdHIpKSB7DQo+ID4gIAkJCWRldl9lcnIoJm1oaV9jbnRybC0+ bWhpX2Rldi0+ZGV2LA0KPiA+ICAJCQkJIkV2ZW50IHJpbmcgcnAgcG9pbnRzIG91dHNpZGUgb2Yg dGhlDQo+ID4gZXZlbnQgcmluZ1xuIik7DQo+ID4gQEAgLTk2OCw3ICs5NzAsNyBAQCBpbnQgbWhp X3Byb2Nlc3NfZGF0YV9ldmVudF9yaW5nKHN0cnVjdA0KPiA+IG1oaV9jb250cm9sbGVyICptaGlf Y250cmwsDQo+ID4gIAlpbnQgY291bnQgPSAwOw0KPiA+ICAJdTMyIGNoYW47DQo+ID4gIAlzdHJ1 Y3QgbWhpX2NoYW4gKm1oaV9jaGFuOw0KPiA+IC0JZG1hX2FkZHJfdCBwdHIgPSBlcl9jdHh0LT5y cDsNCj4gPiArCWRtYV9hZGRyX3QgcHRyID0gbGU2NF90b19jcHUoZXJfY3R4dC0+cnApOw0KPiA+ IA0KPiA+ICAJaWYgKHVubGlrZWx5KE1ISV9FVkVOVF9BQ0NFU1NfSU5WQUxJRChtaGlfY250cmwt PnBtX3N0YXRlKSkpDQo+ID4gIAkJcmV0dXJuIC1FSU87DQo+ID4gQEAgLTEwMDksNyArMTAxMSw3 IEBAIGludCBtaGlfcHJvY2Vzc19kYXRhX2V2ZW50X3Jpbmcoc3RydWN0DQo+ID4gbWhpX2NvbnRy b2xsZXIgKm1oaV9jbnRybCwNCj4gPiAgCQltaGlfcmVjeWNsZV9ldl9yaW5nX2VsZW1lbnQobWhp X2NudHJsLCBldl9yaW5nKTsNCj4gPiAgCQlsb2NhbF9ycCA9IGV2X3JpbmctPnJwOw0KPiA+IA0K PiA+IC0JCXB0ciA9IGVyX2N0eHQtPnJwOw0KPiA+ICsJCXB0ciA9IGxlNjRfdG9fY3B1KGVyX2N0 eHQtPnJwKTsNCj4gPiAgCQlpZiAoIWlzX3ZhbGlkX3JpbmdfcHRyKGV2X3JpbmcsIHB0cikpIHsN Cj4gPiAgCQkJZGV2X2VycigmbWhpX2NudHJsLT5taGlfZGV2LT5kZXYsDQo+ID4gIAkJCQkiRXZl bnQgcmluZyBycCBwb2ludHMgb3V0c2lkZSBvZiB0aGUNCj4gPiBldmVudCByaW5nXG4iKTsNCj4g PiBAQCAtMTUzMSw3ICsxNTMzLDcgQEAgc3RhdGljIHZvaWQgbWhpX21hcmtfc3RhbGVfZXZlbnRz KHN0cnVjdA0KPiA+IG1oaV9jb250cm9sbGVyICptaGlfY250cmwsDQo+ID4gIAkvKiBtYXJrIGFs bCBzdGFsZSBldmVudHMgcmVsYXRlZCB0byBjaGFubmVsIGFzIFNUQUxFIGV2ZW50ICovDQo+ID4g IAlzcGluX2xvY2tfaXJxc2F2ZSgmbWhpX2V2ZW50LT5sb2NrLCBmbGFncyk7DQo+ID4gDQo+ID4g LQlwdHIgPSBlcl9jdHh0LT5ycDsNCj4gPiArCXB0ciA9IGxlNjRfdG9fY3B1KGVyX2N0eHQtPnJw KTsNCj4gPiAgCWlmICghaXNfdmFsaWRfcmluZ19wdHIoZXZfcmluZywgcHRyKSkgew0KPiA+ICAJ CWRldl9lcnIoJm1oaV9jbnRybC0+bWhpX2Rldi0+ZGV2LA0KPiA+ICAJCQkiRXZlbnQgcmluZyBy cCBwb2ludHMgb3V0c2lkZSBvZiB0aGUgZXZlbnQNCj4gPiByaW5nXG4iKTsNCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9idXMvbWhpL2NvcmUvcG0uYyBiL2RyaXZlcnMvYnVzL21oaS9jb3JlL3Bt LmMNCj4gPiBpbmRleCBiYmY2Y2QwNDg2MWUuLjBmYWYxNzNmYjk2MyAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL2J1cy9taGkvY29yZS9wbS5jDQo+ID4gKysrIGIvZHJpdmVycy9idXMvbWhpL2Nv cmUvcG0uYw0KPiA+IEBAIC0yMTgsNyArMjE4LDcgQEAgaW50IG1oaV9yZWFkeV9zdGF0ZV90cmFu c2l0aW9uKHN0cnVjdA0KPiA+IG1oaV9jb250cm9sbGVyICptaGlfY250cmwpDQo+ID4gIAkJCWNv bnRpbnVlOw0KPiA+IA0KPiA+ICAJCXJpbmctPndwID0gcmluZy0+YmFzZSArIHJpbmctPmxlbiAt IHJpbmctPmVsX3NpemU7DQo+ID4gLQkJKnJpbmctPmN0eHRfd3AgPSByaW5nLT5pb21tdV9iYXNl ICsgcmluZy0+bGVuIC0gcmluZy0NCj4gPiA+ZWxfc2l6ZTsNCj4gPiArCQkqcmluZy0+Y3R4dF93 cCA9IGNwdV90b19sZTY0KHJpbmctPmlvbW11X2Jhc2UgKyByaW5nLQ0KPiA+ID5sZW4gLSANCj4g PiByaW5nLT5lbF9zaXplKTsNCj4gPiAgCQkvKiBVcGRhdGUgYWxsIGNvcmVzICovDQo+ID4gIAkJ c21wX3dtYigpOw0KPiA+IA0KPiA+IEBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGludA0KPiA+ IG1oaV9wbV9taXNzaW9uX21vZGVfdHJhbnNpdGlvbihzdHJ1Y3QNCj4gPiBtaGlfY29udHJvbGxl ciAqbWhpX2NudHJsKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiANCj4gPiAgCQlyaW5nLT53cCA9 IHJpbmctPmJhc2UgKyByaW5nLT5sZW4gLSByaW5nLT5lbF9zaXplOw0KPiA+IC0JCSpyaW5nLT5j dHh0X3dwID0gcmluZy0+aW9tbXVfYmFzZSArIHJpbmctPmxlbiAtIHJpbmctDQo+ID4gPmVsX3Np emU7DQo+ID4gKwkJKnJpbmctPmN0eHRfd3AgPSBjcHVfdG9fbGU2NChyaW5nLT5pb21tdV9iYXNl ICsgcmluZy0NCj4gPiA+bGVuIC0gDQo+ID4gcmluZy0+ZWxfc2l6ZSk7DQo+ID4gIAkJLyogVXBk YXRlIHRvIGFsbCBjb3JlcyAqLw0KPiA+ICAJCXNtcF93bWIoKTsNCj4gPiANCj4gPiBAQCAtOTg2 LDcgKzk4Niw3IEBAIHN0YXRpYyB2b2lkIG1oaV9hc3NlcnRfZGV2X3dha2Uoc3RydWN0DQo+ID4g bWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRybCwgYm9vbCBmb3JjZSkNCj4gPiAgCQlhdG9taWNfaW5j KCZtaGlfY250cmwtPmRldl93YWtlKTsNCj4gPiAgCQlpZiAoTUhJX1dBS0VfREJfRk9SQ0VfU0VU X1ZBTElEKG1oaV9jbnRybC0+cG1fc3RhdGUpICYmDQo+ID4gIAkJICAgICFtaGlfY250cmwtPndh a2Vfc2V0KSB7DQo+ID4gLQkJCW1oaV93cml0ZV9kYihtaGlfY250cmwsIG1oaV9jbnRybC0+d2Fr ZV9kYiwgMSk7DQo+ID4gKwkJCW1oaV93cml0ZV9kYihtaGlfY250cmwsIG1oaV9jbnRybC0+d2Fr ZV9kYiwNCj4gPiBjcHVfdG9fbGU2NCgxKSk7DQo+ID4gIAkJCW1oaV9jbnRybC0+d2FrZV9zZXQg PSB0cnVlOw0KPiA+ICAJCX0NCj4gPiAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtaGlfY250 cmwtPndsb2NrLCBmbGFncyk7DQo+ID4gQEAgLTEwMDIsNyArMTAwMiw3IEBAIHN0YXRpYyB2b2lk IG1oaV9hc3NlcnRfZGV2X3dha2Uoc3RydWN0DQo+ID4gbWhpX2NvbnRyb2xsZXIgKm1oaV9jbnRy bCwgYm9vbCBmb3JjZSkNCj4gPiAgCQlpZiAoKGF0b21pY19pbmNfcmV0dXJuKCZtaGlfY250cmwt PmRldl93YWtlKSA9PSAxKSAmJg0KPiA+ICAJCSAgICBNSElfV0FLRV9EQl9TRVRfVkFMSUQobWhp X2NudHJsLT5wbV9zdGF0ZSkgJiYNCj4gPiAgCQkgICAgIW1oaV9jbnRybC0+d2FrZV9zZXQpIHsN Cj4gPiAtCQkJbWhpX3dyaXRlX2RiKG1oaV9jbnRybCwgbWhpX2NudHJsLT53YWtlX2RiLCAxKTsN Cj4gPiArCQkJbWhpX3dyaXRlX2RiKG1oaV9jbnRybCwgbWhpX2NudHJsLT53YWtlX2RiLA0KPiA+ IGNwdV90b19sZTY0KDEpKTsNCj4gDQo+IFRoaXMgY3B1X3RvX2xlNjQoKSBjYWxsIHNob3VsZCBi ZSB0YWtlbiBjYXJlIG9mIGluc2lkZSB0aGUgd3JpdGVfZGIgDQo+IGZ1bmN0aW9uIGluc3RlYWQs DQo+IHJpZ2h0Pw0KDQpUaGlzIGlzIGFjdHVhbGx5IHRvIGRlYWwgd2l0aCBjaGFuZ2luZyB0aGUg ZGJfdmFsIHRvIGFuIF9fbGU2NC4NCkFzIGZhciBhcyBJIGNhbiB0ZWxsIHRoZSBNTUlPIHJlZ2lz dGVycyBhcmUgZGVhbHQgd2l0aCBzdWNoIHRoYXQgdGhleQ0KYXBwZWFyIGluIGhvc3QgYnl0ZSBv cmRlci4NCk9ubHkgdGhlIGNvbnRleHRzIGFuZCBzdHJ1Y3R1cmVzIGFjY2Vzc2VkIHZpYSBETUEg YXBwZWFyIHRvIHJlcXVpcmUNCmV4cGxpY2l0IGNvbnZlcnNpb24gdG8gbGl0dGxlIGVuZGlhbi4g IEkgY2FuIHJld29yayB0aGlzIHBhdGNoIHRvIGF2b2lkDQpoYXZpbmcgdG8gZG8gdGhpcyBJIGJl bGlldmUuDQoNCj4gPiAgCQkJbWhpX2NudHJsLT53YWtlX3NldCA9IHRydWU7DQo+ID4gIAkJfQ0K PiA+ICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1oaV9jbnRybC0+d2xvY2ssIGZsYWdzKTsN Cj4gDQo+IFRoYW5rcywNCj4gQmhhdW1paw0KPiAtLS0NCj4gVGhlIFF1YWxjb21tIElubm92YXRp b24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSANCj4gRm9ydW0s DQo+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QNCg0KVGhhbmtzLA0K UGF1bA0K