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 974E1C433E6 for ; Mon, 8 Feb 2021 10:53:17 +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 305B964E7A for ; Mon, 8 Feb 2021 10:53:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 305B964E7A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk 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 78D7D6E879; Mon, 8 Feb 2021 10:53:13 +0000 (UTC) Received: from fireflyinternet.com (unknown [77.68.26.236]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8ED046E86C for ; Mon, 8 Feb 2021 10:52:58 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.69.177; Received: from build.alporthouse.com (unverified [78.156.69.177]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 23809216-1500050 for multiple; Mon, 08 Feb 2021 10:52:42 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Mon, 8 Feb 2021 10:52:14 +0000 Message-Id: <20210208105236.28498-9-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210208105236.28498-1-chris@chris-wilson.co.uk> References: <20210208105236.28498-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 09/31] drm/i915: Replace priolist rbtree with a skiplist 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: Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" UmVwbGFjZSB0aGUgcHJpb2xpc3QgcmJ0cmVlIHdpdGggYSBza2lwbGlzdC4gVGhlIGNydWNpYWwg ZGlmZmVyZW5jZSBpcwp0aGF0IHdhbGtpbmcgYW5kIHJlbW92aW5nIHRoZSBmaXJzdCBlbGVtZW50 IG9mIGEgc2tpcGxpc3QgaXMgTygxKSwgYnV0Ck8obGdOKSBmb3IgYW4gcmJ0cmVlLCBhcyB3ZSBu ZWVkIHRvIHJlYmFsYW5jZSBvbiByZW1vdmUuIFRoaXMgaXMgYQpoaW5kcmFuY2UgZm9yIHN1Ym1p c3Npb24gbGF0ZW5jeSBhcyBpdCBvY2N1cnMgYmV0d2VlbiBwaWNraW5nIGEgcmVxdWVzdApmb3Ig dGhlIHByaW9saXN0IGFuZCBzdWJtaXR0aW5nIGl0IHRvIGhhcmR3YXJlLCBhcyB3ZWxsIGVmZmVj dGl2ZWx5CnRyaXBsaW5nIHRoZSBudW1iZXIgb2YgTyhsZ04pIG9wZXJhdGlvbnMgcmVxdWlyZWQg dW5kZXIgdGhlIGlycW9mZiBsb2NrLgpUaGlzIGlzIGNyaXRpY2FsIHRvIHJlZHVjaW5nIHRoZSBs YXRlbmN5IGppdHRlciB3aXRoIG11bHRpcGxlIGNsaWVudHMuCgpUaGUgZG93bnNpZGVzIHRvIHNr aXBsaXN0cyBhcmUgdGhhdCBsb29rdXAvaW5zZXJ0aW9uIGlzIG9ubHkKcHJvYmFiaWxpc3RpY2Fs bHkgTyhsZ04pIGFuZCB0aGVyZSBpcyBhIHNpZ25pZmljYW50IG1lbW9yeSBwZW5hbHR5IHRvCmFz IGVhY2ggc2tpcCBub2RlIGlzIGxhcmdlciB0aGFuIHRoZSByYnRyZWUgZXF1aXZhbGVudC4gRnVy dGhlcm1vcmUsIHdlCmRvbid0IHVzZSBkeW5hbWljIGFycmF5cyBmb3IgdGhlIHNraXBsaXN0LCBz byB0aGUgYWxsb2NhdGlvbiBpcyBmaXhlZCwKYW5kIGltcG9zZXMgYW4gdXBwZXIgYm91bmQgb24g dGhlIHNjYWxhYmlsaXR5IHdydCB0byB0aGUgbnVtYmVyIG9mCmluZmxpZ2h0IHJlcXVlc3RzLgoK SW4gdGhlIGZvbGxvd2luZyBwYXRjaGVzLCB3ZSBpbnRyb2R1Y2UgYSBuZXcgc29ydCBrZXkgdG8g dGhlIHNjaGVkdWxlciwKYSB2aXJ0dWFsIGRlYWRsaW5lLiBUaGlzIGltcG9zZXMgYSBkaWZmZXJl bnQgc3RydWN0dXJlIHRvIHRoZSB0cmVlLgpVc2luZyBhIHByaW9yaXR5IHNvcnQsIHdlIGhhdmUg dmVyeSBmZXcgcHJpb3JpdHkgbGV2ZWxzIGFjdGl2ZSBhdCBhbnkKdGltZSwgbW9zdCBsaWtlbHkg anVzdCB0aGUgZGVmYXVsdCBwcmlvcml0eSBhbmQgc28gdGhlIHJidHJlZSBkZWdlbmVyYXRlcwp0 byBhIHNpbmdsZSBlbGVtZW50cyBjb250YWluaW5nIHRoZSBsaXN0IG9mIGFsbCByZWFkeSByZXF1 ZXN0cy4gVGhlCmRlYWRsaW5lcyBpbiBjb250cmFzdCBhcmUgdmVyeSBzcGFyc2UsIGFuZCB0eXBp Y2FsbHkgZWFjaCByZXF1ZXN0IGhhcyBhCnVuaXF1ZSBkZWFkbGluZS4gSW5zdGVhZCBvZiBiZWlu ZyBhYmxlIHRvIHNpbXBseSB3YWxrIHRoZSBsaXN0IGR1cmluZwpkZXF1ZXVlLCB3aXRoIHRoZSBk ZWFkbGluZSBzY2hlZHVsZXIgd2UgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGJzdApvbiB0 aGUgY3JpdGljYWwgc3VibWlzc2lvbiBwYXRoLiBTa2lwbGlzdHMgYXJlIHZhc3RseSBzdXBlcmlv ciBpbiB0aGlzCmluc3RhbmNlIGR1ZSB0byB0aGUgTygxKSBpdGVyYXRpb24gZHVyaW5nIGRlcXVl dWUsIHdpdGggdmVyeSBzaW1pbGFyCmNoYXJhY3RlcmlzdGljcyBbb24gYXZlcmFnZV0gdG8gdGhl IHJidHJlZSBmb3IgaW5zZXJ0aW9uLgoKVGhpcyBtZWFucyB0aGF0IGJ5IHVzaW5nIHNraXBsaXN0 cyB3ZSBjYW4gaW50cm9kdWNlIGEgc3BhcnNlIHNvcnQga2V5CndpdGhvdXQgZGVncmFkaW5nIGxh dGVuY3kgb24gdGhlIGNyaXRpY2FsIHN1Ym1pc3Npb24gcGF0aC4KCkFzIGFuIGV4YW1wbGUsIG9u ZSBzaW1wbGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZG8gbG90cyBvZgpzZW1pLWluZGVwZW5kZW50 IHdvcmsgd2l0aG91dCBhbnkgcHJpb3JpdHkgbWFuYWdlbWVudCAoZ2VtX2V4ZWNfcGFyYWxsZWwp LAp0aGUgbG9jayBob2xkIHRpbWVzIHdlcmU6Clt3b3JzdF0gICAgICAgIFt0b3RhbF0gICAgW2F2 Z10KIDk3My4wNSAgICAgNjMwMTU4NC44NCAgICAgMC4zNSAjIHBsYWluIHJidHJlZQogNTU5Ljgy ICAgICA1NDI0OTE1LjI1ICAgICAwLjMzICMgYmVzdCByYnRyZWUgd2l0aCBwcnVuaW5nCiAyMDgu MjEgICAgIDM4OTg3ODQuMDkgICAgIDAuMjQgIyBza2lwbGlzdAogIDM0LjA1ICAgICA1Nzg0MTA2 LjAxICAgICAwLjMyICMgcmJ0cmVlIHdpdGhvdXQgZGVhZGxpbmVzCiAgMjMuMzUgICAgIDQxNTI5 OTkuODAgICAgIDAuMjQgIyBza2lwbGlzdCB3aXRob3V0IGRlYWRsaW5lcwoKQmFzZWQgb24gdGhl IHNraXBsaXN0IGltcGxlbWVudGF0aW9uIGJ5IERyIENvbiBLb2xpdmFzIGZvciBNdVFTUy4KClJl ZmVyZW5jZXM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NraXBfbGlzdApTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiAuLi4v ZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyAgfCAxNjggKysrKystLS0t LQogLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgIDQxICst LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wcmlvbGlzdF90eXBlcy5oICAgIHwgIDY0ICsr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgICAgICAgICB8IDMwNCAr KysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgg ICAgICAgICB8ICAxNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlw ZXMuaCAgIHwgICAyICstCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVz dHMuaCAgfCAgIDEgKwogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hlZHVsZXIu YyAgIHwgIDUzICsrLQogOCBmaWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKSwgMTk1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4 ZWNsaXN0c19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVj bGlzdHNfc3VibWlzc2lvbi5jCmluZGV4IDc4ZmRhOWI0ZjYyNi4uNGEwMjU4MzQ3YzEwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lv bi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNz aW9uLmMKQEAgLTI1NCwxMSArMjU0LDYgQEAgc3RhdGljIHZvaWQgcmluZ19zZXRfcGF1c2VkKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHN0YXRlKQogCQl3bWIoKTsK IH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJf bm9kZSAqcmIpCi17Ci0JcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwg bm9kZSk7Ci19Ci0KIHN0YXRpYyBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKIHsKIAlyZXR1cm4gUkVBRF9PTkNFKHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKQEAg LTI4MiwxNSArMjc3LDI3IEBAIHN0YXRpYyBpbnQgZWZmZWN0aXZlX3ByaW8oY29uc3Qgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCiAJcmV0dXJuIHByaW87CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpmaXJzdF9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkICpzZSkKK3sK KwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwgPSBzZS0+cXVldWUuc2VudGluZWwubmV4dFswXTsK KworCWlmIChwbCA9PSAmc2UtPnF1ZXVlLnNlbnRpbmVsKQorCQlyZXR1cm4gTlVMTDsKKworCXJl dHVybiBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnBsLT5yZXF1ZXN0cywKKwkJCQkJc3RydWN0 IGk5MTVfcmVxdWVzdCwKKwkJCQkJc2NoZWQubGluayk7Cit9CisKIHN0YXRpYyBpbnQgcXVldWVf cHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZCAqc2UpCiB7Ci0Jc3RydWN0IHJiX25vZGUgKnJi OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCi0JcmIgPSByYl9maXJzdF9jYWNoZWQoJnNl LT5xdWV1ZSk7Ci0JaWYgKCFyYikKKwlycSA9IGZpcnN0X3JlcXVlc3Qoc2UpOworCWlmICghcnEp CiAJCXJldHVybiBJTlRfTUlOOwogCi0JcmV0dXJuIHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHk7 CisJcmV0dXJuIHJxX3ByaW8ocnEpOwogfQogCiBzdGF0aWMgaW50IHZpcnR1YWxfcHJpbyhjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZWwpCkBAIC0zMDAsNyArMzA3LDcgQEAg c3RhdGljIGludCB2aXJ0dWFsX3ByaW8oY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgKmVsKQogCXJldHVybiByYiA/IHJiX2VudHJ5KHJiLCBzdHJ1Y3QgdmVfbm9kZSwgcmIpLT5w cmlvIDogSU5UX01JTjsKIH0KIAotc3RhdGljIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKK3N0YXRpYyBib29sIG5lZWRfcHJlZW1wdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiB7CiAJY29uc3Qgc3RydWN0IGk5MTVfc2NoZWQgKnNlID0gJmVuZ2luZS0+c2NoZWQ7 CkBAIC0xMTQ0LDcgKzExNTEsOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnBvcnQg PSBleGVjbGlzdHMtPnBlbmRpbmc7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBjb25zdCBsYXN0 X3BvcnQgPSBwb3J0ICsgZXhlY2xpc3RzLT5wb3J0X21hc2s7CiAJc3RydWN0IGk5MTVfcmVxdWVz dCAqbGFzdCwgKiBjb25zdCAqYWN0aXZlOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47 CiAJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7 CiAJc3RydWN0IHJiX25vZGUgKnJiOwogCWJvb2wgc3VibWl0ID0gZmFsc2U7CiAKQEAgLTEzNTUs ODcgKzEzNjQsNzkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCQkJYnJlYWs7CiAJfQogCi0Jd2hpbGUgKChyYiA9IHJiX2Zp cnN0X2NhY2hlZCgmc2UtPnF1ZXVlKSkpIHsKLQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0 b19wcmlvbGlzdChyYik7Ci0JCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47CisJaTkxNV9z Y2hlZF9kZXF1ZXVlKHNlLCBwbCwgcnEsIHJuKSB7CisJCWJvb2wgbWVyZ2UgPSB0cnVlOwogCi0J CXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHApIHsKLQkJCWJvb2wg bWVyZ2UgPSB0cnVlOworCQkvKgorCQkgKiBDYW4gd2UgY29tYmluZSB0aGlzIHJlcXVlc3Qgd2l0 aCB0aGUgY3VycmVudCBwb3J0PworCQkgKiBJdCBoYXMgdG8gYmUgdGhlIHNhbWUgY29udGV4dC9y aW5nYnVmZmVyIGFuZCBub3QKKwkJICogaGF2ZSBhbnkgZXhjZXB0aW9ucyAoZS5nLiBHVlQgc2F5 aW5nIG5ldmVyIHRvCisJCSAqIGNvbWJpbmUgY29udGV4dHMpLgorCQkgKgorCQkgKiBJZiB3ZSBj YW4gY29tYmluZSB0aGUgcmVxdWVzdHMsIHdlIGNhbiBleGVjdXRlIGJvdGgKKwkJICogYnkgdXBk YXRpbmcgdGhlIFJJTkdfVEFJTCB0byBwb2ludCB0byB0aGUgZW5kIG9mIHRoZQorCQkgKiBzZWNv bmQgcmVxdWVzdCwgYW5kIHNvIHdlIG5ldmVyIG5lZWQgdG8gdGVsbCB0aGUKKwkJICogaGFyZHdh cmUgYWJvdXQgdGhlIGZpcnN0LgorCQkgKi8KKwkJaWYgKGxhc3QgJiYgIWNhbl9tZXJnZV9ycShs YXN0LCBycSkpIHsKKwkJCS8qCisJCQkgKiBJZiB3ZSBhcmUgb24gdGhlIHNlY29uZCBwb3J0IGFu ZCBjYW5ub3QKKwkJCSAqIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGxhc3QsIHRoZW4g d2UKKwkJCSAqIGFyZSBkb25lLgorCQkJICovCisJCQlpZiAocG9ydCA9PSBsYXN0X3BvcnQpCisJ CQkJZ290byBkb25lOwogCiAJCQkvKgotCQkJICogQ2FuIHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0 IHdpdGggdGhlIGN1cnJlbnQgcG9ydD8KLQkJCSAqIEl0IGhhcyB0byBiZSB0aGUgc2FtZSBjb250 ZXh0L3JpbmdidWZmZXIgYW5kIG5vdAotCQkJICogaGF2ZSBhbnkgZXhjZXB0aW9ucyAoZS5nLiBH VlQgc2F5aW5nIG5ldmVyIHRvCi0JCQkgKiBjb21iaW5lIGNvbnRleHRzKS4KLQkJCSAqCi0JCQkg KiBJZiB3ZSBjYW4gY29tYmluZSB0aGUgcmVxdWVzdHMsIHdlIGNhbiBleGVjdXRlIGJvdGgKLQkJ CSAqIGJ5IHVwZGF0aW5nIHRoZSBSSU5HX1RBSUwgdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUK LQkJCSAqIHNlY29uZCByZXF1ZXN0LCBhbmQgc28gd2UgbmV2ZXIgbmVlZCB0byB0ZWxsIHRoZQot CQkJICogaGFyZHdhcmUgYWJvdXQgdGhlIGZpcnN0LgorCQkJICogV2UgbXVzdCBub3QgcG9wdWxh dGUgYm90aCBFTFNQW10gd2l0aCB0aGUKKwkJCSAqIHNhbWUgTFJDQSwgaS5lLiB3ZSBtdXN0IHN1 Ym1pdCAyIGRpZmZlcmVudAorCQkJICogY29udGV4dHMgaWYgd2Ugc3VibWl0IDIgRUxTUC4KIAkJ CSAqLwotCQkJaWYgKGxhc3QgJiYgIWNhbl9tZXJnZV9ycShsYXN0LCBycSkpIHsKLQkJCQkvKgot CQkJCSAqIElmIHdlIGFyZSBvbiB0aGUgc2Vjb25kIHBvcnQgYW5kIGNhbm5vdAotCQkJCSAqIGNv bWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGxhc3QsIHRoZW4gd2UKLQkJCQkgKiBhcmUgZG9u ZS4KLQkJCQkgKi8KLQkJCQlpZiAocG9ydCA9PSBsYXN0X3BvcnQpCi0JCQkJCWdvdG8gZG9uZTsK KwkJCWlmIChsYXN0LT5jb250ZXh0ID09IHJxLT5jb250ZXh0KQorCQkJCWdvdG8gZG9uZTsKIAot CQkJCS8qCi0JCQkJICogV2UgbXVzdCBub3QgcG9wdWxhdGUgYm90aCBFTFNQW10gd2l0aCB0aGUK LQkJCQkgKiBzYW1lIExSQ0EsIGkuZS4gd2UgbXVzdCBzdWJtaXQgMiBkaWZmZXJlbnQKLQkJCQkg KiBjb250ZXh0cyBpZiB3ZSBzdWJtaXQgMiBFTFNQLgotCQkJCSAqLwotCQkJCWlmIChsYXN0LT5j b250ZXh0ID09IHJxLT5jb250ZXh0KQotCQkJCQlnb3RvIGRvbmU7CisJCQlpZiAoaTkxNV9yZXF1 ZXN0X2hhc19zZW50aW5lbChsYXN0KSkKKwkJCQlnb3RvIGRvbmU7CiAKLQkJCQlpZiAoaTkxNV9y ZXF1ZXN0X2hhc19zZW50aW5lbChsYXN0KSkKLQkJCQkJZ290byBkb25lOworCQkJLyoKKwkJCSAq IFdlIGF2b2lkIHN1Ym1pdHRpbmcgdmlydHVhbCByZXF1ZXN0cyBpbnRvCisJCQkgKiB0aGUgc2Vj b25kYXJ5IHBvcnRzIHNvIHRoYXQgd2UgY2FuIG1pZ3JhdGUKKwkJCSAqIHRoZSByZXF1ZXN0IGlt bWVkaWF0ZWx5IHRvIGFub3RoZXIgZW5naW5lCisJCQkgKiByYXRoZXIgdGhhbiB3YWl0IGZvciB0 aGUgcHJpbWFyeSByZXF1ZXN0LgorCQkJICovCisJCQlpZiAocnEtPmV4ZWN1dGlvbl9tYXNrICE9 IGVuZ2luZS0+bWFzaykKKwkJCQlnb3RvIGRvbmU7CiAKLQkJCQkvKgotCQkJCSAqIFdlIGF2b2lk IHN1Ym1pdHRpbmcgdmlydHVhbCByZXF1ZXN0cyBpbnRvCi0JCQkJICogdGhlIHNlY29uZGFyeSBw b3J0cyBzbyB0aGF0IHdlIGNhbiBtaWdyYXRlCi0JCQkJICogdGhlIHJlcXVlc3QgaW1tZWRpYXRl bHkgdG8gYW5vdGhlciBlbmdpbmUKLQkJCQkgKiByYXRoZXIgdGhhbiB3YWl0IGZvciB0aGUgcHJp bWFyeSByZXF1ZXN0LgotCQkJCSAqLwotCQkJCWlmIChycS0+ZXhlY3V0aW9uX21hc2sgIT0gZW5n aW5lLT5tYXNrKQotCQkJCQlnb3RvIGRvbmU7CisJCQkvKgorCQkJICogSWYgR1ZUIG92ZXJyaWRl cyB1cyB3ZSBvbmx5IGV2ZXIgc3VibWl0CisJCQkgKiBwb3J0WzBdLCBsZWF2aW5nIHBvcnRbMV0g ZW1wdHkuIE5vdGUgdGhhdCB3ZQorCQkJICogYWxzbyBoYXZlIHRvIGJlIGNhcmVmdWwgdGhhdCB3 ZSBkb24ndCBxdWV1ZQorCQkJICogdGhlIHNhbWUgY29udGV4dCAoZXZlbiB0aG91Z2ggYSBkaWZm ZXJlbnQKKwkJCSAqIHJlcXVlc3QpIHRvIHRoZSBzZWNvbmQgcG9ydC4KKwkJCSAqLworCQkJaWYg KGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKGxhc3QtPmNvbnRleHQpIHx8CisJCQkgICAgY3R4 X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24ocnEtPmNvbnRleHQpKQorCQkJCWdvdG8gZG9uZTsKIAot CQkJCS8qCi0JCQkJICogSWYgR1ZUIG92ZXJyaWRlcyB1cyB3ZSBvbmx5IGV2ZXIgc3VibWl0Ci0J CQkJICogcG9ydFswXSwgbGVhdmluZyBwb3J0WzFdIGVtcHR5LiBOb3RlIHRoYXQgd2UKLQkJCQkg KiBhbHNvIGhhdmUgdG8gYmUgY2FyZWZ1bCB0aGF0IHdlIGRvbid0IHF1ZXVlCi0JCQkJICogdGhl IHNhbWUgY29udGV4dCAoZXZlbiB0aG91Z2ggYSBkaWZmZXJlbnQKLQkJCQkgKiByZXF1ZXN0KSB0 byB0aGUgc2Vjb25kIHBvcnQuCi0JCQkJICovCi0JCQkJaWYgKGN0eF9zaW5nbGVfcG9ydF9zdWJt aXNzaW9uKGxhc3QtPmNvbnRleHQpIHx8Ci0JCQkJICAgIGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNz aW9uKHJxLT5jb250ZXh0KSkKLQkJCQkJZ290byBkb25lOwotCi0JCQkJbWVyZ2UgPSBmYWxzZTsK LQkJCX0KLQotCQkJaWYgKF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSkpIHsKLQkJCQlpZiAoIW1l cmdlKSB7Ci0JCQkJCSpwb3J0KysgPSBpOTE1X3JlcXVlc3RfZ2V0KGxhc3QpOwotCQkJCQlsYXN0 ID0gTlVMTDsKLQkJCQl9Ci0KLQkJCQlHRU1fQlVHX09OKGxhc3QgJiYKLQkJCQkJICAgIWNhbl9t ZXJnZV9jdHgobGFzdC0+Y29udGV4dCwKLQkJCQkJCQkgIHJxLT5jb250ZXh0KSk7Ci0JCQkJR0VN X0JVR19PTihsYXN0ICYmCi0JCQkJCSAgIGk5MTVfc2Vxbm9fcGFzc2VkKGxhc3QtPmZlbmNlLnNl cW5vLAotCQkJCQkJCSAgICAgcnEtPmZlbmNlLnNlcW5vKSk7Ci0KLQkJCQlzdWJtaXQgPSB0cnVl OwotCQkJCWxhc3QgPSBycTsKLQkJCX0KKwkJCW1lcmdlID0gZmFsc2U7CiAJCX0KIAotCQlyYl9l cmFzZV9jYWNoZWQoJnAtPm5vZGUsICZzZS0+cXVldWUpOwotCQlpOTE1X3ByaW9saXN0X2ZyZWUo cCk7CisJCWlmIChfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpKSB7CisJCQlpZiAoIW1lcmdlKSB7 CisJCQkJKnBvcnQrKyA9IGk5MTVfcmVxdWVzdF9nZXQobGFzdCk7CisJCQkJbGFzdCA9IE5VTEw7 CisJCQl9CisKKwkJCUdFTV9CVUdfT04obGFzdCAmJgorCQkJCSAgICFjYW5fbWVyZ2VfY3R4KGxh c3QtPmNvbnRleHQsCisJCQkJCQkgIHJxLT5jb250ZXh0KSk7CisJCQlHRU1fQlVHX09OKGxhc3Qg JiYKKwkJCQkgICBpOTE1X3NlcW5vX3Bhc3NlZChsYXN0LT5mZW5jZS5zZXFubywKKwkJCQkJCSAg ICAgcnEtPmZlbmNlLnNlcW5vKSk7CisKKwkJCXN1Ym1pdCA9IHRydWU7CisJCQlsYXN0ID0gcnE7 CisJCX0KIAl9CiBkb25lOgogCSpwb3J0KysgPSBpOTE1X3JlcXVlc3RfZ2V0KGxhc3QpOwpAQCAt MTQ1Niw3ICsxNDU3LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIHJlcXVlc3QgdHJpZ2dlcmluZyBwcmVlbXB0aW9u IG9uIHRoZSBuZXh0IGRlcXVldWUgKG9yIHN1YnNlcXVlbnQKIAkgKiBpbnRlcnJ1cHQgZm9yIHNl Y29uZGFyeSBwb3J0cykuCiAJICovCi0JZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0g cXVldWVfcHJpbyhzZSk7CisJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gcGwtPnBy aW9yaXR5OwogCXNwaW5fdW5sb2NrKCZzZS0+bG9jayk7CiAKIAkvKgpAQCAtMjcxNiw3ICsyNzE3 LDYgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJfQogCiAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0g SU5UX01JTjsKLQlzZS0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKIAogCUdFTV9CVUdfT04oX190 YXNrbGV0X2lzX2VuYWJsZWQoJnNlLT50YXNrbGV0KSk7CiAJc2UtPnRhc2tsZXQuY2FsbGJhY2sg PSBub3Bfc3VibWlzc2lvbl90YXNrbGV0OwpAQCAtMzE3Myw2ICszMTczLDggQEAgc3RhdGljIHZv aWQgdmlydHVhbF9jb250ZXh0X2V4aXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCiAJZm9y IChuID0gMDsgbiA8IHZlLT5udW1fc2libGluZ3M7IG4rKykKIAkJaW50ZWxfZW5naW5lX3BtX3B1 dCh2ZS0+c2libGluZ3Nbbl0pOworCisJaTkxNV9zY2hlZF9wYXJrKGludGVsX2VuZ2luZV9nZXRf c2NoZWR1bGVyKCZ2ZS0+YmFzZSkpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Nv bnRleHRfb3BzIHZpcnR1YWxfY29udGV4dF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCBkMTRiOWRiNzdkZjguLmMx NjM5M2RmNDJhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfc3VibWlzc2lvbi5jCkBAIC02MCwxMSArNjAsNiBAQAogCiAjZGVmaW5lIEdVQ19SRVFVRVNU X1NJWkUgNjQgLyogYnl0ZXMgKi8KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQotewotCXJldHVybiByYl9lbnRyeShy Yiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5vZGUpOwotfQotCiBzdGF0aWMgc3RydWN0IGd1Y19z dGFnZV9kZXNjICpfX2dldF9zdGFnZV9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGlk KQogewogCXN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqYmFzZSA9IGd1Yy0+c3RhZ2VfZGVzY19wb29s X3ZhZGRyOwpAQCAtMTg2LDkgKzE4MSwxMCBAQCBzdGF0aWMgdm9pZCBfX2d1Y19kZXF1ZXVlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqZmly c3QgPSBleGVjbGlzdHMtPmluZmxpZ2h0OwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKiogY29uc3Qg bGFzdF9wb3J0ID0gZmlyc3QgKyBleGVjbGlzdHMtPnBvcnRfbWFzazsKIAlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpsYXN0ID0gZmlyc3RbMF07CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsK IAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqcG9ydDsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7 CiAJYm9vbCBzdWJtaXQgPSBmYWxzZTsKLQlzdHJ1Y3QgcmJfbm9kZSAqcmI7CiAKIAlsb2NrZGVw X2Fzc2VydF9oZWxkKCZzZS0+bG9jayk7CiAKQEAgLTIwNSwzMiArMjAxLDIyIEBAIHN0YXRpYyB2 b2lkIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIGV2 ZW50LgogCSAqLwogCXBvcnQgPSBmaXJzdDsKLQl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVk KCZzZS0+cXVldWUpKSkgewotCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0 KHJiKTsKLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKKwlpOTE1X3NjaGVkX2RlcXVl dWUoc2UsIHBsLCBycSwgcm4pIHsKKwkJaWYgKGxhc3QgJiYgcnEtPmNvbnRleHQgIT0gbGFzdC0+ Y29udGV4dCkgeworCQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KQorCQkJCWdvdG8gZG9uZTsKIAot CQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwKSB7Ci0JCQlpZiAo bGFzdCAmJiBycS0+Y29udGV4dCAhPSBsYXN0LT5jb250ZXh0KSB7Ci0JCQkJaWYgKHBvcnQgPT0g bGFzdF9wb3J0KQotCQkJCQlnb3RvIGRvbmU7Ci0KLQkJCQkqcG9ydCA9IHNjaGVkdWxlX2luKGxh c3QsCi0JCQkJCQkgICAgcG9ydCAtIGV4ZWNsaXN0cy0+aW5mbGlnaHQpOwotCQkJCXBvcnQrKzsK LQkJCX0KLQotCQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOwotCQkJX19pOTE1X3Jl cXVlc3Rfc3VibWl0KHJxKTsKLQkJCXN1Ym1pdCA9IHRydWU7Ci0JCQlsYXN0ID0gcnE7CisJCQkq cG9ydCA9IHNjaGVkdWxlX2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPmluZmxpZ2h0KTsKKwkJ CXBvcnQrKzsKIAkJfQogCi0JCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJnNlLT5xdWV1ZSk7 Ci0JCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKKwkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxp bmspOworCQlfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpOworCQlzdWJtaXQgPSB0cnVlOworCQls YXN0ID0gcnE7CiAJfQogZG9uZToKLQlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPQot CQlyYiA/IHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHkgOiBJTlRfTUlOOworCWV4ZWNsaXN0cy0+ cXVldWVfcHJpb3JpdHlfaGludCA9IHBsLT5wcmlvcml0eTsKIAlpZiAoc3VibWl0KSB7CiAJCSpw b3J0ID0gc2NoZWR1bGVfaW4obGFzdCwgcG9ydCAtIGV4ZWNsaXN0cy0+aW5mbGlnaHQpOwogCQkq Kytwb3J0ID0gTlVMTDsKQEAgLTM2MSw3ICszNDcsNiBAQCBzdGF0aWMgdm9pZCBndWNfcmVzZXRf Y2FuY2VsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlfX2k5MTVfc2NoZWRfY2Fu Y2VsX3F1ZXVlKHNlKTsKIAogCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9N SU47Ci0Jc2UtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZzZS0+bG9jaywgZmxhZ3MpOwogCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMo ZW5naW5lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3Rf dHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaAppbmRl eCBiYzJmYTg0Zjk4YTguLmVlNzQ4MmI5YzgxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wcmlvbGlzdF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcHJpb2xpc3RfdHlwZXMuaApAQCAtMzgsMTAgKzM4LDcyIEBAIGVudW0gewogI2RlZmluZSBJ OTE1X1BSSU9SSVRZX1VOUFJFRU1QVEFCTEUgSU5UX01BWAogI2RlZmluZSBJOTE1X1BSSU9SSVRZ X0JBUlJJRVIgKEk5MTVfUFJJT1JJVFlfVU5QUkVFTVBUQUJMRSAtIDEpCiAKKy8qCisgKiBUaGUg c2xhYiByZXR1cm5zIHBvd2VyLW9mLXR3byBjaHVua3Mgb2YgbWVtb3J5LCBzbyBmaWxsIG91dCB0 aGUKKyAqIG5vZGUgdG8gdGhlIG5leHQgY2FjaGVsaW5lLgorICoKKyAqIFdlIGNhbiBlc3RpbWF0 ZSBob3cgbWFueSByZXF1ZXN0cyB0aGUgc2tpcGxpc3Qgd2lsbCBzY2FsZSB0byBiYXNlZAorICog b24gaXRzIGhlaWdodDoKKyAqICAgMTEgPT4gIDQgbWlsbGlvbiByZXF1ZXN0cworICogICAxMiA9 PiAxNiBtaWxsaW9uIHJlcXVlc3RzCisgKi8KKyNpZmRlZiBDT05GSUdfNjRCSVQKKyNkZWZpbmUg STkxNV9QUklPTElTVF9IRUlHSFQgMTIKKyNlbHNlCisjZGVmaW5lIEk5MTVfUFJJT0xJU1RfSEVJ R0hUIDExCisjZW5kaWYKKworLyoKKyAqIGk5MTVfcHJpb2xpc3QgZm9ybXMgYSBza2lwbGlzdC4g VGhlIHNraXBsaXN0IGlzIGJ1aWx0IGluIGxheWVycywKKyAqIHN0YXJ0aW5nIGF0IHRoZSBiYXNl IFswXSBpcyBhIHNpbmdseSBsaW5rZWQgbGlzdCBvZiBhbGwgaTkxNV9wcmlvbGlzdC4KKyAqIEVh Y2ggaGlnaGVyIGxheWVyIGNvbnRhaW5zIGEgZnJhY3Rpb24gb2YgdGhlIGk5MTVfcHJpb2xpc3Qg ZnJvbSB0aGUKKyAqIHByZXZpb3VzIGxheWVyOgorICoKKyAqIFNbMF0gMDEyMzQ1Njc4OUFCQ0RF RjAxMjM0NTY3ODlBQkNERUYwMTIzNDU2Nzg5QUJDREVGMDEyMzQ1Njc4OUFCQ0RFRiBTCisgKiBF WzFdID4xPjM+NT43Pjk+Qj5EPkY+MT4zPjU+Nz45PkI+RD5GPjE+Mz41Pjc+OT5CPkQ+Rj4xPjM+ NT43Pjk+Qj5EPkYgRQorICogTlsyXSAtLT4zLS0+Ny0tPkItLT5GLS0+My0tPjctLT5CLS0+Ri0t PjMtLT43LS0+Qi0tPkYtLT4zLS0+Ny0tPkItLT5GIE4KKyAqIFRbM10gLS0tLS0tPjctLS0tLS0+ Ri0tLS0tLS03LS0tLS0tPkYtLS0tLS0+Ny0tLS0tLT5GLS0tLS0tPjctLS0tLS0+RiBUCisgKiBJ WzRdIC0tLS0tLS0tLS0tLS0tPkYtLS0tLS0tLS0tLS0tLT5GLS0tLS0tLS0tLS0tLS0+Ri0tLS0t LS0tLS0tLS0tPkYgSQorICogTls1XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Ri0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5GIE4KKyAqIEVbNl0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tPkYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBFCisgKiBM WzddIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLT4gTAorICoKKyAqIFRvIGl0ZXJhdGUgdGhyb3VnaCBhbGwgYWN0aXZlIGk5MTVf cHJpb2xpc3QsIHdlIG9ubHkgbmVlZCB0byBmb2xsb3cKKyAqIHRoZSBjaGFpbiBpbiBpOTE1X3By aW9saXN0Lm5leHRbMF0gKHNlZSBmb3JfZWFjaF9wcmlvbGlzdCgpKS4KKyAqCisgKiBUbyBxdWlj a2x5IGZpbmQgYSBzcGVjaWZpYyBrZXkgKG9yIGluc2VydCBwb2ludCksIHdlIGNhbiBwZXJmb3Jt IGEgYmluYXJ5CisgKiBzZWFyY2ggYnkgc3RhcnRpbmcgYXQgdGhlIGhpZ2hlc3QgbGV2ZWwgYW5k IGZvbGxvd2luZyB0aGUgbGlua2VkIGxpc3QKKyAqIGF0IHRoYXQgbGV2ZWwgdW50aWwgd2UgZWl0 aGVyIGZpbmQgdGhlIG5vZGUsIG9yIGhhdmUgZ29uZSBwYXNzZWQgdGhlIGtleS4KKyAqIFRoZW4g d2UgZGVzY2VuZCBhIGxldmVsLCBhbmQgc3RhcnQgd2Fsa2luZyB0aGUgbGlzdCBhZ2FpbiBzdGFy dGluZyBmcm9tCisgKiB0aGUgY3VycmVudCBwb3NpdGlvbiwgdW50aWwgZXZlbnR1YWxseSB3ZSBm aW5kIG91ciBrZXksIG9yIHdlIHJ1biBvdXQgb2YKKyAqIGxldmVscy4KKyAqCisgKiBodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9Ta2lwX2xpc3QKKyAqLwogc3RydWN0IGk5MTVfcHJpb2xp c3QgewogCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7Ci0Jc3RydWN0IHJiX25vZGUgbm9kZTsK IAlpbnQgcHJpb3JpdHk7CisKKwlpbnQgbGV2ZWw7CisJc3RydWN0IGk5MTVfcHJpb2xpc3QgKm5l eHRbSTkxNV9QUklPTElTVF9IRUlHSFRdOwogfTsKIAorc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9v dCB7CisJc3RydWN0IGk5MTVfcHJpb2xpc3Qgc2VudGluZWw7CisJdTMyIHBybmc7Cit9OworCisj ZGVmaW5lIGk5MTVfcHJpb2xpc3RfaXNfZW1wdHkocm9vdCkgKChyb290KS0+c2VudGluZWwubGV2 ZWwgPCAwKQorCisjZGVmaW5lIGZvcl9lYWNoX3ByaW9saXN0KHAsIHJvb3QpIFwKKwlmb3IgKChw KSA9IChyb290KS0+c2VudGluZWwubmV4dFswXTsgXAorCSAgICAgKHApICE9ICYocm9vdCktPnNl bnRpbmVsOyBcCisJICAgICAocCkgPSAocCktPm5leHRbMF0pCisKKyNkZWZpbmUgcHJpb2xpc3Rf Zm9yX2VhY2hfcmVxdWVzdChpdCwgcGxpc3QpIFwKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0LCAm KHBsaXN0KS0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCisKKyNkZWZpbmUgcHJpb2xpc3RfZm9yX2Vh Y2hfcmVxdWVzdF9zYWZlKGl0LCBuLCBwbGlzdCkgXAorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShpdCwgbiwgJihwbGlzdCktPnJlcXVlc3RzLCBzY2hlZC5saW5rKQorCiAjZW5kaWYgLyogX0k5 MTVfUFJJT0xJU1RfVFlQRVNfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5j CmluZGV4IDMxMmUxNTM4ZDAwMS4uNTE4ZWFjNjc5NTllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyLmMKQEAgLTQsNyArNCw5IEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRl bCBDb3Jwb3JhdGlvbgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KICNpbmNsdWRl IDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3ByYW5kb20uaD4KIAogI2luY2x1ZGUg Imd0L2ludGVsX3JpbmcuaCIKICNpbmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCkBAIC0xNjgs NiArMTcwLDE2IEBAIHZvaWQgaTkxNV9zY2hlZF9zZWxlY3RfbW9kZShzdHJ1Y3QgaTkxNV9zY2hl ZCAqc2UsIGVudW0gaTkxNV9zY2hlZF9tb2RlIG1vZGUpCiAJfQogfQogCitzdGF0aWMgdm9pZCBp bml0X3ByaW9saXN0KHN0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3QgKmNvbnN0IHJvb3QpCit7CisJ c3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsID0gJnJvb3QtPnNlbnRpbmVsOworCisJbWVtc2V0X3Ao KHZvaWQgKiopcGwtPm5leHQsIHBsLCBBUlJBWV9TSVpFKHBsLT5uZXh0KSk7CisJcGwtPnJlcXVl c3RzLnByZXYgPSBOVUxMOworCXBsLT5wcmlvcml0eSA9IElOVF9NSU47CisJcGwtPmxldmVsID0g LTE7Cit9CisKIHZvaWQgaTkxNV9zY2hlZF9pbml0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwKIAkJ ICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCSAgICAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE4 Myw5ICsxOTUsOSBAQCB2b2lkIGk5MTVfc2NoZWRfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZCAqc2Us CiAKIAlzZS0+bWFzayA9IG1hc2s7CiAKKwlpbml0X3ByaW9saXN0KCZzZS0+cXVldWUpOwogCUlO SVRfTElTVF9IRUFEKCZzZS0+cmVxdWVzdHMpOwogCUlOSVRfTElTVF9IRUFEKCZzZS0+aG9sZCk7 Ci0Jc2UtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiAKIAlpbml0X2lwaSgmc2UtPmlwaSk7CiAK QEAgLTE5NCw4ICsyMDYsNjAgQEAgdm9pZCBpOTE1X3NjaGVkX2luaXQoc3RydWN0IGk5MTVfc2No ZWQgKnNlLAogCXNlLT5yZXZva2VfY29udGV4dCA9IGk5MTVfc2NoZWRfZGVmYXVsdF9yZXZva2Vf Y29udGV4dDsKIH0KIAorX19tYXliZV91bnVzZWQgc3RhdGljIGJvb2wgcHJpb2xpc3RfaWRsZShz dHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290KQoreworCXN0cnVjdCBpOTE1X3ByaW9saXN0 ICpwbCA9ICZyb290LT5zZW50aW5lbDsKKwlpbnQgbHZsOworCisJZm9yIChsdmwgPSAwOyBsdmwg PCBBUlJBWV9TSVpFKHBsLT5uZXh0KTsgbHZsKyspIHsKKwkJaWYgKHBsLT5uZXh0W2x2bF0gIT0g cGwpIHsKKwkJCUdFTV9UUkFDRV9FUlIoInJvb3RbJWRdIGlzIG5vdCBlbXB0eVxuIiwgbHZsKTsK KwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCWlmIChwbC0+bGV2ZWwgIT0gLTEpIHsKKwkJ R0VNX1RSQUNFX0VSUigicm9vdCBpcyBub3QgY2xlYXI6ICVkXG4iLCBwbC0+bGV2ZWwpOworCQly ZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBsX2Vt cHR5KHN0cnVjdCBsaXN0X2hlYWQgKnN0KQoreworCXJldHVybiAhc3QtPnByZXY7Cit9CisKK3N0 YXRpYyB2b2lkIHBsX3B1c2goc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsLCBzdHJ1Y3QgbGlzdF9o ZWFkICpzdCkKK3sKKwkvKiBLZWVwIGxpc3RfZW1wdHkoJnBsLT5yZXF1ZXN0cykgdmFsaWQgZm9y IGNvbmN1cnJlbnQgcmVhZGVycyAqLworCXBsLT5yZXF1ZXN0cy5wcmV2ID0gc3QtPnByZXY7CisJ c3QtPnByZXYgPSAmcGwtPnJlcXVlc3RzOworCUdFTV9CVUdfT04ocGxfZW1wdHkoc3QpKTsKK30K Kworc3RhdGljIHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbF9wb3Aoc3RydWN0IGxpc3RfaGVhZCAq c3QpCit7CisJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsOworCisJR0VNX0JVR19PTihwbF9lbXB0 eShzdCkpOworCXBsID0gY29udGFpbmVyX29mKHN0LT5wcmV2LCB0eXBlb2YoKnBsKSwgcmVxdWVz dHMpOworCXN0LT5wcmV2ID0gcGwtPnJlcXVlc3RzLnByZXY7CisKKwlyZXR1cm4gcGw7Cit9CisK IHZvaWQgaTkxNV9zY2hlZF9wYXJrKHN0cnVjdCBpOTE1X3NjaGVkICpzZSkKIHsKKwlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdF9yb290ICpyb290ID0gJnNlLT5xdWV1ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFk ICpsaXN0ID0gJnJvb3QtPnNlbnRpbmVsLnJlcXVlc3RzOworCisJR0VNX0JVR19PTighcHJpb2xp c3RfaWRsZShyb290KSk7CisKKwl3aGlsZSAoIXBsX2VtcHR5KGxpc3QpKQorCQlrbWVtX2NhY2hl X2ZyZWUoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcywgcGxfcG9wKGxpc3QpKTsKKwogCUdFTV9CVUdf T04oIWk5MTVfc2NoZWRfaXNfaWRsZShzZSkpOwogCXNlLT5ub19wcmlvbGlzdCA9IGZhbHNlOwog fQpAQCAtMjUxLDcwICszMTUsNzEgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVfc2lnbmFsZWQo Y29uc3Qgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKIAlyZXR1cm4gaTkxNV9yZXF1ZXN0 X2NvbXBsZXRlZChub2RlX3RvX3JlcXVlc3Qobm9kZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIHN0 cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCitzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCByYW5kb21fbGV2ZWwoc3RydWN0IGk5MTVfcHJpb2xpc3Rf cm9vdCAqcm9vdCkKIHsKLQlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0 LCBub2RlKTsKLX0KLQotc3RhdGljIHZvaWQgYXNzZXJ0X3ByaW9saXN0cyhzdHJ1Y3QgaTkxNV9z Y2hlZCAqIGNvbnN0IHNlKQotewotCXN0cnVjdCByYl9ub2RlICpyYjsKLQlsb25nIGxhc3RfcHJp bzsKLQotCWlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkKLQkJcmV0 dXJuOwotCi0JR0VNX0JVR19PTihyYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSkgIT0KLQkJICAg cmJfZmlyc3QoJnNlLT5xdWV1ZS5yYl9yb290KSk7Ci0KLQlsYXN0X3ByaW8gPSBJTlRfTUFYOwot CWZvciAocmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQo cmIpKSB7Ci0JCWNvbnN0IHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIp OwotCi0JCUdFTV9CVUdfT04ocC0+cHJpb3JpdHkgPiBsYXN0X3ByaW8pOwotCQlsYXN0X3ByaW8g PSBwLT5wcmlvcml0eTsKLQl9CisJLyoKKwkgKiBHaXZlbiBhIHVuaWZvcm0gZGlzdHJpYnV0aW9u IG9mIHJhbmRvbSBudW1iZXJzIG92ZXIgdGhlIHUzMiwgdGhlbgorCSAqIHRoZSBwcm9iYWJpbGl0 eSBlYWNoIGJpdCBiZWluZyB1bnNldCBpcyBQPTAuNS4gVGhlIHByb2JhYmlsaXR5IG9mIGEKKwkg KiBzdWNjZXNzaXZlIHNlcXVlbmNlIG9mIGJpdHMgYmVpbmcgdW5zZXQgaXMgUChuKSA9IDAuNV5u IFtuID4gMF0uCisJICogICBQKGxldmVsOjEpID0gMC41CisJICogICBQKGxldmVsOjIpID0gMC4y NQorCSAqICAgUChsZXZlbDozKSA9IDAuMTI1CisJICogICBQKGxldmVsOjQpID0gMC4wNjI1CisJ ICogICAuLi4KKwkgKiBTbyB3ZSBjYW4gdXNlIGZmcygpIG9uIGEgZ29vZCByYW5kb20gbnVtYmVy IGdlbmVyYXRvciB0byBwaWNrIG91cgorCSAqIGxldmVsLiBXZSBkaXZpZGUgYnkgdHdvIHRvIHJl ZHVjZSB0aGUgcHJvYmFiaWxpdHkgb2YgY2hvb3NpbmcgYQorCSAqIGxldmVsIHRvIC4yNSwgYXMg dGhlIGNvc3Qgb2YgZGVzY2VuZGluZyBhIGxldmVsIGlzIHRoZSBzYW1lIGFzCisJICogZm9sbG93 aW5nIGFuIGV4dHJhIGxpbmsgaW4gdGhlIGNoYWluIGF0IHRoYXQgbGV2ZWwgKHNvIHdlIGNhbgor CSAqIHBhY2sgbW9yZSBub2RlcyBpbnRvIGZld2VyIGxldmVscyB3aXRob3V0IGluY3VycmluZyBl eHRyYSBjb3N0LAorCSAqIGFuZCBhbGxvdyBzY2FsaW5nIHRvIGhpZ2hlciB2b2x1bWVzIG9mIHJl cXVlc3RzIHdpdGhvdXQgZXhwYW5kaW5nCisJICogdGhlIGhlaWdodCBvZiB0aGUgc2tpcGxpc3Qp LgorCSAqLworCXJvb3QtPnBybmcgPSBuZXh0X3BzZXVkb19yYW5kb20zMihyb290LT5wcm5nKTsK KwlyZXR1cm4gIF9fZmZzKHJvb3QtPnBybmcpIC8gMjsKIH0KIAogc3RhdGljIHN0cnVjdCBsaXN0 X2hlYWQgKgogbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwgaW50IHByaW8p CiB7Ci0Jc3RydWN0IGk5MTVfcHJpb2xpc3QgKnA7Ci0Jc3RydWN0IHJiX25vZGUgKipwYXJlbnQs ICpyYjsKLQlib29sIGZpcnN0ID0gdHJ1ZTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdXBkYXRl W0k5MTVfUFJJT0xJU1RfSEVJR0hUXTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpjb25z dCByb290ID0gJnNlLT5xdWV1ZTsKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwsICp0bXA7CisJ aW50IGx2bDsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsKLQlhc3NlcnRfcHJp b2xpc3RzKHNlKTsKLQogCWlmICh1bmxpa2VseShzZS0+bm9fcHJpb2xpc3QpKQogCQlwcmlvID0g STkxNV9QUklPUklUWV9OT1JNQUw7CiAKKwlmb3JfZWFjaF9wcmlvbGlzdChwbCwgcm9vdCkgeyAv KiByZWN5Y2xlIGFueSBlbXB0eSBlbGVtZW50cyBiZWZvcmUgdXMgKi8KKwkJaWYgKHBsLT5wcmlv cml0eSA8PSBwcmlvIHx8ICFsaXN0X2VtcHR5KCZwbC0+cmVxdWVzdHMpKQorCQkJYnJlYWs7CisK KwkJX19pOTE1X3NjaGVkX2RlcXVldWVfbmV4dChzZSk7CisJfQorCiBmaW5kX3ByaW9saXN0Ogot CS8qIG1vc3QgcG9zaXRpdmUgcHJpb3JpdHkgaXMgc2NoZWR1bGVkIGZpcnN0LCBlcXVhbCBwcmlv cml0aWVzIGZpZm8gKi8KLQlyYiA9IE5VTEw7Ci0JcGFyZW50ID0gJnNlLT5xdWV1ZS5yYl9yb290 LnJiX25vZGU7Ci0Jd2hpbGUgKCpwYXJlbnQpIHsKLQkJcmIgPSAqcGFyZW50OwotCQlwID0gdG9f cHJpb2xpc3QocmIpOwotCQlpZiAocHJpbyA+IHAtPnByaW9yaXR5KSB7Ci0JCQlwYXJlbnQgPSAm cmItPnJiX2xlZnQ7Ci0JCX0gZWxzZSBpZiAocHJpbyA8IHAtPnByaW9yaXR5KSB7Ci0JCQlwYXJl bnQgPSAmcmItPnJiX3JpZ2h0OwotCQkJZmlyc3QgPSBmYWxzZTsKLQkJfSBlbHNlIHsKLQkJCXJl dHVybiAmcC0+cmVxdWVzdHM7Ci0JCX0KKwlwbCA9ICZyb290LT5zZW50aW5lbDsKKwlsdmwgPSBw bC0+bGV2ZWw7CisJd2hpbGUgKGx2bCA+PSAwKSB7CisJCXdoaWxlICh0bXAgPSBwbC0+bmV4dFts dmxdLCB0bXAtPnByaW9yaXR5ID49IHByaW8pCisJCQlwbCA9IHRtcDsKKwkJaWYgKHBsLT5wcmlv cml0eSA9PSBwcmlvKQorCQkJZ290byBvdXQ7CisJCXVwZGF0ZVtsdmwtLV0gPSBwbDsKIAl9CiAK IAlpZiAocHJpbyA9PSBJOTE1X1BSSU9SSVRZX05PUk1BTCkgewotCQlwID0gJnNlLT5kZWZhdWx0 X3ByaW9saXN0OworCQlwbCA9ICZzZS0+ZGVmYXVsdF9wcmlvbGlzdDsKKwl9IGVsc2UgaWYgKCFw bF9lbXB0eSgmcm9vdC0+c2VudGluZWwucmVxdWVzdHMpKSB7CisJCXBsID0gcGxfcG9wKCZyb290 LT5zZW50aW5lbC5yZXF1ZXN0cyk7CiAJfSBlbHNlIHsKLQkJcCA9IGttZW1fY2FjaGVfYWxsb2Mo Z2xvYmFsLnNsYWJfcHJpb3JpdGllcywgR0ZQX0FUT01JQyk7CisJCXBsID0ga21lbV9jYWNoZV9h bGxvYyhnbG9iYWwuc2xhYl9wcmlvcml0aWVzLCBHRlBfQVRPTUlDKTsKIAkJLyogQ29udmVydCBh biBhbGxvY2F0aW9uIGZhaWx1cmUgdG8gYSBwcmlvcml0eSBidW1wICovCi0JCWlmICh1bmxpa2Vs eSghcCkpIHsKKwkJaWYgKHVubGlrZWx5KCFwbCkpIHsKIAkJCXByaW8gPSBJOTE1X1BSSU9SSVRZ X05PUk1BTDsgLyogcmVjdXJzZXMganVzdCBvbmNlICovCiAKLQkJCS8qIFRvIG1haW50YWluIG9y ZGVyaW5nIHdpdGggYWxsIHJlbmRlcmluZywgYWZ0ZXIgYW4KKwkJCS8qCisJCQkgKiBUbyBtYWlu dGFpbiBvcmRlcmluZyB3aXRoIGFsbCByZW5kZXJpbmcsIGFmdGVyIGFuCiAJCQkgKiBhbGxvY2F0 aW9uIGZhaWx1cmUgd2UgaGF2ZSB0byBkaXNhYmxlIGFsbCBzY2hlZHVsaW5nLgogCQkJICogUmVx dWVzdHMgd2lsbCB0aGVuIGJlIGV4ZWN1dGVkIGluIGZpZm8sIGFuZCBzY2hlZHVsZQogCQkJICog d2lsbCBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgYXJlIGVtaXR0ZWQgaW4gZmlmby4KQEAgLTMy NywxOCArMzkyLDEyMyBAQCBsb29rdXBfcHJpb2xpc3Qoc3RydWN0IGk5MTVfc2NoZWQgKnNlLCBp bnQgcHJpbykKIAkJfQogCX0KIAotCXAtPnByaW9yaXR5ID0gcHJpbzsKLQlJTklUX0xJU1RfSEVB RCgmcC0+cmVxdWVzdHMpOworCXBsLT5wcmlvcml0eSA9IHByaW87CisJSU5JVF9MSVNUX0hFQUQo JnBsLT5yZXF1ZXN0cyk7CiAKLQlyYl9saW5rX25vZGUoJnAtPm5vZGUsIHJiLCBwYXJlbnQpOwot CXJiX2luc2VydF9jb2xvcl9jYWNoZWQoJnAtPm5vZGUsICZzZS0+cXVldWUsIGZpcnN0KTsKKwls dmwgPSByYW5kb21fbGV2ZWwocm9vdCk7CisJaWYgKGx2bCA+IHJvb3QtPnNlbnRpbmVsLmxldmVs KSB7CisJCWlmIChyb290LT5zZW50aW5lbC5sZXZlbCA8IEk5MTVfUFJJT0xJU1RfSEVJR0hUIC0g MSkgeworCQkJbHZsID0gKytyb290LT5zZW50aW5lbC5sZXZlbDsKKwkJCXVwZGF0ZVtsdmxdID0g JnJvb3QtPnNlbnRpbmVsOworCQl9IGVsc2UgeworCQkJbHZsID0gSTkxNV9QUklPTElTVF9IRUlH SFQgLSAxOworCQl9CisJfQorCUdFTV9CVUdfT04obHZsIDwgMCk7CisJR0VNX0JVR19PTihsdmwg Pj0gQVJSQVlfU0laRShwbC0+bmV4dCkpOwogCi0JcmV0dXJuICZwLT5yZXF1ZXN0czsKKwlwbC0+ bGV2ZWwgPSBsdmw7CisJZG8geworCQl0bXAgPSB1cGRhdGVbbHZsXTsKKwkJcGwtPm5leHRbbHZs XSA9IHRtcC0+bmV4dFtsdmxdOworCQl0bXAtPm5leHRbbHZsXSA9IHBsOworCX0gd2hpbGUgKC0t bHZsID49IDApOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkp IHsKKwkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKmNoazsKKworCQljaGsgPSAmcm9vdC0+c2VudGlu ZWw7CisJCWx2bCA9IGNoay0+bGV2ZWw7CisJCWRvIHsKKwkJCXdoaWxlICh0bXAgPSBjaGstPm5l eHRbbHZsXSwgdG1wLT5wcmlvcml0eSA+PSBwcmlvKQorCQkJCWNoayA9IHRtcDsKKwkJfSB3aGls ZSAoLS1sdmwgPj0gMCk7CisKKwkJR0VNX0JVR19PTihjaGsgIT0gcGwpOworCX0KKworb3V0Ogor CUdFTV9CVUdfT04ocGwgPT0gJnJvb3QtPnNlbnRpbmVsKTsKKwlyZXR1cm4gJnBsLT5yZXF1ZXN0 czsKIH0KIAotdm9pZCBfX2k5MTVfcHJpb2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAq cCkKK3N0YXRpYyB2b2lkIF9fcmVtb3ZlX3ByaW9saXN0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSwg c3RydWN0IGxpc3RfaGVhZCAqcGxpc3QpCiB7Ci0Ja21lbV9jYWNoZV9mcmVlKGdsb2JhbC5zbGFi X3ByaW9yaXRpZXMsIHApOworCXN0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3QgKnJvb3QgPSAmc2Ut PnF1ZXVlOworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCwgKnRtcDsKKwlzdHJ1Y3QgaTkxNV9w cmlvbGlzdCAqb2xkID0KKwkJY29udGFpbmVyX29mKHBsaXN0LCBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCwgcmVxdWVzdHMpOworCWludCBwcmlvID0gb2xkLT5wcmlvcml0eTsKKwlpbnQgbHZsOworCisJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmc2UtPmxvY2spOworCUdFTV9CVUdfT04oIWxpc3RfZW1wdHko cGxpc3QpKTsKKworCXBsID0gJnJvb3QtPnNlbnRpbmVsOworCWx2bCA9IHBsLT5sZXZlbDsKKwlH RU1fQlVHX09OKGx2bCA8IDApOworCisJaWYgKHByaW8gIT0gSTkxNV9QUklPUklUWV9OT1JNQUwp CisJCXBsX3B1c2gob2xkLCAmcGwtPnJlcXVlc3RzKTsKKworCWRvIHsKKwkJd2hpbGUgKHRtcCA9 IHBsLT5uZXh0W2x2bF0sIHRtcC0+cHJpb3JpdHkgPiBwcmlvKQorCQkJcGwgPSB0bXA7CisJCWlm IChsdmwgPD0gb2xkLT5sZXZlbCkgeworCQkJcGwtPm5leHRbbHZsXSA9IG9sZC0+bmV4dFtsdmxd OworCQkJaWYgKHBsID09ICZyb290LT5zZW50aW5lbCAmJiBvbGQtPm5leHRbbHZsXSA9PSBwbCkg eworCQkJCUdFTV9CVUdfT04ocGwtPmxldmVsICE9IGx2bCk7CisJCQkJcGwtPmxldmVsLS07CisJ CQl9CisJCX0KKwl9IHdoaWxlICgtLWx2bCA+PSAwKTsKKwlHRU1fQlVHX09OKHRtcCAhPSBvbGQp OworfQorCitzdGF0aWMgdm9pZCByZW1vdmVfZnJvbV9wcmlvbGlzdChzdHJ1Y3QgaTkxNV9zY2hl ZCAqc2UsCisJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJCSBzdHJ1Y3QgbGlzdF9o ZWFkICpsaXN0LAorCQkJCSBib29sIHRhaWwpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqcHJldiA9 IHJxLT5zY2hlZC5saW5rLnByZXY7CisKKwlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfaW5fcHJp b3JpdHlfcXVldWUocnEpKTsKKworCV9fbGlzdF9kZWxfZW50cnkoJnJxLT5zY2hlZC5saW5rKTsK KwlpZiAodGFpbCkKKwkJbGlzdF9hZGRfdGFpbCgmcnEtPnNjaGVkLmxpbmssIGxpc3QpOworCWVs c2UKKwkJbGlzdF9hZGQoJnJxLT5zY2hlZC5saW5rLCBsaXN0KTsKKworCS8qIElmIHdlIGp1c3Qg cmVtb3ZlZCB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBvbGQgcGxpc3QsIGRlbGV0ZSBpdCAqLwor CWlmIChsaXN0X2VtcHR5KHByZXYpKQorCQlfX3JlbW92ZV9wcmlvbGlzdChzZSwgcHJldik7Cit9 CisKK3N0cnVjdCBpOTE1X3ByaW9saXN0ICpfX2k5MTVfc2NoZWRfZGVxdWV1ZV9uZXh0KHN0cnVj dCBpOTE1X3NjaGVkICpzZSkKK3sKKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqIGNvbnN0IHMgPSAm c2UtPnF1ZXVlLnNlbnRpbmVsOworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCA9IHMtPm5leHRb MF07CisJaW50IGx2bDsKKworCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnBsLT5yZXF1ZXN0cykp OworCUdFTV9CVUdfT04ocGwgPT0gcyk7CisKKwkvKiBLZWVwIHBsLT5uZXh0WzBdIHZhbGlkIGZv ciBmb3JfZWFjaF9wcmlvbGlzdCBpdGVyYXRpb24gKi8KKwlpZiAocGwtPnByaW9yaXR5ICE9IEk5 MTVfUFJJT1JJVFlfTk9STUFMKQorCQlwbF9wdXNoKHBsLCAmcy0+cmVxdWVzdHMpOworCisJbHZs ID0gcGwtPmxldmVsOworCUdFTV9CVUdfT04obHZsIDwgMCk7CisJZG8geworCQlzLT5uZXh0W2x2 bF0gPSBwbC0+bmV4dFtsdmxdOworCQlpZiAocGwtPm5leHRbbHZsXSA9PSBzKSB7CisJCQlHRU1f QlVHX09OKHMtPmxldmVsICE9IGx2bCk7CisJCQlzLT5sZXZlbC0tOworCQl9CisJfSB3aGlsZSAo LS1sdmwgPj0gMCk7CisKKwlyZXR1cm4gcGwtPm5leHRbMF07CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoKQEAgLTQ5MSw3ICs2NjEsNyBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfcmVx dWVzdF9zZXRfcHJpb3JpdHkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBwcmlvKQogCiAJ CUdFTV9CVUdfT04ocnEtPmVuZ2luZSAhPSBlbmdpbmUpOwogCQlpZiAoaTkxNV9yZXF1ZXN0X2lu X3ByaW9yaXR5X3F1ZXVlKHJxKSkKLQkJCWxpc3RfbW92ZV90YWlsKCZycS0+c2NoZWQubGluaywg cGxpc3QpOworCQkJcmVtb3ZlX2Zyb21fcHJpb2xpc3Qoc2UsIHJxLCBwbGlzdCwgdHJ1ZSk7CiAK IAkJLyogRGVmZXIgKHRhc2tsZXQpIHN1Ym1pc3Npb24gdW50aWwgYWZ0ZXIgYWxsIHVwZGF0ZXMu ICovCiAJCWtpY2tfc3VibWlzc2lvbihlbmdpbmUsIHJxLCBwcmlvKTsKQEAgLTYyNyw4ICs3OTcs NyBAQCB2b2lkIF9faTkxNV9zY2hlZF9kZWZlcl9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKIAogCQkvKiBOb3RlIGxpc3QgaXMgcmV2ZXJzZWQgZm9yIHdhaXRlcnMgd3J0 IHNpZ25hbCBoaWVyYXJjaHkgKi8KIAkJR0VNX0JVR19PTihycS0+ZW5naW5lICE9IGVuZ2luZSk7 Ci0JCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVzdF9pbl9wcmlvcml0eV9xdWV1ZShycSkpOwotCQls aXN0X21vdmUoJnJxLT5zY2hlZC5saW5rLCAmZGZzKTsKKwkJcmVtb3ZlX2Zyb21fcHJpb2xpc3Qo c2UsIHJxLCAmZGZzLCBmYWxzZSk7CiAKIAkJLyogVHJhY2sgb3VyIHZpc2l0LCBhbmQgcHJldmVu dCBkdXBsaWNhdGUgcHJvY2Vzc2luZyAqLwogCQljbGVhcl9iaXQoSTkxNV9GRU5DRV9GTEFHX1BR VUVVRSwgJnJxLT5mZW5jZS5mbGFncyk7CkBAIC05MjcsNyArMTA5Niw3IEBAIHZvaWQgaTkxNV9z Y2hlZF9yZXN1bWVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiB2b2lk IF9faTkxNV9zY2hlZF9jYW5jZWxfcXVldWUoc3RydWN0IGk5MTVfc2NoZWQgKnNlKQogewogCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47Ci0Jc3RydWN0IHJiX25vZGUgKnJiOworCXN0cnVj dCBpOTE1X3ByaW9saXN0ICpwbDsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsK IApAQCAtOTM2LDE2ICsxMTA1LDkgQEAgdm9pZCBfX2k5MTVfc2NoZWRfY2FuY2VsX3F1ZXVlKHN0 cnVjdCBpOTE1X3NjaGVkICpzZSkKIAkJaTkxNV9yZXF1ZXN0X3B1dChpOTE1X3JlcXVlc3RfbWFy a19laW8ocnEpKTsKIAogCS8qIEZsdXNoIHRoZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVs aW5lIGxpc3QgKGZvciByZXRpcmluZykuICovCi0Jd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hl ZCgmc2UtPnF1ZXVlKSkpIHsKLQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlz dChyYik7Ci0KLQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCkg ewotCQkJaTkxNV9yZXF1ZXN0X3B1dChpOTE1X3JlcXVlc3RfbWFya19laW8ocnEpKTsKLQkJCV9f aTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Ci0JCX0KLQotCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5v ZGUsICZzZS0+cXVldWUpOwotCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7CisJaTkxNV9zY2hlZF9k ZXF1ZXVlKHNlLCBwbCwgcnEsIHJuKSB7CisJCWk5MTVfcmVxdWVzdF9wdXQoaTkxNV9yZXF1ZXN0 X21hcmtfZWlvKHJxKSk7CisJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CiAJfQogCUdFTV9C VUdfT04oIWk5MTVfc2NoZWRfaXNfaWRsZShzZSkpOwogCkBAIC0xMjI1LDkgKzEzODcsOSBAQCB2 b2lkIGk5MTVfc2NoZWRfc2hvdyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCSAgICAgdW5zaWdu ZWQgaW50IG1heCkKIHsKIAljb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKmxhc3Q7CisJ c3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWdu ZWQgaW50IGNvdW50OwotCXN0cnVjdCByYl9ub2RlICpyYjsKIAogCXJjdV9yZWFkX2xvY2soKTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmc2UtPmxvY2ssIGZsYWdzKTsKQEAgLTEyODIsMTAgKzE0NDQs OCBAQCB2b2lkIGk5MTVfc2NoZWRfc2hvdyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAKIAlsYXN0 ID0gTlVMTDsKIAljb3VudCA9IDA7Ci0JZm9yIChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmc2UtPnF1 ZXVlKTsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKLQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAg PSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Ci0KLQkJcHJpb2xpc3RfZm9yX2VhY2hf cmVxdWVzdChycSwgcCkgeworCWZvcl9lYWNoX3ByaW9saXN0KHBsLCAmc2UtPnF1ZXVlKSB7CisJ CXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3QocnEsIHBsKSB7CiAJCQlpZiAoY291bnQrKyA8IG1h eCAtIDEpCiAJCQkJc2hvd19yZXF1ZXN0KG0sIHJxLCAiXHQiLCAwKTsKIAkJCWVsc2UKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCmluZGV4IGZlMzkyMTA5YjExMi4uODcyZDIyMWY2 YmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKQEAgLTI0LDEyICsyNCw2 IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3M7CiAJCSAgIyNfX1ZBX0FSR1NfXyk7CQkJCQlcCiB9 IHdoaWxlICgwKQogCi0jZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3QoaXQsIHBsaXN0 KSBcCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShpdCwgJihwbGlzdCktPnJlcXVlc3RzLCBzY2hlZC5s aW5rKQotCi0jZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShpdCwgbiwg cGxpc3QpIFwKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQsIG4sICYocGxpc3QpLT5yZXF1 ZXN0cywgc2NoZWQubGluaykKLQogdm9pZCBpOTE1X3NjaGVkX25vZGVfaW5pdChzdHJ1Y3QgaTkx NV9zY2hlZF9ub2RlICpub2RlKTsKIHZvaWQgaTkxNV9zY2hlZF9ub2RlX3JlaW5pdChzdHJ1Y3Qg aTkxNV9zY2hlZF9ub2RlICpub2RlKTsKIApAQCAtMTAwLDcgKzk0LDcgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfcHJpb2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKIAogc3Rh dGljIGlubGluZSBib29sIGk5MTVfc2NoZWRfaXNfaWRsZShjb25zdCBzdHJ1Y3QgaTkxNV9zY2hl ZCAqc2UpCiB7Ci0JcmV0dXJuIFJCX0VNUFRZX1JPT1QoJnNlLT5xdWV1ZS5yYl9yb290KTsKKwly ZXR1cm4gaTkxNV9wcmlvbGlzdF9pc19lbXB0eSgmc2UtPnF1ZXVlKTsKIH0KIAogc3RhdGljIGlu bGluZSBib29sCkBAIC0xNjgsNiArMTYyLDE0IEBAIGk5MTVfc2NoZWRfZ2V0X2FjdGl2ZV9yZXF1 ZXN0KGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkICpzZSkKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyog V2FsayB0aGUgc2NoZWR1bGVyIHF1ZXVlIG9mIHJlcXVlc3RzIChpbiBzdWJtaXNzaW9uIG9yZGVy KSBhbmQgcmVtb3ZlIHRoZW0gKi8KK3N0cnVjdCBpOTE1X3ByaW9saXN0ICpfX2k5MTVfc2NoZWRf ZGVxdWV1ZV9uZXh0KHN0cnVjdCBpOTE1X3NjaGVkICpzZSk7CisjZGVmaW5lIGk5MTVfc2NoZWRf ZGVxdWV1ZShzZSwgcGwsIHJxLCBybikgXAorCWZvciAoKHBsKSA9IChzZSktPnF1ZXVlLnNlbnRp bmVsLm5leHRbMF07IFwKKwkgICAgIChwbCkgIT0gJihzZSktPnF1ZXVlLnNlbnRpbmVsOyBcCisJ ICAgICAocGwpID0gX19pOTE1X3NjaGVkX2RlcXVldWVfbmV4dChzZSkpIFwKKwkJcHJpb2xpc3Rf Zm9yX2VhY2hfcmVxdWVzdF9zYWZlKHJxLCBybiwgcGwpCisKIHZvaWQgaTkxNV9yZXF1ZXN0X3No b3dfd2l0aF9zY2hlZHVsZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCQkJICAgICBjb25zdCBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJCQkgICAgIGNvbnN0IGNoYXIgKnByZWZpeCwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oCmluZGV4IDVjYTJkYzFi NGZiNS4uYmM2NjhmMzc1MDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3NjaGVkdWxlcl90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyX3R5cGVzLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBzdHJ1Y3QgaTkxNV9zY2hlZCB7CiAJICog QHF1ZXVlIGlzIG9ubHkgdXNlZCB0byB0cmFuc2ZlciByZXF1ZXN0cyBmcm9tIHRoZSBzY2hlZHVs ZXIKIAkgKiBmcm9udGVuZCB0byB0aGUgYmFjay4KIAkgKi8KLQlzdHJ1Y3QgcmJfcm9vdF9jYWNo ZWQgcXVldWU7CisJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCBxdWV1ZTsKIAogCS8qKgogCSAq IEB0YXNrbGV0OiBzb2Z0aXJxIHRhc2tsZXQgZm9yIGJvdHRvbSBoYWxmCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAppbmRleCAz ZGIzNGQzZWVhNTguLjk0NmM5MzQ0MWMxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCkBAIC0yNSw2ICsyNSw3IEBAIHNl bGZ0ZXN0KHJpbmcsIGludGVsX3JpbmdfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChlbmdpbmUs IGludGVsX2VuZ2luZV9jc19tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHRpbWVsaW5lcywgaW50 ZWxfdGltZWxpbmVfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1 ZXN0X21vY2tfc2VsZnRlc3RzKQorc2VsZnRlc3Qoc2NoZWR1bGVyLCBpOTE1X3NjaGVkdWxlcl9t b2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KG9iamVjdHMsIGk5MTVfZ2VtX29iamVjdF9tb2NrX3Nl bGZ0ZXN0cykKIHNlbGZ0ZXN0KHBoeXMsIGk5MTVfZ2VtX3BoeXNfbW9ja19zZWxmdGVzdHMpCiBz ZWxmdGVzdChkbWFidWYsIGk5MTVfZ2VtX2RtYWJ1Zl9tb2NrX3NlbGZ0ZXN0cykKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMKaW5kZXggZjU0YmRi ZWFhNDhiLi4yYmIyZDNkMDdkMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3NjaGVkdWxlci5jCkBAIC0xMiw2ICsxMiw1NCBAQAogI2luY2x1ZGUgInNlbGZ0 ZXN0cy9pZ3Rfc3Bpbm5lci5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIgog CitzdGF0aWMgaW50IG1vY2tfc2tpcGxpc3RfbGV2ZWxzKHZvaWQgKmR1bW15KQoreworCXN0cnVj dCBpOTE1X3ByaW9saXN0X3Jvb3Qgcm9vdCA9IHt9OworCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpw bCA9ICZyb290LnNlbnRpbmVsOworCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKwl1bnNpZ25lZCBs b25nIHRvdGFsOworCWludCBjb3VudCwgbHZsOworCisJdG90YWwgPSAwOworCWRvIHsKKwkJZm9y IChjb3VudCA9IDA7IGNvdW50IDwgMTYzODQ7IGNvdW50KyspIHsKKwkJCWx2bCA9IHJhbmRvbV9s ZXZlbCgmcm9vdCk7CisJCQlpZiAobHZsID4gcGwtPmxldmVsKSB7CisJCQkJaWYgKGx2bCA8IEk5 MTVfUFJJT0xJU1RfSEVJR0hUIC0gMSkKKwkJCQkJbHZsID0gKytwbC0+bGV2ZWw7CisJCQkJZWxz ZQorCQkJCQlsdmwgPSBJOTE1X1BSSU9MSVNUX0hFSUdIVCAtIDE7CisJCQl9CisKKwkJCXBsLT5u ZXh0W2x2bF0gPSBwdHJfaW5jKHBsLT5uZXh0W2x2bF0pOworCQl9CisJCXRvdGFsICs9IGNvdW50 OworCX0gd2hpbGUgKCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7CisKKwlwcl9pbmZv KCJUb3RhbCAlOWx1XG4iLCB0b3RhbCk7CisJZm9yIChsdmwgPSAwOyBsdmwgPD0gcGwtPmxldmVs OyBsdmwrKykgeworCQlpbnQgeCA9IGlsb2cyKCh1bnNpZ25lZCBsb25nKXBsLT5uZXh0W2x2bF0p OworCQljaGFyIHJvd1s4MF07CisKKwkJbWVtc2V0KHJvdywgJyonLCB4KTsKKwkJcm93W3hdID0g J1wwJzsKKworCQlwcl9pbmZvKCIgWyUyZF0gJTlsdSAlc1xuIiwKKwkJCWx2bCwgKHVuc2lnbmVk IGxvbmcpcGwtPm5leHRbbHZsXSwgcm93KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5 MTVfc2NoZWR1bGVyX21vY2tfc2VsZnRlc3RzKHZvaWQpCit7CisJc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChtb2NrX3NraXBsaXN0X2xldmVs cyksCisJfTsKKworCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBOVUxMKTsKK30KKwogc3Rh dGljIHZvaWQgc2NoZWR1bGluZ19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKIAllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IDA7CkBAIC04MCw5ICsx MjgsOSBAQCBzdGF0aWMgaW50IGFsbF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAogc3RhdGljIGJvb2wgY2hlY2tfY29udGV4dF9vcmRlcihzdHJ1Y3QgaTkxNV9zY2hlZCAq c2UpCiB7CiAJdTY0IGxhc3Rfc2Vxbm8sIGxhc3RfY29udGV4dDsKKwlzdHJ1Y3QgaTkxNV9wcmlv bGlzdCAqcDsKIAl1bnNpZ25lZCBsb25nIGNvdW50OwogCWJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0J c3RydWN0IHJiX25vZGUgKnJiOwogCWludCBsYXN0X3ByaW87CiAKIAkvKiBXZSBleHBlY3QgdGhl IGV4ZWN1dGlvbiBvcmRlciB0byBmb2xsb3cgYXNjZW5kaW5nIGZlbmNlLWNvbnRleHQgKi8KQEAg LTkyLDggKzE0MCw3IEBAIHN0YXRpYyBib29sIGNoZWNrX2NvbnRleHRfb3JkZXIoc3RydWN0IGk5 MTVfc2NoZWQgKnNlKQogCWxhc3RfY29udGV4dCA9IDA7CiAJbGFzdF9zZXFubyA9IDA7CiAJbGFz dF9wcmlvID0gMDsKLQlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZzZS0+cXVldWUpOyByYjsg cmIgPSByYl9uZXh0KHJiKSkgewotCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHJiX2VudHJ5 KHJiLCB0eXBlb2YoKnApLCBub2RlKTsKKwlmb3JfZWFjaF9wcmlvbGlzdChwLCAmc2UtPnF1ZXVl KSB7CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCiAJCXByaW9saXN0X2Zvcl9lYWNoX3Jl cXVlc3QocnEsIHApIHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==