From mboxrd@z Thu Jan 1 00:00:00 1970 From: Norbert Manthey Subject: [PATCH SpectreV1+L1TF v7 9/9] common/grant_table: block speculative out-of-bound accesses Date: Thu, 21 Feb 2019 09:16:43 +0100 Message-ID: <1550737003-25779-10-git-send-email-nmanthey@amazon.de> References: <1550737003-25779-1-git-send-email-nmanthey@amazon.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gwjep-0002Fx-48 for xen-devel@lists.xenproject.org; Thu, 21 Feb 2019 08:24:39 +0000 In-Reply-To: <1550737003-25779-1-git-send-email-nmanthey@amazon.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Tim Deegan , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Dario Faggioli , Martin Pohlack , Pawel Wieczorkiewicz , Julien Grall , David Woodhouse , Jan Beulich , Martin Mazein , Julian Stecklina , Bjoern Doebel , Norbert Manthey List-Id: xen-devel@lists.xenproject.org R3Vlc3RzIGNhbiBpc3N1ZSBncmFudCB0YWJsZSBvcGVyYXRpb25zIGFuZCBwcm92aWRlIGd1ZXN0 IGNvbnRyb2xsZWQKZGF0YSB0byB0aGVtLiBUaGlzIGRhdGEgaXMgYWxzbyB1c2VkIGZvciBtZW1v cnkgbG9hZHMuIFRvIGF2b2lkCnNwZWN1bGF0aXZlIG91dC1vZi1ib3VuZCBhY2Nlc3Nlcywgd2Ug dXNlIHRoZSBhcnJheV9pbmRleF9ub3NwZWMgbWFjcm8Kd2hlcmUgYXBwbGljYWJsZS4gSG93ZXZl ciwgdGhlcmUgYXJlIGFsc28gbWVtb3J5IGFjY2Vzc2VzIHRoYXQgY2Fubm90CmJlIHByb3RlY3Rl ZCBieSBhIHNpbmdsZSBhcnJheSBwcm90ZWN0aW9uLCBvciBtdWx0aXBsZSBhY2Nlc3NlcyBpbiBh CnJvdy4gVG8gcHJvdGVjdCB0aGVzZSwgYSBub3NwZWMgYmFycmllciBpcyBwbGFjZWQgYmV0d2Vl biB0aGUgYWN0dWFsCnJhbmdlIGNoZWNrIGFuZCB0aGUgYWNjZXNzIHZpYSB0aGUgYmxvY2tfc3Bl Y3VsYXRpb24gbWFjcm8uCgpBcyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgZ3JhbnQgdGFibGVzIHVz ZSBzdHJ1Y3R1cmVzIG9mIGRpZmZlcmVudCBzaXplLAphbmQgdGhlIHN0YXR1cyBpcyBlbmNvZGVk IGluIGFuIGFycmF5IGZvciB2ZXJzaW9uIDIsIHNwZWN1bGF0aXZlCmV4ZWN1dGlvbiBtaWdodCBw ZXJmb3JtIG91dC1vZi1ib3VuZCBhY2Nlc3NlcyBvZiB2ZXJzaW9uIDIgd2hpbGUKdGhlIHRhYmxl IGlzIGFjdHVhbGx5IHVzaW5nIHZlcnNpb24gMS4gSGVuY2UsIHNwZWN1bGF0aW9uIGlzIHByZXZl bnRlZAp3aGVuIGFjY2Vzc2luZyBtZW1vcnkgYmFzZWQgb24gdGhlIGdyYW50IHRhYmxlIHZlcnNp b24uCgpUaGlzIGlzIHBhcnQgb2YgdGhlIHNwZWN1bGF0aXZlIGhhcmRlbmluZyBlZmZvcnQuCgpT aWduZWQtb2ZmLWJ5OiBOb3JiZXJ0IE1hbnRoZXkgPG5tYW50aGV5QGFtYXpvbi5kZT4KCi0tLQoK Tm90ZXM6CiAgdjc6IG1lbnRpb24gc3BlY3VsYXRpdmUgaGFyZGVuaW5nIGluIGNvbW1pdCBtZXNz YWdlCiAgICAgIGFkZCBzcGFjZXMgZm9yIGFyaXRobWV0aWMKICAgICAgaW50cm9kdWNlIHN3aXRj aCBhbmQgYmxvY2tfc3BlY3VsYXRpb24gbWFjcm8gaW4gc2hhcmVkX2VudHJ5X2hlYWRlcgogICAg ICBpbnRyb2R1Y2UgYmxvY2tfc3BlY3VsYXRpb24gbWFjcm8gaW4gbnJfZ3JhbnRfZW50cmllcwog ICAgICB1c2UgYmxvY2tfc3BlY3VsYXRpb24gaW5zdGVhZCBvZiBhcnJheV9pbmRleF9ub3NwZWMo Li4uLCBucl9ncmFudF9lbnRyaWVzKQogICAgICAgICAgYXMgbnJfZ3JhbnRfZW50cmllcyBjb21l cyB3aXRoIGFuIGxmZW5jZSBpbnN0cnVjdGlvbiBieSBub3cKICAgICAgY2FjaGUgcmVzdWx0cyBv ZiBucl9ncmFudF9lbnRyaWVzIHdoZW4gYmVpbmcgdXNlZCBpbiBsb29wcyB0byBhdm9pZCBsZmVu Y2UKICAgICAgdXNlIGxmZW5jZSBpbiBzaGFyZWRfZW50cnlfaGVhZGVyIHRvIGVuc3VyZSBib3Vu ZCBjaGVja3MKCiB4ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgfCA3OCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNl cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50 X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKLS0tIGEveGVuL2NvbW1vbi9ncmFu dF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMzcsNiArMzcsNyBA QAogI2luY2x1ZGUgPHhlbi9wYWdpbmcuaD4KICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgog I2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVuL25vc3BlYy5oPgogI2luY2x1ZGUg PHhzbS94c20uaD4KICNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KIApAQCAtMjAzLDggKzIwNCw5 IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5yX3N0YXR1c19mcmFtZXMoY29uc3Qgc3Ry dWN0IGdyYW50X3RhYmxlICpndCkKIH0KIAogI2RlZmluZSBNQVBUUkFDS19QRVJfUEFHRSAoUEFH RV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBncmFudF9tYXBwaW5nKSkKLSNkZWZpbmUgbWFwdHJhY2tf ZW50cnkodCwgZSkgXAotICAgICgodCktPm1hcHRyYWNrWyhlKS9NQVBUUkFDS19QRVJfUEFHRV1b KGUpJU1BUFRSQUNLX1BFUl9QQUdFXSkKKyNkZWZpbmUgbWFwdHJhY2tfZW50cnkodCwgZSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCh0 KS0+bWFwdHJhY2tbYXJyYXlfaW5kZXhfbm9zcGVjKGUsICh0KS0+bWFwdHJhY2tfbGltaXQpIC8g ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQ VFJBQ0tfUEVSX1BBR0VdWyhlKSAlIE1BUFRSQUNLX1BFUl9QQUdFXSkKIAogc3RhdGljIGlubGlu ZSB1bnNpZ25lZCBpbnQKIG5yX21hcHRyYWNrX2ZyYW1lcyhzdHJ1Y3QgZ3JhbnRfdGFibGUgKnQp CkBAIC0yMjYsMTAgKzIyOCwxOCBAQCBucl9tYXB0cmFja19mcmFtZXMoc3RydWN0IGdyYW50X3Rh YmxlICp0KQogc3RhdGljIGdyYW50X2VudHJ5X2hlYWRlcl90ICoKIHNoYXJlZF9lbnRyeV9oZWFk ZXIoc3RydWN0IGdyYW50X3RhYmxlICp0LCBncmFudF9yZWZfdCByZWYpCiB7Ci0gICAgaWYgKCB0 LT5ndF92ZXJzaW9uID09IDEgKQorICAgIHN3aXRjaCAoIHQtPmd0X3ZlcnNpb24gKQorICAgIHsK KyAgICBjYXNlIDE6CisgICAgICAgIC8qIE1ha2Ugc3VyZSB3ZSByZXR1cm4gYSB2YWx1ZSBpbmRl cGVuZGVudGx5IG9mIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiAqLworICAgICAgICBibG9ja19zcGVj dWxhdGlvbigpOwogICAgICAgICByZXR1cm4gKGdyYW50X2VudHJ5X2hlYWRlcl90Kikmc2hhcmVk X2VudHJ5X3YxKHQsIHJlZik7Ci0gICAgZWxzZQorICAgIGNhc2UgMjoKKyAgICAgICAgLyogTWFr ZSBzdXJlIHdlIHJldHVybiBhIHZhbHVlIGluZGVwZW5kZW50bHkgb2Ygc3BlY3VsYXRpdmUgZXhl Y3V0aW9uICovCisgICAgICAgIGJsb2NrX3NwZWN1bGF0aW9uKCk7CiAgICAgICAgIHJldHVybiAm c2hhcmVkX2VudHJ5X3YyKHQsIHJlZikuaGRyOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKIH0K IAogLyogQWN0aXZlIGdyYW50IGVudHJ5IC0gdXNlZCBmb3Igc2hhZG93aW5nIEdURl9wZXJtaXRf YWNjZXNzIGdyYW50cy4gKi8KQEAgLTYzNCwxMCArNjQ0LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgbnJfZ3JhbnRfZW50cmllcyhzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0KQogICAgIGNhc2UgMToK ICAgICAgICAgQlVJTERfQlVHX09OKGYyZShJTklUSUFMX05SX0dSQU5UX0ZSQU1FUywgMSkgPAog ICAgICAgICAgICAgICAgICAgICAgR05UVEFCX05SX1JFU0VSVkVEX0VOVFJJRVMpOworCisgICAg ICAgIC8qIE1ha2Ugc3VyZSB3ZSByZXR1cm4gYSB2YWx1ZSBpbmRlcGVuZGVudGx5IG9mIHNwZWN1 bGF0aXZlIGV4ZWN1dGlvbiAqLworICAgICAgICBibG9ja19zcGVjdWxhdGlvbigpOwogICAgICAg ICByZXR1cm4gZjJlKG5yX2dyYW50X2ZyYW1lcyhndCksIDEpOwogICAgIGNhc2UgMjoKICAgICAg ICAgQlVJTERfQlVHX09OKGYyZShJTklUSUFMX05SX0dSQU5UX0ZSQU1FUywgMikgPAogICAgICAg ICAgICAgICAgICAgICAgR05UVEFCX05SX1JFU0VSVkVEX0VOVFJJRVMpOworCisgICAgICAgIC8q IE1ha2Ugc3VyZSB3ZSByZXR1cm4gYSB2YWx1ZSBpbmRlcGVuZGVudGx5IG9mIHNwZWN1bGF0aXZl IGV4ZWN1dGlvbiAqLworICAgICAgICBibG9ja19zcGVjdWxhdGlvbigpOwogICAgICAgICByZXR1 cm4gZjJlKG5yX2dyYW50X2ZyYW1lcyhndCksIDIpOwogI3VuZGVmIGYyZQogICAgIH0KQEAgLTk2 Myw5ICs5NzksMTUgQEAgbWFwX2dyYW50X3JlZigKICAgICAgICAgUElOX0ZBSUwodW5sb2NrX291 dCwgR05UU1RfYmFkX2dudHJlZiwgIkJhZCByZWYgJSN4IGZvciBkJWRcbiIsCiAgICAgICAgICAg ICAgICAgIG9wLT5yZWYsIHJndC0+ZG9tYWluLT5kb21haW5faWQpOwogCisgICAgLyogTWFrZSBz dXJlIHRoZSBhYm92ZSBib3VuZCBjaGVjayBjYW5ub3QgYmUgYnlwYXNzZWQgc3BlY3VsYXRpdmVs eSAqLworICAgIGJsb2NrX3NwZWN1bGF0aW9uKCk7CisKICAgICBhY3QgPSBhY3RpdmVfZW50cnlf YWNxdWlyZShyZ3QsIG9wLT5yZWYpOwogICAgIHNoYWggPSBzaGFyZWRfZW50cnlfaGVhZGVyKHJn dCwgb3AtPnJlZik7Ci0gICAgc3RhdHVzID0gcmd0LT5ndF92ZXJzaW9uID09IDEgPyAmc2hhaC0+ ZmxhZ3MgOiAmc3RhdHVzX2VudHJ5KHJndCwgb3AtPnJlZik7CisKKyAgICAvKiBNYWtlIHN1cmUg d2UgZG8gbm90IGFjY2VzcyBtZW1vcnkgc3BlY3VsYXRpdmVseSAqLworICAgIHN0YXR1cyA9IGV2 YWx1YXRlX25vc3BlYyhyZ3QtPmd0X3ZlcnNpb24gPT0gMSkgPyAmc2hhaC0+ZmxhZ3MKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICZzdGF0dXNfZW50 cnkocmd0LCBvcC0+cmVmKTsKIAogICAgIC8qIElmIGFscmVhZHkgcGlubmVkLCBjaGVjayB0aGUg YWN0aXZlIGRvbWlkIGFuZCBhdm9pZCByZWZjbnQgb3ZlcmZsb3cuICovCiAgICAgaWYgKCBhY3Qt PnBpbiAmJgpAQCAtOTg3LDcgKzEwMDksNyBAQCBtYXBfZ3JhbnRfcmVmKAogCiAgICAgICAgIGlm ICggIWFjdC0+cGluICkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4g PSByZ3QtPmd0X3ZlcnNpb24gPT0gMSA/CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9 IGV2YWx1YXRlX25vc3BlYyhyZ3QtPmd0X3ZlcnNpb24gPT0gMSkgPwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaGFyZWRfZW50cnlfdjEocmd0LCBvcC0+cmVmKS5mcmFtZSA6CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9lbnRyeV92MihyZ3QsIG9wLT5y ZWYpLmZ1bGxfcGFnZS5mcmFtZTsKIApAQCAtMTMyMSw2ICsxMzQzLDkgQEAgdW5tYXBfY29tbW9u KAogICAgICAgICBnb3RvIHVubG9ja19vdXQ7CiAgICAgfQogCisgICAgLyogTWFrZSBzdXJlIHRo ZSBhYm92ZSBib3VuZCBjaGVjayBjYW5ub3QgYmUgYnlwYXNzZWQgc3BlY3VsYXRpdmVseSAqLwor ICAgIGJsb2NrX3NwZWN1bGF0aW9uKCk7CisKICAgICBhY3QgPSBhY3RpdmVfZW50cnlfYWNxdWly ZShyZ3QsIG9wLT5yZWYpOwogCiAgICAgLyoKQEAgLTE0MTgsNyArMTQ0Myw3IEBAIHVubWFwX2Nv bW1vbl9jb21wbGV0ZShzdHJ1Y3QgZ250dGFiX3VubWFwX2NvbW1vbiAqb3ApCiAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGc7CiAgICAgdWludDE2X3QgKnN0YXR1czsKIAotICAgIGlmICggIW9wLT5k b25lICkKKyAgICBpZiAoIGV2YWx1YXRlX25vc3BlYyghb3AtPmRvbmUpICkKICAgICB7CiAgICAg ICAgIC8qIHVubWFwX2NvbW1vbigpIGRpZG4ndCBkbyBhbnl0aGluZyAtIG5vdGhpbmcgdG8gY29t cGxldGUuICovCiAgICAgICAgIHJldHVybjsKQEAgLTIwMjYsNiArMjA1MSw3IEBAIGdudHRhYl9w cmVwYXJlX2Zvcl90cmFuc2ZlcigKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAorICAgIC8q IFRoaXMgY2FsbCBlbnN1cmVzIHRoZSBhYm92ZSBjaGVjayBjYW5ub3QgYmUgYnlwYXNzZWQgc3Bl Y3VsYXRpdmVseSAqLwogICAgIHNoYSA9IHNoYXJlZF9lbnRyeV9oZWFkZXIocmd0LCByZWYpOwog CiAgICAgc2NvbWJvLndvcmQgPSAqKHUzMiAqKSZzaGEtPmZsYWdzOwpAQCAtMjIyMyw3ICsyMjQ5 LDExIEBAIGdudHRhYl90cmFuc2ZlcigKICAgICAgICAgb2theSA9IGdudHRhYl9wcmVwYXJlX2Zv cl90cmFuc2ZlcihlLCBkLCBnb3AucmVmKTsKICAgICAgICAgc3Bpbl9sb2NrKCZlLT5wYWdlX2Fs bG9jX2xvY2spOwogCi0gICAgICAgIGlmICggdW5saWtlbHkoIW9rYXkpIHx8IHVubGlrZWx5KGUt PmlzX2R5aW5nKSApCisgICAgICAgIC8qCisgICAgICAgICAqIE1ha2Ugc3VyZSB0aGUgcmVmZXJl bmNlIGJvdW5kIGNoZWNrIGluIGdudHRhYl9wcmVwYXJlX2Zvcl90cmFuc2ZlcgorICAgICAgICAg KiBpcyByZXNwZWN0ZWQgYW5kIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiBpcyBibG9ja2VkIGFjY29y ZGluZ2x5CisgICAgICAgICAqLworICAgICAgICBpZiAoIHVubGlrZWx5KCFldmFsdWF0ZV9ub3Nw ZWMob2theSkpIHx8IHVubGlrZWx5KGUtPmlzX2R5aW5nKSApCiAgICAgICAgIHsKICAgICAgICAg ICAgIGJvb2xfdCBkcm9wX2RvbV9yZWYgPSAhZG9tYWluX2FkanVzdF90b3RfcGFnZXMoZSwgLTEp OwogCkBAIC0yMjUzLDcgKzIyODMsNyBAQCBnbnR0YWJfdHJhbnNmZXIoCiAgICAgICAgIGdyYW50 X3JlYWRfbG9jayhlLT5ncmFudF90YWJsZSk7CiAgICAgICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9h Y3F1aXJlKGUtPmdyYW50X3RhYmxlLCBnb3AucmVmKTsKIAotICAgICAgICBpZiAoIGUtPmdyYW50 X3RhYmxlLT5ndF92ZXJzaW9uID09IDEgKQorICAgICAgICBpZiAoIGV2YWx1YXRlX25vc3BlYyhl LT5ncmFudF90YWJsZS0+Z3RfdmVyc2lvbiA9PSAxKSApCiAgICAgICAgIHsKICAgICAgICAgICAg IGdyYW50X2VudHJ5X3YxX3QgKnNoYSA9ICZzaGFyZWRfZW50cnlfdjEoZS0+Z3JhbnRfdGFibGUs IGdvcC5yZWYpOwogCkBAIC0yNDA4LDkgKzI0MzgsMTEgQEAgYWNxdWlyZV9ncmFudF9mb3JfY29w eSgKICAgICAgICAgUElOX0ZBSUwoZ3RfdW5sb2NrX291dCwgR05UU1RfYmFkX2dudHJlZiwKICAg ICAgICAgICAgICAgICAgIkJhZCBncmFudCByZWZlcmVuY2UgJSN4XG4iLCBncmVmKTsKIAotICAg IGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKHJndCwgZ3JlZik7CisgICAgLyogVGhpcyBjYWxs IG1ha2VzIHN1cmUgdGhlIGFib3ZlIGNoZWNrIGlzIG5vdCBieXBhc3NlZCBzcGVjdWxhdGl2ZWx5 ICovCiAgICAgc2hhaCA9IHNoYXJlZF9lbnRyeV9oZWFkZXIocmd0LCBncmVmKTsKLSAgICBpZiAo IHJndC0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICBhY3QgPSBhY3RpdmVfZW50cnlfYWNxdWlyZShy Z3QsIGdyZWYpOworCisgICAgaWYgKCBldmFsdWF0ZV9ub3NwZWMocmd0LT5ndF92ZXJzaW9uID09 IDEpICkKICAgICB7CiAgICAgICAgIHNoYTIgPSBOVUxMOwogICAgICAgICBzdGF0dXMgPSAmc2hh aC0+ZmxhZ3M7CkBAIC0yODI2LDYgKzI4NTgsOSBAQCBzdGF0aWMgaW50IGdudHRhYl9jb3B5X2J1 Zihjb25zdCBzdHJ1Y3QgZ250dGFiX2NvcHkgKm9wLAogICAgICAgICAgICAgICAgICBvcC0+ZGVz dC5vZmZzZXQsIGRlc3QtPnB0ci5vZmZzZXQsCiAgICAgICAgICAgICAgICAgIG9wLT5sZW4sIGRl c3QtPmxlbik7CiAKKyAgICAvKiBNYWtlIHN1cmUgdGhlIGFib3ZlIGNoZWNrcyBhcmUgbm90IGJ5 cGFzc2VkIHNwZWN1bGF0aXZlbHkgKi8KKyAgICBibG9ja19zcGVjdWxhdGlvbigpOworCiAgICAg bWVtY3B5KGRlc3QtPnZpcnQgKyBvcC0+ZGVzdC5vZmZzZXQsIHNyYy0+dmlydCArIG9wLT5zb3Vy Y2Uub2Zmc2V0LAogICAgICAgICAgICBvcC0+bGVuKTsKICAgICBnbnR0YWJfbWFya19kaXJ0eShk ZXN0LT5kb21haW4sIGRlc3QtPm1mbik7CkBAIC0yOTQ2LDYgKzI5ODEsNyBAQCBnbnR0YWJfc2V0 X3ZlcnNpb24oWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShnbnR0YWJfc2V0X3ZlcnNpb25fdCkgdW9w KQogICAgIGdyYW50X2VudHJ5X3YxX3QgcmVzZXJ2ZWRfZW50cmllc1tHTlRUQUJfTlJfUkVTRVJW RURfRU5UUklFU107CiAgICAgaW50IHJlczsKICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1bnNp Z25lZCBpbnQgZ3RfbnJfZ3JhbnRfZW50cmllczsKIAogICAgIGlmICggY29weV9mcm9tX2d1ZXN0 KCZvcCwgdW9wLCAxKSApCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwpAQCAtMjk2OSw3ICszMDA1 LDggQEAgZ250dGFiX3NldF92ZXJzaW9uKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oZ250dGFiX3Nl dF92ZXJzaW9uX3QpIHVvcCkKICAgICAgKiBhcmUgYWxsb3dlZCB0byBiZSBpbiB1c2UgKHhlbnN0 b3JlL3hlbmNvbnNvbGUga2VlcHMgdGhlbSBtYXBwZWQpLgogICAgICAqIChZb3UgbmVlZCB0byBj aGFuZ2UgdGhlIHZlcnNpb24gbnVtYmVyIGZvciBlLmcuIGtleGVjLikKICAgICAgKi8KLSAgICBm b3IgKCBpID0gR05UVEFCX05SX1JFU0VSVkVEX0VOVFJJRVM7IGkgPCBucl9ncmFudF9lbnRyaWVz KGd0KTsgaSsrICkKKyAgICBndF9ucl9ncmFudF9lbnRyaWVzID0gbnJfZ3JhbnRfZW50cmllcyhn dCk7CisgICAgZm9yICggaSA9IEdOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTOyBpIDwgZ3RfbnJf Z3JhbnRfZW50cmllczsgaSsrICkKICAgICB7CiAgICAgICAgIGlmICggcmVhZF9hdG9taWMoJl9h Y3RpdmVfZW50cnkoZ3QsIGkpLnBpbikgIT0gMCApCiAgICAgICAgIHsKQEAgLTMyMTEsNiArMzI0 OCw5IEBAIHN3YXBfZ3JhbnRfcmVmKGdyYW50X3JlZl90IHJlZl9hLCBncmFudF9yZWZfdCByZWZf YikKICAgICBpZiAoIHVubGlrZWx5KHJlZl9iID49IG5yX2dyYW50X2VudHJpZXMoZC0+Z3JhbnRf dGFibGUpKSkKICAgICAgICAgUElOX0ZBSUwob3V0LCBHTlRTVF9iYWRfZ250cmVmLCAiQmFkIHJl Zi1iICUjeFxuIiwgcmVmX2IpOwogCisgICAgLyogTWFrZSBzdXJlIHRoZSBhYm92ZSBjaGVja3Mg YXJlIG5vdCBieXBhc3NlZCBzcGVjdWxhdGl2ZWx5ICovCisgICAgYmxvY2tfc3BlY3VsYXRpb24o KTsKKwogICAgIC8qIFN3YXBwaW5nIHRoZSBzYW1lIHJlZiBpcyBhIG5vLW9wLiAqLwogICAgIGlm ICggcmVmX2EgPT0gcmVmX2IgKQogICAgICAgICBnb3RvIG91dDsKQEAgLTMyMjMsNyArMzI2Myw3 IEBAIHN3YXBfZ3JhbnRfcmVmKGdyYW50X3JlZl90IHJlZl9hLCBncmFudF9yZWZfdCByZWZfYikK ICAgICBpZiAoIGFjdF9iLT5waW4gKQogICAgICAgICBQSU5fRkFJTChvdXQsIEdOVFNUX2VhZ2Fp biwgInJlZiBiICUjeCBidXN5XG4iLCByZWZfYik7CiAKLSAgICBpZiAoIGd0LT5ndF92ZXJzaW9u ID09IDEgKQorICAgIGlmICggZXZhbHVhdGVfbm9zcGVjKGd0LT5ndF92ZXJzaW9uID09IDEpICkK ICAgICB7CiAgICAgICAgIGdyYW50X2VudHJ5X3YxX3Qgc2hhcmVkOwogCkBAIC0zNjgxLDEyICsz NzIxLDE0IEBAIHZvaWQgZ3JhbnRfdGFibGVfd2Fybl9hY3RpdmVfZ3JhbnRzKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqYWN0OwogICAgIGdyYW50X3Jl Zl90IHJlZjsKICAgICB1bnNpZ25lZCBpbnQgbnJfYWN0aXZlID0gMDsKKyAgICB1bnNpZ25lZCBp bnQgZ3RfbnJfZ3JhbnRfZW50cmllczsKIAogI2RlZmluZSBXQVJOX0dSQU5UX01BWCAxMAogCiAg ICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsKIAotICAgIGZvciAoIHJlZiA9IDA7IHJlZiAhPSBucl9n cmFudF9lbnRyaWVzKGd0KTsgcmVmKysgKQorICAgIGd0X25yX2dyYW50X2VudHJpZXMgPSBucl9n cmFudF9lbnRyaWVzKGd0KTsKKyAgICBmb3IgKCByZWYgPSAwOyByZWYgIT0gZ3RfbnJfZ3JhbnRf ZW50cmllczsgcmVmKysgKQogICAgIHsKICAgICAgICAgYWN0ID0gYWN0aXZlX2VudHJ5X2FjcXVp cmUoZ3QsIHJlZik7CiAgICAgICAgIGlmICggIWFjdC0+cGluICkKQEAgLTM3NzEsNyArMzgxMyw3 IEBAIGludCBtZW1fc2hhcmluZ19ncmVmX3RvX2dmbihzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0LCBn cmFudF9yZWZfdCByZWYsCiAgICAgICAgIHJjID0gLUVJTlZBTDsKICAgICBlbHNlIGlmICggcmVm ID49IG5yX2dyYW50X2VudHJpZXMoZ3QpICkKICAgICAgICAgcmMgPSAtRU5PRU5UOwotICAgIGVs c2UgaWYgKCBndC0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICBlbHNlIGlmICggZXZhbHVhdGVfbm9z cGVjKGd0LT5ndF92ZXJzaW9uID09IDEpICkKICAgICB7CiAgICAgICAgIGNvbnN0IGdyYW50X2Vu dHJ5X3YxX3QgKnNoYTEgPSAmc2hhcmVkX2VudHJ5X3YxKGd0LCByZWYpOwogCkBAIC0zNzkzLDcg KzM4MzUsNyBAQCBpbnQgbWVtX3NoYXJpbmdfZ3JlZl90b19nZm4oc3RydWN0IGdyYW50X3RhYmxl ICpndCwgZ3JhbnRfcmVmX3QgcmVmLAogICAgICAgICByYyA9IC1FTlhJTzsKICAgICBlbHNlIGlm ICggIXJjICYmIHN0YXR1cyApCiAgICAgewotICAgICAgICBpZiAoIGd0LT5ndF92ZXJzaW9uID09 IDEgKQorICAgICAgICBpZiAoIGV2YWx1YXRlX25vc3BlYyhndC0+Z3RfdmVyc2lvbiA9PSAxKSAp CiAgICAgICAgICAgICAqc3RhdHVzID0gZmxhZ3M7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICpzdGF0dXMgPSBzdGF0dXNfZW50cnkoZ3QsIHJlZik7CkBAIC0zOTM1LDYgKzM5NzcsNyBAQCBz dGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAgICAgaW50 IGZpcnN0ID0gMTsKICAgICBncmFudF9yZWZfdCByZWY7CiAgICAgc3RydWN0IGdyYW50X3RhYmxl ICpndCA9IHJkLT5ncmFudF90YWJsZTsKKyAgICB1bnNpZ25lZCBpbnQgZ3RfbnJfZ3JhbnRfZW50 cmllczsKIAogICAgIHByaW50aygiICAgICAgLS0tLS0tLS0gYWN0aXZlIC0tLS0tLS0tICAgICAg IC0tLS0tLS0tIHNoYXJlZCAtLS0tLS0tLVxuIik7CiAgICAgcHJpbnRrKCJbcmVmXSBsb2NhbGRv bSBtZm4gICAgICBwaW4gICAgICAgICAgbG9jYWxkb20gZ21mbiAgICAgZmxhZ3NcbiIpOwpAQCAt Mzk0Nyw3ICszOTkwLDggQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50KHN0cnVjdCBk b21haW4gKnJkKQogICAgICAgICAgICBucl9ncmFudF9mcmFtZXMoZ3QpLCBndC0+bWF4X2dyYW50 X2ZyYW1lcywKICAgICAgICAgICAgbnJfbWFwdHJhY2tfZnJhbWVzKGd0KSwgZ3QtPm1heF9tYXB0 cmFja19mcmFtZXMpOwogCi0gICAgZm9yICggcmVmID0gMDsgcmVmICE9IG5yX2dyYW50X2VudHJp ZXMoZ3QpOyByZWYrKyApCisgICAgZ3RfbnJfZ3JhbnRfZW50cmllcyA9IG5yX2dyYW50X2VudHJp ZXMoZ3QpOworICAgIGZvciAoIHJlZiA9IDA7IHJlZiAhPSBndF9ucl9ncmFudF9lbnRyaWVzOyBy ZWYrKyApCiAgICAgewogICAgICAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICphY3Q7CiAg ICAgICAgIHN0cnVjdCBncmFudF9lbnRyeV9oZWFkZXIgKnNoYTsKLS0gCjIuNy40CgoKCgpBbWF6 b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApLcmF1c2Vuc3RyLiAzOAoxMDExNyBC ZXJsaW4KR2VzY2hhZWZ0c2Z1ZWhyZXI6IENocmlzdGlhbiBTY2hsYWVnZXIsIFJhbGYgSGVyYnJp Y2gKVXN0LUlEOiBERSAyODkgMjM3IDg3OQpFaW5nZXRyYWdlbiBhbSBBbXRzZ2VyaWNodCBDaGFy bG90dGVuYnVyZyBIUkIgMTQ5MTczIEIKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==