From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [PATCH v9 77/84] KVM: introspection: add KVMI_VM_SET_PAGE_ACCESS Date: Wed, 22 Jul 2020 00:09:15 +0300 Message-ID: <20200721210922.7646-78-alazar@bitdefender.com> References: <20200721210922.7646-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20200721210922.7646-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" To: kvm@vger.kernel.org Cc: =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Paolo Bonzini , =?UTF-8?q?Mihai=20Don=C8=9Bu?= , virtualization@lists.linux-foundation.org List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBjb21tYW5k IHNldHMgdGhlIHNwdGUgYWNjZXNzIGJpdHMgKHJ3eCkgZm9yIGFuIGFycmF5IG9mIGd1ZXN0CnBo eXNpY2FsIGFkZHJlc3NlcyAodGhyb3VnaCB0aGUgcGFnZSB0cmFja2luZyBzdWJzeXN0ZW0pLgoK VGhlc2UgR1BBcywgd2l0aCB0aGUgcmVxdWVzdGVkIGFjY2VzcyBiaXRzLCBhcmUgYWxzbyBrZXB0 IGluIGEgcmFkaXgKdHJlZSBpbiBvcmRlciB0byBmaWx0ZXIgb3V0IHRoZSAjUEYgZXZlbnRzIHdo aWNoIGFyZSBvZiBubyBpbnRlcmVzdCB0bwp0aGUgaW50cm9zcGVjdGlvbiB0b29sLgoKVGhlIGFj Y2VzcyByZXN0cmljdGlvbnMgZm9yIHBhZ2VzIHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSBn dWVzdCBhcmUKc2lsZW50bHkgaWdub3JlZCBieSBkZWZhdWx0ICh0aGUgdG9vbCBtaWdodCBzZXQg cmVzdHJpY3Rpb25zIGZvciB0aGUKd2hvbGUgbWVtb3J5LCBiYXNlZCBvbiBLVk1JX1ZNX0dFVF9N QVhfR0ZOKS4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVy LmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRl ci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVy LmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0ICAgICAgICAgICAgICAg fCAgNjAgKysrKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAgICAgICAg ICAgfCAgIDIgKwogYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmggICAgICAgICAgICAg IHwgICA3ICsKIGFyY2gveDg2L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA0MCArKysrCiBpbmNsdWRlL2xpbnV4L2t2bWlfaG9zdC5oICAgICAgICAgICAgICAgICAgICAg fCAgIDMgKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAgICAgICAgICAgICAgIHwg IDIzICsrKwogLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMgIHwg IDUyICsrKysrKwogdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pLmMgICAgICAgICAgICAgICAg IHwgMTc0ICsrKysrKysrKysrKysrKysrLQogdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2lu dC5oICAgICAgICAgICAgIHwgIDEyICsrCiB2aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNn LmMgICAgICAgICAgICAgfCAgMTIgKysKIDEwIGZpbGVzIGNoYW5nZWQsIDM4NCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9r dm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QKaW5kZXggNTM2ZDZlY2Vj MDI2Li4xMjNiMjM2MGQyZTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3Zt aS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9rdm1pLnJzdApAQCAtOTc3LDYgKzk3 Nyw2NiBAQCB0byBjb250cm9sIGV2ZW50cyBmb3IgYW55IG90aGVyIHJlZ2lzdGVyIHdpbGwgZmFp bCB3aXRoIC1LVk1fRUlOVkFMOjoKICogLUtWTV9FSU5WQUwgLSB0aGUgcGFkZGluZyBpcyBub3Qg emVybwogKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3Bl Y3RlZCB5ZXQKIAorMjMuIEtWTUlfVk1fU0VUX1BBR0VfQUNDRVNTCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IHg4NgorOlZlcnNpb25zOiA+PSAxCis6UGFy YW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX3ZtX3NldF9wYWdlX2FjY2VzcyB7CisJCV9f dTE2IGNvdW50OworCQlfX3UxNiBwYWRkaW5nMTsKKwkJX191MzIgcGFkZGluZzI7CisJCXN0cnVj dCBrdm1pX3BhZ2VfYWNjZXNzX2VudHJ5IGVudHJpZXNbMF07CisJfTsKKword2hlcmU6OgorCisJ c3RydWN0IGt2bWlfcGFnZV9hY2Nlc3NfZW50cnkgeworCQlfX3U2NCBncGE7CisJCV9fdTggYWNj ZXNzOworCQlfX3U4IHZpc2libGU7CisJCV9fdTE2IHBhZGRpbmcxOworCQlfX3UzMiBwYWRkaW5n MjsKKwl9OworCisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfZXJyb3JfY29kZQor CitTZXRzIHRoZSBhY2Nlc3MgYml0cyAocnd4KSBmb3IgYW4gYXJyYXkgb2YgYGBjb3VudGBgIGd1 ZXN0IHBoeXNpY2FsCithZGRyZXNzZXMuCisKK1RoZSB2YWxpZCBhY2Nlc3MgYml0cyBhcmU6Ogor CisJS1ZNSV9QQUdFX0FDQ0VTU19SCisJS1ZNSV9QQUdFX0FDQ0VTU19XCisJS1ZNSV9QQUdFX0FD Q0VTU19YCisKKworVGhlIGNvbW1hbmQgd2lsbCBmYWlsIHdpdGggLUtWTV9FSU5WQUwgaWYgYW55 IG9mIHRoZSBzcGVjaWZpZWQgY29tYmluYXRpb24KK29mIGFjY2VzcyBiaXRzIGlzIG5vdCBzdXBw b3J0ZWQuIEFsc28sIGlmIGBgdmlzaWJsZWBgIGlzIHNldCB0byAxIGJ1dAordGhlIHBhZ2UgaXMg bm90IHZpc2libGUuCisKK1RoZSBjb21tYW5kIHdpbGwgdHJ5IHRvIGFwcGx5IGFsbCBjaGFuZ2Vz IGFuZCByZXR1cm4gdGhlIGZpcnN0IGVycm9yIGlmCitzb21lIGZhaWxlZC4gVGhlIGludHJvc3Bl Y3Rpb24gdG9vbCBzaG91bGQgaGFuZGxlIHRoZSByb2xsYmFjay4KKworSW4gb3JkZXIgdG8gJ2Zv cmdldCcgYW4gYWRkcmVzcywgYWxsIHRocmVlIGJpdHMgKCdyd3gnKSBtdXN0IGJlIHNldC4KKwor OkVycm9yczoKKworKiAtS1ZNX0VJTlZBTCAtIHRoZSBzcGVjaWZpZWQgYWNjZXNzIGJpdHMgY29t YmluYXRpb24gaXMgaW52YWxpZAorKiAtS1ZNX0VJTlZBTCAtIHRoZSBwYWRkaW5nIGlzIG5vdCB6 ZXJvCisqIC1LVk1fRUlOVkFMIC0gdGhlIG1lc3NhZ2Ugc2l6ZSBpcyBpbnZhbGlkCisqIC1LVk1f RUFHQUlOIC0gdGhlIHNlbGVjdGVkIHZDUFUgY2FuJ3QgYmUgaW50cm9zcGVjdGVkIHlldAorKiAt S1ZNX0VOT01FTSAtIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0aGUgcGFnZSB0 cmFja2luZyBzdHJ1Y3R1cmVzCisKIEV2ZW50cwogPT09PT09CiAKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9z dC5oCmluZGV4IGFjZmNlYmNlNTFkZC4uZDk2YmYwZTE1ZWEyIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9o b3N0LmgKQEAgLTQ1LDYgKzQ1LDggQEAKICNkZWZpbmUgS1ZNX1BSSVZBVEVfTUVNX1NMT1RTIDMK ICNkZWZpbmUgS1ZNX01FTV9TTE9UU19OVU0gKEtWTV9VU0VSX01FTV9TTE9UUyArIEtWTV9QUklW QVRFX01FTV9TTE9UUykKIAorI2luY2x1ZGUgPGFzbS9rdm1pX2hvc3QuaD4KKwogI2RlZmluZSBL Vk1fSEFMVF9QT0xMX05TX0RFRkFVTFQgMjAwMDAwCiAKICNkZWZpbmUgS1ZNX0lSUUNISVBfTlVN X1BJTlMgIEtWTV9JT0FQSUNfTlVNX1BJTlMKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmgKaW5kZXgg YWNjMDAzNDAzYzk1Li45OGVhNTQ4YzBiMTUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCkBA IC0yLDYgKzIsNyBAQAogI2lmbmRlZiBfQVNNX1g4Nl9LVk1JX0hPU1RfSAogI2RlZmluZSBfQVNN X1g4Nl9LVk1JX0hPU1RfSAogCisjaW5jbHVkZSA8YXNtL2t2bV9wYWdlX3RyYWNrLmg+CiAjaW5j bHVkZSA8YXNtL2t2bWkuaD4KIAogc3RydWN0IG1zcl9kYXRhOwpAQCAtNDIsNiArNDMsMTIgQEAg c3RydWN0IGt2bV92Y3B1X2FyY2hfaW50cm9zcGVjdGlvbiB7CiBzdHJ1Y3Qga3ZtX2FyY2hfaW50 cm9zcGVjdGlvbiB7CiB9OwogCisjZGVmaW5lIFNMT1RTX1NJWkUgQklUU19UT19MT05HUyhLVk1f TUVNX1NMT1RTX05VTSkKKworc3RydWN0IGt2bWlfYXJjaF9tZW1fYWNjZXNzIHsKKwl1bnNpZ25l ZCBsb25nIGFjdGl2ZVtLVk1fUEFHRV9UUkFDS19NQVhdW1NMT1RTX1NJWkVdOworfTsKKwogI2lm ZGVmIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTgogCiBib29sIGt2bWlfbW9uaXRvcl9icF9pbnRl cmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZGJnKTsKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2t2bS9rdm1pLmMgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCmluZGV4IDBiMTMwMWViYWZiYS4u YjIzM2EzYzViZWNiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0va3ZtaS5jCisrKyBiL2FyY2gv eDg2L2t2bS9rdm1pLmMKQEAgLTExNjksMyArMTE2OSw0MyBAQCBib29sIGt2bWlfbXNyX2V2ZW50 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpCiAKIAlyZXR1cm4g cmV0OwogfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwl1bnNpZ25lZCBpbnQgYWxsb3dfYml0 OworCWVudW0ga3ZtX3BhZ2VfdHJhY2tfbW9kZSB0cmFja19tb2RlOworfSB0cmFja19tb2Rlc1td ID0geworCXsgS1ZNSV9QQUdFX0FDQ0VTU19SLCBLVk1fUEFHRV9UUkFDS19QUkVSRUFEIH0sCisJ eyBLVk1JX1BBR0VfQUNDRVNTX1csIEtWTV9QQUdFX1RSQUNLX1BSRVdSSVRFIH0sCisJeyBLVk1J X1BBR0VfQUNDRVNTX1gsIEtWTV9QQUdFX1RSQUNLX1BSRUVYRUMgfSwKK307CisKK3ZvaWQga3Zt aV9hcmNoX3VwZGF0ZV9wYWdlX3RyYWNraW5nKHN0cnVjdCBrdm0gKmt2bSwKKwkJCQkgICAgc3Ry dWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwKKwkJCQkgICAgc3RydWN0IGt2bWlfbWVtX2FjY2Vz cyAqbSkKK3sKKwlzdHJ1Y3Qga3ZtaV9hcmNoX21lbV9hY2Nlc3MgKmFyY2ggPSAmbS0+YXJjaDsK KwlpbnQgaTsKKworCWlmICghc2xvdCkgeworCQlzbG90ID0gZ2ZuX3RvX21lbXNsb3Qoa3ZtLCBt LT5nZm4pOworCQlpZiAoIXNsb3QpCisJCQlyZXR1cm47CisJfQorCisJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUodHJhY2tfbW9kZXMpOyBpKyspIHsKKwkJdW5zaWduZWQgaW50IGFsbG93X2Jp dCA9IHRyYWNrX21vZGVzW2ldLmFsbG93X2JpdDsKKwkJZW51bSBrdm1fcGFnZV90cmFja19tb2Rl IG1vZGUgPSB0cmFja19tb2Rlc1tpXS50cmFja19tb2RlOworCQlib29sIHNsb3RfdHJhY2tlZCA9 IHRlc3RfYml0KHNsb3QtPmlkLCBhcmNoLT5hY3RpdmVbbW9kZV0pOworCisJCWlmIChtLT5hY2Nl c3MgJiBhbGxvd19iaXQpIHsKKwkJCWlmIChzbG90X3RyYWNrZWQpIHsKKwkJCQlrdm1fc2xvdF9w YWdlX3RyYWNrX3JlbW92ZV9wYWdlKGt2bSwgc2xvdCwKKwkJCQkJCQkJbS0+Z2ZuLCBtb2RlKTsK KwkJCQljbGVhcl9iaXQoc2xvdC0+aWQsIGFyY2gtPmFjdGl2ZVttb2RlXSk7CisJCQl9CisJCX0g ZWxzZSBpZiAoIXNsb3RfdHJhY2tlZCkgeworCQkJa3ZtX3Nsb3RfcGFnZV90cmFja19hZGRfcGFn ZShrdm0sIHNsb3QsIG0tPmdmbiwgbW9kZSk7CisJCQlzZXRfYml0KHNsb3QtPmlkLCBhcmNoLT5h Y3RpdmVbbW9kZV0pOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1p X2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtaV9ob3N0LmgKaW5kZXggMWZhZTU4OWQ5ZDM1Li4x MWViOWIxYzNjNWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtaV9ob3N0LmgKKysrIGIv aW5jbHVkZS9saW51eC9rdm1pX2hvc3QuaApAQCAtNjQsNiArNjQsOSBAQCBzdHJ1Y3Qga3ZtX2lu dHJvc3BlY3Rpb24gewogCWF0b21pY190IGV2X3NlcTsKIAogCWJvb2wgY2xlYW51cF9vbl91bmhv b2s7CisKKwlzdHJ1Y3QgcmFkaXhfdHJlZV9yb290IGFjY2Vzc190cmVlOworCXJ3bG9ja190IGFj Y2Vzc190cmVlX2xvY2s7CiB9OwogCiBpbnQga3ZtaV92ZXJzaW9uKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgK aW5kZXggMjg3MmY5MGZmMDkyLi5kYzgyZjE5MjUzNGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFw aS9saW51eC9rdm1pLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaApAQCAtNDUsNiAr NDUsOCBAQCBlbnVtIHsKIAlLVk1JX1ZDUFVfR0VUX01UUlJfVFlQRSA9IDIxLAogCUtWTUlfVkNQ VV9DT05UUk9MX01TUiAgID0gMjIsCiAKKwlLVk1JX1ZNX1NFVF9QQUdFX0FDQ0VTUyA9IDIzLAor CiAJS1ZNSV9OVU1fTUVTU0FHRVMKIH07CiAKQEAgLTY4LDYgKzcwLDEyIEBAIGVudW0gewogCUtW TUlfRVZFTlRfQUNUSU9OX0NSQVNIICAgID0gMiwKIH07CiAKK2VudW0geworCUtWTUlfUEFHRV9B Q0NFU1NfUiA9IDEgPDwgMCwKKwlLVk1JX1BBR0VfQUNDRVNTX1cgPSAxIDw8IDEsCisJS1ZNSV9Q QUdFX0FDQ0VTU19YID0gMSA8PCAyLAorfTsKKwogc3RydWN0IGt2bWlfbXNnX2hkciB7CiAJX191 MTYgaWQ7CiAJX191MTYgc2l6ZTsKQEAgLTE2NCw2ICsxNzIsMjEgQEAgc3RydWN0IGt2bWlfdm1f Z2V0X21heF9nZm5fcmVwbHkgewogCV9fdTY0IGdmbjsKIH07CiAKK3N0cnVjdCBrdm1pX3BhZ2Vf YWNjZXNzX2VudHJ5IHsKKwlfX3U2NCBncGE7CisJX191OCBhY2Nlc3M7CisJX191OCB2aXNpYmxl OworCV9fdTE2IHBhZGRpbmcxOworCV9fdTMyIHBhZGRpbmcyOworfTsKKworc3RydWN0IGt2bWlf dm1fc2V0X3BhZ2VfYWNjZXNzIHsKKwlfX3UxNiBjb3VudDsKKwlfX3UxNiBwYWRkaW5nMTsKKwlf X3UzMiBwYWRkaW5nMjsKKwlzdHJ1Y3Qga3ZtaV9wYWdlX2FjY2Vzc19lbnRyeSBlbnRyaWVzWzBd OworfTsKKwogc3RydWN0IGt2bWlfZXZlbnQgewogCV9fdTE2IHNpemU7CiAJX191MTYgdmNwdTsK ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0 LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCmluZGV4 IDBkZGMwMDI5ZTNlNS4uNGZiMTA5Y2VjMWI0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9rdm0veDg2XzY0L2t2bWlfdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMKQEAgLTE4MDksNiArMTgwOSw1NyBAQCBzdGF0aWMg dm9pZCB0ZXN0X2NtZF92Y3B1X2NvbnRyb2xfbXNyKHN0cnVjdCBrdm1fdm0gKnZtKQogCXRlc3Rf aW52YWxpZF9jb250cm9sX21zcih2bSwgbXNyKTsKIH0KIAorc3RhdGljIGludCBjbWRfc2V0X3Bh Z2VfYWNjZXNzKF9fdTE2IGNvdW50LCBfX3U2NCAqZ3BhLCBfX3U4ICphY2Nlc3MpCit7CisJc3Ry dWN0IGt2bWlfcGFnZV9hY2Nlc3NfZW50cnkgKmVudHJ5LCAqZW5kOworCXN0cnVjdCBrdm1pX3Zt X3NldF9wYWdlX2FjY2VzcyAqY21kOworCXN0cnVjdCBrdm1pX21zZ19oZHIgKnJlcTsKKwlzaXpl X3QgcmVxX3NpemU7CisJaW50IHI7CisKKwlyZXFfc2l6ZSA9IHNpemVvZigqcmVxKSArIHNpemVv ZigqY21kKSArIGNvdW50ICogc2l6ZW9mKCplbnRyeSk7CisJcmVxID0gY2FsbG9jKDEsIHJlcV9z aXplKTsKKworCVRFU1RfQVNTRVJUKHJlcSwgIkluc3VmZmljaWVudCBNZW1vcnlcbiIpOworCisJ Y21kID0gKHN0cnVjdCBrdm1pX3ZtX3NldF9wYWdlX2FjY2VzcyAqKShyZXEgKyAxKTsKKwljbWQt PmNvdW50ID0gY291bnQ7CisKKwllbnRyeSA9IGNtZC0+ZW50cmllczsKKwllbmQgPSBjbWQtPmVu dHJpZXMgKyBjb3VudDsKKwlmb3IgKDsgZW50cnkgPCBlbmQ7IGVudHJ5KyspIHsKKwkJZW50cnkt PmdwYSA9ICpncGErKzsKKwkJZW50cnktPmFjY2VzcyA9ICphY2Nlc3MrKzsKKwl9CisKKwlyID0g ZG9fY29tbWFuZChLVk1JX1ZNX1NFVF9QQUdFX0FDQ0VTUywgcmVxLCByZXFfc2l6ZSwgTlVMTCwg MCk7CisKKwlmcmVlKHJlcSk7CisJcmV0dXJuIHI7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9wYWdl X2FjY2VzcyhfX3U2NCBncGEsIF9fdTggYWNjZXNzKQoreworCWludCByOworCisJciA9IGNtZF9z ZXRfcGFnZV9hY2Nlc3MoMSwgJmdwYSwgJmFjY2Vzcyk7CisJVEVTVF9BU1NFUlQociA9PSAwLAor CQkiS1ZNSV9WTV9TRVRfUEFHRV9BQ0NFU1MgZmFpbGVkLCBncGEgMHglbGx4LCBhY2Nlc3MgMHgl eCwgZXJyb3IgJWQgKCVzKVxuIiwKKwkJZ3BhLCBhY2Nlc3MsIC1yLCBrdm1fc3RyZXJyb3IoLXIp KTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9jbWRfdm1fc2V0X3BhZ2VfYWNjZXNzKHN0cnVjdCBr dm1fdm0gKnZtKQoreworCV9fdTggZnVsbF9hY2Nlc3MgPSBLVk1JX1BBR0VfQUNDRVNTX1IgfCBL Vk1JX1BBR0VfQUNDRVNTX1cKKwkJCXwgS1ZNSV9QQUdFX0FDQ0VTU19YOworCV9fdTggbm9fYWNj ZXNzID0gMDsKKwlfX3U2NCBncGEgPSAwOworCisJc2V0X3BhZ2VfYWNjZXNzKGdwYSwgbm9fYWNj ZXNzKTsKKworCXNldF9wYWdlX2FjY2VzcyhncGEsIGZ1bGxfYWNjZXNzKTsKK30KKwogc3RhdGlj IHZvaWQgdGVzdF9pbnRyb3NwZWN0aW9uKHN0cnVjdCBrdm1fdm0gKnZtKQogewogCXNyYW5kb20o dGltZSgwKSk7CkBAIC0xODQxLDYgKzE4OTIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludHJvc3Bl Y3Rpb24oc3RydWN0IGt2bV92bSAqdm0pCiAJdGVzdF9jbWRfdmNwdV9nZXRfbXRycl90eXBlKHZt KTsKIAl0ZXN0X2V2ZW50X2Rlc2NyaXB0b3Iodm0pOwogCXRlc3RfY21kX3ZjcHVfY29udHJvbF9t c3Iodm0pOworCXRlc3RfY21kX3ZtX3NldF9wYWdlX2FjY2Vzcyh2bSk7CiAKIAl1bmhvb2tfaW50 cm9zcGVjdGlvbih2bSk7CiB9CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2 bWkuYyBiL3ZpcnQva3ZtL2ludHJvc3BlY3Rpb24va3ZtaS5jCmluZGV4IGFhOGEwNzA4Y2MxYy4u YjU3YWQ0OTBkZDA2IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYwor KysgYi92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWkuYwpAQCAtMjEsNiArMjEsMTEgQEAgc3Rh dGljIERFQ0xBUkVfQklUTUFQKEt2bWlfa25vd25fdmNwdV9ldmVudHMsIEtWTUlfTlVNX0VWRU5U Uyk7CiAKIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqbXNnX2NhY2hlOwogc3RhdGljIHN0cnVj dCBrbWVtX2NhY2hlICpqb2JfY2FjaGU7CitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnJhZGl4 X2NhY2hlOworCitzdGF0aWMgY29uc3QgdTggZnVsbF9hY2Nlc3MgID0JS1ZNSV9QQUdFX0FDQ0VT U19SIHwKKwkJCQlLVk1JX1BBR0VfQUNDRVNTX1cgfAorCQkJCUtWTUlfUEFHRV9BQ0NFU1NfWDsK IAogdm9pZCAqa3ZtaV9tc2dfYWxsb2Modm9pZCkKIHsKQEAgLTM5LDYgKzQ0LDggQEAgc3RhdGlj IHZvaWQga3ZtaV9jYWNoZV9kZXN0cm95KHZvaWQpCiAJbXNnX2NhY2hlID0gTlVMTDsKIAlrbWVt X2NhY2hlX2Rlc3Ryb3koam9iX2NhY2hlKTsKIAlqb2JfY2FjaGUgPSBOVUxMOworCWttZW1fY2Fj aGVfZGVzdHJveShyYWRpeF9jYWNoZSk7CisJcmFkaXhfY2FjaGUgPSBOVUxMOwogfQogCiBzdGF0 aWMgaW50IGt2bWlfY2FjaGVfY3JlYXRlKHZvaWQpCkBAIC00OCw4ICs1NSwxMSBAQCBzdGF0aWMg aW50IGt2bWlfY2FjaGVfY3JlYXRlKHZvaWQpCiAJam9iX2NhY2hlID0ga21lbV9jYWNoZV9jcmVh dGUoImt2bWlfam9iIiwKIAkJCQkgICAgICBzaXplb2Yoc3RydWN0IGt2bWlfam9iKSwKIAkJCQkg ICAgICAwLCBTTEFCX0FDQ09VTlQsIE5VTEwpOworCXJhZGl4X2NhY2hlID0ga21lbV9jYWNoZV9j cmVhdGUoImt2bWlfcmFkaXhfdHJlZSIsCisJCQkJCXNpemVvZihzdHJ1Y3Qga3ZtaV9tZW1fYWNj ZXNzKSwKKwkJCQkJMCwgU0xBQl9BQ0NPVU5ULCBOVUxMKTsKIAotCWlmICghbXNnX2NhY2hlIHx8 ICFqb2JfY2FjaGUpIHsKKwlpZiAoIW1zZ19jYWNoZSB8fCAham9iX2NhY2hlIHx8ICFyYWRpeF9j YWNoZSkgewogCQlrdm1pX2NhY2hlX2Rlc3Ryb3koKTsKIAogCQlyZXR1cm4gLTE7CkBAIC0yNDEs MTIgKzI1MSwzOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3ZjcHVpKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgYm9vbCByZXN0b3JlX2ludGVyY2VwdGlvbikKIAlrdm1pX21ha2VfcmVxdWVzdCh2Y3B1LCBm YWxzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGt2bWlfY2xlYXJfbWVtX2FjY2VzcyhzdHJ1Y3Qga3Zt ICprdm0pCit7CisJc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pID0gS1ZNSShrdm0pOwor CXN0cnVjdCByYWRpeF90cmVlX2l0ZXIgaXRlcjsKKwl2b2lkICoqc2xvdDsKKwlpbnQgaWR4Owor CisJaWR4ID0gc3JjdV9yZWFkX2xvY2soJmt2bS0+c3JjdSk7CisJc3Bpbl9sb2NrKCZrdm0tPm1t dV9sb2NrKTsKKworCXJhZGl4X3RyZWVfZm9yX2VhY2hfc2xvdChzbG90LCAma3ZtaS0+YWNjZXNz X3RyZWUsICZpdGVyLCAwKSB7CisJCXN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm0gPSAqc2xvdDsK KworCQltLT5hY2Nlc3MgPSBmdWxsX2FjY2VzczsKKwkJa3ZtaV9hcmNoX3VwZGF0ZV9wYWdlX3Ry YWNraW5nKGt2bSwgTlVMTCwgbSk7CisKKwkJcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZSgma3ZtaS0+ YWNjZXNzX3RyZWUsICZpdGVyLCBzbG90KTsKKwkJa21lbV9jYWNoZV9mcmVlKHJhZGl4X2NhY2hl LCBtKTsKKwl9CisKKwlzcGluX3VubG9jaygma3ZtLT5tbXVfbG9jayk7CisJc3JjdV9yZWFkX3Vu bG9jaygma3ZtLT5zcmN1LCBpZHgpOworfQorCiBzdGF0aWMgdm9pZCBmcmVlX2t2bWkoc3RydWN0 IGt2bSAqa3ZtKQogewogCWJvb2wgcmVzdG9yZV9pbnRlcmNlcHRpb24gPSBLVk1JKGt2bSktPmNs ZWFudXBfb25fdW5ob29rOwogCXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKIAlpbnQgaTsKIAorCWt2 bWlfY2xlYXJfbWVtX2FjY2Vzcyhrdm0pOworCiAJa3ZtX2Zvcl9lYWNoX3ZjcHUoaSwgdmNwdSwg a3ZtKQogCQlmcmVlX3ZjcHVpKHZjcHUsIHJlc3RvcmVfaW50ZXJjZXB0aW9uKTsKIApAQCAtMjk3 LDYgKzMzMywxMCBAQCBhbGxvY19rdm1pKHN0cnVjdCBrdm0gKmt2bSwgY29uc3Qgc3RydWN0IGt2 bV9pbnRyb3NwZWN0aW9uX2hvb2sgKmhvb2spCiAKIAlhdG9taWNfc2V0KCZrdm1pLT5ldl9zZXEs IDApOwogCisJSU5JVF9SQURJWF9UUkVFKCZrdm1pLT5hY2Nlc3NfdHJlZSwKKwkJCUdGUF9LRVJO RUwgJiB+X19HRlBfRElSRUNUX1JFQ0xBSU0pOworCXJ3bG9ja19pbml0KCZrdm1pLT5hY2Nlc3Nf dHJlZV9sb2NrKTsKKwogCWt2bV9mb3JfZWFjaF92Y3B1KGksIHZjcHUsIGt2bSkgewogCQlpbnQg ZXJyID0gY3JlYXRlX3ZjcHVpKHZjcHUpOwogCkBAIC0xMDEwLDMgKzEwNTAsMTM1IEBAIGJvb2wg a3ZtaV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJa3ZtaV9wdXQodmNwdS0+ a3ZtKTsKIAlyZXR1cm4gcjsKIH0KKworc3RhdGljIHN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKgor X19rdm1pX2dldF9nZm5fYWNjZXNzKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwgY29u c3QgZ2ZuX3QgZ2ZuKQoreworCXJldHVybiByYWRpeF90cmVlX2xvb2t1cCgma3ZtaS0+YWNjZXNz X3RyZWUsIGdmbik7Cit9CisKK3N0YXRpYyB2b2lkIGt2bWlfdXBkYXRlX21lbV9hY2Nlc3Moc3Ry dWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtaV9tZW1fYWNjZXNzICptKQoreworCXN0cnVjdCBrdm1f aW50cm9zcGVjdGlvbiAqa3ZtaSA9IEtWTUkoa3ZtKTsKKworCWt2bWlfYXJjaF91cGRhdGVfcGFn ZV90cmFja2luZyhrdm0sIE5VTEwsIG0pOworCisJaWYgKG0tPmFjY2VzcyA9PSBmdWxsX2FjY2Vz cykgeworCQlyYWRpeF90cmVlX2RlbGV0ZSgma3ZtaS0+YWNjZXNzX3RyZWUsIG0tPmdmbik7CisJ CWttZW1fY2FjaGVfZnJlZShyYWRpeF9jYWNoZSwgbSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBr dm1pX2luc2VydF9tZW1fYWNjZXNzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bWlfbWVtX2Fj Y2VzcyAqbSkKK3sKKwlzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKmt2bWkgPSBLVk1JKGt2bSk7 CisKKwlyYWRpeF90cmVlX2luc2VydCgma3ZtaS0+YWNjZXNzX3RyZWUsIG0tPmdmbiwgbSk7CisJ a3ZtaV9hcmNoX3VwZGF0ZV9wYWdlX3RyYWNraW5nKGt2bSwgTlVMTCwgbSk7Cit9CisKK3N0YXRp YyB2b2lkIGt2bWlfc2V0X21lbV9hY2Nlc3Moc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtaV9t ZW1fYWNjZXNzICptLAorCQkJCWJvb2wgKnVzZWQpCit7CisJc3RydWN0IGt2bV9pbnRyb3NwZWN0 aW9uICprdm1pID0gS1ZNSShrdm0pOworCXN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKmZvdW5kOwor CWludCBpZHg7CisKKwlpZHggPSBzcmN1X3JlYWRfbG9jaygma3ZtLT5zcmN1KTsKKwlzcGluX2xv Y2soJmt2bS0+bW11X2xvY2spOworCXdyaXRlX2xvY2soJmt2bWktPmFjY2Vzc190cmVlX2xvY2sp OworCisJZm91bmQgPSBfX2t2bWlfZ2V0X2dmbl9hY2Nlc3Moa3ZtaSwgbS0+Z2ZuKTsKKwlpZiAo Zm91bmQpIHsKKwkJZm91bmQtPmFjY2VzcyA9IG0tPmFjY2VzczsKKwkJa3ZtaV91cGRhdGVfbWVt X2FjY2Vzcyhrdm0sIGZvdW5kKTsKKwl9IGVsc2UgaWYgKG0tPmFjY2VzcyAhPSBmdWxsX2FjY2Vz cykgeworCQlrdm1pX2luc2VydF9tZW1fYWNjZXNzKGt2bSwgbSk7CisJCSp1c2VkID0gdHJ1ZTsK Kwl9CisKKwl3cml0ZV91bmxvY2soJmt2bWktPmFjY2Vzc190cmVlX2xvY2spOworCXNwaW5fdW5s b2NrKCZrdm0tPm1tdV9sb2NrKTsKKwlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlkeCk7 Cit9CisKK3N0YXRpYyBpbnQga3ZtaV9zZXRfZ2ZuX2FjY2VzcyhzdHJ1Y3Qga3ZtICprdm0sIGdm bl90IGdmbiwgdTggYWNjZXNzKQoreworCXN0cnVjdCBrdm1pX21lbV9hY2Nlc3MgKm07CisJYm9v bCB1c2VkID0gZmFsc2U7CisJaW50IGVyciA9IDA7CisKKwltID0ga21lbV9jYWNoZV96YWxsb2Mo cmFkaXhfY2FjaGUsIEdGUF9LRVJORUwpOworCWlmICghbSkKKwkJcmV0dXJuIC1LVk1fRU5PTUVN OworCisJbS0+Z2ZuID0gZ2ZuOworCW0tPmFjY2VzcyA9IGFjY2VzczsKKworCWlmIChyYWRpeF90 cmVlX3ByZWxvYWQoR0ZQX0tFUk5FTCkpCisJCWVyciA9IC1LVk1fRU5PTUVNOworCWVsc2UKKwkJ a3ZtaV9zZXRfbWVtX2FjY2Vzcyhrdm0sIG0sICZ1c2VkKTsKKworCXJhZGl4X3RyZWVfcHJlbG9h ZF9lbmQoKTsKKworCWlmICghdXNlZCkKKwkJa21lbV9jYWNoZV9mcmVlKHJhZGl4X2NhY2hlLCBt KTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBib29sIGt2bWlfaXNfdmlzaWJsZV9nZm4o c3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm4pCit7CisJYm9vbCB2aXNpYmxlOworCWludCBpZHg7 CisKKwlpZHggPSBzcmN1X3JlYWRfbG9jaygma3ZtLT5zcmN1KTsKKwl2aXNpYmxlID0ga3ZtX2lz X3Zpc2libGVfZ2ZuKGt2bSwgZ2ZuKTsKKwlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlk eCk7CisKKwlyZXR1cm4gdmlzaWJsZTsKK30KKworc3RhdGljIGludCBzZXRfcGFnZV9hY2Nlc3Nf ZW50cnkoc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICprdm1pLAorCQkJCSBjb25zdCBzdHJ1Y3Qg a3ZtaV9wYWdlX2FjY2Vzc19lbnRyeSAqZW50cnkpCit7CisJdTggdW5rbm93bl9iaXRzID0gfihL Vk1JX1BBR0VfQUNDRVNTX1IgfCBLVk1JX1BBR0VfQUNDRVNTX1cKKwkJCSAgICB8IEtWTUlfUEFH RV9BQ0NFU1NfWCk7CisJZ2ZuX3QgZ2ZuID0gZ3BhX3RvX2dmbihlbnRyeS0+Z3BhKTsKKwlzdHJ1 Y3Qga3ZtICprdm0gPSBrdm1pLT5rdm07CisKKwlpZiAoKGVudHJ5LT5hY2Nlc3MgJiB1bmtub3du X2JpdHMpCisJCQl8fCBlbnRyeS0+cGFkZGluZzEgfHwgZW50cnktPnBhZGRpbmcyCisJCQl8fCBl bnRyeS0+dmlzaWJsZSA+IDEpCisJCXJldHVybiAtS1ZNX0VJTlZBTDsKKworCWlmICgha3ZtaV9p c192aXNpYmxlX2dmbihrdm0sIGdmbikpCisJCXJldHVybiBlbnRyeS0+dmlzaWJsZSA/IC1LVk1f RUlOVkFMIDogMDsKKworCXJldHVybiBrdm1pX3NldF9nZm5fYWNjZXNzKGt2bSwgZ2ZuLCBlbnRy eS0+YWNjZXNzKTsKK30KKworaW50IGt2bWlfY21kX3NldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qga3Zt X2ludHJvc3BlY3Rpb24gKmt2bWksCisJCQkgICAgIGNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIg Km1zZywKKwkJCSAgICAgY29uc3Qgc3RydWN0IGt2bWlfdm1fc2V0X3BhZ2VfYWNjZXNzICpyZXEp Cit7CisJY29uc3Qgc3RydWN0IGt2bWlfcGFnZV9hY2Nlc3NfZW50cnkgKmVudHJ5ID0gcmVxLT5l bnRyaWVzOworCWNvbnN0IHN0cnVjdCBrdm1pX3BhZ2VfYWNjZXNzX2VudHJ5ICplbmQgPSByZXEt PmVudHJpZXMgKyByZXEtPmNvdW50OworCWludCBlYyA9IDA7CisKKwlpZiAocmVxLT5wYWRkaW5n MSB8fCByZXEtPnBhZGRpbmcyKQorCQlyZXR1cm4gLUtWTV9FSU5WQUw7CisKKwlpZiAobXNnLT5z aXplIDwgc3RydWN0X3NpemUocmVxLCBlbnRyaWVzLCByZXEtPmNvdW50KSkKKwkJcmV0dXJuIC1L Vk1fRUlOVkFMOworCisJZm9yICg7IGVudHJ5IDwgZW5kOyBlbnRyeSsrKSB7CisJCWludCByID0g c2V0X3BhZ2VfYWNjZXNzX2VudHJ5KGt2bWksIGVudHJ5KTsKKworCQlpZiAociAmJiAhZWMpCisJ CQllYyA9IHI7CisJfQorCisJcmV0dXJuIGVjOworfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50 cm9zcGVjdGlvbi9rdm1pX2ludC5oIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX2ludC5o CmluZGV4IDhmODU1N2JkOGFiMC4uMDI0ZTdhY2YwZGNlIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9p bnRyb3NwZWN0aW9uL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1p X2ludC5oCkBAIC0yMSw2ICsyMSwxMiBAQAogI2RlZmluZSBLVk1JKGt2bSkgKChrdm0pLT5rdm1p KQogI2RlZmluZSBWQ1BVSSh2Y3B1KSAoKHZjcHUpLT5rdm1pKQogCitzdHJ1Y3Qga3ZtaV9tZW1f YWNjZXNzIHsKKwlnZm5fdCBnZm47CisJdTggYWNjZXNzOworCXN0cnVjdCBrdm1pX2FyY2hfbWVt X2FjY2VzcyBhcmNoOworfTsKKwogc3RhdGljIGlubGluZSBib29sIGlzX2V2ZW50X2VuYWJsZWQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXZlbnQpCiB7CiAJcmV0dXJuIHRlc3RfYml0KGV2 ZW50LCBWQ1BVSSh2Y3B1KS0+ZXZfZW5hYmxlX21hc2spOwpAQCAtNzMsNiArNzksOSBAQCBpbnQg a3ZtaV9jbWRfd3JpdGVfcGh5c2ljYWwoc3RydWN0IGt2bSAqa3ZtLCB1NjQgZ3BhLCBzaXplX3Qg c2l6ZSwKIGludCBrdm1pX2NtZF92Y3B1X3BhdXNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9v bCB3YWl0KTsKIGludCBrdm1pX2NtZF92Y3B1X3NldF9yZWdpc3RlcnMoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1LAogCQkJCWNvbnN0IHN0cnVjdCBrdm1fcmVncyAqcmVncyk7CitpbnQga3ZtaV9jbWRf c2V0X3BhZ2VfYWNjZXNzKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaSwKKwkJCSAgICAg Y29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJICAgICBjb25zdCBzdHJ1Y3Qga3Zt aV92bV9zZXRfcGFnZV9hY2Nlc3MgKnJlcSk7CiAKIC8qIGFyY2ggKi8KIGJvb2wga3ZtaV9hcmNo X3ZjcHVfYWxsb2NfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CkBAIC0xMTcs NSArMTI2LDggQEAgaW50IGt2bWlfYXJjaF9jbWRfdmNwdV9zZXRfeHNhdmUoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LAogaW50IGt2bWlfYXJjaF9jbWRfdmNwdV9nZXRfbXRycl90eXBlKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTggKnR5cGUpOwogaW50IGt2bWlfYXJjaF9jbWRfdmNw dV9jb250cm9sX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJICAgY29uc3Qgc3RydWN0 IGt2bWlfdmNwdV9jb250cm9sX21zciAqcmVxKTsKK3ZvaWQga3ZtaV9hcmNoX3VwZGF0ZV9wYWdl X3RyYWNraW5nKHN0cnVjdCBrdm0gKmt2bSwKKwkJCQkgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xv dCAqc2xvdCwKKwkJCQkgICAgc3RydWN0IGt2bWlfbWVtX2FjY2VzcyAqbSk7CiAKICNlbmRpZgpk aWZmIC0tZ2l0IGEvdmlydC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jIGIvdmlydC9rdm0v aW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCmluZGV4IGQ5Y2JiZWZiOTk5My4uZjdmZmI5NzFmMWRj IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9pbnRyb3NwZWN0aW9uL2t2bWlfbXNnLmMKKysrIGIvdmly dC9rdm0vaW50cm9zcGVjdGlvbi9rdm1pX21zZy5jCkBAIC0zMzQsNiArMzM0LDE3IEBAIHN0YXRp YyBpbnQgaGFuZGxlX3ZtX2dldF9tYXhfZ2ZuKHN0cnVjdCBrdm1faW50cm9zcGVjdGlvbiAqa3Zt aSwKIAlyZXR1cm4ga3ZtaV9tc2dfdm1fcmVwbHkoa3ZtaSwgbXNnLCAwLCAmcnBsLCBzaXplb2Yo cnBsKSk7CiB9CiAKK3N0YXRpYyBpbnQgaGFuZGxlX3ZtX3NldF9wYWdlX2FjY2VzcyhzdHJ1Y3Qg a3ZtX2ludHJvc3BlY3Rpb24gKmt2bWksCisJCQkJICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2df aGRyICptc2csCisJCQkJICAgICBjb25zdCB2b2lkICpyZXEpCit7CisJaW50IGVjOworCisJZWMg PSBrdm1pX2NtZF9zZXRfcGFnZV9hY2Nlc3Moa3ZtaSwgbXNnLCByZXEpOworCisJcmV0dXJuIGt2 bWlfbXNnX3ZtX3JlcGx5KGt2bWksIG1zZywgZWMsIE5VTEwsIDApOworfQorCiAvKgogICogVGhl c2UgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIGJ5IHRoZSByZWNlaXZpbmcgdGhyZWFkLgogICovCkBA IC0zNDgsNiArMzU5LDcgQEAgc3RhdGljIGludCgqY29uc3QgbXNnX3ZtW10pKHN0cnVjdCBrdm1f aW50cm9zcGVjdGlvbiAqLAogCVtLVk1JX1ZNX0dFVF9JTkZPXSAgICAgICAgPSBoYW5kbGVfdm1f Z2V0X2luZm8sCiAJW0tWTUlfVk1fR0VUX01BWF9HRk5dICAgICA9IGhhbmRsZV92bV9nZXRfbWF4 X2dmbiwKIAlbS1ZNSV9WTV9SRUFEX1BIWVNJQ0FMXSAgID0gaGFuZGxlX3ZtX3JlYWRfcGh5c2lj YWwsCisJW0tWTUlfVk1fU0VUX1BBR0VfQUNDRVNTXSA9IGhhbmRsZV92bV9zZXRfcGFnZV9hY2Nl c3MsCiAJW0tWTUlfVk1fV1JJVEVfUEhZU0lDQUxdICA9IGhhbmRsZV92bV93cml0ZV9waHlzaWNh bCwKIH07CiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K VmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZv dW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xp c3RpbmZvL3ZpcnR1YWxpemF0aW9u