From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 3/7] iommu: push use of type-safe BFN and MFN into iommu_ops Date: Mon, 12 Feb 2018 10:47:10 +0000 Message-ID: <20180212104714.1922-4-paul.durrant@citrix.com> References: <20180212104714.1922-1-paul.durrant@citrix.com> 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]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1elBdu-0003cb-7I for xen-devel@lists.xenproject.org; Mon, 12 Feb 2018 10:47:26 +0000 In-Reply-To: <20180212104714.1922-1-paul.durrant@citrix.com> 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: Andrew Cooper , Kevin Tian , Paul Durrant , Jan Beulich , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgbWV0aG9kcyBpbiBzdHJ1Y3QgaW9tbXVfb3BzIHRvIHVz ZSB0eXBlLXNhZmUgQkZOCmFuZCBNRk4uIFRoaXMgZm9sbG93cyBvbiBmcm9tIHRoZSBwcmlvciBw YXRjaCB0aGF0IG1vZGlmaWVkIHRoZSBmdW5jdGlvbnMKZXhwb3J0ZWQgaW4geGVuL2lvbW11Lmgu CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgot LS0KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5j b20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZXZpbiBUaWFuIDxr ZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+Ci0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAg ICAgIHwgNDUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jICAgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXJtL3NtbXUuYyAgICAgICAgICAgIHwgMjAgKysrKysrKy0tLS0tCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAgICAgfCAgOSArKystLS0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgICB8IDI3ICsrKysrKysrLS0tLS0tLS0K IHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICAgICAgICB8ICAyICstCiB4 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmggfCAgOCArKy0tLQog eGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKyst LS0KIDggZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDA5ZDI5ZWYwMjYuLmJj YzExYzI3Y2MgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKQEAgLTYz MSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGJmbikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21t dV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQg bG9uZyBtZm4sCitpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90 IGJmbiwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxh Z3MpCiB7CiAgICAgYm9vbF90IG5lZWRfZmx1c2ggPSAwOwpAQCAtNjUxLDcgKzY1MSw4IEBAIGlu dCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4s IHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMgKQogICAgIHsKICAgICAgICAgc3Bpbl91 bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygi Um9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGJmbiA9ICVseFxuIiwgYmZuKTsKKyAgICAgICAgQU1E X0lPTU1VX0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgYmZuID0gJSJQUklfYmZuIlxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAgICAgICBkb21haW5f Y3Jhc2goZCk7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CkBAIC02NjAsMjUgKzY2MSwyNyBA QCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg YmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBh Z2UgdGFibGUgZm9yIGxhZ2VyIGJmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkg KQogICAgIHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgYmZuKSApCisgICAg ICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGJmbl94KGJmbikpICkKICAgICAgICAgewog ICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAg ICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGJmbiA9ICVseFxu IiwgYmZuKTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBm YWlsZWQgYmZuID0gJSJQUklfYmZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi Zm5feChiZm4pKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJl dHVybiAtRUZBVUxUOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJv bV9iZm4oZCwgYmZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9t bXVfcGRlX2Zyb21fYmZuKGQsIGJmbl94KGJmbiksIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAw KSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsK LSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4g PSAlbHhcbiIsIGJmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdl dGFibGUgZW50cnkgYmZuID0gJSJQUklfYmZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg IGJmbl94KGJmbikpOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiAt RUZBVUxUOwogICAgIH0KIAogICAgIC8qIEluc3RhbGwgNGsgbWFwcGluZyBmaXJzdCAqLwotICAg IG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBiZm4sIG1mbiwK KyAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgYmZuX3go YmZuKSwgbWZuX3gobWZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElPTU1VX1BBR0lOR19NT0RFX0xFVkVMXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFkYWJsZSkpOwpAQCAt NjkwLDcgKzY5Myw3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIC8qIDRLIG1hcHBpbmcg Zm9yIFBWIGd1ZXN0cyBuZXZlciBjaGFuZ2VzLCAKICAgICAgKiBubyBuZWVkIHRvIGZsdXNoIGlm IHdlIHRydXN0IG5vbi1wcmVzZW50IGJpdHMgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkg KQotICAgICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsKKyAgICAgICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbl94KGJmbiksIDApOwogCiAgICAgZm9yICggbWVyZ2Vf bGV2ZWwgPSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAgICAgIG1lcmdlX2xldmVs IDw9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkKQEAgLTY5OCwxNSArNzAx LDE2IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAoIHB0X21mblttZXJnZV9s ZXZlbF0gPT0gMCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCAhaW9tbXVfdXBk YXRlX3BkZV9jb3VudChkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbiksIG1mbl94KG1mbiksIG1lcmdlX2xl dmVsKSApCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoIGlvbW11X21lcmdlX3Bh Z2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0sIGJmbiwKKyAgICAgICAgaWYgKCBpb21tdV9tZXJn ZV9wYWdlcyhkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBiZm5feChiZm4pLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZsYWdzLCBtZXJnZV9sZXZlbCkgKQogICAgICAgICB7CiAgICAg ICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAgICAgICAgICAg IEFNRF9JT01NVV9ERUJVRygiTWVyZ2UgaW9tbXUgcGFnZSBmYWlsZWQgYXQgbGV2ZWwgJWQsICIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmZuID0gJWx4IG1mbiA9ICVseFxuIiwgbWVy Z2VfbGV2ZWwsIGJmbiwgbWZuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmZuID0g JSJQUklfYmZuIiBtZm4gPSAlIlBSSV9tZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1lcmdlX2xldmVsLCBiZm5feChiZm4pLCBtZm5feChtZm4pKTsKICAgICAgICAgICAgIGRv bWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICB9CkBA IC03MjAsNyArNzI0LDcgQEAgb3V0OgogICAgIHJldHVybiAwOwogfQogCi1pbnQgYW1kX2lvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCitpbnQgYW1k X2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3QgYmZuKQogewogICAgIHVu c2lnbmVkIGxvbmcgcHRfbWZuWzddOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9t X2lvbW11KGQpOwpAQCAtNzQyLDMxICs3NDYsMzMgQEAgaW50IGFtZF9pb21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogICAgICAqIHdlIG1pZ2h0IG5l ZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgYmZuIG5vdyAqLwogICAgIGlmICggaXNf aHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMgPSB1cGRhdGVfcGFnaW5nX21v ZGUoZCwgYmZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGJmbl94 KGJmbikpOwogCiAgICAgICAgIGlmICggcmMgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGlu X3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9JT01NVV9E RUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgYmZuID0gJWx4XG4iLCBiZm4pOworICAgICAg ICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBiZm4gPSAlIlBS SV9iZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAg ICAgICAgICAgaWYgKCByYyAhPSAtRUFERFJOT1RBVkFJTCApCiAgICAgICAgICAgICAgICAgZG9t YWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAgICAgfQog Ci0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9iZm4oZCwgYmZuLCBwdF9tZm4pIHx8IChwdF9tZm5b MV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zyb21fYmZuKGQsIGJmbl94KGJmbiksIHB0 X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygm aGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlk IElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4gPSAlbHhcbiIsIGJmbik7CisgICAgICAgIEFNRF9JT01N VV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgYmZuID0gJSJQUklfYmZuIlxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAgICAgICBkb21haW5fY3Jh c2goZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIG1hcmsgUFRF IGFzICdwYWdlIG5vdCBwcmVzZW50JyAqLwotICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0 X21mblsxXSwgYmZuKTsKKyAgICBjbGVhcl9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGJm bl94KGJmbikpOwogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogCi0g ICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbiwgMCk7CisgICAgYW1kX2lvbW11X2ZsdXNo X3BhZ2VzKGQsIGJmbl94KGJmbiksIDApOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC03ODcsNyAr NzkzLDggQEAgaW50IGFtZF9pb21tdV9yZXNlcnZlX2RvbWFpbl91bml0eV9tYXAoc3RydWN0IGRv bWFpbiAqZG9tYWluLAogICAgIGdmbiA9IHBoeXNfYWRkciA+PiBQQUdFX1NISUZUOwogICAgIGZv ciAoIGkgPSAwOyBpIDwgbnBhZ2VzOyBpKysgKQogICAgIHsKLSAgICAgICAgcnQgPSBhbWRfaW9t bXVfbWFwX3BhZ2UoZG9tYWluLCBnZm4gK2ksIGdmbiAraSwgZmxhZ3MpOworICAgICAgICBydCA9 IGFtZF9pb21tdV9tYXBfcGFnZShkb21haW4sIF9iZm4oZ2ZuICsgaSksIF9tZm4oZ2ZuICsgaSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKICAgICAgICAgaWYgKCBy dCAhPSAwICkKICAgICAgICAgICAgIHJldHVybiBydDsKICAgICB9CmRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwppbmRleCBkNjA4NjMxZTZlLi5lZWEyMmMzZDBk IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5j CisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKQEAgLTI3 MSw3ICsyNzEsNyBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgYW1kX2lvbW11X2h3ZG9tX2lu aXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKCBt Zm5fdmFsaWQoX21mbihwZm4pKSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50 IHJldCA9IGFtZF9pb21tdV9tYXBfcGFnZShkLCBwZm4sIHBmbiwKKyAgICAgICAgICAgICAgICBp bnQgcmV0ID0gYW1kX2lvbW11X21hcF9wYWdlKGQsIF9iZm4ocGZuKSwgX21mbihwZm4pLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxl fElPTU1VRl93cml0YWJsZSk7CiAKICAgICAgICAgICAgICAgICBpZiAoICFyYyApCmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYXJtL3NtbXUuYwppbmRleCAzNjA1ZTIwYWZkLi43YzAyMzM1NTMyIDEwMDY0NAot LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKQEAgLTI1NTEsNyArMjU1MSw3IEBAIHN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQog fQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3Qg ZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBiZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiZm5fdCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKIAkvKiBBUk0gU01NVSB2MSBkb2Vz bid0IGhhdmUgZmx1c2ggYnkgVk1BIGFuZCBWTUlEICovCkBAIC0yNzM3LDEwICsyNzM3LDExIEBA IHN0YXRpYyB2b2lkIGFybV9zbW11X2lvbW11X2RvbWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWlu ICpkKQogCXhmcmVlKHhlbl9kb21haW4pOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBh cm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKLQkJ CXVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCitzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBiZm5fdCBiZm4sCisJ CQltZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlwMm1fdHlwZV90IHQ7CisgICAg ICAgIGdmbl90IGdmbiA9IF9nZm4oYmZuX3goYmZuKSk7CiAKIAkvKgogCSAqIEdyYW50IG1hcHBp bmdzIGNhbiBiZSB1c2VkIGZvciBETUEgcmVxdWVzdHMuIFRoZSBkZXZfYnVzX2FkZHIKQEAgLTI3 NTEsNyArMjc1Miw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogCSAqIGZ1bmN0aW9uIHNob3Vs ZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBiZm4gPT0gbWZuLgogCSAqLwogCUJV R19PTighaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkpOwotCUJVR19PTihtZm4gIT0gYmZuKTsK KwlCVUdfT04obWZuX3gobWZuKSAhPSBiZm5feChiZm4pKTsKIAogCS8qIFdlIG9ubHkgc3VwcG9y dCByZWFkYWJsZSBhbmQgd3JpdGFibGUgZmxhZ3MgKi8KIAlpZiAoIShmbGFncyAmIChJT01NVUZf cmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpKSkKQEAgLTI3NjMsMTkgKzI3NjQsMjIgQEAgc3Rh dGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBiZm4sCiAJICogVGhlIGZ1bmN0aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2Vu dHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1hcHBpbmcKIAkgKiBpZiB0aGVyZSBpcyBhbHJlYWR5 IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGJm biksIF9tZm4obWZuKSwgMCwgdCk7CisJcmV0dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQs IGdmbiwgbWZuLCAwLCB0KTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVf dW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKK3N0YXRpYyBp bnQgX19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZu X3QgYmZuKQogewotCS8qCisgICAgICAgIGdmbl90IGdmbiA9IF9nZm4oYmZuX3goYmZuKSk7Cisg ICAgICAgIG1mbl90IG1mbiA9IF9tZm4oYmZuX3goYmZuKSk7CisKKyAgICAgICAgLyoKIAkgKiBU aGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2hlbiB0aGUg ZG9tYWluCiAJICogaXMgZGlyZWN0IG1hcHBlZAogCSAqLwogCWlmICggIWlzX2RvbWFpbl9kaXJl Y3RfbWFwcGVkKGQpICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGJmbiksIF9tZm4oYmZuKSwgMCk7CisJcmV0dXJuIGd1ZXN0 X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgZ2ZuLCBtZm4sIDApOwogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9t bXUuYwppbmRleCBiMjVkOWUzNzA3Li43ZGU4MzBmNmNlIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11 LmMKQEAgLTE5NCw3ICsxOTQsOCBAQCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2RvbV9pbml0 KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFibGVfcGFn ZSkgKQogICAgICAgICAgICAgICAgIG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwogCi0gICAg ICAgICAgICByZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBnZm4sIG1mbiwgbWFw cGluZyk7CisgICAgICAgICAgICByZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBf YmZuKGdmbiksIF9tZm4obWZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1hcHBpbmcpOwogICAgICAgICAgICAgaWYgKCAhcmMgKQogICAgICAgICAgICAg ICAgIHJjID0gcmV0OwogCkBAIC0yNjQsNyArMjY1LDcgQEAgaW50IGlvbW11X21hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgbWZuX3QgbWZuLAogICAgIGlmICggIWlvbW11X2Vu YWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJj ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgYmZuX3goYmZuKSwgbWZuX3gobWZuKSwg ZmxhZ3MpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgYmZuLCBtZm4s IGZsYWdzKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFk LT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCkBAIC0yODcsNyArMjg4 LDcgQEAgaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3QgYmZuKQog ICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICBy ZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBiZm5f eChiZm4pKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgYmZuKTsK ICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0 dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCkBAIC0zMjcsNyArMzI4LDcgQEAgaW50 IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgdW5zaWduZWQg aW50IHBhZ2VfY291bnQpCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3Jt X29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2ggKQogICAgICAgICByZXR1cm4g MDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgYmZuX3goYmZu KSwgcGFnZV9jb3VudCk7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaChk LCBiZm4sIHBhZ2VfY291bnQpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAg ICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggMTg3NTI4MTlhNy4uYTI3NTI5NDEyYSAx MDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysrIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGF0 aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKIH0KIAogc3RhdGljIGlu dCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3QgYmZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGRtYV9vbGRfcHRl X3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCkKIHsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIHN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAg IGlmICggaW9tbXVfZG9taWQgPT0gLTEgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg ICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwgYmZuID09IGJmbl94KElOVkFMSURfQkZOKSApCisg ICAgICAgIGlmICggcGFnZV9jb3VudCAhPSAxIHx8IGJmbl9lcShiZm4sIElOVkFMSURfQkZOKSAp CiAgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9t aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZf aW90bGIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxi X3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocGFkZHJfdCliZm4gPDwgUEFHRV9TSElGVF80SywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwYWRkcl90KWJmbl94KGJmbikgPDwgUEFHRV9TSElGVF80 SywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEss CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJl c2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9p b3RsYik7CkBAIC02MzMsNyArNjMzLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVf Zmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hl Y2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3QgYmZu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHBhZ2VfY291bnQpCiB7CiAgICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGJm biwgMSwgcGFnZV9jb3VudCk7CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIGludCBfX211c3Rf Y2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKIAogc3RhdGlj IGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQp CiB7Ci0gICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGJmbl94KElOVkFMSURfQkZOKSwg MCwgMCk7CisgICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIElOVkFMSURfQkZOLCAwLCAw KTsKIH0KIAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC02NzYsNyArNjc2 LDggQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRv bWFpbiAqZG9tYWluLCB1NjQgYWRkcikKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUs IHNpemVvZihzdHJ1Y3QgZG1hX3B0ZSkpOwogCiAgICAgaWYgKCAhdGhpc19jcHUoaW9tbXVfZG9u dF9mbHVzaF9pb3RsYikgKQotICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKGRv bWFpbiwgYWRkciA+PiBQQUdFX1NISUZUXzRLLCAxKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVz aF9pb3RsYl9wYWdlcyhkb21haW4sIF9iZm4oYWRkciA+PiBQQUdFX1NISUZUXzRLKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKIAogICAgIHVubWFwX3Z0ZF9kb21h aW5fcGFnZShwYWdlKTsKIApAQCAtMTc2MSw4ICsxNzYyLDcgQEAgc3RhdGljIHZvaWQgaW9tbXVf ZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0 X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg bWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3Qg YmZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQg PSBkb21faW9tbXUoZCk7CkBAIC0xNzgwLDE2ICsxNzgwLDE3IEBAIHN0YXRpYyBpbnQgX19tdXN0 X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCiAKICAgICBzcGlu X2xvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBwZ19tYWRkciA9IGFkZHJfdG9f ZG1hX3BhZ2VfbWFkZHIoZCwgKHBhZGRyX3QpYmZuIDw8IFBBR0VfU0hJRlRfNEssIDEpOworICAg IHBnX21hZGRyID0KKyAgICAgICAgYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCAocGFkZHJfdCli Zm5feChiZm4pIDw8IFBBR0VfU0hJRlRfNEssIDEpOwogICAgIGlmICggcGdfbWFkZHIgPT0gMCAp CiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAg ICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0IGRtYV9wdGUg KiltYXBfdnRkX2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdlICsgKGJmbiAm IExFVkVMX01BU0spOworICAgIHB0ZSA9IHBhZ2UgKyAoYmZuX3goYmZuKSAmIExFVkVMX01BU0sp OwogICAgIG9sZCA9ICpwdGU7Ci0gICAgZG1hX3NldF9wdGVfYWRkcihuZXcsIChwYWRkcl90KW1m biA8PCBQQUdFX1NISUZUXzRLKTsKKyAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3Qp bWZuX3gobWZuKSA8PCBQQUdFX1NISUZUXzRLKTsKICAgICBkbWFfc2V0X3B0ZV9wcm90KG5ldywK ICAgICAgICAgICAgICAgICAgICAgICgoZmxhZ3MgJiBJT01NVUZfcmVhZGFibGUpID8gRE1BX1BU RV9SRUFEICA6IDApIHwKICAgICAgICAgICAgICAgICAgICAgICgoZmxhZ3MgJiBJT01NVUZfd3Jp dGFibGUpID8gRE1BX1BURV9XUklURSA6IDApKTsKQEAgLTE4MTcsMTMgKzE4MTgsMTMgQEAgc3Rh dGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfdW5tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGJmbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmZuX3QgYmZuKQogewogICAgIC8qIERvIG5vdGhpbmcgaWYgaGFy ZHdhcmUgZG9tYWluIGFuZCBpb21tdSBzdXBwb3J0cyBwYXNzIHRocnUuICovCiAgICAgaWYgKCBp b21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICByZXR1 cm4gMDsKIAotICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29uZShkLCAocGFkZHJfdCliZm4gPDwg UEFHRV9TSElGVF80Syk7CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIChwYWRkcl90 KWJmbl94KGJmbikgPDwgUEFHRV9TSElGVF80Syk7CiB9CiAKIGludCBpb21tdV9wdGVfZmx1c2go c3RydWN0IGRvbWFpbiAqZCwgdTY0IGJmbiwgdTY0ICpwdGUsCmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4 Ni9pb21tdS5jCmluZGV4IDAyNTM4MjMxNzMuLjVlMjIxZmE2ZmYgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3g4Ni9pb21tdS5jCkBAIC02NSw3ICs2NSw3IEBAIGludCBhcmNoX2lvbW11X3BvcHVsYXRl X3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogICAg ICAgICAgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdmbikpOwotICAgICAgICAgICAgICAgIHJj ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBtZm4sCisgICAgICAgICAgICAg ICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBfYmZuKGdmbiksIF9tZm4obWZu KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V Rl9yZWFkYWJsZSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT01NVUZfd3JpdGFibGUpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCmluZGV4IDk5YmMyMWM3YjMuLmRjZTllZDZi ODMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJv dG8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgK QEAgLTUyLDkgKzUyLDkgQEAgaW50IGFtZF9pb21tdV9pbml0KHZvaWQpOwogaW50IGFtZF9pb21t dV91cGRhdGVfaXZyc19tYXBwaW5nX2FjcGkodm9pZCk7CiAKIC8qIG1hcHBpbmcgZnVuY3Rpb25z ICovCi1pbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotaW50IF9fbXVzdF9jaGVj ayBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdm bik7CitpbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCBiZm5fdCBiZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBt Zm4sIHVuc2lnbmVkIGludCBmbGFncyk7CitpbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV91bm1h cF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbik7CiB1NjQgYW1kX2lvbW11X2dldF9u ZXh0X3RhYmxlX2Zyb21fcHRlKHUzMiAqZW50cnkpOwogaW50IF9fbXVzdF9jaGVjayBhbWRfaW9t bXVfYWxsb2Nfcm9vdChzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCk7CiBpbnQgYW1kX2lvbW11X3Jl c2VydmVfZG9tYWluX3VuaXR5X21hcChzdHJ1Y3QgZG9tYWluICpkb21haW4sCkBAIC03Nyw3ICs3 Nyw3IEBAIHZvaWQgaW9tbXVfZHRlX3NldF9ndWVzdF9jcjModTMyICpkdGUsIHUxNiBkb21faWQs IHU2NCBnY3IzLAogCiAvKiBzZW5kIGNtZCB0byBpb21tdSAqLwogdm9pZCBhbWRfaW9tbXVfZmx1 c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQpOwotdm9pZCBhbWRfaW9tbXVfZmx1c2hfcGFn ZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCit2b2lkIGFtZF9pb21tdV9m bHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvcmRlcik7CiB2b2lkIGFtZF9pb21tdV9m bHVzaF9pb3RsYih1OCBkZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKTsK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIveGVuL2luY2x1ZGUveGVuL2lv bW11LmgKaW5kZXggM2QxOTkxODMwMS4uZmQ2ZjZmYjA1YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKQEAgLTQ3LDYgKzQ3 LDExIEBAIFRZUEVfU0FGRSh1bnNpZ25lZCBsb25nLCBiZm4pOwogI3VuZGVmIGJmbl94CiAjZW5k aWYKIAorc3RhdGljIGlubGluZSBib29sX3QgYmZuX2VxKGJmbl90IHgsIGJmbl90IHkpCit7Cisg ICAgcmV0dXJuIGJmbl94KHgpID09IGJmbl94KHkpOworfQorCiBleHRlcm4gYm9vbF90IGlvbW11 X2VuYWJsZSwgaW9tbXVfZW5hYmxlZDsKIGV4dGVybiBib29sX3QgZm9yY2VfaW9tbXUsIGlvbW11 X3ZlcmJvc2U7CiBleHRlcm4gYm9vbF90IGlvbW11X3dvcmthcm91bmRfYmlvc19idWcsIGlvbW11 X2lnZngsIGlvbW11X3Bhc3N0aHJvdWdoOwpAQCAtMTcxLDkgKzE3Niw5IEBAIHN0cnVjdCBpb21t dV9vcHMgewogI2VuZGlmIC8qIEhBU19QQ0kgKi8KIAogICAgIHZvaWQgKCp0ZWFyZG93bikoc3Ry dWN0IGRvbWFpbiAqZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotICAgIGludCBf X211c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGJmbik7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpk LCBiZm5fdCBiZm4sIG1mbl90IG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBmbGFncyk7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2Up KHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbik7CiAgICAgdm9pZCAoKmZyZWVfcGFnZV90YWJs ZSkoc3RydWN0IHBhZ2VfaW5mbyAqKTsKICNpZmRlZiBDT05GSUdfWDg2CiAgICAgdm9pZCAoKnVw ZGF0ZV9pcmVfZnJvbV9hcGljKSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywg dW5zaWduZWQgaW50IHZhbHVlKTsKQEAgLTE4NCw3ICsxODksNyBAQCBzdHJ1Y3QgaW9tbXVfb3Bz IHsKICAgICB2b2lkICgqcmVzdW1lKSh2b2lkKTsKICAgICB2b2lkICgqc2hhcmVfcDJtKShzdHJ1 Y3QgZG9tYWluICpkKTsKICAgICB2b2lkICgqY3Jhc2hfc2h1dGRvd24pKHZvaWQpOwotICAgIGlu dCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBiZm4sCisgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9t YWluICpkLCBiZm5fdCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7CiAgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2Zs dXNoX2FsbCkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgaW50ICgqZ2V0X3Jlc2VydmVkX2Rldmlj ZV9tZW1vcnkpKGlvbW11X2dyZG1fdCAqLCB2b2lkICopOwotLSAKMi4xMS4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==