From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: [PATCH v2 16/17] xen: tools: add SGX to applying CPUID policy Date: Mon, 4 Dec 2017 08:15:27 +0800 Message-ID: <20171204001528.1342-17-boqun.feng@intel.com> References: <20171204001528.1342-1-boqun.feng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171204001528.1342-1-boqun.feng@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Tim Deegan , kai.huang@linux.intel.com, Julien Grall , Jan Beulich , David Scott , Boqun Feng List-Id: xen-devel@lists.xenproject.org RnJvbTogS2FpIEh1YW5nIDxrYWkuaHVhbmdAbGludXguaW50ZWwuY29tPgoKSW4gbGlieGMsIGEg bmV3IHN0cnVjdHVyZSAneGNfY3B1aWRfcG9saWN5X2J1aWxkX2luZm9fdCcgaXMgYWRkZWQgdG8g Y2FycnkKZG9tYWluJ3MgRVBDIGJhc2UgYW5kIHNpemUgaW5mbyBmcm9tIGxpYnhsLiBsaWJ4bF9j cHVpZF9hcHBseV9wb2xpY3kgaXMgYWxzbwpjaGFuZ2VkIHRvIHRha2UgJ2xpYnhsX2RvbWFpbl9i dWlsZF9pbmZvX3QnIGFzIHBhcmFtZXRlciwgd2hlcmUgZG9tYWluJ3MgRVBDCmJhc2UgYW5kIHNp emUgY2FuIGJlIGdvdCBhbmQgcGFzc2VkIHRvIHhjX2NwdWlkX2FwcGx5X3BvbGljeS4KeGNfY3B1 aWRfYXBwbHlfcG9saWN5IGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgU0dYIENQVUlELiBJZiBoeXBl cnZpc29yIGRvZXNuJ3QKcmVwb3J0IFNHWCBmZWF0dXJlIGluIGhvc3QgdHlwZSBjcHVmZWF0dXJl c2V0LCB0aGVuIHVzaW5nICdlcGMnIHBhcmFtZXRlcgpyZXN1bHRzIGluIGRvbWFpbiBjcmVhdGlv biBmYWlsdXJlIGFzIFNHWCBjYW5ub3QgYmUgc3VwcG9ydGVkLgoKU2lnbmVkLW9mZi1ieTogS2Fp IEh1YW5nIDxrYWkuaHVhbmdAbGludXguaW50ZWwuY29tPgotLS0KIHRvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oICAgICAgIHwgMTQgKysrKysrKysKIHRvb2xzL2xpYnhjL3hjX2NwdWlkX3g4 Ni5jICAgICAgICAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQog dG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICAgfCAgMyArLQogdG9vbHMvbGlieGwv bGlieGxfY3B1aWQuYyAgICAgICAgICAgfCAxNSArKysrKystLQogdG9vbHMvbGlieGwvbGlieGxf ZG9tLmMgICAgICAgICAgICAgfCAgNiArKystCiB0b29scy9saWJ4bC9saWJ4bF9ub2NwdWlkLmMg ICAgICAgICB8ICA0ICsrLQogdG9vbHMvb2NhbWwvbGlicy94Yy94ZW5jdHJsX3N0dWJzLmMgfCAx MSArKysrKy0KIHRvb2xzL3B5dGhvbi94ZW4vbG93bGV2ZWwveGMveGMuYyAgIHwgMTEgKysrKyst CiA4IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oCmluZGV4IDY2NmRiMGI5MTkzZS4uYWQ0NDI5Y2E1ZmZkIDEwMDY0NAot LS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaApAQCAtMTgyNyw2ICsxODI3LDE5IEBAIGludCB4Y19kb21haW5fZGVidWdf Y29udHJvbCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCB2Y3B1KTsKIAogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykKK3R5cGVkZWYgc3RydWN0IHhjX2NwdWlkX3BvbGljeV9idWlsZF9pbmZvX3NneCB7Cisg ICAgdWludDY0X3QgZXBjX2Jhc2U7CisgICAgdWludDY0X3QgZXBjX3NpemU7Cit9IHhjX2NwdWlk X3BvbGljeV9idWlsZF9pbmZvX3NneF90OworCit0eXBlZGVmIHN0cnVjdCB4Y19jcHVpZF9wb2xp Y3lfYnVpbGRfaW5mbyB7CisgICAgeGNfY3B1aWRfcG9saWN5X2J1aWxkX2luZm9fc2d4X3Qgc2d4 OworfSB4Y19jcHVpZF9wb2xpY3lfYnVpbGRfaW5mb190OworCitpbnQgeGNfY3B1aWRfY2hlY2so eGNfaW50ZXJmYWNlICp4Y2gsCisgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50 ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqY29uZmlnLAorICAgICAg ICAgICAgICAgICAgIGNoYXIgKipjb25maWdfdHJhbnNmb3JtZWQpOwogaW50IHhjX2NwdWlkX3Nl dCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAqaW5wdXQsCkBAIC0xODM0LDYgKzE4 NDcsNyBAQCBpbnQgeGNfY3B1aWRfc2V0KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAg ICAgICBjaGFyICoqY29uZmlnX3RyYW5zZm9ybWVkKTsKIGludCB4Y19jcHVpZF9hcHBseV9wb2xp Y3koeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19jcHVpZF9wb2xpY3lfYnVpbGRf aW5mb190ICpiX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpmZWF0 dXJlc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZmVhdHVy ZXMpOwogdm9pZCB4Y19jcHVpZF90b19zdHIoY29uc3QgdW5zaWduZWQgaW50ICpyZWdzLApkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMgYi90b29scy9saWJ4Yy94Y19jcHVp ZF94ODYuYwppbmRleCAyNWI5MjJlYTIxODQuLmE3NzhhY2Y3OWE2NCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGMveGNfY3B1aWRfeDg2LmMKKysrIGIvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMK QEAgLTM4LDcgKzM4LDcgQEAgZW51bSB7CiAjZGVmaW5lIGNsZWFyX2ZlYXR1cmUoaWR4LCBkc3Qp ICgoZHN0KSAmPSB+Yml0bWFza29mKGlkeCkpCiAjZGVmaW5lIHNldF9mZWF0dXJlKGlkeCwgZHN0 KSAgICgoZHN0KSB8PSAgYml0bWFza29mKGlkeCkpCiAKLSNkZWZpbmUgREVGX01BWF9CQVNFIDB4 MDAwMDAwMGR1CisjZGVmaW5lIERFRl9NQVhfQkFTRSAweDAwMDAwMDEydQogI2RlZmluZSBERUZf TUFYX0lOVEVMRVhUICAweDgwMDAwMDA4dQogI2RlZmluZSBERUZfTUFYX0FNREVYVCAgICAweDgw MDAwMDFjdQogCkBAIC0xNzgsNiArMTc4LDggQEAgc3RydWN0IGNwdWlkX2RvbWFpbl9pbmZvCiAg ICAgLyogSFZNLW9ubHkgaW5mb3JtYXRpb24uICovCiAgICAgYm9vbCBwYWU7CiAgICAgYm9vbCBu ZXN0ZWRodm07CisKKyAgICB4Y19jcHVpZF9wb2xpY3lfYnVpbGRfaW5mb190ICpiX2luZm87CiB9 OwogCiBzdGF0aWMgdm9pZCBjcHVpZChjb25zdCB1bnNpZ25lZCBpbnQgKmlucHV0LCB1bnNpZ25l ZCBpbnQgKnJlZ3MpCkBAIC0zNjksNiArMzcxLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3hjX2Nw dWlkX3BvbGljeSh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1aWRfZG9tYWluX2luZm8gKmluZm8sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICppbnB1dCwgdW5zaWdu ZWQgaW50ICpyZWdzKQogeworICAgIHhjX2NwdWlkX3BvbGljeV9idWlsZF9pbmZvX3QgKmJfaW5m byA9IGluZm8tPmJfaW5mbzsKKyAgICB4Y19jcHVpZF9wb2xpY3lfYnVpbGRfaW5mb19zZ3hfdCAq c2d4ID0gTlVMTDsKKworICAgIGlmICggYl9pbmZvICkKKyAgICAgICAgc2d4ID0gJmJfaW5mby0+ c2d4OworCiAgICAgc3dpdGNoICggaW5wdXRbMF0gKQogICAgIHsKICAgICBjYXNlIDB4MDAwMDAw MDQ6CkBAIC0zODEsNiArMzg5LDMwIEBAIHN0YXRpYyB2b2lkIGludGVsX3hjX2NwdWlkX3BvbGlj eSh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgcmVnc1szXSAmPSAweDNmZnU7CiAgICAgICAg IGJyZWFrOwogCisgICAgY2FzZSAweDAwMDAwMDEyOgorICAgICAgICBpZiAoICFzZ3ggKSB7Cisg ICAgICAgICAgICByZWdzWzBdID0gcmVnc1sxXSA9IHJlZ3NbMl0gPSByZWdzWzNdID0gMDsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhc2d4LT5lcGNfYmFz ZSB8fCAhc2d4LT5lcGNfc2l6ZSApIHsKKyAgICAgICAgICAgIHJlZ3NbMF0gPSByZWdzWzFdID0g cmVnc1syXSA9IHJlZ3NbM10gPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor ICAgICAgICBpZiAoIGlucHV0WzFdID09IDIgKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAg ICAgICogRklYIEVQQyBiYXNlIGFuZCBzaXplIGZvciBTR1ggQ1BVSUQgbGVhZiAyLiBYZW4gaHlw ZXJ2aXNvciBpcworICAgICAgICAgICAgICogZGVwZW5kaW5nIG9uIFhFTl9ET01DVExfc2V0X2Nw dWlkIHRvIGtub3cgZG9tYWluJ3MgRVBDIGJhc2UKKyAgICAgICAgICAgICAqIGFuZCBzaXplLgor ICAgICAgICAgICAgICovCisgICAgICAgICAgICByZWdzWzBdID0gKHVpbnQzMl90KShzZ3gtPmVw Y19iYXNlICYgMHhmZmZmZjAwMCkgfCAweDE7CisgICAgICAgICAgICByZWdzWzFdID0gKHVpbnQz Ml90KShzZ3gtPmVwY19iYXNlID4+IDMyKTsKKyAgICAgICAgICAgIHJlZ3NbMl0gPSAodWludDMy X3QpKHNneC0+ZXBjX3NpemUgJiAweGZmZmZmMDAwKSB8IDB4MTsKKyAgICAgICAgICAgIHJlZ3Nb M10gPSAodWludDMyX3QpKHNneC0+ZXBjX3NpemUgPj4gMzIpOworICAgICAgICB9CisgICAgICAg IGJyZWFrOworCiAgICAgY2FzZSAweDgwMDAwMDAwOgogICAgICAgICBpZiAoIHJlZ3NbMF0gPiBE RUZfTUFYX0lOVEVMRVhUICkKICAgICAgICAgICAgIHJlZ3NbMF0gPSBERUZfTUFYX0lOVEVMRVhU OwpAQCAtNDQ0LDYgKzQ3NiwxMCBAQCBzdGF0aWMgdm9pZCB4Y19jcHVpZF9odm1fcG9saWN5KHhj X2ludGVyZmFjZSAqeGNoLAogICAgICAgICByZWdzWzFdID0gcmVnc1syXSA9IHJlZ3NbM10gPSAw OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgMHgwMDAwMDAxMjoKKyAgICAgICAgLyogSW50 ZWwgU0dYLiBQYXNzdGhyb3VnaCB0byBJbnRlbCBmdW5jdGlvbiAqLworICAgICAgICBicmVhazsK KwogICAgIGNhc2UgMHg4MDAwMDAwMDoKICAgICAgICAgLyogUGFzc3Rocm91Z2ggdG8gY3B1IHZl bmRvciBzcGVjaWZpYyBmdW5jdGlvbnMgKi8KICAgICAgICAgYnJlYWs7CkBAIC02NDksMTIgKzY4 NSwxMyBAQCB2b2lkIHhjX2NwdWlkX3RvX3N0cihjb25zdCB1bnNpZ25lZCBpbnQgKnJlZ3MsIGNo YXIgKipzdHJzKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc2FuaXRpc2VfZmVhdHVyZXNldChz dHJ1Y3QgY3B1aWRfZG9tYWluX2luZm8gKmluZm8pCitzdGF0aWMgaW50IHNhbml0aXNlX2ZlYXR1 cmVzZXQoc3RydWN0IGNwdWlkX2RvbWFpbl9pbmZvICppbmZvKQogewogICAgIGNvbnN0IHVpbnQz Ml90IGZzX3NpemUgPSB4Y19nZXRfY3B1X2ZlYXR1cmVzZXRfc2l6ZSgpOwogICAgIHVpbnQzMl90 IGRpc2FibGVkX2ZlYXR1cmVzW2ZzX3NpemVdOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBk ZWVwX2ZlYXR1cmVzW10gPSBJTklUX0RFRVBfRkVBVFVSRVM7CiAgICAgdW5zaWduZWQgaW50IGks IGI7CisgICAgeGNfY3B1aWRfcG9saWN5X2J1aWxkX2luZm9fdCAqYl9pbmZvID0gaW5mby0+Yl9p bmZvOwogCiAgICAgaWYgKCBpbmZvLT5odm0gKQogICAgIHsKQEAgLTcwNyw5ICs3NDQsMTkgQEAg c3RhdGljIHZvaWQgc2FuaXRpc2VfZmVhdHVyZXNldChzdHJ1Y3QgY3B1aWRfZG9tYWluX2luZm8g KmluZm8pCiAgICAgICAgICAgICBkaXNhYmxlZF9mZWF0dXJlc1tpXSAmPSB+ZGZzW2ldOwogICAg ICAgICB9CiAgICAgfQorCisgICAgLyogQ2Fubm90IHN1cHBvcnQgJ2VwYycgcGFyYW1ldGVyIGlm IFNHWCBpcyB1bmF2YWlsYWJsZSAqLworICAgIGlmICggYl9pbmZvICYmIGJfaW5mby0+c2d4LmVw Y19iYXNlICYmIGJfaW5mby0+c2d4LmVwY19zaXplICkKKyAgICAgICAgaWYgKCF0ZXN0X2JpdChY ODZfRkVBVFVSRV9TR1gsIGluZm8tPmZlYXR1cmVzZXQpKSB7CisgICAgICAgICAgICBwcmludGYo IlhlbiBoeXBlcnZpc29yIGRvZXNuJ3Qgc3VwcG9ydCBTR1guXG4iKTsKKyAgICAgICAgICAgIHJl dHVybiAtRUZBVUxUOworICAgICAgICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogaW50IHhjX2Nw dWlkX2FwcGx5X3BvbGljeSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHhjX2NwdWlkX3BvbGljeV9idWlsZF9pbmZvX3QgKmJfaW5m bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmZlYXR1cmVzZXQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mZWF0dXJlcykKIHsKQEAgLTcy Miw2ICs3NjksOCBAQCBpbnQgeGNfY3B1aWRfYXBwbHlfcG9saWN5KHhjX2ludGVyZmFjZSAqeGNo LCB1aW50MzJfdCBkb21pZCwKICAgICBpZiAoIHJjICkKICAgICAgICAgZ290byBvdXQ7CiAKKyAg ICBpbmZvLmJfaW5mbyA9IGJfaW5mbzsKKwogICAgIGNwdWlkKGlucHV0LCByZWdzKTsKICAgICBi YXNlX21heCA9IChyZWdzWzBdIDw9IERFRl9NQVhfQkFTRSkgPyByZWdzWzBdIDogREVGX01BWF9C QVNFOwogICAgIGlucHV0WzBdID0gMHg4MDAwMDAwMDsKQEAgLTczMiw3ICs3ODEsOSBAQCBpbnQg eGNfY3B1aWRfYXBwbHlfcG9saWN5KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwK ICAgICBlbHNlCiAgICAgICAgIGV4dF9tYXggPSAocmVnc1swXSA8PSBERUZfTUFYX0lOVEVMRVhU KSA/IHJlZ3NbMF0gOiBERUZfTUFYX0lOVEVMRVhUOwogCi0gICAgc2FuaXRpc2VfZmVhdHVyZXNl dCgmaW5mbyk7CisgICAgcmMgPSBzYW5pdGlzZV9mZWF0dXJlc2V0KCZpbmZvKTsKKyAgICBpZiAo IHJjICkKKyAgICAgICAgZ290byBvdXQ7CiAKICAgICBpbnB1dFswXSA9IDA7CiAgICAgaW5wdXRb MV0gPSBYRU5fQ1BVSURfSU5QVVRfVU5VU0VEOwpAQCAtNzU3LDEyICs4MDgsMjEgQEAgaW50IHhj X2NwdWlkX2FwcGx5X3BvbGljeSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAg ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICAvKiBJbnRlbCBT R1ggKi8KKyAgICAgICAgaWYgKCBpbnB1dFswXSA9PSAweDEyICkKKyAgICAgICAgeworICAgICAg ICAgICAgaW5wdXRbMV0rKzsKKyAgICAgICAgICAgIC8qIEludGVsIFNHWCBoYXMgMyBsZWF2ZXMg Ki8KKyAgICAgICAgICAgIGlmICggaW5wdXRbMV0gPCAzICkKKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGlucHV0WzBdKys7CiAgICAgICAgIGlmICggIShp bnB1dFswXSAmIDB4ODAwMDAwMDB1KSAmJiAoaW5wdXRbMF0gPiBiYXNlX21heCApICkKICAgICAg ICAgICAgIGlucHV0WzBdID0gMHg4MDAwMDAwMHU7CiAKICAgICAgICAgaW5wdXRbMV0gPSBYRU5f Q1BVSURfSU5QVVRfVU5VU0VEOwotICAgICAgICBpZiAoIChpbnB1dFswXSA9PSA0KSB8fCAoaW5w dXRbMF0gPT0gNykgKQorICAgICAgICBpZiAoIChpbnB1dFswXSA9PSA0KSB8fCAoaW5wdXRbMF0g PT0gNykgfHwgaW5wdXRbMF0gPT0gMHgxMikKICAgICAgICAgICAgIGlucHV0WzFdID0gMDsKICAg ICAgICAgZWxzZSBpZiAoIGlucHV0WzBdID09IDB4ZCApCiAgICAgICAgICAgICBpbnB1dFsxXSA9 IDE7IC8qIFhlbiBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZXMgYWxtb3N0IGV2ZXJ5dGhpbmcuICov CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaApp bmRleCA1ZTlhZWQ3MzlkN2EuLjFhOGExZDc4NmNlYiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwv bGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0yMDQ5LDcgKzIwNDksOCBAQCBs aWJ4bF9kZXZpY2VfcGNpICpsaWJ4bF9kZXZpY2VfcGNpX2Fzc2lnbmFibGVfbGlzdChsaWJ4bF9j dHggKmN0eCwgaW50ICpudW0pOwogaW50IGxpYnhsX2NwdWlkX3BhcnNlX2NvbmZpZyhsaWJ4bF9j cHVpZF9wb2xpY3lfbGlzdCAqY3B1aWQsIGNvbnN0IGNoYXIqIHN0cik7CiBpbnQgbGlieGxfY3B1 aWRfcGFyc2VfY29uZmlnX3hlbmQobGlieGxfY3B1aWRfcG9saWN5X2xpc3QgKmNwdWlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cik7Ci12b2lkIGxp YnhsX2NwdWlkX2FwcGx5X3BvbGljeShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpOwor aW50IGxpYnhsX2NwdWlkX2FwcGx5X3BvbGljeShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZv ICppbmZvKTsKIHZvaWQgbGlieGxfY3B1aWRfc2V0KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJfdCBk b21pZCwKICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2NwdWlkX3BvbGljeV9saXN0IGNwdWlk KTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfY3B1aWQuYyBiL3Rvb2xzL2xpYnhs L2xpYnhsX2NwdWlkLmMKaW5kZXggZTY5MmI2MTU2OTc5Li41ZmI3NDMyMmI5OWEgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2NwdWlkLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3B1 aWQuYwpAQCAtMzg2LDkgKzM4NiwyMCBAQCBpbnQgbGlieGxfY3B1aWRfcGFyc2VfY29uZmlnX3hl bmQobGlieGxfY3B1aWRfcG9saWN5X2xpc3QgKmNwdWlkLAogICAgIHJldHVybiAwOwogfQogCi12 b2lkIGxpYnhsX2NwdWlkX2FwcGx5X3BvbGljeShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9t aWQpCitpbnQgbGlieGxfY3B1aWRfYXBwbHlfcG9saWN5KGxpYnhsX2N0eCAqY3R4LCB1aW50MzJf dCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX2J1aWxk X2luZm8gKmluZm8pCiB7Ci0gICAgeGNfY3B1aWRfYXBwbHlfcG9saWN5KGN0eC0+eGNoLCBkb21p ZCwgTlVMTCwgMCk7CisgICAgeGNfY3B1aWRfcG9saWN5X2J1aWxkX2luZm9fdCBjcHVpZF9iaW5m bzsKKworICAgIG1lbXNldCgmY3B1aWRfYmluZm8sIDAsIHNpemVvZiAoeGNfY3B1aWRfcG9saWN5 X2J1aWxkX2luZm9fdCkpOworCisgICAgLyogQ3VycmVudGx5IG9ubHkgSW50ZWwgU0dYIG5lZWRz IGluZm8gd2hlbiBhcHBseWluZyBDUFVJRCBwb2xpY3kgKi8KKyAgICBpZiAoaW5mby0+dHlwZSA9 PSBMSUJYTF9ET01BSU5fVFlQRV9IVk0pIHsKKyAgICAgICAgY3B1aWRfYmluZm8uc2d4LmVwY19i YXNlID0gaW5mby0+dS5odm0uc2d4LmVwY2Jhc2U7CisgICAgICAgIGNwdWlkX2JpbmZvLnNneC5l cGNfc2l6ZSA9IChpbmZvLT51Lmh2bS5zZ3guZXBja2IgPDwgMTApOworICAgIH0KKworICAgIHJl dHVybiB4Y19jcHVpZF9hcHBseV9wb2xpY3koY3R4LT54Y2gsIGRvbWlkLCAmY3B1aWRfYmluZm8s IE5VTEwsIDApOwogfQogCiB2b2lkIGxpYnhsX2NwdWlkX3NldChsaWJ4bF9jdHggKmN0eCwgdWlu dDMyX3QgZG9taWQsCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kb20uYyBiL3Rvb2xz L2xpYnhsL2xpYnhsX2RvbS5jCmluZGV4IGJiZGJhN2U2ZTI5Mi4uYWMzOGFkNjVkZDE5IDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb20uYworKysgYi90b29scy9saWJ4bC9saWJ4bF9k b20uYwpAQCAtNTk3LDcgKzU5NywxMSBAQCBpbnQgbGlieGxfX2J1aWxkX3Bvc3QobGlieGxfX2dj ICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwogICAgIH0K IAotICAgIGxpYnhsX2NwdWlkX2FwcGx5X3BvbGljeShjdHgsIGRvbWlkKTsKKyAgICByYyA9IGxp YnhsX2NwdWlkX2FwcGx5X3BvbGljeShjdHgsIGRvbWlkLCBpbmZvKTsKKyAgICBpZiAocmMpIHsK KyAgICAgICAgTE9HKEVSUk9SLCAiRmFpbGVkIHRvIGFwcGx5IENQVUlEIHBvbGljeSAoJWQpIiwg cmMpOworICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKKyAgICB9CiAgICAgaWYgKGluZm8tPmNw dWlkICE9IE5VTEwpCiAgICAgICAgIGxpYnhsX2NwdWlkX3NldChjdHgsIGRvbWlkLCBpbmZvLT5j cHVpZCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX25vY3B1aWQuYyBiL3Rvb2xz L2xpYnhsL2xpYnhsX25vY3B1aWQuYwppbmRleCBlZjExNjFjNDM0MmIuLjcwZTA0ODZlOTgxYiAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfbm9jcHVpZC5jCisrKyBiL3Rvb2xzL2xpYnhs L2xpYnhsX25vY3B1aWQuYwpAQCAtMzQsOCArMzQsMTAgQEAgaW50IGxpYnhsX2NwdWlkX3BhcnNl X2NvbmZpZ194ZW5kKGxpYnhsX2NwdWlkX3BvbGljeV9saXN0ICpjcHVpZCwKICAgICByZXR1cm4g MDsKIH0KIAotdm9pZCBsaWJ4bF9jcHVpZF9hcHBseV9wb2xpY3kobGlieGxfY3R4ICpjdHgsIHVp bnQzMl90IGRvbWlkKQoraW50IGxpYnhsX2NwdWlkX2FwcGx5X3BvbGljeShsaWJ4bF9jdHggKmN0 eCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rv bWFpbl9idWlsZF9pbmZvICppbmZvKQogeworICAgIHJldHVybiAwOwogfQogCiB2b2lkIGxpYnhs X2NwdWlkX3NldChsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCmRpZmYgLS1naXQgYS90 b29scy9vY2FtbC9saWJzL3hjL3hlbmN0cmxfc3R1YnMuYyBiL3Rvb2xzL29jYW1sL2xpYnMveGMv eGVuY3RybF9zdHVicy5jCmluZGV4IGM2NjczMmY2N2M4OS4uNGM0NjlkZDIyZjZlIDEwMDY0NAot LS0gYS90b29scy9vY2FtbC9saWJzL3hjL3hlbmN0cmxfc3R1YnMuYworKysgYi90b29scy9vY2Ft bC9saWJzL3hjL3hlbmN0cmxfc3R1YnMuYwpAQCAtNzk2LDcgKzc5NiwxNiBAQCBDQU1McHJpbSB2 YWx1ZSBzdHViX3hjX2RvbWFpbl9jcHVpZF9hcHBseV9wb2xpY3kodmFsdWUgeGNoLCB2YWx1ZSBk b21pZCkKICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCiAJaW50 IHI7CiAKLQlyID0geGNfY3B1aWRfYXBwbHlfcG9saWN5KF9IKHhjaCksIF9EKGRvbWlkKSwgTlVM TCwgMCk7CisgICAgLyoKKyAgICAgKiBGSVhNRToKKyAgICAgKgorICAgICAqIERvbid0IHN1cHBv cnQgcGFzc2luZyBTR1ggaW5mbyB0byB4Y19jcHVpZF9hcHBseV9wb2xpY3kgaGVyZS4gVG8gYmUK KyAgICAgKiBob25lc3QgSSBkb24ndCBrbm93IHRoZSBwdXJwb3NlIG9mIHRoaXMgQ0FNTCBmdW5j dGlvbiwgc28gSSBkb24ndAorICAgICAqIGtub3cgd2hldGhlciB3ZSBuZWVkIHRvIGFsbG93ICpj YWxsZXIqIG9mIHRoaXMgZnVuY3Rpb24gdG8gcGFzcyBTR1gKKyAgICAgKiBpbmZvLiBBcyBFUEMg YmFzZSBpcyBjYWxjdWxhdGVkIGludGVybmFsbHkgYnkgdG9vbHN0YWNrIHNvIEkgdGhpbmsKKyAg ICAgKiBpdCBpcyBhbHNvIGltcG9zc2libGUgdG8gcGFzcyBFUEMgYmFzZSBmcm9tICp1c2VyKi4K KyAgICAgKi8KKwlyID0geGNfY3B1aWRfYXBwbHlfcG9saWN5KF9IKHhjaCksIF9EKGRvbWlkKSwg TlVMTCwgTlVMTCwgMCk7CiAJaWYgKHIgPCAwKQogCQlmYWlsd2l0aF94YyhfSCh4Y2gpKTsKICNl bHNlCmRpZmYgLS1naXQgYS90b29scy9weXRob24veGVuL2xvd2xldmVsL3hjL3hjLmMgYi90b29s cy9weXRob24veGVuL2xvd2xldmVsL3hjL3hjLmMKaW5kZXggZjUwMTc2NDEwMGFkLi5iZGVjZDA0 NjZhOWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3B5dGhvbi94ZW4vbG93bGV2ZWwveGMveGMuYworKysg Yi90b29scy9weXRob24veGVuL2xvd2xldmVsL3hjL3hjLmMKQEAgLTcxOSw3ICs3MTksMTYgQEAg c3RhdGljIFB5T2JqZWN0ICpweXhjX2RvbV9zZXRfcG9saWN5X2NwdWlkKFhjT2JqZWN0ICpzZWxm LAogICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmZG9taWQpICkKICAgICAg ICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIHhjX2NwdWlkX2FwcGx5X3BvbGljeShzZWxmLT54 Y19oYW5kbGUsIGRvbWlkLCBOVUxMLCAwKSApCisgICAgLyoKKyAgICAgKiBGSVhNRToKKyAgICAg KgorICAgICAqIERvbid0IHN1cHBvcnQgcGFzc2luZyBTR1ggaW5mbyB0byB4Y19jcHVpZF9hcHBs eV9wb2xpY3kgaGVyZS4gVG8gYmUKKyAgICAgKiBob25lc3QgSSBkb24ndCBrbm93IHRoZSBwdXJw b3NlIG9mIHRoaXMgcHl0aG9uIGZ1bmN0aW9uLCBzbyBJIGRvbid0CisgICAgICoga25vdyB3aGV0 aGVyIHdlIG5lZWQgdG8gYWxsb3cgKmNhbGxlciogb2YgdGhpcyBmdW5jdGlvbiB0byBwYXNzIFNH WAorICAgICAqIGluZm8uIEFzIEVQQyBiYXNlIGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseSBieSB0 b29sc3RhY2sgc28gSSB0aGluaworICAgICAqIGl0IGlzIGFsc28gaW1wb3NzaWJsZSB0byBwYXNz IEVQQyBiYXNlIGZyb20gKnVzZXIqLgorICAgICAqLworICAgIGlmICggeGNfY3B1aWRfYXBwbHlf cG9saWN5KHNlbGYtPnhjX2hhbmRsZSwgZG9taWQsIE5VTEwsIE5VTEwsIDApICkKICAgICAgICAg cmV0dXJuIHB5eGNfZXJyb3JfdG9fZXhjZXB0aW9uKHNlbGYtPnhjX2hhbmRsZSk7CiAKICAgICBQ eV9JTkNSRUYoemVybyk7Ci0tIAoyLjE1LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs