From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v11 1/3] xen: make grant resource limits per domain Date: Thu, 28 Sep 2017 12:02:24 +0200 Message-ID: <20170928100226.15280-2-jgross@suse.com> References: <20170928100226.15280-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dxVeK-0006pl-FI for xen-devel@lists.xenproject.org; Thu, 28 Sep 2017 10:02:32 +0000 In-Reply-To: <20170928100226.15280-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiB1c2luZyB0aGUgc2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50 IHRhYmxlcyAobWF4LgpudW1iZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0 cmFjayBmcmFtZXMpIGZvciBhbGwgZG9tYWlucwptYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWlu LiBTZXQgdGhvc2UgcGVyLWRvbWFpbiBsaW1pdHMgaW4KZ3JhbnRfdGFibGVfc2V0X2xpbWl0cygp LiBUaGUgZ2xvYmFsIHNldHRpbmdzIGFyZSBzZXJ2aW5nIGFzIGFuIHVwcGVyCmJvdW5kYXJ5IG5v dyB3aGljaCBtdXN0IG5vdCBiZSBleGNlZWRlZCBieSBhIHBlci1kb21haW4gdmFsdWUuIFRoZQpk ZWZhdWx0IG9mIG1heF9ncmFudF9mcmFtZXMgaXMgc2V0IHRvIHRoZSBtYXhpbXVtIGRlZmF1bHQg eGwgd2lsbCB1c2UuCgpXaGlsZSB1cGRhdGluZyB0aGUgc2VtYW50aWNzIG9mIHRoZSBib290IHBh cmFtZXRlcnMgcmVtb3ZlIHRoZQpkb2N1bWVudGF0aW9uIG9mIHRoZSBubyBsb25nZXIgZXhpc3Rp bmcgZ250dGFiX21heF9ucl9mcmFtZXMgYW5kCmNvcnJlY3QgdGhlIGRlZmF1bHQgZ250dGFiX21h eF9tYXB0cmFja19mcmFtZXMgdXNlcy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpn cm9zc0BzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4gW25vbi1BUk0gcGFydHNdCi0tLQpWMTE6Ci0gYWRkIGNvbW1lbnQgaW4gaW5jbHVkZS9hc20t YXJtL2dyYW50X3RhYmxlLmggKEp1bGllbiBHcmFsbCkKClYxMDoKLSBsb3dlciBJTklUSUFMX05S X0dSQU5UX0ZSQU1FUyB2YWx1ZSB0byAxCi0gcmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIHZhcmlh YmxlcyAoSmFuIEJldWxpY2gpCi0gc3RyZWFtIGxpbmVkIG1lc3NhZ2VzIChKYW4gQmV1bGljaCkK LSBjb3JyZWN0ZWQgc2V0dGluZyBvZiBnbnR0YWJfc2l6ZSBvbiBBUk0KClY5OgotIGFkZCBjYXBz IGZvciBwZXItZG9tYWluIGxpbWl0cyAoSmFuIEJldWxpY2gpCi0gc29tZSBlcnJvciBtZXNzYWdl cyBlbmhhbmNlZCAoSmFuIEJldWxpY2gpCi0gYWRqdXN0ZWQgc29tZSB0eXBlcyAoSmFuIEJldWxp Y2gpCi0gbWVyZ2UgcGFydHMgb2YgKGZvcm1lcikgcGF0Y2ggMTQgaW50byB0aGlzIG9uZQotIG1h a2UgcGFyYW1ldGVycyBjaGFuZ2VhYmxlIGF0IHJ1bnRpbWUKLSBsaW1pdCBzaXplIG9mIGRvbTAn cyBncmFudCB0YWJsZSBvbiBBUk0KLSBzZXQgZGVmYXVsdCBtYXhfZ3JhbnRfZnJhbWVzIHRvIDY0 CgpWNjoKLSBzZXZlcmFsIGNoYW5nZXMgZHVlIHRvIG5ldyBwYXRjaCBvcmRlcgoKVjM6Ci0gY29y cmVjdCBlcnJvciBtZXNzYWdlIChQYXVsIER1cnJhbnQpCi0tLQogZG9jcy9taXNjL3hlbi1jb21t YW5kLWxpbmUubWFya2Rvd24gfCAgMjUgKysrLS0tCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxk LmMgICAgICAgICB8ICAgNiArLQogeGVuL2NvbW1vbi9jb21wYXQvZ3JhbnRfdGFibGUuYyAgICAg fCAgMzEgKystLS0tLQogeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgICAgfCAxNTYg KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJt L2dyYW50X3RhYmxlLmggICB8ICAyMCArKysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90 YWJsZS5oICAgfCAgIDcgKy0KIHhlbi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oICAgICAgIHwg ICA1ICstCiA3IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9k b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCA5Nzk3YzhkYjJkLi45YjZj ZDhlOWQwIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgor KysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtODc1LDI3ICs4NzUs MjggQEAgU3BlY2lmeSB3aGljaCBjb25zb2xlIGdkYnN0dWIgc2hvdWxkIHVzZS4gU2VlICoqY29u c29sZSoqLgogIyMjIGdudHRhYlxfbWF4XF9mcmFtZXMKID4gYD0gPGludGVnZXI+YAogCi0+IERl ZmF1bHQ6IGAzMmAKKz4gRGVmYXVsdDogYDY0YAorCis+IENhbiBiZSBtb2RpZmllZCBhdCBydW50 aW1lCiAKIFNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB3aGljaCBhbnkgZG9t YWluIG1heSB1c2UgYXMgcGFydAotb2YgaXRzIGdyYW50IHRhYmxlLgorb2YgaXRzIGdyYW50IHRh YmxlLiBUaGlzIHZhbHVlIGlzIGFuIHVwcGVyIGJvdW5kYXJ5IG9mIHRoZSBwZXItZG9tYWluCit2 YWx1ZSBzZXR0YWJsZSB2aWEgWGVuIHRvb2xzLgorCitEb20wIGlzIHVzaW5nIHRoaXMgdmFsdWUg Zm9yIHNpemluZyBpdHMgZ3JhbnQgdGFibGUuCiAKICMjIyBnbnR0YWJcX21heFxfbWFwdHJhY2tc X2ZyYW1lcwogPiBgPSA8aW50ZWdlcj5gCiAKLT4gRGVmYXVsdDogYDggKiBnbnR0YWJfbWF4X2Zy YW1lc2AKLQotU3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIHVzZSBhcyBw YXJ0IG9mIGEgZG9tYWlucwotbWFwdHJhY2sgYXJyYXkuCis+IERlZmF1bHQ6IGAxMDI0YAogCi0j IyMgZ250dGFiXF9tYXhcX25yXF9mcmFtZXMKLT4gYD0gPGludGVnZXI+YAorPiBDYW4gYmUgbW9k aWZpZWQgYXQgcnVudGltZQogCi0qRGVwcmVjYXRlZCoKLVVzZSAqKmdudHRhYlxfbWF4XF9mcmFt ZXMqKiBhbmQgKipnbnR0YWJcX21heFxfbWFwdHJhY2tcX2ZyYW1lcyoqIGluc3RlYWQuCitTcGVj aWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG8gdXNlIGFzIHBhcnQgb2YgYSBkb21h aW5zCittYXB0cmFjayBhcnJheS4gVGhpcyB2YWx1ZSBpcyBhbiB1cHBlciBib3VuZGFyeSBvZiB0 aGUgcGVyLWRvbWFpbgordmFsdWUgc2V0dGFibGUgdmlhIFhlbiB0b29scy4KIAotU3BlY2lmeSB0 aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHBlciBncmFudCB0YWJsZSBvcGVyYXRpb24gYW5k IHRoZQotbWF4aW11bSBudW1iZXIgb2YgbWFwdHJhY2sgZnJhbWVzIGRvbWFpbi4KK0RvbTAgaXMg dXNpbmcgdGhpcyB2YWx1ZSBmb3Igc2l6aW5nIGl0cyBtYXB0cmFjayB0YWJsZS4KIAogIyMjIGd1 ZXN0XF9sb2dsdmwKID4gYD0gPGxldmVsPlsvPHJhdGUtbGltaXRlZCBsZXZlbD5dYCB3aGVyZSBs ZXZlbCBpcyBgbm9uZSB8IGVycm9yIHwgd2FybmluZyB8IGluZm8gfCBkZWJ1ZyB8IGFsbGAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21h aW5fYnVpbGQuYwppbmRleCBjMzQyMzhlYzFiLi4zNzIzZGMzZjc4IDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5j CkBAIC0yMDk1LDExICsyMDk1LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGZpbmRfZ250dGFiX3Jl Z2lvbihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAqIGVub3VnaCBzcGFjZSBmb3IgYSBsYXJnZSBn cmFudCB0YWJsZQogICAgICAqLwogICAgIGtpbmZvLT5nbnR0YWJfc3RhcnQgPSBfX3BhKF9zdGV4 dCk7Ci0gICAga2luZm8tPmdudHRhYl9zaXplID0gKF9ldGV4dCAtIF9zdGV4dCkgJiBQQUdFX01B U0s7Ci0KLSAgICAvKiBNYWtlIHN1cmUgdGhlIGdyYW50IHRhYmxlIHdpbGwgZml0IGluIHRoZSBy ZWdpb24gKi8KLSAgICBpZiAoIChraW5mby0+Z250dGFiX3NpemUgPj4gUEFHRV9TSElGVCkgPCBt YXhfZ3JhbnRfZnJhbWVzICkKLSAgICAgICAgcGFuaWMoIkNhbm5vdCBmaW5kIGEgc3BhY2UgZm9y IHRoZSBncmFudCB0YWJsZSByZWdpb25cbiIpOworICAgIGtpbmZvLT5nbnR0YWJfc2l6ZSA9IGdu dHRhYl9kb20wX2ZyYW1lcygpIDw8IFBBR0VfU0hJRlQ7CiAKICNpZmRlZiBDT05GSUdfQVJNXzMy CiAgICAgLyoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vY29tcGF0L2dyYW50X3RhYmxlLmMgYi94 ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJsZS5jCmluZGV4IGNjZTNmZjBiOWEuLmZmMWQ2Nzhm MDEgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vY29tcGF0L2dyYW50X3RhYmxlLmMKKysrIGIveGVu L2NvbW1vbi9jb21wYXQvZ3JhbnRfdGFibGUuYwpAQCAtMTU3LDIxICsxNTcsMTQgQEAgaW50IGNv bXBhdF9ncmFudF90YWJsZV9vcCh1bnNpZ25lZCBpbnQgY21kLAogICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2UgPQogICAgICAgICAgICAgICAg ICAgICAoQ09NUEFUX0FSR19YTEFUX1NJWkUgLSBzaXplb2YoKm5hdC5zZXR1cCkpIC8KICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKCpuYXQuc2V0dXAtPmZyYW1lX2xpc3QucCk7Ci0gICAgICAg ICAgICAgICAgaWYgKCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2UgPCBtYXhfZ3JhbnRfZnJh bWVzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGdkcHJpbnRrKFhF TkxPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X2dyYW50X2Zy YW1lcyBpcyB0b28gbGFyZ2UgKCV1LCV1KVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWF4X2dyYW50X2ZyYW1lcywgbWF4X2ZyYW1lX2xpc3Rfc2l6ZV9pbl9wYWdlKTsKLSAgICAg ICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgeworCiAjZGVmaW5lIFhMQVRfZ250dGFiX3Nl dHVwX3RhYmxlX0hORExfZnJhbWVfbGlzdChfZF8sIF9zXykgXAotICAgICAgICAgICAgICAgICAg ICBzZXRfeGVuX2d1ZXN0X2hhbmRsZSgoX2RfKS0+ZnJhbWVfbGlzdCwgKHVuc2lnbmVkIGxvbmcg KikobmF0LnNldHVwICsgMSkpCi0gICAgICAgICAgICAgICAgICAgIFhMQVRfZ250dGFiX3NldHVw X3RhYmxlKG5hdC5zZXR1cCwgJmNtcC5zZXR1cCk7CisgICAgICAgICAgICAgICAgc2V0X3hlbl9n dWVzdF9oYW5kbGUoKF9kXyktPmZyYW1lX2xpc3QsICh1bnNpZ25lZCBsb25nICopKG5hdC5zZXR1 cCArIDEpKQorICAgICAgICAgICAgICAgIFhMQVRfZ250dGFiX3NldHVwX3RhYmxlKG5hdC5zZXR1 cCwgJmNtcC5zZXR1cCk7CiAjdW5kZWYgWExBVF9nbnR0YWJfc2V0dXBfdGFibGVfSE5ETF9mcmFt ZV9saXN0Ci0gICAgICAgICAgICAgICAgICAgIHJjID0gZ250dGFiX3NldHVwX3RhYmxlKGd1ZXN0 X2hhbmRsZV9jYXN0KG5hdC51b3AsIGdudHRhYl9zZXR1cF90YWJsZV90KSwgMSk7Ci0gICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJjID0gZ250dGFiX3NldHVwX3RhYmxlKGd1ZXN0 X2hhbmRsZV9jYXN0KG5hdC51b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ250dGFiX3NldHVwX3RhYmxlX3QpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG1heF9mcmFtZV9saXN0X3NpemVfaW5f cGFnZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQocmMgPD0gMCk7CiAgICAg ICAgICAgICBpZiAoIHJjID09IDAgKQpAQCAtMjk0LDE2ICsyODcsNiBAQCBpbnQgY29tcGF0X2dy YW50X3RhYmxlX29wKHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgcmMgPSAtRUZB VUxUOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg aWYgKCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2VzIDwKLSAgICAgICAgICAgICAgICAgZ3Jh bnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSApCi0gICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgImdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykgaXMgdG9v IGxhcmdlICgldSwldSlcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRfdG9fc3Rh dHVzX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBt YXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2VzKTsKLSAgICAgICAgICAgICAgICByYyA9IC1FSU5W QUw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAKICNkZWZpbmUgWExB VF9nbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfSE5ETF9mcmFtZV9saXN0KF9kXywgX3NfKSBcCiAg ICAgICAgICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZSgoX2RfKS0+ZnJhbWVfbGlzdCwgKHVpbnQ2 NF90ICopKG5hdC5nZXRfc3RhdHVzICsgMSkpCkBAIC0zMTIsNyArMjk1LDcgQEAgaW50IGNvbXBh dF9ncmFudF90YWJsZV9vcCh1bnNpZ25lZCBpbnQgY21kLAogCiAgICAgICAgICAgICByYyA9IGdu dHRhYl9nZXRfc3RhdHVzX2ZyYW1lcygKICAgICAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2Fz dChuYXQudW9wLCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCksCi0gICAgICAgICAgICAgICAg Y291bnQpOworICAgICAgICAgICAgICAgIGNvdW50LCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3Bh Z2VzKTsKICAgICAgICAgICAgIGlmICggcmMgPj0gMCApCiAgICAgICAgICAgICB7CiAjZGVmaW5l IFhMQVRfZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX0hORExfZnJhbWVfbGlzdChfZF8sIF9zXykg XApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFu dF90YWJsZS5jCmluZGV4IDcxNzA2ZjVjYmEuLjdjMzI4YjBhNjIgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24vZ3JhbnRfdGFibGUuYworKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTU0 LDYgKzU0LDkgQEAgc3RydWN0IGdyYW50X3RhYmxlIHsKICAgICAgKiB3aGF0IHZlcnNpb24gdG8g dXNlIHlldC4KICAgICAgKi8KICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgZ3RfdmVyc2lvbjsK KyAgICAvKiBSZXNvdXJjZSBsaW1pdHMgb2YgdGhlIGRvbWFpbi4gKi8KKyAgICB1bnNpZ25lZCBp bnQgICAgICAgICAgbWF4X2dyYW50X2ZyYW1lczsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAg bWF4X21hcHRyYWNrX2ZyYW1lczsKICAgICAvKiBUYWJsZSBzaXplLiBOdW1iZXIgb2YgZnJhbWVz IHNoYXJlZCB3aXRoIGd1ZXN0ICovCiAgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG5yX2dyYW50 X2ZyYW1lczsKICAgICAvKiBOdW1iZXIgb2YgZ3JhbnQgc3RhdHVzIGZyYW1lcyBzaGFyZWQgd2l0 aCBndWVzdCAoZm9yIHZlcnNpb24gMikgKi8KQEAgLTc4LDIzICs4MSwxOCBAQCBzdHJ1Y3QgZ3Jh bnRfdGFibGUgewogCiAjaWZuZGVmIERFRkFVTFRfTUFYX05SX0dSQU5UX0ZSQU1FUyAvKiB0byBh bGxvdyBhcmNoIHRvIG92ZXJyaWRlICovCiAvKiBEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiBhIGdy YW50IHRhYmxlLiBbUE9MSUNZXSAqLwotI2RlZmluZSBERUZBVUxUX01BWF9OUl9HUkFOVF9GUkFN RVMgICAzMgorI2RlZmluZSBERUZBVUxUX01BWF9OUl9HUkFOVF9GUkFNRVMgICA2NAogI2VuZGlm CiAKLXVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG1heF9ncmFudF9mcmFtZXM7Ci1pbnRlZ2Vy X3BhcmFtKCJnbnR0YWJfbWF4X2ZyYW1lcyIsIG1heF9ncmFudF9mcmFtZXMpOworc3RhdGljIHVu c2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG1heF9ncmFudF9mcmFtZXMgPQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX01BWF9OUl9HUkFOVF9G UkFNRVM7CitpbnRlZ2VyX3J1bnRpbWVfcGFyYW0oImdudHRhYl9tYXhfZnJhbWVzIiwgbWF4X2dy YW50X2ZyYW1lcyk7CiAKLS8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBncmFudCBtYXBwaW5ncyBp cyBkZWZpbmVkIGFzIGEgbXVsdGlwbGllciBvZiB0aGUKLSAqIG1heGltdW0gbnVtYmVyIG9mIGdy YW50IHRhYmxlIGVudHJpZXMuIFRoaXMgZGVmaW5lcyB0aGUgbXVsdGlwbGllciB1c2VkLgotICog UHJldHR5IGFyYml0cmFyeS4gW1BPTElDWV0KLSAqIEFzIGdudHRhYl9tYXhfbnJfZnJhbWVzIGhh cyBiZWVuIGRlcHJlY2F0ZWQsIHRoaXMgbXVsdGlwbGllciBpcyBkZXByZWNhdGVkIHRvby4KLSAq IE5ldyBvcHRpb25zIGFsbG93IHRvIHNldCBtYXhfbWFwdHJhY2tfZnJhbWVzIGFuZAotICogbWFw X2dyYW50X3RhYmxlX2ZyYW1lcyBpbmRlcGVuZGVudGx5LgotICovCiAjZGVmaW5lIERFRkFVTFRf TUFYX01BUFRSQUNLX0ZSQU1FUyAxMDI0CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21v c3RseSBtYXhfbWFwdHJhY2tfZnJhbWVzOwotaW50ZWdlcl9wYXJhbSgiZ250dGFiX21heF9tYXB0 cmFja19mcmFtZXMiLCBtYXhfbWFwdHJhY2tfZnJhbWVzKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQg X19yZWFkX21vc3RseSBtYXhfbWFwdHJhY2tfZnJhbWVzID0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9NQVhfTUFQVFJBQ0tfRlJBTUVTOwor aW50ZWdlcl9ydW50aW1lX3BhcmFtKCJnbnR0YWJfbWF4X21hcHRyYWNrX2ZyYW1lcyIsIG1heF9t YXB0cmFja19mcmFtZXMpOwogCiAvKgogICogTm90ZSB0aGF0IHRoZSB0aHJlZSB2YWx1ZXMgYmVs b3cgYXJlIGVmZmVjdGl2ZWx5IHBhcnQgb2YgdGhlIEFCSSwgZXZlbiBpZgpAQCAtMjkwLDggKzI4 OCw4IEBAIG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhjb25zdCB1bnNpZ25lZCBpbnQg bnVtKQogICAgIHJldHVybiBESVZfUk9VTkRfVVAobnVtICogc2hhX3Blcl9wYWdlLCBBQ0dOVF9Q RVJfUEFHRSk7CiB9CiAKLSNkZWZpbmUgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMgXAotICAg IG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKQorI2RlZmlu ZSBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhndCkgXAorICAgIG51bV9hY3RfZnJhbWVzX2Zy b21fc2hhX2ZyYW1lcygoZ3QpLT5tYXhfZ3JhbnRfZnJhbWVzKQogCiBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludAogbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0 KQpAQCAtNTMwLDcgKzUyOCw3IEBAIGdldF9tYXB0cmFja19oYW5kbGUoCiAgICAgICogb3V0IG9m IG1lbW9yeSwgdHJ5IHN0ZWFsaW5nIGFuIGVudHJ5IGZyb20gYW5vdGhlciBWQ1BVIChpbiBjYXNl IHRoZQogICAgICAqIGd1ZXN0IGlzbid0IG1hcHBpbmcgYWNyb3NzIGl0cyBWQ1BVcyBldmVubHkp LgogICAgICAqLwotICAgIGlmICggbnJfbWFwdHJhY2tfZnJhbWVzKGxndCkgPCBtYXhfbWFwdHJh Y2tfZnJhbWVzICkKKyAgICBpZiAoIG5yX21hcHRyYWNrX2ZyYW1lcyhsZ3QpIDwgbGd0LT5tYXhf bWFwdHJhY2tfZnJhbWVzICkKICAgICAgICAgbmV3X210ID0gYWxsb2NfeGVuaGVhcF9wYWdlKCk7 CiAKICAgICBpZiAoICFuZXdfbXQgKQpAQCAtMTY3Myw3ICsxNjcxLDcgQEAgZ250dGFiX2dyb3df dGFibGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHJlcV9ucl9mcmFtZXMpCiAKICAg ICBpZiAoIHJlcV9ucl9mcmFtZXMgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyApCiAgICAgICAg IHJlcV9ucl9mcmFtZXMgPSBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsKLSAgICBBU1NFUlQocmVx X25yX2ZyYW1lcyA8PSBtYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICBBU1NFUlQocmVxX25yX2ZyYW1l cyA8PSBndC0+bWF4X2dyYW50X2ZyYW1lcyk7CiAKICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywK ICAgICAgICAgICAgICJFeHBhbmRpbmcgZG9tICglZCkgZ3JhbnQgdGFibGUgZnJvbSAoJWQpIHRv ICglZCkgZnJhbWVzLlxuIiwKQEAgLTE3MzAsNyArMTcyOCw4IEBAIGFjdGl2ZV9hbGxvY19mYWls ZWQ6CiB9CiAKIHN0YXRpYyBpbnQKLWdyYW50X3RhYmxlX2luaXQoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IGdyYW50X3RhYmxlICpndCkKK2dyYW50X3RhYmxlX2luaXQoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IGdyYW50X3RhYmxlICpndCwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 IGdyYW50X2ZyYW1lcywgdW5zaWduZWQgaW50IG1hcHRyYWNrX2ZyYW1lcykKIHsKICAgICBpbnQg cmV0OwogCkBAIC0xNzQyLDI1ICsxNzQxLDMxIEBAIGdyYW50X3RhYmxlX2luaXQoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IGdyYW50X3RhYmxlICpndCkKICAgICAgICAgZ290byB1bmxvY2s7CiAg ICAgfQogCisgICAgZ3QtPm1heF9ncmFudF9mcmFtZXMgPSBncmFudF9mcmFtZXM7CisgICAgZ3Qt Pm1heF9tYXB0cmFja19mcmFtZXMgPSBtYXB0cmFja19mcmFtZXM7CisKICAgICAvKiBBY3RpdmUg Z3JhbnQgdGFibGUuICovCiAgICAgZ3QtPmFjdGl2ZSA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IGFj dGl2ZV9ncmFudF9lbnRyeSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9u cl9hY3RpdmVfZ3JhbnRfZnJhbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhndCkpOwogICAgIGlmICggZ3QtPmFjdGl2ZSA9PSBO VUxMICkKICAgICAgICAgZ290byBub19tZW07CiAKICAgICAvKiBUcmFja2luZyBvZiBtYXBwZWQg Zm9yZWlnbiBmcmFtZXMgdGFibGUgKi8KLSAgICBndC0+bWFwdHJhY2sgPSB2emFsbG9jKG1heF9t YXB0cmFja19mcmFtZXMgKiBzaXplb2YoKmd0LT5tYXB0cmFjaykpOwotICAgIGlmICggZ3QtPm1h cHRyYWNrID09IE5VTEwgKQotICAgICAgICBnb3RvIG5vX21lbTsKKyAgICBpZiAoIGd0LT5tYXhf bWFwdHJhY2tfZnJhbWVzICkKKyAgICB7CisgICAgICAgIGd0LT5tYXB0cmFjayA9IHZ6YWxsb2Mo Z3QtPm1heF9tYXB0cmFja19mcmFtZXMgKiBzaXplb2YoKmd0LT5tYXB0cmFjaykpOworICAgICAg ICBpZiAoIGd0LT5tYXB0cmFjayA9PSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gbm9fbWVtOwor ICAgIH0KIAogICAgIC8qIFNoYXJlZCBncmFudCB0YWJsZS4gKi8KLSAgICBndC0+c2hhcmVkX3Jh dyA9IHh6YWxsb2NfYXJyYXkodm9pZCAqLCBtYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICBndC0+c2hh cmVkX3JhdyA9IHh6YWxsb2NfYXJyYXkodm9pZCAqLCBndC0+bWF4X2dyYW50X2ZyYW1lcyk7CiAg ICAgaWYgKCBndC0+c2hhcmVkX3JhdyA9PSBOVUxMICkKICAgICAgICAgZ290byBub19tZW07CiAK ICAgICAvKiBTdGF0dXMgcGFnZXMgZm9yIGdyYW50IHRhYmxlIC0gZm9yIHZlcnNpb24gMiAqLwog ICAgIGd0LT5zdGF0dXMgPSB4emFsbG9jX2FycmF5KGdyYW50X3N0YXR1c190ICosCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhfZ3JhbnRf ZnJhbWVzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRfdG9fc3RhdHVz X2ZyYW1lcyhndC0+bWF4X2dyYW50X2ZyYW1lcykpOwogICAgIGlmICggZ3QtPnN0YXR1cyA9PSBO VUxMICkKICAgICAgICAgZ290byBub19tZW07CiAKQEAgLTE3OTMsNyArMTc5OCw4IEBAIGdyYW50 X3RhYmxlX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGdyYW50X3RhYmxlICpndCkKIAog c3RhdGljIGxvbmcKIGdudHRhYl9zZXR1cF90YWJsZSgKLSAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKGdudHRhYl9zZXR1cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGludCBjb3VudCkKKyAgICBY RU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9zZXR1cF90YWJsZV90KSB1b3AsIHVuc2lnbmVk IGludCBjb3VudCwKKyAgICB1bnNpZ25lZCBpbnQgbGltaXRfbWF4KQogewogICAgIHN0cnVjdCB2 Y3B1ICpjdXJyID0gY3VycmVudDsKICAgICBzdHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIG9wOwpA QCAtMTgwNywxNSArMTgxMyw2IEBAIGdudHRhYl9zZXR1cF90YWJsZSgKICAgICBpZiAoIHVubGlr ZWx5KGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkpICkKICAgICAgICAgcmV0dXJuIC1FRkFV TFQ7CiAKLSAgICBpZiAoIHVubGlrZWx5KG9wLm5yX2ZyYW1lcyA+IG1heF9ncmFudF9mcmFtZXMp ICkKLSAgICB7Ci0gICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiWGVuIG9ubHkgc3VwcG9y dHMgdXAgdG8gJWQgZ3JhbnQtdGFibGUgZnJhbWVzIgotICAgICAgICAgICAgICAgICIgcGVyIGRv bWFpbi5cbiIsCi0gICAgICAgICAgICAgICAgbWF4X2dyYW50X2ZyYW1lcyk7Ci0gICAgICAgIG9w LnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0K LQogICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KG9wLmZyYW1lX2xpc3QsIG9wLm5yX2ZyYW1l cykgKQogICAgICAgICByZXR1cm4gLUVGQVVMVDsKIApAQCAtMTgzNSw2ICsxODMyLDIxIEBAIGdu dHRhYl9zZXR1cF90YWJsZSgKICAgICBndCA9IGQtPmdyYW50X3RhYmxlOwogICAgIGdyYW50X3dy aXRlX2xvY2soZ3QpOwogCisgICAgaWYgKCB1bmxpa2VseShvcC5ucl9mcmFtZXMgPiBndC0+bWF4 X2dyYW50X2ZyYW1lcykgKQorICAgIHsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJk JWQgaXMgbGltaXRlZCB0byAldSBncmFudC10YWJsZSBmcmFtZXMuXG4iLAorICAgICAgICAgICAg ICAgIGQtPmRvbWFpbl9pZCwgZ3QtPm1heF9ncmFudF9mcmFtZXMpOworICAgICAgICBvcC5zdGF0 dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOworICAgICAgICBnb3RvIHVubG9jazsKKyAgICB9Cisg ICAgaWYgKCB1bmxpa2VseShsaW1pdF9tYXggPCBvcC5ucl9mcmFtZXMpICkKKyAgICB7CisgICAg ICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAibnJfZnJhbWVzIGZvciBkJWQgaXMgdG9vIGxh cmdlICgldSwldSlcbiIsCisgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgb3AubnJfZnJh bWVzLCBsaW1pdF9tYXgpOworICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9y OworICAgICAgICBnb3RvIHVubG9jazsKKyAgICB9CisKICAgICBpZiAoIGd0LT5ndF92ZXJzaW9u ID09IDAgKQogICAgICAgICBndC0+Z3RfdmVyc2lvbiA9IDE7CiAKQEAgLTE4NDQsOCArMTg1Niw5 IEBAIGdudHRhYl9zZXR1cF90YWJsZSgKICAgICAgICAgICFnbnR0YWJfZ3Jvd190YWJsZShkLCBv cC5ucl9mcmFtZXMpICkKICAgICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAotICAg ICAgICAgICAgICAgICAiRXhwYW5kIGdyYW50IHRhYmxlIHRvICV1IGZhaWxlZC4gQ3VycmVudDog JXUgTWF4OiAldVxuIiwKLSAgICAgICAgICAgICAgICAgb3AubnJfZnJhbWVzLCBucl9ncmFudF9m cmFtZXMoZ3QpLCBtYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICAgICAgICAgICAgICAgIkV4cGFuZCBn cmFudCB0YWJsZSBvZiBkJWQgdG8gJXUgZmFpbGVkLiBDdXJyZW50OiAldSBNYXg6ICV1XG4iLAor ICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIG9wLm5yX2ZyYW1lcywgbnJfZ3JhbnRfZnJh bWVzKGd0KSwKKyAgICAgICAgICAgICAgICAgZ3QtPm1heF9ncmFudF9mcmFtZXMpOwogICAgICAg ICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgICAgICBnb3RvIHVubG9jazsK ICAgICB9CkBAIC0xODgwLDYgKzE4OTMsNyBAQCBnbnR0YWJfcXVlcnlfc2l6ZSgKIHsKICAgICBz dHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgb3A7CiAgICAgc3RydWN0IGRvbWFpbiAqZDsKKyAgICBz dHJ1Y3QgZ3JhbnRfdGFibGUgKmd0OwogCiAgICAgaWYgKCBjb3VudCAhPSAxICkKICAgICAgICAg cmV0dXJuIC1FSU5WQUw7CkBAIC0xOTAwLDEzICsxOTE0LDE1IEBAIGdudHRhYl9xdWVyeV9zaXpl KAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICBncmFudF9yZWFkX2xvY2soZC0+Z3Jh bnRfdGFibGUpOworICAgIGd0ID0gZC0+Z3JhbnRfdGFibGU7CisKKyAgICBncmFudF9yZWFkX2xv Y2soZ3QpOwogCi0gICAgb3AubnJfZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhkLT5ncmFu dF90YWJsZSk7Ci0gICAgb3AubWF4X25yX2ZyYW1lcyA9IG1heF9ncmFudF9mcmFtZXM7CisgICAg b3AubnJfZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhndCk7CisgICAgb3AubWF4X25yX2Zy YW1lcyA9IGd0LT5tYXhfZ3JhbnRfZnJhbWVzOwogICAgIG9wLnN0YXR1cyAgICAgICAgPSBHTlRT VF9va2F5OwogCi0gICAgZ3JhbnRfcmVhZF91bmxvY2soZC0+Z3JhbnRfdGFibGUpOworICAgIGdy YW50X3JlYWRfdW5sb2NrKGd0KTsKIAogIG91dDoKICAgICBpZiAoIGQgKQpAQCAtMjk4MSw3ICsy OTk3LDcgQEAgZ250dGFiX3NldF92ZXJzaW9uKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oZ250dGFi X3NldF92ZXJzaW9uX3QpIHVvcCkKIAogc3RhdGljIGxvbmcKIGdudHRhYl9nZXRfc3RhdHVzX2Zy YW1lcyhYRU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSB1 b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50KQorICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCwgdW5zaWduZWQgaW50IGxpbWl0X21heCkKIHsK ICAgICBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCBvcDsKICAgICBzdHJ1Y3QgZG9tYWluICpk OwpAQCAtMzAyMSw5ICszMDM3LDE5IEBAIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyhYRU5fR1VF U1RfSEFORExFX1BBUkFNKGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSB1b3AsCiAKICAgICBp ZiAoIHVubGlrZWx5KG9wLm5yX2ZyYW1lcyA+IG5yX3N0YXR1c19mcmFtZXMoZ3QpKSApCiAgICAg ewotICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIkd1ZXN0IHJlcXVlc3RlZCBhZGRyZXNz ZXMgZm9yICVkIGdyYW50IHN0YXR1cyAiCi0gICAgICAgICAgICAgICAgICJmcmFtZXMsIGJ1dCBv bmx5ICVkIGFyZSBhdmFpbGFibGUuXG4iLAotICAgICAgICAgICAgICAgICBvcC5ucl9mcmFtZXMs IG5yX3N0YXR1c19mcmFtZXMoZ3QpKTsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJS ZXF1ZXN0ZWQgYWRkcmVzc2VzIG9mIGQlZCBmb3IgJXUgZ3JhbnQgIgorICAgICAgICAgICAgICAg ICAic3RhdHVzIGZyYW1lcywgYnV0IGhhcyBvbmx5ICV1LlxuIiwKKyAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCBvcC5ucl9mcmFtZXMsIG5yX3N0YXR1c19mcmFtZXMoZ3QpKTsKKyAgICAg ICAgb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsKKyAgICAgICAgZ290byB1bmxvY2s7 CisgICAgfQorCisgICAgaWYgKCB1bmxpa2VseShsaW1pdF9tYXggPCBncmFudF90b19zdGF0dXNf ZnJhbWVzKG9wLm5yX2ZyYW1lcykpICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19X QVJOSU5HLAorICAgICAgICAgICAgICAgICAiZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcygldSkgZm9y IGQlZCBpcyB0b28gbGFyZ2UgKCV1LCV1KVxuIiwKKyAgICAgICAgICAgICAgICAgb3AubnJfZnJh bWVzLCBkLT5kb21haW5faWQsCisgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFt ZXMob3AubnJfZnJhbWVzKSwgbGltaXRfbWF4KTsKICAgICAgICAgb3Auc3RhdHVzID0gR05UU1Rf Z2VuZXJhbF9lcnJvcjsKICAgICAgICAgZ290byB1bmxvY2s7CiAgICAgfQpAQCAtMzMzNiw3ICsz MzYyLDcgQEAgZG9fZ3JhbnRfdGFibGVfb3AoCiAKICAgICBjYXNlIEdOVFRBQk9QX3NldHVwX3Rh YmxlOgogICAgICAgICByYyA9IGdudHRhYl9zZXR1cF90YWJsZSgKLSAgICAgICAgICAgIGd1ZXN0 X2hhbmRsZV9jYXN0KHVvcCwgZ250dGFiX3NldHVwX3RhYmxlX3QpLCBjb3VudCk7CisgICAgICAg ICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3AsIGdudHRhYl9zZXR1cF90YWJsZV90KSwgY291bnQs IFVJTlRfTUFYKTsKICAgICAgICAgQVNTRVJUKHJjIDw9IDApOwogICAgICAgICBicmVhazsKIApA QCAtMzM4NSw3ICszNDExLDggQEAgZG9fZ3JhbnRfdGFibGVfb3AoCiAKICAgICBjYXNlIEdOVFRB Qk9QX2dldF9zdGF0dXNfZnJhbWVzOgogICAgICAgICByYyA9IGdudHRhYl9nZXRfc3RhdHVzX2Zy YW1lcygKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KHVvcCwgZ250dGFiX2dldF9zdGF0 dXNfZnJhbWVzX3QpLCBjb3VudCk7CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3As IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSwgY291bnQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBVSU5UX01BWCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHTlRUQUJP UF9nZXRfdmVyc2lvbjoKQEAgLTM0NjUsNyArMzQ5Miw3IEBAIGdyYW50X3RhYmxlX2NyZWF0ZSgK IAogICAgIGlmICggZC0+ZG9tYWluX2lkID09IDAgKQogICAgIHsKLSAgICAgICAgcmV0ID0gZ3Jh bnRfdGFibGVfaW5pdChkLCB0KTsKKyAgICAgICAgcmV0ID0gZ3JhbnRfdGFibGVfaW5pdChkLCB0 LCBnbnR0YWJfZG9tMF9mcmFtZXMoKSwgbWF4X21hcHRyYWNrX2ZyYW1lcyk7CiAgICAgfQogCiAg ICAgcmV0dXJuIHJldDsKQEAgLTM2NjYsMTEgKzM2OTMsMTUgQEAgaW50IGdyYW50X3RhYmxlX3Nl dF9saW1pdHMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdyYW50X2ZyYW1lcywKIHsK ICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7CiAKKyAgICBpZiAo IGdyYW50X2ZyYW1lcyA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIHx8CisgICAgICAgICBncmFu dF9mcmFtZXMgPiBtYXhfZ3JhbnRfZnJhbWVzIHx8CisgICAgICAgICBtYXB0cmFja19mcmFtZXMg PiBtYXhfbWFwdHJhY2tfZnJhbWVzICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgaWYg KCAhZ3QgKQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAogICAgIC8qIFNldCBsaW1pdHMuICov Ci0gICAgcmV0dXJuIGdyYW50X3RhYmxlX2luaXQoZCwgZ3QpOworICAgIHJldHVybiBncmFudF90 YWJsZV9pbml0KGQsIGd0LCBncmFudF9mcmFtZXMsIG1hcHRyYWNrX2ZyYW1lcyk7CiB9CiAKICNp ZmRlZiBDT05GSUdfSEFTX01FTV9TSEFSSU5HCkBAIC0zNzQyLDcgKzM3NzMsNyBAQCBpbnQgZ250 dGFiX21hcF9mcmFtZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGlkeCwgZ2ZuX3Qg Z2ZuLAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoIChpZHggPj0gbnJfZ3Jh bnRfZnJhbWVzKGd0KSkgJiYgKGlkeCA8IG1heF9ncmFudF9mcmFtZXMpICkKKyAgICAgICAgaWYg KCAoaWR4ID49IG5yX2dyYW50X2ZyYW1lcyhndCkpICYmIChpZHggPCBndC0+bWF4X2dyYW50X2Zy YW1lcykgKQogICAgICAgICAgICAgZ250dGFiX2dyb3dfdGFibGUoZCwgaWR4ICsgMSk7CiAKICAg ICAgICAgaWYgKCBpZHggPCBucl9ncmFudF9mcmFtZXMoZ3QpICkKQEAgLTM3NzAsNiArMzgwMSwx MiBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAK ICAgICBncmFudF9yZWFkX2xvY2soZ3QpOwogCisgICAgcHJpbnRrKCJncmFudC10YWJsZSBmb3Ig cmVtb3RlIGQlZCAodiV1KVxuIgorICAgICAgICAgICAiICAldSBmcmFtZXMgKCV1IG1heCksICV1 IG1hcHRyYWNrIGZyYW1lcyAoJXUgbWF4KVxuIiwKKyAgICAgICAgICAgcmQtPmRvbWFpbl9pZCwg Z3QtPmd0X3ZlcnNpb24sCisgICAgICAgICAgIG5yX2dyYW50X2ZyYW1lcyhndCksIGd0LT5tYXhf Z3JhbnRfZnJhbWVzLAorICAgICAgICAgICBucl9tYXB0cmFja19mcmFtZXMoZ3QpLCBndC0+bWF4 X21hcHRyYWNrX2ZyYW1lcyk7CisKICAgICBmb3IgKCByZWYgPSAwOyByZWYgIT0gbnJfZ3JhbnRf ZW50cmllcyhndCk7IHJlZisrICkKICAgICB7CiAgICAgICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRf ZW50cnkgKmFjdDsKQEAgLTM3OTcsMTIgKzM4MzQsNyBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNh Z2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAgICAgICAgICAgICBzdGF0dXMgPSBzdGF0dXNf ZW50cnkoZ3QsIHJlZik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGZpcnN0ICkKLSAgICAg ICAgewotICAgICAgICAgICAgcHJpbnRrKCJncmFudC10YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjol NWQgKHYlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgcmQtPmRvbWFpbl9pZCwgZ3QtPmd0X3Zl cnNpb24pOwotICAgICAgICAgICAgZmlyc3QgPSAwOwotICAgICAgICB9CisgICAgICAgIGZpcnN0 ID0gMDsKIAogICAgICAgICAvKiAgICAgIFsweFhYWF0gIGRkZGRkIDB4WFhYWFhYIDB4WFhYWFhY WFggICAgICBkZGRkZCAweFhYWFhYWCAweFhYICovCiAgICAgICAgIHByaW50aygiWzB4JTAzeF0g ICU1ZCAweCUwNmx4IDB4JTA4eCAgICAgICU1ZCAweCUwNiJQUkl4NjQiIDB4JTAyeFxuIiwKQEAg LTM4MTQsOCArMzg0Niw3IEBAIHN0YXRpYyB2b2lkIGdudHRhYl91c2FnZV9wcmludChzdHJ1Y3Qg ZG9tYWluICpyZCkKICAgICBncmFudF9yZWFkX3VubG9jayhndCk7CiAKICAgICBpZiAoIGZpcnN0 ICkKLSAgICAgICAgcHJpbnRrKCJncmFudC10YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjolNWQgLi4u ICIKLSAgICAgICAgICAgICAgICJubyBhY3RpdmUgZ3JhbnQgdGFibGUgZW50cmllc1xuIiwgcmQt PmRvbWFpbl9pZCk7CisgICAgICAgIHByaW50aygibm8gYWN0aXZlIGdyYW50IHRhYmxlIGVudHJp ZXNcbiIpOwogfQogCiBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnRfYWxsKHVuc2lnbmVk IGNoYXIga2V5KQpAQCAtMzgyOSwyMCArMzg2MCwxNyBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNh Z2VfcHJpbnRfYWxsKHVuc2lnbmVkIGNoYXIga2V5KQogCiBzdGF0aWMgaW50IF9faW5pdCBnbnR0 YWJfdXNhZ2VfaW5pdCh2b2lkKQogewotICAgIEJVSUxEX0JVR19PTihERUZBVUxUX01BWF9NQVBU UkFDS19GUkFNRVMgPCBERUZBVUxUX01BWF9OUl9HUkFOVF9GUkFNRVMpOwotCi0gICAgaWYgKCAh bWF4X2dyYW50X2ZyYW1lcyApCi0gICAgICAgIG1heF9ncmFudF9mcmFtZXMgPSBERUZBVUxUX01B WF9OUl9HUkFOVF9GUkFNRVM7Ci0KLSAgICBpZiAoICFtYXhfbWFwdHJhY2tfZnJhbWVzICkKLSAg ICAgICAgbWF4X21hcHRyYWNrX2ZyYW1lcyA9IERFRkFVTFRfTUFYX01BUFRSQUNLX0ZSQU1FUzsK LQogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ2cnLCBnbnR0YWJfdXNhZ2VfcHJpbnRfYWxsLAog ICAgICAgICAgICAgICAgICAgICAgICAgInByaW50IGdyYW50IHRhYmxlIHVzYWdlIiwgMSk7CiAg ICAgcmV0dXJuIDA7CiB9CiBfX2luaXRjYWxsKGdudHRhYl91c2FnZV9pbml0KTsKIAordW5zaWdu ZWQgaW50IF9faW5pdCBnbnR0YWJfZG9tMF9mcmFtZXModm9pZCkKK3sKKyAgICByZXR1cm4gbWlu KG1heF9ncmFudF9mcmFtZXMsIGdudHRhYl9kb20wX21heCgpKTsKK30KKwogLyoKICAqIExvY2Fs IHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v Z3JhbnRfdGFibGUuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaAppbmRleCAz MGRiMmQxNjE2Li4wZGZkYzU1NzdmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dy YW50X3RhYmxlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oCkBAIC0y LDkgKzIsMTEgQEAKICNkZWZpbmUgX19BU01fR1JBTlRfVEFCTEVfSF9fCiAKICNpbmNsdWRlIDx4 ZW4vZ3JhbnRfdGFibGUuaD4KKyNpbmNsdWRlIDx4ZW4va2VybmVsLmg+CisjaW5jbHVkZSA8eGVu L3Bmbi5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogCi0jZGVmaW5lIElOSVRJQUxfTlJfR1JB TlRfRlJBTUVTIDQKKyNkZWZpbmUgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgMVUKIAogc3RydWN0 IGdyYW50X3RhYmxlX2FyY2ggewogICAgIGdmbl90ICpnZm47CkBAIC0yNiw5ICsyOCwyMSBAQCBz dGF0aWMgaW5saW5lIGludCByZXBsYWNlX2dyYW50X3N1cHBvcnRlZCh2b2lkKQogICAgIHJldHVy biAxOwogfQogCisvKgorICogVGhlIHJlZ2lvbiB1c2VkIGJ5IFhlbiBvbiB0aGUgbWVtb3J5IHdp bGwgbmV2ZXIgYmUgbWFwcGVkIGluIERPTTAKKyAqIG1lbW9yeSBsYXlvdXQuIFRoZXJlZm9yZSBp dCBjYW4gYmUgdXNlZCBmb3IgdGhlIGdyYW50IHRhYmxlLgorICoKKyAqIE9ubHkgdXNlIHRoZSB0 ZXh0IHNlY3Rpb24gYXMgaXQncyBhbHdheXMgcHJlc2VudCBhbmQgd2lsbCBjb250YWluCisgKiBl bm91Z2ggc3BhY2UgZm9yIGEgbGFyZ2UgZ3JhbnQgdGFibGUKKyAqLworc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgZ250dGFiX2RvbTBfbWF4KHZvaWQpCit7CisgICAgcmV0dXJuIFBGTl9ET1dO KF9ldGV4dCAtIF9zdGV4dCk7Cit9CisKICNkZWZpbmUgZ250dGFiX2luaXRfYXJjaChndCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAoeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgIChndCktPmFyY2guZ2ZuID0geHphbGxvY19hcnJheShnZm5fdCwgbWF4X2dyYW50 X2ZyYW1lcyk7ICAgICAgICAgICAgIFwKKyAgICAoZ3QpLT5hcmNoLmdmbiA9IHh6YWxsb2NfYXJy YXkoZ2ZuX3QsIChndCktPm1heF9ncmFudF9mcmFtZXMpOyAgICAgICBcCiAgICAgKCAoZ3QpLT5h cmNoLmdmbiA/IDAgOiAtRU5PTUVNICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogfSkKIApAQCAtNTIsNyArNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZXBsYWNlX2dy YW50X3N1cHBvcnRlZCh2b2lkKQogCiAjZGVmaW5lIGdudHRhYl9zaGFyZWRfZ21mbihkLCB0LCBp KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICggKChpID49IG5y X2dyYW50X2ZyYW1lcyh0KSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAoaSA8IG1heF9ncmFudF9mcmFtZXMpKSA/IDAgOiBnZm5feCh0LT5hcmNoLmdm bltpXSkpCisgICAgICAgKGkgPCAodCktPm1heF9ncmFudF9mcmFtZXMpKT8gMCA6IGdmbl94KCh0 KS0+YXJjaC5nZm5baV0pKQogCiAjZGVmaW5lIGdudHRhYl9uZWVkX2lvbW11X21hcHBpbmcoZCkg ICAgICAgICAgICAgICAgICAgIFwKICAgICAoaXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkgJiYg bmVlZF9pb21tdShkKSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFi bGUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaAppbmRleCAxYjkzYzU3MjBk Li5kOTE1N2U0NDE3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxl LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCkBAIC0xMiw3ICsxMiw3 IEBACiAjaW5jbHVkZSA8YXNtL2h2bS9ncmFudF90YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9wdi9n cmFudF90YWJsZS5oPgogCi0jZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDQKKyNkZWZp bmUgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgMVUKIAogc3RydWN0IGdyYW50X3RhYmxlX2FyY2gg ewogfTsKQEAgLTM5LDYgKzM5LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcGxhY2VfZ3JhbnRf aG9zdF9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIHVuc2lnbmVkIGxvbmcgZnJhbWUsCiAgICAgcmV0 dXJuIHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyhhZGRyLCBmcmFtZSwgbmV3X2FkZHIsIGZsYWdz KTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ250dGFiX2RvbTBfbWF4KHZvaWQp Cit7CisgICAgcmV0dXJuIFVJTlRfTUFYOworfQorCiAjZGVmaW5lIGdudHRhYl9pbml0X2FyY2go Z3QpIDAKICNkZWZpbmUgZ250dGFiX2Rlc3Ryb3lfYXJjaChndCkgZG8ge30gd2hpbGUgKCAwICkK ICNkZWZpbmUgZ250dGFiX3NldF9mcmFtZV9nZm4oZ3QsIGlkeCwgZ2ZuKSBkbyB7fSB3aGlsZSAo IDAgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggYi94ZW4vaW5j bHVkZS94ZW4vZ3JhbnRfdGFibGUuaAppbmRleCBkMmJkMjQxNmM0Li5iM2E5NWZkYTU4IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vZ3JhbnRfdGFibGUuaApAQCAtMzEsOSArMzEsNiBAQAogCiBzdHJ1Y3QgZ3JhbnRfdGFibGU7 CiAKLS8qIFRoZSBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gKi8KLWV4dGVybiB1bnNp Z25lZCBpbnQgbWF4X2dyYW50X2ZyYW1lczsKLQogLyogQ3JlYXRlL2Rlc3Ryb3kgcGVyLWRvbWFp biBncmFudCB0YWJsZSBjb250ZXh0LiAqLwogaW50IGdyYW50X3RhYmxlX2NyZWF0ZSgKICAgICBz dHJ1Y3QgZG9tYWluICpkKTsKQEAgLTU5LDQgKzU2LDYgQEAgaW50IG1lbV9zaGFyaW5nX2dyZWZf dG9fZ2ZuKHN0cnVjdCBncmFudF90YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwKIGludCBnbnR0 YWJfbWFwX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4LCBnZm5fdCBn Zm4sCiAgICAgICAgICAgICAgICAgICAgICBtZm5fdCAqbWZuKTsKIAordW5zaWduZWQgaW50IGdu dHRhYl9kb20wX2ZyYW1lcyh2b2lkKTsKKwogI2VuZGlmIC8qIF9fWEVOX0dSQU5UX1RBQkxFX0hf XyAqLwotLSAKMi4xMi4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==