From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 3/4] iommu: elide flushing for higher order map/unmap operations Date: Wed, 5 Dec 2018 11:29:23 +0000 Message-ID: <20181205112924.36470-4-paul.durrant@citrix.com> References: <20181205112924.36470-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 1gUVMy-0003G9-Tk for xen-devel@lists.xenproject.org; Wed, 05 Dec 2018 11:29:32 +0000 In-Reply-To: <20181205112924.36470-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 , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Brian Woods , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCByZW1vdmVzIGFueSBpbXBsaWNpdCBmbHVzaGluZyB0aGF0IG9jY3VycyBpbiB0 aGUgaW1wbGVtZW50YXRpb24Kb2YgbWFwIGFuZCB1bm1hcCBvcGVyYXRpb25zIGFuZCBhZGRzIG5l dyBpb21tdV9tYXAvdW5tYXAoKSB3cmFwcGVyCmZ1bmN0aW9ucy4gVG8gbWFpbnRhaW4gc2VtYXRp Y3Mgb2YgdGhlIGlvbW11X2xlZ2FjeV9tYXAvdW5tYXAoKSB3cmFwcGVyCmZ1bmN0aW9ucywgdGhl c2UgYXJlIG1vZGlmaWVkIHRvIGNhbGwgdGhlIG5ldyB3cmFwcGVyIGZ1bmN0aW9ucyBhbmQgdGhl bgpwZXJmb3JtIGFuIGV4cGxpY2l0IGZsdXNoIG9wZXJhdGlvbi4KCkJlY2F1c2UgVlQtZCBjdXJy ZW50bHkgcGVyZm9ybXMgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBmbHVzaCBkZXBlbmRlbnQgdXBv bgp3aGV0aGVyIGEgUFRFIGlzIGJlaW5nIG1vZGlmaWVkIHZlcnN1cyBtZXJlbHkgYWRkZWQgKGku ZS4gcmVwbGFjaW5nIGEgbm9uLQpwcmVzZW50IFBURSkgJ2lvbW11IGZsdXNoIGZsYWdzJyBhcmUg ZGVmaW5lZCBieSB0aGlzIHBhdGNoIGFuZCB0aGUKaW9tbXVfb3BzIG1hcF9wYWdlKCkgYW5kIHVu bWFwX3BhZ2UoKSBtZXRob2RzIGFyZSBtb2RpZmllZCB0byBPUiB0aGUgdHlwZQpvZiBmbHVzaCBu ZWNlc3NhcnkgZm9yIHRoZSBQVEUgdGhhdCBoYXMgYmVlbiBwb3B1bGF0ZWQgb3IgZGVwb3B1bGF0 ZWQgaW50bwphbiBhY2N1bXVsYXRlZCBmbGFncyB2YWx1ZS4gVGhlIGFjY3VtdWxhdGVkIHZhbHVl IGNhbiB0aGVuIGJlIHBhc3NlZCBpbnRvCnRoZSBleHBsaWNpdCBmbHVzaCBvcGVyYXRpb24uCgpU aGUgQVJNIFNNTVUgaW1wbGVtZW50YXRpb25zIG9mIG1hcF9wYWdlKCkgYW5kIHVubWFwX3BhZ2Uo KSBjdXJyZW50bHkKcGVyZm9ybSBubyBpbXBsaWNpdCBmbHVzaGluZyBhbmQgdGhlcmVmb3JlIHRo ZSBtb2RpZmllZCBtZXRob2RzIGRvIG5vdAphZGp1c3QgdGhlIGZsdXNoIGZsYWdzLgoKTk9URTog VGhlIHBlci1jcHUgJ2lvbW11X2RvbnRfZmx1c2hfaW90bGInIGlzIHJlc3BlY3RlZCBieSB0aGUK ICAgICAgaW9tbXVfbGVnYWN5X21hcC91bm1hcCgpIHdyYXBwZXIgZnVuY3Rpb25zIGFuZCB0aGVy ZWZvcmUgdGhpcyBub3cKICAgICAgYXBwbGllcyB0byBhbGwgSU9NTVUgaW1wbGVtZW50YXRpb25z IHJhdGhlciB0aGFuIGp1c3QgVlQtZC4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVs bGluaUBrZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4K Q2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2Ug RHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3NvbiA8aWFu LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6 IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNv bT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5j b20+CkNjOiBCcmlhbiBXb29kcyA8YnJpYW4ud29vZHNAYW1kLmNvbT4KQ2M6IEtldmluIFRpYW4g PGtldmluLnRpYW5AaW50ZWwuY29tPgpDYzogIlJvZ2VyIFBhdSBNb25uw6kiIDxyb2dlci5wYXVA Y2l0cml4LmNvbT4KCnYzOgogLSBNYWtlIEFNRCBJT01NVSBhbmQgSW50ZWwgVlQtZCBtYXAvdW5t YXAgb3BlcmF0aW9ucyBwYXNzIGJhY2sgYWNjdXJhdGUKICAgZmx1c2hfZmxhZ3MuCiAtIFJlc3Bl Y3QgJ2lvbW11X2RvbnRfZmx1c2hfaW90bGInIGluIGxlZ2FjeSB1bm1hcCB3cmFwcGVyLgogLSBQ YXNzIGZsdXNoX2ZsYWdzIGludG8gaW9tbXVfaW90bGJfZmx1c2hfYWxsKCkuCiAtIEltcHJvdmUg Y29tbWVudHMgYW5kIGZpeCBzdHlsZSBpc3N1ZXMuCgp2MjoKIC0gQWRkIHRoZSBuZXcgaW9tbXVf bWFwL3VubWFwKCkgYW5kIGRvbid0IHByb2xpZmVyYXRlIHVzZSBvZgogICBpb21tdV9kb250X2Zs dXNoX2lvdGxiLgogLSBVc2UgJ2ZsdXNoIGZsYWdzJyBpbnN0ZWFkIG9mIGEgJ2lvbW11X2ZsdXNo X3R5cGUnCiAtIEFkZCBhICdmbHVzaF9mbGFncycgYXJndW1lbnQgdG8gaW9tbXVfZmx1c2goKSBh bmQgbW9kaWZ5IHRoZSBjYWxsLXNpdGVzLgoKVGhpcyBjb2RlIGhhcyBvbmx5IGJlZW4gY29tcGls ZSB0ZXN0ZWQgZm9yIEFSTS4KLS0tCiB4ZW4vYXJjaC9hcm0vcDJtLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAxMSArKystCiB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgOCArKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9t YXAuYyAgICAgICB8IDg3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvYXJtL3NtbXUuYyAgICAgICAgICAgIHwgMTUgKysrLS0KIHhlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgICAgICAgICB8IDcxICsrKysrKysrKysrKysrKysr LS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgICB8IDMy ICsrKysrLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICAgICAg ICB8IDI4ICsrKysrKy0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1w cm90by5oIHwgIDkgKystCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICAgICAg ICAgICAgfCA0NCArKysrKysrKysrKy0tLQogOSBmaWxlcyBjaGFuZ2VkLCAyMTkgaW5zZXJ0aW9u cygrKSwgODYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIv eGVuL2FyY2gvYXJtL3AybS5jCmluZGV4IDZjNzYyOThlYmMuLjhiNzgzYjYwMmIgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL2FybS9wMm0uYworKysgYi94ZW4vYXJjaC9hcm0vcDJtLmMKQEAgLTk3MSw4 ICs5NzEsMTcgQEAgc3RhdGljIGludCBfX3AybV9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4g KnAybSwKIAogICAgIGlmICggbmVlZF9pb21tdV9wdF9zeW5jKHAybS0+ZG9tYWluKSAmJgogICAg ICAgICAgKGxwYWVfaXNfdmFsaWQob3JpZ19wdGUpIHx8IGxwYWVfaXNfdmFsaWQoKmVudHJ5KSkg KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzID0gMDsKKworICAgICAg ICBpZiAoIGxwYWVfaXNfdmFsaWQob3JpZ19wdGUpICkKKyAgICAgICAgICAgIGZsdXNoX2ZsYWdz IHw9IElPTU1VX0ZMVVNIRl9tb2RpZmllZDsKKyAgICAgICAgaWYgKCBscGFlX2lzX3ZhbGlkKCpl bnRyeSkgKQorICAgICAgICAgICAgZmx1c2hfZmxhZ3MgfD0gSU9NTVVfRkxVU0hGX2FkZGVkOwor CiAgICAgICAgIHJjID0gaW9tbXVfaW90bGJfZmx1c2gocDJtLT5kb21haW4sIF9kZm4oZ2ZuX3go c2dmbikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFVTCA8PCBwYWdlX29yZGVy KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxVUwgPDwgcGFnZV9vcmRlciwgZmx1 c2hfZmxhZ3MpOworICAgIH0KICAgICBlbHNlCiAgICAgICAgIHJjID0gMDsKIApkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9tZW1vcnkuYyBiL3hlbi9jb21tb24vbWVtb3J5LmMKaW5kZXggN2I2Njgw NzdkOC4uYzQyMTBhNWUwMSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9tZW1vcnkuYworKysgYi94 ZW4vY29tbW9uL21lbW9yeS5jCkBAIC04NjUsMTEgKzg2NSwxNSBAQCBpbnQgeGVubWVtX2FkZF90 b19waHlzbWFwKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXAgKnhh dHAsCiAKICAgICAgICAgdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikgPSAwOwogCi0g ICAgICAgIHJldCA9IGlvbW11X2ZsdXNoKGQsIF9kZm4oeGF0cC0+aWR4IC0gZG9uZSksIGRvbmUp OworICAgICAgICByZXQgPSBpb21tdV9pb3RsYl9mbHVzaChkLCBfZGZuKHhhdHAtPmlkeCAtIGRv bmUpLCBkb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9GTFVTSEZf YWRkZWQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9GTFVTSEZfbW9k aWZpZWQpOwogICAgICAgICBpZiAoIHVubGlrZWx5KHJldCkgJiYgcmMgPj0gMCApCiAgICAgICAg ICAgICByYyA9IHJldDsKIAotICAgICAgICByZXQgPSBpb21tdV9mbHVzaChkLCBfZGZuKHhhdHAt PmdwZm4gLSBkb25lKSwgZG9uZSk7CisgICAgICAgIHJldCA9IGlvbW11X2lvdGxiX2ZsdXNoKGQs IF9kZm4oeGF0cC0+Z3BmbiAtIGRvbmUpLCBkb25lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJT01NVV9GTFVTSEZfYWRkZWQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT01NVV9GTFVTSEZfbW9kaWZpZWQpOwogICAgICAgICBpZiAoIHVubGlrZWx5KHJldCkg JiYgcmMgPj0gMCApCiAgICAgICAgICAgICByYyA9IHJldDsKICAgICB9CmRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKaW5kZXggNzM0MmNkZTE5Zi4uODJiNTYwZGQ2YSAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCisrKyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwpAQCAtMzUsMjMgKzM1LDM3IEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgcGZuX3RvX3BkZV9pZHgodW5zaWduZWQgbG9uZyBwZm4sIHVu c2lnbmVkIGludCBsZXZlbCkKICAgICByZXR1cm4gaWR4OwogfQogCi1zdGF0aWMgdm9pZCBjbGVh cl9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21mbiwgdW5zaWduZWQgbG9uZyBk Zm4pCitzdGF0aWMgdW5zaWduZWQgaW50IGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVk IGxvbmcgbDFfbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGRmbikKIHsKICAgICB1aW50NjRfdCAqdGFibGUsICpwdGU7CisgICAg dWludDMyX3QgZW50cnk7CisgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzOwogCiAgICAgdGFi bGUgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihsMV9tZm4pKTsKLSAgICBwdGUgPSB0YWJsZSArIHBm bl90b19wZGVfaWR4KGRmbiwgMSk7CisKKyAgICBwdGUgPSAodGFibGUgKyBwZm5fdG9fcGRlX2lk eChkZm4sIDEpKTsKKyAgICBlbnRyeSA9ICpwdGUgPj4gMzI7CisKKyAgICBmbHVzaF9mbGFncyA9 IGdldF9maWVsZF9mcm9tX3JlZ191MzIoZW50cnksIElPTU1VX1BURV9QUkVTRU5UX01BU0ssCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VX1BURV9QUkVTRU5U X1NISUZUKSA/CisgICAgICAgIElPTU1VX0ZMVVNIRl9tb2RpZmllZCA6IDA7CisKICAgICAqcHRl ID0gMDsKICAgICB1bm1hcF9kb21haW5fcGFnZSh0YWJsZSk7CisKKyAgICByZXR1cm4gZmx1c2hf ZmxhZ3M7CiB9CiAKLXN0YXRpYyBib29sIHNldF9pb21tdV9wZGVfcHJlc2VudCh1aW50MzJfdCAq cGRlLCB1bnNpZ25lZCBsb25nIG5leHRfbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2xldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgaXcsIGJvb2wgaXIpCitzdGF0aWMgdW5zaWduZWQgaW50IHNldF9pb21t dV9wZGVfcHJlc2VudCh1aW50MzJfdCAqcGRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2xldmVsLCBib29sIGl3 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpcikKIHsK ICAgICB1aW50NjRfdCBtYWRkcl9uZXh0OwogICAgIHVpbnQzMl90IGFkZHJfbG8sIGFkZHJfaGks IGVudHJ5OwotICAgIGJvb2wgbmVlZF9mbHVzaCA9IGZhbHNlLCBvbGRfcHJlc2VudDsKKyAgICBi b29sIG9sZF9wcmVzZW50OworICAgIHVuc2lnbmVkIGludCBmbHVzaF9mbGFncyA9IElPTU1VX0ZM VVNIRl9hZGRlZDsKIAogICAgIG1hZGRyX25leHQgPSBfX3Bmbl90b19wYWRkcihuZXh0X21mbik7 CiAKQEAgLTg0LDcgKzk4LDcgQEAgc3RhdGljIGJvb2wgc2V0X2lvbW11X3BkZV9wcmVzZW50KHVp bnQzMl90ICpwZGUsIHVuc2lnbmVkIGxvbmcgbmV4dF9tZm4sCiAKICAgICAgICAgaWYgKCBtYWRk cl9vbGQgIT0gbWFkZHJfbmV4dCB8fCBpdyAhPSBvbGRfdyB8fCBpciAhPSBvbGRfciB8fAogICAg ICAgICAgICAgIG9sZF9sZXZlbCAhPSBuZXh0X2xldmVsICkKLSAgICAgICAgICAgIG5lZWRfZmx1 c2ggPSB0cnVlOworICAgICAgICAgICAgZmx1c2hfZmxhZ3MgfD0gSU9NTVVfRkxVU0hGX21vZGlm aWVkOwogICAgIH0KIAogICAgIGFkZHJfbG8gPSBtYWRkcl9uZXh0ICYgRE1BXzMyQklUX01BU0s7 CkBAIC0xMjEsMjQgKzEzNSwyNyBAQCBzdGF0aWMgYm9vbCBzZXRfaW9tbXVfcGRlX3ByZXNlbnQo dWludDMyX3QgKnBkZSwgdW5zaWduZWQgbG9uZyBuZXh0X21mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICBJT01NVV9QREVfUFJFU0VOVF9TSElGVCwgJmVudHJ5KTsKICAgICBwZGVbMF0gPSBl bnRyeTsKIAotICAgIHJldHVybiBuZWVkX2ZsdXNoOworICAgIHJldHVybiBmbHVzaF9mbGFnczsK IH0KIAotc3RhdGljIGJvb2wgc2V0X2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRf bWZuLCB1bnNpZ25lZCBsb25nIGRmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIG5leHRfbWZuLCBpbnQgcGRlX2xldmVsLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgaXcsIGJvb2wgaXIpCitzdGF0aWMgdW5zaWduZWQgaW50 IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIHB0X21mbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXh0X21m biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwZGVfbGV2 ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGl3LCBi b29sIGlyKQogewogICAgIHVpbnQ2NF90ICp0YWJsZTsKICAgICB1aW50MzJfdCAqcGRlOwotICAg IGJvb2wgbmVlZF9mbHVzaDsKKyAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3M7CiAKICAgICB0 YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21mbikpOwogCiAgICAgcGRlID0gKHVpbnQz Ml90ICopKHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZGZuLCBwZGVfbGV2ZWwpKTsKIAotICAgIG5l ZWRfZmx1c2ggPSBzZXRfaW9tbXVfcGRlX3ByZXNlbnQocGRlLCBuZXh0X21mbiwgMCwgaXcsIGly KTsKKyAgICBmbHVzaF9mbGFncyA9IHNldF9pb21tdV9wZGVfcHJlc2VudChwZGUsIG5leHRfbWZu LCAwLCBpdywgaXIpOwogICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsKLSAgICByZXR1cm4g bmVlZF9mbHVzaDsKKworICAgIHJldHVybiBmbHVzaF9mbGFnczsKIH0KIAogdm9pZCBhbWRfaW9t bXVfc2V0X3Jvb3RfcGFnZV90YWJsZSh1aW50MzJfdCAqZHRlLCB1aW50NjRfdCByb290X3B0ciwK QEAgLTUyNSw5ICs1NDIsOCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGRmbikKIH0KIAogaW50IGFtZF9pb21tdV9tYXBfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1mbl90IG1mbiwKLSAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQorICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCAqZmx1c2hfZmxhZ3MpCiB7Ci0gICAgYm9vbCBu ZWVkX2ZsdXNoOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwog ICAgIGludCByYzsKICAgICB1bnNpZ25lZCBsb25nIHB0X21mbls3XTsKQEAgLTU3MywxOCArNTg5 LDE3IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZu LCBtZm5fdCBtZm4sCiAgICAgfQogCiAgICAgLyogSW5zdGFsbCA0ayBtYXBwaW5nICovCi0gICAg bmVlZF9mbHVzaCA9IHNldF9pb21tdV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGRmbl94KGRmbiks IG1mbl94KG1mbiksIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh IShmbGFncyAmIElPTU1VRl93cml0YWJsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhIShmbGFncyAmIElPTU1VRl9yZWFkYWJsZSkpOwotCi0gICAgaWYgKCBuZWVk X2ZsdXNoICkKLSAgICAgICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQsIGRmbl94KGRmbiksIDAp OworICAgICpmbHVzaF9mbGFncyB8PSBzZXRfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBk Zm5feChkZm4pLCBtZm5feChtZm4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMSwgISEoZmxhZ3MgJiBJT01NVUZfd3JpdGFibGUpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJT01NVUZfcmVhZGFibGUpKTsK IAogICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOworCiAgICAgcmV0dXJu IDA7CiB9CiAKLWludCBhbWRfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5f dCBkZm4pCitpbnQgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3Qg ZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmx1c2hfZmxhZ3Mp CiB7CiAgICAgdW5zaWduZWQgbG9uZyBwdF9tZm5bN107CiAgICAgc3RydWN0IGRvbWFpbl9pb21t dSAqaGQgPSBkb21faW9tbXUoZCk7CkBAIC02MjksMTEgKzY0NCwxMCBAQCBpbnQgYW1kX2lvbW11 X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuKQogICAgIH0KIAogICAgIC8q IG1hcmsgUFRFIGFzICdwYWdlIG5vdCBwcmVzZW50JyAqLwotICAgIGNsZWFyX2lvbW11X3B0ZV9w cmVzZW50KHB0X21mblsxXSwgZGZuX3goZGZuKSk7CisgICAgKmZsdXNoX2ZsYWdzIHw9IGNsZWFy X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZGZuX3goZGZuKSk7CiAKICAgICBzcGluX3Vu bG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIGFtZF9pb21tdV9mbHVzaF9wYWdl cyhkLCBkZm5feChkZm4pLCAwKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjQ4LDExICs2NjIs MTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZmx1c2hfY291bnQodW5zaWduZWQgbG9uZyBkZm4s IHVuc2lnbmVkIGludCBwYWdlX2NvdW50LAogfQogCiBpbnQgYW1kX2lvbW11X2ZsdXNoX2lvdGxi X3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MpCiB7CiAgICAgdW5zaWduZWQg bG9uZyBkZm5fbCA9IGRmbl94KGRmbik7CiAKICAgICBBU1NFUlQocGFnZV9jb3VudCAmJiAhZGZu X2VxKGRmbiwgSU5WQUxJRF9ERk4pKTsKKyAgICBBU1NFUlQoZmx1c2hfZmxhZ3MpOworCisgICAg LyogVW5sZXNzIGEgUFRFIHdhcyBtb2RpZmllZCwgbm8gZmx1c2ggaXMgcmVxdWlyZWQgKi8KKyAg ICBpZiAoICEoZmx1c2hfZmxhZ3MgJiBJT01NVV9GTFVTSEZfbW9kaWZpZWQpICkKKyAgICAgICAg cmV0dXJuIDA7CiAKICAgICAvKiBJZiB0aGUgcmFuZ2Ugd3JhcHMgdGhlbiBqdXN0IGZsdXNoIGV2 ZXJ5dGhpbmcgKi8KICAgICBpZiAoIGRmbl9sICsgcGFnZV9jb3VudCA8IGRmbl9sICkKQEAgLTY5 NSw2ICs3MTUsNyBAQCBpbnQgYW1kX2lvbW11X3Jlc2VydmVfZG9tYWluX3VuaXR5X21hcChzdHJ1 Y3QgZG9tYWluICpkb21haW4sCiAgICAgdW5zaWduZWQgbG9uZyBucGFnZXMsIGk7CiAgICAgdW5z aWduZWQgbG9uZyBnZm47CiAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gISFpcjsKKyAgICB1bnNp Z25lZCBpbnQgZmx1c2hfZmxhZ3MgPSAwOwogICAgIGludCBydCA9IDA7CiAKICAgICBpZiAoIGl3 ICkKQEAgLTcwNiwxMSArNzI3LDE5IEBAIGludCBhbWRfaW9tbXVfcmVzZXJ2ZV9kb21haW5fdW5p dHlfbWFwKHN0cnVjdCBkb21haW4gKmRvbWFpbiwKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxv bmcgZnJhbWUgPSBnZm4gKyBpOwogCi0gICAgICAgIHJ0ID0gYW1kX2lvbW11X21hcF9wYWdlKGRv bWFpbiwgX2RmbihmcmFtZSksIF9tZm4oZnJhbWUpLCBmbGFncyk7CisgICAgICAgIHJ0ID0gYW1k X2lvbW11X21hcF9wYWdlKGRvbWFpbiwgX2RmbihmcmFtZSksIF9tZm4oZnJhbWUpLCBmbGFncywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsdXNoX2ZsYWdzKTsKICAgICAgICAg aWYgKCBydCAhPSAwICkKLSAgICAgICAgICAgIHJldHVybiBydDsKKyAgICAgICAgICAgIGJyZWFr OwogICAgIH0KLSAgICByZXR1cm4gMDsKKworICAgIC8qIFVzZSB3aGlsZS1icmVhayB0byBhdm9p ZCBjb21waWxlciB3YXJuaW5nICovCisgICAgd2hpbGUgKCBmbHVzaF9mbGFncyAmJiBhbWRfaW9t bXVfZmx1c2hfaW90bGJfcGFnZXMoZG9tYWluLCBfZGZuKGdmbiksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnBhZ2VzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoX2ZsYWdz KSApCisgICAgICAgIGJyZWFrOworCisgICAgcmV0dXJuIHJ0OwogfQogCiAvKiBTaGFyZSBwMm0g dGFibGUgd2l0aCBpb21tdS4gKi8KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FybS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCmluZGV4IDk2 MTJjMGZkZGMuLjVkMTI2MzllOTcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FybS9zbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwpAQCAt MjUzNCw5ICsyNTM0LDEyIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lvdGxi X2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCBkZm5f dCBkZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgcGFnZV9jb3VudCkKK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFybV9zbW11X2lv dGxiX2ZsdXNoKAorCXN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgdW5zaWduZWQgaW50IHBh Z2VfY291bnQsCisJdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzKQogeworCUFTU0VSVChmbHVzaF9m bGFncyk7CisKIAkvKiBBUk0gU01NVSB2MSBkb2Vzbid0IGhhdmUgZmx1c2ggYnkgVk1BIGFuZCBW TUlEICovCiAJcmV0dXJuIGFybV9zbW11X2lvdGxiX2ZsdXNoX2FsbChkKTsKIH0KQEAgLTI3MzEs OCArMjczNCw5IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2lvbW11X2RvbWFpbl90ZWFyZG93bihz dHJ1Y3QgZG9tYWluICpkKQogCXhmcmVlKHhlbl9kb21haW4pOwogfQogCi1zdGF0aWMgaW50IF9f bXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4s Ci0JCQkJCSAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCitzdGF0aWMgaW50IF9fbXVz dF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZSgKKwlzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4s IG1mbl90IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzLAorCXVuc2lnbmVkIGludCAqZmx1c2hfZmxh Z3MpCiB7CiAJcDJtX3R5cGVfdCB0OwogCkBAIC0yNzYxLDcgKzI3NjUsOCBAQCBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBk Zm4sCiAJCQkJICAgICAgIDAsIHQpOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1f c21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbikKK3N0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3Qg ZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKmZsdXNoX2ZsYWdzKQogewogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25s eSBiZSB1c2VkIGJ5IGdudHRhYiBjb2RlIHdoZW4gdGhlIGRvbWFpbgpkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lv bW11LmMKaW5kZXggMTA1OTk1YTM0My4uNzI3ZmI0ZDQ2YiAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21t dS5jCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdkb21faW5p dChzdHJ1Y3QgZG9tYWluICpkKQogICAgIGlmICggbmVlZF9pb21tdV9wdF9zeW5jKGQpICkKICAg ICB7CiAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Ci0gICAgICAgIHVuc2lnbmVkIGlu dCBpID0gMDsKKyAgICAgICAgdW5zaWduZWQgaW50IGkgPSAwLCBmbHVzaF9mbGFncyA9IDA7CiAg ICAgICAgIGludCByYyA9IDA7CiAKICAgICAgICAgcGFnZV9saXN0X2Zvcl9lYWNoICggcGFnZSwg JmQtPnBhZ2VfbGlzdCApCkBAIC0yMjYsOCArMjI2LDkgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9t bXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAgPT0gUEdU X3dyaXRhYmxlX3BhZ2UpICkKICAgICAgICAgICAgICAgICBtYXBwaW5nIHw9IElPTU1VRl93cml0 YWJsZTsKIAotICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwg X2RmbihkZm4pLCBfbWZuKG1mbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtYXBwaW5nKTsKKyAgICAgICAgICAgIHJldCA9IGlvbW11X21hcChkLCBfZGZu KGRmbiksIF9tZm4obWZuKSwgbWFwcGluZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZmx1c2hfZmxhZ3MpOworCiAgICAgICAgICAgICBpZiAoICFyYyApCiAgICAgICAgICAgICAg ICAgcmMgPSByZXQ7CiAKQEAgLTIzNSw2ICsyMzYsMTAgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9t bXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgIHByb2Nlc3Nf cGVuZGluZ19zb2Z0aXJxcygpOwogICAgICAgICB9CiAKKyAgICAgICAgLyogVXNlIHdoaWxlLWJy ZWFrIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgKi8KKyAgICAgICAgd2hpbGUgKCAhaW9tbXVf aW90bGJfZmx1c2hfYWxsKGQsIGZsdXNoX2ZsYWdzKSApCisgICAgICAgICAgICBicmVhazsKKwog ICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiZCVk OiBJT01NVSBtYXBwaW5nIGZhaWxlZDogJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgZC0+ZG9t YWluX2lkLCByYyk7CkBAIC0zMDQsOCArMzA5LDkgQEAgdm9pZCBpb21tdV9kb21haW5fZGVzdHJv eShzdHJ1Y3QgZG9tYWluICpkKQogICAgIGFyY2hfaW9tbXVfZG9tYWluX2Rlc3Ryb3koZCk7CiB9 CiAKLWludCBpb21tdV9sZWdhY3lfbWFwKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZu X3QgbWZuLAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIsIHVu c2lnbmVkIGludCBmbGFncykKK2ludCBpb21tdV9tYXAoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3Qg ZGZuLCBtZm5fdCBtZm4sCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLCB1 bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmx1c2hfZmxh Z3MpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7 CiAgICAgdW5zaWduZWQgbG9uZyBpOwpAQCAtMzIwLDcgKzMyNiw4IEBAIGludCBpb21tdV9sZWdh Y3lfbWFwKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZuX3QgbWZuLAogICAgIGZvciAo IGkgPSAwOyBpIDwgKDF1bCA8PCBwYWdlX29yZGVyKTsgaSsrICkKICAgICB7CiAgICAgICAgIHJj ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZGZuX2FkZChkZm4sIGkpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl9hZGQobWZuLCBpKSwgZmxhZ3Mp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl9hZGQobWZuLCBp KSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hf ZmxhZ3MpOwogCiAgICAgICAgIGlmICggbGlrZWx5KCFyYykgKQogICAgICAgICAgICAgY29udGlu dWU7CkBAIC0zMzMsNyArMzQwLDggQEAgaW50IGlvbW11X2xlZ2FjeV9tYXAoc3RydWN0IGRvbWFp biAqZCwgZGZuX3QgZGZuLCBtZm5fdCBtZm4sCiAKICAgICAgICAgd2hpbGUgKCBpLS0gKQogICAg ICAgICAgICAgLyogaWYgc3RhdGVtZW50IHRvIHNhdGlzZnkgX19tdXN0X2NoZWNrICovCi0gICAg ICAgICAgICBpZiAoIGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZGZuX2FkZChkZm4s IGkpKSApCisgICAgICAgICAgICBpZiAoIGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwg ZGZuX2FkZChkZm4sIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZsdXNoX2ZsYWdzKSApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg ICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKQEAgLTM0NSw3ICszNTMsMjAgQEAgaW50 IGlvbW11X2xlZ2FjeV9tYXAoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdCBtZm4s CiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgaW9tbXVfbGVnYWN5X3VubWFwKHN0cnVjdCBkb21h aW4gKmQsIGRmbl90IGRmbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCitpbnQgaW9tbXVfbGVn YWN5X21hcChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1mbl90IG1mbiwKKyAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp Cit7CisgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzID0gMDsKKyAgICBpbnQgcmMgPSBpb21t dV9tYXAoZCwgZGZuLCBtZm4sIHBhZ2Vfb3JkZXIsIGZsYWdzLCAmZmx1c2hfZmxhZ3MpOworCisg ICAgaWYgKCAhcmMgJiYgIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkKKyAgICAg ICAgcmMgPSBpb21tdV9pb3RsYl9mbHVzaChkLCBkZm4sICgxdSA8PCBwYWdlX29yZGVyKSwgZmx1 c2hfZmxhZ3MpOworCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgaW9tbXVfdW5tYXAoc3RydWN0 IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwKKyAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKQogewogICAgIGNvbnN0IHN0cnVjdCBk b21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwogICAgIHVuc2lnbmVkIGxvbmcgaTsKQEAg LTM1OCw3ICszNzksOCBAQCBpbnQgaW9tbXVfbGVnYWN5X3VubWFwKHN0cnVjdCBkb21haW4gKmQs IGRmbl90IGRmbiwgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCiAKICAgICBmb3IgKCBpID0gMDsg aSA8ICgxdWwgPDwgcGFnZV9vcmRlcik7IGkrKyApCiAgICAgewotICAgICAgICBpbnQgZXJyID0g aGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBkZm5fYWRkKGRmbiwgaSkpOworICAgICAg ICBpbnQgZXJyID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBkZm5fYWRkKGRmbiwg aSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNo X2ZsYWdzKTsKIAogICAgICAgICBpZiAoIGxpa2VseSghZXJyKSApCiAgICAgICAgICAgICBjb250 aW51ZTsKQEAgLTM4MSw2ICs0MDMsMTcgQEAgaW50IGlvbW11X2xlZ2FjeV91bm1hcChzdHJ1Y3Qg ZG9tYWluICpkLCBkZm5fdCBkZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQogICAgIHJldHVy biByYzsKIH0KIAoraW50IGlvbW11X2xlZ2FjeV91bm1hcChzdHJ1Y3QgZG9tYWluICpkLCBkZm5f dCBkZm4sIHVuc2lnbmVkIGludCBwYWdlX29yZGVyKQoreworICAgIHVuc2lnbmVkIGludCBmbHVz aF9mbGFncyA9IDA7CisgICAgaW50IHJjID0gaW9tbXVfdW5tYXAoZCwgZGZuLCBwYWdlX29yZGVy LCAmZmx1c2hfZmxhZ3MpOworCisgICAgaWYgKCAhcmMgJiYgIXRoaXNfY3B1KGlvbW11X2RvbnRf Zmx1c2hfaW90bGIpICkKKyAgICAgICAgcmMgPSBpb21tdV9pb3RsYl9mbHVzaChkLCBkZm4sICgx dSA8PCBwYWdlX29yZGVyKSwgZmx1c2hfZmxhZ3MpOworCisgICAgcmV0dXJuIHJjOworfQorCiBp bnQgaW9tbXVfbG9va3VwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5fdCAq bWZuLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmxhZ3MpCiB7CkBAIC00 MDksMjUgKzQ0MiwyNiBAQCBzdGF0aWMgdm9pZCBpb21tdV9mcmVlX3BhZ2V0YWJsZXModW5zaWdu ZWQgbG9uZyB1bnVzZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19jeWNs ZShzbXBfcHJvY2Vzc29yX2lkKCksICZjcHVfb25saW5lX21hcCkpOwogfQogCi1pbnQgaW9tbXVf aW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCB1bnNpZ25lZCBpbnQgcGFn ZV9jb3VudCkKK2ludCBpb21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBk Zm4sIHVuc2lnbmVkIGludCBwYWdlX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBmbHVzaF9mbGFncykKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluX2lvbW11ICpo ZCA9IGRvbV9pb21tdShkKTsKICAgICBpbnQgcmM7CiAKICAgICBpZiAoICFpb21tdV9lbmFibGVk IHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8Ci0gICAgICAgICAhaGQtPnBsYXRmb3JtX29wcy0+aW90 bGJfZmx1c2ggfHwgIXBhZ2VfY291bnQgKQorICAgICAgICAgIWhkLT5wbGF0Zm9ybV9vcHMtPmlv dGxiX2ZsdXNoIHx8ICFwYWdlX2NvdW50IHx8ICFmbHVzaF9mbGFncyApCiAgICAgICAgIHJldHVy biAwOwogCiAgICAgaWYgKCBkZm5fZXEoZGZuLCBJTlZBTElEX0RGTikgKQogICAgICAgICByZXR1 cm4gLUVJTlZBTDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+aW90bGJfZmx1c2goZCwg ZGZuLCBwYWdlX2NvdW50KTsKKyAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNo KGQsIGRmbiwgcGFnZV9jb3VudCwgZmx1c2hfZmxhZ3MpOwogICAgIGlmICggdW5saWtlbHkocmMp ICkKICAgICB7CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3Jh dGVsaW1pdCgpICkKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCi0gICAgICAgICAgICAg ICAgICAgImQlZDogSU9NTVUgSU9UTEIgZmx1c2ggZmFpbGVkOiAlZCwgZGZuICUiUFJJX2RmbiIs IHBhZ2UgY291bnQgJXVcbiIsCi0gICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywg ZGZuX3goZGZuKSwgcGFnZV9jb3VudCk7CisgICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUg SU9UTEIgZmx1c2ggZmFpbGVkOiAlZCwgZGZuICUiUFJJX2RmbiIsIHBhZ2UgY291bnQgJXUgZmxh Z3MgJXhcbiIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywgZGZuX3goZGZu KSwgcGFnZV9jb3VudCwgZmx1c2hfZmxhZ3MpOwogCiAgICAgICAgIGlmICggIWlzX2hhcmR3YXJl X2RvbWFpbihkKSApCiAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CkBAIC00MzYsMTQgKzQ3 MCwxOSBAQCBpbnQgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZu LCB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCkKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBpb21t dV9pb3RsYl9mbHVzaF9hbGwoc3RydWN0IGRvbWFpbiAqZCkKK2ludCBpb21tdV9pb3RsYl9mbHVz aF9hbGwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzKQogewogICAg IGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwogICAgIGludCBy YzsKIAotICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgfHwgIWhk LT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoX2FsbCApCisgICAgaWYgKCAhaW9tbXVfZW5hYmxl ZCB8fCAhaGQtPnBsYXRmb3JtX29wcyB8fAorICAgICAgICAgIWhkLT5wbGF0Zm9ybV9vcHMtPmlv dGxiX2ZsdXNoX2FsbCB8fCAhZmx1c2hfZmxhZ3MgKQogICAgICAgICByZXR1cm4gMDsKIAorICAg IC8qCisgICAgICogVGhlIG9wZXJhdGlvbiBkb2VzIGEgZnVsbCBmbHVzaCBzbyB3ZSBkb24ndCBu ZWVkIHRvIHBhc3MgdGhlCisgICAgICogZmx1c2hfZmxhZ3MgaW4uCisgICAgICovCiAgICAgcmMg PSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaF9hbGwoZCk7CiAgICAgaWYgKCB1bmxpa2Vs eShyYykgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKaW5kZXggZDJmYTVl MmIyNS4uNTBhMGUyNTIyNCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKQEAgLTYz MywxMSArNjMzLDE0IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxi KHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKIAogc3RhdGljIGludCBfX211c3RfY2hlY2sg aW9tbXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbl90IGRmbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2Nv dW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHBhZ2VfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MpCiB7CiAgICAgQVNTRVJUKHBh Z2VfY291bnQgJiYgIWRmbl9lcShkZm4sIElOVkFMSURfREZOKSk7CisgICAgQVNTRVJUKGZsdXNo X2ZsYWdzKTsKIAotICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBkZm4sIDEsIHBhZ2Vf Y291bnQpOworICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBkZm4sIGZsdXNoX2ZsYWdz ICYgSU9NTVVfRkxVU0hGX21vZGlmaWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWdlX2NvdW50KTsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90 bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCkBAIC02NDYsNyArNjQ5LDggQEAgc3RhdGljIGludCBf X211c3RfY2hlY2sgaW9tbXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpCiB9CiAK IC8qIGNsZWFyIG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAqLwotc3RhdGljIGludCBfX211c3RfY2hl Y2sgZG1hX3B0ZV9jbGVhcl9vbmUoc3RydWN0IGRvbWFpbiAqZG9tYWluLCB1NjQgYWRkcikKK3N0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGRtYV9wdGVfY2xlYXJfb25lKHN0cnVjdCBkb21haW4gKmRv bWFpbiwgdTY0IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKQogewogICAgIHN0cnVjdCBkb21haW5faW9tbXUg KmhkID0gZG9tX2lvbW11KGRvbWFpbik7CiAgICAgc3RydWN0IGRtYV9wdGUgKnBhZ2UgPSBOVUxM LCAqcHRlID0gTlVMTDsKQEAgLTY3MywxMiArNjc3LDExIEBAIHN0YXRpYyBpbnQgX19tdXN0X2No ZWNrIGRtYV9wdGVfY2xlYXJfb25lKHN0cnVjdCBkb21haW4gKmRvbWFpbiwgdTY0IGFkZHIpCiAg ICAgfQogCiAgICAgZG1hX2NsZWFyX3B0ZSgqcHRlKTsKKyAgICAqZmx1c2hfZmxhZ3MgfD0gSU9N TVVfRkxVU0hGX21vZGlmaWVkOworCiAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdf bG9jayk7CiAgICAgaW9tbXVfZmx1c2hfY2FjaGVfZW50cnkocHRlLCBzaXplb2Yoc3RydWN0IGRt YV9wdGUpKTsKIAotICAgIGlmICggIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90bGIpICkK LSAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wYWdlcyhkb21haW4sIGRhZGRyX3RvX2Rm bihhZGRyKSwgMSk7Ci0KICAgICB1bm1hcF92dGRfZG9tYWluX3BhZ2UocGFnZSk7CiAKICAgICBy ZXR1cm4gcmM7CkBAIC0xNzczLDkgKzE3NzYsOSBAQCBzdGF0aWMgdm9pZCBpb21tdV9kb21haW5f dGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCkKICAgICBzcGluX3VubG9jaygmaGQtPmFyY2gubWFw cGluZ19sb2NrKTsKIH0KIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFw X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRmbl90IGRmbiwgbWZuX3QgbWZuLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQorc3RhdGljIGludCBf X211c3RfY2hlY2sgaW50ZWxfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3Qg ZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3Qg bWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKQogewogICAgIHN0cnVjdCBk b21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwogICAgIHN0cnVjdCBkbWFfcHRlICpwYWdl LCAqcHRlLCBvbGQsIG5ldyA9IHt9OwpAQCAtMTgyNSwxNCArMTgyOCwxNSBAQCBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogICAg IHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwogICAgIHVubWFwX3Z0ZF9kb21h aW5fcGFnZShwYWdlKTsKIAotICAgIGlmICggIXRoaXNfY3B1KGlvbW11X2RvbnRfZmx1c2hfaW90 bGIpICkKLSAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYihkLCBkZm4sIGRtYV9wdGVfcHJl c2VudChvbGQpLCAxKTsKKyAgICAqZmx1c2hfZmxhZ3MgfD0gSU9NTVVfRkxVU0hGX2FkZGVkOwor ICAgIGlmICggZG1hX3B0ZV9wcmVzZW50KG9sZCkgKQorICAgICAgICAqZmx1c2hfZmxhZ3MgfD0g SU9NTVVfRkxVU0hGX21vZGlmaWVkOwogCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbl90IGRmbikK K3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVsX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRv bWFpbiAqZCwgZGZuX3QgZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKQogewogICAgIC8qIERvIG5vdGhp bmcgaWYgVlQtZCBzaGFyZXMgRVBUIHBhZ2UgdGFibGUgKi8KICAgICBpZiAoIGlvbW11X3VzZV9o YXBfcHQoZCkgKQpAQCAtMTg0Miw3ICsxODQ2LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sg aW50ZWxfaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogICAgIGlmICggaW9tbXVf aHdkb21fcGFzc3Rocm91Z2ggJiYgaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgcmV0 dXJuIDA7CiAKLSAgICByZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwgZGZuX3RvX2RhZGRyKGRm bikpOworICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29uZShkLCBkZm5fdG9fZGFkZHIoZGZuKSwg Zmx1c2hfZmxhZ3MpOwogfQogCiBzdGF0aWMgaW50IGludGVsX2lvbW11X2xvb2t1cF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZuX3QgKm1mbiwKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv eDg2L2lvbW11LmMKaW5kZXggYjEyMjg5YTE4Zi4uYjM2YzQ1YzBmMSAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gveDg2L2lvbW11LmMKQEAgLTQ2LDExICs0Niw5IEBAIGludCBfX2luaXQgaW9tbXVfc2V0 dXBfaHBldF9tc2koc3RydWN0IG1zaV9kZXNjICptc2kpCiAKIGludCBhcmNoX2lvbW11X3BvcHVs YXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgZG9t YWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdl OwogICAgIGludCByYyA9IDAsIG4gPSAwOwogCi0gICAgdGhpc19jcHUoaW9tbXVfZG9udF9mbHVz aF9pb3RsYikgPSAxOwogICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKIAogICAg IGlmICggdW5saWtlbHkoZC0+aXNfZHlpbmcpICkKQEAgLTYzLDE0ICs2MSwxNSBAQCBpbnQgYXJj aF9pb21tdV9wb3B1bGF0ZV9wYWdlX3RhYmxlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgIHsK ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbWZuX3gocGFnZV90b19tZm4ocGFnZSkp OwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5fdG9fZ21mbihkLCBtZm4pOwor ICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzID0gMDsKIAogICAgICAgICAgICAg aWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwog ICAgICAgICAgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdmbikpOwotICAgICAgICAgICAgICAg IHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgX2RmbihnZm4pLCBfbWZuKG1mbiks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT01NVUZf cmVhZGFibGUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9NTVVGX3dyaXRhYmxlKTsKKyAgICAgICAgICAgICAgICByYyA9IGlvbW11X21hcChkLCBf ZGZuKGdmbiksIF9tZm4obWZuKSwgUEFHRV9PUkRFUl80SywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmZsdXNoX2ZsYWdzKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgewpAQCAtMTA0LDEwICsxMDMsMTQgQEAgaW50 IGFyY2hfaW9tbXVfcG9wdWxhdGVfcGFnZV90YWJsZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIH0K IAogICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwotICAgIHRoaXNfY3B1KGlv bW11X2RvbnRfZmx1c2hfaW90bGIpID0gMDsKIAogICAgIGlmICggIXJjICkKLSAgICAgICAgcmMg PSBpb21tdV9pb3RsYl9mbHVzaF9hbGwoZCk7CisgICAgICAgIC8qCisgICAgICAgICAqIGZsdXNo X2ZsYWdzIGFyZSBub3QgdHJhY2tlZCBhY3Jvc3MgaHlwZXJjYWxsIHByZS1lbXB0aW9uIHNvCisg ICAgICAgICAqIGFzc3VtZSBhIGZ1bGwgZmx1c2ggaXMgbmVjZXNzYXJ5LgorICAgICAgICAgKi8K KyAgICAgICAgcmMgPSBpb21tdV9pb3RsYl9mbHVzaF9hbGwoCisgICAgICAgICAgICBkLCBJT01N VV9GTFVTSEZfYWRkZWQgfCBJT01NVV9GTFVTSEZfbW9kaWZpZWQpOwogCiAgICAgaWYgKCByYyAm JiByYyAhPSAtRVJFU1RBUlQgKQogICAgICAgICBpb21tdV90ZWFyZG93bihkKTsKQEAgLTIwNyw2 ICsyMTAsNyBAQCBzdGF0aWMgYm9vbCBfX2h3ZG9tX2luaXQgaHdkb21faW9tbXVfbWFwKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsCiB2b2lkIF9faHdkb21faW5pdCBhcmNoX2lvbW11X2h3ZG9tX2lu aXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGksIHRvcCwgbWF4X3Bm bjsKKyAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MgPSAwOwogCiAgICAgQlVHX09OKCFpc19o YXJkd2FyZV9kb21haW4oZCkpOwogCkBAIC0yNDEsOCArMjQ1LDEwIEBAIHZvaWQgX19od2RvbV9p bml0IGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpZiAo IHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApCiAgICAgICAgICAgICByYyA9IHNldF9pZGVudGl0 eV9wMm1fZW50cnkoZCwgcGZuLCBwMm1fYWNjZXNzX3J3LCAwKTsKICAgICAgICAgZWxzZQotICAg ICAgICAgICAgcmMgPSBpb21tdV9sZWdhY3lfbWFwKGQsIF9kZm4ocGZuKSwgX21mbihwZm4pLCBQ QUdFX09SREVSXzRLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9y ZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSk7CisgICAgICAgICAgICByYyA9IGlvbW11X21hcChk LCBfZGZuKHBmbiksIF9tZm4ocGZuKSwgUEFHRV9PUkRFUl80SywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICZmbHVzaF9mbGFncyk7CisKICAgICAgICAgaWYgKCByYyApCiAgICAg ICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIiBkJWQ6IElPTU1VIG1hcHBpbmcgZmFpbGVk OiAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjKTsKQEAgLTI1MCw2 ICsyNTYsMTAgQEAgdm9pZCBfX2h3ZG9tX2luaXQgYXJjaF9pb21tdV9od2RvbV9pbml0KHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgIGlmICghKGkgJiAweGZmZmZmKSkKICAgICAgICAgICAgIHBy b2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOwogICAgIH0KKworICAgIC8qIFVzZSBpZiB0byBhdm9p ZCBjb21waWxlciB3YXJuaW5nICovCisgICAgaWYgKCBpb21tdV9pb3RsYl9mbHVzaF9hbGwoZCwg Zmx1c2hfZmxhZ3MpICkKKyAgICAgICAgcmV0dXJuOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vc3ZtL2FtZC1pb21tdS1wcm90by5oCmluZGV4IDg4NzE1MzI5Y2EuLmM1Njk3 NTY1ZDYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hbWQtaW9tbXUt cHJvdG8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYW1kLWlvbW11LXByb3Rv LmgKQEAgLTUzLDE1ICs1MywxOCBAQCBpbnQgYW1kX2lvbW11X3VwZGF0ZV9pdnJzX21hcHBpbmdf YWNwaSh2b2lkKTsKIAogLyogbWFwcGluZyBmdW5jdGlvbnMgKi8KIGludCBfX211c3RfY2hlY2sg YW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1mbiwgdW5zaWduZWQgaW50IGZsYWdz KTsKLWludCBfX211c3RfY2hlY2sgYW1kX2lvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAq ZCwgZGZuX3QgZGZuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90 IG1mbiwgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50ICpmbHVzaF9mbGFncyk7CitpbnQgX19tdXN0X2NoZWNrIGFtZF9p b21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpmbHVzaF9mbGFncyk7CiB1 aW50NjRfdCBhbWRfaW9tbXVfZ2V0X2FkZHJlc3NfZnJvbV9wdGUodm9pZCAqZW50cnkpOwogaW50 IF9fbXVzdF9jaGVjayBhbWRfaW9tbXVfYWxsb2Nfcm9vdChzdHJ1Y3QgZG9tYWluX2lvbW11ICpo ZCk7CiBpbnQgYW1kX2lvbW11X3Jlc2VydmVfZG9tYWluX3VuaXR5X21hcChzdHJ1Y3QgZG9tYWlu ICpkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90 IHBoeXNfYWRkciwgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGl3LCBpbnQgaXIpOwogaW50IF9fbXVzdF9jaGVjayBhbWRfaW9t bXVfZmx1c2hfaW90bGJfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2Vf Y291bnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHBhZ2VfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MpOwogaW50IF9fbXVzdF9jaGVjayBh bWRfaW9tbXVfZmx1c2hfaW90bGJfYWxsKHN0cnVjdCBkb21haW4gKmQpOwogCiAvKiBTaGFyZSBw Mm0gdGFibGUgd2l0aCBpb21tdSAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11 LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCAxZjg3NWFhMzI4Li5jZGM4MDIxY2Jk IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vaW9tbXUuaApAQCAtOTIsNiArOTIsMzEgQEAgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1Y3Qg ZG9tYWluICpkKTsKICNkZWZpbmUgX0lPTU1VRl93cml0YWJsZSAxCiAjZGVmaW5lIElPTU1VRl93 cml0YWJsZSAgKDF1PDxfSU9NTVVGX3dyaXRhYmxlKQogCisvKgorICogZmx1c2hfZmxhZ3M6Cisg KgorICogSU9NTVVfRkxVU0hGX2FkZGVkIC0+IEEgbmV3ICdwcmVzZW50JyBQVEUgaGFzIGJlZW4g aW5zZXJ0ZWQuCisgKiBJT01NVV9GTFVTSEZfbW9kaWZpZWQgLT4gQW4gZXhpc3RpbmcgJ3ByZXNl bnQnIFBURSBoYXMgYmVlbiBtb2RpZmllZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICh3 aGV0aGVyIHRoZSBuZXcgUFRFIHZhbHVlIGlzICdwcmVzZW50JyBvciBub3QpLgorICoKKyAqIFRo ZXNlIGZsYWdzIGFyZSBwYXNzZWQgYmFjayBmcm9tIG1hcC91bm1hcCBvcGVyYXRpb25zIGFuZCBw YXNzZWQgaW50bworICogZmx1c2ggb3BlcmF0aW9ucy4KKyAqLworZW51bQoreworICAgIF9JT01N VV9GTFVTSEZfYWRkZWQsCisgICAgX0lPTU1VX0ZMVVNIRl9tb2RpZmllZCwKK307CisjZGVmaW5l IElPTU1VX0ZMVVNIRl9hZGRlZCAoMXUgPDwgX0lPTU1VX0ZMVVNIRl9hZGRlZCkKKyNkZWZpbmUg SU9NTVVfRkxVU0hGX21vZGlmaWVkICgxdSA8PCBfSU9NTVVfRkxVU0hGX21vZGlmaWVkKQorCitp bnQgX19tdXN0X2NoZWNrIGlvbW11X21hcChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1m bl90IG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29y ZGVyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgKmZsdXNoX2ZsYWdzKTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfdW5tYXAoc3Ry dWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50ICpmbHVzaF9mbGFncyk7CisKIGludCBfX211c3RfY2hlY2sgaW9tbXVfbGVnYWN5 X21hcChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIG1mbl90IG1mbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpAQCAtMTAxLDYg KzEyNiwxMiBAQCBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2xlZ2FjeV91bm1hcChzdHJ1Y3QgZG9t YWluICpkLCBkZm5fdCBkZm4sCiBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2xvb2t1cF9wYWdlKHN0 cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZuX3QgKm1mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpmbGFncyk7CiAKK2ludCBfX211c3RfY2hl Y2sgaW9tbXVfaW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdz KTsKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4g KmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg Zmx1c2hfZmxhZ3MpOworCiBlbnVtIGlvbW11X2ZlYXR1cmUKIHsKICAgICBJT01NVV9GRUFUX0NP SEVSRU5UX1dBTEssCkBAIC0xNzgsOCArMjA5LDEwIEBAIHN0cnVjdCBpb21tdV9vcHMgewogICAg ICAqIG90aGVyIGJ5IHRoZSBjYWxsZXIgaW4gb3JkZXIgdG8gaGF2ZSBtZWFuaW5nZnVsIHJlc3Vs dHMuCiAgICAgICovCiAgICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShzdHJ1Y3QgZG9t YWluICpkLCBkZm5fdCBkZm4sIG1mbl90IG1mbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBmbGFncyk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFw X3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKTsKKyAgICBpbnQgX19tdXN0X2No ZWNrICgqdW5tYXBfcGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmZsdXNoX2ZsYWdzKTsKICAg ICBpbnQgX19tdXN0X2NoZWNrICgqbG9va3VwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIGRmbl90 IGRmbiwgbWZuX3QgKm1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCAqZmxhZ3MpOwogCkBAIC0xOTQsNyArMjI3LDggQEAgc3RydWN0IGlvbW11X29w cyB7CiAgICAgdm9pZCAoKnNoYXJlX3AybSkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgdm9pZCAo KmNyYXNoX3NodXRkb3duKSh2b2lkKTsKICAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1 c2gpKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzKTsKICAgICBp bnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2hfYWxsKShzdHJ1Y3QgZG9tYWluICpkKTsKICAg ICBpbnQgKCpnZXRfcmVzZXJ2ZWRfZGV2aWNlX21lbW9yeSkoaW9tbXVfZ3JkbV90ICosIHZvaWQg Kik7CiAgICAgdm9pZCAoKmR1bXBfcDJtX3RhYmxlKShzdHJ1Y3QgZG9tYWluICpkKTsKQEAgLTI1 MywxMCArMjg3LDYgQEAgaW50IGlvbW11X2RvX3BjaV9kb21jdGwoc3RydWN0IHhlbl9kb21jdGwg Kiwgc3RydWN0IGRvbWFpbiAqZCwKIGludCBpb21tdV9kb19kb21jdGwoc3RydWN0IHhlbl9kb21j dGwgKiwgc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpKTsKIAotaW50IF9fbXVzdF9jaGVjayBpb21tdV9pb3Rs Yl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KTsKLWludCBfX211c3RfY2hl Y2sgaW9tbXVfaW90bGJfZmx1c2hfYWxsKHN0cnVjdCBkb21haW4gKmQpOwotCiB2b2lkIGlvbW11 X2Rldl9pb3RsYl9mbHVzaF90aW1lb3V0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwY2lfZGV2 ICpwZGV2KTsKIAogLyoKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=