From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 04/15] iommu: push use of type-safe BFN and MFN into iommu_ops Date: Wed, 1 Aug 2018 14:40:17 +0100 Message-ID: <20180801134028.1654-5-paul.durrant@citrix.com> References: <20180801134028.1654-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fkrMj-0008NX-HA for xen-devel@lists.xenproject.org; Wed, 01 Aug 2018 13:40:37 +0000 In-Reply-To: <20180801134028.1654-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 CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpS ZXZpZXdlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNjOiBTdXJhdmVl IFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgpDYzogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRl bC5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzog R2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgoKdjM6CiAtIFJlbW92ZSBz b21lIHVzZSBvZiBpbnRlcm1lZGlhdGUgJ2ZyYW1lJyB2YXJpYWJsZXMuCgp2MjoKIC0gQWRkcmVz c2VkIGNvbW1lbnRzIGZyb20gSmFuLgogLSBFeHRlbmQgdXNlIG9mIGludGVybWVkaWF0ZSAnZnJh bWUnIHZhcmlhYmxlIHRvIGF2b2lkIGRpcmVjdGx5CiAgIGVuY2Fwc3VsYXRpbmcgZ2ZuIHZhbHVl cyBhcyBiZm5zIG9yIHZpY2UgdmVyc2EuCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X21hcC5jICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jICAgfCAgMiArLQogeGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyAgICAgICAgICAgIHwgMTYgKysrKystLS0tLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICAgICAgICAgIHwgIDkgKysrLS0t CiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgICAgICAgICAgfCAyNiArKysr KysrLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMgICAgICAg ICB8ICA3ICsrLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICAgICAg ICB8ICAyICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgg fCAgOCArKy0tLQogeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgICAgICAg IHwgMTMgKysrKystLS0KIDkgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNTcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11 X21hcC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDRk ZWFiOWNkMmYuLjVhOWEwYWYzMjAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FtZC9pb21tdV9tYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVf bWFwLmMKQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbikKICAgICByZXR1cm4gMDsKIH0KIAot aW50IGFtZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJm biwgdW5zaWduZWQgbG9uZyBtZm4sCitpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIGJmbl90IGJmbiwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgYm9vbF90IG5lZWRfZmx1c2ggPSAwOwpAQCAtNjUxLDcg KzY1MSw4IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMgKQogICAgIHsKICAg ICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9J T01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGJmbiA9ICVseFxuIiwgYmZuKTsK KyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgYmZuID0g JSJQUklfYmZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAg ICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CkBAIC02NjAs MjUgKzY2MSwyNyBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgYmZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgKiB3ZSBtaWdodCBuZWVk IGEgZGVlcGVyIHBhZ2UgdGFibGUgZm9yIHdpZGVyIGJmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2 bV9kb21haW4oZCkgKQogICAgIHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwg YmZuKSApCisgICAgICAgIGlmICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGJmbl94KGJmbikpICkK ICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9j ayk7Ci0gICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVk IGJmbiA9ICVseFxuIiwgYmZuKTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRl IHBhZ2UgbW9kZSBmYWlsZWQgYmZuID0gJSJQUklfYmZuIlxuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiZm5feChiZm4pKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAg ICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBp b21tdV9wZGVfZnJvbV9iZm4oZCwgYmZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQor ICAgIGlmICggaW9tbXVfcGRlX2Zyb21fYmZuKGQsIGJmbl94KGJmbiksIHB0X21mbikgfHwgKHB0 X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFw cGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJs ZSBlbnRyeSBiZm4gPSAlbHhcbiIsIGJmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52 YWxpZCBJTyBwYWdldGFibGUgZW50cnkgYmZuID0gJSJQUklfYmZuIlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAg ICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIEluc3RhbGwgNGsgbWFwcGluZyBm aXJzdCAqLwotICAgIG5lZWRfZmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFd LCBiZm4sIG1mbiwKKyAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21m blsxXSwgYmZuX3goYmZuKSwgbWZuX3gobWZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElPTU1VX1BBR0lOR19NT0RFX0xFVkVMXzEsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFk YWJsZSkpOwpAQCAtNjkwLDcgKzY5Myw3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIC8q IDRLIG1hcHBpbmcgZm9yIFBWIGd1ZXN0cyBuZXZlciBjaGFuZ2VzLCAKICAgICAgKiBubyBuZWVk IHRvIGZsdXNoIGlmIHdlIHRydXN0IG5vbi1wcmVzZW50IGJpdHMgKi8KICAgICBpZiAoIGlzX2h2 bV9kb21haW4oZCkgKQotICAgICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgYmZuLCAwKTsK KyAgICAgICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbl94KGJmbiksIDApOwogCiAgICAg Zm9yICggbWVyZ2VfbGV2ZWwgPSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAgICAg IG1lcmdlX2xldmVsIDw9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkKQEAg LTY5OCwxNSArNzAxLDE2IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBiZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAoIHB0 X21mblttZXJnZV9sZXZlbF0gPT0gMCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYg KCAhaW9tbXVfdXBkYXRlX3BkZV9jb3VudChkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbiksIG1mbl94KG1m biksIG1lcmdlX2xldmVsKSApCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoIGlv bW11X21lcmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0sIGJmbiwKKyAgICAgICAgaWYg KCBpb21tdV9tZXJnZV9wYWdlcyhkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBiZm5feChiZm4pLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBtZXJnZV9sZXZlbCkgKQogICAg ICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsK ICAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiTWVyZ2UgaW9tbXUgcGFnZSBmYWlsZWQgYXQg bGV2ZWwgJWQsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmZuID0gJWx4IG1mbiA9 ICVseFxuIiwgbWVyZ2VfbGV2ZWwsIGJmbiwgbWZuKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiYmZuID0gJSJQUklfYmZuIiBtZm4gPSAlIlBSSV9tZm4iXG4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lcmdlX2xldmVsLCBiZm5feChiZm4pLCBtZm5feChtZm4pKTsKICAg ICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwog ICAgICAgICB9CkBAIC03MjAsNyArNzI0LDcgQEAgb3V0OgogICAgIHJldHVybiAwOwogfQogCi1p bnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBi Zm4pCitpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgYmZuX3QgYmZu KQogewogICAgIHVuc2lnbmVkIGxvbmcgcHRfbWZuWzddOwogICAgIHN0cnVjdCBkb21haW5faW9t bXUgKmhkID0gZG9tX2lvbW11KGQpOwpAQCAtNzQyLDMxICs3NDYsMzMgQEAgaW50IGFtZF9pb21t dV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKQogICAgICAq IHdlIG1pZ2h0IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgYmZuIG5vdyAqLwog ICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMgPSB1cGRh dGVfcGFnaW5nX21vZGUoZCwgYmZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19t b2RlKGQsIGJmbl94KGJmbikpOwogCiAgICAgICAgIGlmICggcmMgKQogICAgICAgICB7CiAgICAg ICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAg IEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgYmZuID0gJWx4XG4iLCBi Zm4pOworICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxl ZCBiZm4gPSAlIlBSSV9iZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94 KGJmbikpOwogICAgICAgICAgICAgaWYgKCByYyAhPSAtRUFERFJOT1RBVkFJTCApCiAgICAgICAg ICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAg ICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9iZm4oZCwgYmZuLCBwdF9tZm4p IHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zyb21fYmZuKGQsIGJm bl94KGJmbiksIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAgICBz cGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RF QlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBiZm4gPSAlbHhcbiIsIGJmbik7CisgICAg ICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgYmZuID0gJSJQ UklfYmZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJmbl94KGJmbikpOwogICAgICAg ICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAg IC8qIG1hcmsgUFRFIGFzICdwYWdlIG5vdCBwcmVzZW50JyAqLwotICAgIGNsZWFyX2lvbW11X3B0 ZV9wcmVzZW50KHB0X21mblsxXSwgYmZuKTsKKyAgICBjbGVhcl9pb21tdV9wdGVfcHJlc2VudChw dF9tZm5bMV0sIGJmbl94KGJmbikpOwogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5n X2xvY2spOwogCi0gICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbiwgMCk7CisgICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGJmbl94KGJmbiksIDApOwogCiAgICAgcmV0dXJuIDA7CiB9 CkBAIC03ODcsNyArNzkzLDkgQEAgaW50IGFtZF9pb21tdV9yZXNlcnZlX2RvbWFpbl91bml0eV9t YXAoc3RydWN0IGRvbWFpbiAqZG9tYWluLAogICAgIGdmbiA9IHBoeXNfYWRkciA+PiBQQUdFX1NI SUZUOwogICAgIGZvciAoIGkgPSAwOyBpIDwgbnBhZ2VzOyBpKysgKQogICAgIHsKLSAgICAgICAg cnQgPSBhbWRfaW9tbXVfbWFwX3BhZ2UoZG9tYWluLCBnZm4gK2ksIGdmbiAraSwgZmxhZ3MpOwor ICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lID0gZ2ZuICsgaTsKKworICAgICAgICBydCA9IGFt ZF9pb21tdV9tYXBfcGFnZShkb21haW4sIF9iZm4oZnJhbWUpLCBfbWZuKGZyYW1lKSwgZmxhZ3Mp OwogICAgICAgICBpZiAoIHJ0ICE9IDAgKQogICAgICAgICAgICAgcmV0dXJuIHJ0OwogICAgIH0K ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IGQ2MDg2 MzFlNmUuLmVlYTIyYzNkMGQgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9wY2lfYW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9h bWRfaW9tbXUuYwpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIF9faHdkb21faW5pdCBh bWRfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICovCiAg ICAgICAgICAgICBpZiAoIG1mbl92YWxpZChfbWZuKHBmbikpICkKICAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICBpbnQgcmV0ID0gYW1kX2lvbW11X21hcF9wYWdlKGQsIHBmbiwgcGZuLAor ICAgICAgICAgICAgICAgIGludCByZXQgPSBhbWRfaW9tbXVfbWFwX3BhZ2UoZCwgX2JmbihwZm4p LCBfbWZuKHBmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJT01NVUZfcmVhZGFibGV8SU9NTVVGX3dyaXRhYmxlKTsKIAogICAgICAgICAgICAgICAgIGlm ICggIXJjICkKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDFlNGQ1NjFiNDcuLjIy MWI2MmE1OWMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMK KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtMjU1MCw4ICsyNTUw LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKHN0 cnVjdCBkb21haW4gKmQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGFybV9zbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJmbiwKK3N0YXRpYyBp bnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIGJm bl90IGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBwYWdlX2NvdW50KQogewogCS8qIEFSTSBTTU1VIHYxIGRvZXNuJ3QgaGF2ZSBm bHVzaCBieSBWTUEgYW5kIFZNSUQgKi8KQEAgLTI3MzcsOCArMjczNiw4IEBAIHN0YXRpYyB2b2lk IGFybV9zbW11X2lvbW11X2RvbWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKQogCXhmcmVl KHhlbl9kb21haW4pOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKLQkJCXVuc2lnbmVkIGxv bmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1f c21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBiZm5fdCBiZm4sCisJCQkJCSAgbWZuX3Qg bWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJcDJtX3R5cGVfdCB0OwogCkBAIC0yNzUxLDcg KzI3NTAsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKIAkgKiBmdW5jdGlvbiBzaG91bGQgb25s eSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdpdGggZ2ZuID09IG1mbiA9PSBiZm4uCiAJICovCiAJ QlVHX09OKCFpc19kb21haW5fZGlyZWN0X21hcHBlZChkKSk7Ci0JQlVHX09OKG1mbiAhPSBiZm4p OworCUJVR19PTihtZm5feChtZm4pICE9IGJmbl94KGJmbikpOwogCiAJLyogV2Ugb25seSBzdXBw b3J0IHJlYWRhYmxlIGFuZCB3cml0YWJsZSBmbGFncyAqLwogCWlmICghKGZsYWdzICYgKElPTU1V Rl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSkpKQpAQCAtMjc2MywxMCArMjc2MiwxMSBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGJmbiwKIAkgKiBUaGUgZnVuY3Rpb24gZ3Vlc3RfcGh5c21hcF9hZGRf ZW50cnkgcmVwbGFjZXMgdGhlIGN1cnJlbnQgbWFwcGluZwogCSAqIGlmIHRoZXJlIGlzIGFscmVh ZHkgb25lLi4uCiAJICovCi0JcmV0dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4o YmZuKSwgX21mbihiZm4pLCAwLCB0KTsKKwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnko ZCwgX2dmbihiZm5feChiZm4pKSwgX21mbihiZm5feChiZm4pKSwKKwkJCQkgICAgICAgMCwgdCk7 CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4pCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBh cm1fc21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbikKIHsKIAkvKgog CSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aGVu IHRoZSBkb21haW4KQEAgLTI3NzUsNyArMjc3NSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNr IGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBiZm4p CiAJaWYgKCAhaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkgKQogCQlyZXR1cm4gLUVJTlZBTDsK IAotCXJldHVybiBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oYmZuKSwgX21mbihi Zm4pLCAwKTsKKwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGJmbl94 KGJmbikpLCBfbWZuKGJmbl94KGJmbikpLCAwKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBp b21tdV9vcHMgYXJtX3NtbXVfaW9tbXVfb3BzID0gewpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5k ZXggMzAzYWM1NmUwOC4uMWYzMjk1ODgxNiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC0x OTQsNyArMTk0LDggQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChzdHJ1Y3Qg ZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAgPT0gUEdUX3dyaXRhYmxlX3BhZ2UpICkKICAg ICAgICAgICAgICAgICBtYXBwaW5nIHw9IElPTU1VRl93cml0YWJsZTsKIAotICAgICAgICAgICAg cmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgYmZuLCBtZm4sIG1hcHBpbmcpOwor ICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgX2JmbihiZm4p LCBfbWZuKG1mbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtYXBwaW5nKTsKICAgICAgICAgICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICByYyA9 IHJldDsKIApAQCAtMjY0LDcgKzI2NSw3IEBAIGludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9t YWluICpkLCBiZm5fdCBiZm4sIG1mbl90IG1mbiwKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8 ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhkLT5w bGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbl94KGJmbiksIG1mbl94KG1mbiksIGZsYWdzKTsK KyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGJmbiwgbWZuLCBmbGFncyk7 CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1 dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQpAQCAtMjg3LDcgKzI4OCw3IEBAIGlu dCBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbikKICAgICBpZiAo ICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7 CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgYmZuX3goYmZuKSk7 CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT51bm1hcF9wYWdlKGQsIGJmbik7CiAgICAgaWYg KCB1bmxpa2VseShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93 biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQpAQCAtMzI3LDcgKzMyOCw3IEBAIGludCBpb21tdV9p b3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCBiZm5fdCBiZm4sIHVuc2lnbmVkIGludCBwYWdl X2NvdW50KQogICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgfHwg IWhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg ICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGJmbl94KGJmbiksIHBhZ2Vf Y291bnQpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgYmZuLCBw YWdlX2NvdW50KTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAo ICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQoKSApCmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5jCmluZGV4IDQ4ZjYyZTBlOGQuLmM5ZjUwZjA0YWQgMTAwNjQ0Ci0t LSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCkBAIC01ODQsOCArNTg0LDcgQEAgc3RhdGljIGludCBf X211c3RfY2hlY2sgaW9tbXVfZmx1c2hfYWxsKHZvaWQpCiAgICAgcmV0dXJuIHJjOwogfQogCi1z dGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBiZm4sCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLCBiZm5fdCBiZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sX3QgZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewpAQCAtNjEy LDEyICs2MTEsMTIgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIo c3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAg ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBiZm4g PT0gYmZuX3goSU5WQUxJRF9CRk4pICkKKyAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwg YmZuX2VxKGJmbiwgSU5WQUxJRF9CRk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hf aW90bGJfZHNpKGlvbW11LCBpb21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsIGZsdXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAgICAg ICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYmZuX3RvX2JhZGRyKGJmbiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZm5fdG9fYmFkZHIoYmZuKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2Vu dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3Rs Yik7CkBAIC02MzMsNyArNjMyLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1 c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg aW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmZuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmZuX3QgYmZuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHBhZ2VfY291bnQpCiB7CiAgICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGJmbiwg MSwgcGFnZV9jb3VudCk7CkBAIC02NDEsNyArNjQwLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hl Y2sgaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKIAogc3RhdGljIGlu dCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCiB7 Ci0gICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGJmbl94KElOVkFMSURfQkZOKSwgMCwg MCk7CisgICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIElOVkFMSURfQkZOLCAwLCAwKTsK IH0KIAogLyogY2xlYXIgb25lIHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC02NzYsNyArNjc1LDcg QEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFp biAqZG9tYWluLCB1NjQgYWRkcikKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUsIHNp emVvZihzdHJ1Y3QgZG1hX3B0ZSkpOwogCiAgICAgaWYgKCAhdGhpc19jcHUoaW9tbXVfZG9udF9m bHVzaF9pb3RsYikgKQotICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKGRvbWFp biwgYWRkciA+PiBQQUdFX1NISUZUXzRLLCAxKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9p b3RsYl9wYWdlcyhkb21haW4sIGJhZGRyX3RvX2JmbihhZGRyKSwgMSk7CiAKICAgICB1bm1hcF92 dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKQEAgLTE3NjcsOCArMTc2Niw3IEBAIHN0YXRpYyB2b2lk IGlvbW11X2RvbWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBi Zm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJmbl90IGJmbiwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewogICAgIHN0cnVjdCBkb21haW5faW9t bXUgKmhkID0gZG9tX2lvbW11KGQpOwpAQCAtMTc4NiwxNiArMTc4NCwxNiBAQCBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogCiAg ICAgc3Bpbl9sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogCi0gICAgcGdfbWFkZHIgPSBh ZGRyX3RvX2RtYV9wYWdlX21hZGRyKGQsIF9fYmZuX3RvX2JhZGRyKGJmbiksIDEpOworICAgIHBn X21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCBiZm5fdG9fYmFkZHIoYmZuKSwgMSk7 CiAgICAgaWYgKCBwZ19tYWRkciA9PSAwICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZo ZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICB9CiAg ICAgcGFnZSA9IChzdHJ1Y3QgZG1hX3B0ZSAqKW1hcF92dGRfZG9tYWluX3BhZ2UocGdfbWFkZHIp OwotICAgIHB0ZSA9IHBhZ2UgKyAoYmZuICYgTEVWRUxfTUFTSyk7CisgICAgcHRlID0gcGFnZSAr IChiZm5feChiZm4pICYgTEVWRUxfTUFTSyk7CiAgICAgb2xkID0gKnB0ZTsKLSAgICBkbWFfc2V0 X3B0ZV9hZGRyKG5ldywgKHBhZGRyX3QpbWZuIDw8IFBBR0VfU0hJRlRfNEspOworICAgIGRtYV9z ZXRfcHRlX2FkZHIobmV3LCBtZm5fdG9fbWFkZHIobWZuKSk7CiAgICAgZG1hX3NldF9wdGVfcHJv dChuZXcsCiAgICAgICAgICAgICAgICAgICAgICAoKGZsYWdzICYgSU9NTVVGX3JlYWRhYmxlKSA/ IERNQV9QVEVfUkVBRCAgOiAwKSB8CiAgICAgICAgICAgICAgICAgICAgICAoKGZsYWdzICYgSU9N TVVGX3dyaXRhYmxlKSA/IERNQV9QVEVfV1JJVEUgOiAwKSk7CkBAIC0xODIzLDEzICsxODIxLDEz IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBk b21haW4gKmQsCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiZm4pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJmbl90IGJmbikKIHsKICAgICAvKiBEbyBub3RoaW5n IGlmIGhhcmR3YXJlIGRvbWFpbiBhbmQgaW9tbXUgc3VwcG9ydHMgcGFzcyB0aHJ1LiAqLwogICAg IGlmICggaW9tbXVfcGFzc3Rocm91Z2ggJiYgaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAg ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwgX19iZm5fdG9f YmFkZHIoYmZuKSk7CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIGJmbl90b19iYWRk cihiZm4pKTsKIH0KIAogaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1aW50 NjRfdCBiZm4sIHVpbnQ2NF90ICpwdGUsCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC92dGQveDg2L3Z0ZC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQu YwppbmRleCBkYzM3ZGNlNGI2Li42ZmVkNGE5MmNiIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC94ODYvdnRkLmMKQEAgLTEyMSw2ICsxMjEsOCBAQCB2b2lkIF9faHdkb21faW5pdCB2dGRfc2V0 X2h3ZG9tX21hcHBpbmcoc3RydWN0IGRvbWFpbiAqZCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVk IGxvbmcgcGZuID0gcGR4X3RvX3BmbihpKTsKICAgICAgICAgYm9vbCBtYXA7CisgICAgICAgIGJm bl90IGJmbjsKKyAgICAgICAgbWZuX3QgbWZuOwogICAgICAgICBpbnQgcmMgPSAwOwogCiAgICAg ICAgIC8qCkBAIC0xNTMsMTAgKzE1NSwxMSBAQCB2b2lkIF9faHdkb21faW5pdCB2dGRfc2V0X2h3 ZG9tX21hcHBpbmcoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg ICAgICAgIHRtcCA9IDEgPDwgKFBBR0VfU0hJRlQgLSBQQUdFX1NISUZUXzRLKTsKKyAgICAgICAg YmZuID0gX2JmbihwZm4gKiB0bXApOworICAgICAgICBtZm4gPSBfbWZuKHBmbiAqIHRtcCk7CiAg ICAgICAgIGZvciAoIGogPSAwOyBqIDwgdG1wOyBqKysgKQogICAgICAgICB7Ci0gICAgICAgICAg ICBpbnQgcmV0ID0gaW9tbXVfbWFwX3BhZ2UoZCwgX2JmbihwZm4gKiB0bXAgKyBqKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHBmbiAqIHRtcCArIGopLAorICAg ICAgICAgICAgaW50IHJldCA9IGlvbW11X21hcF9wYWdlKGQsIGJmbl9hZGQoYmZuLCBqKSwgbWZu X2FkZChtZm4sIGopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V Rl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOwogCiAgICAgICAgICAgICBpZiAoICFyYyApCmRp ZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCmluZGV4IDIyZmViYTU3MmIuLjE4Y2M0NDliZTUg MTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCisrKyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCkBAIC03Miw3ICs3Miw3IEBAIGludCBh cmNoX2lvbW11X3BvcHVsYXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCkKIAogICAgICAg ICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogICAgICAg ICBCVUdfT04oU0hBUkVEX00yUChnZm4pKTsKLSAgICAgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3Bz LT5tYXBfcGFnZShkLCBnZm4sIG1mbiwKKyAgICAgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5t YXBfcGFnZShkLCBfYmZuKGdmbiksIF9tZm4obWZuKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElPTU1VRl93cml0YWJsZSk7CiAgICAgICAgIGlmICggcmMgKQpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCmluZGV4IDk5 YmMyMWM3YjMuLmRjZTllZDZiODMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZt L3N2bS9hbWQtaW9tbXUtcHJvdG8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0v YW1kLWlvbW11LXByb3RvLmgKQEAgLTUyLDkgKzUyLDkgQEAgaW50IGFtZF9pb21tdV9pbml0KHZv aWQpOwogaW50IGFtZF9pb21tdV91cGRhdGVfaXZyc19tYXBwaW5nX2FjcGkodm9pZCk7CiAKIC8q IG1hcHBpbmcgZnVuY3Rpb25zICovCi1pbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp OwotaW50IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBiZm5fdCBiZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7CitpbnQgX19tdXN0X2No ZWNrIGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbik7CiB1 NjQgYW1kX2lvbW11X2dldF9uZXh0X3RhYmxlX2Zyb21fcHRlKHUzMiAqZW50cnkpOwogaW50IF9f bXVzdF9jaGVjayBhbWRfaW9tbXVfYWxsb2Nfcm9vdChzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCk7 CiBpbnQgYW1kX2lvbW11X3Jlc2VydmVfZG9tYWluX3VuaXR5X21hcChzdHJ1Y3QgZG9tYWluICpk b21haW4sCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgaW9tbXVfZHRlX3NldF9ndWVzdF9jcjModTMy ICpkdGUsIHUxNiBkb21faWQsIHU2NCBnY3IzLAogCiAvKiBzZW5kIGNtZCB0byBpb21tdSAqLwog dm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQpOwotdm9pZCBh bWRfaW9tbXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4s Cit2b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGJmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvcmRlcik7 CiB2b2lkIGFtZF9pb21tdV9mbHVzaF9pb3RsYih1OCBkZXZmbiwgY29uc3Qgc3RydWN0IHBjaV9k ZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBnYWRkciwgdW5z aWduZWQgaW50IG9yZGVyKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIv eGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggYTNjMzZjMTE0OC4uNjI0Nzg0ZmVjOCAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lv bW11LmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHN0YXRpYyBpbmxpbmUgYmZuX3QgYmZuX2FkZChiZm5f dCBiZm4sIHVuc2lnbmVkIGxvbmcgaSkKICAgICByZXR1cm4gX2JmbihiZm5feChiZm4pICsgaSk7 CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbF90IGJmbl9lcShiZm5fdCB4LCBiZm5fdCB5KQorewor ICAgIHJldHVybiBiZm5feCh4KSA9PSBiZm5feCh5KTsKK30KKwogI2RlZmluZSBJT01NVV9QQUdF X1NISUZUIDEyCiAjZGVmaW5lIElPTU1VX1BBR0VfU0laRSAgKF9BQygxLEwpIDw8IElPTU1VX1BB R0VfU0hJRlQpCiAjZGVmaW5lIElPTU1VX1BBR0VfTUFTSyAgKH4oSU9NTVVfUEFHRV9TSVpFIC0g MSkpCkBAIC0xODQsOSArMTg5LDkgQEAgc3RydWN0IGlvbW11X29wcyB7CiAjZW5kaWYgLyogSEFT X1BDSSAqLwogCiAgICAgdm9pZCAoKnRlYXJkb3duKShzdHJ1Y3QgZG9tYWluICpkKTsKLSAgICBp bnQgX19tdXN0X2NoZWNrICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgYmZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBt Zm4sIHVuc2lnbmVkIGludCBmbGFncyk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3Bh Z2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgYmZuKTsKKyAgICBpbnQgX19tdXN0 X2NoZWNrICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwgbWZuX3QgbWZu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsK KyAgICBpbnQgX19tdXN0X2NoZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgYmZu X3QgYmZuKTsKICAgICB2b2lkICgqZnJlZV9wYWdlX3RhYmxlKShzdHJ1Y3QgcGFnZV9pbmZvICop OwogI2lmZGVmIENPTkZJR19YODYKICAgICB2b2lkICgqdXBkYXRlX2lyZV9mcm9tX2FwaWMpKHVu c2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwpA QCAtMTk3LDcgKzIwMiw3IEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAgIHZvaWQgKCpyZXN1bWUp KHZvaWQpOwogICAgIHZvaWQgKCpzaGFyZV9wMm0pKHN0cnVjdCBkb21haW4gKmQpOwogICAgIHZv aWQgKCpjcmFzaF9zaHV0ZG93bikodm9pZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxi X2ZsdXNoKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGJmbiwKKyAgICBpbnQgX19t dXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIGJmbl90IGJmbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50 KTsKICAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2hfYWxsKShzdHJ1Y3QgZG9tYWlu ICpkKTsKICAgICBpbnQgKCpnZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9yeSkoaW9tbXVfZ3JkbV90 ICosIHZvaWQgKik7Ci0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs