From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v10 09/11] xen: make grant resource limits per domain Date: Mon, 25 Sep 2017 12:00:33 +0200 Message-ID: <20170925100035.432-10-jgross@suse.com> References: <20170925100035.432-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 1dwQC6-0002BL-MR for xen-devel@lists.xenproject.org; Mon, 25 Sep 2017 10:00:54 +0000 In-Reply-To: <20170925100035.432-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, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiB1c2luZyB0aGUgc2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50 IHRhYmxlcyAobWF4LgpudW1iZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0 cmFjayBmcmFtZXMpIGZvciBhbGwgZG9tYWlucwptYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWlu LiBTZXQgdGhvc2UgcGVyLWRvbWFpbiBsaW1pdHMgaW4KZ3JhbnRfdGFibGVfc2V0X2xpbWl0cygp LiBUaGUgZ2xvYmFsIHNldHRpbmdzIGFyZSBzZXJ2aW5nIGFzIGFuIHVwcGVyCmJvdW5kYXJ5IG5v dyB3aGljaCBtdXN0IG5vdCBiZSBleGNlZWRlZCBieSBhIHBlci1kb21haW4gdmFsdWUuIFRoZQpk ZWZhdWx0IG9mIG1heF9ncmFudF9mcmFtZXMgaXMgc2V0IHRvIHRoZSBtYXhpbXVtIGRlZmF1bHQg eGwgd2lsbCB1c2UuCgpXaGlsZSB1cGRhdGluZyB0aGUgc2VtYW50aWNzIG9mIHRoZSBib290IHBh cmFtZXRlcnMgcmVtb3ZlIHRoZQpkb2N1bWVudGF0aW9uIG9mIHRoZSBubyBsb25nZXIgZXhpc3Rp bmcgZ250dGFiX21heF9ucl9mcmFtZXMgYW5kCmNvcnJlY3QgdGhlIGRlZmF1bHQgZ250dGFiX21h eF9tYXB0cmFja19mcmFtZXMgdXNlcy4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpn cm9zc0BzdXNlLmNvbT4KLS0tClYxMDoKLSBsb3dlciBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyB2 YWx1ZSB0byAxCi0gcmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIHZhcmlhYmxlcyAoSmFuIEJldWxp Y2gpCi0gc3RyZWFtIGxpbmVkIG1lc3NhZ2VzIChKYW4gQmV1bGljaCkKLSBjb3JyZWN0ZWQgc2V0 dGluZyBvZiBnbnR0YWJfc2l6ZSBvbiBBUk0KClY5OgotIGFkZCBjYXBzIGZvciBwZXItZG9tYWlu IGxpbWl0cyAoSmFuIEJldWxpY2gpCi0gc29tZSBlcnJvciBtZXNzYWdlcyBlbmhhbmNlZCAoSmFu IEJldWxpY2gpCi0gYWRqdXN0ZWQgc29tZSB0eXBlcyAoSmFuIEJldWxpY2gpCi0gbWVyZ2UgcGFy dHMgb2YgKGZvcm1lcikgcGF0Y2ggMTQgaW50byB0aGlzIG9uZQotIG1ha2UgcGFyYW1ldGVycyBj aGFuZ2VhYmxlIGF0IHJ1bnRpbWUKLSBsaW1pdCBzaXplIG9mIGRvbTAncyBncmFudCB0YWJsZSBv biBBUk0KLSBzZXQgZGVmYXVsdCBtYXhfZ3JhbnRfZnJhbWVzIHRvIDY0CgpWNjoKLSBzZXZlcmFs IGNoYW5nZXMgZHVlIHRvIG5ldyBwYXRjaCBvcmRlcgoKVjM6Ci0gY29ycmVjdCBlcnJvciBtZXNz YWdlIChQYXVsIER1cnJhbnQpCi0tLQogZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rv d24gfCAgMjUgKysrLS0tCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICB8ICAg NiArLQogeGVuL2NvbW1vbi9jb21wYXQvZ3JhbnRfdGFibGUuYyAgICAgfCAgMzEgKystLS0tLQog eGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgICAgfCAxNTYgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgg ICB8ICAxMyArKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaCAgIHwgICA3ICst CiB4ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaCAgICAgICB8ICAgNSArLQogNyBmaWxlcyBj aGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIGIvZG9jcy9taXNjL3hlbi1jb21t YW5kLWxpbmUubWFya2Rvd24KaW5kZXggOTc5N2M4ZGIyZC4uOWI2Y2Q4ZTlkMCAxMDA2NDQKLS0t IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUubWFya2Rvd24KQEAgLTg3NSwyNyArODc1LDI4IEBAIFNwZWNpZnkgd2hp Y2ggY29uc29sZSBnZGJzdHViIHNob3VsZCB1c2UuIFNlZSAqKmNvbnNvbGUqKi4KICMjIyBnbnR0 YWJcX21heFxfZnJhbWVzCiA+IGA9IDxpbnRlZ2VyPmAKIAotPiBEZWZhdWx0OiBgMzJgCis+IERl ZmF1bHQ6IGA2NGAKKworPiBDYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZQogCiBTcGVjaWZ5IHRo ZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgd2hpY2ggYW55IGRvbWFpbiBtYXkgdXNlIGFzIHBh cnQKLW9mIGl0cyBncmFudCB0YWJsZS4KK29mIGl0cyBncmFudCB0YWJsZS4gVGhpcyB2YWx1ZSBp cyBhbiB1cHBlciBib3VuZGFyeSBvZiB0aGUgcGVyLWRvbWFpbgordmFsdWUgc2V0dGFibGUgdmlh IFhlbiB0b29scy4KKworRG9tMCBpcyB1c2luZyB0aGlzIHZhbHVlIGZvciBzaXppbmcgaXRzIGdy YW50IHRhYmxlLgogCiAjIyMgZ250dGFiXF9tYXhcX21hcHRyYWNrXF9mcmFtZXMKID4gYD0gPGlu dGVnZXI+YAogCi0+IERlZmF1bHQ6IGA4ICogZ250dGFiX21heF9mcmFtZXNgCi0KLVNwZWNpZnkg dGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0byB1c2UgYXMgcGFydCBvZiBhIGRvbWFpbnMK LW1hcHRyYWNrIGFycmF5LgorPiBEZWZhdWx0OiBgMTAyNGAKIAotIyMjIGdudHRhYlxfbWF4XF9u clxfZnJhbWVzCi0+IGA9IDxpbnRlZ2VyPmAKKz4gQ2FuIGJlIG1vZGlmaWVkIGF0IHJ1bnRpbWUK IAotKkRlcHJlY2F0ZWQqCi1Vc2UgKipnbnR0YWJcX21heFxfZnJhbWVzKiogYW5kICoqZ250dGFi XF9tYXhcX21hcHRyYWNrXF9mcmFtZXMqKiBpbnN0ZWFkLgorU3BlY2lmeSB0aGUgbWF4aW11bSBu dW1iZXIgb2YgZnJhbWVzIHRvIHVzZSBhcyBwYXJ0IG9mIGEgZG9tYWlucworbWFwdHJhY2sgYXJy YXkuIFRoaXMgdmFsdWUgaXMgYW4gdXBwZXIgYm91bmRhcnkgb2YgdGhlIHBlci1kb21haW4KK3Zh bHVlIHNldHRhYmxlIHZpYSBYZW4gdG9vbHMuCiAKLVNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVy IG9mIGZyYW1lcyBwZXIgZ3JhbnQgdGFibGUgb3BlcmF0aW9uIGFuZCB0aGUKLW1heGltdW0gbnVt YmVyIG9mIG1hcHRyYWNrIGZyYW1lcyBkb21haW4uCitEb20wIGlzIHVzaW5nIHRoaXMgdmFsdWUg Zm9yIHNpemluZyBpdHMgbWFwdHJhY2sgdGFibGUuCiAKICMjIyBndWVzdFxfbG9nbHZsCiA+IGA9 IDxsZXZlbD5bLzxyYXRlLWxpbWl0ZWQgbGV2ZWw+XWAgd2hlcmUgbGV2ZWwgaXMgYG5vbmUgfCBl cnJvciB8IHdhcm5pbmcgfCBpbmZvIHwgZGVidWcgfCBhbGxgCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKaW5kZXgg YzM0MjM4ZWMxYi4uMzcyM2RjM2Y3OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbl9i dWlsZC5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwpAQCAtMjA5NSwxMSArMjA5 NSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBmaW5kX2dudHRhYl9yZWdpb24oc3RydWN0IGRvbWFp biAqZCwKICAgICAgKiBlbm91Z2ggc3BhY2UgZm9yIGEgbGFyZ2UgZ3JhbnQgdGFibGUKICAgICAg Ki8KICAgICBraW5mby0+Z250dGFiX3N0YXJ0ID0gX19wYShfc3RleHQpOwotICAgIGtpbmZvLT5n bnR0YWJfc2l6ZSA9IChfZXRleHQgLSBfc3RleHQpICYgUEFHRV9NQVNLOwotCi0gICAgLyogTWFr ZSBzdXJlIHRoZSBncmFudCB0YWJsZSB3aWxsIGZpdCBpbiB0aGUgcmVnaW9uICovCi0gICAgaWYg KCAoa2luZm8tPmdudHRhYl9zaXplID4+IFBBR0VfU0hJRlQpIDwgbWF4X2dyYW50X2ZyYW1lcyAp Ci0gICAgICAgIHBhbmljKCJDYW5ub3QgZmluZCBhIHNwYWNlIGZvciB0aGUgZ3JhbnQgdGFibGUg cmVnaW9uXG4iKTsKKyAgICBraW5mby0+Z250dGFiX3NpemUgPSBnbnR0YWJfZG9tMF9mcmFtZXMo KSA8PCBQQUdFX1NISUZUOwogCiAjaWZkZWYgQ09ORklHX0FSTV8zMgogICAgIC8qCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9jb21wYXQv Z3JhbnRfdGFibGUuYwppbmRleCBjY2UzZmYwYjlhLi5mZjFkNjc4ZjAxIDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vY29tcGF0L2dy YW50X3RhYmxlLmMKQEAgLTE1NywyMSArMTU3LDE0IEBAIGludCBjb21wYXRfZ3JhbnRfdGFibGVf b3AodW5zaWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2Zy YW1lX2xpc3Rfc2l6ZV9pbl9wYWdlID0KICAgICAgICAgICAgICAgICAgICAgKENPTVBBVF9BUkdf WExBVF9TSVpFIC0gc2l6ZW9mKCpuYXQuc2V0dXApKSAvCiAgICAgICAgICAgICAgICAgICAgIHNp emVvZigqbmF0LnNldHVwLT5mcmFtZV9saXN0LnApOwotICAgICAgICAgICAgICAgIGlmICggbWF4 X2ZyYW1lX2xpc3Rfc2l6ZV9pbl9wYWdlIDwgbWF4X2dyYW50X2ZyYW1lcyApCi0gICAgICAgICAg ICAgICAgewotICAgICAgICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF9ncmFudF9mcmFtZXMgaXMgdG9vIGxhcmdl ICgldSwldSlcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ncmFudF9mcmFt ZXMsIG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFnZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJj ID0gLUVJTlZBTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICAgIHsKKwogI2RlZmluZSBYTEFUX2dudHRhYl9zZXR1cF90YWJsZV9ITkRMX2Zy YW1lX2xpc3QoX2RfLCBfc18pIFwKLSAgICAgICAgICAgICAgICAgICAgc2V0X3hlbl9ndWVzdF9o YW5kbGUoKF9kXyktPmZyYW1lX2xpc3QsICh1bnNpZ25lZCBsb25nICopKG5hdC5zZXR1cCArIDEp KQotICAgICAgICAgICAgICAgICAgICBYTEFUX2dudHRhYl9zZXR1cF90YWJsZShuYXQuc2V0dXAs ICZjbXAuc2V0dXApOworICAgICAgICAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKChfZF8p LT5mcmFtZV9saXN0LCAodW5zaWduZWQgbG9uZyAqKShuYXQuc2V0dXAgKyAxKSkKKyAgICAgICAg ICAgICAgICBYTEFUX2dudHRhYl9zZXR1cF90YWJsZShuYXQuc2V0dXAsICZjbXAuc2V0dXApOwog I3VuZGVmIFhMQVRfZ250dGFiX3NldHVwX3RhYmxlX0hORExfZnJhbWVfbGlzdAotICAgICAgICAg ICAgICAgICAgICByYyA9IGdudHRhYl9zZXR1cF90YWJsZShndWVzdF9oYW5kbGVfY2FzdChuYXQu dW9wLCBnbnR0YWJfc2V0dXBfdGFibGVfdCksIDEpOwotICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICByYyA9IGdudHRhYl9zZXR1cF90YWJsZShndWVzdF9oYW5kbGVfY2FzdChuYXQu dW9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdudHRhYl9zZXR1cF90YWJsZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAxLCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2UpOwogICAgICAgICAg ICAgfQogICAgICAgICAgICAgQVNTRVJUKHJjIDw9IDApOwogICAgICAgICAgICAgaWYgKCByYyA9 PSAwICkKQEAgLTI5NCwxNiArMjg3LDYgQEAgaW50IGNvbXBhdF9ncmFudF90YWJsZV9vcCh1bnNp Z25lZCBpbnQgY21kLAogICAgICAgICAgICAgICAgIHJjID0gLUVGQVVMVDsKICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICggbWF4X2ZyYW1lX2xp c3Rfc2l6ZV9pbl9wYWdlcyA8Ci0gICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFt ZXMobWF4X2dyYW50X2ZyYW1lcykgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdk cHJpbnRrKFhFTkxPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICJncmFudF90 b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMpIGlzIHRvbyBsYXJnZSAoJXUsJXUpXG4i LAotICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dy YW50X2ZyYW1lcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZyYW1lX2xpc3Rfc2l6 ZV9pbl9wYWdlcyk7Ci0gICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAg ICAgIGJyZWFrOwotICAgICAgICAgICAgfQogCiAjZGVmaW5lIFhMQVRfZ250dGFiX2dldF9zdGF0 dXNfZnJhbWVzX0hORExfZnJhbWVfbGlzdChfZF8sIF9zXykgXAogICAgICAgICAgICAgc2V0X3hl bl9ndWVzdF9oYW5kbGUoKF9kXyktPmZyYW1lX2xpc3QsICh1aW50NjRfdCAqKShuYXQuZ2V0X3N0 YXR1cyArIDEpKQpAQCAtMzEyLDcgKzI5NSw3IEBAIGludCBjb21wYXRfZ3JhbnRfdGFibGVfb3Ao dW5zaWduZWQgaW50IGNtZCwKIAogICAgICAgICAgICAgcmMgPSBnbnR0YWJfZ2V0X3N0YXR1c19m cmFtZXMoCiAgICAgICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QobmF0LnVvcCwgZ250dGFi X2dldF9zdGF0dXNfZnJhbWVzX3QpLAotICAgICAgICAgICAgICAgIGNvdW50KTsKKyAgICAgICAg ICAgICAgICBjb3VudCwgbWF4X2ZyYW1lX2xpc3Rfc2l6ZV9pbl9wYWdlcyk7CiAgICAgICAgICAg ICBpZiAoIHJjID49IDAgKQogICAgICAgICAgICAgewogI2RlZmluZSBYTEFUX2dudHRhYl9nZXRf c3RhdHVzX2ZyYW1lc19ITkRMX2ZyYW1lX2xpc3QoX2RfLCBfc18pIFwKZGlmZiAtLWdpdCBhL3hl bi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwppbmRleCA3 MTcwNmY1Y2JhLi43YzMyOGIwYTYyIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMKKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCkBAIC01NCw2ICs1NCw5IEBAIHN0cnVj dCBncmFudF90YWJsZSB7CiAgICAgICogd2hhdCB2ZXJzaW9uIHRvIHVzZSB5ZXQuCiAgICAgICov CiAgICAgdW5zaWduZWQgaW50ICAgICAgICAgIGd0X3ZlcnNpb247CisgICAgLyogUmVzb3VyY2Ug bGltaXRzIG9mIHRoZSBkb21haW4uICovCisgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG1heF9n cmFudF9mcmFtZXM7CisgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG1heF9tYXB0cmFja19mcmFt ZXM7CiAgICAgLyogVGFibGUgc2l6ZS4gTnVtYmVyIG9mIGZyYW1lcyBzaGFyZWQgd2l0aCBndWVz dCAqLwogICAgIHVuc2lnbmVkIGludCAgICAgICAgICBucl9ncmFudF9mcmFtZXM7CiAgICAgLyog TnVtYmVyIG9mIGdyYW50IHN0YXR1cyBmcmFtZXMgc2hhcmVkIHdpdGggZ3Vlc3QgKGZvciB2ZXJz aW9uIDIpICovCkBAIC03OCwyMyArODEsMTggQEAgc3RydWN0IGdyYW50X3RhYmxlIHsKIAogI2lm bmRlZiBERUZBVUxUX01BWF9OUl9HUkFOVF9GUkFNRVMgLyogdG8gYWxsb3cgYXJjaCB0byBvdmVy cmlkZSAqLwogLyogRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gW1BPTElD WV0gKi8KLSNkZWZpbmUgREVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTICAgMzIKKyNkZWZpbmUg REVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTICAgNjQKICNlbmRpZgogCi11bnNpZ25lZCBpbnQg X19yZWFkX21vc3RseSBtYXhfZ3JhbnRfZnJhbWVzOwotaW50ZWdlcl9wYXJhbSgiZ250dGFiX21h eF9mcmFtZXMiLCBtYXhfZ3JhbnRfZnJhbWVzKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFk X21vc3RseSBtYXhfZ3JhbnRfZnJhbWVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgREVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTOworaW50ZWdlcl9y dW50aW1lX3BhcmFtKCJnbnR0YWJfbWF4X2ZyYW1lcyIsIG1heF9ncmFudF9mcmFtZXMpOwogCi0v KiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZ3JhbnQgbWFwcGluZ3MgaXMgZGVmaW5lZCBhcyBhIG11 bHRpcGxpZXIgb2YgdGhlCi0gKiBtYXhpbXVtIG51bWJlciBvZiBncmFudCB0YWJsZSBlbnRyaWVz LiBUaGlzIGRlZmluZXMgdGhlIG11bHRpcGxpZXIgdXNlZC4KLSAqIFByZXR0eSBhcmJpdHJhcnku IFtQT0xJQ1ldCi0gKiBBcyBnbnR0YWJfbWF4X25yX2ZyYW1lcyBoYXMgYmVlbiBkZXByZWNhdGVk LCB0aGlzIG11bHRpcGxpZXIgaXMgZGVwcmVjYXRlZCB0b28uCi0gKiBOZXcgb3B0aW9ucyBhbGxv dyB0byBzZXQgbWF4X21hcHRyYWNrX2ZyYW1lcyBhbmQKLSAqIG1hcF9ncmFudF90YWJsZV9mcmFt ZXMgaW5kZXBlbmRlbnRseS4KLSAqLwogI2RlZmluZSBERUZBVUxUX01BWF9NQVBUUkFDS19GUkFN RVMgMTAyNAogCi1zdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbWF4X21hcHRyYWNr X2ZyYW1lczsKLWludGVnZXJfcGFyYW0oImdudHRhYl9tYXhfbWFwdHJhY2tfZnJhbWVzIiwgbWF4 X21hcHRyYWNrX2ZyYW1lcyk7CitzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbWF4 X21hcHRyYWNrX2ZyYW1lcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERFRkFVTFRfTUFYX01BUFRSQUNLX0ZSQU1FUzsKK2ludGVnZXJfcnVudGltZV9w YXJhbSgiZ250dGFiX21heF9tYXB0cmFja19mcmFtZXMiLCBtYXhfbWFwdHJhY2tfZnJhbWVzKTsK IAogLyoKICAqIE5vdGUgdGhhdCB0aGUgdGhyZWUgdmFsdWVzIGJlbG93IGFyZSBlZmZlY3RpdmVs eSBwYXJ0IG9mIHRoZSBBQkksIGV2ZW4gaWYKQEAgLTI5MCw4ICsyODgsOCBAQCBudW1fYWN0X2Zy YW1lc19mcm9tX3NoYV9mcmFtZXMoY29uc3QgdW5zaWduZWQgaW50IG51bSkKICAgICByZXR1cm4g RElWX1JPVU5EX1VQKG51bSAqIHNoYV9wZXJfcGFnZSwgQUNHTlRfUEVSX1BBR0UpOwogfQogCi0j ZGVmaW5lIG1heF9ucl9hY3RpdmVfZ3JhbnRfZnJhbWVzIFwKLSAgICBudW1fYWN0X2ZyYW1lc19m cm9tX3NoYV9mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykKKyNkZWZpbmUgbWF4X25yX2FjdGl2ZV9n cmFudF9mcmFtZXMoZ3QpIFwKKyAgICBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoKGd0 KS0+bWF4X2dyYW50X2ZyYW1lcykKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKIG5yX2Fj dGl2ZV9ncmFudF9mcmFtZXMoc3RydWN0IGdyYW50X3RhYmxlICpndCkKQEAgLTUzMCw3ICs1Mjgs NyBAQCBnZXRfbWFwdHJhY2tfaGFuZGxlKAogICAgICAqIG91dCBvZiBtZW1vcnksIHRyeSBzdGVh bGluZyBhbiBlbnRyeSBmcm9tIGFub3RoZXIgVkNQVSAoaW4gY2FzZSB0aGUKICAgICAgKiBndWVz dCBpc24ndCBtYXBwaW5nIGFjcm9zcyBpdHMgVkNQVXMgZXZlbmx5KS4KICAgICAgKi8KLSAgICBp ZiAoIG5yX21hcHRyYWNrX2ZyYW1lcyhsZ3QpIDwgbWF4X21hcHRyYWNrX2ZyYW1lcyApCisgICAg aWYgKCBucl9tYXB0cmFja19mcmFtZXMobGd0KSA8IGxndC0+bWF4X21hcHRyYWNrX2ZyYW1lcyAp CiAgICAgICAgIG5ld19tdCA9IGFsbG9jX3hlbmhlYXBfcGFnZSgpOwogCiAgICAgaWYgKCAhbmV3 X210ICkKQEAgLTE2NzMsNyArMTY3MSw3IEBAIGdudHRhYl9ncm93X3RhYmxlKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludCByZXFfbnJfZnJhbWVzKQogCiAgICAgaWYgKCByZXFfbnJfZnJh bWVzIDwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgKQogICAgICAgICByZXFfbnJfZnJhbWVzID0g SU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7Ci0gICAgQVNTRVJUKHJlcV9ucl9mcmFtZXMgPD0gbWF4 X2dyYW50X2ZyYW1lcyk7CisgICAgQVNTRVJUKHJlcV9ucl9mcmFtZXMgPD0gZ3QtPm1heF9ncmFu dF9mcmFtZXMpOwogCiAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCiAgICAgICAgICAgICAiRXhw YW5kaW5nIGRvbSAoJWQpIGdyYW50IHRhYmxlIGZyb20gKCVkKSB0byAoJWQpIGZyYW1lcy5cbiIs CkBAIC0xNzMwLDcgKzE3MjgsOCBAQCBhY3RpdmVfYWxsb2NfZmFpbGVkOgogfQogCiBzdGF0aWMg aW50Ci1ncmFudF90YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBncmFudF90YWJs ZSAqZ3QpCitncmFudF90YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBncmFudF90 YWJsZSAqZ3QsCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBncmFudF9mcmFtZXMsIHVu c2lnbmVkIGludCBtYXB0cmFja19mcmFtZXMpCiB7CiAgICAgaW50IHJldDsKIApAQCAtMTc0Miwy NSArMTc0MSwzMSBAQCBncmFudF90YWJsZV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBn cmFudF90YWJsZSAqZ3QpCiAgICAgICAgIGdvdG8gdW5sb2NrOwogICAgIH0KIAorICAgIGd0LT5t YXhfZ3JhbnRfZnJhbWVzID0gZ3JhbnRfZnJhbWVzOworICAgIGd0LT5tYXhfbWFwdHJhY2tfZnJh bWVzID0gbWFwdHJhY2tfZnJhbWVzOworCiAgICAgLyogQWN0aXZlIGdyYW50IHRhYmxlLiAqLwog ICAgIGd0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkg KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0aXZlX2dyYW50X2Zy YW1lcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X25yX2FjdGl2ZV9ncmFu dF9mcmFtZXMoZ3QpKTsKICAgICBpZiAoIGd0LT5hY3RpdmUgPT0gTlVMTCApCiAgICAgICAgIGdv dG8gbm9fbWVtOwogCiAgICAgLyogVHJhY2tpbmcgb2YgbWFwcGVkIGZvcmVpZ24gZnJhbWVzIHRh YmxlICovCi0gICAgZ3QtPm1hcHRyYWNrID0gdnphbGxvYyhtYXhfbWFwdHJhY2tfZnJhbWVzICog c2l6ZW9mKCpndC0+bWFwdHJhY2spKTsKLSAgICBpZiAoIGd0LT5tYXB0cmFjayA9PSBOVUxMICkK LSAgICAgICAgZ290byBub19tZW07CisgICAgaWYgKCBndC0+bWF4X21hcHRyYWNrX2ZyYW1lcyAp CisgICAgeworICAgICAgICBndC0+bWFwdHJhY2sgPSB2emFsbG9jKGd0LT5tYXhfbWFwdHJhY2tf ZnJhbWVzICogc2l6ZW9mKCpndC0+bWFwdHJhY2spKTsKKyAgICAgICAgaWYgKCBndC0+bWFwdHJh Y2sgPT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIG5vX21lbTsKKyAgICB9CiAKICAgICAvKiBT aGFyZWQgZ3JhbnQgdGFibGUuICovCi0gICAgZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9jX2FycmF5 KHZvaWQgKiwgbWF4X2dyYW50X2ZyYW1lcyk7CisgICAgZ3QtPnNoYXJlZF9yYXcgPSB4emFsbG9j X2FycmF5KHZvaWQgKiwgZ3QtPm1heF9ncmFudF9mcmFtZXMpOwogICAgIGlmICggZ3QtPnNoYXJl ZF9yYXcgPT0gTlVMTCApCiAgICAgICAgIGdvdG8gbm9fbWVtOwogCiAgICAgLyogU3RhdHVzIHBh Z2VzIGZvciBncmFudCB0YWJsZSAtIGZvciB2ZXJzaW9uIDIgKi8KICAgICBndC0+c3RhdHVzID0g eHphbGxvY19hcnJheShncmFudF9zdGF0dXNfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMobWF4X2dyYW50X2ZyYW1lcykpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50X3RvX3N0YXR1c19mcmFtZXMoZ3QtPm1heF9n cmFudF9mcmFtZXMpKTsKICAgICBpZiAoIGd0LT5zdGF0dXMgPT0gTlVMTCApCiAgICAgICAgIGdv dG8gbm9fbWVtOwogCkBAIC0xNzkzLDcgKzE3OTgsOCBAQCBncmFudF90YWJsZV9pbml0KHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCBncmFudF90YWJsZSAqZ3QpCiAKIHN0YXRpYyBsb25nCiBnbnR0 YWJfc2V0dXBfdGFibGUoCi0gICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShnbnR0YWJfc2V0dXBf dGFibGVfdCkgdW9wLCB1bnNpZ25lZCBpbnQgY291bnQpCisgICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTShnbnR0YWJfc2V0dXBfdGFibGVfdCkgdW9wLCB1bnNpZ25lZCBpbnQgY291bnQsCisgICAg dW5zaWduZWQgaW50IGxpbWl0X21heCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJl bnQ7CiAgICAgc3RydWN0IGdudHRhYl9zZXR1cF90YWJsZSBvcDsKQEAgLTE4MDcsMTUgKzE4MTMs NiBAQCBnbnR0YWJfc2V0dXBfdGFibGUoCiAgICAgaWYgKCB1bmxpa2VseShjb3B5X2Zyb21fZ3Vl c3QoJm9wLCB1b3AsIDEpKSApCiAgICAgICAgIHJldHVybiAtRUZBVUxUOwogCi0gICAgaWYgKCB1 bmxpa2VseShvcC5ucl9mcmFtZXMgPiBtYXhfZ3JhbnRfZnJhbWVzKSApCi0gICAgewotICAgICAg ICBnZHByaW50ayhYRU5MT0dfSU5GTywgIlhlbiBvbmx5IHN1cHBvcnRzIHVwIHRvICVkIGdyYW50 LXRhYmxlIGZyYW1lcyIKLSAgICAgICAgICAgICAgICAiIHBlciBkb21haW4uXG4iLAotICAgICAg ICAgICAgICAgIG1heF9ncmFudF9mcmFtZXMpOwotICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9n ZW5lcmFsX2Vycm9yOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICBpZiAoICFndWVz dF9oYW5kbGVfb2theShvcC5mcmFtZV9saXN0LCBvcC5ucl9mcmFtZXMpICkKICAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CiAKQEAgLTE4MzUsNiArMTgzMiwyMSBAQCBnbnR0YWJfc2V0dXBfdGFibGUo CiAgICAgZ3QgPSBkLT5ncmFudF90YWJsZTsKICAgICBncmFudF93cml0ZV9sb2NrKGd0KTsKIAor ICAgIGlmICggdW5saWtlbHkob3AubnJfZnJhbWVzID4gZ3QtPm1heF9ncmFudF9mcmFtZXMpICkK KyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiZCVkIGlzIGxpbWl0ZWQgdG8g JXUgZ3JhbnQtdGFibGUgZnJhbWVzLlxuIiwKKyAgICAgICAgICAgICAgICBkLT5kb21haW5faWQs IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsKKyAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJh bF9lcnJvcjsKKyAgICAgICAgZ290byB1bmxvY2s7CisgICAgfQorICAgIGlmICggdW5saWtlbHko bGltaXRfbWF4IDwgb3AubnJfZnJhbWVzKSApCisgICAgeworICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywgIm5yX2ZyYW1lcyBmb3IgZCVkIGlzIHRvbyBsYXJnZSAoJXUsJXUpXG4iLAor ICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIG9wLm5yX2ZyYW1lcywgbGltaXRfbWF4KTsK KyAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsKKyAgICAgICAgZ290byB1 bmxvY2s7CisgICAgfQorCiAgICAgaWYgKCBndC0+Z3RfdmVyc2lvbiA9PSAwICkKICAgICAgICAg Z3QtPmd0X3ZlcnNpb24gPSAxOwogCkBAIC0xODQ0LDggKzE4NTYsOSBAQCBnbnR0YWJfc2V0dXBf dGFibGUoCiAgICAgICAgICAhZ250dGFiX2dyb3dfdGFibGUoZCwgb3AubnJfZnJhbWVzKSApCiAg ICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKLSAgICAgICAgICAgICAgICAgIkV4 cGFuZCBncmFudCB0YWJsZSB0byAldSBmYWlsZWQuIEN1cnJlbnQ6ICV1IE1heDogJXVcbiIsCi0g ICAgICAgICAgICAgICAgIG9wLm5yX2ZyYW1lcywgbnJfZ3JhbnRfZnJhbWVzKGd0KSwgbWF4X2dy YW50X2ZyYW1lcyk7CisgICAgICAgICAgICAgICAgICJFeHBhbmQgZ3JhbnQgdGFibGUgb2YgZCVk IHRvICV1IGZhaWxlZC4gQ3VycmVudDogJXUgTWF4OiAldVxuIiwKKyAgICAgICAgICAgICAgICAg ZC0+ZG9tYWluX2lkLCBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhndCksCisgICAgICAg ICAgICAgICAgIGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsKICAgICAgICAgb3Auc3RhdHVzID0gR05U U1RfZ2VuZXJhbF9lcnJvcjsKICAgICAgICAgZ290byB1bmxvY2s7CiAgICAgfQpAQCAtMTg4MCw2 ICsxODkzLDcgQEAgZ250dGFiX3F1ZXJ5X3NpemUoCiB7CiAgICAgc3RydWN0IGdudHRhYl9xdWVy eV9zaXplIG9wOwogICAgIHN0cnVjdCBkb21haW4gKmQ7CisgICAgc3RydWN0IGdyYW50X3RhYmxl ICpndDsKIAogICAgIGlmICggY291bnQgIT0gMSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwpA QCAtMTkwMCwxMyArMTkxNCwxNSBAQCBnbnR0YWJfcXVlcnlfc2l6ZSgKICAgICAgICAgZ290byBv dXQ7CiAgICAgfQogCi0gICAgZ3JhbnRfcmVhZF9sb2NrKGQtPmdyYW50X3RhYmxlKTsKKyAgICBn dCA9IGQtPmdyYW50X3RhYmxlOworCisgICAgZ3JhbnRfcmVhZF9sb2NrKGd0KTsKIAotICAgIG9w Lm5yX2ZyYW1lcyAgICAgPSBucl9ncmFudF9mcmFtZXMoZC0+Z3JhbnRfdGFibGUpOwotICAgIG9w Lm1heF9ucl9mcmFtZXMgPSBtYXhfZ3JhbnRfZnJhbWVzOworICAgIG9wLm5yX2ZyYW1lcyAgICAg PSBucl9ncmFudF9mcmFtZXMoZ3QpOworICAgIG9wLm1heF9ucl9mcmFtZXMgPSBndC0+bWF4X2dy YW50X2ZyYW1lczsKICAgICBvcC5zdGF0dXMgICAgICAgID0gR05UU1Rfb2theTsKIAotICAgIGdy YW50X3JlYWRfdW5sb2NrKGQtPmdyYW50X3RhYmxlKTsKKyAgICBncmFudF9yZWFkX3VubG9jayhn dCk7CiAKICBvdXQ6CiAgICAgaWYgKCBkICkKQEAgLTI5ODEsNyArMjk5Nyw3IEBAIGdudHRhYl9z ZXRfdmVyc2lvbihYRU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9zZXRfdmVyc2lvbl90KSB1 b3ApCiAKIHN0YXRpYyBsb25nCiBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoWEVOX0dVRVNUX0hB TkRMRV9QQVJBTShnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCkgdW9wLAotICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgY291bnQsIHVuc2lnbmVkIGludCBsaW1pdF9tYXgpCiB7CiAgICAgZ250dGFiX2dldF9z dGF0dXNfZnJhbWVzX3Qgb3A7CiAgICAgc3RydWN0IGRvbWFpbiAqZDsKQEAgLTMwMjEsOSArMzAz NywxOSBAQCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShn bnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCkgdW9wLAogCiAgICAgaWYgKCB1bmxpa2VseShvcC5u cl9mcmFtZXMgPiBucl9zdGF0dXNfZnJhbWVzKGd0KSkgKQogICAgIHsKLSAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX0lORk8sICJHdWVzdCByZXF1ZXN0ZWQgYWRkcmVzc2VzIGZvciAlZCBncmFudCBz dGF0dXMgIgotICAgICAgICAgICAgICAgICAiZnJhbWVzLCBidXQgb25seSAlZCBhcmUgYXZhaWxh YmxlLlxuIiwKLSAgICAgICAgICAgICAgICAgb3AubnJfZnJhbWVzLCBucl9zdGF0dXNfZnJhbWVz KGd0KSk7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiUmVxdWVzdGVkIGFkZHJlc3Nl cyBvZiBkJWQgZm9yICV1IGdyYW50ICIKKyAgICAgICAgICAgICAgICAgInN0YXR1cyBmcmFtZXMs IGJ1dCBoYXMgb25seSAldS5cbiIsCisgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgb3Au bnJfZnJhbWVzLCBucl9zdGF0dXNfZnJhbWVzKGd0KSk7CisgICAgICAgIG9wLnN0YXR1cyA9IEdO VFNUX2dlbmVyYWxfZXJyb3I7CisgICAgICAgIGdvdG8gdW5sb2NrOworICAgIH0KKworICAgIGlm ICggdW5saWtlbHkobGltaXRfbWF4IDwgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhvcC5ucl9mcmFt ZXMpKSApCisgICAgeworICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKKyAgICAgICAg ICAgICAgICAgImdyYW50X3RvX3N0YXR1c19mcmFtZXMoJXUpIGZvciBkJWQgaXMgdG9vIGxhcmdl ICgldSwldSlcbiIsCisgICAgICAgICAgICAgICAgIG9wLm5yX2ZyYW1lcywgZC0+ZG9tYWluX2lk LAorICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG9wLm5yX2ZyYW1lcyks IGxpbWl0X21heCk7CiAgICAgICAgIG9wLnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7CiAg ICAgICAgIGdvdG8gdW5sb2NrOwogICAgIH0KQEAgLTMzMzYsNyArMzM2Miw3IEBAIGRvX2dyYW50 X3RhYmxlX29wKAogCiAgICAgY2FzZSBHTlRUQUJPUF9zZXR1cF90YWJsZToKICAgICAgICAgcmMg PSBnbnR0YWJfc2V0dXBfdGFibGUoCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3As IGdudHRhYl9zZXR1cF90YWJsZV90KSwgY291bnQpOworICAgICAgICAgICAgZ3Vlc3RfaGFuZGxl X2Nhc3QodW9wLCBnbnR0YWJfc2V0dXBfdGFibGVfdCksIGNvdW50LCBVSU5UX01BWCk7CiAgICAg ICAgIEFTU0VSVChyYyA8PSAwKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTMzODUsNyArMzQxMSw4 IEBAIGRvX2dyYW50X3RhYmxlX29wKAogCiAgICAgY2FzZSBHTlRUQUJPUF9nZXRfc3RhdHVzX2Zy YW1lczoKICAgICAgICAgcmMgPSBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoCi0gICAgICAgICAg ICBndWVzdF9oYW5kbGVfY2FzdCh1b3AsIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSwgY291 bnQpOworICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QodW9wLCBnbnR0YWJfZ2V0X3N0YXR1 c19mcmFtZXNfdCksIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVF9N QVgpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR05UVEFCT1BfZ2V0X3ZlcnNpb246CkBA IC0zNDY1LDcgKzM0OTIsNyBAQCBncmFudF90YWJsZV9jcmVhdGUoCiAKICAgICBpZiAoIGQtPmRv bWFpbl9pZCA9PSAwICkKICAgICB7Ci0gICAgICAgIHJldCA9IGdyYW50X3RhYmxlX2luaXQoZCwg dCk7CisgICAgICAgIHJldCA9IGdyYW50X3RhYmxlX2luaXQoZCwgdCwgZ250dGFiX2RvbTBfZnJh bWVzKCksIG1heF9tYXB0cmFja19mcmFtZXMpOwogICAgIH0KIAogICAgIHJldHVybiByZXQ7CkBA IC0zNjY2LDExICszNjkzLDE1IEBAIGludCBncmFudF90YWJsZV9zZXRfbGltaXRzKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCBncmFudF9mcmFtZXMsCiB7CiAgICAgc3RydWN0IGdyYW50 X3RhYmxlICpndCA9IGQtPmdyYW50X3RhYmxlOwogCisgICAgaWYgKCBncmFudF9mcmFtZXMgPCBJ TklUSUFMX05SX0dSQU5UX0ZSQU1FUyB8fAorICAgICAgICAgZ3JhbnRfZnJhbWVzID4gbWF4X2dy YW50X2ZyYW1lcyB8fAorICAgICAgICAgbWFwdHJhY2tfZnJhbWVzID4gbWF4X21hcHRyYWNrX2Zy YW1lcyApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgIGlmICggIWd0ICkKICAgICAgICAg cmV0dXJuIC1FTk9FTlQ7CiAKICAgICAvKiBTZXQgbGltaXRzLiAqLwotICAgIHJldHVybiBncmFu dF90YWJsZV9pbml0KGQsIGd0KTsKKyAgICByZXR1cm4gZ3JhbnRfdGFibGVfaW5pdChkLCBndCwg Z3JhbnRfZnJhbWVzLCBtYXB0cmFja19mcmFtZXMpOwogfQogCiAjaWZkZWYgQ09ORklHX0hBU19N RU1fU0hBUklORwpAQCAtMzc0Miw3ICszNzczLDcgQEAgaW50IGdudHRhYl9tYXBfZnJhbWUoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBpZHgsIGdmbl90IGdmbiwKICAgICB9CiAgICAg ZWxzZQogICAgIHsKLSAgICAgICAgaWYgKCAoaWR4ID49IG5yX2dyYW50X2ZyYW1lcyhndCkpICYm IChpZHggPCBtYXhfZ3JhbnRfZnJhbWVzKSApCisgICAgICAgIGlmICggKGlkeCA+PSBucl9ncmFu dF9mcmFtZXMoZ3QpKSAmJiAoaWR4IDwgZ3QtPm1heF9ncmFudF9mcmFtZXMpICkKICAgICAgICAg ICAgIGdudHRhYl9ncm93X3RhYmxlKGQsIGlkeCArIDEpOwogCiAgICAgICAgIGlmICggaWR4IDwg bnJfZ3JhbnRfZnJhbWVzKGd0KSApCkBAIC0zNzcwLDYgKzM4MDEsMTIgQEAgc3RhdGljIHZvaWQg Z250dGFiX3VzYWdlX3ByaW50KHN0cnVjdCBkb21haW4gKnJkKQogCiAgICAgZ3JhbnRfcmVhZF9s b2NrKGd0KTsKIAorICAgIHByaW50aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkJWQgKHYldSlc biIKKyAgICAgICAgICAgIiAgJXUgZnJhbWVzICgldSBtYXgpLCAldSBtYXB0cmFjayBmcmFtZXMg KCV1IG1heClcbiIsCisgICAgICAgICAgIHJkLT5kb21haW5faWQsIGd0LT5ndF92ZXJzaW9uLAor ICAgICAgICAgICBucl9ncmFudF9mcmFtZXMoZ3QpLCBndC0+bWF4X2dyYW50X2ZyYW1lcywKKyAg ICAgICAgICAgbnJfbWFwdHJhY2tfZnJhbWVzKGd0KSwgZ3QtPm1heF9tYXB0cmFja19mcmFtZXMp OworCiAgICAgZm9yICggcmVmID0gMDsgcmVmICE9IG5yX2dyYW50X2VudHJpZXMoZ3QpOyByZWYr KyApCiAgICAgewogICAgICAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5ICphY3Q7CkBAIC0z Nzk3LDEyICszODM0LDcgQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50KHN0cnVjdCBk b21haW4gKnJkKQogICAgICAgICAgICAgc3RhdHVzID0gc3RhdHVzX2VudHJ5KGd0LCByZWYpOwog ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBmaXJzdCApCi0gICAgICAgIHsKLSAgICAgICAgICAg IHByaW50aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkb21haW46JTVkICh2JWQpXG4iLAotICAg ICAgICAgICAgICAgICAgIHJkLT5kb21haW5faWQsIGd0LT5ndF92ZXJzaW9uKTsKLSAgICAgICAg ICAgIGZpcnN0ID0gMDsKLSAgICAgICAgfQorICAgICAgICBmaXJzdCA9IDA7CiAKICAgICAgICAg LyogICAgICBbMHhYWFhdICBkZGRkZCAweFhYWFhYWCAweFhYWFhYWFhYICAgICAgZGRkZGQgMHhY WFhYWFggMHhYWCAqLwogICAgICAgICBwcmludGsoIlsweCUwM3hdICAlNWQgMHglMDZseCAweCUw OHggICAgICAlNWQgMHglMDYiUFJJeDY0IiAweCUwMnhcbiIsCkBAIC0zODE0LDggKzM4NDYsNyBA QCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpCiAgICAg Z3JhbnRfcmVhZF91bmxvY2soZ3QpOwogCiAgICAgaWYgKCBmaXJzdCApCi0gICAgICAgIHByaW50 aygiZ3JhbnQtdGFibGUgZm9yIHJlbW90ZSBkb21haW46JTVkIC4uLiAiCi0gICAgICAgICAgICAg ICAibm8gYWN0aXZlIGdyYW50IHRhYmxlIGVudHJpZXNcbiIsIHJkLT5kb21haW5faWQpOworICAg ICAgICBwcmludGsoIm5vIGFjdGl2ZSBncmFudCB0YWJsZSBlbnRyaWVzXG4iKTsKIH0KIAogc3Rh dGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50X2FsbCh1bnNpZ25lZCBjaGFyIGtleSkKQEAgLTM4 MjksMjAgKzM4NjAsMTcgQEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50X2FsbCh1bnNp Z25lZCBjaGFyIGtleSkKIAogc3RhdGljIGludCBfX2luaXQgZ250dGFiX3VzYWdlX2luaXQodm9p ZCkKIHsKLSAgICBCVUlMRF9CVUdfT04oREVGQVVMVF9NQVhfTUFQVFJBQ0tfRlJBTUVTIDwgREVG QVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTKTsKLQotICAgIGlmICggIW1heF9ncmFudF9mcmFtZXMg KQotICAgICAgICBtYXhfZ3JhbnRfZnJhbWVzID0gREVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVT OwotCi0gICAgaWYgKCAhbWF4X21hcHRyYWNrX2ZyYW1lcyApCi0gICAgICAgIG1heF9tYXB0cmFj a19mcmFtZXMgPSBERUZBVUxUX01BWF9NQVBUUkFDS19GUkFNRVM7Ci0KICAgICByZWdpc3Rlcl9r ZXloYW5kbGVyKCdnJywgZ250dGFiX3VzYWdlX3ByaW50X2FsbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICJwcmludCBncmFudCB0YWJsZSB1c2FnZSIsIDEpOwogICAgIHJldHVybiAwOwogfQog X19pbml0Y2FsbChnbnR0YWJfdXNhZ2VfaW5pdCk7CiAKK3Vuc2lnbmVkIGludCBfX2luaXQgZ250 dGFiX2RvbTBfZnJhbWVzKHZvaWQpCit7CisgICAgcmV0dXJuIG1pbihtYXhfZ3JhbnRfZnJhbWVz LCBnbnR0YWJfZG9tMF9tYXgoKSk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBt b2RlOiBDCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggYi94 ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgKaW5kZXggMzBkYjJkMTYxNi4uYmNkZWFk YTljYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaApAQCAtMiw5ICsyLDExIEBACiAjZGVm aW5lIF9fQVNNX0dSQU5UX1RBQkxFX0hfXwogCiAjaW5jbHVkZSA8eGVuL2dyYW50X3RhYmxlLmg+ CisjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi9wZm4uaD4KICNpbmNsdWRl IDx4ZW4vc2NoZWQuaD4KIAotI2RlZmluZSBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyA0CisjZGVm aW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDFVCiAKIHN0cnVjdCBncmFudF90YWJsZV9hcmNo IHsKICAgICBnZm5fdCAqZ2ZuOwpAQCAtMjYsOSArMjgsMTQgQEAgc3RhdGljIGlubGluZSBpbnQg cmVwbGFjZV9ncmFudF9zdXBwb3J0ZWQodm9pZCkKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbnQgZ250dGFiX2RvbTBfbWF4KHZvaWQpCit7CisgICAgcmV0dXJu IFBGTl9ET1dOKF9ldGV4dCAtIF9zdGV4dCk7Cit9CisKICNkZWZpbmUgZ250dGFiX2luaXRfYXJj aChndCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAoeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgIChndCktPmFyY2guZ2ZuID0geHphbGxvY19hcnJheShnZm5fdCwg bWF4X2dyYW50X2ZyYW1lcyk7ICAgICAgICAgICAgIFwKKyAgICAoZ3QpLT5hcmNoLmdmbiA9IHh6 YWxsb2NfYXJyYXkoZ2ZuX3QsIChndCktPm1heF9ncmFudF9mcmFtZXMpOyAgICAgICBcCiAgICAg KCAoZ3QpLT5hcmNoLmdmbiA/IDAgOiAtRU5PTUVNICk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogfSkKIApAQCAtNTIsNyArNTksNyBAQCBzdGF0aWMgaW5saW5lIGludCBy ZXBsYWNlX2dyYW50X3N1cHBvcnRlZCh2b2lkKQogCiAjZGVmaW5lIGdudHRhYl9zaGFyZWRfZ21m bihkLCB0LCBpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICgg KChpID49IG5yX2dyYW50X2ZyYW1lcyh0KSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAoaSA8IG1heF9ncmFudF9mcmFtZXMpKSA/IDAgOiBnZm5feCh0 LT5hcmNoLmdmbltpXSkpCisgICAgICAgKGkgPCAodCktPm1heF9ncmFudF9mcmFtZXMpKT8gMCA6 IGdmbl94KCh0KS0+YXJjaC5nZm5baV0pKQogCiAjZGVmaW5lIGdudHRhYl9uZWVkX2lvbW11X21h cHBpbmcoZCkgICAgICAgICAgICAgICAgICAgIFwKICAgICAoaXNfZG9tYWluX2RpcmVjdF9tYXBw ZWQoZCkgJiYgbmVlZF9pb21tdShkKSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYv Z3JhbnRfdGFibGUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaAppbmRleCAx YjkzYzU3MjBkLi5kOTE1N2U0NDE3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dy YW50X3RhYmxlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCkBAIC0x Miw3ICsxMiw3IEBACiAjaW5jbHVkZSA8YXNtL2h2bS9ncmFudF90YWJsZS5oPgogI2luY2x1ZGUg PGFzbS9wdi9ncmFudF90YWJsZS5oPgogCi0jZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVT IDQKKyNkZWZpbmUgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgMVUKIAogc3RydWN0IGdyYW50X3Rh YmxlX2FyY2ggewogfTsKQEAgLTM5LDYgKzM5LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcGxh Y2VfZ3JhbnRfaG9zdF9tYXBwaW5nKHVpbnQ2NF90IGFkZHIsIHVuc2lnbmVkIGxvbmcgZnJhbWUs CiAgICAgcmV0dXJuIHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyhhZGRyLCBmcmFtZSwgbmV3X2Fk ZHIsIGZsYWdzKTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ250dGFiX2RvbTBf bWF4KHZvaWQpCit7CisgICAgcmV0dXJuIFVJTlRfTUFYOworfQorCiAjZGVmaW5lIGdudHRhYl9p bml0X2FyY2goZ3QpIDAKICNkZWZpbmUgZ250dGFiX2Rlc3Ryb3lfYXJjaChndCkgZG8ge30gd2hp bGUgKCAwICkKICNkZWZpbmUgZ250dGFiX3NldF9mcmFtZV9nZm4oZ3QsIGlkeCwgZ2ZuKSBkbyB7 fSB3aGlsZSAoIDAgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgg Yi94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaAppbmRleCBkMmJkMjQxNmM0Li5iM2E5NWZk YTU4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaAorKysgYi94ZW4v aW5jbHVkZS94ZW4vZ3JhbnRfdGFibGUuaApAQCAtMzEsOSArMzEsNiBAQAogCiBzdHJ1Y3QgZ3Jh bnRfdGFibGU7CiAKLS8qIFRoZSBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gKi8KLWV4 dGVybiB1bnNpZ25lZCBpbnQgbWF4X2dyYW50X2ZyYW1lczsKLQogLyogQ3JlYXRlL2Rlc3Ryb3kg cGVyLWRvbWFpbiBncmFudCB0YWJsZSBjb250ZXh0LiAqLwogaW50IGdyYW50X3RhYmxlX2NyZWF0 ZSgKICAgICBzdHJ1Y3QgZG9tYWluICpkKTsKQEAgLTU5LDQgKzU2LDYgQEAgaW50IG1lbV9zaGFy aW5nX2dyZWZfdG9fZ2ZuKHN0cnVjdCBncmFudF90YWJsZSAqZ3QsIGdyYW50X3JlZl90IHJlZiwK IGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgaWR4 LCBnZm5fdCBnZm4sCiAgICAgICAgICAgICAgICAgICAgICBtZm5fdCAqbWZuKTsKIAordW5zaWdu ZWQgaW50IGdudHRhYl9kb20wX2ZyYW1lcyh2b2lkKTsKKwogI2VuZGlmIC8qIF9fWEVOX0dSQU5U X1RBQkxFX0hfXyAqLwotLSAKMi4xMi4zCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==