From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v8 3/7] iommu: push use of type-safe DFN and MFN into iommu_ops Date: Thu, 13 Sep 2018 11:31:48 +0100 Message-ID: <20180913103153.33377-4-paul.durrant@citrix.com> References: <20180913103153.33377-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 1g0Oum-0007ek-Sh for xen-devel@lists.xenproject.org; Thu, 13 Sep 2018 10:32:00 +0000 In-Reply-To: <20180913103153.33377-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 LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KCnY3Ogog LSBSZS1iYXNlIGFuZCByZS1uYW1lIEJGTiAtPiBERk4uCiAtIEFkZGVkIEphbidzIEEtYiBzaW5j ZSByZS1uYW1pbmcgd2FzIHB1cmVseSBtZWNoYW5pY2FsLgoKdjY6CiAtIFJlLWJhc2UuCgp2MzoK IC0gUmVtb3ZlIHNvbWUgdXNlIG9mIGludGVybWVkaWF0ZSAnZnJhbWUnIHZhcmlhYmxlcy4KCnYy OgogLSBBZGRyZXNzZWQgY29tbWVudHMgZnJvbSBKYW4uCiAtIEV4dGVuZCB1c2Ugb2YgaW50ZXJt ZWRpYXRlICdmcmFtZScgdmFyaWFibGUgdG8gYXZvaWQgZGlyZWN0bHkKICAgZW5jYXBzdWxhdGlu ZyBnZm4gdmFsdWVzIGFzIGJmbnMgKG5vdyBkZm5zKSBvciB2aWNlIHZlcnNhLgotLS0KIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyAgICAgICB8IDQ2ICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9t bXUuYyAgIHwgIDIgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgICAgICAg ICAgICB8IDE2ICsrKysrLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAg ICAgICAgICAgICB8ICA5ICsrKy0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmMgICAgICAgICAgIHwgMjYgKysrKysrKy0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC94ODYvaW9tbXUuYyAgICAgICAgICAgfCAgMiArLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v c3ZtL2FtZC1pb21tdS1wcm90by5oIHwgIDggKystLS0KIHhlbi9pbmNsdWRlL3hlbi9pb21tdS5o ICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDY3 IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Ft ZC9pb21tdV9tYXAuYwppbmRleCA2MWFkZTcxODUwLi5jODljNTRmZGI2IDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCkBAIC02MzEsNyArNjMxLDcgQEAgc3RhdGljIGlu dCB1cGRhdGVfcGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4p CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAoraW50IGFtZF9pb21t dV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1mbl90IG1mbiwKICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewogICAgIGJvb2xfdCBuZWVk X2ZsdXNoID0gMDsKQEAgLTY1MSw3ICs2NTEsOCBAQCBpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAg ICBpZiAoIHJjICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5n X2xvY2spOwotICAgICAgICBBTURfSU9NTVVfREVCVUcoIlJvb3QgdGFibGUgYWxsb2MgZmFpbGVk LCBkZm4gPSAlbHhcbiIsIGRmbik7CisgICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0YWJs ZSBhbGxvYyBmYWlsZWQsIGRmbiA9ICUiUFJJX2RmbiJcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICBkZm5feChkZm4pKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1 cm4gcmM7CiAgICAgfQpAQCAtNjYwLDI1ICs2NjEsMjcgQEAgaW50IGFtZF9pb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwgdW5zaWduZWQgbG9uZyBtZm4s CiAgICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciB3aWRlciBkZm4g bm93ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0gICAgICAgIGlmICgg dXBkYXRlX3BhZ2luZ19tb2RlKGQsIGRmbikgKQorICAgICAgICBpZiAoIHVwZGF0ZV9wYWdpbmdf bW9kZShkLCBkZm5feChkZm4pKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2Nr KCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJV cGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBkZm4gPSAlbHhcbiIsIGRmbik7CisgICAgICAgICAgICBB TURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGRmbiA9ICUiUFJJX2RmbiJc biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZuX3goZGZuKSk7CiAgICAgICAgICAg ICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAg fQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZGZuKGQsIGRmbiwgcHRfbWZuKSB8 fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAoIGlvbW11X3BkZV9mcm9tX2RmbihkLCBkZm5f eChkZm4pLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQogICAgIHsKICAgICAgICAgc3Bp bl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0gICAgICAgIEFNRF9JT01NVV9ERUJV RygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZGZuID0gJWx4XG4iLCBkZm4pOworICAgICAg ICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGRmbiA9ICUiUFJJ X2RmbiJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZm5feChkZm4pKTsKICAgICAgICAg ZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICB9CiAKICAgICAv KiBJbnN0YWxsIDRrIG1hcHBpbmcgZmlyc3QgKi8KLSAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11 X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZGZuLCBtZm4sCisgICAgbmVlZF9mbHVzaCA9IHNldF9p b21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGRmbl94KGRmbiksIG1mbl94KG1mbiksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9ERV9MRVZF TF8xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJ T01NVUZfd3JpdGFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISEoZmxhZ3MgJiBJT01NVUZfcmVhZGFibGUpKTsKQEAgLTY5MCw3ICs2OTMsNyBAQCBpbnQgYW1k X2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLCB1bnNp Z25lZCBsb25nIG1mbiwKICAgICAvKiA0SyBtYXBwaW5nIGZvciBQViBndWVzdHMgbmV2ZXIgY2hh bmdlcywgCiAgICAgICogbm8gbmVlZCB0byBmbHVzaCBpZiB3ZSB0cnVzdCBub24tcHJlc2VudCBi aXRzICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgYW1kX2lvbW11X2Zs dXNoX3BhZ2VzKGQsIGRmbiwgMCk7CisgICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBk Zm5feChkZm4pLCAwKTsKIAogICAgIGZvciAoIG1lcmdlX2xldmVsID0gSU9NTVVfUEFHSU5HX01P REVfTEVWRUxfMjsKICAgICAgICAgICBtZXJnZV9sZXZlbCA8PSBoZC0+YXJjaC5wYWdpbmdfbW9k ZTsgbWVyZ2VfbGV2ZWwrKyApCkBAIC02OTgsMTUgKzcwMSwxNiBAQCBpbnQgYW1kX2lvbW11X21h cF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLCB1bnNpZ25lZCBsb25n IG1mbiwKICAgICAgICAgaWYgKCBwdF9tZm5bbWVyZ2VfbGV2ZWxdID09IDAgKQogICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgIGlmICggIWlvbW11X3VwZGF0ZV9wZGVfY291bnQoZCwgcHRfbWZu W21lcmdlX2xldmVsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZm4s IG1mbiwgbWVyZ2VfbGV2ZWwpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZm5feChkZm4pLCBtZm5feChtZm4pLCBtZXJnZV9sZXZlbCkgKQogICAgICAgICAgICAgYnJl YWs7CiAKLSAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9wYWdlcyhkLCBwdF9tZm5bbWVyZ2VfbGV2 ZWxdLCBkZm4sCisgICAgICAgIGlmICggaW9tbXVfbWVyZ2VfcGFnZXMoZCwgcHRfbWZuW21lcmdl X2xldmVsXSwgZGZuX3goZGZuKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn cywgbWVyZ2VfbGV2ZWwpICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhk LT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIk1lcmdl IGlvbW11IHBhZ2UgZmFpbGVkIGF0IGxldmVsICVkLCAiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgImRmbiA9ICVseCBtZm4gPSAlbHhcbiIsIG1lcmdlX2xldmVsLCBkZm4sIG1mbik7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRmbiA9ICUiUFJJX2RmbiIgbWZuID0gJSJQUklf bWZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZV9sZXZlbCwgZGZuX3go ZGZuKSwgbWZuX3gobWZuKSk7CiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAgICAg ICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQpAQCAtNzIwLDcgKzcyNCw3IEBAIG91dDoK ICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQoraW50IGFtZF9pb21tdV91bm1hcF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIGRmbl90IGRmbikKIHsKICAgICB1bnNpZ25lZCBsb25nIHB0X21mbls3XTsK ICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTc0MiwzMSAr NzQ2LDMzIEBAIGludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGRmbikKICAgICAgKiB3ZSBtaWdodCBuZWVkIGEgZGVlcGVyIHBhZ2UgdGFibGUg Zm9yIGxhZ2VyIGRmbiBub3cgKi8KICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgKQogICAgIHsK LSAgICAgICAgaW50IHJjID0gdXBkYXRlX3BhZ2luZ19tb2RlKGQsIGRmbik7CisgICAgICAgIGlu dCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBkZm5feChkZm4pKTsKIAogICAgICAgICBpZiAo IHJjICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBp bmdfbG9jayk7Ci0gICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUg ZmFpbGVkIGRmbiA9ICVseFxuIiwgZGZuKTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygi VXBkYXRlIHBhZ2UgbW9kZSBmYWlsZWQgZGZuID0gJSJQUklfZGZuIlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZm5feChkZm4pKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gLUVB RERSTk9UQVZBSUwgKQogICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAg ICAgIHJldHVybiByYzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICggaW9tbXVfcGRlX2Zy b21fZGZuKGQsIGRmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkKKyAgICBpZiAoIGlv bW11X3BkZV9mcm9tX2RmbihkLCBkZm5feChkZm4pLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0g MCkgKQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7 Ci0gICAgICAgIEFNRF9JT01NVV9ERUJVRygiSW52YWxpZCBJTyBwYWdldGFibGUgZW50cnkgZGZu ID0gJWx4XG4iLCBkZm4pOworICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFn ZXRhYmxlIGVudHJ5IGRmbiA9ICUiUFJJX2RmbiJcbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICBkZm5feChkZm4pKTsKICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAgICByZXR1cm4g LUVGQVVMVDsKICAgICB9CiAKICAgICAvKiBtYXJrIFBURSBhcyAncGFnZSBub3QgcHJlc2VudCcg Ki8KLSAgICBjbGVhcl9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGRmbik7CisgICAgY2xl YXJfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBkZm5feChkZm4pKTsKICAgICBzcGluX3Vu bG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIGFtZF9pb21tdV9mbHVzaF9wYWdl cyhkLCBkZm4sIDApOworICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBkZm5feChkZm4pLCAw KTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNzg3LDcgKzc5Myw5IEBAIGludCBhbWRfaW9tbXVf cmVzZXJ2ZV9kb21haW5fdW5pdHlfbWFwKHN0cnVjdCBkb21haW4gKmRvbWFpbiwKICAgICBnZm4g PSBwaHlzX2FkZHIgPj4gUEFHRV9TSElGVDsKICAgICBmb3IgKCBpID0gMDsgaSA8IG5wYWdlczsg aSsrICkKICAgICB7Ci0gICAgICAgIHJ0ID0gYW1kX2lvbW11X21hcF9wYWdlKGRvbWFpbiwgZ2Zu ICtpLCBnZm4gK2ksIGZsYWdzKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBmcmFtZSA9IGdmbiAr IGk7CisKKyAgICAgICAgcnQgPSBhbWRfaW9tbXVfbWFwX3BhZ2UoZG9tYWluLCBfZGZuKGZyYW1l KSwgX21mbihmcmFtZSksIGZsYWdzKTsKICAgICAgICAgaWYgKCBydCAhPSAwICkKICAgICAgICAg ICAgIHJldHVybiBydDsKICAgICB9CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvcGNpX2FtZF9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9h bWRfaW9tbXUuYwppbmRleCA1Njk5YWRjMGY2Li5lN2Y5YzQxNjAzIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0 aWMgdm9pZCBfX2h3ZG9tX2luaXQgYW1kX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAq ZCkKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKCBtZm5fdmFsaWQoX21mbihwZm4p KSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHJldCA9IGFtZF9pb21tdV9t YXBfcGFnZShkLCBwZm4sIHBmbiwKKyAgICAgICAgICAgICAgICBpbnQgcmV0ID0gYW1kX2lvbW11 X21hcF9wYWdlKGQsIF9kZm4ocGZuKSwgX21mbihwZm4pLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7 CiAKICAgICAgICAgICAgICAgICBpZiAoICFyYyApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUu YwppbmRleCAwNjYyMzk4Y2NjLi5mMzFiMDc1YmM1IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hcm0vc21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9z bW11LmMKQEAgLTI1NTAsOCArMjU1MCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9z bW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWlu ICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBkZm4sCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVz aChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKIHsKIAkvKiBBUk0g U01NVSB2MSBkb2Vzbid0IGhhdmUgZmx1c2ggYnkgVk1BIGFuZCBWTUlEICovCkBAIC0yNzM3LDgg KzI3MzYsOCBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9pb21tdV9kb21haW5fdGVhcmRvd24oc3Ry dWN0IGRvbWFpbiAqZCkKIAl4ZnJlZSh4ZW5fZG9tYWluKTsKIH0KIAotc3RhdGljIGludCBfX211 c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBkZm4sCi0JCQl1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQorc3RhdGlj IGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZu X3QgZGZuLAorCQkJCQkgIG1mbl90IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXAybV90 eXBlX3QgdDsKIApAQCAtMjc1MSw3ICsyNzUwLDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sg YXJtX3NtbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAJ ICogZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBnbnR0YWIgY29kZSB3aXRoIGdmbiA9 PSBtZm4gPT0gZGZuLgogCSAqLwogCUJVR19PTighaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkp OwotCUJVR19PTihtZm4gIT0gZGZuKTsKKwlCVUdfT04obWZuX3gobWZuKSAhPSBkZm5feChkZm4p KTsKIAogCS8qIFdlIG9ubHkgc3VwcG9ydCByZWFkYWJsZSBhbmQgd3JpdGFibGUgZmxhZ3MgKi8K IAlpZiAoIShmbGFncyAmIChJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpKSkKQEAg LTI3NjMsMTAgKzI3NjIsMTEgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAJICogVGhlIGZ1bmN0 aW9uIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5IHJlcGxhY2VzIHRoZSBjdXJyZW50IG1hcHBpbmcK IAkgKiBpZiB0aGVyZSBpcyBhbHJlYWR5IG9uZS4uLgogCSAqLwotCXJldHVybiBndWVzdF9waHlz bWFwX2FkZF9lbnRyeShkLCBfZ2ZuKGRmbiksIF9tZm4oZGZuKSwgMCwgdCk7CisJcmV0dXJuIGd1 ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oZGZuX3goZGZuKSksIF9tZm4oZGZuX3goZGZu KSksCisJCQkJICAgICAgIDAsIHQpOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1f c21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQorc3Rh dGljIGludCBfX211c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCBkZm5fdCBkZm4pCiB7CiAJLyoKIAkgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVz ZWQgYnkgZ250dGFiIGNvZGUgd2hlbiB0aGUgZG9tYWluCkBAIC0yNzc1LDcgKzI3NzUsNyBAQCBz dGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZGZuKQogCWlmICggIWlzX2RvbWFpbl9kaXJlY3RfbWFwcGVkKGQp ICkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShkLCBfZ2ZuKGRmbiksIF9tZm4oZGZuKSwgMCk7CisJcmV0dXJuIGd1ZXN0X3BoeXNtYXBfcmVt b3ZlX3BhZ2UoZCwgX2dmbihkZm5feChkZm4pKSwgX21mbihkZm5feChkZm4pKSwgMCk7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzIGFybV9zbW11X2lvbW11X29wcyA9IHsKZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9pb21tdS5jCmluZGV4IDBjNmU1OTA0ZGEuLjE1YWU2NmEwNmMgMTAwNjQ0Ci0t LSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvaW9tbXUuYwpAQCAtMTkzLDcgKzE5Myw4IEBAIHZvaWQgX19od2RvbV9pbml0IGlv bW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgICAgICAgID09IFBH VF93cml0YWJsZV9wYWdlKSApCiAgICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3Jp dGFibGU7CiAKLSAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQs IGRmbiwgbWZuLCBtYXBwaW5nKTsKKyAgICAgICAgICAgIHJldCA9IGhkLT5wbGF0Zm9ybV9vcHMt Pm1hcF9wYWdlKGQsIF9kZm4oZGZuKSwgX21mbihtZm4pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZyk7CiAgICAgICAgICAgICBpZiAoICFyYyAp CiAgICAgICAgICAgICAgICAgcmMgPSByZXQ7CiAKQEAgLTI2Myw3ICsyNjQsNyBAQCBpbnQgaW9t bXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdCBtZm4sCiAgICAg aWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyApCiAgICAgICAgIHJldHVy biAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFnZShkLCBkZm5feChkZm4p LCBtZm5feChtZm4pLCBmbGFncyk7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBfcGFn ZShkLCBkZm4sIG1mbiwgZmxhZ3MpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAg ICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkK QEAgLTI4Niw3ICsyODcsNyBAQCBpbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpk LCBkZm5fdCBkZm4pCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29w cyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT51bm1h cF9wYWdlKGQsIGRmbl94KGRmbikpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBf cGFnZShkLCBkZm4pOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlm ICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKQEAgLTMyNiw3 ICszMjcsNyBAQCBpbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgZGZuX3Qg ZGZuLCB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8 ICFoZC0+cGxhdGZvcm1fb3BzIHx8ICFoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaCApCiAg ICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVz aChkLCBkZm5feChkZm4pLCBwYWdlX2NvdW50KTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMt PmlvdGxiX2ZsdXNoKGQsIGRmbiwgcGFnZV9jb3VudCk7CiAgICAgaWYgKCB1bmxpa2VseShyYykg KQogICAgIHsKICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBwcmludGtfcmF0 ZWxpbWl0KCkgKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11 LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCBhYzBhNzhkOTE3 Li4wMTYzYmI5NDliIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9t bXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNTg0LDgg KzU4NCw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2FsbCh2b2lkKQog ICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hf aW90bGIoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAorc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9t bXVfZmx1c2hfaW90bGIoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGRtYV9vbGRfcHRlX3ByZXNlbnQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZV9jb3VudCkKIHsKQEAgLTYxMiwxMiArNjExLDEyIEBAIHN0YXRpYyBpbnQgX19tdXN0X2No ZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIGlmICggaW9t bXVfZG9taWQgPT0gLTEgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCBw YWdlX2NvdW50ICE9IDEgfHwgZGZuID09IGRmbl94KElOVkFMSURfREZOKSApCisgICAgICAgIGlm ICggcGFnZV9jb3VudCAhPSAxIHx8IGRmbl9lcShkZm4sIElOVkFMSURfREZOKSApCiAgICAgICAg ICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbHVzaF9kZXZfaW90bGIpOwog ICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiX3BzaShpb21t dSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X2Rmbl90b19kYWRkcihkZm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGZuX3RvX2RhZGRyKGRmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIWRtYV9vbGRfcHRlX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmbHVzaF9kZXZfaW90bGIpOwpAQCAtNjMzLDcgKzYzMiw3IEBAIHN0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiB9CiAKIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKHN0cnVjdCBkb21h aW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGRmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRmbl90IGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogICAgIHJldHVybiBpb21t dV9mbHVzaF9pb3RsYihkLCBkZm4sIDEsIHBhZ2VfY291bnQpOwpAQCAtNjQxLDcgKzY0MCw3IEBA IHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKHN0cnVjdCBk b21haW4gKmQsCiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2Fs bChzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBk Zm5feChJTlZBTElEX0RGTiksIDAsIDApOworICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihk LCBJTlZBTElEX0RGTiwgMCwgMCk7CiB9CiAKIC8qIGNsZWFyIG9uZSBwYWdlJ3MgcGFnZSB0YWJs ZSAqLwpAQCAtNjc2LDcgKzY3NSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGRtYV9wdGVf Y2xlYXJfb25lKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTY0IGFkZHIpCiAgICAgaW9tbXVfZmx1 c2hfY2FjaGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRtYV9wdGUpKTsKIAogICAgIGlmICgg IXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkKLSAgICAgICAgcmMgPSBpb21tdV9m bHVzaF9pb3RsYl9wYWdlcyhkb21haW4sIGFkZHIgPj4gUEFHRV9TSElGVF80SywgMSk7CisgICAg ICAgIHJjID0gaW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoZG9tYWluLCBkYWRkcl90b19kZm4oYWRk ciksIDEpOwogCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9wYWdlKHBhZ2UpOwogCkBAIC0xNzY3LDgg KzE3NjYsNyBAQCBzdGF0aWMgdm9pZCBpb21tdV9kb21haW5fdGVhcmRvd24oc3RydWN0IGRvbWFp biAqZCkKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uo c3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZm5fdCBkZm4sIG1mbl90IG1mbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsK ICAgICBzdHJ1Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTE3ODYsMTYg KzE3ODQsMTYgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uo c3RydWN0IGRvbWFpbiAqZCwKIAogICAgIHNwaW5fbG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2Nr KTsKIAotICAgIHBnX21hZGRyID0gYWRkcl90b19kbWFfcGFnZV9tYWRkcihkLCBfX2Rmbl90b19k YWRkcihkZm4pLCAxKTsKKyAgICBwZ19tYWRkciA9IGFkZHJfdG9fZG1hX3BhZ2VfbWFkZHIoZCwg ZGZuX3RvX2RhZGRyKGRmbiksIDEpOwogICAgIGlmICggcGdfbWFkZHIgPT0gMCApCiAgICAgewog ICAgICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKICAgICAgICAgcmV0 dXJuIC1FTk9NRU07CiAgICAgfQogICAgIHBhZ2UgPSAoc3RydWN0IGRtYV9wdGUgKiltYXBfdnRk X2RvbWFpbl9wYWdlKHBnX21hZGRyKTsKLSAgICBwdGUgPSBwYWdlICsgKGRmbiAmIExFVkVMX01B U0spOworICAgIHB0ZSA9IHBhZ2UgKyAoZGZuX3goZGZuKSAmIExFVkVMX01BU0spOwogICAgIG9s ZCA9ICpwdGU7Ci0gICAgZG1hX3NldF9wdGVfYWRkcihuZXcsIChwYWRkcl90KW1mbiA8PCBQQUdF X1NISUZUXzRLKTsKKyAgICBkbWFfc2V0X3B0ZV9hZGRyKG5ldywgbWZuX3RvX21hZGRyKG1mbikp OwogICAgIGRtYV9zZXRfcHRlX3Byb3QobmV3LAogICAgICAgICAgICAgICAgICAgICAgKChmbGFn cyAmIElPTU1VRl9yZWFkYWJsZSkgPyBETUFfUFRFX1JFQUQgIDogMCkgfAogICAgICAgICAgICAg ICAgICAgICAgKChmbGFncyAmIElPTU1VRl93cml0YWJsZSkgPyBETUFfUFRFX1dSSVRFIDogMCkp OwpAQCAtMTgyMywxMyArMTgyMSwxMyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRlbF9p b21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9j aGVjayBpbnRlbF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZm5fdCBkZm4p CiB7CiAgICAgLyogRG8gbm90aGluZyBpZiBoYXJkd2FyZSBkb21haW4gYW5kIGlvbW11IHN1cHBv cnRzIHBhc3MgdGhydS4gKi8KICAgICBpZiAoIGlvbW11X3Bhc3N0aHJvdWdoICYmIGlzX2hhcmR3 YXJlX2RvbWFpbihkKSApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRtYV9wdGVf Y2xlYXJfb25lKGQsIF9fZGZuX3RvX2RhZGRyKGRmbikpOworICAgIHJldHVybiBkbWFfcHRlX2Ns ZWFyX29uZShkLCBkZm5fdG9fZGFkZHIoZGZuKSk7CiB9CiAKIGludCBpb21tdV9wdGVfZmx1c2go c3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZGZuLCB1aW50NjRfdCAqcHRlLApkaWZmIC0tZ2l0 IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC94ODYvaW9tbXUuYwppbmRleCA2ODE4MmFmZDkxLi4yMWU2Njc4ZjE2IDEwMDY0NAot LS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYworKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpAQCAtNjUsNyArNjUsNyBAQCBpbnQgYXJjaF9pb21t dV9wb3B1bGF0ZV9wYWdlX3RhYmxlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgQVNTRVJUKCEoZ2ZuID4+IERFRkFVTFRfRE9NQUlOX0FERFJFU1NfV0lE VEgpKTsKICAgICAgICAgICAgICAgICBCVUdfT04oU0hBUkVEX00yUChnZm4pKTsKLSAgICAgICAg ICAgICAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGdmbiwgbWZuLAorICAg ICAgICAgICAgICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgX2RmbihnZm4p LCBfbWZuKG1mbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT01NVUZfcmVhZGFibGUgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9NTVVGX3dyaXRhYmxlKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUtcHJvdG8uaAppbmRleCA5OWJjMjFjN2Iz Li4zMDgzZDYyNWJkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1k LWlvbW11LXByb3RvLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21t dS1wcm90by5oCkBAIC01Miw5ICs1Miw5IEBAIGludCBhbWRfaW9tbXVfaW5pdCh2b2lkKTsKIGlu dCBhbWRfaW9tbXVfdXBkYXRlX2l2cnNfbWFwcGluZ19hY3BpKHZvaWQpOwogCiAvKiBtYXBwaW5n IGZ1bmN0aW9ucyAqLwotaW50IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKLWludCBf X211c3RfY2hlY2sgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pOworaW50IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworaW50IF9fbXVzdF9jaGVjayBhbWRf aW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4pOwogdTY0IGFtZF9p b21tdV9nZXRfbmV4dF90YWJsZV9mcm9tX3B0ZSh1MzIgKmVudHJ5KTsKIGludCBfX211c3RfY2hl Y2sgYW1kX2lvbW11X2FsbG9jX3Jvb3Qoc3RydWN0IGRvbWFpbl9pb21tdSAqaGQpOwogaW50IGFt ZF9pb21tdV9yZXNlcnZlX2RvbWFpbl91bml0eV9tYXAoc3RydWN0IGRvbWFpbiAqZG9tYWluLApA QCAtNzcsNyArNzcsNyBAQCB2b2lkIGlvbW11X2R0ZV9zZXRfZ3Vlc3RfY3IzKHUzMiAqZHRlLCB1 MTYgZG9tX2lkLCB1NjQgZ2NyMywKIAogLyogc2VuZCBjbWQgdG8gaW9tbXUgKi8KIHZvaWQgYW1k X2lvbW11X2ZsdXNoX2FsbF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkKTsKLXZvaWQgYW1kX2lvbW11 X2ZsdXNoX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAordm9pZCBh bWRfaW9tbXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpOwogdm9pZCBh bWRfaW9tbXVfZmx1c2hfaW90bGIodTggZGV2Zm4sIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZ2FkZHIsIHVuc2lnbmVkIGlu dCBvcmRlcik7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9pbmNs dWRlL3hlbi9pb21tdS5oCmluZGV4IDViYmZlYjhiYmQuLjY0YWFjMTM4NmEgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCkBA IC00OCw2ICs0OCwxMSBAQCBzdGF0aWMgaW5saW5lIGRmbl90IGRmbl9hZGQoZGZuX3QgZGZuLCB1 bnNpZ25lZCBsb25nIGkpCiAgICAgcmV0dXJuIF9kZm4oZGZuX3goZGZuKSArIGkpOwogfQogCitz dGF0aWMgaW5saW5lIGJvb2xfdCBkZm5fZXEoZGZuX3QgeCwgZGZuX3QgeSkKK3sKKyAgICByZXR1 cm4gZGZuX3goeCkgPT0gZGZuX3goeSk7Cit9CisKICNkZWZpbmUgSU9NTVVfUEFHRV9TSElGVCAx MgogI2RlZmluZSBJT01NVV9QQUdFX1NJWkUgICgxIDw8IElPTU1VX1BBR0VfU0hJRlQpCiAjZGVm aW5lIElPTU1VX1BBR0VfTUFTSyAgKH4oSU9NTVVfUEFHRV9TSVpFIC0gMSkpCkBAIC0xODIsOSAr MTg3LDkgQEAgc3RydWN0IGlvbW11X29wcyB7CiAjZW5kaWYgLyogSEFTX1BDSSAqLwogCiAgICAg dm9pZCAoKnRlYXJkb3duKShzdHJ1Y3QgZG9tYWluICpkKTsKLSAgICBpbnQgX19tdXN0X2NoZWNr ICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGlu dCBmbGFncyk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKTsKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqbWFwX3Bh Z2UpKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZuX3QgbWZuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKKyAgICBpbnQgX19tdXN0 X2NoZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuKTsKICAgICB2 b2lkICgqZnJlZV9wYWdlX3RhYmxlKShzdHJ1Y3QgcGFnZV9pbmZvICopOwogI2lmZGVmIENPTkZJ R19YODYKICAgICB2b2lkICgqdXBkYXRlX2lyZV9mcm9tX2FwaWMpKHVuc2lnbmVkIGludCBhcGlj LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwpAQCAtMTk1LDcgKzIwMCw3 IEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAgIHZvaWQgKCpyZXN1bWUpKHZvaWQpOwogICAgIHZv aWQgKCpzaGFyZV9wMm0pKHN0cnVjdCBkb21haW4gKmQpOwogICAgIHZvaWQgKCpjcmFzaF9zaHV0 ZG93bikodm9pZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoKShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbiwKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90 bGJfZmx1c2gpKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KTsKICAgICBpbnQgX19t dXN0X2NoZWNrICgqaW90bGJfZmx1c2hfYWxsKShzdHJ1Y3QgZG9tYWluICpkKTsKICAgICBpbnQg KCpnZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9yeSkoaW9tbXVfZ3JkbV90ICosIHZvaWQgKik7Ci0t IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs