From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 04/13] iommu: push use of type-safe BFN and MFN into iommu_ops Date: Tue, 17 Jul 2018 14:38:07 +0100 Message-ID: <20180717133816.37958-5-paul.durrant@citrix.com> References: <20180717133816.37958-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.89) (envelope-from ) id 1ffQBL-0005lE-T8 for xen-devel@lists.xenproject.org; Tue, 17 Jul 2018 13:38:23 +0000 In-Reply-To: <20180717133816.37958-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: Kevin Tian , Suravee Suthikulpanit , Andrew Cooper , George Dunlap , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgbWV0aG9kcyBpbiBzdHJ1Y3QgaW9tbXVfb3BzIHRvIHVz ZSB0eXBlLXNhZmUgQkZOCmFuZCBNRk4uIFRoaXMgZm9sbG93cyBvbiBmcm9tIHRoZSBwcmlvciBw YXRjaCB0aGF0IG1vZGlmaWVkIHRoZSBmdW5jdGlvbnMKZXhwb3J0ZWQgaW4geGVuL2lvbW11Lmgu CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgot LS0KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5j b20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZXZpbiBUaWFuIDxr ZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp dHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Cgp2 MzoKIC0gUmVtb3ZlIHNvbWUgdXNlIG9mIGludGVybWVkaWF0ZSAnZnJhbWUnIHZhcmlhYmxlcy4K CnYyOgogLSBBZGRyZXNzZWQgY29tbWVudHMgZnJvbSBKYW4uCiAtIEV4dGVuZCB1c2Ugb2YgaW50 ZXJtZWRpYXRlICdmcmFtZScgdmFyaWFibGUgdG8gYXZvaWQgZGlyZWN0bHkKICAgZW5jYXBzdWxh dGluZyBnZm4gdmFsdWVzIGFzIGJmbnMgb3IgdmljZSB2ZXJzYS4KLS0tCiB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgICAgICAgfCA0NiArKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgICB8 ICAyICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jICAgICAgICAgICAgfCAx NiArKysrKy0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jICAgICAgICAgICAg ICAgfCAgOSArKystLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAg ICAgICB8IDI2ICsrKysrKystLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4 Ni92dGQuYyAgICAgICAgIHwgIDcgKystLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lv bW11LmMgICAgICAgICAgIHwgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQt aW9tbXUtcHJvdG8uaCB8ICA4ICsrLS0tCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAg ICAgICAgICAgICAgICAgfCAxMyArKysrKy0tLQogOSBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRp b25zKCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVf bWFwLmMKaW5kZXggNGRlYWI5Y2QyZi4uNWE5YTBhZjMyMCAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9pb21tdV9tYXAuYwpAQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRpYyBpbnQgdXBkYXRl X3BhZ2luZ19tb2RlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogICAgIHJl dHVybiAwOwogfQogCi1pbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKK2ludCBhbWRfaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3QgYmZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKICAgICBib29sX3QgbmVlZF9mbHVzaCA9 IDA7CkBAIC02NTEsNyArNjUxLDggQEAgaW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgaWYgKCBy YyApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsK LSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgYmZuID0g JWx4XG4iLCBiZm4pOworICAgICAgICBBTURfSU9NTVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2Mg ZmFpbGVkLCBiZm4gPSAlIlBSSV9iZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgYmZu X3goYmZuKSk7CiAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIHJjOwog ICAgIH0KQEAgLTY2MCwyNSArNjYxLDI3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAq IHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3Igd2lkZXIgYmZuIG5vdyAqLwog ICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpZiAoIHVwZGF0ZV9w YWdpbmdfbW9kZShkLCBiZm4pICkKKyAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwg YmZuX3goYmZuKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmaGQtPmFy Y2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBh Z2UgbW9kZSBmYWlsZWQgYmZuID0gJWx4XG4iLCBiZm4pOworICAgICAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBiZm4gPSAlIlBSSV9iZm4iXG4iLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAgICAgICAgICAgZG9tYWlu X2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIH0KICAgICB9 CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2JmbihkLCBiZm4sIHB0X21mbikgfHwgKHB0X21m blsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9wZGVfZnJvbV9iZm4oZCwgYmZuX3goYmZuKSwg cHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2Nr KCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFs aWQgSU8gcGFnZXRhYmxlIGVudHJ5IGJmbiA9ICVseFxuIiwgYmZuKTsKKyAgICAgICAgQU1EX0lP TU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4gPSAlIlBSSV9iZm4iXG4i LAorICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3goYmZuKSk7CiAgICAgICAgIGRvbWFpbl9j cmFzaChkKTsKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgfQogCiAgICAgLyogSW5zdGFs bCA0ayBtYXBwaW5nIGZpcnN0ICovCi0gICAgbmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJl c2VudChwdF9tZm5bMV0sIGJmbiwgbWZuLAorICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRl X3ByZXNlbnQocHRfbWZuWzFdLCBiZm5feChiZm4pLCBtZm5feChtZm4pLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdzICYgSU9NTVVGX3dy aXRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhKGZsYWdz ICYgSU9NTVVGX3JlYWRhYmxlKSk7CkBAIC02OTAsNyArNjkzLDcgQEAgaW50IGFtZF9pb21tdV9t YXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQgbG9u ZyBtZm4sCiAgICAgLyogNEsgbWFwcGluZyBmb3IgUFYgZ3Vlc3RzIG5ldmVyIGNoYW5nZXMsIAog ICAgICAqIG5vIG5lZWQgdG8gZmx1c2ggaWYgd2UgdHJ1c3Qgbm9uLXByZXNlbnQgYml0cyAqLwog ICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCi0gICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdl cyhkLCBiZm4sIDApOworICAgICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuX3goYmZu KSwgMCk7CiAKICAgICBmb3IgKCBtZXJnZV9sZXZlbCA9IElPTU1VX1BBR0lOR19NT0RFX0xFVkVM XzI7CiAgICAgICAgICAgbWVyZ2VfbGV2ZWwgPD0gaGQtPmFyY2gucGFnaW5nX21vZGU7IG1lcmdl X2xldmVsKysgKQpAQCAtNjk4LDE1ICs3MDEsMTYgQEAgaW50IGFtZF9pb21tdV9tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAg ICAgICAgIGlmICggcHRfbWZuW21lcmdlX2xldmVsXSA9PSAwICkKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBpZiAoICFpb21tdV91cGRhdGVfcGRlX2NvdW50KGQsIHB0X21mblttZXJnZV9s ZXZlbF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuLCBtZm4sIG1l cmdlX2xldmVsKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3go YmZuKSwgbWZuX3gobWZuKSwgbWVyZ2VfbGV2ZWwpICkKICAgICAgICAgICAgIGJyZWFrOwogCi0g ICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZuW21lcmdlX2xldmVsXSwgYmZu LAorICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0s IGJmbl94KGJmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIG1lcmdl X2xldmVsKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5t YXBwaW5nX2xvY2spOwogICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJNZXJnZSBpb21tdSBw YWdlIGZhaWxlZCBhdCBsZXZlbCAlZCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJi Zm4gPSAlbHggbWZuID0gJWx4XG4iLCBtZXJnZV9sZXZlbCwgYmZuLCBtZm4pOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJiZm4gPSAlIlBSSV9iZm4iIG1mbiA9ICUiUFJJX21mbiJcbiIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VfbGV2ZWwsIGJmbl94KGJmbiksIG1m bl94KG1mbikpOwogICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CiAgICAgICAgIH0KQEAgLTcyMCw3ICs3MjQsNyBAQCBvdXQ6CiAgICAgcmV0 dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGJmbikKK2ludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCBiZm5fdCBiZm4pCiB7CiAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bN107CiAgICAgc3Ry dWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC03NDIsMzEgKzc0NiwzMyBA QCBpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBiZm4pCiAgICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdl ciBiZm4gbm93ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0gICAgICAg IGludCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBiZm4pOworICAgICAgICBpbnQgcmMgPSB1 cGRhdGVfcGFnaW5nX21vZGUoZCwgYmZuX3goYmZuKSk7CiAKICAgICAgICAgaWYgKCByYyApCiAg ICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2sp OwotICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBi Zm4gPSAlbHhcbiIsIGJmbik7CisgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBw YWdlIG1vZGUgZmFpbGVkIGJmbiA9ICUiUFJJX2JmbiJcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYmZuX3goYmZuKSk7CiAgICAgICAgICAgICBpZiAoIHJjICE9IC1FQUREUk5PVEFW QUlMICkKICAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1 cm4gcmM7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2Jmbihk LCBiZm4sIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCisgICAgaWYgKCBpb21tdV9wZGVf ZnJvbV9iZm4oZCwgYmZuX3goYmZuKSwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKICAg ICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAg ICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGJmbiA9ICVseFxu IiwgYmZuKTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBl bnRyeSBiZm4gPSAlIlBSSV9iZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3go YmZuKSk7CiAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7 CiAgICAgfQogCiAgICAgLyogbWFyayBQVEUgYXMgJ3BhZ2Ugbm90IHByZXNlbnQnICovCi0gICAg Y2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBiZm4pOworICAgIGNsZWFyX2lvbW11 X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgYmZuX3goYmZuKSk7CiAgICAgc3Bpbl91bmxvY2soJmhk LT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZu LCAwKTsKKyAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuX3goYmZuKSwgMCk7CiAKICAg ICByZXR1cm4gMDsKIH0KQEAgLTc4Nyw3ICs3OTMsOSBAQCBpbnQgYW1kX2lvbW11X3Jlc2VydmVf ZG9tYWluX3VuaXR5X21hcChzdHJ1Y3QgZG9tYWluICpkb21haW4sCiAgICAgZ2ZuID0gcGh5c19h ZGRyID4+IFBBR0VfU0hJRlQ7CiAgICAgZm9yICggaSA9IDA7IGkgPCBucGFnZXM7IGkrKyApCiAg ICAgewotICAgICAgICBydCA9IGFtZF9pb21tdV9tYXBfcGFnZShkb21haW4sIGdmbiAraSwgZ2Zu ICtpLCBmbGFncyk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZnJhbWUgPSBnZm4gKyBpOworCisg ICAgICAgIHJ0ID0gYW1kX2lvbW11X21hcF9wYWdlKGRvbWFpbiwgX2JmbihmcmFtZSksIF9tZm4o ZnJhbWUpLCBmbGFncyk7CiAgICAgICAgIGlmICggcnQgIT0gMCApCiAgICAgICAgICAgICByZXR1 cm4gcnQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3Bj aV9hbWRfaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11 LmMKaW5kZXggZDYwODYzMWU2ZS4uZWVhMjJjM2QwZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIHZvaWQg X19od2RvbV9pbml0IGFtZF9pb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAg ICAgICAgICAgKi8KICAgICAgICAgICAgIGlmICggbWZuX3ZhbGlkKF9tZm4ocGZuKSkgKQogICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCByZXQgPSBhbWRfaW9tbXVfbWFwX3BhZ2Uo ZCwgcGZuLCBwZm4sCisgICAgICAgICAgICAgICAgaW50IHJldCA9IGFtZF9pb21tdV9tYXBfcGFn ZShkLCBfYmZuKHBmbiksIF9tZm4ocGZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOwogCiAgICAg ICAgICAgICAgICAgaWYgKCAhcmMgKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXJtL3NtbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKaW5kZXgg MWU0ZDU2MWI0Ny4uMjIxYjYyYTU5YyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXJtL3NtbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCkBA IC0yNTUwLDggKzI1NTAsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3Rs Yl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBfX211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg YmZuLAorc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2goc3RydWN0 IGRvbWFpbiAqZCwgYmZuX3QgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7CiAJLyogQVJNIFNNTVUgdjEg ZG9lc24ndCBoYXZlIGZsdXNoIGJ5IFZNQSBhbmQgVk1JRCAqLwpAQCAtMjczNyw4ICsyNzM2LDgg QEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21h aW4gKmQpCiAJeGZyZWUoeGVuX2RvbWFpbik7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAot CQkJdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncykKK3N0YXRpYyBpbnQgX19t dXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwK KwkJCQkJICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlwMm1fdHlwZV90IHQ7 CiAKQEAgLTI3NTEsNyArMjc1MCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11 X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogCSAqIGZ1bmN0 aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuID09 IGJmbi4KIAkgKi8KIAlCVUdfT04oIWlzX2RvbWFpbl9kaXJlY3RfbWFwcGVkKGQpKTsKLQlCVUdf T04obWZuICE9IGJmbik7CisJQlVHX09OKG1mbl94KG1mbikgIT0gYmZuX3goYmZuKSk7CiAKIAkv KiBXZSBvbmx5IHN1cHBvcnQgcmVhZGFibGUgYW5kIHdyaXRhYmxlIGZsYWdzICovCiAJaWYgKCEo ZmxhZ3MgJiAoSU9NTVVGX3JlYWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSkpCkBAIC0yNzYzLDEw ICsyNzYyLDExIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogCSAqIFRoZSBmdW5jdGlvbiBndWVz dF9waHlzbWFwX2FkZF9lbnRyeSByZXBsYWNlcyB0aGUgY3VycmVudCBtYXBwaW5nCiAJICogaWYg dGhlcmUgaXMgYWxyZWFkeSBvbmUuLi4KIAkgKi8KLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRf ZW50cnkoZCwgX2dmbihiZm4pLCBfbWZuKGJmbiksIDAsIHQpOworCXJldHVybiBndWVzdF9waHlz bWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGJmbl94KGJmbikpLCBfbWZuKGJmbl94KGJmbikpLAorCQkJ CSAgICAgICAwLCB0KTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5t YXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKK3N0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3Qg YmZuKQogewogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdu dHRhYiBjb2RlIHdoZW4gdGhlIGRvbWFpbgpAQCAtMjc3NSw3ICsyNzc1LDcgQEAgc3RhdGljIGlu dCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGJmbikKIAlpZiAoICFpc19kb21haW5fZGlyZWN0X21hcHBlZChkKSApCiAJCXJl dHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dm bihiZm4pLCBfbWZuKGJmbiksIDApOworCXJldHVybiBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdl KGQsIF9nZm4oYmZuX3goYmZuKSksIF9tZm4oYmZuX3goYmZuKSksIDApOwogfQogCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGlvbW11X29wcyBhcm1fc21tdV9pb21tdV9vcHMgPSB7CmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYwppbmRleCA0NDc5N2Y5ZTkyLi5jZjcwYTVjNDNjIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2lvbW11LmMKQEAgLTE5NCw3ICsxOTQsOCBAQCB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2Rv bV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICAgICAgICA9PSBQR1Rfd3JpdGFi bGVfcGFnZSkgKQogICAgICAgICAgICAgICAgIG1hcHBpbmcgfD0gSU9NTVVGX3dyaXRhYmxlOwog Ci0gICAgICAgICAgICByZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBiZm4sIG1m biwgbWFwcGluZyk7CisgICAgICAgICAgICByZXQgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFn ZShkLCBfYmZuKGJmbiksIF9tZm4obWZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hcHBpbmcpOwogICAgICAgICAgICAgaWYgKCAhcmMgKQogICAgICAg ICAgICAgICAgIHJjID0gcmV0OwogCkBAIC0yNjQsNyArMjY1LDcgQEAgaW50IGlvbW11X21hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgbWZuX3QgbWZuLAogICAgIGlmICggIWlv bW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1cm4gMDsKIAot ICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgYmZuX3goYmZuKSwgbWZuX3go bWZuKSwgZmxhZ3MpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgYmZu LCBtZm4sIGZsYWdzKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBp ZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCkBAIC0yODcs NyArMjg4LDcgQEAgaW50IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3Qg YmZuKQogICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAg ICAgICByZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShk LCBiZm5feChiZm4pKTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwg YmZuKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5p c19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCkBAIC0zMjcsNyArMzI4LDcg QEAgaW50IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgdW5z aWduZWQgaW50IHBhZ2VfY291bnQpCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBs YXRmb3JtX29wcyB8fCAhaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2ggKQogICAgICAgICBy ZXR1cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgYmZu X3goYmZuKSwgcGFnZV9jb3VudCk7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9m bHVzaChkLCBiZm4sIHBhZ2VfY291bnQpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7 CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgp ICkKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggNDhmNjJlMGU4ZC4uYzlmNTBm MDRhZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKKysr IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTU4NCw4ICs1ODQsNyBA QCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9hbGwodm9pZCkKICAgICByZXR1 cm4gcmM7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0 cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGJmbiwKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBkbWFfb2xkX3B0ZV9wcmVzZW50LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291 bnQpCiB7CkBAIC02MTIsMTIgKzYxMSwxMiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21t dV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBpZiAoIGlvbW11X2RvbWlk ID09IC0xICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggcGFnZV9jb3Vu dCAhPSAxIHx8IGJmbiA9PSBiZm5feChJTlZBTElEX0JGTikgKQorICAgICAgICBpZiAoIHBhZ2Vf Y291bnQgIT0gMSB8fCBiZm5fZXEoYmZuLCBJTlZBTElEX0JGTikgKQogICAgICAgICAgICAgcmMg PSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAg ZWxzZQogICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11 X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19iZm5fdG9f YmFkZHIoYmZuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl90 b19iYWRkcihiZm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFH RV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkbWFf b2xkX3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zmx1c2hfZGV2X2lvdGxiKTsKQEAgLTYzMyw3ICs2MzIsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9j aGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBiZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiZm5fdCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKICAgICByZXR1cm4gaW9tbXVfZmx1c2hf aW90bGIoZCwgYmZuLCAxLCBwYWdlX2NvdW50KTsKQEAgLTY0MSw3ICs2NDAsNyBAQCBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpk LAogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0 IGRvbWFpbiAqZCkKIHsKLSAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgYmZuX3goSU5W QUxJRF9CRk4pLCAwLCAwKTsKKyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgSU5WQUxJ RF9CRk4sIDAsIDApOwogfQogCiAvKiBjbGVhciBvbmUgcGFnZSdzIHBhZ2UgdGFibGUgKi8KQEAg LTY3Niw3ICs2NzUsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBkbWFfcHRlX2NsZWFyX29u ZShzdHJ1Y3QgZG9tYWluICpkb21haW4sIHU2NCBhZGRyKQogICAgIGlvbW11X2ZsdXNoX2NhY2hl X2VudHJ5KHB0ZSwgc2l6ZW9mKHN0cnVjdCBkbWFfcHRlKSk7CiAKICAgICBpZiAoICF0aGlzX2Nw dShpb21tdV9kb250X2ZsdXNoX2lvdGxiKSApCi0gICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90 bGJfcGFnZXMoZG9tYWluLCBhZGRyID4+IFBBR0VfU0hJRlRfNEssIDEpOworICAgICAgICByYyA9 IGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKGRvbWFpbiwgYmFkZHJfdG9fYmZuKGFkZHIpLCAxKTsK IAogICAgIHVubWFwX3Z0ZF9kb21haW5fcGFnZShwYWdlKTsKIApAQCAtMTc2Nyw4ICsxNzY2LDcg QEAgc3RhdGljIHZvaWQgaW9tbXVfZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiB9 CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGJmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmZuX3QgYmZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgc3Ry dWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC0xNzg2LDE2ICsxNzg0LDE2 IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsCiAKICAgICBzcGluX2xvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAKLSAg ICBwZ19tYWRkciA9IGFkZHJfdG9fZG1hX3BhZ2VfbWFkZHIoZCwgX19iZm5fdG9fYmFkZHIoYmZu KSwgMSk7CisgICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21hZGRyKGQsIGJmbl90b19i YWRkcihiZm4pLCAxKTsKICAgICBpZiAoIHBnX21hZGRyID09IDAgKQogICAgIHsKICAgICAgICAg c3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgIHJldHVybiAtRU5P TUVNOwogICAgIH0KICAgICBwYWdlID0gKHN0cnVjdCBkbWFfcHRlICopbWFwX3Z0ZF9kb21haW5f cGFnZShwZ19tYWRkcik7Ci0gICAgcHRlID0gcGFnZSArIChiZm4gJiBMRVZFTF9NQVNLKTsKKyAg ICBwdGUgPSBwYWdlICsgKGJmbl94KGJmbikgJiBMRVZFTF9NQVNLKTsKICAgICBvbGQgPSAqcHRl OwotICAgIGRtYV9zZXRfcHRlX2FkZHIobmV3LCAocGFkZHJfdCltZm4gPDwgUEFHRV9TSElGVF80 Syk7CisgICAgZG1hX3NldF9wdGVfYWRkcihuZXcsIG1mbl90b19tYWRkcihtZm4pKTsKICAgICBk bWFfc2V0X3B0ZV9wcm90KG5ldywKICAgICAgICAgICAgICAgICAgICAgICgoZmxhZ3MgJiBJT01N VUZfcmVhZGFibGUpID8gRE1BX1BURV9SRUFEICA6IDApIHwKICAgICAgICAgICAgICAgICAgICAg ICgoZmxhZ3MgJiBJT01NVUZfd3JpdGFibGUpID8gRE1BX1BURV9XUklURSA6IDApKTsKQEAgLTE4 MjMsMTMgKzE4MjEsMTMgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50 ZWxfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3QgYmZuKQogewogICAg IC8qIERvIG5vdGhpbmcgaWYgaGFyZHdhcmUgZG9tYWluIGFuZCBpb21tdSBzdXBwb3J0cyBwYXNz IHRocnUuICovCiAgICAgaWYgKCBpb21tdV9wYXNzdGhyb3VnaCAmJiBpc19oYXJkd2FyZV9kb21h aW4oZCkgKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29u ZShkLCBfX2Jmbl90b19iYWRkcihiZm4pKTsKKyAgICByZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUo ZCwgYmZuX3RvX2JhZGRyKGJmbikpOwogfQogCiBpbnQgaW9tbXVfcHRlX2ZsdXNoKHN0cnVjdCBk b21haW4gKmQsIHVpbnQ2NF90IGJmbiwgdWludDY0X3QgKnB0ZSwKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQveDg2L3Z0ZC5jCmluZGV4IGRjMzdkY2U0YjYuLjZmZWQ0YTkyY2IgMTAwNjQ0Ci0tLSBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYwpAQCAtMTIxLDYgKzEyMSw4IEBAIHZvaWQgX19od2Rv bV9pbml0IHZ0ZF9zZXRfaHdkb21fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQogICAgIHsKICAg ICAgICAgdW5zaWduZWQgbG9uZyBwZm4gPSBwZHhfdG9fcGZuKGkpOwogICAgICAgICBib29sIG1h cDsKKyAgICAgICAgYmZuX3QgYmZuOworICAgICAgICBtZm5fdCBtZm47CiAgICAgICAgIGludCBy YyA9IDA7CiAKICAgICAgICAgLyoKQEAgLTE1MywxMCArMTU1LDExIEBAIHZvaWQgX19od2RvbV9p bml0IHZ0ZF9zZXRfaHdkb21fbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAg Y29udGludWU7CiAKICAgICAgICAgdG1wID0gMSA8PCAoUEFHRV9TSElGVCAtIFBBR0VfU0hJRlRf NEspOworICAgICAgICBiZm4gPSBfYmZuKHBmbiAqIHRtcCk7CisgICAgICAgIG1mbiA9IF9tZm4o cGZuICogdG1wKTsKICAgICAgICAgZm9yICggaiA9IDA7IGogPCB0bXA7IGorKyApCiAgICAgICAg IHsKLSAgICAgICAgICAgIGludCByZXQgPSBpb21tdV9tYXBfcGFnZShkLCBfYmZuKHBmbiAqIHRt cCArIGopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4ocGZuICog dG1wICsgaiksCisgICAgICAgICAgICBpbnQgcmV0ID0gaW9tbXVfbWFwX3BhZ2UoZCwgYmZuX2Fk ZChiZm4sIGopLCBtZm5fYWRkKG1mbiwgaiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7CiAKICAgICAgICAgICAg IGlmICggIXJjICkKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21t dS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKaW5kZXggNjgxODJhZmQ5 MS4uMzc5ODgyYzY5MCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lv bW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKQEAgLTY1LDcg KzY1LDcgQEAgaW50IGFyY2hfaW9tbXVfcG9wdWxhdGVfcGFnZV90YWJsZShzdHJ1Y3QgZG9tYWlu ICpkKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVCghKGdmbiA+PiBERUZB VUxUX0RPTUFJTl9BRERSRVNTX1dJRFRIKSk7CiAgICAgICAgICAgICAgICAgQlVHX09OKFNIQVJF RF9NMlAoZ2ZuKSk7Ci0gICAgICAgICAgICAgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBf cGFnZShkLCBnZm4sIG1mbiwKKyAgICAgICAgICAgICAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMt Pm1hcF9wYWdlKGQsIF9iZm4oZ2ZuKSwgX21mbihtZm4pLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlIHwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl93cml0YWJsZSk7CiAg ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1k LWlvbW11LXByb3RvLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXBy b3RvLmgKaW5kZXggOTliYzIxYzdiMy4uZGNlOWVkNmI4MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaApAQCAtNTIsOSArNTIsOSBAQCBpbnQgYW1k X2lvbW11X2luaXQodm9pZCk7CiBpbnQgYW1kX2lvbW11X3VwZGF0ZV9pdnJzX21hcHBpbmdfYWNw aSh2b2lkKTsKIAogLyogbWFwcGluZyBmdW5jdGlvbnMgKi8KLWludCBfX211c3RfY2hlY2sgYW1k X2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2ln bmVkIGludCBmbGFncyk7Ci1pbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV91bm1hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKK2ludCBfX211c3RfY2hlY2sgYW1k X2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsK K2ludCBfX211c3RfY2hlY2sgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg YmZuX3QgYmZuKTsKIHU2NCBhbWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUodTMyICpl bnRyeSk7CiBpbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV9hbGxvY19yb290KHN0cnVjdCBkb21h aW5faW9tbXUgKmhkKTsKIGludCBhbWRfaW9tbXVfcmVzZXJ2ZV9kb21haW5fdW5pdHlfbWFwKHN0 cnVjdCBkb21haW4gKmRvbWFpbiwKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBpb21tdV9kdGVfc2V0 X2d1ZXN0X2NyMyh1MzIgKmR0ZSwgdTE2IGRvbV9pZCwgdTY0IGdjcjMsCiAKIC8qIHNlbmQgY21k IHRvIGlvbW11ICovCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxfcGFnZXMoc3RydWN0IGRvbWFp biAqZCk7Ci12b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbiwKK3ZvaWQgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IG9yZGVyKTsKIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKHU4IGRldmZuLCBjb25z dCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IGdhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCBhM2MzNmMxMTQ4Li42 MjQ3ODRmZWM4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtNDgsNiArNDgsMTEgQEAgc3RhdGljIGlubGluZSBiZm5f dCBiZm5fYWRkKGJmbl90IGJmbiwgdW5zaWduZWQgbG9uZyBpKQogICAgIHJldHVybiBfYmZuKGJm bl94KGJmbikgKyBpKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sX3QgYmZuX2VxKGJmbl90IHgs IGJmbl90IHkpCit7CisgICAgcmV0dXJuIGJmbl94KHgpID09IGJmbl94KHkpOworfQorCiAjZGVm aW5lIElPTU1VX1BBR0VfU0hJRlQgMTIKICNkZWZpbmUgSU9NTVVfUEFHRV9TSVpFICAoX0FDKDEs TCkgPDwgSU9NTVVfUEFHRV9TSElGVCkKICNkZWZpbmUgSU9NTVVfUEFHRV9NQVNLICAofihJT01N VV9QQUdFX1NJWkUgLSAxKSkKQEAgLTE4NCw5ICsxODksOSBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsK ICNlbmRpZiAvKiBIQVNfUENJICovCiAKICAgICB2b2lkICgqdGVhcmRvd24pKHN0cnVjdCBkb21h aW4gKmQpOwotICAgIGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBiZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKLSAgICBpbnQgX19tdXN0X2No ZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pOwor ICAgIGludCBfX211c3RfY2hlY2sgKCptYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3Qg YmZuLCBtZm5fdCBtZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpOworICAgIGludCBfX211c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3Qg ZG9tYWluICpkLCBiZm5fdCBiZm4pOwogICAgIHZvaWQgKCpmcmVlX3BhZ2VfdGFibGUpKHN0cnVj dCBwYWdlX2luZm8gKik7CiAjaWZkZWYgQ09ORklHX1g4NgogICAgIHZvaWQgKCp1cGRhdGVfaXJl X2Zyb21fYXBpYykodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVk IGludCB2YWx1ZSk7CkBAIC0xOTcsNyArMjAyLDcgQEAgc3RydWN0IGlvbW11X29wcyB7CiAgICAg dm9pZCAoKnJlc3VtZSkodm9pZCk7CiAgICAgdm9pZCAoKnNoYXJlX3AybSkoc3RydWN0IGRvbWFp biAqZCk7CiAgICAgdm9pZCAoKmNyYXNoX3NodXRkb3duKSh2b2lkKTsKLSAgICBpbnQgX19tdXN0 X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZu LAorICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwg YmZuX3QgYmZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHBhZ2VfY291bnQpOwogICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVzaF9hbGwp KHN0cnVjdCBkb21haW4gKmQpOwogICAgIGludCAoKmdldF9yZXNlcnZlZF9kZXZpY2VfbWVtb3J5 KShpb21tdV9ncmRtX3QgKiwgdm9pZCAqKTsKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=