From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jarno Rajahalme Subject: [PATCH nf-next v7 7/7] openvswitch: Interface with NAT. Date: Fri, 5 Feb 2016 17:41:05 -0800 Message-ID: <1454722865-59558-8-git-send-email-jarno@ovn.org> References: <1454722865-59558-1-git-send-email-jarno@ovn.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: netfilter-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Return-path: In-Reply-To: <1454722865-59558-1-git-send-email-jarno-LZ6Gd1LRuIk@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org RXh0ZW5kIE9WUyBjb25udHJhY2sgaW50ZXJmYWNlIHRvIGNvdmVyIE5BVC4gIE5ldyBuZXN0ZWQK T1ZTX0NUX0FUVFJfTkFUIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBpbmNsdWRlIE5BVCB3aXRo IGEgQ1QgYWN0aW9uLgpBIGJhcmUgT1ZTX0NUX0FUVFJfTkFUIG9ubHkgbWFuZ2xlcyBleGlzdGlu ZyBhbmQgZXhwZWN0ZWQgY29ubmVjdGlvbnMuCklmIE9WU19OQVRfQVRUUl9TUkMgb3IgT1ZTX05B VF9BVFRSX0RTVCBpcyBpbmNsdWRlZCB3aXRoaW4gdGhlIG5lc3RlZAphdHRyaWJ1dGVzLCBuZXcg KG5vbi1jb21taXR0ZWQvbm9uLWNvbmZpcm1lZCkgY29ubmVjdGlvbnMgYXJlIG1hbmdsZWQKYWNj b3JkaW5nIHRvIHRoZSByZXN0IG9mIHRoZSBuZXN0ZWQgYXR0cmlidXRlcy4KClRoZSBjb3JyZXNw b25kaW5nIE9WUyB1c2Vyc3BhY2UgcGF0Y2ggc2VyaWVzIGluY2x1ZGVzIHRlc3QgY2FzZXMgKGlu CnRlc3RzL3N5c3RlbS10cmFmZmljLmF0KSB0aGF0IGFsc28gc2VydmUgYXMgZXhhbXBsZSB1c2Vz LgoKVGhpcyB3b3JrIGV4dGVuZHMgb24gYSBicmFuY2ggYnkgVGhvbWFzIEdyYWYgYXQKaHR0cHM6 Ly9naXRodWIuY29tL3RncmFmL292cy90cmVlL25hdC4KClNpZ25lZC1vZmYtYnk6IEphcm5vIFJh amFoYWxtZSA8amFybm9Ab3ZuLm9yZz4KLS0tCiBpbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0 Y2guaCB8ICA0NyArKysrCiBuZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMgICAgICB8IDUxNiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIG5ldC9vcGVudnN3aXRjaC9j b25udHJhY2suaCAgICAgIHwgICAzICstCiAzIGZpbGVzIGNoYW5nZWQsIDU0MSBpbnNlcnRpb25z KCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvb3Bl bnZzd2l0Y2guaCBiL2luY2x1ZGUvdWFwaS9saW51eC9vcGVudnN3aXRjaC5oCmluZGV4IGEyNzIy MmQuLmQzZDUxYWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9vcGVudnN3aXRjaC5o CisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9vcGVudnN3aXRjaC5oCkBAIC00NTQsNiArNDU0LDEy IEBAIHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscyB7CiAjZGVmaW5lIE9WU19DU19GX1JFUExZX0RJ UiAgICAgICAgIDB4MDggLyogRmxvdyBpcyBpbiB0aGUgcmVwbHkgZGlyZWN0aW9uLiAqLwogI2Rl ZmluZSBPVlNfQ1NfRl9JTlZBTElEICAgICAgICAgICAweDEwIC8qIENvdWxkIG5vdCB0cmFjayBj b25uZWN0aW9uLiAqLwogI2RlZmluZSBPVlNfQ1NfRl9UUkFDS0VEICAgICAgICAgICAweDIwIC8q IENvbm50cmFjayBoYXMgb2NjdXJyZWQuICovCisjZGVmaW5lIE9WU19DU19GX1NSQ19OQVQgICAg ICAgICAgIDB4NDAgLyogUGFja2V0J3Mgc291cmNlIGFkZHJlc3MvcG9ydCB3YXMKKwkJCQkJICAg bWFuZ2xlZCBieSBOQVQuICovCisjZGVmaW5lIE9WU19DU19GX0RTVF9OQVQgICAgICAgICAgIDB4 ODAgLyogUGFja2V0J3MgZGVzdGluYXRpb24gYWRkcmVzcy9wb3J0CisJCQkJCSAgIHdhcyBtYW5n bGVkIGJ5IE5BVC4gKi8KKworI2RlZmluZSBPVlNfQ1NfRl9OQVRfTUFTSyAoT1ZTX0NTX0ZfU1JD X05BVCB8IE9WU19DU19GX0RTVF9OQVQpCiAKIC8qKgogICogZW51bSBvdnNfZmxvd19hdHRyIC0g YXR0cmlidXRlcyBmb3IgJU9WU19GTE9XXyogY29tbWFuZHMuCkBAIC02MzIsNiArNjM4LDggQEAg c3RydWN0IG92c19hY3Rpb25faGFzaCB7CiAgKiBtYXNrLiBGb3IgZWFjaCBiaXQgc2V0IGluIHRo ZSBtYXNrLCB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlIHZhbHVlIGlzCiAgKiBjb3BpZWQg dG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWwgZmllbGQgaW4gdGhlIGNvbm5lY3Rpb24u CiAgKiBAT1ZTX0NUX0FUVFJfSEVMUEVSOiB2YXJpYWJsZSBsZW5ndGggc3RyaW5nIGRlZmluaW5n IGNvbm50cmFjayBBTEcuCisgKiBAT1ZTX0NUX0FUVFJfTkFUOiBOZXN0ZWQgT1ZTX05BVF9BVFRS XyogZm9yIHBlcmZvcm1pbmcgTDMgbmV0d29yayBhZGRyZXNzCisgKiB0cmFuc2xhdGlvbiAoTkFU KSBvbiB0aGUgcGFja2V0LgogICovCiBlbnVtIG92c19jdF9hdHRyIHsKIAlPVlNfQ1RfQVRUUl9V TlNQRUMsCkBAIC02NDEsMTIgKzY0OSw1MSBAQCBlbnVtIG92c19jdF9hdHRyIHsKIAlPVlNfQ1Rf QVRUUl9MQUJFTFMsICAgICAvKiBsYWJlbHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBjb25uZWN0 aW9uLiAqLwogCU9WU19DVF9BVFRSX0hFTFBFUiwgICAgIC8qIG5ldGxpbmsgaGVscGVyIHRvIGFz c2lzdCBkZXRlY3Rpb24gb2YKIAkJCQkgICByZWxhdGVkIGNvbm5lY3Rpb25zLiAqLworCU9WU19D VF9BVFRSX05BVCwgICAgICAgIC8qIE5lc3RlZCBPVlNfTkFUX0FUVFJfKiAqLwogCV9fT1ZTX0NU X0FUVFJfTUFYCiB9OwogCiAjZGVmaW5lIE9WU19DVF9BVFRSX01BWCAoX19PVlNfQ1RfQVRUUl9N QVggLSAxKQogCiAvKioKKyAqIGVudW0gb3ZzX25hdF9hdHRyIC0gQXR0cmlidXRlcyBmb3IgJU9W U19DVF9BVFRSX05BVC4KKyAqCisgKiBAT1ZTX05BVF9BVFRSX1NSQzogRmxhZyBmb3IgU291cmNl IE5BVCAobWFuZ2xlIHNvdXJjZSBhZGRyZXNzL3BvcnQpLgorICogQE9WU19OQVRfQVRUUl9EU1Q6 IEZsYWcgZm9yIERlc3RpbmF0aW9uIE5BVCAobWFuZ2xlIGRlc3RpbmF0aW9uCisgKiBhZGRyZXNz L3BvcnQpLiAgT25seSBvbmUgb2YgKEBPVlNfTkFUX0FUVFJfU1JDLCBAT1ZTX05BVF9BVFRSX0RT VCkgbWF5IGJlCisgKiBzcGVjaWZpZWQuICBFZmZlY3RpdmUgb25seSBmb3IgcGFja2V0cyBmb3Ig Y3Rfc3RhdGUgTkVXIGNvbm5lY3Rpb25zLgorICogUGFja2V0cyBvZiBjb21taXR0ZWQgY29ubmVj dGlvbnMgYXJlIG1hbmdsZWQgYnkgdGhlIE5BVCBhY3Rpb24gYWNjb3JkaW5nIHRvCisgKiB0aGUg Y29tbWl0dGVkIE5BVCB0eXBlIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsYWdzIHNwZWNpZmllZC4gIEFz IGEgY29yb2xsYXJ5LCBhCisgKiBOQVQgYWN0aW9uIHdpdGhvdXQgYSBOQVQgdHlwZSBmbGFnIHdp bGwgb25seSBtYW5nbGUgcGFja2V0cyBvZiBjb21taXR0ZWQKKyAqIGNvbm5lY3Rpb25zLiAgVGhl IGZvbGxvd2luZyBOQVQgYXR0cmlidXRlcyBvbmx5IGFwcGx5IGZvciBORVcKKyAqIChub24tY29t bWl0dGVkKSBjb25uZWN0aW9ucywgYW5kIHRoZXkgbWF5IGJlIGluY2x1ZGVkIG9ubHkgd2hlbiB0 aGUgQ1QKKyAqIGFjdGlvbiBoYXMgdGhlIEBPVlNfQ1RfQVRUUl9DT01NSVQgZmxhZyBhbmQgZWl0 aGVyIEBPVlNfTkFUX0FUVFJfU1JDIG9yCisgKiBAT1ZTX05BVF9BVFRSX0RTVCBpcyBhbHNvIGlu Y2x1ZGVkLgorICogQE9WU19OQVRfQVRUUl9JUF9NSU46IHN0cnVjdCBpbl9hZGRyIG9yIHN0cnVj dCBpbjZfYWRkcgorICogQE9WU19OQVRfQVRUUl9JUF9NQVg6IHN0cnVjdCBpbl9hZGRyIG9yIHN0 cnVjdCBpbjZfYWRkcgorICogQE9WU19OQVRfQVRUUl9QUk9UT19NSU46IHUxNiBMNCBwcm90b2Nv bCBzcGVjaWZpYyBsb3dlciBib3VuZGFyeSAocG9ydCkKKyAqIEBPVlNfTkFUX0FUVFJfUFJPVE9f TUFYOiB1MTYgTDQgcHJvdG9jb2wgc3BlY2lmaWMgdXBwZXIgYm91bmRhcnkgKHBvcnQpCisgKiBA T1ZTX05BVF9BVFRSX1BFUlNJU1RFTlQ6IEZsYWcgZm9yIHBlcnNpc3RlbnQgSVAgbWFwcGluZyBh Y3Jvc3MgcmVib290cworICogQE9WU19OQVRfQVRUUl9QUk9UT19IQVNIOiBGbGFnIGZvciBwc2V1 ZG8gcmFuZG9tIEw0IHBvcnQgbWFwcGluZyAoTUQ1KQorICogQE9WU19OQVRfQVRUUl9QUk9UT19S QU5ET006IEZsYWcgZm9yIGZ1bGx5IHJhbmRvbWl6ZWQgTDQgcG9ydCBtYXBwaW5nCisgKi8KK2Vu dW0gb3ZzX25hdF9hdHRyIHsKKwlPVlNfTkFUX0FUVFJfVU5TUEVDLAorCU9WU19OQVRfQVRUUl9T UkMsCisJT1ZTX05BVF9BVFRSX0RTVCwKKwlPVlNfTkFUX0FUVFJfSVBfTUlOLAorCU9WU19OQVRf QVRUUl9JUF9NQVgsCisJT1ZTX05BVF9BVFRSX1BST1RPX01JTiwKKwlPVlNfTkFUX0FUVFJfUFJP VE9fTUFYLAorCU9WU19OQVRfQVRUUl9QRVJTSVNURU5ULAorCU9WU19OQVRfQVRUUl9QUk9UT19I QVNILAorCU9WU19OQVRfQVRUUl9QUk9UT19SQU5ET00sCisJX19PVlNfTkFUX0FUVFJfTUFYLAor fTsKKworI2RlZmluZSBPVlNfTkFUX0FUVFJfTUFYIChfX09WU19OQVRfQVRUUl9NQVggLSAxKQor CisvKioKICAqIGVudW0gb3ZzX2FjdGlvbl9hdHRyIC0gQWN0aW9uIHR5cGVzLgogICoKICAqIEBP VlNfQUNUSU9OX0FUVFJfT1VUUFVUOiBPdXRwdXQgcGFja2V0IHRvIHBvcnQuCmRpZmYgLS1naXQg YS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNr LmMKaW5kZXggZmMwZWYxMS4uMmM4YjU3NSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2Nv bm50cmFjay5jCisrKyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYwpAQCAtMjAsMTQgKzIw LDI0IEBACiAjaW5jbHVkZSA8bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfem9uZXMuaD4KICNp bmNsdWRlIDxuZXQvbmV0ZmlsdGVyL2lwdjYvbmZfZGVmcmFnX2lwdjYuaD4KIAorI2lmZGVmIENP TkZJR19ORl9OQVRfTkVFREVECisjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyL25mX25hdC5oPgor I2luY2x1ZGUgPG5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuaD4KKyNpbmNsdWRlIDxuZXQvbmV0 ZmlsdGVyL25mX25hdF9sM3Byb3RvLmg+CisjaW5jbHVkZSA8bmV0L25ldGZpbHRlci9uZl9jb25u dHJhY2tfc2VxYWRqLmg+CisjaW5jbHVkZSA8bGludXgvc2N0cC5oPgorI2luY2x1ZGUgPGxpbnV4 L3RjcC5oPgorI2luY2x1ZGUgPGxpbnV4L3VkcC5oPgorI2VuZGlmCisKICNpbmNsdWRlICJkYXRh cGF0aC5oIgogI2luY2x1ZGUgImNvbm50cmFjay5oIgogI2luY2x1ZGUgImZsb3cuaCIKICNpbmNs dWRlICJmbG93X25ldGxpbmsuaCIKIAogc3RydWN0IG92c19jdF9sZW5fdGJsIHsKLQlzaXplX3Qg bWF4bGVuOwotCXNpemVfdCBtaW5sZW47CisJaW50IG1heGxlbjsKKwlpbnQgbWlubGVuOwogfTsK IAogLyogTWV0YWRhdGEgbWFyayBmb3IgbWFza2VkIHdyaXRlIHRvIGNvbm50cmFjayBtYXJrICov CkBAIC00MiwxNSArNTIsMjkgQEAgc3RydWN0IG1kX2xhYmVscyB7CiAJc3RydWN0IG92c19rZXlf Y3RfbGFiZWxzIG1hc2s7CiB9OwogCisjaWZkZWYgQ09ORklHX05GX05BVF9ORUVERUQKK2VudW0g b3ZzX2N0X25hdCB7CisJT1ZTX0NUX05BVCA9IDEgPDwgMCwgICAgIC8qIE5BVCBmb3IgY29tbWl0 dGVkIGNvbm5lY3Rpb25zIG9ubHkuICovCisJT1ZTX0NUX1NSQ19OQVQgPSAxIDw8IDEsIC8qIFNv dXJjZSBOQVQgZm9yIE5FVyBjb25uZWN0aW9ucy4gKi8KKwlPVlNfQ1RfRFNUX05BVCA9IDEgPDwg MiwgLyogRGVzdGluYXRpb24gTkFUIGZvciBORVcgY29ubmVjdGlvbnMuICovCit9OworI2VuZGlm CisKIC8qIENvbm50cmFjayBhY3Rpb24gY29udGV4dCBmb3IgZXhlY3V0aW9uLiAqLwogc3RydWN0 IG92c19jb25udHJhY2tfaW5mbyB7CiAJc3RydWN0IG5mX2Nvbm50cmFja19oZWxwZXIgKmhlbHBl cjsKIAlzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgem9uZTsKIAlzdHJ1Y3QgbmZfY29ubiAqY3Q7 CiAJdTggY29tbWl0IDogMTsKKyNpZmRlZiBDT05GSUdfTkZfTkFUX05FRURFRAorCXU4IG5hdCA6 IDM7ICAgICAgICAgICAgICAgICAvKiBlbnVtIG92c19jdF9uYXQgKi8KKyNlbmRpZgogCXUxNiBm YW1pbHk7CiAJc3RydWN0IG1kX21hcmsgbWFyazsKIAlzdHJ1Y3QgbWRfbGFiZWxzIGxhYmVsczsK KyNpZmRlZiBDT05GSUdfTkZfTkFUX05FRURFRAorCXN0cnVjdCBuZl9uYXRfcmFuZ2UgcmFuZ2U7 ICAvKiBPbmx5IHByZXNlbnQgZm9yIFNSQyBOQVQgYW5kIERTVCBOQVQuICovCisjZW5kaWYKIH07 CiAKIHN0YXRpYyB2b2lkIF9fb3ZzX2N0X2ZyZWVfYWN0aW9uKHN0cnVjdCBvdnNfY29ubnRyYWNr X2luZm8gKmN0X2luZm8pOwpAQCAtMTM3LDEyICsxNjEsMTUgQEAgc3RhdGljIHZvaWQgX19vdnNf Y3RfdXBkYXRlX2tleShzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSwgdTggc3RhdGUsCiAJb3ZzX2N0 X2dldF9sYWJlbHMoY3QsICZrZXktPmN0LmxhYmVscyk7CiB9CiAKLS8qIFVwZGF0ZSAna2V5JyBi YXNlZCBvbiBza2ItPm5mY3QuIElmICdwb3N0X2N0JyBpcyB0cnVlLCB0aGVuIE9WUyBoYXMKLSAq IHByZXZpb3VzbHkgc2VudCB0aGUgcGFja2V0IHRvIGNvbm50cmFjayB2aWEgdGhlIGN0IGFjdGlv bi4KKy8qIFVwZGF0ZSAna2V5JyBiYXNlZCBvbiBza2ItPm5mY3QuICBJZiAncG9zdF9jdCcgaXMg dHJ1ZSwgdGhlbiBPVlMgaGFzCisgKiBwcmV2aW91c2x5IHNlbnQgdGhlIHBhY2tldCB0byBjb25u dHJhY2sgdmlhIHRoZSBjdCBhY3Rpb24uICBJZgorICogJ2tlZXBfbmF0X2ZsYWdzJyBpcyB0cnVl LCB0aGUgZXhpc3RpbmcgTkFUIGZsYWdzIHJldGFpbmVkLCBlbHNlIHRoZXkgYXJlCisgKiBpbml0 aWFsaXplZCBmcm9tIHRoZSBjb25uZWN0aW9uIHN0YXR1cy4KICAqLwogc3RhdGljIHZvaWQgb3Zz X2N0X3VwZGF0ZV9rZXkoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgIGNvbnN0 IHN0cnVjdCBvdnNfY29ubnRyYWNrX2luZm8gKmluZm8sCi0JCQkgICAgICBzdHJ1Y3Qgc3dfZmxv d19rZXkgKmtleSwgYm9vbCBwb3N0X2N0KQorCQkJICAgICAgc3RydWN0IHN3X2Zsb3dfa2V5ICpr ZXksIGJvb2wgcG9zdF9jdCwKKwkJCSAgICAgIGJvb2wga2VlcF9uYXRfZmxhZ3MpCiB7CiAJY29u c3Qgc3RydWN0IG5mX2Nvbm50cmFja196b25lICp6b25lID0gJm5mX2N0X3pvbmVfZGZsdDsKIAll bnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsKQEAgLTE1MiwxMCArMTc5LDI0IEBAIHN0YXRp YyB2b2lkIG92c19jdF91cGRhdGVfa2V5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJY3Qg PSBuZl9jdF9nZXQoc2tiLCAmY3RpbmZvKTsKIAlpZiAoY3QpIHsKIAkJc3RhdGUgPSBvdnNfY3Rf Z2V0X3N0YXRlKGN0aW5mbyk7CisJCS8qIEFsbCB1bmNvbmZpcm1lZCBlbnRyaWVzIGFyZSBORVcg Y29ubmVjdGlvbnMuICovCiAJCWlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSkKIAkJCXN0YXRl IHw9IE9WU19DU19GX05FVzsKKwkJLyogT1ZTIHBlcnNpc3RzIHRoZSByZWxhdGVkIGZsYWcgZm9y IHRoZSBkdXJhdGlvbiBvZiB0aGUKKwkJICogY29ubmVjdGlvbi4KKwkJICovCiAJCWlmIChjdC0+ bWFzdGVyKQogCQkJc3RhdGUgfD0gT1ZTX0NTX0ZfUkVMQVRFRDsKKyNpZmRlZiBDT05GSUdfTkZf TkFUX05FRURFRAorCQlpZiAoa2VlcF9uYXRfZmxhZ3MpCisJCQlzdGF0ZSB8PSBrZXktPmN0LnN0 YXRlICYgT1ZTX0NTX0ZfTkFUX01BU0s7CisJCWVsc2UgeworCQkJaWYgKGN0LT5zdGF0dXMgJiBJ UFNfU1JDX05BVCkKKwkJCQlzdGF0ZSB8PSBPVlNfQ1NfRl9TUkNfTkFUOworCQkJaWYgKGN0LT5z dGF0dXMgJiBJUFNfRFNUX05BVCkKKwkJCQlzdGF0ZSB8PSBPVlNfQ1NfRl9EU1RfTkFUOworCQl9 CisjZW5kaWYKIAkJem9uZSA9IG5mX2N0X3pvbmUoY3QpOwogCX0gZWxzZSBpZiAocG9zdF9jdCkg ewogCQlzdGF0ZSA9IE9WU19DU19GX1RSQUNLRUQgfCBPVlNfQ1NfRl9JTlZBTElEOwpAQCAtMTY1 LDkgKzIwNiwxMSBAQCBzdGF0aWMgdm9pZCBvdnNfY3RfdXBkYXRlX2tleShjb25zdCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAogCV9fb3ZzX2N0X3VwZGF0ZV9rZXkoa2V5LCBzdGF0ZSwgem9uZSwgY3Qp OwogfQogCisvKiBUaGlzIGlzIGNhbGxlZCB0byBpbml0aWFsaXplIENUIGtleSBmaWVsZHMgcG9z c2libHkgY29taW5nIGluIGZyb20gdGhlIGxvY2FsCisgKiBzdGFjay4gKi8KIHZvaWQgb3ZzX2N0 X2ZpbGxfa2V5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAq a2V5KQogewotCW92c19jdF91cGRhdGVfa2V5KHNrYiwgTlVMTCwga2V5LCBmYWxzZSk7CisJb3Zz X2N0X3VwZGF0ZV9rZXkoc2tiLCBOVUxMLCBrZXksIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGludCBv dnNfY3RfcHV0X2tleShjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSwgc3RydWN0IHNrX2J1 ZmYgKnNrYikKQEAgLTI1Niw2ICsyOTksNyBAQCBzdGF0aWMgaW50IG92c19jdF9oZWxwZXIoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHByb3RvKQogCWVudW0gaXBfY29ubnRyYWNrX2luZm8gY3Rp bmZvOwogCXVuc2lnbmVkIGludCBwcm90b2ZmOwogCXN0cnVjdCBuZl9jb25uICpjdDsKKwlpbnQg ZXJyOwogCiAJY3QgPSBuZl9jdF9nZXQoc2tiLCAmY3RpbmZvKTsKIAlpZiAoIWN0IHx8IGN0aW5m byA9PSBJUF9DVF9SRUxBVEVEX1JFUExZKQpAQCAtMjkyLDcgKzMzNiwyMCBAQCBzdGF0aWMgaW50 IG92c19jdF9oZWxwZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHByb3RvKQogCQlyZXR1cm4g TkZfRFJPUDsKIAl9CiAKLQlyZXR1cm4gaGVscGVyLT5oZWxwKHNrYiwgcHJvdG9mZiwgY3QsIGN0 aW5mbyk7CisJZXJyID0gaGVscGVyLT5oZWxwKHNrYiwgcHJvdG9mZiwgY3QsIGN0aW5mbyk7CisJ aWYgKGVyciAhPSBORl9BQ0NFUFQpCisJCXJldHVybiBlcnI7CisKKyNpZmRlZiBDT05GSUdfTkZf TkFUX05FRURFRAorCS8qIEFkanVzdCBzZXFzIGFmdGVyIGhlbHBlci4gIFRoaXMgaXMgbmVlZGVk IGR1ZSB0byBzb21lIGhlbHBlcnMgKGUuZy4sCisJICogRlRQIHdpdGggTkFUKSBhZHVzdGluZyB0 aGUgVENQIHBheWxvYWQgc2l6ZSB3aGVuIG1hbmdsaW5nIElQCisJICogYWRkcmVzc2VzIGFuZC9v ciBwb3J0IG51bWJlcnMgaW4gdGhlIHRleHQtYmFzZWQgY29udHJvbCBjb25uZWN0aW9uLgorCSAq LworCWlmICh0ZXN0X2JpdChJUFNfU0VRX0FESlVTVF9CSVQsICZjdC0+c3RhdHVzKQorCSAgICAm JiAhbmZfY3Rfc2VxX2FkanVzdChza2IsIGN0LCBjdGluZm8sIHByb3RvZmYpKQorCQlyZXR1cm4g TkZfRFJPUDsKKyNlbmRpZgorCXJldHVybiBORl9BQ0NFUFQ7CiB9CiAKIC8qIFJldHVybnMgMCBv biBzdWNjZXNzLCAtRUlOUFJPR1JFU1MgaWYgJ3NrYicgaXMgc3RvbGVuLCBvciBvdGhlciBub256 ZXJvCkBAIC00NjEsNiArNTE4LDE4OSBAQCBzdGF0aWMgYm9vbCBza2JfbmZjdF9jYWNoZWQoc3Ry dWN0IG5ldCAqbmV0LAogCXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgQ09ORklHX05GX05BVF9O RUVERUQKKy8qIE1vZGVsZWQgYWZ0ZXIgbmZfbmF0X2lwdls0Nl1fZm4oKS4KKyAqIHJhbmdlIGlz IG9ubHkgdXNlZCBmb3IgbmV3LCB1bmluaXRpYWxpemVkIE5BVCBzdGF0ZS4KKyAqIFJldHVybnMg ZWl0aGVyIE5GX0FDQ0VQVCBvciBORl9EUk9QLiAqLworc3RhdGljIGludCBvdnNfY3RfbmF0X2V4 ZWN1dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LAorCQkJICAgICAg ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm8sCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgbmZf bmF0X3JhbmdlICpyYW5nZSwKKwkJCSAgICAgIGVudW0gbmZfbmF0X21hbmlwX3R5cGUgbWFuaXB0 eXBlKQoreworCWludCBob29rbnVtLCBuaF9vZmYsIGVyciA9IE5GX0FDQ0VQVDsKKworCW5oX29m ZiA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOworCXNrYl9wdWxsKHNrYiwgbmhfb2ZmKTsKKwor CS8qIFNlZSBIT09LMk1BTklQKCkuICovCisJaWYgKG1hbmlwdHlwZSA9PSBORl9OQVRfTUFOSVBf U1JDKQorCQlob29rbnVtID0gTkZfSU5FVF9MT0NBTF9JTjsgLyogU291cmNlIE5BVCAqLworCWVs c2UKKwkJaG9va251bSA9IE5GX0lORVRfTE9DQUxfT1VUOyAvKiBEZXN0aW5hdGlvbiBOQVQgKi8K KworCXN3aXRjaCAoY3RpbmZvKSB7CisJY2FzZSBJUF9DVF9SRUxBVEVEOgorCWNhc2UgSVBfQ1Rf UkVMQVRFRF9SRVBMWToKKwkJaWYgKHNrYi0+cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApCisJ CSAgICAmJiBpcF9oZHIoc2tiKS0+cHJvdG9jb2wgPT0gSVBQUk9UT19JQ01QKSB7CisJCQlpZiAo IW5mX25hdF9pY21wX3JlcGx5X3RyYW5zbGF0aW9uKHNrYiwgY3QsIGN0aW5mbywKKwkJCQkJCQkg ICBob29rbnVtKSkKKwkJCQllcnIgPSBORl9EUk9QOworCQkJZ290byBwdXNoOworCQl9IGVsc2Ug aWYgKHNrYi0+cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVBWNikpIHsKKwkJCV9fYmUxNiBmcmFn X29mZjsKKwkJCXU4IG5leHRoZHIgPSBpcHY2X2hkcihza2IpLT5uZXh0aGRyOworCQkJaW50IGhk cmxlbiA9IGlwdjZfc2tpcF9leHRoZHIoc2tiLAorCQkJCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBp cHY2aGRyKSwKKwkJCQkJCSAgICAgICZuZXh0aGRyLCAmZnJhZ19vZmYpOworCisJCQlpZiAoaGRy bGVuID49IDAgJiYgbmV4dGhkciA9PSBJUFBST1RPX0lDTVBWNikgeworCQkJCWlmICghbmZfbmF0 X2ljbXB2Nl9yZXBseV90cmFuc2xhdGlvbihza2IsIGN0LAorCQkJCQkJCQkgICAgIGN0aW5mbywK KwkJCQkJCQkJICAgICBob29rbnVtLAorCQkJCQkJCQkgICAgIGhkcmxlbikpCisJCQkJCWVyciA9 IE5GX0RST1A7CisJCQkJZ290byBwdXNoOworCQkJfQorCQl9CisJCS8qIE5vbi1JQ01QLCBmYWxs IHRocnUgdG8gaW5pdGlhbGl6ZSBpZiBuZWVkZWQuICovCisJY2FzZSBJUF9DVF9ORVc6CisJCS8q IFNlZW4gaXQgYmVmb3JlPyAgVGhpcyBjYW4gaGFwcGVuIGZvciBsb29wYmFjaywgcmV0cmFucywK KwkJICogb3IgbG9jYWwgcGFja2V0cy4KKwkJICovCisJCWlmICghbmZfbmF0X2luaXRpYWxpemVk KGN0LCBtYW5pcHR5cGUpKSB7CisJCQkvKiBJbml0aWFsaXplIGFjY29yZGluZyB0byB0aGUgTkFU IGFjdGlvbi4gKi8KKwkJCWVyciA9IChyYW5nZSAmJiByYW5nZS0+ZmxhZ3MgJiBORl9OQVRfUkFO R0VfTUFQX0lQUykKKwkJCQkvKiBBY3Rpb24gaXMgc2V0IHVwIHRvIGVzdGFibGlzaCBhIG5ldwor CQkJCSAqIG1hcHBpbmcgKi8KKwkJCQk/IG5mX25hdF9zZXR1cF9pbmZvKGN0LCByYW5nZSwgbWFu aXB0eXBlKQorCQkJCTogbmZfbmF0X2FsbG9jX251bGxfYmluZGluZyhjdCwgaG9va251bSk7CisJ CQlpZiAoZXJyICE9IE5GX0FDQ0VQVCkKKwkJCQlnb3RvIHB1c2g7CisJCX0KKwkJYnJlYWs7CisK KwljYXNlIElQX0NUX0VTVEFCTElTSEVEOgorCWNhc2UgSVBfQ1RfRVNUQUJMSVNIRURfUkVQTFk6 CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJZXJyID0gTkZfRFJPUDsKKwkJZ290byBwdXNoOwor CX0KKworCWVyciA9IG5mX25hdF9wYWNrZXQoY3QsIGN0aW5mbywgaG9va251bSwgc2tiKTsKK3B1 c2g6CisJc2tiX3B1c2goc2tiLCBuaF9vZmYpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGlj IHZvaWQgb3ZzX25hdF91cGRhdGVfa2V5KHN0cnVjdCBzd19mbG93X2tleSAqa2V5LAorCQkJICAg ICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCisJCQkgICAgICAgZW51bSBuZl9uYXRfbWFu aXBfdHlwZSBtYW5pcHR5cGUpCit7CisJaWYgKG1hbmlwdHlwZSA9PSBORl9OQVRfTUFOSVBfU1JD KSB7CisJCV9fYmUxNiBzcmM7CisKKwkJa2V5LT5jdC5zdGF0ZSB8PSBPVlNfQ1NfRl9TUkNfTkFU OworCQlpZiAoa2V5LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF9JUCkpCisJCQlrZXktPmlwdjQu YWRkci5zcmMgPSBpcF9oZHIoc2tiKS0+c2FkZHI7CisJCWVsc2UgaWYgKGtleS0+ZXRoLnR5cGUg PT0gaHRvbnMoRVRIX1BfSVBWNikpCisJCQltZW1jcHkoJmtleS0+aXB2Ni5hZGRyLnNyYywgJmlw djZfaGRyKHNrYiktPnNhZGRyLAorCQkJICAgICAgIHNpemVvZihrZXktPmlwdjYuYWRkci5zcmMp KTsKKwkJZWxzZQorCQkJcmV0dXJuOworCisJCWlmIChrZXktPmlwLnByb3RvID09IElQUFJPVE9f VURQKQorCQkJc3JjID0gdWRwX2hkcihza2IpLT5zb3VyY2U7CisJCWVsc2UgaWYgKGtleS0+aXAu cHJvdG8gPT0gSVBQUk9UT19UQ1ApCisJCQlzcmMgPSB0Y3BfaGRyKHNrYiktPnNvdXJjZTsKKwkJ ZWxzZSBpZiAoa2V5LT5pcC5wcm90byA9PSBJUFBST1RPX1NDVFApCisJCQlzcmMgPSBzY3RwX2hk cihza2IpLT5zb3VyY2U7CisJCWVsc2UKKwkJCXJldHVybjsKKworCQlrZXktPnRwLnNyYyA9IHNy YzsKKwl9IGVsc2UgeworCQlfX2JlMTYgZHN0OworCisJCWtleS0+Y3Quc3RhdGUgfD0gT1ZTX0NT X0ZfRFNUX05BVDsKKwkJaWYgKGtleS0+ZXRoLnR5cGUgPT0gaHRvbnMoRVRIX1BfSVApKQorCQkJ a2V5LT5pcHY0LmFkZHIuZHN0ID0gaXBfaGRyKHNrYiktPmRhZGRyOworCQllbHNlIGlmIChrZXkt PmV0aC50eXBlID09IGh0b25zKEVUSF9QX0lQVjYpKQorCQkJbWVtY3B5KCZrZXktPmlwdjYuYWRk ci5kc3QsICZpcHY2X2hkcihza2IpLT5kYWRkciwKKwkJCSAgICAgICBzaXplb2Yoa2V5LT5pcHY2 LmFkZHIuZHN0KSk7CisJCWVsc2UKKwkJCXJldHVybjsKKworCQlpZiAoa2V5LT5pcC5wcm90byA9 PSBJUFBST1RPX1VEUCkKKwkJCWRzdCA9IHVkcF9oZHIoc2tiKS0+ZGVzdDsKKwkJZWxzZSBpZiAo a2V5LT5pcC5wcm90byA9PSBJUFBST1RPX1RDUCkKKwkJCWRzdCA9IHRjcF9oZHIoc2tiKS0+ZGVz dDsKKwkJZWxzZSBpZiAoa2V5LT5pcC5wcm90byA9PSBJUFBST1RPX1NDVFApCisJCQlkc3QgPSBz Y3RwX2hkcihza2IpLT5kZXN0OworCQllbHNlCisJCQlyZXR1cm47CisKKwkJa2V5LT50cC5kc3Qg PSBkc3Q7CisJfQorfQorCisvKiBSZXR1cm5zIE5GX0RST1AgaWYgdGhlIHBhY2tldCBzaG91bGQg YmUgZHJvcHBlZCwgTkZfQUNDRVBUIG90aGVyd2lzZS4gKi8KK3N0YXRpYyBpbnQgb3ZzX2N0X25h dChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LAorCQkgICAgICBjb25z dCBzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICppbmZvLAorCQkgICAgICBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsCisJCSAgICAgIGVudW0gaXBfY29ubnRyYWNrX2lu Zm8gY3RpbmZvKQoreworCWVudW0gbmZfbmF0X21hbmlwX3R5cGUgbWFuaXB0eXBlOworCWludCBl cnI7CisKKwlpZiAobmZfY3RfaXNfdW50cmFja2VkKGN0KSkgeworCQkvKiBBIE5BVCBhY3Rpb24g bWF5IG9ubHkgYmUgcGVyZm9ybWVkIG9uIHRyYWNrZWQgcGFja2V0cy4gKi8KKwkJcmV0dXJuIE5G X0FDQ0VQVDsKKwl9CisKKwkvKiBBZGQgTkFUIGV4dGVuc2lvbiBpZiBub3QgY29uZmlybWVkIHll dC4gKi8KKwlpZiAoIW5mX2N0X2lzX2NvbmZpcm1lZChjdCkgJiYgIW5mX2N0X25hdF9leHRfYWRk KGN0KSkKKwkJcmV0dXJuIE5GX0FDQ0VQVDsgICAvKiBDYW4ndCBOQVQuICovCisKKwkvKiBEZXRl cm1pbmUgTkFUIHR5cGUuCisJICogQ2hlY2sgaWYgdGhlIE5BVCB0eXBlIGNhbiBiZSBkZWR1Y2Vk IGZyb20gdGhlIHRyYWNrZWQgY29ubmVjdGlvbi4KKwkgKiBNYWtlIHN1cmUgZXhwZWN0ZWQgdHJh ZmZpYyBpcyBOQVR0ZWQgb25seSB3aGVuIGNvbW1pdGluZy4KKwkgKi8KKwlpZiAoaW5mby0+bmF0 ICYgT1ZTX0NUX05BVCAmJiBjdGluZm8gIT0gSVBfQ1RfTkVXCisJICAgICYmIGN0LT5zdGF0dXMg JiBJUFNfTkFUX01BU0sKKwkgICAgJiYgKCEoY3QtPnN0YXR1cyAmIElQU19FWFBFQ1RFRF9CSVQp IHx8IGluZm8tPmNvbW1pdCkpIHsKKwkJLyogTkFUIGFuIGVzdGFibGlzaGVkIG9yIHJlbGF0ZWQg Y29ubmVjdGlvbiBsaWtlIGJlZm9yZS4gKi8KKwkJaWYgKENUSU5GTzJESVIoY3RpbmZvKSA9PSBJ UF9DVF9ESVJfUkVQTFkpCisJCQkvKiBUaGlzIGlzIHRoZSBSRVBMWSBkaXJlY3Rpb24gZm9yIGEg Y29ubmVjdGlvbgorCQkJICogZm9yIHdoaWNoIE5BVCB3YXMgYXBwbGllZCBpbiB0aGUgZm9yd2Fy ZAorCQkJICogZGlyZWN0aW9uLiAgRG8gdGhlIHJldmVyc2UgTkFULgorCQkJICovCisJCQltYW5p cHR5cGUgPSBjdC0+c3RhdHVzICYgSVBTX1NSQ19OQVQKKwkJCQk/IE5GX05BVF9NQU5JUF9EU1Qg OiBORl9OQVRfTUFOSVBfU1JDOworCQllbHNlCisJCQltYW5pcHR5cGUgPSBjdC0+c3RhdHVzICYg SVBTX1NSQ19OQVQKKwkJCQk/IE5GX05BVF9NQU5JUF9TUkMgOiBORl9OQVRfTUFOSVBfRFNUOwor CX0KKwllbHNlIGlmIChpbmZvLT5uYXQgJiBPVlNfQ1RfU1JDX05BVCkKKwkJbWFuaXB0eXBlID0g TkZfTkFUX01BTklQX1NSQzsKKwllbHNlIGlmIChpbmZvLT5uYXQgJiBPVlNfQ1RfRFNUX05BVCkK KwkJbWFuaXB0eXBlID0gTkZfTkFUX01BTklQX0RTVDsKKwllbHNlCisJCXJldHVybiBORl9BQ0NF UFQ7IC8qIENvbm5lY3Rpb24gaXMgbm90IE5BVGVkLiAqLworCisJZXJyID0gb3ZzX2N0X25hdF9l eGVjdXRlKHNrYiwgY3QsIGN0aW5mbywgJmluZm8tPnJhbmdlLCBtYW5pcHR5cGUpOworCisJLyog TWFyayBOQVQgZG9uZSBpZiBzdWNjZXNzZnVsIGFuZCB1cGRhdGUgdGhlIGZsb3cga2V5LiAqLwor CWlmIChlcnIgPT0gTkZfQUNDRVBUKQorCQlvdnNfbmF0X3VwZGF0ZV9rZXkoa2V5LCBza2IsIG1h bmlwdHlwZSk7CisKKwlyZXR1cm4gZXJyOworfQorI2VuZGlmCisKIC8qIFBhc3MgJ3NrYicgdGhy b3VnaCBjb25udHJhY2sgaW4gJ25ldCcsIHVzaW5nIHpvbmUgY29uZmlndXJlZCBpbiAnaW5mbycs IGlmCiAgKiBub3QgZG9uZSBhbHJlYWR5LiAgVXBkYXRlIGtleSB3aXRoIG5ldyBDVCBzdGF0ZSBh ZnRlciBwYXNzaW5nIHRoZSBwYWNrZXQKICAqIHRocm91Z2ggY29ubnRyYWNrLgpAQCAtNTAxLDE3 ICs3NDEsNDMgQEAgc3RhdGljIGludCBfX292c19jdF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBz dHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSwKIAkJaWYgKGVyciAhPSBORl9BQ0NFUFQpCiAJCQlyZXR1 cm4gLUVOT0VOVDsKIAotCQlvdnNfY3RfdXBkYXRlX2tleShza2IsIGluZm8sIGtleSwgdHJ1ZSk7 CisJCS8qIENsZWFyIENUIHN0YXRlIE5BVCBmbGFncyB0byBtYXJrIHRoYXQgd2UgaGF2ZSBub3Qg eWV0IGRvbmUKKwkJICogTkFUIGFmdGVyIHRoZSBuZl9jb25udHJhY2tfaW4oKSBjYWxsLiAgV2Ug Y2FuIGFjdHVhbGx5IGNsZWFyCisJCSAqIHRoZSB3aG9sZSBzdGF0ZSwgYXMgaXQgd2lsbCBiZSBy ZS1pbml0aWFsaXplZCBiZWxvdy4KKwkJICovCisJCWtleS0+Y3Quc3RhdGUgPSAwOworCisJCS8q IFVwZGF0ZSB0aGUga2V5LCBidXQga2VlcCB0aGUgTkFUIGZsYWdzLiAqLworCQlvdnNfY3RfdXBk YXRlX2tleShza2IsIGluZm8sIGtleSwgdHJ1ZSwgdHJ1ZSk7CiAJfQogCi0JLyogQ2FsbCB0aGUg aGVscGVyIHJpZ2h0IGFmdGVyIG5mX2Nvbm50cmFja19pbigpIGZvciBjb25maXJtZWQKLQkgKiBj b25uZWN0aW9ucywgYnV0IG9ubHkgd2hlbiBjb21taXRpbmcgZm9yIHVuY29uZmlybWVkIGNvbm5l Y3Rpb25zLgotCSAqLwogCWN0ID0gbmZfY3RfZ2V0KHNrYiwgJmN0aW5mbyk7Ci0JaWYgKGN0ICYm IChuZl9jdF9pc19jb25maXJtZWQoY3QpID8gIWNhY2hlZCA6IGluZm8tPmNvbW1pdCkKLQkgICAg JiYgb3ZzX2N0X2hlbHBlcihza2IsIGluZm8tPmZhbWlseSkgIT0gTkZfQUNDRVBUKSB7Ci0JCVdB Uk5fT05DRSgxLCAiaGVscGVyIHJlamVjdGVkIHBhY2tldCIpOwotCQlyZXR1cm4gLUVJTlZBTDsK KwlpZiAoY3QpIHsKKyNpZmRlZiBDT05GSUdfTkZfTkFUX05FRURFRAorCQkvKiBQYWNrZXRzIHN0 YXJ0aW5nIGEgbmV3IGNvbm5lY3Rpb24gbXVzdCBiZSBOQVR0ZWQgYmVmb3JlIHRoZQorCQkgKiBo ZWxwZXIsIHNvIHRoYXQgdGhlIGhlbHBlciBrbm93cyBhYm91dCB0aGUgTkFULiAgV2UgZW5mb3Jj ZQorCQkgKiB0aGlzIGJ5IGRlbGF5aW5nIGJvdGggTkFUIGFuZCBoZWxwZXIgY2FsbHMgZm9yIHVu Y29uZmlybWVkCisJCSAqIGNvbm5lY3Rpb25zIHVudGlsIHRoZSBjb21taXRpbmcgQ1QgYWN0aW9u LiAgRm9yIGxhdGVyCisJCSAqIHBhY2tldHMgTkFUIGFuZCBIZWxwZXIgbWF5IGJlIGNhbGxlZCBp biBlaXRoZXIgb3JkZXIuCisJCSAqCisJCSAqIE5BVCB3aWxsIGJlIGRvbmUgb25seSBpZiB0aGUg Q1QgYWN0aW9uIGhhcyBOQVQsIGFuZCBvbmx5CisJCSAqIG9uY2UgcGVyIHBhY2tldCAocGVyIHpv bmUpLCBhcyBndWFyZGVkIGJ5IHRoZSBOQVQgYml0cyBpbgorCQkgKiB0aGUga2V5LT5jdC5zdGF0 ZS4KKwkJICovCisJCWlmIChpbmZvLT5uYXQgJiYgIShrZXktPmN0LnN0YXRlICYgT1ZTX0NTX0Zf TkFUX01BU0spICYmCisJCSAgICAobmZfY3RfaXNfY29uZmlybWVkKGN0KSB8fCBpbmZvLT5jb21t aXQpICYmCisJCSAgICBvdnNfY3RfbmF0KG5ldCwga2V5LCBpbmZvLCBza2IsIGN0LCBjdGluZm8p ICE9IE5GX0FDQ0VQVCkgeworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKyNlbmRpZgorCQkvKiBD YWxsIHRoZSBoZWxwZXIgd2hlbmV2ZXIgbmZfY29ubnRyYWNrX2luKCkgd2FzIGNhbGxlZCBmb3IK KwkJICogY29uZmlybWVkIGNvbm5lY3Rpb25zLCBidXQgb25seSB3aGVuIGNvbW1pdGluZyBmb3IK KwkJICogdW5jb25maXJtZWQgY29ubmVjdGlvbnMuCisJCSAqLworCQlpZiAoKG5mX2N0X2lzX2Nv bmZpcm1lZChjdCkgPyAhY2FjaGVkIDogaW5mby0+Y29tbWl0KQorCQkgICAgJiYgb3ZzX2N0X2hl bHBlcihza2IsIGluZm8tPmZhbWlseSkgIT0gTkZfQUNDRVBUKSB7CisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQogCX0KIAogCXJldHVybiAwOwpAQCAtNTM1LDE1ICs4MDEsMTMgQEAgc3RhdGljIGlu dCBvdnNfY3RfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXks CiAJaWYgKGV4cCkgewogCQl1OCBzdGF0ZTsKIAorCQkvKiBOT1RFOiBOZXcgY29ubmVjdGlvbnMg YXJlIE5BVHRlZCBhbmQgSGVscGVkIG9ubHkgd2hlbgorCQkgKiBjb21taXRlZCwgc28gd2UgYXJl IG5vdCBjYWxsaW5nIGludG8gTkFUIGhlcmUuCisJCSAqLwogCQlzdGF0ZSA9IE9WU19DU19GX1RS QUNLRUQgfCBPVlNfQ1NfRl9ORVcgfCBPVlNfQ1NfRl9SRUxBVEVEOwogCQlfX292c19jdF91cGRh dGVfa2V5KGtleSwgc3RhdGUsICZpbmZvLT56b25lLCBleHAtPm1hc3Rlcik7Ci0JfSBlbHNlIHsK LQkJaW50IGVycjsKLQotCQllcnIgPSBfX292c19jdF9sb29rdXAobmV0LCBrZXksIGluZm8sIHNr Yik7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCX0KKwl9IGVsc2UKKwkJcmV0dXJuIF9f b3ZzX2N0X2xvb2t1cChuZXQsIGtleSwgaW5mbywgc2tiKTsKIAogCXJldHVybiAwOwogfQpAQCAt NjQzLDYgKzkwNywxMzEgQEAgc3RhdGljIGludCBvdnNfY3RfYWRkX2hlbHBlcihzdHJ1Y3Qgb3Zz X2Nvbm50cmFja19pbmZvICppbmZvLCBjb25zdCBjaGFyICpuYW1lLAogCXJldHVybiAwOwogfQog CisjaWZkZWYgQ09ORklHX05GX05BVF9ORUVERUQKK3N0YXRpYyBpbnQgcGFyc2VfbmF0KGNvbnN0 IHN0cnVjdCBubGF0dHIgKmF0dHIsCisJCSAgICAgc3RydWN0IG92c19jb25udHJhY2tfaW5mbyAq aW5mbywgYm9vbCBsb2cpCit7CisJc3RydWN0IG5sYXR0ciAqYTsKKwlpbnQgcmVtOworCWJvb2wg aGF2ZV9pcF9tYXggPSBmYWxzZTsKKwlib29sIGhhdmVfcHJvdG9fbWF4ID0gZmFsc2U7CisJYm9v bCBpcF92ZXJzID0gKGluZm8tPmZhbWlseSA9PSBORlBST1RPX0lQVjYpOworCisJbmxhX2Zvcl9l YWNoX25lc3RlZChhLCBhdHRyLCByZW0pIHsKKwkJc3RhdGljIGNvbnN0IGludCBvdnNfbmF0X2F0 dHJfbGVuc1tPVlNfTkFUX0FUVFJfTUFYICsgMV1bMl0gPSB7CisJCQlbT1ZTX05BVF9BVFRSX1NS Q10gPSB7MCwgMH0sCisJCQlbT1ZTX05BVF9BVFRSX0RTVF0gPSB7MCwgMH0sCisJCQlbT1ZTX05B VF9BVFRSX0lQX01JTl0gPSB7c2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwKKwkJCQkJCSBzaXplb2Yo c3RydWN0IGluNl9hZGRyKX0sCisJCQlbT1ZTX05BVF9BVFRSX0lQX01BWF0gPSB7c2l6ZW9mKHN0 cnVjdCBpbl9hZGRyKSwKKwkJCQkJCSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKX0sCisJCQlbT1ZT X05BVF9BVFRSX1BST1RPX01JTl0gPSB7c2l6ZW9mKHUxNiksc2l6ZW9mKHUxNil9LAorCQkJW09W U19OQVRfQVRUUl9QUk9UT19NQVhdID0ge3NpemVvZih1MTYpLHNpemVvZih1MTYpfSwKKwkJCVtP VlNfTkFUX0FUVFJfUEVSU0lTVEVOVF0gPSB7MCwgMH0sCisJCQlbT1ZTX05BVF9BVFRSX1BST1RP X0hBU0hdID0gezAsIDB9LAorCQkJW09WU19OQVRfQVRUUl9QUk9UT19SQU5ET01dID0gezAsIDB9 LAorCQl9OworCQlpbnQgdHlwZSA9IG5sYV90eXBlKGEpOworCisJCWlmICh0eXBlID4gT1ZTX05B VF9BVFRSX01BWCkgeworCQkJT1ZTX05MRVJSKGxvZywgIlVua25vd24gbmF0IGF0dHJpYnV0ZSAo dHlwZT0lZCwgbWF4PSVkKS5cbiIsCisJCQl0eXBlLCBPVlNfTkFUX0FUVFJfTUFYKTsKKwkJCXJl dHVybiAtRUlOVkFMOworCQl9CisKKwkJaWYgKG92c19uYXRfYXR0cl9sZW5zW3R5cGVdW2lwX3Zl cnNdICE9IG5sYV9sZW4oYSkpIHsKKwkJCU9WU19OTEVSUihsb2csICJOQVQgYXR0cmlidXRlIHR5 cGUgaGFzIHVuZXhwZWN0ZWQgIgorCQkJCSAgIiBsZW5ndGggKHR5cGU9JWQsIGxlbmd0aD0lZCwg ZXhwZWN0ZWQ9JWQpLlxuIiwKKwkJCQkgIHR5cGUsIG5sYV9sZW4oYSksCisJCQkJICBvdnNfbmF0 X2F0dHJfbGVuc1t0eXBlXVtpcF92ZXJzXSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJ CXN3aXRjaCAodHlwZSkgeworCQljYXNlIE9WU19OQVRfQVRUUl9TUkM6CisJCWNhc2UgT1ZTX05B VF9BVFRSX0RTVDoKKwkJCWlmIChpbmZvLT5uYXQpIHsKKwkJCQlPVlNfTkxFUlIobG9nLCAiT25s eSBvbmUgdHlwZSBvZiBOQVQgbWF5IGJlICIKKwkJCQkJICAic3BlY2lmaWVkLlxuIik7CisJCQkJ cmV0dXJuIC1FUkFOR0U7CisJCQl9CisJCQlpbmZvLT5uYXQgfD0gT1ZTX0NUX05BVDsKKwkJCWlu Zm8tPm5hdCB8PSAoKHR5cGUgPT0gT1ZTX05BVF9BVFRSX1NSQykKKwkJCQkJPyBPVlNfQ1RfU1JD X05BVCA6IE9WU19DVF9EU1RfTkFUKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT1ZTX05BVF9BVFRS X0lQX01JTjoKKwkJCW5sYV9tZW1jcHkoJmluZm8tPnJhbmdlLm1pbl9hZGRyLCBhLCBubGFfbGVu KGEpKTsKKwkJCWluZm8tPnJhbmdlLmZsYWdzIHw9IE5GX05BVF9SQU5HRV9NQVBfSVBTOworCQkJ YnJlYWs7CisKKwkJY2FzZSBPVlNfTkFUX0FUVFJfSVBfTUFYOgorCQkJaGF2ZV9pcF9tYXggPSB0 cnVlOworCQkJbmxhX21lbWNweSgmaW5mby0+cmFuZ2UubWF4X2FkZHIsIGEsCisJCQkJICAgc2l6 ZW9mKGluZm8tPnJhbmdlLm1heF9hZGRyKSk7CisJCQlpbmZvLT5yYW5nZS5mbGFncyB8PSBORl9O QVRfUkFOR0VfTUFQX0lQUzsKKwkJCWJyZWFrOworCisJCWNhc2UgT1ZTX05BVF9BVFRSX1BST1RP X01JTjoKKwkJCWluZm8tPnJhbmdlLm1pbl9wcm90by5hbGwgPSBodG9ucyhubGFfZ2V0X3UxNihh KSk7CisJCQlpbmZvLT5yYW5nZS5mbGFncyB8PSBORl9OQVRfUkFOR0VfUFJPVE9fU1BFQ0lGSUVE OworCQkJYnJlYWs7CisKKwkJY2FzZSBPVlNfTkFUX0FUVFJfUFJPVE9fTUFYOgorCQkJaGF2ZV9w cm90b19tYXggPSB0cnVlOworCQkJaW5mby0+cmFuZ2UubWF4X3Byb3RvLmFsbCA9IGh0b25zKG5s YV9nZXRfdTE2KGEpKTsKKwkJCWluZm8tPnJhbmdlLmZsYWdzIHw9IE5GX05BVF9SQU5HRV9QUk9U T19TUEVDSUZJRUQ7CisJCQlicmVhazsKKworCQljYXNlIE9WU19OQVRfQVRUUl9QRVJTSVNURU5U OgorCQkJaW5mby0+cmFuZ2UuZmxhZ3MgfD0gTkZfTkFUX1JBTkdFX1BFUlNJU1RFTlQ7CisJCQli cmVhazsKKworCQljYXNlIE9WU19OQVRfQVRUUl9QUk9UT19IQVNIOgorCQkJaW5mby0+cmFuZ2Uu ZmxhZ3MgfD0gTkZfTkFUX1JBTkdFX1BST1RPX1JBTkRPTTsKKwkJCWJyZWFrOworCisJCWNhc2Ug T1ZTX05BVF9BVFRSX1BST1RPX1JBTkRPTToKKwkJCWluZm8tPnJhbmdlLmZsYWdzIHw9IE5GX05B VF9SQU5HRV9QUk9UT19SQU5ET01fRlVMTFk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJ T1ZTX05MRVJSKGxvZywgIlVua25vd24gbmF0IGF0dHJpYnV0ZSAoJWQpLlxuIiwgdHlwZSk7CisJ CQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCWlmIChyZW0gPiAwKSB7CisJCU9WU19OTEVS Uihsb2csICJOQVQgYXR0cmlidXRlIGhhcyAlZCB1bmtub3duIGJ5dGVzLlxuIiwgcmVtKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCWlmICghaW5mby0+bmF0KSB7CisJCS8qIERvIG5vdCBhbGxv dyBmbGFncyBpZiBubyB0eXBlIGlzIGdpdmVuLiAqLworCQlpZiAoaW5mby0+cmFuZ2UuZmxhZ3Mp IHsKKwkJCU9WU19OTEVSUihsb2csICJOQVQgZmxhZ3MgbWF5IGJlIGdpdmVuIG9ubHkgd2hlbiBO QVQgIgorCQkJCSAgInJhbmdlIChTUkMgb3IgRFNUKSBpcyBhbHNvIHNwZWNpZmllZC5cbiIpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwkJaW5mby0+bmF0ID0gT1ZTX0NUX05BVDsgICAvKiBO QVQgZXhpc3RpbmcgY29ubmVjdGlvbnMuICovCisJfSBlbHNlIGlmICghaW5mby0+Y29tbWl0KSB7 CisJCU9WU19OTEVSUihsb2csICJOQVQgYXR0cmlidXRlcyBtYXkgYmUgc3BlY2lmaWVkIG9ubHkg IgorCQkJICAid2hlbiBDVCBDT01NSVQgZmxhZyBpcyBhbHNvIHNwZWNpZmllZC5cbiIpOworCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisJLyogQWxsb3cgbWlzc2luZyBJUF9NQVguICovCisJaWYgKGlu Zm8tPnJhbmdlLmZsYWdzICYgTkZfTkFUX1JBTkdFX01BUF9JUFMgJiYgIWhhdmVfaXBfbWF4KSB7 CisJCW1lbWNweSgmaW5mby0+cmFuZ2UubWF4X2FkZHIsICZpbmZvLT5yYW5nZS5taW5fYWRkciwK KwkJICAgICAgIHNpemVvZihpbmZvLT5yYW5nZS5tYXhfYWRkcikpOworCX0KKwkvKiBBbGxvdyBt aXNzaW5nIFBST1RPX01BWC4gKi8KKwlpZiAoaW5mby0+cmFuZ2UuZmxhZ3MgJiBORl9OQVRfUkFO R0VfUFJPVE9fU1BFQ0lGSUVECisJICAgICYmICFoYXZlX3Byb3RvX21heCkgeworCQlpbmZvLT5y YW5nZS5tYXhfcHJvdG8uYWxsID0gaW5mby0+cmFuZ2UubWluX3Byb3RvLmFsbDsKKwl9CisJcmV0 dXJuIDA7Cit9CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBvdnNfY3RfbGVuX3RibCBv dnNfY3RfYXR0cl9sZW5zW09WU19DVF9BVFRSX01BWCArIDFdID0gewogCVtPVlNfQ1RfQVRUUl9D T01NSVRdCT0geyAubWlubGVuID0gMCwgLm1heGxlbiA9IDAgfSwKIAlbT1ZTX0NUX0FUVFJfWk9O RV0JPSB7IC5taW5sZW4gPSBzaXplb2YodTE2KSwKQEAgLTY1Miw3ICsxMDQxLDExIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb3ZzX2N0X2xlbl90Ymwgb3ZzX2N0X2F0dHJfbGVuc1tPVlNfQ1RfQVRU Ul9NQVggKyAxXSA9IHsKIAlbT1ZTX0NUX0FUVFJfTEFCRUxTXQk9IHsgLm1pbmxlbiA9IHNpemVv ZihzdHJ1Y3QgbWRfbGFiZWxzKSwKIAkJCQkgICAgLm1heGxlbiA9IHNpemVvZihzdHJ1Y3QgbWRf bGFiZWxzKSB9LAogCVtPVlNfQ1RfQVRUUl9IRUxQRVJdCT0geyAubWlubGVuID0gMSwKLQkJCQkg ICAgLm1heGxlbiA9IE5GX0NUX0hFTFBFUl9OQU1FX0xFTiB9CisJCQkJICAgIC5tYXhsZW4gPSBO Rl9DVF9IRUxQRVJfTkFNRV9MRU4gfSwKKyNpZmRlZiBDT05GSUdfTkZfTkFUX05FRURFRAorCS8q IE5BVCBsZW5ndGggaXMgY2hlY2tlZCB3aGVuIHBhcnNpbmcgdGhlIG5lc3RlZCBhdHRyaWJ1dGVz LiAqLworCVtPVlNfQ1RfQVRUUl9OQVRdCT0geyAubWlubGVuID0gMCwgLm1heGxlbiA9IElOVF9N QVggfSwKKyNlbmRpZgogfTsKIAogc3RhdGljIGludCBwYXJzZV9jdChjb25zdCBzdHJ1Y3Qgbmxh dHRyICphdHRyLCBzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICppbmZvLApAQCAtNzE5LDYgKzEx MTIsMTQgQEAgc3RhdGljIGludCBwYXJzZV9jdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBz dHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICppbmZvLAogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJ fQogCQkJYnJlYWs7CisjaWZkZWYgQ09ORklHX05GX05BVF9ORUVERUQKKwkJY2FzZSBPVlNfQ1Rf QVRUUl9OQVQ6IHsKKwkJCWludCBlcnIgPSBwYXJzZV9uYXQoYSwgaW5mbywgbG9nKTsKKwkJCWlm IChlcnIpCisJCQkJcmV0dXJuIGVycjsKKwkJCWJyZWFrOworCQl9CisjZW5kaWYKIAkJZGVmYXVs dDoKIAkJCU9WU19OTEVSUihsb2csICJVbmtub3duIGNvbm50cmFjayBhdHRyICglZCkiLAogCQkJ CSAgdHlwZSk7CkBAIC04MDYsNiArMTIwNyw3MCBAQCBlcnJfZnJlZV9jdDoKIAlyZXR1cm4gZXJy OwogfQogCisjaWZkZWYgQ09ORklHX05GX05BVF9ORUVERUQKK3N0YXRpYyBib29sIG92c19jdF9u YXRfdG9fYXR0cihjb25zdCBzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICppbmZvLAorCQkJICAg ICAgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJc3RydWN0IG5sYXR0ciAqc3RhcnQ7CisKKwlz dGFydCA9IG5sYV9uZXN0X3N0YXJ0KHNrYiwgT1ZTX0NUX0FUVFJfTkFUKTsKKwlpZiAoIXN0YXJ0 KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoaW5mby0+bmF0ICYgT1ZTX0NUX1NSQ19OQVQpIHsK KwkJaWYgKG5sYV9wdXRfZmxhZyhza2IsIE9WU19OQVRfQVRUUl9TUkMpKQorCQkJcmV0dXJuIGZh bHNlOworCX0gZWxzZSBpZiAoaW5mby0+bmF0ICYgT1ZTX0NUX0RTVF9OQVQpIHsKKwkJaWYgKG5s YV9wdXRfZmxhZyhza2IsIE9WU19OQVRfQVRUUl9EU1QpKQorCQkJcmV0dXJuIGZhbHNlOworCX0g ZWxzZSB7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChpbmZvLT5yYW5nZS5mbGFncyAmIE5GX05B VF9SQU5HRV9NQVBfSVBTKSB7CisJCWlmIChpbmZvLT5mYW1pbHkgPT0gTkZQUk9UT19JUFY0KSB7 CisJCQlpZiAobmxhX3B1dF9pbl9hZGRyKHNrYiwgT1ZTX05BVF9BVFRSX0lQX01JTiwKKwkJCQkJ aW5mby0+cmFuZ2UubWluX2FkZHIuaXApIHx8CisJCQkgICAgKGluZm8tPnJhbmdlLm1heF9hZGRy LmlwICE9IGluZm8tPnJhbmdlLm1pbl9hZGRyLmlwCisJCQkgICAgICYmIChubGFfcHV0X2luX2Fk ZHIoc2tiLCBPVlNfTkFUX0FUVFJfSVBfTUFYLAorCQkJCQkJIGluZm8tPnJhbmdlLm1heF9hZGRy LmlwKSkpKQorCQkJCXJldHVybiBmYWxzZTsKKwkJfSBlbHNlIGlmIChpbmZvLT5mYW1pbHkgPT0g TkZQUk9UT19JUFY2KSB7CisJCQlpZiAobmxhX3B1dF9pbjZfYWRkcihza2IsIE9WU19OQVRfQVRU Ul9JUF9NSU4sCisJCQkJCSAgICAgJmluZm8tPnJhbmdlLm1pbl9hZGRyLmluNikgfHwKKwkJCSAg ICAobWVtY21wKCZpbmZvLT5yYW5nZS5tYXhfYWRkci5pbjYsCisJCQkJICAgICZpbmZvLT5yYW5n ZS5taW5fYWRkci5pbjYsCisJCQkJICAgIHNpemVvZiBpbmZvLT5yYW5nZS5tYXhfYWRkci5pbjYp CisJCQkgICAgICYmIChubGFfcHV0X2luNl9hZGRyKHNrYiwgT1ZTX05BVF9BVFRSX0lQX01BWCwK KwkJCQkJCSAgJmluZm8tPnJhbmdlLm1heF9hZGRyLmluNikpKSkKKwkJCQlyZXR1cm4gZmFsc2U7 CisJCX0gZWxzZQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwlpZiAoaW5mby0+cmFuZ2UuZmxhZ3Mg JiBORl9OQVRfUkFOR0VfUFJPVE9fU1BFQ0lGSUVEICYmCisJICAgIChubGFfcHV0X3UxNihza2Is IE9WU19OQVRfQVRUUl9QUk9UT19NSU4sCisJCQkgbnRvaHMoaW5mby0+cmFuZ2UubWluX3Byb3Rv LmFsbCkpCisJICAgICB8fCAoaW5mby0+cmFuZ2UubWF4X3Byb3RvLmFsbCAhPSBpbmZvLT5yYW5n ZS5taW5fcHJvdG8uYWxsCisJCSAmJiBubGFfcHV0X3UxNihza2IsIE9WU19OQVRfQVRUUl9QUk9U T19NQVgsCisJCQkJbnRvaHMoaW5mby0+cmFuZ2UubWF4X3Byb3RvLmFsbCkpKSkpCisJCXJldHVy biBmYWxzZTsKKworCWlmIChpbmZvLT5yYW5nZS5mbGFncyAmIE5GX05BVF9SQU5HRV9QRVJTSVNU RU5UICYmCisJICAgIG5sYV9wdXRfZmxhZyhza2IsIE9WU19OQVRfQVRUUl9QRVJTSVNURU5UKSkK KwkJcmV0dXJuIGZhbHNlOworCWlmIChpbmZvLT5yYW5nZS5mbGFncyAmIE5GX05BVF9SQU5HRV9Q Uk9UT19SQU5ET00gJiYKKwkgICAgbmxhX3B1dF9mbGFnKHNrYiwgT1ZTX05BVF9BVFRSX1BST1RP X0hBU0gpKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKGluZm8tPnJhbmdlLmZsYWdzICYgTkZfTkFU X1JBTkdFX1BST1RPX1JBTkRPTV9GVUxMWSAmJgorCSAgICBubGFfcHV0X2ZsYWcoc2tiLCBPVlNf TkFUX0FUVFJfUFJPVE9fUkFORE9NKSkKKwkJcmV0dXJuIGZhbHNlOworb3V0OgorCW5sYV9uZXN0 X2VuZChza2IsIHN0YXJ0KTsKKworCXJldHVybiB0cnVlOworfQorI2VuZGlmCisKIGludCBvdnNf Y3RfYWN0aW9uX3RvX2F0dHIoY29uc3Qgc3RydWN0IG92c19jb25udHJhY2tfaW5mbyAqY3RfaW5m bywKIAkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKQEAgLTgzNCw3ICsxMjk5LDEwIEBAIGlu dCBvdnNfY3RfYWN0aW9uX3RvX2F0dHIoY29uc3Qgc3RydWN0IG92c19jb25udHJhY2tfaW5mbyAq Y3RfaW5mbywKIAkJCQkgICBjdF9pbmZvLT5oZWxwZXItPm5hbWUpKQogCQkJcmV0dXJuIC1FTVNH U0laRTsKIAl9Ci0KKyNpZmRlZiBDT05GSUdfTkZfTkFUX05FRURFRAorCWlmIChjdF9pbmZvLT5u YXQgJiYgIW92c19jdF9uYXRfdG9fYXR0cihjdF9pbmZvLCBza2IpKQorCQlyZXR1cm4gLUVNU0dT SVpFOworI2VuZGlmCiAJbmxhX25lc3RfZW5kKHNrYiwgc3RhcnQpOwogCiAJcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmggYi9uZXQvb3BlbnZzd2l0Y2gv Y29ubnRyYWNrLmgKaW5kZXggYTc1NDRmNC4uOGY2MjMwYiAxMDA2NDQKLS0tIGEvbmV0L29wZW52 c3dpdGNoL2Nvbm50cmFjay5oCisrKyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaApAQCAt MzcsNyArMzcsOCBAQCB2b2lkIG92c19jdF9mcmVlX2FjdGlvbihjb25zdCBzdHJ1Y3QgbmxhdHRy ICphKTsKIAogI2RlZmluZSBDVF9TVVBQT1JURURfTUFTSyAoT1ZTX0NTX0ZfTkVXIHwgT1ZTX0NT X0ZfRVNUQUJMSVNIRUQgfCBcCiAJCQkgICBPVlNfQ1NfRl9SRUxBVEVEIHwgT1ZTX0NTX0ZfUkVQ TFlfRElSIHwgXAotCQkJICAgT1ZTX0NTX0ZfSU5WQUxJRCB8IE9WU19DU19GX1RSQUNLRUQpCisJ CQkgICBPVlNfQ1NfRl9JTlZBTElEIHwgT1ZTX0NTX0ZfVFJBQ0tFRCB8IFwKKwkJCSAgIE9WU19D U19GX1NSQ19OQVQgfCBPVlNfQ1NfRl9EU1RfTkFUKQogI2Vsc2UKICNpbmNsdWRlIDxsaW51eC9l cnJuby5oPgogCi0tIAoyLjEuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3BlbnZzd2l0Y2gub3JnCmh0dHA6Ly9v cGVudnN3aXRjaC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK