Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932124AbeAKHpL (ORCPT + 1 other); Thu, 11 Jan 2018 02:45:11 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:57212 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750916AbeAKHpI (ORCPT ); Thu, 11 Jan 2018 02:45:08 -0500 From: Fabien DESSENNE To: Corentin Labbe , Alexandre TORGUE , "arei.gonglei@huawei.com" , "corbet@lwn.net" , "davem@davemloft.net" , "herbert@gondor.apana.org.au" , "jasowang@redhat.com" , "mcoquelin.stm32@gmail.com" , "mst@redhat.com" CC: "linux-arm-kernel@lists.infradead.org" , "linux-crypto@vger.kernel.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "virtualization@lists.linux-foundation.org" , Benjamin GAIGNARD , Lionel DEBIEVE Subject: Re: [PATCH 2/6] crypto: engine - Permit to enqueue all async requests Thread-Topic: [PATCH 2/6] crypto: engine - Permit to enqueue all async requests Thread-Index: AQHThM9Pfroeeu5keU6qDUjTJOvfMqNtIcOAgAEjzgA= Date: Thu, 11 Jan 2018 07:44:16 +0000 Message-ID: <4081a4dc-32af-c840-76a5-fb174c170013@st.com> References: <20180103201109.16077-1-clabbe.montjoie@gmail.com> <20180103201109.16077-3-clabbe.montjoie@gmail.com> <83fa00f2-6e93-d83f-fd9a-0048bd6d60ec@st.com> In-Reply-To: <83fa00f2-6e93-d83f-fd9a-0048bd6d60ec@st.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:52.0) Gecko/20100101 Thunderbird/52.5.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.49] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-11_03:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: KGFkZGluZyBteSB0ZXN0ZWQgYnkpDQoNCg0KT24gMTAvMDEvMTggMTU6MTksIEZhYmllbiBERVNT RU5ORSB3cm90ZToNCj4gT24gMDMvMDEvMTggMjE6MTEsIENvcmVudGluIExhYmJlIHdyb3RlOg0K Pj4gVGhlIGNyeXB0byBlbmdpbmUgY291bGQgYWN0dWFsbHkgb25seSBlbnF1ZXVlIGhhc2ggYW5k IGFibGtjaXBoZXIgcmVxdWVzdC4NCj4+IFRoaXMgcGF0Y2ggcGVybWl0IGl0IHRvIGVucXVldWUg YW55IHR5cGUgb2YgY3J5cHRvX2FzeW5jX3JlcXVlc3QuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTog Q29yZW50aW4gTGFiYmUgPGNsYWJiZS5tb250am9pZUBnbWFpbC5jb20+DQoNClRlc3RlZC1ieTog RmFiaWVuIERlc3Nlbm5lIDxmYWJpZW4uZGVzc2VubmVAc3QuY29tPg0KDQo+PiAtLS0NCj4+ICAg IGNyeXB0by9jcnlwdG9fZW5naW5lLmMgIHwgMjMwICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gICAgaW5jbHVkZS9jcnlwdG8vZW5naW5lLmggfCAg NTkgKysrKysrKy0tLS0tLQ0KPj4gICAgMiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygr KSwgMTQxIGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9jcnlwdG8vY3J5cHRvX2Vu Z2luZS5jIGIvY3J5cHRvL2NyeXB0b19lbmdpbmUuYw0KPj4gaW5kZXggNjFlN2M0ZTAyZmQyLi4w MzYyNzBiNjE2NDggMTAwNjQ0DQo+PiAtLS0gYS9jcnlwdG8vY3J5cHRvX2VuZ2luZS5jDQo+PiAr KysgYi9jcnlwdG8vY3J5cHRvX2VuZ2luZS5jDQo+PiBAQCAtMTUsNyArMTUsNiBAQA0KPj4gICAg I2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPj4gICAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ PiAgICAjaW5jbHVkZSA8Y3J5cHRvL2VuZ2luZS5oPg0KPj4gLSNpbmNsdWRlIDxjcnlwdG8vaW50 ZXJuYWwvaGFzaC5oPg0KPj4gICAgI2luY2x1ZGUgPHVhcGkvbGludXgvc2NoZWQvdHlwZXMuaD4N Cj4+ICAgICNpbmNsdWRlICJpbnRlcm5hbC5oIg0KPj4gICAgDQo+PiBAQCAtMzQsMTEgKzMzLDEw IEBAIHN0YXRpYyB2b2lkIGNyeXB0b19wdW1wX3JlcXVlc3RzKHN0cnVjdCBjcnlwdG9fZW5naW5l ICplbmdpbmUsDQo+PiAgICAJCQkJIGJvb2wgaW5fa3RocmVhZCkNCj4+ICAgIHsNCj4+ICAgIAlz dHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKmFzeW5jX3JlcSwgKmJhY2tsb2c7DQo+PiAtCXN0 cnVjdCBhaGFzaF9yZXF1ZXN0ICpocmVxOw0KPj4gLQlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0 ICpicmVxOw0KPj4gICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+PiAgICAJYm9vbCB3YXNfYnVz eSA9IGZhbHNlOw0KPj4gLQlpbnQgcmV0LCBydHlwZTsNCj4+ICsJaW50IHJldDsNCj4+ICsJc3Ry dWN0IGNyeXB0b19lbmdpbmVfcmVxY3R4ICplbmdpbmVjdHg7DQo+PiAgICANCj4+ICAgIAlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+PiAgICANCj4+IEBA IC05NCw3ICs5Miw2IEBAIHN0YXRpYyB2b2lkIGNyeXB0b19wdW1wX3JlcXVlc3RzKHN0cnVjdCBj cnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiAgICANCj4+ICAgIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICAgIA0KPj4gLQlydHlwZSA9IGNy eXB0b190Zm1fYWxnX3R5cGUoZW5naW5lLT5jdXJfcmVxLT50Zm0pOw0KPj4gICAgCS8qIFVudGls IGhlcmUgd2UgZ2V0IHRoZSByZXF1ZXN0IG5lZWQgdG8gYmUgZW5jcnlwdGVkIHN1Y2Nlc3NmdWxs eSAqLw0KPj4gICAgCWlmICghd2FzX2J1c3kgJiYgZW5naW5lLT5wcmVwYXJlX2NyeXB0X2hhcmR3 YXJlKSB7DQo+PiAgICAJCXJldCA9IGVuZ2luZS0+cHJlcGFyZV9jcnlwdF9oYXJkd2FyZShlbmdp bmUpOw0KPj4gQEAgLTEwNCw1NyArMTAxLDMxIEBAIHN0YXRpYyB2b2lkIGNyeXB0b19wdW1wX3Jl cXVlc3RzKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiAgICAJCX0NCj4+ICAgIAl9 DQo+PiAgICANCj4+IC0Jc3dpdGNoIChydHlwZSkgew0KPj4gLQljYXNlIENSWVBUT19BTEdfVFlQ RV9BSEFTSDoNCj4+IC0JCWhyZXEgPSBhaGFzaF9yZXF1ZXN0X2Nhc3QoZW5naW5lLT5jdXJfcmVx KTsNCj4+IC0JCWlmIChlbmdpbmUtPnByZXBhcmVfaGFzaF9yZXF1ZXN0KSB7DQo+PiAtCQkJcmV0 ID0gZW5naW5lLT5wcmVwYXJlX2hhc2hfcmVxdWVzdChlbmdpbmUsIGhyZXEpOw0KPj4gLQkJCWlm IChyZXQpIHsNCj4+IC0JCQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byBwcmVwYXJl IHJlcXVlc3Q6ICVkXG4iLA0KPj4gLQkJCQkJcmV0KTsNCj4+IC0JCQkJZ290byByZXFfZXJyOw0K Pj4gLQkJCX0NCj4+IC0JCQllbmdpbmUtPmN1cl9yZXFfcHJlcGFyZWQgPSB0cnVlOw0KPj4gLQkJ fQ0KPj4gLQkJcmV0ID0gZW5naW5lLT5oYXNoX29uZV9yZXF1ZXN0KGVuZ2luZSwgaHJlcSk7DQo+ PiAtCQlpZiAocmV0KSB7DQo+PiAtCQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byBo YXNoIG9uZSByZXF1ZXN0IGZyb20gcXVldWVcbiIpOw0KPj4gLQkJCWdvdG8gcmVxX2VycjsNCj4+ IC0JCX0NCj4+IC0JCXJldHVybjsNCj4+IC0JY2FzZSBDUllQVE9fQUxHX1RZUEVfQUJMS0NJUEhF UjoNCj4+IC0JCWJyZXEgPSBhYmxrY2lwaGVyX3JlcXVlc3RfY2FzdChlbmdpbmUtPmN1cl9yZXEp Ow0KPj4gLQkJaWYgKGVuZ2luZS0+cHJlcGFyZV9jaXBoZXJfcmVxdWVzdCkgew0KPj4gLQkJCXJl dCA9IGVuZ2luZS0+cHJlcGFyZV9jaXBoZXJfcmVxdWVzdChlbmdpbmUsIGJyZXEpOw0KPj4gLQkJ CWlmIChyZXQpIHsNCj4+IC0JCQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byBwcmVw YXJlIHJlcXVlc3Q6ICVkXG4iLA0KPj4gLQkJCQkJcmV0KTsNCj4+IC0JCQkJZ290byByZXFfZXJy Ow0KPj4gLQkJCX0NCj4+IC0JCQllbmdpbmUtPmN1cl9yZXFfcHJlcGFyZWQgPSB0cnVlOw0KPj4g LQkJfQ0KPj4gLQkJcmV0ID0gZW5naW5lLT5jaXBoZXJfb25lX3JlcXVlc3QoZW5naW5lLCBicmVx KTsNCj4+ICsJZW5naW5lY3R4ID0gY3J5cHRvX3RmbV9jdHgoYXN5bmNfcmVxLT50Zm0pOw0KPj4g Kw0KPj4gKwlpZiAoZW5naW5lY3R4LT5vcC5wcmVwYXJlX3JlcXVlc3QpIHsNCj4+ICsJCXJldCA9 IGVuZ2luZWN0eC0+b3AucHJlcGFyZV9yZXF1ZXN0KGVuZ2luZSwgYXN5bmNfcmVxKTsNCj4+ICAg IAkJaWYgKHJldCkgew0KPj4gLQkJCWRldl9lcnIoZW5naW5lLT5kZXYsICJmYWlsZWQgdG8gY2lw aGVyIG9uZSByZXF1ZXN0IGZyb20gcXVldWVcbiIpOw0KPj4gKwkJCWRldl9lcnIoZW5naW5lLT5k ZXYsICJmYWlsZWQgdG8gcHJlcGFyZSByZXF1ZXN0OiAlZFxuIiwNCj4+ICsJCQkJcmV0KTsNCj4+ ICAgIAkJCWdvdG8gcmVxX2VycjsNCj4+ICAgIAkJfQ0KPj4gLQkJcmV0dXJuOw0KPj4gLQlkZWZh dWx0Og0KPj4gLQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byBwcmVwYXJlIHJlcXVl c3Qgb2YgdW5rbm93biB0eXBlXG4iKTsNCj4+IC0JCXJldHVybjsNCj4+ICsJCWVuZ2luZS0+Y3Vy X3JlcV9wcmVwYXJlZCA9IHRydWU7DQo+PiArCX0NCj4+ICsJaWYgKCFlbmdpbmVjdHgtPm9wLmRv X29uZV9yZXF1ZXN0KSB7DQo+PiArCQlkZXZfZXJyKGVuZ2luZS0+ZGV2LCAiZmFpbGVkIHRvIGRv IHJlcXVlc3RcbiIpOw0KPj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4+ICsJCWdvdG8gcmVxX2VycjsN Cj4+ICsJfQ0KPj4gKwlyZXQgPSBlbmdpbmVjdHgtPm9wLmRvX29uZV9yZXF1ZXN0KGVuZ2luZSwg YXN5bmNfcmVxKTsNCj4+ICsJaWYgKHJldCkgew0KPj4gKwkJZGV2X2VycihlbmdpbmUtPmRldiwg IkZhaWxlZCB0byBkbyBvbmUgcmVxdWVzdCBmcm9tIHF1ZXVlOiAlZFxuIiwgcmV0KTsNCj4+ICsJ CWdvdG8gcmVxX2VycjsNCj4+ICAgIAl9DQo+PiArCXJldHVybjsNCj4+ICAgIA0KPj4gICAgcmVx X2VycjoNCj4+IC0Jc3dpdGNoIChydHlwZSkgew0KPj4gLQljYXNlIENSWVBUT19BTEdfVFlQRV9B SEFTSDoNCj4+IC0JCWhyZXEgPSBhaGFzaF9yZXF1ZXN0X2Nhc3QoZW5naW5lLT5jdXJfcmVxKTsN Cj4+IC0JCWNyeXB0b19maW5hbGl6ZV9oYXNoX3JlcXVlc3QoZW5naW5lLCBocmVxLCByZXQpOw0K Pj4gLQkJYnJlYWs7DQo+PiAtCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0FCTEtDSVBIRVI6DQo+PiAt CQlicmVxID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2Nhc3QoZW5naW5lLT5jdXJfcmVxKTsNCj4+IC0J CWNyeXB0b19maW5hbGl6ZV9jaXBoZXJfcmVxdWVzdChlbmdpbmUsIGJyZXEsIHJldCk7DQo+PiAt CQlicmVhazsNCj4+IC0JfQ0KPj4gKwljcnlwdG9fZmluYWxpemVfcmVxdWVzdChlbmdpbmUsIGFz eW5jX3JlcSwgcmV0KTsNCj4+ICAgIAlyZXR1cm47DQo+PiAgICANCj4+ICAgIG91dDoNCj4+IEBA IC0xNzAsMTMgKzE0MSwxMiBAQCBzdGF0aWMgdm9pZCBjcnlwdG9fcHVtcF93b3JrKHN0cnVjdCBr dGhyZWFkX3dvcmsgKndvcmspDQo+PiAgICB9DQo+PiAgICANCj4+ICAgIC8qKg0KPj4gLSAqIGNy eXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdCAtIHRyYW5zZmVyIHRoZSBuZXcgcmVxdWVzdCBp bnRvIHRoZQ0KPj4gLSAqIGVuZ2luZXF1ZXVlDQo+PiArICogY3J5cHRvX3RyYW5zZmVyX3JlcXVl c3QgLSB0cmFuc2ZlciB0aGUgbmV3IHJlcXVlc3QgaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+PiAg ICAgKiBAZW5naW5lOiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+PiAgICAgKiBAcmVxOiB0aGUgcmVx dWVzdCBuZWVkIHRvIGJlIGxpc3RlZCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4+ICAgICAqLw0K Pj4gLWludCBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdp bmUgKmVuZ2luZSwNCj4+IC0JCQkJICAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLA0K Pj4gK3N0YXRpYyBpbnQgY3J5cHRvX3RyYW5zZmVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdp bmUgKmVuZ2luZSwNCj4+ICsJCQkJICAgc3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXEs DQo+PiAgICAJCQkJICAgYm9vbCBuZWVkX3B1bXApDQo+PiAgICB7DQo+PiAgICAJdW5zaWduZWQg bG9uZyBmbGFnczsNCj4+IEBAIC0xODksNyArMTU5LDcgQEAgaW50IGNyeXB0b190cmFuc2Zlcl9j aXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gICAgCQlyZXR1 cm4gLUVTSFVURE9XTjsNCj4+ICAgIAl9DQo+PiAgICANCj4+IC0JcmV0ID0gYWJsa2NpcGhlcl9l bnF1ZXVlX3JlcXVlc3QoJmVuZ2luZS0+cXVldWUsIHJlcSk7DQo+PiArCXJldCA9IGNyeXB0b19l bnF1ZXVlX3JlcXVlc3QoJmVuZ2luZS0+cXVldWUsIHJlcSk7DQo+PiAgICANCj4+ICAgIAlpZiAo IWVuZ2luZS0+YnVzeSAmJiBuZWVkX3B1bXApDQo+PiAgICAJCWt0aHJlYWRfcXVldWVfd29yayhl bmdpbmUtPmt3b3JrZXIsICZlbmdpbmUtPnB1bXBfcmVxdWVzdHMpOw0KPj4gQEAgLTE5Nyw4NSAr MTY3LDk3IEBAIGludCBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0 b19lbmdpbmUgKmVuZ2luZSwNCj4+ICAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICAgIAlyZXR1cm4gcmV0Ow0KPj4gICAgfQ0KPj4gLUVY UE9SVF9TWU1CT0xfR1BMKGNyeXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdCk7DQo+PiArRVhQ T1JUX1NZTUJPTF9HUEwoY3J5cHRvX3RyYW5zZmVyX3JlcXVlc3QpOw0KPiBEbyBub3QgZXhwb3J0 IHRoaXMgZnVuY3Rpb24gd2hpY2ggaXMgYSBzdGF0aWMgb25lLg0KPg0KPj4gICAgDQo+PiAgICAv KioNCj4+IC0gKiBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lIC0gdHJh bnNmZXIgb25lIHJlcXVlc3QgdG8gbGlzdA0KPj4gKyAqIGNyeXB0b190cmFuc2Zlcl9yZXF1ZXN0 X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSByZXF1ZXN0IHRvIGxpc3QNCj4+ICAgICAqIGludG8g dGhlIGVuZ2luZSBxdWV1ZQ0KPj4gICAgICogQGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0K Pj4gICAgICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBsaXN0ZWQgaW50byB0aGUgZW5n aW5lIHF1ZXVlDQo+PiAgICAgKi8NCj4+ICtzdGF0aWMgaW50IGNyeXB0b190cmFuc2Zlcl9yZXF1 ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gKwkJCQkJICAg ICBzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKnJlcSkNCj4+ICt7DQo+PiArCXJldHVybiBj cnlwdG9fdHJhbnNmZXJfcmVxdWVzdChlbmdpbmUsIHJlcSwgdHJ1ZSk7DQo+PiArfQ0KPj4gKw0K Pj4gKy8qKg0KPj4gKyAqIGNyeXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdF90b19lbmdpbmUg LSB0cmFuc2ZlciBvbmUgYWJsa2NpcGhlcl9yZXF1ZXN0DQo+PiArICogdG8gbGlzdCBpbnRvIHRo ZSBlbmdpbmUgcXVldWUNCj4+ICsgKiBAZW5naW5lOiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+PiAr ICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBsaXN0ZWQgaW50byB0aGUgZW5naW5lIHF1 ZXVlDQo+PiArICogVE9ETzogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gd2hlbiBza2NpcGhlciBjb252 ZXJzaW9uIGlzIGZpbmlzaGVkDQo+PiArICovDQo+PiAgICBpbnQgY3J5cHRvX3RyYW5zZmVyX2Np cGhlcl9yZXF1ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4g ICAgCQkJCQkgICAgIHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4+ICAgIHsNCj4+ IC0JcmV0dXJuIGNyeXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdChlbmdpbmUsIHJlcSwgdHJ1 ZSk7DQo+PiArCXJldHVybiBjcnlwdG9fdHJhbnNmZXJfcmVxdWVzdF90b19lbmdpbmUoZW5naW5l LCAmcmVxLT5iYXNlKTsNCj4+ICAgIH0NCj4+ICAgIEVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b190 cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdF90b19lbmdpbmUpOw0KPj4gICAgDQo+PiAgICAvKioNCj4+ IC0gKiBjcnlwdG9fdHJhbnNmZXJfaGFzaF9yZXF1ZXN0IC0gdHJhbnNmZXIgdGhlIG5ldyByZXF1 ZXN0IGludG8gdGhlDQo+PiAtICogZW5naW5lcXVldWUNCj4+ICsgKiBjcnlwdG9fdHJhbnNmZXJf c2tjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUgLSB0cmFuc2ZlciBvbmUgc2tjaXBoZXJfcmVxdWVz dA0KPj4gKyAqIHRvIGxpc3QgaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+PiAgICAgKiBAZW5naW5l OiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+PiAgICAgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRv IGJlIGxpc3RlZCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4+ICAgICAqLw0KPj4gLWludCBjcnlw dG9fdHJhbnNmZXJfaGFzaF9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ PiAtCQkJCSBzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxLCBib29sIG5lZWRfcHVtcCkNCj4+ICtp bnQgY3J5cHRvX3RyYW5zZmVyX3NrY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKHN0cnVjdCBjcnlw dG9fZW5naW5lICplbmdpbmUsDQo+PiArCQkJCQkgICAgICAgc3RydWN0IHNrY2lwaGVyX3JlcXVl c3QgKnJlcSkNCj4+ICAgIHsNCj4+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+IC0JaW50IHJl dDsNCj4+IC0NCj4+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxh Z3MpOw0KPj4gLQ0KPj4gLQlpZiAoIWVuZ2luZS0+cnVubmluZykgew0KPj4gLQkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+PiAtCQlyZXR1cm4g LUVTSFVURE9XTjsNCj4+IC0JfQ0KPj4gLQ0KPj4gLQlyZXQgPSBhaGFzaF9lbnF1ZXVlX3JlcXVl c3QoJmVuZ2luZS0+cXVldWUsIHJlcSk7DQo+PiAtDQo+PiAtCWlmICghZW5naW5lLT5idXN5ICYm IG5lZWRfcHVtcCkNCj4+IC0JCWt0aHJlYWRfcXVldWVfd29yayhlbmdpbmUtPmt3b3JrZXIsICZl bmdpbmUtPnB1bXBfcmVxdWVzdHMpOw0KPj4gKwlyZXR1cm4gY3J5cHRvX3RyYW5zZmVyX3JlcXVl c3RfdG9fZW5naW5lKGVuZ2luZSwgJnJlcS0+YmFzZSk7DQo+PiArfQ0KPj4gK0VYUE9SVF9TWU1C T0xfR1BMKGNyeXB0b190cmFuc2Zlcl9za2NpcGhlcl9yZXF1ZXN0X3RvX2VuZ2luZSk7DQo+PiAg ICANCj4+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFn cyk7DQo+PiAtCXJldHVybiByZXQ7DQo+PiArLyoqDQo+PiArICogY3J5cHRvX3RyYW5zZmVyX2Fr Y2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lIC0gdHJhbnNmZXIgb25lIGFrY2lwaGVyX3JlcXVlc3QN Cj4+ICsgKiB0byBsaXN0IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPj4gKyAqIEBlbmdpbmU6IHRo ZSBoYXJkd2FyZSBlbmdpbmUNCj4+ICsgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGxp c3RlZCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4+ICsgKi8NCj4+ICtpbnQgY3J5cHRvX3RyYW5z ZmVyX2FrY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdp bmUsDQo+PiArCQkJCQkgICAgICAgc3RydWN0IGFrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4+ICt7 DQo+PiArCXJldHVybiBjcnlwdG9fdHJhbnNmZXJfcmVxdWVzdF90b19lbmdpbmUoZW5naW5lLCAm cmVxLT5iYXNlKTsNCj4+ICAgIH0NCj4+IC1FWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fdHJhbnNm ZXJfaGFzaF9yZXF1ZXN0KTsNCj4+ICtFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fdHJhbnNmZXJf YWtjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUpOw0KPj4gICAgDQo+PiAgICAvKioNCj4+IC0gKiBj cnlwdG9fdHJhbnNmZXJfaGFzaF9yZXF1ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSByZXF1 ZXN0IHRvIGxpc3QNCj4+IC0gKiBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4+ICsgKiBjcnlwdG9f dHJhbnNmZXJfaGFzaF9yZXF1ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSBhaGFzaF9yZXF1 ZXN0DQo+PiArICogdG8gbGlzdCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4+ICAgICAqIEBlbmdp bmU6IHRoZSBoYXJkd2FyZSBlbmdpbmUNCj4+ICAgICAqIEByZXE6IHRoZSByZXF1ZXN0IG5lZWQg dG8gYmUgbGlzdGVkIGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPj4gICAgICovDQo+PiAgICBpbnQg Y3J5cHRvX3RyYW5zZmVyX2hhc2hfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdp bmUgKmVuZ2luZSwNCj4+ICAgIAkJCQkJICAgc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSkNCj4+ ICAgIHsNCj4+IC0JcmV0dXJuIGNyeXB0b190cmFuc2Zlcl9oYXNoX3JlcXVlc3QoZW5naW5lLCBy ZXEsIHRydWUpOw0KPj4gKwlyZXR1cm4gY3J5cHRvX3RyYW5zZmVyX3JlcXVlc3RfdG9fZW5naW5l KGVuZ2luZSwgJnJlcS0+YmFzZSk7DQo+PiAgICB9DQo+PiAgICBFWFBPUlRfU1lNQk9MX0dQTChj cnlwdG9fdHJhbnNmZXJfaGFzaF9yZXF1ZXN0X3RvX2VuZ2luZSk7DQo+PiAgICANCj4gUGxlYXNl IGFkZCB0aGlzIEVYUE9SVGVkIGZ1bmN0aW9uOg0KPg0KPiBjcnlwdG9fdHJhbnNmZXJfYWVhZF9y ZXF1ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiBzdHJ1Y3Qg YWVhZF9yZXF1ZXN0ICpyZXEpDQo+DQo+PiAgICAvKioNCj4+IC0gKiBjcnlwdG9fZmluYWxpemVf Y2lwaGVyX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgcmVxdWVzdCBpZiB0aGUgcmVxdWVzdCBpcyBk b25lDQo+PiArICogY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgcmVxdWVz dCBpZiB0aGUgcmVxdWVzdCBpcyBkb25lDQo+PiAgICAgKiBAZW5naW5lOiB0aGUgaGFyZHdhcmUg ZW5naW5lDQo+PiAgICAgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGZpbmFsaXplZA0K Pj4gICAgICogQGVycjogZXJyb3IgbnVtYmVyDQo+PiAgICAgKi8NCj4+IC12b2lkIGNyeXB0b19m aW5hbGl6ZV9jaXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4g LQkJCQkgICAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKQ0KPj4gK3Zv aWQgY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwN Cj4gc2hhbGwgYmUgc3RhdGljDQo+DQo+PiArCQkJICAgICBzdHJ1Y3QgY3J5cHRvX2FzeW5jX3Jl cXVlc3QgKnJlcSwgaW50IGVycikNCj4+ICAgIHsNCj4+ICAgIAl1bnNpZ25lZCBsb25nIGZsYWdz Ow0KPj4gICAgCWJvb2wgZmluYWxpemVfY3VyX3JlcSA9IGZhbHNlOw0KPj4gICAgCWludCByZXQ7 DQo+PiArCXN0cnVjdCBjcnlwdG9fZW5naW5lX3JlcWN0eCAqZW5naW5lY3R4Ow0KPj4gICAgDQo+ PiAgICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPj4g LQlpZiAoZW5naW5lLT5jdXJfcmVxID09ICZyZXEtPmJhc2UpDQo+PiArCWlmIChlbmdpbmUtPmN1 cl9yZXEgPT0gcmVxKQ0KPj4gICAgCQlmaW5hbGl6ZV9jdXJfcmVxID0gdHJ1ZTsNCj4+ICAgIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4+ICAg IA0KPj4gICAgCWlmIChmaW5hbGl6ZV9jdXJfcmVxKSB7DQo+PiArCQllbmdpbmVjdHggPSBjcnlw dG9fdGZtX2N0eChyZXEtPnRmbSk7DQo+PiAgICAJCWlmIChlbmdpbmUtPmN1cl9yZXFfcHJlcGFy ZWQgJiYNCj4+IC0JCSAgICBlbmdpbmUtPnVucHJlcGFyZV9jaXBoZXJfcmVxdWVzdCkgew0KPj4g LQkJCXJldCA9IGVuZ2luZS0+dW5wcmVwYXJlX2NpcGhlcl9yZXF1ZXN0KGVuZ2luZSwgcmVxKTsN Cj4+ICsJCSAgICBlbmdpbmVjdHgtPm9wLnVucHJlcGFyZV9yZXF1ZXN0KSB7DQo+PiArCQkJcmV0 ID0gZW5naW5lY3R4LT5vcC51bnByZXBhcmVfcmVxdWVzdChlbmdpbmUsIHJlcSk7DQo+PiAgICAJ CQlpZiAocmV0KQ0KPj4gICAgCQkJCWRldl9lcnIoZW5naW5lLT5kZXYsICJmYWlsZWQgdG8gdW5w cmVwYXJlIHJlcXVlc3RcbiIpOw0KPj4gICAgCQl9DQo+PiBAQCAtMjg1LDQ2ICsyNjcsNjQgQEAg dm9pZCBjcnlwdG9fZmluYWxpemVfY2lwaGVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdpbmUg KmVuZ2luZSwNCj4+ICAgIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5xdWV1ZV9s b2NrLCBmbGFncyk7DQo+PiAgICAJfQ0KPj4gICAgDQo+PiAtCXJlcS0+YmFzZS5jb21wbGV0ZSgm cmVxLT5iYXNlLCBlcnIpOw0KPj4gKwlyZXEtPmNvbXBsZXRlKHJlcSwgZXJyKTsNCj4+ICAgIA0K Pj4gICAgCWt0aHJlYWRfcXVldWVfd29yayhlbmdpbmUtPmt3b3JrZXIsICZlbmdpbmUtPnB1bXBf cmVxdWVzdHMpOw0KPj4gICAgfQ0KPj4gLUVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19maW5hbGl6 ZV9jaXBoZXJfcmVxdWVzdCk7DQo+PiAgICANCj4+ICAgIC8qKg0KPj4gLSAqIGNyeXB0b19maW5h bGl6ZV9oYXNoX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgcmVxdWVzdCBpZiB0aGUgcmVxdWVzdCBp cyBkb25lDQo+PiArICogY3J5cHRvX2ZpbmFsaXplX2NpcGhlcl9yZXF1ZXN0IC0gZmluYWxpemUg b25lIGFibGtjaXBoZXJfcmVxdWVzdCBpZg0KPj4gKyAqIHRoZSByZXF1ZXN0IGlzIGRvbmUNCj4+ ICAgICAqIEBlbmdpbmU6IHRoZSBoYXJkd2FyZSBlbmdpbmUNCj4+ICAgICAqIEByZXE6IHRoZSBy ZXF1ZXN0IG5lZWQgdG8gYmUgZmluYWxpemVkDQo+PiAgICAgKiBAZXJyOiBlcnJvciBudW1iZXIN Cj4+ICAgICAqLw0KPj4gLXZvaWQgY3J5cHRvX2ZpbmFsaXplX2hhc2hfcmVxdWVzdChzdHJ1Y3Qg Y3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gLQkJCQkgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpy ZXEsIGludCBlcnIpDQo+PiArdm9pZCBjcnlwdG9fZmluYWxpemVfY2lwaGVyX3JlcXVlc3Qoc3Ry dWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4+ICsJCQkJICAgIHN0cnVjdCBhYmxrY2lwaGVy X3JlcXVlc3QgKnJlcSwgaW50IGVycikNCj4+ICAgIHsNCj4+IC0JdW5zaWduZWQgbG9uZyBmbGFn czsNCj4+IC0JYm9vbCBmaW5hbGl6ZV9jdXJfcmVxID0gZmFsc2U7DQo+PiAtCWludCByZXQ7DQo+ PiAtDQo+PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsN Cj4+IC0JaWYgKGVuZ2luZS0+Y3VyX3JlcSA9PSAmcmVxLT5iYXNlKQ0KPj4gLQkJZmluYWxpemVf Y3VyX3JlcSA9IHRydWU7DQo+PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVl dWVfbG9jaywgZmxhZ3MpOw0KPj4gKwlyZXR1cm4gY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3QoZW5n aW5lLCAmcmVxLT5iYXNlLCBlcnIpOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MX0dQTChjcnlw dG9fZmluYWxpemVfY2lwaGVyX3JlcXVlc3QpOw0KPj4gICAgDQo+PiAtCWlmIChmaW5hbGl6ZV9j dXJfcmVxKSB7DQo+PiAtCQlpZiAoZW5naW5lLT5jdXJfcmVxX3ByZXBhcmVkICYmDQo+PiAtCQkg ICAgZW5naW5lLT51bnByZXBhcmVfaGFzaF9yZXF1ZXN0KSB7DQo+PiAtCQkJcmV0ID0gZW5naW5l LT51bnByZXBhcmVfaGFzaF9yZXF1ZXN0KGVuZ2luZSwgcmVxKTsNCj4+IC0JCQlpZiAocmV0KQ0K Pj4gLQkJCQlkZXZfZXJyKGVuZ2luZS0+ZGV2LCAiZmFpbGVkIHRvIHVucHJlcGFyZSByZXF1ZXN0 XG4iKTsNCj4+IC0JCX0NCj4+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnF1ZXVlX2xv Y2ssIGZsYWdzKTsNCj4+IC0JCWVuZ2luZS0+Y3VyX3JlcSA9IE5VTEw7DQo+PiAtCQllbmdpbmUt PmN1cl9yZXFfcHJlcGFyZWQgPSBmYWxzZTsNCj4+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPj4gLQl9DQo+PiArLyoqDQo+PiArICogY3J5 cHRvX2ZpbmFsaXplX3NrY2lwaGVyX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgc2tjaXBoZXJfcmVx dWVzdCBpZg0KPj4gKyAqIHRoZSByZXF1ZXN0IGlzIGRvbmUNCj4+ICsgKiBAZW5naW5lOiB0aGUg aGFyZHdhcmUgZW5naW5lDQo+PiArICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBmaW5h bGl6ZWQNCj4+ICsgKiBAZXJyOiBlcnJvciBudW1iZXINCj4+ICsgKi8NCj4+ICt2b2lkIGNyeXB0 b19maW5hbGl6ZV9za2NpcGhlcl9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUs DQo+PiArCQkJCSAgICAgIHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpDQo+ PiArew0KPj4gKwlyZXR1cm4gY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3QoZW5naW5lLCAmcmVxLT5i YXNlLCBlcnIpOw0KPj4gK30NCj4+ICtFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fZmluYWxpemVf c2tjaXBoZXJfcmVxdWVzdCk7DQo+PiAgICANCj4+IC0JcmVxLT5iYXNlLmNvbXBsZXRlKCZyZXEt PmJhc2UsIGVycik7DQo+PiArLyoqDQo+PiArICogY3J5cHRvX2ZpbmFsaXplX2FrY2lwaGVyX3Jl cXVlc3QgLSBmaW5hbGl6ZSBvbmUgYWtjaXBoZXJfcmVxdWVzdCBpZg0KPj4gKyAqIHRoZSByZXF1 ZXN0IGlzIGRvbmUNCj4+ICsgKiBAZW5naW5lOiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+PiArICog QHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBmaW5hbGl6ZWQNCj4+ICsgKiBAZXJyOiBlcnJv ciBudW1iZXINCj4+ICsgKi8NCj4+ICt2b2lkIGNyeXB0b19maW5hbGl6ZV9ha2NpcGhlcl9yZXF1 ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiArCQkJCSAgICAgIHN0cnVjdCBh a2NpcGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpDQo+PiArew0KPj4gKwlyZXR1cm4gY3J5cHRv X2ZpbmFsaXplX3JlcXVlc3QoZW5naW5lLCAmcmVxLT5iYXNlLCBlcnIpOw0KPj4gK30NCj4+ICtF WFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fZmluYWxpemVfYWtjaXBoZXJfcmVxdWVzdCk7DQo+PiAg ICANCj4+IC0Ja3RocmVhZF9xdWV1ZV93b3JrKGVuZ2luZS0+a3dvcmtlciwgJmVuZ2luZS0+cHVt cF9yZXF1ZXN0cyk7DQo+PiArLyoqDQo+PiArICogY3J5cHRvX2ZpbmFsaXplX2hhc2hfcmVxdWVz dCAtIGZpbmFsaXplIG9uZSBhaGFzaF9yZXF1ZXN0IGlmDQo+PiArICogdGhlIHJlcXVlc3QgaXMg ZG9uZQ0KPj4gKyAqIEBlbmdpbmU6IHRoZSBoYXJkd2FyZSBlbmdpbmUNCj4+ICsgKiBAcmVxOiB0 aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGZpbmFsaXplZA0KPj4gKyAqIEBlcnI6IGVycm9yIG51bWJl cg0KPj4gKyAqLw0KPj4gK3ZvaWQgY3J5cHRvX2ZpbmFsaXplX2hhc2hfcmVxdWVzdChzdHJ1Y3Qg Y3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gKwkJCQkgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpy ZXEsIGludCBlcnIpDQo+PiArew0KPj4gKwlyZXR1cm4gY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3Qo ZW5naW5lLCAmcmVxLT5iYXNlLCBlcnIpOw0KPj4gICAgfQ0KPj4gICAgRVhQT1JUX1NZTUJPTF9H UEwoY3J5cHRvX2ZpbmFsaXplX2hhc2hfcmVxdWVzdCk7DQo+IEFkZA0KPiBjcnlwdG9fZmluYWxp emVfYWVhZF9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsIHN0cnVjdA0KPiBh ZWFkX3JlcXVlc3QgKnJlcSwgaW50IGVycikNCj4NCj4+ICAgIA0KPj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvY3J5cHRvL2VuZ2luZS5oIGIvaW5jbHVkZS9jcnlwdG8vZW5naW5lLmgNCj4+IGluZGV4 IGRkMDRjMTY5OWI1MS4uMWVhN2NiZTkyZWFmIDEwMDY0NA0KPj4gLS0tIGEvaW5jbHVkZS9jcnlw dG8vZW5naW5lLmgNCj4+ICsrKyBiL2luY2x1ZGUvY3J5cHRvL2VuZ2luZS5oDQo+PiBAQCAtMTcs NyArMTcsOSBAQA0KPj4gICAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPj4gICAgI2luY2x1 ZGUgPGxpbnV4L2t0aHJlYWQuaD4NCj4+ICAgICNpbmNsdWRlIDxjcnlwdG8vYWxnYXBpLmg+DQo+ PiArI2luY2x1ZGUgPGNyeXB0by9ha2NpcGhlci5oPg0KPj4gICAgI2luY2x1ZGUgPGNyeXB0by9o YXNoLmg+DQo+PiArI2luY2x1ZGUgPGNyeXB0by9za2NpcGhlci5oPg0KPj4gICAgDQo+PiAgICAj ZGVmaW5lIEVOR0lORV9OQU1FX0xFTgkzMA0KPj4gICAgLyoNCj4+IEBAIC0zNywxMiArMzksNiBA QA0KPj4gICAgICogQHVucHJlcGFyZV9jcnlwdF9oYXJkd2FyZTogdGhlcmUgYXJlIGN1cnJlbnRs eSBubyBtb3JlIHJlcXVlc3RzIG9uIHRoZQ0KPj4gICAgICogcXVldWUgc28gdGhlIHN1YnN5c3Rl bSBub3RpZmllcyB0aGUgZHJpdmVyIHRoYXQgaXQgbWF5IHJlbGF4IHRoZQ0KPj4gICAgICogaGFy ZHdhcmUgYnkgaXNzdWluZyB0aGlzIGNhbGwNCj4+IC0gKiBAcHJlcGFyZV9jaXBoZXJfcmVxdWVz dDogZG8gc29tZSBwcmVwYXJlIGlmIG5lZWQgYmVmb3JlIGhhbmRsZSB0aGUgY3VycmVudCByZXF1 ZXN0DQo+PiAtICogQHVucHJlcGFyZV9jaXBoZXJfcmVxdWVzdDogdW5kbyBhbnkgd29yayBkb25l IGJ5IHByZXBhcmVfY2lwaGVyX3JlcXVlc3QoKQ0KPj4gLSAqIEBjaXBoZXJfb25lX3JlcXVlc3Q6 IGRvIGVuY3J5cHRpb24gZm9yIGN1cnJlbnQgcmVxdWVzdA0KPj4gLSAqIEBwcmVwYXJlX2hhc2hf cmVxdWVzdDogZG8gc29tZSBwcmVwYXJlIGlmIG5lZWQgYmVmb3JlIGhhbmRsZSB0aGUgY3VycmVu dCByZXF1ZXN0DQo+PiAtICogQHVucHJlcGFyZV9oYXNoX3JlcXVlc3Q6IHVuZG8gYW55IHdvcmsg ZG9uZSBieSBwcmVwYXJlX2hhc2hfcmVxdWVzdCgpDQo+PiAtICogQGhhc2hfb25lX3JlcXVlc3Q6 IGRvIGhhc2ggZm9yIGN1cnJlbnQgcmVxdWVzdA0KPj4gICAgICogQGt3b3JrZXI6IGt0aHJlYWQg d29ya2VyIHN0cnVjdCBmb3IgcmVxdWVzdCBwdW1wDQo+PiAgICAgKiBAcHVtcF9yZXF1ZXN0czog d29yayBzdHJ1Y3QgZm9yIHNjaGVkdWxpbmcgd29yayB0byB0aGUgcmVxdWVzdCBwdW1wDQo+PiAg ICAgKiBAcHJpdl9kYXRhOiB0aGUgZW5naW5lIHByaXZhdGUgZGF0YQ0KPj4gQEAgLTY1LDE5ICs2 MSw2IEBAIHN0cnVjdCBjcnlwdG9fZW5naW5lIHsNCj4+ICAgIAlpbnQgKCpwcmVwYXJlX2NyeXB0 X2hhcmR3YXJlKShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lKTsNCj4+ICAgIAlpbnQgKCp1 bnByZXBhcmVfY3J5cHRfaGFyZHdhcmUpKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUpOw0K Pj4gICAgDQo+PiAtCWludCAoKnByZXBhcmVfY2lwaGVyX3JlcXVlc3QpKHN0cnVjdCBjcnlwdG9f ZW5naW5lICplbmdpbmUsDQo+PiAtCQkJCSAgICAgIHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3Qg KnJlcSk7DQo+PiAtCWludCAoKnVucHJlcGFyZV9jaXBoZXJfcmVxdWVzdCkoc3RydWN0IGNyeXB0 b19lbmdpbmUgKmVuZ2luZSwNCj4+IC0JCQkJCXN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJl cSk7DQo+PiAtCWludCAoKnByZXBhcmVfaGFzaF9yZXF1ZXN0KShzdHJ1Y3QgY3J5cHRvX2VuZ2lu ZSAqZW5naW5lLA0KPj4gLQkJCQkgICAgc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSk7DQo+PiAt CWludCAoKnVucHJlcGFyZV9oYXNoX3JlcXVlc3QpKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdp bmUsDQo+PiAtCQkJCSAgICAgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpOw0KPj4gLQlpbnQg KCpjaXBoZXJfb25lX3JlcXVlc3QpKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiAt CQkJCSAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxKTsNCj4+IC0JaW50ICgqaGFzaF9v bmVfcmVxdWVzdCkoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4+IC0JCQkJc3RydWN0 IGFoYXNoX3JlcXVlc3QgKnJlcSk7DQo+PiAtDQo+PiAgICAJc3RydWN0IGt0aHJlYWRfd29ya2Vy ICAgICAgICAgICAqa3dvcmtlcjsNCj4+ICAgIAlzdHJ1Y3Qga3RocmVhZF93b3JrICAgICAgICAg ICAgIHB1bXBfcmVxdWVzdHM7DQo+PiAgICANCj4+IEBAIC04NSwxOSArNjgsNDMgQEAgc3RydWN0 IGNyeXB0b19lbmdpbmUgew0KPj4gICAgCXN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdAkqY3Vy X3JlcTsNCj4+ICAgIH07DQo+PiAgICANCj4+IC1pbnQgY3J5cHRvX3RyYW5zZmVyX2NpcGhlcl9y ZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiAtCQkJCSAgIHN0cnVjdCBh YmxrY2lwaGVyX3JlcXVlc3QgKnJlcSwNCj4+IC0JCQkJICAgYm9vbCBuZWVkX3B1bXApOw0KPj4g Ky8qDQo+PiArICogc3RydWN0IGNyeXB0b19lbmdpbmVfb3AgLSBjcnlwdG8gaGFyZHdhcmUgZW5n aW5lIG9wZXJhdGlvbnMNCj4+ICsgKiBAcHJlcGFyZV9fcmVxdWVzdDogZG8gc29tZSBwcmVwYXJl IGlmIG5lZWQgYmVmb3JlIGhhbmRsZSB0aGUgY3VycmVudCByZXF1ZXN0DQo+PiArICogQHVucHJl cGFyZV9yZXF1ZXN0OiB1bmRvIGFueSB3b3JrIGRvbmUgYnkgcHJlcGFyZV9yZXF1ZXN0KCkNCj4+ ICsgKiBAZG9fb25lX3JlcXVlc3Q6IGRvIGVuY3J5cHRpb24gZm9yIGN1cnJlbnQgcmVxdWVzdA0K Pj4gKyAqLw0KPj4gK3N0cnVjdCBjcnlwdG9fZW5naW5lX29wIHsNCj4+ICsJaW50ICgqcHJlcGFy ZV9yZXF1ZXN0KShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gKwkJCSAgICAgICB2 b2lkICphcmVxKTsNCj4+ICsJaW50ICgqdW5wcmVwYXJlX3JlcXVlc3QpKHN0cnVjdCBjcnlwdG9f ZW5naW5lICplbmdpbmUsDQo+PiArCQkJCSB2b2lkICphcmVxKTsNCj4+ICsJaW50ICgqZG9fb25l X3JlcXVlc3QpKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiArCQkJICAgICAgdm9p ZCAqYXJlcSk7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgY3J5cHRvX2VuZ2luZV9yZXFjdHgg ew0KPj4gKwlzdHJ1Y3QgY3J5cHRvX2VuZ2luZV9vcCBvcDsNCj4+ICt9Ow0KPj4gKw0KPj4gK2lu dCBjcnlwdG9fdHJhbnNmZXJfYWtjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0 b19lbmdpbmUgKmVuZ2luZSwNCj4+ICsJCQkJCSAgICAgICBzdHJ1Y3QgYWtjaXBoZXJfcmVxdWVz dCAqcmVxKTsNCj4+ICAgIGludCBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3RfdG9fZW5n aW5lKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+PiAtCQkJCQkgICAgIHN0cnVjdCBh YmxrY2lwaGVyX3JlcXVlc3QgKnJlcSk7DQo+PiAtaW50IGNyeXB0b190cmFuc2Zlcl9oYXNoX3Jl cXVlc3Qoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4+IC0JCQkJIHN0cnVjdCBhaGFz aF9yZXF1ZXN0ICpyZXEsIGJvb2wgbmVlZF9wdW1wKTsNCj4+ICsJCQkJICAgICAgc3RydWN0IGFi bGtjaXBoZXJfcmVxdWVzdCAqcmVxKTsNCj4+ICAgIGludCBjcnlwdG9fdHJhbnNmZXJfaGFzaF9y ZXF1ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gLQkJCQkJ ICAgc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSk7DQo+PiArCQkJCQkgICAgICAgc3RydWN0IGFo YXNoX3JlcXVlc3QgKnJlcSk7DQo+PiAraW50IGNyeXB0b190cmFuc2Zlcl9za2NpcGhlcl9yZXF1 ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gKwkJCQkJICAg ICAgIHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpOw0KPiArIHRyYW5zZmVyX2FlYWQNCj4N Cj4+ICt2b2lkIGNyeXB0b19maW5hbGl6ZV9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICpl bmdpbmUsDQo+PiArCQkJICAgICBzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKnJlcSwgaW50 IGVycik7DQo+IHN0YXRpYyAoK21vdmUgdG/CoCAuYyBmaWxlPykNCj4NCj4+ICt2b2lkIGNyeXB0 b19maW5hbGl6ZV9ha2NpcGhlcl9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUs DQo+PiArCQkJCSAgICAgIHN0cnVjdCBha2NpcGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0K Pj4gICAgdm9pZCBjcnlwdG9fZmluYWxpemVfY2lwaGVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19l bmdpbmUgKmVuZ2luZSwNCj4+ICAgIAkJCQkgICAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAq cmVxLCBpbnQgZXJyKTsNCj4+ICAgIHZvaWQgY3J5cHRvX2ZpbmFsaXplX2hhc2hfcmVxdWVzdChz dHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gICAgCQkJCSAgc3RydWN0IGFoYXNoX3Jl cXVlc3QgKnJlcSwgaW50IGVycik7DQo+PiArdm9pZCBjcnlwdG9fZmluYWxpemVfc2tjaXBoZXJf cmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPj4gKwkJCQkgICAgICBzdHJ1 Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKTsNCj4gKyBmaW5hbGl6ZV9hZWFkDQo+ DQo+PiAgICBpbnQgY3J5cHRvX2VuZ2luZV9zdGFydChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5n aW5lKTsNCj4+ICAgIGludCBjcnlwdG9fZW5naW5lX3N0b3Aoc3RydWN0IGNyeXB0b19lbmdpbmUg KmVuZ2luZSk7DQo+PiAgICBzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqY3J5cHRvX2VuZ2luZV9hbGxv Y19pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBydCk7DQo=