From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 564276F570 for ; Thu, 22 Oct 2020 09:59:34 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Thu, 22 Oct 2020 11:58:54 +0200 Message-Id: <20201022095907.34225-12-zbigniew.kempczynski@intel.com> In-Reply-To: <20201022095907.34225-1-zbigniew.kempczynski@intel.com> References: <20201022095907.34225-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 11/24] 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 Z3R0IGdlbnMgKFpiaWduaWV3KQoKU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcgS2VtcGN6ecWEc2tp IDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERvbWluaWsg R3J6ZWdvcnplayA8ZG9taW5pay5ncnplZ29yemVrQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5j IHwgNDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIGxpYi9pbnRl bF9iYXRjaGJ1ZmZlci5oIHwgIDIzICstCiAyIGZpbGVzIGNoYW5nZWQsIDM3MCBpbnNlcnRpb25z KCspLCAxNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVy LmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCBmYzczNDk1Yy4uMjJkMjczNzYgMTAw NjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCisrKyBiL2xpYi9pbnRlbF9iYXRjaGJ1 ZmZlci5jCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAibWVkaWFfc3Bpbi5oIgogI2luY2x1 ZGUgImdwZ3B1X2ZpbGwuaCIKICNpbmNsdWRlICJpZ3RfYXV4LmgiCi0jaW5jbHVkZSAiaWd0X3Jh bmQuaCIKICNpbmNsdWRlICJpODMwX3JlZy5oIgogI2luY2x1ZGUgImh1Y19jb3B5LmgiCiAjaW5j bHVkZSA8Z2xpYi5oPgpAQCAtMTIwNiwyMyArMTIwNSw5IEBAIHN0YXRpYyB2b2lkIF9fcmVhbGxv Y2F0ZV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogCX0KIH0KIAotLyoKLSAqIGdlbjhf Y2Fub25pY2FsX2FkZHIKLSAqIFVzZWQgdG8gY29udmVydCBhbnkgYWRkcmVzcyBpbnRvIGNhbm9u aWNhbCBmb3JtLCBpLmUuIFs2Mzo0OF0gPT0gWzQ3XS4KLSAqIEJhc2VkIG9uIGtlcm5lbCdzIHNp Z25fZXh0ZW5kNjQgaW1wbGVtZW50YXRpb24uCi0gKiBAYWRkcmVzcyAtIGEgdmlydHVhbCBhZGRy ZXNzCi0gKi8KLSNkZWZpbmUgR0VOOF9ISUdIX0FERFJFU1NfQklUIDQ3Ci1zdGF0aWMgdWludDY0 X3QgZ2VuOF9jYW5vbmljYWxfYWRkcih1aW50NjRfdCBhZGRyZXNzKQotewotCWludCBzaGlmdCA9 IDYzIC0gR0VOOF9ISUdIX0FERFJFU1NfQklUOwotCi0JcmV0dXJuIChpbnQ2NF90KShhZGRyZXNz IDw8IHNoaWZ0KSA+PiBzaGlmdDsKLX0KLQogc3RhdGljIGlubGluZSB1aW50NjRfdCBfX2ludGVs X2JiX2dldF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkJCSAgICAgdWludDMyX3Qg aGFuZGxlLAotCQkJCQkgICAgIHVpbnQzMl90IHNpemUsCisJCQkJCSAgICAgdWludDY0X3Qgc2l6 ZSwKIAkJCQkJICAgICB1aW50MzJfdCBhbGlnbm1lbnQpCiB7CiAJdWludDY0X3Qgb2Zmc2V0OwpA QCAtMTIzMCwzMyArMTIxNSw3NyBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IF9faW50ZWxfYmJf Z2V0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlpZiAoaWJiLT5lbmZvcmNlX3JlbG9j cykKIAkJcmV0dXJuIDA7CiAKLQkvKiByYW5kb21pemUgdGhlIGFkZHJlc3MsIHdlIHRyeSB0byBh dm9pZCByZWxvY2F0aW9ucyAqLwotCW9mZnNldCA9IGhhcnNfcGV0cnVza2FfZjU0XzFfcmFuZG9t NjQoJmliYi0+cHJuZyk7Ci0Jb2Zmc2V0ICs9IDI1NiA8PCAxMDsgLyogS2VlcCB0aGUgbG93IDI1 NmsgY2xlYXIsIGZvciBuZWdhdGl2ZSBkZWx0YXMgKi8KLQlvZmZzZXQgJj0gaWJiLT5ndHRfc2l6 ZSAtIDE7Ci0Jb2Zmc2V0ICY9IH4oaWJiLT5hbGlnbm1lbnQgLSAxKTsKLQlvZmZzZXQgPSBnZW44 X2Nhbm9uaWNhbF9hZGRyKG9mZnNldCk7CisJb2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9j KGliYi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkgICAgICAgaGFuZGxlLCBzaXplLCBhbGlnbm1l bnQpOwogCi0JcmV0dXJuIG9mZnNldDsKKwlyZXR1cm4gQ0FOT05JQ0FMKG9mZnNldCk7CiB9CiAK IC8qKgotICogaW50ZWxfYmJfY3JlYXRlOgorICogX19pbnRlbF9iYl9jcmVhdGU6CiAgKiBAaTkx NTogZHJtIGZkCisgKiBAY3R4OiBjb250ZXh0CiAgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hi dWZmZXIKKyAqIEBkb19yZWxvY3M6IHVzZSByZWxvY2F0aW9ucyBvciBhbGxvY2F0b3IKKyAqIEBh bGxvY2F0b3JfdHlwZTogYWxsb2NhdG9yIHR5cGUsIG11c3QgYmUgSU5URUxfQUxMT0NBVE9SX05P TkUgZm9yIHJlbG9jYXRpb25zCisgKgorICogaW50ZWwtYmIgYXNzdW1lcyBpdCB3aWxsIHdvcmsg aW4gb25lIG9mIHR3byBtb2RlcyAtIHdpdGggcmVsb2NhdGlvbnMgb3IKKyAqIHdpdGggdXNpbmcg YWxsb2NhdG9yIChjdXJyZW50bHkgUkFORE9NIGFuZCBTSU1QTEUgYXJlIGltcGxlbWVudGVkKS4K KyAqIFNvbWUgZGVzY3JpcHRpb24gaXMgcmVxdWlyZWQgdG8gZGVzY3JpYmUgaG93IHRoZXkgbWFp bnRhaW4gdGhlIGFkZHJlc3Nlcy4KKyAqCisgKiBCZWZvcmUgZW50ZXJpbmcgaW50byBlYWNoIHNj ZW5hcmlvcyBnZW5lcmljIHJ1bGUgaXMgaW50ZWwtYmIga2VlcHMgb2JqZWN0cworICogYW5kIHRo ZWlyIG9mZnNldHMgaW4gdGhlIGludGVybmFsIGNhY2hlIGFuZCByZXVzZXMgaW4gc3Vic2VxdWVu dCBleGVjcy4KKyAqCisgKiAxLiBpbnRlbC1iYiB3aXRoIHJlbG9jYXRpb25zCisgKgorICogQ3Jl YXRpbmcgbmV3IGludGVsLWJiIGFkZHMgaGFuZGxlIHRvIGNhY2hlIGltcGxpY2l0bHkgYW5kIHNl dHMgaXRzIGFkZHJlc3MKKyAqIHRvIDAuIE9iamVjdHMgYWRkZWQgdG8gaW50ZWwtYmIgbGF0ZXIg YWxzbyBoYXZlIGFkZHJlc3MgMCBzZXQgZm9yIGZpcnN0IHJ1bi4KKyAqIEFmdGVyIGNhbGxpbmcg ZXhlY2J1ZiBjYWNoZSBpcyBhbHRlcmVkIHdpdGggbmV3IGFkZHJlc3Nlcy4gQXMgaW50ZWwtYmIK KyAqIHdvcmtzIGluIHJlbG9jIG1vZGUgYWRkcmVzc2VzIGFyZSBvbmx5IHN1Z2dlc3Rpb24gdG8g dGhlIGRyaXZlciBhbmQgd2UKKyAqIGNhbm5vdCBiZSBzdXJlIHRoZXkgd29uJ3QgY2hhbmdlIGF0 IG5leHQgZXhlYy4KKyAqCisgKiAyLiB3aXRoIGFsbG9jYXRvcgorICoKKyAqIFRoaXMgbW9kZSBp cyB2YWxpZCBvbmx5IGZvciBwcGd0dC4gQWRkcmVzc2VzIGFyZSBhY3F1aXJlZCBmcm9tIGFsbG9j YXRvcgorICogYW5kIHNvZnRwaW5uZWQuIGludGVsLWJiIGNhY2hlIG11c3QgYmUgdGhlbiBjb2hl cmVudCB3aXRoIGFsbG9jYXRvcgorICogKHNpbXBsZSBpcyBjb2hlcmVudCwgcmFuZG9tIGlzIG5v dCBkdWUgdG8gZmFjdCB3ZSBkb24ndCBrZWVwIGl0cyBzdGF0ZSkuCisgKiBXaGVuIHdlIGRvIGlu dGVsLWJiIHJlc2V0IHdpdGggcHVyZ2luZyBjYWNoZSBpdCBoYXMgdG8gcmVhY3F1aXJlIGFkZHJl c3NlcworICogZnJvbSBhbGxvY2F0b3IgKGFsbG9jYXRvciBzaG91bGQgcmV0dXJuIHNhbWUgYWRk cmVzcyAtIHdoYXQgaXMgdHJ1ZSBmb3IKKyAqIHNpbXBsZSBhbGxvY2F0b3IgYW5kIGZhbHNlIGZv ciByYW5kb20gYXMgbWVudGlvbmVkIGJlZm9yZSkuCisgKgorICogSWYgd2UgZG8gcmVzZXQgd2l0 aG91dCBwdXJnaW5nIGNhY2hlcyB3ZSB1c2UgYWRkcmVzc2VzIGZyb20gaW50ZWwtYmIgY2FjaGUK KyAqIGR1cmluZyBleGVjYnVmIG9iamVjdHMgY29uc3RydWN0aW9uLgogICoKICAqIFJldHVybnM6 CiAgKgogICogUG9pbnRlciB0aGUgaW50ZWxfYmIsIGFzc2VydHMgb24gZmFpbHVyZS4KICAqLwog c3RhdGljIHN0cnVjdCBpbnRlbF9iYiAqCi1fX2ludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWlu dDMyX3QgY3R4LCB1aW50MzJfdCBzaXplLCBib29sIGRvX3JlbG9jcykKK19faW50ZWxfYmJfY3Jl YXRlKGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVsb2Nz LAorCQkgIHVpbnQ4X3QgYWxsb2NhdG9yX3R5cGUpCiB7CisJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgKm9iamVjdDsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBz aXplb2YoKmliYikpOwotCXVpbnQ2NF90IGd0dF9zaXplOwogCiAJaWd0X2Fzc2VydChpYmIpOwog CisJaWJiLT51c2VzX2Z1bGxfcHBndHQgPSBnZW1fdXNlc19mdWxsX3BwZ3R0KGk5MTUpOworCisJ LyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIGZ1bGwgcHBndHQgZHJpdmVyIGNhbiBjaGFuZ2Ugb3Vy IGFkZHJlc3NlcworCSAqIHNvIGFsbG9jYXRvciBpcyB1c2VsZXNzIGluIHRoaXMgY2FzZS4gSnVz dCBlbmZvcmNlIHJlbG9jYXRpb25zCisJICogZm9yIHN1Y2ggZ2VucyBhbmQgZG9uJ3QgdXNlIGFs bG9jYXRvciBhdCBhbGwuCisJICovCisJaWYgKCFpYmItPnVzZXNfZnVsbF9wcGd0dCkgeworCQlk b19yZWxvY3MgPSB0cnVlOworCQlhbGxvY2F0b3JfdHlwZSA9IElOVEVMX0FMTE9DQVRPUl9OT05F OworCX0KKworCWlmICghZG9fcmVsb2NzKQorCQlpYmItPmFsbG9jYXRvcl9oYW5kbGUgPSBpbnRl bF9hbGxvY2F0b3Jfb3BlbihpOTE1LCBjdHgsIGFsbG9jYXRvcl90eXBlKTsKKwllbHNlCisJCWln dF9hc3NlcnQoYWxsb2NhdG9yX3R5cGUgPT0gSU5URUxfQUxMT0NBVE9SX05PTkUpOworCWliYi0+ YWxsb2NhdG9yX3R5cGUgPSBhbGxvY2F0b3JfdHlwZTsKIAlpYmItPmk5MTUgPSBpOTE1OwogCWli Yi0+ZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGk5MTUpOwogCWliYi0+Z2VuID0gaW50ZWxf Z2VuKGliYi0+ZGV2aWQpOwpAQCAtMTI2OCw0MSArMTI5Nyw0MyBAQCBfX2ludGVsX2JiX2NyZWF0 ZShpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50MzJfdCBzaXplLCBib29sIGRvX3JlbG9jcykK IAlpYmItPmJhdGNoID0gY2FsbG9jKDEsIHNpemUpOwogCWlndF9hc3NlcnQoaWJiLT5iYXRjaCk7 CiAJaWJiLT5wdHIgPSBpYmItPmJhdGNoOwotCWliYi0+cHJuZyA9ICh1aW50MzJfdCkgdG9fdXNl cl9wb2ludGVyKGliYik7CiAJaWJiLT5mZW5jZSA9IC0xOwogCi0JZ3R0X3NpemUgPSBnZW1fYXBl cnR1cmVfc2l6ZShpOTE1KTsKLQlpZiAoIWdlbV91c2VzX2Z1bGxfcHBndHQoaTkxNSkpCi0JCWd0 dF9zaXplIC89IDI7Ci0JaWYgKChndHRfc2l6ZSAtIDEpID4+IDMyKSB7CisJaWJiLT5ndHRfc2l6 ZSA9IGdlbV9hcGVydHVyZV9zaXplKGk5MTUpOworCWlmICgoaWJiLT5ndHRfc2l6ZSAtIDEpID4+ IDMyKQogCQlpYmItPnN1cHBvcnRzXzQ4Yl9hZGRyZXNzID0gdHJ1ZTsKIAotCQkvKgotCQkgKiBV bnRpbCB3ZSBkZXZlbG9wIElHVCBhZGRyZXNzIGFsbG9jYXRvciB3ZSB3b3JrYXJvdW5kCi0JCSAq IHBsYXlpbmcgd2l0aCBjYW5vbmljYWwgYWRkcmVzc2VzIHdpdGggNDctYml0IHNldCB0byAxCi0J CSAqIGp1c3QgYnkgbGltaXRpbmcgZ3R0IHNpemUgdG8gNDYtYml0IHdoZW4gZ3R0IGlzIDQ3IG9y IDQ4Ci0JCSAqIGJpdCBzaXplLiBDdXJyZW50IGludGVyZmFjZSBkb2Vzbid0IHBhc3MgYm8gc2l6 ZSwgc28KLQkJICogbGltaXRpbmcgdG8gNDYgYml0IG1ha2UgdXMgc3VyZSB3ZSB3b24ndCBlbnRl ciB0bwotCQkgKiBhZGRyZXNzZXMgd2l0aCA0Ny1iaXQgc2V0ICh3ZSB1c2UgMzItYml0IHNpemUg bm93IHNvCi0JCSAqIHN0aWxsIHdlIGZpdCA0Ny1iaXQgYWRkcmVzcyBzcGFjZSkuCi0JCSAqLwot CQlpZiAoZ3R0X3NpemUgJiAoM3VsbCA8PCA0NykpCi0JCQlndHRfc2l6ZSA9ICgxdWxsIDw8IDQ2 KTsKLQl9Ci0JaWJiLT5ndHRfc2l6ZSA9IGd0dF9zaXplOwotCi0JaWJiLT5iYXRjaF9vZmZzZXQg PSBfX2ludGVsX2JiX2dldF9vZmZzZXQoaWJiLAotCQkJCQkJICBpYmItPmhhbmRsZSwKLQkJCQkJ CSAgaWJiLT5zaXplLAotCQkJCQkJICBpYmItPmFsaWdubWVudCk7Ci0JaW50ZWxfYmJfYWRkX29i amVjdChpYmIsIGliYi0+aGFuZGxlLCBpYmItPnNpemUsCi0JCQkgICAgaWJiLT5iYXRjaF9vZmZz ZXQsIGZhbHNlKTsKKwlvYmplY3QgPSBpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5k bGUsIGliYi0+c2l6ZSwKKwkJCQkgICAgIElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MsIGliYi0+ YWxpZ25tZW50LAorCQkJCSAgICAgZmFsc2UpOworCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0 LT5vZmZzZXQ7CiAKIAlpYmItPnJlZmNvdW50ID0gMTsKIAogCXJldHVybiBpYmI7CiB9CiAKKy8q KgorICogaW50ZWxfYmJfY3JlYXRlX2Z1bGw6CisgKiBAaTkxNTogZHJtIGZkCisgKiBAY3R4OiBj b250ZXh0CisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hidWZmZXIKKyAqIEBhbGxvY2F0b3Jf dHlwZTogYWxsb2NhdG9yIHR5cGUsIFNJTVBMRSwgUkFORE9NLCAuLi4KKyAqCisgKiBDcmVhdGVz IGJiIHdpdGggY29udGV4dCBwYXNzZWQgaW4gQGN0eCwgc2l6ZSBpbiBAc2l6ZSBhbmQgYWxsb2Nh dG9yIHR5cGUKKyAqIGluIEBhbGxvY2F0b3JfdHlwZS4gUmVsb2NhdGlvbnMgYXJlIHNldCB0byBm YWxzZSBiZWNhdXNlIElHVCBhbGxvY2F0b3IKKyAqIGlzIG5vdCB1c2VkIGluIHRoYXQgY2FzZS4K KyAqCisgKiBSZXR1cm5zOgorICoKKyAqIFBvaW50ZXIgdGhlIGludGVsX2JiLCBhc3NlcnRzIG9u IGZhaWx1cmUuCisgKi8KK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX2Z1bGwoaW50 IGk5MTUsIHVpbnQzMl90IGN0eCwgdWludDMyX3Qgc2l6ZSwKKwkJCQkgICAgICB1aW50OF90IGFs bG9jYXRvcl90eXBlKQoreworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNp emUsIGZhbHNlLCBhbGxvY2F0b3JfdHlwZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfY3JlYXRl OgogICogQGk5MTU6IGRybSBmZApAQCAtMTMxNiw3ICsxMzQ3LDcgQEAgX19pbnRlbF9iYl9jcmVh dGUoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgdWludDMyX3Qgc2l6ZSwgYm9vbCBkb19yZWxvY3Mp CiAgKi8KIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJf dCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCAwLCBzaXplLCBmYWxz ZSk7CisJcmV0dXJuIF9faW50ZWxfYmJfY3JlYXRlKGk5MTUsIDAsIHNpemUsIGZhbHNlLCBJTlRF TF9BTExPQ0FUT1JfU0lNUExFKTsKIH0KIAogLyoqCkBAIC0xMzM0LDcgKzEzNjUsNyBAQCBzdHJ1 Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKIHN0 cnVjdCBpbnRlbF9iYiAqCiBpbnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1LCB1 aW50MzJfdCBjdHgsIHVpbnQzMl90IHNpemUpCiB7Ci0JcmV0dXJuIF9faW50ZWxfYmJfY3JlYXRl KGk5MTUsIGN0eCwgc2l6ZSwgZmFsc2UpOworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1 LCBjdHgsIHNpemUsIGZhbHNlLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKIH0KIAogLyoqCkBA IC0xMzUxLDcgKzEzODIsNyBAQCBpbnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1 LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90IHNpemUpCiAgKi8KIHN0cnVjdCBpbnRlbF9iYiAqaW50 ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogewotCXJl dHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCAwLCBzaXplLCB0cnVlKTsKKwlyZXR1cm4gX19p bnRlbF9iYl9jcmVhdGUoaTkxNSwgMCwgc2l6ZSwgdHJ1ZSwgSU5URUxfQUxMT0NBVE9SX05PTkUp OwogfQogCiAvKioKQEAgLTEzNzAsNyArMTQwMSw3IEBAIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxf YmJfY3JlYXRlX3dpdGhfcmVsb2NzKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogc3RydWN0IGlu dGVsX2JiICoKIGludGVsX2JiX2NyZWF0ZV93aXRoX3JlbG9jc19hbmRfY29udGV4dChpbnQgaTkx NSwgdWludDMyX3QgY3R4LCB1aW50MzJfdCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2Ny ZWF0ZShpOTE1LCBjdHgsIHNpemUsIHRydWUpOworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShp OTE1LCBjdHgsIHNpemUsIHRydWUsIElOVEVMX0FMTE9DQVRPUl9OT05FKTsKIH0KIAogc3RhdGlj IHZvaWQgX19pbnRlbF9iYl9kZXN0cm95X3JlbG9jYXRpb25zKHN0cnVjdCBpbnRlbF9iYiAqaWJi KQpAQCAtMTQyNCw2ICsxNDU1LDEwIEBAIHZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfYmIgKmliYikKIAlfX2ludGVsX2JiX2Rlc3Ryb3lfb2JqZWN0cyhpYmIpOwogCV9faW50ZWxf YmJfZGVzdHJveV9jYWNoZShpYmIpOwogCisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5U RUxfQUxMT0NBVE9SX05PTkUpIHsKKwkJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoaWJiLT5hbGxvY2F0 b3JfaGFuZGxlLCBpYmItPmhhbmRsZSk7CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShpYmItPmFs bG9jYXRvcl9oYW5kbGUpOworCX0KIAlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7 CiAKIAlpZiAoaWJiLT5mZW5jZSA+PSAwKQpAQCAtMTQ0MCw2ICsxNDc1LDcgQEAgdm9pZCBpbnRl bF9iYl9kZXN0cm95KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogICoKICAqIFJlY3JlYXRlIGJhdGNo IGJvIHdoZW4gdGhlcmUncyBubyBhZGRpdGlvbmFsIHJlZmVyZW5jZS4KICovCisKIHZvaWQgaW50 ZWxfYmJfcmVzZXQoc3RydWN0IGludGVsX2JiICppYmIsIGJvb2wgcHVyZ2Vfb2JqZWN0c19jYWNo ZSkKIHsKIAl1aW50MzJfdCBpOwpAQCAtMTQ2MywyOCArMTQ5OSwzMiBAQCB2b2lkIGludGVsX2Ji X3Jlc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIHB1cmdlX29iamVjdHNfY2FjaGUpCiAJ X19pbnRlbF9iYl9kZXN0cm95X29iamVjdHMoaWJiKTsKIAlfX3JlYWxsb2NhdGVfb2JqZWN0cyhp YmIpOwogCi0JaWYgKHB1cmdlX29iamVjdHNfY2FjaGUpIHsKKwlpZiAocHVyZ2Vfb2JqZWN0c19j YWNoZSkKIAkJX19pbnRlbF9iYl9kZXN0cm95X2NhY2hlKGliYik7CisKKwkvKgorCSAqIFdoZW4g d2UgdXNlIGFsbG9jYXRvcnMgd2UncmUgaW4gbm8tcmVsb2MgbW9kZSBzbyB3ZSBoYXZlIHRvIGZy ZWUKKwkgKiBhbmQgcmVhY3F1aXJlIG9mZnNldCAoaWJiLT5oYW5kbGUgY2FuIGNoYW5nZSBpbiBt dWx0aXByb2Nlc3MKKwkgKiBlbnZpcm9ubWVudCkuIFdlIGFsc28gaGF2ZSB0byByZW1vdmUgYW5k IGFkZCBpdCBhZ2FpbiB0bworCSAqIG9iamVjdHMgYW5kIGNhY2hlIHRyZWUuCisJICovCisJaWYg KGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5URUxfQUxMT0NBVE9SX05PTkUgJiYgIXB1cmdlX29i amVjdHNfY2FjaGUpCisJCWludGVsX2JiX3JlbW92ZV9vYmplY3QoaWJiLCBpYmItPmhhbmRsZSwg aWJiLT5iYXRjaF9vZmZzZXQsCisJCQkJICAgICAgIGliYi0+c2l6ZSk7CisKKwlnZW1fY2xvc2Uo aWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7CisJaWJiLT5oYW5kbGUgPSBnZW1fY3JlYXRlKGliYi0+ aTkxNSwgaWJiLT5zaXplKTsKKworCS8qIEtlZXAgYWRkcmVzcyBmb3IgYmIgaW4gcmVsb2MgbW9k ZSBhbmQgUkFORE9NIGFsbG9jYXRvciAqLworCWlmIChpYmItPmFsbG9jYXRvcl90eXBlID09IElO VEVMX0FMTE9DQVRPUl9TSU1QTEUpCiAJCWliYi0+YmF0Y2hfb2Zmc2V0ID0gX19pbnRlbF9iYl9n ZXRfb2Zmc2V0KGliYiwKIAkJCQkJCQkgIGliYi0+aGFuZGxlLAogCQkJCQkJCSAgaWJiLT5zaXpl LAogCQkJCQkJCSAgaWJiLT5hbGlnbm1lbnQpOwotCX0gZWxzZSB7Ci0JCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyICpvYmplY3Q7Ci0KLQkJb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9v YmplY3QoaWJiLCBpYmItPmhhbmRsZSk7Ci0JCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0ID8g b2JqZWN0LT5vZmZzZXQgOgotCQkJCQkgICAgIF9faW50ZWxfYmJfZ2V0X29mZnNldChpYmIsCi0J CQkJCQkJCSAgIGliYi0+aGFuZGxlLAotCQkJCQkJCQkgICBpYmItPnNpemUsCi0JCQkJCQkJCSAg IGliYi0+YWxpZ25tZW50KTsKLQl9Ci0KLQlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRs ZSk7Ci0JaWJiLT5oYW5kbGUgPSBnZW1fY3JlYXRlKGliYi0+aTkxNSwgaWJiLT5zaXplKTsKIAog CWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBpYmItPmhhbmRsZSwgaWJiLT5zaXplLAotCQkJICAg IGliYi0+YmF0Y2hfb2Zmc2V0LCBmYWxzZSk7CisJCQkgICAgQ0FOT05JQ0FMKGliYi0+YmF0Y2hf b2Zmc2V0KSwKKwkJCSAgICBpYmItPmFsaWdubWVudCwgZmFsc2UpOwogCWliYi0+cHRyID0gaWJi LT5iYXRjaDsKIAltZW1zZXQoaWJiLT5iYXRjaCwgMCwgaWJiLT5zaXplKTsKIH0KQEAgLTE1MjMs OCArMTU2Myw4IEBAIHZvaWQgaW50ZWxfYmJfcHJpbnQoc3RydWN0IGludGVsX2JiICppYmIpCiAJ CSBpYmItPmk5MTUsIGliYi0+Z2VuLCBpYmItPmRldmlkLCBpYmItPmRlYnVnKTsKIAlpZ3RfaW5m bygiaGFuZGxlOiAldSwgc2l6ZTogJXUsIGJhdGNoOiAlcCwgcHRyOiAlcFxuIiwKIAkJIGliYi0+ aGFuZGxlLCBpYmItPnNpemUsIGliYi0+YmF0Y2gsIGliYi0+cHRyKTsKLQlpZ3RfaW5mbygicHJu ZzogJXUsIGd0dF9zaXplOiAlIiBQUkl1NjQgIiwgc3VwcG9ydHMgNDhiaXQ6ICVkXG4iLAotCQkg aWJiLT5wcm5nLCBpYmItPmd0dF9zaXplLCBpYmItPnN1cHBvcnRzXzQ4Yl9hZGRyZXNzKTsKKwlp Z3RfaW5mbygiZ3R0X3NpemU6ICUiIFBSSXU2NCAiLCBzdXBwb3J0cyA0OGJpdDogJWRcbiIsCisJ CSBpYmItPmd0dF9zaXplLCBpYmItPnN1cHBvcnRzXzQ4Yl9hZGRyZXNzKTsKIAlpZ3RfaW5mbygi Y3R4OiAldVxuIiwgaWJiLT5jdHgpOwogCWlndF9pbmZvKCJyb290OiAlcFxuIiwgaWJiLT5yb290 KTsKIAlpZ3RfaW5mbygib2JqZWN0czogJXAsIG51bV9vYmplY3RzOiAldSwgYWxsb2NhdGVkIG9i ajogJXVcbiIsCkBAIC0xNTk4LDcgKzE2MzgsNyBAQCBfX2FkZF90b19jYWNoZShzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQogCWlmICgqZm91bmQgPT0gb2JqZWN0KSB7CiAJ CW1lbXNldChvYmplY3QsIDAsIHNpemVvZigqb2JqZWN0KSk7CiAJCW9iamVjdC0+aGFuZGxlID0g aGFuZGxlOwotCQlvYmplY3QtPmFsaWdubWVudCA9IGliYi0+YWxpZ25tZW50OworCQlvYmplY3Qt Pm9mZnNldCA9IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1M7CiAJfSBlbHNlIHsKIAkJZnJlZShv YmplY3QpOwogCQlvYmplY3QgPSAqZm91bmQ7CkBAIC0xNjA3LDYgKzE2NDcsMjUgQEAgX19hZGRf dG9fY2FjaGUoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlyZXR1cm4g b2JqZWN0OwogfQogCitzdGF0aWMgYm9vbCBfX3JlbW92ZV9mcm9tX2NhY2hlKHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj X29iamVjdDIgKipmb3VuZCwgKm9iamVjdDsKKworCW9iamVjdCA9IGludGVsX2JiX2ZpbmRfb2Jq ZWN0KGliYiwgaGFuZGxlKTsKKwlpZiAoIW9iamVjdCkgeworCQlpZ3Rfd2FybigiT2JqZWN0OiBo YW5kbGU6ICV1IG5vdCBmb3VuZFxuIiwgaGFuZGxlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWZvdW5kID0gdGRlbGV0ZSgodm9pZCAqKSBvYmplY3QsICZpYmItPnJvb3QsIF9fY29tcGFyZV9v YmplY3RzKTsKKwlpZiAoIWZvdW5kKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmcmVlKG9iamVjdCk7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGludCBfX2NvbXBhcmVfaGFuZGxlcyhjb25z dCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCiB7CiAJcmV0dXJuIChpbnQpICgqKGludDMyX3Qg KikgcDEgLSAqKGludDMyX3QgKikgcDIpOwpAQCAtMTYzMCwxMiArMTY4OSw1NCBAQCBzdGF0aWMg dm9pZCBfX2FkZF90b19vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCX0KIH0KIAorc3Rh dGljIHZvaWQgX19yZW1vdmVfZnJvbV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJ CSAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdCkKK3sKKwl1aW50MzJf dCBpLCAqKmhhbmRsZSwgKnRvX2ZyZWU7CisJYm9vbCBmb3VuZCA9IGZhbHNlOworCisJZm9yIChp ID0gMDsgaSA8IGliYi0+bnVtX29iamVjdHM7IGkrKykgeworCQlpZiAoaWJiLT5vYmplY3RzW2ld ID09IG9iamVjdCkgeworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkv KgorCSAqIFdoZW4gd2UgcmVzZXQgYmIgKHdpdGhvdXQgcHVyZ2luZykgd2UgaGF2ZToKKwkgKiAx LiBjYWNoZSB3aGljaCBjb250YWlucyBhbGwgY2FjaGVkIG9iamVjdHMKKwkgKiAyLiBvYmplY3Rz IGFycmF5IHdoaWNoIGNvbnRhaW5zIG9ubHkgYmIgb2JqZWN0IChjbGVhcmVkIGluIHJlc2V0CisJ ICogICAgcGF0aCB3aXRoIGJiIG9iamVjdCBhZGRlZCBhdCB0aGUgZW5kKQorCSAqIFNvICFmb3Vu ZCBpcyBub3JtYWwgc2l0dWF0aW9uIGFuZCBubyB3YXJuaW5nIGlzIGFkZGVkIGhlcmUuCisJICov CisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuOworCisJaWJiLT5udW1fb2JqZWN0cy0tOworCWlmIChp IDwgaWJiLT5udW1fb2JqZWN0cykKKwkJbWVtbW92ZSgmaWJiLT5vYmplY3RzW2ldLCAmaWJiLT5v YmplY3RzW2kgKyAxXSwKKwkJCXNpemVvZihvYmplY3QpICogKGliYi0+bnVtX29iamVjdHMgLSBp KSk7CisKKwloYW5kbGUgPSB0ZmluZCgodm9pZCAqKSAmb2JqZWN0LT5oYW5kbGUsCisJCSAgICAg ICAmaWJiLT5jdXJyZW50LCBfX2NvbXBhcmVfaGFuZGxlcyk7CisJaWYgKCFoYW5kbGUpIHsKKwkJ aWd0X3dhcm4oIk9iamVjdCAldSBkb2Vzbid0IGV4aXN0IGluIHRoZSB0cmVlLCBjYW4ndCByZW1v dmUiLAorCQkJIG9iamVjdC0+aGFuZGxlKTsKKwkJcmV0dXJuOworCX0KKworCXRvX2ZyZWUgPSAq aGFuZGxlOworCXRkZWxldGUoKHZvaWQgKikgJm9iamVjdC0+aGFuZGxlLCAmaWJiLT5jdXJyZW50 LCBfX2NvbXBhcmVfaGFuZGxlcyk7CisJZnJlZSh0b19mcmVlKTsKK30KKwogLyoqCiAgKiBpbnRl bF9iYl9hZGRfb2JqZWN0OgogICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgogICogQGhhbmRs ZTogd2hpY2ggaGFuZGxlIHRvIGFkZCB0byBvYmplY3RzIGFycmF5CiAgKiBAc2l6ZTogb2JqZWN0 IHNpemUKICAqIEBvZmZzZXQ6IHByZXN1bWVkIG9mZnNldCBvZiB0aGUgb2JqZWN0IHdoZW4gbm8g cmVsb2NhdGlvbiBpcyBlbmZvcmNlZAorICogQGFsaWdubWVudDogYWxpZ25tZW50IG9mIHRoZSBv YmplY3QsIGlmIDAgaXQgd2lsbCBiZSBzZXQgdG8gcGFnZSBzaXplCiAgKiBAd3JpdGU6IGRvZXMg YSBoYW5kbGUgaXMgYSByZW5kZXIgdGFyZ2V0CiAgKgogICogRnVuY3Rpb24gYWRkcyBvciB1cGRh dGVzIGV4ZWNvYmogc2xvdCBpbiBiYiBvYmplY3RzIGFycmF5IGFuZApAQCAtMTY0MywyMyArMTc0 NCw3MyBAQCBzdGF0aWMgdm9pZCBfX2FkZF90b19vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAogICogYmUgbWFya2VkIHdpdGggRVhFQ19PQkpFQ1RfV1JJVEUgZmxhZy4KICAqLwogc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgotaW50ZWxfYmJfYWRkX29iamVjdChzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBzaXplLAotCQkgICAgdWlu dDY0X3Qgb2Zmc2V0LCBib29sIHdyaXRlKQoraW50ZWxfYmJfYWRkX29iamVjdChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBzaXplLAorCQkgICAgdWludDY0 X3Qgb2Zmc2V0LCB1aW50NjRfdCBhbGlnbm1lbnQsIGJvb2wgd3JpdGUpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsKIAorCWlndF9hc3NlcnQoSU5WQUxJRF9B RERSKG9mZnNldCkgfHwgYWxpZ25tZW50ID09IDAKKwkJICAgfHwgQUxJR04ob2Zmc2V0LCBhbGln bm1lbnQpID09IG9mZnNldCk7CisKIAlvYmplY3QgPSBfX2FkZF90b19jYWNoZShpYmIsIGhhbmRs ZSk7CisJb2JqZWN0LT5hbGlnbm1lbnQgPSBhbGlnbm1lbnQgPzogNDA5NjsKIAlfX2FkZF90b19v YmplY3RzKGliYiwgb2JqZWN0KTsKIAotCS8qIExpbWl0IGN1cnJlbnQgb2Zmc2V0IHRvIGd0dCBz aXplICovCisJLyoKKwkgKiBJZiBvYmplY3QtPm9mZnNldCA9PSBJTlZBTElEX0FERFJFU1Mgd2Ug YWRkZWQgZnJlc2hseSBvYmplY3QgdG8gdGhlCisJICogY2FjaGUuIEluIHRoYXQgY2FzZSB3ZSBo YXZlIHR3byBjaG9pY2VzOgorCSAqIGEpIGdldCBuZXcgb2Zmc2V0IChwYXNzZWQgb2Zmc2V0IHdh cyBpbnZhbGlkKQorCSAqIGIpIHVzZSBvZmZzZXQgcGFzc2VkIGluIHRoZSBjYWxsICh2YWxpZCkK KwkgKi8KKwlpZiAoSU5WQUxJRF9BRERSKG9iamVjdC0+b2Zmc2V0KSkgeworCQlpZiAoSU5WQUxJ RF9BRERSKG9mZnNldCkpIHsKKwkJCW9mZnNldCA9IF9faW50ZWxfYmJfZ2V0X29mZnNldChpYmIs IGhhbmRsZSwgc2l6ZSwKKwkJCQkJCSAgICAgICBvYmplY3QtPmFsaWdubWVudCk7CisJCX0gZWxz ZSB7CisJCQlvZmZzZXQgPSBDQU5PTklDQUwob2Zmc2V0ICYgKGliYi0+Z3R0X3NpemUgLSAxKSk7 CisKKwkJCS8qCisJCQkgKiBGb3Igc2ltcGxlIGFsbG9jYXRvciBjaGVjayBlbnRyeSBjb25zaXN0 ZW5jeQorCQkJICogLSByZXNlcnZlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGFsbG9jYXRlZC4KKwkJ CSAqLworCQkJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgPT0gSU5URUxfQUxMT0NBVE9SX1NJTVBM RSkgeworCQkJCWJvb2wgYWxsb2NhdGVkLCByZXNlcnZlZDsKKworCQkJCXJlc2VydmVkID0gaW50 ZWxfYWxsb2NhdG9yX3Jlc2VydmVfaWZfbm90X2FsbG9jYXRlZChpYmItPmFsbG9jYXRvcl9oYW5k bGUsCisJCQkJCQkJCQkJICAgIGhhbmRsZSwgc2l6ZSwgb2Zmc2V0LAorCQkJCQkJCQkJCSAgICAm YWxsb2NhdGVkKTsKKwkJCQlpZ3RfYXNzZXJ0X2YoYWxsb2NhdGVkIHx8IHJlc2VydmVkLAorCQkJ CQkgICAgICJDYW4ndCBnZXQgb2Zmc2V0LCBhbGxvY2F0ZWQ6ICVkLCByZXNlcnZlZDogJWRcbiIs CisJCQkJCSAgICAgYWxsb2NhdGVkLCByZXNlcnZlZCk7CisJCQl9CisJCX0KKwl9IGVsc2Ugewor CQkvKgorCQkgKiBUaGlzIGFzc2VydGlvbiBtYWtlcyBzZW5zZSBvbmx5IHdoZW4gd2UgaGF2ZSB0 byBiZSBjb25zaXN0ZW50CisJCSAqIHdpdGggdW5kZXJseWluZyBhbGxvY2F0b3IuIEZvciByZWxv Y2F0aW9ucyBhbmQgd2hlbiAhcHBndHQKKwkJICogd2UgY2FuIGV4cGVjdCBhZGRyZXNzZXMgcGFz c2VkIGJ5IHRoZSB1c2VyIGNhbiBiZSBtb3ZlZAorCQkgKiB3aXRoaW4gdGhlIGRyaXZlci4KKwkJ ICovCisJCWlmIChpYmItPmFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUp CisJCQlpZ3RfYXNzZXJ0X2Yob2JqZWN0LT5vZmZzZXQgPT0gQ0FOT05JQ0FMKG9mZnNldCksCisJ CQkJICAgICAiKHBpZDogJWxkKSBoYW5kbGU6ICV1LCBvZmZzZXQgbm90IG1hdGNoOiAlIiBQUkl4 NjQgIiA8PiAlIiBQUkl4NjQgIlxuIiwKKwkJCQkgICAgIChsb25nKSBnZXRwaWQoKSwgaGFuZGxl LAorCQkJCSAgICAgKHVpbnQ2NF90KSBvYmplY3QtPm9mZnNldCwKKwkJCQkgICAgIENBTk9OSUNB TChvZmZzZXQpKTsKKwl9CisKIAlvYmplY3QtPm9mZnNldCA9IG9mZnNldDsKLQlpZiAob2Zmc2V0 ICE9IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpCisKKwkvKiBMaW1pdCBjdXJyZW50IG9mZnNl dCB0byBndHQgc2l6ZSAqLworCWlmIChvZmZzZXQgIT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVT UykgewogCQlvYmplY3QtPm9mZnNldCA9IGdlbjhfY2Fub25pY2FsX2FkZHIob2Zmc2V0ICYgKGli Yi0+Z3R0X3NpemUgLSAxKSk7CiAKLQlpZiAob2JqZWN0LT5vZmZzZXQgPT0gSU5URUxfQlVGX0lO VkFMSURfQUREUkVTUykKKworCX0gZWxzZSB7CiAJCW9iamVjdC0+b2Zmc2V0ID0gX19pbnRlbF9i Yl9nZXRfb2Zmc2V0KGliYiwKIAkJCQkJCSAgICAgICBoYW5kbGUsIHNpemUsCiAJCQkJCQkgICAg ICAgb2JqZWN0LT5hbGlnbm1lbnQpOworCX0KIAogCWlmICh3cml0ZSkKIAkJb2JqZWN0LT5mbGFn cyB8PSBFWEVDX09CSkVDVF9XUklURTsKQEAgLTE2NjcsNDAgKzE4MTgsOTUgQEAgaW50ZWxfYmJf YWRkX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJf dCBzaXplLAogCWlmIChpYmItPnN1cHBvcnRzXzQ4Yl9hZGRyZXNzKQogCQlvYmplY3QtPmZsYWdz IHw9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOwogCisJaWYgKGliYi0+dXNlc19m dWxsX3BwZ3R0ICYmIGliYi0+YWxsb2NhdG9yX3R5cGUgPT0gSU5URUxfQUxMT0NBVE9SX1NJTVBM RSkKKwkJb2JqZWN0LT5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisKIAlyZXR1cm4gb2Jq ZWN0OwogfQogCi1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCi1pbnRlbF9iYl9h ZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYs IGJvb2wgd3JpdGUpCitib29sIGludGVsX2JiX3JlbW92ZV9vYmplY3Qoc3RydWN0IGludGVsX2Ji ICppYmIsIHVpbnQzMl90IGhhbmRsZSwKKwkJCSAgICB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90 IHNpemUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iajsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqZWN0OworCWJvb2wgaXNfcmVzZXJ2ZWQ7 CiAKLQlvYmogPSBpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgYnVmLT5oYW5kbGUsCi0JCQkJICBp bnRlbF9idWZfYm9fc2l6ZShidWYpLAotCQkJCSAgYnVmLT5hZGRyLm9mZnNldCwgd3JpdGUpOwor CW9iamVjdCA9IGludGVsX2JiX2ZpbmRfb2JqZWN0KGliYiwgaGFuZGxlKTsKKwlpZiAoIW9iamVj dCkKKwkJcmV0dXJuIGZhbHNlOwogCi0JLyogRm9yIGNvbXByZXNzZWQgc3VyZmFjZXMgZW5zdXJl IGFkZHJlc3MgaXMgYWxpZ25lZCB0byA2NEtCICovCi0JaWYgKGliYi0+Z2VuID49IDEyICYmIGJ1 Zi0+Y29tcHJlc3Npb24pIHsKLQkJb2JqLT5vZmZzZXQgJj0gfigweDEwMDAwIC0gMSk7Ci0JCW9i ai0+YWxpZ25tZW50ID0gMHgxMDAwMDsKKwlpZiAoaWJiLT5hbGxvY2F0b3JfdHlwZSAhPSBJTlRF TF9BTExPQ0FUT1JfTk9ORSkgeworCQlpbnRlbF9hbGxvY2F0b3JfZnJlZShpYmItPmFsbG9jYXRv cl9oYW5kbGUsIGhhbmRsZSk7CisJCWlzX3Jlc2VydmVkID0gaW50ZWxfYWxsb2NhdG9yX2lzX3Jl c2VydmVkKGliYi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJCQkgIHNpemUsIG9mZnNldCk7CisJ CWlmIChpc19yZXNlcnZlZCkKKwkJCWludGVsX2FsbG9jYXRvcl91bnJlc2VydmUoaWJiLT5hbGxv Y2F0b3JfaGFuZGxlLCBoYW5kbGUsCisJCQkJCQkgIHNpemUsIG9mZnNldCk7CiAJfQogCi0JLyog Rm9yIGdlbjMgZW5zdXJlIHRpbGVkIGJ1ZmZlcnMgYXJlIGFsaWduZWQgdG8gcG93ZXIgb2YgdHdv IHNpemUgKi8KLQlpZiAoaWJiLT5nZW4gPT0gMyAmJiBidWYtPnRpbGluZykgewotCQl1aW50NjRf dCBhbGlnbm1lbnQgPSAxMDI0ICogMTAyNDsKKwlfX3JlbW92ZV9mcm9tX29iamVjdHMoaWJiLCBv YmplY3QpOworCV9fcmVtb3ZlX2Zyb21fY2FjaGUoaWJiLCBoYW5kbGUpOwogCi0JCXdoaWxlIChh bGlnbm1lbnQgPCBidWYtPnN1cmZhY2VbMF0uc2l6ZSkKLQkJCWFsaWdubWVudCA8PD0gMTsKLQkJ b2JqLT5vZmZzZXQgJj0gfihhbGlnbm1lbnQgLSAxKTsKLQkJb2JqLT5hbGlnbm1lbnQgPSBhbGln bm1lbnQ7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNfb2JqZWN0MiAqCitfX2ludGVsX2JiX2FkZF9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICpp YmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCSB1aW50NjRfdCBhbGlnbm1lbnQsIGJvb2wg d3JpdGUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iajsKKworCWln dF9hc3NlcnQoQUxJR04oYWxpZ25tZW50LCA0MDk2KSA9PSBhbGlnbm1lbnQpOworCisJaWYgKCFh bGlnbm1lbnQpIHsKKwkJYWxpZ25tZW50ID0gMHgxMDAwOworCisJCWlmIChpYmItPmdlbiA+PSAx MiAmJiBidWYtPmNvbXByZXNzaW9uKQorCQkJYWxpZ25tZW50ID0gMHgxMDAwMDsKKworCQkvKiBG b3IgZ2VuMyBlbnN1cmUgdGlsZWQgYnVmZmVycyBhcmUgYWxpZ25lZCB0byBwb3dlciBvZiB0d28g c2l6ZSAqLworCQlpZiAoaWJiLT5nZW4gPT0gMyAmJiBidWYtPnRpbGluZykgeworCQkJYWxpZ25t ZW50ID0gMTAyNCAqIDEwMjQ7CisKKwkJCXdoaWxlIChhbGlnbm1lbnQgPCBidWYtPnN1cmZhY2Vb MF0uc2l6ZSkKKwkJCQlhbGlnbm1lbnQgPDw9IDE7CisJCX0KIAl9CiAKLQkvKiBVcGRhdGUgYWRk cmVzcyBpbiBpbnRlbF9idWYgYnVmZmVyICovCisJb2JqID0gaW50ZWxfYmJfYWRkX29iamVjdChp YmIsIGJ1Zi0+aGFuZGxlLCBpbnRlbF9idWZfYm9fc2l6ZShidWYpLAorCQkJCSAgYnVmLT5hZGRy Lm9mZnNldCwgYWxpZ25tZW50LCB3cml0ZSk7CiAJYnVmLT5hZGRyLm9mZnNldCA9IG9iai0+b2Zm c2V0OwogCisJaWYgKCFpYmItPmVuZm9yY2VfcmVsb2NzKQorCQlvYmotPmFsaWdubWVudCA9IGFs aWdubWVudDsKKwogCXJldHVybiBvYmo7CiB9CiAKK3N0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyICoKK2ludGVsX2JiX2FkZF9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0 cnVjdCBpbnRlbF9idWYgKmJ1ZiwgYm9vbCB3cml0ZSkKK3sKKwlyZXR1cm4gX19pbnRlbF9iYl9h ZGRfaW50ZWxfYnVmKGliYiwgYnVmLCAwLCB3cml0ZSk7Cit9CisKK3N0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyICoKK2ludGVsX2JiX2FkZF9pbnRlbF9idWZfd2l0aF9hbGlnbm1lbnQo c3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJCQkgICAgICB1 aW50NjRfdCBhbGlnbm1lbnQsIGJvb2wgd3JpdGUpCit7CisJcmV0dXJuIF9faW50ZWxfYmJfYWRk X2ludGVsX2J1ZihpYmIsIGJ1ZiwgYWxpZ25tZW50LCB3cml0ZSk7Cit9CisKK2Jvb2wgaW50ZWxf YmJfcmVtb3ZlX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1 ZiAqYnVmKQoreworCWJvb2wgcmVtb3ZlZCA9IGludGVsX2JiX3JlbW92ZV9vYmplY3QoaWJiLCBi dWYtPmhhbmRsZSwKKwkJCQkJICAgICAgYnVmLT5hZGRyLm9mZnNldCwKKwkJCQkJICAgICAgaW50 ZWxfYnVmX2JvX3NpemUoYnVmKSk7CisKKwlpZiAocmVtb3ZlZCkKKwkJYnVmLT5hZGRyLm9mZnNl dCA9IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1M7CisKKwlyZXR1cm4gcmVtb3ZlZDsKK30KKwog c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgogaW50ZWxfYmJfZmluZF9vYmplY3Qo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIHsKQEAgLTE3MDgsNiArMTkx NCw4IEBAIGludGVsX2JiX2ZpbmRfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJf dCBoYW5kbGUpCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKipmb3VuZDsKIAog CWZvdW5kID0gdGZpbmQoKHZvaWQgKikgJm9iamVjdCwgJmliYi0+cm9vdCwgX19jb21wYXJlX29i amVjdHMpOworCWlmICghZm91bmQpCisJCXJldHVybiBOVUxMOwogCiAJcmV0dXJuICpmb3VuZDsK IH0KQEAgLTE3MTgsNiArMTkyNiw4IEBAIGludGVsX2JiX29iamVjdF9zZXRfZmxhZyhzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBmbGFnKQogCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iamVjdCA9IHsgLmhhbmRsZSA9IGhhbmRsZSB9Owog CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQ7CiAKKwlpZ3RfYXNzZXJ0 X2YoaWJiLT5yb290LCAiVHJ5aW5nIHRvIHNlYXJjaCBpbiBudWxsIHRyZWVcbiIpOworCiAJZm91 bmQgPSB0ZmluZCgodm9pZCAqKSAmb2JqZWN0LCAmaWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0 cyk7CiAJaWYgKCFmb3VuZCkgewogCQlpZ3Rfd2FybigiVHJ5aW5nIHRvIHNldCBmZW5jZSBvbiBu b3QgZm91bmQgaGFuZGxlOiAldVxuIiwKQEAgLTE3NTcsMTQgKzE5NjcsOSBAQCBpbnRlbF9iYl9v YmplY3RfY2xlYXJfZmxhZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1 aW50NjRfdCBmbGFnKQogICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFpbiBiaXQgZm9yIHRoZSBy ZWxvY2F0aW9uCiAgKiBAZGVsdGE6IGRlbHRhIHZhbHVlIHRvIGFkZCB0byBAYnVmZmVyJ3MgZ3B1 IGFkZHJlc3MKICAqIEBvZmZzZXQ6IG9mZnNldCB3aXRoaW4gYmIgdG8gYmUgcGF0Y2hlZAotICog QHByZXN1bWVkX29mZnNldDogYWRkcmVzcyBvZiB0aGUgb2JqZWN0IGluIGFkZHJlc3Mgc3BhY2Uu IElmIC0xIGlzIHBhc3NlZAotICogdGhlbiBmaW5hbCBvZmZzZXQgb2YgdGhlIG9iamVjdCB3aWxs IGJlIHJhbmRvbWl6ZWQgKGZvciBuby1yZWxvYyBiYikgb3IKLSAqIDAgKGZvciByZWxvYyBiYiwg aW4gdGhhdCBjYXNlIHJlbG9jLnByZXN1bWVkX29mZnNldCB3aWxsIGJlIC0xKS4gSW4KLSAqIGNh c2UgYWRkcmVzcyBpcyBrbm93biBpdCBzaG91bGQgcGFzc2VkIGluIEBwcmVzdW1lZF9vZmZzZXQg KGZvciBuby1yZWxvYykuCiAgKgogICogRnVuY3Rpb24gYWxsb2NhdGVzIGFkZGl0aW9uYWwgcmVs b2NhdGlvbiBzbG90IGluIHJlbG9jIGFycmF5IGZvciBhIGhhbmRsZS4KLSAqIEl0IGFsc28gaW1w bGljaXRseSBhZGRzIGhhbmRsZSBpbiB0aGUgb2JqZWN0cyBhcnJheSBpZiBvYmplY3QgZG9lc24n dAotICogZXhpc3RzIGJ1dCBkb2Vzbid0IG1hcmsgaXQgYXMgYSByZW5kZXIgdGFyZ2V0LgorICog T2JqZWN0IG11c3QgYmUgcHJldmlvdXNseSBhZGRlZCB0byBiYi4KICAqLwogc3RhdGljIHVpbnQ2 NF90IGludGVsX2JiX2FkZF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCQkgICB1aW50 MzJfdCB0b19oYW5kbGUsCkBAIC0xNzc5LDEzICsxOTg0LDggQEAgc3RhdGljIHVpbnQ2NF90IGlu dGVsX2JiX2FkZF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqb2JqZWN0LCAqdG9fb2JqZWN0OwogCXVpbnQzMl90IGk7CiAKLQlp ZiAoaWJiLT5lbmZvcmNlX3JlbG9jcykgewotCQlvYmplY3QgPSBpbnRlbF9iYl9hZGRfb2JqZWN0 KGliYiwgaGFuZGxlLCAwLAotCQkJCQkgICAgIHByZXN1bWVkX29mZnNldCwgZmFsc2UpOwotCX0g ZWxzZSB7Ci0JCW9iamVjdCA9IGludGVsX2JiX2ZpbmRfb2JqZWN0KGliYiwgaGFuZGxlKTsKLQkJ aWd0X2Fzc2VydChvYmplY3QpOwotCX0KKwlvYmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChp YmIsIGhhbmRsZSk7CisJaWd0X2Fzc2VydChvYmplY3QpOwogCiAJLyogRm9yIGliYiB3ZSBoYXZl IHJlbG9jcyBhbGxvY2F0ZWQgaW4gY2h1bmtzICovCiAJaWYgKHRvX2hhbmRsZSA9PSBpYmItPmhh bmRsZSkgewpAQCAtMTk3OSw0NSArMjE3OSw0NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iYl9kdW1w X2V4ZWNidWYoc3RydWN0IGludGVsX2JiICppYmIsCiAJaW50IGksIGo7CiAJdWludDY0X3QgYWRk cmVzczsKIAotCWlndF9pbmZvKCJleGVjYnVmIGJhdGNoIGxlbjogJXUsIHN0YXJ0IG9mZnNldDog MHgleCwgIgotCQkgIkRSMTogMHgleCwgRFI0OiAweCV4LCAiCi0JCSAibnVtIGNsaXA6ICV1LCBj bGlwcHRyOiAweCVsbHgsICIKLQkJICJmbGFnczogMHglbGx4LCByc3ZkMTogMHglbGx4LCByc3Zk MjogMHglbGx4XG4iLAotCQkgZXhlY2J1Zi0+YmF0Y2hfbGVuLCBleGVjYnVmLT5iYXRjaF9zdGFy dF9vZmZzZXQsCi0JCSBleGVjYnVmLT5EUjEsIGV4ZWNidWYtPkRSNCwKLQkJIGV4ZWNidWYtPm51 bV9jbGlwcmVjdHMsIGV4ZWNidWYtPmNsaXByZWN0c19wdHIsCi0JCSBleGVjYnVmLT5mbGFncywg ZXhlY2J1Zi0+cnN2ZDEsIGV4ZWNidWYtPnJzdmQyKTsKLQotCWlndF9pbmZvKCJleGVjYnVmIGJ1 ZmZlcl9jb3VudDogJWRcbiIsIGV4ZWNidWYtPmJ1ZmZlcl9jb3VudCk7CisJaWd0X2RlYnVnKCJl eGVjYnVmIFtwaWQ6ICVsZCwgZmQ6ICVkLCBjdHg6ICV1XVxuIiwKKwkJICAobG9uZykgZ2V0cGlk KCksIGliYi0+aTkxNSwgaWJiLT5jdHgpOworCWlndF9kZWJ1ZygiZXhlY2J1ZiBiYXRjaCBsZW46 ICV1LCBzdGFydCBvZmZzZXQ6IDB4JXgsICIKKwkJICAiRFIxOiAweCV4LCBEUjQ6IDB4JXgsICIK KwkJICAibnVtIGNsaXA6ICV1LCBjbGlwcHRyOiAweCVsbHgsICIKKwkJICAiZmxhZ3M6IDB4JWxs eCwgcnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxuIiwKKwkJICBleGVjYnVmLT5iYXRjaF9s ZW4sIGV4ZWNidWYtPmJhdGNoX3N0YXJ0X29mZnNldCwKKwkJICBleGVjYnVmLT5EUjEsIGV4ZWNi dWYtPkRSNCwKKwkJICBleGVjYnVmLT5udW1fY2xpcHJlY3RzLCBleGVjYnVmLT5jbGlwcmVjdHNf cHRyLAorCQkgIGV4ZWNidWYtPmZsYWdzLCBleGVjYnVmLT5yc3ZkMSwgZXhlY2J1Zi0+cnN2ZDIp OworCisJaWd0X2RlYnVnKCJleGVjYnVmIGJ1ZmZlcl9jb3VudDogJWRcbiIsIGV4ZWNidWYtPmJ1 ZmZlcl9jb3VudCk7CiAJZm9yIChpID0gMDsgaSA8IGV4ZWNidWYtPmJ1ZmZlcl9jb3VudDsgaSsr KSB7CiAJCW9iamVjdHMgPSAmKChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKQog CQkJICAgIGZyb21fdXNlcl9wb2ludGVyKGV4ZWNidWYtPmJ1ZmZlcnNfcHRyKSlbaV07CiAJCXJl bG9jcyA9IGZyb21fdXNlcl9wb2ludGVyKG9iamVjdHMtPnJlbG9jc19wdHIpOwogCQlhZGRyZXNz ID0gb2JqZWN0cy0+b2Zmc2V0OwotCQlpZ3RfaW5mbygiIFslZF0gaGFuZGxlOiAldSwgcmVsb2Nf Y291bnQ6ICVkLCByZWxvY19wdHI6ICVwLCAiCi0JCQkgImFsaWduOiAweCVsbHgsIG9mZnNldDog MHglIiBQUkl4NjQgIiwgZmxhZ3M6IDB4JWxseCwgIgotCQkJICJyc3ZkMTogMHglbGx4LCByc3Zk MjogMHglbGx4XG4iLAotCQkJIGksIG9iamVjdHMtPmhhbmRsZSwgb2JqZWN0cy0+cmVsb2NhdGlv bl9jb3VudCwKLQkJCSByZWxvY3MsCi0JCQkgb2JqZWN0cy0+YWxpZ25tZW50LAotCQkJIGFkZHJl c3MsCi0JCQkgb2JqZWN0cy0+ZmxhZ3MsCi0JCQkgb2JqZWN0cy0+cnN2ZDEsIG9iamVjdHMtPnJz dmQyKTsKKwkJaWd0X2RlYnVnKCIgWyVkXSBoYW5kbGU6ICV1LCByZWxvY19jb3VudDogJWQsIHJl bG9jX3B0cjogJXAsICIKKwkJCSAgImFsaWduOiAweCVsbHgsIG9mZnNldDogMHglIiBQUkl4NjQg IiwgZmxhZ3M6IDB4JWxseCwgIgorCQkJICAicnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxu IiwKKwkJCSAgaSwgb2JqZWN0cy0+aGFuZGxlLCBvYmplY3RzLT5yZWxvY2F0aW9uX2NvdW50LAor CQkJICByZWxvY3MsCisJCQkgIG9iamVjdHMtPmFsaWdubWVudCwKKwkJCSAgYWRkcmVzcywKKwkJ CSAgb2JqZWN0cy0+ZmxhZ3MsCisJCQkgIG9iamVjdHMtPnJzdmQxLCBvYmplY3RzLT5yc3ZkMik7 CiAJCWlmIChvYmplY3RzLT5yZWxvY2F0aW9uX2NvdW50KSB7Ci0JCQlpZ3RfaW5mbygiXHRleGVj YnVmIHJlbG9jczpcbiIpOworCQkJaWd0X2RlYnVnKCJcdGV4ZWNidWYgcmVsb2NzOlxuIik7CiAJ CQlmb3IgKGogPSAwOyBqIDwgb2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudDsgaisrKSB7CiAJCQkJ cmVsb2MgPSAmcmVsb2NzW2pdOwogCQkJCWFkZHJlc3MgPSByZWxvYy0+cHJlc3VtZWRfb2Zmc2V0 OwotCQkJCWlndF9pbmZvKCJcdCBbJWRdIHRhcmdldCBoYW5kbGU6ICV1LCAiCi0JCQkJCSAib2Zm c2V0OiAweCVsbHgsIGRlbHRhOiAweCV4LCAiCi0JCQkJCSAicHJlc3VtZWRfb2Zmc2V0OiAweCUi IFBSSXg2NCAiLCAiCi0JCQkJCSAicmVhZF9kb21haW5zOiAweCV4LCAiCi0JCQkJCSAid3JpdGVf ZG9tYWluOiAweCV4XG4iLAotCQkJCQkgaiwgcmVsb2MtPnRhcmdldF9oYW5kbGUsCi0JCQkJCSBy ZWxvYy0+b2Zmc2V0LCByZWxvYy0+ZGVsdGEsCi0JCQkJCSBhZGRyZXNzLAotCQkJCQkgcmVsb2Mt PnJlYWRfZG9tYWlucywKLQkJCQkJIHJlbG9jLT53cml0ZV9kb21haW4pOworCQkJCWlndF9kZWJ1 ZygiXHQgWyVkXSB0YXJnZXQgaGFuZGxlOiAldSwgIgorCQkJCQkgICJvZmZzZXQ6IDB4JWxseCwg ZGVsdGE6IDB4JXgsICIKKwkJCQkJICAicHJlc3VtZWRfb2Zmc2V0OiAweCUiIFBSSXg2NCAiLCAi CisJCQkJCSAgInJlYWRfZG9tYWluczogMHgleCwgIgorCQkJCQkgICJ3cml0ZV9kb21haW46IDB4 JXhcbiIsCisJCQkJCSAgaiwgcmVsb2MtPnRhcmdldF9oYW5kbGUsCisJCQkJCSAgcmVsb2MtPm9m ZnNldCwgcmVsb2MtPmRlbHRhLAorCQkJCQkgIGFkZHJlc3MsCisJCQkJCSAgcmVsb2MtPnJlYWRf ZG9tYWlucywKKwkJCQkJICByZWxvYy0+d3JpdGVfZG9tYWluKTsKIAkJCX0KIAkJfQogCX0KQEAg LTIwNjAsNiArMjI2MiwxMiBAQCBzdGF0aWMgdm9pZCBwcmludF9ub2RlKGNvbnN0IHZvaWQgKm5v ZGUsIFZJU0lUIHdoaWNoLCBpbnQgZGVwdGgpCiAJfQogfQogCit2b2lkIGludGVsX2JiX2R1bXBf Y2FjaGUoc3RydWN0IGludGVsX2JiICppYmIpCit7CisJaWd0X2luZm8oIltwaWQ6ICVsZF0gZHVt cCBjYWNoZVxuIiwgKGxvbmcpIGdldHBpZCgpKTsKKwl0d2FsayhpYmItPnJvb3QsIHByaW50X25v ZGUpOworfQorCiBzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgogY3Jl YXRlX29iamVjdHNfYXJyYXkoc3RydWN0IGludGVsX2JiICppYmIpCiB7CkBAIC0yMDg2LDYgKzIy OTQsOSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfb2Zmc2V0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK IAkJaWd0X2Fzc2VydChvYmplY3QpOwogCiAJCW9iamVjdC0+b2Zmc2V0ID0gb2JqZWN0c1tpXS5v ZmZzZXQ7CisKKwkJaWYgKGkgPT0gMCkKKwkJCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0LT5v ZmZzZXQ7CiAJfQogfQogCkBAIC0yMTk3LDcgKzI0MDgsNiBAQCB1aW50NjRfdCBpbnRlbF9iYl9n ZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQog ewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iamVjdCA9IHsgLmhhbmRsZSA9 IGhhbmRsZSB9OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQ7Ci0J dWludDY0X3QgYWRkcmVzczsKIAogCWlndF9hc3NlcnQoaWJiKTsKIApAQCAtMjIwNSwxMiArMjQx NSw3IEBAIHVpbnQ2NF90IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KHN0cnVjdCBpbnRlbF9i YiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpCiAJaWYgKCFmb3VuZCkKIAkJcmV0dXJuIElOVEVMX0JV Rl9JTlZBTElEX0FERFJFU1M7CiAKLQlhZGRyZXNzID0gKCpmb3VuZCktPm9mZnNldDsKLQotCWlm IChhZGRyZXNzID09IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpCi0JCXJldHVybiBhZGRyZXNz OwotCi0JcmV0dXJuIGFkZHJlc3MgJiAoaWJiLT5ndHRfc2l6ZSAtIDEpOworCXJldHVybiAoKmZv dW5kKS0+b2Zmc2V0OwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZl ci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggYWIxYjBjMjguLjAyOWI3ZTIzIDEw MDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAorKysgYi9saWIvaW50ZWxfYmF0Y2hi dWZmZXIuaApAQCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlICJpZ3RfY29yZS5oIgogI2luY2x1ZGUg ImludGVsX3JlZy5oIgogI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpbnRlbF9hbGxv Y2F0b3IuaCIKIAogI2RlZmluZSBCQVRDSF9TWiA0MDk2CiAjZGVmaW5lIEJBVENIX1JFU0VSVkVE IDE2CkBAIC00MzUsNiArNDM2LDkgQEAgaWd0X21lZGlhX3NwaW5mdW5jX3QgaWd0X2dldF9tZWRp YV9zcGluZnVuYyhpbnQgZGV2aWQpOwogICogQmF0Y2hidWZmZXIgd2l0aG91dCBsaWJkcm0gZGVw ZW5kZW5jeQogICovCiBzdHJ1Y3QgaW50ZWxfYmIgeworCXVpbnQ2NF90IGFsbG9jYXRvcl9oYW5k bGU7CisJdWludDhfdCBhbGxvY2F0b3JfdHlwZTsKKwogCWludCBpOTE1OwogCXVuc2lnbmVkIGlu dCBnZW47CiAJYm9vbCBkZWJ1ZzsKQEAgLTQ0OCw5ICs0NTIsOSBAQCBzdHJ1Y3QgaW50ZWxfYmIg ewogCXVpbnQ2NF90IGFsaWdubWVudDsKIAlpbnQgZmVuY2U7CiAKLQl1aW50MzJfdCBwcm5nOwog CXVpbnQ2NF90IGd0dF9zaXplOwogCWJvb2wgc3VwcG9ydHNfNDhiX2FkZHJlc3M7CisJYm9vbCB1 c2VzX2Z1bGxfcHBndHQ7CiAKIAl1aW50MzJfdCBjdHg7CiAKQEAgLTQ3OCw2ICs0ODIsOCBAQCBz dHJ1Y3QgaW50ZWxfYmIgewogCWludDMyX3QgcmVmY291bnQ7CiB9OwogCitzdHJ1Y3QgaW50ZWxf YmIgKmludGVsX2JiX2NyZWF0ZV9mdWxsKGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90 IHNpemUsCisJCQkJICAgICAgdWludDhfdCBhbGxvY2F0b3JfdHlwZSk7CiBzdHJ1Y3QgaW50ZWxf YmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSk7CiBzdHJ1Y3QgaW50 ZWxfYmIgKgogaW50ZWxfYmJfY3JlYXRlX3dpdGhfY29udGV4dChpbnQgaTkxNSwgdWludDMyX3Qg Y3R4LCB1aW50MzJfdCBzaXplKTsKQEAgLTUwNCw2ICs1MTAsNyBAQCB2b2lkIGludGVsX2JiX2R1 bXAoc3RydWN0IGludGVsX2JiICppYmIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIHZvaWQgaW50 ZWxfYmJfc2V0X2RlYnVnKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIGRlYnVnKTsKIHZvaWQg aW50ZWxfYmJfc2V0X2R1bXBfYmFzZTY0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIGR1bXAp OwogCisvKgogc3RhdGljIGlubGluZSB1aW50NjRfdAogaW50ZWxfYmJfc2V0X2RlZmF1bHRfb2Jq ZWN0X2FsaWdubWVudChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDY0X3QgYWxpZ25tZW50KQog ewpAQCAtNTE5LDYgKzUyNiw3IEBAIGludGVsX2JiX2dldF9kZWZhdWx0X29iamVjdF9hbGlnbm1l bnQoc3RydWN0IGludGVsX2JiICppYmIpCiB7CiAJcmV0dXJuIGliYi0+YWxpZ25tZW50OwogfQor Ki8KIAogc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnRlbF9iYl9vZmZzZXQoc3RydWN0IGludGVs X2JiICppYmIpCiB7CkBAIC01NjgsMTEgKzU3NiwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50 ZWxfYmJfb3V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBkd29yZCkKIH0KIAogc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgotaW50ZWxfYmJfYWRkX29iamVjdChzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBzaXplLAotCQkgICAg dWludDY0X3Qgb2Zmc2V0LCBib29sIHdyaXRlKTsKK2ludGVsX2JiX2FkZF9vYmplY3Qoc3RydWN0 IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgc2l6ZSwKKwkJICAgIHVp bnQ2NF90IG9mZnNldCwgdWludDY0X3QgYWxpZ25tZW50LCBib29sIHdyaXRlKTsKK2Jvb2wgaW50 ZWxfYmJfcmVtb3ZlX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxl LAorCQkJICAgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSk7CiBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCiBpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRl bF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGJvb2wgd3JpdGUpOwotCitzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCitpbnRlbF9iYl9hZGRfaW50ZWxfYnVmX3dpdGhf YWxpZ25tZW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJ CQkJICAgICAgdWludDY0X3QgYWxpZ25tZW50LCBib29sIHdyaXRlKTsKK2Jvb2wgaW50ZWxfYmJf cmVtb3ZlX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAq YnVmKTsKIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKIGludGVsX2JiX2ZpbmRf b2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpOwogCkBAIC02MTks NiArNjMyLDggQEAgdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jX3RvX29iamVjdChzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwKIAkJCQkJIHVpbnQzMl90IG9mZnNldCwKIAkJCQkJIHVpbnQ2NF90 IHByZXN1bWVkX29mZnNldCk7CiAKK3ZvaWQgaW50ZWxfYmJfZHVtcF9jYWNoZShzdHJ1Y3QgaW50 ZWxfYmIgKmliYik7CisKIHZvaWQgaW50ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwg dWludDMyX3QgZW5kX29mZnNldCwKIAkJICAgdWludDY0X3QgZmxhZ3MsIGJvb2wgc3luYyk7CiAK LS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==