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 68B7CC49EA2 for ; Wed, 16 Jun 2021 15:25:47 +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 3B2656128B for ; Wed, 16 Jun 2021 15:25:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3B2656128B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 A71EA6E5C8; Wed, 16 Jun 2021 15:25:37 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 484806E04B; Wed, 16 Jun 2021 15:25:33 +0000 (UTC) IronPort-SDR: yS6EpC/+y/ruebIrk/NE1Oa0ePTgsxXAtm6W68R7Xx8LSmMK9IyLDA8ToK/liDy/aLT4aPXpjf lnrLpRBp1uKA== X-IronPort-AV: E=McAfee;i="6200,9189,10016"; a="203175178" X-IronPort-AV: E=Sophos;i="5.83,278,1616482800"; d="scan'208";a="203175178" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2021 08:25:33 -0700 IronPort-SDR: 1F3NFrbP6mtbGZy00dQovulItSeWEbJyZPYvfjYjubD9q7pmWtUDkAyqPiv7aOy6TKgg8+ziDR XVWWVDNDc5Pw== X-IronPort-AV: E=Sophos;i="5.83,278,1616482800"; d="scan'208";a="479129912" Received: from mrapopor-mobl.ger.corp.intel.com (HELO mwauld-desk1.intel.com) ([10.213.236.122]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2021 08:25:31 -0700 From: Matthew Auld To: intel-gfx@lists.freedesktop.org Date: Wed, 16 Jun 2021 16:25:00 +0100 Message-Id: <20210616152501.394518-6-matthew.auld@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210616152501.394518-1-matthew.auld@intel.com> References: <20210616152501.394518-1-matthew.auld@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v5 6/7] drm/i915/ttm: switch over to ttm_buddy_man 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?= , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" TW92ZSBiYWNrIHRvIHRoZSBidWRkeSBhbGxvY2F0b3IgZm9yIG1hbmFnaW5nIGRldmljZSBsb2Nh bCBtZW1vcnksIGFuZApyZXN0b3JlIHRoZSBsb3N0IG1vY2sgc2VsZnRlc3RzLiBLZWVwIGFyb3Vu ZCB0aGUgcmFuZ2UgbWFuYWdlciByZWxhdGVkCmJpdHMsIHNpbmNlIHdlIGxpa2VseSBuZWVkIHRo aXMgZm9yIG1hbmFnaW5nIHN0b2xlbiBhdCBzb21lIHBvaW50LiBGb3IKc3RvbGVuIHdlIGFsc28g ZG9uJ3QgbmVlZCB0byByZXNlcnZlIGFueXRoaW5nIHNvIG5vIG5lZWQgdG8gc3VwcG9ydCBhCmdl bmVyaWMgcmVzZXJ2ZSBpbnRlcmZhY2UuCgp2MihUaG9tYXMpOgogICAgLSBiby0+cGFnZV9hbGln bm1lbnQgaXMgaW4gcGFnZSB1bml0cywgbm90IGJ5dGVzCgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3 IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhv bWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0 csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jICAgICAgIHwgIDIwICstLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jICAgIHwgIDU1ICstLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oICAgIHwgIDE3IC0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMgICAgICAgfCAxMjIgKysrKystLS0tLS0tLQog Li4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgMTcwICsrKysr KysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9u LmMgIHwgIDEyICstCiA2IGZpbGVzIGNoYW5nZWQsIDE4MCBpbnNlcnRpb25zKCspLCAyMTYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jCmluZGV4IDIw MTE5ZWE5YzQxOC4uYjg3MzlmM2QzNDYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3R0bS5jCkBAIC0xNzUsMTEgKzE3NSw3IEBAIHN0YXRpYyBib29sIGk5MTVfdHRtX2V2aWN0 aW9uX3ZhbHVhYmxlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGk5MTVfdHRtX3RvX2dlbShibyk7CiAKIAkvKiBXaWxsIGRv IGZvciBub3cuIE91ciBwaW5uZWQgb2JqZWN0cyBhcmUgc3RpbGwgb24gVFRNJ3MgTFJVIGxpc3Rz ICovCi0JaWYgKCFpOTE1X2dlbV9vYmplY3RfZXZpY3RhYmxlKG9iaikpCi0JCXJldHVybiBmYWxz ZTsKLQotCS8qIFRoaXMgaXNuJ3QgdmFsaWQgd2l0aCBhIGJ1ZGR5IGFsbG9jYXRvciAqLwotCXJl dHVybiB0dG1fYm9fZXZpY3Rpb25fdmFsdWFibGUoYm8sIHBsYWNlKTsKKwlyZXR1cm4gaTkxNV9n ZW1fb2JqZWN0X2V2aWN0YWJsZShvYmopOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X3R0bV9ldmlj dF9mbGFncyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLApAQCAtNjU0LDIwICs2NTAsOCBA QCBpbnQgX19pOTE1X2dlbV90dG1fb2JqZWN0X2luaXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKm1lbSwKIAlzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfY2xhc3M7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBtZW0tPmk5MTU7CiAJZW51bSB0dG1fYm9fdHlw ZSBib190eXBlOwotCXNpemVfdCBhbGlnbm1lbnQgPSAwOwogCWludCByZXQ7CiAKLQkvKiBBZGp1 c3QgYWxpZ25tZW50IHRvIEdQVS0gYW5kIENQVSBodWdlIHBhZ2Ugc2l6ZXMuICovCi0KLQlpZiAo bWVtLT5pc19yYW5nZV9tYW5hZ2VyKSB7Ci0JCWlmIChzaXplID49IFNaXzFHKQotCQkJYWxpZ25t ZW50ID0gU1pfMUcgPj4gUEFHRV9TSElGVDsKLQkJZWxzZSBpZiAoc2l6ZSA+PSBTWl8yTSkKLQkJ CWFsaWdubWVudCA9IFNaXzJNID4+IFBBR0VfU0hJRlQ7Ci0JCWVsc2UgaWYgKHNpemUgPj0gU1pf NjRLKQotCQkJYWxpZ25tZW50ID0gU1pfNjRLID4+IFBBR0VfU0hJRlQ7Ci0JfQotCiAJZHJtX2dl bV9wcml2YXRlX29iamVjdF9pbml0KCZpOTE1LT5kcm0sICZvYmotPmJhc2UsIHNpemUpOwogCWk5 MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX3R0bV9vYmpfb3BzLCAmbG9ja19jbGFz cywgZmxhZ3MpOwogCWk5MTVfZ2VtX29iamVjdF9pbml0X21lbW9yeV9yZWdpb24ob2JqLCBtZW0p OwpAQCAtNjg4LDcgKzY3Miw3IEBAIGludCBfX2k5MTVfZ2VtX3R0bV9vYmplY3RfaW5pdChzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCSAqLwogCW9iai0+YmFzZS52bWFfbm9kZS5k cml2ZXJfcHJpdmF0ZSA9IGk5MTVfZ2VtX3RvX3R0bShvYmopOwogCXJldCA9IHR0bV9ib19pbml0 KCZpOTE1LT5iZGV2LCBpOTE1X2dlbV90b190dG0ob2JqKSwgc2l6ZSwKLQkJCSAgYm9fdHlwZSwg Jmk5MTVfc3lzX3BsYWNlbWVudCwgYWxpZ25tZW50LAorCQkJICBib190eXBlLCAmaTkxNV9zeXNf cGxhY2VtZW50LCAxLAogCQkJICB0cnVlLCBOVUxMLCBOVUxMLCBpOTE1X3R0bV9ib19kZXN0cm95 KTsKIAogCWlmICghcmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lv bi5jCmluZGV4IDEyZmI1NDIzZmQ1ZS4uZGY1OWY4ODRkMzdjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAi aW50ZWxfbWVtb3J5X3JlZ2lvbi5oIgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAi aTkxNV90dG1fYnVkZHlfbWFuYWdlci5oIgogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAl1MTYg Y2xhc3M7CkBAIC0yOCwxMSArMjksNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAl9LAogfTsK IAotc3RydWN0IGludGVsX3JlZ2lvbl9yZXNlcnZlIHsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7 Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzOwotfTsKLQogc3RydWN0IGludGVsX21lbW9yeV9y ZWdpb24gKgogaW50ZWxfbWVtb3J5X3JlZ2lvbl9sb29rdXAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCiAJCQkgICB1MTYgY2xhc3MsIHUxNiBpbnN0YW5jZSkKQEAgLTYzLDI3ICs1OSw2 IEBAIGludGVsX21lbW9yeV9yZWdpb25fYnlfdHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyoqCi0gKiBpbnRlbF9tZW1vcnlfcmVnaW9uX3Vu cmVzZXJ2ZSAtIFVucmVzZXJ2ZSBhbGwgcHJldmlvdXNseSByZXNlcnZlZAotICogcmFuZ2VzCi0g KiBAbWVtOiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIHJlc2VydmVkIHJhbmdlcy4KLSAqLwot dm9pZCBpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbiAqbWVtKQotewotCXN0cnVjdCBpbnRlbF9yZWdpb25fcmVzZXJ2ZSAqcmVzZXJ2ZSwgKm5l eHQ7Ci0KLQlpZiAoIW1lbS0+cHJpdl9vcHMgfHwgIW1lbS0+cHJpdl9vcHMtPmZyZWUpCi0JCXJl dHVybjsKLQotCW11dGV4X2xvY2soJm1lbS0+bW1fbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHJlc2VydmUsIG5leHQsICZtZW0tPnJlc2VydmVkLCBsaW5rKSB7Ci0JCWxpc3RfZGVs KCZyZXNlcnZlLT5saW5rKTsKLQkJbWVtLT5wcml2X29wcy0+ZnJlZShtZW0sIHJlc2VydmUtPnJl cyk7Ci0JCWtmcmVlKHJlc2VydmUpOwotCX0KLQltdXRleF91bmxvY2soJm1lbS0+bW1fbG9jayk7 Ci19Ci0KIC8qKgogICogaW50ZWxfbWVtb3J5X3JlZ2lvbl9yZXNlcnZlIC0gUmVzZXJ2ZSBhIG1l bW9yeSByYW5nZQogICogQG1lbTogVGhlIHJlZ2lvbiBmb3Igd2hpY2ggd2Ugd2FudCB0byByZXNl cnZlIGEgcmFuZ2UuCkBAIC05NiwyOCArNzEsMTEgQEAgaW50IGludGVsX21lbW9yeV9yZWdpb25f cmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJCXJlc291cmNlX3Np emVfdCBvZmZzZXQsCiAJCQkJcmVzb3VyY2Vfc2l6ZV90IHNpemUpCiB7Ci0JaW50IHJldDsKLQlz dHJ1Y3QgaW50ZWxfcmVnaW9uX3Jlc2VydmUgKnJlc2VydmU7Ci0KLQlpZiAoIW1lbS0+cHJpdl9v cHMgfHwgIW1lbS0+cHJpdl9vcHMtPnJlc2VydmUpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JcmVz ZXJ2ZSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXNlcnZlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFyZXNl cnZlKQotCQlyZXR1cm4gLUVOT01FTTsKKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1h biA9IG1lbS0+cmVnaW9uX3ByaXZhdGU7CiAKLQlyZXNlcnZlLT5yZXMgPSBtZW0tPnByaXZfb3Bz LT5yZXNlcnZlKG1lbSwgb2Zmc2V0LCBzaXplKTsKLQlpZiAoSVNfRVJSKHJlc2VydmUtPnJlcykp IHsKLQkJcmV0ID0gUFRSX0VSUihyZXNlcnZlLT5yZXMpOwotCQlrZnJlZShyZXNlcnZlKTsKLQkJ cmV0dXJuIHJldDsKLQl9Ci0KLQltdXRleF9sb2NrKCZtZW0tPm1tX2xvY2spOwotCWxpc3RfYWRk X3RhaWwoJnJlc2VydmUtPmxpbmssICZtZW0tPnJlc2VydmVkKTsKLQltdXRleF91bmxvY2soJm1l bS0+bW1fbG9jayk7CisJR0VNX0JVR19PTihtZW0tPmlzX3JhbmdlX21hbmFnZXIpOwogCi0JcmV0 dXJuIDA7CisJcmV0dXJuIGk5MTVfdHRtX2J1ZGR5X21hbl9yZXNlcnZlKG1hbiwgb2Zmc2V0LCBz aXplKTsKIH0KIAogc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKgpAQCAtMTQ5LDkgKzEwNyw2 IEBAIGludGVsX21lbW9yeV9yZWdpb25fY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAogCiAJbXV0ZXhfaW5pdCgmbWVtLT5vYmplY3RzLmxvY2spOwogCUlOSVRfTElTVF9IRUFE KCZtZW0tPm9iamVjdHMubGlzdCk7Ci0JSU5JVF9MSVNUX0hFQUQoJm1lbS0+cmVzZXJ2ZWQpOwot Ci0JbXV0ZXhfaW5pdCgmbWVtLT5tbV9sb2NrKTsKIAogCWlmIChvcHMtPmluaXQpIHsKIAkJZXJy ID0gb3BzLT5pbml0KG1lbSk7CkBAIC0xODIsMTEgKzEzNyw5IEBAIHN0YXRpYyB2b2lkIF9faW50 ZWxfbWVtb3J5X3JlZ2lvbl9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogCXN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICptZW0gPQogCQljb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCptZW0p LCBrcmVmKTsKIAotCWludGVsX21lbW9yeV9yZWdpb25fdW5yZXNlcnZlKG1lbSk7CiAJaWYgKG1l bS0+b3BzLT5yZWxlYXNlKQogCQltZW0tPm9wcy0+cmVsZWFzZShtZW0pOwogCi0JbXV0ZXhfZGVz dHJveSgmbWVtLT5tbV9sb2NrKTsKIAltdXRleF9kZXN0cm95KCZtZW0tPm9iamVjdHMubG9jayk7 CiAJa2ZyZWUobWVtKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X21lbW9yeV9yZWdpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdp b24uaAppbmRleCBjN2U2MzVkNjJlMWEuLmIwNGZiMjI3MjZkOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaApAQCAtNTksMTkgKzU5LDEwIEBAIHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uX29wcyB7CiAJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogfTsK IAotc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fcHJpdmF0ZV9vcHMgewotCXN0cnVjdCB0dG1f cmVzb3VyY2UgKigqcmVzZXJ2ZSkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKLQkJ CQkJcmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwKLQkJCQkJcmVzb3VyY2Vfc2l6ZV90IHNpemUpOwot CXZvaWQgKCpmcmVlKShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkgICAgIHN0 cnVjdCB0dG1fcmVzb3VyY2UgKnJlcyk7Ci19OwotCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CiAKIAljb25zdCBzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbl9vcHMgKm9wczsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbl9wcml2YXRlX29wcyAqcHJpdl9vcHM7CiAKIAlzdHJ1Y3QgaW9fbWFwcGluZyBpb21hcDsK IAlzdHJ1Y3QgcmVzb3VyY2UgcmVnaW9uOwpAQCAtNzksOCArNzAsNiBAQCBzdHJ1Y3QgaW50ZWxf bWVtb3J5X3JlZ2lvbiB7CiAJLyogRm9yIGZha2UgTE1FTSAqLwogCXN0cnVjdCBkcm1fbW1fbm9k ZSBmYWtlX21hcHBhYmxlOwogCi0Jc3RydWN0IG11dGV4IG1tX2xvY2s7Ci0KIAlzdHJ1Y3Qga3Jl ZiBrcmVmOwogCiAJcmVzb3VyY2Vfc2l6ZV90IGlvX3N0YXJ0OwpAQCAtOTQsOCArODMsNiBAQCBz dHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiB7CiAJY2hhciBuYW1lWzE2XTsKIAlib29sIHByaXZh dGU7IC8qIG5vdCBmb3IgdXNlcnNwYWNlICovCiAKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJlc2VydmVk OwotCiAJZG1hX2FkZHJfdCByZW1hcF9hZGRyOwogCiAJc3RydWN0IHsKQEAgLTEwMyw4ICs5MCw2 IEBAIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uIHsKIAkJc3RydWN0IGxpc3RfaGVhZCBsaXN0 OwogCX0gb2JqZWN0czsKIAotCXNpemVfdCBjaHVua19zaXplOwotCXVuc2lnbmVkIGludCBtYXhf b3JkZXI7CiAJYm9vbCBpc19yYW5nZV9tYW5hZ2VyOwogCiAJdm9pZCAqcmVnaW9uX3ByaXZhdGU7 CkBAIC0xMzgsOCArMTIzLDYgQEAgX19wcmludGYoMiwgMykgdm9pZAogaW50ZWxfbWVtb3J5X3Jl Z2lvbl9zZXRfbmFtZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJICAgICBj b25zdCBjaGFyICpmbXQsIC4uLik7CiAKLXZvaWQgaW50ZWxfbWVtb3J5X3JlZ2lvbl91bnJlc2Vy dmUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7Ci0KIGludCBpbnRlbF9tZW1vcnlf cmVnaW9uX3Jlc2VydmUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAkJCQlyZXNv dXJjZV9zaXplX3Qgb2Zmc2V0LAogCQkJCXJlc291cmNlX3NpemVfdCBzaXplKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYwppbmRleCBmOWQ2MTY1NDQ3MjguLjA1MjI1M2M4 MWU5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl90dG0uYwpAQCAtOCw2ICs4 LDcgQEAKIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlz dC5oIgorI2luY2x1ZGUgImk5MTVfdHRtX2J1ZGR5X21hbmFnZXIuaCIKIAogI2luY2x1ZGUgImlu dGVsX3JlZ2lvbl90dG0uaCIKIApAQCAtNjcsNzIgKzY4LDI4IEBAIGludCBpbnRlbF9yZWdpb25f dG9fdHRtX3R5cGUoY29uc3Qgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIAlyZXR1 cm4gdHlwZTsKIH0KIAotc3RhdGljIHN0cnVjdCB0dG1fcmVzb3VyY2UgKgotaW50ZWxfcmVnaW9u X3R0bV9yZXNvdXJjZV9yZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCi0J CQkgICAgICByZXNvdXJjZV9zaXplX3Qgb2Zmc2V0LAotCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90 IHNpemUpCi17Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4gPSBtZW0tPnJlZ2lv bl9wcml2YXRlOwotCXN0cnVjdCB0dG1fcGxhY2UgcGxhY2UgPSB7fTsKLQlzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgbW9ja19ibyA9IHt9OwotCXN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlczsKLQlp bnQgcmV0OwotCi0JLyoKLQkgKiBIYXZpbmcgdG8gdXNlIGEgbW9ja19ibyBpcyB1bmZvcnR1bmF0 ZSBidXQgc3RlbXMgZnJvbSBzb21lCi0JICogZHJpdmVycyBoYXZpbmcgcHJpdmF0ZSBtYW5hZ2Vy cyB0aGF0IGluc2lzdCB0byBrbm93IHdoYXQgdGhlCi0JICogYWxsb2NhdGUgbWVtb3J5IGlzIGlu dGVuZGVkIGZvciwgdXNpbmcgaXQgdG8gc2VuZCBwcml2YXRlCi0JICogZGF0YSB0byB0aGUgbWFu YWdlci4gQWxzbyByZWNlbnRseSB0aGUgYm8gaGFzIGJlZW4gdXNlZCB0byBzZW5kCi0JICogYWxp Z25tZW50IGluZm8gdG8gdGhlIG1hbmFnZXIuIEFzc3VtZSB0aGF0IGFwYXJ0IGZyb20gdGhlIGxh dHRlciwKLQkgKiBub25lIG9mIHRoZSBtYW5hZ2VycyB3ZSB1c2Ugd2lsbCBldmVyIGFjY2VzcyB0 aGUgYnVmZmVyIG9iamVjdAotCSAqIG1lbWJlcnMsIGhvcGluZyB3ZSBjYW4gcGFzcyB0aGUgYWxp Z25tZW50IGluZm8gaW4gdGhlCi0JICogc3RydWN0IHR0bV9wbGFjZSBpbiB0aGUgZnV0dXJlLgot CSAqLwotCi0JcGxhY2UuZnBmbiA9IG9mZnNldCA+PiBQQUdFX1NISUZUOwotCXBsYWNlLmxwZm4g PSBwbGFjZS5mcGZuICsgKHNpemUgPj4gUEFHRV9TSElGVCk7Ci0JbW9ja19iby5iYXNlLnNpemUg PSBzaXplOwotCXJldCA9IG1hbi0+ZnVuYy0+YWxsb2MobWFuLCAmbW9ja19ibywgJnBsYWNlLCAm cmVzKTsKLQlpZiAocmV0ID09IC1FTk9TUEMpCi0JCXJldCA9IC1FTlhJTzsKLQotCXJldHVybiBy ZXQgPyBFUlJfUFRSKHJldCkgOiByZXM7Ci19Ci0KIC8qKgotICogaW50ZWxfcmVnaW9uX3R0bV9y ZXNvdXJjZV9mcmVlIC0gRnJlZSBhIHJlc291cmNlIGFsbG9jYXRlZCBmcm9tIGEgcmVzb3VyY2Ug bWFuYWdlcgotICogQG1lbTogVGhlIHJlZ2lvbiB0aGUgcmVzb3VyY2Ugd2FzIGFsbG9jYXRlZCBm cm9tLgotICogQHJlczogVGhlIG9wYXF1ZSByZXNvdXJjZSByZXByZXNlbnRpbmcgYW4gYWxsb2Nh dGlvbi4KKyAqIGludGVsX3JlZ2lvbl90dG1faW5pdCAtIEluaXRpYWxpemUgYSBtZW1vcnkgcmVn aW9uIGZvciBUVE0uCisgKiBAbWVtOiBUaGUgcmVnaW9uIHRvIGluaXRpYWxpemUuCisgKgorICog VGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBhIHN1aXRhYmxlIFRUTSByZXNvdXJjZSBtYW5hZ2Vy IGZvciB0aGUKKyAqIHJlZ2lvbiwgYW5kIGlmIGl0J3MgYSBMTUVNIHJlZ2lvbiB0eXBlLCBhdHRh Y2hlcyBpdCB0byB0aGUgVFRNCisgKiBkZXZpY2UuIE1PQ0sgcmVnaW9ucyBhcmUgTk9UIGF0dGFj aGVkIHRvIHRoZSBUVE0gZGV2aWNlLCBzaW5jZSB3ZSBkb24ndAorICogaGF2ZSBvbmUgZm9yIHRo ZSBtb2NrIHNlbGZ0ZXN0cy4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgogICovCi12b2lkIGludGVsX3JlZ2lvbl90dG1fcmVzb3Vy Y2VfZnJlZShzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJCSAgICBzdHJ1Y3Qg dHRtX3Jlc291cmNlICpyZXMpCi17Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4g PSBtZW0tPnJlZ2lvbl9wcml2YXRlOwotCi0JbWFuLT5mdW5jLT5mcmVlKG1hbiwgcmVzKTsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX3ByaXZhdGVfb3BzIHBy aXZfb3BzID0gewotCS5yZXNlcnZlID0gaW50ZWxfcmVnaW9uX3R0bV9yZXNvdXJjZV9yZXNlcnZl LAotCS5mcmVlID0gaW50ZWxfcmVnaW9uX3R0bV9yZXNvdXJjZV9mcmVlLAotfTsKLQogaW50IGlu dGVsX3JlZ2lvbl90dG1faW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogewog CXN0cnVjdCB0dG1fZGV2aWNlICpiZGV2ID0gJm1lbS0+aTkxNS0+YmRldjsKIAlpbnQgbWVtX3R5 cGUgPSBpbnRlbF9yZWdpb25fdG9fdHRtX3R5cGUobWVtKTsKIAlpbnQgcmV0OwogCi0JcmV0ID0g dHRtX3JhbmdlX21hbl9pbml0KGJkZXYsIG1lbV90eXBlLCBmYWxzZSwKLQkJCQkgcmVzb3VyY2Vf c2l6ZSgmbWVtLT5yZWdpb24pID4+IFBBR0VfU0hJRlQpOworCXJldCA9IGk5MTVfdHRtX2J1ZGR5 X21hbl9pbml0KGJkZXYsIG1lbV90eXBlLCBmYWxzZSwKKwkJCQkgICAgICByZXNvdXJjZV9zaXpl KCZtZW0tPnJlZ2lvbiksIFBBR0VfU0laRSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CW1lbS0+Y2h1bmtfc2l6ZSA9IFBBR0VfU0laRTsKLQltZW0tPm1heF9vcmRlciA9Ci0JCWdldF9v cmRlcihyb3VuZGRvd25fcG93X29mX3R3byhyZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbikpKTsK LQltZW0tPmlzX3JhbmdlX21hbmFnZXIgPSB0cnVlOwotCW1lbS0+cHJpdl9vcHMgPSAmcHJpdl9v cHM7CiAJbWVtLT5yZWdpb25fcHJpdmF0ZSA9IHR0bV9tYW5hZ2VyX3R5cGUoYmRldiwgbWVtX3R5 cGUpOwogCiAJcmV0dXJuIDA7CkBAIC0xNTAsOCArMTA3LDggQEAgdm9pZCBpbnRlbF9yZWdpb25f dHRtX2Zpbmkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHsKIAlpbnQgcmV0Owog Ci0JcmV0ID0gdHRtX3JhbmdlX21hbl9maW5pKCZtZW0tPmk5MTUtPmJkZXYsCi0JCQkJIGludGVs X3JlZ2lvbl90b190dG1fdHlwZShtZW0pKTsKKwlyZXQgPSBpOTE1X3R0bV9idWRkeV9tYW5fZmlu aSgmbWVtLT5pOTE1LT5iZGV2LAorCQkJCSAgICAgIGludGVsX3JlZ2lvbl90b190dG1fdHlwZSht ZW0pKTsKIAlHRU1fV0FSTl9PTihyZXQpOwogCW1lbS0+cmVnaW9uX3ByaXZhdGUgPSBOVUxMOwog fQpAQCAtMTcxLDEyICsxMjgsMTUgQEAgdm9pZCBpbnRlbF9yZWdpb25fdHRtX2Zpbmkoc3RydWN0 IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHN0cnVjdCBzZ190YWJsZSAqaW50ZWxfcmVnaW9u X3R0bV9yZXNvdXJjZV90b19zdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJ CQkJIHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcykKIHsKLQlzdHJ1Y3QgdHRtX3JhbmdlX21ncl9u b2RlICpyYW5nZV9ub2RlID0KLQkJY29udGFpbmVyX29mKHJlcywgdHlwZW9mKCpyYW5nZV9ub2Rl KSwgYmFzZSk7CisJaWYgKG1lbS0+aXNfcmFuZ2VfbWFuYWdlcikgeworCQlzdHJ1Y3QgdHRtX3Jh bmdlX21ncl9ub2RlICpyYW5nZV9ub2RlID0KKwkJCXRvX3R0bV9yYW5nZV9tZ3Jfbm9kZShyZXMp OwogCi0JR0VNX1dBUk5fT04oIW1lbS0+aXNfcmFuZ2VfbWFuYWdlcik7Ci0JcmV0dXJuIGk5MTVf c2dfZnJvbV9tbV9ub2RlKCZyYW5nZV9ub2RlLT5tbV9ub2Rlc1swXSwKLQkJCQkgICAgbWVtLT5y ZWdpb24uc3RhcnQpOworCQlyZXR1cm4gaTkxNV9zZ19mcm9tX21tX25vZGUoJnJhbmdlX25vZGUt Pm1tX25vZGVzWzBdLAorCQkJCQkgICAgbWVtLT5yZWdpb24uc3RhcnQpOworCX0gZWxzZSB7CisJ CXJldHVybiBpOTE1X3NnX2Zyb21fYnVkZHlfcmVzb3VyY2UocmVzLCBtZW0tPnJlZ2lvbi5zdGFy dCk7CisJfQogfQogCiAjaWZkZWYgQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUCkBAIC0yMDYsMjUg KzE2NiwzNSBAQCBpbnRlbF9yZWdpb25fdHRtX3Jlc291cmNlX2FsbG9jKHN0cnVjdCBpbnRlbF9t ZW1vcnlfcmVnaW9uICptZW0sCiAJc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzOwogCWludCByZXQ7 CiAKLQkvKgotCSAqIFdlIGlnbm9yZSB0aGUgZmxhZ3MgZm9yIG5vdyBzaW5jZSB3ZSdyZSB1c2lu ZyB0aGUgcmFuZ2UKLQkgKiBtYW5hZ2VyIGFuZCBjb250aWdvdXMgYW5kIG1pbiBwYWdlIHNpemUg d291bGQgYmUgZnVsZmlsbGVkCi0JICogYnkgZGVmYXVsdCBpZiBzaXplIGlzIG1pbiBwYWdlIHNp emUgYWxpZ25lZC4KLQkgKi8KIAltb2NrX2JvLmJhc2Uuc2l6ZSA9IHNpemU7Ci0KLQlpZiAobWVt LT5pc19yYW5nZV9tYW5hZ2VyKSB7Ci0JCWlmIChzaXplID49IFNaXzFHKQotCQkJbW9ja19iby5w YWdlX2FsaWdubWVudCA9IFNaXzFHID4+IFBBR0VfU0hJRlQ7Ci0JCWVsc2UgaWYgKHNpemUgPj0g U1pfMk0pCi0JCQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfMk0gPj4gUEFHRV9TSElGVDsK LQkJZWxzZSBpZiAoc2l6ZSA+PSBTWl82NEspCi0JCQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0g U1pfNjRLID4+IFBBR0VfU0hJRlQ7Ci0JfQorCW1vY2tfYm8ucGFnZV9hbGlnbm1lbnQgPSAxOwor CXBsYWNlLmZsYWdzID0gZmxhZ3M7CiAKIAlyZXQgPSBtYW4tPmZ1bmMtPmFsbG9jKG1hbiwgJm1v Y2tfYm8sICZwbGFjZSwgJnJlcyk7CiAJaWYgKHJldCA9PSAtRU5PU1BDKQogCQlyZXQgPSAtRU5Y SU87CiAJcmV0dXJuIHJldCA/IEVSUl9QVFIocmV0KSA6IHJlczsKIH0KKwogI2VuZGlmCisKK3Zv aWQgaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2ZyZWUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24g Km1lbSwKKwkJCQlzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpCit7CisJc3RydWN0IHR0bV9yZXNv dXJjZV9tYW5hZ2VyICptYW4gPSBtZW0tPnJlZ2lvbl9wcml2YXRlOworCisJbWFuLT5mdW5jLT5m cmVlKG1hbiwgcmVzKTsKK30KKworLyoqCisgKiBpbnRlbF9yZWdpb25fdHRtX3Jlc291cmNlX2Zy ZWUgLSBGcmVlIGEgcmVzb3VyY2UgYWxsb2NhdGVkIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VyCisg KiBAbWVtOiBUaGUgcmVnaW9uIHRoZSByZXNvdXJjZSB3YXMgYWxsb2NhdGVkIGZyb20uCisgKiBA cmVzOiBUaGUgb3BhcXVlIHJlc291cmNlIHJlcHJlc2VudGluZyBhbiBhbGxvY2F0aW9uLgorICov Cit2b2lkIGludGVsX3JlZ2lvbl90dG1fcmVzb3VyY2VfZnJlZShzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqbWVtLAorCQkJCSAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpCit7CisJc3Ry dWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4gPSBtZW0tPnJlZ2lvbl9wcml2YXRlOworCisJ bWFuLT5mdW5jLT5mcmVlKG1hbiwgcmVzKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCmluZGV4IGM4NWQ1MTZiODVjZC4u MTE4YTY2YzI5Njk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfbWVtb3J5X3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKQEAgLTIwLDcgKzIwLDkgQEAKICNpbmNsdWRlICJnZW0v c2VsZnRlc3RzL21vY2tfY29udGV4dC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2Vy LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2J1ZGR5LmgiCiAj aW5jbHVkZSAiaTkxNV9tZW1jcHkuaCIKKyNpbmNsdWRlICJpOTE1X3R0bV9idWRkeV9tYW5hZ2Vy LmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgiCiAjaW5jbHVkZSAic2Vs ZnRlc3RzL2k5MTVfcmFuZG9tLmgiCiAKQEAgLTU3LDEwICs1OSw5IEBAIHN0YXRpYyBpbnQgaWd0 X21vY2tfZmlsbCh2b2lkICphcmcpCiAJTElTVF9IRUFEKG9iamVjdHMpOwogCWludCBlcnIgPSAw OwogCi0JcGFnZV9zaXplID0gbWVtLT5jaHVua19zaXplOworCXBhZ2Vfc2l6ZSA9IFBBR0VfU0la RTsKKwltYXhfcGFnZXMgPSBkaXY2NF91NjQodG90YWwsIHBhZ2Vfc2l6ZSk7CiAJcmVtID0gdG90 YWw7Ci1yZXRyeToKLQltYXhfcGFnZXMgPSBkaXY2NF91NjQocmVtLCBwYWdlX3NpemUpOwogCiAJ Zm9yX2VhY2hfcHJpbWVfbnVtYmVyX2Zyb20ocGFnZV9udW0sIDEsIG1heF9wYWdlcykgewogCQly ZXNvdXJjZV9zaXplX3Qgc2l6ZSA9IHBhZ2VfbnVtICogcGFnZV9zaXplOwpAQCAtODYsMTEgKzg3 LDYgQEAgc3RhdGljIGludCBpZ3RfbW9ja19maWxsKHZvaWQgKmFyZykKIAkJZXJyID0gMDsKIAlp ZiAoZXJyID09IC1FTlhJTykgewogCQlpZiAocGFnZV9udW0gKiBwYWdlX3NpemUgPD0gcmVtKSB7 Ci0JCQlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyICYmIG1heF9wYWdlcyA+IDEpIHsKLQkJCQlt YXhfcGFnZXMgPj49IDE7Ci0JCQkJZ290byByZXRyeTsKLQkJCX0KLQogCQkJcHJfZXJyKCIlcyBm YWlsZWQsIHNwYWNlIHN0aWxsIGxlZnQgaW4gcmVnaW9uXG4iLAogCQkJICAgICAgIF9fZnVuY19f KTsKIAkJCWVyciA9IC1FSU5WQUw7CkBAIC0xNTcsNiArMTUzLDcgQEAgc3RhdGljIGJvb2wgaXNf Y29udGlndW91cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogc3RhdGljIGludCBp Z3RfbW9ja19yZXNlcnZlKHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtID0gYXJnOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gbWVtLT5pOTE1 OwogCXJlc291cmNlX3NpemVfdCBhdmFpbCA9IHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9uKTsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCWNvbnN0IHUzMiBjaHVua19zaXpl ID0gU1pfMzJNOwpAQCAtMTY2LDE2ICsxNjMsMTggQEAgc3RhdGljIGludCBpZ3RfbW9ja19yZXNl cnZlKHZvaWQgKmFyZykKIAlMSVNUX0hFQUQob2JqZWN0cyk7CiAJaW50IGVyciA9IDA7CiAKLQlp ZiAoIWxpc3RfZW1wdHkoJm1lbS0+cmVzZXJ2ZWQpKSB7Ci0JCXByX2VycigiJXMgcmVnaW9uIHJl c2VydmVkIGxpc3QgaXMgbm90IGVtcHR5XG4iLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiAtRUlOVkFM OwotCX0KLQogCWNvdW50ID0gYXZhaWwgLyBjaHVua19zaXplOwogCW9yZGVyID0gaTkxNV9yYW5k b21fb3JkZXIoY291bnQsICZwcm5nKTsKIAlpZiAoIW9yZGVyKQogCQlyZXR1cm4gMDsKIAorCW1l bSA9IG1vY2tfcmVnaW9uX2NyZWF0ZShpOTE1LCAwLCBTWl8yRywgSTkxNV9HVFRfUEFHRV9TSVpF XzRLLCAwKTsKKwlpZiAoSVNfRVJSKG1lbSkpIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gY3JlYXRl IG1lbW9yeSByZWdpb25cbiIpOworCQllcnIgPSBQVFJfRVJSKG1lbSk7CisJCWdvdG8gb3V0X2Ns b3NlOworCX0KKwogCS8qIFJlc2VydmUgYSBidW5jaCBvZiByYW5nZXMgd2l0aGluIHRoZSByZWdp b24gKi8KIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogCQl1NjQgc3RhcnQgPSBvcmRl cltpXSAqIGNodW5rX3NpemU7CkBAIC0yMDUsMTggKzIwNCwxMiBAQCBzdGF0aWMgaW50IGlndF9t b2NrX3Jlc2VydmUodm9pZCAqYXJnKQogCWRvIHsKIAkJdTMyIHNpemUgPSBpOTE1X3ByYW5kb21f dTMyX21heF9zdGF0ZShjdXJfYXZhaWwsICZwcm5nKTsKIAotcmV0cnk6CiAJCXNpemUgPSBtYXhf dCh1MzIsIHJvdW5kX3VwKHNpemUsIFBBR0VfU0laRSksIFBBR0VfU0laRSk7CiAJCW9iaiA9IGln dF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHNpemUsIDApOwogCQlpZiAoSVNfRVJSKG9i aikpIHsKLQkJCWlmIChQVFJfRVJSKG9iaikgPT0gLUVOWElPKSB7Ci0JCQkJaWYgKG1lbS0+aXNf cmFuZ2VfbWFuYWdlciAmJgotCQkJCSAgICBzaXplID4gbWVtLT5jaHVua19zaXplKSB7Ci0JCQkJ CXNpemUgPj49IDE7Ci0JCQkJCWdvdG8gcmV0cnk7Ci0JCQkJfQorCQkJaWYgKFBUUl9FUlIob2Jq KSA9PSAtRU5YSU8pCiAJCQkJYnJlYWs7Ci0JCQl9CisKIAkJCWVyciA9IFBUUl9FUlIob2JqKTsK IAkJCWdvdG8gb3V0X2Nsb3NlOwogCQl9CkBAIC0yMzIsNyArMjI1LDcgQEAgc3RhdGljIGludCBp Z3RfbW9ja19yZXNlcnZlKHZvaWQgKmFyZykKIG91dF9jbG9zZToKIAlrZnJlZShvcmRlcik7CiAJ Y2xvc2Vfb2JqZWN0cyhtZW0sICZvYmplY3RzKTsKLQlpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVz ZXJ2ZShtZW0pOworCWludGVsX21lbW9yeV9yZWdpb25fcHV0KG1lbSk7CiAJcmV0dXJuIGVycjsK IH0KIApAQCAtMjUyLDcgKzI0NSw3IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfY29udGlndW91cyh2 b2lkICphcmcpCiAJdG90YWwgPSByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbik7CiAKIAkvKiBN aW4gc2l6ZSAqLwotCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIG1lbS0+ Y2h1bmtfc2l6ZSwKKwlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCBQQUdF X1NJWkUsCiAJCQkJSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKIAlpZiAoSVNfRVJSKG9iaikp CiAJCXJldHVybiBQVFJfRVJSKG9iaik7CkBAIC0zMzMsMTcgKzMyNiwxNSBAQCBzdGF0aWMgaW50 IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAqYXJnKQogCW1pbiA9IHRhcmdldDsKIAl0YXJnZXQg PSB0b3RhbCA+PiAxOwogCi0JaWYgKCFtZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKLQkJLyogTWFr ZSBzdXJlIHdlIGNhbiBzdGlsbCBhbGxvY2F0ZSBhbGwgdGhlIGZyYWdtZW50ZWQgc3BhY2UgKi8K LQkJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgdGFyZ2V0LCAwKTsKLQkJ aWYgKElTX0VSUihvYmopKSB7Ci0JCQllcnIgPSBQVFJfRVJSKG9iaik7Ci0JCQlnb3RvIGVycl9j bG9zZV9vYmplY3RzOwotCQl9Ci0KLQkJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisJLyogTWFr ZSBzdXJlIHdlIGNhbiBzdGlsbCBhbGxvY2F0ZSBhbGwgdGhlIGZyYWdtZW50ZWQgc3BhY2UgKi8K KwlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCB0YXJnZXQsIDApOworCWlm IChJU19FUlIob2JqKSkgeworCQllcnIgPSBQVFJfRVJSKG9iaik7CisJCWdvdG8gZXJyX2Nsb3Nl X29iamVjdHM7CiAJfQogCisJaWd0X29iamVjdF9yZWxlYXNlKG9iaik7CisKIAkvKgogCSAqIEV2 ZW4gdGhvdWdoIHdlIGhhdmUgZW5vdWdoIGZyZWUgc3BhY2UsIHdlIGRvbid0IGhhdmUgYSBiaWcg ZW5vdWdoCiAJICogY29udGlndW91cyBibG9jay4gTWFrZSBzdXJlIHRoYXQgaG9sZHMgdHJ1ZS4K QEAgLTM2Miw3ICszNTMsNyBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2NvbnRpZ3VvdXModm9pZCAq YXJnKQogCQl9CiAKIAkJdGFyZ2V0ID4+PSAxOwotCX0gd2hpbGUgKHRhcmdldCA+PSBtZW0tPmNo dW5rX3NpemUpOworCX0gd2hpbGUgKHRhcmdldCA+PSBQQUdFX1NJWkUpOwogCiBlcnJfY2xvc2Vf b2JqZWN0czoKIAlsaXN0X3NwbGljZV90YWlsKCZob2xlcywgJm9iamVjdHMpOwpAQCAtMzc0LDcg KzM2NSw5IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJn KQogewogCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0gPSBhcmc7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBtZW0tPmk5MTU7CisJc3RydWN0IGk5MTVfdHRtX2J1ZGR5 X3Jlc291cmNlICpyZXM7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1 Y3QgaTkxNV9idWRkeV9tbSAqbW07CiAJdW5zaWduZWQgaW50IGV4cGVjdGVkX29yZGVyOwogCUxJ U1RfSEVBRChvYmplY3RzKTsKIAl1NjQgc2l6ZTsKQEAgLTM4Miw3ICszNzUsNyBAQCBzdGF0aWMg aW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKHZvaWQgKmFyZykKIAogCS8qCiAJICogU2Fu aXR5IGNoZWNrIHdlIGNhbiBzdGlsbCBhbGxvY2F0ZSBldmVyeXRoaW5nIGV2ZW4gaWYgdGhlCi0J ICogbWF4X29yZGVyICE9IG1tLnNpemUuIGkuZSBvdXIgc3RhcnRpbmcgYWRkcmVzcyBzcGFjZSBz aXplIGlzIG5vdCBhCisJICogbW0ubWF4X29yZGVyICE9IG1tLnNpemUuIGkuZSBvdXIgc3RhcnRp bmcgYWRkcmVzcyBzcGFjZSBzaXplIGlzIG5vdCBhCiAJICogcG93ZXItb2YtdHdvLgogCSAqLwog CkBAIC0zOTEsMjAgKzM4NCwyOSBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVn aW9uKHZvaWQgKmFyZykKIAlpZiAoSVNfRVJSKG1lbSkpCiAJCXJldHVybiBQVFJfRVJSKG1lbSk7 CiAKLQlleHBlY3RlZF9vcmRlciA9IGdldF9vcmRlcihyb3VuZGRvd25fcG93X29mX3R3byhzaXpl KSk7Ci0JaWYgKG1lbS0+bWF4X29yZGVyICE9IGV4cGVjdGVkX29yZGVyKSB7Ci0JCXByX2Vycigi JXMgb3JkZXIgbWlzbWF0Y2goJXUgIT0gJXUpXG4iLAotCQkgICAgICAgX19mdW5jX18sIG1lbS0+ bWF4X29yZGVyLCBleHBlY3RlZF9vcmRlcik7Ci0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0 X3B1dDsKLQl9Ci0KIAlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCBzaXpl LCAwKTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJZXJyID0gUFRSX0VSUihvYmopOwogCQlnb3Rv IG91dF9jbG9zZTsKIAl9CiAKKwlyZXMgPSB0b190dG1fYnVkZHlfcmVzb3VyY2Uob2JqLT5tbS5y ZXMpOworCW1tID0gcmVzLT5tbTsKKwlpZiAobW0tPnNpemUgIT0gc2l6ZSkgeworCQlwcl9lcnIo IiVzIHNpemUgbWlzbWF0Y2goJWxsdSAhPSAlbGx1KVxuIiwKKwkJICAgICAgIF9fZnVuY19fLCBt bS0+c2l6ZSwgc2l6ZSk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisK KwlleHBlY3RlZF9vcmRlciA9IGdldF9vcmRlcihyb3VuZGRvd25fcG93X29mX3R3byhzaXplKSk7 CisJaWYgKG1tLT5tYXhfb3JkZXIgIT0gZXhwZWN0ZWRfb3JkZXIpIHsKKwkJcHJfZXJyKCIlcyBv cmRlciBtaXNtYXRjaCgldSAhPSAldSlcbiIsCisJCSAgICAgICBfX2Z1bmNfXywgbW0tPm1heF9v cmRlciwgZXhwZWN0ZWRfb3JkZXIpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dF9wdXQ7 CisJfQorCiAJY2xvc2Vfb2JqZWN0cyhtZW0sICZvYmplY3RzKTsKIAogCS8qCkBAIC00MTUsMTUg KzQxNywxMiBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKHZvaWQgKmFy ZykKIAkgKiBzdXJlIHRoYXQgZG9lcyBpbmRlZWQgaG9sZCB0cnVlLgogCSAqLwogCi0JaWYgKCFt ZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKLQkJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAm b2JqZWN0cywgc2l6ZSwKLQkJCQkJSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKLQkJaWYgKCFJ U19FUlIob2JqKSkgewotCQkJcHJfZXJyKCIlcyB0b28gbGFyZ2UgY29udGlndW91cyBhbGxvY2F0 aW9uIHdhcyBub3QgcmVqZWN0ZWRcbiIsCi0JCQkgICAgICAgX19mdW5jX18pOwotCQkJZXJyID0g LUVJTlZBTDsKLQkJCWdvdG8gb3V0X2Nsb3NlOwotCQl9CisJb2JqID0gaWd0X29iamVjdF9jcmVh dGUobWVtLCAmb2JqZWN0cywgc2l6ZSwgSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKKwlpZiAo IUlTX0VSUihvYmopKSB7CisJCXByX2VycigiJXMgdG9vIGxhcmdlIGNvbnRpZ3VvdXMgYWxsb2Nh dGlvbiB3YXMgbm90IHJlamVjdGVkXG4iLAorCQkgICAgICAgX19mdW5jX18pOworCQllcnIgPSAt RUlOVkFMOworCQlnb3RvIG91dF9jbG9zZTsKIAl9CiAKIAlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0 ZShtZW0sICZvYmplY3RzLCByb3VuZGRvd25fcG93X29mX3R3byhzaXplKSwKQEAgLTQ0Miw2ICs0 NDEsNzQgQEAgc3RhdGljIGludCBpZ3RfbW9ja19zcGxpbnRlcmVkX3JlZ2lvbih2b2lkICphcmcp CiAJcmV0dXJuIGVycjsKIH0KIAorI2lmbmRlZiBTWl84RworI2RlZmluZSBTWl84RyBCSVRfVUxM KDMzKQorI2VuZGlmCisKK3N0YXRpYyBpbnQgaWd0X21vY2tfbWF4X3NlZ21lbnQodm9pZCAqYXJn KQoreworCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfc2VnbWVudCA9IHJvdW5kZG93bihVSU5UX01B WCwgUEFHRV9TSVpFKTsKKwlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtID0gYXJnOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gbWVtLT5pOTE1OworCXN0cnVjdCBpOTE1 X3R0bV9idWRkeV9yZXNvdXJjZSAqcmVzOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7CisJc3RydWN0IGk5MTVfYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBpOTE1X2J1ZGR5 X21tICptbTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3M7CisJc3RydWN0IHNjYXR0ZXJsaXN0 ICpzZzsKKwlMSVNUX0hFQUQob2JqZWN0cyk7CisJdTY0IHNpemU7CisJaW50IGVyciA9IDA7CisK KwkvKgorCSAqIFdoaWxlIHdlIG1heSBjcmVhdGUgdmVyeSBsYXJnZSBjb250aWd1b3VzIGJsb2Nr cywgd2UgbWF5IG5lZWQKKwkgKiB0byBicmVhayB0aG9zZSBkb3duIGZvciBjb25zdW1wdGlvbiBl bHNld2hlcmUuIEluIHBhcnRpY3VsYXIsCisJICogZG1hLW1hcHBpbmcgd2l0aCBzY2F0dGVybGlz dCBlbGVtZW50cyBoYXZlIGFuIGltcGxpY2l0IGxpbWl0IG9mCisJICogVUlOVF9NQVggb24gZWFj aCBlbGVtZW50LgorCSAqLworCisJc2l6ZSA9IFNaXzhHOworCW1lbSA9IG1vY2tfcmVnaW9uX2Ny ZWF0ZShpOTE1LCAwLCBzaXplLCBQQUdFX1NJWkUsIDApOworCWlmIChJU19FUlIobWVtKSkKKwkJ cmV0dXJuIFBUUl9FUlIobWVtKTsKKworCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9i amVjdHMsIHNpemUsIDApOworCWlmIChJU19FUlIob2JqKSkgeworCQllcnIgPSBQVFJfRVJSKG9i aik7CisJCWdvdG8gb3V0X3B1dDsKKwl9CisKKwlyZXMgPSB0b190dG1fYnVkZHlfcmVzb3VyY2Uo b2JqLT5tbS5yZXMpOworCWJsb2NrcyA9ICZyZXMtPmJsb2NrczsKKwltbSA9IHJlcy0+bW07CisJ c2l6ZSA9IDA7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgYmxvY2tzLCBsaW5rKSB7CisJ CWlmIChpOTE1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSA+IHNpemUpCisJCQlzaXplID0g aTkxNV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CisJfQorCWlmIChzaXplIDwgbWF4X3Nl Z21lbnQpIHsKKwkJcHJfZXJyKCIlczogRmFpbGVkIHRvIGNyZWF0ZSBhIGh1Z2UgY29udGlndW91 cyBibG9jayBbPiAldV0sIGxhcmdlc3QgYmxvY2sgJWxsZFxuIiwKKwkJICAgICAgIF9fZnVuY19f LCBtYXhfc2VnbWVudCwgc2l6ZSk7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X2Nsb3Nl OworCX0KKworCWZvciAoc2cgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7IHNnOyBzZyA9IHNnX25leHQo c2cpKSB7CisJCWlmIChzZy0+bGVuZ3RoID4gbWF4X3NlZ21lbnQpIHsKKwkJCXByX2VycigiJXM6 IENyZWF0ZWQgYW4gb3ZlcnNpemVkIHNjYXR0ZXJsaXN0IGVudHJ5LCAldSA+ICV1XG4iLAorCQkJ ICAgICAgIF9fZnVuY19fLCBzZy0+bGVuZ3RoLCBtYXhfc2VnbWVudCk7CisJCQllcnIgPSAtRUlO VkFMOworCQkJZ290byBvdXRfY2xvc2U7CisJCX0KKwl9CisKK291dF9jbG9zZToKKwljbG9zZV9v YmplY3RzKG1lbSwgJm9iamVjdHMpOworb3V0X3B1dDoKKwlpbnRlbF9tZW1vcnlfcmVnaW9uX3B1 dChtZW0pOworCXJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBpbnQgaWd0X2dwdV93cml0ZV9kdyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJ CQkgICAgdTMyIGR3b3JkLApAQCAtMTA0Niw2ICsxMTEzLDcgQEAgaW50IGludGVsX21lbW9yeV9y ZWdpb25fbW9ja19zZWxmdGVzdHModm9pZCkKIAkJU1VCVEVTVChpZ3RfbW9ja19maWxsKSwKIAkJ U1VCVEVTVChpZ3RfbW9ja19jb250aWd1b3VzKSwKIAkJU1VCVEVTVChpZ3RfbW9ja19zcGxpbnRl cmVkX3JlZ2lvbiksCisJCVNVQlRFU1QoaWd0X21vY2tfbWF4X3NlZ21lbnQpLAogCX07CiAJc3Ry dWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3Jl Z2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMKaW5k ZXggNjEyMGQ0M2ZlNTA0Li4zYjMyNjQzMTFjOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IMKp IDIwMTktMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgogICovCiAKKyNpbmNsdWRlIDxkcm0vdHRtL3R0 bV9wbGFjZW1lbnQuaD4KICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgogCiAjaW5jbHVk ZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+CkBAIC0yNSwxMCArMjYsMTEgQEAgc3RhdGljIGlu dCBtb2NrX3JlZ2lvbl9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IHsKIAl1bnNpZ25lZCBpbnQgZmxhZ3M7CiAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKKwlpbnQg ZXJyOwogCiAJZmxhZ3MgPSBJOTE1X0FMTE9DX01JTl9QQUdFX1NJWkU7CiAJaWYgKG9iai0+Zmxh Z3MgJiBJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpCi0JCWZsYWdzIHw9IEk5MTVfQUxMT0NfQ09O VElHVU9VUzsKKwkJZmxhZ3MgfD0gVFRNX1BMX0ZMQUdfQ09OVElHVU9VUzsKIAogCW9iai0+bW0u cmVzID0gaW50ZWxfcmVnaW9uX3R0bV9yZXNvdXJjZV9hbGxvYyhvYmotPm1tLnJlZ2lvbiwKIAkJ CQkJCSAgICAgIG9iai0+YmFzZS5zaXplLApAQCAtMzgsMTMgKzQwLDE3IEBAIHN0YXRpYyBpbnQg bW9ja19yZWdpb25fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAK IAlwYWdlcyA9IGludGVsX3JlZ2lvbl90dG1fcmVzb3VyY2VfdG9fc3Qob2JqLT5tbS5yZWdpb24s IG9iai0+bW0ucmVzKTsKIAlpZiAoSVNfRVJSKHBhZ2VzKSkgewotCQlpbnRlbF9yZWdpb25fdHRt X3Jlc291cmNlX2ZyZWUob2JqLT5tbS5yZWdpb24sIG9iai0+bW0ucmVzKTsKLQkJcmV0dXJuIFBU Ul9FUlIocGFnZXMpOworCQllcnIgPSBQVFJfRVJSKHBhZ2VzKTsKKwkJZ290byBlcnJfZnJlZV9y ZXNvdXJjZTsKIAl9CiAKIAlfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBwYWdlcywg aTkxNV9zZ19kbWFfc2l6ZXMocGFnZXMtPnNnbCkpOwogCiAJcmV0dXJuIDA7CisKK2Vycl9mcmVl X3Jlc291cmNlOgorCWludGVsX3JlZ2lvbl90dG1fcmVzb3VyY2VfZnJlZShvYmotPm1tLnJlZ2lv biwgb2JqLT5tbS5yZXMpOworCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgbW9ja19yZWdpb25fb2JqX29wcyA9IHsKLS0gCjIuMjYu MwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==