From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC205C87FCA for ; Fri, 1 Aug 2025 14:33:44 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uhqns-0008LB-Tl; Fri, 01 Aug 2025 10:32:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uhqmo-0004fs-L7 for grub-devel@gnu.org; Fri, 01 Aug 2025 10:31:19 -0400 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uhqmj-0003qz-37 for grub-devel@gnu.org; Fri, 01 Aug 2025 10:31:05 -0400 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-af93bcaf678so46577466b.0 for ; Fri, 01 Aug 2025 07:31:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754058659; x=1754663459; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YA72YJIs9FjbWMKV8Zgtr2zL5CCWted3QcRSAofsvmk=; b=ZlXiqKEaV6dCy86/sGFt1AIvh+v/9ebyN6y+5lYRorY2PmT91/xVj3WyeyUrgao821 H9L8kgWgyKDkKZrLbNqbm37A6z+LQGopT/V4IM4QW6ISJZuFZvqDKDBalfJ2ghvSoRM9 Rd1WogiEjjPyICsF5KY+q9I1+mpbzFUJJzuIR9Jcgq1/AHYswpM5PZGlppw7GlzRRm4F k0GMhyPExGD2ICXMakPwg5lTWzZmKMZlseC6VrBZbUDlW1LdyQlnCqoD2Ht3/Y4Ojel9 9yVh3p7d2tvyifYjXA7PaYUiYC08B+sf18FiyviPgPwC7yd41IiNH6s+v0oUdAnWP7ep gWZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754058659; x=1754663459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YA72YJIs9FjbWMKV8Zgtr2zL5CCWted3QcRSAofsvmk=; b=stwHwXJdgN22bC3Q9GNScME8zq4YIK66jCr20K1J7fV0mvCvD/WkiscSQwRyFpZTjZ lMzSFGB4C3twQbcHSiM2dxnIPb4p40X3orh8+HauipeL55qlnfSYTgyNZGLMzEAyE9At XNB7p+b/ZhBZgfyl10jnoUGbV8lwhbhM+PfHP4SVTuJ51mtcqh4Ke1cERyn8VI7MoYqx 4KVX0ae8o1WxdfAeerp+Oaxl92FINIUSKa8Ud7TPthhuDJXk3EDdGAKglneeP0c0HbOZ uHXUKgPxGbGsxSle4rMRW5+WXPkGAu5mOoJXRoBiIUBfxz7g+kxJmHu9+cxps5OVvmyW pA4A== X-Gm-Message-State: AOJu0YxSb29VwxYtbeDQVSqglLWbuwmNztixhmhHHMELTpnF0vv9do7+ 9L7WKmYMyH1/t2ZDIx/lIL8YkR6VGLAZhT/mxldnOD6H+g6b/jXe8LMf1ad0HzsUeWg= X-Gm-Gg: ASbGnct36bmpQ2h7bq/HKybLibIj1gVhgZdZVhMsaViLDHNjj+gFwEK/NriLrLDmUCd 8ApxKvW2BEkpX4tl/73kCcECX/7FfiAhP+dVQp2gVXEAYg7qMcX2xifgfyl/gFbaCxJZyFYCqSC xe+5Vh22amkAQxwTIfslhD8LzfO0WKLwBMCKiaoQNjNc0Zq/ZaC++hd7MthQmOMG2oV+I2krd6Z WzMQNUPl95f+4cYaZV1C7pLRiFpdZF5EHYfCxHTHv6LEJikQULNYZCDZL5bPIavo3KDxVzZvRRF m7I8MuWANaGpcpqNy/+RuTMH3wAsvonmVpdciMDQYZOhphMDZihNY42aVvQ65ATBBNoCvN67mMx VgkjSIg433Pzbo+0bPgqnrdcxswBdJfwSZjr3dN0ywZ4= X-Google-Smtp-Source: AGHT+IGnRfoA7cqQbaFvx5xz1J5AX4cqvYpbjbWtjvU8f9YcKaIAmrV1Wxsh0GLOYmxcQe8OqC66bg== X-Received: by 2002:a17:907:2d9f:b0:ae3:6744:3675 with SMTP id a640c23a62f3a-af9318fb115mr419413366b.48.1754058658239; Fri, 01 Aug 2025 07:30:58 -0700 (PDT) Received: from localhost (83-228-105-85.ip.btc-net.bg. [83.228.105.85]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a219ef2sm296143566b.96.2025.08.01.07.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Aug 2025 07:30:57 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH 1/2] zfs: Rewrite endianness handling Date: Fri, 1 Aug 2025 14:30:39 +0000 Message-ID: <20250801143052.251913-2-phcoder@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250801143052.251913-1-phcoder@gmail.com> References: <20250801143052.251913-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::636; envelope-from=phcoder@gmail.com; helo=mail-ej1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org U2lnbmVkLW9mZi1ieTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Ci0t LQogZ3J1Yi1jb3JlL2ZzL3pmcy96ZnMuYyAgICAgICAgICB8IDkxNyArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLQogZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNfZmxldGNoZXIuYyB8ICAxOCAr LQogZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNfc2hhMjU2LmMgICB8ICAxNCArLQogZ3J1Yi1jb3JlL2Zz L3pmcy96ZnNjcnlwdC5jICAgICB8ICAgMiArLQogaW5jbHVkZS9ncnViL3pmcy9zYV9pbXBsLmgg ICAgICB8ICAgMSArCiBpbmNsdWRlL2dydWIvemZzL3NwYS5oICAgICAgICAgIHwgICA5ICsKIGlu Y2x1ZGUvZ3J1Yi96ZnMvemZzLmggICAgICAgICAgfCAgMTAgKy0KIDcgZmlsZXMgY2hhbmdlZCwg NTUxIGluc2VydGlvbnMoKyksIDQyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ncnViLWNv cmUvZnMvemZzL3pmcy5jIGIvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnMuYwppbmRleCBhZmU4MjFmOWIu LmI4OGEyYjAzMiAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnMuYworKysgYi9ncnVi LWNvcmUvZnMvemZzL3pmcy5jCkBAIC0xOTMsMTIgKzE5Myw2IEBAIHR5cGVkZWYgc3RydWN0IHpp b19jaGVja3N1bV9pbmZvIHsKICAgY29uc3QgY2hhcgkJKmNpX25hbWU7CS8qIGRlc2NyaXB0aXZl IG5hbWUgKi8KIH0gemlvX2NoZWNrc3VtX2luZm9fdDsKIAotdHlwZWRlZiBzdHJ1Y3QgZG5vZGVf ZW5kCi17Ci0gIGRub2RlX3BoeXNfdCBkbjsKLSAgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuOwot fSBkbm9kZV9lbmRfdDsKLQogc3RydWN0IGdydWJfemZzX2RldmljZV9kZXNjCiB7CiAgIGVudW0g eyBERVZJQ0VfTEVBRiwgREVWSUNFX01JUlJPUiwgREVWSUNFX1JBSURaIH0gdHlwZTsKQEAgLTIy Myw3ICsyMTcsNyBAQCBzdHJ1Y3QgZ3J1Yl96ZnNfZGV2aWNlX2Rlc2MKIAogc3RydWN0IHN1YnZv bHVtZQogewotICBkbm9kZV9lbmRfdCBtZG47CisgIGRub2RlX3BoeXNfdCBtZG47CiAgIGdydWJf dWludDY0X3Qgb2JqOwogICBncnViX3VpbnQ2NF90IGNhc2VfaW5zZW5zaXRpdmU7CiAgIGdydWJf c2l6ZV90IG5rZXlzOwpAQCAtMjQ3LDEwICsyNDEsOSBAQCBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YQog ICBkbm9kZV9waHlzX3QgKmRub2RlX21kbjsKICAgZ3J1Yl91aW50NjRfdCBkbm9kZV9zdGFydDsK ICAgZ3J1Yl91aW50NjRfdCBkbm9kZV9lbmQ7Ci0gIGdydWJfemZzX2VuZGlhbl90IGRub2RlX2Vu ZGlhbjsKIAotICBkbm9kZV9lbmRfdCBtb3M7Ci0gIGRub2RlX2VuZF90IGRub2RlOworICBkbm9k ZV9waHlzX3QgbW9zOworICBkbm9kZV9waHlzX3QgZG5vZGU7CiAgIHN0cnVjdCBzdWJ2b2x1bWUg c3Vidm9sOwogCiAgIHN0cnVjdCBncnViX3pmc19kZXZpY2VfZGVzYyAqZGV2aWNlc19hdHRhY2hl ZDsKQEAgLTI3Myw3ICsyNjYsNyBAQCBzdHJ1Y3QgZ3J1Yl96ZnNfZGlyX2N0eAogCiBncnViX2Vy cl90ICgqZ3J1Yl96ZnNfZGVjcnlwdCkgKGdydWJfY3J5cHRvX2NpcGhlcl9oYW5kbGVfdCBjaXBo ZXIsCiAJCQkJZ3J1Yl91aW50NjRfdCBhbGdvLAotCQkJCXZvaWQgKm5vbmNlLAorCQkJCWNvbnN0 IHZvaWQgKm5vbmNlLAogCQkJCWNoYXIgKmJ1ZiwgZ3J1Yl9zaXplX3Qgc2l6ZSwKIAkJCQljb25z dCBncnViX3VpbnQzMl90ICpleHBlY3RlZF9tYWMsCiAJCQkJZ3J1Yl96ZnNfZW5kaWFuX3QgZW5k aWFuKSA9IE5VTEw7CkBAIC0zMDIsNyArMjk1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnNwYV9m ZWF0dXJlX25hbWVzW10gPSB7CiBzdGF0aWMgaW50CiBjaGVja19mZWF0dXJlKGNvbnN0IGNoYXIg Km5hbWUsIGdydWJfdWludDY0X3QgdmFsLCBzdHJ1Y3QgZ3J1Yl96ZnNfZGlyX2N0eCAqY3R4KTsK IHN0YXRpYyBncnViX2Vycl90Ci1jaGVja19tb3NfZmVhdHVyZXMoZG5vZGVfcGh5c190ICptb3Nt ZG5fcGh5cyxncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sc3RydWN0IGdydWJfemZzX2RhdGEqIGRh dGEgKTsKK2NoZWNrX21vc19mZWF0dXJlcyhkbm9kZV9waHlzX3QgKm1vc21kbl9waHlzLCBzdHJ1 Y3QgZ3J1Yl96ZnNfZGF0YSogZGF0YSApOwogCiBzdGF0aWMgZ3J1Yl9lcnJfdAogemxpYl9kZWNv bXByZXNzICh2b2lkICpzLCB2b2lkICpkLApAQCAtNDA0LDcgKzM5Nyw3IEBAIHN0YXRpYyBkZWNv bXBfZW50cnlfdCBkZWNvbXBfdGFibGVbWklPX0NPTVBSRVNTX0ZVTkNUSU9OU10gPSB7CiAgIHsi enN0ZCIsIHpzdGRfZGVjb21wcmVzc30sICAgIC8qIFpJT19DT01QUkVTU19aU1REICAgKi8KIH07 CiAKLXN0YXRpYyBncnViX2Vycl90IHppb19yZWFkX2RhdGEgKGJsa3B0cl90ICogYnAsIGdydWJf emZzX2VuZGlhbl90IGVuZGlhbiwKK3N0YXRpYyBncnViX2Vycl90IHppb19yZWFkX2RhdGEgKGNv bnN0IGJsa3B0cl90ICogYnAsCiAJCQkJIHZvaWQgKmJ1Ziwgc3RydWN0IGdydWJfemZzX2RhdGEg KmRhdGEpOwogCiAvKgpAQCAtNDQ5LDYgKzQ0MiwyNDUgQEAgc3RhdGljIHppb19jaGVja3N1bV9p bmZvX3QgemlvX2NoZWNrc3VtX3RhYmxlW1pJT19DSEVDS1NVTV9GVU5DVElPTlNdID0gewogICB7 emlvX2NoZWNrc3VtX1NIQTI1NiwgMSwgMCwgIlNIQTI1NitNQUMifSwKIH07CiAKK3N0YXRpYyBp bmxpbmUgdm9pZAorZ3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KGdydWJfdWludDY0X3QgKnZhbCkKK3sK KyAgKnZhbCA9IGdydWJfc3dhcF9ieXRlczY0KCp2YWwpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQKK2dydWJfemZzX2J5dGVzd2FwX3UzMihncnViX3VpbnQzMl90ICp2YWwpCit7CisgICp2YWwg PSBncnViX3N3YXBfYnl0ZXMzMigqdmFsKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitncnVi X3pmc19ieXRlc3dhcF91MTYoZ3J1Yl91aW50MTZfdCAqdmFsKQoreworICAqdmFsID0gZ3J1Yl9z d2FwX2J5dGVzMTYoKnZhbCk7Cit9CisKK3N0YXRpYyB2b2lkCitncnViX3pmc19ieXRlc3dhcF9j aGVja3N1bSh6aW9fY2tzdW1fdCAqY3N1bSkKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp KyspCisgICAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KCZjc3VtLT56Y193b3JkW2ldKTsKK30KKwor c3RhdGljIHZvaWQKK2dydWJfemZzX2J5dGVzd2FwX2Jsa3B0cihibGtwdHJfdCAqYnApCit7Cisg IGZvciAoaW50IGkgPSAwOyBpIDwgU1BBX0RWQVNfUEVSX0JQOyBpKyspCisgICAgeworICAgICAg Z3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KCZicC0+YmxrX2R2YVtpXS5kdmFfd29yZFswXSk7CisgICAg ICBncnViX3pmc19ieXRlc3dhcF91NjQoJmJwLT5ibGtfZHZhW2ldLmR2YV93b3JkWzFdKTsKKyAg ICB9CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmYnAtPmJsa19wcm9wKTsKKyAgZ3J1Yl96ZnNf Ynl0ZXN3YXBfdTY0KCZicC0+YmxrX3BhZFswXSk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgm YnAtPmJsa19wYWRbMV0pOworICBncnViX3pmc19ieXRlc3dhcF91NjQoJmJwLT5ibGtfcGh5c19i aXJ0aCk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmYnAtPmJsa19iaXJ0aCk7CisgIGdydWJf emZzX2J5dGVzd2FwX3U2NCgmYnAtPmJsa19maWxsKTsKKworICBncnViX3pmc19ieXRlc3dhcF9j aGVja3N1bSgmYnAtPmJsa19ja3N1bSk7Cit9CisKK3N0YXRpYyB2b2lkCitncnViX3pmc19ieXRl c3dhcF91YmVyYmxvY2sodWJlcmJsb2NrX3QgKnViKQoreworICBncnViX3pmc19ieXRlc3dhcF91 NjQoJnViLT51Yl9tYWdpYyk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmdWItPnViX3ZlcnNp b24pOworICBncnViX3pmc19ieXRlc3dhcF91NjQoJnViLT51Yl90eGcpOworICBncnViX3pmc19i eXRlc3dhcF91NjQoJnViLT51Yl9ndWlkX3N1bSk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgm dWItPnViX3RpbWVzdGFtcCk7CisgIGdydWJfemZzX2J5dGVzd2FwX2Jsa3B0cigmdWItPnViX3Jv b3RicCk7Cit9CisKK3N0YXRpYyB2b2lkCitncnViX3pmc19ieXRlc3dhcF90eXBlKHZvaWQgKmJ1 ZiwgZ3J1Yl9zaXplX3QgbGVuLCBncnViX3VpbnQ4X3QgdHlwZSk7CisKK3N0YXRpYyB2b2lkCitn cnViX3pmc19ieXRlc3dhcF9kbm9kZV9wcm9wZXIoZG5vZGVfcGh5c190ICpkbikKK3sKKyAgZ3J1 Yl96ZnNfYnl0ZXN3YXBfdTE2KCZkbi0+ZG5fZGF0YWJsa3N6c2VjKTsKKyAgZ3J1Yl96ZnNfYnl0 ZXN3YXBfdTE2KCZkbi0+ZG5fYm9udXNsZW4pOworICBncnViX3pmc19ieXRlc3dhcF91NjQoJmRu LT5kbl9tYXhibGtpZCk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmZG4tPmRuX3VzZWQpOwor ICBncnViX3pmc19ieXRlc3dhcF91NjQoJmRuLT5kbl9wYWQzWzBdKTsKKyAgZ3J1Yl96ZnNfYnl0 ZXN3YXBfdTY0KCZkbi0+ZG5fcGFkM1sxXSk7CisgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmZG4t PmRuX3BhZDNbMl0pOworICBncnViX3pmc19ieXRlc3dhcF91NjQoJmRuLT5kbl9wYWQzWzNdKTsK KworICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG4tPmRuX25ibGtwdHI7IGkrKykKKyAgICBn cnViX3pmc19ieXRlc3dhcF9ibGtwdHIoJmRuLT5kbl9ibGtwdHJbaV0pOworCisgIGlmIChkbi0+ ZG5fZmxhZ3MgJiBETk9ERV9GTEFHX1NQSUxMX0JMS1BUUikKKyAgICBncnViX3pmc19ieXRlc3dh cF9ibGtwdHIoJmRuLT5kbl9zcGlsbCk7Cit9CisKK3N0YXRpYyB2b2lkCitncnViX3pmc19ieXRl c3dhcF9kbm9kZShkbm9kZV9waHlzX3QgKmRuKQoreworICBncnViX3pmc19ieXRlc3dhcF9kbm9k ZV9wcm9wZXIoZG4pOworICBncnViX3pmc19ieXRlc3dhcF90eXBlKGRuLT5kbl9ib251cywgZG4t PmRuX2JvbnVzbGVuLCBkbi0+ZG5fYm9udXN0eXBlKTsKK30KKworc3RhdGljIHZvaWQKK2dydWJf emZzX2J5dGVzd2FwX29ianNldChvYmpzZXRfcGh5c190ICpvcykKK3sKKyAgZ3J1Yl96ZnNfYnl0 ZXN3YXBfZG5vZGUoJm9zLT5vc19tZXRhX2Rub2RlKTsKKyAgLyogV2UgaWdub3JlIFpJTCBoZWFk ZXIuICAqLworICBncnViX3pmc19ieXRlc3dhcF91NjQoJm9zLT5vc190eXBlKTsKKyAgZ3J1Yl96 ZnNfYnl0ZXN3YXBfdTY0KCZvcy0+b3NfZmxhZ3MpOworICBncnViX3pmc19ieXRlc3dhcF9kbm9k ZSgmb3MtPm9zX3VzZXJ1c2VkX2Rub2RlKTsKKyAgZ3J1Yl96ZnNfYnl0ZXN3YXBfZG5vZGUoJm9z LT5vc19ncm91cHVzZWRfZG5vZGUpOworfQorCitzdGF0aWMgdm9pZAorZ3J1Yl96ZnNfYnl0ZXN3 YXBfdTY0X2FycmF5KGdydWJfdWludDY0X3QgKmFyciwgZ3J1Yl9zaXplX3QgbGVuKQoreworICBm b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuIC8gODsgaSsrKQorICAgIGdydWJfemZzX2J5dGVz d2FwX3U2NChhcnIgKyBpKTsKK30KKworc3RhdGljIHZvaWQKK2dydWJfemZzX2J5dGVzd2FwX216 YXAobXphcF9waHlzX3QgKm16LCBncnViX3NpemVfdCBvYmpzaXplKQoreworICBncnViX3pmc19i eXRlc3dhcF91NjQoJm16LT5tel9ibG9ja190eXBlKTsKKyAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTY0 KCZtei0+bXpfc2FsdCk7CisgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAg Z3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KCZtei0+bXpfcGFkW2ldKTsKKyAgZm9yICh1bnNpZ25lZCBp ID0gMDsgaSA8IG9ianNpemUgLyBNWkFQX0VOVF9MRU4gLSAxOyBpKyspCisgICAgeworICAgICAg Z3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KCZtei0+bXpfY2h1bmtbaV0ubXplX3ZhbHVlKTsKKyAgICAg IGdydWJfemZzX2J5dGVzd2FwX3UzMigmbXotPm16X2NodW5rW2ldLm16ZV9jZCk7CisgICAgICBn cnViX3pmc19ieXRlc3dhcF91MTYoJm16LT5tel9jaHVua1tpXS5temVfcGFkKTsKKyAgICB9Cit9 CisKK3N0YXRpYyB2b2lkCitncnViX3pmc19ieXRlc3dhcF96YXBfbGVhZih6YXBfbGVhZl9waHlz X3QgKmxmLCBncnViX3NpemVfdCBsZW4pCit7CisgIGludCBibGtzZnQgPSB6ZnNfbG9nMiAobGVu KTsKKworICBncnViX3pmc19ieXRlc3dhcF91NjQoJmxmLT5sX2hkci5saF9ibG9ja190eXBlKTsK KyAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTY0KCZsZi0+bF9oZHIubGhfcHJlZml4KTsKKyAgZ3J1Yl96 ZnNfYnl0ZXN3YXBfdTMyKCZsZi0+bF9oZHIubGhfbWFnaWMpOworICBncnViX3pmc19ieXRlc3dh cF91MTYoJmxmLT5sX2hkci5saF9uZnJlZSk7CisgIGdydWJfemZzX2J5dGVzd2FwX3UxNigmbGYt PmxfaGRyLmxoX25lbnRyaWVzKTsKKyAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTE2KCZsZi0+bF9oZHIu bGhfcHJlZml4X2xlbik7CisgIGdydWJfemZzX2J5dGVzd2FwX3UxNigmbGYtPmxfaGRyLmxoX2Zy ZWVsaXN0KTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IFpBUF9MRUFGX0hBU0hfTlVNRU5UUklF UyhibGtzZnQpOyBpKyspCisgICAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTE2KCZsZi0+bF9oYXNoW2ld KTsKKworICBmb3IgKGludCBpID0gMDsgaSA8IFpBUF9MRUFGX05VTUNIVU5LUyAoYmxrc2Z0KTsg aSsrKSB7CisgICAgemFwX2xlYWZfY2h1bmtfdCAqbGMgPSBaQVBfTEVBRl9DSFVOSyhsZiwgYmxr c2Z0LCBpKTsKKyAgICBzdHJ1Y3QgemFwX2xlYWZfZW50cnkgKmxlOworCisgICAgc3dpdGNoIChs Yy0+bF9mcmVlLmxmX3R5cGUpIHsKKyAgICBjYXNlIFpBUF9DSFVOS19FTlRSWToKKyAgICAgIGxl ID0gJmxjLT5sX2VudHJ5OworCisgICAgICBncnViX3pmc19ieXRlc3dhcF91MTYoJmxlLT5sZV9u ZXh0KTsKKyAgICAgIGdydWJfemZzX2J5dGVzd2FwX3UxNigmbGUtPmxlX25hbWVfY2h1bmspOwor ICAgICAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTE2KCZsZS0+bGVfbmFtZV9sZW5ndGgpOworICAgICAg Z3J1Yl96ZnNfYnl0ZXN3YXBfdTE2KCZsZS0+bGVfdmFsdWVfY2h1bmspOworICAgICAgZ3J1Yl96 ZnNfYnl0ZXN3YXBfdTE2KCZsZS0+bGVfdmFsdWVfbGVuZ3RoKTsKKyAgICAgIGdydWJfemZzX2J5 dGVzd2FwX3UzMigmbGUtPmxlX2NkKTsKKyAgICAgIGdydWJfemZzX2J5dGVzd2FwX3U2NCgmbGUt PmxlX2hhc2gpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBaQVBfQ0hVTktfRlJFRToKKyAgICAg IGdydWJfemZzX2J5dGVzd2FwX3UxNigmbGMtPmxfZnJlZS5sZl9uZXh0KTsKKyAgICAgIGJyZWFr OworICAgIGNhc2UgWkFQX0NIVU5LX0FSUkFZOgorICAgICAgZ3J1Yl96ZnNfYnl0ZXN3YXBfdTE2 KCZsYy0+bF9hcnJheS5sYV9uZXh0KTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg ICBncnViX2RwcmludGYoInpmcyIsICJVbmtub3duIGxlYWYgdHlwZSAlZFxuIiwgbGMtPmxfZnJl ZS5sZl90eXBlKTsKKyAgICB9CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dydWJfemZzX2J5dGVz d2FwX3phcCh2b2lkICp6cCwgZ3J1Yl9zaXplX3QgbGVuKQoreworICBncnViX3VpbnQ2NF90IGJs b2NrX3R5cGUgPSAqKGdydWJfdWludDY0X3QgKikgenA7CisgIGlmIChibG9ja190eXBlID09IGdy dWJfc3dhcF9ieXRlczY0X2NvbXBpbGVfdGltZShaQlRfTUlDUk8pKQorICAgIGdydWJfemZzX2J5 dGVzd2FwX216YXAoenAsIGxlbik7CisgIGVsc2UgaWYgKGJsb2NrX3R5cGUgPT0gZ3J1Yl9zd2Fw X2J5dGVzNjRfY29tcGlsZV90aW1lKFpCVF9IRUFERVIpKQorICAgIGdydWJfemZzX2J5dGVzd2Fw X3U2NF9hcnJheSh6cCwgbGVuKTsKKyAgZWxzZSBpZiAoYmxvY2tfdHlwZSA9PSBncnViX3N3YXBf Ynl0ZXM2NF9jb21waWxlX3RpbWUoWkJUX0xFQUYpKQorICAgIGdydWJfemZzX2J5dGVzd2FwX3ph cF9sZWFmKHpwLCBsZW4pOworICBlbHNlCisgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInVua25v d24gWkFQIHR5cGUiKTsKK30KKworc3RhdGljIGNvbnN0IGRtdV9vYmplY3RfYnl0ZXN3YXBfdCBi eXRlc3dhcF90YWJsZVtdID0geworICBETVVfQlNXQVBfVUlOVDgsICBETVVfQlNXQVBfWkFQLCAg ICBETVVfQlNXQVBfVUlOVDY0LCBETVVfQlNXQVBfVUlOVDgsCisgIERNVV9CU1dBUF9VSU5UNjQs IERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9VSU5UNjQsCisg IERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9ETk9ERSwgIERN VV9CU1dBUF9PQkpTRVQsCisgIERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9aQVAsICAgIERN VV9CU1dBUF9aQVAsICAgIERNVV9CU1dBUF9aQVAsCisKKyAgRE1VX0JTV0FQX1VJTlQ2NCwgRE1V X0JTV0FQX1pOT0RFLCAgRE1VX0JTV0FQX09MREFDTCwgRE1VX0JTV0FQX1VJTlQ4LAorICBETVVf QlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLCAgICBETVVfQlNX QVBfVUlOVDgsCisgIERNVV9CU1dBUF9aQVAsICAgIERNVV9CU1dBUF9VSU5UOCwgIERNVV9CU1dB UF9VSU5UNjQsIERNVV9CU1dBUF9aQVAsCisgIERNVV9CU1dBUF9aQVAsICAgIERNVV9CU1dBUF9V SU5UOCwgIERNVV9CU1dBUF9VSU5UNjQsIERNVV9CU1dBUF9aQVAsCisKKyAgRE1VX0JTV0FQX1pB UCwgICAgRE1VX0JTV0FQX0FDTCwgICAgRE1VX0JTV0FQX1VJTlQ4LCAgRE1VX0JTV0FQX1VJTlQ4 LAorICBETVVfQlNXQVBfVUlOVDY0LCBETVVfQlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLCAg ICBETVVfQlNXQVBfWkFQLAorICBETVVfQlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLCAgICBE TVVfQlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLAorICBETVVfQlNXQVBfVUlOVDgsICBETVVf QlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLCAgICBETVVfQlNXQVBfWkFQLAorCisgIERNVV9C U1dBUF9aQVAsICAgIERNVV9CU1dBUF9VSU5UOCwgIERNVV9CU1dBUF9aQVAsICAgIERNVV9CU1dB UF9VSU5UNjQsCisgIERNVV9CU1dBUF9aQVAsICAgIERNVV9CU1dBUF9VSU5UNjQsCit9OworCitz dGF0aWMgZG11X29iamVjdF9ieXRlc3dhcF90CitnZXRfYnl0ZXN3YXBfdHlwZShncnViX3VpbnQ4 X3QgdHlwZSkKK3sKKyAgaWYgKHR5cGUgJiAweDgwKQorICAgIHJldHVybiB0eXBlICYgRE1VX09U X0JZVEVTV0FQX01BU0s7CisKKyAgaWYgKHR5cGUgPCBBUlJBWV9TSVpFIChieXRlc3dhcF90YWJs ZSkpCisgICAgcmV0dXJuIGJ5dGVzd2FwX3RhYmxlW3R5cGVdOworICBncnViX2ZhdGFsKCJVbmtu b3duIHR5cGUgJWQiLCB0eXBlKTsKK30KKworc3RhdGljIHZvaWQKK2dydWJfemZzX2J5dGVzd2Fw X3R5cGUodm9pZCAqYnVmLCBncnViX3NpemVfdCBsZW4sIGdydWJfdWludDhfdCB0eXBlKQorewor ICAvKgorCURNVV9CU1dBUF9VSU5UMTYsCisJRE1VX0JTV0FQX1VJTlQzMiwKKwlETVVfQlNXQVBf Wk5PREUsCisJRE1VX0JTV0FQX09MREFDTCwKKwlETVVfQlNXQVBfQUNMLAorCisgICAqLworICBz d2l0Y2ggKGdldF9ieXRlc3dhcF90eXBlKHR5cGUpKQorICAgIHsKKyAgICBjYXNlIERNVV9CU1dB UF9VSU5UODoKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRE1VX0JTV0FQX0ROT0RFOgorICAgICAg Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbiAvIHNpemVvZihkbm9kZV9waHlzX3QpOyBpKysp CisJZ3J1Yl96ZnNfYnl0ZXN3YXBfZG5vZGUoKGRub2RlX3BoeXNfdCAqKWJ1ZiArIGkpOworICAg ICAgYnJlYWs7CisgICAgY2FzZSBETVVfQlNXQVBfT0JKU0VUOgorICAgICAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSA8IGxlbiAvIHNpemVvZihvYmpzZXRfcGh5c190KTsgaSsrKQorCWdydWJfemZz X2J5dGVzd2FwX29ianNldCgob2Jqc2V0X3BoeXNfdCAqKWJ1ZiArIGkpOworICAgICAgYnJlYWs7 CisgICAgY2FzZSBETVVfQlNXQVBfWkFQOgorICAgICAgZ3J1Yl96ZnNfYnl0ZXN3YXBfemFwKGJ1 ZiwgbGVuKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRE1VX0JTV0FQX1VJTlQ2NDoKKyAgICAg IGdydWJfemZzX2J5dGVzd2FwX3U2NF9hcnJheShidWYsIGxlbik7CisgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgZ3J1Yl9mYXRhbCgiVW5rbm93biB0eXBlICVkIiwgdHlwZSk7Cisg ICAgfQorfQorCiAvKgogICogemlvX2NoZWNrc3VtX3ZlcmlmeTogUHJvdmlkZXMgc3VwcG9ydCBm b3IgY2hlY2tzdW0gdmVyaWZpY2F0aW9uLgogICoKQEAgLTQ4Miw4ICs3MTQsMTIgQEAgemlvX2No ZWNrc3VtX3ZlcmlmeSAoemlvX2Nrc3VtX3QgemMsIGdydWJfdWludDMyX3QgY2hlY2tzdW0sCiAg IGVsc2UKICAgICBjaS0+Y2lfZnVuYyAoYnVmLCBzaXplLCBlbmRpYW4sICZhY3R1YWxfY2tzdW0p OwogCi0gIGlmIChncnViX21lbWNtcCAoJmFjdHVhbF9ja3N1bSwgJnpjLAotCQkgICBjaGVja3N1 bSAhPSBaSU9fQ0hFQ0tTVU1fU0hBMjU2X01BQyA/IDMyIDogMjApICE9IDApCisgIGludCBja3N1 bWxlbiA9IGNoZWNrc3VtICE9IFpJT19DSEVDS1NVTV9TSEEyNTZfTUFDID8gMzIgOiAyMDsKKwor ICBpZiAoY2ktPmNpX2VjayAmJiAhR1JVQl9aRlNfSVNfTkFUSVZFX0JZVEVPUkRFUihlbmRpYW4p KQorICAgIGdydWJfemZzX2J5dGVzd2FwX2NoZWNrc3VtKCZhY3R1YWxfY2tzdW0pOworCisgIGlm IChncnViX21lbWNtcCAoJmFjdHVhbF9ja3N1bSwgJnpjLCBja3N1bWxlbikgIT0gMCkKICAgICB7 CiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAiY2hlY2tzdW0gJXMgdmVyaWZpY2F0aW9uIGZh aWxlZFxuIiwgY2ktPmNpX25hbWUpOwogICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgImFjdHVh bCBjaGVja3N1bSAlMDE2bGx4ICUwMTZsbHggJTAxNmxseCAlMDE2bGx4XG4iLApAQCAtNTE1LDMw ICs3NTEsMTQgQEAgemlvX2NoZWNrc3VtX3ZlcmlmeSAoemlvX2Nrc3VtX3QgemMsIGdydWJfdWlu dDMyX3QgY2hlY2tzdW0sCiBzdGF0aWMgaW50CiB2ZGV2X3ViZXJibG9ja19jb21wYXJlICh1YmVy YmxvY2tfdCAqIHViMSwgdWJlcmJsb2NrX3QgKiB1YjIpCiB7Ci0gIGdydWJfemZzX2VuZGlhbl90 IHViMV9lbmRpYW4sIHViMl9lbmRpYW47Ci0gIGlmIChncnViX3pmc190b19jcHU2NCAodWIxLT51 Yl9tYWdpYywgR1JVQl9aRlNfTElUVExFX0VORElBTikKLSAgICAgID09IFVCRVJCTE9DS19NQUdJ QykKLSAgICB1YjFfZW5kaWFuID0gR1JVQl9aRlNfTElUVExFX0VORElBTjsKLSAgZWxzZQotICAg IHViMV9lbmRpYW4gPSBHUlVCX1pGU19CSUdfRU5ESUFOOwotICBpZiAoZ3J1Yl96ZnNfdG9fY3B1 NjQgKHViMi0+dWJfbWFnaWMsIEdSVUJfWkZTX0xJVFRMRV9FTkRJQU4pCi0gICAgICA9PSBVQkVS QkxPQ0tfTUFHSUMpCi0gICAgdWIyX2VuZGlhbiA9IEdSVUJfWkZTX0xJVFRMRV9FTkRJQU47Ci0g IGVsc2UKLSAgICB1YjJfZW5kaWFuID0gR1JVQl9aRlNfQklHX0VORElBTjsKLQotICBpZiAoZ3J1 Yl96ZnNfdG9fY3B1NjQgKHViMS0+dWJfdHhnLCB1YjFfZW5kaWFuKQotICAgICAgPCBncnViX3pm c190b19jcHU2NCAodWIyLT51Yl90eGcsIHViMl9lbmRpYW4pKQorICBpZiAodWIxLT51Yl90eGcg PCB1YjItPnViX3R4ZykKICAgICByZXR1cm4gLTE7Ci0gIGlmIChncnViX3pmc190b19jcHU2NCAo dWIxLT51Yl90eGcsIHViMV9lbmRpYW4pCi0gICAgICA+IGdydWJfemZzX3RvX2NwdTY0ICh1YjIt PnViX3R4ZywgdWIyX2VuZGlhbikpCisgIGlmICh1YjEtPnViX3R4ZyA+IHViMi0+dWJfdHhnKQog ICAgIHJldHVybiAxOwogCi0gIGlmIChncnViX3pmc190b19jcHU2NCAodWIxLT51Yl90aW1lc3Rh bXAsIHViMV9lbmRpYW4pCi0gICAgICA8IGdydWJfemZzX3RvX2NwdTY0ICh1YjItPnViX3RpbWVz dGFtcCwgdWIyX2VuZGlhbikpCisgIGlmICh1YjEtPnViX3RpbWVzdGFtcCA8IHViMi0+dWJfdGlt ZXN0YW1wKQogICAgIHJldHVybiAtMTsKLSAgaWYgKGdydWJfemZzX3RvX2NwdTY0ICh1YjEtPnVi X3RpbWVzdGFtcCwgdWIxX2VuZGlhbikKLSAgICAgID4gZ3J1Yl96ZnNfdG9fY3B1NjQgKHViMi0+ dWJfdGltZXN0YW1wLCB1YjJfZW5kaWFuKSkKKyAgaWYgKHViMS0+dWJfdGltZXN0YW1wID4gdWIy LT51Yl90aW1lc3RhbXApCiAgICAgcmV0dXJuIDE7CiAKICAgcmV0dXJuIDA7CkBAIC02MTUsMzQg KzgzNSwyNyBAQCBmaW5kX2Jlc3R1YiAodWJlcmJsb2NrX3BoeXNfdCAqIHViX2FycmF5LAogCSAg Z3J1Yl9lcnJubyA9IEdSVUJfRVJSX05PTkU7CiAJICBjb250aW51ZTsKIAl9CisKKyAgICAgIGlm ICh1YnB0ci0+dWJwX3ViZXJibG9jay51Yl9tYWdpYyA9PSBncnViX3N3YXBfYnl0ZXM2NF9jb21w aWxlX3RpbWUoVUJFUkJMT0NLX01BR0lDKSkKKwlncnViX3pmc19ieXRlc3dhcF91YmVyYmxvY2so JnVicHRyLT51YnBfdWJlcmJsb2NrKTsKKwogICAgICAgaWYgKHViYmVzdCA9PSBOVUxMCiAJICB8 fCB2ZGV2X3ViZXJibG9ja19jb21wYXJlICgmKHVicHRyLT51YnBfdWJlcmJsb2NrKSwKIAkJCQkg ICAgICYodWJiZXN0LT51YnBfdWJlcmJsb2NrKSkgPiAwKQogCXViYmVzdCA9IHVicHRyOwogICAg IH0KLSAgaWYgKCF1YmJlc3QpCisgIGlmICghdWJiZXN0KSB7CiAgICAgZ3J1Yl9lcnJubyA9IGVy cjsKKyAgICBncnViX2RwcmludGYoInpmcyIsICJubyB2YWxpZCB1YiBmb3VuZC4gdmRldl9weXNf c2VjdG9yPSVsbGRcbiIsCisJCSAobG9uZyBsb25nKWRlc2MtPnZkZXZfcGh5c19zZWN0b3IpOwor ICB9IGVsc2UgeworICAgIGdydWJfZHByaW50ZigiemZzIiwgInZhbGlkIHViIGZvdW5kLiB2ZGV2 X3B5c19zZWN0b3I9JWxsZFxuIiwKKwkJIChsb25nIGxvbmcpZGVzYy0+dmRldl9waHlzX3NlY3Rv cik7CisgIH0KIAogICByZXR1cm4gdWJiZXN0OwogfQogCi1zdGF0aWMgaW5saW5lIGdydWJfc2l6 ZV90Ci1nZXRfcHNpemUgKGJsa3B0cl90ICogYnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbikK LXsKLSAgcmV0dXJuICgoKChncnViX3pmc190b19jcHU2NCAoKGJwKS0+YmxrX3Byb3AsIGVuZGlh bikgPj4gMTYpICYgMHhmZmZmKSArIDEpCi0JICA8PCBTUEFfTUlOQkxPQ0tTSElGVCk7Ci19Ci0K LXN0YXRpYyBncnViX3VpbnQ2NF90Ci1kdmFfZ2V0X29mZnNldCAoY29uc3QgZHZhX3QgKmR2YSwg Z3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuKQotewotICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZHZh PSVsbHgsICVsbHhcbiIsCi0JCSh1bnNpZ25lZCBsb25nIGxvbmcpIGR2YS0+ZHZhX3dvcmRbMF0s Ci0JCSh1bnNpZ25lZCBsb25nIGxvbmcpIGR2YS0+ZHZhX3dvcmRbMV0pOwotICByZXR1cm4gZ3J1 Yl96ZnNfdG9fY3B1NjQgKChkdmEpLT5kdmFfd29yZFsxXSwKLQkJCSAgICBlbmRpYW4pIDw8IFNQ QV9NSU5CTE9DS1NISUZUOwotfQotCiBzdGF0aWMgZ3J1Yl9lcnJfdAogemZzX2ZldGNoX252bGlz dCAoc3RydWN0IGdydWJfemZzX2RldmljZV9kZXNjICpkaXNrZGVzYywgY2hhciAqKm52bGlzdCkK IHsKQEAgLTEwNTQsNyArMTI2Nyw3IEBAIGNoZWNrX3Bvb2xfbGFiZWwgKHN0cnVjdCBncnViX3pm c19kYXRhICpkYXRhLAogCQkJICJiYWQgdmRldl9waHlzX3QudnBfemJ0LnplY19tYWdpYyBudW1i ZXIiKTsKICAgICB9CiAgIC8qIE5vdyBjaGVjayB0aGUgaW50ZWdyaXR5IG9mIHRoZSB2ZGV2X3Bo eXNfdCBzdHJ1Y3R1cmUgdGhvdWdoIGNoZWNrc3VtLiAgKi8KLSAgWklPX1NFVF9DSEVDS1NVTSgm ZW1wdHlja3N1bSwgZGlza2Rlc2MtPnZkZXZfcGh5c19zZWN0b3IgPDwgOSwgMCwgMCwgMCk7Cisg IFpJT19TRVRfQ0hFQ0tTVU0oJmVtcHR5Y2tzdW0sIGdydWJfY3B1X3RvX3pmczY0KGRpc2tkZXNj LT52ZGV2X3BoeXNfc2VjdG9yIDw8IDksIGVuZGlhbiksIDAsIDAsIDApOwogICBlcnIgPSB6aW9f Y2hlY2tzdW1fdmVyaWZ5IChlbXB0eWNrc3VtLCBaSU9fQ0hFQ0tTVU1fTEFCRUwsIGVuZGlhbiwK IAkJCSAgICAgbnZsaXN0LCBWREVWX1BIWVNfU0laRSk7CiAgIGlmIChlcnIpIHsKQEAgLTE3NDMs MTQgKzE5NTYsMTQgQEAgcmVhZF9kZXZpY2UgKGdydWJfdWludDY0X3Qgb2Zmc2V0LCBzdHJ1Y3Qg Z3J1Yl96ZnNfZGV2aWNlX2Rlc2MgKmRlc2MsCiAKIHN0YXRpYyBncnViX2Vycl90CiByZWFkX2R2 YSAoY29uc3QgZHZhX3QgKmR2YSwKLQkgIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgc3RydWN0 IGdydWJfemZzX2RhdGEgKmRhdGEsCisJICBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSwKIAkg IHZvaWQgKmJ1ZiwgZ3J1Yl9zaXplX3QgbGVuKQogewogICBncnViX3VpbnQ2NF90IG9mZnNldDsK ICAgdW5zaWduZWQgaTsKICAgZ3J1Yl9lcnJfdCBlcnIgPSAwOwogICBpbnQgdHJ5ID0gMDsKLSAg b2Zmc2V0ID0gZHZhX2dldF9vZmZzZXQgKGR2YSwgZW5kaWFuKTsKKyAgb2Zmc2V0ID0gRFZBX0dF VF9PRkZTRVQoZHZhKTsKIAogICBmb3IgKHRyeSA9IDA7IHRyeSA8IDI7IHRyeSsrKQogICAgIHsK QEAgLTE3ODAsNyArMTk5Myw3IEBAIHJlYWRfZHZhIChjb25zdCBkdmFfdCAqZHZhLAogICoKICAq Lwogc3RhdGljIGdydWJfZXJyX3QKLXppb19yZWFkX2dhbmcgKGJsa3B0cl90ICogYnAsIGdydWJf emZzX2VuZGlhbl90IGVuZGlhbiwgZHZhX3QgKiBkdmEsIHZvaWQgKmJ1ZiwKK3ppb19yZWFkX2dh bmcgKGNvbnN0IGJsa3B0cl90ICogYnAsIGNvbnN0IGR2YV90ICogZHZhLCB2b2lkICpidWYsCiAJ ICAgICAgIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRhKQogewogICB6aW9fZ2JoX3BoeXNfdCAq emlvX2diOwpAQCAtMTc5MywxMCArMjAwNiw4IEBAIHppb19yZWFkX2dhbmcgKGJsa3B0cl90ICog YnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgZHZhX3QgKiBkdmEsIHZvaWQgKmJ1ZiwKICAg emlvX2diID0gZ3J1Yl9tYWxsb2MgKFNQQV9HQU5HQkxPQ0tTSVpFKTsKICAgaWYgKCF6aW9fZ2Ip CiAgICAgcmV0dXJuIGdydWJfZXJybm87Ci0gIGdydWJfZHByaW50ZiAoInpmcyIsIGVuZGlhbiA9 PSBHUlVCX1pGU19MSVRUTEVfRU5ESUFOID8gImxpdHRsZS1lbmRpYW4gZ2FuZ1xuIgotCQk6ImJp Zy1lbmRpYW4gZ2FuZ1xuIik7CiAKLSAgZXJyID0gcmVhZF9kdmEgKGR2YSwgZW5kaWFuLCBkYXRh LCB6aW9fZ2IsIFNQQV9HQU5HQkxPQ0tTSVpFKTsKKyAgZXJyID0gcmVhZF9kdmEgKGR2YSwgZGF0 YSwgemlvX2diLCBTUEFfR0FOR0JMT0NLU0laRSk7CiAgIGlmIChlcnIpCiAgICAgewogICAgICAg Z3J1Yl9mcmVlICh6aW9fZ2IpOwpAQCAtMTgwNiw4ICsyMDE3LDggQEAgemlvX3JlYWRfZ2FuZyAo YmxrcHRyX3QgKiBicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCBkdmFfdCAqIGR2YSwgdm9p ZCAqYnVmLAogICAvKiBYWFggKi8KICAgLyogc2VsZiBjaGVja3N1bWluZyB0aGUgZ2FuZyBibG9j ayBoZWFkZXIgKi8KICAgWklPX1NFVF9DSEVDS1NVTSAoJnpjLCBEVkFfR0VUX1ZERVYgKGR2YSks Ci0JCSAgICBkdmFfZ2V0X29mZnNldCAoZHZhLCBlbmRpYW4pLCBicC0+YmxrX2JpcnRoLCAwKTsK LSAgZXJyID0gemlvX2NoZWNrc3VtX3ZlcmlmeSAoemMsIFpJT19DSEVDS1NVTV9HQU5HX0hFQURF UiwgZW5kaWFuLAorCQkgICAgRFZBX0dFVF9PRkZTRVQgKGR2YSksIGJwLT5ibGtfYmlydGgsIDAp OworICBlcnIgPSB6aW9fY2hlY2tzdW1fdmVyaWZ5ICh6YywgWklPX0NIRUNLU1VNX0dBTkdfSEVB REVSLCBCUF9HRVRfQllURU9SREVSKGJwKSwKIAkJCSAgICAgKGNoYXIgKikgemlvX2diLCBTUEFf R0FOR0JMT0NLU0laRSk7CiAgIGlmIChlcnIpCiAgICAgewpAQCAtMTgxNSwyMCArMjAyNiwyMiBA QCB6aW9fcmVhZF9nYW5nIChibGtwdHJfdCAqIGJwLCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4s IGR2YV90ICogZHZhLCB2b2lkICpidWYsCiAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIAotICBl bmRpYW4gPSAoZ3J1Yl96ZnNfdG9fY3B1NjQgKGJwLT5ibGtfcHJvcCwgZW5kaWFuKSA+PiA2Mykg JiAxOworICBpZiAoIUdSVUJfWkZTX0lTX05BVElWRV9CWVRFT1JERVIoQlBfR0VUX0JZVEVPUkRF UihicCkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBTUEFfR0JIX05CTEtQVFJTOyBpKyspCisgICAg ICBncnViX3pmc19ieXRlc3dhcF9ibGtwdHIoJnppb19nYi0+emdfYmxrcHRyW2ldKTsKIAogICBm b3IgKGkgPSAwOyBpIDwgU1BBX0dCSF9OQkxLUFRSUzsgaSsrKQogICAgIHsKICAgICAgIGlmIChC UF9JU19IT0xFKCZ6aW9fZ2ItPnpnX2Jsa3B0cltpXSkpCiAJY29udGludWU7CiAKLSAgICAgIGVy ciA9IHppb19yZWFkX2RhdGEgKCZ6aW9fZ2ItPnpnX2Jsa3B0cltpXSwgZW5kaWFuLCBidWYsIGRh dGEpOworICAgICAgZXJyID0gemlvX3JlYWRfZGF0YSAoJnppb19nYi0+emdfYmxrcHRyW2ldLCBi dWYsIGRhdGEpOwogICAgICAgaWYgKGVycikKIAl7CiAJICBncnViX2ZyZWUgKHppb19nYik7CiAJ ICByZXR1cm4gZXJyOwogCX0KLSAgICAgIGJ1ZiA9IChjaGFyICopIGJ1ZiArIGdldF9wc2l6ZSAo Jnppb19nYi0+emdfYmxrcHRyW2ldLCBlbmRpYW4pOworICAgICAgYnVmID0gKGNoYXIgKikgYnVm ICsgQlBfR0VUX1BTSVpFKCZ6aW9fZ2ItPnpnX2Jsa3B0cltpXSk7CiAgICAgfQogICBncnViX2Zy ZWUgKHppb19nYik7CiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtMTgzOCwxMyArMjA1MSwx MiBAQCB6aW9fcmVhZF9nYW5nIChibGtwdHJfdCAqIGJwLCBncnViX3pmc19lbmRpYW5fdCBlbmRp YW4sIGR2YV90ICogZHZhLCB2b2lkICpidWYsCiAgKiBSZWFkIGluIGEgYmxvY2sgb2YgcmF3IGRh dGEgdG8gYnVmLgogICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotemlvX3JlYWRfZGF0YSAoYmxrcHRy X3QgKiBicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lkICpidWYsCi0JICAgICAgIHN0 cnVjdCBncnViX3pmc19kYXRhICpkYXRhKQoremlvX3JlYWRfZGF0YSAoY29uc3QgYmxrcHRyX3Qg KiBicCwgdm9pZCAqYnVmLCBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKIHsKICAgaW50IGks IHBzaXplOwogICBncnViX2Vycl90IGVyciA9IEdSVUJfRVJSX05PTkU7CiAKLSAgcHNpemUgPSBn ZXRfcHNpemUgKGJwLCBlbmRpYW4pOworICBwc2l6ZSA9IEJQX0dFVF9QU0laRSAoYnApOwogCiAg IC8qIHBpY2sgYSBnb29kIGR2YSBmcm9tIHRoZSBibG9jayBwb2ludGVyICovCiAgIGZvciAoaSA9 IDA7IGkgPCBTUEFfRFZBU19QRVJfQlA7IGkrKykKQEAgLTE4NTIsMTAgKzIwNjQsMTAgQEAgemlv X3JlYWRfZGF0YSAoYmxrcHRyX3QgKiBicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lk ICpidWYsCiAgICAgICBpZiAoYnAtPmJsa19kdmFbaV0uZHZhX3dvcmRbMF0gPT0gMCAmJiBicC0+ YmxrX2R2YVtpXS5kdmFfd29yZFsxXSA9PSAwKQogCWNvbnRpbnVlOwogCi0gICAgICBpZiAoKGdy dWJfemZzX3RvX2NwdTY0IChicC0+YmxrX2R2YVtpXS5kdmFfd29yZFsxXSwgZW5kaWFuKT4+NjMp ICYgMSkKLQllcnIgPSB6aW9fcmVhZF9nYW5nIChicCwgZW5kaWFuLCAmYnAtPmJsa19kdmFbaV0s IGJ1ZiwgZGF0YSk7CisgICAgICBpZiAoRFZBX0dFVF9HQU5HKCZicC0+YmxrX2R2YVtpXSkpCisJ ZXJyID0gemlvX3JlYWRfZ2FuZyAoYnAsICZicC0+YmxrX2R2YVtpXSwgYnVmLCBkYXRhKTsKICAg ICAgIGVsc2UKLQllcnIgPSByZWFkX2R2YSAoJmJwLT5ibGtfZHZhW2ldLCBlbmRpYW4sIGRhdGEs IGJ1ZiwgcHNpemUpOworCWVyciA9IHJlYWRfZHZhICgmYnAtPmJsa19kdmFbaV0sIGRhdGEsIGJ1 ZiwgcHNpemUpOwogICAgICAgaWYgKCFlcnIpCiAJcmV0dXJuIEdSVUJfRVJSX05PTkU7CiAgICAg ICBncnViX2Vycm5vID0gR1JVQl9FUlJfTk9ORTsKQEAgLTE5MDYsNyArMjExOCw3IEBAIGRlY29k ZV9lbWJlZGRlZF9icF9jb21wcmVzc2VkKGNvbnN0IGJsa3B0cl90ICpicCwgdm9pZCAqYnVmKQog ICogYW5kIHB1dCB0aGUgdW5jb21wcmVzc2VkIGRhdGEgaW4gYnVmLgogICovCiBzdGF0aWMgZ3J1 Yl9lcnJfdAotemlvX3JlYWQgKGJsa3B0cl90ICpicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFu LCB2b2lkICoqYnVmLAoremlvX3JlYWQgKGNvbnN0IGJsa3B0cl90ICpicCwgdm9pZCAqKmJ1ZiwK IAkgIGdydWJfc2l6ZV90ICpzaXplLCBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKIHsKICAg Z3J1Yl9zaXplX3QgbHNpemUsIHBzaXplOwpAQCAtMTkxOCw5ICsyMTMwLDkgQEAgemlvX3JlYWQg KGJsa3B0cl90ICpicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lkICoqYnVmLAogCiAg ICpidWYgPSBOVUxMOwogCi0gIGNoZWNrc3VtID0gKGdydWJfemZzX3RvX2NwdTY0KChicCktPmJs a19wcm9wLCBlbmRpYW4pID4+IDQwKSAmIDB4ZmY7Ci0gIGNvbXAgPSAoZ3J1Yl96ZnNfdG9fY3B1 NjQoKGJwKS0+YmxrX3Byb3AsIGVuZGlhbik+PjMyKSAmIDB4N2Y7Ci0gIGVuY3J5cHRlZCA9ICgo Z3J1Yl96ZnNfdG9fY3B1NjQoKGJwKS0+YmxrX3Byb3AsIGVuZGlhbikgPj4gNjApICYgMyk7Cisg IGNoZWNrc3VtID0gQlBfR0VUX0NIRUNLU1VNKGJwKTsKKyAgY29tcCA9IEJQX0dFVF9DT01QUkVT UyhicCk7CisgIGVuY3J5cHRlZCA9IEJQX0dFVF9QUk9QX0JJVF82MShicCk7CiAgIGlmIChCUF9J U19FTUJFRERFRChicCkpCiAgICAgewogICAgICAgaWYgKEJQRV9HRVRfRVRZUEUoYnApICE9IEJQ X0VNQkVEREVEX1RZUEVfREFUQSkKQEAgLTE5MjksMTQgKzIxNDEsMTIgQEAgemlvX3JlYWQgKGJs a3B0cl90ICpicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lkICoqYnVmLAogCQkJICAg UFJJdUdSVUJfVUlOVDY0X1QgIilcbiIsCiAJCQkgICBCUEVfR0VUX0VUWVBFIChicCkpOwogICAg ICAgbHNpemUgPSBCUEVfR0VUX0xTSVpFKGJwKTsKLSAgICAgIHBzaXplID0gQkY2NF9HRVRfU0Io Z3J1Yl96ZnNfdG9fY3B1NjQgKChicCktPmJsa19wcm9wLCBlbmRpYW4pLCAyNSwgNywgMCwgMSk7 CisgICAgICBwc2l6ZSA9IEJQRV9HRVRfUFNJWkUoYnApOwogICAgIH0KICAgZWxzZQogICAgIHsK LSAgICAgIGxzaXplID0gKEJQX0lTX0hPTEUoYnApID8gMCA6Ci0JICAgICAgICgoKGdydWJfemZz X3RvX2NwdTY0ICgoYnApLT5ibGtfcHJvcCwgZW5kaWFuKSAmIDB4ZmZmZikgKyAxKQotCSAgICAg ICAgPDwgU1BBX01JTkJMT0NLU0hJRlQpKTsKLSAgICAgIHBzaXplID0gZ2V0X3BzaXplIChicCwg ZW5kaWFuKTsKKyAgICAgIGxzaXplID0gKEJQX0lTX0hPTEUoYnApID8gMCA6IEJQX0dFVF9MU0la RShicCkpOworICAgICAgcHNpemUgPSBCUF9HRVRfUFNJWkUoYnApOwogICAgIH0KICAgZ3J1Yl9k cHJpbnRmKCJ6ZnMiLCAiemlvX3JlYWQ6IEUgJWQ6IHNpemUgJSIgUFJJZEdSVUJfU1NJWkUgIi8l IgogCSAgICAgICBQUklkR1JVQl9TU0laRSAiXG4iLCAoaW50KUJQX0lTX0VNQkVEREVEKGJwKSwg bHNpemUsIHBzaXplKTsKQEAgLTE5NjAsMTIgKzIxNzAsMTEgQEAgemlvX3JlYWQgKGJsa3B0cl90 ICpicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lkICoqYnVmLAogICBpZiAoISBjb21w YnVmKQogICAgIHJldHVybiBncnViX2Vycm5vOwogCi0gIGdydWJfZHByaW50ZiAoInpmcyIsICJl bmRpYW4gPSAlZFxuIiwgZW5kaWFuKTsKICAgaWYgKEJQX0lTX0VNQkVEREVEKGJwKSkKICAgICBl cnIgPSBkZWNvZGVfZW1iZWRkZWRfYnBfY29tcHJlc3NlZChicCwgY29tcGJ1Zik7CiAgIGVsc2UK ICAgICB7Ci0gICAgICBlcnIgPSB6aW9fcmVhZF9kYXRhIChicCwgZW5kaWFuLCBjb21wYnVmLCBk YXRhKTsKKyAgICAgIGVyciA9IHppb19yZWFkX2RhdGEgKGJwLCBjb21wYnVmLCBkYXRhKTsKICAg ICAgIC8qIEZJWE1FIGlzIGl0IHJlYWxseSBuZWNlc3Nhcnk/ICovCiAgICAgICBpZiAoY29tcCAh PSBaSU9fQ09NUFJFU1NfT0ZGKQogCWdydWJfbWVtc2V0IChjb21wYnVmICsgcHNpemUsIDAsIEFM SUdOX1VQIChwc2l6ZSwgMTYpIC0gcHNpemUpOwpAQCAtMTk3OSw3ICsyMTg4LDcgQEAgemlvX3Jl YWQgKGJsa3B0cl90ICpicCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCB2b2lkICoqYnVmLAog CiAgIGlmICghQlBfSVNfRU1CRURERUQoYnApKQogICAgIHsKLSAgICAgIGVyciA9IHppb19jaGVj a3N1bV92ZXJpZnkgKHpjLCBjaGVja3N1bSwgZW5kaWFuLAorICAgICAgZXJyID0gemlvX2NoZWNr c3VtX3ZlcmlmeSAoemMsIGNoZWNrc3VtLCBCUF9HRVRfQllURU9SREVSKGJwKSwKIAkJCSAgICAg ICAgIGNvbXBidWYsIHBzaXplKTsKICAgICAgIGlmIChlcnIpCiAgICAgICAgIHsKQEAgLTIwMDEs OCArMjIxMCw3IEBAIHppb19yZWFkIChibGtwdHJfdCAqYnAsIGdydWJfemZzX2VuZGlhbl90IGVu ZGlhbiwgdm9pZCAqKmJ1ZiwKIAkgIHVuc2lnbmVkIGksIGJlc3RpID0gMDsKIAkgIGdydWJfdWlu dDY0X3QgYmVzdHZhbCA9IDA7CiAJICBmb3IgKGkgPSAwOyBpIDwgZGF0YS0+c3Vidm9sLm5rZXlz OyBpKyspCi0JICAgIGlmIChkYXRhLT5zdWJ2b2wua2V5cmluZ1tpXS50eGcgPD0gZ3J1Yl96ZnNf dG9fY3B1NjQgKGJwLT5ibGtfYmlydGgsCi0JCQkJCQkJCSAgZW5kaWFuKQorCSAgICBpZiAoZGF0 YS0+c3Vidm9sLmtleXJpbmdbaV0udHhnIDw9IGJwLT5ibGtfYmlydGgKIAkJJiYgZGF0YS0+c3Vi dm9sLmtleXJpbmdbaV0udHhnID4gYmVzdHZhbCkKIAkgICAgICB7CiAJCWJlc3RpID0gaTsKQEAg LTIwMTMsMjEgKzIyMjEsMTkgQEAgemlvX3JlYWQgKGJsa3B0cl90ICpicCwgZ3J1Yl96ZnNfZW5k aWFuX3QgZW5kaWFuLCB2b2lkICoqYnVmLAogCSAgICAgIGdydWJfZnJlZSAoY29tcGJ1Zik7CiAJ ICAgICAgKmJ1ZiA9IE5VTEw7CiAJICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgIm5vIGtleSBm b3IgdHhnICUiIFBSSXhHUlVCX1VJTlQ2NF9UICJcbiIsCi0JCQkgICAgZ3J1Yl96ZnNfdG9fY3B1 NjQgKGJwLT5ibGtfYmlydGgsCi0JCQkJCSAgICAgICBlbmRpYW4pKTsKKwkJCSAgICBicC0+Ymxr X2JpcnRoKTsKIAkgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAibm8g a2V5IGZvdW5kIGluIGtleWNoYWluIik7CiAJICAgIH0KIAkgIGdydWJfZHByaW50ZiAoInpmcyIs ICJ1c2luZyBrZXkgJXUgKCUiIFBSSXhHUlVCX1VJTlQ2NF9UCiAJCQkiLCAlcCkgZm9yIHR4ZyAl IiBQUkl4R1JVQl9VSU5UNjRfVCAiXG4iLAogCQkJYmVzdGksIGRhdGEtPnN1YnZvbC5rZXlyaW5n W2Jlc3RpXS50eGcsCiAJCQlkYXRhLT5zdWJ2b2wua2V5cmluZ1tiZXN0aV0uY2lwaGVyLAotCQkJ Z3J1Yl96ZnNfdG9fY3B1NjQgKGJwLT5ibGtfYmlydGgsCi0JCQkJCSAgIGVuZGlhbikpOworCQkJ YnAtPmJsa19iaXJ0aCk7CiAJICBlcnIgPSBncnViX3pmc19kZWNyeXB0IChkYXRhLT5zdWJ2b2wu a2V5cmluZ1tiZXN0aV0uY2lwaGVyLAogCQkJCSAgZGF0YS0+c3Vidm9sLmtleXJpbmdbYmVzdGld LmFsZ28sCi0JCQkJICAmKGJwKS0+YmxrX2R2YVtlbmNyeXB0ZWRdLAorCQkJCSAgJihicCktPmJs a19kdmFbMl0sCiAJCQkJICBjb21wYnVmLCBwc2l6ZSwgemMuemNfbWFjLAotCQkJCSAgZW5kaWFu KTsKKwkJCQkgIEJQX0dFVF9CWVRFT1JERVIoYnApKTsKIAl9CiAgICAgICBpZiAoZXJyKQogCXsK QEAgLTIwNTYsNiArMjI2MiwxNyBAQCB6aW9fcmVhZCAoYmxrcHRyX3QgKmJwLCBncnViX3pmc19l bmRpYW5fdCBlbmRpYW4sIHZvaWQgKipidWYsCiAJfQogICAgIH0KIAorICBpZiAoIUdSVUJfWkZT X0lTX05BVElWRV9CWVRFT1JERVIoQlBfR0VUX0JZVEVPUkRFUihicCkpKQorICAgIHsKKyAgICAg IGlmIChCUF9HRVRfTEVWRUwoYnApID4gMCkKKwl7CisJICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgbHNpemUgLyBzaXplb2YoYmxrcHRyX3QpOyBpKyspCisJICAgIGdydWJfemZzX2J5dGVzd2Fw X2Jsa3B0cigoYmxrcHRyX3QgKikqYnVmICsgaSk7CisJfQorICAgICAgZWxzZQorCWdydWJfemZz X2J5dGVzd2FwX3R5cGUoKmJ1ZiwgbHNpemUsIEJQX0dFVF9UWVBFKGJwKSk7CisgICAgfQorCiAg IHJldHVybiBHUlVCX0VSUl9OT05FOwogfQogCkBAIC0yMDY1LDI5ICsyMjgyLDI4IEBAIHppb19y ZWFkIChibGtwdHJfdCAqYnAsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgdm9pZCAqKmJ1ZiwK ICAqCiAgKi8KIHN0YXRpYyBncnViX2Vycl90Ci1kbXVfcmVhZCAoZG5vZGVfZW5kX3QgKiBkbiwg Z3J1Yl91aW50NjRfdCBibGtpZCwgdm9pZCAqKmJ1ZiwKLQkgIGdydWJfemZzX2VuZGlhbl90ICpl bmRpYW5fb3V0LCBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKK2RtdV9yZWFkIChkbm9kZV9w aHlzX3QgKiBkbiwgZ3J1Yl91aW50NjRfdCBibGtpZCwgdm9pZCAqKmJ1ZiwKKwkgIHN0cnVjdCBn cnViX3pmc19kYXRhICpkYXRhKQogewogICBpbnQgbGV2ZWw7CiAgIGdydWJfb2ZmX3QgaWR4Owot ICBibGtwdHJfdCAqYnBfYXJyYXkgPSBkbi0+ZG4uZG5fYmxrcHRyOwotICBpbnQgZXBicyA9IGRu LT5kbi5kbl9pbmRibGtzaGlmdCAtIFNQQV9CTEtQVFJTSElGVDsKKyAgYmxrcHRyX3QgKmJwX2Fy cmF5ID0gZG4tPmRuX2Jsa3B0cjsKKyAgaW50IGVwYnMgPSBkbi0+ZG5faW5kYmxrc2hpZnQgLSBT UEFfQkxLUFRSU0hJRlQ7CiAgIGJsa3B0cl90ICpicDsKICAgdm9pZCAqdG1wYnVmID0gMDsKLSAg Z3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuOwogICBncnViX2Vycl90IGVyciA9IEdSVUJfRVJSX05P TkU7CiAKICAgYnAgPSBncnViX21hbGxvYyAoc2l6ZW9mIChibGtwdHJfdCkpOwogICBpZiAoIWJw KQogICAgIHJldHVybiBncnViX2Vycm5vOwogCi0gIGVuZGlhbiA9IGRuLT5lbmRpYW47Ci0gIGZv ciAobGV2ZWwgPSBkbi0+ZG4uZG5fbmxldmVscyAtIDE7IGxldmVsID49IDA7IGxldmVsLS0pCisg ICpidWYgPSBOVUxMOworCisgIGZvciAobGV2ZWwgPSBkbi0+ZG5fbmxldmVscyAtIDE7IGxldmVs ID49IDA7IGxldmVsLS0pCiAgICAgewotICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgImVuZGlh biA9ICVkXG4iLCBlbmRpYW4pOwogICAgICAgaWR4ID0gKGJsa2lkID4+IChlcGJzICogbGV2ZWwp KSAmICgoMSA8PCBlcGJzKSAtIDEpOwogICAgICAgKmJwID0gYnBfYXJyYXlbaWR4XTsKLSAgICAg IGlmIChicF9hcnJheSAhPSBkbi0+ZG4uZG5fYmxrcHRyKQorICAgICAgaWYgKGJwX2FycmF5ICE9 IGRuLT5kbl9ibGtwdHIpCiAJewogCSAgZ3J1Yl9mcmVlIChicF9hcnJheSk7CiAJICBicF9hcnJh eSA9IDA7CkBAIC0yMDk1LDggKzIzMTEsNyBAQCBkbXVfcmVhZCAoZG5vZGVfZW5kX3QgKiBkbiwg Z3J1Yl91aW50NjRfdCBibGtpZCwgdm9pZCAqKmJ1ZiwKIAogICAgICAgaWYgKEJQX0lTX0hPTEUg KGJwKSkKIAl7Ci0JICBncnViX3NpemVfdCBzaXplID0gZ3J1Yl96ZnNfdG9fY3B1MTYgKGRuLT5k bi5kbl9kYXRhYmxrc3pzZWMsCi0JCQkJCQlkbi0+ZW5kaWFuKQorCSAgZ3J1Yl9zaXplX3Qgc2l6 ZSA9IGRuLT5kbl9kYXRhYmxrc3pzZWMKIAkgICAgPDwgU1BBX01JTkJMT0NLU0hJRlQ7CiAJICAq YnVmID0gZ3J1Yl9tYWxsb2MgKHNpemUpOwogCSAgaWYgKCEqYnVmKQpAQCAtMjEwNSwyNyArMjMy MCwyMCBAQCBkbXVfcmVhZCAoZG5vZGVfZW5kX3QgKiBkbiwgZ3J1Yl91aW50NjRfdCBibGtpZCwg dm9pZCAqKmJ1ZiwKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgZ3J1Yl9tZW1zZXQgKCpidWYs IDAsIHNpemUpOwotCSAgZW5kaWFuID0gKGdydWJfemZzX3RvX2NwdTY0IChicC0+YmxrX3Byb3As IGVuZGlhbikgPj4gNjMpICYgMTsKIAkgIGJyZWFrOwogCX0KICAgICAgIGlmIChsZXZlbCA9PSAw KQogCXsKLQkgIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZFxuIiwgZW5kaWFuKTsK LQkgIGVyciA9IHppb19yZWFkIChicCwgZW5kaWFuLCBidWYsIDAsIGRhdGEpOwotCSAgZW5kaWFu ID0gKGdydWJfemZzX3RvX2NwdTY0IChicC0+YmxrX3Byb3AsIGVuZGlhbikgPj4gNjMpICYgMTsK KwkgIGVyciA9IHppb19yZWFkIChicCwgYnVmLCAwLCBkYXRhKTsKIAkgIGJyZWFrOwogCX0KLSAg ICAgIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZFxuIiwgZW5kaWFuKTsKLSAgICAg IGVyciA9IHppb19yZWFkIChicCwgZW5kaWFuLCAmdG1wYnVmLCAwLCBkYXRhKTsKLSAgICAgIGVu ZGlhbiA9IChncnViX3pmc190b19jcHU2NCAoYnAtPmJsa19wcm9wLCBlbmRpYW4pID4+IDYzKSAm IDE7CisgICAgICBlcnIgPSB6aW9fcmVhZCAoYnAsICZ0bXBidWYsIDAsIGRhdGEpOwogICAgICAg aWYgKGVycikKIAlicmVhazsKICAgICAgIGJwX2FycmF5ID0gdG1wYnVmOwogICAgIH0KLSAgaWYg KGJwX2FycmF5ICE9IGRuLT5kbi5kbl9ibGtwdHIpCisgIGlmIChicF9hcnJheSAhPSBkbi0+ZG5f YmxrcHRyKQogICAgIGdydWJfZnJlZSAoYnBfYXJyYXkpOwotICBpZiAoZW5kaWFuX291dCkKLSAg ICAqZW5kaWFuX291dCA9IGVuZGlhbjsKIAogICBncnViX2ZyZWUgKGJwKTsKICAgcmV0dXJuIGVy cjsKQEAgLTIxMzYsNyArMjM0NCw3IEBAIGRtdV9yZWFkIChkbm9kZV9lbmRfdCAqIGRuLCBncnVi X3VpbnQ2NF90IGJsa2lkLCB2b2lkICoqYnVmLAogICogaW4gInZhbHVlIi4KICAqLwogc3RhdGlj IGdydWJfZXJyX3QKLW16YXBfbG9va3VwIChtemFwX3BoeXNfdCAqIHphcG9iaiwgZ3J1Yl96ZnNf ZW5kaWFuX3QgZW5kaWFuLAorbXphcF9sb29rdXAgKG16YXBfcGh5c190ICogemFwb2JqLAogCSAg ICAgZ3J1Yl91aW50MzJfdCBvYmpzaXplLCBjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90 ICogdmFsdWUsCiAJICAgICBpbnQgY2FzZV9pbnNlbnNpdGl2ZSkKIHsKQEAgLTIxNTEsNyArMjM1 OSw3IEBAIG16YXBfbG9va3VwIChtemFwX3BoeXNfdCAqIHphcG9iaiwgZ3J1Yl96ZnNfZW5kaWFu X3QgZW5kaWFuLAogICAgICAgaWYgKGNhc2VfaW5zZW5zaXRpdmUgPyAoZ3J1Yl9zdHJjYXNlY21w IChtemFwX2VudFtpXS5temVfbmFtZSwgbmFtZSkgPT0gMCkKIAkgIDogKGdydWJfc3RyY21wICht emFwX2VudFtpXS5temVfbmFtZSwgbmFtZSkgPT0gMCkpCiAJewotCSAgKnZhbHVlID0gZ3J1Yl96 ZnNfdG9fY3B1NjQgKG16YXBfZW50W2ldLm16ZV92YWx1ZSwgZW5kaWFuKTsKKwkgICp2YWx1ZSA9 IG16YXBfZW50W2ldLm16ZV92YWx1ZTsKIAkgIHJldHVybiBHUlVCX0VSUl9OT05FOwogCX0KICAg ICB9CkBAIC0yMTYwLDcgKzIzNjgsNyBAQCBtemFwX2xvb2t1cCAobXphcF9waHlzX3QgKiB6YXBv YmosIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwKIH0KIAogc3RhdGljIGludAotbXphcF9pdGVy YXRlIChtemFwX3BoeXNfdCAqIHphcG9iaiwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCBpbnQg b2Jqc2l6ZSwKK216YXBfaXRlcmF0ZSAobXphcF9waHlzX3QgKiB6YXBvYmosIGludCBvYmpzaXpl LAogCSAgICAgIGludCAoKmhvb2spIChjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IHZh bCwKIAkJCSAgIHN0cnVjdCBncnViX3pmc19kaXJfY3R4ICpjdHgpLAogCSAgICAgIHN0cnVjdCBn cnViX3pmc19kaXJfY3R4ICpjdHgpCkBAIC0yMTc0LDggKzIzODIsNyBAQCBtemFwX2l0ZXJhdGUg KG16YXBfcGh5c190ICogemFwb2JqLCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sIGludCBvYmpz aXplLAogICAgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInphcDogbmFtZSA9ICVzLCB2YWx1ZSA9 ICVsbHgsIGNkID0gJXhcbiIsCiAJCSAgICBtemFwX2VudFtpXS5temVfbmFtZSwgKGxvbmcgbG9u ZyltemFwX2VudFtpXS5temVfdmFsdWUsCiAJCSAgICAoaW50KW16YXBfZW50W2ldLm16ZV9jZCk7 Ci0gICAgICBpZiAoaG9vayAobXphcF9lbnRbaV0ubXplX25hbWUsCi0JCWdydWJfemZzX3RvX2Nw dTY0IChtemFwX2VudFtpXS5temVfdmFsdWUsIGVuZGlhbiksIGN0eCkpCisgICAgICBpZiAoaG9v ayAobXphcF9lbnRbaV0ubXplX25hbWUsIG16YXBfZW50W2ldLm16ZV92YWx1ZSwgY3R4KSkKIAly ZXR1cm4gMTsKICAgICB9CiAKQEAgLTIyNTAsNyArMjQ1Nyw3IEBAIG5hbWVfY21wIChjb25zdCBj aGFyICpzMSwgY29uc3QgY2hhciAqczIsIGdydWJfc2l6ZV90IG4sCiAKIC8qIFhYWCAqLwogc3Rh dGljIGludAotemFwX2xlYWZfYXJyYXlfZXF1YWwgKHphcF9sZWFmX3BoeXNfdCAqIGwsIGdydWJf emZzX2VuZGlhbl90IGVuZGlhbiwKK3phcF9sZWFmX2FycmF5X2VxdWFsICh6YXBfbGVhZl9waHlz X3QgKiBsLAogCQkgICAgICBpbnQgYmxrc2Z0LCBpbnQgY2h1bmssIGdydWJfc2l6ZV90IGFycmF5 X2xlbiwKIAkJICAgICAgY29uc3QgY2hhciAqYnVmLCBpbnQgY2FzZV9pbnNlbnNpdGl2ZSkKIHsK QEAgLTIyNzAsNyArMjQ3Nyw3IEBAIHphcF9sZWFmX2FycmF5X2VxdWFsICh6YXBfbGVhZl9waHlz X3QgKiBsLCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sCiAgICAgICBpZiAobmFtZV9jbXAgKChj aGFyICopIGxhLT5sYV9hcnJheSwgYnVmICsgYnNlZW4sIHRvcmVhZCwKIAkJICAgIGNhc2VfaW5z ZW5zaXRpdmUpICE9IDApCiAJYnJlYWs7Ci0gICAgICBjaHVuayA9IGdydWJfemZzX3RvX2NwdTE2 IChsYS0+bGFfbmV4dCwgZW5kaWFuKTsKKyAgICAgIGNodW5rID0gbGEtPmxhX25leHQ7CiAgICAg ICBic2VlbiArPSB0b3JlYWQ7CiAgICAgfQogICByZXR1cm4gKGJzZWVuID09IGFycmF5X2xlbik7 CkBAIC0yMjc4LDcgKzI0ODUsNyBAQCB6YXBfbGVhZl9hcnJheV9lcXVhbCAoemFwX2xlYWZfcGh5 c190ICogbCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLAogCiAvKiBYWFggKi8KIHN0YXRpYyBn cnViX2Vycl90Ci16YXBfbGVhZl9hcnJheV9nZXQgKHphcF9sZWFmX3BoeXNfdCAqIGwsIGdydWJf emZzX2VuZGlhbl90IGVuZGlhbiwgaW50IGJsa3NmdCwKK3phcF9sZWFmX2FycmF5X2dldCAoemFw X2xlYWZfcGh5c190ICogbCwgaW50IGJsa3NmdCwKIAkJICAgIGludCBjaHVuaywgZ3J1Yl9zaXpl X3QgYXJyYXlfbGVuLCBjaGFyICpidWYpCiB7CiAgIGdydWJfc2l6ZV90IGJzZWVuID0gMDsKQEAg LTIyOTcsNyArMjUwNCw3IEBAIHphcF9sZWFmX2FycmF5X2dldCAoemFwX2xlYWZfcGh5c190ICog bCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLCBpbnQgYmxrc2Z0LAogCiAgICAgICBsYSA9ICZa QVBfTEVBRl9DSFVOSyAobCwgYmxrc2Z0LCBjaHVuayktPmxfYXJyYXk7CiAgICAgICBncnViX21l bWNweSAoYnVmICsgYnNlZW4sbGEtPmxhX2FycmF5LCAgdG9yZWFkKTsKLSAgICAgIGNodW5rID0g Z3J1Yl96ZnNfdG9fY3B1MTYgKGxhLT5sYV9uZXh0LCBlbmRpYW4pOworICAgICAgY2h1bmsgPSBs YS0+bGFfbmV4dDsKICAgICAgIGJzZWVuICs9IHRvcmVhZDsKICAgICB9CiAgIHJldHVybiBHUlVC X0VSUl9OT05FOwpAQCAtMjMxMSw3ICsyNTE4LDcgQEAgemFwX2xlYWZfYXJyYXlfZ2V0ICh6YXBf bGVhZl9waHlzX3QgKiBsLCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4sIGludCBibGtzZnQsCiAg Ki8KIC8qIFhYWCAqLwogc3RhdGljIGdydWJfZXJyX3QKLXphcF9sZWFmX2xvb2t1cCAoemFwX2xl YWZfcGh5c190ICogbCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLAoremFwX2xlYWZfbG9va3Vw ICh6YXBfbGVhZl9waHlzX3QgKiBsLAogCQkgaW50IGJsa3NmdCwgZ3J1Yl91aW50NjRfdCBoLAog CQkgY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCAqIHZhbHVlLAogCQkgaW50IGNhc2Vf aW5zZW5zaXRpdmUpCkBAIC0yMzIwLDEzICsyNTI3LDEzIEBAIHphcF9sZWFmX2xvb2t1cCAoemFw X2xlYWZfcGh5c190ICogbCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLAogICBzdHJ1Y3QgemFw X2xlYWZfZW50cnkgKmxlOwogCiAgIC8qIFZlcmlmeSBpZiB0aGlzIGlzIGEgdmFsaWQgbGVhZiBi bG9jayAqLwotICBpZiAoZ3J1Yl96ZnNfdG9fY3B1NjQgKGwtPmxfaGRyLmxoX2Jsb2NrX3R5cGUs IGVuZGlhbikgIT0gWkJUX0xFQUYpCisgIGlmIChsLT5sX2hkci5saF9ibG9ja190eXBlICE9IFpC VF9MRUFGKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRlMsICJpbnZhbGlk IGxlYWYgdHlwZSIpOwotICBpZiAoZ3J1Yl96ZnNfdG9fY3B1MzIgKGwtPmxfaGRyLmxoX21hZ2lj LCBlbmRpYW4pICE9IFpBUF9MRUFGX01BR0lDKQorICBpZiAobC0+bF9oZHIubGhfbWFnaWMgIT0g WkFQX0xFQUZfTUFHSUMpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywg ImludmFsaWQgbGVhZiBtYWdpYyIpOwogCi0gIGZvciAoY2h1bmsgPSBncnViX3pmc190b19jcHUx NiAobC0+bF9oYXNoW0xFQUZfSEFTSCAoYmxrc2Z0LCBoLCBsKV0sIGVuZGlhbik7Ci0gICAgICAg Y2h1bmsgIT0gQ0hBSU5fRU5EOyBjaHVuayA9IGdydWJfemZzX3RvX2NwdTE2IChsZS0+bGVfbmV4 dCwgZW5kaWFuKSkKKyAgZm9yIChjaHVuayA9IGwtPmxfaGFzaFtMRUFGX0hBU0ggKGJsa3NmdCwg aCwgbCldOworICAgICAgIGNodW5rICE9IENIQUlOX0VORDsgY2h1bmsgPSBsZS0+bGVfbmV4dCkK ICAgICB7CiAKICAgICAgIGlmIChjaHVuayA+PSBaQVBfTEVBRl9OVU1DSFVOS1MgKGJsa3NmdCkp CkBAIC0yMzM4LDIwICsyNTQ1LDE5IEBAIHphcF9sZWFmX2xvb2t1cCAoemFwX2xlYWZfcGh5c190 ICogbCwgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLAogICAgICAgaWYgKGxlLT5sZV90eXBlICE9 IFpBUF9DSFVOS19FTlRSWSkKIAlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAi aW52YWxpZCBjaHVuayBlbnRyeSIpOwogCi0gICAgICBpZiAoZ3J1Yl96ZnNfdG9fY3B1NjQgKGxl LT5sZV9oYXNoLGVuZGlhbikgIT0gaCkKKyAgICAgIGlmIChsZS0+bGVfaGFzaCAhPSBoKQogCWNv bnRpbnVlOwogCiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZnphcDogbGVuZ3RoICVkXG4i LCAoaW50KSBsZS0+bGVfbmFtZV9sZW5ndGgpOwogCi0gICAgICBpZiAoemFwX2xlYWZfYXJyYXlf ZXF1YWwgKGwsIGVuZGlhbiwgYmxrc2Z0LAotCQkJCWdydWJfemZzX3RvX2NwdTE2IChsZS0+bGVf bmFtZV9jaHVuayxlbmRpYW4pLAotCQkJCWdydWJfemZzX3RvX2NwdTE2IChsZS0+bGVfbmFtZV9s ZW5ndGgsIGVuZGlhbiksCisgICAgICBpZiAoemFwX2xlYWZfYXJyYXlfZXF1YWwgKGwsIGJsa3Nm dCwKKwkJCQlsZS0+bGVfbmFtZV9jaHVuaywKKwkJCQlsZS0+bGVfbmFtZV9sZW5ndGgsCiAJCQkJ bmFtZSwgY2FzZV9pbnNlbnNpdGl2ZSkpCiAJewogCSAgc3RydWN0IHphcF9sZWFmX2FycmF5ICps YTsKIAotCSAgaWYgKGxlLT5sZV9pbnRfc2l6ZSAhPSA4IHx8IGdydWJfemZzX3RvX2NwdTE2IChs ZS0+bGVfdmFsdWVfbGVuZ3RoLAotCQkJCQkJCSBlbmRpYW4pICE9IDEpCisJICBpZiAobGUtPmxl X2ludF9zaXplICE9IDggfHwgbGUtPmxlX3ZhbHVlX2xlbmd0aCAhPSAxKQogCSAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAiaW52YWxpZCBsZWFmIGNodW5rIGVudHJ5Iik7 CiAKIAkgIC8qIGdldCB0aGUgdWludDY0X3QgcHJvcGVydHkgdmFsdWUgKi8KQEAgLTIzNjksOSAr MjU3NSw5IEBAIHphcF9sZWFmX2xvb2t1cCAoemFwX2xlYWZfcGh5c190ICogbCwgZ3J1Yl96ZnNf ZW5kaWFuX3QgZW5kaWFuLAogCiAvKiBWZXJpZnkgaWYgdGhpcyBpcyBhIGZhdCB6YXAgaGVhZGVy IGJsb2NrICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotemFwX3ZlcmlmeSAoemFwX3BoeXNfdCAqemFw LCBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4pCit6YXBfdmVyaWZ5ICh6YXBfcGh5c190ICp6YXAp CiB7Ci0gIGlmIChncnViX3pmc190b19jcHU2NCAoemFwLT56YXBfbWFnaWMsIGVuZGlhbikgIT0g KGdydWJfdWludDY0X3QpIFpBUF9NQUdJQykKKyAgaWYgKHphcC0+emFwX21hZ2ljICE9IChncnVi X3VpbnQ2NF90KSBaQVBfTUFHSUMpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JB RF9GUywgImJhZCBaQVAgbWFnaWMiKTsKIAogICBpZiAoemFwLT56YXBfc2FsdCA9PSAwKQpAQCAt MjM4NiwxOCArMjU5MiwxNiBAQCB6YXBfdmVyaWZ5ICh6YXBfcGh5c190ICp6YXAsIGdydWJfemZz X2VuZGlhbl90IGVuZGlhbikKICAqLwogLyogWFhYICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAotZnph cF9sb29rdXAgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5c190ICogemFwLAorZnph cF9sb29rdXAgKGRub2RlX3BoeXNfdCAqIHphcF9kbm9kZSwgemFwX3BoeXNfdCAqIHphcCwKIAkg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIGdydWJfdWludDY0X3QgKiB2YWx1ZSwKIAkgICAgIHN0cnVj dCBncnViX3pmc19kYXRhICpkYXRhLCBpbnQgY2FzZV9pbnNlbnNpdGl2ZSkKIHsKICAgdm9pZCAq bDsKICAgZ3J1Yl91aW50NjRfdCBoYXNoLCBpZHgsIGJsa2lkOwotICBpbnQgYmxrc2Z0ID0gemZz X2xvZzIgKGdydWJfemZzX3RvX2NwdTE2ICh6YXBfZG5vZGUtPmRuLmRuX2RhdGFibGtzenNlYywK LQkJCQkJICAgIHphcF9kbm9kZS0+ZW5kaWFuKSA8PCBETk9ERV9TSElGVCk7CisgIGludCBibGtz ZnQgPSB6ZnNfbG9nMiAoemFwX2Rub2RlLT5kbl9kYXRhYmxrc3pzZWMpICsgRE5PREVfU0hJRlQ7 CiAgIGdydWJfZXJyX3QgZXJyOwotICBncnViX3pmc19lbmRpYW5fdCBsZWFmZW5kaWFuOwogCi0g IGVyciA9IHphcF92ZXJpZnkgKHphcCwgemFwX2Rub2RlLT5lbmRpYW4pOworICBlcnIgPSB6YXBf dmVyaWZ5ICh6YXApOwogICBpZiAoZXJyKQogICAgIHJldHVybiBlcnI7CiAKQEAgLTI0MDgsMTYg KzI2MTIsMTYgQEAgZnphcF9sb29rdXAgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5 c190ICogemFwLAogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9OT1RfSU1QTEVNRU5U RURfWUVULAogCQkgICAgICAgImV4dGVybmFsIHBvaW50ZXIgdGFibGVzIG5vdCBzdXBwb3J0ZWQi KTsKICAgaWR4ID0gWkFQX0hBU0hfSURYIChoYXNoLCB6YXAtPnphcF9wdHJ0YmwuenRfc2hpZnQp OwotICBibGtpZCA9IGdydWJfemZzX3RvX2NwdTY0ICgoKGdydWJfdWludDY0X3QgKikgemFwKVtp ZHggKyAoMSA8PCAoYmxrc2Z0IC0gMyAtIDEpKV0sIHphcF9kbm9kZS0+ZW5kaWFuKTsKKyAgYmxr aWQgPSAoKGdydWJfdWludDY0X3QgKikgemFwKVtpZHggKyAoMSA8PCAoYmxrc2Z0IC0gMyAtIDEp KV07CiAKICAgLyogR2V0IHRoZSBsZWFmIGJsb2NrICovCiAgIGlmICgoMVUgPDwgYmxrc2Z0KSA8 IHNpemVvZiAoemFwX2xlYWZfcGh5c190KSkKICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX0ZTLCAiWkFQIGxlYWYgaXMgdG9vIHNtYWxsIik7Ci0gIGVyciA9IGRtdV9yZWFkICh6 YXBfZG5vZGUsIGJsa2lkLCAmbCwgJmxlYWZlbmRpYW4sIGRhdGEpOworICBlcnIgPSBkbXVfcmVh ZCAoemFwX2Rub2RlLCBibGtpZCwgJmwsIGRhdGEpOwogICBpZiAoZXJyKQogICAgIHJldHVybiBl cnI7CiAKLSAgZXJyID0gemFwX2xlYWZfbG9va3VwIChsLCBsZWFmZW5kaWFuLCBibGtzZnQsIGhh c2gsIG5hbWUsIHZhbHVlLAorICBlcnIgPSB6YXBfbGVhZl9sb29rdXAgKGwsIGJsa3NmdCwgaGFz aCwgbmFtZSwgdmFsdWUsCiAJCQkgY2FzZV9pbnNlbnNpdGl2ZSk7CiAgIGdydWJfZnJlZSAobCk7 CiAgIHJldHVybiBlcnI7CkBAIC0yNDI1LDcgKzI2MjksNyBAQCBmemFwX2xvb2t1cCAoZG5vZGVf ZW5kX3QgKiB6YXBfZG5vZGUsIHphcF9waHlzX3QgKiB6YXAsCiAKIC8qIFhYWCAqLwogc3RhdGlj IGludAotZnphcF9pdGVyYXRlIChkbm9kZV9lbmRfdCAqIHphcF9kbm9kZSwgemFwX3BoeXNfdCAq IHphcCwKK2Z6YXBfaXRlcmF0ZSAoZG5vZGVfcGh5c190ICogemFwX2Rub2RlLCB6YXBfcGh5c190 ICogemFwLAogCSAgICAgIGdydWJfc2l6ZV90IG5hbWVfZWxlbV9sZW5ndGgsCiAJICAgICAgaW50 ICgqaG9vaykgKGNvbnN0IHZvaWQgKm5hbWUsIGdydWJfc2l6ZV90IG5hbWVfbGVuZ3RoLAogCQkJ ICAgY29uc3Qgdm9pZCAqdmFsX2luLApAQCAtMjQzNywxMyArMjY0MSwxMSBAQCBmemFwX2l0ZXJh dGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5c190ICogemFwLAogICB2b2lkICps X2luOwogICBncnViX3VpbnQ2NF90IGlkeCwgaWR4MiwgYmxraWQ7CiAgIGdydWJfdWludDE2X3Qg Y2h1bms7Ci0gIGludCBibGtzZnQgPSB6ZnNfbG9nMiAoZ3J1Yl96ZnNfdG9fY3B1MTYgKHphcF9k bm9kZS0+ZG4uZG5fZGF0YWJsa3N6c2VjLAotCQkJCQkgICAgemFwX2Rub2RlLT5lbmRpYW4pIDw8 IEROT0RFX1NISUZUKTsKKyAgaW50IGJsa3NmdCA9IHpmc19sb2cyICh6YXBfZG5vZGUtPmRuX2Rh dGFibGtzenNlYykgKyBETk9ERV9TSElGVDsKICAgZ3J1Yl9lcnJfdCBlcnI7Ci0gIGdydWJfemZz X2VuZGlhbl90IGVuZGlhbjsKICAgZ3J1Yl9zaXplX3Qgc3o7CiAKLSAgaWYgKHphcF92ZXJpZnkg KHphcCwgemFwX2Rub2RlLT5lbmRpYW4pKQorICBpZiAoemFwX3ZlcmlmeSAoemFwKSkKICAgICBy ZXR1cm4gMDsKIAogICAvKiBnZXQgYmxvY2sgaWQgZnJvbSBpbmRleCAqLwpAQCAtMjQ2MSwxNyAr MjY2MywxNSBAQCBmemFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5 c190ICogemFwLAogICAgIH0KICAgZm9yIChpZHggPSAwOyBpZHggPCAoMVVMTCA8PCB6YXAtPnph cF9wdHJ0YmwuenRfc2hpZnQpOyBpZHgrKykKICAgICB7Ci0gICAgICBibGtpZCA9IGdydWJfemZz X3RvX2NwdTY0ICgoKGdydWJfdWludDY0X3QgKikgemFwKVtpZHggKyAoMSA8PCAoYmxrc2Z0IC0g MyAtIDEpKV0sCi0JCQkJIHphcF9kbm9kZS0+ZW5kaWFuKTsKKyAgICAgIGJsa2lkID0gKChncnVi X3VpbnQ2NF90ICopIHphcClbaWR4ICsgKDEgPDwgKGJsa3NmdCAtIDMgLSAxKSldOwogCiAgICAg ICBmb3IgKGlkeDIgPSAwOyBpZHgyIDwgaWR4OyBpZHgyKyspCi0JaWYgKGJsa2lkID09IGdydWJf emZzX3RvX2NwdTY0ICgoKGdydWJfdWludDY0X3QgKikgemFwKVtpZHgyICsgKDEgPDwgKGJsa3Nm dCAtIDMgLSAxKSldLAotCQkJCQl6YXBfZG5vZGUtPmVuZGlhbikpCisJaWYgKGJsa2lkID09ICgo Z3J1Yl91aW50NjRfdCAqKSB6YXApW2lkeDIgKyAoMSA8PCAoYmxrc2Z0IC0gMyAtIDEpKV0pCiAJ ICBicmVhazsKICAgICAgIGlmIChpZHgyICE9IGlkeCkKIAljb250aW51ZTsKIAotICAgICAgZXJy ID0gZG11X3JlYWQgKHphcF9kbm9kZSwgYmxraWQsICZsX2luLCAmZW5kaWFuLCBkYXRhKTsKKyAg ICAgIGVyciA9IGRtdV9yZWFkICh6YXBfZG5vZGUsIGJsa2lkLCAmbF9pbiwgZGF0YSk7CiAgICAg ICBsID0gbF9pbjsKICAgICAgIGlmIChlcnIpCiAJewpAQCAtMjQ4MCwxMiArMjY4MCwxMiBAQCBm emFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5c190ICogemFwLAog CX0KIAogICAgICAgLyogVmVyaWZ5IGlmIHRoaXMgaXMgYSB2YWxpZCBsZWFmIGJsb2NrICovCi0g ICAgICBpZiAoZ3J1Yl96ZnNfdG9fY3B1NjQgKGwtPmxfaGRyLmxoX2Jsb2NrX3R5cGUsIGVuZGlh bikgIT0gWkJUX0xFQUYpCisgICAgICBpZiAobC0+bF9oZHIubGhfYmxvY2tfdHlwZSAhPSBaQlRf TEVBRikKIAl7CiAJICBncnViX2ZyZWUgKGwpOwogCSAgY29udGludWU7CiAJfQotICAgICAgaWYg KGdydWJfemZzX3RvX2NwdTMyIChsLT5sX2hkci5saF9tYWdpYywgZW5kaWFuKSAhPSBaQVBfTEVB Rl9NQUdJQykKKyAgICAgIGlmIChsLT5sX2hkci5saF9tYWdpYyAhPSBaQVBfTEVBRl9NQUdJQykK IAl7CiAJICBncnViX2ZyZWUgKGwpOwogCSAgY29udGludWU7CkBAIC0yNTAzLDcgKzI3MDMsNyBA QCBmemFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5c190ICogemFw LAogCSAgaWYgKGxlLT5sZV90eXBlICE9IFpBUF9DSFVOS19FTlRSWSkKIAkgICAgY29udGludWU7 CiAKLQkgIGlmIChncnViX211bCAoZ3J1Yl96ZnNfdG9fY3B1MTYgKGxlLT5sZV9uYW1lX2xlbmd0 aCwgZW5kaWFuKSwgbmFtZV9lbGVtX2xlbmd0aCwgJnN6KSB8fAorCSAgaWYgKGdydWJfbXVsIChs ZS0+bGVfbmFtZV9sZW5ndGgsIG5hbWVfZWxlbV9sZW5ndGgsICZzeikgfHwKIAkgICAgICBncnVi X2FkZCAoc3osIDEsICZzeikpCiAJICAgIHsKIAkgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9P VVRfT0ZfUkFOR0UsIE5fKCJidWZmZXIgc2l6ZSBvdmVyZmxvdyIpKTsKQEAgLTI1MTYsMTEgKzI3 MTYsOSBAQCBmemFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLCB6YXBfcGh5c190 ICogemFwLAogCSAgICAgIGdydWJfZnJlZSAobCk7CiAJICAgICAgcmV0dXJuIGdydWJfZXJybm87 CiAJICAgIH0KLQkgIGlmICh6YXBfbGVhZl9hcnJheV9nZXQgKGwsIGVuZGlhbiwgYmxrc2Z0LAot CQkJCSAgZ3J1Yl96ZnNfdG9fY3B1MTYgKGxlLT5sZV9uYW1lX2NodW5rLAotCQkJCQkJICAgICBl bmRpYW4pLAotCQkJCSAgZ3J1Yl96ZnNfdG9fY3B1MTYgKGxlLT5sZV9uYW1lX2xlbmd0aCwKLQkJ CQkJCSAgICAgZW5kaWFuKQorCSAgaWYgKHphcF9sZWFmX2FycmF5X2dldCAobCwgYmxrc2Z0LAor CQkJCSAgbGUtPmxlX25hbWVfY2h1bmssCisJCQkJICBsZS0+bGVfbmFtZV9sZW5ndGgKIAkJCQkg ICogbmFtZV9lbGVtX2xlbmd0aCwgYnVmKSkKIAkgICAgewogCSAgICAgIGdydWJfZnJlZSAoYnVm KTsKQEAgLTI1MzAsMTYgKzI3MjgsMTUgQEAgZnphcF9pdGVyYXRlIChkbm9kZV9lbmRfdCAqIHph cF9kbm9kZSwgemFwX3BoeXNfdCAqIHphcCwKIAogCSAgdmFsX2xlbmd0aCA9ICgoaW50KSBsZS0+ bGVfdmFsdWVfbGVuZ3RoCiAJCQkqIChpbnQpIGxlLT5sZV9pbnRfc2l6ZSk7Ci0JICB2YWwgPSBn cnViX21hbGxvYyAoZ3J1Yl96ZnNfdG9fY3B1MTYgKHZhbF9sZW5ndGgsIGVuZGlhbikpOworCSAg dmFsID0gZ3J1Yl9tYWxsb2MgKHZhbF9sZW5ndGgpOwogCSAgaWYgKCF2YWwpCiAJICAgIHsKIAkg ICAgICBncnViX2ZyZWUgKGwpOwogCSAgICAgIGdydWJfZnJlZSAoYnVmKTsKIAkgICAgICByZXR1 cm4gZ3J1Yl9lcnJubzsKIAkgICAgfQotCSAgaWYgKHphcF9sZWFmX2FycmF5X2dldCAobCwgZW5k aWFuLCBibGtzZnQsCi0JCQkJICBncnViX3pmc190b19jcHUxNiAobGUtPmxlX3ZhbHVlX2NodW5r LAotCQkJCQkJICAgICBlbmRpYW4pLAorCSAgaWYgKHphcF9sZWFmX2FycmF5X2dldCAobCwgYmxr c2Z0LAorCQkJCSAgbGUtPmxlX3ZhbHVlX2NodW5rLAogCQkJCSAgdmFsX2xlbmd0aCwgdmFsKSkK IAkgICAgewogCSAgICAgIGdydWJfZnJlZSAoYnVmKTsKQEAgLTI1NjcsMzIgKzI3NjQsMjkgQEAg ZnphcF9pdGVyYXRlIChkbm9kZV9lbmRfdCAqIHphcF9kbm9kZSwgemFwX3BoeXNfdCAqIHphcCwK ICAqCiAgKi8KIHN0YXRpYyBncnViX2Vycl90Ci16YXBfbG9va3VwIChkbm9kZV9lbmRfdCAqIHph cF9kbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCAqdmFsLAoremFwX2xvb2t1 cCAoZG5vZGVfcGh5c190ICogemFwX2Rub2RlLCBjb25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2 NF90ICp2YWwsCiAJICAgIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRhLCBpbnQgY2FzZV9pbnNl bnNpdGl2ZSkKIHsKICAgZ3J1Yl91aW50NjRfdCBibG9ja190eXBlOwogICBncnViX3VpbnQzMl90 IHNpemU7CiAgIHZvaWQgKnphcGJ1ZjsKICAgZ3J1Yl9lcnJfdCBlcnI7Ci0gIGdydWJfemZzX2Vu ZGlhbl90IGVuZGlhbjsKIAogICBncnViX2RwcmludGYgKCJ6ZnMiLCAibG9va2luZyBmb3IgJyVz J1xuIiwgbmFtZSk7CiAKICAgLyogUmVhZCBpbiB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIHphcCBv YmplY3QgZGF0YS4gKi8KLSAgc2l6ZSA9IChncnViX3VpbnQzMl90KSBncnViX3pmc190b19jcHUx NiAoemFwX2Rub2RlLT5kbi5kbl9kYXRhYmxrc3pzZWMsCi0JCQkgICAgemFwX2Rub2RlLT5lbmRp YW4pIDw8IFNQQV9NSU5CTE9DS1NISUZUOwotICBlcnIgPSBkbXVfcmVhZCAoemFwX2Rub2RlLCAw LCAmemFwYnVmLCAmZW5kaWFuLCBkYXRhKTsKKyAgc2l6ZSA9IChncnViX3VpbnQzMl90KSB6YXBf ZG5vZGUtPmRuX2RhdGFibGtzenNlYyA8PCBTUEFfTUlOQkxPQ0tTSElGVDsKKyAgZXJyID0gZG11 X3JlYWQgKHphcF9kbm9kZSwgMCwgJnphcGJ1ZiwgZGF0YSk7CiAgIGlmIChlcnIpCiAgICAgcmV0 dXJuIGVycjsKLSAgYmxvY2tfdHlwZSA9IGdydWJfemZzX3RvX2NwdTY0ICgqKChncnViX3VpbnQ2 NF90ICopIHphcGJ1ZiksIGVuZGlhbik7CisgIGJsb2NrX3R5cGUgPSAqKChncnViX3VpbnQ2NF90 ICopIHphcGJ1Zik7CiAKICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInphcCByZWFkXG4iKTsKIAog ICBpZiAoYmxvY2tfdHlwZSA9PSBaQlRfTUlDUk8pCiAgICAgewogICAgICAgZ3J1Yl9kcHJpbnRm ICgiemZzIiwgIm1pY3JvIHphcFxuIik7Ci0gICAgICBlcnIgPSBtemFwX2xvb2t1cCAoemFwYnVm LCBlbmRpYW4sIHNpemUsIG5hbWUsIHZhbCwKLQkJCSBjYXNlX2luc2Vuc2l0aXZlKTsKKyAgICAg IGVyciA9IG16YXBfbG9va3VwICh6YXBidWYsIHNpemUsIG5hbWUsIHZhbCwgY2FzZV9pbnNlbnNp dGl2ZSk7CiAgICAgICBncnViX2RwcmludGYgKCJ6ZnMiLCAicmV0dXJuZWQgJWRcbiIsIGVycik7 CiAgICAgICBncnViX2ZyZWUgKHphcGJ1Zik7CiAgICAgICByZXR1cm4gZXJyOwpAQCAtMjYzNyw3 ICsyODMxLDcgQEAgemFwX2l0ZXJhdGVfdTY0X3RyYW5zZm9ybSAoY29uc3Qgdm9pZCAqbmFtZSwK IH0KIAogc3RhdGljIGludAotemFwX2l0ZXJhdGVfdTY0IChkbm9kZV9lbmRfdCAqIHphcF9kbm9k ZSwKK3phcF9pdGVyYXRlX3U2NCAoZG5vZGVfcGh5c190ICogemFwX2Rub2RlLAogCQkgaW50ICgq aG9vaykgKGNvbnN0IGNoYXIgKm5hbWUsIGdydWJfdWludDY0X3QgdmFsLAogCQkJICAgICAgc3Ry dWN0IGdydWJfemZzX2Rpcl9jdHggKmN0eCksCiAJCSBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0 YSwgc3RydWN0IGdydWJfemZzX2Rpcl9jdHggKmN0eCkKQEAgLTI2NDcsMjEgKzI4NDEsMjAgQEAg emFwX2l0ZXJhdGVfdTY0IChkbm9kZV9lbmRfdCAqIHphcF9kbm9kZSwKICAgdm9pZCAqemFwYnVm OwogICBncnViX2Vycl90IGVycjsKICAgaW50IHJldDsKLSAgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5k aWFuOwogCiAgIC8qIFJlYWQgaW4gdGhlIGZpcnN0IGJsb2NrIG9mIHRoZSB6YXAgb2JqZWN0IGRh dGEuICovCi0gIHNpemUgPSBncnViX3pmc190b19jcHUxNiAoemFwX2Rub2RlLT5kbi5kbl9kYXRh Ymxrc3pzZWMsIHphcF9kbm9kZS0+ZW5kaWFuKSA8PCBTUEFfTUlOQkxPQ0tTSElGVDsKLSAgZXJy ID0gZG11X3JlYWQgKHphcF9kbm9kZSwgMCwgJnphcGJ1ZiwgJmVuZGlhbiwgZGF0YSk7CisgIHNp emUgPSB6YXBfZG5vZGUtPmRuX2RhdGFibGtzenNlYyA8PCBTUEFfTUlOQkxPQ0tTSElGVDsKKyAg ZXJyID0gZG11X3JlYWQgKHphcF9kbm9kZSwgMCwgJnphcGJ1ZiwgZGF0YSk7CiAgIGlmIChlcnIp CiAgICAgcmV0dXJuIDA7Ci0gIGJsb2NrX3R5cGUgPSBncnViX3pmc190b19jcHU2NCAoKigoZ3J1 Yl91aW50NjRfdCAqKSB6YXBidWYpLCBlbmRpYW4pOworICBibG9ja190eXBlID0gKigoZ3J1Yl91 aW50NjRfdCAqKSB6YXBidWYpOwogCiAgIGdydWJfZHByaW50ZiAoInpmcyIsICJ6YXAgaXRlcmF0 ZVxuIik7CiAKICAgaWYgKGJsb2NrX3R5cGUgPT0gWkJUX01JQ1JPKQogICAgIHsKICAgICAgIGdy dWJfZHByaW50ZiAoInpmcyIsICJtaWNybyB6YXBcbiIpOwotICAgICAgcmV0ID0gbXphcF9pdGVy YXRlICh6YXBidWYsIGVuZGlhbiwgc2l6ZSwgaG9vaywgY3R4KTsKKyAgICAgIHJldCA9IG16YXBf aXRlcmF0ZSAoemFwYnVmLCBzaXplLCBob29rLCBjdHgpOwogICAgICAgZ3J1Yl9mcmVlICh6YXBi dWYpOwogICAgICAgcmV0dXJuIHJldDsKICAgICB9CkBAIC0yNjg1LDcgKzI4NzgsNyBAQCB6YXBf aXRlcmF0ZV91NjQgKGRub2RlX2VuZF90ICogemFwX2Rub2RlLAogfQogCiBzdGF0aWMgaW50Ci16 YXBfaXRlcmF0ZSAoZG5vZGVfZW5kX3QgKiB6YXBfZG5vZGUsCit6YXBfaXRlcmF0ZSAoZG5vZGVf cGh5c190ICogemFwX2Rub2RlLAogCSAgICAgZ3J1Yl9zaXplX3QgbmFtZWVsZW1sZW4sCiAJICAg ICBpbnQgKCpob29rKSAoY29uc3Qgdm9pZCAqbmFtZSwgZ3J1Yl9zaXplX3QgbmFtZWxlbiwKIAkJ CSAgY29uc3Qgdm9pZCAqdmFsX2luLApAQCAtMjY5NywxMyArMjg5MCwxMiBAQCB6YXBfaXRlcmF0 ZSAoZG5vZGVfZW5kX3QgKiB6YXBfZG5vZGUsCiAgIHZvaWQgKnphcGJ1ZjsKICAgZ3J1Yl9lcnJf dCBlcnI7CiAgIGludCByZXQ7Ci0gIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbjsKIAogICAvKiBS ZWFkIGluIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgemFwIG9iamVjdCBkYXRhLiAqLwotICBlcnIg PSBkbXVfcmVhZCAoemFwX2Rub2RlLCAwLCAmemFwYnVmLCAmZW5kaWFuLCBkYXRhKTsKKyAgZXJy ID0gZG11X3JlYWQgKHphcF9kbm9kZSwgMCwgJnphcGJ1ZiwgZGF0YSk7CiAgIGlmIChlcnIpCiAg ICAgcmV0dXJuIDA7Ci0gIGJsb2NrX3R5cGUgPSBncnViX3pmc190b19jcHU2NCAoKigoZ3J1Yl91 aW50NjRfdCAqKSB6YXBidWYpLCBlbmRpYW4pOworICBibG9ja190eXBlID0gKigoZ3J1Yl91aW50 NjRfdCAqKSB6YXBidWYpOwogCiAgIGdydWJfZHByaW50ZiAoInpmcyIsICJ6YXAgaXRlcmF0ZVxu Iik7CiAKQEAgLTI3MzcsMjAgKzI5MjksMTggQEAgemFwX2l0ZXJhdGUgKGRub2RlX2VuZF90ICog emFwX2Rub2RlLAogICoJYnVmIC0gZGF0YSBidWZmZXIgdGhhdCBob2xkcyB0aGUgcmV0dXJuaW5n IGRub2RlCiAgKi8KIHN0YXRpYyBncnViX2Vycl90Ci1kbm9kZV9nZXQgKGRub2RlX2VuZF90ICog bWRuLCBncnViX3VpbnQ2NF90IG9iam51bSwgZ3J1Yl91aW50OF90IHR5cGUsCi0JICAgZG5vZGVf ZW5kX3QgKiBidWYsIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRhKQorZG5vZGVfZ2V0IChkbm9k ZV9waHlzX3QgKiBtZG4sIGdydWJfdWludDY0X3Qgb2JqbnVtLCBncnViX3VpbnQ4X3QgdHlwZSwK KwkgICBkbm9kZV9waHlzX3QgKiBidWYsIHN0cnVjdCBncnViX3pmc19kYXRhICpkYXRhKQogewog ICBncnViX3VpbnQ2NF90IGJsa2lkLCBibGtzejsJLyogdGhlIGJsb2NrIGlkIHRoaXMgb2JqZWN0 IGRub2RlIGlzIGluICovCiAgIGludCBlcGJzOwkJCS8qIHNoaWZ0IG9mIG51bWJlciBvZiBkbm9k ZXMgaW4gYSBibG9jayAqLwogICBpbnQgaWR4OwkJCS8qIGluZGV4IHdpdGhpbiBhIGJsb2NrICov CiAgIHZvaWQgKmRuYnVmOwogICBncnViX2Vycl90IGVycjsKLSAgZ3J1Yl96ZnNfZW5kaWFuX3Qg ZW5kaWFuOwogCiAgIG9iam51bSAmPSBETk9ERV9OVU1fTUFTSzsKIAotICBibGtzeiA9IGdydWJf emZzX3RvX2NwdTE2IChtZG4tPmRuLmRuX2RhdGFibGtzenNlYywKLQkJCSAgICAgbWRuLT5lbmRp YW4pIDw8IFNQQV9NSU5CTE9DS1NISUZUOworICBibGtzeiA9IG1kbi0+ZG5fZGF0YWJsa3N6c2Vj IDw8IFNQQV9NSU5CTE9DS1NISUZUOwogICBlcGJzID0gemZzX2xvZzIgKGJsa3N6KSAtIEROT0RF X1NISUZUOwogCiAgIC8qIFdoaWxlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgd2Ugc2hvdWxk IGNoZWNrIHRoYXQgZXBicyBpcyBub3QgbmVnYXRpdmUuICovCkBAIC0yNzYwLDIyICsyOTUwLDIz IEBAIGRub2RlX2dldCAoZG5vZGVfZW5kX3QgKiBtZG4sIGdydWJfdWludDY0X3Qgb2JqbnVtLCBn cnViX3VpbnQ4X3QgdHlwZSwKICAgYmxraWQgPSBvYmpudW0gPj4gZXBiczsKICAgaWR4ID0gb2Jq bnVtICYgKCgxIDw8IGVwYnMpIC0gMSk7CiAKLSAgaWYgKGRhdGEtPmRub2RlX2J1ZiAhPSBOVUxM ICYmIGdydWJfbWVtY21wIChkYXRhLT5kbm9kZV9tZG4sICZtZG4tPmRuLAotCQkJCQkgICAgICBz aXplb2YgKG1kbi0+ZG4pKSA9PSAwCisgIGlmIChkYXRhLT5kbm9kZV9idWYgIT0gTlVMTCAmJiBn cnViX21lbWNtcCAoZGF0YS0+ZG5vZGVfbWRuLCBtZG4sCisJCQkJCSAgICAgIHNpemVvZiAoKm1k bikpID09IDAKICAgICAgICYmIG9iam51bSA+PSBkYXRhLT5kbm9kZV9zdGFydCAmJiBvYmpudW0g PCBkYXRhLT5kbm9kZV9lbmQpCiAgICAgewotICAgICAgZ3J1Yl9tZW1tb3ZlICgmKGJ1Zi0+ZG4p LCAmKGRhdGEtPmRub2RlX2J1ZilbaWR4XSwgRE5PREVfU0laRSk7Ci0gICAgICBidWYtPmVuZGlh biA9IGRhdGEtPmRub2RlX2VuZGlhbjsKLSAgICAgIGlmICh0eXBlICYmIGJ1Zi0+ZG4uZG5fdHlw ZSAhPSB0eXBlKQorICAgICAgKmJ1ZiA9IChkYXRhLT5kbm9kZV9idWYpW2lkeF07CisgICAgICBp ZiAodHlwZSAmJiBidWYtPmRuX3R5cGUgIT0gdHlwZSkKIAlyZXR1cm4gZ3J1Yl9lcnJvcihHUlVC X0VSUl9CQURfRlMsICJpbmNvcnJlY3QgZG5vZGUgdHlwZSIpOwogICAgICAgcmV0dXJuIEdSVUJf RVJSX05PTkU7CiAgICAgfQogCi0gIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZCwg YmxraWQ9JWxseFxuIiwgbWRuLT5lbmRpYW4sCisgIGdydWJfZHByaW50ZiAoInpmcyIsICJibGtp ZD0lbGx4XG4iLAogCQkodW5zaWduZWQgbG9uZyBsb25nKSBibGtpZCk7Ci0gIGVyciA9IGRtdV9y ZWFkIChtZG4sIGJsa2lkLCAmZG5idWYsICZlbmRpYW4sIGRhdGEpOworICBlcnIgPSBkbXVfcmVh ZCAobWRuLCBibGtpZCwgJmRuYnVmLCBkYXRhKTsKICAgaWYgKGVycikKICAgICByZXR1cm4gZXJy OworICBpZiAoZG5idWYgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvcihHUlVCX0VSUl9C QURfRlMsICJpbnZhbGlkIG9yIHVuYXZhaWxhYmxlIGRub2RlIik7CiAgIGdydWJfZHByaW50ZiAo InpmcyIsICJhbGl2ZVxuIik7CiAKICAgZ3J1Yl9mcmVlIChkYXRhLT5kbm9kZV9idWYpOwpAQCAt Mjc5MiwxNSArMjk4MywxMCBAQCBkbm9kZV9nZXQgKGRub2RlX2VuZF90ICogbWRuLCBncnViX3Vp bnQ2NF90IG9iam51bSwgZ3J1Yl91aW50OF90IHR5cGUsCiAgICAgICBkYXRhLT5kbm9kZV9idWYg PSBkbmJ1ZjsKICAgICAgIGRhdGEtPmRub2RlX3N0YXJ0ID0gYmxraWQgPDwgZXBiczsKICAgICAg IGRhdGEtPmRub2RlX2VuZCA9IChibGtpZCArIDEpIDw8IGVwYnM7Ci0gICAgICBkYXRhLT5kbm9k ZV9lbmRpYW4gPSBlbmRpYW47CiAgICAgfQogCi0gIGdydWJfbWVtbW92ZSAoJihidWYtPmRuKSwg KGRub2RlX3BoeXNfdCAqKSBkbmJ1ZiArIGlkeCwgRE5PREVfU0laRSk7Ci0gIGlmIChkYXRhLT5k bm9kZV9idWYgPT0gMCkKLQkgIC8qIGRuYnVmIG5vdCB1c2VkIGFueW1vcmUgaWYgZGF0YS0+ZG5v ZGVfbWRuIG1hbGxvYyBmYWlsZWQgKi8KLQkgIGdydWJfZnJlZSAoZG5idWYpOwotICBidWYtPmVu ZGlhbiA9IGVuZGlhbjsKLSAgaWYgKHR5cGUgJiYgYnVmLT5kbi5kbl90eXBlICE9IHR5cGUpCisg ICpidWYgPSAoKGRub2RlX3BoeXNfdCAqKSBkbmJ1ZilbaWR4XTsKKyAgaWYgKHR5cGUgJiYgYnVm LT5kbl90eXBlICE9IHR5cGUpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IoR1JVQl9FUlJfQkFEX0ZT LCAiaW5jb3JyZWN0IGRub2RlIHR5cGUiKTsKIAogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKQEAg LTI4MTUsNyArMzAwMSw3IEBAIGRub2RlX2dldCAoZG5vZGVfZW5kX3QgKiBtZG4sIGdydWJfdWlu dDY0X3Qgb2JqbnVtLCBncnViX3VpbnQ4X3QgdHlwZSwKICAqCiAgKi8KIHN0YXRpYyBncnViX2Vy cl90Ci1kbm9kZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLCBjb25zdCBjaGFy ICpwYXRoX2luLCBkbm9kZV9lbmRfdCAqZG4sCitkbm9kZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZv bHVtZSAqc3Vidm9sLCBjb25zdCBjaGFyICpwYXRoX2luLCBkbm9kZV9waHlzX3QgKmRuLAogCQlz dHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKIHsKICAgZ3J1Yl91aW50NjRfdCBvYmpudW0sIHZl cnNpb247CkBAIC0yODI1LDcgKzMwMTEsNyBAQCBkbm9kZV9nZXRfcGF0aCAoc3RydWN0IHN1YnZv bHVtZSAqc3Vidm9sLCBjb25zdCBjaGFyICpwYXRoX2luLCBkbm9kZV9lbmRfdCAqZG4sCiAgIHN0 cnVjdCBkbm9kZV9jaGFpbgogICB7CiAgICAgc3RydWN0IGRub2RlX2NoYWluICpuZXh0OwotICAg IGRub2RlX2VuZF90IGRuOworICAgIGRub2RlX3BoeXNfdCBkbjsKICAgfTsKICAgc3RydWN0IGRu b2RlX2NoYWluICpkbm9kZV9wYXRoID0gMCwgKmRuX25ldywgKnJvb3Q7CiAKQEAgLTI5MjIsNyAr MzEwOCw3IEBAIGRub2RlX2dldF9wYXRoIChzdHJ1Y3Qgc3Vidm9sdW1lICpzdWJ2b2wsIGNvbnN0 IGNoYXIgKnBhdGhfaW4sIGRub2RlX2VuZF90ICpkbiwKICAgICAgIGNoID0gKnBhdGg7CiAgICAg ICAqcGF0aCA9IDA7CQkvKiBlbnN1cmUgbnVsbCB0ZXJtaW5hdGlvbiAqLwogCi0gICAgICBpZiAo ZG5vZGVfcGF0aC0+ZG4uZG4uZG5fdHlwZSAhPSBETVVfT1RfRElSRUNUT1JZX0NPTlRFTlRTKQor ICAgICAgaWYgKGRub2RlX3BhdGgtPmRuLmRuX3R5cGUgIT0gRE1VX09UX0RJUkVDVE9SWV9DT05U RU5UUykKIAl7CiAJICBlcnIgPSBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRV9UWVBFLCBO Xygibm90IGEgZGlyZWN0b3J5IikpOwogCSAgYnJlYWs7CkBAIC0yOTQ3LDI1ICszMTMzLDIzIEBA IGRub2RlX2dldF9wYXRoIChzdHJ1Y3Qgc3Vidm9sdW1lICpzdWJ2b2wsIGNvbnN0IGNoYXIgKnBh dGhfaW4sIGRub2RlX2VuZF90ICpkbiwKIAlicmVhazsKIAogICAgICAgKnBhdGggPSBjaDsKLSAg ICAgIGlmIChkbm9kZV9wYXRoLT5kbi5kbi5kbl9ib251c3R5cGUgPT0gRE1VX09UX1pOT0RFCi0J ICAmJiAoKGdydWJfemZzX3RvX2NwdTY0KCgoem5vZGVfcGh5c190ICopIEROX0JPTlVTICgmZG5v ZGVfcGF0aC0+ZG4uZG4pKS0+enBfbW9kZSwgZG5vZGVfcGF0aC0+ZG4uZW5kaWFuKSA+PiAxMikg JiAweGYpID09IDB4YSkKKyAgICAgIGlmIChkbm9kZV9wYXRoLT5kbi5kbl9ib251c3R5cGUgPT0g RE1VX09UX1pOT0RFCisJICAmJiAoKCgoKHpub2RlX3BoeXNfdCAqKSBETl9CT05VUyAoJmRub2Rl X3BhdGgtPmRuKSktPnpwX21vZGUpID4+IDEyKSAmIDB4ZikgPT0gMHhhKQogCXsKIAkgIGNoYXIg KnN5bV92YWx1ZTsKIAkgIGdydWJfc2l6ZV90IHN6OwogCSAgZ3J1Yl9zaXplX3Qgc3ltX3N6Owog CSAgaW50IGZyZWVfc3ltdmFsID0gMDsKIAkgIGNoYXIgKm9sZHBhdGggPSBwYXRoLCAqb2xkcGF0 aGJ1ZiA9IHBhdGhfYnVmOwotCSAgc3ltX3ZhbHVlID0gKChjaGFyICopIEROX0JPTlVTICgmZG5v ZGVfcGF0aC0+ZG4uZG4pICsgc2l6ZW9mIChzdHJ1Y3Qgem5vZGVfcGh5cykpOworCSAgc3ltX3Zh bHVlID0gKChjaGFyICopIEROX0JPTlVTICgmZG5vZGVfcGF0aC0+ZG4pICsgc2l6ZW9mIChzdHJ1 Y3Qgem5vZGVfcGh5cykpOwogCi0JICBzeW1fc3ogPSBncnViX3pmc190b19jcHU2NCAoKCh6bm9k ZV9waHlzX3QgKikgRE5fQk9OVVMgKCZkbm9kZV9wYXRoLT5kbi5kbikpLT56cF9zaXplLCBkbm9k ZV9wYXRoLT5kbi5lbmRpYW4pOworCSAgc3ltX3N6ID0gKCh6bm9kZV9waHlzX3QgKikgRE5fQk9O VVMgKCZkbm9kZV9wYXRoLT5kbikpLT56cF9zaXplOwogCi0JICBpZiAoZG5vZGVfcGF0aC0+ZG4u ZG4uZG5fZmxhZ3MgJiAxKQorCSAgaWYgKGRub2RlX3BhdGgtPmRuLmRuX2ZsYWdzICYgMSkKIAkg ICAgewogCSAgICAgIGdydWJfc2l6ZV90IGJsb2NrOwogCSAgICAgIGdydWJfc2l6ZV90IGJsa3N6 OwotCSAgICAgIGJsa3N6ID0gKGdydWJfemZzX3RvX2NwdTE2IChkbm9kZV9wYXRoLT5kbi5kbi5k bl9kYXRhYmxrc3pzZWMsCi0JCQkJCSAgZG5vZGVfcGF0aC0+ZG4uZW5kaWFuKQotCQkgICAgICAg PDwgU1BBX01JTkJMT0NLU0hJRlQpOworCSAgICAgIGJsa3N6ID0gZG5vZGVfcGF0aC0+ZG4uZG5f ZGF0YWJsa3N6c2VjIDw8IFNQQV9NSU5CTE9DS1NISUZUOwogCiAJICAgICAgaWYgKGJsa3N6ID09 IDApCiAgICAgICAgICAgICAgICAgewpAQCAtMjk4NSw3ICszMTY5LDcgQEAgZG5vZGVfZ2V0X3Bh dGggKHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwgY29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVf ZW5kX3QgKmRuLAogCQkgIHZvaWQgKnQ7CiAJCSAgZ3J1Yl9zaXplX3QgbW92ZXNpemU7CiAKLQkJ ICBlcnIgPSBkbXVfcmVhZCAoJihkbm9kZV9wYXRoLT5kbiksIGJsb2NrLCAmdCwgMCwgZGF0YSk7 CisJCSAgZXJyID0gZG11X3JlYWQgKCYoZG5vZGVfcGF0aC0+ZG4pLCBibG9jaywgJnQsIGRhdGEp OwogCQkgIGlmIChlcnIpCiAJCSAgICB7CiAJCSAgICAgIGdydWJfZnJlZSAoc3ltX3ZhbHVlKTsK QEAgLTMwNDcsMjIgKzMyMzEsMjIgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUg KnN1YnZvbCwgY29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogCQkgfQogCSAg ZG5fbmV3ID0gZG5vZGVfcGF0aDsKIAl9Ci0gICAgICBpZiAoZG5vZGVfcGF0aC0+ZG4uZG4uZG5f Ym9udXN0eXBlID09IERNVV9PVF9TQSkKKyAgICAgIGlmIChkbm9kZV9wYXRoLT5kbi5kbl9ib251 c3R5cGUgPT0gRE1VX09UX1NBKQogCXsKIAkgIHZvaWQgKnNhaGRycDsKIAkgIGludCBoZHJzaXpl OwogCSAgZ3J1Yl9zaXplX3Qgc3o7CiAJICBib29sIGZyZWVfc2FoZHJwID0gZmFsc2U7CiAKLQkg IGlmIChkbm9kZV9wYXRoLT5kbi5kbi5kbl9ib251c2xlbiAhPSAwKQorCSAgaWYgKGRub2RlX3Bh dGgtPmRuLmRuX2JvbnVzbGVuICE9IDApCiAJICAgIHsKLQkgICAgICBzYWhkcnAgPSBETl9CT05V UyAoJmRub2RlX3BhdGgtPmRuLmRuKTsKKwkgICAgICBzYWhkcnAgPSBETl9CT05VUyAoJmRub2Rl X3BhdGgtPmRuKTsKIAkgICAgfQotCSAgZWxzZSBpZiAoZG5vZGVfcGF0aC0+ZG4uZG4uZG5fZmxh Z3MgJiBETk9ERV9GTEFHX1NQSUxMX0JMS1BUUikKKwkgIGVsc2UgaWYgKGRub2RlX3BhdGgtPmRu LmRuX2ZsYWdzICYgRE5PREVfRkxBR19TUElMTF9CTEtQVFIpCiAJICAgIHsKLQkgICAgICBibGtw dHJfdCAqYnAgPSAmZG5vZGVfcGF0aC0+ZG4uZG4uZG5fc3BpbGw7CisJICAgICAgYmxrcHRyX3Qg KmJwID0gJmRub2RlX3BhdGgtPmRuLmRuX3NwaWxsOwogCi0JICAgICAgZXJyID0gemlvX3JlYWQg KGJwLCBkbm9kZV9wYXRoLT5kbi5lbmRpYW4sICZzYWhkcnAsIE5VTEwsIGRhdGEpOworCSAgICAg IGVyciA9IHppb19yZWFkIChicCwgJnNhaGRycCwgTlVMTCwgZGF0YSk7CiAJICAgICAgaWYgKGVy cikKIAkgICAgICAgIGJyZWFrOwogCSAgICAgIGZyZWVfc2FoZHJwID0gdHJ1ZTsKQEAgLTMwNzUs MTcgKzMyNTksMTQgQEAgZG5vZGVfZ2V0X3BhdGggKHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwg Y29uc3QgY2hhciAqcGF0aF9pbiwgZG5vZGVfZW5kX3QgKmRuLAogCiAJICBoZHJzaXplID0gU0Ff SERSX1NJWkUgKCgoc2FfaGRyX3BoeXNfdCAqKSBzYWhkcnApKTsKIAotCSAgaWYgKCgoZ3J1Yl96 ZnNfdG9fY3B1NjQgKGdydWJfZ2V0X3VuYWxpZ25lZDY0ICgoY2hhciAqKSBzYWhkcnAKLQkJCQkJ CQkgKyBoZHJzaXplCi0JCQkJCQkJICsgU0FfVFlQRV9PRkZTRVQpLAotCQkJCSAgIGRub2RlX3Bh dGgtPmRuLmVuZGlhbikgPj4gMTIpICYgMHhmKSA9PSAweGEpCisJICBpZiAoKChncnViX2dldF91 bmFsaWduZWQ2NCAoKGNoYXIgKikgc2FoZHJwCisJCQkJICAgICAgKyBoZHJzaXplCisJCQkJICAg ICAgKyBTQV9UWVBFX09GRlNFVCkgPj4gMTIpICYgMHhmKSA9PSAweGEpCiAJICAgIHsKIAkgICAg ICBjaGFyICpzeW1fdmFsdWUgPSAoY2hhciAqKSBzYWhkcnAgKyBoZHJzaXplICsgU0FfU1lNTElO S19PRkZTRVQ7Ci0JICAgICAgZ3J1Yl9zaXplX3Qgc3ltX3N6ID0KLQkJZ3J1Yl96ZnNfdG9fY3B1 NjQgKGdydWJfZ2V0X3VuYWxpZ25lZDY0ICgoY2hhciAqKSBzYWhkcnAKKwkgICAgICBncnViX3Np emVfdCBzeW1fc3ogPSBncnViX2dldF91bmFsaWduZWQ2NCAoKGNoYXIgKikgc2FoZHJwCiAJCQkJ CQkJICsgaGRyc2l6ZQotCQkJCQkJCSArIFNBX1NJWkVfT0ZGU0VUKSwKLQkJCQkgICBkbm9kZV9w YXRoLT5kbi5lbmRpYW4pOworCQkJCQkJCSArIFNBX1NJWkVfT0ZGU0VUKTsKIAkgICAgICBjaGFy ICpvbGRwYXRoID0gcGF0aCwgKm9sZHBhdGhidWYgPSBwYXRoX2J1ZjsKIAkgICAgICBpZiAoZ3J1 Yl9hZGQgKHN5bV9zeiwgZ3J1Yl9zdHJsZW4gKG9sZHBhdGgpLCAmc3opIHx8CiAJCSAgZ3J1Yl9h ZGQgKHN6LCAxLCAmc3opKQpAQCAtMzIwNSwxNCArMzM4NiwxMiBAQCBnZXRfZGVmYXVsdF9ib290 ZnNvYmogKGRub2RlX3BoeXNfdCAqIG1vc21kbiwgZ3J1Yl91aW50NjRfdCAqIG9iaiwKICAqCiAg Ki8KIHN0YXRpYyBncnViX2Vycl90Ci1nZXRfZmlsZXN5c3RlbV9kbm9kZSAoZG5vZGVfZW5kX3Qg KiBtb3NtZG4sIGNoYXIgKmZzbmFtZSwKLQkJICAgICAgZG5vZGVfZW5kX3QgKiBtZG4sIHN0cnVj dCBncnViX3pmc19kYXRhICpkYXRhKQorZ2V0X2ZpbGVzeXN0ZW1fZG5vZGUgKGRub2RlX3BoeXNf dCAqIG1vc21kbiwgY2hhciAqZnNuYW1lLAorCQkgICAgICBkbm9kZV9waHlzX3QgKiBtZG4sIHN0 cnVjdCBncnViX3pmc19kYXRhICpkYXRhKQogewogICBncnViX3VpbnQ2NF90IG9iam51bTsKICAg Z3J1Yl9lcnJfdCBlcnI7CiAKLSAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgImVuZGlhbiA9ICVkXG4i LCBtb3NtZG4tPmVuZGlhbik7Ci0KICAgZXJyID0gZG5vZGVfZ2V0IChtb3NtZG4sIERNVV9QT09M X0RJUkVDVE9SWV9PQkpFQ1QsCiAJCSAgIERNVV9PVF9PQkpFQ1RfRElSRUNUT1JZLCBtZG4sIGRh dGEpOwogICBpZiAoZXJyKQpAQCAtMzI0OSw3ICszNDI4LDcgQEAgZ2V0X2ZpbGVzeXN0ZW1fZG5v ZGUgKGRub2RlX2VuZF90ICogbW9zbWRuLCBjaGFyICpmc25hbWUsCiAgICAgICBjaCA9ICpmc25h bWU7CiAgICAgICAqZnNuYW1lID0gMDsKIAotICAgICAgY2hpbGRvYmogPSBncnViX3pmc190b19j cHU2NCAoKCgoZHNsX2Rpcl9waHlzX3QgKikgRE5fQk9OVVMgKCZtZG4tPmRuKSkpLT5kZF9jaGls ZF9kaXJfemFwb2JqLCBtZG4tPmVuZGlhbik7CisgICAgICBjaGlsZG9iaiA9ICgoKGRzbF9kaXJf cGh5c190ICopIEROX0JPTlVTIChtZG4pKSktPmRkX2NoaWxkX2Rpcl96YXBvYmo7CiAgICAgICBl cnIgPSBkbm9kZV9nZXQgKG1vc21kbiwgY2hpbGRvYmosCiAJCSAgICAgICBETVVfT1RfRFNMX0RJ Ul9DSElMRF9NQVAsIG1kbiwgZGF0YSk7CiAgICAgICBpZiAoZXJyKQpAQCAtMzI2OSwxNyArMzQ0 OCwxNSBAQCBnZXRfZmlsZXN5c3RlbV9kbm9kZSAoZG5vZGVfZW5kX3QgKiBtb3NtZG4sIGNoYXIg KmZzbmFtZSwKIH0KIAogc3RhdGljIGdydWJfZXJyX3QKLW1ha2VfbWRuIChkbm9kZV9lbmRfdCAq IG1kbiwgc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEpCittYWtlX21kbiAoZG5vZGVfcGh5c190 ICogbWRuLCBzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKIHsKICAgb2Jqc2V0X3BoeXNfdCAq b3NwOwogICBibGtwdHJfdCAqYnA7CiAgIGdydWJfc2l6ZV90IG9zcHNpemUgPSAwOwogICBncnVi X2Vycl90IGVycjsKIAotICBncnViX2RwcmludGYgKCJ6ZnMiLCAiZW5kaWFuID0gJWRcbiIsIG1k bi0+ZW5kaWFuKTsKLQotICBicCA9ICYoKChkc2xfZGF0YXNldF9waHlzX3QgKikgRE5fQk9OVVMg KCZtZG4tPmRuKSktPmRzX2JwKTsKLSAgZXJyID0gemlvX3JlYWQgKGJwLCBtZG4tPmVuZGlhbiwg KHZvaWQgKiopICZvc3AsICZvc3BzaXplLCBkYXRhKTsKKyAgYnAgPSAmKCgoZHNsX2RhdGFzZXRf cGh5c190ICopIEROX0JPTlVTIChtZG4pKS0+ZHNfYnApOworICBlcnIgPSB6aW9fcmVhZCAoYnAs ICh2b2lkICoqKSAmb3NwLCAmb3Nwc2l6ZSwgZGF0YSk7CiAgIGlmIChlcnIpCiAgICAgcmV0dXJu IGVycjsKICAgaWYgKG9zcHNpemUgPCBPQkpTRVRfUEhZU19TSVpFX1YxNCkKQEAgLTMyODgsOSAr MzQ2NSw3IEBAIG1ha2VfbWRuIChkbm9kZV9lbmRfdCAqIG1kbiwgc3RydWN0IGdydWJfemZzX2Rh dGEgKmRhdGEpCiAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAidG9v IHNtYWxsIG9zcCIpOwogICAgIH0KIAotICBtZG4tPmVuZGlhbiA9IChncnViX3pmc190b19jcHU2 NCAoYnAtPmJsa19wcm9wLCBtZG4tPmVuZGlhbik+PjYzKSAmIDE7Ci0gIGdydWJfbWVtbW92ZSAo KGNoYXIgKikgJihtZG4tPmRuKSwKLQkJKGNoYXIgKikgJihvc3ApLT5vc19tZXRhX2Rub2RlLCBE Tk9ERV9TSVpFKTsKKyAgKm1kbiA9IChvc3ApLT5vc19tZXRhX2Rub2RlOwogICBncnViX2ZyZWUg KG9zcCk7CiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwogfQpAQCAtMzM1Miw3ICszNTI3LDcgQEAg bG9hZF96YXBfa2V5IChjb25zdCB2b2lkICpuYW1lLCBncnViX3NpemVfdCBuYW1lbGVuLCBjb25z dCB2b2lkICp2YWxfaW4sCiAKIHN0YXRpYyBncnViX2Vycl90CiBkbm9kZV9nZXRfZnVsbHBhdGgg KGNvbnN0IGNoYXIgKmZ1bGxwYXRoLCBzdHJ1Y3Qgc3Vidm9sdW1lICpzdWJ2b2wsCi0JCSAgICBk bm9kZV9lbmRfdCAqIGRuLCBpbnQgKmlzZnMsCisJCSAgICBkbm9kZV9waHlzX3QgKiBkbiwgaW50 ICppc2ZzLAogCQkgICAgc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEpCiB7CiAgIGNoYXIgKmZz bmFtZSwgKnNuYXBuYW1lOwpAQCAtMzQxMiw5ICszNTg3LDcgQEAgZG5vZGVfZ2V0X2Z1bGxwYXRo IChjb25zdCBjaGFyICpmdWxscGF0aCwgc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLAogCiAgIGdy dWJfZHByaW50ZiAoInpmcyIsICJhbGl2ZVxuIik7CiAKLSAgaGVhZG9iaiA9IGdydWJfemZzX3Rv X2NwdTY0ICgoKGRzbF9kaXJfcGh5c190ICopIEROX0JPTlVTICgmZG4tPmRuKSktPmRkX2hlYWRf ZGF0YXNldF9vYmosIGRuLT5lbmRpYW4pOwotCi0gIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRp YW4gPSAlZFxuIiwgc3Vidm9sLT5tZG4uZW5kaWFuKTsKKyAgaGVhZG9iaiA9ICgoZHNsX2Rpcl9w aHlzX3QgKikgRE5fQk9OVVMgKGRuKSktPmRkX2hlYWRfZGF0YXNldF9vYmo7CiAKICAgZXJyID0g ZG5vZGVfZ2V0ICgmKGRhdGEtPm1vcyksIGhlYWRvYmosIDAsICZzdWJ2b2wtPm1kbiwgZGF0YSk7 CiAgIGlmIChlcnIpCkBAIC0zNDIzLDE4ICszNTk2LDE5IEBAIGRub2RlX2dldF9mdWxscGF0aCAo Y29uc3QgY2hhciAqZnVsbHBhdGgsIHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwKICAgICAgIGdy dWJfZnJlZSAoc25hcG5hbWUpOwogICAgICAgcmV0dXJuIGVycjsKICAgICB9Ci0gIGdydWJfZHBy aW50ZiAoInpmcyIsICJlbmRpYW4gPSAlZFxuIiwgc3Vidm9sLT5tZG4uZW5kaWFuKTsKKyAga2V5 Y2hhaW5vYmogPSAoKGRzbF9kaXJfcGh5c190ICopIEROX0JPTlVTIChkbikpLT5rZXljaGFpbjsK KworICBncnViX2RwcmludGYoInpmcyIsICJrZXljaGFpbiBvYmogPSAlbGxkXG4iLCAobG9uZyBs b25nKSBrZXljaGFpbm9iaik7CiAKLSAga2V5Y2hhaW5vYmogPSBncnViX3pmc190b19jcHU2NCAo KChkc2xfZGlyX3BoeXNfdCAqKSBETl9CT05VUyAoJmRuLT5kbikpLT5rZXljaGFpbiwgZG4tPmVu ZGlhbik7Ci0gIGlmIChncnViX3pmc19sb2FkX2tleSAmJiBrZXljaGFpbm9iaikKKyAgaWYgKGdy dWJfemZzX2RlY3J5cHQgJiYga2V5Y2hhaW5vYmopCiAgICAgewogICAgICAgc3RydWN0IGRub2Rl X2dldF9mdWxscGF0aF9jdHggY3R4ID0gewogCS5zdWJ2b2wgPSBzdWJ2b2wsCiAJLmtleW4gPSAw CiAgICAgICB9OwotICAgICAgZG5vZGVfZW5kX3Qga2V5Y2hhaW5fZG4sIHByb3BzX2RuOworICAg ICAgZG5vZGVfcGh5c190IGtleWNoYWluX2RuLCBwcm9wc19kbjsKICAgICAgIGdydWJfdWludDY0 X3QgcHJvcHNvYmo7Ci0gICAgICBwcm9wc29iaiA9IGdydWJfemZzX3RvX2NwdTY0ICgoKGRzbF9k aXJfcGh5c190ICopIEROX0JPTlVTICgmZG4tPmRuKSktPmRkX3Byb3BzX3phcG9iaiwgZG4tPmVu ZGlhbik7CisgICAgICBwcm9wc29iaiA9ICgoZHNsX2Rpcl9waHlzX3QgKikgRE5fQk9OVVMgKGRu KSktPmRkX3Byb3BzX3phcG9iajsKIAogICAgICAgZXJyID0gZG5vZGVfZ2V0ICgmKGRhdGEtPm1v cyksIHByb3Bzb2JqLCBETVVfT1RfRFNMX1BST1BTLAogCQkgICAgICAgJnByb3BzX2RuLCBkYXRh KTsKQEAgLTM0ODQsNyArMzY1OCw3IEBAIGRub2RlX2dldF9mdWxscGF0aCAoY29uc3QgY2hhciAq ZnVsbHBhdGgsIHN0cnVjdCBzdWJ2b2x1bWUgKnN1YnZvbCwKICAgICB7CiAgICAgICBncnViX3Vp bnQ2NF90IHNuYXBvYmo7CiAKLSAgICAgIHNuYXBvYmogPSBncnViX3pmc190b19jcHU2NCAoKChk c2xfZGF0YXNldF9waHlzX3QgKikgRE5fQk9OVVMgKCZzdWJ2b2wtPm1kbi5kbikpLT5kc19zbmFw bmFtZXNfemFwb2JqLCBzdWJ2b2wtPm1kbi5lbmRpYW4pOworICAgICAgc25hcG9iaiA9ICgoZHNs X2RhdGFzZXRfcGh5c190ICopIEROX0JPTlVTICgmc3Vidm9sLT5tZG4pKS0+ZHNfc25hcG5hbWVz X3phcG9iajsKIAogICAgICAgZXJyID0gZG5vZGVfZ2V0ICgmKGRhdGEtPm1vcyksIHNuYXBvYmos CiAJCSAgICAgICBETVVfT1RfRFNMX0RTX1NOQVBfTUFQLCAmc3Vidm9sLT5tZG4sIGRhdGEpOwpA QCAtMzQ5Myw3ICszNjY3LDcgQEAgZG5vZGVfZ2V0X2Z1bGxwYXRoIChjb25zdCBjaGFyICpmdWxs cGF0aCwgc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLAogICAgICAgaWYgKCFlcnIpCiAJZXJyID0g ZG5vZGVfZ2V0ICgmKGRhdGEtPm1vcyksIGhlYWRvYmosIDAsCiAJCQkgJnN1YnZvbC0+bWRuLCBk YXRhKTsKLSAgICAgIGlmICghZXJyICYmIHN1YnZvbC0+bWRuLmRuLmRuX3R5cGUgIT0gRE1VX09U X0RTTF9EQVRBU0VUICYmIHN1YnZvbC0+bWRuLmRuLmRuX2JvbnVzdHlwZSAhPSBETVVfT1RfRFNM X0RBVEFTRVQpIHsKKyAgICAgIGlmICghZXJyICYmIHN1YnZvbC0+bWRuLmRuX3R5cGUgIT0gRE1V X09UX0RTTF9EQVRBU0VUICYmIHN1YnZvbC0+bWRuLmRuX2JvbnVzdHlwZSAhPSBETVVfT1RfRFNM X0RBVEFTRVQpIHsKIAlncnViX2ZyZWUgKGZzbmFtZSk7CiAJZ3J1Yl9mcmVlIChzbmFwbmFtZSk7 CiAJcmV0dXJuIGdydWJfZXJyb3IoR1JVQl9FUlJfQkFEX0ZTLCAiaW5jb3JyZWN0IGRhdGFzZXQg ZG5vZGUgdHlwZSIpOwpAQCAtMzUxMSw4ICszNjg1LDYgQEAgZG5vZGVfZ2V0X2Z1bGxwYXRoIChj b25zdCBjaGFyICpmdWxscGF0aCwgc3RydWN0IHN1YnZvbHVtZSAqc3Vidm9sLAogCiAgIG1ha2Vf bWRuICgmc3Vidm9sLT5tZG4sIGRhdGEpOwogCi0gIGdydWJfZHByaW50ZiAoInpmcyIsICJlbmRp YW4gPSAlZFxuIiwgc3Vidm9sLT5tZG4uZW5kaWFuKTsKLQogICBpZiAoKmlzZnMpCiAgICAgewog ICAgICAgZ3J1Yl9mcmVlIChmc25hbWUpOwpAQCAtMzc3Niw3ICszOTQ4LDYgQEAgemZzX21vdW50 IChncnViX2RldmljZV90IGRldikKICAgZ3J1Yl9lcnJfdCBlcnI7CiAgIG9ianNldF9waHlzX3Qg Km9zcCA9IDA7CiAgIGdydWJfc2l6ZV90IG9zcHNpemU7Ci0gIGdydWJfemZzX2VuZGlhbl90IHVi X2VuZGlhbiA9IEdSVUJfWkZTX1VOS05PV05fRU5ESUFOOwogICB1YmVyYmxvY2tfdCAqdWI7CiAg IGludCBpbnNlcnRlZDsKIApAQCAtMzgxMiwxMSArMzk4Myw4IEBAIHpmc19tb3VudCAoZ3J1Yl9k ZXZpY2VfdCBkZXYpCiAgICAgfQogCiAgIHViID0gJihkYXRhLT5jdXJyZW50X3ViZXJibG9jayk7 Ci0gIHViX2VuZGlhbiA9IChncnViX3pmc190b19jcHU2NCAodWItPnViX21hZ2ljLAotCQkJCSAg R1JVQl9aRlNfTElUVExFX0VORElBTikgPT0gVUJFUkJMT0NLX01BR0lDCi0JICAgICAgID8gR1JV Ql9aRlNfTElUVExFX0VORElBTiA6IEdSVUJfWkZTX0JJR19FTkRJQU4pOwogCi0gIGVyciA9IHpp b19yZWFkICgmdWItPnViX3Jvb3RicCwgdWJfZW5kaWFuLAorICBlcnIgPSB6aW9fcmVhZCAoJnVi LT51Yl9yb290YnAsCiAJCSAgKHZvaWQgKiopICZvc3AsICZvc3BzaXplLCBkYXRhKTsKICAgaWYg KGVycikKICAgICB7CkBAIC0zODMzLDcgKzQwMDEsNyBAQCB6ZnNfbW91bnQgKGdydWJfZGV2aWNl X3QgZGV2KQogICAgIH0KIAogICBpZiAodWItPnViX3ZlcnNpb24gPj0gU1BBX1ZFUlNJT05fRkVB VFVSRVMgJiYKLSAgICAgIGNoZWNrX21vc19mZWF0dXJlcygmb3NwLT5vc19tZXRhX2Rub2RlLCB1 Yl9lbmRpYW4sIGRhdGEpICE9IDApCisgICAgICBjaGVja19tb3NfZmVhdHVyZXMoJm9zcC0+b3Nf bWV0YV9kbm9kZSwgZGF0YSkgIT0gMCkKICAgICB7CiAgICAgICBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfRlMsICJVbnN1cHBvcnRlZCBmZWF0dXJlcyBpbiBwb29sIik7CiAgICAgICBncnViX2Zy ZWUgKG9zcCk7CkBAIC0zODQyLDkgKzQwMTAsNyBAQCB6ZnNfbW91bnQgKGdydWJfZGV2aWNlX3Qg ZGV2KQogICAgIH0KIAogICAvKiBHb3QgdGhlIE1PUy4gU2F2ZSBpdCBhdCB0aGUgbWVtb3J5IGFk ZHIgTU9TLiAqLwotICBncnViX21lbW1vdmUgKCYoZGF0YS0+bW9zLmRuKSwgJm9zcC0+b3NfbWV0 YV9kbm9kZSwgRE5PREVfU0laRSk7Ci0gIGRhdGEtPm1vcy5lbmRpYW4gPSAoZ3J1Yl96ZnNfdG9f Y3B1NjQgKHViLT51Yl9yb290YnAuYmxrX3Byb3AsCi0JCQkJCSB1Yl9lbmRpYW4pID4+IDYzKSAm IDE7CisgIGdydWJfbWVtbW92ZSAoJihkYXRhLT5tb3MpLCAmb3NwLT5vc19tZXRhX2Rub2RlLCBE Tk9ERV9TSVpFKTsKICAgZ3J1Yl9mcmVlIChvc3ApOwogCiAgIHJldHVybiBkYXRhOwpAQCAtMzkx MCw4ICs0MDc2LDYgQEAgc3RhdGljIGdydWJfZXJyX3QKIHpmc19tdGltZSAoZ3J1Yl9kZXZpY2Vf dCBkZXZpY2UsIGdydWJfaW50NjRfdCAqbXQpCiB7CiAgIHN0cnVjdCBncnViX3pmc19kYXRhICpk YXRhOwotICBncnViX3pmc19lbmRpYW5fdCB1Yl9lbmRpYW4gPSBHUlVCX1pGU19VTktOT1dOX0VO RElBTjsKLSAgdWJlcmJsb2NrX3QgKnViOwogCiAgICptdCA9IDA7CiAKQEAgLTM5MTksMTYgKzQw ODMsNDggQEAgemZzX210aW1lIChncnViX2RldmljZV90IGRldmljZSwgZ3J1Yl9pbnQ2NF90ICpt dCkKICAgaWYgKCEgZGF0YSkKICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKIAotICB1YiA9ICYoZGF0 YS0+Y3VycmVudF91YmVyYmxvY2spOwotICB1Yl9lbmRpYW4gPSAoZ3J1Yl96ZnNfdG9fY3B1NjQg KHViLT51Yl9tYWdpYywKLQkJCQkgIEdSVUJfWkZTX0xJVFRMRV9FTkRJQU4pID09IFVCRVJCTE9D S19NQUdJQwotCSAgICAgICA/IEdSVUJfWkZTX0xJVFRMRV9FTkRJQU4gOiBHUlVCX1pGU19CSUdf RU5ESUFOKTsKLQotICAqbXQgPSBncnViX3pmc190b19jcHU2NCAodWItPnViX3RpbWVzdGFtcCwg dWJfZW5kaWFuKTsKKyAgKm10ID0gZGF0YS0+Y3VycmVudF91YmVyYmxvY2sudWJfdGltZXN0YW1w OwogICB6ZnNfdW5tb3VudCAoZGF0YSk7CiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwogfQogCitz dGF0aWMgZ3J1Yl9lcnJfdAorcGFyc2Vfc2EoY29uc3QgZG5vZGVfcGh5c190ICpkbiwgZ3J1Yl9p bnQ2NF90ICptdGltZSwgZ3J1Yl91aW50NjRfdCAqc3osCisJIHN0cnVjdCBncnViX3pmc19kYXRh ICpkYXRhKQoreworICB2b2lkICpzYWhkcnA7CisgIGludCBoZHJzaXplOworICBncnViX3pmc19l bmRpYW5fdCBzYV9lbmRpYW47CisKKyAgaWYgKGRuLT5kbl9ib251c2xlbiAhPSAwKQorICAgIHNh aGRycCA9IChzYV9oZHJfcGh5c190ICopIEROX0JPTlVTIChkbik7CisgIGVsc2UgaWYgKGRuLT5k bl9mbGFncyAmIEROT0RFX0ZMQUdfU1BJTExfQkxLUFRSKQorICAgIHsKKyAgICAgIGNvbnN0IGJs a3B0cl90ICpicCA9ICZkbi0+ZG5fc3BpbGw7CisKKyAgICAgIGdydWJfZXJyX3QgZXJyID0gemlv X3JlYWQgKGJwLCAmc2FoZHJwLCBOVUxMLCBkYXRhKTsKKyAgICAgIGlmIChlcnIpCisJcmV0dXJu IGVycjsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICBpZiAo Z3J1Yl96ZnNfdG9fY3B1MzIoKChzYV9oZHJfcGh5c190ICopIHNhaGRycCktPnNhX21hZ2ljLCBH UlVCX1pGU19MSVRUTEVfRU5ESUFOKSA9PSBTQV9NQUdJQykKKyAgICBzYV9lbmRpYW4gPSBHUlVC X1pGU19MSVRUTEVfRU5ESUFOOworICBlbHNlIGlmIChncnViX3pmc190b19jcHUzMigoKHNhX2hk cl9waHlzX3QgKikgc2FoZHJwKS0+c2FfbWFnaWMsIEdSVUJfWkZTX0JJR19FTkRJQU4pID09IFNB X01BR0lDKQorICAgIHNhX2VuZGlhbiA9IEdSVUJfWkZTX0JJR19FTkRJQU47CisgIGVsc2UKKyAg ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICBoZHJzaXplID0gKGdydWJfemZzX3RvX2NwdTE2 KCgoc2FfaGRyX3BoeXNfdCAqKSBzYWhkcnApLT5zYV9sYXlvdXRfaW5mbywgc2FfZW5kaWFuKSA+ PiAxMCkgPDwgMzsKKyAgaWYgKG10aW1lKQorICAgICptdGltZSA9IGdydWJfemZzX3RvX2NwdTY0 IChncnViX2dldF91bmFsaWduZWQ2NCAoKGNoYXIgKikgc2FoZHJwICsgaGRyc2l6ZSArIFNBX01U SU1FX09GRlNFVCksIHNhX2VuZGlhbik7CisgIGlmIChzeikKKyAgICAqc3ogPSBncnViX3pmc190 b19jcHU2NCAoZ3J1Yl9nZXRfdW5hbGlnbmVkNjQgKChjaGFyICopIHNhaGRycCArIGhkcnNpemUg KyBTQV9TSVpFX09GRlNFVCksIHNhX2VuZGlhbik7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7 Cit9CisKIC8qCiAgKiB6ZnNfb3BlbigpIGxvY2F0ZXMgYSBmaWxlIGluIHRoZSByb290cG9vbCBi eSBmb2xsb3dpbmcgdGhlCiAgKiBNT1MgYW5kIHBsYWNlcyB0aGUgZG5vZGUgb2YgdGhlIGZpbGUg aW4gdGhlIG1lbW9yeSBhZGRyZXNzIEROT0RFLgpAQCAtMzk1OSw3ICs0MTU1LDcgQEAgZ3J1Yl96 ZnNfb3BlbiAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqZnNmaWxlbmFtZSkK ICAgICB9CiAKICAgLyogV2UgZm91bmQgdGhlIGRub2RlIGZvciB0aGlzIGZpbGUuIFZlcmlmeSBp ZiBpdCBpcyBhIHBsYWluIGZpbGUuICovCi0gIGlmIChkYXRhLT5kbm9kZS5kbi5kbl90eXBlICE9 IERNVV9PVF9QTEFJTl9GSUxFX0NPTlRFTlRTKQorICBpZiAoZGF0YS0+ZG5vZGUuZG5fdHlwZSAh PSBETVVfT1RfUExBSU5fRklMRV9DT05URU5UUykKICAgICB7CiAgICAgICB6ZnNfdW5tb3VudCAo ZGF0YSk7CiAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVfVFlQRSwg Tl8oIm5vdCBhIHJlZ3VsYXIgZmlsZSIpKTsKQEAgLTM5NzIsMzggKzQxNjgsMTcgQEAgZ3J1Yl96 ZnNfb3BlbiAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqZnNmaWxlbmFtZSkK ICAgICogYXR0cmlidXRlLCB3aGljaCBjb3VsZCBiZSBlaXRoZXIgaW4gdGhlIGJvbnVzIGJ1ZmZl cgogICAgKiBvciB0aGUgInNwaWxsIiBibG9jay4KICAgICovCi0gIGlmIChkYXRhLT5kbm9kZS5k bi5kbl9ib251c3R5cGUgPT0gRE1VX09UX1NBKQorICBpZiAoZGF0YS0+ZG5vZGUuZG5fYm9udXN0 eXBlID09IERNVV9PVF9TQSkKICAgICB7Ci0gICAgICB2b2lkICpzYWhkcnA7Ci0gICAgICBpbnQg aGRyc2l6ZTsKLSAgICAgIGJvb2wgZnJlZV9zYWhkcnAgPSBmYWxzZTsKLQotICAgICAgaWYgKGRh dGEtPmRub2RlLmRuLmRuX2JvbnVzbGVuICE9IDApCi0JewotCSAgc2FoZHJwID0gKHNhX2hkcl9w aHlzX3QgKikgRE5fQk9OVVMgKCZkYXRhLT5kbm9kZS5kbik7Ci0JfQotICAgICAgZWxzZSBpZiAo ZGF0YS0+ZG5vZGUuZG4uZG5fZmxhZ3MgJiBETk9ERV9GTEFHX1NQSUxMX0JMS1BUUikKLQl7Ci0J ICBibGtwdHJfdCAqYnAgPSAmZGF0YS0+ZG5vZGUuZG4uZG5fc3BpbGw7Ci0KLQkgIGVyciA9IHpp b19yZWFkIChicCwgZGF0YS0+ZG5vZGUuZW5kaWFuLCAmc2FoZHJwLCBOVUxMLCBkYXRhKTsKLQkg IGlmIChlcnIpCi0JICAgIHJldHVybiBlcnI7Ci0JICBmcmVlX3NhaGRycCA9IHRydWU7Ci0JfQot ICAgICAgZWxzZQotCXsKLQkgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRlMsICJm aWxlc3lzdGVtIGlzIGNvcnJ1cHQiKTsKLQl9Ci0KLSAgICAgIGhkcnNpemUgPSBTQV9IRFJfU0la RSAoKChzYV9oZHJfcGh5c190ICopIHNhaGRycCkpOwotICAgICAgZmlsZS0+c2l6ZSA9IGdydWJf emZzX3RvX2NwdTY0IChncnViX2dldF91bmFsaWduZWQ2NCAoKGNoYXIgKikgc2FoZHJwICsgaGRy c2l6ZSArIFNBX1NJWkVfT0ZGU0VUKSwgZGF0YS0+ZG5vZGUuZW5kaWFuKTsKLSAgICAgIGlmIChm cmVlX3NhaGRycCkKLQkgICAgICBncnViX2ZyZWUoc2FoZHJwKTsKKyAgICAgIGdydWJfdWludDY0 X3QgZnNpemU7CisgICAgICBlcnIgPSBwYXJzZV9zYSgmZGF0YS0+ZG5vZGUsIE5VTEwsICZmc2l6 ZSwgZGF0YSk7CisgICAgICBpZiAoZXJyKQorCXJldHVybiBlcnI7CisgICAgICBmaWxlLT5zaXpl ID0gZnNpemU7CiAgICAgfQotICBlbHNlIGlmIChkYXRhLT5kbm9kZS5kbi5kbl9ib251c3R5cGUg PT0gRE1VX09UX1pOT0RFKQorICBlbHNlIGlmIChkYXRhLT5kbm9kZS5kbl9ib251c3R5cGUgPT0g RE1VX09UX1pOT0RFKQogICAgIHsKLSAgICAgIGZpbGUtPnNpemUgPSBncnViX3pmc190b19jcHU2 NCAoKCh6bm9kZV9waHlzX3QgKikgRE5fQk9OVVMgKCZkYXRhLT5kbm9kZS5kbikpLT56cF9zaXpl LCBkYXRhLT5kbm9kZS5lbmRpYW4pOworICAgICAgZmlsZS0+c2l6ZSA9ICgoem5vZGVfcGh5c190 ICopIEROX0JPTlVTICgmZGF0YS0+ZG5vZGUpKS0+enBfc2l6ZTsKICAgICB9CiAgIGVsc2UKICAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAiYmFkIGJvbnVzIHR5cGUiKTsK QEAgLTQwMzgsOCArNDIxMyw3IEBAIGdydWJfemZzX3JlYWQgKGdydWJfZmlsZV90IGZpbGUsIGNo YXIgKmJ1ZiwgZ3J1Yl9zaXplX3QgbGVuKQogICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAKLSAg Ymxrc3ogPSBncnViX3pmc190b19jcHUxNiAoZGF0YS0+ZG5vZGUuZG4uZG5fZGF0YWJsa3N6c2Vj LAotCQkJICAgICBkYXRhLT5kbm9kZS5lbmRpYW4pIDw8IFNQQV9NSU5CTE9DS1NISUZUOworICBi bGtzeiA9IGRhdGEtPmRub2RlLmRuX2RhdGFibGtzenNlYyA8PCBTUEFfTUlOQkxPQ0tTSElGVDsK IAogICBpZiAoYmxrc3ogPT0gMCkKICAgICB7CkBAIC00MDY1LDggKzQyMzksNyBAQCBncnViX3pm c19yZWFkIChncnViX2ZpbGVfdCBmaWxlLCBjaGFyICpidWYsIGdydWJfc2l6ZV90IGxlbikKICAg ICAgIGdydWJfZnJlZSAoZGF0YS0+ZmlsZV9idWYpOwogICAgICAgZGF0YS0+ZmlsZV9idWYgPSAw OwogCi0gICAgICBlcnIgPSBkbXVfcmVhZCAoJihkYXRhLT5kbm9kZSksIGJsa2lkLCAmdCwKLQkJ ICAgICAgMCwgZGF0YSk7CisgICAgICBlcnIgPSBkbXVfcmVhZCAoJihkYXRhLT5kbm9kZSksIGJs a2lkLCAmdCwgZGF0YSk7CiAgICAgICBkYXRhLT5maWxlX2J1ZiA9IHQ7CiAgICAgICBpZiAoZXJy KQogCXsKQEAgLTQxMjUsMTkgKzQyOTgsMTkgQEAgZ3J1Yl96ZnNfZ2V0bWRub2JqIChncnViX2Rl dmljZV90IGRldiwgY29uc3QgY2hhciAqZnNmaWxlbmFtZSwKIAogLyoKICAqIE5vdGU6IGZpbGxf ZnNfaW5mbygpIHVzZXMgZnVuY3Rpb25zIHN1Y2ggYXMgbWFrZV9tZG4oKSB0aGF0IG1vZGlmeQot ICogdGhlIGlucHV0IGRub2RlX2VuZF90IHBhcmFtZXRlci4gSG93ZXZlciwgd2Ugc2hvdWxkIG5v dCBhbGxvdyBpdC4KKyAqIHRoZSBpbnB1dCBkbm9kZV9waHlzX3QgcGFyYW1ldGVyLiBIb3dldmVy LCB3ZSBzaG91bGQgbm90IGFsbG93IGl0LgogICogVGhlcmVmb3JlLCB3ZSBhcmUgbWFraW5nIG1k bl9pbiBjb25zdGFudCAtIGZpbGxfZnNfaW5mbygpIG1ha2VzCiAgKiBhIGxvY2FsIGNvcHkgb2Yg aXQuCiAgKi8KIHN0YXRpYyBncnViX2Vycl90CiBmaWxsX2ZzX2luZm8gKHN0cnVjdCBncnViX2Rp cmhvb2tfaW5mbyAqaW5mbywKLQkgICAgICBjb25zdCBkbm9kZV9lbmRfdCAqbWRuX2luLCBzdHJ1 Y3QgZ3J1Yl96ZnNfZGF0YSAqZGF0YSkKKwkgICAgICBjb25zdCBkbm9kZV9waHlzX3QgKm1kbl9p biwgc3RydWN0IGdydWJfemZzX2RhdGEgKmRhdGEpCiB7CiAgIGdydWJfZXJyX3QgZXJyOwotICBk bm9kZV9lbmRfdCBkbjsKKyAgZG5vZGVfcGh5c190IGRuOwogICBncnViX3VpbnQ2NF90IG9iam51 bTsKICAgZ3J1Yl91aW50NjRfdCBoZWFkb2JqOwotICBkbm9kZV9lbmRfdCBtZG47CisgIGRub2Rl X3BoeXNfdCBtZG47CiAKICAgZ3J1Yl9tZW1jcHkgKCZtZG4sIG1kbl9pbiwgc2l6ZW9mICgqbWRu X2luKSk7CiAKQEAgLTQxNDUsOSArNDMxOCw5IEBAIGZpbGxfZnNfaW5mbyAoc3RydWN0IGdydWJf ZGlyaG9va19pbmZvICppbmZvLAogCiAgIGluZm8tPmRpciA9IDE7CiAKLSAgaWYgKG1kbi5kbi5k bl90eXBlID09IERNVV9PVF9EU0xfRElSIHx8IG1kbi5kbi5kbl9ib251c3R5cGUgPT0gRE1VX09U X0RTTF9ESVIpCisgIGlmIChtZG4uZG5fdHlwZSA9PSBETVVfT1RfRFNMX0RJUiB8fCBtZG4uZG5f Ym9udXN0eXBlID09IERNVV9PVF9EU0xfRElSKQogICAgIHsKLSAgICAgIGhlYWRvYmogPSBncnVi X3pmc190b19jcHU2NCAoKChkc2xfZGlyX3BoeXNfdCAqKSBETl9CT05VUyAoJm1kbi5kbikpLT5k ZF9oZWFkX2RhdGFzZXRfb2JqLCBtZG4uZW5kaWFuKTsKKyAgICAgIGhlYWRvYmogPSAoKGRzbF9k aXJfcGh5c190ICopIEROX0JPTlVTICgmbWRuKSktPmRkX2hlYWRfZGF0YXNldF9vYmo7CiAKICAg ICAgIGVyciA9IGRub2RlX2dldCAoJihkYXRhLT5tb3MpLCBoZWFkb2JqLCAwLCAmbWRuLCBkYXRh KTsKICAgICAgIGlmIChlcnIpCkBAIC00MTgxLDQyICs0MzU0LDE4IEBAIGZpbGxfZnNfaW5mbyAo c3RydWN0IGdydWJfZGlyaG9va19pbmZvICppbmZvLAogICAgICAgcmV0dXJuIGVycjsKICAgICB9 CiAKLSAgaWYgKGRuLmRuLmRuX2JvbnVzdHlwZSA9PSBETVVfT1RfU0EpCisgIGlmIChkbi5kbl9i b251c3R5cGUgPT0gRE1VX09UX1NBKQogICAgIHsKLSAgICAgIHZvaWQgKnNhaGRycDsKLSAgICAg IGludCBoZHJzaXplOwotICAgICAgYm9vbCBmcmVlX3NhaGRycCA9IGZhbHNlOwotCi0gICAgICBp ZiAoZG4uZG4uZG5fYm9udXNsZW4gIT0gMCkKLQl7Ci0JICBzYWhkcnAgPSAoc2FfaGRyX3BoeXNf dCAqKSBETl9CT05VUyAoJmRuLmRuKTsKLQl9Ci0gICAgICBlbHNlIGlmIChkbi5kbi5kbl9mbGFn cyAmIEROT0RFX0ZMQUdfU1BJTExfQkxLUFRSKQotCXsKLQkgIGJsa3B0cl90ICpicCA9ICZkbi5k bi5kbl9zcGlsbDsKLQotCSAgZXJyID0gemlvX3JlYWQgKGJwLCBkbi5lbmRpYW4sICZzYWhkcnAs IE5VTEwsIGRhdGEpOwotCSAgaWYgKGVycikKLQkgICAgcmV0dXJuIGVycjsKLQkgIGZyZWVfc2Fo ZHJwID0gdHJ1ZTsKLQl9Ci0gICAgICBlbHNlCi0JewotCSAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX0ZTLCAiZmlsZXN5c3RlbSBpcyBjb3JydXB0Iik7Ci0JICByZXR1cm4gZ3J1Yl9lcnJubzsK LQl9Ci0KLSAgICAgIGhkcnNpemUgPSBTQV9IRFJfU0laRSAoKChzYV9oZHJfcGh5c190ICopIHNh aGRycCkpOworICAgICAgZXJyID0gcGFyc2Vfc2EoJmRuLCAmaW5mby0+bXRpbWUsIE5VTEwsIGRh dGEpOworICAgICAgaWYgKGVycikKKwlyZXR1cm4gZXJyOwogICAgICAgaW5mby0+bXRpbWVzZXQg PSAxOwotICAgICAgaW5mby0+bXRpbWUgPSBncnViX3pmc190b19jcHU2NCAoZ3J1Yl9nZXRfdW5h bGlnbmVkNjQgKChjaGFyICopIHNhaGRycCArIGhkcnNpemUgKyBTQV9NVElNRV9PRkZTRVQpLCBk bi5lbmRpYW4pOwotICAgICAgaWYgKGZyZWVfc2FoZHJwKQotICAgICAgICBncnViX2ZyZWUgKHNh aGRycCk7CiAgICAgfQogCi0gIGlmIChkbi5kbi5kbl9ib251c3R5cGUgPT0gRE1VX09UX1pOT0RF KQorICBpZiAoZG4uZG5fYm9udXN0eXBlID09IERNVV9PVF9aTk9ERSkKICAgICB7CiAgICAgICBp bmZvLT5tdGltZXNldCA9IDE7Ci0gICAgICBpbmZvLT5tdGltZSA9IGdydWJfemZzX3RvX2NwdTY0 ICgoKHpub2RlX3BoeXNfdCAqKSBETl9CT05VUyAoJmRuLmRuKSktPnpwX210aW1lWzBdLCBkbi5l bmRpYW4pOworICAgICAgaW5mby0+bXRpbWUgPSAoKHpub2RlX3BoeXNfdCAqKSBETl9CT05VUyAo JmRuKSktPnpwX210aW1lWzBdOwogICAgIH0KICAgcmV0dXJuIDA7CiB9CkBAIC00MjI4LDcgKzQz NzcsNyBAQCBpdGVyYXRlX3phcCAoY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCB2YWws IHN0cnVjdCBncnViX3pmc19kaXJfY3R4ICpjdHgpCiAgIGdydWJfZXJyX3QgZXJyOwogICBzdHJ1 Y3QgZ3J1Yl9kaXJob29rX2luZm8gaW5mbzsKIAotICBkbm9kZV9lbmRfdCBkbjsKKyAgZG5vZGVf cGh5c190IGRuOwogICBncnViX21lbXNldCAoJmluZm8sIDAsIHNpemVvZiAoaW5mbykpOwogCiAg IGVyciA9IGRub2RlX2dldCAoJihjdHgtPmRhdGEtPnN1YnZvbC5tZG4pLCB2YWwsIDAsICZkbiwg Y3R4LT5kYXRhKTsKQEAgLTQyMzgsNTIgKzQzODcsMjIgQEAgaXRlcmF0ZV96YXAgKGNvbnN0IGNo YXIgKm5hbWUsIGdydWJfdWludDY0X3QgdmFsLCBzdHJ1Y3QgZ3J1Yl96ZnNfZGlyX2N0eCAqY3R4 KQogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gIGlmIChkbi5kbi5kbl9ib251c3R5cGUgPT0g RE1VX09UX1NBKQorICBpZiAoZG4uZG5fYm9udXN0eXBlID09IERNVV9PVF9TQSkKICAgICB7Ci0g ICAgICB2b2lkICpzYWhkcnA7Ci0gICAgICBpbnQgaGRyc2l6ZTsKLSAgICAgIGJvb2wgZnJlZV9z YWhkcnAgPSBmYWxzZTsKLQotICAgICAgaWYgKGRuLmRuLmRuX2JvbnVzbGVuICE9IDApCi0Jewot CSAgc2FoZHJwID0gKHNhX2hkcl9waHlzX3QgKikgRE5fQk9OVVMgKCZjdHgtPmRhdGEtPmRub2Rl LmRuKTsKLQl9Ci0gICAgICBlbHNlIGlmIChkbi5kbi5kbl9mbGFncyAmIEROT0RFX0ZMQUdfU1BJ TExfQkxLUFRSKQotCXsKLQkgIGJsa3B0cl90ICpicCA9ICZkbi5kbi5kbl9zcGlsbDsKLQotCSAg ZXJyID0gemlvX3JlYWQgKGJwLCBkbi5lbmRpYW4sICZzYWhkcnAsIE5VTEwsIGN0eC0+ZGF0YSk7 Ci0JICBpZiAoZXJyKQotCSAgICB7Ci0JICAgICAgZ3J1Yl9wcmludF9lcnJvciAoKTsKLQkgICAg ICByZXR1cm4gMDsKLQkgICAgfQotCSAgZnJlZV9zYWhkcnAgPSB0cnVlOwotCX0KLSAgICAgIGVs c2UKLQl7Ci0JICBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRlMsICJmaWxlc3lzdGVtIGlzIGNv cnJ1cHQiKTsKLQkgIGdydWJfcHJpbnRfZXJyb3IgKCk7Ci0JICByZXR1cm4gMDsKLQl9Ci0KLSAg ICAgIGhkcnNpemUgPSBTQV9IRFJfU0laRSAoKChzYV9oZHJfcGh5c190ICopIHNhaGRycCkpOwor ICAgICAgZXJyID0gcGFyc2Vfc2EoJmRuLCAmaW5mby5tdGltZSwgTlVMTCwgY3R4LT5kYXRhKTsK KyAgICAgIGlmIChlcnIpCisJcmV0dXJuIGVycjsKICAgICAgIGluZm8ubXRpbWVzZXQgPSAxOwot ICAgICAgaW5mby5tdGltZSA9IGdydWJfemZzX3RvX2NwdTY0IChncnViX2dldF91bmFsaWduZWQ2 NCAoKGNoYXIgKikgc2FoZHJwICsgaGRyc2l6ZSArIFNBX01USU1FX09GRlNFVCksIGRuLmVuZGlh bik7Ci0gICAgICBpbmZvLmNhc2VfaW5zZW5zaXRpdmUgPSBjdHgtPmRhdGEtPnN1YnZvbC5jYXNl X2luc2Vuc2l0aXZlOwotICAgICAgaWYgKGZyZWVfc2FoZHJwKQotCWdydWJfZnJlZSAoc2FoZHJw KTsKICAgICB9CiAKLSAgaWYgKGRuLmRuLmRuX2JvbnVzdHlwZSA9PSBETVVfT1RfWk5PREUpCisg IGlmIChkbi5kbl9ib251c3R5cGUgPT0gRE1VX09UX1pOT0RFKQogICAgIHsKICAgICAgIGluZm8u bXRpbWVzZXQgPSAxOwotICAgICAgaW5mby5tdGltZSA9IGdydWJfemZzX3RvX2NwdTY0ICgoKHpu b2RlX3BoeXNfdCAqKSBETl9CT05VUyAoJmRuLmRuKSktPnpwX210aW1lWzBdLAotCQkJCSAgICAg IGRuLmVuZGlhbik7CisgICAgICBpbmZvLm10aW1lID0gKCh6bm9kZV9waHlzX3QgKikgRE5fQk9O VVMgKCZkbikpLT56cF9tdGltZVswXTsKICAgICB9Ci0gIGluZm8uZGlyID0gKGRuLmRuLmRuX3R5 cGUgPT0gRE1VX09UX0RJUkVDVE9SWV9DT05URU5UUyk7CisgIGluZm8uZGlyID0gKGRuLmRuX3R5 cGUgPT0gRE1VX09UX0RJUkVDVE9SWV9DT05URU5UUyk7CiAgIGdydWJfZHByaW50ZiAoInpmcyIs ICJ0eXBlPSVkLCBuYW1lPSVzXG4iLAotCQkoaW50KWRuLmRuLmRuX3R5cGUsIChjaGFyICopbmFt ZSk7CisJCShpbnQpZG4uZG5fdHlwZSwgKGNoYXIgKiluYW1lKTsKICAgcmV0dXJuIGN0eC0+aG9v ayAobmFtZSwgJmluZm8sIGN0eC0+aG9va19kYXRhKTsKIH0KIApAQCAtNDI5OCwxNSArNDQxNywx NSBAQCBpdGVyYXRlX3phcF9mcyAoY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCB2YWws CiAgIGlmIChuYW1lWzBdID09IDAgJiYgdmFsID09IDApCiAgICAgcmV0dXJuIDA7CiAKLSAgZG5v ZGVfZW5kX3QgbWRuOworICBkbm9kZV9waHlzX3QgbWRuOwogICBlcnIgPSBkbm9kZV9nZXQgKCYo Y3R4LT5kYXRhLT5tb3MpLCB2YWwsIDAsICZtZG4sIGN0eC0+ZGF0YSk7CiAgIGlmIChlcnIpCiAg ICAgewogICAgICAgZ3J1Yl9lcnJubyA9IDA7CiAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gIGlm IChtZG4uZG4uZG5fdHlwZSAhPSBETVVfT1RfRFNMX0RJUiAmJiBtZG4uZG4uZG5fYm9udXN0eXBl ICE9IERNVV9PVF9EU0xfRElSKSB7Ci0gICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInR5cGUgPSAw eCV4LCB2YWwgPSAweCVsbHhcbiIsIG1kbi5kbi5kbl90eXBlLCAobG9uZyBsb25nKXZhbCk7Cisg IGlmIChtZG4uZG5fdHlwZSAhPSBETVVfT1RfRFNMX0RJUiAmJiBtZG4uZG5fYm9udXN0eXBlICE9 IERNVV9PVF9EU0xfRElSKSB7CisgICAgZ3J1Yl9kcHJpbnRmICgiemZzIiwgInR5cGUgPSAweCV4 LCB2YWwgPSAweCVsbHhcbiIsIG1kbi5kbl90eXBlLCAobG9uZyBsb25nKXZhbCk7CiAgICAgcmV0 dXJuIDA7CiAgIH0KIApAQCAtNDMzMCw3ICs0NDQ5LDcgQEAgaXRlcmF0ZV96YXBfc25hcCAoY29u c3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCB2YWwsCiAgIGludCByZXQ7CiAgIGdydWJfc2l6 ZV90IHN6OwogCi0gIGRub2RlX2VuZF90IG1kbjsKKyAgZG5vZGVfcGh5c190IG1kbjsKIAogICBl cnIgPSBkbm9kZV9nZXQgKCYoY3R4LT5kYXRhLT5tb3MpLCB2YWwsIDAsICZtZG4sIGN0eC0+ZGF0 YSk7CiAgIGlmIChlcnIpCkBAIC00MzM5LDcgKzQ0NTgsNyBAQCBpdGVyYXRlX3phcF9zbmFwIChj b25zdCBjaGFyICpuYW1lLCBncnViX3VpbnQ2NF90IHZhbCwKICAgICAgIHJldHVybiAwOwogICAg IH0KIAotICBpZiAobWRuLmRuLmRuX3R5cGUgIT0gRE1VX09UX0RTTF9EQVRBU0VUICYmIG1kbi5k bi5kbl9ib251c3R5cGUgIT0gRE1VX09UX0RTTF9EQVRBU0VUKQorICBpZiAobWRuLmRuX3R5cGUg IT0gRE1VX09UX0RTTF9EQVRBU0VUICYmIG1kbi5kbl9ib251c3R5cGUgIT0gRE1VX09UX0RTTF9E QVRBU0VUKQogICAgIHJldHVybiAwOwogCiAgIGVyciA9IGZpbGxfZnNfaW5mbyAoJmluZm8sICZt ZG4sIGN0eC0+ZGF0YSk7CkBAIC00MzkwLDcgKzQ1MDksNyBAQCBncnViX3pmc19kaXIgKGdydWJf ZGV2aWNlX3QgZGV2aWNlLCBjb25zdCBjaGFyICpwYXRoLAogICAgIHsKICAgICAgIGdydWJfdWlu dDY0X3QgY2hpbGRvYmosIGhlYWRvYmo7CiAgICAgICBncnViX3VpbnQ2NF90IHNuYXBvYmo7Ci0g ICAgICBkbm9kZV9lbmRfdCBkbjsKKyAgICAgIGRub2RlX3BoeXNfdCBkbjsKICAgICAgIHN0cnVj dCBncnViX2Rpcmhvb2tfaW5mbyBpbmZvOwogCiAgICAgICBlcnIgPSBmaWxsX2ZzX2luZm8gKCZp bmZvLCAmZGF0YS0+ZG5vZGUsIGRhdGEpOwpAQCAtNDQwNSw4ICs0NTI0LDggQEAgZ3J1Yl96ZnNf ZGlyIChncnViX2RldmljZV90IGRldmljZSwgY29uc3QgY2hhciAqcGF0aCwKIAkgIHJldHVybiBH UlVCX0VSUl9OT05FOwogCX0KIAotICAgICAgY2hpbGRvYmogPSBncnViX3pmc190b19jcHU2NCAo KChkc2xfZGlyX3BoeXNfdCAqKSBETl9CT05VUyAoJmRhdGEtPmRub2RlLmRuKSktPmRkX2NoaWxk X2Rpcl96YXBvYmosIGRhdGEtPmRub2RlLmVuZGlhbik7Ci0gICAgICBoZWFkb2JqID0gZ3J1Yl96 ZnNfdG9fY3B1NjQgKCgoZHNsX2Rpcl9waHlzX3QgKikgRE5fQk9OVVMgKCZkYXRhLT5kbm9kZS5k bikpLT5kZF9oZWFkX2RhdGFzZXRfb2JqLCBkYXRhLT5kbm9kZS5lbmRpYW4pOworICAgICAgY2hp bGRvYmogPSAoKGRzbF9kaXJfcGh5c190ICopIEROX0JPTlVTICgmZGF0YS0+ZG5vZGUpKS0+ZGRf Y2hpbGRfZGlyX3phcG9iajsKKyAgICAgIGhlYWRvYmogPSAoKGRzbF9kaXJfcGh5c190ICopIERO X0JPTlVTICgmZGF0YS0+ZG5vZGUpKS0+ZGRfaGVhZF9kYXRhc2V0X29iajsKICAgICAgIGVyciA9 IGRub2RlX2dldCAoJihkYXRhLT5tb3MpLCBjaGlsZG9iaiwKIAkJICAgICAgIERNVV9PVF9EU0xf RElSX0NISUxEX01BUCwgJmRuLCBkYXRhKTsKICAgICAgIGlmIChlcnIpCkBAIC00NDE4LDcgKzQ1 MzcsNyBAQCBncnViX3pmc19kaXIgKGdydWJfZGV2aWNlX3QgZGV2aWNlLCBjb25zdCBjaGFyICpw YXRoLAogICAgICAgemFwX2l0ZXJhdGVfdTY0ICgmZG4sIGl0ZXJhdGVfemFwX2ZzLCBkYXRhLCAm Y3R4KTsKIAogICAgICAgZXJyID0gZG5vZGVfZ2V0ICgmKGRhdGEtPm1vcyksIGhlYWRvYmosIDAs ICZkbiwgZGF0YSk7Ci0gICAgICBpZiAoIWVyciAmJiBkbi5kbi5kbl90eXBlICE9IERNVV9PVF9E U0xfREFUQVNFVCAmJiBkbi5kbi5kbl9ib251c3R5cGUgIT0gRE1VX09UX0RTTF9EQVRBU0VUKQor ICAgICAgaWYgKCFlcnIgJiYgZG4uZG5fdHlwZSAhPSBETVVfT1RfRFNMX0RBVEFTRVQgJiYgZG4u ZG5fYm9udXN0eXBlICE9IERNVV9PVF9EU0xfREFUQVNFVCkKIAlyZXR1cm4gZ3J1Yl9lcnJvcihH UlVCX0VSUl9CQURfRlMsICJpbmNvcnJlY3QgZGF0YXNldCBkbm9kZSB0eXBlIik7CiAKICAgICAg IGlmIChlcnIpCkBAIC00NDI3LDcgKzQ1NDYsNyBAQCBncnViX3pmc19kaXIgKGdydWJfZGV2aWNl X3QgZGV2aWNlLCBjb25zdCBjaGFyICpwYXRoLAogCSAgcmV0dXJuIGVycjsKIAl9CiAKLSAgICAg IHNuYXBvYmogPSBncnViX3pmc190b19jcHU2NCAoKChkc2xfZGF0YXNldF9waHlzX3QgKikgRE5f Qk9OVVMgKCZkbi5kbikpLT5kc19zbmFwbmFtZXNfemFwb2JqLCBkbi5lbmRpYW4pOworICAgICAg c25hcG9iaiA9ICgoZHNsX2RhdGFzZXRfcGh5c190ICopIEROX0JPTlVTICgmZG4pKS0+ZHNfc25h cG5hbWVzX3phcG9iajsKIAogICAgICAgZXJyID0gZG5vZGVfZ2V0ICgmKGRhdGEtPm1vcyksIHNu YXBvYmosCiAJCSAgICAgICBETVVfT1RfRFNMX0RTX1NOQVBfTUFQLCAmZG4sIGRhdGEpOwpAQCAt NDQ0MSw3ICs0NTYwLDcgQEAgZ3J1Yl96ZnNfZGlyIChncnViX2RldmljZV90IGRldmljZSwgY29u c3QgY2hhciAqcGF0aCwKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBpZiAoZGF0YS0+ZG5v ZGUuZG4uZG5fdHlwZSAhPSBETVVfT1RfRElSRUNUT1JZX0NPTlRFTlRTKQorICAgICAgaWYgKGRh dGEtPmRub2RlLmRuX3R5cGUgIT0gRE1VX09UX0RJUkVDVE9SWV9DT05URU5UUykKIAl7CiAJICB6 ZnNfdW5tb3VudCAoZGF0YSk7CiAJICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJ TEVfVFlQRSwgTl8oIm5vdCBhIGRpcmVjdG9yeSIpKTsKQEAgLTQ0NzcsMTYgKzQ1OTYsMTQgQEAg Y2hlY2tfZmVhdHVyZSAoY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCB2YWwsCiAgKi8K IAogc3RhdGljIGdydWJfZXJyX3QKLWNoZWNrX21vc19mZWF0dXJlcyhkbm9kZV9waHlzX3QgKm1v c21kbl9waHlzLGdydWJfemZzX2VuZGlhbl90IGVuZGlhbixzdHJ1Y3QgZ3J1Yl96ZnNfZGF0YSog ZGF0YSApCitjaGVja19tb3NfZmVhdHVyZXMoZG5vZGVfcGh5c190ICptb3NtZG5fcGh5cywgc3Ry dWN0IGdydWJfemZzX2RhdGEqIGRhdGEgKQogewogICBncnViX3VpbnQ2NF90IG9iam51bTsKLSAg Z3J1Yl9lcnJfdCBlcnJudW0gPSAwOwotICBkbm9kZV9lbmRfdCBkbixtb3NtZG47CisgIGdydWJf ZXJyX3QgZXJybnVtID0gMCwgcmV0ID0gMDsKKyAgZG5vZGVfcGh5c190IGRuLG1vc21kbjsKICAg bXphcF9waHlzX3QqIG16cDsKLSAgZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuemFwOwotICBpbnQg c2l6ZSwgcmV0OwotICBncnViX21lbW1vdmUoJihtb3NtZG4uZG4pLG1vc21kbl9waHlzLHNpemVv Zihkbm9kZV9waHlzX3QpKTsKLSAgbW9zbWRuLmVuZGlhbj1lbmRpYW47CisgIGludCBzaXplOwor ICBncnViX21lbW1vdmUoJm1vc21kbixtb3NtZG5fcGh5cyxzaXplb2YoZG5vZGVfcGh5c190KSk7 CiAgIGVycm51bSA9IGRub2RlX2dldCgmbW9zbWRuLCBETVVfUE9PTF9ESVJFQ1RPUllfT0JKRUNU LAogCQkgICAgIERNVV9PVF9PQkpFQ1RfRElSRUNUT1JZLCAmZG4sZGF0YSk7CiAgIGlmIChlcnJu dW0gIT0gMCkKQEAgLTQ1MDUsMTIgKzQ2MjIsMTIgQEAgY2hlY2tfbW9zX2ZlYXR1cmVzKGRub2Rl X3BoeXNfdCAqbW9zbWRuX3BoeXMsZ3J1Yl96ZnNfZW5kaWFuX3QgZW5kaWFuLHN0cnVjdCBncnUK ICAgaWYgKGVycm51bSAhPSAwKQogICAgIHJldHVybiBlcnJudW07CiAKLSAgZXJybnVtID0gZG11 X3JlYWQoJmRuLCAwLCAodm9pZCoqKSZtenAsICZlbmRpYW56YXAsZGF0YSk7CisgIGVycm51bSA9 IGRtdV9yZWFkKCZkbiwgMCwgKHZvaWQqKikmbXpwLCBkYXRhKTsKICAgaWYgKGVycm51bSAhPSAw KQogICAgIHJldHVybiBlcnJudW07CiAKLSAgc2l6ZSA9IGdydWJfemZzX3RvX2NwdTE2IChkbi5k bi5kbl9kYXRhYmxrc3pzZWMsIGRuLmVuZGlhbikgPDwgU1BBX01JTkJMT0NLU0hJRlQ7Ci0gIHJl dCA9IG16YXBfaXRlcmF0ZSAobXpwLGVuZGlhbnphcCwgc2l6ZSwgY2hlY2tfZmVhdHVyZSxOVUxM KTsKKyAgc2l6ZSA9IGRuLmRuX2RhdGFibGtzenNlYyA8PCBTUEFfTUlOQkxPQ0tTSElGVDsKKyAg cmV0ID0gbXphcF9pdGVyYXRlIChtenAsIHNpemUsIGNoZWNrX2ZlYXR1cmUsTlVMTCk7CiAgIGdy dWJfZnJlZShtenApOwogICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Zz L3pmcy96ZnNfZmxldGNoZXIuYyBiL2dydWItY29yZS9mcy96ZnMvemZzX2ZsZXRjaGVyLmMKaW5k ZXggYWQzYmU2NzA1Li5kZWFjMGI0NWIgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9mcy96ZnMvemZz X2ZsZXRjaGVyLmMKKysrIGIvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNfZmxldGNoZXIuYwpAQCAtNTQs MTAgKzU0LDEwIEBAIGZsZXRjaGVyXzIoY29uc3Qgdm9pZCAqYnVmLCBncnViX3VpbnQ2NF90IHNp emUsIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwKICAgICAgIGIxICs9IGExOwogICAgIH0KIAot ICB6Y3AtPnpjX3dvcmRbMF0gPSBncnViX2NwdV90b196ZnM2NCAoYTAsIGVuZGlhbik7Ci0gIHpj cC0+emNfd29yZFsxXSA9IGdydWJfY3B1X3RvX3pmczY0IChhMSwgZW5kaWFuKTsKLSAgemNwLT56 Y193b3JkWzJdID0gZ3J1Yl9jcHVfdG9femZzNjQgKGIwLCBlbmRpYW4pOwotICB6Y3AtPnpjX3dv cmRbM10gPSBncnViX2NwdV90b196ZnM2NCAoYjEsIGVuZGlhbik7CisgIHpjcC0+emNfd29yZFsw XSA9IGEwOworICB6Y3AtPnpjX3dvcmRbMV0gPSBhMTsKKyAgemNwLT56Y193b3JkWzJdID0gYjA7 CisgIHpjcC0+emNfd29yZFszXSA9IGIxOwogfQogCiB2b2lkCkBAIC03MCwxNSArNzAsMTUgQEAg ZmxldGNoZXJfNCAoY29uc3Qgdm9pZCAqYnVmLCBncnViX3VpbnQ2NF90IHNpemUsIGdydWJfemZz X2VuZGlhbl90IGVuZGlhbiwKIAogICBmb3IgKGEgPSBiID0gYyA9IGQgPSAwOyBpcCA8IGlwZW5k OyBpcCsrKQogICAgIHsKLSAgICAgIGEgKz0gZ3J1Yl96ZnNfdG9fY3B1MzIgKGlwWzBdLCBlbmRp YW4pOzsKKyAgICAgIGEgKz0gZ3J1Yl96ZnNfdG9fY3B1MzIgKGlwWzBdLCBlbmRpYW4pOwogICAg ICAgYiArPSBhOwogICAgICAgYyArPSBiOwogICAgICAgZCArPSBjOwogICAgIH0KIAotICB6Y3At PnpjX3dvcmRbMF0gPSBncnViX2NwdV90b196ZnM2NCAoYSwgZW5kaWFuKTsKLSAgemNwLT56Y193 b3JkWzFdID0gZ3J1Yl9jcHVfdG9femZzNjQgKGIsIGVuZGlhbik7Ci0gIHpjcC0+emNfd29yZFsy XSA9IGdydWJfY3B1X3RvX3pmczY0IChjLCBlbmRpYW4pOwotICB6Y3AtPnpjX3dvcmRbM10gPSBn cnViX2NwdV90b196ZnM2NCAoZCwgZW5kaWFuKTsKKyAgemNwLT56Y193b3JkWzBdID0gYTsKKyAg emNwLT56Y193b3JkWzFdID0gYjsKKyAgemNwLT56Y193b3JkWzJdID0gYzsKKyAgemNwLT56Y193 b3JkWzNdID0gZDsKIH0KIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNfc2hhMjU2 LmMgYi9ncnViLWNvcmUvZnMvemZzL3pmc19zaGEyNTYuYwppbmRleCBmMDQyZmE2MWEuLjY5ZjFi ZDlkOSAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2ZzL3pmcy96ZnNfc2hhMjU2LmMKKysrIGIvZ3J1 Yi1jb3JlL2ZzL3pmcy96ZnNfc2hhMjU2LmMKQEAgLTEwOSw3ICsxMDksNyBAQCBTSEEyNTZUcmFu c2Zvcm0oZ3J1Yl91aW50MzJfdCAqSCwgY29uc3QgZ3J1Yl91aW50OF90ICpjcCkKIAogdm9pZAog emlvX2NoZWNrc3VtX1NIQTI1Nihjb25zdCB2b2lkICpidWYsIGdydWJfdWludDY0X3Qgc2l6ZSwK LQkJICAgIGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiwgemlvX2Nrc3VtX3QgKnpjcCkKKwkJICAg IGdydWJfemZzX2VuZGlhbl90IGVuZGlhbiBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwgemlvX2Nr c3VtX3QgKnpjcCkKIHsKICAgZ3J1Yl91aW50MzJfdCBIWzhdID0geyAweDZhMDllNjY3LCAweGJi NjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLAogCQkJIDB4NTEwZTUyN2YsIDB4OWIwNTY4 OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTkgfTsKQEAgLTEzMiwxMiArMTMyLDggQEAgemlvX2No ZWNrc3VtX1NIQTI1Nihjb25zdCB2b2lkICpidWYsIGdydWJfdWludDY0X3Qgc2l6ZSwKICAgZm9y IChpID0gMDsgaSA8IHBhZHNpemUgJiYgaSA8PSA2NDsgaSArPSA2NCkKICAgICBTSEEyNTZUcmFu c2Zvcm0oSCwgcGFkICsgaSk7CiAKLSAgemNwLT56Y193b3JkWzBdID0gZ3J1Yl9jcHVfdG9femZz NjQgKChncnViX3VpbnQ2NF90KUhbMF0gPDwgMzIgfCBIWzFdLAotCQkJCSAgICAgICBlbmRpYW4p OwotICB6Y3AtPnpjX3dvcmRbMV0gPSBncnViX2NwdV90b196ZnM2NCAoKGdydWJfdWludDY0X3Qp SFsyXSA8PCAzMiB8IEhbM10sCi0JCQkJICAgICAgIGVuZGlhbik7Ci0gIHpjcC0+emNfd29yZFsy XSA9IGdydWJfY3B1X3RvX3pmczY0ICgoZ3J1Yl91aW50NjRfdClIWzRdIDw8IDMyIHwgSFs1XSwK LQkJCQkgICAgICAgZW5kaWFuKTsKLSAgemNwLT56Y193b3JkWzNdID0gZ3J1Yl9jcHVfdG9femZz NjQgKChncnViX3VpbnQ2NF90KUhbNl0gPDwgMzIgfCBIWzddLAotCQkJCSAgICAgICBlbmRpYW4p OworICB6Y3AtPnpjX3dvcmRbMF0gPSAoZ3J1Yl91aW50NjRfdClIWzBdIDw8IDMyIHwgSFsxXTsK KyAgemNwLT56Y193b3JkWzFdID0gKGdydWJfdWludDY0X3QpSFsyXSA8PCAzMiB8IEhbM107Cisg IHpjcC0+emNfd29yZFsyXSA9IChncnViX3VpbnQ2NF90KUhbNF0gPDwgMzIgfCBIWzVdOworICB6 Y3AtPnpjX3dvcmRbM10gPSAoZ3J1Yl91aW50NjRfdClIWzZdIDw8IDMyIHwgSFs3XTsKIH0KZGlm ZiAtLWdpdCBhL2dydWItY29yZS9mcy96ZnMvemZzY3J5cHQuYyBiL2dydWItY29yZS9mcy96ZnMv emZzY3J5cHQuYwppbmRleCBkYTMwZTlhYjMuLjUzNWZkNDA2NSAxMDA2NDQKLS0tIGEvZ3J1Yi1j b3JlL2ZzL3pmcy96ZnNjcnlwdC5jCisrKyBiL2dydWItY29yZS9mcy96ZnMvemZzY3J5cHQuYwpA QCAtMjc3LDcgKzI3Nyw3IEBAIGFsZ29fZGVjcnlwdCAoZ3J1Yl9jcnlwdG9fY2lwaGVyX2hhbmRs ZV90IGNpcGhlciwgZ3J1Yl91aW50NjRfdCBhbGdvLAogc3RhdGljIGdydWJfZXJyX3QKIGdydWJf emZzX2RlY3J5cHRfcmVhbCAoZ3J1Yl9jcnlwdG9fY2lwaGVyX2hhbmRsZV90IGNpcGhlciwKIAkJ ICAgICAgIGdydWJfdWludDY0X3QgYWxnbywKLQkJICAgICAgIHZvaWQgKm5vbmNlLAorCQkgICAg ICAgY29uc3Qgdm9pZCAqbm9uY2UsCiAJCSAgICAgICBjaGFyICpidWYsIGdydWJfc2l6ZV90IHNp emUsCiAJCSAgICAgICBjb25zdCBncnViX3VpbnQzMl90ICpleHBlY3RlZF9tYWMsCiAJCSAgICAg ICBncnViX3pmc19lbmRpYW5fdCBlbmRpYW4pCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvemZz L3NhX2ltcGwuaCBiL2luY2x1ZGUvZ3J1Yi96ZnMvc2FfaW1wbC5oCmluZGV4IDA4NDVkMTI5MC4u YjkyYzQ1OGE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvemZzL3NhX2ltcGwuaAorKysgYi9p bmNsdWRlL2dydWIvemZzL3NhX2ltcGwuaApAQCAtMjksNiArMjksNyBAQCB0eXBlZGVmIHN0cnVj dCBzYV9oZHJfcGh5cyB7CiB9IHNhX2hkcl9waHlzX3Q7CiAKICNkZWZpbmUJU0FfSERSX1NJWkUo aGRyKQlCRjMyX0dFVF9TQihoZHItPnNhX2xheW91dF9pbmZvLCAxMCwgMTYsIDMsIDApCisjZGVm aW5lCVNBX01BR0lDCTB4MkY1MDVBCiAjZGVmaW5lCVNBX1RZUEVfT0ZGU0VUCTB4MAogI2RlZmlu ZQlTQV9TSVpFX09GRlNFVAkweDgKICNkZWZpbmUJU0FfTVRJTUVfT0ZGU0VUCTB4MzgKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZ3J1Yi96ZnMvc3BhLmggYi9pbmNsdWRlL2dydWIvemZzL3NwYS5oCmlu ZGV4IDVhZmJlNGVjZC4uZGE0NGQxODY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvemZzL3Nw YS5oCisrKyBiL2luY2x1ZGUvZ3J1Yi96ZnMvc3BhLmgKQEAgLTE5Niw5ICsxOTYsMTggQEAgdHlw ZWRlZiBzdHJ1Y3QgYmxrcHRyIHsKICNkZWZpbmUJRFZBX0dFVF9WREVWKGR2YSkJQkY2NF9HRVQo KGR2YSktPmR2YV93b3JkWzBdLCAzMiwgMzIpCiAjZGVmaW5lCURWQV9TRVRfVkRFVihkdmEsIHgp CUJGNjRfU0VUKChkdmEpLT5kdmFfd29yZFswXSwgMzIsIDMyLCB4KQogCisjZGVmaW5lCURWQV9H RVRfT0ZGU0VUKGR2YSkJXAorCUJGNjRfR0VUX1NCKChkdmEpLT5kdmFfd29yZFsxXSwgMCwgNjMs IFNQQV9NSU5CTE9DS1NISUZULCAwKQorI2RlZmluZQlEVkFfU0VUX09GRlNFVChkdmEsIHgpCVwK KwlCRjY0X1NFVF9TQigoZHZhKS0+ZHZhX3dvcmRbMV0sIDAsIDYzLCBTUEFfTUlOQkxPQ0tTSElG VCwgMCwgeCkKKwogI2RlZmluZQlEVkFfR0VUX0dBTkcoZHZhKQlCRjY0X0dFVCgoZHZhKS0+ZHZh X3dvcmRbMV0sIDYzLCAxKQogI2RlZmluZQlEVkFfU0VUX0dBTkcoZHZhLCB4KQlCRjY0X1NFVCgo ZHZhKS0+ZHZhX3dvcmRbMV0sIDYzLCAxLCB4KQogCisjZGVmaW5lCUJQX0dFVF9QU0laRShicCkJ XAorCUJGNjRfR0VUX1NCKChicCktPmJsa19wcm9wLCAxNiwgMTYsIFNQQV9NSU5CTE9DS1NISUZU LCAxKQorI2RlZmluZQlCUF9TRVRfUFNJWkUoYnAsIHgpCVwKKwlCRjY0X1NFVF9TQigoYnApLT5i bGtfcHJvcCwgMTYsIDE2LCBTUEFfTUlOQkxPQ0tTSElGVCwgMSwgeCkKICNkZWZpbmUJQlBfR0VU X0xTSVpFKGJwKQlcCiAJQkY2NF9HRVRfU0IoKGJwKS0+YmxrX3Byb3AsIDAsIDE2LCBTUEFfTUlO QkxPQ0tTSElGVCwgMSkKICNkZWZpbmUJQlBfU0VUX0xTSVpFKGJwLCB4KQlcCmRpZmYgLS1naXQg YS9pbmNsdWRlL2dydWIvemZzL3pmcy5oIGIvaW5jbHVkZS9ncnViL3pmcy96ZnMuaAppbmRleCA0 ZWU1MTM4ODcuLjBjNWM0MGE3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL3pmcy96ZnMuaAor KysgYi9pbmNsdWRlL2dydWIvemZzL3pmcy5oCkBAIC0zMyw2ICszMywxNCBAQCB0eXBlZGVmIGVu dW0gZ3J1Yl96ZnNfZW5kaWFuCiAgICAgR1JVQl9aRlNfQklHX0VORElBTiA9IDAKICAgfSBncnVi X3pmc19lbmRpYW5fdDsKIAorI2lmZGVmIEdSVUJfQ1BVX1dPUkRTX0JJR0VORElBTgorI2RlZmlu ZSBHUlVCX1pGU19JU19OQVRJVkVfQllURU9SREVSKHgpICgoeCkgPT0gR1JVQl9aRlNfQklHX0VO RElBTikKKyNkZWZpbmUgR1JVQl9aRlNfTkFUSVZFX0VORElBTiBHUlVCX1pGU19CSUdfRU5ESUFO CisjZWxzZQorI2RlZmluZSBHUlVCX1pGU19JU19OQVRJVkVfQllURU9SREVSKHgpICgoeCkgIT0g R1JVQl9aRlNfQklHX0VORElBTikKKyNkZWZpbmUgR1JVQl9aRlNfTkFUSVZFX0VORElBTiBHUlVC X1pGU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKwogLyoKICAqIE9uLWRpc2sgdmVyc2lvbiBudW1i ZXIuCiAgKi8KQEAgLTE0MSw3ICsxNDksNyBAQCBncnViX3pmc19hZGRfa2V5IChncnViX3VpbnQ4 X3QgKmtleV9pbiwKIAogZXh0ZXJuIGdydWJfZXJyX3QgKCpncnViX3pmc19kZWNyeXB0KSAoZ3J1 Yl9jcnlwdG9fY2lwaGVyX2hhbmRsZV90IGNpcGhlciwKIAkJCQkgICAgICAgZ3J1Yl91aW50NjRf dCBhbGdvLAotCQkJCSAgICAgICB2b2lkICpub25jZSwKKwkJCQkgICAgICAgY29uc3Qgdm9pZCAq bm9uY2UsCiAJCQkJICAgICAgIGNoYXIgKmJ1ZiwgZ3J1Yl9zaXplX3Qgc2l6ZSwKIAkJCQkgICAg ICAgY29uc3QgZ3J1Yl91aW50MzJfdCAqZXhwZWN0ZWRfbWFjLAogCQkJCSAgICAgICBncnViX3pm c19lbmRpYW5fdCBlbmRpYW4pOwotLSAKMi40OS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZl bEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2 ZWwK