From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 64/92] kvm: introspection: add single-stepping Date: Fri, 9 Aug 2019 19:00:19 +0300 Message-ID: <20190809160047.8319-65-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , Joerg Roedel , Sean Christopherson , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= , Jim Mattson List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTmljdciZb3IgQ8OuyJt1IDxuY2l0dUBiaXRkZWZlbmRlci5jb20+CgpUaGlzIHdvdWxk IGJlIHVzZWQgZWl0aGVyIGlmIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgcmVxdWVzdCBpdCBhcyBh CnJlcGx5IHRvIGEgS1ZNSV9FVkVOVF9QRiBldmVudCBvciB0byBjb3BlIHdpdGggaW5zdHJ1Y3Rp b25zIHRoYXQgY2Fubm90CmJlIGhhbmRsZWQgYnkgdGhlIHg4NiBlbXVsYXRvciBkdXJpbmcgdGhl IGhhbmRsaW5nIG9mIGEgVk1FWElULiBJbgp0aGVzZSBzaXR1YXRpb25zLCBhbGwgb3RoZXIgdkNQ VS1zIGFyZSBraWNrZWQgYW5kIGhlbGQsIHRoZSBFUFQtYmFzZWQKcHJvdGVjdGlvbiBpcyByZW1v dmVkIGFuZCB0aGUgZ3Vlc3QgaXMgc2luZ2xlIHN0ZXBwZWQgYnkgdGhlIHZDUFUgdGhhdAp0cmln Z2VyZWQgdGhlIGluaXRpYWwgVk1FWElULiBVcG9uIGNvbXBsZXRpb24gdGhlIEVQVC1iYXNlIHBy b3RlY3Rpb24KaXMgcmVpbnN0YWxsZWQgYW5kIGFsbCB2Q1BVLXMgYWxsIGFsbG93ZWQgdG8gcmV0 dXJuIHRvIHRoZSBndWVzdC4KClRoaXMgaXMgYSByYXRoZXIgc2xvdyB3b3JrYXJvdW5kIHRoYXQg a2lja3MgaW4gb2NjYXNpb25hbGx5LiBJbiB0aGUKZnV0dXJlLCB0aGUgbW9zdCBmcmVxdWVudGx5 IHNpbmdsZS1zdGVwcGVkIGluc3RydWN0aW9ucyBzaG91bGQgYmUgYWRkZWQKdG8gdGhlIGVtdWxh dG9yICh1c3VhbGx5LCBzdG9yZXMgdG8gYW5kIGZyb20gbWVtb3J5IC0gU1NFL0FWWCkuCgpGb3Ig dGhlIG1vbWVudCBpdCB3b3JrcyBvbmx5IG9uIEludGVsLgoKQ0M6IEppbSBNYXR0c29uIDxqbWF0 dHNvbkBnb29nbGUuY29tPgpDQzogU2VhbiBDaHJpc3RvcGhlcnNvbiA8c2Vhbi5qLmNocmlzdG9w aGVyc29uQGludGVsLmNvbT4KQ0M6IEpvZXJnIFJvZWRlbCA8am9yb0A4Ynl0ZXMub3JnPgpTaWdu ZWQtb2ZmLWJ5OiBOaWN1yJlvciBDw67Im3UgPG5jaXR1QGJpdGRlZmVuZGVyLmNvbT4KQ28tZGV2 ZWxvcGVkLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRkZWZlbmRlci5jb20+ClNpZ25lZC1v ZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVk LWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+ClNpZ25lZC1vZmYt Ynk6IEFkYWxiZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBhcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIHwgICAzICsKIGFyY2gveDg2L2t2bS9rdm1pLmMgICAg ICAgICAgICAgfCAgNDcgKysrKysrKysrKy0KIGFyY2gveDg2L2t2bS9zdm0uYyAgICAgICAgICAg ICAgfCAgIDUgKysKIGFyY2gveDg2L2t2bS92bXgvdm14LmMgICAgICAgICAgfCAgMTcgKysrKwog YXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAgICAgICB8ICAxOSArKysrKwogaW5jbHVkZS9saW51 eC9rdm1pLmggICAgICAgICAgICB8ICAgNCArCiB2aXJ0L2t2bS9rdm1pLmMgICAgICAgICAgICAg ICAgIHwgMTQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB2aXJ0L2t2bS9rdm1p X2ludC5oICAgICAgICAgICAgIHwgIDE2ICsrKysKIDggZmlsZXMgY2hhbmdlZCwgMjUzIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9h c20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYWQz NmE1ZmMyMDQ4Li42MGUyYzI5OGQ0NjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L2t2bV9ob3N0LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTAx Niw2ICsxMDE2LDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsKIAl2b2lkICgqbXNyX2ludGVyY2Vw dCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbXNyLAogCQkJCWJvb2wgZW5h YmxlKTsKIAlib29sICgqZGVzY19pbnRlcmNlcHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9v bCBlbmFibGUpOworCXZvaWQgKCpzZXRfbXRmKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wg ZW5hYmxlKTsKIAl2b2lkICgqY3IzX3dyaXRlX2V4aXRpbmcpKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgYm9vbCBlbmFibGUpOwogCWJvb2wgKCpuZXN0ZWRfcGFnZWZhdWx0KShzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpOwogCWJvb2wgKCpzcHRfZmF1bHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CkBA IC0xNjI4LDYgKzE2MjksOCBAQCB2b2lkIGt2bV9hcmNoX21zcl9pbnRlcmNlcHQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbXNyLAogCQkJCWJvb2wgZW5hYmxlKTsKIGJvb2wg a3ZtX21tdV9uZXN0ZWRfcGFnZWZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBib29sIGt2 bV9zcHRfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKK3ZvaWQga3ZtX3NldF9tdGYoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSk7Cit2b2lkIGt2bV9zZXRfaW50ZXJydXB0 X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBtYXNrKTsKIHZvaWQga3ZtX2NvbnRy b2xfY3IzX3dyaXRlX2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSk7 CiAKICNlbmRpZiAvKiBfQVNNX1g4Nl9LVk1fSE9TVF9IICovCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2bWkuYwppbmRleCAwNGNhYzViOGE0ZDAuLmYw YWI0YmQ5ZWIzNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4 Ni9rdm0va3ZtaS5jCkBAIC01MjAsNyArNTIwLDYgQEAgYm9vbCBrdm1pX2FyY2hfcGZfZXZlbnQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsIGd2YV90IGd2YSwKIAl1MzIgY3R4X3Np emU7CiAJdTY0IGN0eF9hZGRyOwogCXUzMiBhY3Rpb247Ci0JYm9vbCBzaW5nbGVzdGVwX2lnbm9y ZWQ7CiAJYm9vbCByZXQgPSBmYWxzZTsKIAogCWlmICgha3ZtX3NwdF9mYXVsdCh2Y3B1KSkKQEAg LTUzMyw3ICs1MzIsNyBAQCBib29sIGt2bWlfYXJjaF9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAogCWlmIChpdmNwdS0+ZWZmZWN0aXZlX3JlcF9j b21wbGV0ZSkKIAkJcmV0dXJuIHRydWU7CiAKLQlhY3Rpb24gPSBrdm1pX21zZ19zZW5kX3BmKHZj cHUsIGdwYSwgZ3ZhLCBhY2Nlc3MsICZzaW5nbGVzdGVwX2lnbm9yZWQsCisJYWN0aW9uID0ga3Zt aV9tc2dfc2VuZF9wZih2Y3B1LCBncGEsIGd2YSwgYWNjZXNzLCAmaXZjcHUtPnNzX3JlcXVlc3Rl ZCwKIAkJCQkgICZpdmNwdS0+cmVwX2NvbXBsZXRlLCAmY3R4X2FkZHIsCiAJCQkJICBpdmNwdS0+ Y3R4X2RhdGEsICZjdHhfc2l6ZSk7CiAKQEAgLTU0Nyw2ICs1NDYsOCBAQCBib29sIGt2bWlfYXJj aF9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3QgZ3ZhLAog CQlyZXQgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIEtWTUlfRVZFTlRfQUNUSU9OX1JFVFJZOgor CQlpZiAoaXZjcHUtPnNzX3JlcXVlc3RlZCAmJiAha3ZtaV9zdGFydF9zcyh2Y3B1LCBncGEsIGFj Y2VzcykpCisJCQlyZXQgPSB0cnVlOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlrdm1pX2hhbmRs ZV9jb21tb25fZXZlbnRfYWN0aW9ucyh2Y3B1LCBhY3Rpb24sICJQRiIpOwpAQCAtNzU4LDYgKzc1 OSw0OCBAQCBpbnQga3ZtaV9hcmNoX2NtZF9jb250cm9sX2NyKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwKIAlyZXR1cm4gMDsKIH0KIAordm9pZCBrdm1pX2FyY2hfc3RhcnRfc2luZ2xlX3N0ZXAoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCWt2bV9zZXRfbXRmKHZjcHUsIHRydWUpOworCisJLyoK KwkgKiBTZXQgYmxvY2sgYnkgU1RJIG9ubHkgaWYgdGhlIFJGTEFHUy5JRiA9IDEuCisJICogQmxv Y2tpbmcgYnkgYm90aCBTVEkgYW5kIE1PVi9QT1AgU1MgaXMgbm90IHBvc3NpYmxlLgorCSAqLwor CWlmIChrdm1fYXJjaF9pbnRlcnJ1cHRfYWxsb3dlZCh2Y3B1KSkKKwkJa3ZtX3NldF9pbnRlcnJ1 cHRfc2hhZG93KHZjcHUsIEtWTV9YODZfU0hBRE9XX0lOVF9TVEkpOworCit9CisKK3ZvaWQga3Zt aV9hcmNoX3N0b3Bfc2luZ2xlX3N0ZXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCWt2bV9z ZXRfbXRmKHZjcHUsIGZhbHNlKTsKKwkvKgorCSAqIFRoZSBibG9ja2luZyBieSBTVEkgaXMgY2xl YXJlZCBhZnRlciB0aGUgZ3Vlc3QKKwkgKiBleGVjdXRlcyBvbmUgaW5zdHJ1Y3Rpb24gb3IgaW5j dXJzIGFuIGV4Y2VwdGlvbi4KKwkgKiBIb3dldmVyIHdlIG1pZ2ggc3RvcCB0aGUgU1MgYmVmb3Jl IGVudGVyaW5nIHRvIGd1ZXN0LAorCSAqIHNvIGJlIHN1cmUgd2UgYXJlIGNsZWFyaW5nIHRoZSBT VEkgYmxvY2tpbmcuCisJICovCisJa3ZtX3NldF9pbnRlcnJ1cHRfc2hhZG93KHZjcHUsIDApOwor fQorCit1OCBrdm1pX2FyY2hfcmVsYXhfcGFnZV9hY2Nlc3ModTggb2xkLCB1OCBuZXcpCit7CisJ dTggcmV0ID0gb2xkIHwgbmV3OworCisJLyoKKwkgKiBBbiBTUFRFIGVudHJ5IHdpdGgganVzdCB0 aGUgLXd4IGJpdHMgc2V0IGNhbiB0cmlnZ2VyIGEKKwkgKiBtaXNjb25maWd1cmF0aW9uIGVycm9y IGZyb20gdGhlIGhhcmR3YXJlLCBhcyBpdCdzIHRoZSBjYXNlCisJICogZm9yIHg4NiB3aGVyZSB0 aGlzIGFjY2VzcyBtb2RlIGlzIHVzZWQgdG8gbWFyayBJL08gbWVtb3J5LgorCSAqIFRodXMsIHdl IG1ha2Ugc3VyZSB0aGF0IC13eCBhY2Nlc3NlcyBhcmUgdHJhbnNsYXRlZCB0byByd3guCisJICov CisJaWYgKChyZXQgJiAoS1ZNSV9QQUdFX0FDQ0VTU19XIHwgS1ZNSV9QQUdFX0FDQ0VTU19YKSkg PT0KKwkgICAgKEtWTUlfUEFHRV9BQ0NFU1NfVyB8IEtWTUlfUEFHRV9BQ0NFU1NfWCkpCisJCXJl dCB8PSBLVk1JX1BBR0VfQUNDRVNTX1I7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgY29u c3Qgc3RydWN0IHsKIAl1bnNpZ25lZCBpbnQgYWxsb3dfYml0OwogCWVudW0ga3ZtX3BhZ2VfdHJh Y2tfbW9kZSB0cmFja19tb2RlOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS5jIGIvYXJj aC94ODYva3ZtL3N2bS5jCmluZGV4IGIxNzhiODkwMDY2MC4uMzQ4MWMwMjQ3NjgwIDEwMDY0NAot LS0gYS9hcmNoL3g4Ni9rdm0vc3ZtLmMKKysrIGIvYXJjaC94ODYva3ZtL3N2bS5jCkBAIC03MTgz LDYgKzcxODMsMTAgQEAgc3RhdGljIGJvb2wgc3ZtX3NwdF9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiAJcmV0dXJuIChzdm0tPnZtY2ItPmNvbnRyb2wuZXhpdF9jb2RlID09IFNWTV9FWElU X05QRik7CiB9CiAKK3N0YXRpYyB2b2lkIHN2bV9zZXRfbXRmKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSwgYm9vbCBlbmFibGUpCit7Cit9CisKIHN0YXRpYyB2b2lkIHN2bV9jcjNfd3JpdGVfZXhpdGlu ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5hYmxlKQogewogfQpAQCAtNzIyNSw2ICs3 MjI5LDcgQEAgc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX3JvX2FmdGVy X2luaXQgPSB7CiAJLmNwdV9oYXNfYWNjZWxlcmF0ZWRfdHByID0gc3ZtX2NwdV9oYXNfYWNjZWxl cmF0ZWRfdHByLAogCS5oYXNfZW11bGF0ZWRfbXNyID0gc3ZtX2hhc19lbXVsYXRlZF9tc3IsCiAK Kwkuc2V0X210ZiA9IHN2bV9zZXRfbXRmLAogCS5jcjNfd3JpdGVfZXhpdGluZyA9IHN2bV9jcjNf d3JpdGVfZXhpdGluZywKIAkubXNyX2ludGVyY2VwdCA9IHN2bV9tc3JfaW50ZXJjZXB0LAogCS5k ZXNjX2ludGVyY2VwdCA9IHN2bV9kZXNjX2ludGVyY2VwdCwKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS92bXgvdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCmluZGV4IDdkMWUzNDFiNTFh ZC4uZjAzNjlkMDU3NGRjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCisrKyBi L2FyY2gveDg2L2t2bS92bXgvdm14LmMKQEAgLTUzODQsNiArNTM4NCw3IEBAIHN0YXRpYyBpbnQg aGFuZGxlX2ludmFsaWRfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiBzdGF0aWMgaW50IGhh bmRsZV9tb25pdG9yX3RyYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogeworCWt2bWlfc3RvcF9z cyh2Y3B1KTsKIAlyZXR1cm4gMTsKIH0KIApAQCAtNTk5Miw2ICs1OTkzLDExIEBAIHN0YXRpYyBp bnQgdm14X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJfQogCX0KIAorCWlm IChrdm1pX3ZjcHVfZW5hYmxlZF9zcyh2Y3B1KQorCQkJJiYgZXhpdF9yZWFzb24gIT0gRVhJVF9S RUFTT05fRVBUX1ZJT0xBVElPTgorCQkJJiYgZXhpdF9yZWFzb24gIT0gRVhJVF9SRUFTT05fTU9O SVRPUl9UUkFQX0ZMQUcpCisJCWt2bWlfc3RvcF9zcyh2Y3B1KTsKKwogCWlmIChleGl0X3JlYXNv biA8IGt2bV92bXhfbWF4X2V4aXRfaGFuZGxlcnMKIAkgICAgJiYga3ZtX3ZteF9leGl0X2hhbmRs ZXJzW2V4aXRfcmVhc29uXSkKIAkJcmV0dXJuIGt2bV92bXhfZXhpdF9oYW5kbGVyc1tleGl0X3Jl YXNvbl0odmNwdSk7CkBAIC03ODQyLDYgKzc4NDgsMTYgQEAgc3RhdGljIF9fZXhpdCB2b2lkIGhh cmR3YXJlX3Vuc2V0dXAodm9pZCkKIAlmcmVlX2t2bV9hcmVhKCk7CiB9CiAKK3N0YXRpYyB2b2lk IHZteF9zZXRfbXRmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUpCit7CisJaWYg KGVuYWJsZSkKKwkJdm1jc19zZXRfYml0cyhDUFVfQkFTRURfVk1fRVhFQ19DT05UUk9MLAorCQkJ ICAgICAgQ1BVX0JBU0VEX01PTklUT1JfVFJBUF9GTEFHKTsKKwllbHNlCisJCXZtY3NfY2xlYXJf Yml0cyhDUFVfQkFTRURfVk1fRVhFQ19DT05UUk9MLAorCQkJCUNQVV9CQVNFRF9NT05JVE9SX1RS QVBfRkxBRyk7Cit9CisKIHN0YXRpYyB2b2lkIHZteF9tc3JfaW50ZXJjZXB0KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwKIAkJCSAgICAgIGJvb2wgZW5hYmxlKQogewpA QCAtNzkyNyw2ICs3OTQzLDcgQEAgc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyB2bXhfeDg2X29w cyBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLmNwdV9oYXNfYWNjZWxlcmF0ZWRfdHByID0gcmVwb3J0 X2ZsZXhwcmlvcml0eSwKIAkuaGFzX2VtdWxhdGVkX21zciA9IHZteF9oYXNfZW11bGF0ZWRfbXNy LAogCisJLnNldF9tdGYgPSB2bXhfc2V0X210ZiwKIAkubXNyX2ludGVyY2VwdCA9IHZteF9tc3Jf aW50ZXJjZXB0LAogCS5jcjNfd3JpdGVfZXhpdGluZyA9IHZteF9jcjNfd3JpdGVfZXhpdGluZywK IAkuZGVzY19pbnRlcmNlcHQgPSB2bXhfZGVzY19pbnRlcmNlcHQsCmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMzhhYWRkYWRiOTNhLi42 NTg1NTM0MDI0OWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4 Ni9rdm0veDg2LmMKQEAgLTczNTgsNiArNzM1OCwxMyBAQCBzdGF0aWMgaW50IGluamVjdF9wZW5k aW5nX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCByZXFfaW50X3dpbikKIHsKIAlp bnQgcjsKIAorCWlmIChrdm1pX3ZjcHVfZW5hYmxlZF9zcyh2Y3B1KSkKKwkJLyoKKwkJICogV2Ug Y2Fubm90IGluamVjdCBldmVudHMgZHVyaW5nIHNpbmdsZS1zdGVwcGluZy4KKwkJICogVHJ5IGFn YWluIGxhdGVyLgorCQkgKi8KKwkJcmV0dXJuIC0xOworCiAJLyogdHJ5IHRvIHJlaW5qZWN0IHBy ZXZpb3VzIGV2ZW50cyBpZiBhbnkgKi8KIAogCWlmICh2Y3B1LT5hcmNoLmV4Y2VwdGlvbi5pbmpl Y3RlZCkKQEAgLTEwMTM0LDYgKzEwMTQxLDE4IEBAIHZvaWQga3ZtX2NvbnRyb2xfY3IzX3dyaXRl X2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSkKIH0KIEVYUE9SVF9T WU1CT0woa3ZtX2NvbnRyb2xfY3IzX3dyaXRlX2V4aXRpbmcpOwogCit2b2lkIGt2bV9zZXRfbXRm KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUpCit7CisJa3ZtX3g4Nl9vcHMtPnNl dF9tdGYodmNwdSwgZW5hYmxlKTsKK30KK0VYUE9SVF9TWU1CT0woa3ZtX3NldF9tdGYpOworCit2 b2lkIGt2bV9zZXRfaW50ZXJydXB0X3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBt YXNrKQoreworCWt2bV94ODZfb3BzLT5zZXRfaW50ZXJydXB0X3NoYWRvdyh2Y3B1LCBtYXNrKTsK K30KK0VYUE9SVF9TWU1CT0woa3ZtX3NldF9pbnRlcnJ1cHRfc2hhZG93KTsKKwogYm9vbCBrdm1f c3B0X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlyZXR1cm4ga3ZtX3g4Nl9vcHMt PnNwdF9mYXVsdCh2Y3B1KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtaS5oIGIvaW5j bHVkZS9saW51eC9rdm1pLmgKaW5kZXggNWQxNjJiOWU2N2YyLi4xZGM5MDI4NGRjM2EgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtaS5oCisrKyBiL2luY2x1ZGUvbGludXgva3ZtaS5oCkBA IC0yMiw2ICsyMiw4IEBAIGJvb2wga3ZtaV9xdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KTsKIHZvaWQga3ZtaV90cmFwX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBi b29sIGt2bWlfZGVzY3JpcHRvcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGRlc2Ny aXB0b3IsIHU4IHdyaXRlKTsKIHZvaWQga3ZtaV9oYW5kbGVfcmVxdWVzdHMoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1KTsKK3ZvaWQga3ZtaV9zdG9wX3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7Citi b29sIGt2bWlfdmNwdV9lbmFibGVkX3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2 bWlfaW5pdF9lbXVsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bWlfYWN0aXZh dGVfcmVwX2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBib29sIGt2bWlfYnBfaW50 ZXJjZXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZGJnKTsKQEAgLTQ0LDYgKzQ2LDgg QEAgc3RhdGljIGlubGluZSB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkgeyB9CiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9oeXBlcmNhbGxfZXZlbnQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KSB7IHJldHVybiBmYWxzZTsgfQogc3RhdGljIGlubGluZSBib29s IGt2bWlfcXVldWVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyByZXR1cm4gdHJ1 ZTsgfQogc3RhdGljIGlubGluZSB2b2lkIGt2bWlfdHJhcF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpIHsgfQorc3RhdGljIGlubGluZSB2b2lkIGt2bWlfc3RvcF9zcyhzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpIHsgfQorc3RhdGljIGlubGluZSBib29sIGt2bWlfdmNwdV9lbmFibGVkX3NzKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyByZXR1cm4gZmFsc2U7IH0KIHN0YXRpYyBpbmxpbmUgdm9p ZCBrdm1pX2luaXRfZW11bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgfQogc3RhdGljIGlu bGluZSB2b2lkIGt2bWlfYWN0aXZhdGVfcmVwX2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSkgeyB9CiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9icF9pbnRlcmNlcHRlZChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHUzMiBkYmcpCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pLmMgYi92aXJ0 L2t2bS9rdm1pLmMKaW5kZXggZDQ3YTcyNWE0MDQ1Li5hM2E1YWY5MDgwYTkgMTAwNjQ0Ci0tLSBh L3ZpcnQva3ZtL2t2bWkuYworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTEyNjAsMTEgKzEyNjAs MTkgQEAgdm9pZCBrdm1pX3J1bl9qb2JzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAl9CiB9CiAK K3N0YXRpYyBib29sIG5lZWRfdG9fd2FpdF9mb3Jfc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQor eworCXN0cnVjdCBrdm1pX3ZjcHUgKml2Y3B1ID0gSVZDUFUodmNwdSk7CisJc3RydWN0IGt2bWkg Kmlrdm0gPSBJS1ZNKHZjcHUtPmt2bSk7CisKKwlyZXR1cm4gYXRvbWljX3JlYWQoJmlrdm0tPnNz X2FjdGl2ZSkgJiYgIWl2Y3B1LT5zc19vd25lcjsKK30KKwogc3RhdGljIGJvb2wgbmVlZF90b193 YWl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9 IElWQ1BVKHZjcHUpOwogCi0JcmV0dXJuIGl2Y3B1LT5yZXBseV93YWl0aW5nOworCXJldHVybiBp dmNwdS0+cmVwbHlfd2FpdGluZyB8fCBuZWVkX3RvX3dhaXRfZm9yX3NzKHZjcHUpOwogfQogCiBz dGF0aWMgYm9vbCBkb25lX3dhaXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpAQCAtMTU3Miw2 ICsxNTgwLDE0MSBAQCBpbnQga3ZtaV9jbWRfcGF1c2VfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIGJvb2wgd2FpdCkKIAlyZXR1cm4gMDsKIH0KIAordm9pZCBrdm1pX3N0b3Bfc3Moc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1pX3ZjcHUgKml2Y3B1ID0gSVZDUFUodmNw dSk7CisJc3RydWN0IGt2bSAqa3ZtID0gdmNwdS0+a3ZtOworCXN0cnVjdCBrdm1pICppa3ZtOwor CWludCBpOworCisJaWt2bSA9IGt2bWlfZ2V0KGt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1cm47 CisKKwlpZiAodW5saWtlbHkoIWl2Y3B1LT5zc19vd25lcikpIHsKKwkJa3ZtaV93YXJuKGlrdm0s ICIlc1xuIiwgX19mdW5jX18pOworCQlnb3RvIG91dDsKKwl9CisKKwlmb3IgKGkgPSBpa3ZtLT5z c19sZXZlbDsgaS0tOykKKwkJa3ZtaV9zZXRfZ2ZuX2FjY2Vzcyhrdm0sCisJCQkJICAgIGlrdm0t PnNzX2NvbnRleHRbaV0uZ2ZuLAorCQkJCSAgICBpa3ZtLT5zc19jb250ZXh0W2ldLm9sZF9hY2Nl c3MsCisJCQkJICAgIGlrdm0tPnNzX2NvbnRleHRbaV0ub2xkX3dyaXRlX2JpdG1hcCk7CisKKwlp a3ZtLT5zc19sZXZlbCA9IDA7CisKKwlrdm1pX2FyY2hfc3RvcF9zaW5nbGVfc3RlcCh2Y3B1KTsK KworCWF0b21pY19zZXQoJmlrdm0tPnNzX2FjdGl2ZSwgZmFsc2UpOworCS8qCisJICogTWFrZSBz c19hY3RpdmUgdXBkYXRlIHZpc2libGUKKwkgKiBiZWZvcmUgcmVzdW1pbmcgYWxsIHRoZSBvdGhl ciB2Q1BVcy4KKwkgKi8KKwlzbXBfbWJfX2FmdGVyX2F0b21pYygpOworCWt2bV9tYWtlX2FsbF9j cHVzX3JlcXVlc3Qoa3ZtLCAwKTsKKworCWl2Y3B1LT5zc19vd25lciA9IGZhbHNlOworCitvdXQ6 CisJa3ZtaV9wdXQoa3ZtKTsKK30KK0VYUE9SVF9TWU1CT0woa3ZtaV9zdG9wX3NzKTsKKworc3Rh dGljIGJvb2wga3ZtaV9hY3F1aXJlX3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlzdHJ1 Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOworCXN0cnVjdCBrdm1pICppa3ZtID0g SUtWTSh2Y3B1LT5rdm0pOworCisJaWYgKGl2Y3B1LT5zc19vd25lcikKKwkJcmV0dXJuIHRydWU7 CisKKwlpZiAoYXRvbWljX2NtcHhjaGcoJmlrdm0tPnNzX2FjdGl2ZSwgZmFsc2UsIHRydWUpICE9 IGZhbHNlKQorCQlyZXR1cm4gZmFsc2U7CisKKwlrdm1fbWFrZV9hbGxfY3B1c19yZXF1ZXN0KHZj cHUtPmt2bSwgS1ZNX1JFUV9JTlRST1NQRUNUSU9OIHwKKwkJCQkJCUtWTV9SRVFVRVNUX1dBSVQp OworCisJaXZjcHUtPnNzX293bmVyID0gdHJ1ZTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgYm9vbCBrdm1pX3J1bl9zcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgdTgg YWNjZXNzKQoreworCXN0cnVjdCBrdm1pICppa3ZtID0gSUtWTSh2Y3B1LT5rdm0pOworCXU4IG9s ZF9hY2Nlc3MsIG5ld19hY2Nlc3M7CisJdTMyIG9sZF93cml0ZV9iaXRtYXA7CisJZ2ZuX3QgZ2Zu ID0gZ3BhX3RvX2dmbihncGEpOworCWludCBlcnI7CisKKwlrdm1pX2FyY2hfc3RhcnRfc2luZ2xl X3N0ZXAodmNwdSk7CisKKwllcnIgPSBrdm1pX2dldF9nZm5fYWNjZXNzKGlrdm0sIGdmbiwgJm9s ZF9hY2Nlc3MsICZvbGRfd3JpdGVfYml0bWFwKTsKKwkvKiBsaWtlbHkgd2FzIHJlbW92ZWQgZnJv bSByYWRpeCB0cmVlIGR1ZSB0byByd3ggKi8KKwlpZiAoZXJyKSB7CisJCWt2bWlfd2Fybihpa3Zt LCAiJXM6IGdmbiAweCVsbHggbm90IGZvdW5kIGluIHRoZSByYWRpeCB0cmVlXG4iLAorCQkJICBf X2Z1bmNfXywgZ2ZuKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJaWYgKGlrdm0tPnNzX2xldmVs ID09IFNJTkdMRV9TVEVQX01BWF9ERVBUSCAtIDEpIHsKKwkJa3ZtaV9lcnIoaWt2bSwgInNpbmds ZSBzdGVwIGxpbWl0IHJlYWNoZWRcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWt2bS0+ c3NfY29udGV4dFtpa3ZtLT5zc19sZXZlbF0uZ2ZuID0gZ2ZuOworCWlrdm0tPnNzX2NvbnRleHRb aWt2bS0+c3NfbGV2ZWxdLm9sZF9hY2Nlc3MgPSBvbGRfYWNjZXNzOworCWlrdm0tPnNzX2NvbnRl eHRbaWt2bS0+c3NfbGV2ZWxdLm9sZF93cml0ZV9iaXRtYXAgPSBvbGRfd3JpdGVfYml0bWFwOwor CWlrdm0tPnNzX2xldmVsKys7CisKKwluZXdfYWNjZXNzID0ga3ZtaV9hcmNoX3JlbGF4X3BhZ2Vf YWNjZXNzKG9sZF9hY2Nlc3MsIGFjY2Vzcyk7CisKKwlrdm1pX3NldF9nZm5fYWNjZXNzKHZjcHUt Pmt2bSwgZ2ZuLCBuZXdfYWNjZXNzLCBvbGRfd3JpdGVfYml0bWFwKTsKKworCXJldHVybiB0cnVl OworfQorCitib29sIGt2bWlfc3RhcnRfc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBn cGEsIHU4IGFjY2VzcykKK3sKKwlib29sIHJldCA9IGZhbHNlOworCisJd2hpbGUgKCFrdm1pX2Fj cXVpcmVfc3ModmNwdSkpIHsKKwkJaW50IGVyciA9IGt2bWlfcnVuX2pvYnNfYW5kX3dhaXQodmNw dSk7CisKKwkJaWYgKGVycikgeworCQkJa3ZtaV9lcnIoSUtWTSh2Y3B1LT5rdm0pLCAia3ZtaV9h Y3F1aXJlX3NzKCkgaGFzIGZhaWxlZFxuIik7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCWlm IChrdm1pX3J1bl9zcyh2Y3B1LCBncGEsIGFjY2VzcykpCisJCXJldCA9IHRydWU7CisJZWxzZQor CQlrdm1pX3N0b3Bfc3ModmNwdSk7CisKK291dDoKKwlyZXR1cm4gcmV0OworfQorCitib29sIGt2 bWlfdmNwdV9lbmFibGVkX3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlzdHJ1Y3Qga3Zt aV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOworCXN0cnVjdCBrdm1pICppa3ZtOworCWJvb2wg cmV0OworCisJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlyZXQgPSBpdmNwdS0+c3Nfb3duZXI7CisKKwlrdm1pX3B1dCh2Y3B1LT5r dm0pOworCisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woa3ZtaV92Y3B1X2VuYWJsZWRf c3MpOworCiBzdGF0aWMgdm9pZCBrdm1pX2pvYl9hYm9ydChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHZvaWQgKmN0eCkKIHsKIAlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOwpk aWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKaW5k ZXggZDdmOTg1OGQzZTk3Li4xNTUwZmUzM2VkNDggMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlf aW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9pbnQuaApAQCAtMTI2LDYgKzEyNiw5IEBAIHN0cnVj dCBrdm1pX3ZjcHUgewogCQlERUNMQVJFX0JJVE1BUChoaWdoLCBLVk1JX05VTV9NU1IpOwogCX0g bXNyX21hc2s7CiAKKwlib29sIHNzX293bmVyOworCWJvb2wgc3NfcmVxdWVzdGVkOworCiAJc3Ry dWN0IGxpc3RfaGVhZCBqb2JfbGlzdDsKIAlzcGlubG9ja190IGpvYl9sb2NrOwogCkBAIC0xNTEs NiArMTU0LDE1IEBAIHN0cnVjdCBrdm1pIHsKIAlERUNMQVJFX0JJVE1BUChldmVudF9hbGxvd19t YXNrLCBLVk1JX05VTV9FVkVOVFMpOwogCURFQ0xBUkVfQklUTUFQKHZtX2V2X21hc2ssIEtWTUlf TlVNX0VWRU5UUyk7CiAKKyNkZWZpbmUgU0lOR0xFX1NURVBfTUFYX0RFUFRIIDgKKwlzdHJ1Y3Qg eworCQlnZm5fdCBnZm47CisJCXU4IG9sZF9hY2Nlc3M7CisJCXUzMiBvbGRfd3JpdGVfYml0bWFw OworCX0gc3NfY29udGV4dFtTSU5HTEVfU1RFUF9NQVhfREVQVEhdOworCXU4IHNzX2xldmVsOwor CWF0b21pY190IHNzX2FjdGl2ZTsKKwogCXN0cnVjdCB7CiAJCWJvb2wgaW5pdGlhbGl6ZWQ7CiAJ CWF0b21pY190IGVuYWJsZWQ7CkBAIC0yMjQsNiArMjM2LDcgQEAgaW50IGt2bWlfYWRkX2pvYihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCSB2b2lkICpjdHgsIHZvaWQgKCpmcmVlX2ZjdCkodm9p ZCAqY3R4KSk7CiB2b2lkIGt2bWlfaGFuZGxlX2NvbW1vbl9ldmVudF9hY3Rpb25zKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgdTMyIGFjdGlvbiwKIAkJCQkgICAgICBjb25zdCBjaGFyICpzdHIpOwor Ym9vbCBrdm1pX3N0YXJ0X3NzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCB1OCBh Y2Nlc3MpOwogCiAvKiBhcmNoICovCiB2b2lkIGt2bWlfYXJjaF91cGRhdGVfcGFnZV90cmFja2lu ZyhzdHJ1Y3Qga3ZtICprdm0sCkBAIC0yNzQsNiArMjg3LDkgQEAgaW50IGt2bWlfYXJjaF9jbWRf aW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3RvciwKIAkJCQkg ICB1NjQgYWRkcmVzcyk7CiBpbnQga3ZtaV9hcmNoX2NtZF9jb250cm9sX2NyKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwKIAkJCSAgICAgY29uc3Qgc3RydWN0IGt2bWlfY29udHJvbF9jciAqcmVxKTsK K3ZvaWQga3ZtaV9hcmNoX3N0YXJ0X3NpbmdsZV9zdGVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7 Cit2b2lkIGt2bWlfYXJjaF9zdG9wX3NpbmdsZV9zdGVwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7 Cit1OCBrdm1pX2FyY2hfcmVsYXhfcGFnZV9hY2Nlc3ModTggb2xkLCB1OCBuZXcpOwogaW50IGt2 bWlfYXJjaF9jbWRfY29udHJvbF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJICAgICAg Y29uc3Qgc3RydWN0IGt2bWlfY29udHJvbF9tc3IgKnJlcSk7CiBpbnQga3ZtaV9hcmNoX2NtZF9n ZXRfbXRycl90eXBlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTggKnR5cGUpOwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXph dGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5v cmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmly dHVhbGl6YXRpb24=