Received: by 10.223.185.116 with SMTP id b49csp688348wrg; Wed, 14 Feb 2018 05:34:12 -0800 (PST) X-Google-Smtp-Source: AH8x224TooZS9hzgeJbxDf6aoD4jOW/7v2B5TJ+aZbpOh5DF9xCjOO2ACGOfHLEX5bk/UI+319ge X-Received: by 2002:a17:902:7793:: with SMTP id o19-v6mr4519248pll.207.1518615252565; Wed, 14 Feb 2018 05:34:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518615252; cv=none; d=google.com; s=arc-20160816; b=cfOLPfZmL5DZQaVvi6txQyiLkHrI5hFnyCjkIg34uRVM0Lmkg6LIyNM5KD+bE0vmfv dlfwVfDTRV8/fFISzIvDO0jU0cVq+TNivlVdrutSeiLf4UI2FfiD1s4OoDU5HazrO11P uyAo3ndJAFa80QlsVPbVX0vtUdTV317qdlV+uchABvmPXWw86q3pHPTJ6h/NY8VDoYZf N10g4NnQIyp/Vzz5tYrjAeIIIoAmxndNVIevYb8BjVlsquG59Ze1VOI52SPgOKdZtZn0 kxXW2SQSSvEwjv3LI5eyCTzkVDc1y7iJVTqeJwbPHFOejzHcS2N1hxEHV2LXXwyPXptG CZQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:arc-authentication-results; bh=rzXA+hN7djYWeMPpGODCR3VyqCsXYRp5EdIMq3coS9E=; b=jbxikjncEcGh6qhUq4ntrATliVYznNQLwy0jstCa1o49RG2q3enOZXT2Fk+VqpKyml T38Lbb/06AtihdPP3Zs+Rds+QdESnIa5CdEAzlxyaKJVQo0h/Az7Re9PRAScdnAj+Odi Qx6L/Qa5vR86x0mRBoNa6iw/YffolrNpjcBFwBKrbzekUJ495gb8BTNG6WxXGFv4l0Ry eEtnt7aYcDNq59WSUnB0/r4CqOu9pksOietSM08GMGRxjFoZr1bHibd1nm2XqizFtnC/ 0yNdhgH5CBvXQVMhDoRaXp4C/6q5K8RWHohkkGUOkGT9yKSqJlBe/jOxQm/SqBTS/utZ rzZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o12si1338981pfg.286.2018.02.14.05.33.57; Wed, 14 Feb 2018 05:34:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030345AbeBNNdY (ORCPT + 99 others); Wed, 14 Feb 2018 08:33:24 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:50015 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030270AbeBNNdW (ORCPT ); Wed, 14 Feb 2018 08:33:22 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w1EDTBeB012403; Wed, 14 Feb 2018 14:32:02 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2g1q32417a-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 14 Feb 2018 14:32:02 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 0C5D234; Wed, 14 Feb 2018 13:31:59 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag3node1.st.com [10.75.127.7]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 7F6724F97; Wed, 14 Feb 2018 13:31:59 +0000 (GMT) Received: from SFHDAG5NODE3.st.com (10.75.127.15) by SFHDAG3NODE1.st.com (10.75.127.7) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Wed, 14 Feb 2018 14:31:59 +0100 Received: from SFHDAG5NODE3.st.com ([fe80::7c09:5d6b:d2c7:5f47]) by SFHDAG5NODE3.st.com ([fe80::7c09:5d6b:d2c7:5f47%20]) with mapi id 15.00.1347.000; Wed, 14 Feb 2018 14:31:59 +0100 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" , "linux-sunxi@googlegroups.com" Subject: Re: [PATCH v2 2/6] crypto: engine - Permit to enqueue all async requests Thread-Topic: [PATCH v2 2/6] crypto: engine - Permit to enqueue all async requests Thread-Index: AQHTltpm24juDtQ1bECyzA1vk7eEH6Oj8d0A Date: Wed, 14 Feb 2018 13:31:58 +0000 Message-ID: References: <20180126191534.17569-1-clabbe.montjoie@gmail.com> <20180126191534.17569-3-clabbe.montjoie@gmail.com> In-Reply-To: <20180126191534.17569-3-clabbe.montjoie@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:52.0) Gecko/20100101 Thunderbird/52.6.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.47] Content-Type: text/plain; charset="utf-8" Content-ID: <07F31AC11012B3469E8C532091FB3E67@st.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-14_05:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkaW5nIG15IHRlc3RlZC1ieSBmb3IgdGhlIEFFQUQgcGFydCB3aGljaCBpcyBuZXcgaW4gdjIN Cg0KDQpPbiAyNi8wMS8xOCAyMDoxNSwgQ29yZW50aW4gTGFiYmUgd3JvdGU6DQo+IFRoZSBjcnlw dG8gZW5naW5lIGNvdWxkIGFjdHVhbGx5IG9ubHkgZW5xdWV1ZSBoYXNoIGFuZCBhYmxrY2lwaGVy IHJlcXVlc3QuDQo+IFRoaXMgcGF0Y2ggcGVybWl0IGl0IHRvIGVucXVldWUgYW55IHR5cGUgb2Yg Y3J5cHRvX2FzeW5jX3JlcXVlc3QuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IENvcmVudGluIExhYmJl IDxjbGFiYmUubW9udGpvaWVAZ21haWwuY29tPg0KPiBUZXN0ZWQtYnk6IEZhYmllbiBEZXNzZW5u ZSA8ZmFiaWVuLmRlc3Nlbm5lQHN0LmNvbT4NCg0KVGVzdGVkLWJ5OiBGYWJpZW4gRGVzc2VubmUg PGZhYmllbi5kZXNzZW5uZUBzdC5jb20+DQoNCg0KPiAtLS0NCj4gICBjcnlwdG8vY3J5cHRvX2Vu Z2luZS5jICB8IDMwMSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gICBpbmNsdWRlL2NyeXB0by9lbmdpbmUuaCB8ICA2OCArKysrKystLS0tLQ0KPiAg IDIgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDE2NiBkZWxldGlvbnMoLSkNCj4N Cj4gZGlmZiAtLWdpdCBhL2NyeXB0by9jcnlwdG9fZW5naW5lLmMgYi9jcnlwdG8vY3J5cHRvX2Vu Z2luZS5jDQo+IGluZGV4IDYxZTdjNGUwMmZkMi4uOTkyZThkOGRjZGQ5IDEwMDY0NA0KPiAtLS0g YS9jcnlwdG8vY3J5cHRvX2VuZ2luZS5jDQo+ICsrKyBiL2NyeXB0by9jcnlwdG9fZW5naW5lLmMN Cj4gQEAgLTE1LDEzICsxNSw1MCBAQA0KPiAgICNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCj4gICAj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gICAjaW5jbHVkZSA8Y3J5cHRvL2VuZ2luZS5oPg0K PiAtI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9oYXNoLmg+DQo+ICAgI2luY2x1ZGUgPHVhcGkv bGludXgvc2NoZWQvdHlwZXMuaD4NCj4gICAjaW5jbHVkZSAiaW50ZXJuYWwuaCINCj4gICANCj4g ICAjZGVmaW5lIENSWVBUT19FTkdJTkVfTUFYX1FMRU4gMTANCj4gICANCj4gICAvKioNCj4gKyAq IGNyeXB0b19maW5hbGl6ZV9yZXF1ZXN0IC0gZmluYWxpemUgb25lIHJlcXVlc3QgaWYgdGhlIHJl cXVlc3QgaXMgZG9uZQ0KPiArICogQGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0KPiArICog QHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBmaW5hbGl6ZWQNCj4gKyAqIEBlcnI6IGVycm9y IG51bWJlcg0KPiArICovDQo+ICtzdGF0aWMgdm9pZCBjcnlwdG9fZmluYWxpemVfcmVxdWVzdChz dHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiArCQkJICAgICBzdHJ1Y3QgY3J5cHRvX2Fz eW5jX3JlcXVlc3QgKnJlcSwgaW50IGVycikNCj4gK3sNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Ow0KPiArCWJvb2wgZmluYWxpemVfY3VyX3JlcSA9IGZhbHNlOw0KPiArCWludCByZXQ7DQo+ICsJ c3RydWN0IGNyeXB0b19lbmdpbmVfY3R4ICplbmdpbmVjdHg7DQo+ICsNCj4gKwlzcGluX2xvY2tf aXJxc2F2ZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+ICsJaWYgKGVuZ2luZS0+Y3Vy X3JlcSA9PSByZXEpDQo+ICsJCWZpbmFsaXplX2N1cl9yZXEgPSB0cnVlOw0KPiArCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJaWYg KGZpbmFsaXplX2N1cl9yZXEpIHsNCj4gKwkJZW5naW5lY3R4ID0gY3J5cHRvX3RmbV9jdHgocmVx LT50Zm0pOw0KPiArCQlpZiAoZW5naW5lLT5jdXJfcmVxX3ByZXBhcmVkICYmDQo+ICsJCSAgICBl bmdpbmVjdHgtPm9wLnVucHJlcGFyZV9yZXF1ZXN0KSB7DQo+ICsJCQlyZXQgPSBlbmdpbmVjdHgt Pm9wLnVucHJlcGFyZV9yZXF1ZXN0KGVuZ2luZSwgcmVxKTsNCj4gKwkJCWlmIChyZXQpDQo+ICsJ CQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byB1bnByZXBhcmUgcmVxdWVzdFxuIik7 DQo+ICsJCX0NCj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxh Z3MpOw0KPiArCQllbmdpbmUtPmN1cl9yZXEgPSBOVUxMOw0KPiArCQllbmdpbmUtPmN1cl9yZXFf cHJlcGFyZWQgPSBmYWxzZTsNCj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5x dWV1ZV9sb2NrLCBmbGFncyk7DQo+ICsJfQ0KPiArDQo+ICsJcmVxLT5jb21wbGV0ZShyZXEsIGVy cik7DQo+ICsNCj4gKwlrdGhyZWFkX3F1ZXVlX3dvcmsoZW5naW5lLT5rd29ya2VyLCAmZW5naW5l LT5wdW1wX3JlcXVlc3RzKTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICAgICogY3J5cHRvX3B1bXBf cmVxdWVzdHMgLSBkZXF1ZXVlIG9uZSByZXF1ZXN0IGZyb20gZW5naW5lIHF1ZXVlIHRvIHByb2Nl c3MNCj4gICAgKiBAZW5naW5lOiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+ICAgICogQGluX2t0aHJl YWQ6IHRydWUgaWYgd2UgYXJlIGluIHRoZSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0IHB1bXAgdGhy ZWFkDQo+IEBAIC0zNCwxMSArNzEsMTAgQEAgc3RhdGljIHZvaWQgY3J5cHRvX3B1bXBfcmVxdWVz dHMoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gICAJCQkJIGJvb2wgaW5fa3RocmVh ZCkNCj4gICB7DQo+ICAgCXN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqYXN5bmNfcmVxLCAq YmFja2xvZzsNCj4gLQlzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqaHJlcTsNCj4gLQlzdHJ1Y3QgYWJs a2NpcGhlcl9yZXF1ZXN0ICpicmVxOw0KPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiAgIAli b29sIHdhc19idXN5ID0gZmFsc2U7DQo+IC0JaW50IHJldCwgcnR5cGU7DQo+ICsJaW50IHJldDsN Cj4gKwlzdHJ1Y3QgY3J5cHRvX2VuZ2luZV9jdHggKmVuZ2luZWN0eDsNCj4gICANCj4gICAJc3Bp bl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPiAgIA0KPiBAQCAt OTQsNyArMTMwLDYgQEAgc3RhdGljIHZvaWQgY3J5cHRvX3B1bXBfcmVxdWVzdHMoc3RydWN0IGNy eXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gICANCj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+ICAgDQo+IC0JcnR5cGUgPSBjcnlwdG9fdGZt X2FsZ190eXBlKGVuZ2luZS0+Y3VyX3JlcS0+dGZtKTsNCj4gICAJLyogVW50aWwgaGVyZSB3ZSBn ZXQgdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBlbmNyeXB0ZWQgc3VjY2Vzc2Z1bGx5ICovDQo+ICAg CWlmICghd2FzX2J1c3kgJiYgZW5naW5lLT5wcmVwYXJlX2NyeXB0X2hhcmR3YXJlKSB7DQo+ICAg CQlyZXQgPSBlbmdpbmUtPnByZXBhcmVfY3J5cHRfaGFyZHdhcmUoZW5naW5lKTsNCj4gQEAgLTEw NCw1NyArMTM5LDMxIEBAIHN0YXRpYyB2b2lkIGNyeXB0b19wdW1wX3JlcXVlc3RzKHN0cnVjdCBj cnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICAgCQl9DQo+ICAgCX0NCj4gICANCj4gLQlzd2l0Y2gg KHJ0eXBlKSB7DQo+IC0JY2FzZSBDUllQVE9fQUxHX1RZUEVfQUhBU0g6DQo+IC0JCWhyZXEgPSBh aGFzaF9yZXF1ZXN0X2Nhc3QoZW5naW5lLT5jdXJfcmVxKTsNCj4gLQkJaWYgKGVuZ2luZS0+cHJl cGFyZV9oYXNoX3JlcXVlc3QpIHsNCj4gLQkJCXJldCA9IGVuZ2luZS0+cHJlcGFyZV9oYXNoX3Jl cXVlc3QoZW5naW5lLCBocmVxKTsNCj4gLQkJCWlmIChyZXQpIHsNCj4gLQkJCQlkZXZfZXJyKGVu Z2luZS0+ZGV2LCAiZmFpbGVkIHRvIHByZXBhcmUgcmVxdWVzdDogJWRcbiIsDQo+IC0JCQkJCXJl dCk7DQo+IC0JCQkJZ290byByZXFfZXJyOw0KPiAtCQkJfQ0KPiAtCQkJZW5naW5lLT5jdXJfcmVx X3ByZXBhcmVkID0gdHJ1ZTsNCj4gLQkJfQ0KPiAtCQlyZXQgPSBlbmdpbmUtPmhhc2hfb25lX3Jl cXVlc3QoZW5naW5lLCBocmVxKTsNCj4gLQkJaWYgKHJldCkgew0KPiAtCQkJZGV2X2Vycihlbmdp bmUtPmRldiwgImZhaWxlZCB0byBoYXNoIG9uZSByZXF1ZXN0IGZyb20gcXVldWVcbiIpOw0KPiAt CQkJZ290byByZXFfZXJyOw0KPiAtCQl9DQo+IC0JCXJldHVybjsNCj4gLQljYXNlIENSWVBUT19B TEdfVFlQRV9BQkxLQ0lQSEVSOg0KPiAtCQlicmVxID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2Nhc3Qo ZW5naW5lLT5jdXJfcmVxKTsNCj4gLQkJaWYgKGVuZ2luZS0+cHJlcGFyZV9jaXBoZXJfcmVxdWVz dCkgew0KPiAtCQkJcmV0ID0gZW5naW5lLT5wcmVwYXJlX2NpcGhlcl9yZXF1ZXN0KGVuZ2luZSwg YnJlcSk7DQo+IC0JCQlpZiAocmV0KSB7DQo+IC0JCQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZh aWxlZCB0byBwcmVwYXJlIHJlcXVlc3Q6ICVkXG4iLA0KPiAtCQkJCQlyZXQpOw0KPiAtCQkJCWdv dG8gcmVxX2VycjsNCj4gLQkJCX0NCj4gLQkJCWVuZ2luZS0+Y3VyX3JlcV9wcmVwYXJlZCA9IHRy dWU7DQo+IC0JCX0NCj4gLQkJcmV0ID0gZW5naW5lLT5jaXBoZXJfb25lX3JlcXVlc3QoZW5naW5l LCBicmVxKTsNCj4gKwllbmdpbmVjdHggPSBjcnlwdG9fdGZtX2N0eChhc3luY19yZXEtPnRmbSk7 DQo+ICsNCj4gKwlpZiAoZW5naW5lY3R4LT5vcC5wcmVwYXJlX3JlcXVlc3QpIHsNCj4gKwkJcmV0 ID0gZW5naW5lY3R4LT5vcC5wcmVwYXJlX3JlcXVlc3QoZW5naW5lLCBhc3luY19yZXEpOw0KPiAg IAkJaWYgKHJldCkgew0KPiAtCQkJZGV2X2VycihlbmdpbmUtPmRldiwgImZhaWxlZCB0byBjaXBo ZXIgb25lIHJlcXVlc3QgZnJvbSBxdWV1ZVxuIik7DQo+ICsJCQlkZXZfZXJyKGVuZ2luZS0+ZGV2 LCAiZmFpbGVkIHRvIHByZXBhcmUgcmVxdWVzdDogJWRcbiIsDQo+ICsJCQkJcmV0KTsNCj4gICAJ CQlnb3RvIHJlcV9lcnI7DQo+ICAgCQl9DQo+IC0JCXJldHVybjsNCj4gLQlkZWZhdWx0Og0KPiAt CQlkZXZfZXJyKGVuZ2luZS0+ZGV2LCAiZmFpbGVkIHRvIHByZXBhcmUgcmVxdWVzdCBvZiB1bmtu b3duIHR5cGVcbiIpOw0KPiAtCQlyZXR1cm47DQo+ICsJCWVuZ2luZS0+Y3VyX3JlcV9wcmVwYXJl ZCA9IHRydWU7DQo+ICsJfQ0KPiArCWlmICghZW5naW5lY3R4LT5vcC5kb19vbmVfcmVxdWVzdCkg ew0KPiArCQlkZXZfZXJyKGVuZ2luZS0+ZGV2LCAiZmFpbGVkIHRvIGRvIHJlcXVlc3RcbiIpOw0K PiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCQlnb3RvIHJlcV9lcnI7DQo+ICAgCX0NCj4gKwlyZXQg PSBlbmdpbmVjdHgtPm9wLmRvX29uZV9yZXF1ZXN0KGVuZ2luZSwgYXN5bmNfcmVxKTsNCj4gKwlp ZiAocmV0KSB7DQo+ICsJCWRldl9lcnIoZW5naW5lLT5kZXYsICJGYWlsZWQgdG8gZG8gb25lIHJl cXVlc3QgZnJvbSBxdWV1ZTogJWRcbiIsIHJldCk7DQo+ICsJCWdvdG8gcmVxX2VycjsNCj4gKwl9 DQo+ICsJcmV0dXJuOw0KPiAgIA0KPiAgIHJlcV9lcnI6DQo+IC0Jc3dpdGNoIChydHlwZSkgew0K PiAtCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0FIQVNIOg0KPiAtCQlocmVxID0gYWhhc2hfcmVxdWVz dF9jYXN0KGVuZ2luZS0+Y3VyX3JlcSk7DQo+IC0JCWNyeXB0b19maW5hbGl6ZV9oYXNoX3JlcXVl c3QoZW5naW5lLCBocmVxLCByZXQpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIENSWVBUT19BTEdf VFlQRV9BQkxLQ0lQSEVSOg0KPiAtCQlicmVxID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2Nhc3QoZW5n aW5lLT5jdXJfcmVxKTsNCj4gLQkJY3J5cHRvX2ZpbmFsaXplX2NpcGhlcl9yZXF1ZXN0KGVuZ2lu ZSwgYnJlcSwgcmV0KTsNCj4gLQkJYnJlYWs7DQo+IC0JfQ0KPiArCWNyeXB0b19maW5hbGl6ZV9y ZXF1ZXN0KGVuZ2luZSwgYXN5bmNfcmVxLCByZXQpOw0KPiAgIAlyZXR1cm47DQo+ICAgDQo+ICAg b3V0Og0KPiBAQCAtMTcwLDEzICsxNzksMTIgQEAgc3RhdGljIHZvaWQgY3J5cHRvX3B1bXBfd29y ayhzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKQ0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gLSAq IGNyeXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdCAtIHRyYW5zZmVyIHRoZSBuZXcgcmVxdWVz dCBpbnRvIHRoZQ0KPiAtICogZW5naW5lcXVldWUNCj4gKyAqIGNyeXB0b190cmFuc2Zlcl9yZXF1 ZXN0IC0gdHJhbnNmZXIgdGhlIG5ldyByZXF1ZXN0IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiAg ICAqIEBlbmdpbmU6IHRoZSBoYXJkd2FyZSBlbmdpbmUNCj4gICAgKiBAcmVxOiB0aGUgcmVxdWVz dCBuZWVkIHRvIGJlIGxpc3RlZCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4gICAgKi8NCj4gLWlu dCBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVu Z2luZSwNCj4gLQkJCQkgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEsDQo+ICtzdGF0 aWMgaW50IGNyeXB0b190cmFuc2Zlcl9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdp bmUsDQo+ICsJCQkJICAgc3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXEsDQo+ICAgCQkJ CSAgIGJvb2wgbmVlZF9wdW1wKQ0KPiAgIHsNCj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4g QEAgLTE4OSw3ICsxOTcsNyBAQCBpbnQgY3J5cHRvX3RyYW5zZmVyX2NpcGhlcl9yZXF1ZXN0KHN0 cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICAgCQlyZXR1cm4gLUVTSFVURE9XTjsNCj4g ICAJfQ0KPiAgIA0KPiAtCXJldCA9IGFibGtjaXBoZXJfZW5xdWV1ZV9yZXF1ZXN0KCZlbmdpbmUt PnF1ZXVlLCByZXEpOw0KPiArCXJldCA9IGNyeXB0b19lbnF1ZXVlX3JlcXVlc3QoJmVuZ2luZS0+ cXVldWUsIHJlcSk7DQo+ICAgDQo+ICAgCWlmICghZW5naW5lLT5idXN5ICYmIG5lZWRfcHVtcCkN Cj4gICAJCWt0aHJlYWRfcXVldWVfd29yayhlbmdpbmUtPmt3b3JrZXIsICZlbmdpbmUtPnB1bXBf cmVxdWVzdHMpOw0KPiBAQCAtMTk3LDEwMiArMjA1LDEzMSBAQCBpbnQgY3J5cHRvX3RyYW5zZmVy X2NpcGhlcl9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICAgCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPiAgIAlyZXR1 cm4gcmV0Ow0KPiAgIH0NCj4gLUVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b190cmFuc2Zlcl9jaXBo ZXJfcmVxdWVzdCk7DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBjcnlwdG9fdHJhbnNmZXJfY2lwaGVy X3JlcXVlc3RfdG9fZW5naW5lIC0gdHJhbnNmZXIgb25lIHJlcXVlc3QgdG8gbGlzdA0KPiArICog Y3J5cHRvX3RyYW5zZmVyX3JlcXVlc3RfdG9fZW5naW5lIC0gdHJhbnNmZXIgb25lIHJlcXVlc3Qg dG8gbGlzdA0KPiAgICAqIGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiAgICAqIEBlbmdpbmU6IHRo ZSBoYXJkd2FyZSBlbmdpbmUNCj4gICAgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGxp c3RlZCBpbnRvIHRoZSBlbmdpbmUgcXVldWUNCj4gICAgKi8NCj4gLWludCBjcnlwdG9fdHJhbnNm ZXJfY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUs DQo+IC0JCQkJCSAgICAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxKQ0KPiArc3RhdGlj IGludCBjcnlwdG9fdHJhbnNmZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdp bmUgKmVuZ2luZSwNCj4gKwkJCQkJICAgICBzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKnJl cSkNCj4gICB7DQo+IC0JcmV0dXJuIGNyeXB0b190cmFuc2Zlcl9jaXBoZXJfcmVxdWVzdChlbmdp bmUsIHJlcSwgdHJ1ZSk7DQo+ICsJcmV0dXJuIGNyeXB0b190cmFuc2Zlcl9yZXF1ZXN0KGVuZ2lu ZSwgcmVxLCB0cnVlKTsNCj4gICB9DQo+IC1FWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fdHJhbnNm ZXJfY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKTsNCj4gICANCj4gICAvKioNCj4gLSAqIGNyeXB0 b190cmFuc2Zlcl9oYXNoX3JlcXVlc3QgLSB0cmFuc2ZlciB0aGUgbmV3IHJlcXVlc3QgaW50byB0 aGUNCj4gLSAqIGVuZ2luZXF1ZXVlDQo+ICsgKiBjcnlwdG9fdHJhbnNmZXJfYWJsa2NpcGhlcl9y ZXF1ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSBhYmxrY2lwaGVyX3JlcXVlc3QNCj4gKyAq IHRvIGxpc3QgaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+ICAgICogQGVuZ2luZTogdGhlIGhhcmR3 YXJlIGVuZ2luZQ0KPiAgICAqIEByZXE6IHRoZSByZXF1ZXN0IG5lZWQgdG8gYmUgbGlzdGVkIGlu dG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiArICogVE9ETzogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gd2hl biBza2NpcGhlciBjb252ZXJzaW9uIGlzIGZpbmlzaGVkDQo+ICAgICovDQo+IC1pbnQgY3J5cHRv X3RyYW5zZmVyX2hhc2hfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAt CQkJCSBzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxLCBib29sIG5lZWRfcHVtcCkNCj4gK2ludCBj cnlwdG9fdHJhbnNmZXJfYWJsa2NpcGhlcl9yZXF1ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRv X2VuZ2luZSAqZW5naW5lLA0KPiArCQkJCQkJIHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJl cSkNCj4gICB7DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQlpbnQgcmV0Ow0KPiAtDQo+ IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPiAtDQo+ IC0JaWYgKCFlbmdpbmUtPnJ1bm5pbmcpIHsNCj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+IC0JCXJldHVybiAtRVNIVVRET1dOOw0KPiAt CX0NCj4gLQ0KPiAtCXJldCA9IGFoYXNoX2VucXVldWVfcmVxdWVzdCgmZW5naW5lLT5xdWV1ZSwg cmVxKTsNCj4gKwlyZXR1cm4gY3J5cHRvX3RyYW5zZmVyX3JlcXVlc3RfdG9fZW5naW5lKGVuZ2lu ZSwgJnJlcS0+YmFzZSk7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fdHJhbnNm ZXJfYWJsa2NpcGhlcl9yZXF1ZXN0X3RvX2VuZ2luZSk7DQo+ICAgDQo+IC0JaWYgKCFlbmdpbmUt PmJ1c3kgJiYgbmVlZF9wdW1wKQ0KPiAtCQlrdGhyZWFkX3F1ZXVlX3dvcmsoZW5naW5lLT5rd29y a2VyLCAmZW5naW5lLT5wdW1wX3JlcXVlc3RzKTsNCj4gKy8qKg0KPiArICogY3J5cHRvX3RyYW5z ZmVyX2FlYWRfcmVxdWVzdF90b19lbmdpbmUgLSB0cmFuc2ZlciBvbmUgYWVhZF9yZXF1ZXN0DQo+ ICsgKiB0byBsaXN0IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiArICogQGVuZ2luZTogdGhlIGhh cmR3YXJlIGVuZ2luZQ0KPiArICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBsaXN0ZWQg aW50byB0aGUgZW5naW5lIHF1ZXVlDQo+ICsgKi8NCj4gK2ludCBjcnlwdG9fdHJhbnNmZXJfYWVh ZF9yZXF1ZXN0X3RvX2VuZ2luZShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiArCQkJ CQkgICBzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEpDQo+ICt7DQo+ICsJcmV0dXJuIGNyeXB0b190 cmFuc2Zlcl9yZXF1ZXN0X3RvX2VuZ2luZShlbmdpbmUsICZyZXEtPmJhc2UpOw0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3RyYW5zZmVyX2FlYWRfcmVxdWVzdF90b19lbmdpbmUp Ow0KPiAgIA0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVldWVfbG9jaywg ZmxhZ3MpOw0KPiAtCXJldHVybiByZXQ7DQo+ICsvKioNCj4gKyAqIGNyeXB0b190cmFuc2Zlcl9h a2NpcGhlcl9yZXF1ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSBha2NpcGhlcl9yZXF1ZXN0 DQo+ICsgKiB0byBsaXN0IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiArICogQGVuZ2luZTogdGhl IGhhcmR3YXJlIGVuZ2luZQ0KPiArICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBsaXN0 ZWQgaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+ICsgKi8NCj4gK2ludCBjcnlwdG9fdHJhbnNmZXJf YWtjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwN Cj4gKwkJCQkJICAgICAgIHN0cnVjdCBha2NpcGhlcl9yZXF1ZXN0ICpyZXEpDQo+ICt7DQo+ICsJ cmV0dXJuIGNyeXB0b190cmFuc2Zlcl9yZXF1ZXN0X3RvX2VuZ2luZShlbmdpbmUsICZyZXEtPmJh c2UpOw0KPiAgIH0NCj4gLUVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b190cmFuc2Zlcl9oYXNoX3Jl cXVlc3QpOw0KPiArRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3RyYW5zZmVyX2FrY2lwaGVyX3Jl cXVlc3RfdG9fZW5naW5lKTsNCj4gICANCj4gICAvKioNCj4gLSAqIGNyeXB0b190cmFuc2Zlcl9o YXNoX3JlcXVlc3RfdG9fZW5naW5lIC0gdHJhbnNmZXIgb25lIHJlcXVlc3QgdG8gbGlzdA0KPiAt ICogaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+ICsgKiBjcnlwdG9fdHJhbnNmZXJfaGFzaF9yZXF1 ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSBhaGFzaF9yZXF1ZXN0DQo+ICsgKiB0byBsaXN0 IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiAgICAqIEBlbmdpbmU6IHRoZSBoYXJkd2FyZSBlbmdp bmUNCj4gICAgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGxpc3RlZCBpbnRvIHRoZSBl bmdpbmUgcXVldWUNCj4gICAgKi8NCj4gICBpbnQgY3J5cHRvX3RyYW5zZmVyX2hhc2hfcmVxdWVz dF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gICAJCQkJCSAgIHN0 cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpDQo+ICAgew0KPiAtCXJldHVybiBjcnlwdG9fdHJhbnNm ZXJfaGFzaF9yZXF1ZXN0KGVuZ2luZSwgcmVxLCB0cnVlKTsNCj4gKwlyZXR1cm4gY3J5cHRvX3Ry YW5zZmVyX3JlcXVlc3RfdG9fZW5naW5lKGVuZ2luZSwgJnJlcS0+YmFzZSk7DQo+ICAgfQ0KPiAg IEVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b190cmFuc2Zlcl9oYXNoX3JlcXVlc3RfdG9fZW5naW5l KTsNCj4gICANCj4gICAvKioNCj4gLSAqIGNyeXB0b19maW5hbGl6ZV9jaXBoZXJfcmVxdWVzdCAt IGZpbmFsaXplIG9uZSByZXF1ZXN0IGlmIHRoZSByZXF1ZXN0IGlzIGRvbmUNCj4gKyAqIGNyeXB0 b190cmFuc2Zlcl9za2NpcGhlcl9yZXF1ZXN0X3RvX2VuZ2luZSAtIHRyYW5zZmVyIG9uZSBza2Np cGhlcl9yZXF1ZXN0DQo+ICsgKiB0byBsaXN0IGludG8gdGhlIGVuZ2luZSBxdWV1ZQ0KPiArICog QGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0KPiArICogQHJlcTogdGhlIHJlcXVlc3QgbmVl ZCB0byBiZSBsaXN0ZWQgaW50byB0aGUgZW5naW5lIHF1ZXVlDQo+ICsgKi8NCj4gK2ludCBjcnlw dG9fdHJhbnNmZXJfc2tjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdp bmUgKmVuZ2luZSwNCj4gKwkJCQkJICAgICAgIHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEp DQo+ICt7DQo+ICsJcmV0dXJuIGNyeXB0b190cmFuc2Zlcl9yZXF1ZXN0X3RvX2VuZ2luZShlbmdp bmUsICZyZXEtPmJhc2UpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3RyYW5z ZmVyX3NrY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBjcnlw dG9fZmluYWxpemVfYWJsa2NpcGhlcl9yZXF1ZXN0IC0gZmluYWxpemUgb25lIGFibGtjaXBoZXJf cmVxdWVzdCBpZg0KPiArICogdGhlIHJlcXVlc3QgaXMgZG9uZQ0KPiAgICAqIEBlbmdpbmU6IHRo ZSBoYXJkd2FyZSBlbmdpbmUNCj4gICAgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVkIHRvIGJlIGZp bmFsaXplZA0KPiAgICAqIEBlcnI6IGVycm9yIG51bWJlcg0KPiArICogVE9ETzogUmVtb3ZlIHRo aXMgZnVuY3Rpb24gd2hlbiBza2NpcGhlciBjb252ZXJzaW9uIGlzIGZpbmlzaGVkDQo+ICAgICov DQo+IC12b2lkIGNyeXB0b19maW5hbGl6ZV9jaXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2Vu Z2luZSAqZW5naW5lLA0KPiAtCQkJCSAgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEs IGludCBlcnIpDQo+ICt2b2lkIGNyeXB0b19maW5hbGl6ZV9hYmxrY2lwaGVyX3JlcXVlc3Qoc3Ry dWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gKwkJCQkJc3RydWN0IGFibGtjaXBoZXJfcmVx dWVzdCAqcmVxLCBpbnQgZXJyKQ0KPiAgIHsNCj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiAt CWJvb2wgZmluYWxpemVfY3VyX3JlcSA9IGZhbHNlOw0KPiAtCWludCByZXQ7DQo+IC0NCj4gLQlz cGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+IC0JaWYgKGVu Z2luZS0+Y3VyX3JlcSA9PSAmcmVxLT5iYXNlKQ0KPiAtCQlmaW5hbGl6ZV9jdXJfcmVxID0gdHJ1 ZTsNCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdz KTsNCj4gLQ0KPiAtCWlmIChmaW5hbGl6ZV9jdXJfcmVxKSB7DQo+IC0JCWlmIChlbmdpbmUtPmN1 cl9yZXFfcHJlcGFyZWQgJiYNCj4gLQkJICAgIGVuZ2luZS0+dW5wcmVwYXJlX2NpcGhlcl9yZXF1 ZXN0KSB7DQo+IC0JCQlyZXQgPSBlbmdpbmUtPnVucHJlcGFyZV9jaXBoZXJfcmVxdWVzdChlbmdp bmUsIHJlcSk7DQo+IC0JCQlpZiAocmV0KQ0KPiAtCQkJCWRldl9lcnIoZW5naW5lLT5kZXYsICJm YWlsZWQgdG8gdW5wcmVwYXJlIHJlcXVlc3RcbiIpOw0KPiAtCQl9DQo+IC0JCXNwaW5fbG9ja19p cnFzYXZlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4gLQkJZW5naW5lLT5jdXJfcmVx ID0gTlVMTDsNCj4gLQkJZW5naW5lLT5jdXJfcmVxX3ByZXBhcmVkID0gZmFsc2U7DQo+IC0JCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVldWVfbG9jaywgZmxhZ3MpOw0KPiAtCX0N Cj4gKwlyZXR1cm4gY3J5cHRvX2ZpbmFsaXplX3JlcXVlc3QoZW5naW5lLCAmcmVxLT5iYXNlLCBl cnIpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX2ZpbmFsaXplX2FibGtjaXBo ZXJfcmVxdWVzdCk7DQo+ICAgDQo+IC0JcmVxLT5iYXNlLmNvbXBsZXRlKCZyZXEtPmJhc2UsIGVy cik7DQo+ICsvKioNCj4gKyAqIGNyeXB0b19maW5hbGl6ZV9hZWFkX3JlcXVlc3QgLSBmaW5hbGl6 ZSBvbmUgYWVhZF9yZXF1ZXN0IGlmDQo+ICsgKiB0aGUgcmVxdWVzdCBpcyBkb25lDQo+ICsgKiBA ZW5naW5lOiB0aGUgaGFyZHdhcmUgZW5naW5lDQo+ICsgKiBAcmVxOiB0aGUgcmVxdWVzdCBuZWVk IHRvIGJlIGZpbmFsaXplZA0KPiArICogQGVycjogZXJyb3IgbnVtYmVyDQo+ICsgKi8NCj4gK3Zv aWQgY3J5cHRvX2ZpbmFsaXplX2FlYWRfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5n aW5lLA0KPiArCQkJCSAgc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKQ0KPiArew0K PiArCXJldHVybiBjcnlwdG9fZmluYWxpemVfcmVxdWVzdChlbmdpbmUsICZyZXEtPmJhc2UsIGVy cik7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fZmluYWxpemVfYWVhZF9yZXF1 ZXN0KTsNCj4gICANCj4gLQlrdGhyZWFkX3F1ZXVlX3dvcmsoZW5naW5lLT5rd29ya2VyLCAmZW5n aW5lLT5wdW1wX3JlcXVlc3RzKTsNCj4gKy8qKg0KPiArICogY3J5cHRvX2ZpbmFsaXplX2FrY2lw aGVyX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgYWtjaXBoZXJfcmVxdWVzdCBpZg0KPiArICogdGhl IHJlcXVlc3QgaXMgZG9uZQ0KPiArICogQGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0KPiAr ICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBmaW5hbGl6ZWQNCj4gKyAqIEBlcnI6IGVy cm9yIG51bWJlcg0KPiArICovDQo+ICt2b2lkIGNyeXB0b19maW5hbGl6ZV9ha2NpcGhlcl9yZXF1 ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICsJCQkJICAgICAgc3RydWN0IGFr Y2lwaGVyX3JlcXVlc3QgKnJlcSwgaW50IGVycikNCj4gK3sNCj4gKwlyZXR1cm4gY3J5cHRvX2Zp bmFsaXplX3JlcXVlc3QoZW5naW5lLCAmcmVxLT5iYXNlLCBlcnIpOw0KPiAgIH0NCj4gLUVYUE9S VF9TWU1CT0xfR1BMKGNyeXB0b19maW5hbGl6ZV9jaXBoZXJfcmVxdWVzdCk7DQo+ICtFWFBPUlRf U1lNQk9MX0dQTChjcnlwdG9fZmluYWxpemVfYWtjaXBoZXJfcmVxdWVzdCk7DQo+ICAgDQo+ICAg LyoqDQo+IC0gKiBjcnlwdG9fZmluYWxpemVfaGFzaF9yZXF1ZXN0IC0gZmluYWxpemUgb25lIHJl cXVlc3QgaWYgdGhlIHJlcXVlc3QgaXMgZG9uZQ0KPiArICogY3J5cHRvX2ZpbmFsaXplX2hhc2hf cmVxdWVzdCAtIGZpbmFsaXplIG9uZSBhaGFzaF9yZXF1ZXN0IGlmDQo+ICsgKiB0aGUgcmVxdWVz dCBpcyBkb25lDQo+ICAgICogQGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0KPiAgICAqIEBy ZXE6IHRoZSByZXF1ZXN0IG5lZWQgdG8gYmUgZmluYWxpemVkDQo+ICAgICogQGVycjogZXJyb3Ig bnVtYmVyDQo+IEBAIC0zMDAsMzUgKzMzNywyNSBAQCBFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9f ZmluYWxpemVfY2lwaGVyX3JlcXVlc3QpOw0KPiAgIHZvaWQgY3J5cHRvX2ZpbmFsaXplX2hhc2hf cmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAgIAkJCQkgIHN0cnVjdCBh aGFzaF9yZXF1ZXN0ICpyZXEsIGludCBlcnIpDQo+ICAgew0KPiAtCXVuc2lnbmVkIGxvbmcgZmxh Z3M7DQo+IC0JYm9vbCBmaW5hbGl6ZV9jdXJfcmVxID0gZmFsc2U7DQo+IC0JaW50IHJldDsNCj4g LQ0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4g LQlpZiAoZW5naW5lLT5jdXJfcmVxID09ICZyZXEtPmJhc2UpDQo+IC0JCWZpbmFsaXplX2N1cl9y ZXEgPSB0cnVlOw0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+cXVldWVfbG9j aywgZmxhZ3MpOw0KPiAtDQo+IC0JaWYgKGZpbmFsaXplX2N1cl9yZXEpIHsNCj4gLQkJaWYgKGVu Z2luZS0+Y3VyX3JlcV9wcmVwYXJlZCAmJg0KPiAtCQkgICAgZW5naW5lLT51bnByZXBhcmVfaGFz aF9yZXF1ZXN0KSB7DQo+IC0JCQlyZXQgPSBlbmdpbmUtPnVucHJlcGFyZV9oYXNoX3JlcXVlc3Qo ZW5naW5lLCByZXEpOw0KPiAtCQkJaWYgKHJldCkNCj4gLQkJCQlkZXZfZXJyKGVuZ2luZS0+ZGV2 LCAiZmFpbGVkIHRvIHVucHJlcGFyZSByZXF1ZXN0XG4iKTsNCj4gLQkJfQ0KPiAtCQlzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQo+IC0JCWVuZ2luZS0+Y3Vy X3JlcSA9IE5VTEw7DQo+IC0JCWVuZ2luZS0+Y3VyX3JlcV9wcmVwYXJlZCA9IGZhbHNlOw0KPiAt CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCj4g LQl9DQo+IC0NCj4gLQlyZXEtPmJhc2UuY29tcGxldGUoJnJlcS0+YmFzZSwgZXJyKTsNCj4gLQ0K PiAtCWt0aHJlYWRfcXVldWVfd29yayhlbmdpbmUtPmt3b3JrZXIsICZlbmdpbmUtPnB1bXBfcmVx dWVzdHMpOw0KPiArCXJldHVybiBjcnlwdG9fZmluYWxpemVfcmVxdWVzdChlbmdpbmUsICZyZXEt PmJhc2UsIGVycik7DQo+ICAgfQ0KPiAgIEVYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19maW5hbGl6 ZV9oYXNoX3JlcXVlc3QpOw0KPiAgIA0KPiAgIC8qKg0KPiArICogY3J5cHRvX2ZpbmFsaXplX3Nr Y2lwaGVyX3JlcXVlc3QgLSBmaW5hbGl6ZSBvbmUgc2tjaXBoZXJfcmVxdWVzdCBpZg0KPiArICog dGhlIHJlcXVlc3QgaXMgZG9uZQ0KPiArICogQGVuZ2luZTogdGhlIGhhcmR3YXJlIGVuZ2luZQ0K PiArICogQHJlcTogdGhlIHJlcXVlc3QgbmVlZCB0byBiZSBmaW5hbGl6ZWQNCj4gKyAqIEBlcnI6 IGVycm9yIG51bWJlcg0KPiArICovDQo+ICt2b2lkIGNyeXB0b19maW5hbGl6ZV9za2NpcGhlcl9y ZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICsJCQkJICAgICAgc3RydWN0 IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSwgaW50IGVycikNCj4gK3sNCj4gKwlyZXR1cm4gY3J5cHRv X2ZpbmFsaXplX3JlcXVlc3QoZW5naW5lLCAmcmVxLT5iYXNlLCBlcnIpOw0KPiArfQ0KPiArRVhQ T1JUX1NZTUJPTF9HUEwoY3J5cHRvX2ZpbmFsaXplX3NrY2lwaGVyX3JlcXVlc3QpOw0KPiArDQo+ ICsvKioNCj4gICAgKiBjcnlwdG9fZW5naW5lX3N0YXJ0IC0gc3RhcnQgdGhlIGhhcmR3YXJlIGVu Z2luZQ0KPiAgICAqIEBlbmdpbmU6IHRoZSBoYXJkd2FyZSBlbmdpbmUgbmVlZCB0byBiZSBzdGFy dGVkDQo+ICAgICoNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3J5cHRvL2VuZ2luZS5oIGIvaW5j bHVkZS9jcnlwdG8vZW5naW5lLmgNCj4gaW5kZXggZGQwNGMxNjk5YjUxLi4xY2JlYzI5YWYzZDYg MTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvY3J5cHRvL2VuZ2luZS5oDQo+ICsrKyBiL2luY2x1ZGUv Y3J5cHRvL2VuZ2luZS5oDQo+IEBAIC0xNyw3ICsxNywxMCBAQA0KPiAgICNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCj4gICAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPg0KPiAgICNpbmNsdWRl IDxjcnlwdG8vYWxnYXBpLmg+DQo+ICsjaW5jbHVkZSA8Y3J5cHRvL2FlYWQuaD4NCj4gKyNpbmNs dWRlIDxjcnlwdG8vYWtjaXBoZXIuaD4NCj4gICAjaW5jbHVkZSA8Y3J5cHRvL2hhc2guaD4NCj4g KyNpbmNsdWRlIDxjcnlwdG8vc2tjaXBoZXIuaD4NCj4gICANCj4gICAjZGVmaW5lIEVOR0lORV9O QU1FX0xFTgkzMA0KPiAgIC8qDQo+IEBAIC0zNywxMiArNDAsNiBAQA0KPiAgICAqIEB1bnByZXBh cmVfY3J5cHRfaGFyZHdhcmU6IHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gbW9yZSByZXF1ZXN0cyBv biB0aGUNCj4gICAgKiBxdWV1ZSBzbyB0aGUgc3Vic3lzdGVtIG5vdGlmaWVzIHRoZSBkcml2ZXIg dGhhdCBpdCBtYXkgcmVsYXggdGhlDQo+ICAgICogaGFyZHdhcmUgYnkgaXNzdWluZyB0aGlzIGNh bGwNCj4gLSAqIEBwcmVwYXJlX2NpcGhlcl9yZXF1ZXN0OiBkbyBzb21lIHByZXBhcmUgaWYgbmVl ZCBiZWZvcmUgaGFuZGxlIHRoZSBjdXJyZW50IHJlcXVlc3QNCj4gLSAqIEB1bnByZXBhcmVfY2lw aGVyX3JlcXVlc3Q6IHVuZG8gYW55IHdvcmsgZG9uZSBieSBwcmVwYXJlX2NpcGhlcl9yZXF1ZXN0 KCkNCj4gLSAqIEBjaXBoZXJfb25lX3JlcXVlc3Q6IGRvIGVuY3J5cHRpb24gZm9yIGN1cnJlbnQg cmVxdWVzdA0KPiAtICogQHByZXBhcmVfaGFzaF9yZXF1ZXN0OiBkbyBzb21lIHByZXBhcmUgaWYg bmVlZCBiZWZvcmUgaGFuZGxlIHRoZSBjdXJyZW50IHJlcXVlc3QNCj4gLSAqIEB1bnByZXBhcmVf aGFzaF9yZXF1ZXN0OiB1bmRvIGFueSB3b3JrIGRvbmUgYnkgcHJlcGFyZV9oYXNoX3JlcXVlc3Qo KQ0KPiAtICogQGhhc2hfb25lX3JlcXVlc3Q6IGRvIGhhc2ggZm9yIGN1cnJlbnQgcmVxdWVzdA0K PiAgICAqIEBrd29ya2VyOiBrdGhyZWFkIHdvcmtlciBzdHJ1Y3QgZm9yIHJlcXVlc3QgcHVtcA0K PiAgICAqIEBwdW1wX3JlcXVlc3RzOiB3b3JrIHN0cnVjdCBmb3Igc2NoZWR1bGluZyB3b3JrIHRv IHRoZSByZXF1ZXN0IHB1bXANCj4gICAgKiBAcHJpdl9kYXRhOiB0aGUgZW5naW5lIHByaXZhdGUg ZGF0YQ0KPiBAQCAtNjUsMTkgKzYyLDYgQEAgc3RydWN0IGNyeXB0b19lbmdpbmUgew0KPiAgIAlp bnQgKCpwcmVwYXJlX2NyeXB0X2hhcmR3YXJlKShzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5l KTsNCj4gICAJaW50ICgqdW5wcmVwYXJlX2NyeXB0X2hhcmR3YXJlKShzdHJ1Y3QgY3J5cHRvX2Vu Z2luZSAqZW5naW5lKTsNCj4gICANCj4gLQlpbnQgKCpwcmVwYXJlX2NpcGhlcl9yZXF1ZXN0KShz dHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAtCQkJCSAgICAgIHN0cnVjdCBhYmxrY2lw aGVyX3JlcXVlc3QgKnJlcSk7DQo+IC0JaW50ICgqdW5wcmVwYXJlX2NpcGhlcl9yZXF1ZXN0KShz dHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAtCQkJCQlzdHJ1Y3QgYWJsa2NpcGhlcl9y ZXF1ZXN0ICpyZXEpOw0KPiAtCWludCAoKnByZXBhcmVfaGFzaF9yZXF1ZXN0KShzdHJ1Y3QgY3J5 cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAtCQkJCSAgICBzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVx KTsNCj4gLQlpbnQgKCp1bnByZXBhcmVfaGFzaF9yZXF1ZXN0KShzdHJ1Y3QgY3J5cHRvX2VuZ2lu ZSAqZW5naW5lLA0KPiAtCQkJCSAgICAgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEpOw0KPiAt CWludCAoKmNpcGhlcl9vbmVfcmVxdWVzdCkoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwN Cj4gLQkJCQkgIHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSk7DQo+IC0JaW50ICgqaGFz aF9vbmVfcmVxdWVzdCkoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gLQkJCQlzdHJ1 Y3QgYWhhc2hfcmVxdWVzdCAqcmVxKTsNCj4gLQ0KPiAgIAlzdHJ1Y3Qga3RocmVhZF93b3JrZXIg ICAgICAgICAgICprd29ya2VyOw0KPiAgIAlzdHJ1Y3Qga3RocmVhZF93b3JrICAgICAgICAgICAg IHB1bXBfcmVxdWVzdHM7DQo+ICAgDQo+IEBAIC04NSwxOSArNjksNDUgQEAgc3RydWN0IGNyeXB0 b19lbmdpbmUgew0KPiAgIAlzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QJKmN1cl9yZXE7DQo+ ICAgfTsNCj4gICANCj4gLWludCBjcnlwdG9fdHJhbnNmZXJfY2lwaGVyX3JlcXVlc3Qoc3RydWN0 IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gLQkJCQkgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1 ZXN0ICpyZXEsDQo+IC0JCQkJICAgYm9vbCBuZWVkX3B1bXApOw0KPiAtaW50IGNyeXB0b190cmFu c2Zlcl9jaXBoZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2lu ZSwNCj4gLQkJCQkJICAgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEpOw0KPiAtaW50 IGNyeXB0b190cmFuc2Zlcl9oYXNoX3JlcXVlc3Qoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2lu ZSwNCj4gLQkJCQkgc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgYm9vbCBuZWVkX3B1bXApOw0K PiArLyoNCj4gKyAqIHN0cnVjdCBjcnlwdG9fZW5naW5lX29wIC0gY3J5cHRvIGhhcmR3YXJlIGVu Z2luZSBvcGVyYXRpb25zDQo+ICsgKiBAcHJlcGFyZV9fcmVxdWVzdDogZG8gc29tZSBwcmVwYXJl IGlmIG5lZWQgYmVmb3JlIGhhbmRsZSB0aGUgY3VycmVudCByZXF1ZXN0DQo+ICsgKiBAdW5wcmVw YXJlX3JlcXVlc3Q6IHVuZG8gYW55IHdvcmsgZG9uZSBieSBwcmVwYXJlX3JlcXVlc3QoKQ0KPiAr ICogQGRvX29uZV9yZXF1ZXN0OiBkbyBlbmNyeXB0aW9uIGZvciBjdXJyZW50IHJlcXVlc3QNCj4g KyAqLw0KPiArc3RydWN0IGNyeXB0b19lbmdpbmVfb3Agew0KPiArCWludCAoKnByZXBhcmVfcmVx dWVzdCkoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gKwkJCSAgICAgICB2b2lkICph cmVxKTsNCj4gKwlpbnQgKCp1bnByZXBhcmVfcmVxdWVzdCkoc3RydWN0IGNyeXB0b19lbmdpbmUg KmVuZ2luZSwNCj4gKwkJCQkgdm9pZCAqYXJlcSk7DQo+ICsJaW50ICgqZG9fb25lX3JlcXVlc3Qp KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICsJCQkgICAgICB2b2lkICphcmVxKTsN Cj4gK307DQo+ICsNCj4gK3N0cnVjdCBjcnlwdG9fZW5naW5lX2N0eCB7DQo+ICsJc3RydWN0IGNy eXB0b19lbmdpbmVfb3Agb3A7DQo+ICt9Ow0KPiArDQo+ICtpbnQgY3J5cHRvX3RyYW5zZmVyX2Fi bGtjaXBoZXJfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwN Cj4gKwkJCQkJCSBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEpOw0KPiAraW50IGNyeXB0 b190cmFuc2Zlcl9hZWFkX3JlcXVlc3RfdG9fZW5naW5lKHN0cnVjdCBjcnlwdG9fZW5naW5lICpl bmdpbmUsDQo+ICsJCQkJCSAgIHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSk7DQo+ICtpbnQgY3J5 cHRvX3RyYW5zZmVyX2FrY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKHN0cnVjdCBjcnlwdG9fZW5n aW5lICplbmdpbmUsDQo+ICsJCQkJCSAgICAgICBzdHJ1Y3QgYWtjaXBoZXJfcmVxdWVzdCAqcmVx KTsNCj4gICBpbnQgY3J5cHRvX3RyYW5zZmVyX2hhc2hfcmVxdWVzdF90b19lbmdpbmUoc3RydWN0 IGNyeXB0b19lbmdpbmUgKmVuZ2luZSwNCj4gLQkJCQkJICAgc3RydWN0IGFoYXNoX3JlcXVlc3Qg KnJlcSk7DQo+IC12b2lkIGNyeXB0b19maW5hbGl6ZV9jaXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5 cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAtCQkJCSAgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0 ICpyZXEsIGludCBlcnIpOw0KPiArCQkJCQkgICAgICAgc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJl cSk7DQo+ICtpbnQgY3J5cHRvX3RyYW5zZmVyX3NrY2lwaGVyX3JlcXVlc3RfdG9fZW5naW5lKHN0 cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICsJCQkJCSAgICAgICBzdHJ1Y3Qgc2tjaXBo ZXJfcmVxdWVzdCAqcmVxKTsNCj4gK3ZvaWQgY3J5cHRvX2ZpbmFsaXplX2FibGtjaXBoZXJfcmVx dWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiArCQkJCQlzdHJ1Y3QgYWJsa2Np cGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0KPiArdm9pZCBjcnlwdG9fZmluYWxpemVfYWVh ZF9yZXF1ZXN0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUsDQo+ICsJCQkJICBzdHJ1Y3Qg YWVhZF9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0KPiArdm9pZCBjcnlwdG9fZmluYWxpemVfYWtj aXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiArCQkJCSAgICAg IHN0cnVjdCBha2NpcGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0KPiAgIHZvaWQgY3J5cHRv X2ZpbmFsaXplX2hhc2hfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5lLA0KPiAg IAkJCQkgIHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0KPiArdm9pZCBjcnlw dG9fZmluYWxpemVfc2tjaXBoZXJfcmVxdWVzdChzdHJ1Y3QgY3J5cHRvX2VuZ2luZSAqZW5naW5l LA0KPiArCQkJCSAgICAgIHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEsIGludCBlcnIpOw0K PiAgIGludCBjcnlwdG9fZW5naW5lX3N0YXJ0KHN0cnVjdCBjcnlwdG9fZW5naW5lICplbmdpbmUp Ow0KPiAgIGludCBjcnlwdG9fZW5naW5lX3N0b3Aoc3RydWN0IGNyeXB0b19lbmdpbmUgKmVuZ2lu ZSk7DQo+ICAgc3RydWN0IGNyeXB0b19lbmdpbmUgKmNyeXB0b19lbmdpbmVfYWxsb2NfaW5pdChz dHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgcnQpOw0K