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 X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 082E4C43460 for ; Tue, 11 May 2021 13:26:18 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 970806191C for ; Tue, 11 May 2021 13:26:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 970806191C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5DFA96EA36; Tue, 11 May 2021 13:26:15 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D0756EA35; Tue, 11 May 2021 13:26:13 +0000 (UTC) IronPort-SDR: KvwT1jZjKBzcU0onH68Q4vtOVMW1pmzWFoTmR3jyUon69ZCkn8B2bPRFOLDKpmGqVK3fmnEyXS rb6Zrjs4ue1g== X-IronPort-AV: E=McAfee;i="6200,9189,9980"; a="196345394" X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="196345394" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2021 06:26:13 -0700 IronPort-SDR: chUH+nLK0WFGFu3ALXMQuw1nMpZDqDmBtqMj1BPPDjOu7CIyifRwkSEqJhj+BZ8te6Y/H2hTCz 8y3KpvbPr/5w== X-IronPort-AV: E=Sophos;i="5.82,290,1613462400"; d="scan'208";a="468905407" Received: from kjeldbeg-mobl2.ger.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.168]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2021 06:26:10 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Tue, 11 May 2021 15:25:21 +0200 Message-Id: <20210511132525.377190-4-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210511132525.377190-1-thomas.hellstrom@linux.intel.com> References: <20210511132525.377190-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 3/7] drm/i915/ttm, drm/ttm: Initialize the ttm device and memory managers. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , =?UTF-8?q?Christian=20K=C3=B6nig?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" VGVtcG9yYXJpbHkgcmVtb3ZlIHRoZSBidWRkeSBhbGxvY2F0b3IgYW5kIHJlbGF0ZWQgc2VsZnRl c3RzCmFuZCBob29rIHVwIHRoZSBUVE0gcmFuZ2UgbWFuYWdlciBmb3IgaTkxNSByZWdpb25zLgoK SW4gb3JkZXIgdG8gc3VwcG9ydCBzb21lIG9mIHRoZSBtb2NrIHJlZ2lvbi1yZWxhdGVkIHNlbGZ0 ZXN0cywgd2UgbmVlZCB0bwpiZSBhYmxlIHRvIGluaXRpYWxpemUgdGhlIFRUTSByYW5nZS1tYW5h Z2VyIHN0YW5kYWxvbmUgd2l0aG91dCBhIHN0cnVjdAp0dG1fZGV2aWNlLiBBZGQgdHdvIGZ1bmN0 aW9ucyB0byBhbGxvdyB0aGF0IHRvIHRoZSBUVE0gYXBpLgoKRmluYWxseSBtb2RpZnkgdGhlIG1v Y2sgcmVnaW9uIHNlbGZ0ZXN0cyBzb21ld2hhdCB0byBhY2NvdW50IGZvciBhCmZyYWdtZW50aW5n IG1hbmFnZXIuCgpDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51 eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAgICAgICAg ICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAg ICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0uYyAg ICAgIHwgIDU4ICstCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMu aCAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jICAg ICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jICAg IHwgMTIwIC0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5oICAg IHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jICAgICB8 ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5jICAgIHwg IDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmggICAgfCAg IDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgICAgICAgICAgICB8ICAg MiAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZWdpb25fbG1lbS5jICAgfCAgMjcg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYnVkZHkuYyAgICAgICAgICAgICB8IDQzNSAt LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2J1ZGR5LmggICAgICAgICAgICAg fCAxMzEgLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAg fCAgIDggKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg ICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nbG9iYWxzLmMgICAgICAgICAgIHwgICAx IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oICAgICAgICAgICB8ICAgMSAt CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjYXR0ZXJsaXN0LmMgICAgICAgfCAgNzAgKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NhdHRlcmxpc3QuaCAgICAgICB8ICAzNSArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgICAgfCAxODAgKystLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oICAgIHwgIDQ0ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMgICAgICAgfCAyNDYgKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmggICAgICAgfCAgMjkgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYnVkZHkuYyAgIHwgNzg5IC0tLS0t LS0tLS0tLS0tLS0tLQogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3Rz LmggIHwgICAxIC0KIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5j ICB8IDEzMyArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5j ICB8ICA1MSArLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmFuZ2VfbWFuYWdlci5jICAgICAg IHwgIDU1ICstCiBpbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oICAgICAgICAgICAgICAg fCAgMjMgKwogMzEgZmlsZXMgY2hhbmdlZCwgNzE1IGluc2VydGlvbnMoKyksIDE3NzEgZGVsZXRp b25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRk eS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0 bS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9u X3R0bS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfYnVkZHkuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCmluZGV4IDFlMWNiMjQ1ZmNhNy4uYjYzZDM3 NGRmZjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKQEAgLTI2LDYgKzI2LDcgQEAgY29uZmlnIERSTV9J OTE1CiAJc2VsZWN0IFNORF9IREFfSTkxNSBpZiBTTkRfSERBX0NPUkUKIAlzZWxlY3QgQ0VDX0NP UkUgaWYgQ0VDX05PVElGSUVSCiAJc2VsZWN0IFZNQVBfUEZOCisJc2VsZWN0IERSTV9UVE0KIAlo ZWxwCiAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBzeXN0ZW0gdGhhdCBoYXMg IkludGVsIEdyYXBoaWNzCiAJICBNZWRpYSBBY2NlbGVyYXRvciIgb3IgIkhEIEdyYXBoaWNzIiBp bnRlZ3JhdGVkIGdyYXBoaWNzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCBkMGQ5MzZkOTEzN2Iu LmNiODgyMzU3MDk5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTUwLDYgKzUwLDcgQEAgaTkx NS15ICs9IGk5MTVfZHJ2Lm8gXAogCSAgaW50ZWxfbWVtb3J5X3JlZ2lvbi5vIFwKIAkgIGludGVs X3BjaC5vIFwKIAkgIGludGVsX3BtLm8gXAorCSAgaW50ZWxfcmVnaW9uX3R0bS5vIFwKIAkgIGlu dGVsX3J1bnRpbWVfcG0ubyBcCiAJICBpbnRlbF9zaWRlYmFuZC5vIFwKIAkgIGludGVsX3N0ZXAu byBcCkBAIC0xNjAsNyArMTYxLDYgQEAgZ2VtLXkgKz0gXAogaTkxNS15ICs9IFwKIAkgICQoZ2Vt LXkpIFwKIAkgIGk5MTVfYWN0aXZlLm8gXAotCSAgaTkxNV9idWRkeS5vIFwKIAkgIGk5MTVfY21k X3BhcnNlci5vIFwKIAkgIGk5MTVfZ2VtX2V2aWN0Lm8gXAogCSAgaTkxNV9nZW1fZ3R0Lm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9sbWVtLmMKaW5kZXggZjQ0YmRkMDhmN2Ni Li5mNDI4MDNlYTQ4ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9sbWVtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2xtZW0u YwpAQCAtNCwxNiArNCw3MCBAQAogICovCiAKICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9u LmgiCisjaW5jbHVkZSAiaW50ZWxfcmVnaW9uX3R0bS5oIgogI2luY2x1ZGUgImdlbS9pOTE1X2dl bV9yZWdpb24uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fbG1lbS5oIgogI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCiAKK3N0YXRpYyB2b2lkIGxtZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCisJCQkJICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQoreworCWludGVs X3JlZ2lvbl90dG1fbm9kZV9mcmVlKG9iai0+bW0ucmVnaW9uLCBvYmotPm1tLnN0X21tX25vZGUp OworCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKKwlzZ19mcmVlX3RhYmxlKHBhZ2VzKTsKKwlrZnJl ZShwYWdlcyk7Cit9CisKK3N0YXRpYyBpbnQgbG1lbV9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKK3sKKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJc3RydWN0IHNnX3Rh YmxlICpwYWdlczsKKworCWZsYWdzID0gSTkxNV9BTExPQ19NSU5fUEFHRV9TSVpFOworCWlmIChv YmotPmZsYWdzICYgSTkxNV9CT19BTExPQ19DT05USUdVT1VTKQorCQlmbGFncyB8PSBJOTE1X0FM TE9DX0NPTlRJR1VPVVM7CisKKwlvYmotPm1tLnN0X21tX25vZGUgPSBpbnRlbF9yZWdpb25fdHRt X25vZGVfYWxsb2Mob2JqLT5tbS5yZWdpb24sCisJCQkJCQkJIG9iai0+YmFzZS5zaXplLAorCQkJ CQkJCSBmbGFncyk7CisJaWYgKElTX0VSUihvYmotPm1tLnN0X21tX25vZGUpKQorCQlyZXR1cm4g UFRSX0VSUihvYmotPm1tLnN0X21tX25vZGUpOworCisJLyogUmFuZ2UgbWFuYWdlciBpcyBhbHdh eXMgY29udGlnb3VzICovCisJaWYgKG9iai0+bW0ucmVnaW9uLT5pc19yYW5nZV9tYW5hZ2VyKQor CQlvYmotPmZsYWdzIHw9IEk5MTVfQk9fQUxMT0NfQ09OVElHVU9VUzsKKwlwYWdlcyA9IGludGVs X3JlZ2lvbl90dG1fbm9kZV90b19zdChvYmotPm1tLnJlZ2lvbiwgb2JqLT5tbS5zdF9tbV9ub2Rl KTsKKwlpZiAoSVNfRVJSKHBhZ2VzKSkKKwkJcmV0dXJuIFBUUl9FUlIocGFnZXMpOworCisJX19p OTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsCisJCQkJICAgIGk5MTVfc2dfZG1h X3BhZ2Vfc2l6ZXMocGFnZXMtPnNnbCkpOworCisJaWYgKG9iai0+ZmxhZ3MgJiBJOTE1X0JPX0FM TE9DX0NQVV9DTEVBUikgeworCQl2b2lkIF9faW9tZW0gKnZhZGRyID0KKwkJCWk5MTVfZ2VtX29i amVjdF9sbWVtX2lvX21hcChvYmosIDAsIG9iai0+YmFzZS5zaXplKTsKKworCQlpZiAoIXZhZGRy KSB7CisJCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzID0KKwkJCQlfX2k5MTVfZ2VtX29iamVjdF91 bnNldF9wYWdlcyhvYmopOworCisJCQlpZiAoIUlTX0VSUl9PUl9OVUxMKHBhZ2VzKSkKKwkJCQls bWVtX3B1dF9wYWdlcyhvYmosIHBhZ2VzKTsKKwkJfQorCisJCW1lbXNldF9pbyh2YWRkciwgMCwg b2JqLT5iYXNlLnNpemUpOworCQlpb19tYXBwaW5nX3VubWFwKHZhZGRyKTsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKwogY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2Vt X2xtZW1fb2JqX29wcyA9IHsKIAkubmFtZSA9ICJpOTE1X2dlbV9vYmplY3RfbG1lbSIsCiAJLmZs YWdzID0gSTkxNV9HRU1fT0JKRUNUX0hBU19JT01FTSwKIAotCS5nZXRfcGFnZXMgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2VzX2J1ZGR5LAotCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3Rf cHV0X3BhZ2VzX2J1ZGR5LAorCS5nZXRfcGFnZXMgPSBsbWVtX2dldF9wYWdlcywKKwkucHV0X3Bh Z2VzID0gbG1lbV9wdXRfcGFnZXMsCiAJLnJlbGVhc2UgPSBpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tZW1vcnlfcmVnaW9uLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX29iamVjdF90eXBlcy5oCmluZGV4IDQ1MDM0MGE3MzE4Ni4uZGJkN2ZmZmU5NTZlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVz LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5o CkBAIC0yMzIsMTAgKzIzMiwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJCSAq IE1lbW9yeSByZWdpb24gZm9yIHRoaXMgb2JqZWN0LgogCQkgKi8KIAkJc3RydWN0IGludGVsX21l bW9yeV9yZWdpb24gKnJlZ2lvbjsKKwogCQkvKioKLQkJICogTGlzdCBvZiBtZW1vcnkgcmVnaW9u IGJsb2NrcyBhbGxvY2F0ZWQgZm9yIHRoaXMgb2JqZWN0LgorCQkgKiBNZW1vcnkgbWFuYWdlciBu b2RlIGFsbG9jYXRlZCBmb3IgdGhpcyBvYmplY3QuCiAJCSAqLwotCQlzdHJ1Y3QgbGlzdF9oZWFk IGJsb2NrczsKKwkJdm9pZCAqc3RfbW1fbm9kZTsKKwogCQkvKioKIAkJICogRWxlbWVudCB3aXRo aW4gbWVtb3J5X3JlZ2lvbi0+b2JqZWN0cyBvciByZWdpb24tPnB1cmdlYWJsZQogCQkgKiBpZiB0 aGUgb2JqZWN0IGlzIG1hcmtlZCBhcyBET05UTkVFRC4gQWNjZXNzIGlzIHByb3RlY3RlZCBieQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMuYwppbmRleCBhZWQ4YTM3Y2Nk YzkuLjYyZWUyMTg1YTQxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX3BhZ2VzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3Bh Z2VzLmMKQEAgLTQ3Myw3ICs0NzMsOCBAQCBfX2k5MTVfZ2VtX29iamVjdF9nZXRfc2coc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAogCW1pZ2h0X3NsZWVwKCk7CiAJR0VNX0JVR19P TihuID49IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQpOwotCUdFTV9CVUdfT04oIWk5MTVf Z2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOworCWlmICghaTkxNV9nZW1fb2JqZWN0 X2hhc19waW5uZWRfcGFnZXMob2JqKSkKKwkJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAKIAkv KiBBcyB3ZSBpdGVyYXRlIGZvcndhcmQgdGhyb3VnaCB0aGUgc2csIHdlIHJlY29yZCBlYWNoIGVu dHJ5IGluIGEKIAkgKiByYWRpeHRyZWUgZm9yIHF1aWNrIHJlcGVhdGVkIChiYWNrd2FyZHMpIGxv b2t1cHMuIElmIHdlIGhhdmUgc2VlbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3JlZ2lvbi5jCmluZGV4IGNlOGZjZmM1NDA3OS4uZjI1ZTY2NDZjNWI3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jCkBAIC04LDEyOSArOCw5IEBACiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAKLXZvaWQKLWk5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXNfYnVkZHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKLQkJCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQotewotCV9faW50ZWxfbWVtb3J5X3JlZ2lv bl9wdXRfcGFnZXNfYnVkZHkob2JqLT5tbS5yZWdpb24sICZvYmotPm1tLmJsb2Nrcyk7Ci0KLQlv YmotPm1tLmRpcnR5ID0gZmFsc2U7Ci0Jc2dfZnJlZV90YWJsZShwYWdlcyk7Ci0Ja2ZyZWUocGFn ZXMpOwotfQotCi1pbnQKLWk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfYnVkZHkoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKLXsKLQljb25zdCB1NjQgbWF4X3NlZ21lbnQgPSBpOTE1 X3NnX3NlZ21lbnRfc2l6ZSgpOwotCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0gPSBv YmotPm1tLnJlZ2lvbjsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MgPSAmb2JqLT5tbS5ibG9j a3M7Ci0JcmVzb3VyY2Vfc2l6ZV90IHNpemUgPSBvYmotPmJhc2Uuc2l6ZTsKLQlyZXNvdXJjZV9z aXplX3QgcHJldl9lbmQ7Ci0Jc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOwotCXVuc2ln bmVkIGludCBmbGFnczsKLQlzdHJ1Y3Qgc2dfdGFibGUgKnN0OwotCXN0cnVjdCBzY2F0dGVybGlz dCAqc2c7Ci0JdW5zaWduZWQgaW50IHNnX3BhZ2Vfc2l6ZXM7Ci0JaW50IHJldDsKLQotCXN0ID0g a21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFzdCkKLQkJcmV0dXJuIC1F Tk9NRU07Ci0KLQlpZiAoc2dfYWxsb2NfdGFibGUoc3QsIHNpemUgPj4gUEFHRV9TSElGVCwgR0ZQ X0tFUk5FTCkpIHsKLQkJa2ZyZWUoc3QpOwotCQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQlmbGFn cyA9IEk5MTVfQUxMT0NfTUlOX1BBR0VfU0laRTsKLQlpZiAob2JqLT5mbGFncyAmIEk5MTVfQk9f QUxMT0NfQ09OVElHVU9VUykKLQkJZmxhZ3MgfD0gSTkxNV9BTExPQ19DT05USUdVT1VTOwotCi0J cmV0ID0gX19pbnRlbF9tZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRkeShtZW0sIHNpemUsIGZs YWdzLCBibG9ja3MpOwotCWlmIChyZXQpCi0JCWdvdG8gZXJyX2ZyZWVfc2c7Ci0KLQlHRU1fQlVH X09OKGxpc3RfZW1wdHkoYmxvY2tzKSk7Ci0KLQlzZyA9IHN0LT5zZ2w7Ci0Jc3QtPm5lbnRzID0g MDsKLQlzZ19wYWdlX3NpemVzID0gMDsKLQlwcmV2X2VuZCA9IChyZXNvdXJjZV9zaXplX3QpLTE7 Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCBibG9ja3MsIGxpbmspIHsKLQkJdTY0IGJs b2NrX3NpemUsIG9mZnNldDsKLQotCQlibG9ja19zaXplID0gbWluX3QodTY0LCBzaXplLAotCQkJ CSAgIGk5MTVfYnVkZHlfYmxvY2tfc2l6ZSgmbWVtLT5tbSwgYmxvY2spKTsKLQkJb2Zmc2V0ID0g aTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwotCi0JCXdoaWxlIChibG9ja19zaXplKSB7 Ci0JCQl1NjQgbGVuOwotCi0JCQlpZiAob2Zmc2V0ICE9IHByZXZfZW5kIHx8IHNnLT5sZW5ndGgg Pj0gbWF4X3NlZ21lbnQpIHsKLQkJCQlpZiAoc3QtPm5lbnRzKSB7Ci0JCQkJCXNnX3BhZ2Vfc2l6 ZXMgfD0gc2ctPmxlbmd0aDsKLQkJCQkJc2cgPSBfX3NnX25leHQoc2cpOwotCQkJCX0KLQotCQkJ CXNnX2RtYV9hZGRyZXNzKHNnKSA9IG1lbS0+cmVnaW9uLnN0YXJ0ICsgb2Zmc2V0OwotCQkJCXNn X2RtYV9sZW4oc2cpID0gMDsKLQkJCQlzZy0+bGVuZ3RoID0gMDsKLQkJCQlzdC0+bmVudHMrKzsK LQkJCX0KLQotCQkJbGVuID0gbWluKGJsb2NrX3NpemUsIG1heF9zZWdtZW50IC0gc2ctPmxlbmd0 aCk7Ci0JCQlzZy0+bGVuZ3RoICs9IGxlbjsKLQkJCXNnX2RtYV9sZW4oc2cpICs9IGxlbjsKLQot CQkJb2Zmc2V0ICs9IGxlbjsKLQkJCWJsb2NrX3NpemUgLT0gbGVuOwotCi0JCQlwcmV2X2VuZCA9 IG9mZnNldDsKLQkJfQotCX0KLQotCXNnX3BhZ2Vfc2l6ZXMgfD0gc2ctPmxlbmd0aDsKLQlzZ19t YXJrX2VuZChzZyk7Ci0JaTkxNV9zZ190cmltKHN0KTsKLQotCS8qIEludGVuZGVkIGZvciBrZXJu ZWwgaW50ZXJuYWwgdXNlIG9ubHkgKi8KLQlpZiAob2JqLT5mbGFncyAmIEk5MTVfQk9fQUxMT0Nf Q1BVX0NMRUFSKSB7Ci0JCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Ci0JCXVuc2lnbmVkIGxvbmcg aTsKLQotCQlmb3JfZWFjaF9zZyhzdC0+c2dsLCBzZywgc3QtPm5lbnRzLCBpKSB7Ci0JCQl1bnNp Z25lZCBpbnQgbGVuZ3RoOwotCQkJdm9pZCBfX2lvbWVtICp2YWRkcjsKLQkJCWRtYV9hZGRyX3Qg ZGFkZHI7Ci0KLQkJCWRhZGRyID0gc2dfZG1hX2FkZHJlc3Moc2cpOwotCQkJZGFkZHIgLT0gbWVt LT5yZWdpb24uc3RhcnQ7Ci0JCQlsZW5ndGggPSBzZ19kbWFfbGVuKHNnKTsKLQotCQkJdmFkZHIg PSBpb19tYXBwaW5nX21hcF93YygmbWVtLT5pb21hcCwgZGFkZHIsIGxlbmd0aCk7Ci0JCQltZW1z ZXQ2NCgodm9pZCBfX2ZvcmNlICopdmFkZHIsIDAsIGxlbmd0aCAvIHNpemVvZih1NjQpKTsKLQkJ CWlvX21hcHBpbmdfdW5tYXAodmFkZHIpOwotCQl9Ci0KLQkJd21iKCk7Ci0JfQotCi0JX19pOTE1 X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgc3QsIHNnX3BhZ2Vfc2l6ZXMpOwotCi0JcmV0dXJu IDA7Ci0KLWVycl9mcmVlX3NnOgotCXNnX2ZyZWVfdGFibGUoc3QpOwotCWtmcmVlKHN0KTsKLQly ZXR1cm4gcmV0OwotfQotCiB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0X21lbW9yeV9yZWdpb24o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkJc3RydWN0IGludGVsX21lbW9y eV9yZWdpb24gKm1lbSkKIHsKLQlJTklUX0xJU1RfSEVBRCgmb2JqLT5tbS5ibG9ja3MpOwogCW9i ai0+bW0ucmVnaW9uID0gaW50ZWxfbWVtb3J5X3JlZ2lvbl9nZXQobWVtKTsKIAogCWlmIChvYmot PmJhc2Uuc2l6ZSA8PSBtZW0tPm1pbl9wYWdlX3NpemUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fcmVnaW9uLmgKaW5kZXggZWJkZGM4NmQ3OGY3Li44NGZjYjMyOTc0MDAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9yZWdpb24uaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmgKQEAgLTEyLDEwICsx Miw2IEBAIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uOwogc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Q7CiBzdHJ1Y3Qgc2dfdGFibGU7CiAKLWludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2Vz X2J1ZGR5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwotdm9pZCBpOTE1X2dlbV9v YmplY3RfcHV0X3BhZ2VzX2J1ZGR5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0J CQkJICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKTsKLQogdm9pZCBpOTE1X2dlbV9vYmplY3Rf aW5pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJ CXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0pOwogdm9pZCBpOTE1X2dlbV9vYmplY3Rf cmVsZWFzZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2htZW0uYwppbmRleCBhOWJmYTY2Yzhk YTEuLjVkMTZjNDQ2MmZkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX3NobWVtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3No bWVtLmMKQEAgLTYyOCwxMSArNjI4LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbWVt b3J5X3JlZ2lvbl9vcHMgc2htZW1fcmVnaW9uX29wcyA9IHsKIAkuaW5pdF9vYmplY3QgPSBzaG1l bV9vYmplY3RfaW5pdCwKIH07CiAKLXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICppOTE1X2dl bV9zaG1lbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3N0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICppOTE1X2dlbV9zaG1lbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKKwkJCQkJCSB1MTYgdHlwZSwgdTE2IGluc3RhbmNlKQogewogCXJldHVybiBp bnRlbF9tZW1vcnlfcmVnaW9uX2NyZWF0ZShpOTE1LCAwLAogCQkJCQkgIHRvdGFscmFtX3BhZ2Vz KCkgPDwgUEFHRV9TSElGVCwKIAkJCQkJICBQQUdFX1NJWkUsIDAsCisJCQkJCSAgdHlwZSwgaW5z dGFuY2UsCiAJCQkJCSAgJnNobWVtX3JlZ2lvbl9vcHMpOwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggMjkzZjY0MGZhYTBhLi5jNDJhYmVlMjA2 ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMKQEAgLTc3 MCw3ICs3NzAsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fb3Bz IGk5MTVfcmVnaW9uX3N0b2xlbl9sbWVtX29wcyA9IHsKIH07CiAKIHN0cnVjdCBpbnRlbF9tZW1v cnlfcmVnaW9uICoKLWk5MTVfZ2VtX3N0b2xlbl9sbWVtX3NldHVwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQoraTkxNV9nZW1fc3RvbGVuX2xtZW1fc2V0dXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHUxNiB0eXBlLAorCQkJICAgdTE2IGluc3RhbmNlKQogewogCXN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CiAJc3RydWN0IHBjaV9kZXYg KnBkZXYgPSB0b19wY2lfZGV2KGk5MTUtPmRybS5kZXYpOwpAQCAtNzg4LDYgKzc4OSw3IEBAIGk5 MTVfZ2VtX3N0b2xlbl9sbWVtX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQog CiAJbWVtID0gaW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoaTkxNSwgbG1lbV9iYXNlLCBsbWVt X3NpemUsCiAJCQkJCSBJOTE1X0dUVF9QQUdFX1NJWkVfNEssIGlvX3N0YXJ0LAorCQkJCQkgdHlw ZSwgaW5zdGFuY2UsCiAJCQkJCSAmaTkxNV9yZWdpb25fc3RvbGVuX2xtZW1fb3BzKTsKIAlpZiAo SVNfRVJSKG1lbSkpCiAJCXJldHVybiBtZW07CkBAIC04MDksMTQgKzgxMSwxNSBAQCBpOTE1X2dl bV9zdG9sZW5fbG1lbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIH0KIAog c3RydWN0IGludGVsX21lbW9yeV9yZWdpb24qCi1pOTE1X2dlbV9zdG9sZW5fc21lbV9zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK2k5MTVfZ2VtX3N0b2xlbl9zbWVtX3NldHVw KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MTYgdHlwZSwKKwkJCSAgIHUxNiBpbnN0 YW5jZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtOwogCiAJbWVtID0gaW50 ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoaTkxNSwKIAkJCQkJIGludGVsX2dyYXBoaWNzX3N0b2xl bl9yZXMuc3RhcnQsCiAJCQkJCSByZXNvdXJjZV9zaXplKCZpbnRlbF9ncmFwaGljc19zdG9sZW5f cmVzKSwKLQkJCQkJIFBBR0VfU0laRSwgMCwKKwkJCQkJIFBBR0VfU0laRSwgMCwgdHlwZSwgaW5z dGFuY2UsCiAJCQkJCSAmaTkxNV9yZWdpb25fc3RvbGVuX3NtZW1fb3BzKTsKIAlpZiAoSVNfRVJS KG1lbSkpCiAJCXJldHVybiBtZW07CkBAIC04MjQsNyArODI3LDYgQEAgaTkxNV9nZW1fc3RvbGVu X3NtZW1fc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaW50ZWxfbWVtb3J5 X3JlZ2lvbl9zZXRfbmFtZShtZW0sICJzdG9sZW4tc3lzdGVtIik7CiAKIAltZW0tPnByaXZhdGUg PSB0cnVlOwotCiAJcmV0dXJuIG1lbTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX3N0b2xlbi5oCmluZGV4IDJiZWM2YzM2N2I5Yy4uY2NkZjdiZWZjNTcxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3N0b2xlbi5oCkBAIC0yMSw4ICsyMSwxMyBA QCBpbnQgaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlX2luX3JhbmdlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJIHU2NCBlbmQpOwogdm9pZCBpOTE1X2dlbV9zdG9s ZW5fcmVtb3ZlX25vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUpOwotc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKmk5 MTVfZ2VtX3N0b2xlbl9zbWVtX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK LXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICppOTE1X2dlbV9zdG9sZW5fbG1lbV9zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CitzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqCitpOTE1X2dlbV9zdG9sZW5fc21lbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgdTE2IHR5cGUsCisJCQkgICB1MTYgaW5zdGFuY2UpOworc3RydWN0IGludGVsX21lbW9y eV9yZWdpb24gKgoraTkxNV9nZW1fc3RvbGVuX2xtZW1fc2V0dXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIHUxNiB0eXBlLAorCQkJICAgdTE2IGluc3RhbmNlKTsKKwogc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgogaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNp emUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKaW5kZXggOGQ3N2RjYmFkMDU5Li4zZjg4 ZWNkZWUwMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwpAQCAtNjgsOCArNjgsNiBA QCBpbnQgaW50ZWxfZ3RfcHJvYmVfbG1lbShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWlkID0gSU5U RUxfUkVHSU9OX0xNRU07CiAKIAltZW0tPmlkID0gaWQ7Ci0JbWVtLT50eXBlID0gSU5URUxfTUVN T1JZX0xPQ0FMOwotCW1lbS0+aW5zdGFuY2UgPSAwOwogCiAJaW50ZWxfbWVtb3J5X3JlZ2lvbl9z ZXRfbmFtZShtZW0sICJsb2NhbCV1IiwgbWVtLT5pbnN0YW5jZSk7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZWdpb25fbG1lbS5jCmluZGV4IDczZmNlYjBjMjVmYy4uZjczNjZi MDU0ZjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZWdpb25f bG1lbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlZ2lvbl9sbWVtLmMK QEAgLTUsNiArNSw4IEBACiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImludGVs X21lbW9yeV9yZWdpb24uaCIKKyNpbmNsdWRlICJpbnRlbF9yZWdpb25fbG1lbS5oIgorI2luY2x1 ZGUgImludGVsX3JlZ2lvbl90dG0uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fbG1lbS5oIgog I2luY2x1ZGUgImdlbS9pOTE1X2dlbV9yZWdpb24uaCIKICNpbmNsdWRlICJpbnRlbF9yZWdpb25f bG1lbS5oIgpAQCAtNjYsOSArNjgsOSBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX2Zha2VfbG1lbV9i YXIoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHN0YXRpYyB2b2lkCiByZWdpb25f bG1lbV9yZWxlYXNlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0pCiB7Ci0JcmVsZWFz ZV9mYWtlX2xtZW1fYmFyKG1lbSk7CisJaW50ZWxfcmVnaW9uX3R0bV9maW5pKG1lbSk7CiAJaW9f bWFwcGluZ19maW5pKCZtZW0tPmlvbWFwKTsKLQlpbnRlbF9tZW1vcnlfcmVnaW9uX3JlbGVhc2Vf YnVkZHkobWVtKTsKKwlyZWxlYXNlX2Zha2VfbG1lbV9iYXIobWVtKTsKIH0KIAogc3RhdGljIGlu dApAQCAtODMsMTIgKzg1LDIxIEBAIHJlZ2lvbl9sbWVtX2luaXQoc3RydWN0IGludGVsX21lbW9y eV9yZWdpb24gKm1lbSkKIAogCWlmICghaW9fbWFwcGluZ19pbml0X3djKCZtZW0tPmlvbWFwLAog CQkJCW1lbS0+aW9fc3RhcnQsCi0JCQkJcmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pKSkKLQkJ cmV0dXJuIC1FSU87CisJCQkJcmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pKSkgeworCQlyZXQg PSAtRUlPOworCQlnb3RvIG91dF9ub19pbzsKKwl9CiAKLQlyZXQgPSBpbnRlbF9tZW1vcnlfcmVn aW9uX2luaXRfYnVkZHkobWVtKTsKKwlyZXQgPSBpbnRlbF9yZWdpb25fdHRtX2luaXQobWVtKTsK IAlpZiAocmV0KQotCQlpb19tYXBwaW5nX2ZpbmkoJm1lbS0+aW9tYXApOworCQlnb3RvIG91dF9u b19idWRkeTsKKworCXJldHVybiAwOworCitvdXRfbm9fYnVkZHk6CisJaW9fbWFwcGluZ19maW5p KCZtZW0tPmlvbWFwKTsKK291dF9ub19pbzoKKwlyZWxlYXNlX2Zha2VfbG1lbV9iYXIobWVtKTsK IAogCXJldHVybiByZXQ7CiB9CkBAIC0xMjcsNiArMTM4LDggQEAgaW50ZWxfZ3Rfc2V0dXBfZmFr ZV9sbWVtKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJCQkJCSBtYXBwYWJsZV9lbmQsCiAJCQkJCSBQ QUdFX1NJWkUsCiAJCQkJCSBpb19zdGFydCwKKwkJCQkJIElOVEVMX01FTU9SWV9MT0NBTCwKKwkJ CQkJIDAsCiAJCQkJCSAmaW50ZWxfcmVnaW9uX2xtZW1fb3BzKTsKIAlpZiAoIUlTX0VSUihtZW0p KSB7CiAJCWRybV9pbmZvKCZpOTE1LT5kcm0sICJJbnRlbCBncmFwaGljcyBmYWtlIExNRU06ICVw UlxuIiwKQEAgLTE5OCw2ICsyMTEsOCBAQCBzdGF0aWMgc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKnNldHVwX2xtZW0oc3RydWN0IGludGVsX2d0ICpndCkKIAkJCQkJIGxtZW1fc2l6ZSwKIAkJ CQkJIEk5MTVfR1RUX1BBR0VfU0laRV80SywKIAkJCQkJIGlvX3N0YXJ0LAorCQkJCQkgSU5URUxf TUVNT1JZX0xPQ0FMLAorCQkJCQkgMCwKIAkJCQkJICZpbnRlbF9yZWdpb25fbG1lbV9vcHMpOwog CWlmIChJU19FUlIobWVtKSkKIAkJcmV0dXJuIG1lbTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfYnVkZHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYnVkZHku YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyZjZlZWNiMmZjLi4wMDAwMDAwMDAw MDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5jCisrKyAvZGV2L251bGwK QEAgLTEsNDM1ICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKLS8qCi0g KiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgotICovCi0KLSNpbmNsdWRlIDxs aW51eC9rbWVtbGVhay5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLQotI2luY2x1ZGUgImk5 MTVfYnVkZHkuaCIKLQotI2luY2x1ZGUgImk5MTVfZ2VtLmgiCi0jaW5jbHVkZSAiaTkxNV9nbG9i YWxzLmgiCi0jaW5jbHVkZSAiaTkxNV91dGlscy5oIgotCi1zdGF0aWMgc3RydWN0IGk5MTVfZ2xv YmFsX2Jsb2NrIHsKLQlzdHJ1Y3QgaTkxNV9nbG9iYWwgYmFzZTsKLQlzdHJ1Y3Qga21lbV9jYWNo ZSAqc2xhYl9ibG9ja3M7Ci19IGdsb2JhbDsKLQotc3RhdGljIHZvaWQgaTkxNV9nbG9iYWxfYnVk ZHlfc2hyaW5rKHZvaWQpCi17Ci0Ja21lbV9jYWNoZV9zaHJpbmsoZ2xvYmFsLnNsYWJfYmxvY2tz KTsKLX0KLQotc3RhdGljIHZvaWQgaTkxNV9nbG9iYWxfYnVkZHlfZXhpdCh2b2lkKQotewotCWtt ZW1fY2FjaGVfZGVzdHJveShnbG9iYWwuc2xhYl9ibG9ja3MpOwotfQotCi1zdGF0aWMgc3RydWN0 IGk5MTVfZ2xvYmFsX2Jsb2NrIGdsb2JhbCA9IHsgewotCS5zaHJpbmsgPSBpOTE1X2dsb2JhbF9i dWRkeV9zaHJpbmssCi0JLmV4aXQgPSBpOTE1X2dsb2JhbF9idWRkeV9leGl0LAotfSB9OwotCi1p bnQgX19pbml0IGk5MTVfZ2xvYmFsX2J1ZGR5X2luaXQodm9pZCkKLXsKLQlnbG9iYWwuc2xhYl9i bG9ja3MgPSBLTUVNX0NBQ0hFKGk5MTVfYnVkZHlfYmxvY2ssIFNMQUJfSFdDQUNIRV9BTElHTik7 Ci0JaWYgKCFnbG9iYWwuc2xhYl9ibG9ja3MpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JaTkxNV9n bG9iYWxfcmVnaXN0ZXIoJmdsb2JhbC5iYXNlKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0 cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICppOTE1X2Jsb2NrX2FsbG9jKHN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICpwYXJlbnQsCi0JCQkJCQkgdW5zaWduZWQgaW50IG9yZGVyLAotCQkJCQkJIHU2NCBv ZmZzZXQpCi17Ci0Jc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOwotCi0JR0VNX0JVR19P TihvcmRlciA+IEk5MTVfQlVERFlfTUFYX09SREVSKTsKLQotCWJsb2NrID0ga21lbV9jYWNoZV96 YWxsb2MoZ2xvYmFsLnNsYWJfYmxvY2tzLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWJsb2NrKQotCQly ZXR1cm4gTlVMTDsKLQotCWJsb2NrLT5oZWFkZXIgPSBvZmZzZXQ7Ci0JYmxvY2stPmhlYWRlciB8 PSBvcmRlcjsKLQlibG9jay0+cGFyZW50ID0gcGFyZW50OwotCi0JR0VNX0JVR19PTihibG9jay0+ aGVhZGVyICYgSTkxNV9CVUREWV9IRUFERVJfVU5VU0VEKTsKLQlyZXR1cm4gYmxvY2s7Ci19Ci0K LXN0YXRpYyB2b2lkIGk5MTVfYmxvY2tfZnJlZShzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxv Y2spCi17Ci0Ja21lbV9jYWNoZV9mcmVlKGdsb2JhbC5zbGFiX2Jsb2NrcywgYmxvY2spOwotfQot Ci1zdGF0aWMgdm9pZCBtYXJrX2FsbG9jYXRlZChzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxv Y2spCi17Ci0JYmxvY2stPmhlYWRlciAmPSB+STkxNV9CVUREWV9IRUFERVJfU1RBVEU7Ci0JYmxv Y2stPmhlYWRlciB8PSBJOTE1X0JVRERZX0FMTE9DQVRFRDsKLQotCWxpc3RfZGVsKCZibG9jay0+ bGluayk7Ci19Ci0KLXN0YXRpYyB2b2lkIG1hcmtfZnJlZShzdHJ1Y3QgaTkxNV9idWRkeV9tbSAq bW0sCi0JCSAgICAgIHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykKLXsKLQlibG9jay0+ aGVhZGVyICY9IH5JOTE1X0JVRERZX0hFQURFUl9TVEFURTsKLQlibG9jay0+aGVhZGVyIHw9IEk5 MTVfQlVERFlfRlJFRTsKLQotCWxpc3RfYWRkKCZibG9jay0+bGluaywKLQkJICZtbS0+ZnJlZV9s aXN0W2k5MTVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spXSk7Ci19Ci0KLXN0YXRpYyB2b2lkIG1h cmtfc3BsaXQoc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrKQotewotCWJsb2NrLT5oZWFk ZXIgJj0gfkk5MTVfQlVERFlfSEVBREVSX1NUQVRFOwotCWJsb2NrLT5oZWFkZXIgfD0gSTkxNV9C VUREWV9TUExJVDsKLQotCWxpc3RfZGVsKCZibG9jay0+bGluayk7Ci19Ci0KLWludCBpOTE1X2J1 ZGR5X2luaXQoc3RydWN0IGk5MTVfYnVkZHlfbW0gKm1tLCB1NjQgc2l6ZSwgdTY0IGNodW5rX3Np emUpCi17Ci0JdW5zaWduZWQgaW50IGk7Ci0JdTY0IG9mZnNldDsKLQotCWlmIChzaXplIDwgY2h1 bmtfc2l6ZSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoY2h1bmtfc2l6ZSA8IFBBR0VfU0la RSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoIWlzX3Bvd2VyX29mXzIoY2h1bmtfc2l6ZSkp Ci0JCXJldHVybiAtRUlOVkFMOwotCi0Jc2l6ZSA9IHJvdW5kX2Rvd24oc2l6ZSwgY2h1bmtfc2l6 ZSk7Ci0KLQltbS0+c2l6ZSA9IHNpemU7Ci0JbW0tPmNodW5rX3NpemUgPSBjaHVua19zaXplOwot CW1tLT5tYXhfb3JkZXIgPSBpbG9nMihzaXplKSAtIGlsb2cyKGNodW5rX3NpemUpOwotCi0JR0VN X0JVR19PTihtbS0+bWF4X29yZGVyID4gSTkxNV9CVUREWV9NQVhfT1JERVIpOwotCi0JbW0tPmZy ZWVfbGlzdCA9IGttYWxsb2NfYXJyYXkobW0tPm1heF9vcmRlciArIDEsCi0JCQkJICAgICAgc2l6 ZW9mKHN0cnVjdCBsaXN0X2hlYWQpLAotCQkJCSAgICAgIEdGUF9LRVJORUwpOwotCWlmICghbW0t PmZyZWVfbGlzdCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlmb3IgKGkgPSAwOyBpIDw9IG1tLT5t YXhfb3JkZXI7ICsraSkKLQkJSU5JVF9MSVNUX0hFQUQoJm1tLT5mcmVlX2xpc3RbaV0pOwotCi0J bW0tPm5fcm9vdHMgPSBod2VpZ2h0NjQoc2l6ZSk7Ci0KLQltbS0+cm9vdHMgPSBrbWFsbG9jX2Fy cmF5KG1tLT5uX3Jvb3RzLAotCQkJCSAgc2l6ZW9mKHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICop LAotCQkJCSAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFtbS0+cm9vdHMpCi0JCWdvdG8gb3V0X2ZyZWVf bGlzdDsKLQotCW9mZnNldCA9IDA7Ci0JaSA9IDA7Ci0KLQkvKgotCSAqIFNwbGl0IGludG8gcG93 ZXItb2YtdHdvIGJsb2NrcywgaW4gY2FzZSB3ZSBhcmUgZ2l2ZW4gYSBzaXplIHRoYXQgaXMKLQkg KiBub3QgaXRzZWxmIGEgcG93ZXItb2YtdHdvLgotCSAqLwotCWRvIHsKLQkJc3RydWN0IGk5MTVf YnVkZHlfYmxvY2sgKnJvb3Q7Ci0JCXVuc2lnbmVkIGludCBvcmRlcjsKLQkJdTY0IHJvb3Rfc2l6 ZTsKLQotCQlyb290X3NpemUgPSByb3VuZGRvd25fcG93X29mX3R3byhzaXplKTsKLQkJb3JkZXIg PSBpbG9nMihyb290X3NpemUpIC0gaWxvZzIoY2h1bmtfc2l6ZSk7Ci0KLQkJcm9vdCA9IGk5MTVf YmxvY2tfYWxsb2MoTlVMTCwgb3JkZXIsIG9mZnNldCk7Ci0JCWlmICghcm9vdCkKLQkJCWdvdG8g b3V0X2ZyZWVfcm9vdHM7Ci0KLQkJbWFya19mcmVlKG1tLCByb290KTsKLQotCQlHRU1fQlVHX09O KGkgPiBtbS0+bWF4X29yZGVyKTsKLQkJR0VNX0JVR19PTihpOTE1X2J1ZGR5X2Jsb2NrX3NpemUo bW0sIHJvb3QpIDwgY2h1bmtfc2l6ZSk7Ci0KLQkJbW0tPnJvb3RzW2ldID0gcm9vdDsKLQotCQlv ZmZzZXQgKz0gcm9vdF9zaXplOwotCQlzaXplIC09IHJvb3Rfc2l6ZTsKLQkJaSsrOwotCX0gd2hp bGUgKHNpemUpOwotCi0JcmV0dXJuIDA7Ci0KLW91dF9mcmVlX3Jvb3RzOgotCXdoaWxlIChpLS0p Ci0JCWk5MTVfYmxvY2tfZnJlZShtbS0+cm9vdHNbaV0pOwotCWtmcmVlKG1tLT5yb290cyk7Ci1v dXRfZnJlZV9saXN0OgotCWtmcmVlKG1tLT5mcmVlX2xpc3QpOwotCXJldHVybiAtRU5PTUVNOwot fQotCi12b2lkIGk5MTVfYnVkZHlfZmluaShzdHJ1Y3QgaTkxNV9idWRkeV9tbSAqbW0pCi17Ci0J aW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbW0tPm5fcm9vdHM7ICsraSkgewotCQlHRU1fV0FS Tl9PTighaTkxNV9idWRkeV9ibG9ja19pc19mcmVlKG1tLT5yb290c1tpXSkpOwotCQlpOTE1X2Js b2NrX2ZyZWUobW0tPnJvb3RzW2ldKTsKLQl9Ci0KLQlrZnJlZShtbS0+cm9vdHMpOwotCWtmcmVl KG1tLT5mcmVlX2xpc3QpOwotfQotCi1zdGF0aWMgaW50IHNwbGl0X2Jsb2NrKHN0cnVjdCBpOTE1 X2J1ZGR5X21tICptbSwKLQkJICAgICAgIHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykK LXsKLQl1bnNpZ25lZCBpbnQgYmxvY2tfb3JkZXIgPSBpOTE1X2J1ZGR5X2Jsb2NrX29yZGVyKGJs b2NrKSAtIDE7Ci0JdTY0IG9mZnNldCA9IGk5MTVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsK LQotCUdFTV9CVUdfT04oIWk5MTVfYnVkZHlfYmxvY2tfaXNfZnJlZShibG9jaykpOwotCUdFTV9C VUdfT04oIWk5MTVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spKTsKLQotCWJsb2NrLT5sZWZ0ID0g aTkxNV9ibG9ja19hbGxvYyhibG9jaywgYmxvY2tfb3JkZXIsIG9mZnNldCk7Ci0JaWYgKCFibG9j ay0+bGVmdCkKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlibG9jay0+cmlnaHQgPSBpOTE1X2Jsb2Nr X2FsbG9jKGJsb2NrLCBibG9ja19vcmRlciwKLQkJCQkJb2Zmc2V0ICsgKG1tLT5jaHVua19zaXpl IDw8IGJsb2NrX29yZGVyKSk7Ci0JaWYgKCFibG9jay0+cmlnaHQpIHsKLQkJaTkxNV9ibG9ja19m cmVlKGJsb2NrLT5sZWZ0KTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCi0JbWFya19mcmVlKG1t LCBibG9jay0+bGVmdCk7Ci0JbWFya19mcmVlKG1tLCBibG9jay0+cmlnaHQpOwotCi0JbWFya19z cGxpdChibG9jayk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBpOTE1X2J1ZGR5 X2Jsb2NrICoKLWdldF9idWRkeShzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2spCi17Ci0J c3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKnBhcmVudDsKLQotCXBhcmVudCA9IGJsb2NrLT5wYXJl bnQ7Ci0JaWYgKCFwYXJlbnQpCi0JCXJldHVybiBOVUxMOwotCi0JaWYgKHBhcmVudC0+bGVmdCA9 PSBibG9jaykKLQkJcmV0dXJuIHBhcmVudC0+cmlnaHQ7Ci0KLQlyZXR1cm4gcGFyZW50LT5sZWZ0 OwotfQotCi1zdGF0aWMgdm9pZCBfX2k5MTVfYnVkZHlfZnJlZShzdHJ1Y3QgaTkxNV9idWRkeV9t bSAqbW0sCi0JCQkgICAgICBzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2spCi17Ci0Jc3Ry dWN0IGk5MTVfYnVkZHlfYmxvY2sgKnBhcmVudDsKLQotCXdoaWxlICgocGFyZW50ID0gYmxvY2st PnBhcmVudCkpIHsKLQkJc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJ1ZGR5OwotCi0JCWJ1ZGR5 ID0gZ2V0X2J1ZGR5KGJsb2NrKTsKLQotCQlpZiAoIWk5MTVfYnVkZHlfYmxvY2tfaXNfZnJlZShi dWRkeSkpCi0JCQlicmVhazsKLQotCQlsaXN0X2RlbCgmYnVkZHktPmxpbmspOwotCi0JCWk5MTVf YmxvY2tfZnJlZShibG9jayk7Ci0JCWk5MTVfYmxvY2tfZnJlZShidWRkeSk7Ci0KLQkJYmxvY2sg PSBwYXJlbnQ7Ci0JfQotCi0JbWFya19mcmVlKG1tLCBibG9jayk7Ci19Ci0KLXZvaWQgaTkxNV9i dWRkeV9mcmVlKHN0cnVjdCBpOTE1X2J1ZGR5X21tICptbSwKLQkJICAgICBzdHJ1Y3QgaTkxNV9i dWRkeV9ibG9jayAqYmxvY2spCi17Ci0JR0VNX0JVR19PTighaTkxNV9idWRkeV9ibG9ja19pc19h bGxvY2F0ZWQoYmxvY2spKTsKLQlfX2k5MTVfYnVkZHlfZnJlZShtbSwgYmxvY2spOwotfQotCi12 b2lkIGk5MTVfYnVkZHlfZnJlZV9saXN0KHN0cnVjdCBpOTE1X2J1ZGR5X21tICptbSwgc3RydWN0 IGxpc3RfaGVhZCAqb2JqZWN0cykKLXsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2ss ICpvbjsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibG9jaywgb24sIG9iamVjdHMsIGxp bmspIHsKLQkJaTkxNV9idWRkeV9mcmVlKG1tLCBibG9jayk7Ci0JCWNvbmRfcmVzY2hlZCgpOwot CX0KLQlJTklUX0xJU1RfSEVBRChvYmplY3RzKTsKLX0KLQotLyoKLSAqIEFsbG9jYXRlIHBvd2Vy LW9mLXR3byBibG9jay4gVGhlIG9yZGVyIHZhbHVlIGhlcmUgdHJhbnNsYXRlcyB0bzoKLSAqCi0g KiAgIDAgPSAyXjAgKiBtbS0+Y2h1bmtfc2l6ZQotICogICAxID0gMl4xICogbW0tPmNodW5rX3Np emUKLSAqICAgMiA9IDJeMiAqIG1tLT5jaHVua19zaXplCi0gKiAgIC4uLgotICovCi1zdHJ1Y3Qg aTkxNV9idWRkeV9ibG9jayAqCi1pOTE1X2J1ZGR5X2FsbG9jKHN0cnVjdCBpOTE1X2J1ZGR5X21t ICptbSwgdW5zaWduZWQgaW50IG9yZGVyKQotewotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpi bG9jayA9IE5VTEw7Ci0JdW5zaWduZWQgaW50IGk7Ci0JaW50IGVycjsKLQotCWZvciAoaSA9IG9y ZGVyOyBpIDw9IG1tLT5tYXhfb3JkZXI7ICsraSkgewotCQlibG9jayA9IGxpc3RfZmlyc3RfZW50 cnlfb3JfbnVsbCgmbW0tPmZyZWVfbGlzdFtpXSwKLQkJCQkJCSBzdHJ1Y3QgaTkxNV9idWRkeV9i bG9jaywKLQkJCQkJCSBsaW5rKTsKLQkJaWYgKGJsb2NrKQotCQkJYnJlYWs7Ci0JfQotCi0JaWYg KCFibG9jaykKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT1NQQyk7Ci0KLQlHRU1fQlVHX09OKCFpOTE1 X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoYmxvY2spKTsKLQotCXdoaWxlIChpICE9IG9yZGVyKSB7Ci0J CWVyciA9IHNwbGl0X2Jsb2NrKG1tLCBibG9jayk7Ci0JCWlmICh1bmxpa2VseShlcnIpKQotCQkJ Z290byBvdXRfZnJlZTsKLQotCQkvKiBHbyBsb3cgKi8KLQkJYmxvY2sgPSBibG9jay0+bGVmdDsK LQkJaS0tOwotCX0KLQotCW1hcmtfYWxsb2NhdGVkKGJsb2NrKTsKLQlrbWVtbGVha191cGRhdGVf dHJhY2UoYmxvY2spOwotCXJldHVybiBibG9jazsKLQotb3V0X2ZyZWU6Ci0JaWYgKGkgIT0gb3Jk ZXIpCi0JCV9faTkxNV9idWRkeV9mcmVlKG1tLCBibG9jayk7Ci0JcmV0dXJuIEVSUl9QVFIoZXJy KTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIG92ZXJsYXBzKHU2NCBzMSwgdTY0IGUxLCB1NjQg czIsIHU2NCBlMikKLXsKLQlyZXR1cm4gczEgPD0gZTIgJiYgZTEgPj0gczI7Ci19Ci0KLXN0YXRp YyBpbmxpbmUgYm9vbCBjb250YWlucyh1NjQgczEsIHU2NCBlMSwgdTY0IHMyLCB1NjQgZTIpCi17 Ci0JcmV0dXJuIHMxIDw9IHMyICYmIGUxID49IGUyOwotfQotCi0vKgotICogQWxsb2NhdGUgcmFu Z2UuIE5vdGUgdGhhdCBpdCdzIHNhZmUgdG8gY2hhaW4gdG9nZXRoZXIgbXVsdGlwbGUgYWxsb2Nf cmFuZ2VzCi0gKiB3aXRoIHRoZSBzYW1lIGJsb2NrcyBsaXN0LgotICoKLSAqIEludGVuZGVkIGZv ciBwcmUtYWxsb2NhdGluZyBwb3J0aW9ucyBvZiB0aGUgYWRkcmVzcyBzcGFjZSwgZm9yIGV4YW1w bGUgdG8KLSAqIHJlc2VydmUgYSBibG9jayBmb3IgdGhlIGluaXRpYWwgZnJhbWVidWZmZXIgb3Ig c2ltaWxhciwgaGVuY2UgdGhlIGV4cGVjdGF0aW9uCi0gKiBoZXJlIGlzIHRoYXQgaTkxNV9idWRk eV9hbGxvYygpIGlzIHN0aWxsIHRoZSBtYWluIHZlaGljbGUgZm9yCi0gKiBhbGxvY2F0aW9ucywg c28gaWYgdGhhdCdzIG5vdCB0aGUgY2FzZSB0aGVuIHRoZSBkcm1fbW0gcmFuZ2UgYWxsb2NhdG9y IGlzCi0gKiBwcm9iYWJseSBhIG11Y2ggYmV0dGVyIGZpdCwgYW5kIHNvIHlvdSBzaG91bGQgcHJv YmFibHkgZ28gdXNlIHRoYXQgaW5zdGVhZC4KLSAqLwotaW50IGk5MTVfYnVkZHlfYWxsb2NfcmFu Z2Uoc3RydWN0IGk5MTVfYnVkZHlfbW0gKm1tLAotCQkJICAgc3RydWN0IGxpc3RfaGVhZCAqYmxv Y2tzLAotCQkJICAgdTY0IHN0YXJ0LCB1NjQgc2l6ZSkKLXsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9i bG9jayAqYmxvY2s7Ci0Jc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJ1ZGR5OwotCUxJU1RfSEVB RChhbGxvY2F0ZWQpOwotCUxJU1RfSEVBRChkZnMpOwotCXU2NCBlbmQ7Ci0JaW50IGVycjsKLQlp bnQgaTsKLQotCWlmIChzaXplIDwgbW0tPmNodW5rX3NpemUpCi0JCXJldHVybiAtRUlOVkFMOwot Ci0JaWYgKCFJU19BTElHTkVEKHNpemUgfCBzdGFydCwgbW0tPmNodW5rX3NpemUpKQotCQlyZXR1 cm4gLUVJTlZBTDsKLQotCWlmIChyYW5nZV9vdmVyZmxvd3Moc3RhcnQsIHNpemUsIG1tLT5zaXpl KSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbW0tPm5fcm9vdHM7ICsr aSkKLQkJbGlzdF9hZGRfdGFpbCgmbW0tPnJvb3RzW2ldLT50bXBfbGluaywgJmRmcyk7Ci0KLQll bmQgPSBzdGFydCArIHNpemUgLSAxOwotCi0JZG8gewotCQl1NjQgYmxvY2tfc3RhcnQ7Ci0JCXU2 NCBibG9ja19lbmQ7Ci0KLQkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmRmcywK LQkJCQkJCSBzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jaywKLQkJCQkJCSB0bXBfbGluayk7Ci0JCWlm ICghYmxvY2spCi0JCQlicmVhazsKLQotCQlsaXN0X2RlbCgmYmxvY2stPnRtcF9saW5rKTsKLQot CQlibG9ja19zdGFydCA9IGk5MTVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsKLQkJYmxvY2tf ZW5kID0gYmxvY2tfc3RhcnQgKyBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSAtIDE7 Ci0KLQkJaWYgKCFvdmVybGFwcyhzdGFydCwgZW5kLCBibG9ja19zdGFydCwgYmxvY2tfZW5kKSkK LQkJCWNvbnRpbnVlOwotCi0JCWlmIChpOTE1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9j aykpIHsKLQkJCWVyciA9IC1FTk9TUEM7Ci0JCQlnb3RvIGVycl9mcmVlOwotCQl9Ci0KLQkJaWYg KGNvbnRhaW5zKHN0YXJ0LCBlbmQsIGJsb2NrX3N0YXJ0LCBibG9ja19lbmQpKSB7Ci0JCQlpZiAo IWk5MTVfYnVkZHlfYmxvY2tfaXNfZnJlZShibG9jaykpIHsKLQkJCQllcnIgPSAtRU5PU1BDOwot CQkJCWdvdG8gZXJyX2ZyZWU7Ci0JCQl9Ci0KLQkJCW1hcmtfYWxsb2NhdGVkKGJsb2NrKTsKLQkJ CWxpc3RfYWRkX3RhaWwoJmJsb2NrLT5saW5rLCAmYWxsb2NhdGVkKTsKLQkJCWNvbnRpbnVlOwot CQl9Ci0KLQkJaWYgKCFpOTE1X2J1ZGR5X2Jsb2NrX2lzX3NwbGl0KGJsb2NrKSkgewotCQkJZXJy ID0gc3BsaXRfYmxvY2sobW0sIGJsb2NrKTsKLQkJCWlmICh1bmxpa2VseShlcnIpKQotCQkJCWdv dG8gZXJyX3VuZG87Ci0JCX0KLQotCQlsaXN0X2FkZCgmYmxvY2stPnJpZ2h0LT50bXBfbGluaywg JmRmcyk7Ci0JCWxpc3RfYWRkKCZibG9jay0+bGVmdC0+dG1wX2xpbmssICZkZnMpOwotCX0gd2hp bGUgKDEpOwotCi0JbGlzdF9zcGxpY2VfdGFpbCgmYWxsb2NhdGVkLCBibG9ja3MpOwotCXJldHVy biAwOwotCi1lcnJfdW5kbzoKLQkvKgotCSAqIFdlIHJlYWxseSBkb24ndCB3YW50IHRvIGxlYXZl IGFyb3VuZCBhIGJ1bmNoIG9mIHNwbGl0IGJsb2Nrcywgc2luY2UKLQkgKiBiaWdnZXIgaXMgYmV0 dGVyLCBzbyBtYWtlIHN1cmUgd2UgbWVyZ2UgZXZlcnl0aGluZyBiYWNrIGJlZm9yZSB3ZQotCSAq IGZyZWUgdGhlIGFsbG9jYXRlZCBibG9ja3MuCi0JICovCi0JYnVkZHkgPSBnZXRfYnVkZHkoYmxv Y2spOwotCWlmIChidWRkeSAmJgotCSAgICAoaTkxNV9idWRkeV9ibG9ja19pc19mcmVlKGJsb2Nr KSAmJgotCSAgICAgaTkxNV9idWRkeV9ibG9ja19pc19mcmVlKGJ1ZGR5KSkpCi0JCV9faTkxNV9i dWRkeV9mcmVlKG1tLCBibG9jayk7Ci0KLWVycl9mcmVlOgotCWk5MTVfYnVkZHlfZnJlZV9saXN0 KG1tLCAmYWxsb2NhdGVkKTsKLQlyZXR1cm4gZXJyOwotfQotCi0jaWYgSVNfRU5BQkxFRChDT05G SUdfRFJNX0k5MTVfU0VMRlRFU1QpCi0jaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfYnVkZHkuYyIK LSNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9idWRkeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA5Y2U1MjAwZjQwMDEuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2J1ZGR5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwotLyoKLSAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCi0gKi8KLQotI2lmbmRlZiBfX0k5MTVfQlVERFlfSF9fCi0jZGVmaW5l IF9fSTkxNV9CVUREWV9IX18KLQotI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgotI2luY2x1ZGUg PGxpbnV4L2xpc3QuaD4KLQotc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgewotI2RlZmluZSBJOTE1 X0JVRERZX0hFQURFUl9PRkZTRVQgR0VOTUFTS19VTEwoNjMsIDEyKQotI2RlZmluZSBJOTE1X0JV RERZX0hFQURFUl9TVEFURSAgR0VOTUFTS19VTEwoMTEsIDEwKQotI2RlZmluZSAgIEk5MTVfQlVE RFlfQUxMT0NBVEVECSAgICgxIDw8IDEwKQotI2RlZmluZSAgIEk5MTVfQlVERFlfRlJFRQkgICAo MiA8PCAxMCkKLSNkZWZpbmUgICBJOTE1X0JVRERZX1NQTElUCSAgICgzIDw8IDEwKQotLyogRnJl ZSB0byBiZSB1c2VkLCBpZiBuZWVkZWQgaW4gdGhlIGZ1dHVyZSAqLwotI2RlZmluZSBJOTE1X0JV RERZX0hFQURFUl9VTlVTRUQgR0VOTUFTS19VTEwoOSwgNikKLSNkZWZpbmUgSTkxNV9CVUREWV9I RUFERVJfT1JERVIgIEdFTk1BU0tfVUxMKDUsIDApCi0JdTY0IGhlYWRlcjsKLQotCXN0cnVjdCBp OTE1X2J1ZGR5X2Jsb2NrICpsZWZ0OwotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpyaWdodDsK LQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqcGFyZW50OwotCi0Jdm9pZCAqcHJpdmF0ZTsgLyog b3duZWQgYnkgY3JlYXRvciAqLwotCi0JLyoKLQkgKiBXaGlsZSB0aGUgYmxvY2sgaXMgYWxsb2Nh dGVkIGJ5IHRoZSB1c2VyIHRocm91Z2ggaTkxNV9idWRkeV9hbGxvYyosCi0JICogdGhlIHVzZXIg aGFzIG93bmVyc2hpcCBvZiB0aGUgbGluaywgZm9yIGV4YW1wbGUgdG8gbWFpbnRhaW4gd2l0aGlu Ci0JICogYSBsaXN0LCBpZiBzbyBkZXNpcmVkLiBBcyBzb29uIGFzIHRoZSBibG9jayBpcyBmcmVl ZCB3aXRoCi0JICogaTkxNV9idWRkeV9mcmVlKiBvd25lcnNoaXAgaXMgZ2l2ZW4gYmFjayB0byB0 aGUgbW0uCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCBsaW5rOwotCXN0cnVjdCBsaXN0X2hlYWQg dG1wX2xpbms7Ci19OwotCi0vKiBPcmRlci16ZXJvIG11c3QgYmUgYXQgbGVhc3QgUEFHRV9TSVpF ICovCi0jZGVmaW5lIEk5MTVfQlVERFlfTUFYX09SREVSICg2MyAtIFBBR0VfU0hJRlQpCi0KLS8q Ci0gKiBCaW5hcnkgQnVkZHkgU3lzdGVtLgotICoKLSAqIExvY2tpbmcgc2hvdWxkIGJlIGhhbmRs ZWQgYnkgdGhlIHVzZXIsIGEgc2ltcGxlIG11dGV4IGFyb3VuZAotICogaTkxNV9idWRkeV9hbGxv YyogYW5kIGk5MTVfYnVkZHlfZnJlZSogc2hvdWxkIHN1ZmZpY2UuCi0gKi8KLXN0cnVjdCBpOTE1 X2J1ZGR5X21tIHsKLQkvKiBNYWludGFpbiBhIGZyZWUgbGlzdCBmb3IgZWFjaCBvcmRlci4gKi8K LQlzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlX2xpc3Q7Ci0KLQkvKgotCSAqIE1haW50YWluIGV4cGxp Y2l0IGJpbmFyeSB0cmVlKHMpIHRvIHRyYWNrIHRoZSBhbGxvY2F0aW9uIG9mIHRoZQotCSAqIGFk ZHJlc3Mgc3BhY2UuIFRoaXMgZ2l2ZXMgdXMgYSBzaW1wbGUgd2F5IG9mIGZpbmRpbmcgYSBidWRk eSBibG9jawotCSAqIGFuZCBwZXJmb3JtaW5nIHRoZSBwb3RlbnRpYWxseSByZWN1cnNpdmUgbWVy Z2Ugc3RlcCB3aGVuIGZyZWVpbmcgYQotCSAqIGJsb2NrLiAgTm9kZXMgYXJlIGVpdGhlciBhbGxv Y2F0ZWQgb3IgZnJlZSwgaW4gd2hpY2ggY2FzZSB0aGV5IHdpbGwKLQkgKiBhbHNvIGV4aXN0IG9u IHRoZSByZXNwZWN0aXZlIGZyZWUgbGlzdC4KLQkgKi8KLQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9j ayAqKnJvb3RzOwotCi0JLyoKLQkgKiBBbnl0aGluZyBmcm9tIGhlcmUgaXMgcHVibGljLCBhbmQg cmVtYWlucyBzdGF0aWMgZm9yIHRoZSBsaWZldGltZSBvZgotCSAqIHRoZSBtbS4gRXZlcnl0aGlu ZyBhYm92ZSBpcyBjb25zaWRlcmVkIGRvLW5vdC10b3VjaC4KLQkgKi8KLQl1bnNpZ25lZCBpbnQg bl9yb290czsKLQl1bnNpZ25lZCBpbnQgbWF4X29yZGVyOwotCi0JLyogTXVzdCBiZSBhdCBsZWFz dCBQQUdFX1NJWkUgKi8KLQl1NjQgY2h1bmtfc2l6ZTsKLQl1NjQgc2l6ZTsKLX07Ci0KLXN0YXRp YyBpbmxpbmUgdTY0Ci1pOTE1X2J1ZGR5X2Jsb2NrX29mZnNldChzdHJ1Y3QgaTkxNV9idWRkeV9i bG9jayAqYmxvY2spCi17Ci0JcmV0dXJuIGJsb2NrLT5oZWFkZXIgJiBJOTE1X0JVRERZX0hFQURF Ul9PRkZTRVQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Ci1pOTE1X2J1ZGR5X2Js b2NrX29yZGVyKHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykKLXsKLQlyZXR1cm4gYmxv Y2stPmhlYWRlciAmIEk5MTVfQlVERFlfSEVBREVSX09SREVSOwotfQotCi1zdGF0aWMgaW5saW5l IHVuc2lnbmVkIGludAotaTkxNV9idWRkeV9ibG9ja19zdGF0ZShzdHJ1Y3QgaTkxNV9idWRkeV9i bG9jayAqYmxvY2spCi17Ci0JcmV0dXJuIGJsb2NrLT5oZWFkZXIgJiBJOTE1X0JVRERZX0hFQURF Ul9TVEFURTsKLX0KLQotc3RhdGljIGlubGluZSBib29sCi1pOTE1X2J1ZGR5X2Jsb2NrX2lzX2Fs bG9jYXRlZChzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2spCi17Ci0JcmV0dXJuIGk5MTVf YnVkZHlfYmxvY2tfc3RhdGUoYmxvY2spID09IEk5MTVfQlVERFlfQUxMT0NBVEVEOwotfQotCi1z dGF0aWMgaW5saW5lIGJvb2wKLWk5MTVfYnVkZHlfYmxvY2tfaXNfZnJlZShzdHJ1Y3QgaTkxNV9i dWRkeV9ibG9jayAqYmxvY2spCi17Ci0JcmV0dXJuIGk5MTVfYnVkZHlfYmxvY2tfc3RhdGUoYmxv Y2spID09IEk5MTVfQlVERFlfRlJFRTsKLX0KLQotc3RhdGljIGlubGluZSBib29sCi1pOTE1X2J1 ZGR5X2Jsb2NrX2lzX3NwbGl0KHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykKLXsKLQly ZXR1cm4gaTkxNV9idWRkeV9ibG9ja19zdGF0ZShibG9jaykgPT0gSTkxNV9CVUREWV9TUExJVDsK LX0KLQotc3RhdGljIGlubGluZSB1NjQKLWk5MTVfYnVkZHlfYmxvY2tfc2l6ZShzdHJ1Y3QgaTkx NV9idWRkeV9tbSAqbW0sCi0JCSAgICAgIHN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykK LXsKLQlyZXR1cm4gbW0tPmNodW5rX3NpemUgPDwgaTkxNV9idWRkeV9ibG9ja19vcmRlcihibG9j ayk7Ci19Ci0KLWludCBpOTE1X2J1ZGR5X2luaXQoc3RydWN0IGk5MTVfYnVkZHlfbW0gKm1tLCB1 NjQgc2l6ZSwgdTY0IGNodW5rX3NpemUpOwotCi12b2lkIGk5MTVfYnVkZHlfZmluaShzdHJ1Y3Qg aTkxNV9idWRkeV9tbSAqbW0pOwotCi1zdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqCi1pOTE1X2J1 ZGR5X2FsbG9jKHN0cnVjdCBpOTE1X2J1ZGR5X21tICptbSwgdW5zaWduZWQgaW50IG9yZGVyKTsK LQotaW50IGk5MTVfYnVkZHlfYWxsb2NfcmFuZ2Uoc3RydWN0IGk5MTVfYnVkZHlfbW0gKm1tLAot CQkJICAgc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzLAotCQkJICAgdTY0IHN0YXJ0LCB1NjQgc2l6 ZSk7Ci0KLXZvaWQgaTkxNV9idWRkeV9mcmVlKHN0cnVjdCBpOTE1X2J1ZGR5X21tICptbSwgc3Ry dWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrKTsKLQotdm9pZCBpOTE1X2J1ZGR5X2ZyZWVfbGlz dChzdHJ1Y3QgaTkxNV9idWRkeV9tbSAqbW0sIHN0cnVjdCBsaXN0X2hlYWQgKm9iamVjdHMpOwot Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDUxMThkYzgzODZiMi4uYzg5ZWQw OWI4ZDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNs dWRlICJpbnRlbF9ndnQuaCIKICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgiCiAjaW5j bHVkZSAiaW50ZWxfcG0uaCIKKyNpbmNsdWRlICJpbnRlbF9yZWdpb25fdHRtLmgiCiAjaW5jbHVk ZSAiaW50ZWxfc2lkZWJhbmQuaCIKICNpbmNsdWRlICJ2bHZfc3VzcGVuZC5oIgogCkBAIC0zMzUs NiArMzM2LDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfZWFybHlfcHJvYmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycl93b3Jr cXVldWVzOwogCisJcmV0ID0gaW50ZWxfcmVnaW9uX3R0bV9kZXZpY2VfaW5pdChkZXZfcHJpdik7 CisJaWYgKHJldCkKKwkJZ290byBlcnJfdHRtOworCiAJaW50ZWxfd29wY21faW5pdF9lYXJseSgm ZGV2X3ByaXYtPndvcGNtKTsKIAogCWludGVsX2d0X2luaXRfZWFybHkoJmRldl9wcml2LT5ndCwg ZGV2X3ByaXYpOwpAQCAtMzU5LDYgKzM2NCw4IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfZWFy bHlfcHJvYmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogZXJyX2dlbToKIAlp OTE1X2dlbV9jbGVhbnVwX2Vhcmx5KGRldl9wcml2KTsKIAlpbnRlbF9ndF9kcml2ZXJfbGF0ZV9y ZWxlYXNlKCZkZXZfcHJpdi0+Z3QpOworCWludGVsX3JlZ2lvbl90dG1fZGV2aWNlX2ZpbmkoZGV2 X3ByaXYpOworZXJyX3R0bToKIAl2bHZfc3VzcGVuZF9jbGVhbnVwKGRldl9wcml2KTsKIGVycl93 b3JrcXVldWVzOgogCWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKQEAgLTM3Niw2 ICszODMsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9sYXRlX3JlbGVhc2Uoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX3Bvd2VyX2RvbWFpbnNfY2xlYW51cChk ZXZfcHJpdik7CiAJaTkxNV9nZW1fY2xlYW51cF9lYXJseShkZXZfcHJpdik7CiAJaW50ZWxfZ3Rf ZHJpdmVyX2xhdGVfcmVsZWFzZSgmZGV2X3ByaXYtPmd0KTsKKwlpbnRlbF9yZWdpb25fdHRtX2Rl dmljZV9maW5pKGRldl9wcml2KTsKIAl2bHZfc3VzcGVuZF9jbGVhbnVwKGRldl9wcml2KTsKIAlp OTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDEyODE5OGU4YjRkMC4uMTI3NmEyZjYwNzQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgogI2luY2x1 ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfbWVpX2hkY3BfaW50 ZXJmYWNlLmg+CisjaW5jbHVkZSA8ZHJtL3R0bS90dG1fZGV2aWNlLmg+CiAKICNpbmNsdWRlICJp OTE1X3BhcmFtcy5oIgogI2luY2x1ZGUgImk5MTVfcmVnLmgiCkBAIC0xMTY2LDYgKzExNjcsOSBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJLyogTXV0ZXggdG8gcHJvdGVjdCB0aGUgYWJv dmUgaGRjcCBjb21wb25lbnQgcmVsYXRlZCB2YWx1ZXMuICovCiAJc3RydWN0IG11dGV4IGhkY3Bf Y29tcF9tdXRleDsKIAorCS8qIFRoZSBUVE0gZGV2aWNlIHN0cnVjdHVyZS4gKi8KKwlzdHJ1Y3Qg dHRtX2RldmljZSBiZGV2OworCiAJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVjdCBpOTE1X3Nl bGZ0ZXN0X3N0YXNoIHNlbGZ0ZXN0OykKIAogCS8qCkBAIC0xNzUxLDcgKzE3NTUsOCBAQCB2b2lk IGk5MTVfZ2VtX2NsZWFudXBfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKIAotc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKmk5MTVfZ2Vt X3NobWVtX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKK3N0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICppOTE1X2dlbV9zaG1lbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKKwkJCQkJCSB1MTYgdHlwZSwgdTE2IGluc3RhbmNlKTsKIAogc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfZ2VtX2RyYWluX2ZyZWVkX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBkMDAxOGM1Zjg4YmQu LjE4MGY2ZTkxMDdkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0xMTA5LDYgKzExMDks NyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJfQogCiAJaTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhkZXZfcHJpdik7CisKIAlyZXR1 cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2Jh bHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jCmluZGV4IDNhYTIxMzY4 NDI5My4uNzdmMTkxMWM0NjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dsb2JhbHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuYwpAQCAt ODcsNyArODcsNiBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2xvYmFsc19jbGVhbnVwKHZvaWQpCiAK IHN0YXRpYyBfX2luaXRjb25zdCBpbnQgKCogY29uc3QgaW5pdGZuW10pKHZvaWQpID0gewogCWk5 MTVfZ2xvYmFsX2FjdGl2ZV9pbml0LAotCWk5MTVfZ2xvYmFsX2J1ZGR5X2luaXQsCiAJaTkxNV9n bG9iYWxfY29udGV4dF9pbml0LAogCWk5MTVfZ2xvYmFsX2dlbV9jb250ZXh0X2luaXQsCiAJaTkx NV9nbG9iYWxfb2JqZWN0c19pbml0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nbG9iYWxzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuaAppbmRl eCBiMmY1Y2Q5YjliMWEuLjJkMTk5ZjQxMWE0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nbG9iYWxzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nbG9i YWxzLmgKQEAgLTI3LDcgKzI3LDYgQEAgdm9pZCBpOTE1X2dsb2JhbHNfZXhpdCh2b2lkKTsKIAog LyogY29uc3RydWN0b3JzICovCiBpbnQgaTkxNV9nbG9iYWxfYWN0aXZlX2luaXQodm9pZCk7Ci1p bnQgaTkxNV9nbG9iYWxfYnVkZHlfaW5pdCh2b2lkKTsKIGludCBpOTE1X2dsb2JhbF9jb250ZXh0 X2luaXQodm9pZCk7CiBpbnQgaTkxNV9nbG9iYWxfZ2VtX2NvbnRleHRfaW5pdCh2b2lkKTsKIGlu dCBpOTE1X2dsb2JhbF9vYmplY3RzX2luaXQodm9pZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjYXR0ZXJsaXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3NjYXR0ZXJsaXN0LmMKaW5kZXggY2M2YjM4NDZhOGM3Li42OWU5ZTZjMzEzNWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NhdHRlcmxpc3QuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3NjYXR0ZXJsaXN0LmMKQEAgLTYsNiArNiwxMCBAQAogCiAjaW5j bHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgogCisjaW5jbHVkZSA8ZHJtL2RybV9tbS5oPgorCisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorCiBib29sIGk5MTVfc2dfdHJpbShzdHJ1Y3Qgc2dfdGFi bGUgKm9yaWdfc3QpCiB7CiAJc3RydWN0IHNnX3RhYmxlIG5ld19zdDsKQEAgLTM0LDYgKzM4LDcy IEBAIGJvb2wgaTkxNV9zZ190cmltKHN0cnVjdCBzZ190YWJsZSAqb3JpZ19zdCkKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorLyoqCisgKiBpOTE1X3NnX2Zyb21fbW1fbm9kZSAtIENyZWF0ZSBhbiBzZ190 YWJsZSBmcm9tIGEgc3RydWN0IGRybV9tbV9ub2RlCisgKiBAbm9kZTogVGhlIGRybV9tbV9ub2Rl LgorICogQHJlZ2lvbl9zdGFydDogQW4gb2Zmc2V0IHRvIGFkZCB0byB0aGUgZG1hIGFkZHJlc3Nl cyBvZiB0aGUgc2cgbGlzdC4KKyAqCisgKiBDcmVhdGUgYSBzdHJ1Y3Qgc2dfdGFibGUsIGluaXRp YWxpemluZyBpdCBmcm9tIGEgc3RydWN0IGRybV9tbV9ub2RlLAorICogdGFraW5nIGEgbWF4aW11 bSBzZWdtZW50IGxlbmd0aCBpbnRvIGFjY291bnQsIHNwbGl0dGluZyBpbnRvIHNlZ21lbnRzCisg KiBpZiBuZWNlc3NhcnkuCisgKgorICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gYSBrbWFsbG9jZWQg c3RydWN0IHNnX3RhYmxlIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlCisgKiBlcnJvciBjb2RlIGNhc3Qg dG8gYW4gZXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgorICovCitzdHJ1Y3Qgc2dfdGFibGUgKmk5 MTVfc2dfZnJvbV9tbV9ub2RlKGNvbnN0IHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKKwkJCQkg ICAgICB1NjQgcmVnaW9uX3N0YXJ0KQoreworCWNvbnN0IHU2NCBtYXhfc2VnbWVudCA9IFNaXzFH OyAvKiBEbyB3ZSBoYXZlIGEgbGltaXQgb24gdGhpcz8gKi8KKwl1NjQgc2VnbWVudF9wYWdlcyA9 IG1heF9zZWdtZW50ID4+IFBBR0VfU0hJRlQ7CisJdTY0IGJsb2NrX3NpemUsIG9mZnNldCwgcHJl dl9lbmQ7CisJc3RydWN0IHNnX3RhYmxlICpzdDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwor CisJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0KQorCQly ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWlmIChzZ19hbGxvY190YWJsZShzdCwgRElWX1JP VU5EX1VQKG5vZGUtPnNpemUsIHNlZ21lbnRfcGFnZXMpLAorCQkJICAgR0ZQX0tFUk5FTCkpIHsK KwkJa2ZyZWUoc3QpOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKKwlzZyA9IHN0 LT5zZ2w7CisJc3QtPm5lbnRzID0gMDsKKwlwcmV2X2VuZCA9IChyZXNvdXJjZV9zaXplX3QpLTE7 CisJYmxvY2tfc2l6ZSA9IG5vZGUtPnNpemUgPDwgUEFHRV9TSElGVDsKKwlvZmZzZXQgPSBub2Rl LT5zdGFydCA8PCBQQUdFX1NISUZUOworCisJd2hpbGUgKGJsb2NrX3NpemUpIHsKKwkJdTY0IGxl bjsKKworCQlpZiAob2Zmc2V0ICE9IHByZXZfZW5kIHx8IHNnLT5sZW5ndGggPj0gbWF4X3NlZ21l bnQpIHsKKwkJCWlmIChzdC0+bmVudHMpCisJCQkJc2cgPSBfX3NnX25leHQoc2cpOworCisJCQlz Z19kbWFfYWRkcmVzcyhzZykgPSByZWdpb25fc3RhcnQgKyBvZmZzZXQ7CisJCQlzZ19kbWFfbGVu KHNnKSA9IDA7CisJCQlzZy0+bGVuZ3RoID0gMDsKKwkJCXN0LT5uZW50cysrOworCQl9CisKKwkJ bGVuID0gbWluKGJsb2NrX3NpemUsIG1heF9zZWdtZW50IC0gc2ctPmxlbmd0aCk7CisJCXNnLT5s ZW5ndGggKz0gbGVuOworCQlzZ19kbWFfbGVuKHNnKSArPSBsZW47CisKKwkJb2Zmc2V0ICs9IGxl bjsKKwkJYmxvY2tfc2l6ZSAtPSBsZW47CisKKwkJcHJldl9lbmQgPSBvZmZzZXQ7CisJfQorCisJ c2dfbWFya19lbmQoc2cpOworCWk5MTVfc2dfdHJpbShzdCk7CisKKwlyZXR1cm4gc3Q7Cit9CisK ICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxm dGVzdHMvc2NhdHRlcmxpc3QuYyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zY2F0dGVybGlzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2F0 dGVybGlzdC5oCmluZGV4IDljYjI2YTIyNDAzNC4uNzVjMzIwMDIwNzgwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjYXR0ZXJsaXN0LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zY2F0dGVybGlzdC5oCkBAIC0xMyw2ICsxMyw4IEBACiAKICNpbmNsdWRl ICJpOTE1X2dlbS5oIgogCitzdHJ1Y3QgZHJtX21tX25vZGU7CisKIC8qCiAgKiBPcHRpbWlzZWQg U0dMIGl0ZXJhdG9yIGZvciBHRU0gb2JqZWN0cwogICovCkBAIC0xMzMsNCArMTM1LDM3IEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGk5MTVfc2dfc2VnbWVudF9zaXplKHZvaWQpCiAKIGJv b2wgaTkxNV9zZ190cmltKHN0cnVjdCBzZ190YWJsZSAqb3JpZ19zdCk7CiAKKy8qKgorICogaTkx NV9zZ19kbWFfcGFnZV9zaXplcyAtIENhbGN1bGF0ZSBwYWdlIHNpemVzIGZyb20gYSBzY2F0dGVy bGlzdAorICogQHNnOiBUaGUgc2NhdHRlcmxpc3QgZnJvbSB3aGljaCB0byBjYWxjdWxhdGUgcGFn ZSBzaXplcworICoKKyAqIFJldHVybjogYSB2YWx1ZSB3aXRoIGJpdHMgc2V0cyBmb3IgcmVsZXZh bnQgcGFnZSBzaXplcy4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zZ19k bWFfcGFnZV9zaXplcyhzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnKQoreworCXVuc2lnbmVkIGludCBw YWdlX3NpemVzOworCisJcGFnZV9zaXplcyA9IDA7CisJd2hpbGUgKHNnKSB7CisJCUdFTV9CVUdf T04oc2ctPm9mZnNldCk7CisJCUdFTV9CVUdfT04oIUlTX0FMSUdORUQoc2ctPmRtYV9sZW5ndGgs IFBBR0VfU0laRSkpOworCQlwYWdlX3NpemVzIHw9IHNnLT5kbWFfbGVuZ3RoOworCQlzZyA9IF9f c2dfbmV4dChzZyk7CisJfQorCisJLyoKKwkgKiBJcyB0aGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0 IGJ1aWxkaW5nIGxhcmdlIEdQVSBwYWdlcyBmcm9tCisJICogZXZlbiBsYXJnZXIgc2VnbWVudHM/ CisJICovCisKKwlpZiAocGFnZV9zaXplcyA+IFNaXzY0SykKKwkJcGFnZV9zaXplcyB8PSBTWl82 NEs7CisJaWYgKHBhZ2Vfc2l6ZXMgPiBTWl8yTSkKKwkJcGFnZV9zaXplcyB8PSBTWl8yTTsKKwor CXJldHVybiBwYWdlX3NpemVzOworfQorCitzdHJ1Y3Qgc2dfdGFibGUgKmk5MTVfc2dfZnJvbV9t bV9ub2RlKGNvbnN0IHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKKwkJCQkgICAgICB1NjQgcmVn aW9uX3N0YXJ0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3Jl Z2lvbi5jCmluZGV4IGQ5OGU4YjgxZDMyMi4uNDA5MmNjOTg3Njc5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCkBAIC0yOCw2ICsyOCwxMSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHsKIAl9LAogfTsKIAorc3RydWN0IGludGVsX3JlZ2lvbl9yZXNlcnZlIHsK KwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CisJdm9pZCAqbm9kZTsKK307CisKIHN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICoKIGludGVsX21lbW9yeV9yZWdpb25fbG9va3VwKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCQkJICAgdTE2IGNsYXNzLCB1MTYgaW5zdGFuY2UpCkBAIC01 OCwxNDYgKzYzLDYxIEBAIGludGVsX21lbW9yeV9yZWdpb25fYnlfdHlwZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHU2NAotaW50ZWxf bWVtb3J5X3JlZ2lvbl9mcmVlX3BhZ2VzKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0s Ci0JCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzKQorLyoqCisgKiBpbnRlbF9tZW1v cnlfcmVnaW9uX3VucmVzZXJ2ZSAtIFVucmVzZXJ2ZSBhbGwgcHJldmlvdXNseSByZXNlcnZlZAor ICogcmFuZ2VzCisgKiBAbWVtOiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIHJlc2VydmVkIHJh bmdlcy4KKyAqLwordm9pZCBpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2ZShzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogewotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9j aywgKm9uOwotCXU2NCBzaXplID0gMDsKKwlzdHJ1Y3QgaW50ZWxfcmVnaW9uX3Jlc2VydmUgKnJl c2VydmUsICpuZXh0OwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGJsb2NrLCBvbiwgYmxv Y2tzLCBsaW5rKSB7Ci0JCXNpemUgKz0gaTkxNV9idWRkeV9ibG9ja19zaXplKCZtZW0tPm1tLCBi bG9jayk7Ci0JCWk5MTVfYnVkZHlfZnJlZSgmbWVtLT5tbSwgYmxvY2spOwotCX0KLQlJTklUX0xJ U1RfSEVBRChibG9ja3MpOworCWlmICghbWVtLT5wcml2X29wcyB8fCAhbWVtLT5wcml2X29wcy0+ ZnJlZSkKKwkJcmV0dXJuOwogCi0JcmV0dXJuIHNpemU7Ci19Ci0KLXZvaWQKLV9faW50ZWxfbWVt b3J5X3JlZ2lvbl9wdXRfcGFnZXNfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1l bSwKLQkJCQkgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MpCi17CiAJbXV0ZXhfbG9jaygm bWVtLT5tbV9sb2NrKTsKLQltZW0tPmF2YWlsICs9IGludGVsX21lbW9yeV9yZWdpb25fZnJlZV9w YWdlcyhtZW0sIGJsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZtZW0tPm1tX2xvY2spOwotfQotCi12 b2lkCi1fX2ludGVsX21lbW9yeV9yZWdpb25fcHV0X2Jsb2NrX2J1ZGR5KHN0cnVjdCBpOTE1X2J1 ZGR5X2Jsb2NrICpibG9jaykKLXsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGJsb2NrczsKLQotCUlOSVRf TElTVF9IRUFEKCZibG9ja3MpOwotCWxpc3RfYWRkKCZibG9jay0+bGluaywgJmJsb2Nrcyk7Ci0J X19pbnRlbF9tZW1vcnlfcmVnaW9uX3B1dF9wYWdlc19idWRkeShibG9jay0+cHJpdmF0ZSwgJmJs b2Nrcyk7Ci19Ci0KLWludAotX19pbnRlbF9tZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRkeShz dHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJCSAgICAgIHJlc291cmNlX3NpemVf dCBzaXplLAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywKLQkJCQkgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpibG9ja3MpCi17Ci0JdW5zaWduZWQgaW50IG1pbl9vcmRlciA9IDA7Ci0JdW5z aWduZWQgbG9uZyBuX3BhZ2VzOwotCi0JR0VNX0JVR19PTighSVNfQUxJR05FRChzaXplLCBtZW0t Pm1tLmNodW5rX3NpemUpKTsKLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KGJsb2NrcykpOwotCi0J aWYgKGZsYWdzICYgSTkxNV9BTExPQ19NSU5fUEFHRV9TSVpFKSB7Ci0JCW1pbl9vcmRlciA9IGls b2cyKG1lbS0+bWluX3BhZ2Vfc2l6ZSkgLQotCQkJICAgIGlsb2cyKG1lbS0+bW0uY2h1bmtfc2l6 ZSk7Ci0JfQotCi0JaWYgKGZsYWdzICYgSTkxNV9BTExPQ19DT05USUdVT1VTKSB7Ci0JCXNpemUg PSByb3VuZHVwX3Bvd19vZl90d28oc2l6ZSk7Ci0JCW1pbl9vcmRlciA9IGlsb2cyKHNpemUpIC0g aWxvZzIobWVtLT5tbS5jaHVua19zaXplKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVz ZXJ2ZSwgbmV4dCwgJm1lbS0+cmVzZXJ2ZWQsIGxpbmspIHsKKwkJbGlzdF9kZWwoJnJlc2VydmUt PmxpbmspOworCQltZW0tPnByaXZfb3BzLT5mcmVlKG1lbSwgcmVzZXJ2ZS0+bm9kZSk7CisJCWtm cmVlKHJlc2VydmUpOwogCX0KLQotCWlmIChzaXplID4gbWVtLT5tbS5zaXplKQotCQlyZXR1cm4g LUUyQklHOwotCi0Jbl9wYWdlcyA9IHNpemUgPj4gaWxvZzIobWVtLT5tbS5jaHVua19zaXplKTsK LQotCW11dGV4X2xvY2soJm1lbS0+bW1fbG9jayk7Ci0KLQlkbyB7Ci0JCXN0cnVjdCBpOTE1X2J1 ZGR5X2Jsb2NrICpibG9jazsKLQkJdW5zaWduZWQgaW50IG9yZGVyOwotCi0JCW9yZGVyID0gZmxz KG5fcGFnZXMpIC0gMTsKLQkJR0VNX0JVR19PTihvcmRlciA+IG1lbS0+bW0ubWF4X29yZGVyKTsK LQkJR0VNX0JVR19PTihvcmRlciA8IG1pbl9vcmRlcik7Ci0KLQkJZG8gewotCQkJYmxvY2sgPSBp OTE1X2J1ZGR5X2FsbG9jKCZtZW0tPm1tLCBvcmRlcik7Ci0JCQlpZiAoIUlTX0VSUihibG9jaykp Ci0JCQkJYnJlYWs7Ci0KLQkJCWlmIChvcmRlci0tID09IG1pbl9vcmRlcikKLQkJCQlnb3RvIGVy cl9mcmVlX2Jsb2NrczsKLQkJfSB3aGlsZSAoMSk7Ci0KLQkJbl9wYWdlcyAtPSBCSVQob3JkZXIp OwotCi0JCWJsb2NrLT5wcml2YXRlID0gbWVtOwotCQlsaXN0X2FkZF90YWlsKCZibG9jay0+bGlu aywgYmxvY2tzKTsKLQotCQlpZiAoIW5fcGFnZXMpCi0JCQlicmVhazsKLQl9IHdoaWxlICgxKTsK LQotCW1lbS0+YXZhaWwgLT0gc2l6ZTsKIAltdXRleF91bmxvY2soJm1lbS0+bW1fbG9jayk7Ci0J cmV0dXJuIDA7Ci0KLWVycl9mcmVlX2Jsb2NrczoKLQlpbnRlbF9tZW1vcnlfcmVnaW9uX2ZyZWVf cGFnZXMobWVtLCBibG9ja3MpOwotCW11dGV4X3VubG9jaygmbWVtLT5tbV9sb2NrKTsKLQlyZXR1 cm4gLUVOWElPOwogfQogCi1zdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqCi1fX2ludGVsX21lbW9y eV9yZWdpb25fZ2V0X2Jsb2NrX2J1ZGR5KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0s Ci0JCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCi0JCQkJICAgICAgdW5zaWduZWQgaW50 IGZsYWdzKQorLyoqCisgKiBpbnRlbF9tZW1vcnlfcmVnaW9uX3Jlc2VydmUgLSBSZXNlcnZlIGEg bWVtb3J5IHJhbmdlCisgKiBAbWVtOiBUaGUgcmVnaW9uIGZvciB3aGljaCB3ZSB3YW50IHRvIHJl c2VydmUgYSByYW5nZS4KKyAqIEBvZmZzZXQ6IFN0YXJ0IG9mIHRoZSByYW5nZSB0byByZXNlcnZl LgorICogQHNpemU6IFRoZSBzaXplIG9mIHRoZSByYW5nZSB0byByZXNlcnZlLgorICoKKyAqIFJl dHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8K K2ludCBpbnRlbF9tZW1vcnlfcmVnaW9uX3Jlc2VydmUoc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKm1lbSwKKwkJCQlyZXNvdXJjZV9zaXplX3Qgb2Zmc2V0LAorCQkJCXJlc291cmNlX3NpemVf dCBzaXplKQogewotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jazsKLQlMSVNUX0hFQUQo YmxvY2tzKTsKIAlpbnQgcmV0OworCXN0cnVjdCBpbnRlbF9yZWdpb25fcmVzZXJ2ZSAqcmVzZXJ2 ZTsKIAotCXJldCA9IF9faW50ZWxfbWVtb3J5X3JlZ2lvbl9nZXRfcGFnZXNfYnVkZHkobWVtLCBz aXplLCBmbGFncywgJmJsb2Nrcyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsK KwlpZiAoIW1lbS0+cHJpdl9vcHMgfHwgIW1lbS0+cHJpdl9vcHMtPnJlc2VydmUpCisJCXJldHVy biAtRUlOVkFMOwogCi0JYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5KCZibG9ja3MsIHR5cGVvZigq YmxvY2spLCBsaW5rKTsKLQlsaXN0X2RlbF9pbml0KCZibG9jay0+bGluayk7Ci0JcmV0dXJuIGJs b2NrOwotfQorCXJlc2VydmUgPSBremFsbG9jKHNpemVvZigqcmVzZXJ2ZSksIEdGUF9LRVJORUwp OworCWlmICghcmVzZXJ2ZSkKKwkJcmV0dXJuIC1FTk9NRU07CiAKLWludCBpbnRlbF9tZW1vcnlf cmVnaW9uX2luaXRfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKLXsKLQly ZXR1cm4gaTkxNV9idWRkeV9pbml0KCZtZW0tPm1tLCByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lv biksCi0JCQkgICAgICAgUEFHRV9TSVpFKTsKLX0KLQotdm9pZCBpbnRlbF9tZW1vcnlfcmVnaW9u X3JlbGVhc2VfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKLXsKLQlpOTE1 X2J1ZGR5X2ZyZWVfbGlzdCgmbWVtLT5tbSwgJm1lbS0+cmVzZXJ2ZWQpOwotCWk5MTVfYnVkZHlf ZmluaSgmbWVtLT5tbSk7Ci19Ci0KLWludCBpbnRlbF9tZW1vcnlfcmVnaW9uX3Jlc2VydmUoc3Ry dWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKLQkJCQl1NjQgb2Zmc2V0LCB1NjQgc2l6ZSkK LXsKLQlpbnQgcmV0OworCXJlc2VydmUtPm5vZGUgPSBtZW0tPnByaXZfb3BzLT5yZXNlcnZlKG1l bSwgb2Zmc2V0LCBzaXplKTsKKwlpZiAoSVNfRVJSKHJlc2VydmUtPm5vZGUpKSB7CisJCXJldCA9 IFBUUl9FUlIocmVzZXJ2ZS0+bm9kZSk7CisJCWtmcmVlKHJlc2VydmUpOworCQlyZXR1cm4gcmV0 OworCX0KIAogCW11dGV4X2xvY2soJm1lbS0+bW1fbG9jayk7Ci0JcmV0ID0gaTkxNV9idWRkeV9h bGxvY19yYW5nZSgmbWVtLT5tbSwgJm1lbS0+cmVzZXJ2ZWQsIG9mZnNldCwgc2l6ZSk7CisJbGlz dF9hZGRfdGFpbCgmcmVzZXJ2ZS0+bGluaywgJm1lbS0+cmVzZXJ2ZWQpOwogCW11dGV4X3VubG9j aygmbWVtLT5tbV9sb2NrKTsKIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICoKQEAgLTIwNiw2ICsxMjYsOCBAQCBpbnRlbF9tZW1vcnlf cmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCSAgIHJlc291 cmNlX3NpemVfdCBzaXplLAogCQkJICAgcmVzb3VyY2Vfc2l6ZV90IG1pbl9wYWdlX3NpemUsCiAJ CQkgICByZXNvdXJjZV9zaXplX3QgaW9fc3RhcnQsCisJCQkgICB1MTYgdHlwZSwKKwkJCSAgIHUx NiBpbnN0YW5jZSwKIAkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX29wcyAq b3BzKQogewogCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW07CkBAIC0yMjIsNiArMTQ0 LDggQEAgaW50ZWxfbWVtb3J5X3JlZ2lvbl9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJbWVtLT5vcHMgPSBvcHM7CiAJbWVtLT50b3RhbCA9IHNpemU7CiAJbWVtLT5hdmFp bCA9IG1lbS0+dG90YWw7CisJbWVtLT50eXBlID0gdHlwZTsKKwltZW0tPmluc3RhbmNlID0gaW5z dGFuY2U7CiAKIAltdXRleF9pbml0KCZtZW0tPm9iamVjdHMubG9jayk7CiAJSU5JVF9MSVNUX0hF QUQoJm1lbS0+b2JqZWN0cy5saXN0KTsKQEAgLTI1OSw2ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBf X2ludGVsX21lbW9yeV9yZWdpb25fZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtID0KIAkJY29udGFpbmVyX29mKGtyZWYsIHR5cGVvZigq bWVtKSwga3JlZik7CiAKKwlpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2ZShtZW0pOwogCWlm IChtZW0tPm9wcy0+cmVsZWFzZSkKIAkJbWVtLT5vcHMtPnJlbGVhc2UobWVtKTsKIApAQCAtMjk2 LDE1ICsyMjEsMTUgQEAgaW50IGludGVsX21lbW9yeV9yZWdpb25zX2h3X3Byb2JlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogCQlpbnN0YW5jZSA9IGludGVsX3JlZ2lvbl9tYXBbaV0u aW5zdGFuY2U7CiAJCXN3aXRjaCAodHlwZSkgewogCQljYXNlIElOVEVMX01FTU9SWV9TWVNURU06 Ci0JCQltZW0gPSBpOTE1X2dlbV9zaG1lbV9zZXR1cChpOTE1KTsKKwkJCW1lbSA9IGk5MTVfZ2Vt X3NobWVtX3NldHVwKGk5MTUsIHR5cGUsIGluc3RhbmNlKTsKIAkJCWJyZWFrOwogCQljYXNlIElO VEVMX01FTU9SWV9TVE9MRU5fTE9DQUw6Ci0JCQltZW0gPSBpOTE1X2dlbV9zdG9sZW5fbG1lbV9z ZXR1cChpOTE1KTsKKwkJCW1lbSA9IGk5MTVfZ2VtX3N0b2xlbl9sbWVtX3NldHVwKGk5MTUsIHR5 cGUsIGluc3RhbmNlKTsKIAkJCWlmICghSVNfRVJSKG1lbSkpCiAJCQkJaTkxNS0+bW0uc3RvbGVu X3JlZ2lvbiA9IG1lbTsKIAkJCWJyZWFrOwogCQljYXNlIElOVEVMX01FTU9SWV9TVE9MRU5fU1lT VEVNOgotCQkJbWVtID0gaTkxNV9nZW1fc3RvbGVuX3NtZW1fc2V0dXAoaTkxNSk7CisJCQltZW0g PSBpOTE1X2dlbV9zdG9sZW5fc21lbV9zZXR1cChpOTE1LCB0eXBlLCBpbnN0YW5jZSk7CiAJCQlp ZiAoIUlTX0VSUihtZW0pKQogCQkJCWk5MTUtPm1tLnN0b2xlbl9yZWdpb24gPSBtZW07CiAJCQli cmVhazsKQEAgLTMyMSw5ICsyNDYsNiBAQCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbnNfaHdfcHJv YmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCX0KIAogCQltZW0tPmlkID0gaTsK LQkJbWVtLT50eXBlID0gdHlwZTsKLQkJbWVtLT5pbnN0YW5jZSA9IGluc3RhbmNlOwotCiAJCWk5 MTUtPm1tLnJlZ2lvbnNbaV0gPSBtZW07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9tZW1vcnlfcmVnaW9uLmgKaW5kZXggZDI0Y2U1YTBiMzBiLi5lNjljZGUxM2RhZjIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmgKQEAgLTEzLDggKzEzLDYg QEAKICNpbmNsdWRlIDxkcm0vZHJtX21tLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAK LSNpbmNsdWRlICJpOTE1X2J1ZGR5LmgiCi0KIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwogc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7CiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbjsKQEAg LTI1LDYgKzIzLDcgQEAgZW51bSBpbnRlbF9tZW1vcnlfdHlwZSB7CiAJSU5URUxfTUVNT1JZX0xP Q0FMID0gSTkxNV9NRU1PUllfQ0xBU1NfREVWSUNFLAogCUlOVEVMX01FTU9SWV9TVE9MRU5fU1lT VEVNLAogCUlOVEVMX01FTU9SWV9TVE9MRU5fTE9DQUwsCisJSU5URUxfTUVNT1JZX01PQ0ssCiB9 OwogCiBlbnVtIGludGVsX3JlZ2lvbl9pZCB7CkBAIC01OSwxMCArNTgsMTkgQEAgc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb25fb3BzIHsKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFncyk7CiB9Owog CitzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9wcml2YXRlX29wcyB7CisJdm9pZCAqKCpyZXNl cnZlKShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkJIHJlc291cmNlX3NpemVf dCBvZmZzZXQsCisJCQkgcmVzb3VyY2Vfc2l6ZV90IHNpemUpOworCXZvaWQgKCpmcmVlKShzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkgICAgIHZvaWQgKm5vZGUpOworfTsKKwog c3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCiAJY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fb3BzICpvcHM7CisJY29u c3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fcHJpdmF0ZV9vcHMgKnByaXZfb3BzOwogCiAJ c3RydWN0IGlvX21hcHBpbmcgaW9tYXA7CiAJc3RydWN0IHJlc291cmNlIHJlZ2lvbjsKQEAgLTcw LDcgKzc4LDYgQEAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCS8qIEZvciBmYWtlIExN RU0gKi8KIAlzdHJ1Y3QgZHJtX21tX25vZGUgZmFrZV9tYXBwYWJsZTsKIAotCXN0cnVjdCBpOTE1 X2J1ZGR5X21tIG1tOwogCXN0cnVjdCBtdXRleCBtbV9sb2NrOwogCiAJc3RydWN0IGtyZWYga3Jl ZjsKQEAgLTk1LDM2ICsxMDIsMjYgQEAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gewogCQlz dHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAJCXN0cnVjdCBsaXN0X2hlYWQgcHVyZ2VhYmxlOwogCX0g b2JqZWN0czsKKworCXNpemVfdCBjaHVua19zaXplOworCXVuc2lnbmVkIGludCBtYXhfb3JkZXI7 CisJYm9vbCBpc19yYW5nZV9tYW5hZ2VyOworCisJdm9pZCAqcmVnaW9uX3ByaXZhdGU7CiB9Owog CiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqCiBpbnRlbF9tZW1vcnlfcmVnaW9uX2xvb2t1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCSAgIHUxNiBjbGFzcywgdTE2IGlu c3RhbmNlKTsKIAotaW50IGludGVsX21lbW9yeV9yZWdpb25faW5pdF9idWRkeShzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKTsKLXZvaWQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9yZWxlYXNl X2J1ZGR5KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0pOwotCi1pbnQgX19pbnRlbF9t ZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRkeShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAq bWVtLAotCQkJCQkgIHJlc291cmNlX3NpemVfdCBzaXplLAotCQkJCQkgIHVuc2lnbmVkIGludCBm bGFncywKLQkJCQkJICBzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MpOwotc3RydWN0IGk5MTVfYnVk ZHlfYmxvY2sgKgotX19pbnRlbF9tZW1vcnlfcmVnaW9uX2dldF9ibG9ja19idWRkeShzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJCSAgICAgIHJlc291cmNlX3NpemVfdCBzaXpl LAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBmbGFncyk7Ci12b2lkIF9faW50ZWxfbWVtb3J5X3Jl Z2lvbl9wdXRfcGFnZXNfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKLQkJ CQkJICAgc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzKTsKLXZvaWQgX19pbnRlbF9tZW1vcnlfcmVn aW9uX3B1dF9ibG9ja19idWRkeShzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2spOwotCi1p bnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptZW0sCi0JCQkJdTY0IG9mZnNldCwgdTY0IHNpemUpOwotCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqCiBpbnRlbF9tZW1vcnlfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKIAkJCSAgIHJlc291cmNlX3NpemVfdCBzdGFydCwKIAkJCSAgIHJlc291cmNl X3NpemVfdCBzaXplLAogCQkJICAgcmVzb3VyY2Vfc2l6ZV90IG1pbl9wYWdlX3NpemUsCiAJCQkg ICByZXNvdXJjZV9zaXplX3QgaW9fc3RhcnQsCisJCQkgICB1MTYgdHlwZSwKKwkJCSAgIHUxNiBp bnN0YW5jZSwKIAkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX29wcyAqb3Bz KTsKIAogc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKgpAQCAtMTQxLDQgKzEzOCw5IEBAIF9f cHJpbnRmKDIsIDMpIHZvaWQKIGludGVsX21lbW9yeV9yZWdpb25fc2V0X25hbWUoc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAkJCSAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwog Cit2b2lkIGludGVsX21lbW9yeV9yZWdpb25fdW5yZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlf cmVnaW9uICptZW0pOworCitpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9yZXNlcnZlKHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkJcmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwKKwkJ CQlyZXNvdXJjZV9zaXplX3Qgc2l6ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JlZ2lvbl90dG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNi ZDljYWE2MDI5OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JlZ2lvbl90dG0uYwpAQCAtMCwwICsxLDI0NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIxIEludGVsIENvcnBvcmF0aW9uCisgKi8K KyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4KKyNpbmNsdWRlIDxkcm0vdHRtL3R0 bV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9zY2F0 dGVybGlzdC5oIgorCisjaW5jbHVkZSAiaW50ZWxfcmVnaW9uX3R0bS5oIgorCisvKiBBIFplcm8t aW5pdGlhbGl6ZWQgZHJpdmVyIGZvciBub3cuIFdlIGRvbid0IGhhdmUgYSBUVE0gYmFja2VuZCB5 ZXQuICovCitzdGF0aWMgc3RydWN0IHR0bV9kZXZpY2VfZnVuY3MgaTkxNV90dG1fYm9fZHJpdmVy OworCisvKioKKyAqIERPQzogVFRNIHN1cHBvcnQgc3RydWN0dXJlCisgKgorICogVGhlIGNvZGUg aW4gdGhpcyBmaWxlIGRlYWxzIHdpdGggc2V0dGluZyB1cCBtZW1vcnkgbWFuYWdlcnMgZm9yIFRU TQorICogTE1FTSBhbmQgTU9DSyByZWdpb25zIGFuZCBjb252ZXJ0aW5nIHRoZSBvdXRwdXQgZnJv bQorICogdGhlIG1hbmFnZXJzIHRvIHN0cnVjdCBzZ190YWJsZSwgQmFzaWNhbGx5IHByb3ZpZGlu ZyB0aGUgbWFwcGluZyBmcm9tCisgKiBpOTE1IEdFTSByZWdpb25zIHRvIFRUTSBtZW1vcnkgdHlw ZXMgYW5kIHJlc291cmNlIG1hbmFnZXJzLgorICovCisKKy8qKgorICogaW50ZWxfcmVnaW9uX3R0 bV9kZXZpY2VfaW5pdCAtIEluaXRpYWxpemUgYSBUVE0gZGV2aWNlCisgKiBAZGV2X3ByaXY6IFBv aW50ZXIgdG8gYW4gaTkxNSBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3R1cmUuCisgKgorICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50 IGludGVsX3JlZ2lvbl90dG1fZGV2aWNlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmZGV2X3ByaXYtPmRybTsKKwor CXJldHVybiB0dG1fZGV2aWNlX2luaXQoJmRldl9wcml2LT5iZGV2LCAmaTkxNV90dG1fYm9fZHJp dmVyLAorCQkJICAgICAgIGRybS0+ZGV2LCBkcm0tPmFub25faW5vZGUtPmlfbWFwcGluZywKKwkJ CSAgICAgICBkcm0tPnZtYV9vZmZzZXRfbWFuYWdlciwgZmFsc2UsIGZhbHNlKTsKK30KKworLyoq CisgKiBpbnRlbF9yZWdpb25fdHRtX2RldmljZV9maW5pIC0gRmluYWxpemUgYSBUVE0gZGV2aWNl CisgKiBAZGV2X3ByaXY6IFBvaW50ZXIgdG8gYW4gaTkxNSBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3R1 cmUuCisgKi8KK3ZvaWQgaW50ZWxfcmVnaW9uX3R0bV9kZXZpY2VfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJdHRtX2RldmljZV9maW5pKCZkZXZfcHJpdi0+YmRl dik7Cit9CisKKy8qCisgKiBNYXAgdGhlIGk5MTUgbWVtb3J5IHJlZ2lvbnMgdG8gVFRNIG1lbW9y eSB0eXBlcy4gV2UgdXNlIHRoZQorICogZHJpdmVyLXByaXZhdGUgdHlwZXMgZm9yIG5vdywgcmVz ZXJ2aW5nIFRUTV9QTF9WUkFNIGZvciBzdG9sZW4KKyAqIG1lbW9yeSBhbmQgVFRNX1BMX1RUIGZv ciBHR1RUIHVzZSBpZiBkZWNpZGVkIHRvIGltcGxlbWVudCB0aGlzLgorICovCitzdGF0aWMgaW50 IGludGVsX3JlZ2lvbl90b190dG1fdHlwZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVt KQoreworCWludCB0eXBlOworCisJR0VNX0JVR19PTihtZW0tPnR5cGUgIT0gSU5URUxfTUVNT1JZ X0xPQ0FMKTsKKworCXR5cGUgPSBtZW0tPmluc3RhbmNlICsgVFRNX1BMX1BSSVY7CisJR0VNX0JV R19PTih0eXBlID49IFRUTV9OVU1fTUVNX1RZUEVTKTsKKworCXJldHVybiB0eXBlOworfQorCitz dGF0aWMgdm9pZCAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX3Jlc2VydmUoc3RydWN0IGludGVsX21l bW9yeV9yZWdpb24gKm1lbSwKKwkJCQkJICAgcmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwKKwkJCQkJ ICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUpCit7CisJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2Vy ICptYW4gPSBtZW0tPnJlZ2lvbl9wcml2YXRlOworCXN0cnVjdCB0dG1fcGxhY2UgcGxhY2UgPSB7 fTsKKwlzdHJ1Y3QgdHRtX3Jlc291cmNlIHJlcyA9IHt9OworCXN0cnVjdCB0dG1fYnVmZmVyX29i amVjdCBtb2NrX2JvID0ge307CisJaW50IHJldDsKKworCS8qCisJICogSGF2aW5nIHRvIHVzZSBh IG1vY2tfYm8gaXMgdW5mb3J0dW5hdGUgYnV0IHN0ZW1zIGZyb20gc29tZQorCSAqIGRyaXZlcnMg aGF2aW5nIHByaXZhdGUgbWFuYWdlcnMgdGhhdCBpbnNpc3QgdG8ga25vdyB3aGF0IHRoZQorCSAq IGFsbG9jYXRlIG1lbW9yeSBpcyBpbnRlbmRlZCBmb3IsIHVzaW5nIGl0IHRvIHNlbmQgcHJpdmF0 ZQorCSAqIGRhdGEgdG8gdGhlIG1hbmFnZXIuIEFsc28gcmVjZW50bHkgdGhlIGJvIGhhcyBiZWVu IHVzZWQgdG8gc2VuZAorCSAqIGFsaWdubWVudCBpbmZvIHRvIHRoZSBtYW5hZ2VyLiBBc3N1bWUg dGhhdCBhcGFydCBmcm9tIHRoZSBsYXR0ZXIsCisJICogbm9uZSBvZiB0aGUgbWFuYWdlcnMgd2Ug dXNlIHdpbGwgZXZlciBhY2Nlc3MgdGhlIGJ1ZmZlciBvYmplY3QKKwkgKiBtZW1iZXJzLCBob3Bp bmcgd2UgY2FuIHBhc3MgdGhlIGFsaWdubWVudCBpbmZvIGluIHRoZQorCSAqIHN0cnVjdCB0dG1f cGxhY2UgaW4gdGhlIGZ1dHVyZS4KKwkgKi8KKworCXBsYWNlLmZwZm4gPSBvZmZzZXQgPj4gUEFH RV9TSElGVDsKKwlwbGFjZS5scGZuID0gcGxhY2UuZnBmbiArIChzaXplID4+IFBBR0VfU0hJRlQp OworCXJlcy5udW1fcGFnZXMgPSBzaXplID4+IFBBR0VfU0hJRlQ7CisJcmV0ID0gbWFuLT5mdW5j LT5hbGxvYyhtYW4sICZtb2NrX2JvLCAmcGxhY2UsICZyZXMpOworCWlmIChyZXQgPT0gLUVOT1NQ QykKKwkJcmV0ID0gLUVOWElPOworCisJcmV0dXJuIHJldCA/IEVSUl9QVFIocmV0KSA6IHJlcy5t bV9ub2RlOworfQorCisvKioKKyAqIGludGVsX3JlZ2lvbl90dG1fbm9kZV9mcmVlIC0gRnJlZSBh IG5vZGUgYWxsb2NhdGVkIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VyCisgKiBAbWVtOiBUaGUgcmVn aW9uIHRoZSBub2RlIHdhcyBhbGxvY2F0ZWQgZnJvbS4KKyAqIEBub2RlOiBUaGUgb3BhcXVlIG5v ZGUgcmVwcmVzZW50aW5nIGFuIGFsbG9jYXRpb24uCisgKi8KK3ZvaWQgaW50ZWxfcmVnaW9uX3R0 bV9ub2RlX2ZyZWUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKKwkJCQl2b2lkICpu b2RlKQoreworCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gbWVtLT5yZWdpb25f cHJpdmF0ZTsKKwlzdHJ1Y3QgdHRtX3Jlc291cmNlIHJlcyA9IHt9OworCisJcmVzLm1tX25vZGUg PSBub2RlOworCW1hbi0+ZnVuYy0+ZnJlZShtYW4sICZyZXMpOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fcHJpdmF0ZV9vcHMgcHJpdl9vcHMgPSB7CisJLnJl c2VydmUgPSBpbnRlbF9yZWdpb25fdHRtX25vZGVfcmVzZXJ2ZSwKKwkuZnJlZSA9IGludGVsX3Jl Z2lvbl90dG1fbm9kZV9mcmVlLAorfTsKKworLyoqCisgKiBpbnRlbF9yZWdpb25fdHRtX2luaXQg LSBJbml0aWFsaXplIGEgbWVtb3J5IHJlZ2lvbiBmb3IgVFRNLgorICogQG1lbTogVGhlIHJlZ2lv biB0byBpbml0aWFsaXplLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSBzdWl0 YWJsZSBUVE0gcmVzb3VyY2UgbWFuYWdlciBmb3IgdGhlCisgKiByZWdpb24sIGFuZCBpZiBpdCdz IGEgTE1FTSByZWdpb24gdHlwZSwgYXR0YWNoZXMgaXQgdG8gdGhlIFRUTQorICogZGV2aWNlLiBN T0NLIHJlZ2lvbnMgYXJlIE5PVCBhdHRhY2hlZCB0byB0aGUgVFRNIGRldmljZSwgc2luY2Ugd2Ug ZG9uJ3QKKyAqIGhhdmUgb25lIGZvciB0aGUgbW9jayBzZWxmdGVzdHMuCisgKgorICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50 IGludGVsX3JlZ2lvbl90dG1faW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQor eworCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuOworCisJbWFuID0gdHRtX3Jhbmdl X21hbl9pbml0X3N0YW5kYWxvbmUocmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pID4+CisJCQkJ CSAgICBQQUdFX1NISUZULCBmYWxzZSk7CisJaWYgKElTX0VSUihtYW4pKQorCQlyZXR1cm4gUFRS X0VSUihtYW4pOworCisJdHRtX3Jlc291cmNlX21hbmFnZXJfc2V0X3VzZWQobWFuLCB0cnVlKTsK KwltZW0tPmNodW5rX3NpemUgPSBQQUdFX1NJWkU7CisJbWVtLT5tYXhfb3JkZXIgPQorCQlnZXRf b3JkZXIocm91bmRkb3duX3Bvd19vZl90d28ocmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pKSk7 CisJbWVtLT5pc19yYW5nZV9tYW5hZ2VyID0gdHJ1ZTsKKwltZW0tPnByaXZfb3BzID0gJnByaXZf b3BzOworCW1lbS0+cmVnaW9uX3ByaXZhdGUgPSBtYW47CisKKworCS8qCisJICogUmVnaXN0ZXIg b25seSBMT0NBTCBtZW1vcnkgd2l0aCB0aGUgZGV2aWNlIHNvIHRoYXQgd2UgY2FuCisJICogcnVu IHRoZSBtb2NrIHNlbGZ0ZXN0cyB1c2luZyB0aGUgbWFuYWdlci4KKwkgKi8KKwlpZiAobWVtLT50 eXBlID09IElOVEVMX01FTU9SWV9MT0NBTCkgeworCQl0dG1fc2V0X2RyaXZlcl9tYW5hZ2VyKCZt ZW0tPmk5MTUtPmJkZXYsCisJCQkJICAgICAgIGludGVsX3JlZ2lvbl90b190dG1fdHlwZShtZW0p LAorCQkJCSAgICAgICBtYW4pOworCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAqIGludGVs X3JlZ2lvbl90dG1fZmluaSAtIEZpbmFsaXplIGEgVFRNIHJlZ2lvbi4KKyAqIEBtZW06IFRoZSBt ZW1vcnkgcmVnaW9uCisgKgorICogVGhpcyBmdW5jdGlvbnMgdGFrZXMgZG93biB0aGUgVFRNIHJl c291cmNlIG1hbmFnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZQorICogbWVtb3J5IHJlZ2lvbiwgYW5k IGlmIGl0IHdhcyByZWdpc3RlcmVkIHdpdGggdGhlIFRUTSBkZXZpY2UsCisgKiByZW1vdmVzIHRo YXQgcmVnaXN0cmF0aW9uLgorICovCit2b2lkIGludGVsX3JlZ2lvbl90dG1fZmluaShzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQoreworCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdl ciAqbWFuID0gbWVtLT5yZWdpb25fcHJpdmF0ZTsKKworCWlmIChtZW0tPnR5cGUgPT0gSU5URUxf TUVNT1JZX0xPQ0FMKSB7CisJCWludCByZXQ7CisKKwkJcmV0ID0gdHRtX3JhbmdlX21hbl9maW5p KCZtZW0tPmk5MTUtPmJkZXYsCisJCQkJCSBpbnRlbF9yZWdpb25fdG9fdHRtX3R5cGUobWVtKSk7 CisJCUdFTV9XQVJOX09OKHJldCk7CisJfSBlbHNlIHsKKwkJdHRtX3Jlc291cmNlX21hbmFnZXJf c2V0X3VzZWQobWFuLCBmYWxzZSk7CisJCXR0bV9yYW5nZV9tYW5fZmluaV9zdGFuZGFsb25lKG1h bik7CisJfQorfQorCisvKioKKyAqIGludGVsX3JlZ2lvbl90dG1fbm9kZV90b19zdCAtIENvbnZl cnQgYW4gb3BhcXVlIFRUTSByZXNvdXJjZSBtYW5hZ2VyIG5vZGUKKyAqIHRvIGFuIHNnX3RhYmxl LgorICogQG1lbTogVGhlIG1lbW9yeSByZWdpb24uCisgKiBAbm9kZTogVGhlIHJlc291cmNlIG1h bmFnZXIgbm9kZSBvYnRhaW5lZCBmcm9tIHRoZSBUVE0gcmVzb3VyY2UgbWFuYWdlci4KKyAqCisg KiBUaGUgZ2VtIGJhY2tlbmRzIHR5cGljYWxseSB1c2Ugc2ctdGFibGVzIGZvciBvcGVyYXRpb25z IG9uIHRoZSB1bmRlcmx5aW5nCisgKiBpb19tZW1vcnkuIFNvIHByb3ZpZGUgYSB3YXkgZm9yIHRo ZSBiYWNrZW5kcyB0byB0cmFuc2xhdGUgdGhlCisgKiBub2RlcyB0aGV5IGFyZSBoYW5kZWQgZnJv bSBUVE0gdG8gc2ctdGFibGVzLgorICoKKyAqIFJldHVybjogQSBtYWxsb2NlZCBzZ190YWJsZSBv biBzdWNjZXNzLCBhbiBlcnJvciBwb2ludGVyIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBzZ190 YWJsZSAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX3RvX3N0KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICptZW0sCisJCQkJCSAgICAgdm9pZCAqbm9kZSkKK3sKKwlyZXR1cm4gaTkxNV9zZ19mcm9t X21tX25vZGUobm9kZSwgbWVtLT5yZWdpb24uc3RhcnQpOworfQorCisvKioKKyAqIGludGVsX3Jl Z2lvbl90dG1fbm9kZV9hbGxvYyAtIEFsbG9jYXRlIG1lbW9yeSByZXNvdXJjZXMgZnJvbSBhIHJl Z2lvbgorICogQG1lbTogVGhlIG1lbW9yeSByZWdpb24sCisgKiBAc2l6ZTogVGhlIHJlcXVlc3Rl ZCBzaXplIGluIGJ5dGVzCisgKiBAZmxhZ3M6IEFsbG9jYXRpb24gZmxhZ3MKKyAqCisgKiBUaGlz IGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQgb25seSBmb3IgY2FsbGVycyB0aGF0IG5lZWQgdG8g YWxsb2NhdGUKKyAqIG1lbW9yeSBmcm9tIHN0YW5kYWxvbmUgVFRNIHJhbmdlIG1hbmFnZXJzLCB3 aXRob3V0IHRoZSBUVE0gZXZpY3Rpb24KKyAqIGZ1bmN0aW9uYWxpdHkuIERvbid0IHVzZSBpZiB5 b3UgYXJlIG5vdCBjb21wbGV0ZWx5IHN1cmUgdGhhdCdzIHRoZQorICogY2FzZS4gVGhlIHJldHVy bmVkIG9wYXF1ZSBub2RlIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gc2dfdGFibGUgdXNpbmcKKyAq IGludGVsX3JlZ2lvbl90dG1fbm9kZV90b19zdCgpLCBhbmQgY2FuIGJlIGZyZWVkIHVzaW5nCisg KiBpbnRlbF9yZWdpb25fdHRtX25vZGVfZnJlZSgpLgorICoKKyAqIFJldHVybjogQSB2YWxpZCBw b2ludGVyIG9uIHN1Y2Nlc3MsIGFuIGVycm9yIHBvaW50ZXIgb24gZmFpbHVyZS4KKyAqLwordm9p ZCAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2FsbG9jKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u ICptZW0sCisJCQkJICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwKKwkJCQkgIHVuc2lnbmVkIGludCBm bGFncykKK3sKKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9IG1lbS0+cmVnaW9u X3ByaXZhdGU7CisJc3RydWN0IHR0bV9wbGFjZSBwbGFjZSA9IHt9OworCXN0cnVjdCB0dG1fcmVz b3VyY2UgcmVzID0ge307CisJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0IG1vY2tfYm8gPSB7fTsK KwlpbnQgcmV0OworCisJLyoKKwkgKiBXZSBpZ25vcmUgdGhlIGZsYWdzIGZvciBub3cgc2luY2Ug d2UncmUgdXNpbmcgdGhlIHJhbmdlCisJICogbWFuYWdlciBhbmQgY29udGlnb3VzIGFuZCBtaW4g cGFnZSBzaXplIHdvdWxkIGJlIGZ1bGZpbGxlZAorCSAqIGJ5IGRlZmF1bHQgaWYgc2l6ZSBpcyBt aW4gcGFnZSBzaXplIGFsaWduZWQuCisJICovCisJcmVzLm51bV9wYWdlcyA9IHNpemUgPj4gUEFH RV9TSElGVDsKKworCWlmIChtZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKKwkJaWYgKHNpemUgPj0g U1pfMUcpCisJCQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfMUcgPj4gUEFHRV9TSElGVDsK KwkJZWxzZSBpZiAoc2l6ZSA+PSBTWl8yTSkKKwkJCW1vY2tfYm8ucGFnZV9hbGlnbm1lbnQgPSBT Wl8yTSA+PiBQQUdFX1NISUZUOworCQllbHNlIGlmIChzaXplID49IFNaXzY0SykKKwkJCW1vY2tf Ym8ucGFnZV9hbGlnbm1lbnQgPSBTWl82NEsgPj4gUEFHRV9TSElGVDsKKwl9CisKKwlyZXQgPSBt YW4tPmZ1bmMtPmFsbG9jKG1hbiwgJm1vY2tfYm8sICZwbGFjZSwgJnJlcyk7CisJaWYgKHJldCA9 PSAtRU5PU1BDKQorCQlyZXQgPSAtRU5YSU87CisJcmV0dXJuIHJldCA/IEVSUl9QVFIocmV0KSA6 IHJlcy5tbV9ub2RlOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmVnaW9uX3R0bS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDAxMjlmN2UwMzE3Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5oCkBA IC0wLDAgKzEsMjkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisjaWZuZGVmIF9JTlRF TF9SRUdJT05fVFRNX0hfCisjZGVmaW5lIF9JTlRFTF9SRUdJT05fVFRNX0hfCisKKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgorCitzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKK3N0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uOworCitpbnQgaW50ZWxfcmVnaW9uX3R0bV9kZXZpY2VfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCit2b2lkIGludGVsX3JlZ2lvbl90dG1f ZGV2aWNlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworaW50IGlu dGVsX3JlZ2lvbl90dG1faW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKTsKKwor dm9pZCBpbnRlbF9yZWdpb25fdHRtX2Zpbmkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1l bSk7CisKK3N0cnVjdCBzZ190YWJsZSAqaW50ZWxfcmVnaW9uX3R0bV9ub2RlX3RvX3N0KHN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCisJCQkJCSAgICAgdm9pZCAqbm9kZSk7CisKK3Zv aWQgKmludGVsX3JlZ2lvbl90dG1fbm9kZV9hbGxvYyhzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtLAorCQkJCSAgcmVzb3VyY2Vfc2l6ZV90IHNpemUsCisJCQkJICB1bnNpZ25lZCBpbnQg ZmxhZ3MpOwordm9pZCBpbnRlbF9yZWdpb25fdHRtX25vZGVfZnJlZShzdHJ1Y3QgaW50ZWxfbWVt b3J5X3JlZ2lvbiAqbWVtLAorCQkJCXZvaWQgKm5vZGUpOworI2VuZGlmIC8qIF9JTlRFTF9SRUdJ T05fVFRNX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9idWRkeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYnVkZHku YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBmNWM0ZGY4ZGJjLi4wMDAwMDAwMDAw MDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYnVkZHkuYworKysg L2Rldi9udWxsCkBAIC0xLDc4OSArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUCi0vKgotICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KLSAqLwotCi0j aW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgotCi0jaW5jbHVkZSAiLi4vaTkxNV9zZWxm dGVzdC5oIgotI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCi0KLXN0YXRpYyB2b2lkIF9faWd0X2R1 bXBfYmxvY2soc3RydWN0IGk5MTVfYnVkZHlfbW0gKm1tLAotCQkJICAgICBzdHJ1Y3QgaTkxNV9i dWRkeV9ibG9jayAqYmxvY2ssCi0JCQkgICAgIGJvb2wgYnVkZHkpCi17Ci0JcHJfZXJyKCJibG9j ayBpbmZvOiBoZWFkZXI9JWxseCwgc3RhdGU9JXUsIG9yZGVyPSVkLCBvZmZzZXQ9JWxseCBzaXpl PSVsbHggcm9vdD0lcyBidWRkeT0lc1xuIiwKLQkgICAgICAgYmxvY2stPmhlYWRlciwKLQkgICAg ICAgaTkxNV9idWRkeV9ibG9ja19zdGF0ZShibG9jayksCi0JICAgICAgIGk5MTVfYnVkZHlfYmxv Y2tfb3JkZXIoYmxvY2spLAotCSAgICAgICBpOTE1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayks Ci0JICAgICAgIGk5MTVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spLAotCSAgICAgICB5ZXNu byghYmxvY2stPnBhcmVudCksCi0JICAgICAgIHllc25vKGJ1ZGR5KSk7Ci19Ci0KLXN0YXRpYyB2 b2lkIGlndF9kdW1wX2Jsb2NrKHN0cnVjdCBpOTE1X2J1ZGR5X21tICptbSwKLQkJCSAgIHN0cnVj dCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jaykKLXsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAq YnVkZHk7Ci0KLQlfX2lndF9kdW1wX2Jsb2NrKG1tLCBibG9jaywgZmFsc2UpOwotCi0JYnVkZHkg PSBnZXRfYnVkZHkoYmxvY2spOwotCWlmIChidWRkeSkKLQkJX19pZ3RfZHVtcF9ibG9jayhtbSwg YnVkZHksIHRydWUpOwotfQotCi1zdGF0aWMgaW50IGlndF9jaGVja19ibG9jayhzdHJ1Y3QgaTkx NV9idWRkeV9tbSAqbW0sCi0JCQkgICBzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2spCi17 Ci0Jc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJ1ZGR5OwotCXVuc2lnbmVkIGludCBibG9ja19z dGF0ZTsKLQl1NjQgYmxvY2tfc2l6ZTsKLQl1NjQgb2Zmc2V0OwotCWludCBlcnIgPSAwOwotCi0J YmxvY2tfc3RhdGUgPSBpOTE1X2J1ZGR5X2Jsb2NrX3N0YXRlKGJsb2NrKTsKLQotCWlmIChibG9j a19zdGF0ZSAhPSBJOTE1X0JVRERZX0FMTE9DQVRFRCAmJgotCSAgICBibG9ja19zdGF0ZSAhPSBJ OTE1X0JVRERZX0ZSRUUgJiYKLQkgICAgYmxvY2tfc3RhdGUgIT0gSTkxNV9CVUREWV9TUExJVCkg ewotCQlwcl9lcnIoImJsb2NrIHN0YXRlIG1pc21hdGNoXG4iKTsKLQkJZXJyID0gLUVJTlZBTDsK LQl9Ci0KLQlibG9ja19zaXplID0gaTkxNV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7Ci0J b2Zmc2V0ID0gaTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwotCi0JaWYgKGJsb2NrX3Np emUgPCBtbS0+Y2h1bmtfc2l6ZSkgewotCQlwcl9lcnIoImJsb2NrIHNpemUgc21hbGxlciB0aGFu IG1pbiBzaXplXG4iKTsKLQkJZXJyID0gLUVJTlZBTDsKLQl9Ci0KLQlpZiAoIWlzX3Bvd2VyX29m XzIoYmxvY2tfc2l6ZSkpIHsKLQkJcHJfZXJyKCJibG9jayBzaXplIG5vdCBwb3dlciBvZiB0d29c biIpOwotCQllcnIgPSAtRUlOVkFMOwotCX0KLQotCWlmICghSVNfQUxJR05FRChibG9ja19zaXpl LCBtbS0+Y2h1bmtfc2l6ZSkpIHsKLQkJcHJfZXJyKCJibG9jayBzaXplIG5vdCBhbGlnbmVkIHRv IG1pbiBzaXplXG4iKTsKLQkJZXJyID0gLUVJTlZBTDsKLQl9Ci0KLQlpZiAoIUlTX0FMSUdORUQo b2Zmc2V0LCBtbS0+Y2h1bmtfc2l6ZSkpIHsKLQkJcHJfZXJyKCJibG9jayBvZmZzZXQgbm90IGFs aWduZWQgdG8gbWluIHNpemVcbiIpOwotCQllcnIgPSAtRUlOVkFMOwotCX0KLQotCWlmICghSVNf QUxJR05FRChvZmZzZXQsIGJsb2NrX3NpemUpKSB7Ci0JCXByX2VycigiYmxvY2sgb2Zmc2V0IG5v dCBhbGlnbmVkIHRvIGJsb2NrIHNpemVcbiIpOwotCQllcnIgPSAtRUlOVkFMOwotCX0KLQotCWJ1 ZGR5ID0gZ2V0X2J1ZGR5KGJsb2NrKTsKLQotCWlmICghYnVkZHkgJiYgYmxvY2stPnBhcmVudCkg ewotCQlwcl9lcnIoImJ1ZGR5IGhhcyBnb25lIGZpc2hpbmdcbiIpOwotCQllcnIgPSAtRUlOVkFM OwotCX0KLQotCWlmIChidWRkeSkgewotCQlpZiAoaTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYnVk ZHkpICE9IChvZmZzZXQgXiBibG9ja19zaXplKSkgewotCQkJcHJfZXJyKCJidWRkeSBoYXMgd3Jv bmcgb2Zmc2V0XG4iKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoaTkxNV9idWRk eV9ibG9ja19zaXplKG1tLCBidWRkeSkgIT0gYmxvY2tfc2l6ZSkgewotCQkJcHJfZXJyKCJidWRk eSBzaXplIG1pc21hdGNoXG4iKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoaTkx NV9idWRkeV9ibG9ja19zdGF0ZShidWRkeSkgPT0gYmxvY2tfc3RhdGUgJiYKLQkJICAgIGJsb2Nr X3N0YXRlID09IEk5MTVfQlVERFlfRlJFRSkgewotCQkJcHJfZXJyKCJibG9jayBhbmQgaXRzIGJ1 ZGR5IGFyZSBmcmVlXG4iKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4g ZXJyOwotfQotCi1zdGF0aWMgaW50IGlndF9jaGVja19ibG9ja3Moc3RydWN0IGk5MTVfYnVkZHlf bW0gKm1tLAotCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmJsb2NrcywKLQkJCSAgICB1NjQgZXhw ZWN0ZWRfc2l6ZSwKLQkJCSAgICBib29sIGlzX2NvbnRpZ3VvdXMpCi17Ci0Jc3RydWN0IGk5MTVf YnVkZHlfYmxvY2sgKmJsb2NrOwotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpwcmV2OwotCXU2 NCB0b3RhbDsKLQlpbnQgZXJyID0gMDsKLQotCWJsb2NrID0gTlVMTDsKLQlwcmV2ID0gTlVMTDsK LQl0b3RhbCA9IDA7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCBibG9ja3MsIGxpbmsp IHsKLQkJZXJyID0gaWd0X2NoZWNrX2Jsb2NrKG1tLCBibG9jayk7Ci0KLQkJaWYgKCFpOTE1X2J1 ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9jaykpIHsKLQkJCXByX2VycigiYmxvY2sgbm90IGFs bG9jYXRlZFxuIiksCi0JCQllcnIgPSAtRUlOVkFMOwotCQl9Ci0KLQkJaWYgKGlzX2NvbnRpZ3Vv dXMgJiYgcHJldikgewotCQkJdTY0IHByZXZfYmxvY2tfc2l6ZTsKLQkJCXU2NCBwcmV2X29mZnNl dDsKLQkJCXU2NCBvZmZzZXQ7Ci0KLQkJCXByZXZfb2Zmc2V0ID0gaTkxNV9idWRkeV9ibG9ja19v ZmZzZXQocHJldik7Ci0JCQlwcmV2X2Jsb2NrX3NpemUgPSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUo bW0sIHByZXYpOwotCQkJb2Zmc2V0ID0gaTkxNV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwot Ci0JCQlpZiAob2Zmc2V0ICE9IChwcmV2X29mZnNldCArIHByZXZfYmxvY2tfc2l6ZSkpIHsKLQkJ CQlwcl9lcnIoImJsb2NrIG9mZnNldCBtaXNtYXRjaFxuIik7Ci0JCQkJZXJyID0gLUVJTlZBTDsK LQkJCX0KLQkJfQotCi0JCWlmIChlcnIpCi0JCQlicmVhazsKLQotCQl0b3RhbCArPSBpOTE1X2J1 ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKLQkJcHJldiA9IGJsb2NrOwotCX0KLQotCWlmICgh ZXJyKSB7Ci0JCWlmICh0b3RhbCAhPSBleHBlY3RlZF9zaXplKSB7Ci0JCQlwcl9lcnIoInNpemUg bWlzbWF0Y2gsIGV4cGVjdGVkPSVsbHgsIGZvdW5kPSVsbHhcbiIsCi0JCQkgICAgICAgZXhwZWN0 ZWRfc2l6ZSwgdG90YWwpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJfQotCQlyZXR1cm4gZXJyOwot CX0KLQotCWlmIChwcmV2KSB7Ci0JCXByX2VycigicHJldiBibG9jaywgZHVtcDpcbiIpOwotCQlp Z3RfZHVtcF9ibG9jayhtbSwgcHJldik7Ci0JfQotCi0JaWYgKGJsb2NrKSB7Ci0JCXByX2Vycigi YmFkIGJsb2NrLCBkdW1wOlxuIik7Ci0JCWlndF9kdW1wX2Jsb2NrKG1tLCBibG9jayk7Ci0JfQot Ci0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIGludCBpZ3RfY2hlY2tfbW0oc3RydWN0IGk5MTVf YnVkZHlfbW0gKm1tKQotewotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpyb290OwotCXN0cnVj dCBpOTE1X2J1ZGR5X2Jsb2NrICpwcmV2OwotCXVuc2lnbmVkIGludCBpOwotCXU2NCB0b3RhbDsK LQlpbnQgZXJyID0gMDsKLQotCWlmICghbW0tPm5fcm9vdHMpIHsKLQkJcHJfZXJyKCJuX3Jvb3Rz IGlzIHplcm9cbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlpZiAobW0tPm5fcm9vdHMg IT0gaHdlaWdodDY0KG1tLT5zaXplKSkgewotCQlwcl9lcnIoIm5fcm9vdHMgbWlzbWF0Y2gsIG5f cm9vdHM9JXUsIGV4cGVjdGVkPSVsdVxuIiwKLQkJICAgICAgIG1tLT5uX3Jvb3RzLCBod2VpZ2h0 NjQobW0tPnNpemUpKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0Jcm9vdCA9IE5VTEw7Ci0J cHJldiA9IE5VTEw7Ci0JdG90YWwgPSAwOwotCi0JZm9yIChpID0gMDsgaSA8IG1tLT5uX3Jvb3Rz OyArK2kpIHsKLQkJc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOwotCQl1bnNpZ25lZCBp bnQgb3JkZXI7Ci0KLQkJcm9vdCA9IG1tLT5yb290c1tpXTsKLQkJaWYgKCFyb290KSB7Ci0JCQlw cl9lcnIoInJvb3QoJXUpIGlzIE5VTExcbiIsIGkpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWJy ZWFrOwotCQl9Ci0KLQkJZXJyID0gaWd0X2NoZWNrX2Jsb2NrKG1tLCByb290KTsKLQotCQlpZiAo IWk5MTVfYnVkZHlfYmxvY2tfaXNfZnJlZShyb290KSkgewotCQkJcHJfZXJyKCJyb290IG5vdCBm cmVlXG4iKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KLQotCQlvcmRlciA9IGk5MTVfYnVkZHlf YmxvY2tfb3JkZXIocm9vdCk7Ci0KLQkJaWYgKCFpKSB7Ci0JCQlpZiAob3JkZXIgIT0gbW0tPm1h eF9vcmRlcikgewotCQkJCXByX2VycigibWF4IG9yZGVyIHJvb3QgbWlzc2luZ1xuIik7Ci0JCQkJ ZXJyID0gLUVJTlZBTDsKLQkJCX0KLQkJfQotCi0JCWlmIChwcmV2KSB7Ci0JCQl1NjQgcHJldl9i bG9ja19zaXplOwotCQkJdTY0IHByZXZfb2Zmc2V0OwotCQkJdTY0IG9mZnNldDsKLQotCQkJcHJl dl9vZmZzZXQgPSBpOTE1X2J1ZGR5X2Jsb2NrX29mZnNldChwcmV2KTsKLQkJCXByZXZfYmxvY2tf c2l6ZSA9IGk5MTVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgcHJldik7Ci0JCQlvZmZzZXQgPSBpOTE1 X2J1ZGR5X2Jsb2NrX29mZnNldChyb290KTsKLQotCQkJaWYgKG9mZnNldCAhPSAocHJldl9vZmZz ZXQgKyBwcmV2X2Jsb2NrX3NpemUpKSB7Ci0JCQkJcHJfZXJyKCJyb290IG9mZnNldCBtaXNtYXRj aFxuIik7Ci0JCQkJZXJyID0gLUVJTlZBTDsKLQkJCX0KLQkJfQotCi0JCWJsb2NrID0gbGlzdF9m aXJzdF9lbnRyeV9vcl9udWxsKCZtbS0+ZnJlZV9saXN0W29yZGVyXSwKLQkJCQkJCSBzdHJ1Y3Qg aTkxNV9idWRkeV9ibG9jaywKLQkJCQkJCSBsaW5rKTsKLQkJaWYgKGJsb2NrICE9IHJvb3QpIHsK LQkJCXByX2Vycigicm9vdCBtaXNtYXRjaCBhdCBvcmRlcj0ldVxuIiwgb3JkZXIpOwotCQkJZXJy ID0gLUVJTlZBTDsKLQkJfQotCi0JCWlmIChlcnIpCi0JCQlicmVhazsKLQotCQlwcmV2ID0gcm9v dDsKLQkJdG90YWwgKz0gaTkxNV9idWRkeV9ibG9ja19zaXplKG1tLCByb290KTsKLQl9Ci0KLQlp ZiAoIWVycikgewotCQlpZiAodG90YWwgIT0gbW0tPnNpemUpIHsKLQkJCXByX2VycigiZXhwZWN0 ZWQgbW0gc2l6ZT0lbGx4LCBmb3VuZD0lbGx4XG4iLCBtbS0+c2l6ZSwKLQkJCSAgICAgICB0b3Rh bCk7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQl9Ci0JCXJldHVybiBlcnI7Ci0JfQotCi0JaWYgKHBy ZXYpIHsKLQkJcHJfZXJyKCJwcmV2IHJvb3QoJXUpLCBkdW1wOlxuIiwgaSAtIDEpOwotCQlpZ3Rf ZHVtcF9ibG9jayhtbSwgcHJldik7Ci0JfQotCi0JaWYgKHJvb3QpIHsKLQkJcHJfZXJyKCJiYWQg cm9vdCgldSksIGR1bXA6XG4iLCBpKTsKLQkJaWd0X2R1bXBfYmxvY2sobW0sIHJvb3QpOwotCX0K LQotCXJldHVybiBlcnI7Ci19Ci0KLXN0YXRpYyB2b2lkIGlndF9tbV9jb25maWcodTY0ICpzaXpl LCB1NjQgKmNodW5rX3NpemUpCi17Ci0JSTkxNV9STkRfU1RBVEUocHJuZyk7Ci0JdTMyIHMsIG1z OwotCi0JLyogTm90aGluZyBmYW5jeSwganVzdCB0cnkgdG8gZ2V0IGFuIGludGVyZXN0aW5nIGJp dCBwYXR0ZXJuICovCi0KLQlwcmFuZG9tX3NlZWRfc3RhdGUoJnBybmcsIGk5MTVfc2VsZnRlc3Qu cmFuZG9tX3NlZWQpOwotCi0JLyogTGV0IHNpemUgYmUgYSByYW5kb20gbnVtYmVyIG9mIHBhZ2Vz IHVwIHRvIDggR0IgKDJNIHBhZ2VzKSAqLwotCXMgPSAxICsgaTkxNV9wcmFuZG9tX3UzMl9tYXhf c3RhdGUoKEJJVCgzMyAtIDEyKSkgLSAxLCAmcHJuZyk7Ci0JLyogTGV0IHRoZSBjaHVuayBzaXpl IGJlIGEgcmFuZG9tIHBvd2VyIG9mIDIgbGVzcyB0aGFuIHNpemUgKi8KLQltcyA9IEJJVChpOTE1 X3ByYW5kb21fdTMyX21heF9zdGF0ZShpbG9nMihzKSwgJnBybmcpKTsKLQkvKiBSb3VuZCBzaXpl IGRvd24gdG8gdGhlIGNodW5rIHNpemUgKi8KLQlzICY9IC1tczsKLQotCS8qIENvbnZlcnQgZnJv bSBwYWdlcyB0byBieXRlcyAqLwotCSpjaHVua19zaXplID0gKHU2NCltcyA8PCAxMjsKLQkqc2l6 ZSA9ICh1NjQpcyA8PCAxMjsKLX0KLQotc3RhdGljIGludCBpZ3RfYnVkZHlfYWxsb2Nfc21va2Uo dm9pZCAqYXJnKQotewotCXN0cnVjdCBpOTE1X2J1ZGR5X21tIG1tOwotCUlHVF9USU1FT1VUKGVu ZF90aW1lKTsKLQlJOTE1X1JORF9TVEFURShwcm5nKTsKLQl1NjQgY2h1bmtfc2l6ZTsKLQl1NjQg bW1fc2l6ZTsKLQlpbnQgKm9yZGVyOwotCWludCBlcnIsIGk7Ci0KLQlpZ3RfbW1fY29uZmlnKCZt bV9zaXplLCAmY2h1bmtfc2l6ZSk7Ci0KLQlwcl9pbmZvKCJidWRkeV9pbml0IHdpdGggc2l6ZT0l bGx4LCBjaHVua19zaXplPSVsbHhcbiIsIG1tX3NpemUsIGNodW5rX3NpemUpOwotCi0JZXJyID0g aTkxNV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgY2h1bmtfc2l6ZSk7Ci0JaWYgKGVycikgewot CQlwcl9lcnIoImJ1ZGR5X2luaXQgZmFpbGVkKCVkKVxuIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsK LQl9Ci0KLQlvcmRlciA9IGk5MTVfcmFuZG9tX29yZGVyKG1tLm1heF9vcmRlciArIDEsICZwcm5n KTsKLQlpZiAoIW9yZGVyKQotCQlnb3RvIG91dF9maW5pOwotCi0JZm9yIChpID0gMDsgaSA8PSBt bS5tYXhfb3JkZXI7ICsraSkgewotCQlzdHJ1Y3QgaTkxNV9idWRkeV9ibG9jayAqYmxvY2s7Ci0J CWludCBtYXhfb3JkZXIgPSBvcmRlcltpXTsKLQkJYm9vbCB0aW1lb3V0ID0gZmFsc2U7Ci0JCUxJ U1RfSEVBRChibG9ja3MpOwotCQlpbnQgb3JkZXI7Ci0JCXU2NCB0b3RhbDsKLQotCQllcnIgPSBp Z3RfY2hlY2tfbW0oJm1tKTsKLQkJaWYgKGVycikgewotCQkJcHJfZXJyKCJwcmUtbW0gY2hlY2sg ZmFpbGVkLCBhYm9ydFxuIik7Ci0JCQlicmVhazsKLQkJfQotCi0JCXByX2luZm8oImZpbGxpbmcg ZnJvbSBtYXhfb3JkZXI9JXVcbiIsIG1heF9vcmRlcik7Ci0KLQkJb3JkZXIgPSBtYXhfb3JkZXI7 Ci0JCXRvdGFsID0gMDsKLQotCQlkbyB7Ci1yZXRyeToKLQkJCWJsb2NrID0gaTkxNV9idWRkeV9h bGxvYygmbW0sIG9yZGVyKTsKLQkJCWlmIChJU19FUlIoYmxvY2spKSB7Ci0JCQkJZXJyID0gUFRS X0VSUihibG9jayk7Ci0JCQkJaWYgKGVyciA9PSAtRU5PTUVNKSB7Ci0JCQkJCXByX2luZm8oImJ1 ZGR5X2FsbG9jIGhpdCAtRU5PTUVNIHdpdGggb3JkZXI9JWRcbiIsCi0JCQkJCQlvcmRlcik7Ci0J CQkJfSBlbHNlIHsKLQkJCQkJaWYgKG9yZGVyLS0pIHsKLQkJCQkJCWVyciA9IDA7Ci0JCQkJCQln b3RvIHJldHJ5OwotCQkJCQl9Ci0KLQkJCQkJcHJfZXJyKCJidWRkeV9hbGxvYyB3aXRoIG9yZGVy PSVkIGZhaWxlZCglZClcbiIsCi0JCQkJCSAgICAgICBvcmRlciwgZXJyKTsKLQkJCQl9Ci0KLQkJ CQlicmVhazsKLQkJCX0KLQotCQkJbGlzdF9hZGRfdGFpbCgmYmxvY2stPmxpbmssICZibG9ja3Mp OwotCi0JCQlpZiAoaTkxNV9idWRkeV9ibG9ja19vcmRlcihibG9jaykgIT0gb3JkZXIpIHsKLQkJ CQlwcl9lcnIoImJ1ZGR5X2FsbG9jIG9yZGVyIG1pc21hdGNoXG4iKTsKLQkJCQllcnIgPSAtRUlO VkFMOwotCQkJCWJyZWFrOwotCQkJfQotCi0JCQl0b3RhbCArPSBpOTE1X2J1ZGR5X2Jsb2NrX3Np emUoJm1tLCBibG9jayk7Ci0KLQkJCWlmIChfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSkg ewotCQkJCXRpbWVvdXQgPSB0cnVlOwotCQkJCWJyZWFrOwotCQkJfQotCQl9IHdoaWxlICh0b3Rh bCA8IG1tLnNpemUpOwotCi0JCWlmICghZXJyKQotCQkJZXJyID0gaWd0X2NoZWNrX2Jsb2Nrcygm bW0sICZibG9ja3MsIHRvdGFsLCBmYWxzZSk7Ci0KLQkJaTkxNV9idWRkeV9mcmVlX2xpc3QoJm1t LCAmYmxvY2tzKTsKLQotCQlpZiAoIWVycikgewotCQkJZXJyID0gaWd0X2NoZWNrX21tKCZtbSk7 Ci0JCQlpZiAoZXJyKQotCQkJCXByX2VycigicG9zdC1tbSBjaGVjayBmYWlsZWRcbiIpOwotCQl9 Ci0KLQkJaWYgKGVyciB8fCB0aW1lb3V0KQotCQkJYnJlYWs7Ci0KLQkJY29uZF9yZXNjaGVkKCk7 Ci0JfQotCi0JaWYgKGVyciA9PSAtRU5PTUVNKQotCQllcnIgPSAwOwotCi0Ja2ZyZWUob3JkZXIp Owotb3V0X2Zpbmk6Ci0JaTkxNV9idWRkeV9maW5pKCZtbSk7Ci0KLQlyZXR1cm4gZXJyOwotfQot Ci1zdGF0aWMgaW50IGlndF9idWRkeV9hbGxvY19wZXNzaW1pc3RpYyh2b2lkICphcmcpCi17Ci0J Y29uc3QgdW5zaWduZWQgaW50IG1heF9vcmRlciA9IDE2OwotCXN0cnVjdCBpOTE1X2J1ZGR5X2Js b2NrICpibG9jaywgKmJuOwotCXN0cnVjdCBpOTE1X2J1ZGR5X21tIG1tOwotCXVuc2lnbmVkIGlu dCBvcmRlcjsKLQlMSVNUX0hFQUQoYmxvY2tzKTsKLQlpbnQgZXJyOwotCi0JLyoKLQkgKiBDcmVh dGUgYSBwb3Qtc2l6ZWQgbW0sIHRoZW4gYWxsb2NhdGUgb25lIG9mIGVhY2ggcG9zc2libGUKLQkg KiBvcmRlciB3aXRoaW4uIFRoaXMgc2hvdWxkIGxlYXZlIHRoZSBtbSB3aXRoIGV4YWN0bHkgb25l Ci0JICogcGFnZSBsZWZ0LgotCSAqLwotCi0JZXJyID0gaTkxNV9idWRkeV9pbml0KCZtbSwgUEFH RV9TSVpFIDw8IG1heF9vcmRlciwgUEFHRV9TSVpFKTsKLQlpZiAoZXJyKSB7Ci0JCXByX2Vycigi YnVkZHlfaW5pdCBmYWlsZWQoJWQpXG4iLCBlcnIpOwotCQlyZXR1cm4gZXJyOwotCX0KLQlHRU1f QlVHX09OKG1tLm1heF9vcmRlciAhPSBtYXhfb3JkZXIpOwotCi0JZm9yIChvcmRlciA9IDA7IG9y ZGVyIDwgbWF4X29yZGVyOyBvcmRlcisrKSB7Ci0JCWJsb2NrID0gaTkxNV9idWRkeV9hbGxvYygm bW0sIG9yZGVyKTsKLQkJaWYgKElTX0VSUihibG9jaykpIHsKLQkJCXByX2luZm8oImJ1ZGR5X2Fs bG9jIGhpdCAtRU5PTUVNIHdpdGggb3JkZXI9JWRcbiIsCi0JCQkJb3JkZXIpOwotCQkJZXJyID0g UFRSX0VSUihibG9jayk7Ci0JCQlnb3RvIGVycjsKLQkJfQotCi0JCWxpc3RfYWRkX3RhaWwoJmJs b2NrLT5saW5rLCAmYmxvY2tzKTsKLQl9Ci0KLQkvKiBBbmQgbm93IHRoZSBsYXN0IHJlbWFpbmlu ZyBibG9jayBhdmFpbGFibGUgKi8KLQlibG9jayA9IGk5MTVfYnVkZHlfYWxsb2MoJm1tLCAwKTsK LQlpZiAoSVNfRVJSKGJsb2NrKSkgewotCQlwcl9pbmZvKCJidWRkeV9hbGxvYyBoaXQgLUVOT01F TSBvbiBmaW5hbCBhbGxvY1xuIik7Ci0JCWVyciA9IFBUUl9FUlIoYmxvY2spOwotCQlnb3RvIGVy cjsKLQl9Ci0JbGlzdF9hZGRfdGFpbCgmYmxvY2stPmxpbmssICZibG9ja3MpOwotCi0JLyogU2hv dWxkIGJlIGNvbXBsZXRlbHkgZnVsbCEgKi8KLQlmb3IgKG9yZGVyID0gbWF4X29yZGVyOyBvcmRl ci0tOyApIHsKLQkJYmxvY2sgPSBpOTE1X2J1ZGR5X2FsbG9jKCZtbSwgb3JkZXIpOwotCQlpZiAo IUlTX0VSUihibG9jaykpIHsKLQkJCXByX2luZm8oImJ1ZGR5X2FsbG9jIHVuZXhwZWN0ZWRseSBz dWNjZWVkZWQgYXQgb3JkZXIgJWQsIGl0IHNob3VsZCBiZSBmdWxsISIsCi0JCQkJb3JkZXIpOwot CQkJbGlzdF9hZGRfdGFpbCgmYmxvY2stPmxpbmssICZibG9ja3MpOwotCQkJZXJyID0gLUVJTlZB TDsKLQkJCWdvdG8gZXJyOwotCQl9Ci0JfQotCi0JYmxvY2sgPSBsaXN0X2xhc3RfZW50cnkoJmJs b2NrcywgdHlwZW9mKCpibG9jayksIGxpbmspOwotCWxpc3RfZGVsKCZibG9jay0+bGluayk7Ci0J aTkxNV9idWRkeV9mcmVlKCZtbSwgYmxvY2spOwotCi0JLyogQXMgd2UgZnJlZSBpbiBpbmNyZWFz aW5nIHNpemUsIHdlIG1ha2UgYXZhaWxhYmxlIGxhcmdlciBibG9ja3MgKi8KLQlvcmRlciA9IDE7 Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGJsb2NrLCBibiwgJmJsb2NrcywgbGluaykgewot CQlsaXN0X2RlbCgmYmxvY2stPmxpbmspOwotCQlpOTE1X2J1ZGR5X2ZyZWUoJm1tLCBibG9jayk7 Ci0KLQkJYmxvY2sgPSBpOTE1X2J1ZGR5X2FsbG9jKCZtbSwgb3JkZXIpOwotCQlpZiAoSVNfRVJS KGJsb2NrKSkgewotCQkJcHJfaW5mbygiYnVkZHlfYWxsb2MgKHJlYWxsb2MpIGhpdCAtRU5PTUVN IHdpdGggb3JkZXI9JWRcbiIsCi0JCQkJb3JkZXIpOwotCQkJZXJyID0gUFRSX0VSUihibG9jayk7 Ci0JCQlnb3RvIGVycjsKLQkJfQotCQlpOTE1X2J1ZGR5X2ZyZWUoJm1tLCBibG9jayk7Ci0JCW9y ZGVyKys7Ci0JfQotCi0JLyogVG8gY29uZmlybSwgbm93IHRoZSB3aG9sZSBtbSBzaG91bGQgYmUg YXZhaWxhYmxlICovCi0JYmxvY2sgPSBpOTE1X2J1ZGR5X2FsbG9jKCZtbSwgbWF4X29yZGVyKTsK LQlpZiAoSVNfRVJSKGJsb2NrKSkgewotCQlwcl9pbmZvKCJidWRkeV9hbGxvYyAocmVhbGxvYykg aGl0IC1FTk9NRU0gd2l0aCBvcmRlcj0lZFxuIiwKLQkJCW1heF9vcmRlcik7Ci0JCWVyciA9IFBU Ul9FUlIoYmxvY2spOwotCQlnb3RvIGVycjsKLQl9Ci0JaTkxNV9idWRkeV9mcmVlKCZtbSwgYmxv Y2spOwotCi1lcnI6Ci0JaTkxNV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmYmxvY2tzKTsKLQlpOTE1 X2J1ZGR5X2ZpbmkoJm1tKTsKLQlyZXR1cm4gZXJyOwotfQotCi1zdGF0aWMgaW50IGlndF9idWRk eV9hbGxvY19vcHRpbWlzdGljKHZvaWQgKmFyZykKLXsKLQljb25zdCBpbnQgbWF4X29yZGVyID0g MTY7Ci0Jc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOwotCXN0cnVjdCBpOTE1X2J1ZGR5 X21tIG1tOwotCUxJU1RfSEVBRChibG9ja3MpOwotCWludCBvcmRlcjsKLQlpbnQgZXJyOwotCi0J LyoKLQkgKiBDcmVhdGUgYSBtbSB3aXRoIG9uZSBibG9jayBvZiBlYWNoIG9yZGVyIGF2YWlsYWJs ZSwgYW5kCi0JICogdHJ5IHRvIGFsbG9jYXRlIHRoZW0gYWxsLgotCSAqLwotCi0JZXJyID0gaTkx NV9idWRkeV9pbml0KCZtbSwKLQkJCSAgICAgIFBBR0VfU0laRSAqICgoMSA8PCAobWF4X29yZGVy ICsgMSkpIC0gMSksCi0JCQkgICAgICBQQUdFX1NJWkUpOwotCWlmIChlcnIpIHsKLQkJcHJfZXJy KCJidWRkeV9pbml0IGZhaWxlZCglZClcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7Ci0JfQotCUdF TV9CVUdfT04obW0ubWF4X29yZGVyICE9IG1heF9vcmRlcik7Ci0KLQlmb3IgKG9yZGVyID0gMDsg b3JkZXIgPD0gbWF4X29yZGVyOyBvcmRlcisrKSB7Ci0JCWJsb2NrID0gaTkxNV9idWRkeV9hbGxv YygmbW0sIG9yZGVyKTsKLQkJaWYgKElTX0VSUihibG9jaykpIHsKLQkJCXByX2luZm8oImJ1ZGR5 X2FsbG9jIGhpdCAtRU5PTUVNIHdpdGggb3JkZXI9JWRcbiIsCi0JCQkJb3JkZXIpOwotCQkJZXJy ID0gUFRSX0VSUihibG9jayk7Ci0JCQlnb3RvIGVycjsKLQkJfQotCi0JCWxpc3RfYWRkX3RhaWwo JmJsb2NrLT5saW5rLCAmYmxvY2tzKTsKLQl9Ci0KLQkvKiBTaG91bGQgYmUgY29tcGxldGVseSBm dWxsISAqLwotCWJsb2NrID0gaTkxNV9idWRkeV9hbGxvYygmbW0sIDApOwotCWlmICghSVNfRVJS KGJsb2NrKSkgewotCQlwcl9pbmZvKCJidWRkeV9hbGxvYyB1bmV4cGVjdGVkbHkgc3VjY2VlZGVk LCBpdCBzaG91bGQgYmUgZnVsbCEiKTsKLQkJbGlzdF9hZGRfdGFpbCgmYmxvY2stPmxpbmssICZi bG9ja3MpOwotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIGVycjsKLQl9Ci0KLWVycjoKLQlpOTE1 X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZibG9ja3MpOwotCWk5MTVfYnVkZHlfZmluaSgmbW0pOwot CXJldHVybiBlcnI7Ci19Ci0KLXN0YXRpYyBpbnQgaWd0X2J1ZGR5X2FsbG9jX3BhdGhvbG9naWNh bCh2b2lkICphcmcpCi17Ci0JY29uc3QgaW50IG1heF9vcmRlciA9IDE2OwotCXN0cnVjdCBpOTE1 X2J1ZGR5X2Jsb2NrICpibG9jazsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9tbSBtbTsKLQlMSVNUX0hF QUQoYmxvY2tzKTsKLQlMSVNUX0hFQUQoaG9sZXMpOwotCWludCBvcmRlciwgdG9wOwotCWludCBl cnI7Ci0KLQkvKgotCSAqIENyZWF0ZSBhIHBvdC1zaXplZCBtbSwgdGhlbiBhbGxvY2F0ZSBvbmUg b2YgZWFjaCBwb3NzaWJsZQotCSAqIG9yZGVyIHdpdGhpbi4gVGhpcyBzaG91bGQgbGVhdmUgdGhl IG1tIHdpdGggZXhhY3RseSBvbmUKLQkgKiBwYWdlIGxlZnQuIEZyZWUgdGhlIGxhcmdlc3QgYmxv Y2ssIHRoZW4gd2hpdHRsZSBkb3duIGFnYWluLgotCSAqIEV2ZW50dWFsbHkgd2Ugd2lsbCBoYXZl IGEgZnVsbHkgNTAlIGZyYWdtZW50ZWQgbW0uCi0JICovCi0KLQllcnIgPSBpOTE1X2J1ZGR5X2lu aXQoJm1tLCBQQUdFX1NJWkUgPDwgbWF4X29yZGVyLCBQQUdFX1NJWkUpOwotCWlmIChlcnIpIHsK LQkJcHJfZXJyKCJidWRkeV9pbml0IGZhaWxlZCglZClcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7 Ci0JfQotCUdFTV9CVUdfT04obW0ubWF4X29yZGVyICE9IG1heF9vcmRlcik7Ci0KLQlmb3IgKHRv cCA9IG1heF9vcmRlcjsgdG9wOyB0b3AtLSkgewotCQkvKiBNYWtlIHJvb20gYnkgZnJlZWluZyB0 aGUgbGFyZ2VzdCBhbGxvY2F0ZWQgYmxvY2sgKi8KLQkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5 X29yX251bGwoJmJsb2NrcywgdHlwZW9mKCpibG9jayksIGxpbmspOwotCQlpZiAoYmxvY2spIHsK LQkJCWxpc3RfZGVsKCZibG9jay0+bGluayk7Ci0JCQlpOTE1X2J1ZGR5X2ZyZWUoJm1tLCBibG9j ayk7Ci0JCX0KLQotCQlmb3IgKG9yZGVyID0gdG9wOyBvcmRlci0tOyApIHsKLQkJCWJsb2NrID0g aTkxNV9idWRkeV9hbGxvYygmbW0sIG9yZGVyKTsKLQkJCWlmIChJU19FUlIoYmxvY2spKSB7Ci0J CQkJcHJfaW5mbygiYnVkZHlfYWxsb2MgaGl0IC1FTk9NRU0gd2l0aCBvcmRlcj0lZCwgdG9wPSVk XG4iLAotCQkJCQlvcmRlciwgdG9wKTsKLQkJCQllcnIgPSBQVFJfRVJSKGJsb2NrKTsKLQkJCQln b3RvIGVycjsKLQkJCX0KLQkJCWxpc3RfYWRkX3RhaWwoJmJsb2NrLT5saW5rLCAmYmxvY2tzKTsK LQkJfQotCi0JCS8qIFRoZXJlIHNob3VsZCBiZSBvbmUgZmluYWwgcGFnZSBmb3IgdGhpcyBzdWIt YWxsb2NhdGlvbiAqLwotCQlibG9jayA9IGk5MTVfYnVkZHlfYWxsb2MoJm1tLCAwKTsKLQkJaWYg KElTX0VSUihibG9jaykpIHsKLQkJCXByX2luZm8oImJ1ZGR5X2FsbG9jIGhpdCAtRU5PTUVNIGZv ciBob2xlXG4iKTsKLQkJCWVyciA9IFBUUl9FUlIoYmxvY2spOwotCQkJZ290byBlcnI7Ci0JCX0K LQkJbGlzdF9hZGRfdGFpbCgmYmxvY2stPmxpbmssICZob2xlcyk7Ci0KLQkJYmxvY2sgPSBpOTE1 X2J1ZGR5X2FsbG9jKCZtbSwgdG9wKTsKLQkJaWYgKCFJU19FUlIoYmxvY2spKSB7Ci0JCQlwcl9p bmZvKCJidWRkeV9hbGxvYyB1bmV4cGVjdGVkbHkgc3VjY2VlZGVkIGF0IHRvcC1vcmRlciAlZC8l ZCwgaXQgc2hvdWxkIGJlIGZ1bGwhIiwKLQkJCQl0b3AsIG1heF9vcmRlcik7Ci0JCQlsaXN0X2Fk ZF90YWlsKCZibG9jay0+bGluaywgJmJsb2Nrcyk7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290 byBlcnI7Ci0JCX0KLQl9Ci0KLQlpOTE1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZob2xlcyk7Ci0K LQkvKiBOb3RoaW5nIGxhcmdlciB0aGFuIGJsb2NrcyBvZiBjaHVua19zaXplIG5vdyBhdmFpbGFi bGUgKi8KLQlmb3IgKG9yZGVyID0gMTsgb3JkZXIgPD0gbWF4X29yZGVyOyBvcmRlcisrKSB7Ci0J CWJsb2NrID0gaTkxNV9idWRkeV9hbGxvYygmbW0sIG9yZGVyKTsKLQkJaWYgKCFJU19FUlIoYmxv Y2spKSB7Ci0JCQlwcl9pbmZvKCJidWRkeV9hbGxvYyB1bmV4cGVjdGVkbHkgc3VjY2VlZGVkIGF0 IG9yZGVyICVkLCBpdCBzaG91bGQgYmUgZnVsbCEiLAotCQkJCW9yZGVyKTsKLQkJCWxpc3RfYWRk X3RhaWwoJmJsb2NrLT5saW5rLCAmYmxvY2tzKTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3Rv IGVycjsKLQkJfQotCX0KLQotZXJyOgotCWxpc3Rfc3BsaWNlX3RhaWwoJmhvbGVzLCAmYmxvY2tz KTsKLQlpOTE1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZibG9ja3MpOwotCWk5MTVfYnVkZHlfZmlu aSgmbW0pOwotCXJldHVybiBlcnI7Ci19Ci0KLXN0YXRpYyBpbnQgaWd0X2J1ZGR5X2FsbG9jX3Jh bmdlKHZvaWQgKmFyZykKLXsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9tbSBtbTsKLQl1bnNpZ25lZCBs b25nIHBhZ2VfbnVtOwotCUxJU1RfSEVBRChibG9ja3MpOwotCXU2NCBjaHVua19zaXplOwotCXU2 NCBvZmZzZXQ7Ci0JdTY0IHNpemU7Ci0JdTY0IHJlbTsKLQlpbnQgZXJyOwotCi0JaWd0X21tX2Nv bmZpZygmc2l6ZSwgJmNodW5rX3NpemUpOwotCi0JcHJfaW5mbygiYnVkZHlfaW5pdCB3aXRoIHNp emU9JWxseCwgY2h1bmtfc2l6ZT0lbGx4XG4iLCBzaXplLCBjaHVua19zaXplKTsKLQotCWVyciA9 IGk5MTVfYnVkZHlfaW5pdCgmbW0sIHNpemUsIGNodW5rX3NpemUpOwotCWlmIChlcnIpIHsKLQkJ cHJfZXJyKCJidWRkeV9pbml0IGZhaWxlZCglZClcbiIsIGVycik7Ci0JCXJldHVybiBlcnI7Ci0J fQotCi0JZXJyID0gaWd0X2NoZWNrX21tKCZtbSk7Ci0JaWYgKGVycikgewotCQlwcl9lcnIoInBy ZS1tbSBjaGVjayBmYWlsZWQsIGFib3J0LCBhYm9ydCwgYWJvcnQhXG4iKTsKLQkJZ290byBlcnJf ZmluaTsKLQl9Ci0KLQlyZW0gPSBtbS5zaXplOwotCW9mZnNldCA9IDA7Ci0KLQlmb3JfZWFjaF9w cmltZV9udW1iZXJfZnJvbShwYWdlX251bSwgMSwgVUxPTkdfTUFYIC0gMSkgewotCQlzdHJ1Y3Qg aTkxNV9idWRkeV9ibG9jayAqYmxvY2s7Ci0JCUxJU1RfSEVBRCh0bXApOwotCi0JCXNpemUgPSBt aW4ocGFnZV9udW0gKiBtbS5jaHVua19zaXplLCByZW0pOwotCi0JCWVyciA9IGk5MTVfYnVkZHlf YWxsb2NfcmFuZ2UoJm1tLCAmdG1wLCBvZmZzZXQsIHNpemUpOwotCQlpZiAoZXJyKSB7Ci0JCQlp ZiAoZXJyID09IC1FTk9NRU0pIHsKLQkJCQlwcl9pbmZvKCJhbGxvY19yYW5nZSBoaXQgLUVOT01F TSB3aXRoIHNpemU9JWxseFxuIiwKLQkJCQkJc2l6ZSk7Ci0JCQl9IGVsc2UgewotCQkJCXByX2Vy cigiYWxsb2NfcmFuZ2Ugd2l0aCBvZmZzZXQ9JWxseCwgc2l6ZT0lbGx4IGZhaWxlZCglZClcbiIs Ci0JCQkJICAgICAgIG9mZnNldCwgc2l6ZSwgZXJyKTsKLQkJCX0KLQotCQkJYnJlYWs7Ci0JCX0K LQotCQlibG9jayA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmdG1wLAotCQkJCQkJIHN0cnVj dCBpOTE1X2J1ZGR5X2Jsb2NrLAotCQkJCQkJIGxpbmspOwotCQlpZiAoIWJsb2NrKSB7Ci0JCQlw cl9lcnIoImFsbG9jX3JhbmdlIGhhcyBubyBibG9ja3NcbiIpOwotCQkJZXJyID0gLUVJTlZBTDsK LQkJCWJyZWFrOwotCQl9Ci0KLQkJaWYgKGk5MTVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSAh PSBvZmZzZXQpIHsKLQkJCXByX2VycigiYWxsb2NfcmFuZ2Ugc3RhcnQgb2Zmc2V0IG1pc21hdGNo LCBmb3VuZD0lbGx4LCBleHBlY3RlZD0lbGx4XG4iLAotCQkJICAgICAgIGk5MTVfYnVkZHlfYmxv Y2tfb2Zmc2V0KGJsb2NrKSwgb2Zmc2V0KTsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCX0KLQotCQlp ZiAoIWVycikKLQkJCWVyciA9IGlndF9jaGVja19ibG9ja3MoJm1tLCAmdG1wLCBzaXplLCB0cnVl KTsKLQotCQlsaXN0X3NwbGljZV90YWlsKCZ0bXAsICZibG9ja3MpOwotCi0JCWlmIChlcnIpCi0J CQlicmVhazsKLQotCQlvZmZzZXQgKz0gc2l6ZTsKLQotCQlyZW0gLT0gc2l6ZTsKLQkJaWYgKCFy ZW0pCi0JCQlicmVhazsKLQotCQljb25kX3Jlc2NoZWQoKTsKLQl9Ci0KLQlpZiAoZXJyID09IC1F Tk9NRU0pCi0JCWVyciA9IDA7Ci0KLQlpOTE1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZibG9ja3Mp OwotCi0JaWYgKCFlcnIpIHsKLQkJZXJyID0gaWd0X2NoZWNrX21tKCZtbSk7Ci0JCWlmIChlcnIp Ci0JCQlwcl9lcnIoInBvc3QtbW0gY2hlY2sgZmFpbGVkXG4iKTsKLQl9Ci0KLWVycl9maW5pOgot CWk5MTVfYnVkZHlfZmluaSgmbW0pOwotCi0JcmV0dXJuIGVycjsKLX0KLQotc3RhdGljIGludCBp Z3RfYnVkZHlfYWxsb2NfbGltaXQodm9pZCAqYXJnKQotewotCXN0cnVjdCBpOTE1X2J1ZGR5X2Js b2NrICpibG9jazsKLQlzdHJ1Y3QgaTkxNV9idWRkeV9tbSBtbTsKLQljb25zdCB1NjQgc2l6ZSA9 IFU2NF9NQVg7Ci0JaW50IGVycjsKLQotCWVyciA9IGk5MTVfYnVkZHlfaW5pdCgmbW0sIHNpemUs IFBBR0VfU0laRSk7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQotCWlmIChtbS5tYXhfb3Jk ZXIgIT0gSTkxNV9CVUREWV9NQVhfT1JERVIpIHsKLQkJcHJfZXJyKCJtbS5tYXhfb3JkZXIoJWQp ICE9ICVkXG4iLAotCQkgICAgICAgbW0ubWF4X29yZGVyLCBJOTE1X0JVRERZX01BWF9PUkRFUik7 Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0X2Zpbmk7Ci0JfQotCi0JYmxvY2sgPSBpOTE1 X2J1ZGR5X2FsbG9jKCZtbSwgbW0ubWF4X29yZGVyKTsKLQlpZiAoSVNfRVJSKGJsb2NrKSkgewot CQllcnIgPSBQVFJfRVJSKGJsb2NrKTsKLQkJZ290byBvdXRfZmluaTsKLQl9Ci0KLQlpZiAoaTkx NV9idWRkeV9ibG9ja19vcmRlcihibG9jaykgIT0gbW0ubWF4X29yZGVyKSB7Ci0JCXByX2Vycigi YmxvY2sgb3JkZXIoJWQpICE9ICVkXG4iLAotCQkgICAgICAgaTkxNV9idWRkeV9ibG9ja19vcmRl cihibG9jayksIG1tLm1heF9vcmRlcik7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0X2Zy ZWU7Ci0JfQotCi0JaWYgKGk5MTVfYnVkZHlfYmxvY2tfc2l6ZSgmbW0sIGJsb2NrKSAhPQotCSAg ICBCSVRfVUxMKG1tLm1heF9vcmRlcikgKiBQQUdFX1NJWkUpIHsKLQkJcHJfZXJyKCJibG9jayBz aXplKCVsbHUpICE9ICVsbHVcbiIsCi0JCSAgICAgICBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUoJm1t LCBibG9jayksCi0JCSAgICAgICBCSVRfVUxMKG1tLm1heF9vcmRlcikgKiBQQUdFX1NJWkUpOwot CQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dF9mcmVlOwotCX0KLQotb3V0X2ZyZWU6Ci0JaTkx NV9idWRkeV9mcmVlKCZtbSwgYmxvY2spOwotb3V0X2Zpbmk6Ci0JaTkxNV9idWRkeV9maW5pKCZt bSk7Ci0JcmV0dXJuIGVycjsKLX0KLQotaW50IGk5MTVfYnVkZHlfbW9ja19zZWxmdGVzdHModm9p ZCkKLXsKLQlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewotCQlT VUJURVNUKGlndF9idWRkeV9hbGxvY19wZXNzaW1pc3RpYyksCi0JCVNVQlRFU1QoaWd0X2J1ZGR5 X2FsbG9jX29wdGltaXN0aWMpLAotCQlTVUJURVNUKGlndF9idWRkeV9hbGxvY19wYXRob2xvZ2lj YWwpLAotCQlTVUJURVNUKGlndF9idWRkeV9hbGxvY19zbW9rZSksCi0JCVNVQlRFU1QoaWd0X2J1 ZGR5X2FsbG9jX3JhbmdlKSwKLQkJU1VCVEVTVChpZ3RfYnVkZHlfYWxsb2NfbGltaXQpLAotCX07 Ci0KLQlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgTlVMTCk7Ci19CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAppbmRleCAz ZGIzNGQzZWVhNTguLjM0ZTVjYWYzODA5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCkBAIC0zMyw1ICszMyw0IEBAIHNl bGZ0ZXN0KGV2aWN0LCBpOTE1X2dlbV9ldmljdF9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGd0 dCwgaTkxNV9nZW1fZ3R0X21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QoaHVnZXBhZ2VzLCBpOTE1 X2dlbV9odWdlX3BhZ2VfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChjb250ZXh0cywgaTkxNV9n ZW1fY29udGV4dF9tb2NrX3NlbGZ0ZXN0cykKLXNlbGZ0ZXN0KGJ1ZGR5LCBpOTE1X2J1ZGR5X21v Y2tfc2VsZnRlc3RzKQogc2VsZnRlc3QobWVtb3J5X3JlZ2lvbiwgaW50ZWxfbWVtb3J5X3JlZ2lv bl9tb2NrX3NlbGZ0ZXN0cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCmluZGV4IGY4NWZkOGNiZmJmNS4uYzg1ZDUxNmI4NWNk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5 X3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1v cnlfcmVnaW9uLmMKQEAgLTU3LDkgKzU3LDEwIEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfZmlsbCh2 b2lkICphcmcpCiAJTElTVF9IRUFEKG9iamVjdHMpOwogCWludCBlcnIgPSAwOwogCi0JcGFnZV9z aXplID0gbWVtLT5tbS5jaHVua19zaXplOwotCW1heF9wYWdlcyA9IGRpdjY0X3U2NCh0b3RhbCwg cGFnZV9zaXplKTsKKwlwYWdlX3NpemUgPSBtZW0tPmNodW5rX3NpemU7CiAJcmVtID0gdG90YWw7 CityZXRyeToKKwltYXhfcGFnZXMgPSBkaXY2NF91NjQocmVtLCBwYWdlX3NpemUpOwogCiAJZm9y X2VhY2hfcHJpbWVfbnVtYmVyX2Zyb20ocGFnZV9udW0sIDEsIG1heF9wYWdlcykgewogCQlyZXNv dXJjZV9zaXplX3Qgc2l6ZSA9IHBhZ2VfbnVtICogcGFnZV9zaXplOwpAQCAtODUsNiArODYsMTEg QEAgc3RhdGljIGludCBpZ3RfbW9ja19maWxsKHZvaWQgKmFyZykKIAkJZXJyID0gMDsKIAlpZiAo ZXJyID09IC1FTlhJTykgewogCQlpZiAocGFnZV9udW0gKiBwYWdlX3NpemUgPD0gcmVtKSB7CisJ CQlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyICYmIG1heF9wYWdlcyA+IDEpIHsKKwkJCQltYXhf cGFnZXMgPj49IDE7CisJCQkJZ290byByZXRyeTsKKwkJCX0KKwogCQkJcHJfZXJyKCIlcyBmYWls ZWQsIHNwYWNlIHN0aWxsIGxlZnQgaW4gcmVnaW9uXG4iLAogCQkJICAgICAgIF9fZnVuY19fKTsK IAkJCWVyciA9IC1FSU5WQUw7CkBAIC0xOTksMTIgKzIwNSwxOCBAQCBzdGF0aWMgaW50IGlndF9t b2NrX3Jlc2VydmUodm9pZCAqYXJnKQogCWRvIHsKIAkJdTMyIHNpemUgPSBpOTE1X3ByYW5kb21f dTMyX21heF9zdGF0ZShjdXJfYXZhaWwsICZwcm5nKTsKIAorcmV0cnk6CiAJCXNpemUgPSBtYXhf dCh1MzIsIHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSksIFBBR0VfU0laRSk7CiAJCW9iaiA9IGln dF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHNpemUsIDApOwogCQlpZiAoSVNfRVJSKG9i aikpIHsKLQkJCWlmIChQVFJfRVJSKG9iaikgPT0gLUVOWElPKQorCQkJaWYgKFBUUl9FUlIob2Jq KSA9PSAtRU5YSU8pIHsKKwkJCQlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyICYmCisJCQkJICAg IHNpemUgPiBtZW0tPmNodW5rX3NpemUpIHsKKwkJCQkJc2l6ZSA+Pj0gMTsKKwkJCQkJZ290byBy ZXRyeTsKKwkJCQl9CiAJCQkJYnJlYWs7Ci0KKwkJCX0KIAkJCWVyciA9IFBUUl9FUlIob2JqKTsK IAkJCWdvdG8gb3V0X2Nsb3NlOwogCQl9CkBAIC0yMjAsNyArMjMyLDcgQEAgc3RhdGljIGludCBp Z3RfbW9ja19yZXNlcnZlKHZvaWQgKmFyZykKIG91dF9jbG9zZToKIAlrZnJlZShvcmRlcik7CiAJ Y2xvc2Vfb2JqZWN0cyhtZW0sICZvYmplY3RzKTsKLQlpOTE1X2J1ZGR5X2ZyZWVfbGlzdCgmbWVt LT5tbSwgJm1lbS0+cmVzZXJ2ZWQpOworCWludGVsX21lbW9yeV9yZWdpb25fdW5yZXNlcnZlKG1l bSk7CiAJcmV0dXJuIGVycjsKIH0KIApAQCAtMjQwLDcgKzI1Miw3IEBAIHN0YXRpYyBpbnQgaWd0 X21vY2tfY29udGlndW91cyh2b2lkICphcmcpCiAJdG90YWwgPSByZXNvdXJjZV9zaXplKCZtZW0t PnJlZ2lvbik7CiAKIAkvKiBNaW4gc2l6ZSAqLwotCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1l bSwgJm9iamVjdHMsIG1lbS0+bW0uY2h1bmtfc2l6ZSwKKwlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0 ZShtZW0sICZvYmplY3RzLCBtZW0tPmNodW5rX3NpemUsCiAJCQkJSTkxNV9CT19BTExPQ19DT05U SUdVT1VTKTsKIAlpZiAoSVNfRVJSKG9iaikpCiAJCXJldHVybiBQVFJfRVJSKG9iaik7CkBAIC0z MjEsMTQgKzMzMywxNiBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAqYXJn KQogCW1pbiA9IHRhcmdldDsKIAl0YXJnZXQgPSB0b3RhbCA+PiAxOwogCi0JLyogTWFrZSBzdXJl IHdlIGNhbiBzdGlsbCBhbGxvY2F0ZSBhbGwgdGhlIGZyYWdtZW50ZWQgc3BhY2UgKi8KLQlvYmog PSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCB0YXJnZXQsIDApOwotCWlmIChJU19F UlIob2JqKSkgewotCQllcnIgPSBQVFJfRVJSKG9iaik7Ci0JCWdvdG8gZXJyX2Nsb3NlX29iamVj dHM7Ci0JfQorCWlmICghbWVtLT5pc19yYW5nZV9tYW5hZ2VyKSB7CisJCS8qIE1ha2Ugc3VyZSB3 ZSBjYW4gc3RpbGwgYWxsb2NhdGUgYWxsIHRoZSBmcmFnbWVudGVkIHNwYWNlICovCisJCW9iaiA9 IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHRhcmdldCwgMCk7CisJCWlmIChJU19F UlIob2JqKSkgeworCQkJZXJyID0gUFRSX0VSUihvYmopOworCQkJZ290byBlcnJfY2xvc2Vfb2Jq ZWN0czsKKwkJfQogCi0JaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisJCWlndF9vYmplY3RfcmVs ZWFzZShvYmopOworCX0KIAogCS8qCiAJICogRXZlbiB0aG91Z2ggd2UgaGF2ZSBlbm91Z2ggZnJl ZSBzcGFjZSwgd2UgZG9uJ3QgaGF2ZSBhIGJpZyBlbm91Z2gKQEAgLTM0OCw3ICszNjIsNyBAQCBz dGF0aWMgaW50IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAqYXJnKQogCQl9CiAKIAkJdGFyZ2V0 ID4+PSAxOwotCX0gd2hpbGUgKHRhcmdldCA+PSBtZW0tPm1tLmNodW5rX3NpemUpOworCX0gd2hp bGUgKHRhcmdldCA+PSBtZW0tPmNodW5rX3NpemUpOwogCiBlcnJfY2xvc2Vfb2JqZWN0czoKIAls aXN0X3NwbGljZV90YWlsKCZob2xlcywgJm9iamVjdHMpOwpAQCAtMzY4LDcgKzM4Miw3IEBAIHN0 YXRpYyBpbnQgaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJnKQogCiAJLyoKIAkg KiBTYW5pdHkgY2hlY2sgd2UgY2FuIHN0aWxsIGFsbG9jYXRlIGV2ZXJ5dGhpbmcgZXZlbiBpZiB0 aGUKLQkgKiBtbS5tYXhfb3JkZXIgIT0gbW0uc2l6ZS4gaS5lIG91ciBzdGFydGluZyBhZGRyZXNz IHNwYWNlIHNpemUgaXMgbm90IGEKKwkgKiBtYXhfb3JkZXIgIT0gbW0uc2l6ZS4gaS5lIG91ciBz dGFydGluZyBhZGRyZXNzIHNwYWNlIHNpemUgaXMgbm90IGEKIAkgKiBwb3dlci1vZi10d28uCiAJ ICovCiAKQEAgLTM3NywxNyArMzkxLDEwIEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfc3BsaW50ZXJl ZF9yZWdpb24odm9pZCAqYXJnKQogCWlmIChJU19FUlIobWVtKSkKIAkJcmV0dXJuIFBUUl9FUlIo bWVtKTsKIAotCWlmIChtZW0tPm1tLnNpemUgIT0gc2l6ZSkgewotCQlwcl9lcnIoIiVzIHNpemUg bWlzbWF0Y2goJWxsdSAhPSAlbGx1KVxuIiwKLQkJICAgICAgIF9fZnVuY19fLCBtZW0tPm1tLnNp emUsIHNpemUpOwotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dF9wdXQ7Ci0JfQotCiAJZXhw ZWN0ZWRfb3JkZXIgPSBnZXRfb3JkZXIocm91bmRkb3duX3Bvd19vZl90d28oc2l6ZSkpOwotCWlm IChtZW0tPm1tLm1heF9vcmRlciAhPSBleHBlY3RlZF9vcmRlcikgeworCWlmIChtZW0tPm1heF9v cmRlciAhPSBleHBlY3RlZF9vcmRlcikgewogCQlwcl9lcnIoIiVzIG9yZGVyIG1pc21hdGNoKCV1 ICE9ICV1KVxuIiwKLQkJICAgICAgIF9fZnVuY19fLCBtZW0tPm1tLm1heF9vcmRlciwgZXhwZWN0 ZWRfb3JkZXIpOworCQkgICAgICAgX19mdW5jX18sIG1lbS0+bWF4X29yZGVyLCBleHBlY3RlZF9v cmRlcik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0X3B1dDsKIAl9CkBAIC00MDgsMTIg KzQxNSwxNSBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKHZvaWQgKmFy ZykKIAkgKiBzdXJlIHRoYXQgZG9lcyBpbmRlZWQgaG9sZCB0cnVlLgogCSAqLwogCi0Jb2JqID0g aWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgc2l6ZSwgSTkxNV9CT19BTExPQ19DT05U SUdVT1VTKTsKLQlpZiAoIUlTX0VSUihvYmopKSB7Ci0JCXByX2VycigiJXMgdG9vIGxhcmdlIGNv bnRpZ3VvdXMgYWxsb2NhdGlvbiB3YXMgbm90IHJlamVjdGVkXG4iLAotCQkgICAgICAgX19mdW5j X18pOwotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dF9jbG9zZTsKKwlpZiAoIW1lbS0+aXNf cmFuZ2VfbWFuYWdlcikgeworCQlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3Rz LCBzaXplLAorCQkJCQlJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpOworCQlpZiAoIUlTX0VSUihv YmopKSB7CisJCQlwcl9lcnIoIiVzIHRvbyBsYXJnZSBjb250aWd1b3VzIGFsbG9jYXRpb24gd2Fz IG5vdCByZWplY3RlZFxuIiwKKwkJCSAgICAgICBfX2Z1bmNfXyk7CisJCQllcnIgPSAtRUlOVkFM OworCQkJZ290byBvdXRfY2xvc2U7CisJCX0KIAl9CiAKIAlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0 ZShtZW0sICZvYmplY3RzLCByb3VuZGRvd25fcG93X29mX3R3byhzaXplKSwKQEAgLTQzMiw2OCAr NDQyLDYgQEAgc3RhdGljIGludCBpZ3RfbW9ja19zcGxpbnRlcmVkX3JlZ2lvbih2b2lkICphcmcp CiAJcmV0dXJuIGVycjsKIH0KIAotI2lmbmRlZiBTWl84RwotI2RlZmluZSBTWl84RyBCSVRfVUxM KDMzKQotI2VuZGlmCi0KLXN0YXRpYyBpbnQgaWd0X21vY2tfbWF4X3NlZ21lbnQodm9pZCAqYXJn KQotewotCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfc2VnbWVudCA9IGk5MTVfc2dfc2VnbWVudF9z aXplKCk7Ci0Jc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGFyZzsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkxNTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOwotCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jazsKLQlzdHJ1Y3Qg c2NhdHRlcmxpc3QgKnNnOwotCUxJU1RfSEVBRChvYmplY3RzKTsKLQl1NjQgc2l6ZTsKLQlpbnQg ZXJyID0gMDsKLQotCS8qCi0JICogV2hpbGUgd2UgbWF5IGNyZWF0ZSB2ZXJ5IGxhcmdlIGNvbnRp Z3VvdXMgYmxvY2tzLCB3ZSBtYXkgbmVlZAotCSAqIHRvIGJyZWFrIHRob3NlIGRvd24gZm9yIGNv bnN1bXB0aW9uIGVsc2V3aGVyZS4gSW4gcGFydGljdWxhciwKLQkgKiBkbWEtbWFwcGluZyB3aXRo IHNjYXR0ZXJsaXN0IGVsZW1lbnRzIGhhdmUgYW4gaW1wbGljaXQgbGltaXQgb2YKLQkgKiBVSU5U X01BWCBvbiBlYWNoIGVsZW1lbnQuCi0JICovCi0KLQlzaXplID0gU1pfOEc7Ci0JbWVtID0gbW9j a19yZWdpb25fY3JlYXRlKGk5MTUsIDAsIHNpemUsIFBBR0VfU0laRSwgMCk7Ci0JaWYgKElTX0VS UihtZW0pKQotCQlyZXR1cm4gUFRSX0VSUihtZW0pOwotCi0Jb2JqID0gaWd0X29iamVjdF9jcmVh dGUobWVtLCAmb2JqZWN0cywgc2l6ZSwgMCk7Ci0JaWYgKElTX0VSUihvYmopKSB7Ci0JCWVyciA9 IFBUUl9FUlIob2JqKTsKLQkJZ290byBvdXRfcHV0OwotCX0KLQotCXNpemUgPSAwOwotCWxpc3Rf Zm9yX2VhY2hfZW50cnkoYmxvY2ssICZvYmotPm1tLmJsb2NrcywgbGluaykgewotCQlpZiAoaTkx NV9idWRkeV9ibG9ja19zaXplKCZtZW0tPm1tLCBibG9jaykgPiBzaXplKQotCQkJc2l6ZSA9IGk5 MTVfYnVkZHlfYmxvY2tfc2l6ZSgmbWVtLT5tbSwgYmxvY2spOwotCX0KLQlpZiAoc2l6ZSA8IG1h eF9zZWdtZW50KSB7Ci0JCXByX2VycigiJXM6IEZhaWxlZCB0byBjcmVhdGUgYSBodWdlIGNvbnRp Z3VvdXMgYmxvY2sgWz4gJXVdLCBsYXJnZXN0IGJsb2NrICVsbGRcbiIsCi0JCSAgICAgICBfX2Z1 bmNfXywgbWF4X3NlZ21lbnQsIHNpemUpOwotCQllcnIgPSAtRUlOVkFMOwotCQlnb3RvIG91dF9j bG9zZTsKLQl9Ci0KLQlmb3IgKHNnID0gb2JqLT5tbS5wYWdlcy0+c2dsOyBzZzsgc2cgPSBzZ19u ZXh0KHNnKSkgewotCQlpZiAoc2ctPmxlbmd0aCA+IG1heF9zZWdtZW50KSB7Ci0JCQlwcl9lcnIo IiVzOiBDcmVhdGVkIGFuIG92ZXJzaXplZCBzY2F0dGVybGlzdCBlbnRyeSwgJXUgPiAldVxuIiwK LQkJCSAgICAgICBfX2Z1bmNfXywgc2ctPmxlbmd0aCwgbWF4X3NlZ21lbnQpOwotCQkJZXJyID0g LUVJTlZBTDsKLQkJCWdvdG8gb3V0X2Nsb3NlOwotCQl9Ci0JfQotCi1vdXRfY2xvc2U6Ci0JY2xv c2Vfb2JqZWN0cyhtZW0sICZvYmplY3RzKTsKLW91dF9wdXQ6Ci0JaW50ZWxfbWVtb3J5X3JlZ2lv bl9wdXQobWVtKTsKLQlyZXR1cm4gZXJyOwotfQotCiBzdGF0aWMgaW50IGlndF9ncHVfd3JpdGVf ZHcoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1h LAogCQkJICAgIHUzMiBkd29yZCwKQEAgLTEwOTgsNyArMTA0Niw2IEBAIGludCBpbnRlbF9tZW1v cnlfcmVnaW9uX21vY2tfc2VsZnRlc3RzKHZvaWQpCiAJCVNVQlRFU1QoaWd0X21vY2tfZmlsbCks CiAJCVNVQlRFU1QoaWd0X21vY2tfY29udGlndW91cyksCiAJCVNVQlRFU1QoaWd0X21vY2tfc3Bs aW50ZXJlZF9yZWdpb24pLAotCQlTVUJURVNUKGlndF9tb2NrX21heF9zZWdtZW50KSwKIAl9Owog CXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW07CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19yZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5j CmluZGV4IDVkMmQwMTBhMWUyMi4uOTA2NzYwMWFhNzE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYwpAQCAtMSwxNyArMSw1MyBAQAogLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IE1JVAogLyoKLSAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENv cnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgwqkgMjAxOS0yMDIxIEludGVsIENvcnBvcmF0aW9uCiAg Ki8KIAorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CisKICNpbmNsdWRlICJnZW0vaTkx NV9nZW1fcmVnaW9uLmgiCiAjaW5jbHVkZSAiaW50ZWxfbWVtb3J5X3JlZ2lvbi5oIgorI2luY2x1 ZGUgImludGVsX3JlZ2lvbl90dG0uaCIKIAogI2luY2x1ZGUgIm1vY2tfcmVnaW9uLmgiCiAKK3N0 YXRpYyB2b2lkIG1vY2tfcmVnaW9uX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAorCQkJCSAgc3RydWN0IHNnX3RhYmxlICpwYWdlcykKK3sKKwlpbnRlbF9yZWdpb25f dHRtX25vZGVfZnJlZShvYmotPm1tLnJlZ2lvbiwgb2JqLT5tbS5zdF9tbV9ub2RlKTsKKwlzZ19m cmVlX3RhYmxlKHBhZ2VzKTsKKwlrZnJlZShwYWdlcyk7Cit9CisKK3N0YXRpYyBpbnQgbW9ja19y ZWdpb25fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJdW5z aWduZWQgaW50IGZsYWdzOworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CisKKwlmbGFncyA9IEk5 MTVfQUxMT0NfTUlOX1BBR0VfU0laRTsKKwlpZiAob2JqLT5mbGFncyAmIEk5MTVfQk9fQUxMT0Nf Q09OVElHVU9VUykKKwkJZmxhZ3MgfD0gSTkxNV9BTExPQ19DT05USUdVT1VTOworCisJb2JqLT5t bS5zdF9tbV9ub2RlID0gaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2FsbG9jKG9iai0+bW0ucmVnaW9u LAorCQkJCQkJCSBvYmotPmJhc2Uuc2l6ZSwKKwkJCQkJCQkgZmxhZ3MpOworCWlmIChJU19FUlIo b2JqLT5tbS5zdF9tbV9ub2RlKSkKKwkJcmV0dXJuIFBUUl9FUlIob2JqLT5tbS5zdF9tbV9ub2Rl KTsKKworCXBhZ2VzID0gaW50ZWxfcmVnaW9uX3R0bV9ub2RlX3RvX3N0KG9iai0+bW0ucmVnaW9u LCBvYmotPm1tLnN0X21tX25vZGUpOworCWlmIChJU19FUlIocGFnZXMpKQorCQlyZXR1cm4gUFRS X0VSUihwYWdlcyk7CisKKwlfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBwYWdlcywK KwkJCQkgICAgaTkxNV9zZ19kbWFfcGFnZV9zaXplcyhwYWdlcy0+c2dsKSk7CisKKwlyZXR1cm4g MDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBtb2Nr X3JlZ2lvbl9vYmpfb3BzID0gewogCS5uYW1lID0gIm1vY2stcmVnaW9uIiwKLQkuZ2V0X3BhZ2Vz ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19idWRkeSwKLQkucHV0X3BhZ2VzID0gaTkxNV9n ZW1fb2JqZWN0X3B1dF9wYWdlc19idWRkeSwKKwkuZ2V0X3BhZ2VzID0gbW9ja19yZWdpb25fZ2V0 X3BhZ2VzLAorCS5wdXRfcGFnZXMgPSBtb2NrX3JlZ2lvbl9wdXRfcGFnZXMsCiAJLnJlbGVhc2Ug PSBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tZW1vcnlfcmVnaW9uLAogfTsKIApAQCAtMjMsNyAr NTksNyBAQCBzdGF0aWMgaW50IG1vY2tfb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9y ZWdpb24gKm1lbSwKIAlzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfY2xhc3M7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBtZW0tPmk5MTU7CiAKLQlpZiAoc2l6ZSA+ IG1lbS0+bW0uc2l6ZSkKKwlpZiAoc2l6ZSA+IHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9uKSkK IAkJcmV0dXJuIC1FMkJJRzsKIAogCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdCgmaTkxNS0+ ZHJtLCAmb2JqLT5iYXNlLCBzaXplKTsKQEAgLTM5LDggKzc1LDggQEAgc3RhdGljIGludCBtb2Nr X29iamVjdF9pbml0KHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiB9CiAKIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgbW9ja19yZWdpb25fb3BzID0g ewotCS5pbml0ID0gaW50ZWxfbWVtb3J5X3JlZ2lvbl9pbml0X2J1ZGR5LAotCS5yZWxlYXNlID0g aW50ZWxfbWVtb3J5X3JlZ2lvbl9yZWxlYXNlX2J1ZGR5LAorCS5pbml0ID0gaW50ZWxfcmVnaW9u X3R0bV9pbml0LAorCS5yZWxlYXNlID0gaW50ZWxfcmVnaW9uX3R0bV9maW5pLAogCS5pbml0X29i amVjdCA9IG1vY2tfb2JqZWN0X2luaXQsCiB9OwogCkBAIC01Miw1ICs4OCw2IEBAIG1vY2tfcmVn aW9uX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAgcmVzb3VyY2Vf c2l6ZV90IGlvX3N0YXJ0KQogewogCXJldHVybiBpbnRlbF9tZW1vcnlfcmVnaW9uX2NyZWF0ZShp OTE1LCBzdGFydCwgc2l6ZSwgbWluX3BhZ2Vfc2l6ZSwKLQkJCQkJICBpb19zdGFydCwgJm1vY2tf cmVnaW9uX29wcyk7CisJCQkJCSAgaW9fc3RhcnQsIElOVEVMX01FTU9SWV9NT0NLLCAwLAorCQkJ CQkgICZtb2NrX3JlZ2lvbl9vcHMpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0 bS90dG1fcmFuZ2VfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fcmFuZ2VfbWFu YWdlci5jCmluZGV4IGI5ZDVkYTZlNmE4MS4uNjk1N2RmYjBjZjVhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdHRtL3R0bV9yYW5nZV9tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3R0bS90dG1fcmFuZ2VfbWFuYWdlci5jCkBAIC0xMjUsNTUgKzEyNSw3NiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyX2Z1bmMgdHRtX3JhbmdlX21hbmFnZXJfZnVu YyA9IHsKIAkuZGVidWcgPSB0dG1fcmFuZ2VfbWFuX2RlYnVnCiB9OwogCi1pbnQgdHRtX3Jhbmdl X21hbl9pbml0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAotCQkgICAgICAgdW5zaWduZWQgdHlw ZSwgYm9vbCB1c2VfdHQsCi0JCSAgICAgICB1bnNpZ25lZCBsb25nIHBfc2l6ZSkKK3N0cnVjdCB0 dG1fcmVzb3VyY2VfbWFuYWdlciAqCit0dG1fcmFuZ2VfbWFuX2luaXRfc3RhbmRhbG9uZSh1bnNp Z25lZCBsb25nIHNpemUsIGJvb2wgdXNlX3R0KQogewogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFu YWdlciAqbWFuOwogCXN0cnVjdCB0dG1fcmFuZ2VfbWFuYWdlciAqcm1hbjsKIAogCXJtYW4gPSBr emFsbG9jKHNpemVvZigqcm1hbiksIEdGUF9LRVJORUwpOwogCWlmICghcm1hbikKLQkJcmV0dXJu IC1FTk9NRU07CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCiAJbWFuID0gJnJtYW4tPm1h bmFnZXI7CiAJbWFuLT51c2VfdHQgPSB1c2VfdHQ7CiAKIAltYW4tPmZ1bmMgPSAmdHRtX3Jhbmdl X21hbmFnZXJfZnVuYzsKIAotCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX2luaXQobWFuLCBwX3NpemUp OworCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX2luaXQobWFuLCBzaXplKTsKIAotCWRybV9tbV9pbml0 KCZybWFuLT5tbSwgMCwgcF9zaXplKTsKKwlkcm1fbW1faW5pdCgmcm1hbi0+bW0sIDAsIHNpemUp OwogCXNwaW5fbG9ja19pbml0KCZybWFuLT5sb2NrKTsKIAotCXR0bV9zZXRfZHJpdmVyX21hbmFn ZXIoYmRldiwgdHlwZSwgJnJtYW4tPm1hbmFnZXIpOworCXJldHVybiBtYW47Cit9CitFWFBPUlRf U1lNQk9MKHR0bV9yYW5nZV9tYW5faW5pdF9zdGFuZGFsb25lKTsKKworaW50IHR0bV9yYW5nZV9t YW5faW5pdChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKKwkJICAgICAgIHVuc2lnbmVkIGludCB0 eXBlLCBib29sIHVzZV90dCwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgcF9zaXplKQoreworCXN0 cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuOworCisJbWFuID0gdHRtX3JhbmdlX21hbl9p bml0X3N0YW5kYWxvbmUocF9zaXplLCB1c2VfdHQpOworCWlmIChJU19FUlIobWFuKSkKKwkJcmV0 dXJuIFBUUl9FUlIobWFuKTsKKwogCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX3NldF91c2VkKG1hbiwg dHJ1ZSk7CisJdHRtX3NldF9kcml2ZXJfbWFuYWdlcihiZGV2LCB0eXBlLCBtYW4pOworCiAJcmV0 dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKHR0bV9yYW5nZV9tYW5faW5pdCk7CiAKK3ZvaWQgdHRt X3JhbmdlX21hbl9maW5pX3N0YW5kYWxvbmUoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpt YW4pCit7CisJc3RydWN0IHR0bV9yYW5nZV9tYW5hZ2VyICpybWFuID0gdG9fcmFuZ2VfbWFuYWdl cihtYW4pOworCXN0cnVjdCBkcm1fbW0gKm1tID0gJnJtYW4tPm1tOworCisJc3Bpbl9sb2NrKCZy bWFuLT5sb2NrKTsKKwlkcm1fbW1fY2xlYW4obW0pOworCWRybV9tbV90YWtlZG93bihtbSk7CisJ c3Bpbl91bmxvY2soJnJtYW4tPmxvY2spOworCisJdHRtX3Jlc291cmNlX21hbmFnZXJfY2xlYW51 cChtYW4pOworCWtmcmVlKHJtYW4pOworfQorRVhQT1JUX1NZTUJPTCh0dG1fcmFuZ2VfbWFuX2Zp bmlfc3RhbmRhbG9uZSk7CisKIGludCB0dG1fcmFuZ2VfbWFuX2Zpbmkoc3RydWN0IHR0bV9kZXZp Y2UgKmJkZXYsCiAJCSAgICAgICB1bnNpZ25lZCB0eXBlKQogewogCXN0cnVjdCB0dG1fcmVzb3Vy Y2VfbWFuYWdlciAqbWFuID0gdHRtX21hbmFnZXJfdHlwZShiZGV2LCB0eXBlKTsKLQlzdHJ1Y3Qg dHRtX3JhbmdlX21hbmFnZXIgKnJtYW4gPSB0b19yYW5nZV9tYW5hZ2VyKG1hbik7Ci0Jc3RydWN0 IGRybV9tbSAqbW0gPSAmcm1hbi0+bW07CiAJaW50IHJldDsKIAogCXR0bV9yZXNvdXJjZV9tYW5h Z2VyX3NldF91c2VkKG1hbiwgZmFsc2UpOwotCiAJcmV0ID0gdHRtX3Jlc291cmNlX21hbmFnZXJf ZXZpY3RfYWxsKGJkZXYsIG1hbik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXNwaW5f bG9jaygmcm1hbi0+bG9jayk7Ci0JZHJtX21tX2NsZWFuKG1tKTsKLQlkcm1fbW1fdGFrZWRvd24o bW0pOwotCXNwaW5fdW5sb2NrKCZybWFuLT5sb2NrKTsKLQotCXR0bV9yZXNvdXJjZV9tYW5hZ2Vy X2NsZWFudXAobWFuKTsKIAl0dG1fc2V0X2RyaXZlcl9tYW5hZ2VyKGJkZXYsIHR5cGUsIE5VTEwp OwotCWtmcmVlKHJtYW4pOworCXR0bV9yYW5nZV9tYW5fZmluaV9zdGFuZGFsb25lKG1hbik7CisK IAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0wodHRtX3JhbmdlX21hbl9maW5pKTsKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggYi9pbmNsdWRlL2RybS90dG0v dHRtX2JvX2RyaXZlci5oCmluZGV4IGRiY2NhYzk1N2Y4Zi4uNzM0YjE3MTJlYTcyIDEwMDY0NAot LS0gYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCisrKyBiL2luY2x1ZGUvZHJtL3R0 bS90dG1fYm9fZHJpdmVyLmgKQEAgLTMyMSw2ICszMjEsMjAgQEAgaW50IHR0bV9yYW5nZV9tYW5f aW5pdChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKIAkJICAgICAgIHVuc2lnbmVkIHR5cGUsIGJv b2wgdXNlX3R0LAogCQkgICAgICAgdW5zaWduZWQgbG9uZyBwX3NpemUpOwogCisvKioKKyAqIHR0 bV9yYW5nZV9tYW5faW5pdF9zdGFuZGFsb25lIC0gSW5pdGlhbGl6ZSBhIHR0bSByYW5nZSBtYW5h Z2VyIHdpdGhvdXQKKyAqIGRldmljZSBpbnRlcmFjdGlvbi4KKyAqIEBzaXplOiBTaXplIG9mIHRo ZSBhcmVhIHRvIGJlIG1hbmFnZWQgaW4gcGFnZXMuCisgKiBAdXNlX3R0OiBUaGUgbWVtb3J5IHR5 cGUgcmVxdWlyZXMgdHQgYmFja2luZy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVk IGZvciBzZWxmdGVzdHMuIEl0IGluaXRpYWxpemVzIGEgcmFuZ2UgbWFuYWdlcgorICogd2l0aG91 dCBhbnkgZGV2aWNlIGludGVyYWN0aW9uLgorICoKKyAqIFJldHVybjogcG9pbnRlciB0byBhIHJh bmdlIG1hbmFnZXIgb24gc3VjY2Vzcy4gRXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgorICovCitz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKgordHRtX3JhbmdlX21hbl9pbml0X3N0YW5kYWxv bmUodW5zaWduZWQgbG9uZyBzaXplLCBib29sIHVzZV90dCk7CisKIC8qKgogICogdHRtX3Jhbmdl X21hbl9maW5pCiAgKgpAQCAtMzMyLDQgKzM0NiwxMyBAQCBpbnQgdHRtX3JhbmdlX21hbl9pbml0 KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogaW50IHR0bV9yYW5nZV9tYW5fZmluaShzdHJ1Y3Qg dHRtX2RldmljZSAqYmRldiwKIAkJICAgICAgIHVuc2lnbmVkIHR5cGUpOwogCisvKioKKyAqIHR0 bV9yYW5nZV9tYW5fZmluaV9zdGFuZGFsb25lCisgKiBAbWFuOiBUaGUgcmFuZ2UgbWFuYWdlcgor ICoKKyAqIFRlYXIgZG93biBhIHJhbmdlIG1hbmFnZXIgaW5pdGlhbGl6ZWQgd2l0aAorICogdHRt X3JhbmdlX21hbmFnZXJfaW5pdF9zdGFuZGFsb25lKCkuCisgKi8KK3ZvaWQgdHRtX3JhbmdlX21h bl9maW5pX3N0YW5kYWxvbmUoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4pOworCiAj ZW5kaWYKLS0gCjIuMzAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==