From mboxrd@z Thu Jan 1 00:00:00 1970 From: Satya Tangirala via Linux-f2fs-devel Subject: [PATCH 3/8] block: blk-crypto for Inline Encryption Date: Wed, 10 Jul 2019 15:56:04 -0700 Message-ID: <20190710225609.192252-4-satyat@google.com> References: <20190710225609.192252-1-satyat@google.com> Reply-To: Satya Tangirala Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190710225609.192252-1-satyat@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, linux-fscrypt@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Ladvine D Almeida , Parshuram Raju Thombare , Barani Muthukumaran , Kuohong Wang , Satya Tangirala , Greg Kroah-Hartman List-Id: linux-scsi@vger.kernel.org V2UgaW50cm9kdWNlIGJsay1jcnlwdG8sIHdoaWNoIG1hbmFnZXMgcHJvZ3JhbW1pbmcga2V5c2xv dHMgZm9yIHN0cnVjdApiaW9zLiBXaXRoIGJsay1jcnlwdG8sIGZpbGVzeXN0ZW1zIG9ubHkgbmVl ZCB0byBjYWxsIGJpb19jcnlwdF9zZXRfY3R4IHdpdGgKdGhlIGVuY3J5cHRpb24ga2V5LCBhbGdv cml0aG0gYW5kIGRhdGFfdW5pdF9udW07IHRoZXkgZG9uJ3QgaGF2ZSB0byB3b3JyeQphYm91dCBn ZXR0aW5nIGEga2V5c2xvdCBmb3IgZWFjaCBlbmNyeXB0aW9uIGNvbnRleHQsIGFzIGJsay1jcnlw dG8gaGFuZGxlcwp0aGF0LiBCbGstY3J5cHRvIGFsc28gbWFrZXMgaXQgcG9zc2libGUgZm9yIGxh eWVyZWQgZGV2aWNlcyBsaWtlIGRldmljZQptYXBwZXIgdG8gbWFrZSB1c2Ugb2YgaW5saW5lIGVu Y3J5cHRpb24gaGFyZHdhcmUuCgpCbGstY3J5cHRvIGRlbGVnYXRlcyBjcnlwdG8gb3BlcmF0aW9u cyB0byBpbmxpbmUgZW5jcnlwdGlvbiBoYXJkd2FyZSB3aGVuCmF2YWlsYWJsZSwgYW5kIGFsc28g Y29udGFpbnMgYSBzb2Z0d2FyZSBmYWxsYmFjayB0byB0aGUga2VybmVsIGNyeXB0byBBUEkuCkZv ciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIERvY3VtZW50YXRpb24vYmxvY2svYmxrLWNyeXB0by50 eHQuCgpLbm93biBpc3N1ZXM6CjEpIFdlJ3JlIGFsbG9jYXRpbmcgY3J5cHRvX3NrY2lwaGVyIGlu IGJsa19jcnlwdG9fa2V5c2xvdF9wcm9ncmFtLCB3aGljaAp1c2VzIEdGUF9LRVJORUwgdG8gYWxs b2NhdGUgbWVtb3J5LCBidXQgdGhpcyBmdW5jdGlvbiBpcyBvbiB0aGUgd3JpdGUKcGF0aCBmb3Ig SU8gLSB3ZSBuZWVkIHRvIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGlmZmVyZW50IGZs YWdzCnRvIHRoZSBjcnlwdG8gQVBJLgoKU2lnbmVkLW9mZi1ieTogU2F0eWEgVGFuZ2lyYWxhIDxz YXR5YXRAZ29vZ2xlLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL2Jsb2NrL2lubGluZS1lbmNyeXB0 aW9uLnR4dCB8IDE4NSArKysrKysrCiBibG9jay9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMyArLQogYmxvY2svYmlvLWNyeXB0LWN0eC5jICAgICAgICAgICAgICAgICAg ICAgfCAgIDcgKy0KIGJsb2NrL2Jpby5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICsKIGJsb2NrL2Jsay1jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICst CiBibG9jay9ibGstY3J5cHRvLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDU4NSArKysrKysr KysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L2Jpby5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNyArCiBpbmNsdWRlL2xpbnV4L2Jsay1jcnlwdG8uaCAgICAgICAgICAgICAgICB8ICA0 MCArKwogOCBmaWxlcyBjaGFuZ2VkLCA4NDAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2Jsb2NrL2lubGluZS1lbmNyeXB0aW9u LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGJsb2NrL2Jsay1jcnlwdG8uYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGluY2x1ZGUvbGludXgvYmxrLWNyeXB0by5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9ibG9jay9pbmxpbmUtZW5jcnlwdGlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2lu bGluZS1lbmNyeXB0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjk2YTc5ODNhMTE3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2sv aW5saW5lLWVuY3J5cHRpb24udHh0CkBAIC0wLDAgKzEsMTg1IEBACitCTEstQ1JZUFRPIGFuZCBL RVlTTE9UIE1BTkFHRVIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDT05URU5UUwor MS4gT2JqZWN0aXZlCisyLiBDb25zdHJhaW50cyBhbmQgbm90ZXMKKzMuIERlc2lnbgorNC4gQmxr LWNyeXB0bworIDQtMSBXaGF0IGRvZXMgYmxrLWNyeXB0byBkbyBvbiBiaW8gc3VibWlzc2lvbgor NS4gTGF5ZXJlZCBEZXZpY2VzCis2LiBGdXR1cmUgb3B0aW1pemF0aW9ucyBmb3IgbGF5ZXJlZCBk ZXZpY2VzCisKKzEuIE9iamVjdGl2ZQorPT09PT09PT09PT09CisKK1dlIHdhbnQgdG8gc3VwcG9y dCBpbmxpbmUgZW5jcnlwdGlvbiAoSUUpIGluIHRoZSBrZXJuZWwuCitUbyBhbGxvdyBmb3IgdGVz dGluZywgd2UgYWxzbyB3YW50IGEgc29mdHdhcmUgZmFsbGJhY2sgd2hlbiBhY3R1YWwKK0lFIGhh cmR3YXJlIGlzIGFic2VudC4gV2UgYWxzbyB3YW50IElFIHRvIHdvcmsgd2l0aCBsYXllcmVkIGRl dmljZXMKK2xpa2UgZG0gYW5kIGxvb3BiYWNrIChpLmUuIHdlIHdhbnQgdG8gYmUgYWJsZSB0byB1 c2UgdGhlIElFIGhhcmR3YXJlCitvZiB0aGUgdW5kZXJseWluZyBkZXZpY2VzIGlmIHByZXNlbnQs IG9yIGVsc2UgZmFsbCBiYWNrIHRvIHNvZnR3YXJlCitlbi9kZWNyeXB0aW9uKS4KKworCisyLiBD b25zdHJhaW50cyBhbmQgbm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisxKSBJRSBo YXJkd2FyZSBoYXZlIGEgbGltaXRlZCBudW1iZXIgb2Yg4oCca2V5c2xvdHPigJ0gdGhhdCBjYW4g YmUgcHJvZ3JhbW1lZAord2l0aCBhbiBlbmNyeXB0aW9uIGNvbnRleHQgKGtleSwgYWxnb3JpdGht LCBkYXRhIHVuaXQgc2l6ZSwgZXRjLikgYXQgYW55IHRpbWUuCitPbmUgY2FuIHNwZWNpZnkgYSBr ZXlzbG90IGluIGEgZGF0YSByZXF1ZXN0IG1hZGUgdG8gdGhlIGRldmljZSwgYW5kIHRoZQorZGV2 aWNlIHdpbGwgZW4vZGVjcnlwdCB0aGUgZGF0YSB1c2luZyB0aGUgZW5jcnlwdGlvbiBjb250ZXh0 IHByb2dyYW1tZWQgaW50bwordGhhdCBzcGVjaWZpZWQga2V5c2xvdC4gV2hlbiBwb3NzaWJsZSwg d2Ugd2FudCB0byBtYWtlIG11bHRpcGxlIHJlcXVlc3RzIHdpdGgKK3RoZSBzYW1lIGVuY3J5cHRp b24gY29udGV4dCBzaGFyZSB0aGUgc2FtZSBrZXlzbG90LgorCisyKSBXZSBuZWVkIGEgd2F5IGZv ciBmaWxlc3lzdGVtcyB0byBzcGVjaWZ5IGFuIGVuY3J5cHRpb24gY29udGV4dCB0byB1c2UgZm9y Citlbi9kZWNyeXB0aW5nIGEgc3RydWN0IGJpbywgYW5kIGEgZGV2aWNlIGRyaXZlciAobGlrZSBV RlMpIG5lZWRzIHRvIGJlIGFibGUKK3RvIHVzZSB0aGF0IGVuY3J5cHRpb24gY29udGV4dCB3aGVu IGl0IHByb2Nlc3NlcyB0aGUgYmlvLgorCiszKSBXZSBuZWVkIGEgd2F5IGZvciBkZXZpY2UgZHJp dmVycyB0byBleHBvc2UgdGhlaXIgY2FwYWJpbGl0aWVzIGluIGEgdW5pZmllZAord2F5IHRvIHRo ZSB1cHBlciBsYXllcnMuCisKKworMy4gRGVzaWduCis9PT09PT09PT0KKworV2UgYWRkIGEgc3Ry dWN0IGJpb19jcnlwdF9jb250ZXh0IHRvIHN0cnVjdCBiaW8gdGhhdCBjYW4gcmVwcmVzZW50IGFu CitlbmNyeXB0aW9uIGNvbnRleHQsIGJlY2F1c2Ugd2UgbmVlZCB0byBhYmxlIHRvIHBhc3MgdGhp cyBlbmNyeXB0aW9uIGNvbnRleHQKK2Zyb20gdGhlIEZTIGxheWVyIHRvIHRoZSBkZXZpY2UgZHJp dmVyIHRvIGFjdCB1cG9uLgorCitXaGlsZSBJRSBoYXJkd2FyZSB3b3JrcyBvbiB0aGUgbm90aW9u IG9mIGtleXNsb3RzLCB0aGUgRlMgbGF5ZXIgaGFzIG5vCitrbm93bGVkZ2Ugb2Yga2V5c2xvdHMg LSBpdCBzaW1wbHkgd2FudHMgdG8gc3BlY2lmeSBhbiBlbmNyeXB0aW9uIGNvbnRleHQgdG8KK3Vz ZSB3aGlsZSBlbi9kZWNyeXB0aW5nIGEgYmlvLgorCitXZSBpbnRyb2R1Y2UgYSBrZXlzbG90IG1h bmFnZXIgKEtTTSkgdGhhdCBoYW5kbGVzIHRoZSB0cmFuc2xhdGlvbiBmcm9tCitlbmNyeXB0aW9u IGNvbnRleHRzIHNwZWNpZmllZCBieSB0aGUgRlMgdG8ga2V5c2xvdHMgb24gdGhlIElFIGhhcmR3 YXJlLgorVGhpcyBLU00gYWxzbyBzZXJ2ZXMgYXMgdGhlIHdheSBJRSBoYXJkd2FyZSBjYW4gZXhw b3NlIHRoZWlyIGNhcGFiaWxpdGllcyB0bwordXBwZXIgbGF5ZXJzLiBUaGUgZ2VuZXJpYyBtb2Rl IG9mIG9wZXJhdGlvbiBpczogZWFjaCBkZXZpY2UgZHJpdmVyIHRoYXQgd2FudHMKK3RvIHN1cHBv cnQgSUUgd2lsbCBjb25zdHJ1Y3QgYSBLU00gYW5kIHNldCBpdCB1cCBpbiBpdHMgc3RydWN0IHJl cXVlc3RfcXVldWUuCitVcHBlciBsYXllcnMgdGhhdCB3YW50IHRvIHVzZSBJRSBvbiB0aGlzIGRl dmljZSBjYW4gdGhlbiB1c2UgdGhpcyBLU00gaW4KK3RoZSBkZXZpY2XigJlzIHN0cnVjdCByZXF1 ZXN0X3F1ZXVlIHRvIHRyYW5zbGF0ZSBhbiBlbmNyeXB0aW9uIGNvbnRleHQgaW50bworYSBrZXlz bG90LiBUaGUgcHJlc2VuY2Ugb2YgdGhlIEtTTSBpbiB0aGUgcmVxdWVzdCBxdWV1ZSBzaGFsbCBi ZSB1c2VkIHRvIG1lYW4KK3RoYXQgdGhlIGRldmljZSBzdXBwb3J0cyBJRS4KKworT24gdGhlIGRl dmljZSBkcml2ZXIgZW5kIG9mIHRoZSBpbnRlcmZhY2UsIHRoZSBkZXZpY2UgZHJpdmVyIG5lZWRz IHRvIHRlbGwgdGhlCitLU00gaG93IHRvIGFjdHVhbGx5IG1hbmlwdWxhdGUgdGhlIElFIGhhcmR3 YXJlIGluIHRoZSBkZXZpY2UgdG8gZG8gdGhpbmdzIGxpa2UKK3Byb2dyYW1taW5nIHRoZSBjcnlw dG8ga2V5IGludG8gdGhlIElFIGhhcmR3YXJlIGludG8gYSBwYXJ0aWN1bGFyIGtleXNsb3QuIEFs bAordGhpcyBpcyBhY2hpZXZlZCB0aHJvdWdoIHRoZSBzdHJ1Y3Qga2V5c2xvdF9tZ210X2xsX29w cyB0aGF0IHRoZSBkZXZpY2UgZHJpdmVyCitwYXNzZXMgdG8gdGhlIEtTTSB3aGVuIGNyZWF0aW5n IGl0LgorCitJdCB1c2VzIHJlZmNvdW50cyB0byB0cmFjayB3aGljaCBrZXlzbG90cyBhcmUgaWRs ZSAoZWl0aGVyIHRoZXkgaGF2ZSBubworZW5jcnlwdGlvbiBjb250ZXh0IHByb2dyYW1tZWQsIG9y IHRoZXJlIGFyZSBubyBpbiBmbGlnaHQgc3RydWN0IGJpb3MKK3JlZmVyZW5jaW5nIHRoYXQga2V5 c2xvdCkuIFdoZW4gYSBuZXcgZW5jcnlwdGlvbiBjb250ZXh0IG5lZWRzIGEga2V5c2xvdCwgaXQK K3RyaWVzIHRvIGZpbmQgYSBrZXlzbG90IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBwcm9ncmFtbWVk IHdpdGggdGhlIHNhbWUKK2VuY3J5cHRpb24gY29udGV4dCwgYW5kIGlmIHRoZXJlIGlzIG5vIHN1 Y2gga2V5c2xvdCwgaXQgZXZpY3RzIHRoZSBsZWFzdAorcmVjZW50bHkgdXNlZCBpZGxlIGtleXNs b3QgYW5kIHByb2dyYW1zIHRoZSBuZXcgZW5jcnlwdGlvbiBjb250ZXh0IGludG8gdGhhdAorb25l LiBJZiBubyBpZGxlIGtleXNsb3RzIGFyZSBhdmFpbGFibGUsIHRoZW4gdGhlIGNhbGxlciB3aWxs IHNsZWVwIHVudGlsIHRoZXJlCitpcyBhdCBsZWFzdCBvbmUuCisKKworNC4gQmxrLWNyeXB0bwor PT09PT09PT09PT09PQorCitUaGUgYWJvdmUgaXMgc3VmZmljaWVudCBmb3Igc2ltcGxlIGNhc2Vz LCBidXQgZG9lcyBub3Qgd29yayBpZiB0aGVyZSBpcyBhCituZWVkIGZvciBhIHNvZnR3YXJlIGZh bGxiYWNrLCBvciBpZiB3ZSBhcmUgd2FudCB0byB1c2UgSUUgd2l0aCBsYXllcmVkIGRldmljZXMu CitUbyB0aGVzZSBlbmRzLCB3ZSBpbnRyb2R1Y2UgYmxrLWNyeXB0by4gQmxrLWNyeXB0byBhbGxv d3MgdXMgdG8gcHJlc2VudCBhCit1bmlmaWVkIHZpZXcgb2YgZW5jcnlwdGlvbiB0byB0aGUgRlMg KHNvIEZTIG9ubHkgbmVlZHMgdG8gc3BlY2lmeSBhbgorZW5jcnlwdGlvbiBjb250ZXh0IGFuZCBu b3Qgd29ycnkgYWJvdXQga2V5c2xvdHMgYXQgYWxsKSwgYW5kIGJsay1jcnlwdG8gY2FuCitkZWNp ZGUgd2hldGhlciB0byBkZWxlZ2F0ZSB0aGUgZW4vZGVjcnlwdGlvbiB0byBJRSBoYXJkd2FyZSBv ciB0byBzb2Z0d2FyZQorKGkuZS4gdG8gdGhlIGtlcm5lbCBjcnlwdG8gQVBJKS4gQmxrLWNyeXB0 byBtYWludGFpbnMgYW4gaW50ZXJuYWwgS1NNIHRoYXQKK3NlcnZlcyBhcyB0aGUgc29mdHdhcmUg ZmFsbGJhY2sgdG8gdGhlIGtlcm5lbCBjcnlwdG8gQVBJLgorCitCbGstY3J5cHRvIG5lZWRzIHRv IGVuc3VyZSB0aGF0IHRoZSBlbmNyeXB0aW9uIGNvbnRleHQgaXMgcHJvZ3JhbW1lZCBpbnRvIHRo ZQorImNvcnJlY3QiIGtleXNsb3QgbWFuYWdlciBmb3IgSUUuIElmIGEgYmlvIGlzIHN1Ym1pdHRl ZCB0byBhIGxheWVyZWQgZGV2aWNlCit0aGF0IGV2ZW50dWFsbHkgcGFzc2VzIHRoZSBiaW8gZG93 biB0byBhIGRldmljZSB0aGF0IHJlYWxseSBkb2VzIHN1cHBvcnQgSUUsIHdlCit3YW50IHRoZSBl bmNyeXB0aW9uIGNvbnRleHQgdG8gYmUgcHJvZ3JhbW1lZCBpbnRvIGEga2V5c2xvdCBmb3IgdGhl IEtTTSBvZiB0aGUKK2RldmljZSB3aXRoIElFIHN1cHBvcnQuIEhvd2V2ZXIsIGJsay1jcnlwdG8g ZG9lcyBub3Qga25vdyBhIHByaW9yaSB3aGV0aGVyIGEKK3BhcnRpY3VsYXIgZGV2aWNlIGlzIHRo ZSBmaW5hbCBkZXZpY2UgaW4gdGhlIGxheWVyaW5nIHN0cnVjdHVyZSBmb3IgYSBiaW8gb3IKK25v dC4gU28gaW4gdGhlIGNhc2UgdGhhdCBhIHBhcnRpY3VsYXIgZGV2aWNlIGRvZXMgbm90IHN1cHBv cnQgSUUsIHNpbmNlIGl0IGlzCitwb3NzaWJseSB0aGUgZmluYWwgZGVzdGluYXRpb24gZGV2aWNl IGZvciB0aGUgYmlvLCBpZiB0aGUgYmlvIHJlcXVpcmVzCitlbmNyeXB0aW9uIChpLmUuIHRoZSBi aW8gaXMgZG9pbmcgYSB3cml0ZSBvcGVyYXRpb24pLCBibGstY3J5cHRvIG11c3QgZmFsbGJhY2sK K3RvIHNvZnR3YXJlICpiZWZvcmUqIHNlbmRpbmcgdGhlIGJpbyB0byB0aGUgZGV2aWNlLgorCitC bGstY3J5cHRvIGVuc3VyZXMgdGhhdAorMSkgVGhlIGJpb+KAmXMgZW5jcnlwdGlvbiBjb250ZXh0 IGlzIHByb2dyYW1tZWQgaW50byBhIGtleXNsb3QgaW4gdGhlIEtTTSBvZiB0aGUKK3JlcXVlc3Qg cXVldWUgdGhhdCB0aGUgYmlvIGlzIGJlaW5nIHN1Ym1pdHRlZCB0byAob3IgdGhlIHNvZnR3YXJl IGZhbGxiYWNrIEtTTQoraWYgdGhlIHJlcXVlc3QgcXVldWUgZG9lc27igJl0IGhhdmUgYSBLU00p LCBhbmQgdGhhdCB0aGUgcHJvY2Vzc2luZ19rc20gaW4gdGhlCitiaV9jcnlwdF9jb250ZXh0IGlz IHNldCB0byB0aGlzIEtTTQorCisyKSBUaGF0IHRoZSBiaW8gaGFzIGl0cyBvd24gaW5kaXZpZHVh bCByZWZlcmVuY2UgdG8gdGhlIGtleXNsb3QgaW4gdGhpcyBLU00uCitPbmNlIHRoZSBiaW8gcGFz c2VzIHRocm91Z2ggYmxrLWNyeXB0bywgaXRzIGVuY3J5cHRpb24gY29udGV4dCBpcyBwcm9ncmFt bWVkCitpbiBzb21lIEtTTS4gVGhlIOKAnGl0cyBvd24gaW5kaXZpZHVhbCByZWZlcmVuY2UgdG8g dGhlIGtleXNsb3TigJ0gZW5zdXJlcyB0aGF0CitrZXlzbG90cyBjYW4gYmUgcmVsZWFzZWQgYnkg ZWFjaCBiaW8gaW5kZXBlbmRlbnRseSBvZiBvdGhlciBiaW9zIHdoaWxlIGVuc3VyaW5nCit0aGF0 IHRoZSBiaW8gaGFzIGEgdmFsaWQgcmVmZXJlbmNlIHRvIHRoZSBrZXlzbG90IHdoZW4sIGZvciBl LmcuLCB0aGUgc29mdHdhcmUKK2ZhbGxiYWNrIEtTTSBpbiBibGstY3J5cHRvIHBlcmZvcm1zIGNy eXB0byBmb3Igb24gdGhlIGRldmljZeKAmXMgYmVoYWxmLiBUaGUKK2luZGl2aWR1YWwgcmVmZXJl bmNlcyBhcmUgZW5zdXJlZCBieSBpbmNyZWFzaW5nIHRoZSByZWZjb3VudCBmb3IgdGhlIGtleXNs b3QgaW4KK3RoZSBwcm9jZXNzaW5nX2tzbSB3aGVuIGEgYmlvIHdpdGggYSBwcm9ncmFtbWVkIGVu Y3J5cHRpb24gY29udGV4dCBpcyBjbG9uZWQuCisKKworNC0xLiBXaGF0IGJsay1jcnlwdG8gZG9l cyBvbiBiaW8gc3VibWlzc2lvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitDYXNlIDE6IGJsay1jcnlwdG8gaXMgZ2l2ZW4gYSBiaW8gd2l0aCBvbmx5IGFu IGVuY3J5cHRpb24gY29udGV4dCB0aGF0IGhhc27igJl0CitiZWVuIHByb2dyYW1tZWQgaW50byBh bnkga2V5c2xvdCBpbiBhbnkgS1NNIChmb3IgZS5nLiBhIGJpbyBmcm9tIHRoZSBGUykuIEluCit0 aGlzIGNhc2UsIGJsay1jcnlwdG8gd2lsbCBwcm9ncmFtIHRoZSBlbmNyeXB0aW9uIGNvbnRleHQg aW50byB0aGUgS1NNIG9mIHRoZQorcmVxdWVzdCBxdWV1ZSB0aGUgYmlvIGlzIGJlaW5nIHN1Ym1p dHRlZCB0byAoYW5kIGlmIHRoaXMgS1NNIGRvZXMgbm90IGV4aXN0LAordGhlbiBpdCB3aWxsIHBy b2dyYW0gaXQgaW50byBibGstY3J5cHRv4oCZcyBpbnRlcm5hbCBLU00gZm9yIHNvZnR3YXJlIGZh bGxiYWNrKS4KK1RoZSBLU00gdGhhdCB0aGlzIGVuY3J5cHRpb24gY29udGV4dCB3YXMgcHJvZ3Jh bW1lZCBpbnRvIGlzIHN0b3JlZCBhcyB0aGUKK3Byb2Nlc3Npbmdfa3NtIGluIHRoZSBiaW/igJlz IGJpX2NyeXB0X2NvbnRleHQuCisKK0Nhc2UgMjogYmxrLWNyeXB0byBpcyBnaXZlbiBhIGJpbyB3 aG9zZSBlbmNyeXB0aW9uIGNvbnRleHQgaGFzIGFscmVhZHkgYmVlbgorcHJvZ3JhbW1lZCBpbnRv IGEga2V5c2xvdCBpbiB0aGUgKnNvZnR3YXJlIGZhbGxiYWNrIEtTTSouIEluIHRoaXMgY2FzZSwK K2Jsay1jcnlwdG8gZG9lcyBub3RoaW5nOyBpdCB0cmVhdHMgdGhlIGJpbyBhcyBub3QgaGF2aW5n IHNwZWNpZmllZCBhbgorZW5jcnlwdGlvbiBjb250ZXh0LiBOb3RlIHRoYXQgd2UgY2Fubm90IGRv IHdoYXQgd2Ugd2lsbCBkbyBpbiBDYXNlIDMgaGVyZQorYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFs cmVhZHkgZW5jcnlwdGVkIHRoZSBiaW8gaW4gc29mdHdhcmUgYnkgdGhpcyBwb2ludC4KKworQ2Fz ZSAzOiBibGstY3J5cHRvIGlzIGdpdmVuIGEgYmlvIHdob3NlIGVuY3J5cHRpb24gY29udGV4dCBo YXMgYWxyZWFkeSBiZWVuCitwcm9ncmFtbWVkIGludG8gYSBrZXlzbG90IGluIHNvbWUgS1NNICh0 aGF0IGlzICpub3QqIHRoZSBzb2Z0d2FyZSBmYWxsYmFjaworS1NNKS4gSW4gdGhpcyBjYXNlLCBi bGstY3J5cHRvIGZpcnN0IHJlbGVhc2VzIHRoYXQga2V5c2xvdCBmcm9tIHRoYXQgS1NNIGFuZAor dGhlbiB0cmVhdHMgdGhlIGJpbyBhcyBpbiBDYXNlIDEuCisKK1RoaXMgd2F5LCB3aGVuIGEgZGV2 aWNlIGRyaXZlciBpcyBwcm9jZXNzaW5nIGEgYmlvLCBpdCBjYW4gYmUgc3VyZSB0aGF0Cit0aGUg Ymlv4oCZcyBlbmNyeXB0aW9uIGNvbnRleHQgaGFzIGJlZW4gcHJvZ3JhbW1lZCBpbnRvIHNvbWUg S1NNIChlaXRoZXIgdGhlCitkZXZpY2UgZHJpdmVy4oCZcyByZXF1ZXN0IHF1ZXVl4oCZcyBLU00s IG9yIGJsay1jcnlwdG/igJlzIHNvZnR3YXJlIGZhbGxiYWNrIEtTTSkuCitJdCB0aGVuIHNpbXBs eSBuZWVkcyB0byBjaGVjayBpZiB0aGUgYmlv4oCZcyBwcm9jZXNzaW5nX2tzbSBpcyB0aGUgZGV2 aWNl4oCZcworcmVxdWVzdCBxdWV1ZeKAmXMgS1NNLiBJZiBzbywgdGhlbiBpdCBzaG91bGQgcHJv Y2VlZCB3aXRoIElFLiBJZiBub3QsIGl0IHNob3VsZAorc2ltcGx5IGRvIG5vdGhpbmcgd2l0aCBy ZXNwZWN0IHRvIGNyeXB0bywgYmVjYXVzZSBzb21lIG90aGVyIEtTTSAocGVyaGFwcyB0aGUKK2Js ay1jcnlwdG8gc29mdHdhcmUgZmFsbGJhY2sgS1NNKSBpcyBoYW5kbGluZyB0aGUgZW4vZGVjcnlw dGlvbi4KKworQmxrLWNyeXB0byB3aWxsIHJlbGVhc2UgdGhlIGtleXNsb3QgdGhhdCBpcyBiZWlu ZyBoZWxkIGJ5IHRoZSBiaW8gKGFuZCBhbHNvCitkZWNyeXB0IGl0IGlmIHRoZSBiaW8gaXMgdXNp bmcgdGhlIHNvZnR3YXJlIGZhbGxiYWNrIEtTTSkgb25jZQorYmlvX3JlbWFpbmluZ19kb25lIHJl dHVybnMgdHJ1ZSBmb3IgdGhlIGJpby4KKworCis1LiBMYXllcmVkIERldmljZXMKKz09PT09PT09 PT09PT09PT09PQorCitMYXllcmVkIGRldmljZXMgdGhhdCB3aXNoIHRvIHN1cHBvcnQgSUUgbmVl ZCB0byBjcmVhdGUgdGhlaXIgb3duIGtleXNsb3QKK21hbmFnZXIgZm9yIHRoZWlyIHJlcXVlc3Qg cXVldWUsIGFuZCBleHBvc2Ugd2hhdGV2ZXIgZnVuY3Rpb25hbGl0eSB0aGV5IGNob29zZS4KK1do ZW4gYSBsYXllcmVkIGRldmljZSB3YW50cyB0byBwYXNzIGEgYmlvIHRvIGFub3RoZXIgbGF5ZXIg KGVpdGhlciBieQorcmVzdWJtaXR0aW5nIHRoZSBzYW1lIGJpbywgb3IgYnkgc3VibWl0dGluZyBh IGNsb25lKSwgaXQgZG9lc27igJl0IG5lZWQgdG8gZG8KK2FueXRoaW5nIHNwZWNpYWwgYmVjYXVz ZSB0aGUgYmlvIChvciB0aGUgY2xvbmUpIHdpbGwgb25jZSBhZ2FpbiBwYXNzIHRocm91Z2gKK2Js ay1jcnlwdG8sIHdoaWNoIHdpbGwgd29yayBhcyBkZXNjcmliZWQgaW4gQ2FzZSAzLiBJZiBhIGxh eWVyZWQgZGV2aWNlIHdhbnRzCitmb3Igc29tZSByZWFzb24gdG8gZG8gdGhlIElPIGJ5IGl0c2Vs ZiBpbnN0ZWFkIG9mIHBhc3NpbmcgaXQgb24gdG8gYSBjaGlsZAorZGV2aWNlLCBidXQgaXQgYWxz byBjaG9zZSB0byBleHBvc2UgSUUgY2FwYWJpbGl0aWVzIGJ5IHNldHRpbmcgdXAgYSBLU00gaW4g aXRzCityZXF1ZXN0IHF1ZXVlLCBpdCBpcyB0aGVuIHJlc3BvbnNpYmxlIGZvciBlbi9kZWNyeXB0 aW5nIHRoZSBkYXRhIGl0c2VsZi4gSW4KK3N1Y2ggY2FzZXMsIHRoZSBkZXZpY2UgY2FuIGNob29z ZSB0byBjYWxsIHRoZSBibGstY3J5cHRvIGZ1bmN0aW9uCitibGtfY3J5cHRvX2ZhbGxiYWNrX3Rv X3NvZnR3YXJlIChUT0RPOiBOb3QgeWV0IGltcGxlbWVudGVkKSwgd2hpY2ggd2lsbAorY2F1c2Ug dGhlIGVuL2RlY3J5cHRpb24gdG8gYmUgZG9uZSB2aWEgc29mdHdhcmUgZmFsbGJhY2suCisKKwor Ni4gRnV0dXJlIE9wdGltaXphdGlvbnMgZm9yIGxheWVyZWQgZGV2aWNlcworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDcmVhdGluZyBhIGtleXNsb3QgbWFu YWdlciBmb3IgdGhlIGxheWVyZWQgZGV2aWNlIHVzZXMgdXAgbWVtb3J5IGZvciBlYWNoCitrZXlz bG90LCBhbmQgaW4gZ2VuZXJhbCwgYSBsYXllcmVkIGRldmljZSAobGlrZSBkbS1saW5lYXIpIG1l cmVseSBwYXNzZXMgdGhlCityZXF1ZXN0IG9uIHRvIGEg4oCcY2hpbGTigJ0gZGV2aWNlLCBzbyB0 aGUga2V5c2xvdHMgaW4gdGhlIGxheWVyZWQgZGV2aWNlIGl0c2VsZgorbWlnaHQgYmUgY29tcGxl dGVseSB1bnVzZWQuIFdlIGNhbiBpbnN0ZWFkIGRlZmluZSBhIG5ldyB0eXBlIG9mIEtTTTsgdGhl CivigJxwYXNzdGhyb3VnaCBLU03igJ0sIHRoYXQgbGF5ZXJlZCBkZXZpY2VzIGNhbiB1c2UgdG8g bGV0IGJsay1jcnlwdG8ga25vdyB0aGF0Cit0aGlzIGxheWVyZWQgZGV2aWNlICp3aWxsKiBwYXNz IHRoZSBiaW8gdG8gc29tZSBjaGlsZCBkZXZpY2UgKGFuZCBoZW5jZQordGhyb3VnaCBibGstY3J5 cHRvIGFnYWluLCBhdCB3aGljaCBwb2ludCBibGstY3J5cHRvIGNhbiBwcm9ncmFtIHRoZSBlbmNy eXB0aW9uCitjb250ZXh0LCBpbnN0ZWFkIG9mIHByb2dyYW1taW5nIGl0IGludG8gdGhlIGxheWVy ZWQgZGV2aWNl4oCZcyBLU00pLiBBZ2FpbiwgaWYKK3RoZSBkZXZpY2Ug4oCcbGllc+KAnSBhbmQg ZGVjaWRlcyB0byBkbyB0aGUgSU8gaXRzZWxmIGluc3RlYWQgb2YgcGFzc2luZyBpdCBvbiB0bwor YSBjaGlsZCBkZXZpY2UsIGl0IGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyB0aGUgZW4vZGVjcnlw dGlvbiAoYW5kIGNhbiBjaG9vc2UKK3RvIGNhbGwgYmxrX2NyeXB0b19mYWxsYmFja190b19zb2Z0 d2FyZSkuIEFub3RoZXIgdXNlIGNhc2UgZm9yIHRoZQorInBhc3N0aHJvdWdoIEtTTSIgaXMgZm9y IElFIGRldmljZXMgdGhhdCB3YW50IHRvIG1hbmFnZSB0aGVpciBvd24ga2V5c2xvdHMvZG8KK25v dCBoYXZlIGEgbGltaXRlZCBudW1iZXIgb2Yga2V5c2xvdHMuCmRpZmYgLS1naXQgYS9ibG9jay9N YWtlZmlsZSBiL2Jsb2NrL01ha2VmaWxlCmluZGV4IDQxNDdmZmE2MzYzMS4uMWJhN2RlODRkYmFm IDEwMDY0NAotLS0gYS9ibG9jay9NYWtlZmlsZQorKysgYi9ibG9jay9NYWtlZmlsZQpAQCAtMzUs NCArMzUsNSBAQCBvYmotJChDT05GSUdfQkxLX0RFQlVHX0ZTKQkrPSBibGstbXEtZGVidWdmcy5v CiBvYmotJChDT05GSUdfQkxLX0RFQlVHX0ZTX1pPTkVEKSs9IGJsay1tcS1kZWJ1Z2ZzLXpvbmVk Lm8KIG9iai0kKENPTkZJR19CTEtfU0VEX09QQUwpCSs9IHNlZC1vcGFsLm8KIG9iai0kKENPTkZJ R19CTEtfUE0pCQkrPSBibGstcG0ubwotb2JqLSQoQ09ORklHX0JMS19JTkxJTkVfRU5DUllQVElP TikJKz0ga2V5c2xvdC1tYW5hZ2VyLm8gYmlvLWNyeXB0LWN0eC5vCitvYmotJChDT05GSUdfQkxL X0lOTElORV9FTkNSWVBUSU9OKQkrPSBrZXlzbG90LW1hbmFnZXIubyBiaW8tY3J5cHQtY3R4Lm8g XAorCQkJCQkgICBibGstY3J5cHRvLm8KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jpby1jcnlwdC1jdHgu YyBiL2Jsb2NrL2Jpby1jcnlwdC1jdHguYwppbmRleCA4Yjg4NGVmMzIwMDcuLjkxMDE1NjQ1YzRl YSAxMDA2NDQKLS0tIGEvYmxvY2svYmlvLWNyeXB0LWN0eC5jCisrKyBiL2Jsb2NrL2Jpby1jcnlw dC1jdHguYwpAQCAtMjMsNyArMjMsMTIgQEAgRVhQT1JUX1NZTUJPTChiaW9fY3J5cHRfZnJlZV9j dHgpOwogCiBpbnQgYmlvX2NyeXB0X2Nsb25lKHN0cnVjdCBiaW8gKmRzdCwgc3RydWN0IGJpbyAq c3JjLCBnZnBfdCBnZnBfbWFzaykKIHsKLQlpZiAoIWJpb19pc19lbmNyeXB0ZWQoc3JjKSkKKwkv KgorCSAqIElmIGEgYmlvIGlzIHN3aGFuZGxlZCwgdGhlbiBpdCB3aWxsIGJlIGRlY3J5cHRlZCB3 aGVuIGJpb19lbmRpbworCSAqIGlzIGNhbGxlZC4gQXMgd2Ugb25seSB3YW50IHRoZSBkYXRhIHRv IGJlIGRlY3J5cHRlZCBvbmNlLCBjb3BpZXMKKwkgKiBvZiB0aGUgYmlvIG11c3Qgbm90IGhhdmUg aGF2ZSBhIGNyeXB0IGNvbnRleHQuCisJICovCisJaWYgKCFiaW9faXNfZW5jcnlwdGVkKHNyYykg fHwgYmlvX2NyeXB0X3N3aGFuZGxlZChzcmMpKQogCQlyZXR1cm4gMDsKIAogCWRzdC0+YmlfY3J5 cHRfY29udGV4dCA9IGJpb19jcnlwdF9hbGxvY19jdHgoZ2ZwX21hc2spOwpkaWZmIC0tZ2l0IGEv YmxvY2svYmlvLmMgYi9ibG9jay9iaW8uYwppbmRleCAyYTI3MmNkYTZkZmEuLjM5MDc3N2E3NjQ2 OCAxMDA2NDQKLS0tIGEvYmxvY2svYmlvLmMKKysrIGIvYmxvY2svYmlvLmMKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KICNpbmNsdWRlIDxsaW51eC9jZ3Jv dXAuaD4KICNpbmNsdWRlIDxsaW51eC9ibGstY2dyb3VwLmg+CisjaW5jbHVkZSA8bGludXgvYmxr LWNyeXB0by5oPgogCiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL2Jsb2NrLmg+CiAjaW5jbHVkZSAi YmxrLmgiCkBAIC0xODMyLDYgKzE4MzMsMTAgQEAgdm9pZCBiaW9fZW5kaW8oc3RydWN0IGJpbyAq YmlvKQogYWdhaW46CiAJaWYgKCFiaW9fcmVtYWluaW5nX2RvbmUoYmlvKSkKIAkJcmV0dXJuOwor CisJaWYgKCFibGtfY3J5cHRvX2VuZGlvKGJpbykpCisJCXJldHVybjsKKwogCWlmICghYmlvX2lu dGVncml0eV9lbmRpbyhiaW8pKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1j b3JlLmMgYi9ibG9jay9ibGstY29yZS5jCmluZGV4IDgzNDBmNjk2NzBkOC4uYWVjNGRhOGMyN2Zh IDEwMDY0NAotLS0gYS9ibG9jay9ibGstY29yZS5jCisrKyBiL2Jsb2NrL2Jsay1jb3JlLmMKQEAg LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9ibGstY2dyb3VwLmg+CiAjaW5jbHVkZSA8 bGludXgvZGVidWdmcy5oPgogI2luY2x1ZGUgPGxpbnV4L2JwZi5oPgorI2luY2x1ZGUgPGxpbnV4 L2Jsay1jcnlwdG8uaD4KIAogI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCiAjaW5jbHVkZSA8 dHJhY2UvZXZlbnRzL2Jsb2NrLmg+CkBAIC0xMDE4LDcgKzEwMTksOSBAQCBibGtfcWNfdCBnZW5l cmljX21ha2VfcmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8pCiAJCQkvKiBDcmVhdGUgYSBmcmVzaCBi aW9fbGlzdCBmb3IgYWxsIHN1Ym9yZGluYXRlIHJlcXVlc3RzICovCiAJCQliaW9fbGlzdF9vbl9z dGFja1sxXSA9IGJpb19saXN0X29uX3N0YWNrWzBdOwogCQkJYmlvX2xpc3RfaW5pdCgmYmlvX2xp c3Rfb25fc3RhY2tbMF0pOwotCQkJcmV0ID0gcS0+bWFrZV9yZXF1ZXN0X2ZuKHEsIGJpbyk7CisK KwkJCWlmICghYmxrX2NyeXB0b19zdWJtaXRfYmlvKCZiaW8pKQorCQkJCXJldCA9IHEtPm1ha2Vf cmVxdWVzdF9mbihxLCBiaW8pOwogCiAJCQlibGtfcXVldWVfZXhpdChxKTsKIApAQCAtMTA3MSw2 ICsxMDc0LDkgQEAgYmxrX3FjX3QgZGlyZWN0X21ha2VfcmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8p CiAJaWYgKCFnZW5lcmljX21ha2VfcmVxdWVzdF9jaGVja3MoYmlvKSkKIAkJcmV0dXJuIEJMS19R Q19UX05PTkU7CiAKKwlpZiAoYmxrX2NyeXB0b19zdWJtaXRfYmlvKCZiaW8pKQorCQlyZXR1cm4g QkxLX1FDX1RfTk9ORTsKKwogCWlmICh1bmxpa2VseShibGtfcXVldWVfZW50ZXIocSwgbm93YWl0 ID8gQkxLX01RX1JFUV9OT1dBSVQgOiAwKSkpIHsKIAkJaWYgKG5vd2FpdCAmJiAhYmxrX3F1ZXVl X2R5aW5nKHEpKQogCQkJYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0FHQUlOOwpAQCAtMTc1MCw1 ICsxNzU2LDggQEAgaW50IF9faW5pdCBibGtfZGV2X2luaXQodm9pZCkKIAlibGtfZGVidWdmc19y b290ID0gZGVidWdmc19jcmVhdGVfZGlyKCJibG9jayIsIE5VTEwpOwogI2VuZGlmCiAKKwlpZiAo YmxrX2NyeXB0b19pbml0KCkgPCAwKQorCQlwYW5pYygiRmFpbGVkIHRvIGluaXQgYmxrLWNyeXB0 b1xuIik7CisKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jcnlwdG8uYyBi L2Jsb2NrL2Jsay1jcnlwdG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmY0MWZiNzgxOWFlOQotLS0gL2Rldi9udWxsCisrKyBiL2Jsb2NrL2Jsay1jcnlwdG8uYwpA QCAtMCwwICsxLDU4NSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8q CisgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCisgKi8KKyNpbmNsdWRlIDxsaW51eC9ibGst Y3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgva2V5c2xvdC1tYW5hZ2VyLmg+CisjaW5jbHVkZSA8 bGludXgvbWVtcG9vbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Jsay1jZ3JvdXAuaD4KKyNpbmNsdWRl IDxjcnlwdG8vc2tjaXBoZXIuaD4KKyNpbmNsdWRlIDxjcnlwdG8vYWxnYXBpLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisKK3N0cnVjdCBibGtfY3J5cHRfbW9kZSB7CisJY29uc3QgY2hh ciAqY2lwaGVyX3N0cjsKKwlzaXplX3Qga2V5c2l6ZTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYmxrX2NyeXB0X21vZGUgYmxrX2NyeXB0X21vZGVzW10gPSB7CisJW0JMS19FTkNSWVBUSU9O X01PREVfQUVTXzI1Nl9YVFNdID0geworCQkuY2lwaGVyX3N0ciA9ICJ4dHMoYWVzKSIsCisJCS5r ZXlzaXplID0gNjQsCisJfSwKK307CisKKyNkZWZpbmUgQkxLX0NSWVBUT19NQVhfS0VZX1NJWkUg NjQKKy8qIFRPRE86IERvIHdlIHdhbnQgdG8gbWFrZSB0aGlzIHVzZXIgY29uZmlndXJhYmxlIHNv bWVob3c/ICovCitzdGF0aWMgaW50IGJsa19jcnlwdG9fbnVtX2tleXNsb3RzID0gMTAwOworCitz dGF0aWMgc3RydWN0IGJsa19jcnlwdG9fa2V5c2xvdCB7CisJc3RydWN0IGNyeXB0b19za2NpcGhl ciAqdGZtOworCWVudW0gYmxrX2NyeXB0X21vZGVfbnVtIGNyeXB0X21vZGU7CisJdTgga2V5W0JM S19DUllQVE9fTUFYX0tFWV9TSVpFXTsKK30gKmJsa19jcnlwdG9fa2V5c2xvdHM7CisKK3N0cnVj dCB3b3JrX21lbSB7CisJc3RydWN0IHdvcmtfc3RydWN0IGNyeXB0b193b3JrOworCXN0cnVjdCBi aW8gKmJpbzsKK307CisKK3N0YXRpYyBzdHJ1Y3Qga2V5c2xvdF9tYW5hZ2VyICpibGtfY3J5cHRv X2tzbTsKK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqYmxrX2NyeXB0b193cTsKK3N0 YXRpYyBtZW1wb29sX3QgKmJsa19jcnlwdG9fcGFnZV9wb29sOworc3RhdGljIHN0cnVjdCBrbWVt X2NhY2hlICpibGtfY3J5cHRvX3dvcmtfbWVtX2NhY2hlOworCitzdGF0aWMgdW5zaWduZWQgaW50 IG51bV9wcmVhbGxvY19ib3VuY2VfcGcgPSAzMjsKKworYm9vbCBiaW9fY3J5cHRfc3doYW5kbGVk KHN0cnVjdCBiaW8gKmJpbykKK3sKKwlyZXR1cm4gYmlvX2lzX2VuY3J5cHRlZChiaW8pICYmCisJ ICAgICAgIGJpby0+YmlfY3J5cHRfY29udGV4dC0+cHJvY2Vzc2luZ19rc20gPT0gYmxrX2NyeXB0 b19rc207Cit9CisKK3N0YXRpYyB2b2lkIGV2aWN0X2tleXNsb3QodW5zaWduZWQgaW50IHNsb3Qp Cit7CisJc3RydWN0IGJsa19jcnlwdG9fa2V5c2xvdCAqc2xvdHAgPSAmYmxrX2NyeXB0b19rZXlz bG90c1tzbG90XTsKKworCWNyeXB0b19mcmVlX3NrY2lwaGVyKHNsb3RwLT50Zm0pOworCXNsb3Rw LT50Zm0gPSBOVUxMOworCW1lbXplcm9fZXhwbGljaXQoc2xvdHAtPmtleSwgQkxLX0NSWVBUT19N QVhfS0VZX1NJWkUpOworfQorCisvKiBUT0RPOiBoYW5kbGUgbW9kZXMgdGhhdCBuZWVkIGVzc2l2 ICovCitzdGF0aWMgaW50IGJsa19jcnlwdG9fa2V5c2xvdF9wcm9ncmFtKHZvaWQgKnByaXYsIGNv bnN0IHU4ICprZXksCisJCQkJICAgICAgZW51bSBibGtfY3J5cHRfbW9kZV9udW0gY3J5cHRfbW9k ZSwKKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgZGF0YV91bml0X3NpemUsCisJCQkJICAgICAgdW5z aWduZWQgaW50IHNsb3QpCit7CisJc3RydWN0IGJsa19jcnlwdG9fa2V5c2xvdCAqc2xvdHAgPSAm YmxrX2NyeXB0b19rZXlzbG90c1tzbG90XTsKKwlzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0g PSBzbG90cC0+dGZtOworCWNvbnN0IHN0cnVjdCBibGtfY3J5cHRfbW9kZSAqbW9kZSA9ICZibGtf Y3J5cHRfbW9kZXNbY3J5cHRfbW9kZV07CisJc2l6ZV90IGtleXNpemUgPSBtb2RlLT5rZXlzaXpl OworCWludCBlcnI7CisKKwlpZiAoY3J5cHRfbW9kZSAhPSBzbG90cC0+Y3J5cHRfbW9kZSB8fCAh dGZtKSB7CisJCWV2aWN0X2tleXNsb3Qoc2xvdCk7CisJCXRmbSA9IGNyeXB0b19hbGxvY19za2Np cGhlcigKKwkJCW1vZGUtPmNpcGhlcl9zdHIsIDAsIDApOworCQlpZiAoSVNfRVJSKHRmbSkpCisJ CQlyZXR1cm4gUFRSX0VSUih0Zm0pOworCisJCWNyeXB0b19za2NpcGhlcl9zZXRfZmxhZ3ModGZt LAorCQkJCQkgIENSWVBUT19URk1fUkVRX0ZPUkJJRF9XRUFLX0tFWVMpOworCQlzbG90cC0+Y3J5 cHRfbW9kZSA9IGNyeXB0X21vZGU7CisJCXNsb3RwLT50Zm0gPSB0Zm07CisJfQorCisJZXJyID0g Y3J5cHRvX3NrY2lwaGVyX3NldGtleSh0Zm0sIGtleSwga2V5c2l6ZSk7CisKKwlpZiAoZXJyKSB7 CisJCWV2aWN0X2tleXNsb3Qoc2xvdCk7CisJCXJldHVybiBlcnI7CisJfQorCisJbWVtY3B5KHNs b3RwLT5rZXksIGtleSwga2V5c2l6ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBi bGtfY3J5cHRvX2tleXNsb3RfZXZpY3Qodm9pZCAqcHJpdiwgY29uc3QgdTggKmtleSwKKwkJCQkg ICAgZW51bSBibGtfY3J5cHRfbW9kZV9udW0gY3J5cHRfbW9kZSwKKwkJCQkgICAgdW5zaWduZWQg aW50IGRhdGFfdW5pdF9zaXplLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgc2xvdCkKK3sKKwlldmlj dF9rZXlzbG90KHNsb3QpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJsa19jcnlwdG9f a2V5c2xvdF9maW5kKHZvaWQgKnByaXYsCisJCQkJICAgY29uc3QgdTggKmtleSwKKwkJCQkgICBl bnVtIGJsa19jcnlwdF9tb2RlX251bSBjcnlwdF9tb2RlLAorCQkJCSAgIHVuc2lnbmVkIGludCBk YXRhX3VuaXRfc2l6ZV9ieXRlcykKK3sKKwlpbnQgc2xvdDsKKwljb25zdCBzaXplX3Qga2V5c2l6 ZSA9IGJsa19jcnlwdF9tb2Rlc1tjcnlwdF9tb2RlXS5rZXlzaXplOworCisJLyogVE9ETzogaGFz aG1hcD8gKi8KKwlmb3IgKHNsb3QgPSAwOyBzbG90IDwgYmxrX2NyeXB0b19udW1fa2V5c2xvdHM7 IHNsb3QrKykgeworCQlpZiAoYmxrX2NyeXB0b19rZXlzbG90c1tzbG90XS5jcnlwdF9tb2RlID09 IGNyeXB0X21vZGUgJiYKKwkJICAgICFjcnlwdG9fbWVtbmVxKGJsa19jcnlwdG9fa2V5c2xvdHNb c2xvdF0ua2V5LCBrZXksIGtleXNpemUpKQorCQkJcmV0dXJuIHNsb3Q7CisJfQorCisJcmV0dXJu IC1FTk9LRVk7Cit9CisKK3N0YXRpYyBib29sIGJsa19jcnlwdF9tb2RlX3N1cHBvcnRlZCh2b2lk ICpwcml2LAorCQkJCSAgICAgZW51bSBibGtfY3J5cHRfbW9kZV9udW0gY3J5cHRfbW9kZSwKKwkJ CQkgICAgIHVuc2lnbmVkIGludCBkYXRhX3VuaXRfc2l6ZSkKK3sKKwkvKiBBbGwgYmxrX2NyeXB0 X21vZGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgc29mdHdhcmUgZmFsbGJhY2suICovCisJcmV0 dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qga2V5c2xvdF9tZ210X2xsX29wcyBi bGtfY3J5cHRvX2tzbV9sbF9vcHMgPSB7CisJLmtleXNsb3RfcHJvZ3JhbQk9IGJsa19jcnlwdG9f a2V5c2xvdF9wcm9ncmFtLAorCS5rZXlzbG90X2V2aWN0CQk9IGJsa19jcnlwdG9fa2V5c2xvdF9l dmljdCwKKwkua2V5c2xvdF9maW5kCQk9IGJsa19jcnlwdG9fa2V5c2xvdF9maW5kLAorCS5jcnlw dF9tb2RlX3N1cHBvcnRlZAk9IGJsa19jcnlwdF9tb2RlX3N1cHBvcnRlZCwKK307CisKK3N0YXRp YyB2b2lkIGJsa19jcnlwdG9fZW5jcnlwdF9lbmRpbyhzdHJ1Y3QgYmlvICplbmNfYmlvKQorewor CXN0cnVjdCBiaW8gKnNyY19iaW8gPSBlbmNfYmlvLT5iaV9wcml2YXRlOworCXN0cnVjdCBiaW9f dmVjICplbmNfYnZlYywgKmVuY19idmVjX2VuZDsKKworCWVuY19idmVjID0gZW5jX2Jpby0+Ymlf aW9fdmVjOworCWVuY19idmVjX2VuZCA9IGVuY19idmVjICsgZW5jX2Jpby0+YmlfdmNudDsKKwlm b3IgKDsgZW5jX2J2ZWMgIT0gZW5jX2J2ZWNfZW5kOyBlbmNfYnZlYysrKQorCQltZW1wb29sX2Zy ZWUoZW5jX2J2ZWMtPmJ2X3BhZ2UsIGJsa19jcnlwdG9fcGFnZV9wb29sKTsKKworCXNyY19iaW8t PmJpX3N0YXR1cyA9IGVuY19iaW8tPmJpX3N0YXR1czsKKworCWJpb19wdXQoZW5jX2Jpbyk7CisJ YmlvX2VuZGlvKHNyY19iaW8pOworfQorCitzdGF0aWMgc3RydWN0IGJpbyAqYmxrX2NyeXB0b19j bG9uZV9iaW8oc3RydWN0IGJpbyAqYmlvX3NyYykKK3sKKwlzdHJ1Y3QgYnZlY19pdGVyIGl0ZXI7 CisJc3RydWN0IGJpb192ZWMgYnY7CisJc3RydWN0IGJpbyAqYmlvOworCisJYmlvID0gYmlvX2Fs bG9jX2Jpb3NldChHRlBfTk9JTywgYmlvX3NlZ21lbnRzKGJpb19zcmMpLCBOVUxMKTsKKwlpZiAo IWJpbykKKwkJcmV0dXJuIE5VTEw7CisJYmlvLT5iaV9kaXNrCQk9IGJpb19zcmMtPmJpX2Rpc2s7 CisJYmlvLT5iaV9vcGYJCT0gYmlvX3NyYy0+Ymlfb3BmOworCWJpby0+YmlfaW9wcmlvCQk9IGJp b19zcmMtPmJpX2lvcHJpbzsKKwliaW8tPmJpX3dyaXRlX2hpbnQJPSBiaW9fc3JjLT5iaV93cml0 ZV9oaW50OworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3Nl Y3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZQk9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2l6ZTsK KworCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2LCBiaW9fc3JjLCBpdGVyKQorCQliaW8tPmJpX2lv X3ZlY1tiaW8tPmJpX3ZjbnQrK10gPSBidjsKKworCWlmIChiaW9faW50ZWdyaXR5KGJpb19zcmMp KSB7CisJCWludCByZXQ7CisKKwkJcmV0ID0gYmlvX2ludGVncml0eV9jbG9uZShiaW8sIGJpb19z cmMsIEdGUF9OT0lPKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWJpb19wdXQoYmlvKTsKKwkJCXJl dHVybiBOVUxMOworCQl9CisJfQorCisJYmlvX2Nsb25lX2Jsa2dfYXNzb2NpYXRpb24oYmlvLCBi aW9fc3JjKTsKKwlibGtjZ19iaW9faXNzdWVfaW5pdChiaW8pOworCisJcmV0dXJuIGJpbzsKK30K Kworc3RhdGljIGludCBibGtfY3J5cHRvX2VuY3J5cHRfYmlvKHN0cnVjdCBiaW8gKipiaW9fcHRy KQoreworCXN0cnVjdCBiaW8gKnNyY19iaW8gPSAqYmlvX3B0cjsKKwlpbnQgc2xvdDsKKwlzdHJ1 Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqY2lwaF9yZXEgPSBOVUxMOworCURFQ0xBUkVfQ1JZUFRPX1dB SVQod2FpdCk7CisJc3RydWN0IGJpb192ZWMgYnY7CisJc3RydWN0IGJ2ZWNfaXRlciBpdGVyOwor CWludCBlcnIgPSAwOworCXU2NCBjdXJyX2R1bjsKKwl1bmlvbiB7CisJCV9fbGU2NCBkdW47CisJ CXU4IGJ5dGVzWzE2XTsKKwl9IGl2OworCXN0cnVjdCBzY2F0dGVybGlzdCBzcmMsIGRzdDsKKwlz dHJ1Y3QgYmlvICplbmNfYmlvOworCXN0cnVjdCBiaW9fdmVjICplbmNfYnZlYzsKKwlpbnQgaSwg ajsKKwl1bnNpZ25lZCBpbnQgbnVtX3NlY3RvcnM7CisJaW50IGRhdGFfdW5pdF9zaXplOworCisJ LyogU3BsaXQgdGhlIGJpbyBpZiBpdCdzIHRvbyBiaWcgZm9yIHNpbmdsZSBwYWdlIGJ2ZWMgKi8K KwlpID0gMDsKKwludW1fc2VjdG9ycyA9IDA7CisJZGF0YV91bml0X3NpemUgPSAxIDw8IHNyY19i aW8tPmJpX2NyeXB0X2NvbnRleHQtPmRhdGFfdW5pdF9zaXplX2JpdHM7CisJYmlvX2Zvcl9lYWNo X3NlZ21lbnQoYnYsIHNyY19iaW8sIGl0ZXIpIHsKKwkJbnVtX3NlY3RvcnMgKz0gYnYuYnZfbGVu ID4+IDk7CisJCWlmIChidi5idl9sZW4gJSBkYXRhX3VuaXRfc2l6ZSAhPSAwKSB7CisJCQlzcmNf YmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwkJ aWYgKCsraSA9PSBCSU9fTUFYX1BBR0VTKQorCQkJYnJlYWs7CisJfQorCWlmIChudW1fc2VjdG9y cyA8IGJpb19zZWN0b3JzKHNyY19iaW8pKSB7CisJCXN0cnVjdCBiaW8gKnNwbGl0X2JpbzsKKwor CQlzcGxpdF9iaW8gPSBiaW9fc3BsaXQoc3JjX2JpbywgbnVtX3NlY3RvcnMsIEdGUF9OT0lPLCBO VUxMKTsKKwkJaWYgKCFzcGxpdF9iaW8pIHsKKwkJCXNyY19iaW8tPmJpX3N0YXR1cyA9IEJMS19T VFNfUkVTT1VSQ0U7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQorCQliaW9fY2hhaW4oc3BsaXRf YmlvLCBzcmNfYmlvKTsKKwkJZ2VuZXJpY19tYWtlX3JlcXVlc3Qoc3JjX2Jpbyk7CisJCSpiaW9f cHRyID0gc3BsaXRfYmlvOworCQlzcmNfYmlvID0gKmJpb19wdHI7CisJfQorCisJZW5jX2JpbyA9 IGJsa19jcnlwdG9fY2xvbmVfYmlvKHNyY19iaW8pOworCWlmICghZW5jX2JpbykgeworCQlzcmNf YmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX1JFU09VUkNFOworCQlyZXR1cm4gLUVOT01FTTsKKwl9 CisKKwllcnIgPSBiaW9fY3J5cHRfY3R4X2FjcXVpcmVfa2V5c2xvdChzcmNfYmlvLCBibGtfY3J5 cHRvX2tzbSk7CisJaWYgKGVycikgeworCQlzcmNfYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0lP RVJSOworCQliaW9fcHV0KGVuY19iaW8pOworCQlyZXR1cm4gZXJyOworCX0KKwlzbG90ID0gYmlv X2NyeXB0X2dldF9rZXlzbG90KHNyY19iaW8pOworCisJY2lwaF9yZXEgPSBza2NpcGhlcl9yZXF1 ZXN0X2FsbG9jKGJsa19jcnlwdG9fa2V5c2xvdHNbc2xvdF0udGZtLAorCQkJCQkgIEdGUF9OT0lP KTsKKwlpZiAoIWNpcGhfcmVxKSB7CisJCXNyY19iaW8tPmJpX3N0YXR1cyA9IEJMS19TVFNfUkVT T1VSQ0U7CisJCWVyciA9IC1FTk9NRU07CisJCWJpb19wdXQoZW5jX2Jpbyk7CisJCWdvdG8gb3V0 X3JlbGVhc2Vfa2V5c2xvdDsKKwl9CisKKwlza2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayhj aXBoX3JlcSwKKwkJCQkgICAgICBDUllQVE9fVEZNX1JFUV9NQVlfQkFDS0xPRyB8CisJCQkJICAg ICAgQ1JZUFRPX1RGTV9SRVFfTUFZX1NMRUVQLAorCQkJCSAgICAgIGNyeXB0b19yZXFfZG9uZSwg JndhaXQpOworCisJY3Vycl9kdW4gPSBiaW9fY3J5cHRfZGF0YV91bml0X251bShzcmNfYmlvKTsK KwlzZ19pbml0X3RhYmxlKCZzcmMsIDEpOworCXNnX2luaXRfdGFibGUoJmRzdCwgMSk7CisJZm9y IChpID0gMCwgZW5jX2J2ZWMgPSBlbmNfYmlvLT5iaV9pb192ZWM7IGkgPCBlbmNfYmlvLT5iaV92 Y250OworCSAgICAgZW5jX2J2ZWMrKywgaSsrKSB7CisJCXN0cnVjdCBwYWdlICpwYWdlID0gZW5j X2J2ZWMtPmJ2X3BhZ2U7CisJCXN0cnVjdCBwYWdlICpjaXBoZXJ0ZXh0X3BhZ2UgPQorCQkJbWVt cG9vbF9hbGxvYyhibGtfY3J5cHRvX3BhZ2VfcG9vbCwgR0ZQX05PSU8pOworCisJCWVuY19idmVj LT5idl9wYWdlID0gY2lwaGVydGV4dF9wYWdlOworCisJCWlmICghY2lwaGVydGV4dF9wYWdlKQor CQkJZ290byBub19tZW1fZm9yX2NpcGhfcGFnZTsKKworCQlmb3IgKGogPSAwOyBqIDwgZW5jX2J2 ZWMtPmJ2X2xlbiAvIGRhdGFfdW5pdF9zaXplOyBqKyspIHsKKwkJCW1lbXNldCgmaXYsIDAsIHNp emVvZihpdikpOworCQkJaXYuZHVuID0gY3B1X3RvX2xlNjQoY3Vycl9kdW4pOworCisJCQlzZ19z ZXRfcGFnZSgmc3JjLCBwYWdlLCBkYXRhX3VuaXRfc2l6ZSwKKwkJCQkgICAgZW5jX2J2ZWMtPmJ2 X29mZnNldCArIGogKiBkYXRhX3VuaXRfc2l6ZSk7CisJCQlzZ19zZXRfcGFnZSgmZHN0LCBjaXBo ZXJ0ZXh0X3BhZ2UsIGRhdGFfdW5pdF9zaXplLAorCQkJCSAgICBlbmNfYnZlYy0+YnZfb2Zmc2V0 ICsgaiAqIGRhdGFfdW5pdF9zaXplKTsKKworCQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQo Y2lwaF9yZXEsICZzcmMsICZkc3QsCisJCQkJCQkgICBkYXRhX3VuaXRfc2l6ZSwgaXYuYnl0ZXMp OworCQkJZXJyID0gY3J5cHRvX3dhaXRfcmVxKGNyeXB0b19za2NpcGhlcl9lbmNyeXB0KGNpcGhf cmVxKSwKKwkJCQkJICAgICAgJndhaXQpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG5vX21lbV9m b3JfY2lwaF9wYWdlOworCQkJY3Vycl9kdW4rKzsKKwkJfQorCQljb250aW51ZTsKK25vX21lbV9m b3JfY2lwaF9wYWdlOgorCQllcnIgPSAtRU5PTUVNOworCQlmb3IgKGogPSBpIC0gMTsgaiA+PSAw OyBqLS0pIHsKKwkJCW1lbXBvb2xfZnJlZShlbmNfYmlvLT5iaV9pb192ZWNbal0uYnZfcGFnZSwK KwkJCQkgICAgIGJsa19jcnlwdG9fcGFnZV9wb29sKTsKKwkJfQorCQlzcmNfYmlvLT5iaV9zdGF0 dXMgPSBCTEtfU1RTX1JFU09VUkNFOworCQliaW9fcHV0KGVuY19iaW8pOworCQlnb3RvIG91dF9y ZWxlYXNlX2NpcGhlcjsKKwl9CisKKwllbmNfYmlvLT5iaV9wcml2YXRlID0gc3JjX2JpbzsKKwll bmNfYmlvLT5iaV9lbmRfaW8gPSBibGtfY3J5cHRvX2VuY3J5cHRfZW5kaW87CisKKwkqYmlvX3B0 ciA9IGVuY19iaW87CitvdXRfcmVsZWFzZV9jaXBoZXI6CisJc2tjaXBoZXJfcmVxdWVzdF9mcmVl KGNpcGhfcmVxKTsKK291dF9yZWxlYXNlX2tleXNsb3Q6CisJYmlvX2NyeXB0X2N0eF9yZWxlYXNl X2tleXNsb3Qoc3JjX2Jpbyk7CisJcmV0dXJuIGVycjsKK30KKworLyoKKyAqIFRPRE86IGFzc3Vt cHRpb24gcmlnaHQgbm93IGlzOgorICogZWFjaCBzZWdtZW50IGluIGJpbyBoYXMgbGVuZ3RoIGRp dmlzaWJsZSBieSB0aGUgZGF0YV91bml0X3NpemUKKyAqLworc3RhdGljIHZvaWQgYmxrX2NyeXB0 b19kZWNyeXB0X2JpbyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCit7CisJc3RydWN0IHdvcmtfbWVt ICp3b3JrX21lbSA9CisJCWNvbnRhaW5lcl9vZih3LCBzdHJ1Y3Qgd29ya19tZW0sIGNyeXB0b193 b3JrKTsKKwlzdHJ1Y3QgYmlvICpiaW8gPSB3b3JrX21lbS0+YmlvOworCWludCBzbG90OworCXN0 cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpjaXBoX3JlcTsKKwlERUNMQVJFX0NSWVBUT19XQUlUKHdh aXQpOworCXN0cnVjdCBiaW9fdmVjIGJ2OworCXN0cnVjdCBidmVjX2l0ZXIgaXRlcjsKKwl1NjQg Y3Vycl9kdW47CisJdW5pb24geworCQlfX2xlNjQgZHVuOworCQl1OCBieXRlc1sxNl07CisJfSBp djsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2c7CisJaW50IGVycjsKKwlpbnQgZGF0YV91bml0X3Np emUgPSAxIDw8IGJpby0+YmlfY3J5cHRfY29udGV4dC0+ZGF0YV91bml0X3NpemVfYml0czsKKwlp bnQgaTsKKworCWttZW1fY2FjaGVfZnJlZShibGtfY3J5cHRvX3dvcmtfbWVtX2NhY2hlLCB3b3Jr X21lbSk7CisKKwllcnIgPSBiaW9fY3J5cHRfY3R4X2FjcXVpcmVfa2V5c2xvdChiaW8sIGJsa19j cnlwdG9fa3NtKTsKKwlpZiAoZXJyKSB7CisJCWJpby0+Ymlfc3RhdHVzID0gQkxLX1NUU19SRVNP VVJDRTsKKwkJZ290byBvdXRfbm9fa2V5c2xvdDsKKwl9CisKKwlzbG90ID0gYmlvX2NyeXB0X2dl dF9rZXlzbG90KGJpbyk7CisJY2lwaF9yZXEgPSBza2NpcGhlcl9yZXF1ZXN0X2FsbG9jKGJsa19j cnlwdG9fa2V5c2xvdHNbc2xvdF0udGZtLAorCQkJCQkgIEdGUF9OT0lPKTsKKwlpZiAoIWNpcGhf cmVxKSB7CisJCWJpby0+Ymlfc3RhdHVzID0gQkxLX1NUU19SRVNPVVJDRTsKKwkJZ290byBvdXQ7 CisJfQorCisJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2soY2lwaF9yZXEsCisJCQkJICAg ICAgQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tMT0cgfAorCQkJCSAgICAgIENSWVBUT19URk1fUkVR X01BWV9TTEVFUCwKKwkJCQkgICAgICBjcnlwdG9fcmVxX2RvbmUsICZ3YWl0KTsKKworCWN1cnJf ZHVuID0gYmlvX2NyeXB0X3N3X2RhdGFfdW5pdF9udW0oYmlvKTsKKwlzZ19pbml0X3RhYmxlKCZz ZywgMSk7CisJX19iaW9fZm9yX2VhY2hfc2VnbWVudChidiwgYmlvLCBpdGVyLAorCQkJICAgICAg IGJpby0+YmlfY3J5cHRfY29udGV4dC0+Y3J5cHRfaXRlcikgeworCQlpZiAoYnYuYnZfbGVuICUg ZGF0YV91bml0X3NpemUgIT0gMCkgeworCQkJYmlvLT5iaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJS OworCQkJZXJyID0gLUVJTzsKKwkJCWdvdG8gb3V0OworCQl9CisJCWZvciAoaSA9IDA7IGkgPCBi di5idl9sZW4gLyBkYXRhX3VuaXRfc2l6ZTsgaSsrKSB7CisJCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9 IGJ2LmJ2X3BhZ2U7CisKKwkJCW1lbXNldCgmaXYsIDAsIHNpemVvZihpdikpOworCQkJaXYuZHVu ID0gY3B1X3RvX2xlNjQoY3Vycl9kdW4pOworCisJCQlzZ19zZXRfcGFnZSgmc2csIHBhZ2UsIGRh dGFfdW5pdF9zaXplLAorCQkJCSAgICBidi5idl9vZmZzZXQgKyBpICogZGF0YV91bml0X3NpemUp OworCQkJc2tjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2lwaF9yZXEsICZzZywgJnNnLAorCQkJ CQkJICAgZGF0YV91bml0X3NpemUsIGl2LmJ5dGVzKTsKKwkJCWVyciA9IGNyeXB0b193YWl0X3Jl cShjcnlwdG9fc2tjaXBoZXJfZGVjcnlwdChjaXBoX3JlcSksCisJCQkJCSAgICAgICZ3YWl0KTsK KwkJCWlmIChlcnIpIHsKKwkJCQliaW8tPmJpX3N0YXR1cyA9IEJMS19TVFNfSU9FUlI7CisJCQkJ Z290byBvdXQ7CisJCQl9CisJCQljdXJyX2R1bisrOworCQl9CisJfQorCitvdXQ6CisJc2tjaXBo ZXJfcmVxdWVzdF9mcmVlKGNpcGhfcmVxKTsKKwliaW9fY3J5cHRfY3R4X3JlbGVhc2Vfa2V5c2xv dChiaW8pOworb3V0X25vX2tleXNsb3Q6CisJYmlvX2VuZGlvKGJpbyk7Cit9CisKK3N0YXRpYyB2 b2lkIGJsa19jcnlwdG9fcXVldWVfZGVjcnlwdF9iaW8oc3RydWN0IGJpbyAqYmlvKQoreworCXN0 cnVjdCB3b3JrX21lbSAqd29ya19tZW0gPQorCQlrbWVtX2NhY2hlX3phbGxvYyhibGtfY3J5cHRv X3dvcmtfbWVtX2NhY2hlLCBHRlBfQVRPTUlDKTsKKworCWlmICghd29ya19tZW0pIHsKKwkJYmlv LT5iaV9zdGF0dXMgPSBCTEtfU1RTX1JFU09VUkNFOworCQlyZXR1cm4gYmlvX2VuZGlvKGJpbyk7 CisJfQorCisJSU5JVF9XT1JLKCZ3b3JrX21lbS0+Y3J5cHRvX3dvcmssIGJsa19jcnlwdG9fZGVj cnlwdF9iaW8pOworCXdvcmtfbWVtLT5iaW8gPSBiaW87CisJcXVldWVfd29yayhibGtfY3J5cHRv X3dxLCAmd29ya19tZW0tPmNyeXB0b193b3JrKTsKK30KKworLyoqCisgKiBibGtfY3J5cHRvX3N1 Ym1pdF9iaW8gLSBoYW5kbGUgc3VibWl0dGluZyBiaW8gZm9yIGlubGluZSBlbmNyeXB0aW9uCisg KgorICogQGJpb19wdHI6IHBvaW50ZXIgdG8gb3JpZ2luYWwgYmlvIHBvaW50ZXIKKyAqCisgKiBJ ZiB0aGUgYmlvIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZW5jcnlwdGlvbiBlbmFibGVkIG9yIHRoZSBz dWJtaXR0ZXIgYWxyZWFkeQorICogc3BlY2lmaWVkIGEga2V5c2xvdCBmb3IgdGhlIHRhcmdldCBk ZXZpY2UsIGRvIG5vdGhpbmcuICBFbHNlLCBhIHJhdyBrZXkgbXVzdAorICogaGF2ZSBiZWVuIHBy b3ZpZGVkLCBzbyBhY3F1aXJlIGEgZGV2aWNlIGtleXNsb3QgZm9yIGl0IGlmIHN1cHBvcnRlZC4g IEVsc2UsCisgKiB1c2UgdGhlIHNvZnR3YXJlIGNyeXB0byBmYWxsYmFjay4KKyAqCisgKiBXaGVu IHRoZSBzb2Z0d2FyZSBmYWxsYmFjayBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLCBibGstY3J5cHRv IG1heSBjaG9vc2UgdG8KKyAqIHNwbGl0IHRoZSBiaW8gaW50byAyIC0gb25lIHRoYXQgd2lsbCBj b250aW51ZSB0byBiZSBwcm9jZXNzZWQgYW5kIHRoZSBvdGhlcgorICogdGhhdCB3aWxsIGJlIHJl c3VibWl0dGVkIHZpYSBnZW5lcmljX21ha2VfcmVxdWVzdC4gKmJpb19wdHIgd2lsbCBiZSB1cGRh dGVkCisgKiB0byB0aGUgZmlyc3QgYmlvICh0aGUgb25lIHRoYXQgd2lsbCBjb250aW51ZSB0byBi ZSBwcm9jZXNzZWQpLgorICoKKyAqIFJldHVybjogMCBpZiBiaW8gc3VibWlzc2lvbiBzaG91bGQg Y29udGludWU7IG5vbnplcm8gaWYgYmlvX2VuZGlvKCkgd2FzCisgKiAgICAgICAgYWxyZWFkeSBj YWxsZWQgc28gYmlvIHN1Ym1pc3Npb24gc2hvdWxkIGFib3J0LgorICovCitpbnQgYmxrX2NyeXB0 b19zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKipiaW9fcHRyKQoreworCXN0cnVjdCBiaW8gKmJpbyA9 ICpiaW9fcHRyOworCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOworCWludCBlcnI7CisJc3RydWN0 IGJpb19jcnlwdF9jdHggKmNyeXB0X2N0eDsKKworCWlmICghYmlvX2lzX2VuY3J5cHRlZChiaW8p IHx8ICFiaW9faGFzX2RhdGEoYmlvKSkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFdoZW4gYSBy ZWFkIGJpbyBpcyBtYXJrZWQgZm9yIHN3IGRlY3J5cHRpb24sIGl0cyBiaV9pdGVyIGlzIHNhdmVk CisJICogc28gdGhhdCB3aGVuIHdlIGRlY3J5cHQgdGhlIGJpbyBsYXRlciwgd2Uga25vdyB3aGF0 IHBhcnQgb2YgaXQgd2FzCisJICogbWFya2VkIGZvciBzdyBkZWNyeXB0aW9uICh3aGVuIHRoZSBi aW8gaXMgcGFzc2VkIGRvd24gYWZ0ZXIKKwkgKiBibGtfY3J5cHRvX3N1Ym1pdCBiaW8sIGl0IG1h eSBiZSBzcGxpdCBvciBhZHZhbmNlZCBzbyB3ZSBjYW5ub3QgcmVseQorCSAqIG9uIHRoZSBiaV9p dGVyIHdoaWxlIGRlY3J5cHRpbmcgaW4gYmxrX2NyeXB0b19lbmRpbykKKwkgKi8KKwlpZiAoYmlv X2NyeXB0X3N3aGFuZGxlZChiaW8pKQorCQlyZXR1cm4gMDsKKworCWNyeXB0X2N0eCA9IGJpby0+ YmlfY3J5cHRfY29udGV4dDsKKwlxID0gYmlvLT5iaV9kaXNrLT5xdWV1ZTsKKworCWlmIChiaW9f Y3J5cHRfaGFzX2tleXNsb3QoYmlvKSkgeworCQkvKiBLZXkgYWxyZWFkeSBwcm9ncmFtbWVkIGlu dG8gZGV2aWNlPyAqLworCQlpZiAocS0+a3NtID09IGNyeXB0X2N0eC0+cHJvY2Vzc2luZ19rc20p CisJCQlyZXR1cm4gMDsKKworCQkvKiBOb3BlLCByZWxlYXNlIHRoZSBleGlzdGluZyBrZXlzbG90 LiAqLworCQliaW9fY3J5cHRfY3R4X3JlbGVhc2Vfa2V5c2xvdChiaW8pOworCX0KKworCS8qIEdl dCBkZXZpY2Uga2V5c2xvdCBpZiBzdXBwb3J0ZWQgKi8KKwlpZiAocS0+a3NtKSB7CisJCWVyciA9 IGJpb19jcnlwdF9jdHhfYWNxdWlyZV9rZXlzbG90KGJpbywgcS0+a3NtKTsKKwkJaWYgKCFlcnIp IHsKKwkJCXByX3dhcm5fb25jZSgiYmxrLWNyeXB0bzogZmFpbGVkIHRvIGFjcXVpcmUga2V5c2xv dCBmb3IgJXMgKGVycj0lZCkuICBGYWxsaW5nIGJhY2sgdG8gc29mdHdhcmUgY3J5cHRvLlxuIiwK KwkJCQkgICAgIGJpby0+YmlfZGlzay0+ZGlza19uYW1lLCBlcnIpOworCQkJcmV0dXJuIDA7CisJ CX0KKwl9CisKKwkvKiBGYWxsYmFjayB0byBzb2Z0d2FyZSBjcnlwdG8gKi8KKwlpZiAoYmlvX2Rh dGFfZGlyKGJpbykgPT0gV1JJVEUpIHsKKwkJLyogRW5jcnlwdCB0aGUgZGF0YSBub3cgKi8KKwkJ ZXJyID0gYmxrX2NyeXB0b19lbmNyeXB0X2JpbyhiaW9fcHRyKTsKKwkJaWYgKGVycikKKwkJCWdv dG8gb3V0X2VuY3J5cHRfZXJyOworCX0gZWxzZSB7CisJCS8qIE1hcmsgYmlvIGFzIHN3aGFuZGxl ZCAqLworCQliaW8tPmJpX2NyeXB0X2NvbnRleHQtPnByb2Nlc3Npbmdfa3NtID0gYmxrX2NyeXB0 b19rc207CisJCWJpby0+YmlfY3J5cHRfY29udGV4dC0+Y3J5cHRfaXRlciA9IGJpby0+YmlfaXRl cjsKKwkJYmlvLT5iaV9jcnlwdF9jb250ZXh0LT5zd19kYXRhX3VuaXRfbnVtID0KKwkJCQliaW8t PmJpX2NyeXB0X2NvbnRleHQtPmRhdGFfdW5pdF9udW07CisJfQorCXJldHVybiAwOworb3V0X2Vu Y3J5cHRfZXJyOgorCWJpb19lbmRpbyhiaW8pOworCXJldHVybiBlcnI7Cit9CisKKy8qKgorICog YmxrX2NyeXB0b19lbmRpbyAtIGNsZWFuIHVwIGJpbyB3LnIudCBpbmxpbmUgZW5jcnlwdGlvbiBk dXJpbmcgYmlvX2VuZGlvCisgKgorICogQGJpbyAtIHRoZSBiaW8gdG8gY2xlYW4gdXAKKyAqCisg KiBJZiBibGtfY3J5cHRvX3N1Ym1pdF9iaW8gZGVjaWRlZCB0byBmYWxsYmFjayB0byBzb2Z0d2Fy ZSBjcnlwdG8gZm9yIHRoaXMKKyAqIGJpbywgd2UgcXVldWUgdGhlIGJpbyBmb3IgZGVjcnlwdGlv biBpbnRvIGEgd29ya3F1ZXVlIGFuZCByZXR1cm4gZmFsc2UsCisgKiBhbmQgY2FsbCBiaW9fZW5k aW8oYmlvKSBhdCBhIGxhdGVyIHRpbWUgKGFmdGVyIHRoZSBiaW8gaGFzIGJlZW4gZGVjcnlwdGVk KS4KKyAqCisgKiBJZiB0aGUgYmlvIGlzIG5vdCB0byBiZSBkZWNyeXB0ZWQgaW4gc29mdHdhcmUs IHRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgdGhlCisgKiByZWZlcmVuY2UgdG8gdGhlIGtleXNsb3Qg dGhhdCBibGtfY3J5cHRvX3N1Ym1pdF9iaW8gZ290LgorICoKKyAqIFJldHVybjogdHJ1ZSBpZiBi aW9fZW5kaW8gc2hvdWxkIGNvbnRpbnVlOyBmYWxzZSBvdGhlcndpc2UgKGJpb19lbmRpbyB3aWxs CisgKiBiZSBjYWxsZWQgYWdhaW4gd2hlbiBiaW8gaGFzIGJlZW4gZGVjcnlwdGVkKS4KKyAqLwor Ym9vbCBibGtfY3J5cHRvX2VuZGlvKHN0cnVjdCBiaW8gKmJpbykKK3sKKwlpZiAoYmlvX2NyeXB0 X3N3aGFuZGxlZChiaW8pKSB7CisJCS8qCisJCSAqIFRoZSBvbmx5IGJpb3MgdGhhdCBhcmUgc3do YW5kbGVkIHdoZW4gdGhleSByZWFjaCBoZXJlCisJCSAqIGFyZSB0aG9zZSB3aXRoIGJpb19kYXRh X2RpcihiaW8pID09IFJFQUQsIHNpbmNlIFdSSVRFCisJCSAqIGJpb3MgdGhhdCBhcmUgZW5jcnlw dGVkIGJ5IHNvZnR3YXJlIGZhbGxiYWNrIGFyZSBoYW5kbGVkCisJCSAqIGJ5IGJsa19jcnlwdG9f ZW5jcnlwdF9lbmRpby4KKwkJICovCisJCWJsa19jcnlwdG9fcXVldWVfZGVjcnlwdF9iaW8oYmlv KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChiaW9faXNfZW5jcnlwdGVkKGJpbykgJiYg YmlvX2NyeXB0X2hhc19rZXlzbG90KGJpbykpCisJCWJpb19jcnlwdF9jdHhfcmVsZWFzZV9rZXlz bG90KGJpbyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworaW50IF9faW5pdCBibGtfY3J5cHRvX2lu aXQodm9pZCkKK3sKKwlibGtfY3J5cHRvX2tzbSA9IGtleXNsb3RfbWFuYWdlcl9jcmVhdGUoYmxr X2NyeXB0b19udW1fa2V5c2xvdHMsCisJCQkJCQkmYmxrX2NyeXB0b19rc21fbGxfb3BzLAorCQkJ CQkJTlVMTCk7CisJaWYgKCFibGtfY3J5cHRvX2tzbSkKKwkJZ290byBvdXRfa3NtOworCisJYmxr X2NyeXB0b193cSA9IGFsbG9jX3dvcmtxdWV1ZSgiYmxrX2NyeXB0b193cSIsCisJCQkJCVdRX1VO Qk9VTkQgfCBXUV9ISUdIUFJJIHwKKwkJCQkJV1FfTUVNX1JFQ0xBSU0sCisJCQkJCW51bV9vbmxp bmVfY3B1cygpKTsKKwlpZiAoIWJsa19jcnlwdG9fd3EpCisJCWdvdG8gb3V0X3dxOworCisJYmxr X2NyeXB0b19rZXlzbG90cyA9IGtjYWxsb2MoYmxrX2NyeXB0b19udW1fa2V5c2xvdHMsCisJCQkJ ICAgICAgc2l6ZW9mKCpibGtfY3J5cHRvX2tleXNsb3RzKSwKKwkJCQkgICAgICBHRlBfS0VSTkVM KTsKKwlpZiAoIWJsa19jcnlwdG9fa2V5c2xvdHMpCisJCWdvdG8gb3V0X2Jsa19jcnlwdG9fa2V5 c2xvdHM7CisKKwlibGtfY3J5cHRvX3BhZ2VfcG9vbCA9CisJCW1lbXBvb2xfY3JlYXRlX3BhZ2Vf cG9vbChudW1fcHJlYWxsb2NfYm91bmNlX3BnLCAwKTsKKwlpZiAoIWJsa19jcnlwdG9fcGFnZV9w b29sKQorCQlnb3RvIG91dF9ib3VuY2VfcG9vbDsKKworCWJsa19jcnlwdG9fd29ya19tZW1fY2Fj aGUgPSBLTUVNX0NBQ0hFKHdvcmtfbWVtLCBTTEFCX1JFQ0xBSU1fQUNDT1VOVCk7CisJaWYgKCFi bGtfY3J5cHRvX3dvcmtfbWVtX2NhY2hlKQorCQlnb3RvIG91dF93b3JrX21lbV9jYWNoZTsKKwor CXJldHVybiAwOworCitvdXRfd29ya19tZW1fY2FjaGU6CisJbWVtcG9vbF9kZXN0cm95KGJsa19j cnlwdG9fcGFnZV9wb29sKTsKKwlibGtfY3J5cHRvX3BhZ2VfcG9vbCA9IE5VTEw7CitvdXRfYm91 bmNlX3Bvb2w6CisJa3pmcmVlKGJsa19jcnlwdG9fa2V5c2xvdHMpOworCWJsa19jcnlwdG9fa2V5 c2xvdHMgPSBOVUxMOworb3V0X2Jsa19jcnlwdG9fa2V5c2xvdHM6CisJZGVzdHJveV93b3JrcXVl dWUoYmxrX2NyeXB0b193cSk7CisJYmxrX2NyeXB0b193cSA9IE5VTEw7CitvdXRfd3E6CisJa2V5 c2xvdF9tYW5hZ2VyX2Rlc3Ryb3koYmxrX2NyeXB0b19rc20pOworCWJsa19jcnlwdG9fa3NtID0g TlVMTDsKK291dF9rc206CisJcHJfd2FybigiTm8gbWVtb3J5IGZvciBibGstY3J5cHRvIHNvZnR3 YXJlIGZhbGxiYWNrLiIpOworCXJldHVybiAtRU5PTUVNOworfQorCittb2R1bGVfcGFyYW0oYmxr X2NyeXB0b19udW1fa2V5c2xvdHMsIGludCwgMCk7CitNT0RVTEVfUEFSTV9ERVNDKGJsa19jcnlw dG9fbnVtX2tleXNsb3RzLAorCQkgIk51bWJlciBvZiBrZXlzbG90cyBmb3Igc29mdHdhcmUgZmFs bGJhY2sgaW4gYmxrLWNyeXB0by4iKTsKK21vZHVsZV9wYXJhbShudW1fcHJlYWxsb2NfYm91bmNl X3BnLCB1aW50LCAwKTsKK01PRFVMRV9QQVJNX0RFU0MobnVtX3ByZWFsbG9jX2JvdW5jZV9wZywK KwkiTnVtYmVyIG9mIHByZWFsbG9jYXRlZCBib3VuY2UgcGFnZXMgZm9yIGJsay1jcnlwdG8gdG8g dXNlIGR1cmluZyBzb2Z0d2FyZSBmYWxsYmFjayBlbmNyeXB0aW9uIik7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2Jpby5oIGIvaW5jbHVkZS9saW51eC9iaW8uaAppbmRleCA0ZTY2NGQ2NDQx ZDUuLjY2YWQxNTA4OTExZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW8uaAorKysgYi9p bmNsdWRlL2xpbnV4L2Jpby5oCkBAIC02MTIsNiArNjEyLDggQEAgc3RhdGljIGlubGluZSB2b2lk IGJpb19jcnlwdF9hZHZhbmNlKHN0cnVjdCBiaW8gKmJpbywgdW5zaWduZWQgaW50IGJ5dGVzKQog CX0KIH0KIAorZXh0ZXJuIGJvb2wgYmlvX2NyeXB0X3N3aGFuZGxlZChzdHJ1Y3QgYmlvICpiaW8p OworCiBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX2NyeXB0X2hhc19rZXlzbG90KHN0cnVjdCBiaW8g KmJpbykKIHsKIAlyZXR1cm4gYmlvLT5iaV9jcnlwdF9jb250ZXh0LT5rZXlzbG90ID49IDA7CkBA IC03MTcsNiArNzE5LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fY3J5cHRfc2V0X2N0eChz dHJ1Y3QgYmlvICpiaW8sCiAJCQkJICAgICB1NjQgZHVuLAogCQkJCSAgICAgdW5zaWduZWQgaW50 IGR1bl9iaXRzKSB7IH0KIAorc3RhdGljIGlubGluZSBib29sIGJpb19jcnlwdF9zd2hhbmRsZWQo c3RydWN0IGJpbyAqYmlvKQoreworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlubGluZSBi b29sIGJpb19jcnlwdF9oYXNfa2V5c2xvdChzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJcmV0dXJuIGZh bHNlOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGstY3J5cHRvLmggYi9pbmNsdWRlL2xp bnV4L2Jsay1jcnlwdG8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmNiYjViZWE2ZGNkYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvYmxrLWNyeXB0 by5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCisvKgorICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQworICovCisKKyNpZm5kZWYgX19M SU5VWF9CTEtfQ1JZUFRPX0gKKyNkZWZpbmUgX19MSU5VWF9CTEtfQ1JZUFRPX0gKKworI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpZmRlZiBDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9O CisKK3N0cnVjdCBiaW87CisKK2ludCBibGtfY3J5cHRvX2luaXQodm9pZCk7CisKK2ludCBibGtf Y3J5cHRvX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqKmJpb19wdHIpOworCitib29sIGJsa19jcnlw dG9fZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKKworI2Vsc2UgLyogQ09ORklHX0JMS19JTkxJTkVf RU5DUllQVElPTiAqLworCitzdGF0aWMgaW5saW5lIGludCBibGtfY3J5cHRvX2luaXQodm9pZCkK K3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgYmxrX2NyeXB0b19zdWJtaXRf YmlvKHN0cnVjdCBiaW8gKipiaW8pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUg Ym9vbCBibGtfY3J5cHRvX2VuZGlvKHN0cnVjdCBiaW8gKmJpbykKK3sKKwlyZXR1cm4gdHJ1ZTsK K30KKworI2VuZGlmIC8qIENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04gKi8KKworI2VuZGlm IC8qIF9fTElOVVhfQkxLX0NSWVBUT19IICovCi0tIAoyLjIyLjAuNDEwLmdkOGZkYmUyMWI1LWdv b2cKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vm b3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGlu dXgtZjJmcy1kZXZlbAo=