From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D2E56E8B1 for ; Fri, 20 Nov 2020 11:32:01 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 20 Nov 2020 12:31:11 +0100 Message-Id: <20201120113131.67971-12-zbigniew.kempczynski@intel.com> In-Reply-To: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> References: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v10 11/31] lib/intel_batchbuffer: Integrate intel_bb with allocator List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: djI6IGZpeCBsZWFrIGluIGNhY2hlIHRyZWUgKERvbWluaWspCnYzOiByZW1vdmUgZGVjYW5vbmlz YXRpb24gb2YgYWRkcmVzc2VzIGFuZCB0cnVuY2F0aW5nIGd0dF9zaXplCiAgICBmb3Igbm9uIHBw Z3R0IGdlbnMgKFpiaWduaWV3KQp2NDogY2Fub25pemUgYWRkcmVzc2VzIG9ubHkgYmVmb3JlIGV4 ZWMgYW5kIGRlY2Fub25pemUgYWZ0ZXIgaXQKClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBj ennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBE b21pbmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaW50ZWxfYmF0Y2hi dWZmZXIuYyB8IDUwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBs aWIvaW50ZWxfYmF0Y2hidWZmZXIuaCB8ICAyMyArLQogMiBmaWxlcyBjaGFuZ2VkLCAzNzMgaW5z ZXJ0aW9ucygrKSwgMTUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKaW5kZXggOGRkOGE1MDIuLjM4NDFk NzRlIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysgYi9saWIvaW50ZWxf YmF0Y2hidWZmZXIuYwpAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIK ICNpbmNsdWRlICJncGdwdV9maWxsLmgiCiAjaW5jbHVkZSAiaWd0X2F1eC5oIgotI2luY2x1ZGUg ImlndF9yYW5kLmgiCiAjaW5jbHVkZSAiaTgzMF9yZWcuaCIKICNpbmNsdWRlICJodWNfY29weS5o IgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTEyMDYsMjMgKzEyMDUsOSBAQCBzdGF0aWMgdm9pZCBf X3JlYWxsb2NhdGVfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAl9CiB9CiAKLS8qCi0g KiBnZW44X2Nhbm9uaWNhbF9hZGRyCi0gKiBVc2VkIHRvIGNvbnZlcnQgYW55IGFkZHJlc3MgaW50 byBjYW5vbmljYWwgZm9ybSwgaS5lLiBbNjM6NDhdID09IFs0N10uCi0gKiBCYXNlZCBvbiBrZXJu ZWwncyBzaWduX2V4dGVuZDY0IGltcGxlbWVudGF0aW9uLgotICogQGFkZHJlc3MgLSBhIHZpcnR1 YWwgYWRkcmVzcwotICovCi0jZGVmaW5lIEdFTjhfSElHSF9BRERSRVNTX0JJVCA0Nwotc3RhdGlj IHVpbnQ2NF90IGdlbjhfY2Fub25pY2FsX2FkZHIodWludDY0X3QgYWRkcmVzcykKLXsKLQlpbnQg c2hpZnQgPSA2MyAtIEdFTjhfSElHSF9BRERSRVNTX0JJVDsKLQotCXJldHVybiAoaW50NjRfdCko YWRkcmVzcyA8PCBzaGlmdCkgPj4gc2hpZnQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qg X19pbnRlbF9iYl9nZXRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCQkgICAgIHVp bnQzMl90IGhhbmRsZSwKLQkJCQkJICAgICB1aW50MzJfdCBzaXplLAorCQkJCQkgICAgIHVpbnQ2 NF90IHNpemUsCiAJCQkJCSAgICAgdWludDMyX3QgYWxpZ25tZW50KQogewogCXVpbnQ2NF90IG9m ZnNldDsKQEAgLTEyMzAsMzMgKzEyMTUsNzcgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBfX2lu dGVsX2JiX2dldF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsCiAJaWYgKGliYi0+ZW5mb3Jj ZV9yZWxvY3MpCiAJCXJldHVybiAwOwogCi0JLyogcmFuZG9taXplIHRoZSBhZGRyZXNzLCB3ZSB0 cnkgdG8gYXZvaWQgcmVsb2NhdGlvbnMgKi8KLQlvZmZzZXQgPSBoYXJzX3BldHJ1c2thX2Y1NF8x X3JhbmRvbTY0KCZpYmItPnBybmcpOwotCW9mZnNldCArPSAyNTYgPDwgMTA7IC8qIEtlZXAgdGhl IGxvdyAyNTZrIGNsZWFyLCBmb3IgbmVnYXRpdmUgZGVsdGFzICovCi0Jb2Zmc2V0ICY9IGliYi0+ Z3R0X3NpemUgLSAxOwotCW9mZnNldCAmPSB+KGliYi0+YWxpZ25tZW50IC0gMSk7Ci0Jb2Zmc2V0 ID0gZ2VuOF9jYW5vbmljYWxfYWRkcihvZmZzZXQpOworCW9mZnNldCA9IGludGVsX2FsbG9jYXRv cl9hbGxvYyhpYmItPmFsbG9jYXRvcl9oYW5kbGUsCisJCQkJICAgICAgIGhhbmRsZSwgc2l6ZSwg YWxpZ25tZW50KTsKIAogCXJldHVybiBvZmZzZXQ7CiB9CiAKIC8qKgotICogaW50ZWxfYmJfY3Jl YXRlOgorICogX19pbnRlbF9iYl9jcmVhdGU6CiAgKiBAaTkxNTogZHJtIGZkCisgKiBAY3R4OiBj b250ZXh0CiAgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hidWZmZXIKKyAqIEBkb19yZWxvY3M6 IHVzZSByZWxvY2F0aW9ucyBvciBhbGxvY2F0b3IKKyAqIEBhbGxvY2F0b3JfdHlwZTogYWxsb2Nh dG9yIHR5cGUsIG11c3QgYmUgSU5URUxfQUxMT0NBVE9SX05PTkUgZm9yIHJlbG9jYXRpb25zCisg KgorICogaW50ZWwtYmIgYXNzdW1lcyBpdCB3aWxsIHdvcmsgaW4gb25lIG9mIHR3byBtb2RlcyAt IHdpdGggcmVsb2NhdGlvbnMgb3IKKyAqIHdpdGggdXNpbmcgYWxsb2NhdG9yIChjdXJyZW50bHkg UkFORE9NIGFuZCBTSU1QTEUgYXJlIGltcGxlbWVudGVkKS4KKyAqIFNvbWUgZGVzY3JpcHRpb24g aXMgcmVxdWlyZWQgdG8gZGVzY3JpYmUgaG93IHRoZXkgbWFpbnRhaW4gdGhlIGFkZHJlc3Nlcy4K KyAqCisgKiBCZWZvcmUgZW50ZXJpbmcgaW50byBlYWNoIHNjZW5hcmlvcyBnZW5lcmljIHJ1bGUg aXMgaW50ZWwtYmIga2VlcHMgb2JqZWN0cworICogYW5kIHRoZWlyIG9mZnNldHMgaW4gdGhlIGlu dGVybmFsIGNhY2hlIGFuZCByZXVzZXMgaW4gc3Vic2VxdWVudCBleGVjcy4KKyAqCisgKiAxLiBp bnRlbC1iYiB3aXRoIHJlbG9jYXRpb25zCisgKgorICogQ3JlYXRpbmcgbmV3IGludGVsLWJiIGFk ZHMgaGFuZGxlIHRvIGNhY2hlIGltcGxpY2l0bHkgYW5kIHNldHMgaXRzIGFkZHJlc3MKKyAqIHRv IDAuIE9iamVjdHMgYWRkZWQgdG8gaW50ZWwtYmIgbGF0ZXIgYWxzbyBoYXZlIGFkZHJlc3MgMCBz ZXQgZm9yIGZpcnN0IHJ1bi4KKyAqIEFmdGVyIGNhbGxpbmcgZXhlY2J1ZiBjYWNoZSBpcyBhbHRl cmVkIHdpdGggbmV3IGFkZHJlc3Nlcy4gQXMgaW50ZWwtYmIKKyAqIHdvcmtzIGluIHJlbG9jIG1v ZGUgYWRkcmVzc2VzIGFyZSBvbmx5IHN1Z2dlc3Rpb24gdG8gdGhlIGRyaXZlciBhbmQgd2UKKyAq IGNhbm5vdCBiZSBzdXJlIHRoZXkgd29uJ3QgY2hhbmdlIGF0IG5leHQgZXhlYy4KKyAqCisgKiAy LiB3aXRoIGFsbG9jYXRvcgorICoKKyAqIFRoaXMgbW9kZSBpcyB2YWxpZCBvbmx5IGZvciBwcGd0 dC4gQWRkcmVzc2VzIGFyZSBhY3F1aXJlZCBmcm9tIGFsbG9jYXRvcgorICogYW5kIHNvZnRwaW5u ZWQuIGludGVsLWJiIGNhY2hlIG11c3QgYmUgdGhlbiBjb2hlcmVudCB3aXRoIGFsbG9jYXRvcgor ICogKHNpbXBsZSBpcyBjb2hlcmVudCwgcmFuZG9tIGlzIG5vdCBkdWUgdG8gZmFjdCB3ZSBkb24n dCBrZWVwIGl0cyBzdGF0ZSkuCisgKiBXaGVuIHdlIGRvIGludGVsLWJiIHJlc2V0IHdpdGggcHVy Z2luZyBjYWNoZSBpdCBoYXMgdG8gcmVhY3F1aXJlIGFkZHJlc3NlcworICogZnJvbSBhbGxvY2F0 b3IgKGFsbG9jYXRvciBzaG91bGQgcmV0dXJuIHNhbWUgYWRkcmVzcyAtIHdoYXQgaXMgdHJ1ZSBm b3IKKyAqIHNpbXBsZSBhbGxvY2F0b3IgYW5kIGZhbHNlIGZvciByYW5kb20gYXMgbWVudGlvbmVk IGJlZm9yZSkuCisgKgorICogSWYgd2UgZG8gcmVzZXQgd2l0aG91dCBwdXJnaW5nIGNhY2hlcyB3 ZSB1c2UgYWRkcmVzc2VzIGZyb20gaW50ZWwtYmIgY2FjaGUKKyAqIGR1cmluZyBleGVjYnVmIG9i amVjdHMgY29uc3RydWN0aW9uLgogICoKICAqIFJldHVybnM6CiAgKgogICogUG9pbnRlciB0aGUg aW50ZWxfYmIsIGFzc2VydHMgb24gZmFpbHVyZS4KICAqLwogc3RhdGljIHN0cnVjdCBpbnRlbF9i YiAqCi1fX2ludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50MzJfdCBz aXplLCBib29sIGRvX3JlbG9jcykKK19faW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJf dCBjdHgsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVsb2NzLAorCQkgIHVpbnQ4X3QgYWxsb2Nh dG9yX3R5cGUpCiB7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsK IAlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikpOwotCXVpbnQ2 NF90IGd0dF9zaXplOwogCiAJaWd0X2Fzc2VydChpYmIpOwogCisJaWJiLT51c2VzX2Z1bGxfcHBn dHQgPSBnZW1fdXNlc19mdWxsX3BwZ3R0KGk5MTUpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBo YXZlIGZ1bGwgcHBndHQgZHJpdmVyIGNhbiBjaGFuZ2Ugb3VyIGFkZHJlc3NlcworCSAqIHNvIGFs bG9jYXRvciBpcyB1c2VsZXNzIGluIHRoaXMgY2FzZS4gSnVzdCBlbmZvcmNlIHJlbG9jYXRpb25z CisJICogZm9yIHN1Y2ggZ2VucyBhbmQgZG9uJ3QgdXNlIGFsbG9jYXRvciBhdCBhbGwuCisJICov CisJaWYgKCFpYmItPnVzZXNfZnVsbF9wcGd0dCkgeworCQlkb19yZWxvY3MgPSB0cnVlOworCQlh bGxvY2F0b3JfdHlwZSA9IElOVEVMX0FMTE9DQVRPUl9OT05FOworCX0KKworCWlmICghZG9fcmVs b2NzKQorCQlpYmItPmFsbG9jYXRvcl9oYW5kbGUgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihpOTE1 LCBjdHgsIGFsbG9jYXRvcl90eXBlKTsKKwllbHNlCisJCWlndF9hc3NlcnQoYWxsb2NhdG9yX3R5 cGUgPT0gSU5URUxfQUxMT0NBVE9SX05PTkUpOworCWliYi0+YWxsb2NhdG9yX3R5cGUgPSBhbGxv Y2F0b3JfdHlwZTsKIAlpYmItPmk5MTUgPSBpOTE1OwogCWliYi0+ZGV2aWQgPSBpbnRlbF9nZXRf ZHJtX2RldmlkKGk5MTUpOwogCWliYi0+Z2VuID0gaW50ZWxfZ2VuKGliYi0+ZGV2aWQpOwpAQCAt MTI2OCw0MSArMTI5Nyw0MyBAQCBfX2ludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qg Y3R4LCB1aW50MzJfdCBzaXplLCBib29sIGRvX3JlbG9jcykKIAlpYmItPmJhdGNoID0gY2FsbG9j KDEsIHNpemUpOwogCWlndF9hc3NlcnQoaWJiLT5iYXRjaCk7CiAJaWJiLT5wdHIgPSBpYmItPmJh dGNoOwotCWliYi0+cHJuZyA9ICh1aW50MzJfdCkgdG9fdXNlcl9wb2ludGVyKGliYik7CiAJaWJi LT5mZW5jZSA9IC0xOwogCi0JZ3R0X3NpemUgPSBnZW1fYXBlcnR1cmVfc2l6ZShpOTE1KTsKLQlp ZiAoIWdlbV91c2VzX2Z1bGxfcHBndHQoaTkxNSkpCi0JCWd0dF9zaXplIC89IDI7Ci0JaWYgKChn dHRfc2l6ZSAtIDEpID4+IDMyKSB7CisJaWJiLT5ndHRfc2l6ZSA9IGdlbV9hcGVydHVyZV9zaXpl KGk5MTUpOworCWlmICgoaWJiLT5ndHRfc2l6ZSAtIDEpID4+IDMyKQogCQlpYmItPnN1cHBvcnRz XzQ4Yl9hZGRyZXNzID0gdHJ1ZTsKIAotCQkvKgotCQkgKiBVbnRpbCB3ZSBkZXZlbG9wIElHVCBh ZGRyZXNzIGFsbG9jYXRvciB3ZSB3b3JrYXJvdW5kCi0JCSAqIHBsYXlpbmcgd2l0aCBjYW5vbmlj YWwgYWRkcmVzc2VzIHdpdGggNDctYml0IHNldCB0byAxCi0JCSAqIGp1c3QgYnkgbGltaXRpbmcg Z3R0IHNpemUgdG8gNDYtYml0IHdoZW4gZ3R0IGlzIDQ3IG9yIDQ4Ci0JCSAqIGJpdCBzaXplLiBD dXJyZW50IGludGVyZmFjZSBkb2Vzbid0IHBhc3MgYm8gc2l6ZSwgc28KLQkJICogbGltaXRpbmcg dG8gNDYgYml0IG1ha2UgdXMgc3VyZSB3ZSB3b24ndCBlbnRlciB0bwotCQkgKiBhZGRyZXNzZXMg d2l0aCA0Ny1iaXQgc2V0ICh3ZSB1c2UgMzItYml0IHNpemUgbm93IHNvCi0JCSAqIHN0aWxsIHdl IGZpdCA0Ny1iaXQgYWRkcmVzcyBzcGFjZSkuCi0JCSAqLwotCQlpZiAoZ3R0X3NpemUgJiAoM3Vs bCA8PCA0NykpCi0JCQlndHRfc2l6ZSA9ICgxdWxsIDw8IDQ2KTsKLQl9Ci0JaWJiLT5ndHRfc2l6 ZSA9IGd0dF9zaXplOwotCi0JaWJiLT5iYXRjaF9vZmZzZXQgPSBfX2ludGVsX2JiX2dldF9vZmZz ZXQoaWJiLAotCQkJCQkJICBpYmItPmhhbmRsZSwKLQkJCQkJCSAgaWJiLT5zaXplLAotCQkJCQkJ ICBpYmItPmFsaWdubWVudCk7Ci0JaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGliYi0+aGFuZGxl LCBpYmItPnNpemUsCi0JCQkgICAgaWJiLT5iYXRjaF9vZmZzZXQsIGZhbHNlKTsKKwlvYmplY3Qg PSBpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5kbGUsIGliYi0+c2l6ZSwKKwkJCQkg ICAgIElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MsIGliYi0+YWxpZ25tZW50LAorCQkJCSAgICAg ZmFsc2UpOworCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0LT5vZmZzZXQ7CiAKIAlpYmItPnJl ZmNvdW50ID0gMTsKIAogCXJldHVybiBpYmI7CiB9CiAKKy8qKgorICogaW50ZWxfYmJfY3JlYXRl X2Z1bGw6CisgKiBAaTkxNTogZHJtIGZkCisgKiBAY3R4OiBjb250ZXh0CisgKiBAc2l6ZTogc2l6 ZSBvZiB0aGUgYmF0Y2hidWZmZXIKKyAqIEBhbGxvY2F0b3JfdHlwZTogYWxsb2NhdG9yIHR5cGUs IFNJTVBMRSwgUkFORE9NLCAuLi4KKyAqCisgKiBDcmVhdGVzIGJiIHdpdGggY29udGV4dCBwYXNz ZWQgaW4gQGN0eCwgc2l6ZSBpbiBAc2l6ZSBhbmQgYWxsb2NhdG9yIHR5cGUKKyAqIGluIEBhbGxv Y2F0b3JfdHlwZS4gUmVsb2NhdGlvbnMgYXJlIHNldCB0byBmYWxzZSBiZWNhdXNlIElHVCBhbGxv Y2F0b3IKKyAqIGlzIG5vdCB1c2VkIGluIHRoYXQgY2FzZS4KKyAqCisgKiBSZXR1cm5zOgorICoK KyAqIFBvaW50ZXIgdGhlIGludGVsX2JiLCBhc3NlcnRzIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVj dCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX2Z1bGwoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwg dWludDMyX3Qgc2l6ZSwKKwkJCQkgICAgICB1aW50OF90IGFsbG9jYXRvcl90eXBlKQoreworCXJl dHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIGZhbHNlLCBhbGxvY2F0b3Jf dHlwZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfY3JlYXRlOgogICogQGk5MTU6IGRybSBmZApA QCAtMTMxNiw3ICsxMzQ3LDcgQEAgX19pbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90 IGN0eCwgdWludDMyX3Qgc2l6ZSwgYm9vbCBkb19yZWxvY3MpCiAgKi8KIHN0cnVjdCBpbnRlbF9i YiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogewotCXJldHVybiBf X2ludGVsX2JiX2NyZWF0ZShpOTE1LCAwLCBzaXplLCBmYWxzZSk7CisJcmV0dXJuIF9faW50ZWxf YmJfY3JlYXRlKGk5MTUsIDAsIHNpemUsIGZhbHNlLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsK IH0KIAogLyoqCkBAIC0xMzM0LDcgKzEzNjUsNyBAQCBzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2Ji X2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKIHN0cnVjdCBpbnRlbF9iYiAqCiBpbnRl bF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90 IHNpemUpCiB7Ci0JcmV0dXJuIF9faW50ZWxfYmJfY3JlYXRlKGk5MTUsIGN0eCwgc2l6ZSwgZmFs c2UpOworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIGZhbHNlLCBJ TlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKIH0KIAogLyoqCkBAIC0xMzUxLDcgKzEzODIsNyBAQCBp bnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQz Ml90IHNpemUpCiAgKi8KIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVs b2NzKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2NyZWF0 ZShpOTE1LCAwLCBzaXplLCB0cnVlKTsKKwlyZXR1cm4gX19pbnRlbF9iYl9jcmVhdGUoaTkxNSwg MCwgc2l6ZSwgdHJ1ZSwgSU5URUxfQUxMT0NBVE9SX05PTkUpOwogfQogCiAvKioKQEAgLTEzNzAs NyArMTQwMSw3IEBAIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2Nz KGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogc3RydWN0IGludGVsX2JiICoKIGludGVsX2JiX2Ny ZWF0ZV93aXRoX3JlbG9jc19hbmRfY29udGV4dChpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50 MzJfdCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUs IHRydWUpOworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIHRydWUs IElOVEVMX0FMTE9DQVRPUl9OT05FKTsKIH0KIAogc3RhdGljIHZvaWQgX19pbnRlbF9iYl9kZXN0 cm95X3JlbG9jYXRpb25zKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQpAQCAtMTQyNCw2ICsxNDU1LDEw IEBAIHZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAlfX2ludGVs X2JiX2Rlc3Ryb3lfb2JqZWN0cyhpYmIpOwogCV9faW50ZWxfYmJfZGVzdHJveV9jYWNoZShpYmIp OwogCisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5URUxfQUxMT0NBVE9SX05PTkUpIHsK KwkJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoaWJiLT5hbGxvY2F0b3JfaGFuZGxlLCBpYmItPmhhbmRs ZSk7CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShpYmItPmFsbG9jYXRvcl9oYW5kbGUpOworCX0K IAlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7CiAKIAlpZiAoaWJiLT5mZW5jZSA+ PSAwKQpAQCAtMTQ0MCw2ICsxNDc1LDcgQEAgdm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBp bnRlbF9iYiAqaWJiKQogICoKICAqIFJlY3JlYXRlIGJhdGNoIGJvIHdoZW4gdGhlcmUncyBubyBh ZGRpdGlvbmFsIHJlZmVyZW5jZS4KICovCisKIHZvaWQgaW50ZWxfYmJfcmVzZXQoc3RydWN0IGlu dGVsX2JiICppYmIsIGJvb2wgcHVyZ2Vfb2JqZWN0c19jYWNoZSkKIHsKIAl1aW50MzJfdCBpOwpA QCAtMTQ2MywyOCArMTQ5OSwzMiBAQCB2b2lkIGludGVsX2JiX3Jlc2V0KHN0cnVjdCBpbnRlbF9i YiAqaWJiLCBib29sIHB1cmdlX29iamVjdHNfY2FjaGUpCiAJX19pbnRlbF9iYl9kZXN0cm95X29i amVjdHMoaWJiKTsKIAlfX3JlYWxsb2NhdGVfb2JqZWN0cyhpYmIpOwogCi0JaWYgKHB1cmdlX29i amVjdHNfY2FjaGUpIHsKKwlpZiAocHVyZ2Vfb2JqZWN0c19jYWNoZSkKIAkJX19pbnRlbF9iYl9k ZXN0cm95X2NhY2hlKGliYik7CisKKwkvKgorCSAqIFdoZW4gd2UgdXNlIGFsbG9jYXRvcnMgd2Un cmUgaW4gbm8tcmVsb2MgbW9kZSBzbyB3ZSBoYXZlIHRvIGZyZWUKKwkgKiBhbmQgcmVhY3F1aXJl IG9mZnNldCAoaWJiLT5oYW5kbGUgY2FuIGNoYW5nZSBpbiBtdWx0aXByb2Nlc3MKKwkgKiBlbnZp cm9ubWVudCkuIFdlIGFsc28gaGF2ZSB0byByZW1vdmUgYW5kIGFkZCBpdCBhZ2FpbiB0bworCSAq IG9iamVjdHMgYW5kIGNhY2hlIHRyZWUuCisJICovCisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUg IT0gSU5URUxfQUxMT0NBVE9SX05PTkUgJiYgIXB1cmdlX29iamVjdHNfY2FjaGUpCisJCWludGVs X2JiX3JlbW92ZV9vYmplY3QoaWJiLCBpYmItPmhhbmRsZSwgaWJiLT5iYXRjaF9vZmZzZXQsCisJ CQkJICAgICAgIGliYi0+c2l6ZSk7CisKKwlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRs ZSk7CisJaWJiLT5oYW5kbGUgPSBnZW1fY3JlYXRlKGliYi0+aTkxNSwgaWJiLT5zaXplKTsKKwor CS8qIEtlZXAgYWRkcmVzcyBmb3IgYmIgaW4gcmVsb2MgbW9kZSBhbmQgUkFORE9NIGFsbG9jYXRv ciAqLworCWlmIChpYmItPmFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUp CiAJCWliYi0+YmF0Y2hfb2Zmc2V0ID0gX19pbnRlbF9iYl9nZXRfb2Zmc2V0KGliYiwKIAkJCQkJ CQkgIGliYi0+aGFuZGxlLAogCQkJCQkJCSAgaWJiLT5zaXplLAogCQkJCQkJCSAgaWJiLT5hbGln bm1lbnQpOwotCX0gZWxzZSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpv YmplY3Q7Ci0KLQkJb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9vYmplY3QoaWJiLCBpYmItPmhhbmRs ZSk7Ci0JCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0ID8gb2JqZWN0LT5vZmZzZXQgOgotCQkJ CQkgICAgIF9faW50ZWxfYmJfZ2V0X29mZnNldChpYmIsCi0JCQkJCQkJCSAgIGliYi0+aGFuZGxl LAotCQkJCQkJCQkgICBpYmItPnNpemUsCi0JCQkJCQkJCSAgIGliYi0+YWxpZ25tZW50KTsKLQl9 Ci0KLQlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7Ci0JaWJiLT5oYW5kbGUgPSBn ZW1fY3JlYXRlKGliYi0+aTkxNSwgaWJiLT5zaXplKTsKIAogCWludGVsX2JiX2FkZF9vYmplY3Qo aWJiLCBpYmItPmhhbmRsZSwgaWJiLT5zaXplLAotCQkJICAgIGliYi0+YmF0Y2hfb2Zmc2V0LCBm YWxzZSk7CisJCQkgICAgaWJiLT5iYXRjaF9vZmZzZXQsCisJCQkgICAgaWJiLT5hbGlnbm1lbnQs IGZhbHNlKTsKIAlpYmItPnB0ciA9IGliYi0+YmF0Y2g7CiAJbWVtc2V0KGliYi0+YmF0Y2gsIDAs IGliYi0+c2l6ZSk7CiB9CkBAIC0xNTIzLDggKzE1NjMsOCBAQCB2b2lkIGludGVsX2JiX3ByaW50 KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogCQkgaWJiLT5pOTE1LCBpYmItPmdlbiwgaWJiLT5kZXZp ZCwgaWJiLT5kZWJ1Zyk7CiAJaWd0X2luZm8oImhhbmRsZTogJXUsIHNpemU6ICV1LCBiYXRjaDog JXAsIHB0cjogJXBcbiIsCiAJCSBpYmItPmhhbmRsZSwgaWJiLT5zaXplLCBpYmItPmJhdGNoLCBp YmItPnB0cik7Ci0JaWd0X2luZm8oInBybmc6ICV1LCBndHRfc2l6ZTogJSIgUFJJdTY0ICIsIHN1 cHBvcnRzIDQ4Yml0OiAlZFxuIiwKLQkJIGliYi0+cHJuZywgaWJiLT5ndHRfc2l6ZSwgaWJiLT5z dXBwb3J0c180OGJfYWRkcmVzcyk7CisJaWd0X2luZm8oImd0dF9zaXplOiAlIiBQUkl1NjQgIiwg c3VwcG9ydHMgNDhiaXQ6ICVkXG4iLAorCQkgaWJiLT5ndHRfc2l6ZSwgaWJiLT5zdXBwb3J0c180 OGJfYWRkcmVzcyk7CiAJaWd0X2luZm8oImN0eDogJXVcbiIsIGliYi0+Y3R4KTsKIAlpZ3RfaW5m bygicm9vdDogJXBcbiIsIGliYi0+cm9vdCk7CiAJaWd0X2luZm8oIm9iamVjdHM6ICVwLCBudW1f b2JqZWN0czogJXUsIGFsbG9jYXRlZCBvYmo6ICV1XG4iLApAQCAtMTU5OCw3ICsxNjM4LDcgQEAg X19hZGRfdG9fY2FjaGUoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlp ZiAoKmZvdW5kID09IG9iamVjdCkgewogCQltZW1zZXQob2JqZWN0LCAwLCBzaXplb2YoKm9iamVj dCkpOwogCQlvYmplY3QtPmhhbmRsZSA9IGhhbmRsZTsKLQkJb2JqZWN0LT5hbGlnbm1lbnQgPSBp YmItPmFsaWdubWVudDsKKwkJb2JqZWN0LT5vZmZzZXQgPSBJTlRFTF9CVUZfSU5WQUxJRF9BRERS RVNTOwogCX0gZWxzZSB7CiAJCWZyZWUob2JqZWN0KTsKIAkJb2JqZWN0ID0gKmZvdW5kOwpAQCAt MTYwNyw2ICsxNjQ3LDI1IEBAIF9fYWRkX3RvX2NhY2hlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1 aW50MzJfdCBoYW5kbGUpCiAJcmV0dXJuIG9iamVjdDsKIH0KIAorc3RhdGljIGJvb2wgX19yZW1v dmVfZnJvbV9jYWNoZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQsICpvYmplY3Q7CisKKwlv YmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7CisJaWYgKCFvYmplY3Qp IHsKKwkJaWd0X3dhcm4oIk9iamVjdDogaGFuZGxlOiAldSBub3QgZm91bmRcbiIsIGhhbmRsZSk7 CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlmb3VuZCA9IHRkZWxldGUoKHZvaWQgKikgb2JqZWN0 LCAmaWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0cyk7CisJaWYgKCFmb3VuZCkKKwkJcmV0dXJu IGZhbHNlOworCisJZnJlZShvYmplY3QpOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBp bnQgX19jb21wYXJlX2hhbmRsZXMoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewog CXJldHVybiAoaW50KSAoKihpbnQzMl90ICopIHAxIC0gKihpbnQzMl90ICopIHAyKTsKQEAgLTE2 MzAsMTIgKzE2ODksNTQgQEAgc3RhdGljIHZvaWQgX19hZGRfdG9fb2JqZWN0cyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIF9fcmVtb3ZlX2Zyb21fb2JqZWN0cyhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmpl Y3QyICpvYmplY3QpCit7CisJdWludDMyX3QgaSwgKipoYW5kbGUsICp0b19mcmVlOworCWJvb2wg Zm91bmQgPSBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkgPCBpYmItPm51bV9vYmplY3RzOyBpKysp IHsKKwkJaWYgKGliYi0+b2JqZWN0c1tpXSA9PSBvYmplY3QpIHsKKwkJCWZvdW5kID0gdHJ1ZTsK KwkJCWJyZWFrOworCQl9CisJfQorCisJLyoKKwkgKiBXaGVuIHdlIHJlc2V0IGJiICh3aXRob3V0 IHB1cmdpbmcpIHdlIGhhdmU6CisJICogMS4gY2FjaGUgd2hpY2ggY29udGFpbnMgYWxsIGNhY2hl ZCBvYmplY3RzCisJICogMi4gb2JqZWN0cyBhcnJheSB3aGljaCBjb250YWlucyBvbmx5IGJiIG9i amVjdCAoY2xlYXJlZCBpbiByZXNldAorCSAqICAgIHBhdGggd2l0aCBiYiBvYmplY3QgYWRkZWQg YXQgdGhlIGVuZCkKKwkgKiBTbyAhZm91bmQgaXMgbm9ybWFsIHNpdHVhdGlvbiBhbmQgbm8gd2Fy bmluZyBpcyBhZGRlZCBoZXJlLgorCSAqLworCWlmICghZm91bmQpCisJCXJldHVybjsKKworCWli Yi0+bnVtX29iamVjdHMtLTsKKwlpZiAoaSA8IGliYi0+bnVtX29iamVjdHMpCisJCW1lbW1vdmUo JmliYi0+b2JqZWN0c1tpXSwgJmliYi0+b2JqZWN0c1tpICsgMV0sCisJCQlzaXplb2Yob2JqZWN0 KSAqIChpYmItPm51bV9vYmplY3RzIC0gaSkpOworCisJaGFuZGxlID0gdGZpbmQoKHZvaWQgKikg Jm9iamVjdC0+aGFuZGxlLAorCQkgICAgICAgJmliYi0+Y3VycmVudCwgX19jb21wYXJlX2hhbmRs ZXMpOworCWlmICghaGFuZGxlKSB7CisJCWlndF93YXJuKCJPYmplY3QgJXUgZG9lc24ndCBleGlz dCBpbiB0aGUgdHJlZSwgY2FuJ3QgcmVtb3ZlIiwKKwkJCSBvYmplY3QtPmhhbmRsZSk7CisJCXJl dHVybjsKKwl9CisKKwl0b19mcmVlID0gKmhhbmRsZTsKKwl0ZGVsZXRlKCh2b2lkICopICZvYmpl Y3QtPmhhbmRsZSwgJmliYi0+Y3VycmVudCwgX19jb21wYXJlX2hhbmRsZXMpOworCWZyZWUodG9f ZnJlZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfYWRkX29iamVjdDoKICAqIEBpYmI6IHBvaW50 ZXIgdG8gaW50ZWxfYmIKICAqIEBoYW5kbGU6IHdoaWNoIGhhbmRsZSB0byBhZGQgdG8gb2JqZWN0 cyBhcnJheQogICogQHNpemU6IG9iamVjdCBzaXplCiAgKiBAb2Zmc2V0OiBwcmVzdW1lZCBvZmZz ZXQgb2YgdGhlIG9iamVjdCB3aGVuIG5vIHJlbG9jYXRpb24gaXMgZW5mb3JjZWQKKyAqIEBhbGln bm1lbnQ6IGFsaWdubWVudCBvZiB0aGUgb2JqZWN0LCBpZiAwIGl0IHdpbGwgYmUgc2V0IHRvIHBh Z2Ugc2l6ZQogICogQHdyaXRlOiBkb2VzIGEgaGFuZGxlIGlzIGEgcmVuZGVyIHRhcmdldAogICoK ICAqIEZ1bmN0aW9uIGFkZHMgb3IgdXBkYXRlcyBleGVjb2JqIHNsb3QgaW4gYmIgb2JqZWN0cyBh cnJheSBhbmQKQEAgLTE2NDMsMjMgKzE3NDQsNzMgQEAgc3RhdGljIHZvaWQgX19hZGRfdG9fb2Jq ZWN0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKICAqIGJlIG1hcmtlZCB3aXRoIEVYRUNfT0JKRUNU X1dSSVRFIGZsYWcuCiAgKi8KIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKLWlu dGVsX2JiX2FkZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwg dWludDMyX3Qgc2l6ZSwKLQkJICAgIHVpbnQ2NF90IG9mZnNldCwgYm9vbCB3cml0ZSkKK2ludGVs X2JiX2FkZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWlu dDY0X3Qgc2l6ZSwKKwkJICAgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYWxpZ25tZW50LCBi b29sIHdyaXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmplY3Q7 CiAKKwlpZ3RfYXNzZXJ0KElOVkFMSURfQUREUihvZmZzZXQpIHx8IGFsaWdubWVudCA9PSAwCisJ CSAgIHx8IEFMSUdOKG9mZnNldCwgYWxpZ25tZW50KSA9PSBvZmZzZXQpOworCiAJb2JqZWN0ID0g X19hZGRfdG9fY2FjaGUoaWJiLCBoYW5kbGUpOworCW9iamVjdC0+YWxpZ25tZW50ID0gYWxpZ25t ZW50ID86IDQwOTY7CiAJX19hZGRfdG9fb2JqZWN0cyhpYmIsIG9iamVjdCk7CiAKLQkvKiBMaW1p dCBjdXJyZW50IG9mZnNldCB0byBndHQgc2l6ZSAqLworCS8qCisJICogSWYgb2JqZWN0LT5vZmZz ZXQgPT0gSU5WQUxJRF9BRERSRVNTIHdlIGFkZGVkIGZyZXNobHkgb2JqZWN0IHRvIHRoZQorCSAq IGNhY2hlLiBJbiB0aGF0IGNhc2Ugd2UgaGF2ZSB0d28gY2hvaWNlczoKKwkgKiBhKSBnZXQgbmV3 IG9mZnNldCAocGFzc2VkIG9mZnNldCB3YXMgaW52YWxpZCkKKwkgKiBiKSB1c2Ugb2Zmc2V0IHBh c3NlZCBpbiB0aGUgY2FsbCAodmFsaWQpCisJICovCisJaWYgKElOVkFMSURfQUREUihvYmplY3Qt Pm9mZnNldCkpIHsKKwkJaWYgKElOVkFMSURfQUREUihvZmZzZXQpKSB7CisJCQlvZmZzZXQgPSBf X2ludGVsX2JiX2dldF9vZmZzZXQoaWJiLCBoYW5kbGUsIHNpemUsCisJCQkJCQkgICAgICAgb2Jq ZWN0LT5hbGlnbm1lbnQpOworCQl9IGVsc2UgeworCQkJb2Zmc2V0ID0gb2Zmc2V0ICYgKGliYi0+ Z3R0X3NpemUgLSAxKTsKKworCQkJLyoKKwkJCSAqIEZvciBzaW1wbGUgYWxsb2NhdG9yIGNoZWNr IGVudHJ5IGNvbnNpc3RlbmN5CisJCQkgKiAtIHJlc2VydmUgaWYgaXQgaXMgbm90IGFscmVhZHkg YWxsb2NhdGVkLgorCQkJICovCisJCQlpZiAoaWJiLT5hbGxvY2F0b3JfdHlwZSA9PSBJTlRFTF9B TExPQ0FUT1JfU0lNUExFKSB7CisJCQkJYm9vbCBhbGxvY2F0ZWQsIHJlc2VydmVkOworCisJCQkJ cmVzZXJ2ZWQgPSBpbnRlbF9hbGxvY2F0b3JfcmVzZXJ2ZV9pZl9ub3RfYWxsb2NhdGVkKGliYi0+ YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJCQkJCQkgICAgaGFuZGxlLCBzaXplLCBvZmZzZXQsCisJ CQkJCQkJCQkJICAgICZhbGxvY2F0ZWQpOworCQkJCWlndF9hc3NlcnRfZihhbGxvY2F0ZWQgfHwg cmVzZXJ2ZWQsCisJCQkJCSAgICAgIkNhbid0IGdldCBvZmZzZXQsIGFsbG9jYXRlZDogJWQsIHJl c2VydmVkOiAlZFxuIiwKKwkJCQkJICAgICBhbGxvY2F0ZWQsIHJlc2VydmVkKTsKKwkJCX0KKwkJ fQorCX0gZWxzZSB7CisJCS8qCisJCSAqIFRoaXMgYXNzZXJ0aW9uIG1ha2VzIHNlbnNlIG9ubHkg d2hlbiB3ZSBoYXZlIHRvIGJlIGNvbnNpc3RlbnQKKwkJICogd2l0aCB1bmRlcmx5aW5nIGFsbG9j YXRvci4gRm9yIHJlbG9jYXRpb25zIGFuZCB3aGVuICFwcGd0dAorCQkgKiB3ZSBjYW4gZXhwZWN0 IGFkZHJlc3NlcyBwYXNzZWQgYnkgdGhlIHVzZXIgY2FuIGJlIG1vdmVkCisJCSAqIHdpdGhpbiB0 aGUgZHJpdmVyLgorCQkgKi8KKwkJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgPT0gSU5URUxfQUxM T0NBVE9SX1NJTVBMRSkKKwkJCWlndF9hc3NlcnRfZihvYmplY3QtPm9mZnNldCA9PSBvZmZzZXQs CisJCQkJICAgICAiKHBpZDogJWxkKSBoYW5kbGU6ICV1LCBvZmZzZXQgbm90IG1hdGNoOiAlIiBQ Ukl4NjQgIiA8PiAlIiBQUkl4NjQgIlxuIiwKKwkJCQkgICAgIChsb25nKSBnZXRwaWQoKSwgaGFu ZGxlLAorCQkJCSAgICAgKHVpbnQ2NF90KSBvYmplY3QtPm9mZnNldCwKKwkJCQkgICAgIG9mZnNl dCk7CisJfQorCiAJb2JqZWN0LT5vZmZzZXQgPSBvZmZzZXQ7Ci0JaWYgKG9mZnNldCAhPSBJTlRF TF9CVUZfSU5WQUxJRF9BRERSRVNTKQorCisJLyogTGltaXQgY3VycmVudCBvZmZzZXQgdG8gZ3R0 IHNpemUgKi8KKwlpZiAob2Zmc2V0ICE9IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpIHsKIAkJ b2JqZWN0LT5vZmZzZXQgPSBnZW44X2Nhbm9uaWNhbF9hZGRyKG9mZnNldCAmIChpYmItPmd0dF9z aXplIC0gMSkpOwogCi0JaWYgKG9iamVjdC0+b2Zmc2V0ID09IElOVEVMX0JVRl9JTlZBTElEX0FE RFJFU1MpCisKKwl9IGVsc2UgewogCQlvYmplY3QtPm9mZnNldCA9IF9faW50ZWxfYmJfZ2V0X29m ZnNldChpYmIsCiAJCQkJCQkgICAgICAgaGFuZGxlLCBzaXplLAogCQkJCQkJICAgICAgIG9iamVj dC0+YWxpZ25tZW50KTsKKwl9CiAKIAlpZiAod3JpdGUpCiAJCW9iamVjdC0+ZmxhZ3MgfD0gRVhF Q19PQkpFQ1RfV1JJVEU7CkBAIC0xNjY3LDQwICsxODE4LDk1IEBAIGludGVsX2JiX2FkZF9vYmpl Y3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3Qgc2l6ZSwK IAlpZiAoaWJiLT5zdXBwb3J0c180OGJfYWRkcmVzcykKIAkJb2JqZWN0LT5mbGFncyB8PSBFWEVD X09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsKIAorCWlmIChpYmItPnVzZXNfZnVsbF9wcGd0 dCAmJiBpYmItPmFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpCisJCW9i amVjdC0+ZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOworCiAJcmV0dXJuIG9iamVjdDsKIH0K IAotc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgotaW50ZWxfYmJfYWRkX2ludGVs X2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBib29sIHdy aXRlKQorYm9vbCBpbnRlbF9iYl9yZW1vdmVfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1 aW50MzJfdCBoYW5kbGUsCisJCQkgICAgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQog ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CisJc3RydWN0IGRybV9p OTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsKKwlib29sIGlzX3Jlc2VydmVkOwogCi0Jb2Jq ID0gaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGJ1Zi0+aGFuZGxlLAotCQkJCSAgaW50ZWxfYnVm X2JvX3NpemUoYnVmKSwKLQkJCQkgIGJ1Zi0+YWRkci5vZmZzZXQsIHdyaXRlKTsKKwlvYmplY3Qg PSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7CisJaWYgKCFvYmplY3QpCisJCXJl dHVybiBmYWxzZTsKIAotCS8qIEZvciBjb21wcmVzc2VkIHN1cmZhY2VzIGVuc3VyZSBhZGRyZXNz IGlzIGFsaWduZWQgdG8gNjRLQiAqLwotCWlmIChpYmItPmdlbiA+PSAxMiAmJiBidWYtPmNvbXBy ZXNzaW9uKSB7Ci0JCW9iai0+b2Zmc2V0ICY9IH4oMHgxMDAwMCAtIDEpOwotCQlvYmotPmFsaWdu bWVudCA9IDB4MTAwMDA7CisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5URUxfQUxMT0NB VE9SX05PTkUpIHsKKwkJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoaWJiLT5hbGxvY2F0b3JfaGFuZGxl LCBoYW5kbGUpOworCQlpc19yZXNlcnZlZCA9IGludGVsX2FsbG9jYXRvcl9pc19yZXNlcnZlZChp YmItPmFsbG9jYXRvcl9oYW5kbGUsCisJCQkJCQkJICBzaXplLCBvZmZzZXQpOworCQlpZiAoaXNf cmVzZXJ2ZWQpCisJCQlpbnRlbF9hbGxvY2F0b3JfdW5yZXNlcnZlKGliYi0+YWxsb2NhdG9yX2hh bmRsZSwgaGFuZGxlLAorCQkJCQkJICBzaXplLCBvZmZzZXQpOwogCX0KIAotCS8qIEZvciBnZW4z IGVuc3VyZSB0aWxlZCBidWZmZXJzIGFyZSBhbGlnbmVkIHRvIHBvd2VyIG9mIHR3byBzaXplICov Ci0JaWYgKGliYi0+Z2VuID09IDMgJiYgYnVmLT50aWxpbmcpIHsKLQkJdWludDY0X3QgYWxpZ25t ZW50ID0gMTAyNCAqIDEwMjQ7CisJX19yZW1vdmVfZnJvbV9vYmplY3RzKGliYiwgb2JqZWN0KTsK KwlfX3JlbW92ZV9mcm9tX2NhY2hlKGliYiwgaGFuZGxlKTsKIAotCQl3aGlsZSAoYWxpZ25tZW50 IDwgYnVmLT5zdXJmYWNlWzBdLnNpemUpCi0JCQlhbGlnbm1lbnQgPDw9IDE7Ci0JCW9iai0+b2Zm c2V0ICY9IH4oYWxpZ25tZW50IC0gMSk7Ci0JCW9iai0+YWxpZ25tZW50ID0gYWxpZ25tZW50Owor CXJldHVybiB0cnVlOworfQorCitzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKgorX19pbnRlbF9iYl9hZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1 Y3QgaW50ZWxfYnVmICpidWYsCisJCQkgdWludDY0X3QgYWxpZ25tZW50LCBib29sIHdyaXRlKQor eworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CisKKwlpZ3RfYXNzZXJ0 KEFMSUdOKGFsaWdubWVudCwgNDA5NikgPT0gYWxpZ25tZW50KTsKKworCWlmICghYWxpZ25tZW50 KSB7CisJCWFsaWdubWVudCA9IDB4MTAwMDsKKworCQlpZiAoaWJiLT5nZW4gPj0gMTIgJiYgYnVm LT5jb21wcmVzc2lvbikKKwkJCWFsaWdubWVudCA9IDB4MTAwMDA7CisKKwkJLyogRm9yIGdlbjMg ZW5zdXJlIHRpbGVkIGJ1ZmZlcnMgYXJlIGFsaWduZWQgdG8gcG93ZXIgb2YgdHdvIHNpemUgKi8K KwkJaWYgKGliYi0+Z2VuID09IDMgJiYgYnVmLT50aWxpbmcpIHsKKwkJCWFsaWdubWVudCA9IDEw MjQgKiAxMDI0OworCisJCQl3aGlsZSAoYWxpZ25tZW50IDwgYnVmLT5zdXJmYWNlWzBdLnNpemUp CisJCQkJYWxpZ25tZW50IDw8PSAxOworCQl9CiAJfQogCi0JLyogVXBkYXRlIGFkZHJlc3MgaW4g aW50ZWxfYnVmIGJ1ZmZlciAqLworCW9iaiA9IGludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBidWYt PmhhbmRsZSwgaW50ZWxfYnVmX2JvX3NpemUoYnVmKSwKKwkJCQkgIGJ1Zi0+YWRkci5vZmZzZXQs IGFsaWdubWVudCwgd3JpdGUpOwogCWJ1Zi0+YWRkci5vZmZzZXQgPSBvYmotPm9mZnNldDsKIAor CWlmICghaWJiLT5lbmZvcmNlX3JlbG9jcykKKwkJb2JqLT5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7 CisKIAlyZXR1cm4gb2JqOwogfQogCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq CitpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50 ZWxfYnVmICpidWYsIGJvb2wgd3JpdGUpCit7CisJcmV0dXJuIF9faW50ZWxfYmJfYWRkX2ludGVs X2J1ZihpYmIsIGJ1ZiwgMCwgd3JpdGUpOworfQorCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNf b2JqZWN0MiAqCitpbnRlbF9iYl9hZGRfaW50ZWxfYnVmX3dpdGhfYWxpZ25tZW50KHN0cnVjdCBp bnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkJICAgICAgdWludDY0X3Qg YWxpZ25tZW50LCBib29sIHdyaXRlKQoreworCXJldHVybiBfX2ludGVsX2JiX2FkZF9pbnRlbF9i dWYoaWJiLCBidWYsIGFsaWdubWVudCwgd3JpdGUpOworfQorCitib29sIGludGVsX2JiX3JlbW92 ZV9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikK K3sKKwlib29sIHJlbW92ZWQgPSBpbnRlbF9iYl9yZW1vdmVfb2JqZWN0KGliYiwgYnVmLT5oYW5k bGUsCisJCQkJCSAgICAgIGJ1Zi0+YWRkci5vZmZzZXQsCisJCQkJCSAgICAgIGludGVsX2J1Zl9i b19zaXplKGJ1ZikpOworCisJaWYgKHJlbW92ZWQpCisJCWJ1Zi0+YWRkci5vZmZzZXQgPSBJTlRF TF9CVUZfSU5WQUxJRF9BRERSRVNTOworCisJcmV0dXJuIHJlbW92ZWQ7Cit9CisKIHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKIGludGVsX2JiX2ZpbmRfb2JqZWN0KHN0cnVjdCBp bnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpCiB7CkBAIC0xNzA4LDYgKzE5MTQsOCBAQCBp bnRlbF9iYl9maW5kX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxl KQogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQ7CiAKIAlmb3VuZCA9 IHRmaW5kKCh2b2lkICopICZvYmplY3QsICZpYmItPnJvb3QsIF9fY29tcGFyZV9vYmplY3RzKTsK KwlpZiAoIWZvdW5kKQorCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiAqZm91bmQ7CiB9CkBAIC0x NzE4LDYgKzE5MjYsOCBAQCBpbnRlbF9iYl9vYmplY3Rfc2V0X2ZsYWcoc3RydWN0IGludGVsX2Ji ICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgZmxhZykKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5kbGUgfTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOwogCisJaWd0X2Fzc2VydF9mKGliYi0+ cm9vdCwgIlRyeWluZyB0byBzZWFyY2ggaW4gbnVsbCB0cmVlXG4iKTsKKwogCWZvdW5kID0gdGZp bmQoKHZvaWQgKikgJm9iamVjdCwgJmliYi0+cm9vdCwgX19jb21wYXJlX29iamVjdHMpOwogCWlm ICghZm91bmQpIHsKIAkJaWd0X3dhcm4oIlRyeWluZyB0byBzZXQgZmVuY2Ugb24gbm90IGZvdW5k IGhhbmRsZTogJXVcbiIsCkBAIC0xNzU3LDE0ICsxOTY3LDkgQEAgaW50ZWxfYmJfb2JqZWN0X2Ns ZWFyX2ZsYWcoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qg ZmxhZykKICAqIEB3cml0ZV9kb21haW46IGdlbSBkb21haW4gYml0IGZvciB0aGUgcmVsb2NhdGlv bgogICogQGRlbHRhOiBkZWx0YSB2YWx1ZSB0byBhZGQgdG8gQGJ1ZmZlcidzIGdwdSBhZGRyZXNz CiAgKiBAb2Zmc2V0OiBvZmZzZXQgd2l0aGluIGJiIHRvIGJlIHBhdGNoZWQKLSAqIEBwcmVzdW1l ZF9vZmZzZXQ6IGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLiBJZiAtMSBp cyBwYXNzZWQKLSAqIHRoZW4gZmluYWwgb2Zmc2V0IG9mIHRoZSBvYmplY3Qgd2lsbCBiZSByYW5k b21pemVkIChmb3Igbm8tcmVsb2MgYmIpIG9yCi0gKiAwIChmb3IgcmVsb2MgYmIsIGluIHRoYXQg Y2FzZSByZWxvYy5wcmVzdW1lZF9vZmZzZXQgd2lsbCBiZSAtMSkuIEluCi0gKiBjYXNlIGFkZHJl c3MgaXMga25vd24gaXQgc2hvdWxkIHBhc3NlZCBpbiBAcHJlc3VtZWRfb2Zmc2V0IChmb3Igbm8t cmVsb2MpLgogICoKICAqIEZ1bmN0aW9uIGFsbG9jYXRlcyBhZGRpdGlvbmFsIHJlbG9jYXRpb24g c2xvdCBpbiByZWxvYyBhcnJheSBmb3IgYSBoYW5kbGUuCi0gKiBJdCBhbHNvIGltcGxpY2l0bHkg YWRkcyBoYW5kbGUgaW4gdGhlIG9iamVjdHMgYXJyYXkgaWYgb2JqZWN0IGRvZXNuJ3QKLSAqIGV4 aXN0cyBidXQgZG9lc24ndCBtYXJrIGl0IGFzIGEgcmVuZGVyIHRhcmdldC4KKyAqIE9iamVjdCBt dXN0IGJlIHByZXZpb3VzbHkgYWRkZWQgdG8gYmIuCiAgKi8KIHN0YXRpYyB1aW50NjRfdCBpbnRl bF9iYl9hZGRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkJICAgdWludDMyX3QgdG9f aGFuZGxlLApAQCAtMTc3OSwxMyArMTk4NCw4IEBAIHN0YXRpYyB1aW50NjRfdCBpbnRlbF9iYl9h ZGRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgKm9iamVjdCwgKnRvX29iamVjdDsKIAl1aW50MzJfdCBpOwogCi0JaWYgKGliYi0+ ZW5mb3JjZV9yZWxvY3MpIHsKLQkJb2JqZWN0ID0gaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGhh bmRsZSwgMCwKLQkJCQkJICAgICBwcmVzdW1lZF9vZmZzZXQsIGZhbHNlKTsKLQl9IGVsc2Ugewot CQlvYmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7Ci0JCWlndF9hc3Nl cnQob2JqZWN0KTsKLQl9CisJb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9vYmplY3QoaWJiLCBoYW5k bGUpOworCWlndF9hc3NlcnQob2JqZWN0KTsKIAogCS8qIEZvciBpYmIgd2UgaGF2ZSByZWxvY3Mg YWxsb2NhdGVkIGluIGNodW5rcyAqLwogCWlmICh0b19oYW5kbGUgPT0gaWJiLT5oYW5kbGUpIHsK QEAgLTE5NzksNDUgKzIxNzksNDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmJfZHVtcF9leGVjYnVm KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCWludCBpLCBqOwogCXVpbnQ2NF90IGFkZHJlc3M7CiAK LQlpZ3RfaW5mbygiZXhlY2J1ZiBiYXRjaCBsZW46ICV1LCBzdGFydCBvZmZzZXQ6IDB4JXgsICIK LQkJICJEUjE6IDB4JXgsIERSNDogMHgleCwgIgotCQkgIm51bSBjbGlwOiAldSwgY2xpcHB0cjog MHglbGx4LCAiCi0JCSAiZmxhZ3M6IDB4JWxseCwgcnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxs eFxuIiwKLQkJIGV4ZWNidWYtPmJhdGNoX2xlbiwgZXhlY2J1Zi0+YmF0Y2hfc3RhcnRfb2Zmc2V0 LAotCQkgZXhlY2J1Zi0+RFIxLCBleGVjYnVmLT5EUjQsCi0JCSBleGVjYnVmLT5udW1fY2xpcHJl Y3RzLCBleGVjYnVmLT5jbGlwcmVjdHNfcHRyLAotCQkgZXhlY2J1Zi0+ZmxhZ3MsIGV4ZWNidWYt PnJzdmQxLCBleGVjYnVmLT5yc3ZkMik7Ci0KLQlpZ3RfaW5mbygiZXhlY2J1ZiBidWZmZXJfY291 bnQ6ICVkXG4iLCBleGVjYnVmLT5idWZmZXJfY291bnQpOworCWlndF9kZWJ1ZygiZXhlY2J1ZiBb cGlkOiAlbGQsIGZkOiAlZCwgY3R4OiAldV1cbiIsCisJCSAgKGxvbmcpIGdldHBpZCgpLCBpYmIt Pmk5MTUsIGliYi0+Y3R4KTsKKwlpZ3RfZGVidWcoImV4ZWNidWYgYmF0Y2ggbGVuOiAldSwgc3Rh cnQgb2Zmc2V0OiAweCV4LCAiCisJCSAgIkRSMTogMHgleCwgRFI0OiAweCV4LCAiCisJCSAgIm51 bSBjbGlwOiAldSwgY2xpcHB0cjogMHglbGx4LCAiCisJCSAgImZsYWdzOiAweCVsbHgsIHJzdmQx OiAweCVsbHgsIHJzdmQyOiAweCVsbHhcbiIsCisJCSAgZXhlY2J1Zi0+YmF0Y2hfbGVuLCBleGVj YnVmLT5iYXRjaF9zdGFydF9vZmZzZXQsCisJCSAgZXhlY2J1Zi0+RFIxLCBleGVjYnVmLT5EUjQs CisJCSAgZXhlY2J1Zi0+bnVtX2NsaXByZWN0cywgZXhlY2J1Zi0+Y2xpcHJlY3RzX3B0ciwKKwkJ ICBleGVjYnVmLT5mbGFncywgZXhlY2J1Zi0+cnN2ZDEsIGV4ZWNidWYtPnJzdmQyKTsKKworCWln dF9kZWJ1ZygiZXhlY2J1ZiBidWZmZXJfY291bnQ6ICVkXG4iLCBleGVjYnVmLT5idWZmZXJfY291 bnQpOwogCWZvciAoaSA9IDA7IGkgPCBleGVjYnVmLT5idWZmZXJfY291bnQ7IGkrKykgewogCQlv YmplY3RzID0gJigoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKikKIAkJCSAgICBm cm9tX3VzZXJfcG9pbnRlcihleGVjYnVmLT5idWZmZXJzX3B0cikpW2ldOwogCQlyZWxvY3MgPSBm cm9tX3VzZXJfcG9pbnRlcihvYmplY3RzLT5yZWxvY3NfcHRyKTsKIAkJYWRkcmVzcyA9IG9iamVj dHMtPm9mZnNldDsKLQkJaWd0X2luZm8oIiBbJWRdIGhhbmRsZTogJXUsIHJlbG9jX2NvdW50OiAl ZCwgcmVsb2NfcHRyOiAlcCwgIgotCQkJICJhbGlnbjogMHglbGx4LCBvZmZzZXQ6IDB4JSIgUFJJ eDY0ICIsIGZsYWdzOiAweCVsbHgsICIKLQkJCSAicnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxs eFxuIiwKLQkJCSBpLCBvYmplY3RzLT5oYW5kbGUsIG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQs Ci0JCQkgcmVsb2NzLAotCQkJIG9iamVjdHMtPmFsaWdubWVudCwKLQkJCSBhZGRyZXNzLAotCQkJ IG9iamVjdHMtPmZsYWdzLAotCQkJIG9iamVjdHMtPnJzdmQxLCBvYmplY3RzLT5yc3ZkMik7CisJ CWlndF9kZWJ1ZygiIFslZF0gaGFuZGxlOiAldSwgcmVsb2NfY291bnQ6ICVkLCByZWxvY19wdHI6 ICVwLCAiCisJCQkgICJhbGlnbjogMHglbGx4LCBvZmZzZXQ6IDB4JSIgUFJJeDY0ICIsIGZsYWdz OiAweCVsbHgsICIKKwkJCSAgInJzdmQxOiAweCVsbHgsIHJzdmQyOiAweCVsbHhcbiIsCisJCQkg IGksIG9iamVjdHMtPmhhbmRsZSwgb2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCwKKwkJCSAgcmVs b2NzLAorCQkJICBvYmplY3RzLT5hbGlnbm1lbnQsCisJCQkgIGFkZHJlc3MsCisJCQkgIG9iamVj dHMtPmZsYWdzLAorCQkJICBvYmplY3RzLT5yc3ZkMSwgb2JqZWN0cy0+cnN2ZDIpOwogCQlpZiAo b2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCkgewotCQkJaWd0X2luZm8oIlx0ZXhlY2J1ZiByZWxv Y3M6XG4iKTsKKwkJCWlndF9kZWJ1ZygiXHRleGVjYnVmIHJlbG9jczpcbiIpOwogCQkJZm9yIChq ID0gMDsgaiA8IG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQ7IGorKykgewogCQkJCXJlbG9jID0g JnJlbG9jc1tqXTsKIAkJCQlhZGRyZXNzID0gcmVsb2MtPnByZXN1bWVkX29mZnNldDsKLQkJCQlp Z3RfaW5mbygiXHQgWyVkXSB0YXJnZXQgaGFuZGxlOiAldSwgIgotCQkJCQkgIm9mZnNldDogMHgl bGx4LCBkZWx0YTogMHgleCwgIgotCQkJCQkgInByZXN1bWVkX29mZnNldDogMHglIiBQUkl4NjQg IiwgIgotCQkJCQkgInJlYWRfZG9tYWluczogMHgleCwgIgotCQkJCQkgIndyaXRlX2RvbWFpbjog MHgleFxuIiwKLQkJCQkJIGosIHJlbG9jLT50YXJnZXRfaGFuZGxlLAotCQkJCQkgcmVsb2MtPm9m ZnNldCwgcmVsb2MtPmRlbHRhLAotCQkJCQkgYWRkcmVzcywKLQkJCQkJIHJlbG9jLT5yZWFkX2Rv bWFpbnMsCi0JCQkJCSByZWxvYy0+d3JpdGVfZG9tYWluKTsKKwkJCQlpZ3RfZGVidWcoIlx0IFsl ZF0gdGFyZ2V0IGhhbmRsZTogJXUsICIKKwkJCQkJICAib2Zmc2V0OiAweCVsbHgsIGRlbHRhOiAw eCV4LCAiCisJCQkJCSAgInByZXN1bWVkX29mZnNldDogMHglIiBQUkl4NjQgIiwgIgorCQkJCQkg ICJyZWFkX2RvbWFpbnM6IDB4JXgsICIKKwkJCQkJICAid3JpdGVfZG9tYWluOiAweCV4XG4iLAor CQkJCQkgIGosIHJlbG9jLT50YXJnZXRfaGFuZGxlLAorCQkJCQkgIHJlbG9jLT5vZmZzZXQsIHJl bG9jLT5kZWx0YSwKKwkJCQkJICBhZGRyZXNzLAorCQkJCQkgIHJlbG9jLT5yZWFkX2RvbWFpbnMs CisJCQkJCSAgcmVsb2MtPndyaXRlX2RvbWFpbik7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMDYwLDYg KzIyNjIsMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRfbm9kZShjb25zdCB2b2lkICpub2RlLCBWSVNJ VCB3aGljaCwgaW50IGRlcHRoKQogCX0KIH0KIAordm9pZCBpbnRlbF9iYl9kdW1wX2NhY2hlKHN0 cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWlndF9pbmZvKCJbcGlkOiAlbGRdIGR1bXAgY2FjaGVc biIsIChsb25nKSBnZXRwaWQoKSk7CisJdHdhbGsoaWJiLT5yb290LCBwcmludF9ub2RlKTsKK30K Kwogc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKIGNyZWF0ZV9vYmpl Y3RzX2FycmF5KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewpAQCAtMjA2OSw4ICsyMjc3LDEwIEBA IGNyZWF0ZV9vYmplY3RzX2FycmF5KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogCW9iamVjdHMgPSBt YWxsb2Moc2l6ZW9mKCpvYmplY3RzKSAqIGliYi0+bnVtX29iamVjdHMpOwogCWlndF9hc3NlcnQo b2JqZWN0cyk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0czsgaSsrKQorCWZv ciAoaSA9IDA7IGkgPCBpYmItPm51bV9vYmplY3RzOyBpKyspIHsKIAkJb2JqZWN0c1tpXSA9ICoo aWJiLT5vYmplY3RzW2ldKTsKKwkJb2JqZWN0c1tpXS5vZmZzZXQgPSBDQU5PTklDQUwob2JqZWN0 c1tpXS5vZmZzZXQpOworCX0KIAogCXJldHVybiBvYmplY3RzOwogfQpAQCAtMjA4NSw3ICsyMjk1 LDEwIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vZmZzZXRzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAog CQlvYmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIG9iamVjdHNbaV0uaGFuZGxlKTsK IAkJaWd0X2Fzc2VydChvYmplY3QpOwogCi0JCW9iamVjdC0+b2Zmc2V0ID0gb2JqZWN0c1tpXS5v ZmZzZXQ7CisJCW9iamVjdC0+b2Zmc2V0ID0gREVDQU5PTklDQUwob2JqZWN0c1tpXS5vZmZzZXQp OworCisJCWlmIChpID09IDApCisJCQlpYmItPmJhdGNoX29mZnNldCA9IG9iamVjdC0+b2Zmc2V0 OwogCX0KIH0KIApAQCAtMjE5Nyw3ICsyNDEwLDYgQEAgdWludDY0X3QgaW50ZWxfYmJfZ2V0X29i amVjdF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5k bGUgfTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOwotCXVpbnQ2 NF90IGFkZHJlc3M7CiAKIAlpZ3RfYXNzZXJ0KGliYik7CiAKQEAgLTIyMDUsMTIgKzI0MTcsNyBA QCB1aW50NjRfdCBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmli YiwgdWludDMyX3QgaGFuZGxlKQogCWlmICghZm91bmQpCiAJCXJldHVybiBJTlRFTF9CVUZfSU5W QUxJRF9BRERSRVNTOwogCi0JYWRkcmVzcyA9ICgqZm91bmQpLT5vZmZzZXQ7Ci0KLQlpZiAoYWRk cmVzcyA9PSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKQotCQlyZXR1cm4gYWRkcmVzczsKLQot CXJldHVybiBhZGRyZXNzICYgKGliYi0+Z3R0X3NpemUgLSAxKTsKKwlyZXR1cm4gKCpmb3VuZCkt Pm9mZnNldDsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaCBi L2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCmluZGV4IDRjOTMwYTg4Li43NDMxMzI2NiAxMDA2NDQK LS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVy LmgKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRlICJpbnRl bF9yZWcuaCIKICNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaW50ZWxfYWxsb2NhdG9y LmgiCiAKICNkZWZpbmUgQkFUQ0hfU1ogNDA5NgogI2RlZmluZSBCQVRDSF9SRVNFUlZFRCAxNgpA QCAtNDM1LDYgKzQzNiw5IEBAIGlndF9tZWRpYV9zcGluZnVuY190IGlndF9nZXRfbWVkaWFfc3Bp bmZ1bmMoaW50IGRldmlkKTsKICAqIEJhdGNoYnVmZmVyIHdpdGhvdXQgbGliZHJtIGRlcGVuZGVu Y3kKICAqLwogc3RydWN0IGludGVsX2JiIHsKKwl1aW50NjRfdCBhbGxvY2F0b3JfaGFuZGxlOwor CXVpbnQ4X3QgYWxsb2NhdG9yX3R5cGU7CisKIAlpbnQgaTkxNTsKIAl1bnNpZ25lZCBpbnQgZ2Vu OwogCWJvb2wgZGVidWc7CkBAIC00NDgsOSArNDUyLDkgQEAgc3RydWN0IGludGVsX2JiIHsKIAl1 aW50NjRfdCBhbGlnbm1lbnQ7CiAJaW50IGZlbmNlOwogCi0JdWludDMyX3QgcHJuZzsKIAl1aW50 NjRfdCBndHRfc2l6ZTsKIAlib29sIHN1cHBvcnRzXzQ4Yl9hZGRyZXNzOworCWJvb2wgdXNlc19m dWxsX3BwZ3R0OwogCiAJdWludDMyX3QgY3R4OwogCkBAIC00NzgsNiArNDgyLDggQEAgc3RydWN0 IGludGVsX2JiIHsKIAlpbnQzMl90IHJlZmNvdW50OwogfTsKIAorc3RydWN0IGludGVsX2JiICpp bnRlbF9iYl9jcmVhdGVfZnVsbChpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50MzJfdCBzaXpl LAorCQkJCSAgICAgIHVpbnQ4X3QgYWxsb2NhdG9yX3R5cGUpOwogc3RydWN0IGludGVsX2JiICpp bnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpOwogc3RydWN0IGludGVsX2Ji ICoKIGludGVsX2JiX2NyZWF0ZV93aXRoX2NvbnRleHQoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwg dWludDMyX3Qgc2l6ZSk7CkBAIC01MDQsNiArNTEwLDcgQEAgdm9pZCBpbnRlbF9iYl9kdW1wKHN0 cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CiB2b2lkIGludGVsX2Ji X3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBkZWJ1Zyk7CiB2b2lkIGludGVs X2JiX3NldF9kdW1wX2Jhc2U2NChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBkdW1wKTsKIAor LyoKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QKIGludGVsX2JiX3NldF9kZWZhdWx0X29iamVjdF9h bGlnbm1lbnQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQ2NF90IGFsaWdubWVudCkKIHsKQEAg LTUxOSw2ICs1MjYsNyBAQCBpbnRlbF9iYl9nZXRfZGVmYXVsdF9vYmplY3RfYWxpZ25tZW50KHN0 cnVjdCBpbnRlbF9iYiAqaWJiKQogewogCXJldHVybiBpYmItPmFsaWdubWVudDsKIH0KKyovCiAK IHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAq aWJiKQogewpAQCAtNTY4LDExICs1NzYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2Ji X291dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZHdvcmQpCiB9CiAKIHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKLWludGVsX2JiX2FkZF9vYmplY3Qoc3RydWN0IGlu dGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3Qgc2l6ZSwKLQkJICAgIHVpbnQ2 NF90IG9mZnNldCwgYm9vbCB3cml0ZSk7CitpbnRlbF9iYl9hZGRfb2JqZWN0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IHNpemUsCisJCSAgICB1aW50NjRf dCBvZmZzZXQsIHVpbnQ2NF90IGFsaWdubWVudCwgYm9vbCB3cml0ZSk7Citib29sIGludGVsX2Ji X3JlbW92ZV9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwKKwkJ CSAgICB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpOwogc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgKgogaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBib29sIHdyaXRlKTsKLQorc3RydWN0IGRybV9p OTE1X2dlbV9leGVjX29iamVjdDIgKgoraW50ZWxfYmJfYWRkX2ludGVsX2J1Zl93aXRoX2FsaWdu bWVudChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLAorCQkJCSAg ICAgIHVpbnQ2NF90IGFsaWdubWVudCwgYm9vbCB3cml0ZSk7Citib29sIGludGVsX2JiX3JlbW92 ZV9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1Zik7 CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCiBpbnRlbF9iYl9maW5kX29iamVj dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKTsKIApAQCAtNjE5LDYgKzYz Miw4IEBAIHVpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvY190b19vYmplY3Qoc3RydWN0IGlu dGVsX2JiICppYmIsCiAJCQkJCSB1aW50MzJfdCBvZmZzZXQsCiAJCQkJCSB1aW50NjRfdCBwcmVz dW1lZF9vZmZzZXQpOwogCit2b2lkIGludGVsX2JiX2R1bXBfY2FjaGUoc3RydWN0IGludGVsX2Ji ICppYmIpOworCiB2b2lkIGludGVsX2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQz Ml90IGVuZF9vZmZzZXQsCiAJCSAgIHVpbnQ2NF90IGZsYWdzLCBib29sIHN5bmMpOwogCi0tIAoy LjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=