From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v11 3/7] iommu: push use of type-safe DFN and MFN into iommu_ops Date: Wed, 19 Sep 2018 09:35:58 +0100 Message-ID: <20180919083602.8201-4-paul.durrant@citrix.com> References: <20180919083602.8201-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 1g2XyT-0006kW-J1 for xen-devel@lists.xenproject.org; Wed, 19 Sep 2018 08:36:41 +0000 In-Reply-To: <20180919083602.8201-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 , Paul Durrant , George Dunlap , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgbWV0aG9kcyBpbiBzdHJ1Y3QgaW9tbXVfb3BzIHRvIHVz ZSB0eXBlLXNhZmUgREZOCmFuZCBNRk4uIFRoaXMgZm9sbG93cyBvbiBmcm9tIHRoZSBwcmlvciBw YXRjaCB0aGF0IG1vZGlmaWVkIHRoZSBmdW5jdGlvbnMKZXhwb3J0ZWQgaW4geGVuL2lvbW11Lmgu CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpS ZXZpZXdlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEtl dmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1v bm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGlj aEBzdXNlLmNvbT4KLS0tCkNjOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlr dWxwYW5pdEBhbWQuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KCnY5Ogog LSBSZS1iYXNlLgoKdjc6CiAtIFJlLWJhc2UgYW5kIHJlLW5hbWUgQkZOIC0+IERGTi4KIC0gQWRk ZWQgSmFuJ3MgQS1iIHNpbmNlIHJlLW5hbWluZyB3YXMgcHVyZWx5IG1lY2hhbmljYWwuCgp2NjoK IC0gUmUtYmFzZS4KCnYzOgogLSBSZW1vdmUgc29tZSB1c2Ugb2YgaW50ZXJtZWRpYXRlICdmcmFt ZScgdmFyaWFibGVzLgoKdjI6CiAtIEFkZHJlc3NlZCBjb21tZW50cyBmcm9tIEphbi4KIC0gRXh0 ZW5kIHVzZSBvZiBpbnRlcm1lZGlhdGUgJ2ZyYW1lJyB2YXJpYWJsZSB0byBhdm9pZCBkaXJlY3Rs eQogICBlbmNhcHN1bGF0aW5nIGdmbiB2YWx1ZXMgYXMgYmZucyAobm93IGRmbnMpIG9yIHZpY2Ug dmVyc2EuCi0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAgICAg IHwgNDYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvcGNpX2FtZF9pb21tdS5jICAgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL3NtbXUuYyAgICAgICAgICAgIHwgMTYgKysrKystLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvaW9tbXUuYyAgICAgICAgICAgICAgIHwgIDkgKysrLS0tCiB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYyAgICAgICAgICAgfCAyNiArKysrKysrLS0tLS0tLS0KIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICAgICAgICB8ICAyICstCiB4ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmggfCAgOCArKy0tLQogeGVuL2lu Y2x1ZGUveGVuL2lvbW11LmggICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKystLS0KIDgg ZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jIGIveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCmluZGV4IDYxYWRlNzE4NTAuLmM4OWM1NGZk YjYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwor KysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKQEAgLTYzMSw3ICs2 MzEsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGRmbikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV9tYXBf cGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwgdW5zaWduZWQgbG9uZyBt Zm4sCitpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwg bWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7 CiAgICAgYm9vbF90IG5lZWRfZmx1c2ggPSAwOwpAQCAtNjUxLDcgKzY1MSw4IEBAIGludCBhbWRf aW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sIHVuc2ln bmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMgKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2so JmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0 YWJsZSBhbGxvYyBmYWlsZWQsIGRmbiA9ICVseFxuIiwgZGZuKTsKKyAgICAgICAgQU1EX0lPTU1V X0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZhaWxlZCwgZGZuID0gJSJQUklfZGZuIlxuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgIGRmbl94KGRmbikpOwogICAgICAgICBkb21haW5fY3Jhc2go ZCk7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9CkBAIC02NjAsMjUgKzY2MSwyNyBAQCBpbnQg YW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLCB1 bnNpZ25lZCBsb25nIG1mbiwKICAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBhZ2UgdGFi bGUgZm9yIHdpZGVyIGRmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQogICAg IHsKLSAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZGZuKSApCisgICAgICAgIGlm ICggdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGRmbl94KGRmbikpICkKICAgICAgICAgewogICAgICAg ICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgICAgICBB TURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGRmbiA9ICVseFxuIiwgZGZu KTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQg ZGZuID0gJSJQUklfZGZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZm5feChk Zm4pKTsKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9kZm4o ZCwgZGZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRl X2Zyb21fZGZuKGQsIGRmbl94KGRmbiksIHB0X21mbikgfHwgKHB0X21mblsxXSA9PSAwKSApCiAg ICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAg ICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBkZm4gPSAlbHhc biIsIGRmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUg ZW50cnkgZGZuID0gJSJQUklfZGZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRmbl94 KGRmbikpOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgIHJldHVybiAtRUZBVUxU OwogICAgIH0KIAogICAgIC8qIEluc3RhbGwgNGsgbWFwcGluZyBmaXJzdCAqLwotICAgIG5lZWRf Zmx1c2ggPSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBkZm4sIG1mbiwKKyAgICBu ZWVkX2ZsdXNoID0gc2V0X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZGZuX3goZGZuKSwg bWZuX3gobWZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFkYWJsZSkpOwpAQCAtNjkwLDcg KzY5Myw3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIC8qIDRLIG1hcHBpbmcgZm9yIFBW IGd1ZXN0cyBuZXZlciBjaGFuZ2VzLCAKICAgICAgKiBubyBuZWVkIHRvIGZsdXNoIGlmIHdlIHRy dXN0IG5vbi1wcmVzZW50IGJpdHMgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQotICAg ICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgZGZuLCAwKTsKKyAgICAgICAgYW1kX2lvbW11 X2ZsdXNoX3BhZ2VzKGQsIGRmbl94KGRmbiksIDApOwogCiAgICAgZm9yICggbWVyZ2VfbGV2ZWwg PSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAgICAgIG1lcmdlX2xldmVsIDw9IGhk LT5hcmNoLnBhZ2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkKQEAgLTY5OCwxNSArNzAxLDE2IEBA IGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBk Zm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAoIHB0X21mblttZXJnZV9sZXZlbF0g PT0gMCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCAhaW9tbXVfdXBkYXRlX3Bk ZV9jb3VudChkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRmbiwgbWZuLCBtZXJnZV9sZXZlbCkgKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRmbl94KGRmbiksIG1mbl94KG1mbiksIG1lcmdlX2xldmVsKSAp CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoIGlvbW11X21lcmdlX3BhZ2VzKGQs IHB0X21mblttZXJnZV9sZXZlbF0sIGRmbiwKKyAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdl cyhkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBkZm5feChkZm4pLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZsYWdzLCBtZXJnZV9sZXZlbCkgKQogICAgICAgICB7CiAgICAgICAgICAg ICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAgICAgICAgICAgIEFNRF9J T01NVV9ERUJVRygiTWVyZ2UgaW9tbXUgcGFnZSBmYWlsZWQgYXQgbGV2ZWwgJWQsICIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZGZuID0gJWx4IG1mbiA9ICVseFxuIiwgbWVyZ2VfbGV2 ZWwsIGRmbiwgbWZuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGZuID0gJSJQUklf ZGZuIiBtZm4gPSAlIlBSSV9tZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l cmdlX2xldmVsLCBkZm5feChkZm4pLCBtZm5feChtZm4pKTsKICAgICAgICAgICAgIGRvbWFpbl9j cmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICB9CkBAIC03MjAs NyArNzI0LDcgQEAgb3V0OgogICAgIHJldHVybiAwOwogfQogCi1pbnQgYW1kX2lvbW11X3VubWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pCitpbnQgYW1kX2lvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuKQogewogICAgIHVuc2lnbmVk IGxvbmcgcHRfbWZuWzddOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11 KGQpOwpAQCAtNzQyLDMxICs3NDYsMzMgQEAgaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQogICAgICAqIHdlIG1pZ2h0IG5lZWQgYSBk ZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZGZuIG5vdyAqLwogICAgIGlmICggaXNfaHZtX2Rv bWFpbihkKSApCiAgICAgewotICAgICAgICBpbnQgcmMgPSB1cGRhdGVfcGFnaW5nX21vZGUoZCwg ZGZuKTsKKyAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGRmbl94KGRmbikp OwogCiAgICAgICAgIGlmICggcmMgKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9j aygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygi VXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZGZuID0gJWx4XG4iLCBkZm4pOworICAgICAgICAgICAg QU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBkZm4gPSAlIlBSSV9kZm4i XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbl94KGRmbikpOwogICAgICAgICAg ICAgaWYgKCByYyAhPSAtRUFERFJOT1RBVkFJTCApCiAgICAgICAgICAgICAgICAgZG9tYWluX2Ny YXNoKGQpOwogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAgICAgfQogCi0gICAg aWYgKCBpb21tdV9wZGVfZnJvbV9kZm4oZCwgZGZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0g MCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZGZuKGQsIGRmbl94KGRmbiksIHB0X21mbikg fHwgKHB0X21mblsxXSA9PSAwKSApCiAgICAgewogICAgICAgICBzcGluX3VubG9jaygmaGQtPmFy Y2gubWFwcGluZ19sb2NrKTsKLSAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBh Z2V0YWJsZSBlbnRyeSBkZm4gPSAlbHhcbiIsIGRmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJV RygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZGZuID0gJSJQUklfZGZuIlxuIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGRmbl94KGRmbikpOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7 CiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgIH0KIAogICAgIC8qIG1hcmsgUFRFIGFzICdw YWdlIG5vdCBwcmVzZW50JyAqLwotICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsx XSwgZGZuKTsKKyAgICBjbGVhcl9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGRmbl94KGRm bikpOwogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogCi0gICAgYW1k X2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGRmbiwgMCk7CisgICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2Vz KGQsIGRmbl94KGRmbiksIDApOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC03ODcsNyArNzkzLDkg QEAgaW50IGFtZF9pb21tdV9yZXNlcnZlX2RvbWFpbl91bml0eV9tYXAoc3RydWN0IGRvbWFpbiAq ZG9tYWluLAogICAgIGdmbiA9IHBoeXNfYWRkciA+PiBQQUdFX1NISUZUOwogICAgIGZvciAoIGkg PSAwOyBpIDwgbnBhZ2VzOyBpKysgKQogICAgIHsKLSAgICAgICAgcnQgPSBhbWRfaW9tbXVfbWFw X3BhZ2UoZG9tYWluLCBnZm4gK2ksIGdmbiAraSwgZmxhZ3MpOworICAgICAgICB1bnNpZ25lZCBs b25nIGZyYW1lID0gZ2ZuICsgaTsKKworICAgICAgICBydCA9IGFtZF9pb21tdV9tYXBfcGFnZShk b21haW4sIF9kZm4oZnJhbWUpLCBfbWZuKGZyYW1lKSwgZmxhZ3MpOwogICAgICAgICBpZiAoIHJ0 ICE9IDAgKQogICAgICAgICAgICAgcmV0dXJuIHJ0OwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IGJjYzQ3ZWI5NmMuLjJmMzg3NTJlYmUg MTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMK KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUuYwpAQCAtMjc4 LDcgKzI3OCw3IEBAIHN0YXRpYyB2b2lkIF9faHdkb21faW5pdCBhbWRfaW9tbXVfaHdkb21faW5p dChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIG1m bl92YWxpZChfbWZuKHBmbikpICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg cmV0ID0gYW1kX2lvbW11X21hcF9wYWdlKGQsIHBmbiwgcGZuLAorICAgICAgICAgICAgICAgIGlu dCByZXQgPSBhbWRfaW9tbXVfbWFwX3BhZ2UoZCwgX2RmbihwZm4pLCBfbWZuKHBmbiksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGV8 SU9NTVVGX3dyaXRhYmxlKTsKIAogICAgICAgICAgICAgICAgIGlmICggIXJjICkKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDFmZjA5YmJiMDIuLmQ2NjYwMWI2MmUgMTAwNjQ0Ci0t LSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAtMjU1MCw4ICsyNTUwLDcgQEAgc3RhdGljIGludCBf X211c3RfY2hlY2sgYXJtX3NtbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4gKmQpCiAJ cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxiX2Zs dXNoKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRmbiwKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFy bV9zbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2Nv dW50KQogewogCS8qIEFSTSBTTU1VIHYxIGRvZXNuJ3QgaGF2ZSBmbHVzaCBieSBWTUEgYW5kIFZN SUQgKi8KQEAgLTI3NDYsOCArMjc0NSw4IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2lvbW11X2Rv bWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKQogCXhmcmVlKHhlbl9kb21haW4pOwogfQog Ci1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKLQkJCXVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sCisJCQkJCSAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCiB7CiAJcDJtX3R5cGVfdCB0OwogCkBAIC0yNzYwLDcgKzI3NTksNyBAQCBzdGF0aWMg aW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGRmbiwKIAkgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGdudHRh YiBjb2RlIHdpdGggZ2ZuID09IG1mbiA9PSBkZm4uCiAJICovCiAJQlVHX09OKCFpc19kb21haW5f ZGlyZWN0X21hcHBlZChkKSk7Ci0JQlVHX09OKG1mbiAhPSBkZm4pOworCUJVR19PTihtZm5feCht Zm4pICE9IGRmbl94KGRmbikpOwogCiAJLyogV2Ugb25seSBzdXBwb3J0IHJlYWRhYmxlIGFuZCB3 cml0YWJsZSBmbGFncyAqLwogCWlmICghKGZsYWdzICYgKElPTU1VRl9yZWFkYWJsZSB8IElPTU1V Rl93cml0YWJsZSkpKQpAQCAtMjc3MiwxMCArMjc3MSwxMSBAQCBzdGF0aWMgaW50IF9fbXVzdF9j aGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRm biwKIAkgKiBUaGUgZnVuY3Rpb24gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkgcmVwbGFjZXMgdGhl IGN1cnJlbnQgbWFwcGluZwogCSAqIGlmIHRoZXJlIGlzIGFscmVhZHkgb25lLi4uCiAJICovCi0J cmV0dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oZGZuKSwgX21mbihkZm4pLCAw LCB0KTsKKwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoZCwgX2dmbihkZm5feChkZm4p KSwgX21mbihkZm5feChkZm4pKSwKKwkJCQkgICAgICAgMCwgdCk7CiB9CiAKLXN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBkZm4pCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbikKIHsKIAkvKgogCSAqIFRoaXMgZnVuY3Rpb24g c2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aGVuIHRoZSBkb21haW4KQEAgLTI3 ODQsNyArMjc4NCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pCiAJaWYgKCAhaXNfZG9tYWlu X2RpcmVjdF9tYXBwZWQoZCkgKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVybiBndWVzdF9w aHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZGZuKSwgX21mbihkZm4pLCAwKTsKKwlyZXR1cm4g Z3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGRmbl94KGRmbikpLCBfbWZuKGRmbl94 KGRmbikpLCAwKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgYXJtX3NtbXVf aW9tbXVfb3BzID0gewpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKaW5kZXggOTM5MGIxMzY2Zi4uYWMz MmE3MDIyYiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCkBAIC0yMjQsNyArMjI0LDggQEAgdm9p ZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAg ICAgICAgICAgICAgPT0gUEdUX3dyaXRhYmxlX3BhZ2UpICkKICAgICAgICAgICAgICAgICBtYXBw aW5nIHw9IElPTU1VRl93cml0YWJsZTsKIAotICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3Jt X29wcy0+bWFwX3BhZ2UoZCwgZGZuLCBtZm4sIG1hcHBpbmcpOworICAgICAgICAgICAgcmV0ID0g aGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgX2RmbihkZm4pLCBfbWZuKG1mbiksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nKTsKICAgICAg ICAgICAgIGlmICggIXJjICkKICAgICAgICAgICAgICAgICByYyA9IHJldDsKIApAQCAtMzA0LDcg KzMwNSw3IEBAIGludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4s IG1mbl90IG1mbiwKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3Bz ICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9w YWdlKGQsIGRmbl94KGRmbiksIG1mbl94KG1mbiksIGZsYWdzKTsKKyAgICByYyA9IGhkLT5wbGF0 Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGRmbiwgbWZuLCBmbGFncyk7CiAgICAgaWYgKCB1bmxpa2Vs eShyYykgKQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmlu dGtfcmF0ZWxpbWl0KCkgKQpAQCAtMzI3LDcgKzMyOCw3IEBAIGludCBpb21tdV91bm1hcF9wYWdl KHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbikKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8 ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhkLT5w bGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZGZuX3goZGZuKSk7CisgICAgcmMgPSBoZC0+cGxh dGZvcm1fb3BzLT51bm1hcF9wYWdlKGQsIGRmbik7CiAgICAgaWYgKCB1bmxpa2VseShyYykgKQog ICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxp bWl0KCkgKQpAQCAtMzY3LDcgKzM2OCw3IEBAIGludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3Qg ZG9tYWluICpkLCBkZm5fdCBkZm4sIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogICAgIGlmICgg IWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgfHwgIWhkLT5wbGF0Zm9ybV9vcHMt PmlvdGxiX2ZsdXNoICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9y bV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGRmbl94KGRmbiksIHBhZ2VfY291bnQpOworICAgIHJjID0g aGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwgZGZuLCBwYWdlX2NvdW50KTsKICAgICBp ZiAoIHVubGlrZWx5KHJjKSApCiAgICAgewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19k b3duICYmIHByaW50a19yYXRlbGltaXQoKSApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5j CmluZGV4IDg4NzIwZDQ0MDYuLjYzZWFiYjNjMWIgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jCkBAIC01ODQsOCArNTg0LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVf Zmx1c2hfYWxsKHZvaWQpCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9j aGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZm4sCitzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBk Zm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgZG1h X29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewpAQCAtNjEyLDEyICs2MTEsMTIgQEAgc3Rh dGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwK ICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCiAgICAgICAgICAgICBjb250aW51ZTsK IAotICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8fCBkZm4gPT0gZGZuX3goSU5WQUxJRF9E Rk4pICkKKyAgICAgICAgaWYgKCBwYWdlX2NvdW50ICE9IDEgfHwgZGZuX2VxKGRmbiwgSU5WQUxJ RF9ERk4pICkKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfZHNpKGlvbW11LCBp b21tdV9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZs dXNoX2Rldl9pb3RsYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJjID0gaW9tbXVfZmx1 c2hfaW90bGJfcHNpKGlvbW11LCBpb21tdV9kb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fZGZuX3RvX2RhZGRyKGRmbiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZm5fdG9fZGFkZHIoZGZuKSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhZG1hX29sZF9wdGVfcHJlc2VudCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2Rldl9pb3RsYik7CkBAIC02MzMsNyArNjMy LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGIoc3RydWN0IGRv bWFpbiAqZCwKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJf cGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZuX3QgZGZuLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7 CiAgICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGRmbiwgMSwgcGFnZV9jb3VudCk7CkBA IC02NDEsNyArNjQwLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90 bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9t bXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgcmV0dXJuIGlvbW11 X2ZsdXNoX2lvdGxiKGQsIGRmbl94KElOVkFMSURfREZOKSwgMCwgMCk7CisgICAgcmV0dXJuIGlv bW11X2ZsdXNoX2lvdGxiKGQsIElOVkFMSURfREZOLCAwLCAwKTsKIH0KIAogLyogY2xlYXIgb25l IHBhZ2UncyBwYWdlIHRhYmxlICovCkBAIC02NzYsNyArNjc1LDcgQEAgc3RhdGljIGludCBfX211 c3RfY2hlY2sgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1NjQgYWRk cikKICAgICBpb21tdV9mbHVzaF9jYWNoZV9lbnRyeShwdGUsIHNpemVvZihzdHJ1Y3QgZG1hX3B0 ZSkpOwogCiAgICAgaWYgKCAhdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgKQotICAg ICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKGRvbWFpbiwgYWRkciA+PiBQQUdFX1NI SUZUXzRLLCAxKTsKKyAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhkb21haW4s IGRhZGRyX3RvX2RmbihhZGRyKSwgMSk7CiAKICAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UocGFn ZSk7CiAKQEAgLTE3NjgsOCArMTc2Nyw3IEBAIHN0YXRpYyB2b2lkIGlvbW11X2RvbWFpbl90ZWFy ZG93bihzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRl bF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZm4sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbl90IGRmbiwgbWZuX3Qg bWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzKQogewogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11 KGQpOwpAQCAtMTc4NywxNiArMTc4NSwxNiBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRl bF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogCiAgICAgc3Bpbl9sb2NrKCZoZC0+ YXJjaC5tYXBwaW5nX2xvY2spOwogCi0gICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21h ZGRyKGQsIF9fZGZuX3RvX2RhZGRyKGRmbiksIDEpOworICAgIHBnX21hZGRyID0gYWRkcl90b19k bWFfcGFnZV9tYWRkcihkLCBkZm5fdG9fZGFkZHIoZGZuKSwgMSk7CiAgICAgaWYgKCBwZ19tYWRk ciA9PSAwICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xv Y2spOwogICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICB9CiAgICAgcGFnZSA9IChzdHJ1Y3Qg ZG1hX3B0ZSAqKW1hcF92dGRfZG9tYWluX3BhZ2UocGdfbWFkZHIpOwotICAgIHB0ZSA9IHBhZ2Ug KyAoZGZuICYgTEVWRUxfTUFTSyk7CisgICAgcHRlID0gcGFnZSArIChkZm5feChkZm4pICYgTEVW RUxfTUFTSyk7CiAgICAgb2xkID0gKnB0ZTsKLSAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgKHBh ZGRyX3QpbWZuIDw8IFBBR0VfU0hJRlRfNEspOworICAgIGRtYV9zZXRfcHRlX2FkZHIobmV3LCBt Zm5fdG9fbWFkZHIobWZuKSk7CiAgICAgZG1hX3NldF9wdGVfcHJvdChuZXcsCiAgICAgICAgICAg ICAgICAgICAgICAoKGZsYWdzICYgSU9NTVVGX3JlYWRhYmxlKSA/IERNQV9QVEVfUkVBRCAgOiAw KSB8CiAgICAgICAgICAgICAgICAgICAgICAoKGZsYWdzICYgSU9NTVVGX3dyaXRhYmxlKSA/IERN QV9QVEVfV1JJVEUgOiAwKSk7CkBAIC0xODI0LDEzICsxODIyLDEzIEBAIHN0YXRpYyBpbnQgX19t dXN0X2NoZWNrIGludGVsX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCiB9CiAKIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBkZm4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRmbl90IGRmbikKIHsKICAgICAvKiBEbyBub3RoaW5nIGlmIGhhcmR3YXJlIGRvbWFp biBhbmQgaW9tbXUgc3VwcG9ydHMgcGFzcyB0aHJ1LiAqLwogICAgIGlmICggaW9tbXVfaHdkb21f cGFzc3Rocm91Z2ggJiYgaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgcmV0dXJuIDA7 CiAKLSAgICByZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwgX19kZm5fdG9fZGFkZHIoZGZuKSk7 CisgICAgcmV0dXJuIGRtYV9wdGVfY2xlYXJfb25lKGQsIGRmbl90b19kYWRkcihkZm4pKTsKIH0K IAogaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBkZm4sIHVp bnQ2NF90ICpwdGUsCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9t bXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCmluZGV4IGQ2Y2JlYWU1 YzkuLjcwZTc5YzIwZjcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9p b21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCkBAIC02OCw3 ICs2OCw3IEBAIGludCBhcmNoX2lvbW11X3BvcHVsYXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFp biAqZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIShnZm4gPj4gREVG QVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwogICAgICAgICAgICAgICAgIEJVR19PTihTSEFS RURfTTJQKGdmbikpOwotICAgICAgICAgICAgICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFw X3BhZ2UoZCwgZ2ZuLCBtZm4sCisgICAgICAgICAgICAgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3Bz LT5tYXBfcGFnZShkLCBfZGZuKGdmbiksIF9tZm4obWZuKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZfd3JpdGFibGUpOwog ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2Ft ZC1pb21tdS1wcm90by5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1w cm90by5oCmluZGV4IDk5YmMyMWM3YjMuLjMwODNkNjI1YmQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaAorKysgYi94ZW4vaW5jbHVkZS9h c20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmgKQEAgLTUyLDkgKzUyLDkgQEAgaW50IGFt ZF9pb21tdV9pbml0KHZvaWQpOwogaW50IGFtZF9pb21tdV91cGRhdGVfaXZyc19tYXBwaW5nX2Fj cGkodm9pZCk7CiAKIC8qIG1hcHBpbmcgZnVuY3Rpb25zICovCi1pbnQgX19tdXN0X2NoZWNrIGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNp Z25lZCBpbnQgZmxhZ3MpOwotaW50IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfdW5tYXBfcGFnZShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbik7CitpbnQgX19tdXN0X2NoZWNrIGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7 CitpbnQgX19tdXN0X2NoZWNrIGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IGRmbl90IGRmbik7CiB1NjQgYW1kX2lvbW11X2dldF9uZXh0X3RhYmxlX2Zyb21fcHRlKHUzMiAq ZW50cnkpOwogaW50IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfYWxsb2Nfcm9vdChzdHJ1Y3QgZG9t YWluX2lvbW11ICpoZCk7CiBpbnQgYW1kX2lvbW11X3Jlc2VydmVfZG9tYWluX3VuaXR5X21hcChz dHJ1Y3QgZG9tYWluICpkb21haW4sCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgaW9tbXVfZHRlX3Nl dF9ndWVzdF9jcjModTMyICpkdGUsIHUxNiBkb21faWQsIHU2NCBnY3IzLAogCiAvKiBzZW5kIGNt ZCB0byBpb21tdSAqLwogdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX3BhZ2VzKHN0cnVjdCBkb21h aW4gKmQpOwotdm9pZCBhbWRfaW9tbXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBnZm4sCit2b2lkIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBvcmRlcik7CiB2b2lkIGFtZF9pb21tdV9mbHVzaF9pb3RsYih1OCBkZXZmbiwgY29u c3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBnYWRkciwgdW5zaWduZWQgaW50IG9yZGVyKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi9pb21tdS5oIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKaW5kZXggZjlkODZmYzgxNi4u NzMxMzk1N2M4MSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKKysrIGIveGVu L2luY2x1ZGUveGVuL2lvbW11LmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHN0YXRpYyBpbmxpbmUgZGZu X3QgZGZuX2FkZChkZm5fdCBkZm4sIHVuc2lnbmVkIGxvbmcgaSkKICAgICByZXR1cm4gX2Rmbihk Zm5feChkZm4pICsgaSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbF90IGRmbl9lcShkZm5fdCB4 LCBkZm5fdCB5KQoreworICAgIHJldHVybiBkZm5feCh4KSA9PSBkZm5feCh5KTsKK30KKwogZXh0 ZXJuIGJvb2xfdCBpb21tdV9lbmFibGUsIGlvbW11X2VuYWJsZWQ7CiBleHRlcm4gYm9vbF90IGZv cmNlX2lvbW11LCBpb21tdV92ZXJib3NlOwogZXh0ZXJuIGJvb2xfdCBpb21tdV93b3JrYXJvdW5k X2Jpb3NfYnVnLCBpb21tdV9pZ2Z4OwpAQCAtMTc0LDkgKzE3OSw5IEBAIHN0cnVjdCBpb21tdV9v cHMgewogI2VuZGlmIC8qIEhBU19QQ0kgKi8KIAogICAgIHZvaWQgKCp0ZWFyZG93bikoc3RydWN0 IGRvbWFpbiAqZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotICAgIGludCBfX211 c3RfY2hlY2sgKCp1bm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRm bik7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9tYWluICpkLCBk Zm5fdCBkZm4sIG1mbl90IG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBmbGFncyk7CisgICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0 cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbik7CiAgICAgdm9pZCAoKmZyZWVfcGFnZV90YWJsZSko c3RydWN0IHBhZ2VfaW5mbyAqKTsKICNpZmRlZiBDT05GSUdfWDg2CiAgICAgdm9pZCAoKnVwZGF0 ZV9pcmVfZnJvbV9hcGljKSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5z aWduZWQgaW50IHZhbHVlKTsKQEAgLTE4Nyw3ICsxOTIsNyBAQCBzdHJ1Y3QgaW9tbXVfb3BzIHsK ICAgICB2b2lkICgqcmVzdW1lKSh2b2lkKTsKICAgICB2b2lkICgqc2hhcmVfcDJtKShzdHJ1Y3Qg ZG9tYWluICpkKTsKICAgICB2b2lkICgqY3Jhc2hfc2h1dGRvd24pKHZvaWQpOwotICAgIGludCBf X211c3RfY2hlY2sgKCppb3RsYl9mbHVzaCkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBkZm4sCisgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3QgZG9tYWlu ICpkLCBkZm5fdCBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCk7CiAgICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNo X2FsbCkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgaW50ICgqZ2V0X3Jlc2VydmVkX2RldmljZV9t ZW1vcnkpKGlvbW11X2dyZG1fdCAqLCB2b2lkICopOwotLSAKMi4xMS4wCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==