From mboxrd@z Thu Jan 1 00:00:00 1970 From: Norbert Manthey Subject: [PATCH L1TF v10 7/8] common/grant_table: block speculative out-of-bound accesses Date: Thu, 14 Mar 2019 13:50:10 +0100 Message-ID: <1552567811-5301-8-git-send-email-nmanthey@amazon.de> References: <1552567811-5301-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 all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h4PrZ-0000Y1-BZ for xen-devel@lists.xenproject.org; Thu, 14 Mar 2019 12:53:33 +0000 In-Reply-To: <1552567811-5301-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 , Bjoern Doebel , Norbert Manthey List-Id: xen-devel@lists.xenproject.org R3Vlc3RzIGNhbiBpc3N1ZSBncmFudCB0YWJsZSBvcGVyYXRpb25zIGFuZCBwcm92aWRlIGd1ZXN0 IGNvbnRyb2xsZWQKZGF0YSB0byB0aGVtLiBUaGlzIGRhdGEgaXMgYWxzbyB1c2VkIGZvciBtZW1v cnkgbG9hZHMuIFRvIGF2b2lkCnNwZWN1bGF0aXZlIG91dC1vZi1ib3VuZCBhY2Nlc3Nlcywgd2Ug dXNlIHRoZSBhcnJheV9pbmRleF9ub3NwZWMgbWFjcm8Kd2hlcmUgYXBwbGljYWJsZS4gSG93ZXZl ciwgdGhlcmUgYXJlIGFsc28gbWVtb3J5IGFjY2Vzc2VzIHRoYXQgY2Fubm90CmJlIHByb3RlY3Rl ZCBieSBhIHNpbmdsZSBhcnJheSBwcm90ZWN0aW9uLCBvciBtdWx0aXBsZSBhY2Nlc3NlcyBpbiBh CnJvdy4gVG8gcHJvdGVjdCB0aGVzZSwgYSBub3NwZWMgYmFycmllciBpcyBwbGFjZWQgYmV0d2Vl biB0aGUgYWN0dWFsCnJhbmdlIGNoZWNrIGFuZCB0aGUgYWNjZXNzIHZpYSB0aGUgYmxvY2tfc3Bl Y3VsYXRpb24gbWFjcm8uCgpTcGVjdWxhdGl2ZSBleGVjdXRpb24gaXMgbm90IGJsb2NrZWQgaW4g Y2FzZSBvbmUgb2YgdGhlIGZvbGxvd2luZwpwcm9wZXJ0aWVzIGlzIHRydWU6CiAtIHBhdGggY2Fu bm90IGJlIHRyaWdnZXJlZCBieSB0aGUgZ3Vlc3QKIC0gcGF0aCBkb2VzIG5vdCByZXR1cm4gdG8g dGhlIGd1ZXN0CiAtIHBhdGggZG9lcyBub3QgcmVzdWx0IGluIGFuIG91dC1vZi1ib3VuZCBhY2Nl c3MKIC0gcGF0aCBjYW5ub3QgYmUgZXhlY3V0ZWQgcmVwZWF0ZWRseQpPbmx5IHRoZSBjb21iaW5h dGlvbiBvZiB0aGUgYWJvdmUgcHJvcGVydGllcyBhbGxvd3MgdG8gYWN0dWFsbHkgbGVhawpjb250 aW51b3VzIGNodW5rcyBvZiBtZW1vcnkuIFRoZXJlZm9yZSwgd2Ugb25seSBhZGQgdGhlIHBlbmFs dHkgb2YKcHJvdGVjdGl2ZSBtZWNoYW5pc21zIGluIGNhc2UgYSBwb3RlbnRpYWwgc3BlY3VsYXRp dmUgb3V0LW9mLWJvdW5kCmFjY2VzcyBtYXRjaGVzIGFsbCB0aGUgYWJvdmUgcHJvcGVydGllcy4K CkFzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBncmFudCB0YWJsZXMgdXNlIHN0cnVjdHVyZXMgb2Yg ZGlmZmVyZW50IHNpemUsCmFuZCB0aGUgc3RhdHVzIGlzIGVuY29kZWQgaW4gYW4gYXJyYXkgZm9y IHZlcnNpb24gMiwgc3BlY3VsYXRpdmUKZXhlY3V0aW9uIG1pZ2h0IHBlcmZvcm0gb3V0LW9mLWJv dW5kIGFjY2Vzc2VzIG9mIHZlcnNpb24gMiB3aGlsZQp0aGUgdGFibGUgaXMgYWN0dWFsbHkgdXNp bmcgdmVyc2lvbiAxLiBIZW5jZSwgc3BlY3VsYXRpb24gaXMgcHJldmVudGVkCndoZW4gYWNjZXNz aW5nIG5ldyBtZW1vcnkgYmFzZWQgb24gdGhlIGdyYW50IHRhYmxlIHZlcnNpb24uIEluIGNhc2Vz LAp3aGVyZSBubyBkaWZmZXJlbnQgbWVtb3J5IGxvY2F0aW9ucyBhcmUgYWNjZXNzZWQgb24gdGhl IGNvZGUgcGF0aCB0aGF0CmZvbGxvdyBhbiBpZiBzdGF0ZW1lbnQsIG5vIHByb3RlY3Rpb24gaXMg cmVxdWlyZWQuIE5vIGRpZmZlcmVudCBtZW1vcnkKbG9jYXRpb25zIGFyZSBhY2Nlc3NlZCBpbiB0 aGUgZm9sbG93aW5nIGZ1bmN0aW9uc2kgYWZ0ZXIgYSB2ZXJzaW9uIGNoZWNrOgoKICogX3NldF9z dGF0dXMsIGFzIHRoZSBoZWFkZXIgbWVtb3J5IGxheW91dCBpcyB0aGUgc2FtZQogKiB1bm1hcF9j b21tb24sIGFzIHBvdGVudGlhbGx5IHRvdWNoZWQgbWVtb3J5IGxvY2F0aW9ucyBhcmUgYWxsb2Nh dGVkCiAgICAgICAgICAgICAgICAgYW5kIGluaXRpYWxpemVkCiAqIGdudHRhYl9ncm93X3RhYmxl LCBhcyB0aGUgdG91Y2hlZCBtZW1vcnkgaXMgdGhlIHNhbWUgZm9yIGVhY2gKICAgICAgICAgICAg ICAgIGJyYW5jaCBhZnRlciB0aGUgY29uZGl0aW9uYWxzCiAqIGdudHRhYl90cmFuc2ZlciwgYXMg bm8gbWVtb3J5IGFjY2VzcyBkZXBlbmRzIG9uIHRoZSBjb25kaXRpb25hbAogKiByZWxlYXNlX2dy YW50X2Zvcl9jb3B5LCBhcyBubyBvdXQtb2YtYm91bmQgYWNjZXNzIGRlcGVuZHMgb24gdGhpcwog ICAgICAgICAgICAgICAgY29uZGl0aW9uYWwKICogZ250dGFiX3NldF92ZXJzaW9uLCBhcyBpbiBj YXNlIG9mIGEgdmVyc2lvbiBjaGFuZ2UgYWxsIHRoZSBtZW1vcnkgaXMKICAgICAgICAgICAgICAg IHRvdWNoZWQgaW4gYm90aCBjYXNlcwogKiBnbnR0YWJfcmVsZWFzZV9tYXBwaW5ncywgYXMgdGhp cyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBkdXJpbmcgZG9tYWluCiAgICAgICAgICAgICAgICBk ZXN0cnVjdGlvbiBhbmQgY29udHJvbCBpcyBub3QgcmV0dXJuZWQgdG8gdGhlIGd1ZXN0CiAqIG1l bV9zaGFyaW5nX2dyZWZfdG9fZ2ZuLCBhcyBwb3RlbnRpYWwgZGFuZ2Vyb3VzIG1lbW9yeSBhY2Nl c3NlcyBhcmUKICAgICAgICAgICAgICAgIGNvdmVyZWQgYnkgdGhlIG5leHQgZXZhbHVhdGVfbm9z cGVjCiAqIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lLCBhcyB0aGUgcG90ZW50aWFsIGRhbmdlcm91 cyBtZW1vcnkgYWNjZXNzZXMKICAgICAgICAgICAgICAgIGFyZSBwcm90ZWN0ZWQgaW4gZ250dGFi X2dldF9zdGF0dXNfZnJhbWVfbWZuCiAqIGdudHRhYl91c2FnZV9wcmludCwgYXMgdGhpcyBmdW5j dGlvbiBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IHRoZSBndWVzdAoKVGhpcyBpcyBwYXJ0IG9mIHRo ZSBzcGVjdWxhdGl2ZSBoYXJkZW5pbmcgZWZmb3J0LgoKU2lnbmVkLW9mZi1ieTogTm9yYmVydCBN YW50aGV5IDxubWFudGhleUBhbWF6b24uZGU+CgotLS0KCk5vdGVzOgogIHYxMDogZXh0ZW5kZWQg Y29tbWl0IG1lc3NhZ2Ugd2l0aCBleHBsYW5hdGlvbiB3aGVuIHRvIGV4Y2x1ZGUgY29tcGFyaXNv bnMKICAgICAgIG1pbm9yIGNoYW5nZSBpbiBnbnR0YWJfdHJhbnNmZXIgZHVlIHRvIHJlYmFzZQoK IHhlbi9jb21tb24vZ3JhbnRfdGFibGUuYyB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyks IDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBi L3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwotLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMK KysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk ZSA8eGVuL3BhZ2luZy5oPgogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+CiAjaW5jbHVkZSA8 eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4vbm9zcGVjLmg+CiAjaW5jbHVkZSA8eHNtL3hzbS5o PgogI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPgogCkBAIC0yMDMsOCArMjA0LDkgQEAgc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbnQgbnJfc3RhdHVzX2ZyYW1lcyhjb25zdCBzdHJ1Y3QgZ3JhbnRf dGFibGUgKmd0KQogfQogCiAjZGVmaW5lIE1BUFRSQUNLX1BFUl9QQUdFIChQQUdFX1NJWkUgLyBz aXplb2Yoc3RydWN0IGdyYW50X21hcHBpbmcpKQotI2RlZmluZSBtYXB0cmFja19lbnRyeSh0LCBl KSBcCi0gICAgKCh0KS0+bWFwdHJhY2tbKGUpL01BUFRSQUNLX1BFUl9QQUdFXVsoZSklTUFQVFJB Q0tfUEVSX1BBR0VdKQorI2RlZmluZSBtYXB0cmFja19lbnRyeSh0LCBlKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKHQpLT5tYXB0cmFj a1thcnJheV9pbmRleF9ub3NwZWMoZSwgKHQpLT5tYXB0cmFja19saW1pdCkgLyAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBUUkFDS19QRVJf UEFHRV1bKGUpICUgTUFQVFJBQ0tfUEVSX1BBR0VdKQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludAogbnJfbWFwdHJhY2tfZnJhbWVzKHN0cnVjdCBncmFudF90YWJsZSAqdCkKQEAgLTIyNiwx MCArMjI4LDIzIEBAIG5yX21hcHRyYWNrX2ZyYW1lcyhzdHJ1Y3QgZ3JhbnRfdGFibGUgKnQpCiBz dGF0aWMgZ3JhbnRfZW50cnlfaGVhZGVyX3QgKgogc2hhcmVkX2VudHJ5X2hlYWRlcihzdHJ1Y3Qg Z3JhbnRfdGFibGUgKnQsIGdyYW50X3JlZl90IHJlZikKIHsKLSAgICBpZiAoIHQtPmd0X3ZlcnNp b24gPT0gMSApCisgICAgc3dpdGNoICggdC0+Z3RfdmVyc2lvbiApCisgICAgeworICAgIGNhc2Ug MToKKyAgICAgICAgLyogUmV0dXJuZWQgdmFsdWVzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiBz cGVjdWxhdGl2ZSBleGVjdXRpb24gKi8KKyAgICAgICAgYmxvY2tfc3BlY3VsYXRpb24oKTsKICAg ICAgICAgcmV0dXJuIChncmFudF9lbnRyeV9oZWFkZXJfdCopJnNoYXJlZF9lbnRyeV92MSh0LCBy ZWYpOwotICAgIGVsc2UKKworICAgIGNhc2UgMjoKKyAgICAgICAgLyogUmV0dXJuZWQgdmFsdWVz IHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiBzcGVjdWxhdGl2ZSBleGVjdXRpb24gKi8KKyAgICAg ICAgYmxvY2tfc3BlY3VsYXRpb24oKTsKICAgICAgICAgcmV0dXJuICZzaGFyZWRfZW50cnlfdjIo dCwgcmVmKS5oZHI7CisgICAgfQorCisgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgYmxv Y2tfc3BlY3VsYXRpb24oKTsKKworICAgIHJldHVybiBOVUxMOwogfQogCiAvKiBBY3RpdmUgZ3Jh bnQgZW50cnkgLSB1c2VkIGZvciBzaGFkb3dpbmcgR1RGX3Blcm1pdF9hY2Nlc3MgZ3JhbnRzLiAq LwpAQCAtNjM0LDE0ICs2NDksMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBucl9ncmFudF9lbnRy aWVzKHN0cnVjdCBncmFudF90YWJsZSAqZ3QpCiAgICAgY2FzZSAxOgogICAgICAgICBCVUlMRF9C VUdfT04oZjJlKElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTLCAxKSA8CiAgICAgICAgICAgICAgICAg ICAgICBHTlRUQUJfTlJfUkVTRVJWRURfRU5UUklFUyk7CisKKyAgICAgICAgLyogTWFrZSBzdXJl IHdlIHJldHVybiBhIHZhbHVlIGluZGVwZW5kZW50bHkgb2Ygc3BlY3VsYXRpdmUgZXhlY3V0aW9u ICovCisgICAgICAgIGJsb2NrX3NwZWN1bGF0aW9uKCk7CiAgICAgICAgIHJldHVybiBmMmUobnJf Z3JhbnRfZnJhbWVzKGd0KSwgMSk7CisKICAgICBjYXNlIDI6CiAgICAgICAgIEJVSUxEX0JVR19P TihmMmUoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMsIDIpIDwKICAgICAgICAgICAgICAgICAgICAg IEdOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTKTsKKworICAgICAgICAvKiBNYWtlIHN1cmUgd2Ug cmV0dXJuIGEgdmFsdWUgaW5kZXBlbmRlbnRseSBvZiBzcGVjdWxhdGl2ZSBleGVjdXRpb24gKi8K KyAgICAgICAgYmxvY2tfc3BlY3VsYXRpb24oKTsKICAgICAgICAgcmV0dXJuIGYyZShucl9ncmFu dF9mcmFtZXMoZ3QpLCAyKTsKICN1bmRlZiBmMmUKICAgICB9CiAKKyAgICBBU1NFUlRfVU5SRUFD SEFCTEUoKTsKKyAgICBibG9ja19zcGVjdWxhdGlvbigpOworCiAgICAgcmV0dXJuIDA7CiB9CiAK QEAgLTk2Myw5ICs5ODgsMTMgQEAgbWFwX2dyYW50X3JlZigKICAgICAgICAgUElOX0ZBSUwodW5s b2NrX291dCwgR05UU1RfYmFkX2dudHJlZiwgIkJhZCByZWYgJSN4IGZvciBkJWRcbiIsCiAgICAg ICAgICAgICAgICAgIG9wLT5yZWYsIHJndC0+ZG9tYWluLT5kb21haW5faWQpOwogCi0gICAgYWN0 ID0gYWN0aXZlX2VudHJ5X2FjcXVpcmUocmd0LCBvcC0+cmVmKTsKKyAgICAvKiBUaGlzIGNhbGwg ZW5zdXJlcyB0aGUgYWJvdmUgY2hlY2sgY2Fubm90IGJlIGJ5cGFzc2VkIHNwZWN1bGF0aXZlbHkg Ki8KICAgICBzaGFoID0gc2hhcmVkX2VudHJ5X2hlYWRlcihyZ3QsIG9wLT5yZWYpOwotICAgIHN0 YXR1cyA9IHJndC0+Z3RfdmVyc2lvbiA9PSAxID8gJnNoYWgtPmZsYWdzIDogJnN0YXR1c19lbnRy eShyZ3QsIG9wLT5yZWYpOworICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKHJndCwgb3At PnJlZik7CisKKyAgICAvKiBNYWtlIHN1cmUgd2UgZG8gbm90IGFjY2VzcyBtZW1vcnkgc3BlY3Vs YXRpdmVseSAqLworICAgIHN0YXR1cyA9IGV2YWx1YXRlX25vc3BlYyhyZ3QtPmd0X3ZlcnNpb24g PT0gMSkgPyAmc2hhaC0+ZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ICZzdGF0dXNfZW50cnkocmd0LCBvcC0+cmVmKTsKIAogICAgIC8qIElm IGFscmVhZHkgcGlubmVkLCBjaGVjayB0aGUgYWN0aXZlIGRvbWlkIGFuZCBhdm9pZCByZWZjbnQg b3ZlcmZsb3cuICovCiAgICAgaWYgKCBhY3QtPnBpbiAmJgpAQCAtOTg3LDcgKzEwMTYsNyBAQCBt YXBfZ3JhbnRfcmVmKAogCiAgICAgICAgIGlmICggIWFjdC0+cGluICkKICAgICAgICAgewotICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSByZ3QtPmd0X3ZlcnNpb24gPT0gMSA/CisgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IGV2YWx1YXRlX25vc3BlYyhyZ3QtPmd0X3ZlcnNp b24gPT0gMSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRfZW50cnlf djEocmd0LCBvcC0+cmVmKS5mcmFtZSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNoYXJlZF9lbnRyeV92MihyZ3QsIG9wLT5yZWYpLmZ1bGxfcGFnZS5mcmFtZTsKIApAQCAtMTMy MSw2ICsxMzUwLDkgQEAgdW5tYXBfY29tbW9uKAogICAgICAgICBnb3RvIHVubG9ja19vdXQ7CiAg ICAgfQogCisgICAgLyogTWFrZSBzdXJlIHRoZSBhYm92ZSBib3VuZCBjaGVjayBjYW5ub3QgYmUg YnlwYXNzZWQgc3BlY3VsYXRpdmVseSAqLworICAgIGJsb2NrX3NwZWN1bGF0aW9uKCk7CisKICAg ICBhY3QgPSBhY3RpdmVfZW50cnlfYWNxdWlyZShyZ3QsIG9wLT5yZWYpOwogCiAgICAgLyoKQEAg LTE0MTgsNyArMTQ1MCw3IEBAIHVubWFwX2NvbW1vbl9jb21wbGV0ZShzdHJ1Y3QgZ250dGFiX3Vu bWFwX2NvbW1vbiAqb3ApCiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAgICAgdWludDE2X3Qg KnN0YXR1czsKIAotICAgIGlmICggIW9wLT5kb25lICkKKyAgICBpZiAoIGV2YWx1YXRlX25vc3Bl Yyghb3AtPmRvbmUpICkKICAgICB7CiAgICAgICAgIC8qIHVubWFwX2NvbW1vbigpIGRpZG4ndCBk byBhbnl0aGluZyAtIG5vdGhpbmcgdG8gY29tcGxldGUuICovCiAgICAgICAgIHJldHVybjsKQEAg LTIwMjYsNiArMjA1OCw3IEBAIGdudHRhYl9wcmVwYXJlX2Zvcl90cmFuc2ZlcigKICAgICAgICAg Z290byBmYWlsOwogICAgIH0KIAorICAgIC8qIFRoaXMgY2FsbCBlbnN1cmVzIHRoZSBhYm92ZSBj aGVjayBjYW5ub3QgYmUgYnlwYXNzZWQgc3BlY3VsYXRpdmVseSAqLwogICAgIHNoYSA9IHNoYXJl ZF9lbnRyeV9oZWFkZXIocmd0LCByZWYpOwogCiAgICAgc2NvbWJvLndvcmQgPSAqKHUzMiAqKSZz aGEtPmZsYWdzOwpAQCAtMjIyMyw3ICsyMjU2LDEyIEBAIGdudHRhYl90cmFuc2ZlcigKICAgICAg ICAgc3Bpbl91bmxvY2soJmUtPnBhZ2VfYWxsb2NfbG9jayk7CiAgICAgICAgIG9rYXkgPSBnbnR0 YWJfcHJlcGFyZV9mb3JfdHJhbnNmZXIoZSwgZCwgZ29wLnJlZik7CiAKLSAgICAgICAgaWYgKCB1 bmxpa2VseSghb2theSB8fCBhc3NpZ25fcGFnZXMoZSwgcGFnZSwgMCwgTUVNRl9ub19yZWZjb3Vu dCkpICkKKyAgICAgICAgLyoKKyAgICAgICAgICogTWFrZSBzdXJlIHRoZSByZWZlcmVuY2UgYm91 bmQgY2hlY2sgaW4gZ250dGFiX3ByZXBhcmVfZm9yX3RyYW5zZmVyCisgICAgICAgICAqIGlzIHJl c3BlY3RlZCBhbmQgc3BlY3VsYXRpdmUgZXhlY3V0aW9uIGlzIGJsb2NrZWQgYWNjb3JkaW5nbHkK KyAgICAgICAgICovCisgICAgICAgIGlmICggdW5saWtlbHkoIWV2YWx1YXRlX25vc3BlYyhva2F5 KSkgfHwKKyAgICAgICAgICAgIHVubGlrZWx5KGFzc2lnbl9wYWdlcyhlLCBwYWdlLCAwLCBNRU1G X25vX3JlZmNvdW50KSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBib29sIGRyb3BfZG9tX3Jl ZjsKIApAQCAtMjI1NSw3ICsyMjkzLDcgQEAgZ250dGFiX3RyYW5zZmVyKAogICAgICAgICBncmFu dF9yZWFkX2xvY2soZS0+Z3JhbnRfdGFibGUpOwogICAgICAgICBhY3QgPSBhY3RpdmVfZW50cnlf YWNxdWlyZShlLT5ncmFudF90YWJsZSwgZ29wLnJlZik7CiAKLSAgICAgICAgaWYgKCBlLT5ncmFu dF90YWJsZS0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICAgICAgaWYgKCBldmFsdWF0ZV9ub3NwZWMo ZS0+Z3JhbnRfdGFibGUtPmd0X3ZlcnNpb24gPT0gMSkgKQogICAgICAgICB7CiAgICAgICAgICAg ICBncmFudF9lbnRyeV92MV90ICpzaGEgPSAmc2hhcmVkX2VudHJ5X3YxKGUtPmdyYW50X3RhYmxl LCBnb3AucmVmKTsKIApAQCAtMjMxNiw3ICsyMzU0LDcgQEAgcmVsZWFzZV9ncmFudF9mb3JfY29w eSgKICAgICBzaGEgPSBzaGFyZWRfZW50cnlfaGVhZGVyKHJndCwgZ3JlZik7CiAgICAgbWZuID0g YWN0LT5tZm47CiAKLSAgICBpZiAoIHJndC0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICBpZiAoIGV2 YWx1YXRlX25vc3BlYyhyZ3QtPmd0X3ZlcnNpb24gPT0gMSkgKQogICAgIHsKICAgICAgICAgc3Rh dHVzID0gJnNoYS0+ZmxhZ3M7CiAgICAgICAgIHRkID0gcmQ7CkBAIC0yNDEwLDkgKzI0NDgsMTEg QEAgYWNxdWlyZV9ncmFudF9mb3JfY29weSgKICAgICAgICAgUElOX0ZBSUwoZ3RfdW5sb2NrX291 dCwgR05UU1RfYmFkX2dudHJlZiwKICAgICAgICAgICAgICAgICAgIkJhZCBncmFudCByZWZlcmVu Y2UgJSN4XG4iLCBncmVmKTsKIAotICAgIGFjdCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKHJndCwg Z3JlZik7CisgICAgLyogVGhpcyBjYWxsIGVuc3VyZXMgdGhlIGFib3ZlIGNoZWNrIGNhbm5vdCBi ZSBieXBhc3NlZCBzcGVjdWxhdGl2ZWx5ICovCiAgICAgc2hhaCA9IHNoYXJlZF9lbnRyeV9oZWFk ZXIocmd0LCBncmVmKTsKLSAgICBpZiAoIHJndC0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICBhY3Qg PSBhY3RpdmVfZW50cnlfYWNxdWlyZShyZ3QsIGdyZWYpOworCisgICAgaWYgKCBldmFsdWF0ZV9u b3NwZWMocmd0LT5ndF92ZXJzaW9uID09IDEpICkKICAgICB7CiAgICAgICAgIHNoYTIgPSBOVUxM OwogICAgICAgICBzdGF0dXMgPSAmc2hhaC0+ZmxhZ3M7CkBAIC0yODI4LDYgKzI4NjgsOSBAQCBz dGF0aWMgaW50IGdudHRhYl9jb3B5X2J1Zihjb25zdCBzdHJ1Y3QgZ250dGFiX2NvcHkgKm9wLAog ICAgICAgICAgICAgICAgICBvcC0+ZGVzdC5vZmZzZXQsIGRlc3QtPnB0ci5vZmZzZXQsCiAgICAg ICAgICAgICAgICAgIG9wLT5sZW4sIGRlc3QtPmxlbik7CiAKKyAgICAvKiBNYWtlIHN1cmUgdGhl IGFib3ZlIGNoZWNrcyBhcmUgbm90IGJ5cGFzc2VkIHNwZWN1bGF0aXZlbHkgKi8KKyAgICBibG9j a19zcGVjdWxhdGlvbigpOworCiAgICAgbWVtY3B5KGRlc3QtPnZpcnQgKyBvcC0+ZGVzdC5vZmZz ZXQsIHNyYy0+dmlydCArIG9wLT5zb3VyY2Uub2Zmc2V0LAogICAgICAgICAgICBvcC0+bGVuKTsK ICAgICBnbnR0YWJfbWFya19kaXJ0eShkZXN0LT5kb21haW4sIGRlc3QtPm1mbik7CkBAIC0yOTQ3 LDcgKzI5OTAsNyBAQCBnbnR0YWJfc2V0X3ZlcnNpb24oWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShn bnR0YWJfc2V0X3ZlcnNpb25fdCkgdW9wKQogICAgIHN0cnVjdCBncmFudF90YWJsZSAqZ3QgPSBj dXJyZC0+Z3JhbnRfdGFibGU7CiAgICAgZ3JhbnRfZW50cnlfdjFfdCByZXNlcnZlZF9lbnRyaWVz W0dOVFRBQl9OUl9SRVNFUlZFRF9FTlRSSUVTXTsKICAgICBpbnQgcmVzOwotICAgIHVuc2lnbmVk IGludCBpOworICAgIHVuc2lnbmVkIGludCBpLCBucl9lbnRzOwogCiAgICAgaWYgKCBjb3B5X2Zy b21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CkBAIC0yOTcx LDcgKzMwMTQsOCBAQCBnbnR0YWJfc2V0X3ZlcnNpb24oWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShn bnR0YWJfc2V0X3ZlcnNpb25fdCkgdW9wKQogICAgICAqIGFyZSBhbGxvd2VkIHRvIGJlIGluIHVz ZSAoeGVuc3RvcmUveGVuY29uc29sZSBrZWVwcyB0aGVtIG1hcHBlZCkuCiAgICAgICogKFlvdSBu ZWVkIHRvIGNoYW5nZSB0aGUgdmVyc2lvbiBudW1iZXIgZm9yIGUuZy4ga2V4ZWMuKQogICAgICAq LwotICAgIGZvciAoIGkgPSBHTlRUQUJfTlJfUkVTRVJWRURfRU5UUklFUzsgaSA8IG5yX2dyYW50 X2VudHJpZXMoZ3QpOyBpKysgKQorICAgIG5yX2VudHMgPSBucl9ncmFudF9lbnRyaWVzKGd0KTsK KyAgICBmb3IgKCBpID0gR05UVEFCX05SX1JFU0VSVkVEX0VOVFJJRVM7IGkgPCBucl9lbnRzOyBp KysgKQogICAgIHsKICAgICAgICAgaWYgKCByZWFkX2F0b21pYygmX2FjdGl2ZV9lbnRyeShndCwg aSkucGluKSAhPSAwICkKICAgICAgICAgewpAQCAtMzIxMyw2ICszMjU3LDkgQEAgc3dhcF9ncmFu dF9yZWYoZ3JhbnRfcmVmX3QgcmVmX2EsIGdyYW50X3JlZl90IHJlZl9iKQogICAgIGlmICggdW5s aWtlbHkocmVmX2IgPj0gbnJfZ3JhbnRfZW50cmllcyhkLT5ncmFudF90YWJsZSkpKQogICAgICAg ICBQSU5fRkFJTChvdXQsIEdOVFNUX2JhZF9nbnRyZWYsICJCYWQgcmVmLWIgJSN4XG4iLCByZWZf Yik7CiAKKyAgICAvKiBNYWtlIHN1cmUgdGhlIGFib3ZlIGNoZWNrcyBhcmUgbm90IGJ5cGFzc2Vk IHNwZWN1bGF0aXZlbHkgKi8KKyAgICBibG9ja19zcGVjdWxhdGlvbigpOworCiAgICAgLyogU3dh cHBpbmcgdGhlIHNhbWUgcmVmIGlzIGEgbm8tb3AuICovCiAgICAgaWYgKCByZWZfYSA9PSByZWZf YiApCiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMzIyNSw3ICszMjcyLDcgQEAgc3dhcF9ncmFudF9y ZWYoZ3JhbnRfcmVmX3QgcmVmX2EsIGdyYW50X3JlZl90IHJlZl9iKQogICAgIGlmICggYWN0X2It PnBpbiApCiAgICAgICAgIFBJTl9GQUlMKG91dCwgR05UU1RfZWFnYWluLCAicmVmIGIgJSN4IGJ1 c3lcbiIsIHJlZl9iKTsKIAotICAgIGlmICggZ3QtPmd0X3ZlcnNpb24gPT0gMSApCisgICAgaWYg KCBldmFsdWF0ZV9ub3NwZWMoZ3QtPmd0X3ZlcnNpb24gPT0gMSkgKQogICAgIHsKICAgICAgICAg Z3JhbnRfZW50cnlfdjFfdCBzaGFyZWQ7CiAKQEAgLTM2ODIsMTMgKzM3MjksMTQgQEAgdm9pZCBn cmFudF90YWJsZV93YXJuX2FjdGl2ZV9ncmFudHMoc3RydWN0IGRvbWFpbiAqZCkKICAgICBzdHJ1 Y3QgZ3JhbnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7CiAgICAgc3RydWN0IGFjdGl2ZV9n cmFudF9lbnRyeSAqYWN0OwogICAgIGdyYW50X3JlZl90IHJlZjsKLSAgICB1bnNpZ25lZCBpbnQg bnJfYWN0aXZlID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgbnJfYWN0aXZlID0gMCwgbnJfZW50czsK IAogI2RlZmluZSBXQVJOX0dSQU5UX01BWCAxMAogCiAgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsK IAotICAgIGZvciAoIHJlZiA9IDA7IHJlZiAhPSBucl9ncmFudF9lbnRyaWVzKGd0KTsgcmVmKysg KQorICAgIG5yX2VudHMgPSBucl9ncmFudF9lbnRyaWVzKGd0KTsKKyAgICBmb3IgKCByZWYgPSAw OyByZWYgIT0gbnJfZW50czsgcmVmKysgKQogICAgIHsKICAgICAgICAgYWN0ID0gYWN0aXZlX2Vu dHJ5X2FjcXVpcmUoZ3QsIHJlZik7CiAgICAgICAgIGlmICggIWFjdC0+cGluICkKQEAgLTM3NzMs NyArMzgyMSw3IEBAIGludCBtZW1fc2hhcmluZ19ncmVmX3RvX2dmbihzdHJ1Y3QgZ3JhbnRfdGFi bGUgKmd0LCBncmFudF9yZWZfdCByZWYsCiAgICAgICAgIHJjID0gLUVJTlZBTDsKICAgICBlbHNl IGlmICggcmVmID49IG5yX2dyYW50X2VudHJpZXMoZ3QpICkKICAgICAgICAgcmMgPSAtRU5PRU5U OwotICAgIGVsc2UgaWYgKCBndC0+Z3RfdmVyc2lvbiA9PSAxICkKKyAgICBlbHNlIGlmICggZXZh bHVhdGVfbm9zcGVjKGd0LT5ndF92ZXJzaW9uID09IDEpICkKICAgICB7CiAgICAgICAgIGNvbnN0 IGdyYW50X2VudHJ5X3YxX3QgKnNoYTEgPSAmc2hhcmVkX2VudHJ5X3YxKGd0LCByZWYpOwogCkBA IC0zNzk1LDcgKzM4NDMsNyBAQCBpbnQgbWVtX3NoYXJpbmdfZ3JlZl90b19nZm4oc3RydWN0IGdy YW50X3RhYmxlICpndCwgZ3JhbnRfcmVmX3QgcmVmLAogICAgICAgICByYyA9IC1FTlhJTzsKICAg ICBlbHNlIGlmICggIXJjICYmIHN0YXR1cyApCiAgICAgewotICAgICAgICBpZiAoIGd0LT5ndF92 ZXJzaW9uID09IDEgKQorICAgICAgICBpZiAoIGV2YWx1YXRlX25vc3BlYyhndC0+Z3RfdmVyc2lv biA9PSAxKSApCiAgICAgICAgICAgICAqc3RhdHVzID0gZmxhZ3M7CiAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICpzdGF0dXMgPSBzdGF0dXNfZW50cnkoZ3QsIHJlZik7CkBAIC0zODM4LDYgKzM4 ODYsOSBAQCBzdGF0aWMgaW50IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lX21mbihzdHJ1Y3QgZG9t YWluICpkLAogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCisgICAgLyogTWFr ZSBzdXJlIGlkeCBpcyBib3VuZGVkIHdydCBucl9zdGF0dXNfZnJhbWVzICovCisgICAgYmxvY2tf c3BlY3VsYXRpb24oKTsKKwogICAgICptZm4gPSBfbWZuKHZpcnRfdG9fbWZuKGd0LT5zdGF0dXNb aWR4XSkpOwogICAgIHJldHVybiAwOwogfQpAQCAtMzg3OSw3ICszOTMwLDcgQEAgaW50IGdudHRh Yl9tYXBfZnJhbWUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90IGdm biwgbWZuX3QgKm1mbikKIAogICAgIGdyYW50X3dyaXRlX2xvY2soZ3QpOwogCi0gICAgaWYgKCBn dC0+Z3RfdmVyc2lvbiA9PSAyICYmIChpZHggJiBYRU5NQVBJRFhfZ3JhbnRfdGFibGVfc3RhdHVz KSApCisgICAgaWYgKCBldmFsdWF0ZV9ub3NwZWMoZ3QtPmd0X3ZlcnNpb24gPT0gMikgJiYgKGlk eCAmIFhFTk1BUElEWF9ncmFudF90YWJsZV9zdGF0dXMpICkKICAgICB7CiAgICAgICAgIGlkeCAm PSB+WEVOTUFQSURYX2dyYW50X3RhYmxlX3N0YXR1czsKICAgICAgICAgc3RhdHVzID0gdHJ1ZTsK QEAgLTM5MzcsNiArMzk4OCw3IEBAIHN0YXRpYyB2b2lkIGdudHRhYl91c2FnZV9wcmludChzdHJ1 Y3QgZG9tYWluICpyZCkKICAgICBpbnQgZmlyc3QgPSAxOwogICAgIGdyYW50X3JlZl90IHJlZjsK ICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0gcmQtPmdyYW50X3RhYmxlOworICAgIHVuc2ln bmVkIGludCBucl9lbnRzOwogCiAgICAgcHJpbnRrKCIgICAgICAtLS0tLS0tLSBhY3RpdmUgLS0t LS0tLS0gICAgICAgLS0tLS0tLS0gc2hhcmVkIC0tLS0tLS0tXG4iKTsKICAgICBwcmludGsoIlty ZWZdIGxvY2FsZG9tIG1mbiAgICAgIHBpbiAgICAgICAgICBsb2NhbGRvbSBnbWZuICAgICBmbGFn c1xuIik7CkBAIC0zOTQ5LDcgKzQwMDEsOCBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJp bnQoc3RydWN0IGRvbWFpbiAqcmQpCiAgICAgICAgICAgIG5yX2dyYW50X2ZyYW1lcyhndCksIGd0 LT5tYXhfZ3JhbnRfZnJhbWVzLAogICAgICAgICAgICBucl9tYXB0cmFja19mcmFtZXMoZ3QpLCBn dC0+bWF4X21hcHRyYWNrX2ZyYW1lcyk7CiAKLSAgICBmb3IgKCByZWYgPSAwOyByZWYgIT0gbnJf Z3JhbnRfZW50cmllcyhndCk7IHJlZisrICkKKyAgICBucl9lbnRzID0gbnJfZ3JhbnRfZW50cmll cyhndCk7CisgICAgZm9yICggcmVmID0gMDsgcmVmICE9IG5yX2VudHM7IHJlZisrICkKICAgICB7 CiAgICAgICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsKICAgICAgICAgc3RydWN0 IGdyYW50X2VudHJ5X2hlYWRlciAqc2hhOwotLSAKMi43LjQKCgoKCkFtYXpvbiBEZXZlbG9wbWVu dCBDZW50ZXIgR2VybWFueSBHbWJICktyYXVzZW5zdHIuIDM4CjEwMTE3IEJlcmxpbgpHZXNjaGFl ZnRzZnVlaHJlcjogQ2hyaXN0aWFuIFNjaGxhZWdlciwgUmFsZiBIZXJicmljaApVc3QtSUQ6IERF IDI4OSAyMzcgODc5CkVpbmdldHJhZ2VuIGFtIEFtdHNnZXJpY2h0IENoYXJsb3R0ZW5idXJnIEhS QiAxNDkxNzMgQgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs