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 40E58C07E9B for ; Tue, 20 Jul 2021 20:40:22 +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 0733A60FEA for ; Tue, 20 Jul 2021 20:40:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0733A60FEA 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 F05376E49F; Tue, 20 Jul 2021 20:40:17 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5C049899FF; Tue, 20 Jul 2021 20:40:16 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="209421874" X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="209421874" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:15 -0700 X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="414906054" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:14 -0700 From: Matthew Brost To: , Date: Tue, 20 Jul 2021 13:57:21 -0700 Message-Id: <20210720205802.39610-2-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210720205802.39610-1-matthew.brost@intel.com> References: <20210720205802.39610-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 01/42] drm/i915/guc: GuC submission squashed into single patch 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy85MTg0MC8KClNpZ25lZC1v ZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgICAyMSArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyAgICAgIHwgICAgMyArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYyAgICAgIHwgICAgNiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuYyAgIHwgICA0NCArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuaCAgIHwgICAxNiArLQogLi4uL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1ic190eXBlcy5oIHwgICAgNyArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMgICAgICAgfCAgIDUwICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmggICAgICAgfCAgIDUwICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmggfCAgIDYzICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCAgICAgICAgfCAgIDU3ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgMTgyICstCiAuLi4vZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYyAgfCAgIDcxICstCiAuLi4vZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCAgfCAgICA0ICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oICB8ICAgMTMgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMgICB8ICAgIDQgKwogLi4uL2RybS9p OTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMgIHwgICA4OSArLQogLi4uL2RybS9p OTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmggIHwgICAgNCAtCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jICAgICAgICAgICAgfCAgIDIxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0LmggICAgICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyAgICAgICAgIHwgICAgNiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuYyAgIHwgICAyMSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCAgIHwgICAgOSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oICAgICAgIHwgICAgMSAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAgICAgICAgfCAgIDUwICstCiAuLi4vZ3B1L2RybS9p OTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jICAgfCAgIDQyICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3Jwcy5jICAgICAgICAgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgIHwgICA0NiArLQogLi4uL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF93b3JrYXJvdW5kc190eXBlcy5oIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9tb2NrX2VuZ2luZS5jICAgICAgICAgfCAgIDM0ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMgICAgfCAgIDEwICsKIC4uLi9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmMgICB8ICAgMjIgKwogLi4uL2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuaCAgIHwgICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYyAgfCAgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyAgfCAgMzE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9tb2NzLmMgICAgICAgfCAgIDUwICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgICAgfCAgMTMyICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0 L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaCAgfCAgIDE1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Yy5jICAgICAgICB8ICAgODIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Yy5oICAgICAgICB8ICAxMDEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19hZHMuYyAgICB8ICA0NjMgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfYWRzLmggICAgfCAgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19jdC5jICAgICB8ICAxMzIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19jdC5oICAgICB8ICAgMTYgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX2RlYnVnZnMuYyAgICB8ICAgMjUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19md2lmLmggICB8ICAgODggKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8IDI4NDggKysrKysrKysrKysrKysrLS0KIC4uLi9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCB8ICAgMTggKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMgICAgICAgICB8ICAxMDEgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmggICAgICAgICB8ICAgMTEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzX3BhcmFtcy5jICAgIHwgICAzMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgICB8ICAgMjUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICAgIDIgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDE3MyArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgICAyOSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgICAgfCAgIDE2ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oICAgICAgICAgfCAgIDEwICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oICAgfCAgIDIyICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdHJhY2UuaCAgICAgICAgICAgICB8ICAxOTkgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyB8ICAgIDQgKy0KIC4uLi9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMgICB8ICAgIDIgKy0KIC4uLi9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYyAgICB8ICAgIDIgKy0KIC4uLi9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jICB8ICAgODkgKwogLi4uL2k5MTUvc2Vs ZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmggIHwgICAzNSArCiAuLi4vZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyAgfCAgICAzICstCiBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIDY3IGZpbGVzIGNoYW5n ZWQsIDUxMjIgaW5zZXJ0aW9ucygrKSwgODk4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVy cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDEwYjNiYjYy MDdiYS4uYWI3Njc5OTU3NjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMjgwLDYgKzI4MCw3 IEBAIGk5MTUtJChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikgKz0gaTkxNV9ncHVfZXJy b3IubwogaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgKz0gXAogCWdlbS9zZWxmdGVz dHMvaTkxNV9nZW1fY2xpZW50X2JsdC5vIFwKIAlnZW0vc2VsZnRlc3RzL2lndF9nZW1fdXRpbHMu byBcCisJc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLm8gXAogCXNlbGZ0ZXN0cy9p OTE1X3JhbmRvbS5vIFwKIAlzZWxmdGVzdHMvaTkxNV9zZWxmdGVzdC5vIFwKIAlzZWxmdGVzdHMv aWd0X2F0b21pYy5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4 dC5jCmluZGV4IDdkNmY1MmQ4YTgwMS4uZDg3YTRjNmRhNWJjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTc0LDcgKzc0LDYgQEAKICNpbmNsdWRl ICJndC9pbnRlbF9jb250ZXh0X3BhcmFtLmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX2hl YXJ0YmVhdC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCi0jaW5jbHVkZSAi Z3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uaCIgLyogdmlydHVhbF9lbmdpbmUgKi8KICNp bmNsdWRlICJndC9pbnRlbF9ncHVfY29tbWFuZHMuaCIKICNpbmNsdWRlICJndC9pbnRlbF9yaW5n LmgiCiAKQEAgLTM2Myw5ICszNjIsNiBAQCBzZXRfcHJvdG9fY3R4X2VuZ2luZXNfYmFsYW5jZShz dHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2UsCiAJaWYgKCFIQVNfRVhFQ0xJ U1RTKGk5MTUpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWlmIChpbnRlbF91Y191c2VzX2d1Y19z dWJtaXNzaW9uKCZpOTE1LT5ndC51YykpCi0JCXJldHVybiAtRU5PREVWOyAvKiBub3QgaW1wbGVt ZW50IHlldCAqLwotCiAJaWYgKGdldF91c2VyKGlkeCwgJmV4dC0+ZW5naW5lX2luZGV4KSkKIAkJ cmV0dXJuIC1FRkFVTFQ7CiAKQEAgLTQ5NSw2ICs0OTEsMTEgQEAgc2V0X3Byb3RvX2N0eF9lbmdp bmVzX2JvbmQoc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gX191c2VyICpiYXNlLCB2b2lkICpk YXRhKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKKwlpZiAoaW50ZWxfZW5naW5lX3VzZXNfZ3Vj KG1hc3RlcikpIHsKKwkJRFJNX0RFQlVHKCJib25kaW5nIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVk IHdpdGggR3VDIHN1Ym1pc3Npb24iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJaWYgKGdl dF91c2VyKG51bV9ib25kcywgJmV4dC0+bnVtX2JvbmRzKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAK QEAgLTc5OSw3ICs4MDAsOCBAQCBzdGF0aWMgaW50IGludGVsX2NvbnRleHRfc2V0X2dlbShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJfQogCiAJaWYgKGN0eC0+c2NoZWQucHJpb3JpdHkgPj0g STkxNV9QUklPUklUWV9OT1JNQUwgJiYKLQkgICAgaW50ZWxfZW5naW5lX2hhc190aW1lc2xpY2Vz KGNlLT5lbmdpbmUpKQorCSAgICBpbnRlbF9lbmdpbmVfaGFzX3RpbWVzbGljZXMoY2UtPmVuZ2lu ZSkgJiYKKwkgICAgaW50ZWxfZW5naW5lX2hhc19zZW1hcGhvcmVzKGNlLT5lbmdpbmUpKQogCQlf X3NldF9iaXQoQ09OVEVYVF9VU0VfU0VNQVBIT1JFUywgJmNlLT5mbGFncyk7CiAKIAlpZiAoSVNf QUNUSVZFKENPTkZJR19EUk1fSTkxNV9SRVFVRVNUX1RJTUVPVVQpICYmCkBAIC05NDksOCArOTUx LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICp1c2VyX2VuZ2luZXMoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCWJyZWFrOwogCiAJCWNhc2UgSTkxNV9HRU1fRU5H SU5FX1RZUEVfQkFMQU5DRUQ6Ci0JCQljZSA9IGludGVsX2V4ZWNsaXN0c19jcmVhdGVfdmlydHVh bChwZVtuXS5zaWJsaW5ncywKLQkJCQkJCQkgICAgcGVbbl0ubnVtX3NpYmxpbmdzKTsKKwkJCWNl ID0gaW50ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHBlW25dLnNpYmxpbmdzLAorCQkJCQkJCSBw ZVtuXS5udW1fc2libGluZ3MpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBJOTE1X0dFTV9FTkdJTkVf VFlQRV9JTlZBTElEOgpAQCAtMTA4Miw3ICsxMDg0LDcgQEAgc3RhdGljIHZvaWQga2lsbF9lbmdp bmVzKHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplbmdpbmVzLCBib29sIGJhbikKIAlmb3JfZWFj aF9nZW1fZW5naW5lKGNlLCBlbmdpbmVzLCBpdCkgewogCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CiAKLQkJaWYgKGJhbiAmJiBpbnRlbF9jb250ZXh0X3NldF9iYW5uZWQoY2UpKQor CQlpZiAoYmFuICYmIGludGVsX2NvbnRleHRfYmFuKGNlLCBOVUxMKSkKIAkJCWNvbnRpbnVlOwog CiAJCS8qCkBAIC0xNzc4LDcgKzE3ODAsOCBAQCBzdGF0aWMgdm9pZCBfX2FwcGx5X3ByaW9yaXR5 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgdm9pZCAqYXJnKQogCWlmICghaW50ZWxfZW5naW5l X2hhc190aW1lc2xpY2VzKGNlLT5lbmdpbmUpKQogCQlyZXR1cm47CiAKLQlpZiAoY3R4LT5zY2hl ZC5wcmlvcml0eSA+PSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKKwlpZiAoY3R4LT5zY2hlZC5wcmlv cml0eSA+PSBJOTE1X1BSSU9SSVRZX05PUk1BTCAmJgorCSAgICBpbnRlbF9lbmdpbmVfaGFzX3Nl bWFwaG9yZXMoY2UtPmVuZ2luZSkpCiAJCWludGVsX2NvbnRleHRfc2V0X3VzZV9zZW1hcGhvcmVz KGNlKTsKIAllbHNlCiAJCWludGVsX2NvbnRleHRfY2xlYXJfdXNlX3NlbWFwaG9yZXMoY2UpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKaW5kZXggYTkwZjc5NmU4NWMw Li42ZmZmZDRkMzc3YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4u YwpAQCAtNjQ1LDcgKzY0NSw4IEBAIG1tYXBfb2Zmc2V0X2F0dGFjaChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAogCQlnb3RvIGluc2VydDsKIAogCS8qIEF0dGVtcHQgdG8gcmVhcCBz b21lIG1tYXAgc3BhY2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KLQllcnIgPSBpbnRlbF9ndF9yZXRp cmVfcmVxdWVzdHNfdGltZW91dCgmaTkxNS0+Z3QsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKKwll cnIgPSBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dCgmaTkxNS0+Z3QsIE1BWF9TQ0hF RFVMRV9USU1FT1VULAorCQkJCQkgICAgICAgTlVMTCk7CiAJaWYgKGVycikKIAkJZ290byBlcnI7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCmluZGV4IDg3YjA2NTcy ZmQyZS4uZjdhYWU1MDJlYzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9n ZW44X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5l X2NzLmMKQEAgLTUwNiw3ICs1MDYsOCBAQCBnZW44X2VtaXRfZmluaV9icmVhZGNydW1iX3RhaWwo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJKmNzKysgPSBNSV9VU0VSX0lOVEVS UlVQVDsKIAogCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7Ci0JaWYgKGlu dGVsX2VuZ2luZV9oYXNfc2VtYXBob3JlcyhycS0+ZW5naW5lKSkKKwlpZiAoaW50ZWxfZW5naW5l X2hhc19zZW1hcGhvcmVzKHJxLT5lbmdpbmUpICYmCisJICAgICFpbnRlbF91Y191c2VzX2d1Y19z dWJtaXNzaW9uKCZycS0+ZW5naW5lLT5ndC0+dWMpKQogCQljcyA9IGVtaXRfcHJlZW1wdF9idXN5 d2FpdChycSwgY3MpOwogCiAJcnEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChycSwgY3MpOwpA QCAtNTk4LDcgKzU5OSw4IEBAIGdlbjEyX2VtaXRfZmluaV9icmVhZGNydW1iX3RhaWwoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsK IAogCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7Ci0JaWYgKGludGVsX2Vu Z2luZV9oYXNfc2VtYXBob3JlcyhycS0+ZW5naW5lKSkKKwlpZiAoaW50ZWxfZW5naW5lX2hhc19z ZW1hcGhvcmVzKHJxLT5lbmdpbmUpICYmCisJICAgICFpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNz aW9uKCZycS0+ZW5naW5lLT5ndC0+dWMpKQogCQljcyA9IGdlbjEyX2VtaXRfcHJlZW1wdF9idXN5 d2FpdChycSwgY3MpOwogCiAJcnEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChycSwgY3MpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2JyZWFkY3J1bWJzLmMKaW5kZXggMzhjYzQy NzgzZGZiLi4yMDljZjI2NWJmNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2JyZWFkY3J1bWJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf YnJlYWRjcnVtYnMuYwpAQCAtMTUsMjggKzE1LDE0IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3RfcG0u aCIKICNpbmNsdWRlICJpbnRlbF9ndF9yZXF1ZXN0cy5oIgogCi1zdGF0aWMgYm9vbCBpcnFfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyBib29sIGlycV9lbmFi bGUoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQogewotCWlmICghZW5naW5lLT5pcnFfZW5h YmxlKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKiBDYWxsZXIgZGlzYWJsZXMgaW50ZXJydXB0cyAq LwotCXNwaW5fbG9jaygmZW5naW5lLT5ndC0+aXJxX2xvY2spOwotCWVuZ2luZS0+aXJxX2VuYWJs ZShlbmdpbmUpOwotCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9jayk7Ci0KLQlyZXR1 cm4gdHJ1ZTsKKwlyZXR1cm4gaW50ZWxfZW5naW5lX2lycV9lbmFibGUoYi0+aXJxX2VuZ2luZSk7 CiB9CiAKLXN0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3N0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAq YikKIHsKLQlpZiAoIWVuZ2luZS0+aXJxX2Rpc2FibGUpCi0JCXJldHVybjsKLQotCS8qIENhbGxl ciBkaXNhYmxlcyBpbnRlcnJ1cHRzICovCi0Jc3Bpbl9sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9j ayk7Ci0JZW5naW5lLT5pcnFfZGlzYWJsZShlbmdpbmUpOwotCXNwaW5fdW5sb2NrKCZlbmdpbmUt Pmd0LT5pcnFfbG9jayk7CisJaW50ZWxfZW5naW5lX2lycV9kaXNhYmxlKGItPmlycV9lbmdpbmUp OwogfQogCiBzdGF0aWMgdm9pZCBfX2ludGVsX2JyZWFkY3J1bWJzX2FybV9pcnEoc3RydWN0IGlu dGVsX2JyZWFkY3J1bWJzICpiKQpAQCAtNTcsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVs X2JyZWFkY3J1bWJzX2FybV9pcnEoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQogCVdSSVRF X09OQ0UoYi0+aXJxX2FybWVkLCB0cnVlKTsKIAogCS8qIFJlcXVlc3RzIG1heSBoYXZlIGNvbXBs ZXRlZCBiZWZvcmUgd2UgY291bGQgZW5hYmxlIHRoZSBpbnRlcnJ1cHQuICovCi0JaWYgKCFiLT5p cnFfZW5hYmxlZCsrICYmIGlycV9lbmFibGUoYi0+aXJxX2VuZ2luZSkpCisJaWYgKCFiLT5pcnFf ZW5hYmxlZCsrICYmIGItPmlycV9lbmFibGUoYikpCiAJCWlycV93b3JrX3F1ZXVlKCZiLT5pcnFf d29yayk7CiB9CiAKQEAgLTc2LDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9icmVhZGNy dW1ic19kaXNhcm1faXJxKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKIHsKIAlHRU1fQlVH X09OKCFiLT5pcnFfZW5hYmxlZCk7CiAJaWYgKCEtLWItPmlycV9lbmFibGVkKQotCQlpcnFfZGlz YWJsZShiLT5pcnFfZW5naW5lKTsKKwkJYi0+aXJxX2Rpc2FibGUoYik7CiAKIAlXUklURV9PTkNF KGItPmlycV9hcm1lZCwgZmFsc2UpOwogCWludGVsX2d0X3BtX3B1dF9hc3luYyhiLT5pcnFfZW5n aW5lLT5ndCk7CkBAIC0yNTksNiArMjQ1LDkgQEAgc3RhdGljIHZvaWQgc2lnbmFsX2lycV93b3Jr KHN0cnVjdCBpcnFfd29yayAqd29yaykKIAkJCWxsaXN0X2VudHJ5KHNpZ25hbCwgdHlwZW9mKCpy cSksIHNpZ25hbF9ub2RlKTsKIAkJc3RydWN0IGxpc3RfaGVhZCBjYl9saXN0OwogCisJCWlmIChy cS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8pCisJ CQlycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8o cnEpOworCiAJCXNwaW5fbG9jaygmcnEtPmxvY2spOwogCQlsaXN0X3JlcGxhY2UoJnJxLT5mZW5j ZS5jYl9saXN0LCAmY2JfbGlzdCk7CiAJCV9fZG1hX2ZlbmNlX3NpZ25hbF9fdGltZXN0YW1wKCZy cS0+ZmVuY2UsIHRpbWVzdGFtcCk7CkBAIC0yODEsNyArMjcwLDcgQEAgaW50ZWxfYnJlYWRjcnVt YnNfY3JlYXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmlycV9lbmdpbmUpCiAJaWYgKCFiKQog CQlyZXR1cm4gTlVMTDsKIAotCWItPmlycV9lbmdpbmUgPSBpcnFfZW5naW5lOworCWtyZWZfaW5p dCgmYi0+cmVmKTsKIAogCXNwaW5fbG9ja19pbml0KCZiLT5zaWduYWxlcnNfbG9jayk7CiAJSU5J VF9MSVNUX0hFQUQoJmItPnNpZ25hbGVycyk7CkBAIC0yOTAsNiArMjc5LDEwIEBAIGludGVsX2Jy ZWFkY3J1bWJzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICppcnFfZW5naW5lKQogCXNw aW5fbG9ja19pbml0KCZiLT5pcnFfbG9jayk7CiAJaW5pdF9pcnFfd29yaygmYi0+aXJxX3dvcmss IHNpZ25hbF9pcnFfd29yayk7CiAKKwliLT5pcnFfZW5naW5lID0gaXJxX2VuZ2luZTsKKwliLT5p cnFfZW5hYmxlID0gaXJxX2VuYWJsZTsKKwliLT5pcnFfZGlzYWJsZSA9IGlycV9kaXNhYmxlOwor CiAJcmV0dXJuIGI7CiB9CiAKQEAgLTMwMyw5ICsyOTYsOSBAQCB2b2lkIGludGVsX2JyZWFkY3J1 bWJzX3Jlc2V0KHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKIAlzcGluX2xvY2tfaXJxc2F2 ZSgmYi0+aXJxX2xvY2ssIGZsYWdzKTsKIAogCWlmIChiLT5pcnFfZW5hYmxlZCkKLQkJaXJxX2Vu YWJsZShiLT5pcnFfZW5naW5lKTsKKwkJYi0+aXJxX2VuYWJsZShiKTsKIAllbHNlCi0JCWlycV9k aXNhYmxlKGItPmlycV9lbmdpbmUpOworCQliLT5pcnFfZGlzYWJsZShiKTsKIAogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmItPmlycV9sb2NrLCBmbGFncyk7CiB9CkBAIC0zMjUsMTEgKzMxOCwx NCBAQCB2b2lkIF9faW50ZWxfYnJlYWRjcnVtYnNfcGFyayhzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIpCiAJfQogfQogCi12b2lkIGludGVsX2JyZWFkY3J1bWJzX2ZyZWUoc3RydWN0IGludGVs X2JyZWFkY3J1bWJzICpiKQordm9pZCBpbnRlbF9icmVhZGNydW1ic19mcmVlKHN0cnVjdCBrcmVm ICprcmVmKQogeworCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9IGNvbnRhaW5lcl9vZihr cmVmLCB0eXBlb2YoKmIpLCByZWYpOworCiAJaXJxX3dvcmtfc3luYygmYi0+aXJxX3dvcmspOwog CUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmItPnNpZ25hbGVycykpOwogCUdFTV9CVUdfT04oYi0+ aXJxX2FybWVkKTsKKwogCWtmcmVlKGIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1icy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfYnJlYWRjcnVtYnMuaAppbmRleCAzY2U1Y2UyNzBiMDQuLmJlMGQ0ZjM3OWE4NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1icy5oCkBAIC05LDcgKzks NyBAQAogI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgogI2luY2x1ZGUgPGxpbnV4L2lycV93b3Jr Lmg+CiAKLSNpbmNsdWRlICJpbnRlbF9lbmdpbmVfdHlwZXMuaCIKKyNpbmNsdWRlICJpbnRlbF9i cmVhZGNydW1ic190eXBlcy5oIgogCiBzdHJ1Y3QgZHJtX3ByaW50ZXI7CiBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0OwpAQCAtMTcsNyArMTcsNyBAQCBzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnM7CiAKIHN0 cnVjdCBpbnRlbF9icmVhZGNydW1icyAqCiBpbnRlbF9icmVhZGNydW1ic19jcmVhdGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqaXJxX2VuZ2luZSk7Ci12b2lkIGludGVsX2JyZWFkY3J1bWJzX2Zy ZWUoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKTsKK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNf ZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZik7CiAKIHZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfcmVzZXQo c3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKTsKIHZvaWQgX19pbnRlbF9icmVhZGNydW1ic19w YXJrKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYik7CkBAIC00OCw0ICs0OCwxNiBAQCB2b2lk IGk5MTVfcmVxdWVzdF9jYW5jZWxfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0KTsKIHZvaWQgaW50ZWxfY29udGV4dF9yZW1vdmVfYnJlYWRjcnVtYnMoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAogCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYik7CiAK K3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICoKK2ludGVsX2JyZWFkY3J1 bWJzX2dldChzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIpCit7CisJa3JlZl9nZXQoJmItPnJl Zik7CisJcmV0dXJuIGI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9icmVhZGNydW1i c19wdXQoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQoreworCWtyZWZfcHV0KCZiLT5yZWYs IGludGVsX2JyZWFkY3J1bWJzX2ZyZWUpOworfQorCiAjZW5kaWYgLyogX19JTlRFTF9CUkVBRENS VU1CU19fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVh ZGNydW1ic190eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVt YnNfdHlwZXMuaAppbmRleCAzYTA4NGNlOGZmNWUuLjcyZGZkMzc0OGM0YyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnNfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1ic190eXBlcy5oCkBAIC03LDEw ICs3LDEzIEBACiAjZGVmaW5lIF9fSU5URUxfQlJFQURDUlVNQlNfVFlQRVNfXwogCiAjaW5jbHVk ZSA8bGludXgvaXJxX3dvcmsuaD4KKyNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8 bGludXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGlu dXgvdHlwZXMuaD4KIAorI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgorCiAvKgogICog UmF0aGVyIHRoYW4gaGF2ZSBldmVyeSBjbGllbnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVw dHMsCiAgKiB3aXRoIHRoZSBoZXJkIHdha2luZyBhZnRlciBldmVyeSBpbnRlcnJ1cHQgYW5kIGVh Y2ggZG9pbmcgdGhlCkBAIC0yOSw2ICszMiw3IEBACiAgKiB0aGUgb3ZlcmhlYWQgb2Ygd2FraW5n IHRoYXQgY2xpZW50IGlzIG11Y2ggcHJlZmVycmVkLgogICovCiBzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYnMgeworCXN0cnVjdCBrcmVmIHJlZjsKIAlhdG9taWNfdCBhY3RpdmU7CiAKIAlzcGlubG9j a190IHNpZ25hbGVyc19sb2NrOyAvKiBwcm90ZWN0cyB0aGUgbGlzdCBvZiBzaWduYWxlcnMgKi8K QEAgLTQyLDcgKzQ2LDEwIEBAIHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyB7CiAJYm9vbCBpcnFf YXJtZWQ7CiAKIAkvKiBOb3QgYWxsIGJyZWFkY3J1bWJzIGFyZSBhdHRhY2hlZCB0byBwaHlzaWNh bCBIVyAqLworCWludGVsX2VuZ2luZV9tYXNrX3QJZW5naW5lX21hc2s7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqaXJxX2VuZ2luZTsKKwlib29sCSgqaXJxX2VuYWJsZSkoc3RydWN0IGludGVs X2JyZWFkY3J1bWJzICpiKTsKKwl2b2lkCSgqaXJxX2Rpc2FibGUpKHN0cnVjdCBpbnRlbF9icmVh ZGNydW1icyAqYik7CiB9OwogCiAjZW5kaWYgLyogX19JTlRFTF9CUkVBRENSVU1CU19UWVBFU19f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKaW5kZXggYmQ2MzgxM2M4 YTgwLi5iMWUzZDAwZmIxZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmMKQEAgLTgsNiArOCw3IEBACiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5 MTVfZ2xvYmFscy5oIgorI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKIAogI2luY2x1ZGUgImludGVs X2NvbnRleHQuaCIKICNpbmNsdWRlICJpbnRlbF9lbmdpbmUuaCIKQEAgLTI4LDYgKzI5LDcgQEAg c3RhdGljIHZvaWQgcmN1X2NvbnRleHRfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIHsKIAlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBjb250YWluZXJfb2YocmN1LCB0eXBlb2YoKmNlKSwg cmN1KTsKIAorCXRyYWNlX2ludGVsX2NvbnRleHRfZnJlZShjZSk7CiAJa21lbV9jYWNoZV9mcmVl KGdsb2JhbC5zbGFiX2NlLCBjZSk7CiB9CiAKQEAgLTQ2LDYgKzQ4LDcgQEAgaW50ZWxfY29udGV4 dF9jcmVhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKIAogCWludGVsX2NvbnRleHRfaW5pdChjZSwgZW5naW5lKTsKKwl0cmFjZV9p bnRlbF9jb250ZXh0X2NyZWF0ZShjZSk7CiAJcmV0dXJuIGNlOwogfQogCkBAIC04MCw3ICs4Myw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfY29udGV4dF9hY3RpdmVfYWNxdWlyZShzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCiAKIAlfX2k5MTVfYWN0aXZlX2FjcXVpcmUoJmNlLT5hY3RpdmUpOwogCi0J aWYgKGludGVsX2NvbnRleHRfaXNfYmFycmllcihjZSkpCisJaWYgKGludGVsX2NvbnRleHRfaXNf YmFycmllcihjZSkgfHwgaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGNlLT5lbmdpbmUpKQogCQlyZXR1 cm4gMDsKIAogCS8qIFByZWFsbG9jYXRlIHRyYWNraW5nIG5vZGVzICovCkBAIC0yNjgsNiArMjcx LDggQEAgaW50IF9faW50ZWxfY29udGV4dF9kb19waW5fd3coc3RydWN0IGludGVsX2NvbnRleHQg KmNlLAogCiAJR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKTsgLyogbm8g b3ZlcmZsb3chICovCiAKKwl0cmFjZV9pbnRlbF9jb250ZXh0X2RvX3BpbihjZSk7CisKIGVycl91 bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZjZS0+cGluX211dGV4KTsKIGVycl9wb3N0X3VucGluOgpA QCAtMzA2LDkgKzMxMSw5IEBAIGludCBfX2ludGVsX2NvbnRleHRfZG9fcGluKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIAlyZXR1cm4gZXJyOwogfQogCi12b2lkIGludGVsX2NvbnRleHRfdW5w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQordm9pZCBfX2ludGVsX2NvbnRleHRfZG9fdW5w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBpbnQgc3ViKQogewotCWlmICghYXRvbWljX2Rl Y19hbmRfdGVzdCgmY2UtPnBpbl9jb3VudCkpCisJaWYgKCFhdG9taWNfc3ViX2FuZF90ZXN0KHN1 YiwgJmNlLT5waW5fY291bnQpKQogCQlyZXR1cm47CiAKIAlDRV9UUkFDRShjZSwgInVucGluXG4i KTsKQEAgLTMyMyw2ICszMjgsNyBAQCB2b2lkIGludGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQogCSAqLwogCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKIAlpbnRlbF9j b250ZXh0X2FjdGl2ZV9yZWxlYXNlKGNlKTsKKwl0cmFjZV9pbnRlbF9jb250ZXh0X2RvX3VucGlu KGNlKTsKIAlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiB9CiAKQEAgLTM2MCw2ICszNjYsMTIgQEAg c3RhdGljIGludCBfX2ludGVsX2NvbnRleHRfYWN0aXZlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0 aXZlKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHN3X2ZlbmNlX2R1bW15X25vdGlmeShz dHJ1Y3QgaTkxNV9zd19mZW5jZSAqc2YsCisJCQkJIGVudW0gaTkxNV9zd19mZW5jZV9ub3RpZnkg c3RhdGUpCit7CisJcmV0dXJuIE5PVElGWV9ET05FOworfQorCiB2b2lkCiBpbnRlbF9jb250ZXh0 X2luaXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiB7CkBAIC0zODQsNiArMzk2LDE4IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCW11 dGV4X2luaXQoJmNlLT5waW5fbXV0ZXgpOwogCisJc3Bpbl9sb2NrX2luaXQoJmNlLT5ndWNfc3Rh dGUubG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmNlLT5ndWNfc3RhdGUuZmVuY2VzKTsKKworCXNw aW5fbG9ja19pbml0KCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmY2Ut Pmd1Y19hY3RpdmUucmVxdWVzdHMpOworCisJY2UtPmd1Y19pZCA9IEdVQ19JTlZBTElEX0xSQ19J RDsKKwlJTklUX0xJU1RfSEVBRCgmY2UtPmd1Y19pZF9saW5rKTsKKworCWk5MTVfc3dfZmVuY2Vf aW5pdCgmY2UtPmd1Y19ibG9ja2VkLCBzd19mZW5jZV9kdW1teV9ub3RpZnkpOworCWk5MTVfc3df ZmVuY2VfY29tbWl0KCZjZS0+Z3VjX2Jsb2NrZWQpOworCiAJaTkxNV9hY3RpdmVfaW5pdCgmY2Ut PmFjdGl2ZSwKIAkJCSBfX2ludGVsX2NvbnRleHRfYWN0aXZlLCBfX2ludGVsX2NvbnRleHRfcmV0 aXJlLCAwKTsKIH0KQEAgLTUwMCw2ICs1MjQsMjYgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCAqaW50 ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJcmV0 dXJuIHJxOwogfQogCitzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICppbnRlbF9jb250ZXh0X2ZpbmRfYWN0 aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCAqYWN0aXZlID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJR0VN X0JVR19PTighaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGNlLT5lbmdpbmUpKTsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrLCBmbGFncyk7CisJbGlzdF9mb3JfZWFjaF9l bnRyeV9yZXZlcnNlKHJxLCAmY2UtPmd1Y19hY3RpdmUucmVxdWVzdHMsCisJCQkJICAgIHNjaGVk LmxpbmspIHsKKwkJaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJYnJlYWs7CisK KwkJYWN0aXZlID0gcnE7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfYWN0 aXZlLmxvY2ssIGZsYWdzKTsKKworCXJldHVybiBhY3RpdmU7Cit9CisKICNpZiBJU19FTkFCTEVE KENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVzdF9jb250ZXh0LmMi CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAppbmRleCBiMTBj YmU4ZmVlOTkuLjg3NmJkYjA4MzAzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Nv bnRleHQuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5o IgogI2luY2x1ZGUgImludGVsX3JpbmdfdHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF90aW1lbGlu ZV90eXBlcy5oIgorI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKIAogI2RlZmluZSBDRV9UUkFDRShj ZSwgZm10LCAuLi4pIGRvIHsJCQkJCVwKIAljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Vf XyA9IChjZSk7CQkJXApAQCAtNjksNiArNzAsMTMgQEAgaW50ZWxfY29udGV4dF9pc19waW5uZWQo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCXJldHVybiBhdG9taWNfcmVhZCgmY2UtPnBpbl9j b3VudCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9jb250ZXh0X2NhbmNlbF9yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCQkJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQoreworCUdFTV9CVUdfT04oIWNlLT5vcHMtPmNhbmNlbF9yZXF1ZXN0KTsKKwlyZXR1cm4g Y2UtPm9wcy0+Y2FuY2VsX3JlcXVlc3QoY2UsIHJxKTsKK30KKwogLyoqCiAgKiBpbnRlbF9jb250 ZXh0X3VubG9ja19waW5uZWQgLSBSZWxlYXNlcyB0aGUgZWFybGllciBsb2NraW5nIG9mICdwaW5u ZWQnIHN0YXR1cwogICogQGNlIC0gdGhlIGNvbnRleHQKQEAgLTExMyw3ICsxMjEsMzIgQEAgc3Rh dGljIGlubGluZSB2b2lkIF9faW50ZWxfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQogCWF0b21pY19pbmMoJmNlLT5waW5fY291bnQpOwogfQogCi12b2lkIGludGVsX2NvbnRl eHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKK3ZvaWQgX19pbnRlbF9jb250ZXh0 X2RvX3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgaW50IHN1Yik7CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9jb250ZXh0X3NjaGVkX2Rpc2FibGVfdW5waW4oc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQoreworCV9faW50ZWxfY29udGV4dF9kb191bnBpbihjZSwgMik7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKK3sKKwlpZiAoIWNlLT5vcHMtPnNjaGVkX2Rpc2FibGUpIHsKKwkJX19pbnRlbF9j b250ZXh0X2RvX3VucGluKGNlLCAxKTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBNb3ZlIG93bmVy c2hpcCBvZiB0aGlzIHBpbiB0byB0aGUgc2NoZWR1bGluZyBkaXNhYmxlIHdoaWNoIGlzCisJCSAq IGFuIGFzeW5jIG9wZXJhdGlvbi4gV2hlbiB0aGF0IG9wZXJhdGlvbiBjb21wbGV0ZXMgdGhlIGFi b3ZlCisJCSAqIGludGVsX2NvbnRleHRfc2NoZWRfZGlzYWJsZV91bnBpbiBpcyBjYWxsZWQgcG90 ZW50aWFsbHkKKwkJICogdW5waW5uaW5nIHRoZSBjb250ZXh0LgorCQkgKi8KKwkJd2hpbGUgKCFh dG9taWNfYWRkX3VubGVzcygmY2UtPnBpbl9jb3VudCwgLTEsIDEpKSB7CisJCQlpZiAoYXRvbWlj X2NtcHhjaGcoJmNlLT5waW5fY291bnQsIDEsIDIpID09IDEpIHsKKwkJCQljZS0+b3BzLT5zY2hl ZF9kaXNhYmxlKGNlKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KK30KIAogdm9pZCBpbnRl bF9jb250ZXh0X2VudGVyX2VuZ2luZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwogdm9pZCBp bnRlbF9jb250ZXh0X2V4aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CkBAIC0x NzUsNiArMjA4LDkgQEAgaW50IGludGVsX2NvbnRleHRfcHJlcGFyZV9yZW1vdGVfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAKIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmludGVsX2Nv bnRleHRfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKIAorc3RydWN0 IGk5MTVfcmVxdWVzdCAqCitpbnRlbF9jb250ZXh0X2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKTsKKwogc3RhdGljIGlubGluZSBib29sIGludGVsX2NvbnRleHRf aXNfYmFycmllcihjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7CiAJcmV0dXJuIHRl c3RfYml0KENPTlRFWFRfQkFSUklFUl9CSVQsICZjZS0+ZmxhZ3MpOwpAQCAtMjE1LDYgKzI1MSwx OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfY29udGV4dF9zZXRfYmFubmVkKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKIAlyZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChDT05URVhUX0JBTk5F RCwgJmNlLT5mbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9jb250ZXh0X2Jh bihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKK3sKKwlib29sIHJldCA9IGludGVsX2NvbnRleHRfc2V0X2Jhbm5lZChjZSk7CisKKwl0 cmFjZV9pbnRlbF9jb250ZXh0X2JhbihjZSk7CisJaWYgKGNlLT5vcHMtPmJhbikKKwkJY2UtPm9w cy0+YmFuKGNlLCBycSk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wK IGludGVsX2NvbnRleHRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oY29uc3Qgc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4 dF90eXBlcy5oCmluZGV4IDkwMDI2YzE3NzEwNS4uZmU1NTU1NTFjMmQyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oCkBAIC0xMywxMiArMTMsMTQg QEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVkZSAiaTkxNV9hY3RpdmVfdHlw ZXMuaCIKKyNpbmNsdWRlICJpOTE1X3N3X2ZlbmNlLmgiCiAjaW5jbHVkZSAiaTkxNV91dGlscy5o IgogI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX3NzZXUu aCIKIAotI2RlZmluZSBDT05URVhUX1JFRFpPTkUgUE9JU09OX0lOVVNFCisjaW5jbHVkZSAidWMv aW50ZWxfZ3VjX2Z3aWYuaCIKIAorI2RlZmluZSBDT05URVhUX1JFRFpPTkUgUE9JU09OX0lOVVNF CiBERUNMQVJFX0VXTUEocnVudGltZSwgMywgOCk7CiAKIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 OwpAQCAtMzUsMTYgKzM3LDI5IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyB7CiAKIAlpbnQg KCphbGxvYykoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKIAorCXZvaWQgKCpiYW4pKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCiAJaW50ICgq cHJlX3Bpbikoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4 ICp3dywgdm9pZCAqKnZhZGRyKTsKIAlpbnQgKCpwaW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwgdm9pZCAqdmFkZHIpOwogCXZvaWQgKCp1bnBpbikoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KTsKIAl2b2lkICgqcG9zdF91bnBpbikoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKIAorCXZv aWQgKCpjYW5jZWxfcmVxdWVzdCkoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJICAgICAg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwogCXZvaWQgKCplbnRlcikoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKTsKIAl2b2lkICgqZXhpdCkoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsK IAorCXZvaWQgKCpzY2hlZF9kaXNhYmxlKShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOworCiAJ dm9pZCAoKnJlc2V0KShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwogCXZvaWQgKCpkZXN0cm95 KShzdHJ1Y3Qga3JlZiAqa3JlZik7CisKKwkvKiB2aXJ0dWFsIGVuZ2luZS9jb250ZXh0IGludGVy ZmFjZSAqLworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICooKmNyZWF0ZV92aXJ0dWFsKShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoqZW5naW5lLAorCQkJCQkJdW5zaWduZWQgaW50IGNvdW50KTsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICooKmdldF9zaWJsaW5nKShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgc2libGluZyk7CiB9OwogCiBz dHJ1Y3QgaW50ZWxfY29udGV4dCB7CkBAIC05Niw2ICsxMTEsNyBAQCBzdHJ1Y3QgaW50ZWxfY29u dGV4dCB7CiAjZGVmaW5lIENPTlRFWFRfQkFOTkVECQkJNgogI2RlZmluZSBDT05URVhUX0ZPUkNF X1NJTkdMRV9TVUJNSVNTSU9OCTcKICNkZWZpbmUgQ09OVEVYVF9OT1BSRUVNUFQJCTgKKyNkZWZp bmUgQ09OVEVYVF9MUkNBX0RJUlRZCQk5CiAKIAlzdHJ1Y3QgewogCQl1NjQgdGltZW91dF91czsK QEAgLTEzNyw2ICsxNTMsNTEgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewogCXN0cnVjdCBpbnRl bF9zc2V1IHNzZXU7CiAKIAl1OCB3YV9iYl9wYWdlOyAvKiBpZiBzZXQsIHBhZ2UgbnVtIHJlc2Vy dmVkIGZvciBjb250ZXh0IHdvcmthcm91bmRzICovCisKKwlzdHJ1Y3QgeworCQkvKiogbG9jazog cHJvdGVjdHMgZXZlcnl0aGluZyBpbiBndWNfc3RhdGUgKi8KKwkJc3BpbmxvY2tfdCBsb2NrOwor CQkvKioKKwkJICogc2NoZWRfc3RhdGU6IHNjaGVkdWxpbmcgc3RhdGUgb2YgdGhpcyBjb250ZXh0 IHVzaW5nIEd1QworCQkgKiBzdWJtaXNzaW9uCisJCSAqLworCQl1OCBzY2hlZF9zdGF0ZTsKKwkJ LyoKKwkJICogZmVuY2VzOiBtYWludGFpbnMgb2YgbGlzdCBvZiByZXF1ZXN0cyB0aGF0IGhhdmUg YSBzdWJtaXQKKwkJICogZmVuY2UgcmVsYXRlZCB0byBHdUMgc3VibWlzc2lvbgorCQkgKi8KKwkJ c3RydWN0IGxpc3RfaGVhZCBmZW5jZXM7CisJfSBndWNfc3RhdGU7CisKKwlzdHJ1Y3QgeworCQkv KiogbG9jazogcHJvdGVjdHMgZXZlcnl0aGluZyBpbiBndWNfYWN0aXZlICovCisJCXNwaW5sb2Nr X3QgbG9jazsKKwkJLyoqIHJlcXVlc3RzOiBhY3RpdmUgcmVxdWVzdHMgb24gdGhpcyBjb250ZXh0 ICovCisJCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7CisJfSBndWNfYWN0aXZlOworCisJLyog R3VDIHNjaGVkdWxpbmcgc3RhdGUgZmxhZ3MgdGhhdCBkbyBub3QgcmVxdWlyZSBhIGxvY2suICov CisJYXRvbWljX3QgZ3VjX3NjaGVkX3N0YXRlX25vX2xvY2s7CisKKwkvKiBHdUMgTFJDIGRlc2Ny aXB0b3IgSUQgKi8KKwl1MTYgZ3VjX2lkOworCisJLyogR3VDIExSQyBkZXNjcmlwdG9yIHJlZmVy ZW5jZSBjb3VudCAqLworCWF0b21pY190IGd1Y19pZF9yZWY7CisKKwkvKgorCSAqIEd1QyBJRCBs aW5rIC0gaW4gbGlzdCB3aGVuIHVucGlubmVkIGJ1dCBndWNfaWQgc3RpbGwgdmFsaWQgaW4gR3VD CisJICovCisJc3RydWN0IGxpc3RfaGVhZCBndWNfaWRfbGluazsKKworCS8qIEd1QyBjb250ZXh0 IGJsb2NrZWQgZmVuY2UgKi8KKwlzdHJ1Y3QgaTkxNV9zd19mZW5jZSBndWNfYmxvY2tlZDsKKwor CS8qCisJICogR3VDIHByaW9yaXR5IG1hbmFnZW1lbnQKKwkgKi8KKwl1OCBndWNfcHJpbzsKKwl1 MzIgZ3VjX3ByaW9fY291bnRbR1VDX0NMSUVOVF9QUklPUklUWV9OVU1dOwogfTsKIAogI2VuZGlm IC8qIF9fSU5URUxfQ09OVEVYVF9UWVBFU19fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZS5oCmluZGV4IGY5MTFjMTIyNGFiMi4uMDRjZTdhM2UxZDgyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaApAQCAtMjEyLDYgKzIxMiw5IEBAIHZvaWQgaW50ZWxf ZW5naW5lX2dldF9pbnN0ZG9uZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAKIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7CiAKK2Jvb2wgaW50ZWxfZW5naW5lX2lycV9lbmFibGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKK3ZvaWQgaW50ZWxfZW5naW5lX2lycV9kaXNhYmxlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVs X2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkJCWJvb2wg c3RhbGxlZCkKIHsKQEAgLTIzNywxMiArMjQwLDE1IEBAIF9fcHJpbnRmKDMsIDQpCiB2b2lkIGlu dGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJICAgICAg IHN0cnVjdCBkcm1fcHJpbnRlciAqbSwKIAkJICAgICAgIGNvbnN0IGNoYXIgKmhlYWRlciwgLi4u KTsKK3ZvaWQgaW50ZWxfZW5naW5lX2R1bXBfYWN0aXZlX3JlcXVlc3RzKHN0cnVjdCBsaXN0X2hl YWQgKnJlcXVlc3RzLAorCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpodW5nX3JxLAor CQkJCSAgICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pOwogCiBrdGltZV90IGludGVsX2VuZ2lu ZV9nZXRfYnVzeV90aW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICBr dGltZV90ICpub3cpOwogCiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKLWludGVsX2VuZ2luZV9maW5k X2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CitpbnRlbF9l bmdpbmVfZXhlY2xpc3RfZmluZF9odW5nX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIAogdTMyIGludGVsX2VuZ2luZV9jb250ZXh0X3NpemUoc3RydWN0IGludGVsX2d0 ICpndCwgdTggY2xhc3MpOwogc3RydWN0IGludGVsX2NvbnRleHQgKgpAQCAtMjczLDEzICsyNzks NjAgQEAgaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0X3Jlc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGVu Z2luZSk7CiB9CiAKK3N0cnVjdCBpbnRlbF9jb250ZXh0ICoKK2ludGVsX2VuZ2luZV9jcmVhdGVf dmlydHVhbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2libGluZ3MsCisJCQkgICAgdW5zaWdu ZWQgaW50IGNvdW50KTsKKworc3RhdGljIGlubGluZSBib29sCitpbnRlbF92aXJ0dWFsX2VuZ2lu ZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sK KwkvKgorCSAqIEZvciBub24tR3VDIHN1Ym1pc3Npb24gd2UgZXhwZWN0IHRoZSBiYWNrLWVuZCB0 byBsb29rIGF0IHRoZQorCSAqIGhlYXJ0YmVhdCBzdGF0dXMgb2YgdGhlIGFjdHVhbCBwaHlzaWNh bCBlbmdpbmUgdGhhdCB0aGUgd29yaworCSAqIGhhcyBiZWVuIChvciBpcyBiZWluZykgc2NoZWR1 bGVkIG9uLCBzbyB3ZSBzaG91bGQgb25seSByZWFjaAorCSAqIGhlcmUgd2l0aCBHdUMgc3VibWlz c2lvbiBlbmFibGVkLgorICAJICovCisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX3VzZXNfZ3Vj KGVuZ2luZSkpOworCisJcmV0dXJuIGludGVsX2d1Y192aXJ0dWFsX2VuZ2luZV9oYXNfaGVhcnRi ZWF0KGVuZ2luZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogaW50ZWxfZW5naW5lX2hhc19o ZWFydGJlYXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWlmICgh SVNfQUNUSVZFKENPTkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpKQogCQlyZXR1cm4g ZmFsc2U7CiAKLQlyZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVy dmFsX21zKTsKKwlpZiAoaW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoZW5naW5lKSkKKwkJcmV0dXJu IGludGVsX3ZpcnR1YWxfZW5naW5lX2hhc19oZWFydGJlYXQoZW5naW5lKTsKKwllbHNlCisJCXJl dHVybiBSRUFEX09OQ0UoZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMpOworfQor CitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraW50ZWxfZW5naW5lX2dl dF9zaWJsaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdW5zaWduZWQgaW50IHNp YmxpbmcpCit7CisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoZW5naW5lKSk7 CisJcmV0dXJuIGVuZ2luZS0+Y29wcy0+Z2V0X3NpYmxpbmcoZW5naW5lLCBzaWJsaW5nKTsKK30K Kworc3RhdGljIGlubGluZSB2b2lkCitpbnRlbF9lbmdpbmVfc2V0X2h1bmdfY29udGV4dChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCit7CisJZW5naW5lLT5odW5nX2NlID0gY2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZAoraW50ZWxfZW5naW5lX2NsZWFyX2h1bmdfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCit7CisJaW50ZWxfZW5naW5lX3NldF9odW5nX2NvbnRleHQoZW5naW5lLCBOVUxM KTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitpbnRlbF9lbmdp bmVfZ2V0X2h1bmdfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJ cmV0dXJuIGVuZ2luZS0+aHVuZ19jZTsKIH0KIAogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVS X0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGQ1 NjE1NzNlZDk4Yy4uNTFhMGQ4NjBkNTUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBpbnQgZW5naW5lX3NldHVw X2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBlcnJfY21kX3BhcnNlcjoK IAlpOTE1X3NjaGVkX2VuZ2luZV9wdXQoZW5naW5lLT5zY2hlZF9lbmdpbmUpOwogZXJyX3NjaGVk X2VuZ2luZToKLQlpbnRlbF9icmVhZGNydW1ic19mcmVlKGVuZ2luZS0+YnJlYWRjcnVtYnMpOwor CWludGVsX2JyZWFkY3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1bWJzKTsKIGVycl9zdGF0dXM6 CiAJY2xlYW51cF9zdGF0dXNfcGFnZShlbmdpbmUpOwogCXJldHVybiBlcnI7CkBAIC05NDgsNyAr OTQ4LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmVuZ2luZS0+c2NoZWRf ZW5naW5lLT5yZXF1ZXN0cykpOwogCiAJaTkxNV9zY2hlZF9lbmdpbmVfcHV0KGVuZ2luZS0+c2No ZWRfZW5naW5lKTsKLQlpbnRlbF9icmVhZGNydW1ic19mcmVlKGVuZ2luZS0+YnJlYWRjcnVtYnMp OworCWludGVsX2JyZWFkY3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1bWJzKTsKIAogCWludGVs X2VuZ2luZV9maW5pX3JldGlyZShlbmdpbmUpOwogCWludGVsX2VuZ2luZV9jbGVhbnVwX2NtZF9w YXJzZXIoZW5naW5lKTsKQEAgLTEyNjUsNiArMTI2NSwzMCBAQCBib29sIGludGVsX2VuZ2luZXNf YXJlX2lkbGUoc3RydWN0IGludGVsX2d0ICpndCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBp bnRlbF9lbmdpbmVfaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJaWYgKCFlbmdpbmUtPmlycV9lbmFibGUpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENhbGxl ciBkaXNhYmxlcyBpbnRlcnJ1cHRzICovCisJc3Bpbl9sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9j ayk7CisJZW5naW5lLT5pcnFfZW5hYmxlKGVuZ2luZSk7CisJc3Bpbl91bmxvY2soJmVuZ2luZS0+ Z3QtPmlycV9sb2NrKTsKKworCXJldHVybiB0cnVlOworfQorCit2b2lkIGludGVsX2VuZ2luZV9p cnFfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaWYgKCFlbmdp bmUtPmlycV9kaXNhYmxlKQorCQlyZXR1cm47CisKKwkvKiBDYWxsZXIgZGlzYWJsZXMgaW50ZXJy dXB0cyAqLworCXNwaW5fbG9jaygmZW5naW5lLT5ndC0+aXJxX2xvY2spOworCWVuZ2luZS0+aXJx X2Rpc2FibGUoZW5naW5lKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT5ndC0+aXJxX2xvY2spOwor fQorCiB2b2lkIGludGVsX2VuZ2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBp bnRlbF9ndCAqZ3QpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwpAQCAtMTYw MSw2ICsxNjI1LDk3IEBAIHN0YXRpYyB2b2lkIHByaW50X3Byb3BlcnRpZXMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgcmVhZF91bCgmZW5naW5lLT5kZWZhdWx0cywgcC0+ b2Zmc2V0KSk7CiB9CiAKK3N0YXRpYyB2b2lkIGVuZ2luZV9kdW1wX3JlcXVlc3Qoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBkcm1fcHJpbnRlciAqbSwgY29uc3QgY2hhciAqbXNnKQor eworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSBnZXRfdGltZWxpbmUocnEpOworCisJaTkx NV9yZXF1ZXN0X3Nob3cobSwgcnEsIG1zZywgMCk7CisKKwlkcm1fcHJpbnRmKG0sICJcdFx0cmlu Zy0+c3RhcnQ6ICAweCUwOHhcbiIsCisJCSAgIGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZt YSkpOworCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5oZWFkOiAgIDB4JTA4eFxuIiwKKwkJICAg cnEtPnJpbmctPmhlYWQpOworCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT50YWlsOiAgIDB4JTA4 eFxuIiwKKwkJICAgcnEtPnJpbmctPnRhaWwpOworCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5l bWl0OiAgIDB4JTA4eFxuIiwKKwkJICAgcnEtPnJpbmctPmVtaXQpOworCWRybV9wcmludGYobSwg Ilx0XHRyaW5nLT5zcGFjZTogIDB4JTA4eFxuIiwKKwkJICAgcnEtPnJpbmctPnNwYWNlKTsKKwor CWlmICh0bCkgeworCQlkcm1fcHJpbnRmKG0sICJcdFx0cmluZy0+aHdzcDogICAweCUwOHhcbiIs CisJCQkgICB0bC0+aHdzcF9vZmZzZXQpOworCQlpbnRlbF90aW1lbGluZV9wdXQodGwpOworCX0K KworCXByaW50X3JlcXVlc3RfcmluZyhtLCBycSk7CisKKwlpZiAocnEtPmNvbnRleHQtPmxyY19y ZWdfc3RhdGUpIHsKKwkJZHJtX3ByaW50ZihtLCAiTG9naWNhbCBSaW5nIENvbnRleHQ6XG4iKTsK KwkJaGV4ZHVtcChtLCBycS0+Y29udGV4dC0+bHJjX3JlZ19zdGF0ZSwgUEFHRV9TSVpFKTsKKwl9 Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX2R1bXBfYWN0aXZlX3JlcXVlc3RzKHN0cnVjdCBsaXN0 X2hlYWQgKnJlcXVlc3RzLAorCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpodW5nX3Jx LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pCit7CisJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7CisJY29uc3QgY2hhciAqbXNnOworCWVudW0gaTkxNV9yZXF1ZXN0X3N0YXRlIHN0 YXRlOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgcmVxdWVzdHMsIHNjaGVkLmxpbmspIHsK KwkJaWYgKHJxID09IGh1bmdfcnEpCisJCQljb250aW51ZTsKKworCQlzdGF0ZSA9IGk5MTVfdGVz dF9yZXF1ZXN0X3N0YXRlKHJxKTsKKwkJaWYgKHN0YXRlIDwgSTkxNV9SRVFVRVNUX1FVRVVFRCkK KwkJCWNvbnRpbnVlOworCisJCWlmIChzdGF0ZSA9PSBJOTE1X1JFUVVFU1RfQUNUSVZFKQorCQkJ bXNnID0gIlx0XHRhY3RpdmUgb24gZW5naW5lIjsKKwkJZWxzZQorCQkJbXNnID0gIlx0XHRhY3Rp dmUgaW4gcXVldWUiOworCisJCWVuZ2luZV9kdW1wX3JlcXVlc3QocnEsIG0sIG1zZyk7CisJfQor fQorCitzdGF0aWMgdm9pZCBlbmdpbmVfZHVtcF9hY3RpdmVfcmVxdWVzdHMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pCit7CisJc3RydWN0IGk5 MTVfcmVxdWVzdCAqaHVuZ19ycSA9IE5VTEw7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwor CWJvb2wgZ3VjOworCisJLyoKKwkgKiBObyBuZWVkIGZvciBhbiBlbmdpbmUtPmlycV9zZXFub19i YXJyaWVyKCkgYmVmb3JlIHRoZSBzZXFubyByZWFkcy4KKwkgKiBUaGUgR1BVIGlzIHN0aWxsIHJ1 bm5pbmcgc28gcmVxdWVzdHMgYXJlIHN0aWxsIGV4ZWN1dGluZyBhbmQgYW55CisJICogaGFyZHdh cmUgcmVhZHMgd2lsbCBiZSBvdXQgb2YgZGF0ZSBieSB0aGUgdGltZSB0aGV5IGFyZSByZXBvcnRl ZC4KKwkgKiBCdXQgdGhlIGludGVudGlvbiBoZXJlIGlzIGp1c3QgdG8gcmVwb3J0IGFuIGluc3Rh bnRhbmVvdXMgc25hcHNob3QKKwkgKiBzbyB0aGF0J3MgZmluZS4KKwkgKi8KKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisKKwlkcm1fcHJpbnRmKG0s ICJcdFJlcXVlc3RzOlxuIik7CisKKwlndWMgPSBpbnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9u KCZlbmdpbmUtPmd0LT51Yyk7CisJaWYgKGd1YykgeworCQljZSA9IGludGVsX2VuZ2luZV9nZXRf aHVuZ19jb250ZXh0KGVuZ2luZSk7CisJCWlmIChjZSkKKwkJCWh1bmdfcnEgPSBpbnRlbF9jb250 ZXh0X2ZpbmRfYWN0aXZlX3JlcXVlc3QoY2UpOworCX0gZWxzZQorCQlodW5nX3JxID0gaW50ZWxf ZW5naW5lX2V4ZWNsaXN0X2ZpbmRfaHVuZ19yZXF1ZXN0KGVuZ2luZSk7CisKKwlpZiAoaHVuZ19y cSkKKwkJZW5naW5lX2R1bXBfcmVxdWVzdChodW5nX3JxLCBtLCAiXHRcdGh1bmciKTsKKworCWlm IChndWMpCisJCWludGVsX2d1Y19kdW1wX2FjdGl2ZV9yZXF1ZXN0cyhlbmdpbmUsIGh1bmdfcnEs IG0pOworCWVsc2UKKwkJaW50ZWxfZW5naW5lX2R1bXBfYWN0aXZlX3JlcXVlc3RzKCZlbmdpbmUt PnNjaGVkX2VuZ2luZS0+cmVxdWVzdHMsCisJCQkJCQkgIGh1bmdfcnEsIG0pOworfQorCiB2b2lk IGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJICAg ICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqbSwKIAkJICAgICAgIGNvbnN0IGNoYXIgKmhlYWRlciwg Li4uKQpAQCAtMTY0NSwzOSArMTc2MCw5IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkgICBpOTE1X3Jlc2V0X2NvdW50KGVycm9yKSk7 CiAJcHJpbnRfcHJvcGVydGllcyhlbmdpbmUsIG0pOwogCi0JZHJtX3ByaW50ZihtLCAiXHRSZXF1 ZXN0czpcbiIpOwotCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5s b2NrLCBmbGFncyk7Ci0JcnEgPSBpbnRlbF9lbmdpbmVfZmluZF9hY3RpdmVfcmVxdWVzdChlbmdp bmUpOwotCWlmIChycSkgewotCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gZ2V0X3RpbWVs aW5lKHJxKTsKKwllbmdpbmVfZHVtcF9hY3RpdmVfcmVxdWVzdHMoZW5naW5lLCBtKTsKIAotCQlp OTE1X3JlcXVlc3Rfc2hvdyhtLCBycSwgIlx0XHRhY3RpdmUgIiwgMCk7Ci0KLQkJZHJtX3ByaW50 ZihtLCAiXHRcdHJpbmctPnN0YXJ0OiAgMHglMDh4XG4iLAotCQkJICAgaTkxNV9nZ3R0X29mZnNl dChycS0+cmluZy0+dm1hKSk7Ci0JCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5oZWFkOiAgIDB4 JTA4eFxuIiwKLQkJCSAgIHJxLT5yaW5nLT5oZWFkKTsKLQkJZHJtX3ByaW50ZihtLCAiXHRcdHJp bmctPnRhaWw6ICAgMHglMDh4XG4iLAotCQkJICAgcnEtPnJpbmctPnRhaWwpOwotCQlkcm1fcHJp bnRmKG0sICJcdFx0cmluZy0+ZW1pdDogICAweCUwOHhcbiIsCi0JCQkgICBycS0+cmluZy0+ZW1p dCk7Ci0JCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5zcGFjZTogIDB4JTA4eFxuIiwKLQkJCSAg IHJxLT5yaW5nLT5zcGFjZSk7Ci0KLQkJaWYgKHRsKSB7Ci0JCQlkcm1fcHJpbnRmKG0sICJcdFx0 cmluZy0+aHdzcDogICAweCUwOHhcbiIsCi0JCQkJICAgdGwtPmh3c3Bfb2Zmc2V0KTsKLQkJCWlu dGVsX3RpbWVsaW5lX3B1dCh0bCk7Ci0JCX0KLQotCQlwcmludF9yZXF1ZXN0X3JpbmcobSwgcnEp OwotCi0JCWlmIChycS0+Y29udGV4dC0+bHJjX3JlZ19zdGF0ZSkgewotCQkJZHJtX3ByaW50Ziht LCAiTG9naWNhbCBSaW5nIENvbnRleHQ6XG4iKTsKLQkJCWhleGR1bXAobSwgcnEtPmNvbnRleHQt PmxyY19yZWdfc3RhdGUsIFBBR0VfU0laRSk7Ci0JCX0KLQl9CiAJZHJtX3ByaW50ZihtLCAiXHRP biBob2xkPzogJWx1XG4iLAogCQkgICBsaXN0X2NvdW50KCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+ aG9sZCkpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5s b2NrLCBmbGFncyk7CkBAIC0xNzM3LDE4ICsxODIyLDMyIEBAIGt0aW1lX3QgaW50ZWxfZW5naW5l X2dldF9idXN5X3RpbWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBrdGltZV90ICpu b3cpCiAJcmV0dXJuIHRvdGFsOwogfQogCi1zdGF0aWMgYm9vbCBtYXRjaF9yaW5nKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQorc3RydWN0IGludGVsX2NvbnRleHQgKgoraW50ZWxfZW5naW5lX2Ny ZWF0ZV92aXJ0dWFsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKKwkJCSAgICB1 bnNpZ25lZCBpbnQgY291bnQpCiB7Ci0JdTMyIHJpbmcgPSBFTkdJTkVfUkVBRChycS0+ZW5naW5l LCBSSU5HX1NUQVJUKTsKKwlpZiAoY291bnQgPT0gMCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7CisKKwlpZiAoY291bnQgPT0gMSkKKwkJcmV0dXJuIGludGVsX2NvbnRleHRfY3JlYXRlKHNp YmxpbmdzWzBdKTsKIAotCXJldHVybiByaW5nID09IGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmct PnZtYSk7CisJR0VNX0JVR19PTighc2libGluZ3NbMF0tPmNvcHMtPmNyZWF0ZV92aXJ0dWFsKTsK KwlyZXR1cm4gc2libGluZ3NbMF0tPmNvcHMtPmNyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBjb3Vu dCk7CiB9CiAKIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgotaW50ZWxfZW5naW5lX2ZpbmRfYWN0aXZl X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoraW50ZWxfZW5naW5lX2V4 ZWNsaXN0X2ZpbmRfaHVuZ19yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCAqYWN0aXZlID0gTlVMTDsKIAorCS8q CisJICogVGhpcyBzZWFyY2ggZG9lcyBub3Qgd29yayBpbiBHdUMgc3VibWlzc2lvbiBtb2RlLiBI b3dldmVyLCB0aGUgR3VDCisJICogd2lsbCByZXBvcnQgdGhlIGhhbmdpbmcgY29udGV4dCBkaXJl Y3RseSB0byB0aGUgZHJpdmVyIGl0c2VsZi4gU28KKwkgKiB0aGUgZHJpdmVyIHNob3VsZCBuZXZl ciBnZXQgaGVyZSB3aGVuIGluIEd1QyBtb2RlLgorCSAqLworCUdFTV9CVUdfT04oaW50ZWxfdWNf dXNlc19ndWNfc3VibWlzc2lvbigmZW5naW5lLT5ndC0+dWMpKTsKKwogCS8qCiAJICogV2UgYXJl IGNhbGxlZCBieSB0aGUgZXJyb3IgY2FwdHVyZSwgcmVzZXQgYW5kIHRvIGR1bXAgZW5naW5lCiAJ ICogc3RhdGUgYXQgcmFuZG9tIHBvaW50cyBpbiB0aW1lLiBJbiBwYXJ0aWN1bGFyLCBub3RlIHRo YXQgbmVpdGhlciBpcwpAQCAtMTc4MCwxNCArMTg3OSw3IEBAIGludGVsX2VuZ2luZV9maW5kX2Fj dGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWxpc3RfZm9y X2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5yZXF1ZXN0cywKIAkJ CSAgICBzY2hlZC5saW5rKSB7Ci0JCWlmIChfX2k5MTVfcmVxdWVzdF9pc19jb21wbGV0ZShyZXF1 ZXN0KSkKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghX19pOTE1X3JlcXVlc3RfaGFzX3N0YXJ0ZWQo cmVxdWVzdCkpCi0JCQljb250aW51ZTsKLQotCQkvKiBNb3JlIHRoYW4gb25lIHByZWVtcHRpYmxl IHJlcXVlc3QgbWF5IG1hdGNoISAqLwotCQlpZiAoIW1hdGNoX3JpbmcocmVxdWVzdCkpCisJCWlm IChpOTE1X3Rlc3RfcmVxdWVzdF9zdGF0ZShyZXF1ZXN0KSAhPSBJOTE1X1JFUVVFU1RfQUNUSVZF KQogCQkJY29udGludWU7CiAKIAkJYWN0aXZlID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYwppbmRleCBiNmEzMDVlNmE5NzQu LmYwNzY4ODI0ZGU2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2hlYXJ0YmVhdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9oZWFydGJlYXQuYwpAQCAtNzAsMTIgKzcwLDM4IEBAIHN0YXRpYyB2b2lkIHNob3dfaGVh cnRiZWF0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogewogCXN0cnVjdCBkcm1fcHJp bnRlciBwID0gZHJtX2RlYnVnX3ByaW50ZXIoImhlYXJ0YmVhdCIpOwogCi0JaW50ZWxfZW5naW5l X2R1bXAoZW5naW5lLCAmcCwKLQkJCSAgIiVzIGhlYXJ0YmVhdCB7c2Vxbm86JWxseDolbGxkLCBw cmlvOiVkfSBub3QgdGlja2luZ1xuIiwKLQkJCSAgZW5naW5lLT5uYW1lLAotCQkJICBycS0+ZmVu Y2UuY29udGV4dCwKLQkJCSAgcnEtPmZlbmNlLnNlcW5vLAotCQkJICBycS0+c2NoZWQuYXR0ci5w cmlvcml0eSk7CisJaWYgKCFycSkgeworCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLAor CQkJCSAgIiVzIGhlYXJ0YmVhdCBub3QgdGlja2luZ1xuIiwKKwkJCQkgIGVuZ2luZS0+bmFtZSk7 CisJfSBlbHNlIHsKKwkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCwKKwkJCQkgICIlcyBo ZWFydGJlYXQge3NlcW5vOiVsbHg6JWxsZCwgcHJpbzolZH0gbm90IHRpY2tpbmdcbiIsCisJCQkJ ICBlbmdpbmUtPm5hbWUsCisJCQkJICBycS0+ZmVuY2UuY29udGV4dCwKKwkJCQkgIHJxLT5mZW5j ZS5zZXFubywKKwkJCQkgIHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkCityZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVf REVCVUdfR0VNKSkKKwkJc2hvd19oZWFydGJlYXQocnEsIGVuZ2luZSk7CisKKwlpZiAoaW50ZWxf ZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSkpCisJCS8qCisJCSAqIEd1QyBpdHNlbGYgaXMgdG9hc3Qg b3IgR3VDJ3MgaGFuZyBkZXRlY3Rpb24KKwkJICogaXMgZGlzYWJsZWQuIEVpdGhlciB3YXksIG5l ZWQgdG8gZmluZCB0aGUKKwkJICogaGFuZyBjdWxwcml0IG1hbnVhbGx5LgorCQkgKi8KKwkJaW50 ZWxfZ3VjX2ZpbmRfaHVuZ19jb250ZXh0KGVuZ2luZSk7CisKKwlpbnRlbF9ndF9oYW5kbGVfZXJy b3IoZW5naW5lLT5ndCwgZW5naW5lLT5tYXNrLAorCQkJICAgICAgSTkxNV9FUlJPUl9DQVBUVVJF LAorCQkJICAgICAgInN0b3BwZWQgaGVhcnRiZWF0IG9uICVzIiwKKwkJCSAgICAgIGVuZ2luZS0+ bmFtZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGhlYXJ0YmVhdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndy aykKQEAgLTEwMiw2ICsxMjgsMTEgQEAgc3RhdGljIHZvaWQgaGVhcnRiZWF0KHN0cnVjdCB3b3Jr X3N0cnVjdCAqd3JrKQogCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoZW5naW5lLT5ndCkpCiAJCWdv dG8gb3V0OwogCisJaWYgKGk5MTVfc2NoZWRfZW5naW5lX2Rpc2FibGVkKGVuZ2luZS0+c2NoZWRf ZW5naW5lKSkgeworCQlyZXNldF9lbmdpbmUoZW5naW5lLCBlbmdpbmUtPmhlYXJ0YmVhdC5zeXN0 b2xlKTsKKwkJZ290byBvdXQ7CisJfQorCiAJaWYgKGVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUp IHsKIAkJbG9uZyBkZWxheSA9IFJFQURfT05DRShlbmdpbmUtPnByb3BzLmhlYXJ0YmVhdF9pbnRl cnZhbF9tcyk7CiAKQEAgLTEzOSwxMyArMTcwLDcgQEAgc3RhdGljIHZvaWQgaGVhcnRiZWF0KHN0 cnVjdCB3b3JrX3N0cnVjdCAqd3JrKQogCQkJZW5naW5lLT5zY2hlZF9lbmdpbmUtPnNjaGVkdWxl KHJxLCAmYXR0cik7CiAJCQlsb2NhbF9iaF9lbmFibGUoKTsKIAkJfSBlbHNlIHsKLQkJCWlmIChJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKQotCQkJCXNob3dfaGVhcnRiZWF0 KHJxLCBlbmdpbmUpOwotCi0JCQlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoZW5naW5lLT5ndCwgZW5n aW5lLT5tYXNrLAotCQkJCQkgICAgICBJOTE1X0VSUk9SX0NBUFRVUkUsCi0JCQkJCSAgICAgICJz dG9wcGVkIGhlYXJ0YmVhdCBvbiAlcyIsCi0JCQkJCSAgICAgIGVuZ2luZS0+bmFtZSk7CisJCQly ZXNldF9lbmdpbmUoZW5naW5lLCBycSk7CiAJCX0KIAogCQlycS0+ZW1pdHRlZF9qaWZmaWVzID0g amlmZmllczsKQEAgLTE5NCw2ICsyMTksMjYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfcGFya19oZWFy dGJlYXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlpOTE1X3JlcXVlc3RfcHV0 KGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmhlYXJ0YmVhdC5zeXN0b2xlKSk7CiB9CiAKK3ZvaWQg aW50ZWxfZ3RfdW5wYXJrX2hlYXJ0YmVhdHMoc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisK Kwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpCisJCWlmIChpbnRlbF9lbmdpbmVfcG1f aXNfYXdha2UoZW5naW5lKSkKKwkJCWludGVsX2VuZ2luZV91bnBhcmtfaGVhcnRiZWF0KGVuZ2lu ZSk7CisKK30KKwordm9pZCBpbnRlbF9ndF9wYXJrX2hlYXJ0YmVhdHMoc3RydWN0IGludGVsX2d0 ICpndCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpCisJCWludGVs X2VuZ2luZV9wYXJrX2hlYXJ0YmVhdChlbmdpbmUpOworfQorCiB2b2lkIGludGVsX2VuZ2luZV9p bml0X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJSU5JVF9E RUxBWUVEX1dPUksoJmVuZ2luZS0+aGVhcnRiZWF0LndvcmssIGhlYXJ0YmVhdCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmgKaW5kZXggYTQ4 OGVhM2U4NGEzLi41ZGE2ZDgwOWE4N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmgKQEAgLTcsNiArNyw3IEBACiAjZGVmaW5lIElOVEVM X0VOR0lORV9IRUFSVEJFQVRfSAogCiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOworc3RydWN0IGlu dGVsX2d0OwogCiB2b2lkIGludGVsX2VuZ2luZV9pbml0X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwogCkBAIC0xNiw2ICsxNyw5IEBAIGludCBpbnRlbF9lbmdpbmVf c2V0X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiB2b2lkIGludGVs X2VuZ2luZV9wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwog dm9pZCBpbnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwogCit2b2lkIGludGVsX2d0X3BhcmtfaGVhcnRiZWF0cyhzdHJ1Y3QgaW50ZWxf Z3QgKmd0KTsKK3ZvaWQgaW50ZWxfZ3RfdW5wYXJrX2hlYXJ0YmVhdHMoc3RydWN0IGludGVsX2d0 ICpndCk7CisKIGludCBpbnRlbF9lbmdpbmVfcHVsc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIGludCBpbnRlbF9lbmdpbmVfZmx1c2hfYmFycmllcnMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfdHlwZXMuaAppbmRleCAxY2I5YzNiNzBiMjkuLmVlYzU3ZTU3NDAzZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTIxLDcgKzIxLDYgQEAK ICNpbmNsdWRlICJpOTE1X3BtdS5oIgogI2luY2x1ZGUgImk5MTVfcHJpb2xpc3RfdHlwZXMuaCIK ICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnJlYWRjcnVtYnNf dHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF9zc2V1LmgiCiAjaW5jbHVkZSAiaW50ZWxfdGltZWxp bmVfdHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIKQEAgLTYzLDYgKzYyLDcgQEAg c3RydWN0IGk5MTVfc2NoZWRfZW5naW5lOwogc3RydWN0IGludGVsX2d0Owogc3RydWN0IGludGVs X3Jpbmc7CiBzdHJ1Y3QgaW50ZWxfdW5jb3JlOworc3RydWN0IGludGVsX2JyZWFkY3J1bWJzOwog CiB0eXBlZGVmIHU4IGludGVsX2VuZ2luZV9tYXNrX3Q7CiAjZGVmaW5lIEFMTF9FTkdJTkVTICgo aW50ZWxfZW5naW5lX21hc2tfdCl+MHVsKQpAQCAtMzA0LDYgKzMwNCw4IEBAIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgewogCS8qIGtlZXAgYSByZXF1ZXN0IGluIHJlc2VydmUgZm9yIGEgW3BtXSBi YXJyaWVyIHVuZGVyIG9vbSAqLwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RfcG9vbDsK IAorCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpodW5nX2NlOworCiAJc3RydWN0IGxsaXN0X2hlYWQg YmFycmllcl90YXNrczsKIAogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICprZXJuZWxfY29udGV4dDsg LyogcGlubmVkICovCkBAIC0zODgsNiArMzkwLDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7 CiAJdm9pZAkJKCpwYXJrKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCXZvaWQJ CSgqdW5wYXJrKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCisJdm9pZAkJKCpi dW1wX3NlcmlhbCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKwogCXZvaWQJCSgq c2V0X2RlZmF1bHRfc3VibWlzc2lvbikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK IAogCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqY29wczsKQEAgLTQxOCw2ICs0MjIs MTIgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAKIAl2b2lkCQkoKnJlbGVhc2UpKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKKwkvKgorCSAqIEFkZCAvIHJlbW92ZSByZXF1 ZXN0IGZyb20gZW5naW5lIGFjdGl2ZSB0cmFja2luZworCSAqLworCXZvaWQJCSgqYWRkX2FjdGl2 ZV9yZXF1ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CisJdm9pZAkJKCpyZW1vdmVfYWN0 aXZlX3JlcXVlc3QpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwogCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIGV4ZWNsaXN0czsKIAogCS8qCkBAIC00MzksNiArNDQ5LDcgQEAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyB7CiAjZGVmaW5lIEk5MTVfRU5HSU5FX0lTX1ZJUlRVQUwgICAg ICAgQklUKDUpCiAjZGVmaW5lIEk5MTVfRU5HSU5FX0hBU19SRUxBVElWRV9NTUlPIEJJVCg2KQog I2RlZmluZSBJOTE1X0VOR0lORV9SRVFVSVJFU19DTURfUEFSU0VSIEJJVCg3KQorI2RlZmluZSBJ OTE1X0VOR0lORV9XQU5UX0ZPUkNFRF9QUkVFTVBUSU9OIEJJVCg4KQogCXVuc2lnbmVkIGludCBm bGFnczsKIAogCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfdXNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIu YwppbmRleCA4NDE0MjEyN2ViZDguLjhmOGJlYTA4ZTczNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAi aW50ZWxfZW5naW5lLmgiCiAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3VzZXIuaCIKICNpbmNsdWRl ICJpbnRlbF9ndC5oIgorI2luY2x1ZGUgInVjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgiCiAKIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpCkBAIC0xMTUsNiAr MTE2LDkgQEAgc3RhdGljIHZvaWQgc2V0X3NjaGVkdWxlcl9jYXBzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCQkJZGlzYWJsZWQgfD0gKEk5MTVfU0NIRURVTEVSX0NBUF9FTkFCTEVE IHwKIAkJCQkgICAgIEk5MTVfU0NIRURVTEVSX0NBUF9QUklPUklUWSk7CiAKKwkJaWYgKGludGVs X3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmk5MTUtPmd0LnVjKSkKKwkJCWVuYWJsZWQgfD0gSTkx NV9TQ0hFRFVMRVJfQ0FQX1NUQVRJQ19QUklPUklUWV9NQVA7CisKIAkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUobWFwKTsgaSsrKSB7CiAJCQlpZiAoZW5naW5lLT5mbGFncyAmIEJJVChtYXBb aV0uZW5naW5lKSkKIAkJCQllbmFibGVkIHw9IEJJVChtYXBbaV0uc2NoZWQpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKaW5k ZXggNTZlMjUwOTBkYTY3Li4yYWE1Y2MxMDA5NTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYwpAQCAtMTE0LDYgKzExNCw3 IEBACiAjaW5jbHVkZSAiZ2VuOF9lbmdpbmVfY3MuaCIKICNpbmNsdWRlICJpbnRlbF9icmVhZGNy dW1icy5oIgogI2luY2x1ZGUgImludGVsX2NvbnRleHQuaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdp bmVfaGVhcnRiZWF0LmgiCiAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCiAjaW5jbHVkZSAi aW50ZWxfZW5naW5lX3N0YXRzLmgiCiAjaW5jbHVkZSAiaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Np b24uaCIKQEAgLTE5Myw2ICsxOTQsOSBAQCBzdGF0aWMgc3RydWN0IHZpcnR1YWxfZW5naW5lICp0 b192aXJ0dWFsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJu IGNvbnRhaW5lcl9vZihlbmdpbmUsIHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSwgYmFzZSk7CiB9CiAK K3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitleGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLCB1bnNpZ25lZCBpbnQgY291bnQpOwor CiBzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCiBfX2FjdGl2ZV9yZXF1ZXN0KGNvbnN0IHN0 cnVjdCBpbnRlbF90aW1lbGluZSAqIGNvbnN0IHRsLAogCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEsCkBAIC0yNTMzLDExICsyNTM3LDI2IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRf YWxsb2Moc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCXJldHVybiBscmNfYWxsb2MoY2UsIGNl LT5lbmdpbmUpOwogfQogCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9jYW5jZWxfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJCSAgICAgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gTlVMTDsKKwor CWk5MTVfcmVxdWVzdF9hY3RpdmVfZW5naW5lKHJxLCAmZW5naW5lKTsKKworCWlmIChlbmdpbmUg JiYgaW50ZWxfZW5naW5lX3B1bHNlKGVuZ2luZSkpCisJCWludGVsX2d0X2hhbmRsZV9lcnJvcihl bmdpbmUtPmd0LCBlbmdpbmUtPm1hc2ssIDAsCisJCQkJICAgICAgInJlcXVlc3QgY2FuY2VsbGF0 aW9uIGJ5ICVzIiwKKwkJCQkgICAgICBjdXJyZW50LT5jb21tKTsKK30KKwogc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyBleGVjbGlzdHNfY29udGV4dF9vcHMgPSB7CiAJLmZs YWdzID0gQ09QU19IQVNfSU5GTElHSFQsCiAKIAkuYWxsb2MgPSBleGVjbGlzdHNfY29udGV4dF9h bGxvYywKIAorCS5jYW5jZWxfcmVxdWVzdCA9IGV4ZWNsaXN0c19jb250ZXh0X2NhbmNlbF9yZXF1 ZXN0LAorCiAJLnByZV9waW4gPSBleGVjbGlzdHNfY29udGV4dF9wcmVfcGluLAogCS5waW4gPSBl eGVjbGlzdHNfY29udGV4dF9waW4sCiAJLnVucGluID0gbHJjX3VucGluLApAQCAtMjU0OCw2ICsy NTY3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyBleGVjbGlzdHNf Y29udGV4dF9vcHMgPSB7CiAKIAkucmVzZXQgPSBscmNfcmVzZXQsCiAJLmRlc3Ryb3kgPSBscmNf ZGVzdHJveSwKKworCS5jcmVhdGVfdmlydHVhbCA9IGV4ZWNsaXN0c19jcmVhdGVfdmlydHVhbCwK IH07CiAKIHN0YXRpYyBpbnQgZW1pdF9wZHBzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQpAQCAt MzEwMSw2ICszMTIyLDQyIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19wYXJrKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAljYW5jZWxfdGltZXIoJmVuZ2luZS0+ZXhlY2xpc3RzLnBy ZWVtcHQpOwogfQogCitzdGF0aWMgdm9pZCBhZGRfdG9fZW5naW5lKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT5lbmdpbmUtPnNjaGVkX2VuZ2lu ZS0+bG9jayk7CisJbGlzdF9tb3ZlX3RhaWwoJnJxLT5zY2hlZC5saW5rLCAmcnEtPmVuZ2luZS0+ c2NoZWRfZW5naW5lLT5yZXF1ZXN0cyk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX2Vu Z2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsICpsb2NrZWQ7CisKKwkvKgorCSAqIFZpcnR1YWwgZW5naW5lcyBjb21wbGljYXRl IGFjcXVpcmluZyB0aGUgZW5naW5lIHRpbWVsaW5lIGxvY2ssCisJICogYXMgdGhlaXIgcnEtPmVu Z2luZSBwb2ludGVyIGlzIG5vdCBzdGFibGUgdW50aWwgdW5kZXIgdGhhdAorCSAqIGVuZ2luZSBs b2NrLiBUaGUgc2ltcGxlIHBsb3kgd2UgdXNlIGlzIHRvIHRha2UgdGhlIGxvY2sgdGhlbgorCSAq IGNoZWNrIHRoYXQgdGhlIHJxIHN0aWxsIGJlbG9uZ3MgdG8gdGhlIG5ld2x5IGxvY2tlZCBlbmdp bmUuCisJICovCisJbG9ja2VkID0gUkVBRF9PTkNFKHJxLT5lbmdpbmUpOworCXNwaW5fbG9ja19p cnEoJmxvY2tlZC0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwl3aGlsZSAodW5saWtlbHkobG9ja2Vk ICE9IChlbmdpbmUgPSBSRUFEX09OQ0UocnEtPmVuZ2luZSkpKSkgeworCQlzcGluX3VubG9jaygm bG9ja2VkLT5zY2hlZF9lbmdpbmUtPmxvY2spOworCQlzcGluX2xvY2soJmVuZ2luZS0+c2NoZWRf ZW5naW5lLT5sb2NrKTsKKwkJbG9ja2VkID0gZW5naW5lOworCX0KKwlsaXN0X2RlbF9pbml0KCZy cS0+c2NoZWQubGluayk7CisKKwljbGVhcl9iaXQoSTkxNV9GRU5DRV9GTEFHX1BRVUVVRSwgJnJx LT5mZW5jZS5mbGFncyk7CisJY2xlYXJfYml0KEk5MTVfRkVOQ0VfRkxBR19IT0xELCAmcnEtPmZl bmNlLmZsYWdzKTsKKworCS8qIFByZXZlbnQgZnVydGhlciBfX2F3YWl0X2V4ZWN1dGlvbigpIHJl Z2lzdGVyaW5nIGEgY2IsIHRoZW4gZmx1c2ggKi8KKwlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19B Q1RJVkUsICZycS0+ZmVuY2UuZmxhZ3MpOworCisJc3Bpbl91bmxvY2tfaXJxKCZsb2NrZWQtPnNj aGVkX2VuZ2luZS0+bG9jayk7CisKKwlpOTE1X3JlcXVlc3Rfbm90aWZ5X2V4ZWN1dGVfY2JfaW1t KHJxKTsKK30KKwogc3RhdGljIGJvb2wgY2FuX3ByZWVtcHQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+IDgpCkBAIC0z MTk1LDYgKzMyNTIsOCBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCiAJZW5naW5lLT5jb3BzID0gJmV4ZWNsaXN0c19jb250ZXh0 X29wczsKIAllbmdpbmUtPnJlcXVlc3RfYWxsb2MgPSBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYzsK KwllbmdpbmUtPmFkZF9hY3RpdmVfcmVxdWVzdCA9IGFkZF90b19lbmdpbmU7CisJZW5naW5lLT5y ZW1vdmVfYWN0aXZlX3JlcXVlc3QgPSByZW1vdmVfZnJvbV9lbmdpbmU7CiAKIAllbmdpbmUtPnJl c2V0LnByZXBhcmUgPSBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZTsKIAllbmdpbmUtPnJlc2V0LnJl d2luZCA9IGV4ZWNsaXN0c19yZXNldF9yZXdpbmQ7CkBAIC0zMzk2LDcgKzM0NTUsNyBAQCBzdGF0 aWMgdm9pZCByY3VfdmlydHVhbF9jb250ZXh0X2Rlc3Ryb3koc3RydWN0IHdvcmtfc3RydWN0ICp3 cmspCiAJaW50ZWxfY29udGV4dF9maW5pKCZ2ZS0+Y29udGV4dCk7CiAKIAlpZiAodmUtPmJhc2Uu YnJlYWRjcnVtYnMpCi0JCWludGVsX2JyZWFkY3J1bWJzX2ZyZWUodmUtPmJhc2UuYnJlYWRjcnVt YnMpOworCQlpbnRlbF9icmVhZGNydW1ic19wdXQodmUtPmJhc2UuYnJlYWRjcnVtYnMpOwogCWlm ICh2ZS0+YmFzZS5zY2hlZF9lbmdpbmUpCiAJCWk5MTVfc2NoZWRfZW5naW5lX3B1dCh2ZS0+YmFz ZS5zY2hlZF9lbmdpbmUpOwogCWludGVsX2VuZ2luZV9mcmVlX3JlcXVlc3RfcG9vbCgmdmUtPmJh c2UpOwpAQCAtMzQ5MywxMSArMzU1MiwyNCBAQCBzdGF0aWMgdm9pZCB2aXJ0dWFsX2NvbnRleHRf ZXhpdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCWludGVsX2VuZ2luZV9wbV9wdXQodmUt PnNpYmxpbmdzW25dKTsKIH0KIAorc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgordmly dHVhbF9nZXRfc2libGluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHVuc2lnbmVk IGludCBzaWJsaW5nKQoreworCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUgPSB0b192aXJ0dWFs X2VuZ2luZShlbmdpbmUpOworCisJaWYgKHNpYmxpbmcgPj0gdmUtPm51bV9zaWJsaW5ncykKKwkJ cmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gdmUtPnNpYmxpbmdzW3NpYmxpbmddOworfQorCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHZpcnR1YWxfY29udGV4dF9vcHMgPSB7 CiAJLmZsYWdzID0gQ09QU19IQVNfSU5GTElHSFQsCiAKIAkuYWxsb2MgPSB2aXJ0dWFsX2NvbnRl eHRfYWxsb2MsCiAKKwkuY2FuY2VsX3JlcXVlc3QgPSBleGVjbGlzdHNfY29udGV4dF9jYW5jZWxf cmVxdWVzdCwKKwogCS5wcmVfcGluID0gdmlydHVhbF9jb250ZXh0X3ByZV9waW4sCiAJLnBpbiA9 IHZpcnR1YWxfY29udGV4dF9waW4sCiAJLnVucGluID0gbHJjX3VucGluLApAQCAtMzUwNyw2ICsz NTc5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyB2aXJ0dWFsX2Nv bnRleHRfb3BzID0gewogCS5leGl0ID0gdmlydHVhbF9jb250ZXh0X2V4aXQsCiAKIAkuZGVzdHJv eSA9IHZpcnR1YWxfY29udGV4dF9kZXN0cm95LAorCisJLmdldF9zaWJsaW5nID0gdmlydHVhbF9n ZXRfc2libGluZywKIH07CiAKIHN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHZpcnR1YWxfc3Vi bWlzc2lvbl9tYXNrKHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUpCkBAIC0zNjU1LDIwICszNzI5 LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmUtPmJhc2Uuc2NoZWRfZW5naW5l LT5sb2NrLCBmbGFncyk7CiB9CiAKLXN0cnVjdCBpbnRlbF9jb250ZXh0ICoKLWludGVsX2V4ZWNs aXN0c19jcmVhdGVfdmlydHVhbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2libGluZ3MsCi0J CQkgICAgICAgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICoKK2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2li bGluZ3MsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKIAlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZl OwogCXVuc2lnbmVkIGludCBuOwogCWludCBlcnI7CiAKLQlpZiAoY291bnQgPT0gMCkKLQkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0KLQlpZiAoY291bnQgPT0gMSkKLQkJcmV0dXJuIGludGVs X2NvbnRleHRfY3JlYXRlKHNpYmxpbmdzWzBdKTsKLQogCXZlID0ga3phbGxvYyhzdHJ1Y3Rfc2l6 ZSh2ZSwgc2libGluZ3MsIGNvdW50KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF2ZSkKIAkJcmV0dXJu IEVSUl9QVFIoLUVOT01FTSk7CkBAIC0zNzgwLDYgKzM4NDcsOCBAQCBpbnRlbF9leGVjbGlzdHNf Y3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAogCQkJICJ2 JWR4JWQiLCB2ZS0+YmFzZS5jbGFzcywgY291bnQpOwogCQl2ZS0+YmFzZS5jb250ZXh0X3NpemUg PSBzaWJsaW5nLT5jb250ZXh0X3NpemU7CiAKKwkJdmUtPmJhc2UuYWRkX2FjdGl2ZV9yZXF1ZXN0 ID0gc2libGluZy0+YWRkX2FjdGl2ZV9yZXF1ZXN0OworCQl2ZS0+YmFzZS5yZW1vdmVfYWN0aXZl X3JlcXVlc3QgPSBzaWJsaW5nLT5yZW1vdmVfYWN0aXZlX3JlcXVlc3Q7CiAJCXZlLT5iYXNlLmVt aXRfYmJfc3RhcnQgPSBzaWJsaW5nLT5lbWl0X2JiX3N0YXJ0OwogCQl2ZS0+YmFzZS5lbWl0X2Zs dXNoID0gc2libGluZy0+ZW1pdF9mbHVzaDsKIAkJdmUtPmJhc2UuZW1pdF9pbml0X2JyZWFkY3J1 bWIgPSBzaWJsaW5nLT5lbWl0X2luaXRfYnJlYWRjcnVtYjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5oCmluZGV4IGFkNGYzZTFh MGZkZS4uYTFhYTkyYzk4M2E1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmgKQEAgLTMyLDEwICszMiw2IEBAIHZvaWQgaW50 ZWxfZXhlY2xpc3RzX3Nob3dfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAogCQkJCQkJCWludCBpbmRlbnQpLAogCQkJCSAgIHVuc2lnbmVkIGludCBtYXgpOwogCi1zdHJ1 Y3QgaW50ZWxfY29udGV4dCAqCi1pbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAotCQkJICAgICAgIHVuc2lnbmVkIGludCBjb3Vu dCk7Ci0KIGJvb2wKIGludGVsX2VuZ2luZV9pbl9leGVjbGlzdHNfc3VibWlzc2lvbl9tb2RlKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndC5jCmluZGV4IGU3MTRlMjFjMGE0ZC4uY2VlYjUxN2JhMjU5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0LmMKQEAgLTU4NSw2ICs1ODUsMjUgQEAgc3RhdGljIHZvaWQgX19pbnRl bF9ndF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJR0VNX0JVR19PTihpbnRlbF9ndF9w bV9pc19hd2FrZShndCkpOwogfQogCitpbnQgaW50ZWxfZ3Rfd2FpdF9mb3JfaWRsZShzdHJ1Y3Qg aW50ZWxfZ3QgKmd0LCBsb25nIHRpbWVvdXQpCit7CisJbG9uZyByZW1haW5pbmdfdGltZW91dDsK KworCS8qIElmIHRoZSBkZXZpY2UgaXMgYXNsZWVwLCB3ZSBoYXZlIG5vIHJlcXVlc3RzIG91dHN0 YW5kaW5nICovCisJaWYgKCFpbnRlbF9ndF9wbV9pc19hd2FrZShndCkpCisJCXJldHVybiAwOwor CisJd2hpbGUgKCh0aW1lb3V0ID0gaW50ZWxfZ3RfcmV0aXJlX3JlcXVlc3RzX3RpbWVvdXQoZ3Qs IHRpbWVvdXQsCisJCQkJCQkJICAgJnJlbWFpbmluZ190aW1lb3V0KSkgPiAwKSB7CisJCWNvbmRf cmVzY2hlZCgpOworCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCisJCQlyZXR1cm4gLUVJ TlRSOworCX0KKworCXJldHVybiB0aW1lb3V0ID8gdGltZW91dCA6IGludGVsX3VjX3dhaXRfZm9y X2lkbGUoJmd0LT51YywKKwkJCQkJCQkgIHJlbWFpbmluZ190aW1lb3V0KTsKK30KKwogaW50IGlu dGVsX2d0X2luaXQoc3RydWN0IGludGVsX2d0ICpndCkKIHsKIAlpbnQgZXJyOwpAQCAtNjM1LDYg KzY1NCw4IEBAIGludCBpbnRlbF9ndF9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJaWYgKGVy cikKIAkJZ290byBlcnJfZ3Q7CiAKKwlpbnRlbF91Y19pbml0X2xhdGUoJmd0LT51Yyk7CisKIAll cnIgPSBpOTE1X2luamVjdF9wcm9iZV9lcnJvcihndC0+aTkxNSwgLUVJTyk7CiAJaWYgKGVycikK IAkJZ290byBlcnJfZ3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuaAppbmRleCBlN2FhYmUw Y2M1YmYuLjc0ZTc3MTg3MWE5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5oCkBAIC00 OCw2ICs0OCw4IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlbGVhc2Uoc3RydWN0IGludGVsX2d0 ICpndCk7CiAKIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX2xhdGVfcmVsZWFzZShzdHJ1Y3QgaW50ZWxf Z3QgKmd0KTsKIAoraW50IGludGVsX2d0X3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2d0ICpn dCwgbG9uZyB0aW1lb3V0KTsKKwogdm9pZCBpbnRlbF9ndF9jaGVja19hbmRfY2xlYXJfZmF1bHRz KHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwogdm9pZCBpbnRlbF9ndF9jbGVhcl9lcnJvcl9yZWdpc3Rl cnMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJCQkgICAgaW50ZWxfZW5naW5lX21hc2tfdCBlbmdp bmVfbWFzayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwppbmRleCBhZWYzMDg0 ZThiMTYuLjQ2M2E2YWU2MDVhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5j CkBAIC0xNzQsOCArMTc0LDYgQEAgc3RhdGljIHZvaWQgZ3Rfc2FuaXRpemUoc3RydWN0IGludGVs X2d0ICpndCwgYm9vbCBmb3JjZSkKIAlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0KSkKIAkJaW50 ZWxfZ3RfdW5zZXRfd2VkZ2VkKGd0KTsKIAotCWludGVsX3VjX3Nhbml0aXplKCZndC0+dWMpOwot CiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKQogCQlpZiAoZW5naW5lLT5yZXNldC5w cmVwYXJlKQogCQkJZW5naW5lLT5yZXNldC5wcmVwYXJlKGVuZ2luZSk7CkBAIC0xOTEsNiArMTg5 LDggQEAgc3RhdGljIHZvaWQgZ3Rfc2FuaXRpemUoc3RydWN0IGludGVsX2d0ICpndCwgYm9vbCBm b3JjZSkKIAkJCV9faW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgZmFsc2UpOwogCX0KIAorCWlu dGVsX3VjX3Jlc2V0KCZndC0+dWMsIGZhbHNlKTsKKwogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGd0LCBpZCkKIAkJaWYgKGVuZ2luZS0+cmVzZXQuZmluaXNoKQogCQkJZW5naW5lLT5yZXNldC5m aW5pc2goZW5naW5lKTsKQEAgLTI0Myw2ICsyNDMsOCBAQCBpbnQgaW50ZWxfZ3RfcmVzdW1lKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpCiAJCWdvdG8gZXJyX3dlZGdlZDsKIAl9CiAKKwlpbnRlbF91Y19y ZXNldF9maW5pc2goJmd0LT51Yyk7CisKIAlpbnRlbF9ycHNfZW5hYmxlKCZndC0+cnBzKTsKIAlp bnRlbF9sbGNfZW5hYmxlKCZndC0+bGxjKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3JlcXVlc3RzLmMKaW5kZXggNjQ3ZWNhOWQ4NjdhLi5lZGI4ODFkNzU2MzAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3JlcXVlc3RzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuYwpAQCAtMTMwLDcgKzEz MCw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfcmV0aXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlHRU1fQlVHX09OKGVuZ2luZS0+cmV0aXJlKTsKIH0KIAotbG9uZyBpbnRl bF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBsb25nIHRp bWVvdXQpCitsb25nIGludGVsX2d0X3JldGlyZV9yZXF1ZXN0c190aW1lb3V0KHN0cnVjdCBpbnRl bF9ndCAqZ3QsIGxvbmcgdGltZW91dCwKKwkJCQkgICAgICBsb25nICpyZW1haW5pbmdfdGltZW91 dCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICp0aW1lbGluZXMgPSAmZ3QtPnRpbWVs aW5lczsKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLCAqdG47CkBAIC0xOTUsMjIgKzE5Niwx MCBAQCBvdXRfYWN0aXZlOglzcGluX2xvY2soJnRpbWVsaW5lcy0+bG9jayk7CiAJaWYgKGZsdXNo X3N1Ym1pc3Npb24oZ3QsIHRpbWVvdXQpKSAvKiBXYWl0LCB0aGVyZSdzIG1vcmUhICovCiAJCWFj dGl2ZV9jb3VudCsrOwogCi0JcmV0dXJuIGFjdGl2ZV9jb3VudCA/IHRpbWVvdXQgOiAwOwotfQot Ci1pbnQgaW50ZWxfZ3Rfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBsb25nIHRp bWVvdXQpCi17Ci0JLyogSWYgdGhlIGRldmljZSBpcyBhc2xlZXAsIHdlIGhhdmUgbm8gcmVxdWVz dHMgb3V0c3RhbmRpbmcgKi8KLQlpZiAoIWludGVsX2d0X3BtX2lzX2F3YWtlKGd0KSkKLQkJcmV0 dXJuIDA7Ci0KLQl3aGlsZSAoKHRpbWVvdXQgPSBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGlt ZW91dChndCwgdGltZW91dCkpID4gMCkgewotCQljb25kX3Jlc2NoZWQoKTsKLQkJaWYgKHNpZ25h bF9wZW5kaW5nKGN1cnJlbnQpKQotCQkJcmV0dXJuIC1FSU5UUjsKLQl9CisJaWYgKHJlbWFpbmlu Z190aW1lb3V0KQorCQkqcmVtYWluaW5nX3RpbWVvdXQgPSB0aW1lb3V0OwogCi0JcmV0dXJuIHRp bWVvdXQ7CisJcmV0dXJuIGFjdGl2ZV9jb3VudCA/IHRpbWVvdXQgOiAwOwogfQogCiBzdGF0aWMg dm9pZCByZXRpcmVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3JlcXVlc3RzLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9yZXF1ZXN0cy5oCmluZGV4IGZjYzMwYTZlNGZl OS4uNTFkYmUwZTMyOTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndF9yZXF1ZXN0cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3Jl cXVlc3RzLmgKQEAgLTYsMTQgKzYsMTcgQEAKICNpZm5kZWYgSU5URUxfR1RfUkVRVUVTVFNfSAog I2RlZmluZSBJTlRFTF9HVF9SRVFVRVNUU19ICiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogc3Ry dWN0IGludGVsX2VuZ2luZV9jczsKIHN0cnVjdCBpbnRlbF9ndDsKIHN0cnVjdCBpbnRlbF90aW1l bGluZTsKIAotbG9uZyBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LCBsb25nIHRpbWVvdXQpOworbG9uZyBpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNf dGltZW91dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBsb25nIHRpbWVvdXQsCisJCQkJICAgICAgbG9u ZyAqcmVtYWluaW5nX3RpbWVvdXQpOwogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2d0X3JldGly ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewotCWludGVsX2d0X3JldGlyZV9yZXF1 ZXN0c190aW1lb3V0KGd0LCAwKTsKKwlpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChn dCwgMCwgTlVMTCk7CiB9CiAKIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfcmV0aXJlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CkBAIC0yMSw4ICsyNCw2IEBAIHZvaWQgaW50ZWxfZW5n aW5lX2FkZF9yZXRpcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgICBz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKTsKIHZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfcmV0aXJl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKLWludCBpbnRlbF9ndF93YWl0X2Zv cl9pZGxlKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGxvbmcgdGltZW91dCk7Ci0KIHZvaWQgaW50ZWxf Z3RfaW5pdF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKIHZvaWQgaW50ZWxfZ3RfcGFy a19yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKIHZvaWQgaW50ZWxfZ3RfdW5wYXJrX3Jl cXVlc3RzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf bHJjX3JlZy5oCmluZGV4IDQxZTUzNTBhN2EwNS4uNDlkNDg1N2FkOWI3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oCkBAIC04Nyw3ICs4Nyw2IEBACiAjZGVmaW5lIEdF TjExX0NTQl9XUklURV9QVFJfTUFTSwkoR0VOMTFfQ1NCX1BUUl9NQVNLIDw8IDApCiAKICNkZWZp bmUgTUFYX0NPTlRFWFRfSFdfSUQJKDEgPDwgMjEpIC8qIGV4Y2x1c2l2ZSAqLwotI2RlZmluZSBN QVhfR1VDX0NPTlRFWFRfSFdfSUQJKDEgPDwgMjApIC8qIGV4Y2x1c2l2ZSAqLwogI2RlZmluZSBH RU4xMV9NQVhfQ09OVEVYVF9IV19JRAkoMSA8PCAxMSkgLyogZXhjbHVzaXZlICovCiAvKiBpbiBH ZW4xMiBJRCAweDdGRiBpcyByZXNlcnZlZCB0byBpbmRpY2F0ZSBpZGxlICovCiAjZGVmaW5lIEdF TjEyX01BWF9DT05URVhUX0hXX0lECShHRU4xMV9NQVhfQ09OVEVYVF9IV19JRCAtIDEpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwppbmRleCA3MjI1MTYzOGQ0ZWEuLjNlZDY5NGNh YjVhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCkBAIC0yMiw3ICsyMiw2 IEBACiAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIKIAogI2luY2x1ZGUgInVjL2ludGVsX2d1Yy5o IgotI2luY2x1ZGUgInVjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgiCiAKICNkZWZpbmUgUkVTRVRf TUFYX1JFVFJJRVMgMwogCkBAIC0zOSwyMSArMzgsNiBAQCBzdGF0aWMgdm9pZCBybXdfY2xlYXJf Zncoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZywgdTMyIGNscikK IAlpbnRlbF91bmNvcmVfcm13X2Z3KHVuY29yZSwgcmVnLCBjbHIsIDApOwogfQogCi1zdGF0aWMg dm9pZCBza2lwX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0Jc3RydWN0IGlu dGVsX2NvbnRleHQgKmh1bmdfY3R4ID0gcnEtPmNvbnRleHQ7Ci0KLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X2Zyb21fcmN1KHJxLCAmaHVuZ19jdHgtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewot CQlpZiAoIWk5MTVfcmVxdWVzdF9pc19hY3RpdmUocnEpKQotCQkJcmV0dXJuOwotCi0JCWlmIChy cS0+Y29udGV4dCA9PSBodW5nX2N0eCkgewotCQkJaTkxNV9yZXF1ZXN0X3NldF9lcnJvcl9vbmNl KHJxLCAtRUlPKTsKLQkJCV9faTkxNV9yZXF1ZXN0X3NraXAocnEpOwotCQl9Ci0JfQotfQotCiBz dGF0aWMgdm9pZCBjbGllbnRfbWFya19ndWlsdHkoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwgYm9vbCBiYW5uZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9w cml2ID0gY3R4LT5maWxlX3ByaXY7CkBAIC04OCwxMCArNzIsOCBAQCBzdGF0aWMgYm9vbCBtYXJr X2d1aWx0eShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlib29sIGJhbm5lZDsKIAlpbnQgaTsK IAotCWlmIChpbnRlbF9jb250ZXh0X2lzX2Nsb3NlZChycS0+Y29udGV4dCkpIHsKLQkJaW50ZWxf Y29udGV4dF9zZXRfYmFubmVkKHJxLT5jb250ZXh0KTsKKwlpZiAoaW50ZWxfY29udGV4dF9pc19j bG9zZWQocnEtPmNvbnRleHQpKQogCQlyZXR1cm4gdHJ1ZTsKLQl9CiAKIAlyY3VfcmVhZF9sb2Nr KCk7CiAJY3R4ID0gcmN1X2RlcmVmZXJlbmNlKHJxLT5jb250ZXh0LT5nZW1fY29udGV4dCk7CkBA IC0xMjMsMTEgKzEwNSw5IEBAIHN0YXRpYyBib29sIG1hcmtfZ3VpbHR5KHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQogCWJhbm5lZCA9ICFpOTE1X2dlbV9jb250ZXh0X2lzX3JlY292ZXJhYmxlKGN0 eCk7CiAJaWYgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHByZXZfaGFuZyArIENPTlRFWFRfRkFTVF9I QU5HX0pJRkZJRVMpKQogCQliYW5uZWQgPSB0cnVlOwotCWlmIChiYW5uZWQpIHsKKwlpZiAoYmFu bmVkKQogCQlkcm1fZGJnKCZjdHgtPmk5MTUtPmRybSwgImNvbnRleHQgJXM6IGd1aWx0eSAlZCwg YmFubmVkXG4iLAogCQkJY3R4LT5uYW1lLCBhdG9taWNfcmVhZCgmY3R4LT5ndWlsdHlfY291bnQp KTsKLQkJaW50ZWxfY29udGV4dF9zZXRfYmFubmVkKHJxLT5jb250ZXh0KTsKLQl9CiAKIAljbGll bnRfbWFya19ndWlsdHkoY3R4LCBiYW5uZWQpOwogCkBAIC0xNDksNiArMTI5LDggQEAgc3RhdGlj IHZvaWQgbWFya19pbm5vY2VudChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAogdm9pZCBfX2k5 MTVfcmVxdWVzdF9yZXNldChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWlsdHkpCiB7 CisJYm9vbCBiYW5uZWQgPSBmYWxzZTsKKwogCVJRX1RSQUNFKHJxLCAiZ3VpbHR5PyAlc1xuIiwg eWVzbm8oZ3VpbHR5KSk7CiAJR0VNX0JVR19PTihfX2k5MTVfcmVxdWVzdF9pc19jb21wbGV0ZShy cSkpOwogCkBAIC0xNTYsMTMgKzEzOCwxNSBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3Jlc2V0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBib29sIGd1aWx0eSkKIAlpZiAoZ3VpbHR5KSB7CiAJCWk5 MTVfcmVxdWVzdF9zZXRfZXJyb3Jfb25jZShycSwgLUVJTyk7CiAJCV9faTkxNV9yZXF1ZXN0X3Nr aXAocnEpOwotCQlpZiAobWFya19ndWlsdHkocnEpKQotCQkJc2tpcF9jb250ZXh0KHJxKTsKKwkJ YmFubmVkID0gbWFya19ndWlsdHkocnEpOwogCX0gZWxzZSB7CiAJCWk5MTVfcmVxdWVzdF9zZXRf ZXJyb3Jfb25jZShycSwgLUVBR0FJTik7CiAJCW1hcmtfaW5ub2NlbnQocnEpOwogCX0KIAlyY3Vf cmVhZF91bmxvY2soKTsKKworCWlmIChiYW5uZWQpCisJCWludGVsX2NvbnRleHRfYmFuKHJxLT5j b250ZXh0LCBycSk7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVfaW5fcmVzZXQoc3RydWN0IHBjaV9k ZXYgKnBkZXYpCkBAIC04MjYsNiArODEwLDggQEAgc3RhdGljIGludCBndF9yZXNldChzdHJ1Y3Qg aW50ZWxfZ3QgKmd0LCBpbnRlbF9lbmdpbmVfbWFza190IHN0YWxsZWRfbWFzaykKIAkJX19pbnRl bF9lbmdpbmVfcmVzZXQoZW5naW5lLCBzdGFsbGVkX21hc2sgJiBlbmdpbmUtPm1hc2spOwogCWxv Y2FsX2JoX2VuYWJsZSgpOwogCisJaW50ZWxfdWNfcmVzZXQoJmd0LT51YywgdHJ1ZSk7CisKIAlp bnRlbF9nZ3R0X3Jlc3RvcmVfZmVuY2VzKGd0LT5nZ3R0KTsKIAogCXJldHVybiBlcnI7CkBAIC04 NTAsNiArODM2LDggQEAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9ndCAq Z3QsIGludGVsX2VuZ2luZV9tYXNrX3QgYXdha2UpCiAJCWlmIChhd2FrZSAmIGVuZ2luZS0+bWFz aykKIAkJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKIAl9CisKKwlpbnRlbF91Y19yZXNl dF9maW5pc2goJmd0LT51Yyk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vcF9zdWJtaXRfcmVxdWVzdChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtOTAzLDYgKzg5MSw3IEBAIHN0YXRpYyB2 b2lkIF9faW50ZWxfZ3Rfc2V0X3dlZGdlZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGd0LCBpZCkKIAkJaWYgKGVuZ2luZS0+cmVzZXQuY2FuY2VsKQogCQkJ ZW5naW5lLT5yZXNldC5jYW5jZWwoZW5naW5lKTsKKwlpbnRlbF91Y19jYW5jZWxfcmVxdWVzdHMo Jmd0LT51Yyk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXNldF9maW5pc2goZ3QsIGF3YWtl KTsKQEAgLTExOTEsNiArMTE4MCw5IEBAIGludCBfX2ludGVsX2VuZ2luZV9yZXNldF9iaChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZykKIAlFTkdJTkVfVFJB Q0UoZW5naW5lLCAiZmxhZ3M9JWx4XG4iLCBndC0+cmVzZXQuZmxhZ3MpOwogCUdFTV9CVUdfT04o IXRlc3RfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwgJmd0LT5yZXNldC5mbGFn cykpOwogCisJaWYgKGludGVsX2VuZ2luZV91c2VzX2d1YyhlbmdpbmUpKQorCQlyZXR1cm4gLUVO T0RFVjsKKwogCWlmICghaW50ZWxfZW5naW5lX3BtX2dldF9pZl9hd2FrZShlbmdpbmUpKQogCQly ZXR1cm4gMDsKIApAQCAtMTIwMSwxMyArMTE5MywxMCBAQCBpbnQgX19pbnRlbF9lbmdpbmVfcmVz ZXRfYmgoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBjaGFyICptc2cpCiAJ CQkgICAiUmVzZXR0aW5nICVzIGZvciAlc1xuIiwgZW5naW5lLT5uYW1lLCBtc2cpOwogCWF0b21p Y19pbmMoJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yLnJlc2V0X2VuZ2luZV9jb3VudFtlbmdpbmUt PnVhYmlfY2xhc3NdKTsKIAotCWlmIChpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKSkKLQkJ cmV0ID0gaW50ZWxfZ3VjX3Jlc2V0X2VuZ2luZSgmZW5naW5lLT5ndC0+dWMuZ3VjLCBlbmdpbmUp OwotCWVsc2UKLQkJcmV0ID0gaW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7CisJcmV0ID0g aW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7CiAJaWYgKHJldCkgewogCQkvKiBJZiB3ZSBm YWlsIGhlcmUsIHdlIGV4cGVjdCB0byBmYWxsYmFjayB0byBhIGdsb2JhbCByZXNldCAqLwotCQlF TkdJTkVfVFJBQ0UoZW5naW5lLCAiRmFpbGVkIHRvIHJlc2V0LCBlcnI6ICVkXG4iLCByZXQpOwor CQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiRmFpbGVkIHRvIHJlc2V0ICVzLCBlcnI6ICVkXG4iLCBl bmdpbmUtPm5hbWUsIHJldCk7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMTM0MSw3ICsxMzMwLDgg QEAgdm9pZCBpbnRlbF9ndF9oYW5kbGVfZXJyb3Ioc3RydWN0IGludGVsX2d0ICpndCwKIAkgKiBU cnkgZW5naW5lIHJlc2V0IHdoZW4gYXZhaWxhYmxlLiBXZSBmYWxsIGJhY2sgdG8gZnVsbCByZXNl dCBpZgogCSAqIHNpbmdsZSByZXNldCBmYWlscy4KIAkgKi8KLQlpZiAoaW50ZWxfaGFzX3Jlc2V0 X2VuZ2luZShndCkgJiYgIWludGVsX2d0X2lzX3dlZGdlZChndCkpIHsKKwlpZiAoIWludGVsX3Vj X3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmd0LT51YykgJiYKKwkgICAgaW50ZWxfaGFzX3Jlc2V0X2Vu Z2luZShndCkgJiYgIWludGVsX2d0X2lzX3dlZGdlZChndCkpIHsKIAkJbG9jYWxfYmhfZGlzYWJs ZSgpOwogCQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZ3QsIGVuZ2luZV9tYXNrLCB0 bXApIHsKIAkJCUJVSUxEX0JVR19PTihJOTE1X1JFU0VUX01PREVTRVQgPj0gSTkxNV9SRVNFVF9F TkdJTkUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19z dWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Np b24uYwppbmRleCA1YzRkMjA0ZDA3Y2MuLjA1YmI5ZjQ0OWRmMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKQEAgLTU4Niw5ICs1ODYsMjkg QEAgc3RhdGljIHZvaWQgcmluZ19jb250ZXh0X3Jlc2V0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKIAljbGVhcl9iaXQoQ09OVEVYVF9WQUxJRF9CSVQsICZjZS0+ZmxhZ3MpOwogfQogCitzdGF0 aWMgdm9pZCByaW5nX2NvbnRleHRfYmFuKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCSAg ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOworCisJaWYgKCFycSB8fCAhaTkxNV9yZXF1ZXN0X2lzX2FjdGl2ZShycSkpCisJCXJl dHVybjsKKworCWVuZ2luZSA9IHJxLT5lbmdpbmU7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5n aW5lLT5zY2hlZF9lbmdpbmUtPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUo cnEsICZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+cmVxdWVzdHMsCisJCQkJICAgICBzY2hlZC5saW5r KQorCQlpZiAocnEtPmNvbnRleHQgPT0gY2UpIHsKKwkJCWk5MTVfcmVxdWVzdF9zZXRfZXJyb3Jf b25jZShycSwgLUVJTyk7CisJCQlfX2k5MTVfcmVxdWVzdF9za2lwKHJxKTsKKwkJfQorfQorCiBz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHJpbmdfY29udGV4dF9vcHMgPSB7 CiAJLmFsbG9jID0gcmluZ19jb250ZXh0X2FsbG9jLAogCisJLmJhbiA9IHJpbmdfY29udGV4dF9i YW4sCisKIAkucHJlX3BpbiA9IHJpbmdfY29udGV4dF9wcmVfcGluLAogCS5waW4gPSByaW5nX2Nv bnRleHRfcGluLAogCS51bnBpbiA9IHJpbmdfY29udGV4dF91bnBpbiwKQEAgLTEwNDcsNiArMTA2 NywyNSBAQCBzdGF0aWMgdm9pZCBzZXR1cF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCX0KIH0KIAorc3RhdGljIHZvaWQgYWRkX3RvX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+ZW5naW5lLT5zY2hlZF9lbmdp bmUtPmxvY2spOworCWxpc3RfbW92ZV90YWlsKCZycS0+c2NoZWQubGluaywgJnJxLT5lbmdpbmUt PnNjaGVkX2VuZ2luZS0+cmVxdWVzdHMpOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVfZnJvbV9l bmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3Bpbl9sb2NrX2lycSgmcnEtPmVu Z2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGlu ayk7CisKKwkvKiBQcmV2ZW50IGZ1cnRoZXIgX19hd2FpdF9leGVjdXRpb24oKSByZWdpc3Rlcmlu ZyBhIGNiLCB0aGVuIGZsdXNoICovCisJc2V0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAm cnEtPmZlbmNlLmZsYWdzKTsKKworCXNwaW5fdW5sb2NrX2lycSgmcnEtPmVuZ2luZS0+c2NoZWRf ZW5naW5lLT5sb2NrKTsKKworCWk5MTVfcmVxdWVzdF9ub3RpZnlfZXhlY3V0ZV9jYl9pbW0ocnEp OworfQorCiBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1 OwpAQCAtMTA2NCw2ICsxMTAzLDkgQEAgc3RhdGljIHZvaWQgc2V0dXBfY29tbW9uKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPnJlc2V0LmNhbmNlbCA9IHJlc2V0X2Nh bmNlbDsKIAllbmdpbmUtPnJlc2V0LmZpbmlzaCA9IHJlc2V0X2ZpbmlzaDsKIAorCWVuZ2luZS0+ YWRkX2FjdGl2ZV9yZXF1ZXN0ID0gYWRkX3RvX2VuZ2luZTsKKwllbmdpbmUtPnJlbW92ZV9hY3Rp dmVfcmVxdWVzdCA9IHJlbW92ZV9mcm9tX2VuZ2luZTsKKwogCWVuZ2luZS0+Y29wcyA9ICZyaW5n X2NvbnRleHRfb3BzOwogCWVuZ2luZS0+cmVxdWVzdF9hbGxvYyA9IHJpbmdfcmVxdWVzdF9hbGxv YzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMuYwppbmRleCAwNmU5YThlZDRlMDMuLjBj OGU3ZjJiMDZmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBzLmMKQEAgLTE4NzcsNiAr MTg3NywxMCBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKIAog CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCAmJiBHUkFQSElDU19WRVIoaTkxNSkgPCAxMSkK IAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RP X0dVQzsKKworCS8qIEd1QyBuZWVkcyBBUkFUIGV4cGlyZWQgaW50ZXJydXB0IHVubWFza2VkICov CisJaWYgKGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJnJwc190b19ndChycHMpLT51Yykp CisJCXJwcy0+cG1faW50cm1za19tYnogfD0gQVJBVF9FWFBJUkVEX0lOVFJNU0s7CiB9CiAKIHZv aWQgaW50ZWxfcnBzX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCmluZGV4IDc3MzFkYjMzYzQ2YS4uMmZk MzJkYzBiNTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3Jr YXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRz LmMKQEAgLTE1MCwxMyArMTUwLDE0IEBAIHN0YXRpYyB2b2lkIF93YV9hZGQoc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsLCBjb25zdCBzdHJ1Y3QgaTkxNV93YSAqd2EpCiB9CiAKIHN0YXRpYyB2b2lk IHdhX2FkZChzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLAotCQkgICB1 MzIgY2xlYXIsIHUzMiBzZXQsIHUzMiByZWFkX21hc2spCisJCSAgIHUzMiBjbGVhciwgdTMyIHNl dCwgdTMyIHJlYWRfbWFzaywgYm9vbCBtYXNrZWRfcmVnKQogewogCXN0cnVjdCBpOTE1X3dhIHdh ID0gewogCQkucmVnICA9IHJlZywKIAkJLmNsciAgPSBjbGVhciwKIAkJLnNldCAgPSBzZXQsCiAJ CS5yZWFkID0gcmVhZF9tYXNrLAorCQkubWFza2VkX3JlZyA9IG1hc2tlZF9yZWcsCiAJfTsKIAog CV93YV9hZGQod2FsLCAmd2EpOwpAQCAtMTY1LDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIHdhX2Fk ZChzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLAogc3RhdGljIHZvaWQK IHdhX3dyaXRlX2Nscl9zZXQoc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJl ZywgdTMyIGNsZWFyLCB1MzIgc2V0KQogewotCXdhX2FkZCh3YWwsIHJlZywgY2xlYXIsIHNldCwg Y2xlYXIpOworCXdhX2FkZCh3YWwsIHJlZywgY2xlYXIsIHNldCwgY2xlYXIsIGZhbHNlKTsKIH0K IAogc3RhdGljIHZvaWQKQEAgLTIwMCwyMCArMjAxLDIwIEBAIHdhX3dyaXRlX2NscihzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLCB1MzIgY2xyKQogc3RhdGljIHZvaWQK IHdhX21hc2tlZF9lbihzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwsIGk5MTVfcmVnX3QgcmVnLCB1 MzIgdmFsKQogewotCXdhX2FkZCh3YWwsIHJlZywgMCwgX01BU0tFRF9CSVRfRU5BQkxFKHZhbCks IHZhbCk7CisJd2FfYWRkKHdhbCwgcmVnLCAwLCBfTUFTS0VEX0JJVF9FTkFCTEUodmFsKSwgdmFs LCB0cnVlKTsKIH0KIAogc3RhdGljIHZvaWQKIHdhX21hc2tlZF9kaXMoc3RydWN0IGk5MTVfd2Ff bGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKIHsKLQl3YV9hZGQod2FsLCByZWcs IDAsIF9NQVNLRURfQklUX0RJU0FCTEUodmFsKSwgdmFsKTsKKwl3YV9hZGQod2FsLCByZWcsIDAs IF9NQVNLRURfQklUX0RJU0FCTEUodmFsKSwgdmFsLCB0cnVlKTsKIH0KIAogc3RhdGljIHZvaWQK IHdhX21hc2tlZF9maWVsZF9zZXQoc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190 IHJlZywKIAkJICAgIHUzMiBtYXNrLCB1MzIgdmFsKQogewotCXdhX2FkZCh3YWwsIHJlZywgMCwg X01BU0tFRF9GSUVMRChtYXNrLCB2YWwpLCBtYXNrKTsKKwl3YV9hZGQod2FsLCByZWcsIDAsIF9N QVNLRURfRklFTEQobWFzaywgdmFsKSwgbWFzaywgdHJ1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdl bjZfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLApA QCAtNTMzLDEwICs1MzQsMTAgQEAgc3RhdGljIHZvaWQgaWNsX2N0eF93b3JrYXJvdW5kc19pbml0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAl3YV9tYXNrZWRfZW4od2FsLCBJQ0xf SERDX01PREUsIEhEQ19GT1JDRV9OT05fQ09IRVJFTlQpOwogCiAJLyogV2FFbmFibGVGbG9hdEJs ZW5kT3B0aW1pemF0aW9uOmljbCAqLwotCXdhX3dyaXRlX2Nscl9zZXQod2FsLAotCQkJIEdFTjEw X0NBQ0hFX01PREVfU1MsCi0JCQkgMCwgLyogd3JpdGUtb25seSwgc28gc2tpcCB2YWxpZGF0aW9u ICovCi0JCQkgX01BU0tFRF9CSVRfRU5BQkxFKEZMT0FUX0JMRU5EX09QVElNSVpBVElPTl9FTkFC TEUpKTsKKwl3YV9hZGQod2FsLCBHRU4xMF9DQUNIRV9NT0RFX1NTLCAwLAorCSAgICAgICBfTUFT S0VEX0JJVF9FTkFCTEUoRkxPQVRfQkxFTkRfT1BUSU1JWkFUSU9OX0VOQUJMRSksCisJICAgICAg IDAgLyogd3JpdGUtb25seSwgc28gc2tpcCB2YWxpZGF0aW9uICovLAorCSAgICAgICB0cnVlKTsK IAogCS8qIFdhRGlzYWJsZUdQR1BVTWlkVGhyZWFkUHJlZW1wdGlvbjppY2wgKi8KIAl3YV9tYXNr ZWRfZmllbGRfc2V0KHdhbCwgR0VOOF9DU19DSElDS0VOMSwKQEAgLTU4MSw3ICs1ODIsNyBAQCBz dGF0aWMgdm9pZCBnZW4xMl9jdHhfZ3RfdHVuaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAogCSAgICAgICBGRl9NT0RFMiwKIAkgICAgICAgRkZfTU9ERTJfVERTX1RJTUVS X01BU0ssCiAJICAgICAgIEZGX01PREUyX1REU19USU1FUl8xMjgsCi0JICAgICAgIDApOworCSAg ICAgICAwLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjEyX2N0eF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKQEAgLTYxOSw3ICs2MjAsNyBAQCBz dGF0aWMgdm9pZCBnZW4xMl9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCiAJICAgICAgIEZGX01PREUyLAogCSAgICAgICBGRl9NT0RFMl9HU19USU1F Ul9NQVNLLAogCSAgICAgICBGRl9NT0RFMl9HU19USU1FUl8yMjQsCi0JICAgICAgIDApOworCSAg ICAgICAwLCBmYWxzZSk7CiAKIAkvKgogCSAqIFdhXzE0MDEyMTMxMjI3OmRnMQpAQCAtNzk1LDcg Kzc5Niw3IEBAIGhzd19ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJd2FfYWRkKHdhbCwKIAkgICAgICAg SFNXX1JPV19DSElDS0VOMywgMCwKIAkgICAgICAgX01BU0tFRF9CSVRfRU5BQkxFKEhTV19ST1df Q0hJQ0tFTjNfTDNfR0xPQkFMX0FUT01JQ1NfRElTQUJMRSksCi0JCTAgLyogWFhYIGRvZXMgdGhp cyByZWcgZXhpc3Q/ICovKTsKKwkgICAgICAgMCAvKiBYWFggZG9lcyB0aGlzIHJlZyBleGlzdD8g Ki8sIHRydWUpOwogCiAJLyogV2FWU1JlZkNvdW50RnVsbGZvcmNlTWlzc0Rpc2FibGU6aHN3ICov CiAJd2Ffd3JpdGVfY2xyKHdhbCwgR0VON19GRl9USFJFQURfTU9ERSwgR0VON19GRl9WU19SRUZf Q05UX0ZGTUUpOwpAQCAtMTg0MywxMCArMTg0NCwxMCBAQCByY3NfZW5naW5lX3dhX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJ CSAqIGRpc2FibGUgYml0LCB3aGljaCB3ZSBkb24ndCB0b3VjaCBoZXJlLCBidXQgaXQncyBnb29k CiAJCSAqIHRvIGtlZXAgaW4gbWluZCAoc2VlIDNEU1RBVEVfUFMgYW5kIDNEU1RBVEVfV00pLgog CQkgKi8KLQkJd2FfYWRkKHdhbCwgR0VON19HVF9NT0RFLCAwLAotCQkgICAgICAgX01BU0tFRF9G SUVMRChHRU42X1dJWl9IQVNISU5HX01BU0ssCi0JCQkJICAgICBHRU42X1dJWl9IQVNISU5HXzE2 eDQpLAotCQkgICAgICAgR0VONl9XSVpfSEFTSElOR18xNng0KTsKKwkJd2FfbWFza2VkX2ZpZWxk X3NldCh3YWwsCisJCQkJICAgIEdFTjdfR1RfTU9ERSwKKwkJCQkgICAgR0VONl9XSVpfSEFTSElO R19NQVNLLAorCQkJCSAgICBHRU42X1dJWl9IQVNISU5HXzE2eDQpOwogCX0KIAogCWlmIChJU19H UkFQSElDU19WRVIoaTkxNSwgNiwgNykpCkBAIC0xODk2LDEwICsxODk3LDEwIEBAIHJjc19lbmdp bmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCkKIAkJICogZGlzYWJsZSBiaXQsIHdoaWNoIHdlIGRvbid0IHRvdWNoIGhlcmUs IGJ1dCBpdCdzIGdvb2QKIAkJICogdG8ga2VlcCBpbiBtaW5kIChzZWUgM0RTVEFURV9QUyBhbmQg M0RTVEFURV9XTSkuCiAJCSAqLwotCQl3YV9hZGQod2FsLAotCQkgICAgICAgR0VONl9HVF9NT0RF LCAwLAotCQkgICAgICAgX01BU0tFRF9GSUVMRChHRU42X1dJWl9IQVNISU5HX01BU0ssIEdFTjZf V0laX0hBU0hJTkdfMTZ4NCksCi0JCSAgICAgICBHRU42X1dJWl9IQVNISU5HXzE2eDQpOworCQl3 YV9tYXNrZWRfZmllbGRfc2V0KHdhbCwKKwkJCQkgICAgR0VONl9HVF9NT0RFLAorCQkJCSAgICBH RU42X1dJWl9IQVNISU5HX01BU0ssCisJCQkJICAgIEdFTjZfV0laX0hBU0hJTkdfMTZ4NCk7CiAK IAkJLyogV2FEaXNhYmxlX1JlbmRlckNhY2hlX09wZXJhdGlvbmFsRmx1c2g6c25iICovCiAJCXdh X21hc2tlZF9kaXMod2FsLCBDQUNIRV9NT0RFXzAsIFJDX09QX0ZMVVNIX0VOQUJMRSk7CkBAIC0x OTIwLDcgKzE5MjEsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCXdhX2FkZCh3YWwsIE1JX01P REUsCiAJCSAgICAgICAwLCBfTUFTS0VEX0JJVF9FTkFCTEUoVlNfVElNRVJfRElTUEFUQ0gpLAog CQkgICAgICAgLyogWFhYIGJpdCBkb2Vzbid0IHN0aWNrIG9uIEJyb2Fkd2F0ZXIgKi8KLQkJICAg ICAgIElTX0k5NjVHKGk5MTUpID8gMCA6IFZTX1RJTUVSX0RJU1BBVENIKTsKKwkJICAgICAgIElT X0k5NjVHKGk5MTUpID8gMCA6IFZTX1RJTUVSX0RJU1BBVENILCB0cnVlKTsKIAogCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPT0gNCkKIAkJLyoKQEAgLTE5MzUsNyArMTkzNiw4IEBAIHJjc19lbmdp bmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCkKIAkJICovCiAJCXdhX2FkZCh3YWwsIEVDT1NLUEQsCiAJCSAgICAgICAwLCBf TUFTS0VEX0JJVF9FTkFCTEUoRUNPX0NPTlNUQU5UX0JVRkZFUl9TUl9ESVNBQkxFKSwKLQkJICAg ICAgIDAgLyogWFhYIGJpdCBkb2Vzbid0IHN0aWNrIG9uIEJyb2Fkd2F0ZXIgKi8pOworCQkgICAg ICAgMCAvKiBYWFggYml0IGRvZXNuJ3Qgc3RpY2sgb24gQnJvYWR3YXRlciAqLywKKwkJICAgICAg IHRydWUpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHNfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3dvcmthcm91bmRzX3R5cGVzLmgKaW5kZXggYzIxNDExMWVhMzY3Li4xZTg3MzY4MTc5 NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRz X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHNf dHlwZXMuaApAQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgaTkxNV93YSB7CiAJdTMyCQljbHI7CiAJ dTMyCQlzZXQ7CiAJdTMyCQlyZWFkOworCWJvb2wJCW1hc2tlZF9yZWc7CiB9OwogCiBzdHJ1Y3Qg aTkxNV93YV9saXN0IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tf ZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCmluZGV4IDY4 OTcwMzk4ZTRlZi4uMmMxYWYwMzAzMTBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9tb2NrX2VuZ2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5n aW5lLmMKQEAgLTIzNSw2ICsyMzUsMzQgQEAgc3RhdGljIHZvaWQgbW9ja19zdWJtaXRfcmVxdWVz dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmVuZ2luZS0+aHdfbG9jaywgZmxhZ3MpOwogfQogCitzdGF0aWMgdm9pZCBtb2NrX2FkZF90b19l bmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm cnEtPmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwlsaXN0X21vdmVfdGFpbCgmcnEtPnNj aGVkLmxpbmssICZycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJlcXVlc3RzKTsKK30KKworc3Rh dGljIHZvaWQgbW9ja19yZW1vdmVfZnJvbV9lbmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp Cit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCAqbG9ja2VkOworCisJLyoKKwkg KiBWaXJ0dWFsIGVuZ2luZXMgY29tcGxpY2F0ZSBhY3F1aXJpbmcgdGhlIGVuZ2luZSB0aW1lbGlu ZSBsb2NrLAorCSAqIGFzIHRoZWlyIHJxLT5lbmdpbmUgcG9pbnRlciBpcyBub3Qgc3RhYmxlIHVu dGlsIHVuZGVyIHRoYXQKKwkgKiBlbmdpbmUgbG9jay4gVGhlIHNpbXBsZSBwbG95IHdlIHVzZSBp cyB0byB0YWtlIHRoZSBsb2NrIHRoZW4KKwkgKiBjaGVjayB0aGF0IHRoZSBycSBzdGlsbCBiZWxv bmdzIHRvIHRoZSBuZXdseSBsb2NrZWQgZW5naW5lLgorCSAqLworCisJbG9ja2VkID0gUkVBRF9P TkNFKHJxLT5lbmdpbmUpOworCXNwaW5fbG9ja19pcnEoJmxvY2tlZC0+c2NoZWRfZW5naW5lLT5s b2NrKTsKKwl3aGlsZSAodW5saWtlbHkobG9ja2VkICE9IChlbmdpbmUgPSBSRUFEX09OQ0UocnEt PmVuZ2luZSkpKSkgeworCQlzcGluX3VubG9jaygmbG9ja2VkLT5zY2hlZF9lbmdpbmUtPmxvY2sp OworCQlzcGluX2xvY2soJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwkJbG9ja2VkID0g ZW5naW5lOworCX0KKwlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7CisJc3Bpbl91bmxv Y2tfaXJxKCZsb2NrZWQtPnNjaGVkX2VuZ2luZS0+bG9jayk7Cit9CisKIHN0YXRpYyB2b2lkIG1v Y2tfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiB9CkBA IC0yODQsNyArMzEyLDcgQEAgc3RhdGljIHZvaWQgbW9ja19lbmdpbmVfcmVsZWFzZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJR0VNX0JVR19PTih0aW1lcl9wZW5kaW5nKCZtb2Nr LT5od19kZWxheSkpOwogCiAJaTkxNV9zY2hlZF9lbmdpbmVfcHV0KGVuZ2luZS0+c2NoZWRfZW5n aW5lKTsKLQlpbnRlbF9icmVhZGNydW1ic19mcmVlKGVuZ2luZS0+YnJlYWRjcnVtYnMpOworCWlu dGVsX2JyZWFkY3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1bWJzKTsKIAogCWludGVsX2NvbnRl eHRfdW5waW4oZW5naW5lLT5rZXJuZWxfY29udGV4dCk7CiAJaW50ZWxfY29udGV4dF9wdXQoZW5n aW5lLT5rZXJuZWxfY29udGV4dCk7CkBAIC0zMjEsNiArMzQ5LDggQEAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJZW5n aW5lLT5iYXNlLmVtaXRfZmx1c2ggPSBtb2NrX2VtaXRfZmx1c2g7CiAJZW5naW5lLT5iYXNlLmVt aXRfZmluaV9icmVhZGNydW1iID0gbW9ja19lbWl0X2JyZWFkY3J1bWI7CiAJZW5naW5lLT5iYXNl LnN1Ym1pdF9yZXF1ZXN0ID0gbW9ja19zdWJtaXRfcmVxdWVzdDsKKwllbmdpbmUtPmJhc2UuYWRk X2FjdGl2ZV9yZXF1ZXN0ID0gbW9ja19hZGRfdG9fZW5naW5lOworCWVuZ2luZS0+YmFzZS5yZW1v dmVfYWN0aXZlX3JlcXVlc3QgPSBtb2NrX3JlbW92ZV9mcm9tX2VuZ2luZTsKIAogCWVuZ2luZS0+ YmFzZS5yZXNldC5wcmVwYXJlID0gbW9ja19yZXNldF9wcmVwYXJlOwogCWVuZ2luZS0+YmFzZS5y ZXNldC5yZXdpbmQgPSBtb2NrX3Jlc2V0X3Jld2luZDsKQEAgLTM3MCw3ICs0MDAsNyBAQCBpbnQg bW9ja19lbmdpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJu IDA7CiAKIGVycl9icmVhZGNydW1iczoKLQlpbnRlbF9icmVhZGNydW1ic19mcmVlKGVuZ2luZS0+ YnJlYWRjcnVtYnMpOworCWludGVsX2JyZWFkY3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1bWJz KTsKIGVycl9zY2hlZHVsZToKIAlpOTE1X3NjaGVkX2VuZ2luZV9wdXQoZW5naW5lLT5zY2hlZF9l bmdpbmUpOwogCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfY29udGV4dC5jCmluZGV4IDI2Njg1YjkyNzE2OS4uZmE3Yjk5YTY3MWRkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jCkBAIC0yMDksNyArMjA5LDEzIEBA IHN0YXRpYyBpbnQgX19saXZlX2FjdGl2ZV9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkgKiBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHRoZSBjb250ZXh0IGlzIGtl cHQgYWxpdmUgdW50aWwgYQogCSAqIHN1YnNlcXVlbnQgaWRsZS1iYXJyaWVyIChlbWl0dGVkIHdo ZW4gdGhlIGVuZ2luZSB3YWtlcmVmIGhpdHMgMAogCSAqIHdpdGggbm8gbW9yZSBvdXRzdGFuZGlu ZyByZXF1ZXN0cykuCisJICoKKwkgKiBJbiBHdUMgc3VibWlzc2lvbiBtb2RlIHdlIGRvbid0IHVz ZSBpZGxlIGJhcnJpZXJzIGFuZCB3ZSBpbnN0ZWFkCisJICogZ2V0IGEgbWVzc2FnZSBmcm9tIHRo ZSBHdUMgdG8gc2lnbmFsIHRoYXQgaXQgaXMgc2FmZSB0byB1bnBpbiB0aGUKKwkgKiBjb250ZXh0 IGZyb20gbWVtb3J5LgogCSAqLworCWlmIChpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKSkK KwkJcmV0dXJuIDA7CiAKIAlpZiAoaW50ZWxfZW5naW5lX3BtX2lzX2F3YWtlKGVuZ2luZSkpIHsK IAkJcHJfZXJyKCIlcyBpcyBhd2FrZSBiZWZvcmUgc3RhcnRpbmcgJXMhXG4iLApAQCAtMzU3LDcg KzM2MywxMSBAQCBzdGF0aWMgaW50IF9fbGl2ZV9yZW1vdGVfY29udGV4dChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJICogb24gdGhlIGNvbnRleHQgaW1hZ2UgcmVtb3RlbHkgKGlu dGVsX2NvbnRleHRfcHJlcGFyZV9yZW1vdGVfcmVxdWVzdCksCiAJICogd2hpY2ggaW5zZXJ0cyBm b3JlaWduIGZlbmNlcyBpbnRvIGludGVsX2NvbnRleHQuYWN0aXZlLCBkb2VzIG5vdAogCSAqIGNs b2JiZXIgdGhlIGlkbGUtYmFycmllci4KKwkgKgorCSAqIEluIEd1QyBzdWJtaXNzaW9uIG1vZGUg d2UgZG9uJ3QgdXNlIGlkbGUgYmFycmllcnMuCiAJICovCisJaWYgKGludGVsX2VuZ2luZV91c2Vz X2d1YyhlbmdpbmUpKQorCQlyZXR1cm4gMDsKIAogCWlmIChpbnRlbF9lbmdpbmVfcG1faXNfYXdh a2UoZW5naW5lKSkgewogCQlwcl9lcnIoIiVzIGlzIGF3YWtlIGJlZm9yZSBzdGFydGluZyAlcyFc biIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVf aGVhcnRiZWF0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfaGVh cnRiZWF0LmMKaW5kZXggNDg5NmU0Y2NhZDUwLi4zMTdlZWJmMDg2YzMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmMKQEAgLTQw NSwzICs0MDUsMjUgQEAgdm9pZCBzdF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxf bXMgPQogCQllbmdpbmUtPmRlZmF1bHRzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tczsKIH0KKwordm9p ZCBzdF9lbmdpbmVfaGVhcnRiZWF0X2Rpc2FibGVfbm9fcG0oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCWVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFsX21zID0gMDsK KworCS8qCisJICogUGFyayB0aGUgaGVhcnRiZWF0IGJ1dCB3aXRob3V0IGhvbGRpbmcgdGhlIFBN IGxvY2sgYXMgdGhhdAorCSAqIG1ha2VzIHRoZSBlbmdpbmVzIGFwcGVhciBub3QtaWRsZS4gTm90 ZSB0aGF0IGlmL3doZW4gdW5wYXJrCisJICogaXMgY2FsbGVkIGR1ZSB0byB0aGUgUE0gbG9jayBi ZWluZyBhY3F1aXJlZCBsYXRlciB0aGUKKwkgKiBoZWFydGJlYXQgc3RpbGwgd29uJ3QgYmUgZW5h YmxlZCBiZWNhdXNlIG9mIHRoZSBhYm92ZSA9IDAuCisJICovCisJaWYgKGludGVsX2VuZ2luZV9w bV9nZXRfaWZfYXdha2UoZW5naW5lKSkgeworCQlpbnRlbF9lbmdpbmVfcGFya19oZWFydGJlYXQo ZW5naW5lKTsKKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOworCX0KK30KKwordm9pZCBz dF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJsZV9ub19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCit7CisJZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMgPQorCQllbmdp bmUtPmRlZmF1bHRzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tczsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuaAppbmRleCBjZDI3MTEz ZDU0MDAuLjgxZGEyY2Q4ZTQwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuaApAQCAtOSw2ICs5LDggQEAKIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3M7CiAKIHZvaWQgc3RfZW5naW5lX2hlYXJ0YmVhdF9kaXNhYmxlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIHN0X2VuZ2luZV9oZWFydGJlYXRfZGlzYWJs ZV9ub19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogdm9pZCBzdF9lbmdpbmVf aGVhcnRiZWF0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBz dF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJsZV9ub19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwogCiAjZW5kaWYgLyogU0VMRlRFU1RfRU5HSU5FX0hFQVJUQkVBVF9IICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9leGVjbGlzdHMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCmluZGV4IDczZGRjNmUx NDczMC4uNTljZjhhZmM2ZDZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9leGVjbGlzdHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9leGVjbGlzdHMuYwpAQCAtMzcyNyw3ICszNzI3LDcgQEAgc3RhdGljIGludCBub3BfdmlydHVh bF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwKIAlHRU1fQlVHX09OKCFuY3R4IHx8IG5jdHgg PiBBUlJBWV9TSVpFKHZlKSk7CiAKIAlmb3IgKG4gPSAwOyBuIDwgbmN0eDsgbisrKSB7Ci0JCXZl W25dID0gaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGluZyk7 CisJCXZlW25dID0gaW50ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGlu Zyk7CiAJCWlmIChJU19FUlIodmVbbl0pKSB7CiAJCQllcnIgPSBQVFJfRVJSKHZlW25dKTsKIAkJ CW5jdHggPSBuOwpAQCAtMzkyMyw3ICszOTIzLDcgQEAgc3RhdGljIGludCBtYXNrX3ZpcnR1YWxf ZW5naW5lKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJICogcmVzdHJpY3QgaXQgdG8gb3VyIGRlc2ly ZWQgZW5naW5lIHdpdGhpbiB0aGUgdmlydHVhbCBlbmdpbmUuCiAJICovCiAKLQl2ZSA9IGludGVs X2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChzaWJsaW5ncywgbnNpYmxpbmcpOworCXZlID0gaW50 ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGluZyk7CiAJaWYgKElTX0VS Uih2ZSkpIHsKIAkJZXJyID0gUFRSX0VSUih2ZSk7CiAJCWdvdG8gb3V0X2Nsb3NlOwpAQCAtNDA1 NCw3ICs0MDU0LDcgQEAgc3RhdGljIGludCBzbGljZWluX3ZpcnR1YWxfZW5naW5lKHN0cnVjdCBp bnRlbF9ndCAqZ3QsCiAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCX0KIAotCWNlID0gaW50ZWxf ZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGluZyk7CisJY2UgPSBpbnRl bF9lbmdpbmVfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJsaW5nKTsKIAlpZiAoSVNfRVJS KGNlKSkgewogCQllcnIgPSBQVFJfRVJSKGNlKTsKIAkJZ290byBvdXQ7CkBAIC00MTA2LDcgKzQx MDYsNyBAQCBzdGF0aWMgaW50IHNsaWNlb3V0X3ZpcnR1YWxfZW5naW5lKHN0cnVjdCBpbnRlbF9n dCAqZ3QsCiAKIAkvKiBYWFggV2UgZG8gbm90IGhhbmRsZSBvdmVyc3Vic2NyaXB0aW9uIGFuZCBm YWlybmVzcyB3aXRoIG5vcm1hbCBycSAqLwogCWZvciAobiA9IDA7IG4gPCBuc2libGluZzsgbisr KSB7Ci0JCWNlID0gaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2li bGluZyk7CisJCWNlID0gaW50ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2li bGluZyk7CiAJCWlmIChJU19FUlIoY2UpKSB7CiAJCQllcnIgPSBQVFJfRVJSKGNlKTsKIAkJCWdv dG8gb3V0OwpAQCAtNDIwOCw3ICs0MjA4LDcgQEAgc3RhdGljIGludCBwcmVzZXJ2ZWRfdmlydHVh bF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwKIAlpZiAoZXJyKQogCQlnb3RvIG91dF9zY3Jh dGNoOwogCi0JdmUgPSBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5z aWJsaW5nKTsKKwl2ZSA9IGludGVsX2VuZ2luZV9jcmVhdGVfdmlydHVhbChzaWJsaW5ncywgbnNp YmxpbmcpOwogCWlmIChJU19FUlIodmUpKSB7CiAJCWVyciA9IFBUUl9FUlIodmUpOwogCQlnb3Rv IG91dF9zY3JhdGNoOwpAQCAtNDM0OCw3ICs0MzQ4LDcgQEAgc3RhdGljIGludCByZXNldF92aXJ0 dWFsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZz cGluLCBndCkpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JdmUgPSBpbnRlbF9leGVjbGlzdHNfY3Jl YXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJsaW5nKTsKKwl2ZSA9IGludGVsX2VuZ2luZV9jcmVh dGVfdmlydHVhbChzaWJsaW5ncywgbnNpYmxpbmcpOwogCWlmIChJU19FUlIodmUpKSB7CiAJCWVy ciA9IFBUUl9FUlIodmUpOwogCQlnb3RvIG91dF9zcGluOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwppbmRleCA3YWVhMTBhYTFmYjQuLmE5M2E5YjBkMjU4 ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNr LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMKQEAg LTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuaCIKICNp bmNsdWRlICJzZWxmdGVzdHMvaWd0X3Jlc2V0LmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9h dG9taWMuaCIKKyNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X3NwaW5uZXIuaCIKKyNpbmNsdWRlICJz ZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaCIKIAogI2luY2x1ZGUgInNlbGZ0ZXN0 cy9tb2NrX2RybS5oIgogCkBAIC0zNzgsNiArMzgwLDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRf bm9wKHZvaWQgKmFyZykKIAkJCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKIAkJ CWlmIChJU19FUlIoY2UpKSB7CiAJCQkJZXJyID0gUFRSX0VSUihjZSk7CisJCQkJcHJfZXJyKCJb JXNdIENyZWF0ZSBjb250ZXh0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJ CQkJYnJlYWs7CiAJCQl9CiAKQEAgLTM4Nyw2ICszOTAsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNl dF9ub3Aodm9pZCAqYXJnKQogCQkJCXJxID0gaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChj ZSk7CiAJCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQkJZXJyID0gUFRSX0VSUihycSk7CisJCQkJ CXByX2VycigiWyVzXSBDcmVhdGUgcmVxdWVzdCBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1l LCBlcnIpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTQwMSwyNCArNDA1LDMxIEBAIHN0YXRp YyBpbnQgaWd0X3Jlc2V0X25vcCh2b2lkICphcmcpCiAJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2Nr KGd0KTsKIAogCQlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0KSkgeworCQkJcHJfZXJyKCJbJXNd IEdUIGlzIHdlZGdlZCFcbiIsIGVuZ2luZS0+bmFtZSk7CiAJCQllcnIgPSAtRUlPOwogCQkJYnJl YWs7CiAJCX0KIAogCQlpZiAoaTkxNV9yZXNldF9jb3VudChnbG9iYWwpICE9IHJlc2V0X2NvdW50 ICsgKytjb3VudCkgewotCQkJcHJfZXJyKCJGdWxsIEdQVSByZXNldCBub3QgcmVjb3JkZWQhXG4i KTsKKwkJCXByX2VycigiWyVzXSBSZXNldCBub3QgcmVjb3JkZWQ6ICVkIHZzICVkICsgJWQhXG4i LAorCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgaTkxNV9yZXNldF9jb3VudChnbG9iYWwpLCByZXNl dF9jb3VudCwgY291bnQpOwogCQkJZXJyID0gLUVJTlZBTDsKIAkJCWJyZWFrOwogCQl9CiAKIAkJ ZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUpOwotCQlpZiAoZXJyKQorCQlpZiAoZXJyKSB7 CisJCQlwcl9lcnIoIlslc10gRmx1c2ggZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJy KTsKIAkJCWJyZWFrOworCQl9CiAJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgZW5kX3Rp bWUpKTsKIAlwcl9pbmZvKCIlczogJWQgcmVzZXRzXG4iLCBfX2Z1bmNfXywgY291bnQpOwogCi0J aWYgKGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KSkKKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5 MTUpKSB7CisJCXByX2VycigiUG9zdCBmbHVzaCBmYWlsZWQ6ICVkIVxuIiwgZXJyKTsKIAkJZXJy ID0gLUVJTzsKKwl9CisKIAlyZXR1cm4gZXJyOwogfQogCkBAIC00NDAsOSArNDUxLDE5IEBAIHN0 YXRpYyBpbnQgaWd0X3Jlc2V0X25vcF9lbmdpbmUodm9pZCAqYXJnKQogCQlJR1RfVElNRU9VVChl bmRfdGltZSk7CiAJCWludCBlcnI7CiAKKwkJaWYgKGludGVsX2VuZ2luZV91c2VzX2d1Yyhlbmdp bmUpKSB7CisJCQkvKiBFbmdpbmUgbGV2ZWwgcmVzZXRzIGFyZSB0cmlnZ2VyZWQgYnkgR3VDIHdo ZW4gYSBoYW5nCisJCQkgKiBpcyBkZXRlY3RlZC4gVGhleSBjYW4ndCBiZSB0cmlnZ2VyZWQgYnkg dGhlIEtNRCBhbnkKKwkJCSAqIG1vcmUuIFRodXMgYSBub3AgYmF0Y2ggY2Fubm90IGJlIHVzZWQg YXMgYSByZXNldCB0ZXN0CisJCQkgKi8KKwkJCWNvbnRpbnVlOworCQl9CisKIAkJY2UgPSBpbnRl bF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwotCQlpZiAoSVNfRVJSKGNlKSkKKwkJaWYgKElTX0VS UihjZSkpIHsKKwkJCXByX2VycigiWyVzXSBDcmVhdGUgY29udGV4dCBmYWlsZWQ6ICVkIVxuIiwg ZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJcmV0dXJuIFBUUl9FUlIoY2UpOworCQl9CiAKIAkJcmVz ZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCk7CiAJCXJlc2V0X2VuZ2luZV9jb3Vu dCA9IGk5MTVfcmVzZXRfZW5naW5lX2NvdW50KGdsb2JhbCwgZW5naW5lKTsKQEAgLTU0OSw5ICs1 NzAsMTUgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfZmFpbF9lbmdpbmUodm9pZCAqYXJnKQogCQlJ R1RfVElNRU9VVChlbmRfdGltZSk7CiAJCWludCBlcnI7CiAKKwkJLyogQ2FuJ3QgbWFudWFsbHkg YnJlYWsgdGhlIHJlc2V0IGlmIGk5MTUgZG9lc24ndCBwZXJmb3JtIGl0ICovCisJCWlmIChpbnRl bF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKSkKKwkJCWNvbnRpbnVlOworCiAJCWNlID0gaW50ZWxf Y29udGV4dF9jcmVhdGUoZW5naW5lKTsKLQkJaWYgKElTX0VSUihjZSkpCisJCWlmIChJU19FUlIo Y2UpKSB7CisJCQlwcl9lcnIoIlslc10gQ3JlYXRlIGNvbnRleHQgZmFpbGVkOiAlZCFcbiIsIGVu Z2luZS0+bmFtZSwgZXJyKTsKIAkJCXJldHVybiBQVFJfRVJSKGNlKTsKKwkJfQogCiAJCXN0X2Vu Z2luZV9oZWFydGJlYXRfZGlzYWJsZShlbmdpbmUpOwogCQlzZXRfYml0KEk5MTVfUkVTRVRfRU5H SU5FICsgaWQsICZndC0+cmVzZXQuZmxhZ3MpOwpAQCAtNjg2LDggKzcxMywxMiBAQCBzdGF0aWMg aW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGFjdGl2ZSkK IAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKIAkJdW5zaWduZWQgaW50IHJlc2V0 X2NvdW50LCByZXNldF9lbmdpbmVfY291bnQ7CiAJCXVuc2lnbmVkIGxvbmcgY291bnQ7CisJCWJv b2wgdXNpbmdfZ3VjID0gaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSk7CiAJCUlHVF9USU1F T1VUKGVuZF90aW1lKTsKIAorCQlpZiAodXNpbmdfZ3VjICYmICFhY3RpdmUpCisJCQljb250aW51 ZTsKKwogCQlpZiAoYWN0aXZlICYmICFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2lu ZSkpCiAJCQljb250aW51ZTsKIApAQCAtNzA1LDEzICs3MzYsMjMgQEAgc3RhdGljIGludCBfX2ln dF9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwgYm9vbCBhY3RpdmUpCiAJCXNldF9i aXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmd0LT5yZXNldC5mbGFncyk7CiAJCWNvdW50ID0g MDsKIAkJZG8gewotCQkJaWYgKGFjdGl2ZSkgewotCQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx OworCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOworCQkJc3RydWN0IGludGVsX3Nl bGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKKwkJCWludCBlcnIyOworCisJCQllcnIgPSBpbnRl bF9zZWxmdGVzdF9tb2RpZnlfcG9saWN5KGVuZ2luZSwgJnNhdmVkLAorCQkJCQkJCSAgIFNFTEZU RVNUX1NDSEVEVUxFUl9NT0RJRllfRkFTVF9SRVNFVCk7CisJCQlpZiAoZXJyKSB7CisJCQkJcHJf ZXJyKCJbJXNdIE1vZGlmeSBwb2xpY3kgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJy KTsKKwkJCQlicmVhazsKKwkJCX0KIAorCQkJaWYgKGFjdGl2ZSkgewogCQkJCXJxID0gaGFuZ19j cmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsKIAkJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCQll cnIgPSBQVFJfRVJSKHJxKTsKLQkJCQkJYnJlYWs7CisJCQkJCXByX2VycigiWyVzXSBDcmVhdGUg aGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CisJCQkJCWdv dG8gcmVzdG9yZTsKIAkJCQl9CiAKIAkJCQlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKQEAgLTcyNywz NCArNzY4LDU4IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9n dCAqZ3QsIGJvb2wgYWN0aXZlKQogCiAJCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCQkJCQll cnIgPSAtRUlPOwotCQkJCQlicmVhazsKKwkJCQkJZ290byByZXN0b3JlOwogCQkJCX0KKwkJCX0K IAotCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCQkJaWYgKCF1c2luZ19ndWMpIHsKKwkJCQll cnIgPSBpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBOVUxMKTsKKwkJCQlpZiAoZXJyKSB7CisJ CQkJCXByX2VycigiaW50ZWxfZW5naW5lX3Jlc2V0KCVzKSBmYWlsZWQsIGVycjolZFxuIiwKKwkJ CQkJICAgICAgIGVuZ2luZS0+bmFtZSwgZXJyKTsKKwkJCQkJZ290byBza2lwOworCQkJCX0KIAkJ CX0KIAotCQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgTlVMTCk7Ci0JCQlpZiAo ZXJyKSB7Ci0JCQkJcHJfZXJyKCJpbnRlbF9lbmdpbmVfcmVzZXQoJXMpIGZhaWxlZCwgZXJyOiVk XG4iLAotCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIGVycik7Ci0JCQkJYnJlYWs7CisJCQlpZiAo cnEpIHsKKwkJCQkvKiBFbnN1cmUgdGhlIHJlc2V0IGhhcHBlbnMgYW5kIGtpbGxzIHRoZSBlbmdp bmUgKi8KKwkJCQllcnIgPSBpbnRlbF9zZWxmdGVzdF93YWl0X2Zvcl9ycShycSk7CisJCQkJaWYg KGVycikKKwkJCQkJcHJfZXJyKCJbJXNdIFdhaXQgZm9yIHJlcXVlc3QgJWxsZDolbGxkIFsweCUw NFhdIGZhaWxlZDogJWQhXG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1lLCBycS0+ZmVuY2Uu Y29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLCBycS0+Y29udGV4dC0+Z3VjX2lkLCBlcnIpOwogCQkJ fQogCitza2lwOgorCQkJaWYgKHJxKQorCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCiAJCQlp ZiAoaTkxNV9yZXNldF9jb3VudChnbG9iYWwpICE9IHJlc2V0X2NvdW50KSB7CiAJCQkJcHJfZXJy KCJGdWxsIEdQVSByZXNldCByZWNvcmRlZCEgKGVuZ2luZSByZXNldCBleHBlY3RlZClcbiIpOwog CQkJCWVyciA9IC1FSU5WQUw7Ci0JCQkJYnJlYWs7CisJCQkJZ290byByZXN0b3JlOwogCQkJfQog Ci0JCQlpZiAoaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xvYmFsLCBlbmdpbmUpICE9Ci0JCQkg ICAgKytyZXNldF9lbmdpbmVfY291bnQpIHsKLQkJCQlwcl9lcnIoIiVzIGVuZ2luZSByZXNldCBu b3QgcmVjb3JkZWQhXG4iLAotCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwotCQkJCWVyciA9IC1F SU5WQUw7Ci0JCQkJYnJlYWs7CisJCQkvKiBHdUMgYmFzZWQgcmVzZXRzIGFyZSBub3QgbG9nZ2Vk IHBlciBlbmdpbmUgKi8KKwkJCWlmICghdXNpbmdfZ3VjKSB7CisJCQkJaWYgKGk5MTVfcmVzZXRf ZW5naW5lX2NvdW50KGdsb2JhbCwgZW5naW5lKSAhPQorCQkJCSAgICArK3Jlc2V0X2VuZ2luZV9j b3VudCkgeworCQkJCQlwcl9lcnIoIiVzIGVuZ2luZSByZXNldCBub3QgcmVjb3JkZWQhXG4iLAor CQkJCQkgICAgICAgZW5naW5lLT5uYW1lKTsKKwkJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQkJZ290 byByZXN0b3JlOworCQkJCX0KIAkJCX0KIAogCQkJY291bnQrKzsKKworcmVzdG9yZToKKwkJCWVy cjIgPSBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShlbmdpbmUsICZzYXZlZCk7CisJCQlp ZiAoZXJyMikKKwkJCQlwcl9lcnIoIlslc10gUmVzdG9yZSBwb2xpY3kgZmFpbGVkOiAlZCFcbiIs IGVuZ2luZS0+bmFtZSwgZXJyKTsKKwkJCWlmIChlcnIgPT0gMCkKKwkJCQllcnIgPSBlcnIyOwor CQkJaWYgKGVycikKKwkJCQlicmVhazsKIAkJfSB3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywg ZW5kX3RpbWUpKTsKIAkJY2xlYXJfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZndC0+cmVz ZXQuZmxhZ3MpOwogCQlzdF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJsZShlbmdpbmUpOwpAQCAtNzY1 LDEyICs4MzAsMTYgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmUoc3RydWN0IGludGVs X2d0ICpndCwgYm9vbCBhY3RpdmUpCiAJCQlicmVhazsKIAogCQllcnIgPSBpZ3RfZmx1c2hfdGVz dChndC0+aTkxNSk7Ci0JCWlmIChlcnIpCisJCWlmIChlcnIpIHsKKwkJCXByX2VycigiWyVzXSBG bHVzaCBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJYnJlYWs7CisJCX0K IAl9CiAKLQlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0KSkKKwlpZiAoaW50ZWxfZ3RfaXNfd2Vk Z2VkKGd0KSkgeworCQlwcl9lcnIoIkdUIGlzIHdlZGdlZCFcbiIpOwogCQllcnIgPSAtRUlPOwor CX0KIAogCWlmIChhY3RpdmUpCiAJCWhhbmdfZmluaSgmaCk7CkBAIC04MDcsNyArODc2LDcgQEAg c3RhdGljIGludCBhY3RpdmVfcmVxdWVzdF9wdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJ aWYgKCFycSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIDUg KiBIWikgPCAwKSB7CisJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxLCAwLCAxMCAqIEhaKSA8IDAp IHsKIAkJR0VNX1RSQUNFKCIlcyB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiBm ZW5jZSAlbGx4OiVsbGRcbiIsCiAJCQkgIHJxLT5lbmdpbmUtPm5hbWUsCiAJCQkgIHJxLT5mZW5j ZS5jb250ZXh0LApAQCAtODM3LDYgKzkwNiw3IEBAIHN0YXRpYyBpbnQgYWN0aXZlX2VuZ2luZSh2 b2lkICpkYXRhKQogCQljZVtjb3VudF0gPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwog CQlpZiAoSVNfRVJSKGNlW2NvdW50XSkpIHsKIAkJCWVyciA9IFBUUl9FUlIoY2VbY291bnRdKTsK KwkJCXByX2VycigiWyVzXSBDcmVhdGUgY29udGV4dCAjJWxkIGZhaWxlZDogJWQhXG4iLCBlbmdp bmUtPm5hbWUsIGNvdW50LCBlcnIpOwogCQkJd2hpbGUgKC0tY291bnQpCiAJCQkJaW50ZWxfY29u dGV4dF9wdXQoY2VbY291bnRdKTsKIAkJCXJldHVybiBlcnI7CkBAIC04NTIsNiArOTIyLDcgQEAg c3RhdGljIGludCBhY3RpdmVfZW5naW5lKHZvaWQgKmRhdGEpCiAJCW5ldyA9IGludGVsX2NvbnRl eHRfY3JlYXRlX3JlcXVlc3QoY2VbaWR4XSk7CiAJCWlmIChJU19FUlIobmV3KSkgewogCQkJZXJy ID0gUFRSX0VSUihuZXcpOworCQkJcHJfZXJyKCJbJXNdIENyZWF0ZSByZXF1ZXN0ICMlZCBmYWls ZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBpZHgsIGVycik7CiAJCQlicmVhazsKIAkJfQogCkBA IC04NjcsOCArOTM4LDEwIEBAIHN0YXRpYyBpbnQgYWN0aXZlX2VuZ2luZSh2b2lkICpkYXRhKQog CQl9CiAKIAkJZXJyID0gYWN0aXZlX3JlcXVlc3RfcHV0KG9sZCk7Ci0JCWlmIChlcnIpCisJCWlm IChlcnIpIHsKKwkJCXByX2VycigiWyVzXSBSZXF1ZXN0IHB1dCBmYWlsZWQ6ICVkIVxuIiwgZW5n aW5lLT5uYW1lLCBlcnIpOwogCQkJYnJlYWs7CisJCX0KIAogCQljb25kX3Jlc2NoZWQoKTsKIAl9 CkBAIC04NzYsNiArOTQ5LDkgQEAgc3RhdGljIGludCBhY3RpdmVfZW5naW5lKHZvaWQgKmRhdGEp CiAJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgQVJSQVlfU0laRShycSk7IGNvdW50KyspIHsKIAkJ aW50IGVycl9fID0gYWN0aXZlX3JlcXVlc3RfcHV0KHJxW2NvdW50XSk7CiAKKwkJaWYgKGVycikK KwkJCXByX2VycigiWyVzXSBSZXF1ZXN0IHB1dCAjJWxkIGZhaWxlZDogJWQhXG4iLCBlbmdpbmUt Pm5hbWUsIGNvdW50LCBlcnIpOworCiAJCS8qIEtlZXAgdGhlIGZpcnN0IGVycm9yICovCiAJCWlm ICghZXJyKQogCQkJZXJyID0gZXJyX187CkBAIC05MTYsMTAgKzk5MiwxMyBAQCBzdGF0aWMgaW50 IF9faWd0X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJc3RydWN0IGFjdGl2 ZV9lbmdpbmUgdGhyZWFkc1tJOTE1X05VTV9FTkdJTkVTXSA9IHt9OwogCQl1bnNpZ25lZCBsb25n IGRldmljZSA9IGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKTsKIAkJdW5zaWduZWQgbG9uZyBjb3Vu dCA9IDAsIHJlcG9ydGVkOworCQlib29sIHVzaW5nX2d1YyA9IGludGVsX2VuZ2luZV91c2VzX2d1 YyhlbmdpbmUpOwogCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CiAKLQkJaWYgKGZsYWdzICYgVEVT VF9BQ1RJVkUgJiYKLQkJICAgICFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp CisJCWlmIChmbGFncyAmIFRFU1RfQUNUSVZFKSB7CisJCQlpZiAoIWludGVsX2VuZ2luZV9jYW5f c3RvcmVfZHdvcmQoZW5naW5lKSkKKwkJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmICh1c2luZ19n dWMpCiAJCQljb250aW51ZTsKIAogCQlpZiAoIXdhaXRfZm9yX2lkbGUoZW5naW5lKSkgewpAQCAt OTQ5LDYgKzEwMjgsNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGlu dGVsX2d0ICpndCwKIAkJCQkJICAiaWd0LyVzIiwgb3RoZXItPm5hbWUpOwogCQkJaWYgKElTX0VS Uih0c2spKSB7CiAJCQkJZXJyID0gUFRSX0VSUih0c2spOworCQkJCXByX2VycigiWyVzXSBUaHJl YWQgc3Bhd24gZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJCQlnb3RvIHVu d2luZDsKIAkJCX0KIApAQCAtOTU4LDE2ICsxMDM4LDI2IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVz ZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCiAJCXlpZWxkKCk7IC8qIHN0YXJ0IGFs bCB0aHJlYWRzIGJlZm9yZSB3ZSBiZWdpbiAqLwogCi0JCXN0X2VuZ2luZV9oZWFydGJlYXRfZGlz YWJsZShlbmdpbmUpOworCQlzdF9lbmdpbmVfaGVhcnRiZWF0X2Rpc2FibGVfbm9fcG0oZW5naW5l KTsKIAkJc2V0X2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGlkLCAmZ3QtPnJlc2V0LmZsYWdzKTsK IAkJZG8gewogCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOworCQkJc3RydWN0IGlu dGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKKwkJCWludCBlcnIyOworCisJCQllcnIg PSBpbnRlbF9zZWxmdGVzdF9tb2RpZnlfcG9saWN5KGVuZ2luZSwgJnNhdmVkLAorCQkJCQkJCSAg U0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9GQVNUX1JFU0VUKTsKKwkJCWlmIChlcnIpIHsKKwkJ CQlwcl9lcnIoIlslc10gTW9kaWZ5IHBvbGljeSBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1l LCBlcnIpOworCQkJCWJyZWFrOworCQkJfQogCiAJCQlpZiAoZmxhZ3MgJiBURVNUX0FDVElWRSkg ewogCQkJCXJxID0gaGFuZ19jcmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsKIAkJCQlpZiAoSVNf RVJSKHJxKSkgewogCQkJCQllcnIgPSBQVFJfRVJSKHJxKTsKLQkJCQkJYnJlYWs7CisJCQkJCXBy X2VycigiWyVzXSBDcmVhdGUgaGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5h bWUsIGVycik7CisJCQkJCWdvdG8gcmVzdG9yZTsKIAkJCQl9CiAKIAkJCQlpOTE1X3JlcXVlc3Rf Z2V0KHJxKTsKQEAgLTk4MywxNSArMTA3MywyNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2Vu Z2luZXMoc3RydWN0IGludGVsX2d0ICpndCwKIAogCQkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsK IAkJCQkJZXJyID0gLUVJTzsKLQkJCQkJYnJlYWs7CisJCQkJCWdvdG8gcmVzdG9yZTsKIAkJCQl9 CisJCQl9IGVsc2UgeworCQkJCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKIAkJCX0KIAot CQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgTlVMTCk7Ci0JCQlpZiAoZXJyKSB7 Ci0JCQkJcHJfZXJyKCJpOTE1X3Jlc2V0X2VuZ2luZSglczolcyk6IGZhaWxlZCwgZXJyPSVkXG4i LAotCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIHRlc3RfbmFtZSwgZXJyKTsKLQkJCQlicmVhazsK KwkJCWlmICghdXNpbmdfZ3VjKSB7CisJCQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2lu ZSwgTlVMTCk7CisJCQkJaWYgKGVycikgeworCQkJCQlwcl9lcnIoImk5MTVfcmVzZXRfZW5naW5l KCVzOiVzKTogZmFpbGVkLCBlcnI9JWRcbiIsCisJCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIHRl c3RfbmFtZSwgZXJyKTsKKwkJCQkJZ290byByZXN0b3JlOworCQkJCX0KKwkJCX0KKworCQkJaWYg KHJxKSB7CisJCQkJLyogRW5zdXJlIHRoZSByZXNldCBoYXBwZW5zIGFuZCBraWxscyB0aGUgZW5n aW5lICovCisJCQkJZXJyID0gaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEocnEpOworCQkJCWlm IChlcnIpCisJCQkJCXByX2VycigiWyVzXSBXYWl0IGZvciByZXF1ZXN0ICVsbGQ6JWxsZCBbMHgl MDRYXSBmYWlsZWQ6ICVkIVxuIiwKKwkJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgcnEtPmZlbmNl LmNvbnRleHQsIHJxLT5mZW5jZS5zZXFubywgcnEtPmNvbnRleHQtPmd1Y19pZCwgZXJyKTsKIAkJ CX0KIAogCQkJY291bnQrKzsKQEAgLTk5OSwxNiArMTEwMSwxNiBAQCBzdGF0aWMgaW50IF9faWd0 X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJCWlmIChycSkgewogCQkJCWlm IChycS0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgewogCQkJCQlwcl9lcnIoImk5MTVfcmVzZXRfZW5n aW5lKCVzOiVzKToiCi0JCQkJCSAgICAgICAiIGZhaWxlZCB0byByZXNldCByZXF1ZXN0ICVsbHg6 JWxsZFxuIiwKKwkJCQkJICAgICAgICIgZmFpbGVkIHRvIHJlc2V0IHJlcXVlc3QgJWxsZDolbGxk IFsweCUwNFhdXG4iLAogCQkJCQkgICAgICAgZW5naW5lLT5uYW1lLCB0ZXN0X25hbWUsCiAJCQkJ CSAgICAgICBycS0+ZmVuY2UuY29udGV4dCwKLQkJCQkJICAgICAgIHJxLT5mZW5jZS5zZXFubyk7 CisJCQkJCSAgICAgICBycS0+ZmVuY2Uuc2Vxbm8sIHJxLT5jb250ZXh0LT5ndWNfaWQpOwogCQkJ CQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAogCQkJCQlHRU1fVFJBQ0VfRFVNUCgpOwogCQkJCQlp bnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKIAkJCQkJZXJyID0gLUVJTzsKLQkJCQkJYnJlYWs7CisJ CQkJCWdvdG8gcmVzdG9yZTsKIAkJCQl9CiAKIAkJCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEs IDAsIEhaIC8gNSkgPCAwKSB7CkBAIC0xMDI3LDEyICsxMTI5LDE1IEBAIHN0YXRpYyBpbnQgX19p Z3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJCQlHRU1fVFJBQ0VfRFVN UCgpOwogCQkJCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKIAkJCQkJZXJyID0gLUVJTzsKLQkJ CQkJYnJlYWs7CisJCQkJCWdvdG8gcmVzdG9yZTsKIAkJCQl9CiAKIAkJCQlpOTE1X3JlcXVlc3Rf cHV0KHJxKTsKIAkJCX0KIAorCQkJaWYgKCEoZmxhZ3MgJiBURVNUX0FDVElWRSkpCisJCQkJaW50 ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOworCiAJCQlpZiAoIShmbGFncyAmIFRFU1RfU0VMRikg JiYgIXdhaXRfZm9yX2lkbGUoZW5naW5lKSkgewogCQkJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0K IAkJCQkJZHJtX2luZm9fcHJpbnRlcihndC0+aTkxNS0+ZHJtLmRldik7CkBAIC0xMDQ0LDIyICsx MTQ5LDM0IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0LAogCQkJCQkJICAiJXNcbiIsIGVuZ2luZS0+bmFtZSk7CiAKIAkJCQllcnIgPSAtRUlPOwot CQkJCWJyZWFrOworCQkJCWdvdG8gcmVzdG9yZTsKIAkJCX0KKworcmVzdG9yZToKKwkJCWVycjIg PSBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShlbmdpbmUsICZzYXZlZCk7CisJCQlpZiAo ZXJyMikKKwkJCQlwcl9lcnIoIlslc10gUmVzdG9yZSBwb2xpY3kgZmFpbGVkOiAlZCFcbiIsIGVu Z2luZS0+bmFtZSwgZXJyMik7CisJCQlpZiAoZXJyID09IDApCisJCQkJZXJyID0gZXJyMjsKKwkJ CWlmIChlcnIpCisJCQkJYnJlYWs7CiAJCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIGVu ZF90aW1lKSk7CiAJCWNsZWFyX2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGlkLCAmZ3QtPnJlc2V0 LmZsYWdzKTsKLQkJc3RfZW5naW5lX2hlYXJ0YmVhdF9lbmFibGUoZW5naW5lKTsKKwkJc3RfZW5n aW5lX2hlYXJ0YmVhdF9lbmFibGVfbm9fcG0oZW5naW5lKTsKIAogCQlwcl9pbmZvKCJpOTE1X3Jl c2V0X2VuZ2luZSglczolcyk6ICVsdSByZXNldHNcbiIsCiAJCQllbmdpbmUtPm5hbWUsIHRlc3Rf bmFtZSwgY291bnQpOwogCi0JCXJlcG9ydGVkID0gaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xv YmFsLCBlbmdpbmUpOwotCQlyZXBvcnRlZCAtPSB0aHJlYWRzW2VuZ2luZS0+aWRdLnJlc2V0czsK LQkJaWYgKHJlcG9ydGVkICE9IGNvdW50KSB7Ci0JCQlwcl9lcnIoImk5MTVfcmVzZXRfZW5naW5l KCVzOiVzKTogcmVzZXQgJWx1IHRpbWVzLCBidXQgcmVwb3J0ZWQgJWx1XG4iLAotCQkJICAgICAg IGVuZ2luZS0+bmFtZSwgdGVzdF9uYW1lLCBjb3VudCwgcmVwb3J0ZWQpOwotCQkJaWYgKCFlcnIp Ci0JCQkJZXJyID0gLUVJTlZBTDsKKwkJLyogR3VDIGJhc2VkIHJlc2V0cyBhcmUgbm90IGxvZ2dl ZCBwZXIgZW5naW5lICovCisJCWlmICghdXNpbmdfZ3VjKSB7CisJCQlyZXBvcnRlZCA9IGk5MTVf cmVzZXRfZW5naW5lX2NvdW50KGdsb2JhbCwgZW5naW5lKTsKKwkJCXJlcG9ydGVkIC09IHRocmVh ZHNbZW5naW5lLT5pZF0ucmVzZXRzOworCQkJaWYgKHJlcG9ydGVkICE9IGNvdW50KSB7CisJCQkJ cHJfZXJyKCJpOTE1X3Jlc2V0X2VuZ2luZSglczolcyk6IHJlc2V0ICVsdSB0aW1lcywgYnV0IHJl cG9ydGVkICVsdVxuIiwKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLCB0ZXN0X25hbWUsIGNvdW50 LCByZXBvcnRlZCk7CisJCQkJaWYgKCFlcnIpCisJCQkJCWVyciA9IC1FSU5WQUw7CisJCQl9CiAJ CX0KIAogdW53aW5kOgpAQCAtMTA3OCwxNSArMTE5NSwxOCBAQCBzdGF0aWMgaW50IF9faWd0X3Jl c2V0X2VuZ2luZXMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJCX0KIAkJCXB1dF90YXNrX3N0cnVj dCh0aHJlYWRzW3RtcF0udGFzayk7CiAKLQkJCWlmIChvdGhlci0+dWFiaV9jbGFzcyAhPSBlbmdp bmUtPnVhYmlfY2xhc3MgJiYKLQkJCSAgICB0aHJlYWRzW3RtcF0ucmVzZXRzICE9Ci0JCQkgICAg aTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xvYmFsLCBvdGhlcikpIHsKLQkJCQlwcl9lcnIoIklu bm9jZW50IGVuZ2luZSAlcyB3YXMgcmVzZXQgKGNvdW50PSVsZClcbiIsCi0JCQkJICAgICAgIG90 aGVyLT5uYW1lLAotCQkJCSAgICAgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChnbG9iYWwsIG90 aGVyKSAtCi0JCQkJICAgICAgIHRocmVhZHNbdG1wXS5yZXNldHMpOwotCQkJCWlmICghZXJyKQot CQkJCQllcnIgPSAtRUlOVkFMOworCQkJLyogR3VDIGJhc2VkIHJlc2V0cyBhcmUgbm90IGxvZ2dl ZCBwZXIgZW5naW5lICovCisJCQlpZiAoIXVzaW5nX2d1YykgeworCQkJCWlmIChvdGhlci0+dWFi aV9jbGFzcyAhPSBlbmdpbmUtPnVhYmlfY2xhc3MgJiYKKwkJCQkgICAgdGhyZWFkc1t0bXBdLnJl c2V0cyAhPQorCQkJCSAgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChnbG9iYWwsIG90aGVyKSkg eworCQkJCQlwcl9lcnIoIklubm9jZW50IGVuZ2luZSAlcyB3YXMgcmVzZXQgKGNvdW50PSVsZClc biIsCisJCQkJCSAgICAgICBvdGhlci0+bmFtZSwKKwkJCQkJICAgICAgIGk5MTVfcmVzZXRfZW5n aW5lX2NvdW50KGdsb2JhbCwgb3RoZXIpIC0KKwkJCQkJICAgICAgIHRocmVhZHNbdG1wXS5yZXNl dHMpOworCQkJCQlpZiAoIWVycikKKwkJCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJfQogCQkJfQog CQl9CiAKQEAgLTExMDEsOCArMTIyMSwxMCBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2lu ZXMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJCWJyZWFrOwogCiAJCWVyciA9IGlndF9mbHVzaF90 ZXN0KGd0LT5pOTE1KTsKLQkJaWYgKGVycikKKwkJaWYgKGVycikgeworCQkJcHJfZXJyKCJbJXNd IEZsdXNoIGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCQlicmVhazsKKwkJ fQogCX0KIAogCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoZ3QpKQpAQCAtMTE4MCwxMiArMTMwMiwx NSBAQCBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFyZykKIAlpZ3RfZ2xvYmFsX3Jl c2V0X2xvY2soZ3QpOwogCiAJZXJyID0gaGFuZ19pbml0KCZoLCBndCk7Ci0JaWYgKGVycikKKwlp ZiAoZXJyKSB7CisJCXByX2VycigiWyVzXSBIYW5nIGluaXQgZmFpbGVkOiAlZCFcbiIsIGVuZ2lu ZS0+bmFtZSwgZXJyKTsKIAkJZ290byB1bmxvY2s7CisJfQogCiAJcnEgPSBoYW5nX2NyZWF0ZV9y ZXF1ZXN0KCZoLCBlbmdpbmUpOwogCWlmIChJU19FUlIocnEpKSB7CiAJCWVyciA9IFBUUl9FUlIo cnEpOworCQlwcl9lcnIoIlslc10gQ3JlYXRlIGhhbmcgcmVxdWVzdCBmYWlsZWQ6ICVkIVxuIiwg ZW5naW5lLT5uYW1lLCBlcnIpOwogCQlnb3RvIGZpbmk7CiAJfQogCkBAIC0xMzEwLDEyICsxNDM1 LDE1IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBpbnRlbF9ndCAq Z3QsCiAJLyogQ2hlY2sgdGhhdCB3ZSBjYW4gcmVjb3ZlciBhbiB1bmJpbmQgc3R1Y2sgb24gYSBo YW5naW5nIHJlcXVlc3QgKi8KIAogCWVyciA9IGhhbmdfaW5pdCgmaCwgZ3QpOwotCWlmIChlcnIp CisJaWYgKGVycikgeworCQlwcl9lcnIoIlslc10gSGFuZyBpbml0IGZhaWxlZDogJWQhXG4iLCBl bmdpbmUtPm5hbWUsIGVycik7CiAJCXJldHVybiBlcnI7CisJfQogCiAJb2JqID0gaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChndC0+aTkxNSwgU1pfMU0pOwogCWlmIChJU19FUlIob2Jq KSkgewogCQllcnIgPSBQVFJfRVJSKG9iaik7CisJCXByX2VycigiWyVzXSBDcmVhdGUgb2JqZWN0 IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCWdvdG8gZmluaTsKIAl9CiAK QEAgLTEzMzAsMTIgKzE0NTgsMTQgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9ldmljdF92bWEo c3RydWN0IGludGVsX2d0ICpndCwKIAlhcmcudm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2 bSwgTlVMTCk7CiAJaWYgKElTX0VSUihhcmcudm1hKSkgewogCQllcnIgPSBQVFJfRVJSKGFyZy52 bWEpOworCQlwcl9lcnIoIlslc10gVk1BIGluc3RhbmNlIGZhaWxlZDogJWQhXG4iLCBlbmdpbmUt Pm5hbWUsIGVycik7CiAJCWdvdG8gb3V0X29iajsKIAl9CiAKIAlycSA9IGhhbmdfY3JlYXRlX3Jl cXVlc3QoJmgsIGVuZ2luZSk7CiAJaWYgKElTX0VSUihycSkpIHsKIAkJZXJyID0gUFRSX0VSUihy cSk7CisJCXByX2VycigiWyVzXSBDcmVhdGUgaGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCBl bmdpbmUtPm5hbWUsIGVycik7CiAJCWdvdG8gb3V0X29iajsKIAl9CiAKQEAgLTEzNDcsNiArMTQ3 Nyw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBpbnRlbF9ndCAq Z3QsCiAJZXJyID0gaTkxNV92bWFfcGluKGFyZy52bWEsIDAsIDAsIHBpbl9mbGFncyk7CiAJaWYg KGVycikgewogCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJcHJfZXJyKCJbJXNdIFZNQSBwaW4g ZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJZ290byBvdXRfb2JqOwogCX0K IApAQCAtMTM2Myw4ICsxNDk0LDE0IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1h KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJaTkxNV92bWFfbG9jayhhcmcudm1hKTsKIAllcnIgPSBp OTE1X3JlcXVlc3RfYXdhaXRfb2JqZWN0KHJxLCBhcmcudm1hLT5vYmosCiAJCQkJCWZsYWdzICYg RVhFQ19PQkpFQ1RfV1JJVEUpOwotCWlmIChlcnIgPT0gMCkKKwlpZiAoZXJyID09IDApIHsKIAkJ ZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYXJnLnZtYSwgcnEsIGZsYWdzKTsKKwkJaWYg KGVycikKKwkJCXByX2VycigiWyVzXSBNb3ZlIHRvIGFjdGl2ZSBmYWlsZWQ6ICVkIVxuIiwgZW5n aW5lLT5uYW1lLCBlcnIpOworCX0gZWxzZSB7CisJCXByX2VycigiWyVzXSBSZXF1ZXN0IGF3YWl0 IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CisJfQorCiAJaTkxNV92bWFfdW5s b2NrKGFyZy52bWEpOwogCiAJaWYgKGZsYWdzICYgRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0UpCkBA IC0xMzkyLDYgKzE1MjksNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1 Y3QgaW50ZWxfZ3QgKmd0LAogCXRzayA9IGt0aHJlYWRfcnVuKGZuLCAmYXJnLCAiaWd0L2V2aWN0 X3ZtYSIpOwogCWlmIChJU19FUlIodHNrKSkgewogCQllcnIgPSBQVFJfRVJSKHRzayk7CisJCXBy X2VycigiWyVzXSBUaHJlYWQgc3Bhd24gZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJy KTsKIAkJdHNrID0gTlVMTDsKIAkJZ290byBvdXRfcmVzZXQ7CiAJfQpAQCAtMTUwOCwxNyArMTY0 NiwyOSBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9xdWV1ZSh2b2lkICphcmcpCiAJCWdvdG8gdW5s b2NrOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCXN0cnVjdCBpbnRl bF9zZWxmdGVzdF9zYXZlZF9wb2xpY3kgc2F2ZWQ7CiAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnBy ZXY7CiAJCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKIAkJdW5zaWduZWQgaW50IGNvdW50OworCQli b29sIHVzaW5nX2d1YyA9IGludGVsX2VuZ2luZV91c2VzX2d1YyhlbmdpbmUpOwogCiAJCWlmICgh aW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQogCQkJY29udGludWU7CiAKKwkJ aWYgKHVzaW5nX2d1YykgeworCQkJZXJyID0gaW50ZWxfc2VsZnRlc3RfbW9kaWZ5X3BvbGljeShl bmdpbmUsICZzYXZlZCwKKwkJCQkJCQkgIFNFTEZURVNUX1NDSEVEVUxFUl9NT0RJRllfTk9fSEFO R0NIRUNLKTsKKwkJCWlmIChlcnIpIHsKKwkJCQlwcl9lcnIoIlslc10gTW9kaWZ5IHBvbGljeSBm YWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOworCQkJCWdvdG8gZmluaTsKKwkJCX0K KwkJfQorCiAJCXByZXYgPSBoYW5nX2NyZWF0ZV9yZXF1ZXN0KCZoLCBlbmdpbmUpOwogCQlpZiAo SVNfRVJSKHByZXYpKSB7CiAJCQllcnIgPSBQVFJfRVJSKHByZXYpOwotCQkJZ290byBmaW5pOwor CQkJcHJfZXJyKCJbJXNdIENyZWF0ZSAncHJldicgaGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4i LCBlbmdpbmUtPm5hbWUsIGVycik7CisJCQlnb3RvIHJlc3RvcmU7CiAJCX0KIAogCQlpOTE1X3Jl cXVlc3RfZ2V0KHByZXYpOwpAQCAtMTUzMiw3ICsxNjgyLDggQEAgc3RhdGljIGludCBpZ3RfcmVz ZXRfcXVldWUodm9pZCAqYXJnKQogCQkJcnEgPSBoYW5nX2NyZWF0ZV9yZXF1ZXN0KCZoLCBlbmdp bmUpOwogCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQllcnIgPSBQVFJfRVJSKHJxKTsKLQkJCQln b3RvIGZpbmk7CisJCQkJcHJfZXJyKCJbJXNdIENyZWF0ZSBoYW5nIHJlcXVlc3QgZmFpbGVkOiAl ZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKKwkJCQlnb3RvIHJlc3RvcmU7CiAJCQl9CiAKIAkJ CWk5MTVfcmVxdWVzdF9nZXQocnEpOwpAQCAtMTU1Nyw3ICsxNzA4LDcgQEAgc3RhdGljIGludCBp Z3RfcmVzZXRfcXVldWUodm9pZCAqYXJnKQogCiAJCQkJR0VNX1RSQUNFX0RVTVAoKTsKIAkJCQlp bnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKLQkJCQlnb3RvIGZpbmk7CisJCQkJZ290byByZXN0b3Jl OwogCQkJfQogCiAJCQlpZiAoIXdhaXRfdW50aWxfcnVubmluZygmaCwgcHJldikpIHsKQEAgLTE1 NzUsNyArMTcyNiw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQgKmFyZykKIAkJ CQlpbnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKIAogCQkJCWVyciA9IC1FSU87Ci0JCQkJZ290byBm aW5pOworCQkJCWdvdG8gcmVzdG9yZTsKIAkJCX0KIAogCQkJcmVzZXRfY291bnQgPSBmYWtlX2hh bmdjaGVjayhndCwgQklUKGlkKSk7CkBAIC0xNTg2LDcgKzE3MzcsNyBAQCBzdGF0aWMgaW50IGln dF9yZXNldF9xdWV1ZSh2b2lkICphcmcpCiAJCQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7CiAJCQkJ aTkxNV9yZXF1ZXN0X3B1dChwcmV2KTsKIAkJCQllcnIgPSAtRUlOVkFMOwotCQkJCWdvdG8gZmlu aTsKKwkJCQlnb3RvIHJlc3RvcmU7CiAJCQl9CiAKIAkJCWlmIChycS0+ZmVuY2UuZXJyb3IpIHsK QEAgLTE1OTUsNyArMTc0Niw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQgKmFy ZykKIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHByZXYp OwogCQkJCWVyciA9IC1FSU5WQUw7Ci0JCQkJZ290byBmaW5pOworCQkJCWdvdG8gcmVzdG9yZTsK IAkJCX0KIAogCQkJaWYgKGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKSA9PSByZXNldF9jb3VudCkg ewpAQCAtMTYwMyw3ICsxNzU0LDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfcXVldWUodm9pZCAq YXJnKQogCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCQkJCWk5MTVfcmVxdWVzdF9wdXQocHJl dik7CiAJCQkJZXJyID0gLUVJTlZBTDsKLQkJCQlnb3RvIGZpbmk7CisJCQkJZ290byByZXN0b3Jl OwogCQkJfQogCiAJCQlpOTE1X3JlcXVlc3RfcHV0KHByZXYpOwpAQCAtMTYxOCw5ICsxNzY5LDIy IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQgKmFyZykKIAogCQlpOTE1X3JlcXVl c3RfcHV0KHByZXYpOwogCi0JCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KTsKK3Jlc3Rv cmU6CisJCWlmICh1c2luZ19ndWMpIHsKKwkJCWludCBlcnIyID0gaW50ZWxfc2VsZnRlc3RfcmVz dG9yZV9wb2xpY3koZW5naW5lLCAmc2F2ZWQpOworCQkJaWYgKGVycjIpCisJCQkJcHJfZXJyKCIl czolZD4gWyVzXSBSZXN0b3JlIHBvbGljeSBmYWlsZWQ6ICVkIVxuIiwgX19mdW5jX18sIF9fTElO RV9fLCBlbmdpbmUtPm5hbWUsIGVycjIpOworCQkJaWYgKGVyciA9PSAwKQorCQkJCWVyciA9IGVy cjI7CisJCX0KIAkJaWYgKGVycikKKwkJCWdvdG8gZmluaTsKKworCQllcnIgPSBpZ3RfZmx1c2hf dGVzdChndC0+aTkxNSk7CisJCWlmIChlcnIpIHsKKwkJCXByX2VycigiWyVzXSBGbHVzaCBmYWls ZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJYnJlYWs7CisJCX0KIAl9CiAKIGZp bmk6CkBAIC0xNjUzLDEyICsxODE3LDE1IEBAIHN0YXRpYyBpbnQgaWd0X2hhbmRsZV9lcnJvcih2 b2lkICphcmcpCiAJCXJldHVybiAwOwogCiAJZXJyID0gaGFuZ19pbml0KCZoLCBndCk7Ci0JaWYg KGVycikKKwlpZiAoZXJyKSB7CisJCXByX2VycigiWyVzXSBIYW5nIGluaXQgZmFpbGVkOiAlZCFc biIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJcmV0dXJuIGVycjsKKwl9CiAKIAlycSA9IGhhbmdf Y3JlYXRlX3JlcXVlc3QoJmgsIGVuZ2luZSk7CiAJaWYgKElTX0VSUihycSkpIHsKIAkJZXJyID0g UFRSX0VSUihycSk7CisJCXByX2VycigiWyVzXSBDcmVhdGUgaGFuZyByZXF1ZXN0IGZhaWxlZDog JWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCWdvdG8gZXJyX2Zpbmk7CiAJfQogCkBAIC0x NzQzLDEyICsxOTEwLDE1IEBAIHN0YXRpYyBpbnQgaWd0X2F0b21pY19yZXNldF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gaGFu Z19pbml0KCZoLCBlbmdpbmUtPmd0KTsKLQlpZiAoZXJyKQorCWlmIChlcnIpIHsKKwkJcHJfZXJy KCJbJXNdIEhhbmcgaW5pdCBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQly ZXR1cm4gZXJyOworCX0KIAogCXJxID0gaGFuZ19jcmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsK IAlpZiAoSVNfRVJSKHJxKSkgewogCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJcHJfZXJyKCJbJXNd IENyZWF0ZSBoYW5nIHJlcXVlc3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsK IAkJZ290byBvdXQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9tb2NzLmMK aW5kZXggODc2M2JiZWNhMGY3Li4xM2QyNWJmMmE5NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9tb2NzLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJnZW0vc2VsZnRl c3RzL21vY2tfY29udGV4dC5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfcmVzZXQuaCIKICNp bmNsdWRlICJzZWxmdGVzdHMvaWd0X3NwaW5uZXIuaCIKKyNpbmNsdWRlICJzZWxmdGVzdHMvaW50 ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaCIKIAogc3RydWN0IGxpdmVfbW9jcyB7CiAJc3RydWN0IGRy bV9pOTE1X21vY3NfdGFibGUgdGFibGU7CkBAIC0zMTgsNyArMzE5LDggQEAgc3RhdGljIGludCBs aXZlX21vY3NfY2xlYW4odm9pZCAqYXJnKQogfQogCiBzdGF0aWMgaW50IGFjdGl2ZV9lbmdpbmVf cmVzZXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAotCQkJICAgICAgIGNvbnN0IGNoYXIgKnJl YXNvbikKKwkJCSAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisJCQkgICAgICAgYm9vbCB1c2lu Z19ndWMpCiB7CiAJc3RydWN0IGlndF9zcGlubmVyIHNwaW47CiAJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnE7CkBAIC0zMzUsOSArMzM3LDEzIEBAIHN0YXRpYyBpbnQgYWN0aXZlX2VuZ2luZV9yZXNl dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJfQogCiAJZXJyID0gcmVxdWVzdF9hZGRfc3Bp bihycSwgJnNwaW4pOwotCWlmIChlcnIgPT0gMCkKKwlpZiAoZXJyID09IDAgJiYgIXVzaW5nX2d1 YykKIAkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGNlLT5lbmdpbmUsIHJlYXNvbik7CiAKKwkv KiBFbnN1cmUgdGhlIHJlc2V0IGhhcHBlbnMgYW5kIGtpbGxzIHRoZSBlbmdpbmUgKi8KKwlpZiAo ZXJyID09IDApCisJCWVyciA9IGludGVsX3NlbGZ0ZXN0X3dhaXRfZm9yX3JxKHJxKTsKKwogCWln dF9zcGlubmVyX2VuZCgmc3Bpbik7CiAJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbik7CiAKQEAgLTM0 NSwyMSArMzUxLDIzIEBAIHN0YXRpYyBpbnQgYWN0aXZlX2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCiB9CiAKIHN0YXRpYyBpbnQgX19saXZlX21vY3NfcmVzZXQoc3RydWN0 IGxpdmVfbW9jcyAqbW9jcywKLQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGJvb2wgdXNpbmdfZ3VjKQogewogCXN0cnVj dCBpbnRlbF9ndCAqZ3QgPSBjZS0+ZW5naW5lLT5ndDsKIAlpbnQgZXJyOwogCiAJaWYgKGludGVs X2hhc19yZXNldF9lbmdpbmUoZ3QpKSB7Ci0JCWVyciA9IGludGVsX2VuZ2luZV9yZXNldChjZS0+ ZW5naW5lLCAibW9jcyIpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQotCQllcnIgPSBj aGVja19tb2NzX2VuZ2luZShtb2NzLCBjZSk7Ci0JCWlmIChlcnIpCi0JCQlyZXR1cm4gZXJyOwor CQlpZiAoIXVzaW5nX2d1YykgeworCQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGNlLT5lbmdp bmUsICJtb2NzIik7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybiBlcnI7CisKKwkJCWVyciA9IGNo ZWNrX21vY3NfZW5naW5lKG1vY3MsIGNlKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0dXJuIGVycjsK KwkJfQogCi0JCWVyciA9IGFjdGl2ZV9lbmdpbmVfcmVzZXQoY2UsICJtb2NzIik7CisJCWVyciA9 IGFjdGl2ZV9lbmdpbmVfcmVzZXQoY2UsICJtb2NzIiwgdXNpbmdfZ3VjKTsKIAkJaWYgKGVycikK IAkJCXJldHVybiBlcnI7CiAKQEAgLTM5NSwxOSArNDAzLDMzIEBAIHN0YXRpYyBpbnQgbGl2ZV9t b2NzX3Jlc2V0KHZvaWQgKmFyZykKIAogCWlndF9nbG9iYWxfcmVzZXRfbG9jayhndCk7CiAJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCWJvb2wgdXNpbmdfZ3VjID0gaW50ZWxf ZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSk7CisJCXN0cnVjdCBpbnRlbF9zZWxmdGVzdF9zYXZlZF9w b2xpY3kgc2F2ZWQ7CiAJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwkJaW50IGVycjI7CisK KwkJZXJyID0gaW50ZWxfc2VsZnRlc3RfbW9kaWZ5X3BvbGljeShlbmdpbmUsICZzYXZlZCwKKwkJ CQkJCSAgIFNFTEZURVNUX1NDSEVEVUxFUl9NT0RJRllfRkFTVF9SRVNFVCk7CisJCWlmIChlcnIp CisJCQlicmVhazsKIAogCQljZSA9IG1vY3NfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKIAkJaWYg KElTX0VSUihjZSkpIHsKIAkJCWVyciA9IFBUUl9FUlIoY2UpOwotCQkJYnJlYWs7CisJCQlnb3Rv IHJlc3RvcmU7CiAJCX0KIAogCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Ci0JCWVyciA9 IF9fbGl2ZV9tb2NzX3Jlc2V0KCZtb2NzLCBjZSk7Ci0JCWludGVsX2VuZ2luZV9wbV9wdXQoZW5n aW5lKTsKIAorCQllcnIgPSBfX2xpdmVfbW9jc19yZXNldCgmbW9jcywgY2UsIHVzaW5nX2d1Yyk7 CisKKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwogCQlpbnRlbF9jb250ZXh0X3B1dChj ZSk7CisKK3Jlc3RvcmU6CisJCWVycjIgPSBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShl bmdpbmUsICZzYXZlZCk7CisJCWlmIChlcnIgPT0gMCkKKwkJCWVyciA9IGVycjI7CiAJCWlmIChl cnIpCiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf d29ya2Fyb3VuZHMuYwppbmRleCA3ZWJjNGVkYjhlY2YuLmQ4MjBmMGI0MTYzNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCkBAIC0xMiw2ICsx Miw3IEBACiAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmgiCiAjaW5jbHVkZSAi c2VsZnRlc3RzL2lndF9yZXNldC5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5o IgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oIgogI2luY2x1 ZGUgInNlbGZ0ZXN0cy9tb2NrX2RybS5oIgogCiAjaW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9pZ3Rf Z2VtX3V0aWxzLmgiCkBAIC0yNjEsMjggKzI2MiwzNCBAQCBzdGF0aWMgaW50IGRvX2VuZ2luZV9y ZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIGludGVsX2VuZ2lu ZV9yZXNldChlbmdpbmUsICJsaXZlX3dvcmthcm91bmRzIik7CiB9CiAKK3N0YXRpYyBpbnQgZG9f Z3VjX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwkvKiBDdXJyZW50 bHkgYSBuby1vcCBhcyB0aGUgcmVzZXQgaXMgaGFuZGxlZCBieSBHdUMgKi8KKwlyZXR1cm4gMDsK K30KKwogc3RhdGljIGludAogc3dpdGNoX3RvX3NjcmF0Y2hfY29udGV4dChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCi0JCQkgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbikKKwkJCSAg c3RydWN0IGlndF9zcGlubmVyICpzcGluLAorCQkJICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqcnEp CiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx OwogCWludCBlcnIgPSAwOwogCiAJY2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwog CWlmIChJU19FUlIoY2UpKQogCQlyZXR1cm4gUFRSX0VSUihjZSk7CiAKLQlycSA9IGlndF9zcGlu bmVyX2NyZWF0ZV9yZXF1ZXN0KHNwaW4sIGNlLCBNSV9OT09QKTsKKwkqcnEgPSBpZ3Rfc3Bpbm5l cl9jcmVhdGVfcmVxdWVzdChzcGluLCBjZSwgTUlfTk9PUCk7CiAJaW50ZWxfY29udGV4dF9wdXQo Y2UpOwogCi0JaWYgKElTX0VSUihycSkpIHsKKwlpZiAoSVNfRVJSKCpycSkpIHsKIAkJc3BpbiA9 IE5VTEw7Ci0JCWVyciA9IFBUUl9FUlIocnEpOworCQllcnIgPSBQVFJfRVJSKCpycSk7CiAJCWdv dG8gZXJyOwogCX0KIAotCWVyciA9IHJlcXVlc3RfYWRkX3NwaW4ocnEsIHNwaW4pOworCWVyciA9 IHJlcXVlc3RfYWRkX3NwaW4oKnJxLCBzcGluKTsKIGVycjoKIAlpZiAoZXJyICYmIHNwaW4pCiAJ CWlndF9zcGlubmVyX2VuZChzcGluKTsKQEAgLTI5Niw2ICszMDMsNyBAQCBzdGF0aWMgaW50IGNo ZWNrX3doaXRlbGlzdF9hY3Jvc3NfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAogewogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgKnRtcDsKIAlzdHJ1Y3QgaWd0X3NwaW5u ZXIgc3BpbjsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKIAlpbnQgZXJyOwogCkBAIC0zMTYsMTMgKzMyNCwyNCBAQCBzdGF0aWMgaW50IGNoZWNr X3doaXRlbGlzdF9hY3Jvc3NfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAog CQlnb3RvIG91dF9zcGluOwogCX0KIAotCWVyciA9IHN3aXRjaF90b19zY3JhdGNoX2NvbnRleHQo ZW5naW5lLCAmc3Bpbik7CisJZXJyID0gc3dpdGNoX3RvX3NjcmF0Y2hfY29udGV4dChlbmdpbmUs ICZzcGluLCAmcnEpOwogCWlmIChlcnIpCiAJCWdvdG8gb3V0X3NwaW47CiAKKwkvKiBFbnN1cmUg dGhlIHNwaW5uZXIgaGFzbid0IGFib3J0ZWQgKi8KKwlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRl ZChycSkpIHsKKwkJcHJfZXJyKCIlcyBzcGlubmVyIGZhaWxlZCB0byBzdGFydFxuIiwgbmFtZSk7 CisJCWVyciA9IC1FVElNRURPVVQ7CisJCWdvdG8gb3V0X3NwaW47CisJfQorCiAJd2l0aF9pbnRl bF9ydW50aW1lX3BtKGVuZ2luZS0+dW5jb3JlLT5ycG0sIHdha2VyZWYpCiAJCWVyciA9IHJlc2V0 KGVuZ2luZSk7CiAKKwkvKiBFbnN1cmUgdGhlIHJlc2V0IGhhcHBlbnMgYW5kIGtpbGxzIHRoZSBl bmdpbmUgKi8KKwlpZiAoZXJyID09IDApCisJCWVyciA9IGludGVsX3NlbGZ0ZXN0X3dhaXRfZm9y X3JxKHJxKTsKKwogCWlndF9zcGlubmVyX2VuZCgmc3Bpbik7CiAKIAlpZiAoZXJyKSB7CkBAIC03 ODcsOSArODA2LDI3IEBAIHN0YXRpYyBpbnQgbGl2ZV9yZXNldF93aGl0ZWxpc3Qodm9pZCAqYXJn KQogCQkJY29udGludWU7CiAKIAkJaWYgKGludGVsX2hhc19yZXNldF9lbmdpbmUoZ3QpKSB7Ci0J CQllcnIgPSBjaGVja193aGl0ZWxpc3RfYWNyb3NzX3Jlc2V0KGVuZ2luZSwKLQkJCQkJCQkgICBk b19lbmdpbmVfcmVzZXQsCi0JCQkJCQkJICAgImVuZ2luZSIpOworCQkJaWYgKGludGVsX2VuZ2lu ZV91c2VzX2d1YyhlbmdpbmUpKSB7CisJCQkJc3RydWN0IGludGVsX3NlbGZ0ZXN0X3NhdmVkX3Bv bGljeSBzYXZlZDsKKwkJCQlpbnQgZXJyMjsKKworCQkJCWVyciA9IGludGVsX3NlbGZ0ZXN0X21v ZGlmeV9wb2xpY3koZW5naW5lLCAmc2F2ZWQsCisJCQkJCQkJCSAgIFNFTEZURVNUX1NDSEVEVUxF Ul9NT0RJRllfRkFTVF9SRVNFVCk7CisJCQkJaWYoZXJyKQorCQkJCQlnb3RvIG91dDsKKworCQkJ CWVyciA9IGNoZWNrX3doaXRlbGlzdF9hY3Jvc3NfcmVzZXQoZW5naW5lLAorCQkJCQkJCQkgICBk b19ndWNfcmVzZXQsCisJCQkJCQkJCSAgICJndWMiKTsKKworCQkJCWVycjIgPSBpbnRlbF9zZWxm dGVzdF9yZXN0b3JlX3BvbGljeShlbmdpbmUsICZzYXZlZCk7CisJCQkJaWYgKGVyciA9PSAwKQor CQkJCQllcnIgPSBlcnIyOworCQkJfSBlbHNlCisJCQkJZXJyID0gY2hlY2tfd2hpdGVsaXN0X2Fj cm9zc19yZXNldChlbmdpbmUsCisJCQkJCQkJCSAgIGRvX2VuZ2luZV9yZXNldCwKKwkJCQkJCQkJ ICAgImVuZ2luZSIpOworCiAJCQlpZiAoZXJyKQogCQkJCWdvdG8gb3V0OwogCQl9CkBAIC0xMjI2 LDMxICsxMjYzLDQyIEBAIGxpdmVfZW5naW5lX3Jlc2V0X3dvcmthcm91bmRzKHZvaWQgKmFyZykK IAlyZWZlcmVuY2VfbGlzdHNfaW5pdChndCwgJmxpc3RzKTsKIAogCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGd0LCBpZCkgeworCQlzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2ZWRfcG9saWN5IHNh dmVkOworCQlib29sIHVzaW5nX2d1YyA9IGludGVsX2VuZ2luZV91c2VzX2d1YyhlbmdpbmUpOwog CQlib29sIG9rOworCQlpbnQgcmV0MjsKIAogCQlwcl9pbmZvKCJWZXJpZnlpbmcgYWZ0ZXIgJXMg cmVzZXQuLi5cbiIsIGVuZ2luZS0+bmFtZSk7CisJCXJldCA9IGludGVsX3NlbGZ0ZXN0X21vZGlm eV9wb2xpY3koZW5naW5lLCAmc2F2ZWQsCisJCQkJCQkgICBTRUxGVEVTVF9TQ0hFRFVMRVJfTU9E SUZZX0ZBU1RfUkVTRVQpOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisKKwogCQljZSA9IGludGVs X2NvbnRleHRfY3JlYXRlKGVuZ2luZSk7CiAJCWlmIChJU19FUlIoY2UpKSB7CiAJCQlyZXQgPSBQ VFJfRVJSKGNlKTsKLQkJCWJyZWFrOworCQkJZ290byByZXN0b3JlOwogCQl9CiAKLQkJb2sgPSB2 ZXJpZnlfd2FfbGlzdHMoZ3QsICZsaXN0cywgImJlZm9yZSByZXNldCIpOwotCQlpZiAoIW9rKSB7 Ci0JCQlyZXQgPSAtRVNSQ0g7Ci0JCQlnb3RvIGVycjsKLQkJfQorCQlpZiAoIXVzaW5nX2d1Yykg eworCQkJb2sgPSB2ZXJpZnlfd2FfbGlzdHMoZ3QsICZsaXN0cywgImJlZm9yZSByZXNldCIpOwor CQkJaWYgKCFvaykgeworCQkJCXJldCA9IC1FU1JDSDsKKwkJCQlnb3RvIGVycjsKKwkJCX0KIAot CQlyZXQgPSBpbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCAibGl2ZV93b3JrYXJvdW5kczppZGxl Iik7Ci0JCWlmIChyZXQpIHsKLQkJCXByX2VycigiJXM6IFJlc2V0IGZhaWxlZCB3aGlsZSBpZGxl XG4iLCBlbmdpbmUtPm5hbWUpOwotCQkJZ290byBlcnI7Ci0JCX0KKwkJCXJldCA9IGludGVsX2Vu Z2luZV9yZXNldChlbmdpbmUsICJsaXZlX3dvcmthcm91bmRzOmlkbGUiKTsKKwkJCWlmIChyZXQp IHsKKwkJCQlwcl9lcnIoIiVzOiBSZXNldCBmYWlsZWQgd2hpbGUgaWRsZVxuIiwgZW5naW5lLT5u YW1lKTsKKwkJCQlnb3RvIGVycjsKKwkJCX0KIAotCQlvayA9IHZlcmlmeV93YV9saXN0cyhndCwg Jmxpc3RzLCAiYWZ0ZXIgaWRsZSByZXNldCIpOwotCQlpZiAoIW9rKSB7Ci0JCQlyZXQgPSAtRVNS Q0g7Ci0JCQlnb3RvIGVycjsKKwkJCW9rID0gdmVyaWZ5X3dhX2xpc3RzKGd0LCAmbGlzdHMsICJh ZnRlciBpZGxlIHJlc2V0Iik7CisJCQlpZiAoIW9rKSB7CisJCQkJcmV0ID0gLUVTUkNIOworCQkJ CWdvdG8gZXJyOworCQkJfQogCQl9CiAKIAkJcmV0ID0gaWd0X3NwaW5uZXJfaW5pdCgmc3Bpbiwg ZW5naW5lLT5ndCk7CkBAIC0xMjcxLDI1ICsxMzE5LDQxIEBAIGxpdmVfZW5naW5lX3Jlc2V0X3dv cmthcm91bmRzKHZvaWQgKmFyZykKIAkJCWdvdG8gZXJyOwogCQl9CiAKLQkJcmV0ID0gaW50ZWxf ZW5naW5lX3Jlc2V0KGVuZ2luZSwgImxpdmVfd29ya2Fyb3VuZHM6YWN0aXZlIik7Ci0JCWlmIChy ZXQpIHsKLQkJCXByX2VycigiJXM6IFJlc2V0IGZhaWxlZCBvbiBhbiBhY3RpdmUgc3Bpbm5lclxu IiwKLQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwotCQkJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbik7 Ci0JCQlnb3RvIGVycjsKKwkJLyogRW5zdXJlIHRoZSBzcGlubmVyIGhhc24ndCBhYm9ydGVkICov CisJCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgeworCQkJcmV0ID0gLUVUSU1FRE9V VDsKKwkJCWdvdG8gc2tpcDsKKwkJfQorCisJCWlmICghdXNpbmdfZ3VjKSB7CisJCQlyZXQgPSBp bnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCAibGl2ZV93b3JrYXJvdW5kczphY3RpdmUiKTsKKwkJ CWlmIChyZXQpIHsKKwkJCQlwcl9lcnIoIiVzOiBSZXNldCBmYWlsZWQgb24gYW4gYWN0aXZlIHNw aW5uZXJcbiIsCisJCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7CisJCQkJaWd0X3NwaW5uZXJfZmlu aSgmc3Bpbik7CisJCQkJZ290byBlcnI7CisJCQl9CiAJCX0KIAorCQkvKiBFbnN1cmUgdGhlIHJl c2V0IGhhcHBlbnMgYW5kIGtpbGxzIHRoZSBlbmdpbmUgKi8KKwkJaWYgKHJldCA9PSAwKQorCQkJ cmV0ID0gaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEocnEpOworCitza2lwOgogCQlpZ3Rfc3Bp bm5lcl9lbmQoJnNwaW4pOwogCQlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluKTsKIAogCQlvayA9IHZl cmlmeV93YV9saXN0cyhndCwgJmxpc3RzLCAiYWZ0ZXIgYnVzeSByZXNldCIpOwotCQlpZiAoIW9r KSB7CisJCWlmICghb2spCiAJCQlyZXQgPSAtRVNSQ0g7Ci0JCQlnb3RvIGVycjsKLQkJfQogCiBl cnI6CiAJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKworcmVzdG9yZToKKwkJcmV0MiA9IGludGVs X3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5KGVuZ2luZSwgJnNhdmVkKTsKKwkJaWYgKHJldCA9PSAw KQorCQkJcmV0ID0gcmV0MjsKIAkJaWYgKHJldCkKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaAppbmRleCAyZDYxOThl NjNlYmUuLjU5NmNmNGI4MThlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvYWJpL2d1Y19hY3Rpb25zX2FiaS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2FiaS9ndWNfYWN0aW9uc19hYmkuaApAQCAtMTI0LDEwICsxMjQsMjUgQEAgZW51bSBpbnRlbF9n dWNfYWN0aW9uIHsKIAlJTlRFTF9HVUNfQUNUSU9OX0ZPUkNFX0xPR19CVUZGRVJfRkxVU0ggPSAw eDMwMiwKIAlJTlRFTF9HVUNfQUNUSU9OX0VOVEVSX1NfU1RBVEUgPSAweDUwMSwKIAlJTlRFTF9H VUNfQUNUSU9OX0VYSVRfU19TVEFURSA9IDB4NTAyLAorCUlOVEVMX0dVQ19BQ1RJT05fR0xPQkFM X1NDSEVEX1BPTElDWV9DSEFOR0UgPSAweDUwNiwKKwlJTlRFTF9HVUNfQUNUSU9OX1NDSEVEX0NP TlRFWFQgPSAweDEwMDAsCisJSU5URUxfR1VDX0FDVElPTl9TQ0hFRF9DT05URVhUX01PREVfU0VU ID0gMHgxMDAxLAorCUlOVEVMX0dVQ19BQ1RJT05fU0NIRURfQ09OVEVYVF9NT0RFX0RPTkUgPSAw eDEwMDIsCisJSU5URUxfR1VDX0FDVElPTl9TQ0hFRF9FTkdJTkVfTU9ERV9TRVQgPSAweDEwMDMs CisJSU5URUxfR1VDX0FDVElPTl9TQ0hFRF9FTkdJTkVfTU9ERV9ET05FID0gMHgxMDA0LAorCUlO VEVMX0dVQ19BQ1RJT05fU0VUX0NPTlRFWFRfUFJJT1JJVFkgPSAweDEwMDUsCisJSU5URUxfR1VD X0FDVElPTl9TRVRfQ09OVEVYVF9FWEVDVVRJT05fUVVBTlRVTSA9IDB4MTAwNiwKKwlJTlRFTF9H VUNfQUNUSU9OX1NFVF9DT05URVhUX1BSRUVNUFRJT05fVElNRU9VVCA9IDB4MTAwNywKKwlJTlRF TF9HVUNfQUNUSU9OX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OID0gMHgxMDA4LAorCUlOVEVM X0dVQ19BQ1RJT05fRU5HSU5FX0ZBSUxVUkVfTk9USUZJQ0FUSU9OID0gMHgxMDA5LAogCUlOVEVM X0dVQ19BQ1RJT05fU0xQQ19SRVFVRVNUID0gMHgzMDAzLAogCUlOVEVMX0dVQ19BQ1RJT05fQVVU SEVOVElDQVRFX0hVQyA9IDB4NDAwMCwKKwlJTlRFTF9HVUNfQUNUSU9OX1JFR0lTVEVSX0NPTlRF WFQgPSAweDQ1MDIsCisJSU5URUxfR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTlRFWFQgPSAweDQ1 MDMsCiAJSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIg PSAweDQ1MDUsCiAJSU5URUxfR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JU X0JVRkZFUiA9IDB4NDUwNiwKKwlJTlRFTF9HVUNfQUNUSU9OX0RFUkVHSVNURVJfQ09OVEVYVF9E T05FID0gMHg0NjAwLAorCUlOVEVMX0dVQ19BQ1RJT05fUkVTRVRfQ0xJRU5UID0gMHg1QjAxLAog CUlOVEVMX0dVQ19BQ1RJT05fTElNSVQKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjLmMKaW5kZXggNjY2MWRjYjAyMjM5Li45NzkxMjhlMjgzNzIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCkBAIC0xODAsNiArMTgwLDExIEBAIHZvaWQgaW50ZWxf Z3VjX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCX0KIH0KIAordm9pZCBpbnRl bF9ndWNfaW5pdF9sYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlpbnRlbF9ndWNfYWRz X2luaXRfbGF0ZShndWMpOworfQorCiBzdGF0aWMgdTMyIGd1Y19jdGxfZGVidWdfZmxhZ3Moc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogewogCXUzMiBsZXZlbCA9IGludGVsX2d1Y19sb2dfZ2V0X2xl dmVsKCZndWMtPmxvZyk7CkBAIC01MjQsNjUgKzUyOSwzNSBAQCBpbnQgaW50ZWxfZ3VjX2F1dGhf aHVjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHJzYV9vZmZzZXQpCiAgKi8KIGludCBpbnRl bF9ndWNfc3VzcGVuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7Ci0Jc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKIAlpbnQgcmV0OwotCXUzMiBz dGF0dXM7CiAJdTMyIGFjdGlvbltdID0gewotCQlJTlRFTF9HVUNfQUNUSU9OX0VOVEVSX1NfU1RB VEUsCi0JCUdVQ19QT1dFUl9EMSwgLyogYW55IHZhbHVlIGdyZWF0ZXIgdGhhbiBHVUNfUE9XRVJf RDAgKi8KKwkJSU5URUxfR1VDX0FDVElPTl9SRVNFVF9DTElFTlQsCiAJfTsKIAotCS8qCi0JICog SWYgR3VDIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCBidXQgc3VibWlzc2lvbiBpcyBub3Qgc3Vw cG9ydGVkLAotCSAqIHdlIGRvIG5vdCBuZWVkIHRvIHN1c3BlbmQgdGhlIEd1Qy4KLQkgKi8KLQlp ZiAoIWludGVsX2d1Y19zdWJtaXNzaW9uX2lzX3VzZWQoZ3VjKSB8fCAhaW50ZWxfZ3VjX2lzX3Jl YWR5KGd1YykpCisJaWYgKCFpbnRlbF9ndWNfaXNfcmVhZHkoZ3VjKSkKIAkJcmV0dXJuIDA7CiAK LQkvKgotCSAqIFRoZSBFTlRFUl9TX1NUQVRFIGFjdGlvbiBxdWV1ZXMgdGhlIHNhdmUvcmVzdG9y ZSBvcGVyYXRpb24gaW4gR3VDIEZXCi0JICogYW5kIHRoZW4gcmV0dXJucywgc28gd2FpdGluZyBv biB0aGUgSDJHIGlzIG5vdCBlbm91Z2ggdG8gZ3VhcmFudGVlCi0JICogR3VDIGlzIGRvbmUuIFdo ZW4gYWxsIHRoZSBwcm9jZXNzaW5nIGlzIGRvbmUsIEd1QyB3cml0ZXMKLQkgKiBJTlRFTF9HVUNf U0xFRVBfU1RBVEVfU1VDQ0VTUyB0byBzY3JhdGNoIHJlZ2lzdGVyIDE0LCBzbyB3ZSBjYW4gcG9s bAotCSAqIG9uIHRoYXQuIE5vdGUgdGhhdCBHdUMgZG9lcyBub3QgZW5zdXJlIHRoYXQgdGhlIHZh bHVlIGluIHRoZSByZWdpc3RlcgotCSAqIGlzIGRpZmZlcmVudCBmcm9tIElOVEVMX0dVQ19TTEVF UF9TVEFURV9TVUNDRVNTIHdoaWxlIHRoZSBhY3Rpb24gaXMKLQkgKiBpbiBwcm9ncmVzcyBzbyB3 ZSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGF0IG91cnNlbHZlcyBhcyB3ZWxsLgotCSAqLwotCi0J aW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgU09GVF9TQ1JBVENIKDE0KSwKLQkJCSAgIElOVEVM X0dVQ19TTEVFUF9TVEFURV9JTlZBTElEX01BU0spOwotCi0JcmV0ID0gaW50ZWxfZ3VjX3NlbmQo Z3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKLQotCXJldCA9IF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIodW5jb3JlLCBTT0ZUX1NDUkFU Q0goMTQpLAotCQkJCQlJTlRFTF9HVUNfU0xFRVBfU1RBVEVfSU5WQUxJRF9NQVNLLAotCQkJCQkw LCAwLCAxMCwgJnN0YXR1cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlmIChzdGF0 dXMgIT0gSU5URUxfR1VDX1NMRUVQX1NUQVRFX1NVQ0NFU1MpIHsKLQkJRFJNX0VSUk9SKCJHdUMg ZmFpbGVkIHRvIGNoYW5nZSBzbGVlcCBzdGF0ZS4gIgotCQkJICAiYWN0aW9uPTB4JXgsIGVycj0l dVxuIiwKLQkJCSAgYWN0aW9uWzBdLCBzdGF0dXMpOwotCQlyZXR1cm4gLUVJTzsKKwlpZiAoaW50 ZWxfZ3VjX3N1Ym1pc3Npb25faXNfdXNlZChndWMpKSB7CisJCS8qCisJCSAqIFRoaXMgSDJHIE1N SU8gY29tbWFuZCB0ZWFycyBkb3duIHRoZSBHdUMgaW4gdHdvIHN0ZXBzLiBGaXJzdCBpdCB3aWxs CisJCSAqIGdlbmVyYXRlIGEgRzJIIENUQiBmb3IgZXZlcnkgYWN0aXZlIGNvbnRleHQgaW5kaWNh dGluZyBhIHJlc2V0LiBJbgorCQkgKiBwcmFjdGljZSB0aGUgaTkxNSBzaG91bGRuJ3QgZXZlciBn ZXQgYSBHMkggYXMgc3VzcGVuZCBzaG91bGQgb25seSBiZQorCQkgKiBjYWxsZWQgd2hlbiB0aGUg R1BVIGlzIGlkbGUuIE5leHQsIGl0IHRlYXJzIGRvd24gdGhlIENUQnMgYW5kIHRoaXMKKwkJICog SDJHIE1NSU8gY29tbWFuZCBjb21wbGV0ZXMuCisJCSAqCisJCSAqIERvbid0IGFib3J0IG9uIGEg ZmFpbHVyZSBjb2RlIGZyb20gdGhlIEd1Qy4gS2VlcCBnb2luZyBhbmQgZG8gdGhlCisJCSAqIGNs ZWFuIHVwIGluIHNhbnRpemUoKSBhbmQgcmUtaW5pdGlhbGlzYXRpb24gb24gcmVzdW1lIGFuZCBo b3BlZnVsbHkKKwkJICogdGhlIGVycm9yIGhlcmUgd29uJ3QgYmUgcHJvYmxlbWF0aWMuCisJCSAq LworCQlyZXQgPSBpbnRlbF9ndWNfc2VuZF9tbWlvKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFj dGlvbiksIE5VTEwsIDApOworCQlpZiAocmV0KQorCQkJRFJNX0VSUk9SKCJHdUMgc3VzcGVuZDog UkVTRVRfQ0xJRU5UIGFjdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAlZCFcbiIsIHJldCk7CiAJfQog Ci0JcmV0dXJuIDA7Ci19CisJLyogU2lnbmFsIHRoYXQgdGhlIEd1QyBpc24ndCBydW5uaW5nLiAq LworCWludGVsX2d1Y19zYW5pdGl6ZShndWMpOwogCi0vKioKLSAqIGludGVsX2d1Y19yZXNldF9l bmdpbmUoKSAtIGFzayBHdUMgdG8gcmVzZXQgYW4gZW5naW5lCi0gKiBAZ3VjOglpbnRlbF9ndWMg c3RydWN0dXJlCi0gKiBAZW5naW5lOgllbmdpbmUgdG8gYmUgcmVzZXQKLSAqLwotaW50IGludGVs X2d1Y19yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAotCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCS8qIFhYWDogdG8gYmUgaW1wbGVtZW50ZWQgd2l0 aCBzdWJtaXNzaW9uIGludGVyZmFjZSByZXdvcmsgKi8KLQotCXJldHVybiAtRU5PREVWOworCXJl dHVybiAwOwogfQogCiAvKioKQEAgLTU5MSw3ICs1NjYsMTIgQEAgaW50IGludGVsX2d1Y19yZXNl dF9lbmdpbmUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogICovCiBpbnQgaW50ZWxfZ3VjX3Jlc3Vt ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7Ci0JLyogWFhYOiB0byBiZSBpbXBsZW1lbnRlZCB3 aXRoIHN1Ym1pc3Npb24gaW50ZXJmYWNlIHJld29yayAqLworCS8qCisJICogTkI6IFRoaXMgZnVu Y3Rpb24gY2FuIHN0aWxsIGJlIGNhbGxlZCBldmVuIGlmIEd1QyBzdWJtaXNzaW9uIGlzCisJICog ZGlzYWJsZWQsIGUuZy4gaWYgR3VDIGlzIGVuYWJsZWQgZm9yIEh1QyBhdXRoZW50aWNhdGlvbiBv bmx5LiBUaHVzLAorCSAqIGlmIGFueSBjb2RlIGlzIGxhdGVyIGFkZGVkIGhlcmUsIGl0IG11c3Qg YmUgc3VwcG9ydCBkb2luZyBub3RoaW5nCisJICogaWYgc3VibWlzc2lvbiBpcyBkaXNhYmxlZCAo YXMgcGVyIGludGVsX2d1Y19zdXNwZW5kKS4KKwkgKi8KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAppbmRleCA3MmU0NjUzMjIyZTIuLjVkOTRjZjQ4 MjUxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKQEAgLTYsNiArNiw5 IEBACiAjaWZuZGVmIF9JTlRFTF9HVUNfSF8KICNkZWZpbmUgX0lOVEVMX0dVQ19IXwogCisjaW5j bHVkZSA8bGludXgveGFycmF5Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKwogI2luY2x1 ZGUgImludGVsX3VuY29yZS5oIgogI2luY2x1ZGUgImludGVsX2d1Y19mdy5oIgogI2luY2x1ZGUg ImludGVsX2d1Y19md2lmLmgiCkBAIC0yOCwyMyArMzEsNDMgQEAgc3RydWN0IGludGVsX2d1YyB7 CiAJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOwogCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7CiAK KwkvKiBHbG9iYWwgZW5naW5lIHVzZWQgdG8gc3VibWl0IHJlcXVlc3RzIHRvIEd1QyAqLworCXN0 cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lOworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnN0YWxsZWRfcmVxdWVzdDsKKwogCS8qIGludGVsX2d1Y19yZWN2IGludGVycnVwdCByZWxh dGVkIHN0YXRlICovCiAJc3BpbmxvY2tfdCBpcnFfbG9jazsKIAl1bnNpZ25lZCBpbnQgbXNnX2Vu YWJsZWRfbWFzazsKIAorCWF0b21pY190IG91dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoOworCiAJ c3RydWN0IHsKIAkJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogCQl2b2lk ICgqZW5hYmxlKShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogCQl2b2lkICgqZGlzYWJsZSkoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKTsKIAl9IGludGVycnVwdHM7CiAKKwkvKgorCSAqIGNvbnRleHRz X2xvY2sgcHJvdGVjdHMgdGhlIHBvb2wgb2YgZnJlZSBndWMgaWRzIGFuZCBhIGxpbmtlZCBsaXN0 IG9mCisJICogZ3VjIGlkcyBhdmFpbGFibGUgdG8gYmUgc3RvbGVuCisJICovCisJc3BpbmxvY2tf dCBjb250ZXh0c19sb2NrOworCXN0cnVjdCBpZGEgZ3VjX2lkczsKKwlzdHJ1Y3QgbGlzdF9oZWFk IGd1Y19pZF9saXN0OworCisJYm9vbCBzdWJtaXNzaW9uX3N1cHBvcnRlZDsKIAlib29sIHN1Ym1p c3Npb25fc2VsZWN0ZWQ7CiAKIAlzdHJ1Y3QgaTkxNV92bWEgKmFkc192bWE7CiAJc3RydWN0IF9f Z3VjX2Fkc19ibG9iICphZHNfYmxvYjsKKwl1MzIgYWRzX3JlZ3NldF9zaXplOworCXUzMiBhZHNf Z29sZGVuX2N0eHRfc2l6ZTsKKworCXN0cnVjdCBpOTE1X3ZtYSAqbHJjX2Rlc2NfcG9vbDsKKwl2 b2lkICpscmNfZGVzY19wb29sX3ZhZGRyOwogCi0Jc3RydWN0IGk5MTVfdm1hICpzdGFnZV9kZXNj X3Bvb2w7Ci0Jdm9pZCAqc3RhZ2VfZGVzY19wb29sX3ZhZGRyOworCS8qIGd1Y19pZCB0byBpbnRl bF9jb250ZXh0IGxvb2t1cCAqLworCXN0cnVjdCB4YXJyYXkgY29udGV4dF9sb29rdXA7CiAKIAkv KiBDb250cm9sIHBhcmFtcyBmb3IgZncgaW5pdGlhbGl6YXRpb24gKi8KIAl1MzIgcGFyYW1zW0dV Q19DVExfTUFYX0RXT1JEU107CkBAIC03OCwxMCArMTAxLDExIEBAIGlubGluZSBpbnQgaW50ZWxf Z3VjX3NlbmQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxl bikKIH0KIAogc3RhdGljCi1pbmxpbmUgaW50IGludGVsX2d1Y19zZW5kX25iKHN0cnVjdCBpbnRl bF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4pCitpbmxpbmUgaW50IGludGVs X2d1Y19zZW5kX25iKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUz MiBsZW4sCisJCQkgICAgIHUzMiBnMmhfbGVuX2R3KQogewogCXJldHVybiBpbnRlbF9ndWNfY3Rf c2VuZCgmZ3VjLT5jdCwgYWN0aW9uLCBsZW4sIE5VTEwsIDAsCi0JCQkJIElOVEVMX0dVQ19DVF9T RU5EX05CKTsKKwkJCQkgTUFLRV9TRU5EX0ZMQUdTKGcyaF9sZW5fZHcpKTsKIH0KIAogc3RhdGlj IGlubGluZSBpbnQKQEAgLTkyLDYgKzExNiwzNSBAQCBpbnRlbF9ndWNfc2VuZF9hbmRfcmVjZWl2 ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAogCQkJ CSByZXNwb25zZV9idWYsIHJlc3BvbnNlX2J1Zl9zaXplLCAwKTsKIH0KIAorc3RhdGljIGlubGlu ZSBpbnQgaW50ZWxfZ3VjX3NlbmRfYnVzeV9sb29wKHN0cnVjdCBpbnRlbF9ndWMqIGd1YywKKwkJ CQkJICAgY29uc3QgdTMyICphY3Rpb24sCisJCQkJCSAgIHUzMiBsZW4sCisJCQkJCSAgIHUzMiBn MmhfbGVuX2R3LAorCQkJCQkgICBib29sIGxvb3ApCit7CisJaW50IGVycjsKKwl1bnNpZ25lZCBp bnQgc2xlZXBfcGVyaW9kX21zID0gMTsKKwlib29sIG5vdF9hdG9taWMgPSAhaW5fYXRvbWljKCkg JiYgIWlycXNfZGlzYWJsZWQoKTsKKworCS8qIE5vIHNsZWVwaW5nIHdpdGggc3BpbiBsb2Nrcywg anVzdCBidXN5IGxvb3AgKi8KKwltaWdodF9zbGVlcF9pZihsb29wICYmIG5vdF9hdG9taWMpOwor CityZXRyeToKKwllcnIgPSBpbnRlbF9ndWNfc2VuZF9uYihndWMsIGFjdGlvbiwgbGVuLCBnMmhf bGVuX2R3KTsKKwlpZiAodW5saWtlbHkoZXJyID09IC1FQlVTWSAmJiBsb29wKSkgeworCQlpZiAo bGlrZWx5KG5vdF9hdG9taWMpKSB7CisJCQlpZiAobXNsZWVwX2ludGVycnVwdGlibGUoc2xlZXBf cGVyaW9kX21zKSkKKwkJCQlyZXR1cm4gLUVJTlRSOworCQkJc2xlZXBfcGVyaW9kX21zID0gc2xl ZXBfcGVyaW9kX21zIDw8IDE7CisJCX0gZWxzZSB7CisJCQljcHVfcmVsYXgoKTsKKwkJfQorCQln b3RvIHJldHJ5OworCX0KKworCXJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBp bnRlbF9ndWNfdG9faG9zdF9ldmVudF9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsK IAlpbnRlbF9ndWNfY3RfZXZlbnRfaGFuZGxlcigmZ3VjLT5jdCk7CkBAIC0xMjUsNiArMTc4LDcg QEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9n dWMgKmd1YywKIH0KIAogdm9pZCBpbnRlbF9ndWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpOwordm9pZCBpbnRlbF9ndWNfaW5pdF9sYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7 CiB2b2lkIGludGVsX2d1Y19pbml0X3NlbmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwog dm9pZCBpbnRlbF9ndWNfd3JpdGVfcGFyYW1zKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiBpbnQg aW50ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKQEAgLTE2Nyw5ICsyMjEsMjUg QEAgc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19pc19yZWFkeShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCiAJcmV0dXJuIGludGVsX2d1Y19pc19md19ydW5uaW5nKGd1YykgJiYgaW50ZWxfZ3Vj X2N0X2VuYWJsZWQoJmd1Yy0+Y3QpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3Vj X3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWd1Yy0+aW50ZXJy dXB0cy5yZXNldChndWMpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3VjX2VuYWJs ZV9pbnRlcnJ1cHRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlndWMtPmludGVycnVwdHMu ZW5hYmxlKGd1Yyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfZGlzYWJsZV9p bnRlcnJ1cHRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlndWMtPmludGVycnVwdHMuZGlz YWJsZShndWMpOworfQorCiBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9ndWNfc2FuaXRpemUoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogewogCWludGVsX3VjX2Z3X3Nhbml0aXplKCZndWMtPmZ3KTsK KwlpbnRlbF9ndWNfZGlzYWJsZV9pbnRlcnJ1cHRzKGd1Yyk7CiAJaW50ZWxfZ3VjX2N0X3Nhbml0 aXplKCZndWMtPmN0KTsKIAlndWMtPm1taW9fbXNnID0gMDsKIApAQCAtMTkwLDggKzI2MCwyNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3VjX2Rpc2FibGVfbXNnKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdTMyIG1hc2spCiAJc3Bpbl91bmxvY2tfaXJxKCZndWMtPmlycV9sb2NrKTsKIH0K IAotaW50IGludGVsX2d1Y19yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAotCQkJ ICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2ludCBpbnRlbF9ndWNfd2FpdF9m b3JfaWRsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGxvbmcgdGltZW91dCk7CisKK2ludCBpbnRl bF9ndWNfZGVyZWdpc3Rlcl9kb25lX3Byb2Nlc3NfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywK KwkJCQkJICBjb25zdCB1MzIgKm1zZywgdTMyIGxlbik7CitpbnQgaW50ZWxfZ3VjX3NjaGVkX2Rv bmVfcHJvY2Vzc19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJCSAgICAgY29uc3QgdTMy ICptc2csIHUzMiBsZW4pOworaW50IGludGVsX2d1Y19jb250ZXh0X3Jlc2V0X3Byb2Nlc3NfbXNn KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJY29uc3QgdTMyICptc2csIHUzMiBsZW4pOwor aW50IGludGVsX2d1Y19lbmdpbmVfZmFpbHVyZV9wcm9jZXNzX21zZyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCisJCQkJCSBjb25zdCB1MzIgKm1zZywgdTMyIGxlbik7CisKK3ZvaWQgaW50ZWxfZ3Vj X2ZpbmRfaHVuZ19jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKK2lu dCBpbnRlbF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp OworCit2b2lkIGludGVsX2d1Y19jb250ZXh0X2JhbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwordm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9y ZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVsX2d1Y19zdWJt aXNzaW9uX3Jlc2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgYm9vbCBzdGFsbGVkKTsKK3ZvaWQg aW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7 Cit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpOwogCiB2b2lkIGludGVsX2d1Y19sb2FkX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19hZHMuYwppbmRleCBiODIxNDU2NTJkNTcuLmM1NjMwMmRlZGIzMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwpAQCAtMyw4ICszLDEx IEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxNC0yMDE5IEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAor I2luY2x1ZGUgPGxpbnV4L2JzZWFyY2guaD4KKwogI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAj aW5jbHVkZSAiZ3QvaW50ZWxfbHJjLmgiCisjaW5jbHVkZSAiZ3Qvc2htZW1fdXRpbHMuaCIKICNp bmNsdWRlICJpbnRlbF9ndWNfYWRzLmgiCiAjaW5jbHVkZSAiaW50ZWxfZ3VjX2Z3aWYuaCIKICNp bmNsdWRlICJpbnRlbF91Yy5oIgpAQCAtMjMsNiArMjYsMTUgQEAKICAqICAgICAgfCBndWNfcG9s aWNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAqICAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqICAgICAgfCBndWNfZ3Rfc3lzdGVtX2luZm8g ICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsgPD09IHN0YXRpYworICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3VudEFd IChlbmdpbmUgMC4wKSAgICAgfAorICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3VudEJdIChlbmdp bmUgMC4xKSAgICAgfAorICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3VudENdIChlbmdpbmUgMS4w KSAgICAgfAorICogICAgICB8ICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0g ZHluYW1pYworICogICAgICB8IHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0g NEsgYWxpZ25lZAorICogICAgICB8IGdvbGRlbiBjb250ZXh0cyAgICAgICAgICAgICAgICAgICAg ICAgfAogICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwog ICogICAgICB8IHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICogICAg ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0gNEsgYWxpZ25l ZApAQCAtMzUsMTYgKzQ3LDQ5IEBAIHN0cnVjdCBfX2d1Y19hZHNfYmxvYiB7CiAJc3RydWN0IGd1 Y19hZHMgYWRzOwogCXN0cnVjdCBndWNfcG9saWNpZXMgcG9saWNpZXM7CiAJc3RydWN0IGd1Y19n dF9zeXN0ZW1faW5mbyBzeXN0ZW1faW5mbzsKKwkvKiBGcm9tIGhlcmUgb24sIGxvY2F0aW9uIGlz IGR5bmFtaWMhIFJlZmVyIHRvIGFib3ZlIGRpYWdyYW0uICovCisJc3RydWN0IGd1Y19tbWlvX3Jl ZyByZWdzZXRbMF07CiB9IF9fcGFja2VkOwogCitzdGF0aWMgdTMyIGd1Y19hZHNfcmVnc2V0X3Np emUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCUdFTV9CVUdfT04oIWd1Yy0+YWRzX3JlZ3Nl dF9zaXplKTsKKwlyZXR1cm4gZ3VjLT5hZHNfcmVnc2V0X3NpemU7Cit9CisKK3N0YXRpYyB1MzIg Z3VjX2Fkc19nb2xkZW5fY3R4dF9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlyZXR1 cm4gUEFHRV9BTElHTihndWMtPmFkc19nb2xkZW5fY3R4dF9zaXplKTsKK30KKwogc3RhdGljIHUz MiBndWNfYWRzX3ByaXZhdGVfZGF0YV9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKIAly ZXR1cm4gUEFHRV9BTElHTihndWMtPmZ3LnByaXZhdGVfZGF0YV9zaXplKTsKIH0KIAorc3RhdGlj IHUzMiBndWNfYWRzX3JlZ3NldF9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXJl dHVybiBvZmZzZXRvZihzdHJ1Y3QgX19ndWNfYWRzX2Jsb2IsIHJlZ3NldCk7Cit9CisKK3N0YXRp YyB1MzIgZ3VjX2Fkc19nb2xkZW5fY3R4dF9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQor eworCXUzMiBvZmZzZXQ7CisKKwlvZmZzZXQgPSBndWNfYWRzX3JlZ3NldF9vZmZzZXQoZ3VjKSAr CisJCSBndWNfYWRzX3JlZ3NldF9zaXplKGd1Yyk7CisKKwlyZXR1cm4gUEFHRV9BTElHTihvZmZz ZXQpOworfQorCiBzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiB7Ci0JcmV0dXJuIFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBfX2d1 Y19hZHNfYmxvYikpOworCXUzMiBvZmZzZXQ7CisKKwlvZmZzZXQgPSBndWNfYWRzX2dvbGRlbl9j dHh0X29mZnNldChndWMpICsKKwkJIGd1Y19hZHNfZ29sZGVuX2N0eHRfc2l6ZShndWMpOworCisJ cmV0dXJuIFBBR0VfQUxJR04ob2Zmc2V0KTsKIH0KIAogc3RhdGljIHUzMiBndWNfYWRzX2Jsb2Jf c2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCkBAIC01MywxNSArOTgsNjggQEAgc3RhdGljIHUz MiBndWNfYWRzX2Jsb2Jfc2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJICAgICAgIGd1Y19h ZHNfcHJpdmF0ZV9kYXRhX3NpemUoZ3VjKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3BvbGljaWVz X2luaXQoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXMpCitzdGF0aWMgdm9pZCBndWNfcG9s aWNpZXNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBndWNfcG9saWNpZXMgKnBv bGljaWVzKQogeworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OworCiAJcG9saWNpZXMtPmRwY19w cm9tb3RlX3RpbWUgPSBHTE9CQUxfUE9MSUNZX0RFRkFVTFRfRFBDX1BST01PVEVfVElNRV9VUzsK IAlwb2xpY2llcy0+bWF4X251bV93b3JrX2l0ZW1zID0gR0xPQkFMX1BPTElDWV9NQVhfTlVNX1dJ OwotCS8qIERpc2FibGUgYXV0b21hdGljIHJlc2V0cyBhcyBub3QgeWV0IHN1cHBvcnRlZC4gKi8K LQlwb2xpY2llcy0+Z2xvYmFsX2ZsYWdzID0gR0xPQkFMX1BPTElDWV9ESVNBQkxFX0VOR0lORV9S RVNFVDsKKworCXBvbGljaWVzLT5nbG9iYWxfZmxhZ3MgPSAwOworCWlmIChpOTE1LT5wYXJhbXMu cmVzZXQgPCAyKQorCQlwb2xpY2llcy0+Z2xvYmFsX2ZsYWdzIHw9IEdMT0JBTF9QT0xJQ1lfRElT QUJMRV9FTkdJTkVfUkVTRVQ7CisKIAlwb2xpY2llcy0+aXNfdmFsaWQgPSAxOwogfQogCit2b2lk IGludGVsX2d1Y19hZHNfcHJpbnRfcG9saWN5X2luZm8oc3RydWN0IGludGVsX2d1YyAqZ3VjLAor CQkJCSAgICAgc3RydWN0IGRybV9wcmludGVyICpkcCkKK3sKKwlzdHJ1Y3QgX19ndWNfYWRzX2Js b2IgKmJsb2IgPSBndWMtPmFkc19ibG9iOworCisJaWYgKHVubGlrZWx5KCFibG9iKSkKKwkJcmV0 dXJuOworCisJZHJtX3ByaW50ZihkcCwgIkdsb2JhbCBzY2hlZHVsaW5nIHBvbGljaWVzOlxuIik7 CisJZHJtX3ByaW50ZihkcCwgIiAgRFBDIHByb21vdGUgdGltZSAgID0gJXVcbiIsIGJsb2ItPnBv bGljaWVzLmRwY19wcm9tb3RlX3RpbWUpOworCWRybV9wcmludGYoZHAsICIgIE1heCBudW0gd29y ayBpdGVtcyA9ICV1XG4iLCBibG9iLT5wb2xpY2llcy5tYXhfbnVtX3dvcmtfaXRlbXMpOworCWRy bV9wcmludGYoZHAsICIgIEZsYWdzICAgICAgICAgICAgICA9ICV1XG4iLCBibG9iLT5wb2xpY2ll cy5nbG9iYWxfZmxhZ3MpOworfQorCitzdGF0aWMgaW50IGd1Y19hY3Rpb25fcG9saWNpZXNfdXBk YXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHBvbGljeV9vZmZzZXQpCit7CisJdTMyIGFj dGlvbltdID0geworCQlJTlRFTF9HVUNfQUNUSU9OX0dMT0JBTF9TQ0hFRF9QT0xJQ1lfQ0hBTkdF LAorCQlwb2xpY3lfb2Zmc2V0CisJfTsKKworCXJldHVybiBpbnRlbF9ndWNfc2VuZF9idXN5X2xv b3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwgMCwgdHJ1ZSk7Cit9CisKK2ludCBp bnRlbF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7 CisJc3RydWN0IF9fZ3VjX2Fkc19ibG9iICpibG9iID0gZ3VjLT5hZHNfYmxvYjsKKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CisJaW50IHJldDsKKworCWlmICghYmxvYikKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKworCUdFTV9C VUdfT04oIWJsb2ItPmFkcy5zY2hlZHVsZXJfcG9saWNpZXMpOworCisJZ3VjX3BvbGljaWVzX2lu aXQoZ3VjLCAmYmxvYi0+cG9saWNpZXMpOworCisJaWYgKCFpbnRlbF9ndWNfaXNfcmVhZHkoZ3Vj KSkKKwkJcmV0dXJuIDA7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJmd0LT5pOTE1LT5ydW50 aW1lX3BtLCB3YWtlcmVmKQorCQlyZXQgPSBndWNfYWN0aW9uX3BvbGljaWVzX3VwZGF0ZShndWMs IGJsb2ItPmFkcy5zY2hlZHVsZXJfcG9saWNpZXMpOworCisJcmV0dXJuIHJldDsKK30KKwogc3Rh dGljIHZvaWQgZ3VjX21hcHBpbmdfdGFibGVfaW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJ CSAgIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gKnN5c3RlbV9pbmZvKQogewpAQCAtODQsNTMg KzE4MiwzMjMgQEAgc3RhdGljIHZvaWQgZ3VjX21hcHBpbmdfdGFibGVfaW5pdChzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LAogfQogCiAvKgotICogVGhlIGZpcnN0IDgwIGR3b3JkcyBvZiB0aGUgcmVnaXN0 ZXIgc3RhdGUgY29udGV4dCwgY29udGFpbmluZyB0aGUKLSAqIGV4ZWNsaXN0cyBhbmQgcHBndHQg cmVnaXN0ZXJzLgorICogVGhlIHNhdmUvcmVzdG9yZSByZWdpc3RlciBsaXN0IG11c3QgYmUgcHJl LWNhbGN1bGF0ZWQgdG8gYSB0ZW1wb3JhcnkKKyAqIGJ1ZmZlciBvZiBkcml2ZXIgZGVmaW5lZCBz aXplIGJlZm9yZSBpdCBjYW4gYmUgZ2VuZXJhdGVkIGluIHBsYWNlCisgKiBpbnNpZGUgdGhlIEFE Uy4KICAqLwotI2RlZmluZSBMUl9IV19DT05URVhUX1NJWkUJKDgwICogc2l6ZW9mKHUzMikpCisj ZGVmaW5lIE1BWF9NTUlPX1JFR1MJMTI4CS8qIEFyYml0cmFyeSBzaXplLCBpbmNyZWFzZSBhcyBu ZWVkZWQgKi8KK3N0cnVjdCB0ZW1wX3JlZ3NldCB7CisJc3RydWN0IGd1Y19tbWlvX3JlZyAqcmVn aXN0ZXJzOworCXUzMiB1c2VkOworCXUzMiBzaXplOworfTsKIAotc3RhdGljIHZvaWQgX19ndWNf YWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIGludCBndWNfbW1pb19yZWdf Y21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJY29uc3Qgc3RydWN0IGd1Y19t bWlvX3JlZyAqcmEgPSBhOworCWNvbnN0IHN0cnVjdCBndWNfbW1pb19yZWcgKnJiID0gYjsKKwor CXJldHVybiAoaW50KXJhLT5vZmZzZXQgLSAoaW50KXJiLT5vZmZzZXQ7Cit9CisKK3N0YXRpYyB2 b2lkIGd1Y19tbWlvX3JlZ19hZGQoc3RydWN0IHRlbXBfcmVnc2V0ICpyZWdzZXQsCisJCQkgICAg IHUzMiBvZmZzZXQsIHUzMiBmbGFncykKK3sKKwl1MzIgY291bnQgPSByZWdzZXQtPnVzZWQ7CisJ c3RydWN0IGd1Y19tbWlvX3JlZyByZWcgPSB7CisJCS5vZmZzZXQgPSBvZmZzZXQsCisJCS5mbGFn cyA9IGZsYWdzLAorCX07CisJc3RydWN0IGd1Y19tbWlvX3JlZyAqc2xvdDsKKworCUdFTV9CVUdf T04oY291bnQgPj0gcmVnc2V0LT5zaXplKTsKKworCS8qCisJICogVGhlIG1taW8gbGlzdCBpcyBi dWlsdCB1c2luZyBzZXBhcmF0ZSBsaXN0cyB3aXRoaW4gdGhlIGRyaXZlci4KKwkgKiBJdCdzIHBv c3NpYmxlIHRoYXQgYXQgc29tZSBwb2ludCB3ZSBtYXkgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUK KwkgKiByZWdpc3RlciBtb3JlIHRoYW4gb25jZS4gRG8gbm90IGNvbnNpZGVyIHRoaXMgYW4gZXJy b3I7IHNpbGVudGx5CisJICogbW92ZSBvbiBpZiB0aGUgcmVnaXN0ZXIgaXMgYWxyZWFkeSBpbiB0 aGUgbGlzdC4KKwkgKi8KKwlpZiAoYnNlYXJjaCgmcmVnLCByZWdzZXQtPnJlZ2lzdGVycywgY291 bnQsCisJCSAgICBzaXplb2YocmVnKSwgZ3VjX21taW9fcmVnX2NtcCkpCisJCXJldHVybjsKKwor CXNsb3QgPSAmcmVnc2V0LT5yZWdpc3RlcnNbY291bnRdOworCXJlZ3NldC0+dXNlZCsrOworCSpz bG90ID0gcmVnOworCisJd2hpbGUgKHNsb3QtLSA+IHJlZ3NldC0+cmVnaXN0ZXJzKSB7CisJCUdF TV9CVUdfT04oc2xvdFswXS5vZmZzZXQgPT0gc2xvdFsxXS5vZmZzZXQpOworCQlpZiAoc2xvdFsx XS5vZmZzZXQgPiBzbG90WzBdLm9mZnNldCkKKwkJCWJyZWFrOworCisJCXN3YXAoc2xvdFsxXSwg c2xvdFswXSk7CisJfQorfQorCisjZGVmaW5lIEdVQ19NTUlPX1JFR19BREQocmVnc2V0LCByZWcs IG1hc2tlZCkgXAorCWd1Y19tbWlvX3JlZ19hZGQocmVnc2V0LCBcCisJCQkgaTkxNV9tbWlvX3Jl Z19vZmZzZXQoKHJlZykpLCBcCisJCQkgKG1hc2tlZCkgPyBHVUNfUkVHU0VUX01BU0tFRCA6IDAp CisKK3N0YXRpYyB2b2lkIGd1Y19tbWlvX3JlZ3NldF9pbml0KHN0cnVjdCB0ZW1wX3JlZ3NldCAq cmVnc2V0LAorCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJY29uc3Qg dTMyIGJhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwg PSAmZW5naW5lLT53YV9saXN0OworCXN0cnVjdCBpOTE1X3dhICp3YTsKKwl1bnNpZ25lZCBpbnQg aTsKKworCXJlZ3NldC0+dXNlZCA9IDA7CisKKwlHVUNfTU1JT19SRUdfQUREKHJlZ3NldCwgUklO R19NT0RFX0dFTjcoYmFzZSksIHRydWUpOworCUdVQ19NTUlPX1JFR19BREQocmVnc2V0LCBSSU5H X0hXU19QR0EoYmFzZSksIGZhbHNlKTsKKwlHVUNfTU1JT19SRUdfQUREKHJlZ3NldCwgUklOR19J TVIoYmFzZSksIGZhbHNlKTsKKworCWZvciAoaSA9IDAsIHdhID0gd2FsLT5saXN0OyBpIDwgd2Fs LT5jb3VudDsgaSsrLCB3YSsrKQorCQlHVUNfTU1JT19SRUdfQUREKHJlZ3NldCwgd2EtPnJlZywg d2EtPm1hc2tlZF9yZWcpOworCisJLyogQmUgZXh0cmEgcGFyYW5vaWQgYW5kIGluY2x1ZGUgYWxs IHdoaXRlbGlzdCByZWdpc3RlcnMuICovCisJZm9yIChpID0gMDsgaSA8IFJJTkdfTUFYX05PTlBS SVZfU0xPVFM7IGkrKykKKwkJR1VDX01NSU9fUkVHX0FERChyZWdzZXQsCisJCQkJIFJJTkdfRk9S Q0VfVE9fTk9OUFJJVihiYXNlLCBpKSwKKwkJCQkgZmFsc2UpOworCisJLyogYWRkIGluIGxvY2Fs IE1PQ1MgcmVnaXN0ZXJzICovCisJZm9yIChpID0gMDsgaSA8IEdFTjlfTE5DRkNNT0NTX1JFR19D T1VOVDsgaSsrKQorCQlHVUNfTU1JT19SRUdfQUREKHJlZ3NldCwgR0VOOV9MTkNGQ01PQ1MoaSks IGZhbHNlKTsKK30KKworc3RhdGljIGludCBndWNfbW1pb19yZWdfc3RhdGVfcXVlcnkoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3Vj KTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlzdHJ1 Y3QgdGVtcF9yZWdzZXQgdGVtcF9zZXQ7CisJdTMyIHRvdGFsOworCisJLyoKKwkgKiBOZWVkIHRv IGFjdHVhbGx5IGJ1aWxkIHRoZSBsaXN0IGluIG9yZGVyIHRvIGZpbHRlciBvdXQKKwkgKiBkdXBs aWNhdGVzIGFuZCBvdGhlciBzdWNoIGRhdGEgZGVwZW5kZW50IGNvbnN0cnVjdGlvbnMuCisJICov CisJdGVtcF9zZXQuc2l6ZSA9IE1BWF9NTUlPX1JFR1M7CisJdGVtcF9zZXQucmVnaXN0ZXJzID0g a21hbGxvY19hcnJheSh0ZW1wX3NldC5zaXplLAorCQkJCQkgIHNpemVvZigqdGVtcF9zZXQucmVn aXN0ZXJzKSwKKwkJCQkJICBHRlBfS0VSTkVMKTsKKwlpZiAoIXRlbXBfc2V0LnJlZ2lzdGVycykK KwkJcmV0dXJuIC1FTk9NRU07CisKKwl0b3RhbCA9IDA7CisJZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgZ3QsIGlkKSB7CisJCWd1Y19tbWlvX3JlZ3NldF9pbml0KCZ0ZW1wX3NldCwgZW5naW5lKTsK KwkJdG90YWwgKz0gdGVtcF9zZXQudXNlZDsKKwl9CisKKwlrZnJlZSh0ZW1wX3NldC5yZWdpc3Rl cnMpOworCisJcmV0dXJuIHRvdGFsICogc2l6ZW9mKHN0cnVjdCBndWNfbW1pb19yZWcpOworfQor CitzdGF0aWMgdm9pZCBndWNfbW1pb19yZWdfc3RhdGVfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCisJCQkJICAgIHN0cnVjdCBfX2d1Y19hZHNfYmxvYiAqYmxvYikKK3sKKwlzdHJ1Y3QgaW50 ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCXN0cnVjdCB0ZW1wX3JlZ3NldCB0ZW1w X3NldDsKKwlzdHJ1Y3QgZ3VjX21taW9fcmVnX3NldCAqYWRzX3JlZ19zZXQ7CisJdTMyIGFkZHJf Z2d0dCwgb2Zmc2V0OworCXU4IGd1Y19jbGFzczsKKworCW9mZnNldCA9IGd1Y19hZHNfcmVnc2V0 X29mZnNldChndWMpOworCWFkZHJfZ2d0dCA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1 Yy0+YWRzX3ZtYSkgKyBvZmZzZXQ7CisJdGVtcF9zZXQucmVnaXN0ZXJzID0gKHN0cnVjdCBndWNf bW1pb19yZWcgKikgKCgodTggKikgYmxvYikgKyBvZmZzZXQpOworCXRlbXBfc2V0LnNpemUgPSBn dWMtPmFkc19yZWdzZXRfc2l6ZSAvIHNpemVvZih0ZW1wX3NldC5yZWdpc3RlcnNbMF0pOworCisJ Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCS8qIENsYXNzIGluZGV4IGlzIGNo ZWNrZWQgaW4gY2xhc3MgY29udmVydGVyICovCisJCUdFTV9CVUdfT04oZW5naW5lLT5pbnN0YW5j ZSA+PSBHVUNfTUFYX0lOU1RBTkNFU19QRVJfQ0xBU1MpOworCisJCWd1Y19jbGFzcyA9IGVuZ2lu ZV9jbGFzc190b19ndWNfY2xhc3MoZW5naW5lLT5jbGFzcyk7CisJCWFkc19yZWdfc2V0ID0gJmJs b2ItPmFkcy5yZWdfc3RhdGVfbGlzdFtndWNfY2xhc3NdW2VuZ2luZS0+aW5zdGFuY2VdOworCisJ CWd1Y19tbWlvX3JlZ3NldF9pbml0KCZ0ZW1wX3NldCwgZW5naW5lKTsKKwkJaWYgKCF0ZW1wX3Nl dC51c2VkKSB7CisJCQlhZHNfcmVnX3NldC0+YWRkcmVzcyA9IDA7CisJCQlhZHNfcmVnX3NldC0+ Y291bnQgPSAwOworCQkJY29udGludWU7CisJCX0KKworCQlhZHNfcmVnX3NldC0+YWRkcmVzcyA9 IGFkZHJfZ2d0dDsKKwkJYWRzX3JlZ19zZXQtPmNvdW50ID0gdGVtcF9zZXQudXNlZDsKKworCQl0 ZW1wX3NldC5zaXplIC09IHRlbXBfc2V0LnVzZWQ7CisJCXRlbXBfc2V0LnJlZ2lzdGVycyArPSB0 ZW1wX3NldC51c2VkOworCQlhZGRyX2dndHQgKz0gdGVtcF9zZXQudXNlZCAqIHNpemVvZihzdHJ1 Y3QgZ3VjX21taW9fcmVnKTsKKwl9CisKKwlHRU1fQlVHX09OKHRlbXBfc2V0LnNpemUpOworfQor CitzdGF0aWMgdm9pZCBmaWxsX2VuZ2luZV9lbmFibGVfbWFza3Moc3RydWN0IGludGVsX2d0ICpn dCwKKwkJCQkgICAgIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gKmluZm8pCit7CisJaW5mby0+ ZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1JFTkRFUl9DTEFTU10gPSAxOworCWluZm8tPmVuZ2lu ZV9lbmFibGVkX21hc2tzW0dVQ19CTElUVEVSX0NMQVNTXSA9IDE7CisJaW5mby0+ZW5naW5lX2Vu YWJsZWRfbWFza3NbR1VDX1ZJREVPX0NMQVNTXSA9IFZEQk9YX01BU0soZ3QpOworCWluZm8tPmVu Z2luZV9lbmFibGVkX21hc2tzW0dVQ19WSURFT0VOSEFOQ0VfQ0xBU1NdID0gVkVCT1hfTUFTSyhn dCk7Cit9CisKK3N0YXRpYyBpbnQgZ3VjX3ByZXBfZ29sZGVuX2NvbnRleHQoc3RydWN0IGludGVs X2d1YyAqZ3VjLAorCQkJCSAgIHN0cnVjdCBfX2d1Y19hZHNfYmxvYiAqYmxvYikKK3sKKwlzdHJ1 Y3QgaW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJdTMyIGFkZHJfZ2d0dCwgb2Zmc2V0 OworCXUzMiB0b3RhbF9zaXplID0gMCwgYWxsb2Nfc2l6ZSwgcmVhbF9zaXplOworCXU4IGVuZ2lu ZV9jbGFzcywgZ3VjX2NsYXNzOworCXN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gKmluZm8sIGxv Y2FsX2luZm87CisKKwkvKgorCSAqIFJlc2VydmUgdGhlIG1lbW9yeSBmb3IgdGhlIGdvbGRlbiBj b250ZXh0cyBhbmQgcG9pbnQgR3VDIGF0IGl0IGJ1dAorCSAqIGxlYXZlIGl0IGVtcHR5IGZvciBu b3cuIFRoZSBjb250ZXh0IGRhdGEgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIKKwkgKiBvbmNlIHRo ZXJlIGlzIHNvbWV0aGluZyBhdmFpbGFibGUgdG8gcHV0IHRoZXJlLgorCSAqCisJICogTm90ZSB0 aGF0IHRoZSBIV1NQIGFuZCByaW5nIGNvbnRleHQgYXJlIG5vdCBpbmNsdWRlZC4KKwkgKgorCSAq IE5vdGUgYWxzbyB0aGF0IHRoZSBzdG9yYWdlIG11c3QgYmUgcGlubmVkIGluIHRoZSBHR1RULCBz byB0aGF0IHRoZQorCSAqIGFkZHJlc3Mgd29uJ3QgY2hhbmdlIGFmdGVyIEd1QyBoYXMgYmVlbiB0 b2xkIHdoZXJlIHRvIGZpbmQgaXQuIFRoZQorCSAqIEd1QyB3aWxsIGFsc28gdmFsaWRhdGUgdGhh dCB0aGUgTFJDIGJhc2UgKyBzaXplIGZhbGwgd2l0aGluIHRoZQorCSAqIGFsbG93ZWQgR0dUVCBy YW5nZS4KKwkgKi8KKwlpZiAoYmxvYikgeworCQlvZmZzZXQgPSBndWNfYWRzX2dvbGRlbl9jdHh0 X29mZnNldChndWMpOworCQlhZGRyX2dndHQgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBn dWMtPmFkc192bWEpICsgb2Zmc2V0OworCQlpbmZvID0gJmJsb2ItPnN5c3RlbV9pbmZvOworCX0g ZWxzZSB7CisJCW1lbXNldCgmbG9jYWxfaW5mbywgMCwgc2l6ZW9mKGxvY2FsX2luZm8pKTsKKwkJ aW5mbyA9ICZsb2NhbF9pbmZvOworCQlmaWxsX2VuZ2luZV9lbmFibGVfbWFza3MoZ3QsIGluZm8p OworCX0KKworCWZvciAoZW5naW5lX2NsYXNzID0gMDsgZW5naW5lX2NsYXNzIDw9IE1BWF9FTkdJ TkVfQ0xBU1M7ICsrZW5naW5lX2NsYXNzKSB7CisJCWlmIChlbmdpbmVfY2xhc3MgPT0gT1RIRVJf Q0xBU1MpCisJCQljb250aW51ZTsKKworCQlndWNfY2xhc3MgPSBlbmdpbmVfY2xhc3NfdG9fZ3Vj X2NsYXNzKGVuZ2luZV9jbGFzcyk7CisKKwkJaWYgKCFpbmZvLT5lbmdpbmVfZW5hYmxlZF9tYXNr c1tndWNfY2xhc3NdKQorCQkJY29udGludWU7CisKKwkJcmVhbF9zaXplID0gaW50ZWxfZW5naW5l X2NvbnRleHRfc2l6ZShndCwgZW5naW5lX2NsYXNzKTsKKwkJYWxsb2Nfc2l6ZSA9IFBBR0VfQUxJ R04ocmVhbF9zaXplKTsKKwkJdG90YWxfc2l6ZSArPSBhbGxvY19zaXplOworCisJCWlmICghYmxv YikKKwkJCWNvbnRpbnVlOworCisJCWJsb2ItPmFkcy5lbmdfc3RhdGVfc2l6ZVtndWNfY2xhc3Nd ID0gcmVhbF9zaXplOworCQlibG9iLT5hZHMuZ29sZGVuX2NvbnRleHRfbHJjYVtndWNfY2xhc3Nd ID0gYWRkcl9nZ3R0OworCQlhZGRyX2dndHQgKz0gYWxsb2Nfc2l6ZTsKKwl9CisKKwlpZiAoIWJs b2IpCisJCXJldHVybiB0b3RhbF9zaXplOworCisJR0VNX0JVR19PTihndWMtPmFkc19nb2xkZW5f Y3R4dF9zaXplICE9IHRvdGFsX3NpemUpOworCXJldHVybiB0b3RhbF9zaXplOworfQorCitzdGF0 aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZmluZF9lbmdpbmVfc3RhdGUoc3RydWN0IGludGVs X2d0ICpndCwgdTggZW5naW5lX2NsYXNzKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGd0LCBpZCkgeworCQlpZiAoZW5naW5lLT5jbGFzcyAhPSBlbmdpbmVfY2xhc3MpCisJCQlj b250aW51ZTsKKworCQlpZiAoIWVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKKwkJCWNvbnRpbnVlOwor CisJCXJldHVybiBlbmdpbmU7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lk IGd1Y19pbml0X2dvbGRlbl9jb250ZXh0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKIAlzdHJ1 Y3QgX19ndWNfYWRzX2Jsb2IgKmJsb2IgPSBndWMtPmFkc19ibG9iOwotCWNvbnN0IHUzMiBza2lw cGVkX3NpemUgPSBMUkNfUFBIV1NQX1NaICogUEFHRV9TSVpFICsgTFJfSFdfQ09OVEVYVF9TSVpF OwotCXUzMiBiYXNlOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJdTMyIGFkZHJfZ2d0dCwgb2Zmc2V0Owor CXUzMiB0b3RhbF9zaXplID0gMCwgYWxsb2Nfc2l6ZSwgcmVhbF9zaXplOwogCXU4IGVuZ2luZV9j bGFzcywgZ3VjX2NsYXNzOworCXU4ICpwdHI7CiAKLQkvKiBHdUMgc2NoZWR1bGluZyBwb2xpY2ll cyAqLwotCWd1Y19wb2xpY2llc19pbml0KCZibG9iLT5wb2xpY2llcyk7CisJLyogU2tpcCBleGVj bGlzdCBhbmQgUFBHVFQgcmVnaXN0ZXJzICsgSFdTUCAqLworCWNvbnN0IHUzMiBscl9od19jb250 ZXh0X3NpemUgPSA4MCAqIHNpemVvZih1MzIpOworCWNvbnN0IHUzMiBza2lwX3NpemUgPSBMUkNf UFBIV1NQX1NaICogUEFHRV9TSVpFICsKKwkJbHJfaHdfY29udGV4dF9zaXplOworCisJaWYgKCFp bnRlbF91Y191c2VzX2d1Y19zdWJtaXNzaW9uKCZndC0+dWMpKQorCQlyZXR1cm47CisKKwlHRU1f QlVHX09OKCFibG9iKTsKIAogCS8qCi0JICogR3VDIGV4cGVjdHMgYSBwZXItZW5naW5lLWNsYXNz IGNvbnRleHQgaW1hZ2UgYW5kIHNpemUKLQkgKiAobWludXMgaHdzcCBhbmQgcmluZyBjb250ZXh0 KS4gVGhlIGNvbnRleHQgaW1hZ2Ugd2lsbCBiZQotCSAqIHVzZWQgdG8gcmVpbml0aWFsaXplIGVu Z2luZXMgYWZ0ZXIgYSByZXNldC4gSXQgbXVzdCBleGlzdAotCSAqIGFuZCBiZSBwaW5uZWQgaW4g dGhlIEdHVFQsIHNvIHRoYXQgdGhlIGFkZHJlc3Mgd29uJ3QgY2hhbmdlIGFmdGVyCi0JICogd2Ug aGF2ZSB0b2xkIEd1QyB3aGVyZSB0byBmaW5kIGl0LiBUaGUgY29udGV4dCBzaXplIHdpbGwgYmUg dXNlZAotCSAqIHRvIHZhbGlkYXRlIHRoYXQgdGhlIExSQyBiYXNlICsgc2l6ZSBmYWxsIHdpdGhp biBhbGxvd2VkIEdHVFQuCisJICogR28gYmFjayBhbmQgZmlsbCBpbiB0aGUgZ29sZGVuIGNvbnRl eHQgZGF0YSBub3cgdGhhdCBpdCBpcworCSAqIGF2YWlsYWJsZS4KIAkgKi8KKwlvZmZzZXQgPSBn dWNfYWRzX2dvbGRlbl9jdHh0X29mZnNldChndWMpOworCWFkZHJfZ2d0dCA9IGludGVsX2d1Y19n Z3R0X29mZnNldChndWMsIGd1Yy0+YWRzX3ZtYSkgKyBvZmZzZXQ7CisJcHRyID0gKCh1OCAqKSBi bG9iKSArIG9mZnNldDsKKwogCWZvciAoZW5naW5lX2NsYXNzID0gMDsgZW5naW5lX2NsYXNzIDw9 IE1BWF9FTkdJTkVfQ0xBU1M7ICsrZW5naW5lX2NsYXNzKSB7CiAJCWlmIChlbmdpbmVfY2xhc3Mg PT0gT1RIRVJfQ0xBU1MpCiAJCQljb250aW51ZTsKIAogCQlndWNfY2xhc3MgPSBlbmdpbmVfY2xh c3NfdG9fZ3VjX2NsYXNzKGVuZ2luZV9jbGFzcyk7CiAKLQkJLyoKLQkJICogVE9ETzogU2V0IGNv bnRleHQgcG9pbnRlciB0byBkZWZhdWx0IHN0YXRlIHRvIGFsbG93Ci0JCSAqIEd1QyB0byByZS1p bml0IGd1aWx0eSBjb250ZXh0cyBhZnRlciBpbnRlcm5hbCByZXNldC4KLQkJICovCi0JCWJsb2It PmFkcy5nb2xkZW5fY29udGV4dF9scmNhW2d1Y19jbGFzc10gPSAwOwotCQlibG9iLT5hZHMuZW5n X3N0YXRlX3NpemVbZ3VjX2NsYXNzXSA9Ci0JCQlpbnRlbF9lbmdpbmVfY29udGV4dF9zaXplKGd1 Y190b19ndChndWMpLAotCQkJCQkJICBlbmdpbmVfY2xhc3MpIC0KLQkJCXNraXBwZWRfc2l6ZTsK KwkJaWYgKCFibG9iLT5zeXN0ZW1faW5mby5lbmdpbmVfZW5hYmxlZF9tYXNrc1tndWNfY2xhc3Nd KQorCQkJY29udGludWU7CisKKwkJcmVhbF9zaXplID0gaW50ZWxfZW5naW5lX2NvbnRleHRfc2l6 ZShndCwgZW5naW5lX2NsYXNzKTsKKwkJYWxsb2Nfc2l6ZSA9IFBBR0VfQUxJR04ocmVhbF9zaXpl KTsKKwkJdG90YWxfc2l6ZSArPSBhbGxvY19zaXplOworCisJCWVuZ2luZSA9IGZpbmRfZW5naW5l X3N0YXRlKGd0LCBlbmdpbmVfY2xhc3MpOworCQlpZiAoIWVuZ2luZSkgeworCQkJZHJtX2Vycigm Z3QtPmk5MTUtPmRybSwgIk5vIGVuZ2luZSBzdGF0ZSByZWNvcmRlZCBmb3IgY2xhc3MgJWQhXG4i LCBlbmdpbmVfY2xhc3MpOworCQkJYmxvYi0+YWRzLmVuZ19zdGF0ZV9zaXplW2d1Y19jbGFzc10g PSAwOworCQkJYmxvYi0+YWRzLmdvbGRlbl9jb250ZXh0X2xyY2FbZ3VjX2NsYXNzXSA9IDA7CisJ CQljb250aW51ZTsKKwkJfQorCisJCUdFTV9CVUdfT04oYmxvYi0+YWRzLmVuZ19zdGF0ZV9zaXpl W2d1Y19jbGFzc10gIT0gcmVhbF9zaXplKTsKKwkJR0VNX0JVR19PTihibG9iLT5hZHMuZ29sZGVu X2NvbnRleHRfbHJjYVtndWNfY2xhc3NdICE9IGFkZHJfZ2d0dCk7CisJCWFkZHJfZ2d0dCArPSBh bGxvY19zaXplOworCisJCXNobWVtX3JlYWQoZW5naW5lLT5kZWZhdWx0X3N0YXRlLCBza2lwX3Np emUsIHB0ciArIHNraXBfc2l6ZSwKKwkJCSAgIHJlYWxfc2l6ZSAtIHNraXBfc2l6ZSk7CisJCXB0 ciArPSBhbGxvY19zaXplOwogCX0KIAorCUdFTV9CVUdfT04oZ3VjLT5hZHNfZ29sZGVuX2N0eHRf c2l6ZSAhPSB0b3RhbF9zaXplKTsKK30KKworc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3Qo Z3VjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OworCXN0cnVj dCBfX2d1Y19hZHNfYmxvYiAqYmxvYiA9IGd1Yy0+YWRzX2Jsb2I7CisJdTMyIGJhc2U7CisKKwkv KiBHdUMgc2NoZWR1bGluZyBwb2xpY2llcyAqLworCWd1Y19wb2xpY2llc19pbml0KGd1YywgJmJs b2ItPnBvbGljaWVzKTsKKwogCS8qIFN5c3RlbSBpbmZvICovCi0JYmxvYi0+c3lzdGVtX2luZm8u ZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1JFTkRFUl9DTEFTU10gPSAxOwotCWJsb2ItPnN5c3Rl bV9pbmZvLmVuZ2luZV9lbmFibGVkX21hc2tzW0dVQ19CTElUVEVSX0NMQVNTXSA9IDE7Ci0JYmxv Yi0+c3lzdGVtX2luZm8uZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1ZJREVPX0NMQVNTXSA9IFZE Qk9YX01BU0soZ3QpOwotCWJsb2ItPnN5c3RlbV9pbmZvLmVuZ2luZV9lbmFibGVkX21hc2tzW0dV Q19WSURFT0VOSEFOQ0VfQ0xBU1NdID0gVkVCT1hfTUFTSyhndCk7CisJZmlsbF9lbmdpbmVfZW5h YmxlX21hc2tzKGd0LCAmYmxvYi0+c3lzdGVtX2luZm8pOwogCiAJYmxvYi0+c3lzdGVtX2luZm8u Z2VuZXJpY19ndF9zeXNpbmZvW0dVQ19HRU5FUklDX0dUX1NZU0lORk9fU0xJQ0VfRU5BQkxFRF0g PQogCQlod2VpZ2h0OChndC0+aW5mby5zc2V1LnNsaWNlX21hc2spOwpAQCAtMTQ1LDYgKzUxMyw5 IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJ CSBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJKSArIDE7CiAJfQogCisJLyogR29sZGVuIGNvbnRl eHRzIGZvciByZS1pbml0aWFsaXNpbmcgYWZ0ZXIgYSB3YXRjaGRvZyByZXNldCAqLworCWd1Y19w cmVwX2dvbGRlbl9jb250ZXh0KGd1YywgYmxvYik7CisKIAlndWNfbWFwcGluZ190YWJsZV9pbml0 KGd1Y190b19ndChndWMpLCAmYmxvYi0+c3lzdGVtX2luZm8pOwogCiAJYmFzZSA9IGludGVsX2d1 Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+YWRzX3ZtYSk7CkBAIC0xNTMsNiArNTI0LDkgQEAgc3Rh dGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWJsb2ItPmFk cy5zY2hlZHVsZXJfcG9saWNpZXMgPSBiYXNlICsgcHRyX29mZnNldChibG9iLCBwb2xpY2llcyk7 CiAJYmxvYi0+YWRzLmd0X3N5c3RlbV9pbmZvID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgc3lz dGVtX2luZm8pOwogCisJLyogTU1JTyBzYXZlL3Jlc3RvcmUgbGlzdCAqLworCWd1Y19tbWlvX3Jl Z19zdGF0ZV9pbml0KGd1YywgYmxvYik7CisKIAkvKiBQcml2YXRlIERhdGEgKi8KIAlibG9iLT5h ZHMucHJpdmF0ZV9kYXRhID0gYmFzZSArIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChndWMp OwogCkBAIC0xNzMsNiArNTQ3LDE5IEBAIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiAKIAlHRU1fQlVHX09OKGd1Yy0+YWRzX3ZtYSk7CiAKKwkvKiBOZWVk IHRvIGNhbGN1bGF0ZSB0aGUgcmVnIHN0YXRlIHNpemUgZHluYW1pY2FsbHk6ICovCisJcmV0ID0g Z3VjX21taW9fcmVnX3N0YXRlX3F1ZXJ5KGd1Yyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisJZ3VjLT5hZHNfcmVnc2V0X3NpemUgPSByZXQ7CisKKwkvKiBMaWtld2lzZSB0aGUgZ29s ZGVuIGNvbnRleHRzOiAqLworCXJldCA9IGd1Y19wcmVwX2dvbGRlbl9jb250ZXh0KGd1YywgTlVM TCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJZ3VjLT5hZHNfZ29sZGVuX2N0eHRf c2l6ZSA9IHJldDsKKworCS8qIE5vdyB0aGUgdG90YWwgc2l6ZSBjYW4gYmUgZGV0ZXJtaW5lZDog Ki8KIAlzaXplID0gZ3VjX2Fkc19ibG9iX3NpemUoZ3VjKTsKIAogCXJldCA9IGludGVsX2d1Y19h bGxvY2F0ZV9hbmRfbWFwX3ZtYShndWMsIHNpemUsICZndWMtPmFkc192bWEsCkBAIC0xODUsNiAr NTcyLDE4IEBAIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp CiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgaW50ZWxfZ3VjX2Fkc19pbml0X2xhdGUoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCS8qCisJICogVGhlIGdvbGRlbiBjb250ZXh0IHNldHVwIHJlcXVp cmVzIHRoZSBzYXZlZCBlbmdpbmUgc3RhdGUgZnJvbQorCSAqIF9fZW5naW5lc19yZWNvcmRfZGVm YXVsdHMoKS4gSG93ZXZlciwgdGhhdCByZXF1aXJlcyBlbmdpbmVzIHRvIGJlCisJICogb3BlcmF0 aW9uYWwgd2hpY2ggbWVhbnMgdGhlIEFEUyBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGNvbmZpZ3Vy ZWQuCisJICogRm9ydHVuYXRlbHksIHRoZSBnb2xkZW4gY29udGV4dCBzdGF0ZSBpcyBub3QgbmVl ZGVkIHVudGlsIGEgaGFuZworCSAqIG9jY3Vycywgc28gaXQgY2FuIGJlIGZpbGxlZCBpbiBkdXJp bmcgdGhpcyBsYXRlIGluaXQgcGhhc2UuCisJICovCisJZ3VjX2luaXRfZ29sZGVuX2NvbnRleHQo Z3VjKTsKK30KKwogdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAq Z3VjKQogewogCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192bWEsIEk5MTVf Vk1BX1JFTEVBU0VfTUFQKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Y19hZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19h ZHMuaAppbmRleCBiMDBkM2FlMTExM2EuLjNkODUwNTFkNTdlNCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuaApAQCAtNyw5ICs3LDEzIEBACiAjZGVmaW5lIF9J TlRFTF9HVUNfQURTX0hfCiAKIHN0cnVjdCBpbnRlbF9ndWM7CitzdHJ1Y3QgZHJtX3ByaW50ZXI7 CiAKIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogdm9p ZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKK3ZvaWQgaW50 ZWxfZ3VjX2Fkc19pbml0X2xhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIHZvaWQgaW50ZWxf Z3VjX2Fkc19yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwordm9pZCBpbnRlbF9ndWNfYWRz X3ByaW50X3BvbGljeV9pbmZvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkgICAgIHN0cnVj dCBkcm1fcHJpbnRlciAqcCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfY3QuYwppbmRleCA4M2VjNjBlYTNmODkuLjkyOTc2ZDIwNTQ3OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKQEAgLTczLDYgKzczLDcgQEAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgZHJtX2RldmljZSAqY3RfdG9fZHJtKHN0cnVjdCBpbnRlbF9ndWNf Y3QgKmN0KQogI2RlZmluZSBDVEJfREVTQ19TSVpFCQlBTElHTihzaXplb2Yoc3RydWN0IGd1Y19j dF9idWZmZXJfZGVzYyksIFNaXzJLKQogI2RlZmluZSBDVEJfSDJHX0JVRkZFUl9TSVpFCShTWl80 SykKICNkZWZpbmUgQ1RCX0cySF9CVUZGRVJfU0laRQkoNCAqIENUQl9IMkdfQlVGRkVSX1NJWkUp CisjZGVmaW5lIEcySF9ST09NX0JVRkZFUl9TSVpFCShDVEJfRzJIX0JVRkZFUl9TSVpFIC8gNCkK IAogc3RydWN0IGN0X3JlcXVlc3QgewogCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKQEAgLTEwOCw2 ICsxMDksNyBAQCB2b2lkIGludGVsX2d1Y19jdF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWNf Y3QgKmN0KQogCUlOSVRfTElTVF9IRUFEKCZjdC0+cmVxdWVzdHMuaW5jb21pbmcpOwogCUlOSVRf V09SSygmY3QtPnJlcXVlc3RzLndvcmtlciwgY3RfaW5jb21pbmdfcmVxdWVzdF93b3JrZXJfZnVu Yyk7CiAJdGFza2xldF9zZXR1cCgmY3QtPnJlY2VpdmVfdGFza2xldCwgY3RfcmVjZWl2ZV90YXNr bGV0X2Z1bmMpOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmN0LT53cSk7CiB9CiAKIHN0YXRpYyBp bmxpbmUgY29uc3QgY2hhciAqZ3VjX2N0X2J1ZmZlcl90eXBlX3RvX3N0cih1MzIgdHlwZSkKQEAg LTEyOSwyMyArMTMxLDI3IEBAIHN0YXRpYyB2b2lkIGd1Y19jdF9idWZmZXJfZGVzY19pbml0KHN0 cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MgKmRlc2MpCiAKIHN0YXRpYyB2b2lkIGd1Y19jdF9idWZm ZXJfcmVzZXQoc3RydWN0IGludGVsX2d1Y19jdF9idWZmZXIgKmN0YikKIHsKKwl1MzIgc3BhY2U7 CisKIAljdGItPmJyb2tlbiA9IGZhbHNlOwogCWN0Yi0+dGFpbCA9IDA7CiAJY3RiLT5oZWFkID0g MDsKLQljdGItPnNwYWNlID0gQ0lSQ19TUEFDRShjdGItPnRhaWwsIGN0Yi0+aGVhZCwgY3RiLT5z aXplKTsKKwlzcGFjZSA9IENJUkNfU1BBQ0UoY3RiLT50YWlsLCBjdGItPmhlYWQsIGN0Yi0+c2l6 ZSkgLSBjdGItPnJlc3Zfc3BhY2U7CisJYXRvbWljX3NldCgmY3RiLT5zcGFjZSwgc3BhY2UpOwog CiAJZ3VjX2N0X2J1ZmZlcl9kZXNjX2luaXQoY3RiLT5kZXNjKTsKIH0KIAogc3RhdGljIHZvaWQg Z3VjX2N0X2J1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIsCiAJCQkg ICAgICAgc3RydWN0IGd1Y19jdF9idWZmZXJfZGVzYyAqZGVzYywKLQkJCSAgICAgICB1MzIgKmNt ZHMsIHUzMiBzaXplX2luX2J5dGVzKQorCQkJICAgICAgIHUzMiAqY21kcywgdTMyIHNpemVfaW5f Ynl0ZXMsIHUzMiByZXN2X3NwYWNlKQogewogCUdFTV9CVUdfT04oc2l6ZV9pbl9ieXRlcyAlIDQp OwogCiAJY3RiLT5kZXNjID0gZGVzYzsKIAljdGItPmNtZHMgPSBjbWRzOwogCWN0Yi0+c2l6ZSA9 IHNpemVfaW5fYnl0ZXMgLyA0OworCWN0Yi0+cmVzdl9zcGFjZSA9IHJlc3Zfc3BhY2UgLyA0Owog CiAJZ3VjX2N0X2J1ZmZlcl9yZXNldChjdGIpOwogfQpAQCAtMjI2LDYgKzIzMiw3IEBAIGludCBp bnRlbF9ndWNfY3RfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKIAlzdHJ1Y3QgZ3VjX2N0 X2J1ZmZlcl9kZXNjICpkZXNjOwogCXUzMiBibG9iX3NpemU7CiAJdTMyIGNtZHNfc2l6ZTsKKwl1 MzIgcmVzdl9zcGFjZTsKIAl2b2lkICpibG9iOwogCXUzMiAqY21kczsKIAlpbnQgZXJyOwpAQCAt MjUwLDE5ICsyNTcsMjMgQEAgaW50IGludGVsX2d1Y19jdF9pbml0KHN0cnVjdCBpbnRlbF9ndWNf Y3QgKmN0KQogCWRlc2MgPSBibG9iOwogCWNtZHMgPSBibG9iICsgMiAqIENUQl9ERVNDX1NJWkU7 CiAJY21kc19zaXplID0gQ1RCX0gyR19CVUZGRVJfU0laRTsKLQlDVF9ERUJVRyhjdCwgIiVzIGRl c2MgJSN0eCBjbWRzICUjdHggc2l6ZSAldVxuIiwgInNlbmQiLAotCQkgcHRyZGlmZihkZXNjLCBi bG9iKSwgcHRyZGlmZihjbWRzLCBibG9iKSwgY21kc19zaXplKTsKKwlyZXN2X3NwYWNlID0gMDsK KwlDVF9ERUJVRyhjdCwgIiVzIGRlc2MgJSN0eCBjbWRzICUjdHggc2l6ZSAldS8ldVxuIiwgInNl bmQiLAorCQkgcHRyZGlmZihkZXNjLCBibG9iKSwgcHRyZGlmZihjbWRzLCBibG9iKSwgY21kc19z aXplLAorCQkgcmVzdl9zcGFjZSk7CiAKLQlndWNfY3RfYnVmZmVyX2luaXQoJmN0LT5jdGJzLnNl bmQsIGRlc2MsIGNtZHMsIGNtZHNfc2l6ZSk7CisJZ3VjX2N0X2J1ZmZlcl9pbml0KCZjdC0+Y3Ri cy5zZW5kLCBkZXNjLCBjbWRzLCBjbWRzX3NpemUsIHJlc3Zfc3BhY2UpOwogCiAJLyogc3RvcmUg cG9pbnRlcnMgdG8gZGVzYyBhbmQgY21kcyBmb3IgcmVjdiBjdGIgKi8KIAlkZXNjID0gYmxvYiAr IENUQl9ERVNDX1NJWkU7CiAJY21kcyA9IGJsb2IgKyAyICogQ1RCX0RFU0NfU0laRSArIENUQl9I MkdfQlVGRkVSX1NJWkU7CiAJY21kc19zaXplID0gQ1RCX0cySF9CVUZGRVJfU0laRTsKLQlDVF9E RUJVRyhjdCwgIiVzIGRlc2MgJSN0eCBjbWRzICUjdHggc2l6ZSAldVxuIiwgInJlY3YiLAotCQkg cHRyZGlmZihkZXNjLCBibG9iKSwgcHRyZGlmZihjbWRzLCBibG9iKSwgY21kc19zaXplKTsKKwly ZXN2X3NwYWNlID0gRzJIX1JPT01fQlVGRkVSX1NJWkU7CisJQ1RfREVCVUcoY3QsICIlcyBkZXNj ICUjdHggY21kcyAlI3R4IHNpemUgJXUvJXVcbiIsICJyZWN2IiwKKwkJIHB0cmRpZmYoZGVzYywg YmxvYiksIHB0cmRpZmYoY21kcywgYmxvYiksIGNtZHNfc2l6ZSwKKwkJIHJlc3Zfc3BhY2UpOwog Ci0JZ3VjX2N0X2J1ZmZlcl9pbml0KCZjdC0+Y3Ricy5yZWN2LCBkZXNjLCBjbWRzLCBjbWRzX3Np emUpOworCWd1Y19jdF9idWZmZXJfaW5pdCgmY3QtPmN0YnMucmVjdiwgZGVzYywgY21kcywgY21k c19zaXplLCByZXN2X3NwYWNlKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDYxLDggKzQ3Miw4IEBA IHN0YXRpYyBpbnQgY3Rfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCiAKIAkvKiB1cGRh dGUgbG9jYWwgY29waWVzICovCiAJY3RiLT50YWlsID0gdGFpbDsKLQlHRU1fQlVHX09OKGN0Yi0+ c3BhY2UgPCBsZW4gKyBHVUNfQ1RCX0hEUl9MRU4pOwotCWN0Yi0+c3BhY2UgLT0gbGVuICsgR1VD X0NUQl9IRFJfTEVOOworCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJmN0Yi0+c3BhY2UpIDwgbGVu ICsgR1VDX0NUQl9IRFJfTEVOKTsKKwlhdG9taWNfc3ViKGxlbiArIEdVQ19DVEJfSERSX0xFTiwg JmN0Yi0+c3BhY2UpOwogCiAJLyogbm93IHVwZGF0ZSBkZXNjcmlwdG9yICovCiAJV1JJVEVfT05D RShkZXNjLT50YWlsLCB0YWlsKTsKQEAgLTUzNyw2ICs1NDgsMzIgQEAgc3RhdGljIGlubGluZSBi b29sIGN0X2RlYWRsb2NrZWQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QpCiAJcmV0dXJuIHJldDsK IH0KIAorc3RhdGljIGlubGluZSBib29sIGcyaF9oYXNfcm9vbShzdHJ1Y3QgaW50ZWxfZ3VjX2N0 ICpjdCwgdTMyIGcyaF9sZW5fZHcpCit7CisJc3RydWN0IGludGVsX2d1Y19jdF9idWZmZXIgKmN0 YiA9ICZjdC0+Y3Ricy5yZWN2OworCisJLyoKKwkgKiBXZSBsZWF2ZSBhIGNlcnRhaW4gYW1vdW50 IG9mIHNwYWNlIGluIHRoZSBHMkggQ1RCIGJ1ZmZlciBmb3IKKwkgKiB1bmV4cGVjdGVkIEcySCBD VEJzIChlLmcuIGxvZ2dpbmcsIGVuZ2luZSBoYW5nLCBldGMuLi4pCisJICovCisJcmV0dXJuICFn MmhfbGVuX2R3IHx8IGF0b21pY19yZWFkKCZjdGItPnNwYWNlKSA+PSBnMmhfbGVuX2R3OworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgZzJoX3Jlc2VydmVfc3BhY2Uoc3RydWN0IGludGVsX2d1Y19j dCAqY3QsIHUzMiBnMmhfbGVuX2R3KQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0LT5jdGJz LnNlbmQubG9jayk7CisKKwlHRU1fQlVHX09OKCFnMmhfaGFzX3Jvb20oY3QsIGcyaF9sZW5fZHcp KTsKKworCWlmIChnMmhfbGVuX2R3KQorCQlhdG9taWNfc3ViKGcyaF9sZW5fZHcsICZjdC0+Y3Ri cy5yZWN2LnNwYWNlKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGcyaF9yZWxlYXNlX3NwYWNl KHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgZzJoX2xlbl9kdykKK3sKKwlhdG9taWNfYWRk KGcyaF9sZW5fZHcsICZjdC0+Y3Ricy5yZWN2LnNwYWNlKTsKK30KKwogc3RhdGljIGlubGluZSBi b29sIGgyZ19oYXNfcm9vbShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgdTMyIGxlbl9kdykKIHsK IAlzdHJ1Y3QgaW50ZWxfZ3VjX2N0X2J1ZmZlciAqY3RiID0gJmN0LT5jdGJzLnNlbmQ7CkBAIC01 NDQsNyArNTgxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGgyZ19oYXNfcm9vbShzdHJ1Y3QgaW50 ZWxfZ3VjX2N0ICpjdCwgdTMyIGxlbl9kdykKIAl1MzIgaGVhZDsKIAl1MzIgc3BhY2U7CiAKLQlp ZiAoY3RiLT5zcGFjZSA+PSBsZW5fZHcpCisJaWYgKGF0b21pY19yZWFkKCZjdGItPnNwYWNlKSA+ PSBsZW5fZHcpCiAJCXJldHVybiB0cnVlOwogCiAJaGVhZCA9IFJFQURfT05DRShkZXNjLT5oZWFk KTsKQEAgLTU1NywxNiArNTk0LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoMmdfaGFzX3Jvb20o c3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHUzMiBsZW5fZHcpCiAJfQogCiAJc3BhY2UgPSBDSVJD X1NQQUNFKGN0Yi0+dGFpbCwgaGVhZCwgY3RiLT5zaXplKTsKLQljdGItPnNwYWNlID0gc3BhY2U7 CisJYXRvbWljX3NldCgmY3RiLT5zcGFjZSwgc3BhY2UpOwogCiAJcmV0dXJuIHNwYWNlID49IGxl bl9kdzsKIH0KIAotc3RhdGljIGludCBoYXNfcm9vbV9uYihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpj dCwgdTMyIGxlbl9kdykKK3N0YXRpYyBpbnQgaGFzX3Jvb21fbmIoc3RydWN0IGludGVsX2d1Y19j dCAqY3QsIHUzMiBoMmdfZHcsIHUzMiBnMmhfZHcpCiB7CiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgm Y3QtPmN0YnMuc2VuZC5sb2NrKTsKIAotCWlmICh1bmxpa2VseSghaDJnX2hhc19yb29tKGN0LCBs ZW5fZHcpKSkgeworCWlmICh1bmxpa2VseSghaDJnX2hhc19yb29tKGN0LCBoMmdfZHcpIHx8ICFn MmhfaGFzX3Jvb20oY3QsIGcyaF9kdykpKSB7CiAJCWlmIChjdC0+c3RhbGxfdGltZSA9PSBLVElN RV9NQVgpCiAJCQljdC0+c3RhbGxfdGltZSA9IGt0aW1lX2dldCgpOwogCkBAIC01ODAsNiArNjE3 LDkgQEAgc3RhdGljIGludCBoYXNfcm9vbV9uYihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgdTMy IGxlbl9kdykKIAlyZXR1cm4gMDsKIH0KIAorI2RlZmluZSBHMkhfTEVOX0RXKGYpIFwKKwlGSUVM RF9HRVQoSU5URUxfR1VDX0NUX1NFTkRfRzJIX0RXX01BU0ssIGYpID8gXAorCUZJRUxEX0dFVChJ TlRFTF9HVUNfQ1RfU0VORF9HMkhfRFdfTUFTSywgZikgKyBHVUNfQ1RCX0hYR19NU0dfTUlOX0xF TiA6IDAKIHN0YXRpYyBpbnQgY3Rfc2VuZF9uYihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKIAkJ ICAgICAgY29uc3QgdTMyICphY3Rpb24sCiAJCSAgICAgIHUzMiBsZW4sCkBAIC01ODcsMTIgKzYy NywxMyBAQCBzdGF0aWMgaW50IGN0X3NlbmRfbmIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsCiB7 CiAJc3RydWN0IGludGVsX2d1Y19jdF9idWZmZXIgKmN0YiA9ICZjdC0+Y3Ricy5zZW5kOwogCXVu c2lnbmVkIGxvbmcgc3Bpbl9mbGFnczsKKwl1MzIgZzJoX2xlbl9kdyA9IEcySF9MRU5fRFcoZmxh Z3MpOwogCXUzMiBmZW5jZTsKIAlpbnQgcmV0OwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmN0Yi0+ bG9jaywgc3Bpbl9mbGFncyk7CiAKLQlyZXQgPSBoYXNfcm9vbV9uYihjdCwgbGVuICsgR1VDX0NU Ql9IRFJfTEVOKTsKKwlyZXQgPSBoYXNfcm9vbV9uYihjdCwgbGVuICsgR1VDX0NUQl9IRFJfTEVO LCBnMmhfbGVuX2R3KTsKIAlpZiAodW5saWtlbHkocmV0KSkKIAkJZ290byBvdXQ7CiAKQEAgLTYw MSw2ICs2NDIsNyBAQCBzdGF0aWMgaW50IGN0X3NlbmRfbmIoc3RydWN0IGludGVsX2d1Y19jdCAq Y3QsCiAJaWYgKHVubGlrZWx5KHJldCkpCiAJCWdvdG8gb3V0OwogCisJZzJoX3Jlc2VydmVfc3Bh Y2UoY3QsIGcyaF9sZW5fZHcpOwogCWludGVsX2d1Y19ub3RpZnkoY3RfdG9fZ3VjKGN0KSk7CiAK IG91dDoKQEAgLTYzMiwxMSArNjc0LDEzIEBAIHN0YXRpYyBpbnQgY3Rfc2VuZChzdHJ1Y3QgaW50 ZWxfZ3VjX2N0ICpjdCwKIAkvKgogCSAqIFdlIHVzZSBhIGxhenkgc3BpbiB3YWl0IGxvb3AgaGVy ZSBhcyB3ZSBiZWxpZXZlIHRoYXQgaWYgdGhlIENUCiAJICogYnVmZmVycyBhcmUgc2l6ZWQgY29y cmVjdGx5IHRoZSBmbG93IGNvbnRyb2wgY29uZGl0aW9uIHNob3VsZCBiZQotCSAqIHJhcmUuCisJ ICogcmFyZS4gUmVzZXJ2aW5nIHRoZSBtYXhpbXVtIHNpemUgaW4gdGhlIEcySCBjcmVkaXRzIGFz IHdlIGRvbid0IGtub3cKKwkgKiBob3cgYmlnIHRoZSByZXNwb25zZSBpcyBnb2luZyB0byBiZS4K IAkgKi8KIHJldHJ5OgogCXNwaW5fbG9ja19pcnFzYXZlKCZjdGItPmxvY2ssIGZsYWdzKTsKLQlp ZiAodW5saWtlbHkoIWgyZ19oYXNfcm9vbShjdCwgbGVuICsgR1VDX0NUQl9IRFJfTEVOKSkpIHsK KwlpZiAodW5saWtlbHkoIWgyZ19oYXNfcm9vbShjdCwgbGVuICsgR1VDX0NUQl9IRFJfTEVOKSB8 fAorCQkgICAgICFnMmhfaGFzX3Jvb20oY3QsIEdVQ19DVEJfSFhHX01TR19NQVhfTEVOKSkpIHsK IAkJaWYgKGN0LT5zdGFsbF90aW1lID09IEtUSU1FX01BWCkKIAkJCWN0LT5zdGFsbF90aW1lID0g a3RpbWVfZ2V0KCk7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0Yi0+bG9jaywgZmxhZ3Mp OwpAQCAtNjY0LDYgKzcwOCw3IEBAIHN0YXRpYyBpbnQgY3Rfc2VuZChzdHJ1Y3QgaW50ZWxfZ3Vj X2N0ICpjdCwKIAlzcGluX3VubG9jaygmY3QtPnJlcXVlc3RzLmxvY2spOwogCiAJZXJyID0gY3Rf d3JpdGUoY3QsIGFjdGlvbiwgbGVuLCBmZW5jZSwgMCk7CisJZzJoX3Jlc2VydmVfc3BhY2UoY3Qs IEdVQ19DVEJfSFhHX01TR19NQVhfTEVOKTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0 Yi0+bG9jaywgZmxhZ3MpOwogCkBAIC02NzMsNiArNzE4LDcgQEAgc3RhdGljIGludCBjdF9zZW5k KHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAogCWludGVsX2d1Y19ub3RpZnkoY3RfdG9fZ3VjKGN0 KSk7CiAKIAllcnIgPSB3YWl0X2Zvcl9jdF9yZXF1ZXN0X3VwZGF0ZSgmcmVxdWVzdCwgc3RhdHVz KTsKKwlnMmhfcmVsZWFzZV9zcGFjZShjdCwgR1VDX0NUQl9IWEdfTVNHX01BWF9MRU4pOwogCWlm ICh1bmxpa2VseShlcnIpKQogCQlnb3RvIHVubGluazsKIApAQCAtNzExLDcgKzc1NywxMCBAQCBp bnQgaW50ZWxfZ3VjX2N0X3NlbmQoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIGNvbnN0IHUzMiAq YWN0aW9uLCB1MzIgbGVuLAogCWludCByZXQ7CiAKIAlpZiAodW5saWtlbHkoIWN0LT5lbmFibGVk KSkgewotCQlXQVJOKDEsICJVbmV4cGVjdGVkIHNlbmQ6IGFjdGlvbj0lI3hcbiIsICphY3Rpb24p OworCQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjdF90b19ndWMoY3QpOworCQlzdHJ1Y3QgaW50 ZWxfdWMgKnVjID0gY29udGFpbmVyX29mKGd1Yywgc3RydWN0IGludGVsX3VjLCBndWMpOworCisJ CVdBUk4oIXVjLT5yZXNldF9pbl9wcm9ncmVzcywgIlVuZXhwZWN0ZWQgc2VuZDogYWN0aW9uPSUj eFxuIiwgKmFjdGlvbik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIApAQCAtOTI4LDYgKzk3Nywx OSBAQCBzdGF0aWMgaW50IGN0X3Byb2Nlc3NfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpj dCwgc3RydWN0IGN0X2luY29taW5nX21zZyAqcgogCWNhc2UgSU5URUxfR1VDX0FDVElPTl9ERUZB VUxUOgogCQlyZXQgPSBpbnRlbF9ndWNfdG9faG9zdF9wcm9jZXNzX3JlY3ZfbXNnKGd1YywgcGF5 bG9hZCwgbGVuKTsKIAkJYnJlYWs7CisJY2FzZSBJTlRFTF9HVUNfQUNUSU9OX0RFUkVHSVNURVJf Q09OVEVYVF9ET05FOgorCQlyZXQgPSBpbnRlbF9ndWNfZGVyZWdpc3Rlcl9kb25lX3Byb2Nlc3Nf bXNnKGd1YywgcGF5bG9hZCwKKwkJCQkJCQkgICAgbGVuKTsKKwkJYnJlYWs7CisJY2FzZSBJTlRF TF9HVUNfQUNUSU9OX1NDSEVEX0NPTlRFWFRfTU9ERV9ET05FOgorCQlyZXQgPSBpbnRlbF9ndWNf c2NoZWRfZG9uZV9wcm9jZXNzX21zZyhndWMsIHBheWxvYWQsIGxlbik7CisJCWJyZWFrOworCWNh c2UgSU5URUxfR1VDX0FDVElPTl9DT05URVhUX1JFU0VUX05PVElGSUNBVElPTjoKKwkJcmV0ID0g aW50ZWxfZ3VjX2NvbnRleHRfcmVzZXRfcHJvY2Vzc19tc2coZ3VjLCBwYXlsb2FkLCBsZW4pOwor CQlicmVhazsKKwljYXNlIElOVEVMX0dVQ19BQ1RJT05fRU5HSU5FX0ZBSUxVUkVfTk9USUZJQ0FU SU9OOgorCQlyZXQgPSBpbnRlbF9ndWNfZW5naW5lX2ZhaWx1cmVfcHJvY2Vzc19tc2coZ3VjLCBw YXlsb2FkLCBsZW4pOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRU9QTk9UU1VQUDsK IAkJYnJlYWs7CkBAIC05ODUsMTAgKzEwNDcsMjIgQEAgc3RhdGljIHZvaWQgY3RfaW5jb21pbmdf cmVxdWVzdF93b3JrZXJfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiBzdGF0aWMgaW50IGN0 X2hhbmRsZV9ldmVudChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgc3RydWN0IGN0X2luY29taW5n X21zZyAqcmVxdWVzdCkKIHsKIAljb25zdCB1MzIgKmh4ZyA9ICZyZXF1ZXN0LT5tc2dbR1VDX0NU Ql9NU0dfTUlOX0xFTl07CisJdTMyIGFjdGlvbiA9IEZJRUxEX0dFVChHVUNfSFhHX0VWRU5UX01T R18wX0FDVElPTiwgaHhnWzBdKTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJR0VNX0JVR19P TihGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBFLCBoeGdbMF0pICE9IEdVQ19IWEdfVFlQRV9F VkVOVCk7CiAKKwkvKgorCSAqIEFkanVzdGluZyB0aGUgc3BhY2UgbXVzdCBiZSBkb25lIGluIElS USBvciBkZWFkbG9jayBjYW4gb2NjdXIgYXMgdGhlCisJICogQ1RCIHByb2Nlc3NpbmcgaW4gdGhl IGJlbG93IHdvcmtxdWV1ZSBjYW4gc2VuZCBDVEJzIHdoaWNoIGNyZWF0ZXMgYQorCSAqIGNpcmN1 bGFyIGRlcGVuZGVuY3kgaWYgdGhlIHNwYWNlIHdhcyByZXR1cm5lZCB0aGVyZS4KKwkgKi8KKwlz d2l0Y2ggKGFjdGlvbikgeworCWNhc2UgSU5URUxfR1VDX0FDVElPTl9TQ0hFRF9DT05URVhUX01P REVfRE9ORToKKwljYXNlIElOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT05URVhUX0RPTkU6 CisJCWcyaF9yZWxlYXNlX3NwYWNlKGN0LCByZXF1ZXN0LT5zaXplKTsKKwl9CisKIAlzcGluX2xv Y2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RzLmxvY2ssIGZsYWdzKTsKIAlsaXN0X2FkZF90YWlsKCZy ZXF1ZXN0LT5saW5rLCAmY3QtPnJlcXVlc3RzLmluY29taW5nKTsKIAlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjdC0+cmVxdWVzdHMubG9jaywgZmxhZ3MpOwpAQCAtMTEwNiwzICsxMTgwLDI1IEBA IHZvaWQgaW50ZWxfZ3VjX2N0X2V2ZW50X2hhbmRsZXIoc3RydWN0IGludGVsX2d1Y19jdCAqY3Qp CiAKIAljdF90cnlfcmVjZWl2ZV9tZXNzYWdlKGN0KTsKIH0KKwordm9pZCBpbnRlbF9ndWNfY3Rf cHJpbnRfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKKwkJCSAgICAgc3RydWN0IGRybV9w cmludGVyICpwKQoreworCWRybV9wcmludGYocCwgIkNUICVzXG4iLCBlbmFibGVkZGlzYWJsZWQo Y3QtPmVuYWJsZWQpKTsKKworCWlmICghY3QtPmVuYWJsZWQpCisJCXJldHVybjsKKworCWRybV9w cmludGYocCwgIkgyRyBTcGFjZTogJXVcbiIsCisJCSAgIGF0b21pY19yZWFkKCZjdC0+Y3Ricy5z ZW5kLnNwYWNlKSAqIDQpOworCWRybV9wcmludGYocCwgIkhlYWQ6ICV1XG4iLAorCQkgICBjdC0+ Y3Ricy5zZW5kLmRlc2MtPmhlYWQpOworCWRybV9wcmludGYocCwgIlRhaWw6ICV1XG4iLAorCQkg ICBjdC0+Y3Ricy5zZW5kLmRlc2MtPnRhaWwpOworCWRybV9wcmludGYocCwgIkcySCBTcGFjZTog JXVcbiIsCisJCSAgIGF0b21pY19yZWFkKCZjdC0+Y3Ricy5yZWN2LnNwYWNlKSAqIDQpOworCWRy bV9wcmludGYocCwgIkhlYWQ6ICV1XG4iLAorCQkgICBjdC0+Y3Ricy5yZWN2LmRlc2MtPmhlYWQp OworCWRybV9wcmludGYocCwgIlRhaWw6ICV1XG4iLAorCQkgICBjdC0+Y3Ricy5yZWN2LmRlc2Mt PnRhaWwpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX2N0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAppbmRl eCBlZGQxYmJhMDQ0NWQuLjdiMzQwMjZkMjY0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX2N0LmgKQEAgLTEwLDExICsxMCwxMyBAQAogI2luY2x1ZGUgPGxpbnV4L3Nw aW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CiAjaW5jbHVkZSA8bGludXgv a3RpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CiAKICNpbmNsdWRlICJpbnRlbF9ndWNf ZndpZi5oIgogCiBzdHJ1Y3QgaTkxNV92bWE7CiBzdHJ1Y3QgaW50ZWxfZ3VjOworc3RydWN0IGRy bV9wcmludGVyOwogCiAvKioKICAqIERPQzogQ29tbWFuZCBUcmFuc3BvcnQgKENUKS4KQEAgLTMz LDYgKzM1LDcgQEAgc3RydWN0IGludGVsX2d1YzsKICAqIEBkZXNjOiBwb2ludGVyIHRvIHRoZSBi dWZmZXIgZGVzY3JpcHRvcgogICogQGNtZHM6IHBvaW50ZXIgdG8gdGhlIGNvbW1hbmRzIGJ1ZmZl cgogICogQHNpemU6IHNpemUgb2YgdGhlIGNvbW1hbmRzIGJ1ZmZlciBpbiBkd29yZHMKKyAqIEBy ZXN2X3NwYWNlOiByZXNlcnZlZCBzcGFjZSBpbiBidWZmZXIgaW4gZHdvcmRzCiAgKiBAaGVhZDog bG9jYWwgc2hhZG93IGNvcHkgb2YgaGVhZCBpbiBkd29yZHMKICAqIEB0YWlsOiBsb2NhbCBzaGFk b3cgY29weSBvZiB0YWlsIGluIGR3b3JkcwogICogQHNwYWNlOiBsb2NhbCBzaGFkb3cgY29weSBv ZiBzcGFjZSBpbiBkd29yZHMKQEAgLTQzLDkgKzQ2LDEwIEBAIHN0cnVjdCBpbnRlbF9ndWNfY3Rf YnVmZmVyIHsKIAlzdHJ1Y3QgZ3VjX2N0X2J1ZmZlcl9kZXNjICpkZXNjOwogCXUzMiAqY21kczsK IAl1MzIgc2l6ZTsKKwl1MzIgcmVzdl9zcGFjZTsKIAl1MzIgdGFpbDsKIAl1MzIgaGVhZDsKLQl1 MzIgc3BhY2U7CisJYXRvbWljX3Qgc3BhY2U7CiAJYm9vbCBicm9rZW47CiB9OwogCkBAIC02Niw2 ICs3MCw5IEBAIHN0cnVjdCBpbnRlbF9ndWNfY3QgewogCiAJc3RydWN0IHRhc2tsZXRfc3RydWN0 IHJlY2VpdmVfdGFza2xldDsKIAorCS8qKiBAd3E6IHdhaXQgcXVldWUgZm9yIGcyaCBjaGFuZW5s ICovCisJd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7CisKIAlzdHJ1Y3QgewogCQl1MTYgbGFzdF9mZW5j ZTsgLyogbGFzdCBmZW5jZSB1c2VkIHRvIHNlbmQgcmVxdWVzdCAqLwogCkBAIC05Nyw4ICsxMDQs MTUgQEAgc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19jdF9lbmFibGVkKHN0cnVjdCBpbnRl bF9ndWNfY3QgKmN0KQogfQogCiAjZGVmaW5lIElOVEVMX0dVQ19DVF9TRU5EX05CCQlCSVQoMzEp CisjZGVmaW5lIElOVEVMX0dVQ19DVF9TRU5EX0cySF9EV19TSElGVAkwCisjZGVmaW5lIElOVEVM X0dVQ19DVF9TRU5EX0cySF9EV19NQVNLCSgweGZmIDw8IElOVEVMX0dVQ19DVF9TRU5EX0cySF9E V19TSElGVCkKKyNkZWZpbmUgTUFLRV9TRU5EX0ZMQUdTKGxlbikgXAorCSh7R0VNX0JVR19PTigh RklFTERfRklUKElOVEVMX0dVQ19DVF9TRU5EX0cySF9EV19NQVNLLCBsZW4pKTsgXAorCShGSUVM RF9QUkVQKElOVEVMX0dVQ19DVF9TRU5EX0cySF9EV19NQVNLLCBsZW4pIHwgSU5URUxfR1VDX0NU X1NFTkRfTkIpO30pCiBpbnQgaW50ZWxfZ3VjX2N0X3NlbmQoc3RydWN0IGludGVsX2d1Y19jdCAq Y3QsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAogCQkgICAgICB1MzIgKnJlc3BvbnNlX2J1 ZiwgdTMyIHJlc3BvbnNlX2J1Zl9zaXplLCB1MzIgZmxhZ3MpOwogdm9pZCBpbnRlbF9ndWNfY3Rf ZXZlbnRfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCk7CiAKK3ZvaWQgaW50ZWxfZ3Vj X2N0X3ByaW50X2luZm8oc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHN0cnVjdCBkcm1fcHJpbnRl ciAqcCk7CisKICNlbmRpZiAvKiBfSU5URUxfR1VDX0NUX0hfICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2RlYnVnZnMuYwppbmRleCBmZTdjYjdiMjlhMWUuLjcy ZGRmZmY0MmY3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf ZGVidWdmcy5jCkBAIC05LDYgKzksOSBAQAogI2luY2x1ZGUgImludGVsX2d1Yy5oIgogI2luY2x1 ZGUgImludGVsX2d1Y19kZWJ1Z2ZzLmgiCiAjaW5jbHVkZSAiaW50ZWxfZ3VjX2xvZ19kZWJ1Z2Zz LmgiCisjaW5jbHVkZSAiZ3QvdWMvaW50ZWxfZ3VjX2N0LmgiCisjaW5jbHVkZSAiZ3QvdWMvaW50 ZWxfZ3VjX2Fkcy5oIgorI2luY2x1ZGUgImd0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgiCiAK IHN0YXRpYyBpbnQgZ3VjX2luZm9fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp CiB7CkBAIC0yMiwxNiArMjUsMzYgQEAgc3RhdGljIGludCBndWNfaW5mb19zaG93KHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlkcm1fcHV0cygmcCwgIlxuIik7CiAJaW50ZWxfZ3Vj X2xvZ19pbmZvKCZndWMtPmxvZywgJnApOwogCi0JLyogQWRkIG1vcmUgYXMgcmVxdWlyZWQgLi4u ICovCisJaWYgKCFpbnRlbF9ndWNfc3VibWlzc2lvbl9pc191c2VkKGd1YykpCisJCXJldHVybiAw OworCisJaW50ZWxfZ3VjX2N0X3ByaW50X2luZm8oJmd1Yy0+Y3QsICZwKTsKKwlpbnRlbF9ndWNf c3VibWlzc2lvbl9wcmludF9pbmZvKGd1YywgJnApOworCWludGVsX2d1Y19hZHNfcHJpbnRfcG9s aWN5X2luZm8oZ3VjLCAmcCk7CiAKIAlyZXR1cm4gMDsKIH0KIERFRklORV9HVF9ERUJVR0ZTX0FU VFJJQlVURShndWNfaW5mbyk7CiAKK3N0YXRpYyBpbnQgZ3VjX3JlZ2lzdGVyZWRfY29udGV4dHNf c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGludGVsX2d1 YyAqZ3VjID0gbS0+cHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmls ZV9wcmludGVyKG0pOworCisJaWYgKCFpbnRlbF9ndWNfc3VibWlzc2lvbl9pc191c2VkKGd1Yykp CisJCXJldHVybiAtRU5PREVWOworCisJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcHJpbnRfY29udGV4 dF9pbmZvKGd1YywgJnApOworCisJcmV0dXJuIDA7Cit9CitERUZJTkVfR1RfREVCVUdGU19BVFRS SUJVVEUoZ3VjX3JlZ2lzdGVyZWRfY29udGV4dHMpOworCiB2b2lkIGludGVsX2d1Y19kZWJ1Z2Zz X3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGRlbnRyeSAqcm9vdCkKIHsK IAlzdGF0aWMgY29uc3Qgc3RydWN0IGRlYnVnZnNfZ3RfZmlsZSBmaWxlc1tdID0gewogCQl7ICJn dWNfaW5mbyIsICZndWNfaW5mb19mb3BzLCBOVUxMIH0sCisJCXsgImd1Y19yZWdpc3RlcmVkX2Nv bnRleHRzIiwgJmd1Y19yZWdpc3RlcmVkX2NvbnRleHRzX2ZvcHMsIE5VTEwgfSwKIAl9OwogCiAJ aWYgKCFpbnRlbF9ndWNfaXNfc3VwcG9ydGVkKGd1YykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAppbmRleCA2MTdlYzYwMTY0OGQuLjk0YmIxY2E2Zjg4OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCkBAIC0xNywx NCArMTcsMjEgQEAKICNpbmNsdWRlICJhYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oIgog I2luY2x1ZGUgImFiaS9ndWNfbWVzc2FnZXNfYWJpLmgiCiAKKy8qIFBheWxvYWQgbGVuZ3RoIG9u bHkgaS5lLiBkb24ndCBpbmNsdWRlIEcySCBoZWFkZXIgbGVuZ3RoICovCisjZGVmaW5lIEcySF9M RU5fRFdfU0NIRURfQ09OVEVYVF9NT0RFX1NFVAkyCisjZGVmaW5lIEcySF9MRU5fRFdfREVSRUdJ U1RFUl9DT05URVhUCQkxCisKKyNkZWZpbmUgR1VDX0NPTlRFWFRfRElTQUJMRQkJMAorI2RlZmlu ZSBHVUNfQ09OVEVYVF9FTkFCTEUJCTEKKwogI2RlZmluZSBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tN RF9ISUdICTAKICNkZWZpbmUgR1VDX0NMSUVOVF9QUklPUklUWV9ISUdICTEKICNkZWZpbmUgR1VD X0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMCTIKICNkZWZpbmUgR1VDX0NMSUVOVF9QUklPUklU WV9OT1JNQUwJMwogI2RlZmluZSBHVUNfQ0xJRU5UX1BSSU9SSVRZX05VTQkJNAogCi0jZGVmaW5l IEdVQ19NQVhfU1RBR0VfREVTQ1JJUFRPUlMJMTAyNAotI2RlZmluZQlHVUNfSU5WQUxJRF9TVEFH RV9JRAkJR1VDX01BWF9TVEFHRV9ERVNDUklQVE9SUworI2RlZmluZSBHVUNfTUFYX0xSQ19ERVND UklQVE9SUwkJNjU1MzUKKyNkZWZpbmUJR1VDX0lOVkFMSURfTFJDX0lECQlHVUNfTUFYX0xSQ19E RVNDUklQVE9SUwogCiAjZGVmaW5lIEdVQ19SRU5ERVJfRU5HSU5FCQkwCiAjZGVmaW5lIEdVQ19W SURFT19FTkdJTkUJCTEKQEAgLTE3NSw2NiArMTgyLDM5IEBAIHN0cnVjdCBndWNfcHJvY2Vzc19k ZXNjIHsKIAl1MzIgcmVzZXJ2ZWRbMzBdOwogfSBfX3BhY2tlZDsKIAotLyogZW5naW5lIGlkIGFu ZCBjb250ZXh0IGlkIGlzIHBhY2tlZCBpbnRvIGd1Y19leGVjbGlzdF9jb250ZXh0LmNvbnRleHRf aWQqLwotI2RlZmluZSBHVUNfRUxDX0NUWElEX09GRlNFVAkJMAotI2RlZmluZSBHVUNfRUxDX0VO R0lORV9PRkZTRVQJCTI5CisjZGVmaW5lIENPTlRFWFRfUkVHSVNUUkFUSU9OX0ZMQUdfS01ECUJJ VCgwKQogCi0vKiBUaGUgZXhlY2xpc3QgY29udGV4dCBpbmNsdWRpbmcgc29mdHdhcmUgYW5kIEhX IGluZm9ybWF0aW9uICovCi1zdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQgewotCXUzMiBjb250 ZXh0X2Rlc2M7Ci0JdTMyIGNvbnRleHRfaWQ7Ci0JdTMyIHJpbmdfc3RhdHVzOwotCXUzMiByaW5n X2xyY2E7Ci0JdTMyIHJpbmdfYmVnaW47Ci0JdTMyIHJpbmdfZW5kOwotCXUzMiByaW5nX25leHRf ZnJlZV9sb2NhdGlvbjsKLQl1MzIgcmluZ19jdXJyZW50X3RhaWxfcG9pbnRlcl92YWx1ZTsKLQl1 OCBlbmdpbmVfc3RhdGVfc3VibWl0X3ZhbHVlOwotCXU4IGVuZ2luZV9zdGF0ZV93YWl0X3ZhbHVl OwotCXUxNiBwYWdlZmF1bHRfY291bnQ7Ci0JdTE2IGVuZ2luZV9zdWJtaXRfcXVldWVfY291bnQ7 Ci19IF9fcGFja2VkOworI2RlZmluZSBDT05URVhUX1BPTElDWV9ERUZBVUxUX0VYRUNVVElPTl9R VUFOVFVNX1VTIDEwMDAwMDAKKyNkZWZpbmUgQ09OVEVYVF9QT0xJQ1lfREVGQVVMVF9QUkVFTVBU SU9OX1RJTUVfVVMgNTAwMDAwCisKKy8qIFByZWVtcHQgdG8gaWRsZSBvbiBxdWFudHVtIGV4cGly eSAqLworI2RlZmluZSBDT05URVhUX1BPTElDWV9GTEFHX1BSRUVNUFRfVE9fSURMRQlCSVQoMCkK IAogLyoKLSAqIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIHN0YWdlIHNldCBhcnJhbmdlZCBm b3IgYSBwYXJ0aWN1bGFyIGNvbW11bmljYXRpb24KLSAqIGJldHdlZW4gdUtlcm5lbCAoR3VDKSBh bmQgRHJpdmVyIChLTUQpLiBUZWNobmljYWxseSwgdGhpcyBpcyBrbm93biBhcyBhCi0gKiAiR3VD IENvbnRleHQgZGVzY3JpcHRvciIgaW4gdGhlIHNwZWNzLCBidXQgd2UgdXNlIHRoZSB0ZXJtICJz dGFnZSBkZXNjcmlwdG9yIgotICogdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggYWxsIHRoZSBvdGhl ciB0aGluZ3MgYWxyZWFkeSBuYW1lZCAiY29udGV4dCIgaW4gdGhlCi0gKiBkcml2ZXIuIEEgc3Rh dGljIHBvb2wgb2YgdGhlc2UgZGVzY3JpcHRvcnMgYXJlIHN0b3JlZCBpbnNpZGUgYSBHRU0gb2Jq ZWN0Ci0gKiAoc3RhZ2VfZGVzY19wb29sKSB3aGljaCBpcyBoZWxkIGZvciB0aGUgZW50aXJlIGxp ZmV0aW1lIG9mIG91ciBpbnRlcmFjdGlvbgotICogd2l0aCB0aGUgR3VDLCBiZWluZyBhbGxvY2F0 ZWQgYmVmb3JlIHRoZSBHdUMgaXMgbG9hZGVkIHdpdGggaXRzIGZpcm13YXJlLgorICogR3VDIENv bnRleHQgcmVnaXN0cmF0aW9uIGRlc2NyaXB0b3IuCisgKiBGSVhNRTogVGhpcyBpcyBvbmx5IHJl cXVpcmVkIHRvIGV4aXN0IGR1cmluZyBjb250ZXh0IHJlZ2lzdHJhdGlvbi4KKyAqIFRoZSBjdXJy ZW50IDE6MSBiZXR3ZWVuIGd1Y19scmNfZGVzYyBhbmQgTFJDcyBmb3IgdGhlIGxpZmV0aW1lIG9m IHRoZSBMUkMKKyAqIGlzIG5vdCByZXF1aXJlZC4KICAqLwotc3RydWN0IGd1Y19zdGFnZV9kZXNj IHsKLQl1MzIgc2NoZWRfY29tbW9uX2FyZWE7Ci0JdTMyIHN0YWdlX2lkOwotCXUzMiBwYXNfaWQ7 Ci0JdTggZW5naW5lc191c2VkOwotCXU2NCBkYl90cmlnZ2VyX2NwdTsKLQl1MzIgZGJfdHJpZ2dl cl91azsKLQl1NjQgZGJfdHJpZ2dlcl9waHk7Ci0JdTE2IGRiX2lkOwotCi0Jc3RydWN0IGd1Y19l eGVjbGlzdF9jb250ZXh0IGxyY1tHVUNfTUFYX0VOR0lORVNfTlVNXTsKLQotCXU4IGF0dHJpYnV0 ZTsKLQorc3RydWN0IGd1Y19scmNfZGVzYyB7CisJdTMyIGh3X2NvbnRleHRfZGVzYzsKKwl1MzIg c2xwbV9wZXJmX21vZGVfaGludDsJLyogU1BMQyB2MSBvbmx5ICovCisJdTMyIHNscG1fZnJlcV9o aW50OworCXUzMiBlbmdpbmVfc3VibWl0X21hc2s7CQkvKiBJbiBsb2dpY2FsIHNwYWNlICovCisJ dTggZW5naW5lX2NsYXNzOworCXU4IHJlc2VydmVkMFszXTsKIAl1MzIgcHJpb3JpdHk7Ci0KLQl1 MzIgd3Ffc2FtcGxlZF90YWlsX29mZnNldDsKLQl1MzIgd3FfdG90YWxfc3VibWl0X2VucXVldWVz OwotCiAJdTMyIHByb2Nlc3NfZGVzYzsKIAl1MzIgd3FfYWRkcjsKIAl1MzIgd3Ffc2l6ZTsKLQot CXUzMiBlbmdpbmVfcHJlc2VuY2U7Ci0KLQl1OCBlbmdpbmVfc3VzcGVuZGVkOwotCi0JdTggcmVz ZXJ2ZWQwWzNdOwotCXU2NCByZXNlcnZlZDFbMV07Ci0KLQl1NjQgZGVzY19wcml2YXRlOworCXUz MiBjb250ZXh0X2ZsYWdzOwkJLyogQ09OVEVYVF9SRUdJU1RSQVRJT05fKiAqLworCS8qIFRpbWUg Zm9yIG9uZSB3b3JrbG9hZCB0byBleGVjdXRlLiAoaW4gbWljcm8gc2Vjb25kcykgKi8KKwl1MzIg ZXhlY3V0aW9uX3F1YW50dW07CisJLyogVGltZSB0byB3YWl0IGZvciBhIHByZWVtcHRpb24gcmVx dWVzdCB0byBjb21wbGV0ZSBiZWZvcmUgaXNzdWluZyBhCisJICogcmVzZXQuIChpbiBtaWNybyBz ZWNvbmRzKS4gKi8KKwl1MzIgcHJlZW1wdGlvbl90aW1lb3V0OworCXUzMiBwb2xpY3lfZmxhZ3M7 CQkvKiBDT05URVhUX1BPTElDWV8qICovCisJdTMyIHJlc2VydmVkMVsxOV07CiB9IF9fcGFja2Vk OwogCiAjZGVmaW5lIEdVQ19QT1dFUl9VTlNQRUNJRklFRAkwCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCBlOWMyMzdiMTg2OTIu LjI1OWY3OWRmZTdiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfc3VibWlzc2lvbi5jCkBAIC0xMCwxMCArMTAsMTMgQEAKICNpbmNsdWRlICJndC9pbnRl bF9icmVhZGNydW1icy5oIgogI2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHQuaCIKICNpbmNsdWRl ICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKKyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfaGVhcnRi ZWF0LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKICNpbmNsdWRlICJndC9pbnRlbF9ndF9p cnEuaCIKICNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0 X3JlcXVlc3RzLmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjLmgiCisjaW5jbHVkZSAiZ3QvaW50 ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImd0L2ludGVsX21vY3MuaCIKICNpbmNsdWRlICJndC9p bnRlbF9yaW5nLmgiCiAKQEAgLTU4LDI0NiArNjEsNjk3IEBACiAgKgogICovCiAKKy8qIEd1QyBW aXJ0dWFsIEVuZ2luZSAqLworc3RydWN0IGd1Y192aXJ0dWFsX2VuZ2luZSB7CisJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyBiYXNlOworCXN0cnVjdCBpbnRlbF9jb250ZXh0IGNvbnRleHQ7Cit9Owor CitzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgorZ3VjX2NyZWF0ZV92aXJ0dWFsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywgdW5zaWduZWQgaW50IGNvdW50KTsKKwogI2Rl ZmluZSBHVUNfUkVRVUVTVF9TSVpFIDY0IC8qIGJ5dGVzICovCiAKLXN0YXRpYyBpbmxpbmUgc3Ry dWN0IGk5MTVfcHJpb2xpc3QgKnRvX3ByaW9saXN0KHN0cnVjdCByYl9ub2RlICpyYikKKy8qCisg KiBCZWxvdyBpcyBhIHNldCBvZiBmdW5jdGlvbnMgd2hpY2ggY29udHJvbCB0aGUgR3VDIHNjaGVk dWxpbmcgc3RhdGUgd2hpY2ggZG8KKyAqIG5vdCByZXF1aXJlIGEgbG9jayBhcyBhbGwgc3RhdGUg dHJhbnNpdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gaS5lLiBJdAorICogaXMgbm90IHBv c3NpYmxlIGZvciB0aGUgY29udGV4dCBwaW5uaW5nIGNvZGUgYW5kIHN1Ym1pc3Npb24sIGZvciB0 aGUgc2FtZQorICogY29udGV4dCwgdG8gYmUgZXhlY3V0aW5nIHNpbXVsdGFuZW91c2x5LiBXZSBz dGlsbCBuZWVkIGFuIGF0b21pYyBhcyBpdCBpcworICogcG9zc2libGUgZm9yIHNvbWUgb2YgdGhl IGJpdHMgdG8gY2hhbmdpbmcgYXQgdGhlIHNhbWUgdGltZSB0aG91Z2guCisgKi8KKyNkZWZpbmUg U0NIRURfU1RBVEVfTk9fTE9DS19FTkFCTEVECQkJQklUKDApCisjZGVmaW5lIFNDSEVEX1NUQVRF X05PX0xPQ0tfUEVORElOR19FTkFCTEUJCUJJVCgxKQorI2RlZmluZSBTQ0hFRF9TVEFURV9OT19M T0NLX1JFR0lTVEVSRUQJCQlCSVQoMikKKyNkZWZpbmUgU0NIRURfU1RBVEVfTk9fTE9DS19CTE9D S0VEX1NISUZUCQkzCisjZGVmaW5lIFNDSEVEX1NUQVRFX05PX0xPQ0tfQkxPQ0tFRCBcCisJQklU KFNDSEVEX1NUQVRFX05PX0xPQ0tfQkxPQ0tFRF9TSElGVCkKKyNkZWZpbmUgU0NIRURfU1RBVEVf Tk9fTE9DS19CTE9DS0VEX01BU0sgXAorCSgweGZmZmYgPDwgU0NIRURfU1RBVEVfTk9fTE9DS19C TE9DS0VEX1NISUZUKQorc3RhdGljIGlubGluZSBib29sIGNvbnRleHRfZW5hYmxlZChzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCiB7Ci0JcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9w cmlvbGlzdCwgbm9kZSk7CisJcmV0dXJuIChhdG9taWNfcmVhZCgmY2UtPmd1Y19zY2hlZF9zdGF0 ZV9ub19sb2NrKSAmCisJCVNDSEVEX1NUQVRFX05PX0xPQ0tfRU5BQkxFRCk7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBzZXRfY29udGV4dF9lbmFibGVkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKK3sKKwlhdG9taWNfb3IoU0NIRURfU1RBVEVfTk9fTE9DS19FTkFCTEVELCAmY2UtPmd1Y19z Y2hlZF9zdGF0ZV9ub19sb2NrKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNscl9jb250ZXh0 X2VuYWJsZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCWF0b21pY19hbmQoKHUzMil+ U0NIRURfU1RBVEVfTk9fTE9DS19FTkFCTEVELAorCQkgICAmY2UtPmd1Y19zY2hlZF9zdGF0ZV9u b19sb2NrKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGNvbnRleHRfcGVuZGluZ19lbmFibGUo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXJldHVybiAoYXRvbWljX3JlYWQoJmNlLT5n dWNfc2NoZWRfc3RhdGVfbm9fbG9jaykgJgorCQlTQ0hFRF9TVEFURV9OT19MT0NLX1BFTkRJTkdf RU5BQkxFKTsKIH0KIAotc3RhdGljIHN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqX19nZXRfc3RhZ2Vf ZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpZCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfY29udGV4dF9wZW5kaW5nX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0J c3RydWN0IGd1Y19zdGFnZV9kZXNjICpiYXNlID0gZ3VjLT5zdGFnZV9kZXNjX3Bvb2xfdmFkZHI7 CisJYXRvbWljX29yKFNDSEVEX1NUQVRFX05PX0xPQ0tfUEVORElOR19FTkFCTEUsCisJCSAgJmNl LT5ndWNfc2NoZWRfc3RhdGVfbm9fbG9jayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbHJf Y29udGV4dF9wZW5kaW5nX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJYXRv bWljX2FuZCgodTMyKX5TQ0hFRF9TVEFURV9OT19MT0NLX1BFTkRJTkdfRU5BQkxFLAorCQkgICAm Y2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgY29u dGV4dF9ibG9ja2VkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlyZXR1cm4gKGF0b21p Y19yZWFkKCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spICYKKwkJU0NIRURfU1RBVEVfTk9f TE9DS19CTE9DS0VEX01BU0spID4+CisJCVNDSEVEX1NUQVRFX05PX0xPQ0tfQkxPQ0tFRF9TSElG VDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGluY3JfY29udGV4dF9ibG9ja2VkKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+ZW5naW5lLT5z Y2hlZF9lbmdpbmUtPmxvY2spOworCWF0b21pY19hZGQoU0NIRURfU1RBVEVfTk9fTE9DS19CTE9D S0VELAorCQkgICAmY2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKTsKK30KIAotCXJldHVybiAm YmFzZVtpZF07CitzdGF0aWMgaW5saW5lIHZvaWQgZGVjcl9jb250ZXh0X2Jsb2NrZWQoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5lbmdpbmUt PnNjaGVkX2VuZ2luZS0+bG9jayk7CisJYXRvbWljX3N1YihTQ0hFRF9TVEFURV9OT19MT0NLX0JM T0NLRUQsCisJCSAgICZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spOwogfQogCi1zdGF0aWMg aW50IGd1Y19zdGFnZV9kZXNjX3Bvb2xfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0 YXRpYyBpbmxpbmUgYm9vbCBjb250ZXh0X3JlZ2lzdGVyZWQoc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQogewotCXUzMiBzaXplID0gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IGd1Y19zdGFnZV9k ZXNjKSAqCi0JCQkgICAgICBHVUNfTUFYX1NUQUdFX0RFU0NSSVBUT1JTKTsKKwlyZXR1cm4gKGF0 b21pY19yZWFkKCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spICYKKwkJU0NIRURfU1RBVEVf Tk9fTE9DS19SRUdJU1RFUkVEKTsKK30KIAotCXJldHVybiBpbnRlbF9ndWNfYWxsb2NhdGVfYW5k X21hcF92bWEoZ3VjLCBzaXplLCAmZ3VjLT5zdGFnZV9kZXNjX3Bvb2wsCi0JCQkJCSAgICAgICZn dWMtPnN0YWdlX2Rlc2NfcG9vbF92YWRkcik7CitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2NvbnRl eHRfcmVnaXN0ZXJlZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJYXRvbWljX29yKFND SEVEX1NUQVRFX05PX0xPQ0tfUkVHSVNURVJFRCwKKwkJICAmY2UtPmd1Y19zY2hlZF9zdGF0ZV9u b19sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfcG9vbF9kZXN0cm95KHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbHJfY29udGV4dF9yZWdp c3RlcmVkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlpOTE1X3ZtYV91bnBpbl9hbmRf cmVsZWFzZSgmZ3VjLT5zdGFnZV9kZXNjX3Bvb2wsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKKwlh dG9taWNfYW5kKCh1MzIpflNDSEVEX1NUQVRFX05PX0xPQ0tfUkVHSVNURVJFRCwKKwkJICAgJmNl LT5ndWNfc2NoZWRfc3RhdGVfbm9fbG9jayk7CiB9CiAKIC8qCi0gKiBJbml0aWFsaXNlL2NsZWFy IHRoZSBzdGFnZSBkZXNjcmlwdG9yIHNoYXJlZCB3aXRoIHRoZSBHdUMgZmlybXdhcmUuCi0gKgot ICogVGhpcyBkZXNjcmlwdG9yIHRlbGxzIHRoZSBHdUMgd2hlcmUgKGluIEdHVFQgc3BhY2UpIHRv IGZpbmQgdGhlIGltcG9ydGFudAotICogZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gd29yayBz dWJtaXNzaW9uIChwcm9jZXNzIGRlc2NyaXB0b3IsIHdyaXRlIHF1ZXVlLAotICogZXRjKS4KKyAq IEJlbG93IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB3aGljaCBjb250cm9sIHRoZSBHdUMgc2NoZWR1 bGluZyBzdGF0ZSB3aGljaAorICogcmVxdWlyZSBhIGxvY2ssIGFzaWRlIGZyb20gdGhlIHNwZWNp YWwgY2FzZSB3aGVyZSB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQKKyAqIGZyb20gZ3VjX2xyY19k ZXNjX3BpbigpLiBJbiB0aGF0IGNhc2UgaXQgaXNuJ3QgcG9zc2libGUgZm9yIGFueSBvdGhlciBj b2RlCisgKiBwYXRoIHRvIGJlIGV4ZWN1dGluZyBvbiB0aGUgY29udGV4dC4KICAqLwotc3RhdGlj IHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCisjZGVmaW5l IFNDSEVEX1NUQVRFX1dBSVRfRk9SX0RFUkVHSVNURVJfVE9fUkVHSVNURVIJQklUKDApCisjZGVm aW5lIFNDSEVEX1NUQVRFX0RFU1RST1lFRAkJCQlCSVQoMSkKKyNkZWZpbmUgU0NIRURfU1RBVEVf UEVORElOR19ESVNBQkxFCQkJQklUKDIpCisjZGVmaW5lIFNDSEVEX1NUQVRFX0JBTk5FRAkJCQlC SVQoMykKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NjaGVkX3N0YXRlKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKK3sKKwkvKiBPbmx5IHNob3VsZCBiZSBjYWxsZWQgZnJvbSBndWNfbHJjX2Rl c2NfcGluKCkgKi8KKwlhdG9taWNfc2V0KCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2ssIDAp OworCWNlLT5ndWNfc3RhdGUuc2NoZWRfc3RhdGUgPSAwOworfQorCitzdGF0aWMgaW5saW5lIGJv b2wKK2NvbnRleHRfd2FpdF9mb3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCiB7Ci0Jc3RydWN0IGd1Y19zdGFnZV9kZXNjICpkZXNjOworCXJldHVybiBj ZS0+Z3VjX3N0YXRlLnNjaGVkX3N0YXRlICYKKwkJU0NIRURfU1RBVEVfV0FJVF9GT1JfREVSRUdJ U1RFUl9UT19SRUdJU1RFUjsKK30KIAotCS8qIHdlIG9ubHkgdXNlIDEgc3RhZ2UgZGVzYywgc28g aGFyZGNvZGUgaXQgdG8gMCAqLwotCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGd1YywgMCk7Ci0J bWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOworc3RhdGljIGlubGluZSB2b2lkCitzZXRf Y29udGV4dF93YWl0X2Zvcl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKK3sKKwkvKiBPbmx5IHNob3VsZCBiZSBjYWxsZWQgZnJvbSBndWNfbHJjX2Rlc2Nf cGluKCkgd2l0aG91dCBsb2NrICovCisJY2UtPmd1Y19zdGF0ZS5zY2hlZF9zdGF0ZSB8PQorCQlT Q0hFRF9TVEFURV9XQUlUX0ZPUl9ERVJFR0lTVEVSX1RPX1JFR0lTVEVSOworfQogCi0JZGVzYy0+ YXR0cmlidXRlID0gR1VDX1NUQUdFX0RFU0NfQVRUUl9BQ1RJVkUgfAotCQkJICBHVUNfU1RBR0Vf REVTQ19BVFRSX0tFUk5FTDsKK3N0YXRpYyBpbmxpbmUgdm9pZAorY2xyX2NvbnRleHRfd2FpdF9m b3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKwljZS0+Z3VjX3N0YXRl LnNjaGVkX3N0YXRlICY9CisJCX5TQ0hFRF9TVEFURV9XQUlUX0ZPUl9ERVJFR0lTVEVSX1RPX1JF R0lTVEVSOworfQogCi0JZGVzYy0+c3RhZ2VfaWQgPSAwOwotCWRlc2MtPnByaW9yaXR5ID0gR1VD X0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMOworc3RhdGljIGlubGluZSBib29sCitjb250ZXh0 X2Rlc3Ryb3llZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJcmV0dXJuIGNlLT5ndWNf c3RhdGUuc2NoZWRfc3RhdGUgJiBTQ0hFRF9TVEFURV9ERVNUUk9ZRUQ7Cit9CiAKLQlkZXNjLT53 cV9zaXplID0gR1VDX1dRX1NJWkU7CitzdGF0aWMgaW5saW5lIHZvaWQKK3NldF9jb250ZXh0X2Rl c3Ryb3llZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKwljZS0+Z3VjX3N0YXRlLnNjaGVkX3N0YXRlIHw9IFND SEVEX1NUQVRFX0RFU1RST1lFRDsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfZmlu aShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgaW5saW5lIGJvb2wgY29udGV4dF9wZW5k aW5nX2Rpc2FibGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewotCXN0cnVjdCBndWNfc3Rh Z2VfZGVzYyAqZGVzYzsKKwlyZXR1cm4gY2UtPmd1Y19zdGF0ZS5zY2hlZF9zdGF0ZSAmIFNDSEVE X1NUQVRFX1BFTkRJTkdfRElTQUJMRTsKK30KIAotCWRlc2MgPSBfX2dldF9zdGFnZV9kZXNjKGd1 YywgMCk7Ci0JbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOworc3RhdGljIGlubGluZSB2 b2lkIHNldF9jb250ZXh0X3BlbmRpbmdfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKwljZS0+Z3Vj X3N0YXRlLnNjaGVkX3N0YXRlIHw9IFNDSEVEX1NUQVRFX1BFTkRJTkdfRElTQUJMRTsKIH0KIAot c3RhdGljIHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCitzdGF0aWMgaW5saW5lIHZvaWQgY2xyX2NvbnRleHRfcGVuZGlu Z19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQkvKiBMZWF2aW5nIHN0dWIg YXMgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIHBhdGNoZXMgKi8KKwlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZjZS0+Z3VjX3N0YXRlLmxvY2spOworCWNlLT5ndWNfc3RhdGUuc2No ZWRfc3RhdGUgJj0gflNDSEVEX1NUQVRFX1BFTkRJTkdfRElTQUJMRTsKIH0KIAotLyoKLSAqIFdo ZW4gd2UncmUgZG9pbmcgc3VibWlzc2lvbnMgdXNpbmcgcmVndWxhciBleGVjbGlzdHMgYmFja2Vu ZCwgd3JpdGluZyB0bwotICogRUxTUCBmcm9tIENQVSBzaWRlIGlzIGVub3VnaCB0byBtYWtlIHN1 cmUgdGhhdCB3cml0ZXMgdG8gcmluZ2J1ZmZlciBwYWdlcwotICogcGlubmVkIGluIG1hcHBhYmxl IGFwZXJ0dXJlIHBvcnRpb24gb2YgR0dUVCBhcmUgdmlzaWJsZSB0byBjb21tYW5kIHN0cmVhbWVy LgotICogV3JpdGVzIGRvbmUgYnkgR3VDIG9uIG91ciBiZWhhbGYgYXJlIG5vdCBndWFyYW50ZWVp bmcgc3VjaCBvcmRlcmluZywKLSAqIHRoZXJlZm9yZSwgdG8gZW5zdXJlIHRoZSBmbHVzaCwgd2Un cmUgaXNzdWluZyBhIFBPU1RJTkcgUkVBRC4KLSAqLwotc3RhdGljIHZvaWQgZmx1c2hfZ2d0dF93 cml0ZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCitzdGF0aWMgaW5saW5lIGJvb2wgY29udGV4dF9i YW5uZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewotCWlmIChpOTE1X3ZtYV9pc19tYXBf YW5kX2ZlbmNlYWJsZSh2bWEpKQotCQlpbnRlbF91bmNvcmVfcG9zdGluZ19yZWFkX2Z3KHZtYS0+ dm0tPmd0LT51bmNvcmUsCi0JCQkJCSAgICAgR1VDX1NUQVRVUyk7CisJcmV0dXJuIGNlLT5ndWNf c3RhdGUuc2NoZWRfc3RhdGUgJiBTQ0hFRF9TVEFURV9CQU5ORUQ7CiB9CiAKLXN0YXRpYyB2b2lk IGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkgICAgICAgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqKm91dCwKLQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipl bmQpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2NvbnRleHRfYmFubmVkKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZW5naW5lLT5ndC0+dWMu Z3VjOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfc3RhdGUubG9jayk7CisJY2UtPmd1 Y19zdGF0ZS5zY2hlZF9zdGF0ZSB8PSBTQ0hFRF9TVEFURV9CQU5ORUQ7Cit9CiAKLQlkbyB7Ci0J CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gKm91dCsrOworc3RhdGljIGlubGluZSB2b2lkIGNs cl9jb250ZXh0X2Jhbm5lZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJbG9ja2RlcF9h c3NlcnRfaGVsZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKwljZS0+Z3VjX3N0YXRlLnNjaGVkX3N0 YXRlICY9IH5TQ0hFRF9TVEFURV9CQU5ORUQ7Cit9CiAKLQkJZmx1c2hfZ2d0dF93cml0ZXMocnEt PnJpbmctPnZtYSk7Ci0JCWd1Y19hZGRfcmVxdWVzdChndWMsIHJxKTsKLQl9IHdoaWxlIChvdXQg IT0gZW5kKTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBjb250ZXh0X2d1Y19pZF9pbnZhbGlkKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlyZXR1cm4gKGNlLT5ndWNfaWQgPT0gR1VDX0lOVkFM SURfTFJDX0lEKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfY29udGV4dF9ndWNfaWRf aW52YWxpZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0JcmV0dXJuIHJxLT5zY2hlZC5h dHRyLnByaW9yaXR5OworCWNlLT5ndWNfaWQgPSBHVUNfSU5WQUxJRF9MUkNfSUQ7Cit9CisKK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2d1YyAqY2VfdG9fZ3VjKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKK3sKKwlyZXR1cm4gJmNlLT5lbmdpbmUtPmd0LT51Yy5ndWM7Cit9CisKK3N0YXRp YyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnRvX3ByaW9saXN0KHN0cnVjdCByYl9ub2Rl ICpyYikKK3sKKwlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2Rl KTsKK30KKworc3RhdGljIHN0cnVjdCBndWNfbHJjX2Rlc2MgKl9fZ2V0X2xyY19kZXNjKHN0cnVj dCBpbnRlbF9ndWMgKmd1YywgdTMyIGluZGV4KQoreworCXN0cnVjdCBndWNfbHJjX2Rlc2MgKmJh c2UgPSBndWMtPmxyY19kZXNjX3Bvb2xfdmFkZHI7CisKKwlHRU1fQlVHX09OKGluZGV4ID49IEdV Q19NQVhfTFJDX0RFU0NSSVBUT1JTKTsKKworCXJldHVybiAmYmFzZVtpbmRleF07Cit9CisKK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2NvbnRleHQgKl9fZ2V0X2NvbnRleHQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCB1MzIgaWQpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0geGFf bG9hZCgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaWQpOworCisJR0VNX0JVR19PTihpZCA+PSBHVUNf TUFYX0xSQ19ERVNDUklQVE9SUyk7CisKKwlyZXR1cm4gY2U7Cit9CisKK3N0YXRpYyBpbnQgZ3Vj X2xyY19kZXNjX3Bvb2xfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwl1MzIgc2l6 ZTsKKwlpbnQgcmV0OworCisJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBndWNfbHJj X2Rlc2MpICoKKwkJCSAgR1VDX01BWF9MUkNfREVTQ1JJUFRPUlMpOworCXJldCA9IGludGVsX2d1 Y19hbGxvY2F0ZV9hbmRfbWFwX3ZtYShndWMsIHNpemUsICZndWMtPmxyY19kZXNjX3Bvb2wsCisJ CQkJCSAgICAgKHZvaWQgKiopJmd1Yy0+bHJjX2Rlc2NfcG9vbF92YWRkcik7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGk5MTVfcmVx dWVzdCAqc2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBpZHgpCitzdGF0 aWMgdm9pZCBndWNfbHJjX2Rlc2NfcG9vbF9kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykK IHsKLQl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEsIGlkeCk7CisJZ3VjLT5scmNfZGVzY19wb29s X3ZhZGRyID0gTlVMTDsKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5scmNfZGVz Y19wb29sLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBn dWNfc3VibWlzc2lvbl9pbml0aWFsaXplZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJcmV0 dXJuIGd1Yy0+bHJjX2Rlc2NfcG9vbF92YWRkciAhPSBOVUxMOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgcmVzZXRfbHJjX2Rlc2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgaWQpCit7CisJ aWYgKGxpa2VseShndWNfc3VibWlzc2lvbl9pbml0aWFsaXplZChndWMpKSkgeworCQlzdHJ1Y3Qg Z3VjX2xyY19kZXNjICpkZXNjID0gX19nZXRfbHJjX2Rlc2MoZ3VjLCBpZCk7CisJCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwkJbWVtc2V0KGRlc2MsIDAsIHNpemVvZigqZGVzYykpOworCisJCS8q CisJCSAqIHhhcnJheSBBUEkgZG9lc24ndCBoYXZlIHhhX2VyYXNlX2lycXNhdmUgd3JhcHBlciwg c28gY2FsbGluZworCQkgKiB0aGUgbG93ZXIgbGV2ZWwgZnVuY3Rpb25zIGRpcmVjdGx5LgorCQkg Ki8KKwkJeGFfbG9ja19pcnFzYXZlKCZndWMtPmNvbnRleHRfbG9va3VwLCBmbGFncyk7CisJCV9f eGFfZXJhc2UoJmd1Yy0+Y29udGV4dF9sb29rdXAsIGlkKTsKKwkJeGFfdW5sb2NrX2lycXJlc3Rv cmUoJmd1Yy0+Y29udGV4dF9sb29rdXAsIGZsYWdzKTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUg Ym9vbCBscmNfZGVzY19yZWdpc3RlcmVkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGlkKQor eworCXJldHVybiBfX2dldF9jb250ZXh0KGd1YywgaWQpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgc2V0X2xyY19kZXNjX3JlZ2lzdGVyZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgaWQs CisJCQkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZs YWdzOwogCiAJLyoKLQkgKiBDdXJyZW50bHkgd2UgYXJlIG5vdCB0cmFja2luZyB0aGUgcnEtPmNv bnRleHQgYmVpbmcgaW5mbGlnaHQKLQkgKiAoY2UtPmluZmxpZ2h0ID0gcnEtPmVuZ2luZSkuIEl0 IGlzIG9ubHkgdXNlZCBieSB0aGUgZXhlY2xpc3RzCi0JICogYmFja2VuZCBhdCB0aGUgbW9tZW50 LCBhIHNpbWlsYXIgY291bnRpbmcgc3RyYXRlZ3kgd291bGQgYmUKLQkgKiByZXF1aXJlZCBpZiB3 ZSBnZW5lcmFsaXNlIHRoZSBpbmZsaWdodCB0cmFja2luZy4KKwkgKiB4YXJyYXkgQVBJIGRvZXNu J3QgaGF2ZSB4YV9zYXZlX2lycXNhdmUgd3JhcHBlciwgc28gY2FsbGluZyB0aGUKKwkgKiBsb3dl ciBsZXZlbCBmdW5jdGlvbnMgZGlyZWN0bHkuCiAJICovCisJeGFfbG9ja19pcnFzYXZlKCZndWMt PmNvbnRleHRfbG9va3VwLCBmbGFncyk7CisJX194YV9zdG9yZSgmZ3VjLT5jb250ZXh0X2xvb2t1 cCwgaWQsIGNlLCBHRlBfQVRPTUlDKTsKKwl4YV91bmxvY2tfaXJxcmVzdG9yZSgmZ3VjLT5jb250 ZXh0X2xvb2t1cCwgZmxhZ3MpOworfQorCitzdGF0aWMgaW50IGd1Y19zdWJtaXNzaW9uX3NlbmRf YnVzeV9sb29wKHN0cnVjdCBpbnRlbF9ndWMqIGd1YywKKwkJCQkJIGNvbnN0IHUzMiAqYWN0aW9u LAorCQkJCQkgdTMyIGxlbiwKKwkJCQkJIHUzMiBnMmhfbGVuX2R3LAorCQkJCQkgYm9vbCBsb29w KQoreworCWludCBlcnI7CisKKwllcnIgPSBpbnRlbF9ndWNfc2VuZF9idXN5X2xvb3AoZ3VjLCBh Y3Rpb24sIGxlbiwgZzJoX2xlbl9kdywgbG9vcCk7CiAKLQlfX2ludGVsX2d0X3BtX2dldChycS0+ ZW5naW5lLT5ndCk7Ci0JcmV0dXJuIGk5MTVfcmVxdWVzdF9nZXQocnEpOworCWlmICghZXJyICYm IGcyaF9sZW5fZHcpCisJCWF0b21pY19pbmMoJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9n MmgpOworCisJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIHZvaWQgc2NoZWR1bGVfb3V0KHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQoraW50IGludGVsX2d1Y193YWl0X2Zvcl9wZW5kaW5nX21zZyhz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAgYXRvbWljX3QgKndhaXRfdmFyLAorCQkJCSAg IGJvb2wgaW50ZXJydXB0aWJsZSwKKwkJCQkgICBsb25nIHRpbWVvdXQpCiB7Ci0JdHJhY2VfaTkx NV9yZXF1ZXN0X291dChycSk7CisJY29uc3QgaW50IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/CisJ CVRBU0tfSU5URVJSVVBUSUJMRSA6IFRBU0tfVU5JTlRFUlJVUFRJQkxFOworCURFRklORV9XQUlU KHdhaXQpOworCisJbWlnaHRfc2xlZXAoKTsKKwlHRU1fQlVHX09OKHRpbWVvdXQgPCAwKTsKKwor CWlmICghYXRvbWljX3JlYWQod2FpdF92YXIpKQorCQlyZXR1cm4gMDsKKworCWlmICghdGltZW91 dCkKKwkJcmV0dXJuIC1FVElNRTsKKworCWZvciAoOzspIHsKKwkJcHJlcGFyZV90b193YWl0KCZn dWMtPmN0LndxLCAmd2FpdCwgc3RhdGUpOworCisJCWlmICghYXRvbWljX3JlYWQod2FpdF92YXIp KQorCQkJYnJlYWs7CisKKwkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBjdXJyZW50 KSkgeworCQkJdGltZW91dCA9IC1FSU5UUjsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKCF0aW1l b3V0KSB7CisJCQl0aW1lb3V0ID0gLUVUSU1FOworCQkJYnJlYWs7CisJCX0KIAotCWludGVsX2d0 X3BtX3B1dF9hc3luYyhycS0+ZW5naW5lLT5ndCk7Ci0JaTkxNV9yZXF1ZXN0X3B1dChycSk7CisJ CXRpbWVvdXQgPSBpb19zY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOworCX0KKwlmaW5pc2hfd2Fp dCgmZ3VjLT5jdC53cSwgJndhaXQpOworCisJcmV0dXJuICh0aW1lb3V0IDwgMCkgPyB0aW1lb3V0 IDogMDsKIH0KIAotc3RhdGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCitpbnQgaW50ZWxfZ3VjX3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2d1 YyAqZ3VjLCBsb25nIHRpbWVvdXQpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMg KiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGk5MTVfc2No ZWRfZW5naW5lICogY29uc3Qgc2NoZWRfZW5naW5lID0gZW5naW5lLT5zY2hlZF9lbmdpbmU7Ci0J c3RydWN0IGk5MTVfcmVxdWVzdCAqKmZpcnN0ID0gZXhlY2xpc3RzLT5pbmZsaWdodDsKLQlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICoqIGNvbnN0IGxhc3RfcG9ydCA9IGZpcnN0ICsgZXhlY2xpc3RzLT5w b3J0X21hc2s7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCA9IGZpcnN0WzBdOwotCXN0cnVj dCBpOTE1X3JlcXVlc3QgKipwb3J0OwotCWJvb2wgc3VibWl0ID0gZmFsc2U7Ci0Jc3RydWN0IHJi X25vZGUgKnJiOworCWlmICghaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbigmZ3VjX3RvX2d0 KGd1YyktPnVjKSkKKwkJcmV0dXJuIDA7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZzY2hlZF9l bmdpbmUtPmxvY2spOworCXJldHVybiBpbnRlbF9ndWNfd2FpdF9mb3JfcGVuZGluZ19tc2coZ3Vj LAorCQkJCQkgICAgICAmZ3VjLT5vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCwKKwkJCQkJICAg ICAgdHJ1ZSwgdGltZW91dCk7Cit9CiAKLQlpZiAobGFzdCkgewotCQlpZiAoKisrZmlyc3QpCi0J CQlyZXR1cm47CitzdGF0aWMgaW50IGd1Y19scmNfZGVzY19waW4oc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLCBib29sIGxvb3ApOwogCi0JCWxhc3QgPSBOVUxMOworc3RhdGljIGludCBndWNfYWRk X3JlcXVlc3Qoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK K3sKKwlpbnQgZXJyID0gMDsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29udGV4 dDsKKwl1MzIgYWN0aW9uWzNdOworCWludCBsZW4gPSAwOworCXUzMiBnMmhfbGVuX2R3ID0gMDsK Kwlib29sIGVuYWJsZWQ7CisKKwkvKgorCSAqIENvcm5lciBjYXNlIHdoZXJlIHJlcXVlc3RzIHdl cmUgc2l0dGluZyBpbiB0aGUgcHJpb3JpdHkgbGlzdCBvciBhCisJICogcmVxdWVzdCByZXN1Ym1p dHRlZCBhZnRlciB0aGUgY29udGV4dCB3YXMgYmFubmVkLgorCSAqLworCWlmICh1bmxpa2VseShp bnRlbF9jb250ZXh0X2lzX2Jhbm5lZChjZSkpKSB7CisJCWk5MTVfcmVxdWVzdF9wdXQoaTkxNV9y ZXF1ZXN0X21hcmtfZWlvKHJxKSk7CisJCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMo Y2UtPmVuZ2luZSk7CisJCWdvdG8gb3V0OwogCX0KIAorCUdFTV9CVUdfT04oIWF0b21pY19yZWFk KCZjZS0+Z3VjX2lkX3JlZikpOworCUdFTV9CVUdfT04oY29udGV4dF9ndWNfaWRfaW52YWxpZChj ZSkpOworCiAJLyoKLQkgKiBXZSB3cml0ZSBkaXJlY3RseSBpbnRvIHRoZSBleGVjbGlzdHMtPmlu ZmxpZ2h0IHF1ZXVlIGFuZCBkb24ndCB1c2UKLQkgKiB0aGUgZXhlY2xpc3RzLT5wZW5kaW5nIHF1 ZXVlLCBhcyB3ZSBkb24ndCBoYXZlIGEgZGlzdGluY3Qgc3dpdGNoCi0JICogZXZlbnQuCisJICog Q29ybmVyIGNhc2Ugd2hlcmUgdGhlIEd1QyBmaXJtd2FyZSB3YXMgYmxvd24gYXdheSBhbmQgcmVs b2FkZWQgd2hpbGUKKwkgKiB0aGlzIGNvbnRleHQgd2FzIHBpbm5lZC4KIAkgKi8KLQlwb3J0ID0g Zmlyc3Q7CisJaWYgKHVubGlrZWx5KCFscmNfZGVzY19yZWdpc3RlcmVkKGd1YywgY2UtPmd1Y19p ZCkpKSB7CisJCWVyciA9IGd1Y19scmNfZGVzY19waW4oY2UsIGZhbHNlKTsKKwkJaWYgKHVubGlr ZWx5KGVycikpCisJCQlnb3RvIG91dDsKKwl9CisKKwlpZiAodW5saWtlbHkoY29udGV4dF9ibG9j a2VkKGNlKSkpCisJCWdvdG8gb3V0OworCisJZW5hYmxlZCA9IGNvbnRleHRfZW5hYmxlZChjZSk7 CisKKwlpZiAoIWVuYWJsZWQpIHsKKwkJYWN0aW9uW2xlbisrXSA9IElOVEVMX0dVQ19BQ1RJT05f U0NIRURfQ09OVEVYVF9NT0RFX1NFVDsKKwkJYWN0aW9uW2xlbisrXSA9IGNlLT5ndWNfaWQ7CisJ CWFjdGlvbltsZW4rK10gPSBHVUNfQ09OVEVYVF9FTkFCTEU7CisJCXNldF9jb250ZXh0X3BlbmRp bmdfZW5hYmxlKGNlKTsKKwkJaW50ZWxfY29udGV4dF9nZXQoY2UpOworCQlnMmhfbGVuX2R3ID0g RzJIX0xFTl9EV19TQ0hFRF9DT05URVhUX01PREVfU0VUOworCX0gZWxzZSB7CisJCWFjdGlvblts ZW4rK10gPSBJTlRFTF9HVUNfQUNUSU9OX1NDSEVEX0NPTlRFWFQ7CisJCWFjdGlvbltsZW4rK10g PSBjZS0+Z3VjX2lkOworCX0KKworCWVyciA9IGludGVsX2d1Y19zZW5kX25iKGd1YywgYWN0aW9u LCBsZW4sIGcyaF9sZW5fZHcpOworCWlmICghZW5hYmxlZCAmJiAhZXJyKSB7CisJCXRyYWNlX2lu dGVsX2NvbnRleHRfc2NoZWRfZW5hYmxlKGNlKTsKKwkJYXRvbWljX2luYygmZ3VjLT5vdXRzdGFu ZGluZ19zdWJtaXNzaW9uX2cyaCk7CisJCXNldF9jb250ZXh0X2VuYWJsZWQoY2UpOworCX0gZWxz ZSBpZiAoIWVuYWJsZWQpIHsKKwkJY2xyX2NvbnRleHRfcGVuZGluZ19lbmFibGUoY2UpOworCQlp bnRlbF9jb250ZXh0X3B1dChjZSk7CisJfQorCWlmIChsaWtlbHkoIWVycikpCisJCXRyYWNlX2k5 MTVfcmVxdWVzdF9ndWNfc3VibWl0KHJxKTsKKworb3V0OgorCXJldHVybiBlcnI7Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBndWNfc2V0X2xyY190YWlsKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQoreworCXJxLT5jb250ZXh0LT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUxdID0KKwkJaW50 ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwpOworfQorCitzdGF0aWMgaW5saW5l IGludCBycV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXJldHVybiBy cS0+c2NoZWQuYXR0ci5wcmlvcml0eTsKK30KKworc3RhdGljIGludCBndWNfZGVxdWV1ZV9vbmVf Y29udGV4dChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5n aW5lICogY29uc3Qgc2NoZWRfZW5naW5lID0gZ3VjLT5zY2hlZF9lbmdpbmU7CisJc3RydWN0IGk5 MTVfcmVxdWVzdCAqbGFzdCA9IE5VTEw7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKwlzdHJ1Y3Qg cmJfbm9kZSAqcmI7CisJaW50IHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNjaGVkX2Vu Z2luZS0+bG9jayk7CisKKwlpZiAoZ3VjLT5zdGFsbGVkX3JlcXVlc3QpIHsKKwkJc3VibWl0ID0g dHJ1ZTsKKwkJbGFzdCA9IGd1Yy0+c3RhbGxlZF9yZXF1ZXN0OworCQlnb3RvIHJlc3VibWl0Owor CX0KKwogCXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQoJnNjaGVkX2VuZ2luZS0+cXVldWUp KSkgewogCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKIAkJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKIAogCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0 X2NvbnN1bWUocnEsIHJuLCBwKSB7Ci0JCQlpZiAobGFzdCAmJiBycS0+Y29udGV4dCAhPSBsYXN0 LT5jb250ZXh0KSB7Ci0JCQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KQotCQkJCQlnb3RvIGRvbmU7 Ci0KLQkJCQkqcG9ydCA9IHNjaGVkdWxlX2luKGxhc3QsCi0JCQkJCQkgICAgcG9ydCAtIGV4ZWNs aXN0cy0+aW5mbGlnaHQpOwotCQkJCXBvcnQrKzsKLQkJCX0KKwkJCWlmIChsYXN0ICYmIHJxLT5j b250ZXh0ICE9IGxhc3QtPmNvbnRleHQpCisJCQkJZ290byBkb25lOwogCiAJCQlsaXN0X2RlbF9p bml0KCZycS0+c2NoZWQubGluayk7CisKIAkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Ci0J CQlzdWJtaXQgPSB0cnVlOworCisJCQl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEsIDApOwogCQkJ bGFzdCA9IHJxOworCQkJc3VibWl0ID0gdHJ1ZTsKIAkJfQogCiAJCXJiX2VyYXNlX2NhY2hlZCgm cC0+bm9kZSwgJnNjaGVkX2VuZ2luZS0+cXVldWUpOwogCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7 CiAJfQogZG9uZToKLQlzY2hlZF9lbmdpbmUtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPQotCQlyYiA/ IHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHkgOiBJTlRfTUlOOwogCWlmIChzdWJtaXQpIHsKLQkJ KnBvcnQgPSBzY2hlZHVsZV9pbihsYXN0LCBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodCk7Ci0J CSorK3BvcnQgPSBOVUxMOwotCQlndWNfc3VibWl0KGVuZ2luZSwgZmlyc3QsIHBvcnQpOworCQln dWNfc2V0X2xyY190YWlsKGxhc3QpOworcmVzdWJtaXQ6CisJCXJldCA9IGd1Y19hZGRfcmVxdWVz dChndWMsIGxhc3QpOworCQlpZiAodW5saWtlbHkocmV0ID09IC1FUElQRSkpCisJCQlnb3RvIGRl YWRsazsKKwkJZWxzZSBpZiAocmV0ID09IC1FQlVTWSkgeworCQkJdGFza2xldF9zY2hlZHVsZSgm c2NoZWRfZW5naW5lLT50YXNrbGV0KTsKKwkJCWd1Yy0+c3RhbGxlZF9yZXF1ZXN0ID0gbGFzdDsK KwkJCXJldHVybiBmYWxzZTsKKwkJfQogCX0KLQlleGVjbGlzdHMtPmFjdGl2ZSA9IGV4ZWNsaXN0 cy0+aW5mbGlnaHQ7CisKKwlndWMtPnN0YWxsZWRfcmVxdWVzdCA9IE5VTEw7CisJcmV0dXJuIHN1 Ym1pdDsKKworZGVhZGxrOgorCXNjaGVkX2VuZ2luZS0+dGFza2xldC5jYWxsYmFjayA9IE5VTEw7 CisJdGFza2xldF9kaXNhYmxlX25vc3luYygmc2NoZWRfZW5naW5lLT50YXNrbGV0KTsKKwlyZXR1 cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQoc3RydWN0 IHRhc2tsZXRfc3RydWN0ICp0KQogewogCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRf ZW5naW5lID0KIAkJZnJvbV90YXNrbGV0KHNjaGVkX2VuZ2luZSwgdCwgdGFza2xldCk7Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IHNjaGVkX2VuZ2luZS0+cHJpdmF0 ZV9kYXRhOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3Rz ID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0LCAqcnE7 CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlib29sIGxvb3A7CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5n aW5lLT5zY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwlkbyB7CisJCWxvb3AgPSBndWNfZGVx dWV1ZV9vbmVfY29udGV4dChzY2hlZF9lbmdpbmUtPnByaXZhdGVfZGF0YSk7CisJfSB3aGlsZSAo bG9vcCk7CiAKLQlmb3IgKHBvcnQgPSBleGVjbGlzdHMtPmluZmxpZ2h0OyAocnEgPSAqcG9ydCk7 IHBvcnQrKykgewotCQlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQotCQkJYnJlYWs7 CisJaTkxNV9zY2hlZF9lbmdpbmVfcmVzZXRfb25fZW1wdHkoc2NoZWRfZW5naW5lKTsKIAotCQlz Y2hlZHVsZV9vdXQocnEpOwotCX0KLQlpZiAocG9ydCAhPSBleGVjbGlzdHMtPmluZmxpZ2h0KSB7 Ci0JCWludCBpZHggPSBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodDsKLQkJaW50IHJlbSA9IEFS UkFZX1NJWkUoZXhlY2xpc3RzLT5pbmZsaWdodCkgLSBpZHg7Ci0JCW1lbW1vdmUoZXhlY2xpc3Rz LT5pbmZsaWdodCwgcG9ydCwgcmVtICogc2l6ZW9mKCpwb3J0KSk7CisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIGNz X2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTE2IGlpcikKK3sK KwlpZiAoaWlyICYgR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUKQorCQlpbnRlbF9lbmdpbmVfc2ln bmFsX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZ3VjX2NvbnRleHRf ZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOworc3RhdGljIHZvaWQgcmVsZWFzZV9n dWNfaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwor c3RhdGljIHZvaWQgZ3VjX3NpZ25hbF9jb250ZXh0X2ZlbmNlKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSk7CitzdGF0aWMgdm9pZCBndWNfY2FuY2VsX2NvbnRleHRfcmVxdWVzdHMoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKTsKK3N0YXRpYyB2b2lkIGd1Y19ibG9ja2VkX2ZlbmNlX2NvbXBsZXRl KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CisKK3N0YXRpYyB2b2lkIHNjcnViX2d1Y19kZXNj X2Zvcl9vdXRzdGFuZGluZ19nMmgoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZTsKKwl1bnNpZ25lZCBsb25nIGluZGV4LCBmbGFnczsKKwlib29sIHBl bmRpbmdfZGlzYWJsZSwgcGVuZGluZ19lbmFibGUsIGRlcmVnaXN0ZXIsIGRlc3Ryb3llZCwgYmFu bmVkOworCisJeGFfZm9yX2VhY2goJmd1Yy0+Y29udGV4dF9sb29rdXAsIGluZGV4LCBjZSkgewor CQkvKiBGbHVzaCBjb250ZXh0ICovCisJCXNwaW5fbG9ja19pcnFzYXZlKCZjZS0+Z3VjX3N0YXRl LmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5s b2NrLCBmbGFncyk7CisKKwkJLyoKKwkJICogT25jZSB3ZSBhcmUgYXQgdGhpcyBwb2ludCBzdWJt aXNzaW9uX2Rpc2FibGVkKCkgaXMgZ3VhcmFudGVlZAorCQkgKiB0byB2aXNpYmxlIHRvIGFsbCBj YWxsZXJzIHdobyBzZXQgdGhlIGJlbG93IGZsYWdzIChzZWUgYWJvdmUKKwkJICogZmx1c2ggYW5k IGZsdXNoZXMgaW4gcmVzZXRfcHJlcGFyZSkuIElmIHN1Ym1pc3Npb25fZGlzYWJsZWQoKQorCQkg KiBpcyBzZXQsIHRoZSBjYWxsZXIgc2hvdWxkbid0IHNldCB0aGVzZSBmbGFncy4KKwkJICovCisK KwkJZGVzdHJveWVkID0gY29udGV4dF9kZXN0cm95ZWQoY2UpOworCQlwZW5kaW5nX2VuYWJsZSA9 IGNvbnRleHRfcGVuZGluZ19lbmFibGUoY2UpOworCQlwZW5kaW5nX2Rpc2FibGUgPSBjb250ZXh0 X3BlbmRpbmdfZGlzYWJsZShjZSk7CisJCWRlcmVnaXN0ZXIgPSBjb250ZXh0X3dhaXRfZm9yX2Rl cmVnaXN0ZXJfdG9fcmVnaXN0ZXIoY2UpOworCQliYW5uZWQgPSBjb250ZXh0X2Jhbm5lZChjZSk7 CisJCWluaXRfc2NoZWRfc3RhdGUoY2UpOworCisJCWlmIChwZW5kaW5nX2VuYWJsZSB8fCBkZXN0 cm95ZWQgfHwgZGVyZWdpc3RlcikgeworCQkJYXRvbWljX2RlYygmZ3VjLT5vdXRzdGFuZGluZ19z dWJtaXNzaW9uX2cyaCk7CisJCQlpZiAoZGVyZWdpc3RlcikKKwkJCQlndWNfc2lnbmFsX2NvbnRl eHRfZmVuY2UoY2UpOworCQkJaWYgKGRlc3Ryb3llZCkgeworCQkJCXJlbGVhc2VfZ3VjX2lkKGd1 YywgY2UpOworCQkJCV9fZ3VjX2NvbnRleHRfZGVzdHJveShjZSk7CisJCQl9CisJCQlpZiAocGVu ZGluZ19lbmFibGV8fCBkZXJlZ2lzdGVyKQorCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKwkJ fQorCisJCS8qIE5vdCBtdXR1YWx5IGV4Y2x1c2l2ZSB3aXRoIGFib3ZlIGlmIHN0YXRlbWVudC4g Ki8KKwkJaWYgKHBlbmRpbmdfZGlzYWJsZSkgeworCQkJZ3VjX3NpZ25hbF9jb250ZXh0X2ZlbmNl KGNlKTsKKwkJCWlmIChiYW5uZWQpIHsKKwkJCQlndWNfY2FuY2VsX2NvbnRleHRfcmVxdWVzdHMo Y2UpOworCQkJCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoY2UtPmVuZ2luZSk7CisJ CQl9CisJCQlpbnRlbF9jb250ZXh0X3NjaGVkX2Rpc2FibGVfdW5waW4oY2UpOworCQkJYXRvbWlj X2RlYygmZ3VjLT5vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCk7CisJCQlzcGluX2xvY2tfaXJx c2F2ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJCQlndWNfYmxvY2tlZF9mZW5jZV9j b21wbGV0ZShjZSk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxv Y2ssIGZsYWdzKTsKKworCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCQl9CiAJfQorfQorCitz dGF0aWMgaW5saW5lIGJvb2wKK3N1Ym1pc3Npb25fZGlzYWJsZWQoc3RydWN0IGludGVsX2d1YyAq Z3VjKQoreworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9 IGd1Yy0+c2NoZWRfZW5naW5lOwogCi0JX19ndWNfZGVxdWV1ZShlbmdpbmUpOworCXJldHVybiB1 bmxpa2VseSghc2NoZWRfZW5naW5lIHx8CisJCQkhX190YXNrbGV0X2lzX2VuYWJsZWQoJnNjaGVk X2VuZ2luZS0+dGFza2xldCkpOworfQogCi0JaTkxNV9zY2hlZF9lbmdpbmVfcmVzZXRfb25fZW1w dHkoZW5naW5lLT5zY2hlZF9lbmdpbmUpOworc3RhdGljIHZvaWQgZGlzYWJsZV9zdWJtaXNzaW9u KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBj b25zdCBzY2hlZF9lbmdpbmUgPSBndWMtPnNjaGVkX2VuZ2luZTsKIAotCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisJaWYgKF9fdGFz a2xldF9pc19lbmFibGVkKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQpKSB7CisJCUdFTV9CVUdfT04o IWd1Yy0+Y3QuZW5hYmxlZCk7CisJCV9fdGFza2xldF9kaXNhYmxlX3N5bmNfb25jZSgmc2NoZWRf ZW5naW5lLT50YXNrbGV0KTsKKwkJc2NoZWRfZW5naW5lLT50YXNrbGV0LmNhbGxiYWNrID0gTlVM TDsKKwl9CiB9CiAKLXN0YXRpYyB2b2lkIGNzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgdTE2IGlpcikKK3N0YXRpYyB2b2lkIGVuYWJsZV9zdWJtaXNzaW9uKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlpZiAoaWlyICYgR1RfUkVOREVSX1VTRVJfSU5URVJS VVBUKSB7Ci0JCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoZW5naW5lKTsKLQkJdGFz a2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQpOworCXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9IGd1Yy0+c2NoZWRfZW5n aW5lOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3VjLT5z Y2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwlzY2hlZF9lbmdpbmUtPnRhc2tsZXQuY2FsbGJh Y2sgPSBndWNfc3VibWlzc2lvbl90YXNrbGV0OworCXdtYigpOworCWlmICghX190YXNrbGV0X2lz X2VuYWJsZWQoJnNjaGVkX2VuZ2luZS0+dGFza2xldCkgJiYKKwkgICAgX190YXNrbGV0X2VuYWJs ZSgmc2NoZWRfZW5naW5lLT50YXNrbGV0KSkgeworCQlHRU1fQlVHX09OKCFndWMtPmN0LmVuYWJs ZWQpOworCisJCS8qIEFuZCBraWNrIGluIGNhc2Ugd2UgbWlzc2VkIGEgbmV3IHJlcXVlc3Qgc3Vi bWlzc2lvbi4gKi8KKwkJdGFza2xldF9oaV9zY2hlZHVsZSgmc2NoZWRfZW5naW5lLT50YXNrbGV0 KTsKIAl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3VjLT5zY2hlZF9lbmdpbmUtPmxvY2ss IGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgZ3VjX2ZsdXNoX3N1Ym1pc3Npb25zKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiXG4iKTsKKwlz dHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdpbmUgPSBndWMtPnNjaGVk X2VuZ2luZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNj aGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVk X2VuZ2luZS0+bG9jaywgZmxhZ3MpOworfQorCit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3Jl c2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWludCBpOworCisJaWYgKHVu bGlrZWx5KCFndWNfc3VibWlzc2lvbl9pbml0aWFsaXplZChndWMpKSkKKwkJLyogUmVzZXQgY2Fs bGVkIGR1cmluZyBkcml2ZXIgbG9hZD8gR3VDIG5vdCB5ZXQgaW5pdGlhbGlzZWQhICovCisJCXJl dHVybjsKKworCWludGVsX2d0X3BhcmtfaGVhcnRiZWF0cyhndWNfdG9fZ3QoZ3VjKSk7CisJZGlz YWJsZV9zdWJtaXNzaW9uKGd1Yyk7CisJZ3VjLT5pbnRlcnJ1cHRzLmRpc2FibGUoZ3VjKTsKKwor CS8qIEZsdXNoIElSUSBoYW5kbGVyICovCisJc3Bpbl9sb2NrX2lycSgmZ3VjX3RvX2d0KGd1Yykt PmlycV9sb2NrKTsKKwlzcGluX3VubG9ja19pcnEoJmd1Y190b19ndChndWMpLT5pcnFfbG9jayk7 CisKKwlndWNfZmx1c2hfc3VibWlzc2lvbnMoZ3VjKTsKIAogCS8qCi0JICogUHJldmVudCByZXF1 ZXN0IHN1Ym1pc3Npb24gdG8gdGhlIGhhcmR3YXJlIHVudGlsIHdlIGhhdmUKLQkgKiBjb21wbGV0 ZWQgdGhlIHJlc2V0IGluIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaCgpLiBJZiBhIHJlcXVlc3QKLQkg KiBpcyBjb21wbGV0ZWQgYnkgb25lIGVuZ2luZSwgaXQgbWF5IHRoZW4gcXVldWUgYSByZXF1ZXN0 Ci0JICogdG8gYSBzZWNvbmQgdmlhIGl0cyBleGVjbGlzdHMtPnRhc2tsZXQgKmp1c3QqIGFzIHdl IGFyZQotCSAqIGNhbGxpbmcgZW5naW5lLT5pbml0X2h3KCkgYW5kIGFsc28gd3JpdGluZyB0aGUg RUxTUC4KLQkgKiBUdXJuaW5nIG9mZiB0aGUgZXhlY2xpc3RzLT50YXNrbGV0IHVudGlsIHRoZSBy ZXNldCBpcyBvdmVyCi0JICogcHJldmVudHMgdGhlIHJhY2UuCi0JICovCi0JX190YXNrbGV0X2Rp c2FibGVfc3luY19vbmNlKCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+dGFza2xldCk7CisJICogSGFu ZGxlIGFueSBvdXRzdGFuZGluZyBHMkhzIGJlZm9yZSByZXNldC4gQ2FsbCBJUlEgaGFuZGxlciBk aXJlY3RseQorCSAqIGVhY2ggcGFzcyBhcyBpbnRlcnJ1cHQgaGF2ZSBiZWVuIGRpc2FibGVkLiBX ZSBhbHdheXMgc2NydWIgZm9yCisJICogb3V0c3RhbmRpbmcgRzJIIGFzIGl0IGlzIHBvc3NpYmxl IGZvciBvdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCB0bworCSAqIGJlIGluY3JlbWVudGVkIGFm dGVyIHRoZSBjb250ZXh0IHN0YXRlIHVwZGF0ZS4KKyAJICovCisJZm9yIChpID0gMDsgaSA8IDQg JiYgYXRvbWljX3JlYWQoJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgpOyArK2kpIHsK KwkJaW50ZWxfZ3VjX3RvX2hvc3RfZXZlbnRfaGFuZGxlcihndWMpOworI2RlZmluZSB3YWl0X2Zv cl9yZXNldChndWMsIHdhaXRfdmFyKSBcCisJCWludGVsX2d1Y193YWl0X2Zvcl9wZW5kaW5nX21z ZyhndWMsIHdhaXRfdmFyLCBmYWxzZSwgKEhaIC8gMjApKQorCQlkbyB7CisJCQl3YWl0X2Zvcl9y ZXNldChndWMsICZndWMtPm91dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoKTsKKwkJfSB3aGlsZSAo IWxpc3RfZW1wdHkoJmd1Yy0+Y3QucmVxdWVzdHMuaW5jb21pbmcpKTsKKwl9CisJc2NydWJfZ3Vj X2Rlc2NfZm9yX291dHN0YW5kaW5nX2cyaChndWMpOworfQorCitzdGF0aWMgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqCitndWNfdmlydHVhbF9nZXRfc2libGluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICp2ZSwgdW5zaWduZWQgaW50IHNpYmxpbmcpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOworCWludGVsX2VuZ2luZV9tYXNrX3QgdG1wLCBtYXNrID0gdmUtPm1hc2s7CisJ dW5zaWduZWQgaW50IG51bV9zaWJsaW5ncyA9IDA7CisKKwlmb3JfZWFjaF9lbmdpbmVfbWFza2Vk KGVuZ2luZSwgdmUtPmd0LCBtYXNrLCB0bXApCisJCWlmIChudW1fc2libGluZ3MrKyA9PSBzaWJs aW5nKQorCQkJcmV0dXJuIGVuZ2luZTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgorX19jb250ZXh0X3RvX3BoeXNpY2FsX2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0gY2UtPmVuZ2luZTsKKworCWlmIChpbnRlbF9lbmdpbmVfaXNfdmlydHVhbChlbmdp bmUpKQorCQllbmdpbmUgPSBndWNfdmlydHVhbF9nZXRfc2libGluZyhlbmdpbmUsIDApOworCisJ cmV0dXJuIGVuZ2luZTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3N0YXRlKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwKLQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Ci0JCQkgICAgdTMyIGhlYWQsCi0JCQkgICAgYm9vbCBzY3J1YikKK3N0YXRpYyB2b2lkIGd1Y19y ZXNldF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBoZWFkLCBib29sIHNjcnVi KQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IF9fY29udGV4dF90b19waHlz aWNhbF9lbmdpbmUoY2UpOworCisJaWYgKGludGVsX2NvbnRleHRfaXNfYmFubmVkKGNlKSkKKwkJ cmV0dXJuOworCiAJR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKTsKIAog CS8qCkBAIC0zMTUsNjkgKzc2OSwxNTggQEAgc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3N0YXRlKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAlscmNfdXBkYXRlX3JlZ3MoY2UsIGVuZ2luZSwgaGVh ZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19yZXNldF9yZXdpbmQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCitzdGF0aWMgdm9pZCBndWNfcmVzZXRfbm9wKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOworfQogCi0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CitzdGF0aWMgdm9p ZCBndWNfcmV3aW5kX25vcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3Rh bGxlZCkKK3sKK30KIAotCS8qIFB1c2ggYmFjayBhbnkgaW5jb21wbGV0ZSByZXF1ZXN0cyBmb3Ig cmVwbGF5IGFmdGVyIHRoZSByZXNldC4gKi8KLQlycSA9IGV4ZWNsaXN0c191bndpbmRfaW5jb21w bGV0ZV9yZXF1ZXN0cyhleGVjbGlzdHMpOwotCWlmICghcnEpCi0JCWdvdG8gb3V0X3VubG9jazsK K3N0YXRpYyB2b2lkCitfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuOworCXN0cnVjdCBs aXN0X2hlYWQgKnBsOworCWludCBwcmlvID0gSTkxNV9QUklPUklUWV9JTlZBTElEOworCXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9CisJCWNlLT5lbmdpbmUt PnNjaGVkX2VuZ2luZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKCFpOTE1X3JlcXVl c3Rfc3RhcnRlZChycSkpCi0JCXN0YWxsZWQgPSBmYWxzZTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgm c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5s b2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnEsIHJuLAorCQkJCSAmY2UtPmd1Y19h Y3RpdmUucmVxdWVzdHMsCisJCQkJIHNjaGVkLmxpbmspIHsKKwkJaWYgKGk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocnEpKQorCQkJY29udGludWU7CisKKwkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVk LmxpbmspOworCQlzcGluX3VubG9jaygmY2UtPmd1Y19hY3RpdmUubG9jayk7CisKKwkJX19pOTE1 X3JlcXVlc3RfdW5zdWJtaXQocnEpOworCisJCS8qIFB1c2ggdGhlIHJlcXVlc3QgYmFjayBpbnRv IHRoZSBxdWV1ZSBmb3IgbGF0ZXIgcmVzdWJtaXNzaW9uLiAqLworCQlHRU1fQlVHX09OKHJxX3By aW8ocnEpID09IEk5MTVfUFJJT1JJVFlfSU5WQUxJRCk7CisJCWlmIChycV9wcmlvKHJxKSAhPSBw cmlvKSB7CisJCQlwcmlvID0gcnFfcHJpbyhycSk7CisJCQlwbCA9IGk5MTVfc2NoZWRfbG9va3Vw X3ByaW9saXN0KHNjaGVkX2VuZ2luZSwgcHJpbyk7CisJCX0KKwkJR0VNX0JVR19PTihpOTE1X3Nj aGVkX2VuZ2luZV9pc19lbXB0eShzY2hlZF9lbmdpbmUpKTsKIAotCV9faTkxNV9yZXF1ZXN0X3Jl c2V0KHJxLCBzdGFsbGVkKTsKLQlndWNfcmVzZXRfc3RhdGUocnEtPmNvbnRleHQsIGVuZ2luZSwg cnEtPmhlYWQsIHN0YWxsZWQpOworCQlsaXN0X2FkZF90YWlsKCZycS0+c2NoZWQubGluaywgcGwp OworCQlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUsICZycS0+ZmVuY2UuZmxhZ3MpOwog Ci1vdXRfdW5sb2NrOgotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c2NoZWRfZW5n aW5lLT5sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9jaygmY2UtPmd1Y19hY3RpdmUubG9jayk7CisJ fQorCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgZ3Vj X3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMgdm9p ZCBfX2d1Y19yZXNldF9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgYm9vbCBzdGFs bGVkKQogewotCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9 IGVuZ2luZS0+c2NoZWRfZW5naW5lOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47Ci0J c3RydWN0IHJiX25vZGUgKnJiOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7CisJdTMyIGhlYWQ7CiAKLQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiXG4iKTsK KwlpbnRlbF9jb250ZXh0X2dldChjZSk7CiAKIAkvKgotCSAqIEJlZm9yZSB3ZSBjYWxsIGVuZ2lu ZS0+Y2FuY2VsX3JlcXVlc3RzKCksIHdlIHNob3VsZCBoYXZlIGV4Y2x1c2l2ZQotCSAqIGFjY2Vz cyB0byB0aGUgc3VibWlzc2lvbiBzdGF0ZS4gVGhpcyBpcyBhcnJhbmdlZCBmb3IgdXMgYnkgdGhl Ci0JICogY2FsbGVyIGRpc2FibGluZyB0aGUgaW50ZXJydXB0IGdlbmVyYXRpb24sIHRoZSB0YXNr bGV0IGFuZCBvdGhlcgotCSAqIHRocmVhZHMgdGhhdCBtYXkgdGhlbiBhY2Nlc3MgdGhlIHNhbWUg c3RhdGUsIGdpdmluZyB1cyBhIGZyZWUgaGFuZAotCSAqIHRvIHJlc2V0IHN0YXRlLiBIb3dldmVy LCB3ZSBzdGlsbCBuZWVkIHRvIGxldCBsb2NrZGVwIGJlIGF3YXJlIHRoYXQKLQkgKiB3ZSBrbm93 IHRoaXMgc3RhdGUgbWF5IGJlIGFjY2Vzc2VkIGluIGhhcmRpcnEgY29udGV4dCwgc28gd2UKLQkg KiBkaXNhYmxlIHRoZSBpcnEgYXJvdW5kIHRoaXMgbWFuaXB1bGF0aW9uIGFuZCB3ZSB3YW50IHRv IGtlZXAKLQkgKiB0aGUgc3BpbmxvY2sgZm9jdXNlZCBvbiBpdHMgZHV0aWVzIGFuZCBub3QgYWNj aWRlbnRhbGx5IGNvbmZsYXRlCi0JICogY292ZXJhZ2UgdG8gdGhlIHN1Ym1pc3Npb24ncyBpcnEg c3RhdGUuIChTaW1pbGFybHksIGFsdGhvdWdoIHdlCi0JICogc2hvdWxkbid0IG5lZWQgdG8gZGlz YWJsZSBpcnEgYXJvdW5kIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlCi0JICogc3VibWlzc2lvbidz IGlycSBzdGF0ZSwgd2UgYWxzbyB3aXNoIHRvIHJlbWluZCBvdXJzZWx2ZXMgdGhhdAotCSAqIGl0 IGlzIGlycSBzdGF0ZS4pCisJICogR3VDIHdpbGwgaW1wbGljaXRseSBtYXJrIHRoZSBjb250ZXh0 IGFzIG5vbi1zY2hlZHVsYWJsZQorCSAqIHdoZW4gaXQgc2VuZHMgdGhlIHJlc2V0IG5vdGlmaWNh dGlvbi4gTWFrZSBzdXJlIG91ciBzdGF0ZQorCSAqIHJlZmxlY3RzIHRoaXMgY2hhbmdlLiBUaGUg Y29udGV4dCB3aWxsIGJlIG1hcmtlZCBlbmFibGVkCisJICogb24gcmVzdWJtaXNzaW9uLgogCSAq LwotCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwljbHJf Y29udGV4dF9lbmFibGVkKGNlKTsKIAotCS8qIE1hcmsgYWxsIGV4ZWN1dGluZyByZXF1ZXN0cyBh cyBza2lwcGVkLiAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZzY2hlZF9lbmdpbmUtPnJl cXVlc3RzLCBzY2hlZC5saW5rKSB7Ci0JCWk5MTVfcmVxdWVzdF9zZXRfZXJyb3Jfb25jZShycSwg LUVJTyk7Ci0JCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKHJxKTsKKwlycSA9IGludGVsX2Nv bnRleHRfZmluZF9hY3RpdmVfcmVxdWVzdChjZSk7CisJaWYgKCFycSkgeworCQloZWFkID0gY2Ut PnJpbmctPnRhaWw7CisJCXN0YWxsZWQgPSBmYWxzZTsKKwkJZ290byBvdXRfcmVwbGF5OwogCX0K IAotCS8qIEZsdXNoIHRoZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxpc3QgKGZv ciByZXRpcmluZykuICovCi0Jd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmc2NoZWRfZW5n aW5lLT5xdWV1ZSkpKSB7Ci0JCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3Qo cmIpOwotCisJaWYgKCFpOTE1X3JlcXVlc3Rfc3RhcnRlZChycSkpCisJCXN0YWxsZWQgPSBmYWxz ZTsKKworCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVfaXNfaWRsZSgmY2UtPmFjdGl2ZSkpOworCWhl YWQgPSBpbnRlbF9yaW5nX3dyYXAoY2UtPnJpbmcsIHJxLT5oZWFkKTsKKwlfX2k5MTVfcmVxdWVz dF9yZXNldChycSwgc3RhbGxlZCk7CisKK291dF9yZXBsYXk6CisJZ3VjX3Jlc2V0X3N0YXRlKGNl LCBoZWFkLCBzdGFsbGVkKTsKKwlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGNlKTsKKwlp bnRlbF9jb250ZXh0X3B1dChjZSk7Cit9CisKK3ZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVz ZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBib29sIHN0YWxsZWQpCit7CisJc3RydWN0IGludGVs X2NvbnRleHQgKmNlOworCXVuc2lnbmVkIGxvbmcgaW5kZXg7CisKKwlpZiAodW5saWtlbHkoIWd1 Y19zdWJtaXNzaW9uX2luaXRpYWxpemVkKGd1YykpKQorCQkvKiBSZXNldCBjYWxsZWQgZHVyaW5n IGRyaXZlciBsb2FkPyBHdUMgbm90IHlldCBpbml0aWFsaXNlZCEgKi8KKwkJcmV0dXJuOworCisJ eGFfZm9yX2VhY2goJmd1Yy0+Y29udGV4dF9sb29rdXAsIGluZGV4LCBjZSkKKwkJaWYgKGludGVs X2NvbnRleHRfaXNfcGlubmVkKGNlKSkKKwkJCV9fZ3VjX3Jlc2V0X2NvbnRleHQoY2UsIHN0YWxs ZWQpOworCisJLyogR3VDIGlzIGJsb3duIGF3YXksIGRyb3AgYWxsIHJlZmVyZW5jZXMgdG8gY29u dGV4dHMgKi8KKwl4YV9kZXN0cm95KCZndWMtPmNvbnRleHRfbG9va3VwKTsKK30KKworc3RhdGlj IHZvaWQgZ3VjX2NhbmNlbF9jb250ZXh0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSA9IGNlX3RvX2d1 YyhjZSktPnNjaGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJLyogTWFyayBhbGwgZXhlY3V0aW5nIHJlcXVlc3RzIGFzIHNraXBw ZWQuICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwor CXNwaW5fbG9jaygmY2UtPmd1Y19hY3RpdmUubG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShy cSwgJmNlLT5ndWNfYWN0aXZlLnJlcXVlc3RzLCBzY2hlZC5saW5rKQorCQlpOTE1X3JlcXVlc3Rf cHV0KGk5MTVfcmVxdWVzdF9tYXJrX2VpbyhycSkpOworCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2Fj dGl2ZS5sb2NrKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZF9lbmdpbmUtPmxvY2ss IGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQKK2d1Y19jYW5jZWxfc2NoZWRfZW5naW5lX3JlcXVl c3RzKHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lKQoreworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCAqcm47CisJc3RydWN0IHJiX25vZGUgKnJiOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisKKwkvKiBDYW4gYmUgY2FsbGVkIGR1cmluZyBib290IGlmIEd1QyBmYWlscyB0 byBsb2FkICovCisJaWYgKCFzY2hlZF9lbmdpbmUpCisJCXJldHVybjsKKworCS8qCisJICogQmVm b3JlIHdlIGNhbGwgZW5naW5lLT5jYW5jZWxfcmVxdWVzdHMoKSwgd2Ugc2hvdWxkIGhhdmUgZXhj bHVzaXZlCisJICogYWNjZXNzIHRvIHRoZSBzdWJtaXNzaW9uIHN0YXRlLiBUaGlzIGlzIGFycmFu Z2VkIGZvciB1cyBieSB0aGUKKwkgKiBjYWxsZXIgZGlzYWJsaW5nIHRoZSBpbnRlcnJ1cHQgZ2Vu ZXJhdGlvbiwgdGhlIHRhc2tsZXQgYW5kIG90aGVyCisJICogdGhyZWFkcyB0aGF0IG1heSB0aGVu IGFjY2VzcyB0aGUgc2FtZSBzdGF0ZSwgZ2l2aW5nIHVzIGEgZnJlZSBoYW5kCisJICogdG8gcmVz ZXQgc3RhdGUuIEhvd2V2ZXIsIHdlIHN0aWxsIG5lZWQgdG8gbGV0IGxvY2tkZXAgYmUgYXdhcmUg dGhhdAorCSAqIHdlIGtub3cgdGhpcyBzdGF0ZSBtYXkgYmUgYWNjZXNzZWQgaW4gaGFyZGlycSBj b250ZXh0LCBzbyB3ZQorCSAqIGRpc2FibGUgdGhlIGlycSBhcm91bmQgdGhpcyBtYW5pcHVsYXRp b24gYW5kIHdlIHdhbnQgdG8ga2VlcAorCSAqIHRoZSBzcGlubG9jayBmb2N1c2VkIG9uIGl0cyBk dXRpZXMgYW5kIG5vdCBhY2NpZGVudGFsbHkgY29uZmxhdGUKKwkgKiBjb3ZlcmFnZSB0byB0aGUg c3VibWlzc2lvbidzIGlycSBzdGF0ZS4gKFNpbWlsYXJseSwgYWx0aG91Z2ggd2UKKwkgKiBzaG91 bGRuJ3QgbmVlZCB0byBkaXNhYmxlIGlycSBhcm91bmQgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aGUK KwkgKiBzdWJtaXNzaW9uJ3MgaXJxIHN0YXRlLCB3ZSBhbHNvIHdpc2ggdG8gcmVtaW5kIG91cnNl bHZlcyB0aGF0CisJICogaXQgaXMgaXJxIHN0YXRlLikKKwkgKi8KKwlzcGluX2xvY2tfaXJxc2F2 ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisKKwkvKiBGbHVzaCB0aGUgcXVldWVkIHJl cXVlc3RzIHRvIHRoZSB0aW1lbGluZSBsaXN0IChmb3IgcmV0aXJpbmcpLiAqLworCXdoaWxlICgo cmIgPSByYl9maXJzdF9jYWNoZWQoJnNjaGVkX2VuZ2luZS0+cXVldWUpKSkgeworCQlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKKwogCQlwcmlvbGlzdF9mb3JfZWFj aF9yZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwKSB7CiAJCQlsaXN0X2RlbF9pbml0KCZycS0+c2No ZWQubGluayk7CisKIAkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Ci0JCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FSU8pOwotCQkJaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxl dGUocnEpOworCisJCQlpOTE1X3JlcXVlc3RfcHV0KGk5MTVfcmVxdWVzdF9tYXJrX2VpbyhycSkp OwogCQl9CiAKIAkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAmc2NoZWRfZW5naW5lLT5xdWV1 ZSk7CkBAIC0zODksMTM3ICs5MzIsMTMxOCBAQCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfY2FuY2Vs KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzY2hlZF9lbmdpbmUtPnF1ZXVlX3By aW9yaXR5X2hpbnQgPSBJTlRfTUlOOwogCXNjaGVkX2VuZ2luZS0+cXVldWUgPSBSQl9ST09UX0NB Q0hFRDsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxh Z3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3Mp OworfQorCit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCXVuc2lnbmVk IGxvbmcgaW5kZXg7CisKKwl4YV9mb3JfZWFjaCgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaW5kZXgs IGNlKQorCQlpZiAoaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKQorCQkJZ3VjX2NhbmNlbF9j b250ZXh0X3JlcXVlc3RzKGNlKTsKKworCWd1Y19jYW5jZWxfc2NoZWRfZW5naW5lX3JlcXVlc3Rz KGd1Yy0+c2NoZWRfZW5naW5lKTsKKworCS8qIEd1QyBpcyBibG93biBhd2F5LCBkcm9wIGFsbCBy ZWZlcmVuY2VzIHRvIGNvbnRleHRzICovCisJeGFfZGVzdHJveSgmZ3VjLT5jb250ZXh0X2xvb2t1 cCk7Cit9CisKK3ZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVzZXRfZmluaXNoKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKK3sKKwkvKiBSZXNldCBjYWxsZWQgZHVyaW5nIGRyaXZlciBsb2FkIG9y IGR1cmluZyB3ZWRnZT8gKi8KKwlpZiAodW5saWtlbHkoIWd1Y19zdWJtaXNzaW9uX2luaXRpYWxp emVkKGd1YykgfHwKKwkJICAgICB0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmd1Y190b19ndChndWMp LT5yZXNldC5mbGFncykpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFRlY2huaWNhbGx5IHBvc3Np YmxlIGZvciBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIGJlIG5vbi16ZXJvIGhlcmUsCisJICog YnV0IHZlcnkgdW5saWtlbHkgKyBoYXJtbGVzcy4gUmVnYXJkbGVzcyBsZXQncyBhZGQgYSB3YXJu IHNvIHdlIGNhbgorCSAqIHNlZSBpbiBDSSBpZiB0aGlzIGhhcHBlbnMgZnJlcXVlbnRseSAvIGEg cHJlY3Vyc29yIHRvIHRha2luZyBkb3duIHRoZQorCSAqIG1hY2hpbmUuCisJICovCisJR0VNX1dB Uk5fT04oYXRvbWljX3JlYWQoJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgpKTsKKwlh dG9taWNfc2V0KCZndWMtPm91dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoLCAwKTsKKworCWludGVs X2d1Y19nbG9iYWxfcG9saWNpZXNfdXBkYXRlKGd1Yyk7CisJZW5hYmxlX3N1Ym1pc3Npb24oZ3Vj KTsKKwlpbnRlbF9ndF91bnBhcmtfaGVhcnRiZWF0cyhndWNfdG9fZ3QoZ3VjKSk7Cit9CisKKy8q CisgKiBTZXQgdXAgdGhlIG1lbW9yeSByZXNvdXJjZXMgdG8gYmUgc2hhcmVkIHdpdGggdGhlIEd1 QyAodmlhIHRoZSBHR1RUKQorICogYXQgZmlybXdhcmUgbG9hZGluZyB0aW1lLgorICovCitpbnQg aW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJaW50 IHJldDsKKworCWlmIChndWMtPmxyY19kZXNjX3Bvb2wpCisJCXJldHVybiAwOworCisJcmV0ID0g Z3VjX2xyY19kZXNjX3Bvb2xfY3JlYXRlKGd1Yyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KwkvKgorCSAqIEtlZXAgc3RhdGljIGFuYWx5c2VycyBoYXBweSwgbGV0IHRoZW0ga25vdyB0aGF0 IHdlIGFsbG9jYXRlZCB0aGUKKwkgKiB2bWEgYWZ0ZXIgdGVzdGluZyB0aGF0IGl0IGRpZG4ndCBl eGlzdCBlYXJsaWVyLgorCSAqLworCUdFTV9CVUdfT04oIWd1Yy0+bHJjX2Rlc2NfcG9vbCk7CisK Kwl4YV9pbml0X2ZsYWdzKCZndWMtPmNvbnRleHRfbG9va3VwLCBYQV9GTEFHU19MT0NLX0lSUSk7 CisKKwlzcGluX2xvY2tfaW5pdCgmZ3VjLT5jb250ZXh0c19sb2NrKTsKKwlJTklUX0xJU1RfSEVB RCgmZ3VjLT5ndWNfaWRfbGlzdCk7CisJaWRhX2luaXQoJmd1Yy0+Z3VjX2lkcyk7CisKKwlyZXR1 cm4gMDsKK30KKwordm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKK3sKKwlpZiAoIWd1Yy0+bHJjX2Rlc2NfcG9vbCkKKwkJcmV0dXJuOworCisJZ3Vj X2xyY19kZXNjX3Bvb2xfZGVzdHJveShndWMpOworCWk5MTVfc2NoZWRfZW5naW5lX3B1dChndWMt PnNjaGVkX2VuZ2luZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZV9yZXF1ZXN0KHN0 cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lLAorCQkJCSBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwKKwkJCQkgaW50IHByaW8pCit7CisJR0VNX0JVR19PTighbGlzdF9lbXB0eSgm cnEtPnNjaGVkLmxpbmspKTsKKwlsaXN0X2FkZF90YWlsKCZycS0+c2NoZWQubGluaywKKwkJICAg ICAgaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3Qoc2NoZWRfZW5naW5lLCBwcmlvKSk7CisJc2V0 X2JpdChJOTE1X0ZFTkNFX0ZMQUdfUFFVRVVFLCAmcnEtPmZlbmNlLmZsYWdzKTsKK30KKworc3Rh dGljIGludCBndWNfYnlwYXNzX3Rhc2tsZXRfc3VibWl0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywK KwkJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCWludCByZXQ7CisKKwlfX2k5 MTVfcmVxdWVzdF9zdWJtaXQocnEpOworCisJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJxLCAwKTsK KworCWd1Y19zZXRfbHJjX3RhaWwocnEpOworCXJldCA9IGd1Y19hZGRfcmVxdWVzdChndWMsIHJx KTsKKwlpZiAocmV0ID09IC1FQlVTWSkKKwkJZ3VjLT5zdGFsbGVkX3JlcXVlc3QgPSBycTsKKwor CWlmICh1bmxpa2VseShyZXQgPT0gLUVQSVBFKSkKKwkJZGlzYWJsZV9zdWJtaXNzaW9uKGd1Yyk7 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBndWNfc3VibWl0X3JlcXVlc3Qoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hl ZF9lbmdpbmUgPSBycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmU7CisJc3RydWN0IGludGVsX2d1YyAq Z3VjID0gJnJxLT5lbmdpbmUtPmd0LT51Yy5ndWM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwor CS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIGZl bmNlcy4gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7 CisKKwlpZiAoc3VibWlzc2lvbl9kaXNhYmxlZChndWMpIHx8IGd1Yy0+c3RhbGxlZF9yZXF1ZXN0 IHx8CisJICAgICFpOTE1X3NjaGVkX2VuZ2luZV9pc19lbXB0eShzY2hlZF9lbmdpbmUpKQorCQlx dWV1ZV9yZXF1ZXN0KHNjaGVkX2VuZ2luZSwgcnEsIHJxX3ByaW8ocnEpKTsKKwllbHNlIGlmIChn dWNfYnlwYXNzX3Rhc2tsZXRfc3VibWl0KGd1YywgcnEpID09IC1FQlVTWSkKKwkJdGFza2xldF9o aV9zY2hlZHVsZSgmc2NoZWRfZW5naW5lLT50YXNrbGV0KTsKKworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgaW50IG5ld19n dWNfaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXJldHVybiBpZGFfc2ltcGxlX2dldCgm Z3VjLT5ndWNfaWRzLCAwLAorCQkJICAgICAgR1VDX01BWF9MUkNfREVTQ1JJUFRPUlMsIEdGUF9L RVJORUwgfAorCQkJICAgICAgX19HRlBfUkVUUllfTUFZRkFJTCB8IF9fR0ZQX05PV0FSTik7Cit9 CisKK3N0YXRpYyB2b2lkIF9fcmVsZWFzZV9ndWNfaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJaWYgKCFjb250ZXh0X2d1Y19pZF9pbnZhbGlk KGNlKSkgeworCQlpZGFfc2ltcGxlX3JlbW92ZSgmZ3VjLT5ndWNfaWRzLCBjZS0+Z3VjX2lkKTsK KwkJcmVzZXRfbHJjX2Rlc2MoZ3VjLCBjZS0+Z3VjX2lkKTsKKwkJc2V0X2NvbnRleHRfZ3VjX2lk X2ludmFsaWQoY2UpOworCX0KKwlpZiAoIWxpc3RfZW1wdHkoJmNlLT5ndWNfaWRfbGluaykpCisJ CWxpc3RfZGVsX2luaXQoJmNlLT5ndWNfaWRfbGluayk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVh c2VfZ3VjX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3VjLT5j b250ZXh0c19sb2NrLCBmbGFncyk7CisJX19yZWxlYXNlX2d1Y19pZChndWMsIGNlKTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKK30KKworc3Rh dGljIGludCBzdGVhbF9ndWNfaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgZ3VjX2lkOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm Z3VjLT5jb250ZXh0c19sb2NrKTsKKworCWlmICghbGlzdF9lbXB0eSgmZ3VjLT5ndWNfaWRfbGlz dCkpIHsKKwkJY2UgPSBsaXN0X2ZpcnN0X2VudHJ5KCZndWMtPmd1Y19pZF9saXN0LAorCQkJCSAg ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0LAorCQkJCSAgICAgIGd1Y19pZF9saW5rKTsKKworCQlH RU1fQlVHX09OKGF0b21pY19yZWFkKCZjZS0+Z3VjX2lkX3JlZikpOworCQlHRU1fQlVHX09OKGNv bnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpKTsKKworCQlsaXN0X2RlbF9pbml0KCZjZS0+Z3VjX2lk X2xpbmspOworCQlndWNfaWQgPSBjZS0+Z3VjX2lkOworCQljbHJfY29udGV4dF9yZWdpc3RlcmVk KGNlKTsKKwkJc2V0X2NvbnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpOworCQlyZXR1cm4gZ3VjX2lk OworCX0gZWxzZSB7CisJCXJldHVybiAtRUFHQUlOOworCX0KK30KKworc3RhdGljIGludCBhc3Np Z25fZ3VjX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTE2ICpvdXQpCit7CisJaW50IHJldDsK KworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmd1Yy0+Y29udGV4dHNfbG9jayk7CisKKwlyZXQgPSBu ZXdfZ3VjX2lkKGd1Yyk7CisJaWYgKHVubGlrZWx5KHJldCA8IDApKSB7CisJCXJldCA9IHN0ZWFs X2d1Y19pZChndWMpOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJKm91 dCA9IHJldDsKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBQSU5fR1VDX0lEX1RSSUVTCTQKK3N0 YXRpYyBpbnQgcGluX2d1Y19pZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKK3sKKwlpbnQgcmV0ID0gMDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzLCB0cmll cyA9IFBJTl9HVUNfSURfVFJJRVM7CisKKwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZjZS0+Z3Vj X2lkX3JlZikpOworCit0cnlfYWdhaW46CisJc3Bpbl9sb2NrX2lycXNhdmUoJmd1Yy0+Y29udGV4 dHNfbG9jaywgZmxhZ3MpOworCisJaWYgKGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpKSB7CisJ CXJldCA9IGFzc2lnbl9ndWNfaWQoZ3VjLCAmY2UtPmd1Y19pZCk7CisJCWlmIChyZXQpCisJCQln b3RvIG91dF91bmxvY2s7CisJCXJldCA9IDE7CS8qIEluZGlkY2F0ZXMgbmV3bHkgYXNzaWduZWQg Z3VjX2lkICovCisJfQorCWlmICghbGlzdF9lbXB0eSgmY2UtPmd1Y19pZF9saW5rKSkKKwkJbGlz dF9kZWxfaW5pdCgmY2UtPmd1Y19pZF9saW5rKTsKKwlhdG9taWNfaW5jKCZjZS0+Z3VjX2lkX3Jl Zik7CisKK291dF91bmxvY2s6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3VjLT5jb250ZXh0 c19sb2NrLCBmbGFncyk7CisKKwkvKgorCSAqIC1FQUdBSU4gaW5kaWNhdGVzIG5vIGd1Y19pZHMg YXJlIGF2YWlsYWJsZSwgbGV0J3MgcmV0aXJlIGFueQorCSAqIG91dHN0YW5kaW5nIHJlcXVlc3Rz IHRvIHNlZSBpZiB0aGF0IGZyZWVzIHVwIGEgZ3VjX2lkLiBJZiB0aGUgZmlyc3QKKwkgKiByZXRp cmUgZGlkbid0IGhlbHAsIGluc2VydCBhIHNsZWVwIHdpdGggdGhlIHRpbWVzbGljZSBkdXJhdGlv biBiZWZvcmUKKwkgKiBhdHRlbXB0aW5nIHRvIHJldGlyZSBtb3JlIHJlcXVlc3RzLiBEb3VibGUg dGhlIHNsZWVwIHBlcmlvZCBlYWNoCisJICogc3Vic2VxdWVudCBwYXNzIGJlZm9yZSBmaW5hbGx5 IGdpdmluZyB1cC4gVGhlIHNsZWVwIHBlcmlvZCBoYXMgbWF4IG9mCisJICogMTAwbXMgYW5kIG1p bmltdW0gb2YgMW1zLgorCSAqLworCWlmIChyZXQgPT0gLUVBR0FJTiAmJiAtLXRyaWVzKSB7CisJ CWlmIChQSU5fR1VDX0lEX1RSSUVTIC0gdHJpZXMgPiAxKSB7CisJCQl1bnNpZ25lZCBpbnQgdGlt ZXNsaWNlX3NoaWZ0ZWQgPQorCQkJCWNlLT5lbmdpbmUtPnByb3BzLnRpbWVzbGljZV9kdXJhdGlv bl9tcyA8PAorCQkJCShQSU5fR1VDX0lEX1RSSUVTIC0gdHJpZXMgLSAyKTsKKwkJCXVuc2lnbmVk IGludCBtYXggPSBtaW5fdCh1bnNpZ25lZCBpbnQsIDEwMCwKKwkJCQkJCSB0aW1lc2xpY2Vfc2hp ZnRlZCk7CisKKwkJCW1zbGVlcChtYXhfdCh1bnNpZ25lZCBpbnQsIG1heCwgMSkpOworCQl9CisJ CWludGVsX2d0X3JldGlyZV9yZXF1ZXN0cyhndWNfdG9fZ3QoZ3VjKSk7CisJCWdvdG8gdHJ5X2Fn YWluOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHVucGluX2d1Y19pZChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCisJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY2UtPmd1Y19pZF9y ZWYpIDwgMCk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3VjLT5jb250ZXh0c19sb2NrLCBmbGFn cyk7CisJaWYgKCFjb250ZXh0X2d1Y19pZF9pbnZhbGlkKGNlKSAmJiBsaXN0X2VtcHR5KCZjZS0+ Z3VjX2lkX2xpbmspICYmCisJICAgICFhdG9taWNfcmVhZCgmY2UtPmd1Y19pZF9yZWYpKQorCQls aXN0X2FkZF90YWlsKCZjZS0+Z3VjX2lkX2xpbmssICZndWMtPmd1Y19pZF9saXN0KTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKK30KKworc3Rh dGljIGludCBfX2d1Y19hY3Rpb25fcmVnaXN0ZXJfY29udGV4dChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCisJCQkJCSB1MzIgZ3VjX2lkLAorCQkJCQkgdTMyIG9mZnNldCwKKwkJCQkJIGJvb2wgbG9v cCkKK3sKKwl1MzIgYWN0aW9uW10gPSB7CisJCUlOVEVMX0dVQ19BQ1RJT05fUkVHSVNURVJfQ09O VEVYVCwKKwkJZ3VjX2lkLAorCQlvZmZzZXQsCisJfTsKKworCXJldHVybiBndWNfc3VibWlzc2lv bl9zZW5kX2J1c3lfbG9vcChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLAorCQkJCQkg ICAgIDAsIGxvb3ApOworfQorCitzdGF0aWMgaW50IHJlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlLCBib29sIGxvb3ApCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0g Y2VfdG9fZ3VjKGNlKTsKKwl1MzIgb2Zmc2V0ID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1Yywg Z3VjLT5scmNfZGVzY19wb29sKSArCisJCWNlLT5ndWNfaWQgKiBzaXplb2Yoc3RydWN0IGd1Y19s cmNfZGVzYyk7CisJaW50IHJldDsKKworCXRyYWNlX2ludGVsX2NvbnRleHRfcmVnaXN0ZXIoY2Up OworCisJcmV0ID0gX19ndWNfYWN0aW9uX3JlZ2lzdGVyX2NvbnRleHQoZ3VjLCBjZS0+Z3VjX2lk LCBvZmZzZXQsIGxvb3ApOworCXNldF9jb250ZXh0X3JlZ2lzdGVyZWQoY2UpOworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQgX19ndWNfYWN0aW9uX2RlcmVnaXN0ZXJfY29udGV4dChzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJCSAgIHUzMiBndWNfaWQsCisJCQkJCSAgIGJvb2wgbG9v cCkKK3sKKwl1MzIgYWN0aW9uW10gPSB7CisJCUlOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9D T05URVhULAorCQlndWNfaWQsCisJfTsKKworCXJldHVybiBndWNfc3VibWlzc2lvbl9zZW5kX2J1 c3lfbG9vcChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLAorCQkJCQkgICAgIEcySF9M RU5fRFdfREVSRUdJU1RFUl9DT05URVhULAorCQkJCQkgICAgIGxvb3ApOworfQorCitzdGF0aWMg aW50IGRlcmVnaXN0ZXJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHUzMiBndWNf aWQsIGJvb2wgbG9vcCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2Up OworCisJdHJhY2VfaW50ZWxfY29udGV4dF9kZXJlZ2lzdGVyKGNlKTsKKworCXJldHVybiBfX2d1 Y19hY3Rpb25fZGVyZWdpc3Rlcl9jb250ZXh0KGd1YywgZ3VjX2lkLCBsb29wKTsKK30KKworc3Rh dGljIGludGVsX2VuZ2luZV9tYXNrX3QgYWRqdXN0X2VuZ2luZV9tYXNrKHU4IGNsYXNzLCBpbnRl bF9lbmdpbmVfbWFza190IG1hc2spCit7CisJc3dpdGNoIChjbGFzcykgeworCWNhc2UgUkVOREVS X0NMQVNTOgorCQlyZXR1cm4gbWFzayA+PiBSQ1MwOworCWNhc2UgVklERU9fRU5IQU5DRU1FTlRf Q0xBU1M6CisJCXJldHVybiBtYXNrID4+IFZFQ1MwOworCWNhc2UgVklERU9fREVDT0RFX0NMQVNT OgorCQlyZXR1cm4gbWFzayA+PiBWQ1MwOworCWNhc2UgQ09QWV9FTkdJTkVfQ0xBU1M6CisJCXJl dHVybiBtYXNrID4+IEJDUzA7CisJZGVmYXVsdDoKKwkJTUlTU0lOR19DQVNFKGNsYXNzKTsKKwkJ cmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgdm9pZCBndWNfY29udGV4dF9wb2xpY3lfaW5pdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBndWNfbHJjX2Rl c2MgKmRlc2MpCit7CisJZGVzYy0+cG9saWN5X2ZsYWdzID0gMDsKKworCWlmIChlbmdpbmUtPmZs YWdzICYgSTkxNV9FTkdJTkVfV0FOVF9GT1JDRURfUFJFRU1QVElPTikKKwkJZGVzYy0+cG9saWN5 X2ZsYWdzIHw9IENPTlRFWFRfUE9MSUNZX0ZMQUdfUFJFRU1QVF9UT19JRExFOworCisJLyogTkI6 IEZvciBib3RoIG9mIHRoZXNlLCB6ZXJvIG1lYW5zIGRpc2FibGVkLiAqLworCWRlc2MtPmV4ZWN1 dGlvbl9xdWFudHVtID0gZW5naW5lLT5wcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgKiAxMDAw OworCWRlc2MtPnByZWVtcHRpb25fdGltZW91dCA9IGVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1l b3V0X21zICogMTAwMDsKK30KKworc3RhdGljIGlubGluZSB1OCBtYXBfaTkxNV9wcmlvX3RvX2d1 Y19wcmlvKGludCBwcmlvKTsKKworc3RhdGljIGludCBndWNfbHJjX2Rlc2NfcGluKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwgYm9vbCBsb29wKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IGNlLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJ1bnRpbWVf cG0gPSBlbmdpbmUtPnVuY29yZS0+cnBtOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZlbmdp bmUtPmd0LT51Yy5ndWM7CisJdTMyIGRlc2NfaWR4ID0gY2UtPmd1Y19pZDsKKwlzdHJ1Y3QgZ3Vj X2xyY19kZXNjICpkZXNjOworCWNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJ aW50IHByaW8gPSBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWTsKKwlib29sIGNvbnRleHRf cmVnaXN0ZXJlZDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlpbnQgcmV0ID0gMDsKKwor CUdFTV9CVUdfT04oIWVuZ2luZS0+bWFzayk7CisKKwkvKgorCSAqIEVuc3VyZSBMUkMgKyBDVCB2 bWFzIGFyZSBpcyBzYW1lIHJlZ2lvbiBhcyB3cml0ZSBiYXJyaWVyIGlzIGRvbmUKKwkgKiBiYXNl ZCBvbiBDVCB2bWEgcmVnaW9uLgorCSAqLworCUdFTV9CVUdfT04oaTkxNV9nZW1fb2JqZWN0X2lz X2xtZW0oZ3VjLT5jdC52bWEtPm9iaikgIT0KKwkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2xtZW0o Y2UtPnJpbmctPnZtYS0+b2JqKSk7CisKKwljb250ZXh0X3JlZ2lzdGVyZWQgPSBscmNfZGVzY19y ZWdpc3RlcmVkKGd1YywgZGVzY19pZHgpOworCisJcmN1X3JlYWRfbG9jaygpOworCWN0eCA9IHJj dV9kZXJlZmVyZW5jZShjZS0+Z2VtX2NvbnRleHQpOworCWlmIChjdHgpCisJCXByaW8gPSBjdHgt PnNjaGVkLnByaW9yaXR5OworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmVzZXRfbHJjX2Rlc2Mo Z3VjLCBkZXNjX2lkeCk7CisJc2V0X2xyY19kZXNjX3JlZ2lzdGVyZWQoZ3VjLCBkZXNjX2lkeCwg Y2UpOworCisJZGVzYyA9IF9fZ2V0X2xyY19kZXNjKGd1YywgZGVzY19pZHgpOworCWRlc2MtPmVu Z2luZV9jbGFzcyA9IGVuZ2luZV9jbGFzc190b19ndWNfY2xhc3MoZW5naW5lLT5jbGFzcyk7CisJ ZGVzYy0+ZW5naW5lX3N1Ym1pdF9tYXNrID0gYWRqdXN0X2VuZ2luZV9tYXNrKGVuZ2luZS0+Y2xh c3MsCisJCQkJCQkgICAgICBlbmdpbmUtPm1hc2spOworCWRlc2MtPmh3X2NvbnRleHRfZGVzYyA9 IGNlLT5scmMubHJjYTsKKwljZS0+Z3VjX3ByaW8gPSBtYXBfaTkxNV9wcmlvX3RvX2d1Y19wcmlv KHByaW8pOworCWRlc2MtPnByaW9yaXR5ID0gY2UtPmd1Y19wcmlvOworCWRlc2MtPmNvbnRleHRf ZmxhZ3MgPSBDT05URVhUX1JFR0lTVFJBVElPTl9GTEFHX0tNRDsKKwlndWNfY29udGV4dF9wb2xp Y3lfaW5pdChlbmdpbmUsIGRlc2MpOworCWluaXRfc2NoZWRfc3RhdGUoY2UpOworCisJLyoKKwkg KiBUaGUgY29udGV4dF9sb29rdXAgeGFycmF5IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBo YXJkd2FyZQorCSAqIGNvbnRleHQgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQuIFRoZXJlIGFyZSB0 d28gY2FzZXMgaW4gd2hpY2ggaXQKKwkgKiBjb3VsZCBiZSByZWdpc3RlcmVkIGVpdGhlciB0aGUg Z3VjX2lkIGhhcyBiZWVuIHN0b2xlbiBmcm9tIGZyb20KKwkgKiBhbm90aGVyIGNvbnRleHQgb3Ig dGhlIGxyYyBkZXNjcmlwdG9yIGFkZHJlc3Mgb2YgdGhpcyBjb250ZXh0IGhhcworCSAqIGNoYW5n ZWQuIEluIGVpdGhlciBjYXNlIHRoZSBjb250ZXh0IG5lZWRzIHRvIGJlIGRlcmVnaXN0ZXJlZCB3 aXRoIHRoZQorCSAqIEd1QyBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhpcyBjb250ZXh0LgorCSAqLwor CWlmIChjb250ZXh0X3JlZ2lzdGVyZWQpIHsKKwkJdHJhY2VfaW50ZWxfY29udGV4dF9zdGVhbF9n dWNfaWQoY2UpOworCQlpZiAoIWxvb3ApIHsKKwkJCXNldF9jb250ZXh0X3dhaXRfZm9yX2RlcmVn aXN0ZXJfdG9fcmVnaXN0ZXIoY2UpOworCQkJaW50ZWxfY29udGV4dF9nZXQoY2UpOworCQl9IGVs c2UgeworCQkJYm9vbCBkaXNhYmxlZDsKKwkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJCS8q IFNlYWwgcmFjZSB3aXRoIFJlc2V0ICovCisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19z dGF0ZS5sb2NrLCBmbGFncyk7CisJCQlkaXNhYmxlZCA9IHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3Vj KTsKKwkJCWlmIChsaWtlbHkoIWRpc2FibGVkKSkgeworCQkJCXNldF9jb250ZXh0X3dhaXRfZm9y X2RlcmVnaXN0ZXJfdG9fcmVnaXN0ZXIoY2UpOworCQkJCWludGVsX2NvbnRleHRfZ2V0KGNlKTsK KwkJCX0KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxh Z3MpOworCQkJaWYgKHVubGlrZWx5KGRpc2FibGVkKSkgeworCQkJCXJlc2V0X2xyY19kZXNjKGd1 YywgZGVzY19pZHgpOworCQkJCXJldHVybiAwOwkvKiBXaWxsIGdldCByZWdpc3RlcmVkIGxhdGVy ICovCisJCQl9CisJCX0KKworCQkvKgorCQkgKiBJZiBzdGVhbGluZyB0aGUgZ3VjX2lkLCB0aGlz IGNlIGhhcyB0aGUgc2FtZSBndWNfaWQgYXMgdGhlCisJCSAqIGNvbnRleHQgd2hvc2UgZ3VjX2lk IHdhcyBzdG9sZW4uCisJCSAqLworCQl3aXRoX2ludGVsX3J1bnRpbWVfcG0ocnVudGltZV9wbSwg d2FrZXJlZikKKwkJCXJldCA9IGRlcmVnaXN0ZXJfY29udGV4dChjZSwgY2UtPmd1Y19pZCwgbG9v cCk7CisJCWlmICh1bmxpa2VseShyZXQgPT0gLUVCVVNZKSkgeworCQkJY2xyX2NvbnRleHRfd2Fp dF9mb3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihjZSk7CisJCQlpbnRlbF9jb250ZXh0X3B1dChj ZSk7CisJCX0gZWxzZSBpZiAodW5saWtlbHkocmV0ID09IC1FTk9ERVYpKQorCQkJcmV0ID0gMDsJ LyogV2lsbCBnZXQgcmVnaXN0ZXJlZCBsYXRlciAqLworCX0gZWxzZSB7CisJCXdpdGhfaW50ZWxf cnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKQorCQkJcmV0ID0gcmVnaXN0ZXJfY29udGV4 dChjZSwgbG9vcCk7CisJCWlmICh1bmxpa2VseShyZXQgPT0gLUVCVVNZKSkKKwkJCXJlc2V0X2xy Y19kZXNjKGd1YywgZGVzY19pZHgpOworCQllbHNlIGlmICh1bmxpa2VseShyZXQgPT0gLUVOT0RF VikpCisJCQlyZXQgPSAwOwkvKiBXaWxsIGdldCByZWdpc3RlcmVkIGxhdGVyICovCisJfQorCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX2d1Y19jb250ZXh0X3ByZV9waW4oc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CisJCQkJIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAorCQkJCSB2b2lkICoqdmFkZHIpCit7 CisJcmV0dXJuIGxyY19wcmVfcGluKGNlLCBlbmdpbmUsIHd3LCB2YWRkcik7Cit9CisKK3N0YXRp YyBpbnQgX19ndWNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJICAg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgIHZvaWQgKnZhZGRyKQor eworCWlmIChpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgIT0KKwkgICAgKGNlLT5scmMubHJj YSAmIENUWF9HVFRfQUREUkVTU19NQVNLKSkKKwkJc2V0X2JpdChDT05URVhUX0xSQ0FfRElSVFks ICZjZS0+ZmxhZ3MpOworCisJLyoKKwkgKiBHdUMgY29udGV4dCBnZXRzIHBpbm5lZCBpbiBndWNf cmVxdWVzdF9hbGxvYy4gU2VlIHRoYXQgZnVuY3Rpb24gZm9yCisJICogZXhwbGFpbmF0aW9uIG9m IHdoeS4KKwkgKi8KKworCXJldHVybiBscmNfcGluKGNlLCBlbmdpbmUsIHZhZGRyKTsKK30KKwor c3RhdGljIGludCBndWNfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwK KwkJCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCSAgICAgICB2b2lkICoq dmFkZHIpCit7CisJcmV0dXJuIF9fZ3VjX2NvbnRleHRfcHJlX3BpbihjZSwgY2UtPmVuZ2luZSwg d3csIHZhZGRyKTsKK30KKworc3RhdGljIGludCBndWNfY29udGV4dF9waW4oc3RydWN0IGludGVs X2NvbnRleHQgKmNlLCB2b2lkICp2YWRkcikKK3sKKwlyZXR1cm4gX19ndWNfY29udGV4dF9waW4o Y2UsIGNlLT5lbmdpbmUsIHZhZGRyKTsKK30KKworc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfdW5w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9 IGNlX3RvX2d1YyhjZSk7CisKKwl1bnBpbl9ndWNfaWQoZ3VjLCBjZSk7CisJbHJjX3VucGluKGNl KTsKK30KKworc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfcG9zdF91bnBpbihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCit7CisJbHJjX3Bvc3RfdW5waW4oY2UpOworfQorCitzdGF0aWMgdm9pZCBf X2d1Y19jb250ZXh0X3NjaGVkX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAg ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwl1MzIgYWN0aW9uW10gPSB7CisJCUlO VEVMX0dVQ19BQ1RJT05fU0NIRURfQ09OVEVYVF9NT0RFX1NFVCwKKwkJY2UtPmd1Y19pZCwKKwkJ R1VDX0NPTlRFWFRfRU5BQkxFCisJfTsKKworCXRyYWNlX2ludGVsX2NvbnRleHRfc2NoZWRfZW5h YmxlKGNlKTsKKworCWd1Y19zdWJtaXNzaW9uX3NlbmRfYnVzeV9sb29wKGd1YywgYWN0aW9uLCBB UlJBWV9TSVpFKGFjdGlvbiksCisJCQkJICAgICAgRzJIX0xFTl9EV19TQ0hFRF9DT05URVhUX01P REVfU0VULCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQgX19ndWNfY29udGV4dF9zY2hlZF9kaXNh YmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAorCQkJCQl1MTYgZ3VjX2lkKQoreworCXUzMiBhY3Rpb25bXSA9IHsKKwkJSU5URUxfR1VDX0FD VElPTl9TQ0hFRF9DT05URVhUX01PREVfU0VULAorCQlndWNfaWQsCS8qIGNlLT5ndWNfaWQgbm90 IHN0YWJsZSAqLworCQlHVUNfQ09OVEVYVF9ESVNBQkxFCisJfTsKKworCUdFTV9CVUdfT04oZ3Vj X2lkID09IEdVQ19JTlZBTElEX0xSQ19JRCk7CisKKwl0cmFjZV9pbnRlbF9jb250ZXh0X3NjaGVk X2Rpc2FibGUoY2UpOworCisJZ3VjX3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rp b24sIEFSUkFZX1NJWkUoYWN0aW9uKSwKKwkJCQkgICAgICBHMkhfTEVOX0RXX1NDSEVEX0NPTlRF WFRfTU9ERV9TRVQsIHRydWUpOworfQorCitzdGF0aWMgdm9pZCBndWNfYmxvY2tlZF9mZW5jZV9j b21wbGV0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKworCWlmICghaTkxNV9zd19mZW5jZV9kb25lKCZjZS0+ Z3VjX2Jsb2NrZWQpKQorCQlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKCZjZS0+Z3VjX2Jsb2NrZWQp OworfQorCitzdGF0aWMgdm9pZCBndWNfYmxvY2tlZF9mZW5jZV9yZWluaXQoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfc3RhdGUubG9j ayk7CisJR0VNX0JVR19PTighaTkxNV9zd19mZW5jZV9kb25lKCZjZS0+Z3VjX2Jsb2NrZWQpKTsK KwlpOTE1X3N3X2ZlbmNlX2ZpbmkoJmNlLT5ndWNfYmxvY2tlZCk7CisJaTkxNV9zd19mZW5jZV9y ZWluaXQoJmNlLT5ndWNfYmxvY2tlZCk7CisJaTkxNV9zd19mZW5jZV9hd2FpdCgmY2UtPmd1Y19i bG9ja2VkKTsKKwlpOTE1X3N3X2ZlbmNlX2NvbW1pdCgmY2UtPmd1Y19ibG9ja2VkKTsKK30KKwor c3RhdGljIHUxNiBwcmVwX2NvbnRleHRfcGVuZGluZ19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+Z3VjX3N0YXRlLmxvY2spOwor CisJc2V0X2NvbnRleHRfcGVuZGluZ19kaXNhYmxlKGNlKTsKKwljbHJfY29udGV4dF9lbmFibGVk KGNlKTsKKwlndWNfYmxvY2tlZF9mZW5jZV9yZWluaXQoY2UpOworCWludGVsX2NvbnRleHRfZ2V0 KGNlKTsKKworCXJldHVybiBjZS0+Z3VjX2lkOworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfc3df ZmVuY2UgKmd1Y19jb250ZXh0X2Jsb2NrKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCXN0cnVjdCBpOTE1X3NjaGVk X2VuZ2luZSAqc2NoZWRfZW5naW5lID0gY2UtPmVuZ2luZS0+c2NoZWRfZW5naW5lOworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJ1bnRpbWVfcG0gPSAm Y2UtPmVuZ2luZS0+Z3QtPmk5MTUtPnJ1bnRpbWVfcG07CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CisJdTE2IGd1Y19pZDsKKwlib29sIGVuYWJsZWQ7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgm c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisJaW5jcl9jb250ZXh0X2Jsb2NrZWQoY2UpOwor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworCisJ c3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCWVuYWJsZWQg PSBjb250ZXh0X2VuYWJsZWQoY2UpOworCWlmICh1bmxpa2VseSghZW5hYmxlZCB8fCBzdWJtaXNz aW9uX2Rpc2FibGVkKGd1YykpKSB7CisJCWlmIChlbmFibGVkKQorCQkJY2xyX2NvbnRleHRfZW5h YmxlZChjZSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywg ZmxhZ3MpOworCQlyZXR1cm4gJmNlLT5ndWNfYmxvY2tlZDsKKwl9CisKKwkvKgorCSAqIFdlIGFk ZCArMiBoZXJlIGFzIHRoZSBzY2hlZHVsZSBkaXNhYmxlIGNvbXBsZXRlIENUQiBoYW5kbGVyIGNh bGxzCisJICogaW50ZWxfY29udGV4dF9zY2hlZF9kaXNhYmxlX3VucGluICgtMiB0byBwaW5fY291 bnQpLgorCSAqLworCWF0b21pY19hZGQoMiwgJmNlLT5waW5fY291bnQpOworCisJZ3VjX2lkID0g cHJlcF9jb250ZXh0X3BlbmRpbmdfZGlzYWJsZShjZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0o cnVudGltZV9wbSwgd2FrZXJlZikKKwkJX19ndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKGd1Yywg Y2UsIGd1Y19pZCk7CisKKwlyZXR1cm4gJmNlLT5ndWNfYmxvY2tlZDsKK30KKworc3RhdGljIHZv aWQgZ3VjX2NvbnRleHRfdW5ibG9jayhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJc3Ry dWN0IGludGVsX2d1YyAqZ3VjID0gY2VfdG9fZ3VjKGNlKTsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9l bmdpbmUgKnNjaGVkX2VuZ2luZSA9IGNlLT5lbmdpbmUtPnNjaGVkX2VuZ2luZTsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpydW50aW1lX3BtID0gJmNl LT5lbmdpbmUtPmd0LT5pOTE1LT5ydW50aW1lX3BtOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVm OworCisJR0VNX0JVR19PTihjb250ZXh0X2VuYWJsZWQoY2UpKTsKKworCWlmICh1bmxpa2VseShj b250ZXh0X2Jsb2NrZWQoY2UpID4gMSkpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkX2Vu Z2luZS0+bG9jaywgZmxhZ3MpOworCQlpZiAobGlrZWx5KGNvbnRleHRfYmxvY2tlZChjZSkgPiAx KSkKKwkJCWdvdG8gZGVjcmVtZW50OworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZF9l bmdpbmUtPmxvY2ssIGZsYWdzKTsKKwl9CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19z dGF0ZS5sb2NrLCBmbGFncyk7CisJaWYgKHVubGlrZWx5KHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3Vj KSB8fAorCQkgICAgICFpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkgfHwKKwkJICAgICBjb250 ZXh0X3BlbmRpbmdfZGlzYWJsZShjZSkgfHwKKwkJICAgICBjb250ZXh0X2Jsb2NrZWQoY2UpID4g MSkpIHsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFn cyk7CisJCWdvdG8gb3V0OworCX0KKworCXNldF9jb250ZXh0X3BlbmRpbmdfZW5hYmxlKGNlKTsK KwlzZXRfY29udGV4dF9lbmFibGVkKGNlKTsKKwlpbnRlbF9jb250ZXh0X2dldChjZSk7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisKKwl3aXRo X2ludGVsX3J1bnRpbWVfcG0ocnVudGltZV9wbSwgd2FrZXJlZikKKwkJX19ndWNfY29udGV4dF9z Y2hlZF9lbmFibGUoZ3VjLCBjZSk7CisKK291dDoKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRf ZW5naW5lLT5sb2NrLCBmbGFncyk7CitkZWNyZW1lbnQ6CisJZGVjcl9jb250ZXh0X2Jsb2NrZWQo Y2UpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3Mp OworfQorCitzdGF0aWMgdm9pZCBndWNfY29udGV4dF9jYW5jZWxfcmVxdWVzdChzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCisJCQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorewor CWlmIChpOTE1X3N3X2ZlbmNlX3NpZ25hbGVkKCZycS0+c3VibWl0KSkgeworCQlzdHJ1Y3QgaTkx NV9zd19mZW5jZSAqZmVuY2UgPSBndWNfY29udGV4dF9ibG9jayhjZSk7CisKKwkJaTkxNV9zd19m ZW5jZV93YWl0KGZlbmNlKTsKKwkJaWYgKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewor CQkJX19pOTE1X3JlcXVlc3Rfc2tpcChycSk7CisJCQlndWNfcmVzZXRfc3RhdGUoY2UsIGludGVs X3Jpbmdfd3JhcChjZS0+cmluZywgcnEtPmhlYWQpLAorCQkJCQl0cnVlKTsKKwkJfQorCQlndWNf Y29udGV4dF91bmJsb2NrKGNlKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIF9fZ3VjX2NvbnRleHRf c2V0X3ByZWVtcHRpb25fdGltZW91dChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJCQkgdTE2 IGd1Y19pZCwKKwkJCQkJCSB1MzIgcHJlZW1wdGlvbl90aW1lb3V0KQoreworCXUzMiBhY3Rpb24g W10gPSB7CisJCUlOVEVMX0dVQ19BQ1RJT05fU0VUX0NPTlRFWFRfUFJFRU1QVElPTl9USU1FT1VU LAorCQlndWNfaWQsCisJCXByZWVtcHRpb25fdGltZW91dAorCX07CisKKwlpbnRlbF9ndWNfc2Vu ZF9idXN5X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwgMCwgdHJ1ZSk7Cit9 CisKK3N0YXRpYyB2b2lkIGd1Y19jb250ZXh0X2JhbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNl X3RvX2d1YyhjZSk7CisJc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJ1bnRpbWVfcG0gPQorCQkm Y2UtPmVuZ2luZS0+Z3QtPmk5MTUtPnJ1bnRpbWVfcG07CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWd1Y19mbHVzaF9zdWJtaXNzaW9ucyhndWMp OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCXNl dF9jb250ZXh0X2Jhbm5lZChjZSk7CisKKwlpZiAoc3VibWlzc2lvbl9kaXNhYmxlZChndWMpIHx8 ICghY29udGV4dF9lbmFibGVkKGNlKSAmJgorCSAgICAhY29udGV4dF9wZW5kaW5nX2Rpc2FibGUo Y2UpKSkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZs YWdzKTsKKworCQlndWNfY2FuY2VsX2NvbnRleHRfcmVxdWVzdHMoY2UpOworCQlpbnRlbF9lbmdp bmVfc2lnbmFsX2JyZWFkY3J1bWJzKGNlLT5lbmdpbmUpOworCX0gZWxzZSBpZiAoIWNvbnRleHRf cGVuZGluZ19kaXNhYmxlKGNlKSkgeworCQl1MTYgZ3VjX2lkOworCisJCS8qCisJCSAqIFdlIGFk ZCArMiBoZXJlIGFzIHRoZSBzY2hlZHVsZSBkaXNhYmxlIGNvbXBsZXRlIENUQiBoYW5kbGVyCisJ CSAqIGNhbGxzIGludGVsX2NvbnRleHRfc2NoZWRfZGlzYWJsZV91bnBpbiAoLTIgdG8gcGluX2Nv dW50KS4KKwkJICovCisJCWF0b21pY19hZGQoMiwgJmNlLT5waW5fY291bnQpOworCisJCWd1Y19p ZCA9IHByZXBfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpOworCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKworCQkvKgorCQkgKiBJbiBhZGRp dGlvbiB0byBkaXNhYmxpbmcgc2NoZWR1bGluZywgc2V0IHRoZSBwcmVlbXB0aW9uCisJCSAqIHRp bWVvdXQgdG8gdGhlIG1pbmltdW0gdmFsdWUgKDEgdXMpIHNvIHRoZSBiYW5uZWQgY29udGV4dAor CQkgKiBnZXRzIGtpY2tlZCBvZmYgdGhlIEhXIEFTQVAuCisJCSAqLworCQl3aXRoX2ludGVsX3J1 bnRpbWVfcG0ocnVudGltZV9wbSwgd2FrZXJlZikgeworCQkJX19ndWNfY29udGV4dF9zZXRfcHJl ZW1wdGlvbl90aW1lb3V0KGd1YywgZ3VjX2lkLCAxKTsKKwkJCV9fZ3VjX2NvbnRleHRfc2NoZWRf ZGlzYWJsZShndWMsIGNlLCBndWNfaWQpOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCFjb250ZXh0 X2d1Y19pZF9pbnZhbGlkKGNlKSkKKwkJCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3Bt LCB3YWtlcmVmKQorCQkJCV9fZ3VjX2NvbnRleHRfc2V0X3ByZWVtcHRpb25fdGltZW91dChndWMs CisJCQkJCQkJCSAgICAgY2UtPmd1Y19pZCwKKwkJCQkJCQkJICAgICAxKTsKKwkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJfQorfQorCitzdGF0 aWMgdm9pZCBndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJc3RydWN0IGludGVsX3J1bnRpbWVfcG0gKnJ1bnRpbWVfcG0gPSAmY2Ut PmVuZ2luZS0+Z3QtPmk5MTUtPnJ1bnRpbWVfcG07CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CisJdTE2IGd1Y19pZDsKKwlib29sIGVuYWJsZWQ7CisKKwlpZiAoc3VibWlzc2lvbl9kaXNhYmxl ZChndWMpIHx8IGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpIHx8CisJICAgICFscmNfZGVzY19y ZWdpc3RlcmVkKGd1YywgY2UtPmd1Y19pZCkpIHsKKwkJY2xyX2NvbnRleHRfZW5hYmxlZChjZSk7 CisJCWdvdG8gdW5waW47CisJfQorCisJaWYgKCFjb250ZXh0X2VuYWJsZWQoY2UpKQorCQlnb3Rv IHVucGluOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3Mp OworCisJLyoKKwkgKiBXZSBoYXZlIHRvIGNoZWNrIGlmIHRoZSBjb250ZXh0IGhhcyBiZWVuIGRp c2FibGVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCSAqIFdlIGFsc28gaGF2ZSB0byBjaGVjayBpZiB0 aGUgY29udGV4dCBoYXMgYmVlbiBwaW5uZWQgYWdhaW4gYXMgYW5vdGhlcgorCSAqIHBpbiBvcGVy YXRpb24gaXMgYWxsb3dlZCB0byBwYXNzIHRoaXMgZnVuY3Rpb24uIENoZWNraW5nIHRoZSBwaW4K KwkgKiBjb3VudCwgd2l0aGluIGNlLT5ndWNfc3RhdGUubG9jaywgc3luY2hyb25pemVzIHRoaXMg ZnVuY3Rpb24gd2l0aAorCSAqIGd1Y19yZXF1ZXN0X2FsbG9jIGVuc3VyaW5nIGEgcmVxdWVzdCBk b2Vzbid0IHNsaXAgdGhyb3VnaCB0aGUKKwkgKiAnY29udGV4dF9wZW5kaW5nX2Rpc2FibGUnIGZl bmNlLiBDaGVja2luZyB3aXRoaW4gdGhlIHNwaW4gbG9jayAoY2FuJ3QKKwkgKiBzbGVlcCkgZW5z dXJlcyBhbm90aGVyIHByb2Nlc3MgZG9lc24ndCBwaW4gdGhpcyBjb250ZXh0IGFuZCBnZW5lcmF0 ZQorCSAqIGEgcmVxdWVzdCBiZWZvcmUgd2Ugc2V0IHRoZSAnY29udGV4dF9wZW5kaW5nX2Rpc2Fi bGUnIGZsYWcgaGVyZS4KKwkgKi8KKwllbmFibGVkID0gY29udGV4dF9lbmFibGVkKGNlKTsKKwlp ZiAodW5saWtlbHkoIWVuYWJsZWQgfHwgc3VibWlzc2lvbl9kaXNhYmxlZChndWMpKSkgeworCQlp ZiAoZW5hYmxlZCkKKwkJCWNscl9jb250ZXh0X2VuYWJsZWQoY2UpOworCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKwkJZ290byB1bnBpbjsKKwl9 CisJaWYgKHVubGlrZWx5KGF0b21pY19hZGRfdW5sZXNzKCZjZS0+cGluX2NvdW50LCAtMiwgMikp KSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3Mp OworCQlyZXR1cm47CisJfQorCWd1Y19pZCA9IHByZXBfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUo Y2UpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFn cyk7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0ocnVudGltZV9wbSwgd2FrZXJlZikKKwkJX19n dWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKGd1YywgY2UsIGd1Y19pZCk7CisKKwlyZXR1cm47Cit1 bnBpbjoKKwlpbnRlbF9jb250ZXh0X3NjaGVkX2Rpc2FibGVfdW5waW4oY2UpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgZ3VjX2xyY19kZXNjX3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCisJR0VNX0JV R19PTighbHJjX2Rlc2NfcmVnaXN0ZXJlZChndWMsIGNlLT5ndWNfaWQpKTsKKwlHRU1fQlVHX09O KGNlICE9IF9fZ2V0X2NvbnRleHQoZ3VjLCBjZS0+Z3VjX2lkKSk7CisJR0VNX0JVR19PTihjb250 ZXh0X2VuYWJsZWQoY2UpKTsKKworCWNscl9jb250ZXh0X3JlZ2lzdGVyZWQoY2UpOworCWRlcmVn aXN0ZXJfY29udGV4dChjZSwgY2UtPmd1Y19pZCwgdHJ1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9f Z3VjX2NvbnRleHRfZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJR0VNX0JV R19PTihjZS0+Z3VjX3ByaW9fY291bnRbR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSF0gfHwK KwkJICAgY2UtPmd1Y19wcmlvX2NvdW50W0dVQ19DTElFTlRfUFJJT1JJVFlfSElHSF0gfHwKKwkJ ICAgY2UtPmd1Y19wcmlvX2NvdW50W0dVQ19DTElFTlRfUFJJT1JJVFlfS01EX05PUk1BTF0gfHwK KwkJICAgY2UtPmd1Y19wcmlvX2NvdW50W0dVQ19DTElFTlRfUFJJT1JJVFlfTk9STUFMXSk7CisK KwlscmNfZmluaShjZSk7CisJaW50ZWxfY29udGV4dF9maW5pKGNlKTsKKworCWlmIChpbnRlbF9l bmdpbmVfaXNfdmlydHVhbChjZS0+ZW5naW5lKSkgeworCQlzdHJ1Y3QgZ3VjX3ZpcnR1YWxfZW5n aW5lICp2ZSA9CisJCQljb250YWluZXJfb2YoY2UsIHR5cGVvZigqdmUpLCBjb250ZXh0KTsKKwor CQlpZiAodmUtPmJhc2UuYnJlYWRjcnVtYnMpCisJCQlpbnRlbF9icmVhZGNydW1ic19wdXQodmUt PmJhc2UuYnJlYWRjcnVtYnMpOworCisJCWtmcmVlKHZlKTsKKwl9IGVsc2UgeworCQlpbnRlbF9j b250ZXh0X2ZyZWUoY2UpOworCX0KK30KKworc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfZGVzdHJv eShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBjb250 YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCpjZSksIHJlZik7CisJc3RydWN0IGludGVsX3J1bnRpbWVf cG0gKnJ1bnRpbWVfcG0gPSBjZS0+ZW5naW5lLT51bmNvcmUtPnJwbTsKKwlzdHJ1Y3QgaW50ZWxf Z3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisJYm9vbCBkaXNhYmxlZDsKKworCS8qCisJICogSWYgdGhlIGd1 Y19pZCBpcyBpbnZhbGlkIHRoaXMgY29udGV4dCBoYXMgYmVlbiBzdG9sZW4gYW5kIHdlIGNhbiBm cmVlCisJICogaXQgaW1tZWRpYXRlbHkuIEFsc28gY2FuIGJlIGZyZWVkIGltbWVkaWF0ZWx5IGlm IHRoZSBjb250ZXh0IGlzIG5vdAorCSAqIHJlZ2lzdGVyZWQgd2l0aCB0aGUgR3VDIG9yIHRoZSBH dUMgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlc2V0LgorCSAqLworCWlmIChjb250ZXh0X2d1Y19p ZF9pbnZhbGlkKGNlKSkgeworCQlfX2d1Y19jb250ZXh0X2Rlc3Ryb3koY2UpOworCQlyZXR1cm47 CisJfSBlbHNlIGlmIChzdWJtaXNzaW9uX2Rpc2FibGVkKGd1YykgfHwKKwkJICAgIWxyY19kZXNj X3JlZ2lzdGVyZWQoZ3VjLCBjZS0+Z3VjX2lkKSkgeworCQlyZWxlYXNlX2d1Y19pZChndWMsIGNl KTsKKwkJX19ndWNfY29udGV4dF9kZXN0cm95KGNlKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJ ICogV2UgaGF2ZSB0byBhY3F1aXJlIHRoZSBjb250ZXh0IHNwaW5sb2NrIGFuZCBjaGVjayBndWNf aWQgYWdhaW4sIGlmIGl0CisJICogaXMgdmFsaWQgaXQgaGFzbid0IGJlZW4gc3RvbGVuIGFuZCBu ZWVkcyB0byBiZSBkZXJlZ2lzdGVyZWQuIFdlCisJICogZGVsZXRlIHRoaXMgY29udGV4dCBmcm9t IHRoZSBsaXN0IG9mIHVucGlubmVkIGd1Y19pZHMgYXZhaWxhYmxlIHRvCisJICogc3RlYWwgdG8g c2VhbCBhIHJhY2Ugd2l0aCBndWNfbHJjX2Rlc2NfcGluKCkuIFdoZW4gdGhlIEcySCBDVEIKKwkg KiByZXR1cm5zIGluZGljYXRpbmcgdGhpcyBjb250ZXh0IGhhcyBiZWVuIGRlcmVnaXN0ZXJlZCB0 aGUgZ3VjX2lkIGlzCisJICogcmV0dXJuZWQgdG8gdGhlIHBvb2wgb2YgYXZhaWxhYmxlIGd1Y19p ZHMuCisJICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmd1Yy0+Y29udGV4dHNfbG9jaywgZmxhZ3Mp OworCWlmIChjb250ZXh0X2d1Y19pZF9pbnZhbGlkKGNlKSkgeworCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKKwkJX19ndWNfY29udGV4dF9kZXN0 cm95KGNlKTsKKwkJcmV0dXJuOworCX0KKworCWlmICghbGlzdF9lbXB0eSgmY2UtPmd1Y19pZF9s aW5rKSkKKwkJbGlzdF9kZWxfaW5pdCgmY2UtPmd1Y19pZF9saW5rKTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKKworCS8qIFNlYWwgcmFjZSB3 aXRoIFJlc2V0ICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxh Z3MpOworCWRpc2FibGVkID0gc3VibWlzc2lvbl9kaXNhYmxlZChndWMpOworCWlmIChsaWtlbHko IWRpc2FibGVkKSkKKwkJc2V0X2NvbnRleHRfZGVzdHJveWVkKGNlKTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKwlpZiAodW5saWtlbHkoZGlz YWJsZWQpKSB7CisJCXJlbGVhc2VfZ3VjX2lkKGd1YywgY2UpOworCQlfX2d1Y19jb250ZXh0X2Rl c3Ryb3koY2UpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBXZSBkZWZlciBHdUMgY29udGV4 dCBkZXJlZ2lzdHJhdGlvbiB1bnRpbCB0aGUgY29udGV4dCBpcyBkZXN0cm95ZWQKKwkgKiBpbiBv cmRlciB0byBzYXZlIG9uIENUQnMuIFdpdGggdGhpcyBvcHRpbWl6YXRpb24gaWRlYWxseSB3ZSBv bmx5IG5lZWQKKwkgKiAxIENUQiB0byByZWdpc3RlciB0aGUgY29udGV4dCBkdXJpbmcgdGhlIGZp cnN0IHBpbiBhbmQgMSBDVEIgdG8KKwkgKiBkZXJlZ2lzdGVyIHRoZSBjb250ZXh0IHdoZW4gdGhl IGNvbnRleHQgaXMgZGVzdHJveWVkLiBXaXRob3V0IHRoaXMKKwkgKiBvcHRpbWl6YXRpb24sIGEg Q1RCIHdvdWxkIGJlIG5lZWRlZCBldmVyeSBwaW4gJiB1bnBpbi4KKwkgKgorCSAqIFhYWDogTmVl ZCB0byBhY3FpdXJlIHRoZSBydW50aW1lIHdha2VyZWYgYXMgdGhpcyBjYW4gYmUgdHJpZ2dlcmVk CisJICogZnJvbSBjb250ZXh0X2ZyZWVfd29ya2VyIHdoZW4gcnVudGltZSB3YWtlcmVmIGlzIG5v dCBoZWxkLgorCSAqIGd1Y19scmNfZGVzY191bnBpbiByZXF1aXJlcyB0aGUgcnVudGltZSBhcyBh IEd1QyByZWdpc3RlciBpcyB3cml0dGVuCisJICogaW4gSDJHIENUQiB0byBkZXJlZ2lzdGVyIHRo ZSBjb250ZXh0LiBBIGZ1dHVyZSBwYXRjaCBtYXkgZGVmZXIgdGhpcworCSAqIEgyRyBDVEIgaWYg dGhlIHJ1bnRpbWUgd2FrZXJlZiBpcyB6ZXJvLgorCSAqLworCXdpdGhfaW50ZWxfcnVudGltZV9w bShydW50aW1lX3BtLCB3YWtlcmVmKQorCQlndWNfbHJjX2Rlc2NfdW5waW4oY2UpOworfQorCitz dGF0aWMgaW50IGd1Y19jb250ZXh0X2FsbG9jKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sK KwlyZXR1cm4gbHJjX2FsbG9jKGNlLCBjZS0+ZW5naW5lKTsKK30KKworc3RhdGljIHZvaWQgZ3Vj X2NvbnRleHRfc2V0X3ByaW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJCSBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCisJCQkJIHU4IHByaW8pCit7CisJdTMyIGFjdGlvbltdID0geworCQlJ TlRFTF9HVUNfQUNUSU9OX1NFVF9DT05URVhUX1BSSU9SSVRZLAorCQljZS0+Z3VjX2lkLAorCQlw cmlvLAorCX07CisKKwlHRU1fQlVHX09OKHByaW8gPCBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9I SUdIIHx8CisJCSAgIHByaW8gPiBHVUNfQ0xJRU5UX1BSSU9SSVRZX05PUk1BTCk7CisKKwlpZiAo Y2UtPmd1Y19wcmlvID09IHByaW8gfHwgc3VibWlzc2lvbl9kaXNhYmxlZChndWMpIHx8CisJICAg ICFjb250ZXh0X3JlZ2lzdGVyZWQoY2UpKQorCQlyZXR1cm47CisKKwlndWNfc3VibWlzc2lvbl9z ZW5kX2J1c3lfbG9vcChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLCAwLCB0cnVlKTsK KworCWNlLT5ndWNfcHJpbyA9IHByaW87CisJdHJhY2VfaW50ZWxfY29udGV4dF9zZXRfcHJpbyhj ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTggbWFwX2k5MTVfcHJpb190b19ndWNfcHJpbyhpbnQg cHJpbykKK3sKKwlpZiAocHJpbyA9PSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKKwkJcmV0dXJuIEdV Q19DTElFTlRfUFJJT1JJVFlfS01EX05PUk1BTDsKKwllbHNlIGlmIChwcmlvIDwgSTkxNV9QUklP UklUWV9OT1JNQUwpCisJCXJldHVybiBHVUNfQ0xJRU5UX1BSSU9SSVRZX05PUk1BTDsKKwllbHNl IGlmIChwcmlvICE9IEk5MTVfUFJJT1JJVFlfQkFSUklFUikKKwkJcmV0dXJuIEdVQ19DTElFTlRf UFJJT1JJVFlfSElHSDsKKwllbHNlCisJCXJldHVybiBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9I SUdIOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2NvbnRleHRfaW5mbGlnaHRfcHJpbyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJCSAgICAgdTggZ3VjX3ByaW8pCit7CisJbG9j a2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19hY3RpdmUubG9jayk7CisJR0VNX0JVR19PTihndWNf cHJpbyA+PSBBUlJBWV9TSVpFKGNlLT5ndWNfcHJpb19jb3VudCkpOworCisJKytjZS0+Z3VjX3By aW9fY291bnRbZ3VjX3ByaW9dOworCisJLyogT3ZlcmZsb3cgcHJvdGVjdGlvbiAqLworCUdFTV9X QVJOX09OKCFjZS0+Z3VjX3ByaW9fY291bnRbZ3VjX3ByaW9dKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIHN1Yl9jb250ZXh0X2luZmxpZ2h0X3ByaW8oc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAorCQkJCQkgICAgIHU4IGd1Y19wcmlvKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5n dWNfYWN0aXZlLmxvY2spOworCUdFTV9CVUdfT04oZ3VjX3ByaW8gPj0gQVJSQVlfU0laRShjZS0+ Z3VjX3ByaW9fY291bnQpKTsKKworCS8qIFVuZGVyZmxvdyBwcm90ZWN0aW9uICovCisJR0VNX1dB Uk5fT04oIWNlLT5ndWNfcHJpb19jb3VudFtndWNfcHJpb10pOworCisJLS1jZS0+Z3VjX3ByaW9f Y291bnRbZ3VjX3ByaW9dOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlX2NvbnRleHRf cHJpbyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3Vj ID0gJmNlLT5lbmdpbmUtPmd0LT51Yy5ndWM7CisJaW50IGk7CisKKwlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGNlLT5ndWNfcHJpb19jb3VudCk7ICsraSkgeworCQlpZiAoY2UtPmd1Y19wcmlvX2NvdW50W2ld KSB7CisJCQlndWNfY29udGV4dF9zZXRfcHJpbyhndWMsIGNlLCBpKTsKKwkJCWJyZWFrOworCQl9 CisJfQorfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbmV3X2d1Y19wcmlvX2hpZ2hlcih1OCBvbGRf Z3VjX3ByaW8sIHU4IG5ld19ndWNfcHJpbykKK3sKKwkvKiBMb3dlciB2YWx1ZSBpcyBoaWdoZXIg cHJpb3JpdHkgKi8KKwlyZXR1cm4gbmV3X2d1Y19wcmlvIDwgb2xkX2d1Y19wcmlvOworfQorCitz dGF0aWMgdm9pZCBhZGRfdG9fY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29udGV4dDsKKwl1OCBuZXdfZ3VjX3ByaW8g PSBtYXBfaTkxNV9wcmlvX3RvX2d1Y19wcmlvKHJxX3ByaW8ocnEpKTsKKworCUdFTV9CVUdfT04o cnEtPmd1Y19wcmlvID09IEdVQ19QUklPX0ZJTkkpOworCisJc3Bpbl9sb2NrKCZjZS0+Z3VjX2Fj dGl2ZS5sb2NrKTsKKwlsaXN0X21vdmVfdGFpbCgmcnEtPnNjaGVkLmxpbmssICZjZS0+Z3VjX2Fj dGl2ZS5yZXF1ZXN0cyk7CisKKwlpZiAocnEtPmd1Y19wcmlvID09IEdVQ19QUklPX0lOSVQpIHsK KwkJcnEtPmd1Y19wcmlvID0gbmV3X2d1Y19wcmlvOworCQlhZGRfY29udGV4dF9pbmZsaWdodF9w cmlvKGNlLCBycS0+Z3VjX3ByaW8pOworCX0gZWxzZSBpZiAobmV3X2d1Y19wcmlvX2hpZ2hlcihy cS0+Z3VjX3ByaW8sIG5ld19ndWNfcHJpbykpIHsKKwkJc3ViX2NvbnRleHRfaW5mbGlnaHRfcHJp byhjZSwgcnEtPmd1Y19wcmlvKTsKKwkJcnEtPmd1Y19wcmlvID0gbmV3X2d1Y19wcmlvOworCQlh ZGRfY29udGV4dF9pbmZsaWdodF9wcmlvKGNlLCBycS0+Z3VjX3ByaW8pOworCX0KKwl1cGRhdGVf Y29udGV4dF9wcmlvKGNlKTsKKworCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsK K30KKworc3RhdGljIHZvaWQgZ3VjX3ByaW9fZmluaShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCWlmIChycS0+Z3VjX3ByaW8gIT0gR1VDX1BS SU9fSU5JVCAmJgorCSAgICBycS0+Z3VjX3ByaW8gIT0gR1VDX1BSSU9fRklOSSkgeworCQlzdWJf Y29udGV4dF9pbmZsaWdodF9wcmlvKGNlLCBycS0+Z3VjX3ByaW8pOworCQl1cGRhdGVfY29udGV4 dF9wcmlvKGNlKTsKKwl9CisJcnEtPmd1Y19wcmlvID0gR1VDX1BSSU9fRklOSTsKK30KKworc3Rh dGljIHZvaWQgcmVtb3ZlX2Zyb21fY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sK KwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29udGV4dDsKKworCXNwaW5fbG9ja19p cnEoJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCisJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxp bmspOworCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfUFFVRVVFLCAmcnEtPmZlbmNlLmZsYWdz KTsKKworCS8qIFByZXZlbnQgZnVydGhlciBfX2F3YWl0X2V4ZWN1dGlvbigpIHJlZ2lzdGVyaW5n IGEgY2IsIHRoZW4gZmx1c2ggKi8KKwlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19BQ1RJVkUsICZy cS0+ZmVuY2UuZmxhZ3MpOworCisJZ3VjX3ByaW9fZmluaShycSwgY2UpOworCisJc3Bpbl91bmxv Y2tfaXJxKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKworCWF0b21pY19kZWMoJmNlLT5ndWNfaWRf cmVmKTsKKwlpOTE1X3JlcXVlc3Rfbm90aWZ5X2V4ZWN1dGVfY2JfaW1tKHJxKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyBndWNfY29udGV4dF9vcHMgPSB7CisJ LmFsbG9jID0gZ3VjX2NvbnRleHRfYWxsb2MsCisKKwkucHJlX3BpbiA9IGd1Y19jb250ZXh0X3By ZV9waW4sCisJLnBpbiA9IGd1Y19jb250ZXh0X3BpbiwKKwkudW5waW4gPSBndWNfY29udGV4dF91 bnBpbiwKKwkucG9zdF91bnBpbiA9IGd1Y19jb250ZXh0X3Bvc3RfdW5waW4sCisKKwkuYmFuID0g Z3VjX2NvbnRleHRfYmFuLAorCisJLmNhbmNlbF9yZXF1ZXN0ID0gZ3VjX2NvbnRleHRfY2FuY2Vs X3JlcXVlc3QsCisKKwkuZW50ZXIgPSBpbnRlbF9jb250ZXh0X2VudGVyX2VuZ2luZSwKKwkuZXhp dCA9IGludGVsX2NvbnRleHRfZXhpdF9lbmdpbmUsCisKKwkuc2NoZWRfZGlzYWJsZSA9IGd1Y19j b250ZXh0X3NjaGVkX2Rpc2FibGUsCisKKwkucmVzZXQgPSBscmNfcmVzZXQsCisJLmRlc3Ryb3kg PSBndWNfY29udGV4dF9kZXN0cm95LAorCisJLmNyZWF0ZV92aXJ0dWFsID0gZ3VjX2NyZWF0ZV92 aXJ0dWFsLAorfTsKKworc3RhdGljIHZvaWQgX19ndWNfc2lnbmFsX2NvbnRleHRfZmVuY2Uoc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsKKworCWlmICghbGlzdF9l bXB0eSgmY2UtPmd1Y19zdGF0ZS5mZW5jZXMpKQorCQl0cmFjZV9pbnRlbF9jb250ZXh0X2ZlbmNl X3JlbGVhc2UoY2UpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmNlLT5ndWNfc3RhdGUu ZmVuY2VzLCBndWNfZmVuY2VfbGluaykKKwkJaTkxNV9zd19mZW5jZV9jb21wbGV0ZSgmcnEtPnN1 Ym1pdCk7CisKKwlJTklUX0xJU1RfSEVBRCgmY2UtPmd1Y19zdGF0ZS5mZW5jZXMpOworfQorCitz dGF0aWMgdm9pZCBndWNfc2lnbmFsX2NvbnRleHRfZmVuY2Uoc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2Ut Pmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJY2xyX2NvbnRleHRfd2FpdF9mb3JfZGVyZWdpc3Rl cl90b19yZWdpc3RlcihjZSk7CisJX19ndWNfc2lnbmFsX2NvbnRleHRfZmVuY2UoY2UpOworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworfQorCitz dGF0aWMgYm9vbCBjb250ZXh0X25lZWRzX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwgYm9vbCBuZXdfZ3VjX2lkKQoreworCXJldHVybiAobmV3X2d1Y19pZCB8fCB0ZXN0X2JpdChD T05URVhUX0xSQ0FfRElSVFksICZjZS0+ZmxhZ3MpIHx8CisJCSFscmNfZGVzY19yZWdpc3RlcmVk KGNlX3RvX2d1YyhjZSksIGNlLT5ndWNfaWQpKSAmJgorCQkhc3VibWlzc2lvbl9kaXNhYmxlZChj ZV90b19ndWMoY2UpKTsKK30KKworc3RhdGljIGludCBndWNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29u dGV4dDsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisJaW50IHJldDsKKworCUdFTV9CVUdfT04oIWludGVsX2NvbnRleHRfaXNf cGlubmVkKHJxLT5jb250ZXh0KSk7CisKKwkvKgorCSAqIEZsdXNoIGVub3VnaCBzcGFjZSB0byBy ZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2Ygd2FpdGluZyBhZnRlcgorCSAqIHdlIHN0YXJ0IGJ1aWxk aW5nIHRoZSByZXF1ZXN0IC0gaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIGp1c3QKKwkgKiBoYXZlIHRv IHJlcGVhdCB3b3JrLgorCSAqLworCXJxLT5yZXNlcnZlZF9zcGFjZSArPSBHVUNfUkVRVUVTVF9T SVpFOworCisJLyoKKwkgKiBOb3RlIHRoYXQgYWZ0ZXIgdGhpcyBwb2ludCwgd2UgaGF2ZSBjb21t aXR0ZWQgdG8gdXNpbmcKKwkgKiB0aGlzIHJlcXVlc3QgYXMgaXQgaXMgYmVpbmcgdXNlZCB0byBi b3RoIHRyYWNrIHRoZQorCSAqIHN0YXRlIG9mIGVuZ2luZSBpbml0aWFsaXNhdGlvbiBhbmQgbGl2 ZW5lc3Mgb2YgdGhlCisJICogZ29sZGVuIHJlbmRlcnN0YXRlIGFib3ZlLiBUaGluayB0d2ljZSBi ZWZvcmUgeW91IHRyeQorCSAqIHRvIGNhbmNlbC91bndpbmQgdGhpcyByZXF1ZXN0IG5vdy4KKwkg Ki8KKworCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIEdQVSBjYWNoZXMgYW5kIFRMQnMu ICovCisJcmV0ID0gcnEtPmVuZ2luZS0+ZW1pdF9mbHVzaChycSwgRU1JVF9JTlZBTElEQVRFKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcnEtPnJlc2VydmVkX3NwYWNlIC09IEdVQ19S RVFVRVNUX1NJWkU7CisKKwkvKgorCSAqIENhbGwgcGluX2d1Y19pZCBoZXJlIHJhdGhlciB0aGFu IGluIHRoZSBwaW5uaW5nIHN0ZXAgYXMgd2l0aAorCSAqIGRtYV9yZXN2LCBjb250ZXh0cyBjYW4g YmUgcmVwZWF0ZWRseSBwaW5uZWQgLyB1bnBpbm5lZCB0cmFzaGluZyB0aGUKKwkgKiBndWNfaWRz IGFuZCBjcmVhdGluZyBob3JyaWJsZSByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgZXNwZWNpYWxs eSBiYWQKKwkgKiB3aGVuIGd1Y19pZHMgYXJlIGJlaW5nIHN0b2xlbiBkdWUgdG8gb3ZlciBzdWJz Y3JpcHRpb24uIEJ5IHRoZSB0aW1lCisJICogdGhpcyBmdW5jdGlvbiBpcyByZWFjaGVkLCBpdCBp cyBndWFyYW50ZWVkIHRoYXQgdGhlIGd1Y19pZCB3aWxsIGJlCisJICogcGVyc2lzdGVudCB1bnRp bCB0aGUgZ2VuZXJhdGVkIHJlcXVlc3QgaXMgcmV0aXJlZC4gVGh1cywgc2VhbGluZyB0aGVzZQor CSAqIHJhY2UgY29uZGl0aW9ucy4gSXQgaXMgc3RpbGwgc2FmZSB0byBmYWlsIGhlcmUgaWYgZ3Vj X2lkcyBhcmUKKwkgKiBleGhhdXN0ZWQgYW5kIHJldHVybiAtRUFHQUlOIHRvIHRoZSB1c2VyIGlu ZGljYXRpbmcgdGhhdCB0aGV5IGNhbiB0cnkKKwkgKiBhZ2FpbiBpbiB0aGUgZnV0dXJlLgorCSAq CisJICogVGhlcmUgaXMgbm8gbmVlZCBmb3IgYSBsb2NrIGhlcmUgYXMgdGhlIHRpbWVsaW5lIG11 dGV4IGVuc3VyZXMgYXQKKwkgKiBtb3N0IG9uZSBjb250ZXh0IGNhbiBiZSBleGVjdXRpbmcgdGhp cyBjb2RlIHBhdGggYXQgb25jZS4gVGhlCisJICogZ3VjX2lkX3JlZiBpcyBpbmNyZW1lbnRlZCBv bmNlIGZvciBldmVyeSByZXF1ZXN0IGluIGZsaWdodCBhbmQKKwkgKiBkZWNyZW1lbnRlZCBvbiBl YWNoIHJldGlyZS4gV2hlbiBpdCBpcyB6ZXJvLCBhIGxvY2sgYXJvdW5kIHRoZQorCSAqIGluY3Jl bWVudCAoaW4gcGluX2d1Y19pZCkgaXMgbmVlZGVkIHRvIHNlYWwgYSByYWNlIHdpdGggdW5waW5f Z3VjX2lkLgorCSAqLworCWlmIChhdG9taWNfYWRkX3VubGVzcygmY2UtPmd1Y19pZF9yZWYsIDEs IDApKQorCQlnb3RvIG91dDsKKworCXJldCA9IHBpbl9ndWNfaWQoZ3VjLCBjZSk7CS8qIHJldHVy bnMgMSBpZiBuZXcgZ3VjX2lkIGFzc2lnbmVkICovCisJaWYgKHVubGlrZWx5KHJldCA8IDApKQor CQlyZXR1cm4gcmV0OworCWlmIChjb250ZXh0X25lZWRzX3JlZ2lzdGVyKGNlLCAhIXJldCkpIHsK KwkJcmV0ID0gZ3VjX2xyY19kZXNjX3BpbihjZSwgdHJ1ZSk7CisJCWlmICh1bmxpa2VseShyZXQp KSB7CS8qIHVud2luZCAqLworCQkJaWYgKHJldCA9PSAtRVBJUEUpIHsKKwkJCQlkaXNhYmxlX3N1 Ym1pc3Npb24oZ3VjKTsKKwkJCQlnb3RvIG91dDsJLyogR1BVIHdpbGwgYmUgcmVzZXQgKi8KKwkJ CX0KKwkJCWF0b21pY19kZWMoJmNlLT5ndWNfaWRfcmVmKTsKKwkJCXVucGluX2d1Y19pZChndWMs IGNlKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwl9CisKKwljbGVhcl9iaXQoQ09OVEVYVF9MUkNB X0RJUlRZLCAmY2UtPmZsYWdzKTsKKworb3V0OgorCS8qCisJICogV2UgYmxvY2sgYWxsIHJlcXVl c3RzIG9uIHRoaXMgY29udGV4dCBpZiBhIEcySCBpcyBwZW5kaW5nIGZvciBhCisJICogc2NoZWR1 bGUgZGlzYWJsZSBvciBjb250ZXh0IGRlcmVnaXN0cmF0aW9uIGFzIHRoZSBHdUMgd2lsbCBmYWls IGEKKwkgKiBzY2hlZHVsZSBlbmFibGUgb3IgY29udGV4dCByZWdpc3RyYXRpb24gaWYgZWl0aGVy IEcySCBpcyBwZW5kaW5nCisJICogcmVzcGVjdGZ1bGx5LiBPbmNlIGEgRzJIIHJldHVybnMsIHRo ZSBmZW5jZSBpcyByZWxlYXNlZCB0aGF0IGlzCisJICogYmxvY2tpbmcgdGhlc2UgcmVxdWVzdHMg KHNlZSBndWNfc2lnbmFsX2NvbnRleHRfZmVuY2UpLgorCSAqCisJICogV2UgY2FuIHNhZmVseSBj aGVjayB0aGUgYmVsb3cgZmllbGRzIG91dHNpZGUgb2YgdGhlIGxvY2sgYXMgaXQgaXNuJ3QKKwkg KiBwb3NzaWJsZSBmb3IgdGhlc2UgZmllbGRzIHRvIHRyYW5zaXRpb24gZnJvbSBiZWluZyBjbGVh ciB0byBzZXQgYnV0CisJICogY29udmVyc2UgaXMgcG9zc2libGUsIGhlbmNlIHRoZSBuZWVkIGZv ciB0aGUgY2hlY2sgd2l0aGluIHRoZSBsb2NrLgorCSAqLworCWlmIChsaWtlbHkoIWNvbnRleHRf d2FpdF9mb3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihjZSkgJiYKKwkJICAgIWNvbnRleHRfcGVu ZGluZ19kaXNhYmxlKGNlKSkpCisJCXJldHVybiAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNl LT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCWlmIChjb250ZXh0X3dhaXRfZm9yX2RlcmVnaXN0 ZXJfdG9fcmVnaXN0ZXIoY2UpIHx8CisJICAgIGNvbnRleHRfcGVuZGluZ19kaXNhYmxlKGNlKSkg eworCQlpOTE1X3N3X2ZlbmNlX2F3YWl0KCZycS0+c3VibWl0KTsKKworCQlsaXN0X2FkZF90YWls KCZycS0+Z3VjX2ZlbmNlX2xpbmssICZjZS0+Z3VjX3N0YXRlLmZlbmNlcyk7CisJfQorCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCisJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19yZXNldF9maW5pc2goc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQorc3RhdGljIGludCBndWNfdmlydHVhbF9jb250ZXh0X3ByZV9waW4oc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4 ICp3dywKKwkJCQkgICAgICAgdm9pZCAqKnZhZGRyKQogewotCWlmIChfX3Rhc2tsZXRfZW5hYmxl KCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+dGFza2xldCkpCi0JCS8qIEFuZCBraWNrIGluIGNhc2Ug d2UgbWlzc2VkIGEgbmV3IHJlcXVlc3Qgc3VibWlzc2lvbi4gKi8KLQkJdGFza2xldF9oaV9zY2hl ZHVsZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQpOworCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IGd1Y192aXJ0dWFsX2dldF9zaWJsaW5nKGNlLT5lbmdpbmUsIDApOwog Ci0JRU5HSU5FX1RSQUNFKGVuZ2luZSwgImRlcHRoLT4lZFxuIiwKLQkJICAgICBhdG9taWNfcmVh ZCgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQuY291bnQpKTsKKwlyZXR1cm4gX19ndWNf Y29udGV4dF9wcmVfcGluKGNlLCBlbmdpbmUsIHd3LCB2YWRkcik7CiB9CiAKLS8qCi0gKiBTZXQg dXAgdGhlIG1lbW9yeSByZXNvdXJjZXMgdG8gYmUgc2hhcmVkIHdpdGggdGhlIEd1QyAodmlhIHRo ZSBHR1RUKQotICogYXQgZmlybXdhcmUgbG9hZGluZyB0aW1lLgotICovCi1pbnQgaW50ZWxfZ3Vj X3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgaW50IGd1Y192 aXJ0dWFsX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgdm9pZCAqdmFkZHIp CiB7Ci0JaW50IHJldDsKLQotCWlmIChndWMtPnN0YWdlX2Rlc2NfcG9vbCkKLQkJcmV0dXJuIDA7 Ci0KLQlyZXQgPSBndWNfc3RhZ2VfZGVzY19wb29sX2NyZWF0ZShndWMpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0JLyoKLQkgKiBLZWVwIHN0YXRpYyBhbmFseXNlcnMgaGFwcHksIGxldCB0 aGVtIGtub3cgdGhhdCB3ZSBhbGxvY2F0ZWQgdGhlCi0JICogdm1hIGFmdGVyIHRlc3RpbmcgdGhh dCBpdCBkaWRuJ3QgZXhpc3QgZWFybGllci4KLQkgKi8KLQlHRU1fQlVHX09OKCFndWMtPnN0YWdl X2Rlc2NfcG9vbCk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZ3VjX3ZpcnR1 YWxfZ2V0X3NpYmxpbmcoY2UtPmVuZ2luZSwgMCk7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gX19n dWNfY29udGV4dF9waW4oY2UsIGVuZ2luZSwgdmFkZHIpOwogfQogCi12b2lkIGludGVsX2d1Y19z dWJtaXNzaW9uX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIHZvaWQgZ3VjX3Zp cnR1YWxfY29udGV4dF9lbnRlcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0JaWYgKGd1 Yy0+c3RhZ2VfZGVzY19wb29sKSB7Ci0JCWd1Y19zdGFnZV9kZXNjX3Bvb2xfZGVzdHJveShndWMp OwotCX0KLX0KKwlpbnRlbF9lbmdpbmVfbWFza190IHRtcCwgbWFzayA9IGNlLT5lbmdpbmUtPm1h c2s7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCi1zdGF0aWMgaW50IGd1Y19j b250ZXh0X2FsbG9jKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKLXsKLQlyZXR1cm4gbHJjX2Fs bG9jKGNlLCBjZS0+ZW5naW5lKTsKKwlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgY2Ut PmVuZ2luZS0+Z3QsIG1hc2ssIHRtcCkKKwkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwor CisJaW50ZWxfdGltZWxpbmVfZW50ZXIoY2UtPnRpbWVsaW5lKTsKIH0KIAotc3RhdGljIGludCBn dWNfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKLQkJCSAgICAgICBz dHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKLQkJCSAgICAgICB2b2lkICoqdmFkZHIpCitzdGF0 aWMgdm9pZCBndWNfdmlydHVhbF9jb250ZXh0X2V4aXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQogewotCXJldHVybiBscmNfcHJlX3BpbihjZSwgY2UtPmVuZ2luZSwgd3csIHZhZGRyKTsKKwlp bnRlbF9lbmdpbmVfbWFza190IHRtcCwgbWFzayA9IGNlLT5lbmdpbmUtPm1hc2s7CisJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdp bmUsIGNlLT5lbmdpbmUtPmd0LCBtYXNrLCB0bXApCisJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5n aW5lKTsKKworCWludGVsX3RpbWVsaW5lX2V4aXQoY2UtPnRpbWVsaW5lKTsKIH0KIAotc3RhdGlj IGludCBndWNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCB2b2lkICp2YWRk cikKK3N0YXRpYyBpbnQgZ3VjX3ZpcnR1YWxfY29udGV4dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UpCiB7Ci0JcmV0dXJuIGxyY19waW4oY2UsIGNlLT5lbmdpbmUsIHZhZGRyKTsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBndWNfdmlydHVhbF9nZXRfc2libGluZyhj ZS0+ZW5naW5lLCAwKTsKKworCXJldHVybiBscmNfYWxsb2MoY2UsIGVuZ2luZSk7CiB9CiAKLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgZ3VjX2NvbnRleHRfb3BzID0gewot CS5hbGxvYyA9IGd1Y19jb250ZXh0X2FsbG9jLAorc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9j b250ZXh0X29wcyB2aXJ0dWFsX2d1Y19jb250ZXh0X29wcyA9IHsKKwkuYWxsb2MgPSBndWNfdmly dHVhbF9jb250ZXh0X2FsbG9jLAogCi0JLnByZV9waW4gPSBndWNfY29udGV4dF9wcmVfcGluLAot CS5waW4gPSBndWNfY29udGV4dF9waW4sCi0JLnVucGluID0gbHJjX3VucGluLAotCS5wb3N0X3Vu cGluID0gbHJjX3Bvc3RfdW5waW4sCisJLnByZV9waW4gPSBndWNfdmlydHVhbF9jb250ZXh0X3By ZV9waW4sCisJLnBpbiA9IGd1Y192aXJ0dWFsX2NvbnRleHRfcGluLAorCS51bnBpbiA9IGd1Y19j b250ZXh0X3VucGluLAorCS5wb3N0X3VucGluID0gZ3VjX2NvbnRleHRfcG9zdF91bnBpbiwKIAot CS5lbnRlciA9IGludGVsX2NvbnRleHRfZW50ZXJfZW5naW5lLAotCS5leGl0ID0gaW50ZWxfY29u dGV4dF9leGl0X2VuZ2luZSwKKwkuYmFuID0gZ3VjX2NvbnRleHRfYmFuLAogCi0JLnJlc2V0ID0g bHJjX3Jlc2V0LAotCS5kZXN0cm95ID0gbHJjX2Rlc3Ryb3ksCi19OworCS5jYW5jZWxfcmVxdWVz dCA9IGd1Y19jb250ZXh0X2NhbmNlbF9yZXF1ZXN0LAogCi1zdGF0aWMgaW50IGd1Y19yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCi17Ci0JaW50IHJldDsKKwkuZW50 ZXIgPSBndWNfdmlydHVhbF9jb250ZXh0X2VudGVyLAorCS5leGl0ID0gZ3VjX3ZpcnR1YWxfY29u dGV4dF9leGl0LAogCi0JR0VNX0JVR19PTighaW50ZWxfY29udGV4dF9pc19waW5uZWQocmVxdWVz dC0+Y29udGV4dCkpOworCS5zY2hlZF9kaXNhYmxlID0gZ3VjX2NvbnRleHRfc2NoZWRfZGlzYWJs ZSwKIAotCS8qCi0JICogRmx1c2ggZW5vdWdoIHNwYWNlIHRvIHJlZHVjZSB0aGUgbGlrZWxpaG9v ZCBvZiB3YWl0aW5nIGFmdGVyCi0JICogd2Ugc3RhcnQgYnVpbGRpbmcgdGhlIHJlcXVlc3QgLSBp biB3aGljaCBjYXNlIHdlIHdpbGwganVzdAotCSAqIGhhdmUgdG8gcmVwZWF0IHdvcmsuCi0JICov Ci0JcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2UgKz0gR1VDX1JFUVVFU1RfU0laRTsKKwkuZGVzdHJv eSA9IGd1Y19jb250ZXh0X2Rlc3Ryb3ksCiAKLQkvKgotCSAqIE5vdGUgdGhhdCBhZnRlciB0aGlz IHBvaW50LCB3ZSBoYXZlIGNvbW1pdHRlZCB0byB1c2luZwotCSAqIHRoaXMgcmVxdWVzdCBhcyBp dCBpcyBiZWluZyB1c2VkIHRvIGJvdGggdHJhY2sgdGhlCi0JICogc3RhdGUgb2YgZW5naW5lIGlu aXRpYWxpc2F0aW9uIGFuZCBsaXZlbmVzcyBvZiB0aGUKLQkgKiBnb2xkZW4gcmVuZGVyc3RhdGUg YWJvdmUuIFRoaW5rIHR3aWNlIGJlZm9yZSB5b3UgdHJ5Ci0JICogdG8gY2FuY2VsL3Vud2luZCB0 aGlzIHJlcXVlc3Qgbm93LgotCSAqLworCS5nZXRfc2libGluZyA9IGd1Y192aXJ0dWFsX2dldF9z aWJsaW5nLAorfTsKIAotCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIEdQVSBjYWNoZXMg YW5kIFRMQnMuICovCi0JcmV0ID0gcmVxdWVzdC0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcXVlc3Qs IEVNSVRfSU5WQUxJREFURSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKK3N0YXRpYyBib29s CitndWNfaXJxX2VuYWJsZV9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIp Cit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZzsKKwlpbnRlbF9lbmdpbmVfbWFz a190IHRtcCwgbWFzayA9IGItPmVuZ2luZV9tYXNrOworCWJvb2wgcmVzdWx0ID0gZmFsc2U7CiAK LQlyZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZSAtPSBHVUNfUkVRVUVTVF9TSVpFOwotCXJldHVybiAw OworCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoc2libGluZywgYi0+aXJxX2VuZ2luZS0+Z3QsIG1h c2ssIHRtcCkKKwkJcmVzdWx0IHw9IGludGVsX2VuZ2luZV9pcnFfZW5hYmxlKHNpYmxpbmcpOwor CisJcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHF1ZXVlX3JlcXVlc3Qo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwKLQkJCQkgaW50IHByaW8pCitzdGF0aWMgdm9pZAorZ3VjX2lycV9kaXNhYmxlX2JyZWFk Y3J1bWJzKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKIHsKLQlHRU1fQlVHX09OKCFsaXN0 X2VtcHR5KCZycS0+c2NoZWQubGluaykpOwotCWxpc3RfYWRkX3RhaWwoJnJxLT5zY2hlZC5saW5r LAotCQkgICAgICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdpbmUtPnNjaGVkX2VuZ2lu ZSwgcHJpbykpOwotCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX1BRVUVVRSwgJnJxLT5mZW5jZS5m bGFncyk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZzsKKwlpbnRlbF9lbmdpbmVf bWFza190IHRtcCwgbWFzayA9IGItPmVuZ2luZV9tYXNrOworCisJZm9yX2VhY2hfZW5naW5lX21h c2tlZChzaWJsaW5nLCBiLT5pcnFfZW5naW5lLT5ndCwgbWFzaywgdG1wKQorCQlpbnRlbF9lbmdp bmVfaXJxX2Rpc2FibGUoc2libGluZyk7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19zdWJtaXRfcmVx dWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyB2b2lkIGd1Y19pbml0X2JyZWFk Y3J1bWJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0K LQkvKiBXaWxsIGJlIGNhbGxlZCBmcm9tIGlycS1jb250ZXh0IHdoZW4gdXNpbmcgZm9yZWlnbiBm ZW5jZXMuICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2Nr LCBmbGFncyk7CisJaW50IGk7CisKKyAgICAgICAvKgorICAgICAgICAqIEluIEd1QyBzdWJtaXNz aW9uIG1vZGUgd2UgZG8gbm90IGtub3cgd2hpY2ggcGh5c2ljYWwgZW5naW5lIGEgcmVxdWVzdAor ICAgICAgICAqIHdpbGwgYmUgc2NoZWR1bGVkIG9uLCB0aGlzIGNyZWF0ZXMgYSBwcm9ibGVtIGJl Y2F1c2UgdGhlIGJyZWFkY3J1bWIKKyAgICAgICAgKiBpbnRlcnJ1cHQgaXMgcGVyIHBoeXNpY2Fs IGVuZ2luZS4gVG8gd29yayBhcm91bmQgdGhpcyB3ZSBhdHRhY2gKKyAgICAgICAgKiByZXF1ZXN0 cyBhbmQgZGlyZWN0IGFsbCBicmVhZGNydW1iIGludGVycnVwdHMgdG8gdGhlIGZpcnN0IGluc3Rh bmNlCisgICAgICAgICogb2YgYW4gZW5naW5lIHBlciBjbGFzcy4gSW4gYWRkaXRpb24gYWxsIGJy ZWFkY3J1bWIgaW50ZXJydXB0cyBhcmUKKwkqIGVuYWJsZWQgLyBkaXNhYmxlZCBhY3Jvc3MgYW4g ZW5naW5lIGNsYXNzIGluIHVuaXNvbi4KKyAgICAgICAgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTUFY X0VOR0lORV9JTlNUQU5DRTsgKytpKSB7CisJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpYmxp bmcgPQorCQkJZW5naW5lLT5ndC0+ZW5naW5lX2NsYXNzW2VuZ2luZS0+Y2xhc3NdW2ldOworCisJ CWlmIChzaWJsaW5nKSB7CisJCQlpZiAoZW5naW5lLT5icmVhZGNydW1icyAhPSBzaWJsaW5nLT5i cmVhZGNydW1icykgeworCQkJCWludGVsX2JyZWFkY3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1 bWJzKTsKKwkJCQllbmdpbmUtPmJyZWFkY3J1bWJzID0KKwkJCQkJaW50ZWxfYnJlYWRjcnVtYnNf Z2V0KHNpYmxpbmctPmJyZWFkY3J1bWJzKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQogCi0J cXVldWVfcmVxdWVzdChlbmdpbmUsIHJxLCBycV9wcmlvKHJxKSk7CisJaWYgKGVuZ2luZS0+YnJl YWRjcnVtYnMpIHsKKwkJZW5naW5lLT5icmVhZGNydW1icy0+ZW5naW5lX21hc2sgfD0gZW5naW5l LT5tYXNrOworCQllbmdpbmUtPmJyZWFkY3J1bWJzLT5pcnFfZW5hYmxlID0gZ3VjX2lycV9lbmFi bGVfYnJlYWRjcnVtYnM7CisJCWVuZ2luZS0+YnJlYWRjcnVtYnMtPmlycV9kaXNhYmxlID0gZ3Vj X2lycV9kaXNhYmxlX2JyZWFkY3J1bWJzOworCX0KK30KIAotCUdFTV9CVUdfT04oaTkxNV9zY2hl ZF9lbmdpbmVfaXNfZW1wdHkoZW5naW5lLT5zY2hlZF9lbmdpbmUpKTsKLQlHRU1fQlVHX09OKGxp c3RfZW1wdHkoJnJxLT5zY2hlZC5saW5rKSk7CitzdGF0aWMgdm9pZCBndWNfYnVtcF9pbmZsaWdo dF9yZXF1ZXN0X3ByaW8oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJCSAgIGludCBwcmlv KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0OworCXU4IG5ld19n dWNfcHJpbyA9IG1hcF9pOTE1X3ByaW9fdG9fZ3VjX3ByaW8ocHJpbyk7CisKKwkvKiBTaG9ydCBj aXJjdWl0IGZ1bmN0aW9uICovCisJaWYgKHByaW8gPCBJOTE1X1BSSU9SSVRZX05PUk1BTCB8fAor CSAgICAocnEtPmd1Y19wcmlvID09IEdVQ19QUklPX0ZJTkkpIHx8CisJICAgIChycS0+Z3VjX3By aW8gIT0gR1VDX1BSSU9fSU5JVCAmJgorCSAgICAgIW5ld19ndWNfcHJpb19oaWdoZXIocnEtPmd1 Y19wcmlvLCBuZXdfZ3VjX3ByaW8pKSkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrKCZjZS0+Z3Vj X2FjdGl2ZS5sb2NrKTsKKwlpZiAocnEtPmd1Y19wcmlvICE9IEdVQ19QUklPX0ZJTkkpIHsKKwkJ aWYgKHJxLT5ndWNfcHJpbyAhPSBHVUNfUFJJT19JTklUKQorCQkJc3ViX2NvbnRleHRfaW5mbGln aHRfcHJpbyhjZSwgcnEtPmd1Y19wcmlvKTsKKwkJcnEtPmd1Y19wcmlvID0gbmV3X2d1Y19wcmlv OworCQlhZGRfY29udGV4dF9pbmZsaWdodF9wcmlvKGNlLCBycS0+Z3VjX3ByaW8pOworCQl1cGRh dGVfY29udGV4dF9wcmlvKGNlKTsKKwl9CisJc3Bpbl91bmxvY2soJmNlLT5ndWNfYWN0aXZlLmxv Y2spOworfQogCi0JdGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRh c2tsZXQpOworc3RhdGljIHZvaWQgZ3VjX3JldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8oc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEt PmNvbnRleHQ7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnNjaGVkX2VuZ2lu ZS0+bG9jaywgZmxhZ3MpOworCXNwaW5fbG9jaygmY2UtPmd1Y19hY3RpdmUubG9jayk7CisJZ3Vj X3ByaW9fZmluaShycSwgY2UpOworCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsK IH0KIAogc3RhdGljIHZvaWQgc2FuaXRpemVfaHdzcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCkBAIC01ODgsMjEgKzIzMTIsNjggQEAgc3RhdGljIGludCBndWNfcmVzdW1lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGJvb2wg Z3VjX3NjaGVkX2VuZ2luZV9kaXNhYmxlZChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVk X2VuZ2luZSkKK3sKKwlyZXR1cm4gIXNjaGVkX2VuZ2luZS0+dGFza2xldC5jYWxsYmFjazsKK30K Kwogc3RhdGljIHZvaWQgZ3VjX3NldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBndWNfc3VibWl0 X3JlcXVlc3Q7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBndWNfa2VybmVsX2NvbnRleHRfcGlu KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cit7CisJaWYgKGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpKQorCQlwaW5fZ3VjX2lkKGd1Yywg Y2UpOworCWd1Y19scmNfZGVzY19waW4oY2UsIHRydWUpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgZ3VjX2luaXRfbHJjX21hcHBpbmcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVj dCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisKKwkvKiBtYWtlIHN1cmUgYWxs IGRlc2NyaXB0b3JzIGFyZSBjbGVhbi4uLiAqLworCXhhX2Rlc3Ryb3koJmd1Yy0+Y29udGV4dF9s b29rdXApOworCisJLyoKKwkgKiBTb21lIGNvbnRleHRzIG1pZ2h0IGhhdmUgYmVlbiBwaW5uZWQg YmVmb3JlIHdlIGVuYWJsZWQgR3VDCisJICogc3VibWlzc2lvbiwgc28gd2UgbmVlZCB0byBhZGQg dGhlbSB0byB0aGUgR3VDIGJvb2tlZXBpbmcuCisJICogQWxzbywgYWZ0ZXIgYSByZXNldCB0aGUg b2YgR3VDIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCisJICogaW5mb3JtYXRpb24gc2hh cmVkIHdpdGggR3VDIGlzIHByb3Blcmx5IHJlc2V0LiBUaGUga2VybmVsIExSQ3MgYXJlCisJICog bm90IGF0dGFjaGVkIHRvIHRoZSBnZW1fY29udGV4dCwgc28gdGhleSBuZWVkIHRvIGJlIGFkZGVk IHNlcGFyYXRlbHkuCisJICoKKwkgKiBOb3RlOiB3ZSBwdXJwb3NlbHkgZG8gbm90IGNoZWNrIHRo ZSByZXR1cm4gb2YgZ3VjX2xyY19kZXNjX3BpbiwKKwkgKiBiZWNhdXNlIHRoYXQgZnVuY3Rpb24g Y2FuIG9ubHkgZmFpbCBpZiBhIHJlc2V0IGlzIGp1c3Qgc3RhcnRpbmcuIFRoaXMKKwkgKiBpcyBh dCB0aGUgZW5kIG9mIHJlc2V0IHNvIHByZXN1bWFibHkgYW5vdGhlciByZXNldCBpc24ndCBoYXBw ZW5pbmcKKwkgKiBhbmQgZXZlbiBpdCBkaWQgdGhpcyBjb2RlIHdvdWxkIGJlIHJ1biBhZ2Fpbi4K KwkgKi8KKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkKKwkJaWYgKGVuZ2luZS0+ a2VybmVsX2NvbnRleHQpCisJCQlndWNfa2VybmVsX2NvbnRleHRfcGluKGd1YywgZW5naW5lLT5r ZXJuZWxfY29udGV4dCk7Cit9CisKIHN0YXRpYyB2b2lkIGd1Y19yZWxlYXNlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAllbmdpbmUtPnNhbml0aXplID0gTlVMTDsgLyogbm8g bG9uZ2VyIGluIGNvbnRyb2wsIG5vdGhpbmcgdG8gc2FuaXRpemUgKi8KIAotCXRhc2tsZXRfa2ls bCgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQpOwotCiAJaW50ZWxfZW5naW5lX2NsZWFu dXBfY29tbW9uKGVuZ2luZSk7CiAJbHJjX2Zpbmlfd2FfY3R4KGVuZ2luZSk7CiB9CiAKK3N0YXRp YyB2b2lkIHZpcnR1YWxfZ3VjX2J1bXBfc2VyaWFsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplOworCWludGVsX2VuZ2luZV9tYXNr X3QgdG1wLCBtYXNrID0gZW5naW5lLT5tYXNrOworCisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChl LCBlbmdpbmUtPmd0LCBtYXNrLCB0bXApCisJCWUtPnNlcmlhbCsrOworfQorCiBzdGF0aWMgdm9p ZCBndWNfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewog CS8qIERlZmF1bHQgdmZ1bmNzIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGVhY2ggZW5naW5l LiAqLwpAQCAtNjExLDEzICsyMzgyLDE1IEBAIHN0YXRpYyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5j cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAllbmdpbmUtPmNvcHMgPSAmZ3Vj X2NvbnRleHRfb3BzOwogCWVuZ2luZS0+cmVxdWVzdF9hbGxvYyA9IGd1Y19yZXF1ZXN0X2FsbG9j OworCWVuZ2luZS0+YWRkX2FjdGl2ZV9yZXF1ZXN0ID0gYWRkX3RvX2NvbnRleHQ7CisJZW5naW5l LT5yZW1vdmVfYWN0aXZlX3JlcXVlc3QgPSByZW1vdmVfZnJvbV9jb250ZXh0OwogCiAJZW5naW5l LT5zY2hlZF9lbmdpbmUtPnNjaGVkdWxlID0gaTkxNV9zY2hlZHVsZTsKIAotCWVuZ2luZS0+cmVz ZXQucHJlcGFyZSA9IGd1Y19yZXNldF9wcmVwYXJlOwotCWVuZ2luZS0+cmVzZXQucmV3aW5kID0g Z3VjX3Jlc2V0X3Jld2luZDsKLQllbmdpbmUtPnJlc2V0LmNhbmNlbCA9IGd1Y19yZXNldF9jYW5j ZWw7Ci0JZW5naW5lLT5yZXNldC5maW5pc2ggPSBndWNfcmVzZXRfZmluaXNoOworCWVuZ2luZS0+ cmVzZXQucHJlcGFyZSA9IGd1Y19yZXNldF9ub3A7CisJZW5naW5lLT5yZXNldC5yZXdpbmQgPSBn dWNfcmV3aW5kX25vcDsKKwllbmdpbmUtPnJlc2V0LmNhbmNlbCA9IGd1Y19yZXNldF9ub3A7CisJ ZW5naW5lLT5yZXNldC5maW5pc2ggPSBndWNfcmVzZXRfbm9wOwogCiAJZW5naW5lLT5lbWl0X2Zs dXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3hjczsKIAllbmdpbmUtPmVtaXRfaW5pdF9icmVhZGNydW1i ID0gZ2VuOF9lbWl0X2luaXRfYnJlYWRjcnVtYjsKQEAgLTYyOSwxMyArMjQwMiwxMyBAQCBzdGF0 aWMgdm9pZCBndWNfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9IGd1Y19zZXRfZGVmYXVsdF9zdWJt aXNzaW9uOwogCiAJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfUFJFRU1QVElPTjsK KwllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19USU1FU0xJQ0VTOwogCiAJLyoKIAkg KiBUT0RPOiBHdUMgc3VwcG9ydHMgdGltZXNsaWNpbmcgYW5kIHNlbWFwaG9yZXMgYXMgd2VsbCwg YnV0IHRoZXkncmUKIAkgKiBoYW5kbGVkIGJ5IHRoZSBmaXJtd2FyZSBzbyBzb21lIG1pbm9yIHR3 ZWFrcyBhcmUgcmVxdWlyZWQgYmVmb3JlCiAJICogZW5hYmxpbmcuCiAJICoKLQkgKiBlbmdpbmUt PmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19USU1FU0xJQ0VTOwogCSAqIGVuZ2luZS0+ZmxhZ3Mg fD0gSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CiAJICovCiAKQEAgLTY2Niw5ICsyNDM5LDIx IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBndWNfZGVmYXVsdF9pcnFzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlpbnRlbF9lbmdpbmVfc2V0X2lycV9oYW5kbGVyKGVuZ2luZSwgY3Nf aXJxX2hhbmRsZXIpOwogfQogCitzdGF0aWMgdm9pZCBndWNfc2NoZWRfZW5naW5lX2Rlc3Ryb3ko c3RydWN0IGtyZWYgKmtyZWYpCit7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hlZF9l bmdpbmUgPQorCQljb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCpzY2hlZF9lbmdpbmUpLCByZWYp OworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IHNjaGVkX2VuZ2luZS0+cHJpdmF0ZV9kYXRhOwor CisJZ3VjLT5zY2hlZF9lbmdpbmUgPSBOVUxMOworCXRhc2tsZXRfa2lsbCgmc2NoZWRfZW5naW5l LT50YXNrbGV0KTsgLyogZmx1c2ggdGhlIGNhbGxiYWNrICovCisJa2ZyZWUoc2NoZWRfZW5naW5l KTsKK30KKwogaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2lu ZS0+aTkxNTsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZW5naW5lLT5ndC0+dWMuZ3VjOwog CiAJLyoKIAkgKiBUaGUgc2V0dXAgcmVsaWVzIG9uIHNldmVyYWwgYXNzdW1wdGlvbnMgKGUuZy4g aXJxcyBhbHdheXMgZW5hYmxlZCkKQEAgLTY3NiwxMCArMjQ2MSwyOCBAQCBpbnQgaW50ZWxfZ3Vj X3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqLwog CUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpOwogCi0JdGFza2xldF9zZXR1cCgm ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQsIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQpOwor CWlmICghZ3VjLT5zY2hlZF9lbmdpbmUpIHsKKwkJZ3VjLT5zY2hlZF9lbmdpbmUgPSBpOTE1X3Nj aGVkX2VuZ2luZV9jcmVhdGUoRU5HSU5FX1ZJUlRVQUwpOworCQlpZiAoIWd1Yy0+c2NoZWRfZW5n aW5lKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJZ3VjLT5zY2hlZF9lbmdpbmUtPnNjaGVkdWxl ID0gaTkxNV9zY2hlZHVsZTsKKwkJZ3VjLT5zY2hlZF9lbmdpbmUtPmRpc2FibGVkID0gZ3VjX3Nj aGVkX2VuZ2luZV9kaXNhYmxlZDsKKwkJZ3VjLT5zY2hlZF9lbmdpbmUtPnByaXZhdGVfZGF0YSA9 IGd1YzsKKwkJZ3VjLT5zY2hlZF9lbmdpbmUtPmRlc3Ryb3kgPSBndWNfc2NoZWRfZW5naW5lX2Rl c3Ryb3k7CisJCWd1Yy0+c2NoZWRfZW5naW5lLT5idW1wX2luZmxpZ2h0X3JlcXVlc3RfcHJpbyA9 CisJCQlndWNfYnVtcF9pbmZsaWdodF9yZXF1ZXN0X3ByaW87CisJCWd1Yy0+c2NoZWRfZW5naW5l LT5yZXRpcmVfaW5mbGlnaHRfcmVxdWVzdF9wcmlvID0KKwkJCWd1Y19yZXRpcmVfaW5mbGlnaHRf cmVxdWVzdF9wcmlvOworCQl0YXNrbGV0X3NldHVwKCZndWMtPnNjaGVkX2VuZ2luZS0+dGFza2xl dCwKKwkJCSAgICAgIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQpOworCX0KKwlpOTE1X3NjaGVkX2Vu Z2luZV9wdXQoZW5naW5lLT5zY2hlZF9lbmdpbmUpOworCWVuZ2luZS0+c2NoZWRfZW5naW5lID0g aTkxNV9zY2hlZF9lbmdpbmVfZ2V0KGd1Yy0+c2NoZWRfZW5naW5lKTsKIAogCWd1Y19kZWZhdWx0 X3ZmdW5jcyhlbmdpbmUpOwogCWd1Y19kZWZhdWx0X2lycXMoZW5naW5lKTsKKwlndWNfaW5pdF9i cmVhZGNydW1icyhlbmdpbmUpOwogCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNT KQogCQlyY3Nfc3VibWlzc2lvbl9vdmVycmlkZShlbmdpbmUpOwpAQCAtNjk1LDcgKzI0OTgsNyBA QCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiB7Ci0JZ3VjX3N0YWdlX2Rlc2NfaW5pdChndWMpOworCWd1Y19pbml0X2xyY19t YXBwaW5nKGd1Yyk7CiB9CiAKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCkBAIC03MDUsOCArMjUwOCwxMyBAQCB2b2lkIGludGVsX2d1Y19z dWJtaXNzaW9uX2Rpc2FibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCUdFTV9CVUdfT04oZ3Qt PmF3YWtlKTsgLyogR1Qgc2hvdWxkIGJlIHBhcmtlZCBmaXJzdCAqLwogCiAJLyogTm90ZTogQnkg dGhlIHRpbWUgd2UncmUgaGVyZSwgR3VDIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZXNldCAqLwor fQogCi0JZ3VjX3N0YWdlX2Rlc2NfZmluaShndWMpOworc3RhdGljIGJvb2wgX19ndWNfc3VibWlz c2lvbl9zdXBwb3J0ZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCS8qIEd1QyBzdWJtaXNz aW9uIGlzIHVuYXZhaWxhYmxlIGZvciBwcmUtR2VuMTEgKi8KKwlyZXR1cm4gaW50ZWxfZ3VjX2lz X3N1cHBvcnRlZChndWMpICYmCisJICAgICAgIEdSQVBISUNTX1ZFUihndWNfdG9fZ3QoZ3VjKS0+ aTkxNSkgPj0gMTE7CiB9CiAKIHN0YXRpYyBib29sIF9fZ3VjX3N1Ym1pc3Npb25fc2VsZWN0ZWQo c3RydWN0IGludGVsX2d1YyAqZ3VjKQpAQCAtNzIxLDUgKzI1MjksNDgzIEBAIHN0YXRpYyBib29s IF9fZ3VjX3N1Ym1pc3Npb25fc2VsZWN0ZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCiB2b2lk IGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQog eworCWd1Yy0+c3VibWlzc2lvbl9zdXBwb3J0ZWQgPSBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnRl ZChndWMpOwogCWd1Yy0+c3VibWlzc2lvbl9zZWxlY3RlZCA9IF9fZ3VjX3N1Ym1pc3Npb25fc2Vs ZWN0ZWQoZ3VjKTsKIH0KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitn MmhfY29udGV4dF9sb29rdXAoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgZGVzY19pZHgpCit7 CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCisJaWYgKHVubGlrZWx5KGRlc2NfaWR4ID49 IEdVQ19NQVhfTFJDX0RFU0NSSVBUT1JTKSkgeworCQlkcm1fZXJyKCZndWNfdG9fZ3QoZ3VjKS0+ aTkxNS0+ZHJtLAorCQkJIkludmFsaWQgZGVzY19pZHggJXUiLCBkZXNjX2lkeCk7CisJCXJldHVy biBOVUxMOworCX0KKworCWNlID0gX19nZXRfY29udGV4dChndWMsIGRlc2NfaWR4KTsKKwlpZiAo dW5saWtlbHkoIWNlKSkgeworCQlkcm1fZXJyKCZndWNfdG9fZ3QoZ3VjKS0+aTkxNS0+ZHJtLAor CQkJIkNvbnRleHQgaXMgTlVMTCwgZGVzY19pZHggJXUiLCBkZXNjX2lkeCk7CisJCXJldHVybiBO VUxMOworCX0KKworCXJldHVybiBjZTsKK30KKworc3RhdGljIHZvaWQgZGVjcl9vdXRzdGFuZGlu Z19zdWJtaXNzaW9uX2cyaChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJaWYgKGF0b21pY19k ZWNfYW5kX3Rlc3QoJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgpKQorCQl3YWtlX3Vw X2FsbCgmZ3VjLT5jdC53cSk7Cit9CisKK2ludCBpbnRlbF9ndWNfZGVyZWdpc3Rlcl9kb25lX3By b2Nlc3NfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJICBjb25zdCB1MzIgKm1zZywK KwkJCQkJICB1MzIgbGVuKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwl1MzIgZGVz Y19pZHggPSBtc2dbMF07CisKKwlpZiAodW5saWtlbHkobGVuIDwgMSkpIHsKKwkJZHJtX2Vycigm Z3VjX3RvX2d0KGd1YyktPmk5MTUtPmRybSwgIkludmFsaWQgbGVuZ3RoICV1IiwgbGVuKTsKKwkJ cmV0dXJuIC1FUFJPVE87CisJfQorCisJY2UgPSBnMmhfY29udGV4dF9sb29rdXAoZ3VjLCBkZXNj X2lkeCk7CisJaWYgKHVubGlrZWx5KCFjZSkpCisJCXJldHVybiAtRVBST1RPOworCisJdHJhY2Vf aW50ZWxfY29udGV4dF9kZXJlZ2lzdGVyX2RvbmUoY2UpOworCisJaWYgKGNvbnRleHRfd2FpdF9m b3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihjZSkpIHsKKwkJc3RydWN0IGludGVsX3J1bnRpbWVf cG0gKnJ1bnRpbWVfcG0gPQorCQkJJmNlLT5lbmdpbmUtPmd0LT5pOTE1LT5ydW50aW1lX3BtOwor CQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCQkvKgorCQkgKiBQcmV2aW91cyBvd25lciBv ZiB0aGlzIGd1Y19pZCBoYXMgYmVlbiBkZXJlZ2lzdGVyZWQsIG5vdyBzYWZlCisJCSAqIHJlZ2lz dGVyIHRoaXMgY29udGV4dC4KKwkJICovCisJCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1l X3BtLCB3YWtlcmVmKQorCQkJcmVnaXN0ZXJfY29udGV4dChjZSwgdHJ1ZSk7CisJCWd1Y19zaWdu YWxfY29udGV4dF9mZW5jZShjZSk7CisJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKwl9IGVsc2Ug aWYgKGNvbnRleHRfZGVzdHJveWVkKGNlKSkgeworCQkvKiBDb250ZXh0IGhhcyBiZWVuIGRlc3Ry b3llZCAqLworCQlyZWxlYXNlX2d1Y19pZChndWMsIGNlKTsKKwkJX19ndWNfY29udGV4dF9kZXN0 cm95KGNlKTsKKwl9CisKKwlkZWNyX291dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoKGd1Yyk7CisK KwlyZXR1cm4gMDsKK30KKworaW50IGludGVsX2d1Y19zY2hlZF9kb25lX3Byb2Nlc3NfbXNnKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkgICAgIGNvbnN0IHUzMiAqbXNnLAorCQkJCSAgICAg dTMyIGxlbikKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKwl1MzIgZGVzY19pZHggPSBtc2dbMF07CisKKwlpZiAodW5saWtlbHkobGVuIDwgMikp IHsKKwkJZHJtX2VycigmZ3VjX3RvX2d0KGd1YyktPmk5MTUtPmRybSwgIkludmFsaWQgbGVuZ3Ro ICV1IiwgbGVuKTsKKwkJcmV0dXJuIC1FUFJPVE87CisJfQorCisJY2UgPSBnMmhfY29udGV4dF9s b29rdXAoZ3VjLCBkZXNjX2lkeCk7CisJaWYgKHVubGlrZWx5KCFjZSkpCisJCXJldHVybiAtRVBS T1RPOworCisJaWYgKHVubGlrZWx5KGNvbnRleHRfZGVzdHJveWVkKGNlKSB8fAorCQkgICAgICgh Y29udGV4dF9wZW5kaW5nX2VuYWJsZShjZSkgJiYKKwkJICAgICAhY29udGV4dF9wZW5kaW5nX2Rp c2FibGUoY2UpKSkpIHsKKwkJZHJtX2VycigmZ3VjX3RvX2d0KGd1YyktPmk5MTUtPmRybSwKKwkJ CSJCYWQgY29udGV4dCBzY2hlZF9zdGF0ZSAweCV4LCAweCV4LCBkZXNjX2lkeCAldSIsCisJCQlh dG9taWNfcmVhZCgmY2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKSwKKwkJCWNlLT5ndWNfc3Rh dGUuc2NoZWRfc3RhdGUsIGRlc2NfaWR4KTsKKwkJcmV0dXJuIC1FUFJPVE87CisJfQorCisJdHJh Y2VfaW50ZWxfY29udGV4dF9zY2hlZF9kb25lKGNlKTsKKworCWlmIChjb250ZXh0X3BlbmRpbmdf ZW5hYmxlKGNlKSkgeworCQljbHJfY29udGV4dF9wZW5kaW5nX2VuYWJsZShjZSk7CisJfSBlbHNl IGlmIChjb250ZXh0X3BlbmRpbmdfZGlzYWJsZShjZSkpIHsKKwkJYm9vbCBiYW5uZWQ7CisKKwkJ LyoKKwkJICogVW5waW4gbXVzdCBiZSBkb25lIGJlZm9yZSBfX2d1Y19zaWduYWxfY29udGV4dF9m ZW5jZSwKKwkJICogb3RoZXJ3aXNlIGEgcmFjZSBleGlzdHMgYmV0d2VlbiB0aGUgcmVxdWVzdHMg Z2V0dGluZworCQkgKiBzdWJtaXR0ZWQgKyByZXRpcmVkIGJlZm9yZSB0aGlzIHVucGluIGNvbXBs ZXRlcyByZXN1bHRpbmcgaW4KKwkJICogdGhlIHBpbl9jb3VudCBnb2luZyB0byB6ZXJvIGFuZCB0 aGUgY29udGV4dCBzdGlsbCBiZWluZworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaW50ZWxfY29u dGV4dF9zY2hlZF9kaXNhYmxlX3VucGluKGNlKTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmY2Ut Pmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJCWJhbm5lZCA9IGNvbnRleHRfYmFubmVkKGNlKTsK KwkJY2xyX2NvbnRleHRfYmFubmVkKGNlKTsKKwkJY2xyX2NvbnRleHRfcGVuZGluZ19kaXNhYmxl KGNlKTsKKwkJX19ndWNfc2lnbmFsX2NvbnRleHRfZmVuY2UoY2UpOworCQlndWNfYmxvY2tlZF9m ZW5jZV9jb21wbGV0ZShjZSk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3Rh dGUubG9jaywgZmxhZ3MpOworCisJCWlmIChiYW5uZWQpIHsKKwkJCWd1Y19jYW5jZWxfY29udGV4 dF9yZXF1ZXN0cyhjZSk7CisJCQlpbnRlbF9lbmdpbmVfc2lnbmFsX2JyZWFkY3J1bWJzKGNlLT5l bmdpbmUpOworCQl9CisJfQorCisJZGVjcl9vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaChndWMp OworCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBjYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChn dWMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CisJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gX19jb250ZXh0X3RvX3BoeXNpY2FsX2VuZ2luZShj ZSk7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwlpbnRlbF9lbmdpbmVfc2V0X2h1bmdf Y29udGV4dChlbmdpbmUsIGNlKTsKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJmk5MTUtPnJ1bnRp bWVfcG0sIHdha2VyZWYpCisJCWk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShndCwgZW5naW5lLT5t YXNrKTsKKwlhdG9taWNfaW5jKCZpOTE1LT5ncHVfZXJyb3IucmVzZXRfZW5naW5lX2NvdW50W2Vu Z2luZS0+dWFiaV9jbGFzc10pOworfQorCitzdGF0aWMgdm9pZCBndWNfY29udGV4dF9yZXBsYXko c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAq c2NoZWRfZW5naW5lID0gY2UtPmVuZ2luZS0+c2NoZWRfZW5naW5lOworCisJX19ndWNfcmVzZXRf Y29udGV4dChjZSwgdHJ1ZSk7CisJdGFza2xldF9oaV9zY2hlZHVsZSgmc2NoZWRfZW5naW5lLT50 YXNrbGV0KTsKK30KKworc3RhdGljIHZvaWQgZ3VjX2hhbmRsZV9jb250ZXh0X3Jlc2V0KHN0cnVj dCBpbnRlbF9ndWMgKmd1YywKKwkJCQkgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sK Kwl0cmFjZV9pbnRlbF9jb250ZXh0X3Jlc2V0KGNlKTsKKworCWlmIChsaWtlbHkoIWludGVsX2Nv bnRleHRfaXNfYmFubmVkKGNlKSkpIHsKKwkJY2FwdHVyZV9lcnJvcl9zdGF0ZShndWMsIGNlKTsK KwkJZ3VjX2NvbnRleHRfcmVwbGF5KGNlKTsKKwl9Cit9CisKK2ludCBpbnRlbF9ndWNfY29udGV4 dF9yZXNldF9wcm9jZXNzX21zZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJCWNvbnN0IHUz MiAqbXNnLCB1MzIgbGVuKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgZGVz Y19pZHg7CisKKwlpZiAodW5saWtlbHkobGVuICE9IDEpKSB7CisJCWRybV9lcnIoJmd1Y190b19n dChndWMpLT5pOTE1LT5kcm0sICJJbnZhbGlkIGxlbmd0aCAldSIsIGxlbik7CisJCXJldHVybiAt RVBST1RPOworCX0KKworCWRlc2NfaWR4ID0gbXNnWzBdOworCWNlID0gZzJoX2NvbnRleHRfbG9v a3VwKGd1YywgZGVzY19pZHgpOworCWlmICh1bmxpa2VseSghY2UpKQorCQlyZXR1cm4gLUVQUk9U TzsKKworCWd1Y19oYW5kbGVfY29udGV4dF9yZXNldChndWMsIGNlKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCitndWNfbG9va3VwX2VuZ2luZShz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHU4IGd1Y19jbGFzcywgdTggaW5zdGFuY2UpCit7CisJc3Ry dWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChndWMpOworCXU4IGVuZ2luZV9jbGFzcyA9IGd1 Y19jbGFzc190b19lbmdpbmVfY2xhc3MoZ3VjX2NsYXNzKTsKKworCS8qIENsYXNzIGluZGV4IGlz IGNoZWNrZWQgaW4gY2xhc3MgY29udmVydGVyICovCisJR0VNX0JVR19PTihpbnN0YW5jZSA+IE1B WF9FTkdJTkVfSU5TVEFOQ0UpOworCisJcmV0dXJuIGd0LT5lbmdpbmVfY2xhc3NbZW5naW5lX2Ns YXNzXVtpbnN0YW5jZV07Cit9CisKK2ludCBpbnRlbF9ndWNfZW5naW5lX2ZhaWx1cmVfcHJvY2Vz c19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJCQkgY29uc3QgdTMyICptc2csIHUzMiBs ZW4pCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXU4IGd1Y19jbGFzcywg aW5zdGFuY2U7CisJdTMyIHJlYXNvbjsKKworCWlmICh1bmxpa2VseShsZW4gIT0gMykpIHsKKwkJ ZHJtX2VycigmZ3VjX3RvX2d0KGd1YyktPmk5MTUtPmRybSwgIkludmFsaWQgbGVuZ3RoICV1Iiwg bGVuKTsKKwkJcmV0dXJuIC1FUFJPVE87CisJfQorCisJZ3VjX2NsYXNzID0gbXNnWzBdOworCWlu c3RhbmNlID0gbXNnWzFdOworCXJlYXNvbiA9IG1zZ1syXTsKKworCWVuZ2luZSA9IGd1Y19sb29r dXBfZW5naW5lKGd1YywgZ3VjX2NsYXNzLCBpbnN0YW5jZSk7CisJaWYgKHVubGlrZWx5KCFlbmdp bmUpKSB7CisJCWRybV9lcnIoJmd1Y190b19ndChndWMpLT5pOTE1LT5kcm0sCisJCQkiSW52YWxp ZCBlbmdpbmUgJWQ6JWQiLCBndWNfY2xhc3MsIGluc3RhbmNlKTsKKwkJcmV0dXJuIC1FUFJPVE87 CisJfQorCisJaW50ZWxfZ3RfaGFuZGxlX2Vycm9yKGd1Y190b19ndChndWMpLCBlbmdpbmUtPm1h c2ssCisJCQkgICAgICBJOTE1X0VSUk9SX0NBUFRVUkUsCisJCQkgICAgICAiR3VDIGZhaWxlZCB0 byByZXNldCAlcyAocmVhc29uPTB4JTA4eClcbiIsCisJCQkgICAgICBlbmdpbmUtPm5hbWUsIHJl YXNvbik7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBpbnRlbF9ndWNfZmluZF9odW5nX2NvbnRl eHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9ICZlbmdpbmUtPmd0LT51Yy5ndWM7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCXVuc2lnbmVkIGxvbmcgaW5kZXg7CisKKwkvKiBS ZXNldCBjYWxsZWQgZHVyaW5nIGRyaXZlciBsb2FkPyBHdUMgbm90IHlldCBpbml0aWFsaXNlZCEg Ki8KKwlpZiAodW5saWtlbHkoIWd1Y19zdWJtaXNzaW9uX2luaXRpYWxpemVkKGd1YykpKQorCQly ZXR1cm47CisKKwl4YV9mb3JfZWFjaCgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaW5kZXgsIGNlKSB7 CisJCWlmICghaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKQorCQkJY29udGludWU7CisKKwkJ aWYgKGludGVsX2VuZ2luZV9pc192aXJ0dWFsKGNlLT5lbmdpbmUpKSB7CisJCQlpZiAoIShjZS0+ ZW5naW5lLT5tYXNrICYgZW5naW5lLT5tYXNrKSkKKwkJCQljb250aW51ZTsKKwkJfSBlbHNlIHsK KwkJCWlmIChjZS0+ZW5naW5lICE9IGVuZ2luZSkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCWxp c3RfZm9yX2VhY2hfZW50cnkocnEsICZjZS0+Z3VjX2FjdGl2ZS5yZXF1ZXN0cywgc2NoZWQubGlu aykgeworCQkJaWYgKGk5MTVfdGVzdF9yZXF1ZXN0X3N0YXRlKHJxKSAhPSBJOTE1X1JFUVVFU1Rf QUNUSVZFKQorCQkJCWNvbnRpbnVlOworCisJCQlpbnRlbF9lbmdpbmVfc2V0X2h1bmdfY29udGV4 dChlbmdpbmUsIGNlKTsKKworCQkJLyogQ2FuIG9ubHkgY29wZSB3aXRoIG9uZSBoYW5nIGF0IGEg dGltZS4uLiAqLworCQkJcmV0dXJuOworCQl9CisJfQorfQorCit2b2lkIGludGVsX2d1Y19kdW1w X2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKmh1bmdfcnEsCisJCQkJICAgIHN0cnVjdCBkcm1fcHJpbnRl ciAqbSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZW5naW5lLT5ndC0+dWMuZ3VjOwor CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwl1bnNpZ25lZCBsb25nIGluZGV4OworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBSZXNldCBjYWxsZWQgZHVyaW5nIGRyaXZlciBsb2FkPyBH dUMgbm90IHlldCBpbml0aWFsaXNlZCEgKi8KKwlpZiAodW5saWtlbHkoIWd1Y19zdWJtaXNzaW9u X2luaXRpYWxpemVkKGd1YykpKQorCQlyZXR1cm47CisKKwl4YV9mb3JfZWFjaCgmZ3VjLT5jb250 ZXh0X2xvb2t1cCwgaW5kZXgsIGNlKSB7CisJCWlmICghaW50ZWxfY29udGV4dF9pc19waW5uZWQo Y2UpKQorCQkJY29udGludWU7CisKKwkJaWYgKGludGVsX2VuZ2luZV9pc192aXJ0dWFsKGNlLT5l bmdpbmUpKSB7CisJCQlpZiAoIShjZS0+ZW5naW5lLT5tYXNrICYgZW5naW5lLT5tYXNrKSkKKwkJ CQljb250aW51ZTsKKwkJfSBlbHNlIHsKKwkJCWlmIChjZS0+ZW5naW5lICE9IGVuZ2luZSkKKwkJ CQljb250aW51ZTsKKwkJfQorCisJCXNwaW5fbG9ja19pcnFzYXZlKCZjZS0+Z3VjX2FjdGl2ZS5s b2NrLCBmbGFncyk7CisJCWludGVsX2VuZ2luZV9kdW1wX2FjdGl2ZV9yZXF1ZXN0cygmY2UtPmd1 Y19hY3RpdmUucmVxdWVzdHMsCisJCQkJCQkgIGh1bmdfcnEsIG0pOworCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrLCBmbGFncyk7CisJfQorfQorCit2b2lkIGlu dGVsX2d1Y19zdWJtaXNzaW9uX3ByaW50X2luZm8oc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJ CSAgICAgc3RydWN0IGRybV9wcmludGVyICpwKQoreworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2lu ZSAqc2NoZWRfZW5naW5lID0gZ3VjLT5zY2hlZF9lbmdpbmU7CisJc3RydWN0IHJiX25vZGUgKnJi OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIXNjaGVkX2VuZ2luZSkKKwkJcmV0dXJu OworCisJZHJtX3ByaW50ZihwLCAiR3VDIE51bWJlciBPdXRzdGFuZGluZyBTdWJtaXNzaW9uIEcy SDogJXVcbiIsCisJCSAgIGF0b21pY19yZWFkKCZndWMtPm91dHN0YW5kaW5nX3N1Ym1pc3Npb25f ZzJoKSk7CisJZHJtX3ByaW50ZihwLCAiR3VDIHRhc2tsZXQgY291bnQ6ICV1XG5cbiIsCisJCSAg IGF0b21pY19yZWFkKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQuY291bnQpKTsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwlkcm1fcHJpbnRmKHAsICJS ZXF1ZXN0cyBpbiBHdUMgc3VibWl0IHRhc2tsZXQ6XG4iKTsKKwlmb3IgKHJiID0gcmJfZmlyc3Rf Y2FjaGVkKCZzY2hlZF9lbmdpbmUtPnF1ZXVlKTsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKKwkJ c3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsID0gdG9fcHJpb2xpc3QocmIpOworCQlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycTsKKworCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0KHJxLCBwbCkKKwkJ CWRybV9wcmludGYocCwgImd1Y19pZD0ldSwgc2Vxbm89JWxsdVxuIiwKKwkJCQkgICBycS0+Y29u dGV4dC0+Z3VjX2lkLAorCQkJCSAgIHJxLT5mZW5jZS5zZXFubyk7CisJfQorCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworCWRybV9wcmludGYocCwg IlxuIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBndWNfbG9nX2NvbnRleHRfcHJpb3JpdHko c3RydWN0IGRybV9wcmludGVyICpwLAorCQkJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQoreworCWludCBpOworCisJZHJtX3ByaW50ZihwLCAiXHRcdFByaW9yaXR5OiAlZFxuIiwKKwkJ ICAgY2UtPmd1Y19wcmlvKTsKKwlkcm1fcHJpbnRmKHAsICJcdFx0TnVtYmVyIFJlcXVlc3RzIChs b3dlciBpbmRleCA9PSBoaWdoZXIgcHJpb3JpdHkpXG4iKTsKKwlmb3IgKGkgPSBHVUNfQ0xJRU5U X1BSSU9SSVRZX0tNRF9ISUdIOworCSAgICAgaSA8IEdVQ19DTElFTlRfUFJJT1JJVFlfTlVNOyAr K2kpIHsKKwkJZHJtX3ByaW50ZihwLCAiXHRcdE51bWJlciByZXF1ZXN0cyBpbiBwcmlvcml0eSBi YW5kWyVkXTogJWRcbiIsCisJCQkgICBpLCBjZS0+Z3VjX3ByaW9fY291bnRbaV0pOworCX0KKwlk cm1fcHJpbnRmKHAsICJcbiIpOworfQorCit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3ByaW50 X2NvbnRleHRfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJCSAgICAgc3RydWN0IGRy bV9wcmludGVyICpwKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwl1bnNpZ25lZCBs b25nIGluZGV4OworCisJeGFfZm9yX2VhY2goJmd1Yy0+Y29udGV4dF9sb29rdXAsIGluZGV4LCBj ZSkgeworCQlkcm1fcHJpbnRmKHAsICJHdUMgbHJjIGRlc2NyaXB0b3IgJXU6XG4iLCBjZS0+Z3Vj X2lkKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRIVyBDb250ZXh0IERlc2M6IDB4JTA4eFxuIiwgY2Ut PmxyYy5scmNhKTsKKwkJZHJtX3ByaW50ZihwLCAiXHRcdExSQyBIZWFkOiBJbnRlcm5hbCAldSwg TWVtb3J5ICV1XG4iLAorCQkJICAgY2UtPnJpbmctPmhlYWQsCisJCQkgICBjZS0+bHJjX3JlZ19z dGF0ZVtDVFhfUklOR19IRUFEXSk7CisJCWRybV9wcmludGYocCwgIlx0XHRMUkMgVGFpbDogSW50 ZXJuYWwgJXUsIE1lbW9yeSAldVxuIiwKKwkJCSAgIGNlLT5yaW5nLT50YWlsLAorCQkJICAgY2Ut PmxyY19yZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTF0pOworCQlkcm1fcHJpbnRmKHAsICJcdFx0Q29u dGV4dCBQaW4gQ291bnQ6ICV1XG4iLAorCQkJICAgYXRvbWljX3JlYWQoJmNlLT5waW5fY291bnQp KTsKKwkJZHJtX3ByaW50ZihwLCAiXHRcdEd1QyBJRCBSZWYgQ291bnQ6ICV1XG4iLAorCQkJICAg YXRvbWljX3JlYWQoJmNlLT5ndWNfaWRfcmVmKSk7CisJCWRybV9wcmludGYocCwgIlx0XHRTY2hl ZHVsZSBTdGF0ZTogMHgleCwgMHgleFxuXG4iLAorCQkJICAgY2UtPmd1Y19zdGF0ZS5zY2hlZF9z dGF0ZSwKKwkJCSAgIGF0b21pY19yZWFkKCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spKTsK KworCQlndWNfbG9nX2NvbnRleHRfcHJpb3JpdHkocCwgY2UpOworCX0KK30KKworc3RhdGljIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICoKK2d1Y19jcmVhdGVfdmlydHVhbChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICoqc2libGluZ3MsIHVuc2lnbmVkIGludCBjb3VudCkKK3sKKwlzdHJ1Y3QgZ3VjX3Zp cnR1YWxfZW5naW5lICp2ZTsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWM7CisJdW5zaWduZWQgaW50 IG47CisJaW50IGVycjsKKworCXZlID0ga3phbGxvYyhzaXplb2YoKnZlKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCF2ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlndWMgPSAmc2libGlu Z3NbMF0tPmd0LT51Yy5ndWM7CisKKwl2ZS0+YmFzZS5pOTE1ID0gc2libGluZ3NbMF0tPmk5MTU7 CisJdmUtPmJhc2UuZ3QgPSBzaWJsaW5nc1swXS0+Z3Q7CisJdmUtPmJhc2UudW5jb3JlID0gc2li bGluZ3NbMF0tPnVuY29yZTsKKwl2ZS0+YmFzZS5pZCA9IC0xOworCisJdmUtPmJhc2UudWFiaV9j bGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQ7CisJdmUtPmJhc2UuaW5zdGFuY2UgPSBJ OTE1X0VOR0lORV9DTEFTU19JTlZBTElEX1ZJUlRVQUw7CisJdmUtPmJhc2UudWFiaV9pbnN0YW5j ZSA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfVklSVFVBTDsKKwl2ZS0+YmFzZS5zYXR1cmF0 ZWQgPSBBTExfRU5HSU5FUzsKKworCXNucHJpbnRmKHZlLT5iYXNlLm5hbWUsIHNpemVvZih2ZS0+ YmFzZS5uYW1lKSwgInZpcnR1YWwiKTsKKworCXZlLT5iYXNlLnNjaGVkX2VuZ2luZSA9IGk5MTVf c2NoZWRfZW5naW5lX2dldChndWMtPnNjaGVkX2VuZ2luZSk7CisKKwl2ZS0+YmFzZS5jb3BzID0g JnZpcnR1YWxfZ3VjX2NvbnRleHRfb3BzOworCXZlLT5iYXNlLnJlcXVlc3RfYWxsb2MgPSBndWNf cmVxdWVzdF9hbGxvYzsKKwl2ZS0+YmFzZS5idW1wX3NlcmlhbCA9IHZpcnR1YWxfZ3VjX2J1bXBf c2VyaWFsOworCisJdmUtPmJhc2Uuc3VibWl0X3JlcXVlc3QgPSBndWNfc3VibWl0X3JlcXVlc3Q7 CisKKwl2ZS0+YmFzZS5mbGFncyA9IEk5MTVfRU5HSU5FX0lTX1ZJUlRVQUw7CisKKwlpbnRlbF9j b250ZXh0X2luaXQoJnZlLT5jb250ZXh0LCAmdmUtPmJhc2UpOworCisJZm9yIChuID0gMDsgbiA8 IGNvdW50OyBuKyspIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZyA9IHNpYmxp bmdzW25dOworCisJCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoc2libGluZy0+bWFzaykpOwor CQlpZiAoc2libGluZy0+bWFzayAmIHZlLT5iYXNlLm1hc2spIHsKKwkJCURSTV9ERUJVRygiZHVw bGljYXRlICVzIGVudHJ5IGluIGxvYWQgYmFsYW5jZXJcbiIsCisJCQkJICBzaWJsaW5nLT5uYW1l KTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGVycl9wdXQ7CisJCX0KKworCQl2ZS0+YmFz ZS5tYXNrIHw9IHNpYmxpbmctPm1hc2s7CisKKwkJaWYgKG4gIT0gMCAmJiB2ZS0+YmFzZS5jbGFz cyAhPSBzaWJsaW5nLT5jbGFzcykgeworCQkJRFJNX0RFQlVHKCJpbnZhbGlkIG1peGluZyBvZiBl bmdpbmUgY2xhc3MsIHNpYmxpbmcgJWQsIGFscmVhZHkgJWRcbiIsCisJCQkJICBzaWJsaW5nLT5j bGFzcywgdmUtPmJhc2UuY2xhc3MpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyX3B1 dDsKKwkJfSBlbHNlIGlmIChuID09IDApIHsKKwkJCXZlLT5iYXNlLmNsYXNzID0gc2libGluZy0+ Y2xhc3M7CisJCQl2ZS0+YmFzZS51YWJpX2NsYXNzID0gc2libGluZy0+dWFiaV9jbGFzczsKKwkJ CXNucHJpbnRmKHZlLT5iYXNlLm5hbWUsIHNpemVvZih2ZS0+YmFzZS5uYW1lKSwKKwkJCQkgInYl ZHglZCIsIHZlLT5iYXNlLmNsYXNzLCBjb3VudCk7CisJCQl2ZS0+YmFzZS5jb250ZXh0X3NpemUg PSBzaWJsaW5nLT5jb250ZXh0X3NpemU7CisKKwkJCXZlLT5iYXNlLmFkZF9hY3RpdmVfcmVxdWVz dCA9CisJCQkJc2libGluZy0+YWRkX2FjdGl2ZV9yZXF1ZXN0OworCQkJdmUtPmJhc2UucmVtb3Zl X2FjdGl2ZV9yZXF1ZXN0ID0KKwkJCQlzaWJsaW5nLT5yZW1vdmVfYWN0aXZlX3JlcXVlc3Q7CisJ CQl2ZS0+YmFzZS5lbWl0X2JiX3N0YXJ0ID0gc2libGluZy0+ZW1pdF9iYl9zdGFydDsKKwkJCXZl LT5iYXNlLmVtaXRfZmx1c2ggPSBzaWJsaW5nLT5lbWl0X2ZsdXNoOworCQkJdmUtPmJhc2UuZW1p dF9pbml0X2JyZWFkY3J1bWIgPQorCQkJCXNpYmxpbmctPmVtaXRfaW5pdF9icmVhZGNydW1iOwor CQkJdmUtPmJhc2UuZW1pdF9maW5pX2JyZWFkY3J1bWIgPQorCQkJCXNpYmxpbmctPmVtaXRfZmlu aV9icmVhZGNydW1iOworCQkJdmUtPmJhc2UuZW1pdF9maW5pX2JyZWFkY3J1bWJfZHcgPQorCQkJ CXNpYmxpbmctPmVtaXRfZmluaV9icmVhZGNydW1iX2R3OworCQkJdmUtPmJhc2UuYnJlYWRjcnVt YnMgPQorCQkJCWludGVsX2JyZWFkY3J1bWJzX2dldChzaWJsaW5nLT5icmVhZGNydW1icyk7CisK KwkJCXZlLT5iYXNlLmZsYWdzIHw9IHNpYmxpbmctPmZsYWdzOworCisJCQl2ZS0+YmFzZS5wcm9w cy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPQorCQkJCXNpYmxpbmctPnByb3BzLnRpbWVzbGljZV9k dXJhdGlvbl9tczsKKwkJCXZlLT5iYXNlLnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9CisJCQkJ c2libGluZy0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21zOworCQl9CisJfQorCisJcmV0dXJuICZ2 ZS0+Y29udGV4dDsKKworZXJyX3B1dDoKKwlpbnRlbF9jb250ZXh0X3B1dCgmdmUtPmNvbnRleHQp OworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKKworCitib29sIGludGVsX2d1Y192aXJ0dWFs X2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnZlKQor eworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlpbnRlbF9lbmdpbmVfbWFza190 IHRtcCwgbWFzayA9IHZlLT5tYXNrOworCisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUs IHZlLT5ndCwgbWFzaywgdG1wKQorCQlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+cHJvcHMuaGVhcnRi ZWF0X2ludGVydmFsX21zKSkKKwkJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Np b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgK aW5kZXggM2Y3MDA1MDE4OTM5Li5jN2VmNDRmYTBjMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaApAQCAtMTAsNiArMTAsNyBAQAog CiAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCiAKK3N0cnVjdCBkcm1fcHJpbnRlcjsKIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3M7CiAKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25faW5pdF9lYXJseShz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwpAQCAtMjAsMTEgKzIxLDI0IEBAIHZvaWQgaW50ZWxfZ3Vj X3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogaW50IGludGVsX2d1Y19w cmVlbXB0X3dvcmtfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiB2b2lkIGludGVsX2d1 Y19wcmVlbXB0X3dvcmtfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwogaW50IGludGVs X2d1Y19zdWJtaXNzaW9uX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2 b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3ByaW50X2luZm8oc3RydWN0IGludGVsX2d1YyAqZ3Vj LAorCQkJCSAgICAgc3RydWN0IGRybV9wcmludGVyICpwKTsKK3ZvaWQgaW50ZWxfZ3VjX3N1Ym1p c3Npb25fcHJpbnRfY29udGV4dF9pbmZvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJICAg ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwordm9pZCBpbnRlbF9ndWNfZHVtcF9hY3RpdmVfcmVx dWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgICBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpodW5nX3JxLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pOworCiti b29sIGludGVsX2d1Y192aXJ0dWFsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnZlKTsKKworaW50IGludGVsX2d1Y193YWl0X2Zvcl9wZW5kaW5nX21z ZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAgYXRvbWljX3QgKndhaXRfdmFyLAorCQkJ CSAgIGJvb2wgaW50ZXJydXB0aWJsZSwKKwkJCQkgICBsb25nIHRpbWVvdXQpOwogCiBzdGF0aWMg aW5saW5lIGJvb2wgaW50ZWxfZ3VjX3N1Ym1pc3Npb25faXNfc3VwcG9ydGVkKHN0cnVjdCBpbnRl bF9ndWMgKmd1YykKIHsKLQkvKiBYWFg6IEd1QyBzdWJtaXNzaW9uIGlzIHVuYXZhaWxhYmxlIGZv ciBub3cgKi8KLQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIGd1Yy0+c3VibWlzc2lvbl9zdXBwb3J0 ZWQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9ndWNfc3VibWlzc2lvbl9pc193YW50 ZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3Vj LmMKaW5kZXggNmQ4YjkyMzMyMTRlLi5kYTU3ZDE4ZDlmNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfdWMuYwpAQCAtMzQsOCArMzQsMTQgQEAgc3RhdGljIHZvaWQgdWNfZXhwYW5k X2RlZmF1bHRfb3B0aW9ucyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogCQlyZXR1cm47CiAJfQogCi0J LyogRGVmYXVsdDogZW5hYmxlIEh1QyBhdXRoZW50aWNhdGlvbiBvbmx5ICovCi0JaTkxNS0+cGFy YW1zLmVuYWJsZV9ndWMgPSBFTkFCTEVfR1VDX0xPQURfSFVDOworCS8qIEludGVybWVkaWF0ZSBw bGF0Zm9ybXMgYXJlIEh1QyBhdXRoZW50aWNhdGlvbiBvbmx5ICovCisJaWYgKElTX0RHMShpOTE1 KSB8fCBJU19BTERFUkxBS0VfUyhpOTE1KSkgeworCQlpOTE1LT5wYXJhbXMuZW5hYmxlX2d1YyA9 IEVOQUJMRV9HVUNfTE9BRF9IVUM7CisJCXJldHVybjsKKwl9CisKKwkvKiBEZWZhdWx0OiBlbmFi bGUgSHVDIGF1dGhlbnRpY2F0aW9uIGFuZCBHdUMgc3VibWlzc2lvbiAqLworCWk5MTUtPnBhcmFt cy5lbmFibGVfZ3VjID0gRU5BQkxFX0dVQ19MT0FEX0hVQyB8IEVOQUJMRV9HVUNfU1VCTUlTU0lP TjsKIH0KIAogLyogUmVzZXQgR3VDIHByb3ZpZGluZyB1cyB3aXRoIGZyZXNoIHN0YXRlIGZvciBi b3RoIEd1QyBhbmQgSHVDLgpAQCAtMTIwLDYgKzEyNiwxMSBAQCB2b2lkIGludGVsX3VjX2luaXRf ZWFybHkoc3RydWN0IGludGVsX3VjICp1YykKIAkJdWMtPm9wcyA9ICZ1Y19vcHNfb2ZmOwogfQog Cit2b2lkIGludGVsX3VjX2luaXRfbGF0ZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQoreworCWludGVs X2d1Y19pbml0X2xhdGUoJnVjLT5ndWMpOworfQorCiB2b2lkIGludGVsX3VjX2RyaXZlcl9sYXRl X3JlbGVhc2Uoc3RydWN0IGludGVsX3VjICp1YykKIHsKIH0KQEAgLTIwNywyMSArMjE4LDYgQEAg c3RhdGljIHZvaWQgZ3VjX2hhbmRsZV9tbWlvX21zZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJ c3Bpbl91bmxvY2tfaXJxKCZndWMtPmlycV9sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3Jl c2V0X2ludGVycnVwdHMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQotewotCWd1Yy0+aW50ZXJydXB0 cy5yZXNldChndWMpOwotfQotCi1zdGF0aWMgdm9pZCBndWNfZW5hYmxlX2ludGVycnVwdHMoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQotewotCWd1Yy0+aW50ZXJydXB0cy5lbmFibGUoZ3VjKTsKLX0K LQotc3RhdGljIHZvaWQgZ3VjX2Rpc2FibGVfaW50ZXJydXB0cyhzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCi17Ci0JZ3VjLT5pbnRlcnJ1cHRzLmRpc2FibGUoZ3VjKTsKLX0KLQogc3RhdGljIGludCBn dWNfZW5hYmxlX2NvbW11bmljYXRpb24oc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVj dCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKQEAgLTI0Miw3ICsyMzgsNyBAQCBzdGF0 aWMgaW50IGd1Y19lbmFibGVfY29tbXVuaWNhdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJ Z3VjX2dldF9tbWlvX21zZyhndWMpOwogCWd1Y19oYW5kbGVfbW1pb19tc2coZ3VjKTsKIAotCWd1 Y19lbmFibGVfaW50ZXJydXB0cyhndWMpOworCWludGVsX2d1Y19lbmFibGVfaW50ZXJydXB0cyhn dWMpOwogCiAJLyogY2hlY2sgZm9yIENUIG1lc3NhZ2VzIHJlY2VpdmVkIGJlZm9yZSB3ZSBlbmFi bGVkIGludGVycnVwdHMgKi8KIAlzcGluX2xvY2tfaXJxKCZndC0+aXJxX2xvY2spOwpAQCAtMjY1 LDcgKzI2MSw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kaXNhYmxlX2NvbW11bmljYXRpb24oc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogCSAqLwogCWd1Y19jbGVhcl9tbWlvX21zZyhndWMpOwogCi0JZ3Vj X2Rpc2FibGVfaW50ZXJydXB0cyhndWMpOworCWludGVsX2d1Y19kaXNhYmxlX2ludGVycnVwdHMo Z3VjKTsKIAogCWludGVsX2d1Y19jdF9kaXNhYmxlKCZndWMtPmN0KTsKIApAQCAtMzIzLDkgKzMx OSw2IEBAIHN0YXRpYyBpbnQgX191Y19pbml0KHN0cnVjdCBpbnRlbF91YyAqdWMpCiAJaWYgKGk5 MTVfaW5qZWN0X3Byb2JlX2ZhaWx1cmUodWNfdG9fZ3QodWMpLT5pOTE1KSkKIAkJcmV0dXJuIC1F Tk9NRU07CiAKLQkvKiBYWFg6IEd1QyBzdWJtaXNzaW9uIGlzIHVuYXZhaWxhYmxlIGZvciBub3cg Ki8KLQlHRU1fQlVHX09OKGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24odWMpKTsKLQogCXJl dCA9IGludGVsX2d1Y19pbml0KGd1Yyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKQEAgLTQ2 Myw3ICs0NTYsNyBAQCBzdGF0aWMgaW50IF9fdWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVj KQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX291dDsKIAotCWd1Y19yZXNldF9pbnRlcnJ1cHRzKGd1 Yyk7CisJaW50ZWxfZ3VjX3Jlc2V0X2ludGVycnVwdHMoZ3VjKTsKIAogCS8qIFdhRW5hYmxldUtl cm5lbEhlYWRlclZhbGlkRml4OnNrbCAqLwogCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05v dFNldDpza2wsYnh0LGtibCAqLwpAQCAtNTY1LDIzICs1NTgsNjcgQEAgdm9pZCBpbnRlbF91Y19y ZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF91YyAqdWMpCiB7CiAJc3RydWN0IGludGVsX2d1YyAq Z3VjID0gJnVjLT5ndWM7CiAKLQlpZiAoIWludGVsX2d1Y19pc19yZWFkeShndWMpKQorCXVjLT5y ZXNldF9pbl9wcm9ncmVzcyA9IHRydWU7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIEd1QyBpc24n dCBzdXBwb3J0ZWQgKi8KKwlpZiAoIWludGVsX3VjX3N1cHBvcnRzX2d1Yyh1YykpCiAJCXJldHVy bjsKIAorCS8qIEZpcm13YXJlIGV4cGVjdGVkIHRvIGJlIHJ1bm5pbmcgd2hlbiB0aGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZCAqLworCWlmICghaW50ZWxfZ3VjX2lzX3JlYWR5KGd1YykpCisJCWdvdG8g c2FuaXRpemU7CisKKwlpZiAoaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbih1YykpCisJCWlu dGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0X3ByZXBhcmUoZ3VjKTsKKworc2FuaXRpemU6CiAJX191 Y19zYW5pdGl6ZSh1Yyk7CiB9CiAKK3ZvaWQgaW50ZWxfdWNfcmVzZXQoc3RydWN0IGludGVsX3Vj ICp1YywgYm9vbCBzdGFsbGVkKQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZ1Yy0+Z3Vj OworCisJLyogRmlybXdhcmUgY2FuIG5vdCBiZSBydW5uaW5nIHdoZW4gdGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQgICovCisJaWYgKGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24odWMpKQorCQlp bnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChndWMsIHN0YWxsZWQpOworfQorCit2b2lkIGludGVs X3VjX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfdWMgKnVjKQoreworCXN0cnVjdCBpbnRlbF9n dWMgKmd1YyA9ICZ1Yy0+Z3VjOworCisJdWMtPnJlc2V0X2luX3Byb2dyZXNzID0gZmFsc2U7CisK KwkvKiBGaXJtd2FyZSBleHBlY3RlZCB0byBiZSBydW5uaW5nIHdoZW4gdGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQgKi8KKwlpZiAoaW50ZWxfZ3VjX2lzX2Z3X3J1bm5pbmcoZ3VjKSAmJiBpbnRlbF91 Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSkKKwkJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVzZXRf ZmluaXNoKGd1Yyk7Cit9CisKK3ZvaWQgaW50ZWxfdWNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBp bnRlbF91YyAqdWMpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7CisKKwkv KiBGaXJtd2FyZSBjYW4gbm90IGJlIHJ1bm5pbmcgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCAgKi8KKwlpZiAoaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbih1YykpCisJCWludGVsX2d1 Y19zdWJtaXNzaW9uX2NhbmNlbF9yZXF1ZXN0cyhndWMpOworfQorCiB2b2lkIGludGVsX3VjX3J1 bnRpbWVfc3VzcGVuZChzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogewogCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9ICZ1Yy0+Z3VjOwotCWludCBlcnI7CiAKIAlpZiAoIWludGVsX2d1Y19pc19yZWFkeShn dWMpKQogCQlyZXR1cm47CiAKLQllcnIgPSBpbnRlbF9ndWNfc3VzcGVuZChndWMpOwotCWlmIChl cnIpCi0JCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0byBzdXNwZW5kIEd1QywgZXJyPSVkIiwg ZXJyKTsKKwkvKgorCSAqIFdhaXQgZm9yIGFueSBvdXRzdGFuZGluZyBDVEIgYmVmb3JlIHRlYXJp bmcgZG93biBjb21tdW5pY2F0aW9uIC93IHRoZQorCSAqIEd1Qy4KKwkgKi8KKyNkZWZpbmUgT1VU U1RBTkRJTkdfQ1RCX1RJTUVPVVRfUEVSSU9ECShIWiAvIDUpCisJaW50ZWxfZ3VjX3dhaXRfZm9y X3BlbmRpbmdfbXNnKGd1YywgJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgsCisJCQkJ ICAgICAgIGZhbHNlLCBPVVRTVEFORElOR19DVEJfVElNRU9VVF9QRVJJT0QpOworCUdFTV9XQVJO X09OKGF0b21pY19yZWFkKCZndWMtPm91dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoKSk7CiAKIAln dWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7CiB9CkBAIC01OTAsMTIgKzYyNywxNiBAQCB2 b2lkIGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGludGVsX3VjICp1YykKIHsKIAlzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlpbnQg ZXJyOwogCiAJaWYgKCFpbnRlbF9ndWNfaXNfcmVhZHkoZ3VjKSkKIAkJcmV0dXJuOwogCi0Jd2l0 aF9pbnRlbF9ydW50aW1lX3BtKHVjX3RvX2d0KHVjKS0+dW5jb3JlLT5ycG0sIHdha2VyZWYpCi0J CWludGVsX3VjX3J1bnRpbWVfc3VzcGVuZCh1Yyk7CisJd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZ1 Y190b19ndCh1YyktPmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpIHsKKwkJZXJyID0gaW50ZWxf Z3VjX3N1c3BlbmQoZ3VjKTsKKwkJaWYgKGVycikKKwkJCURSTV9ERUJVR19EUklWRVIoIkZhaWxl ZCB0byBzdXNwZW5kIEd1QywgZXJyPSVkIiwgZXJyKTsKKwl9CiB9CiAKIHN0YXRpYyBpbnQgX191 Y19yZXN1bWUoc3RydWN0IGludGVsX3VjICp1YywgYm9vbCBlbmFibGVfY29tbXVuaWNhdGlvbikK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oCmluZGV4IDljOTU0YzU4OWVkZi4uZTJk YTJiNmU3NmUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91 Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgKQEAgLTMwLDEz ICszMCwxOSBAQCBzdHJ1Y3QgaW50ZWxfdWMgewogCiAJLyogU25hcHNob3Qgb2YgR3VDIGxvZyBm cm9tIGxhc3QgZmFpbGVkIGxvYWQgKi8KIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbG9h ZF9lcnJfbG9nOworCisJYm9vbCByZXNldF9pbl9wcm9ncmVzczsKIH07CiAKIHZvaWQgaW50ZWxf dWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKK3ZvaWQgaW50ZWxfdWNfaW5pdF9s YXRlKHN0cnVjdCBpbnRlbF91YyAqdWMpOwogdm9pZCBpbnRlbF91Y19kcml2ZXJfbGF0ZV9yZWxl YXNlKHN0cnVjdCBpbnRlbF91YyAqdWMpOwogdm9pZCBpbnRlbF91Y19kcml2ZXJfcmVtb3ZlKHN0 cnVjdCBpbnRlbF91YyAqdWMpOwogdm9pZCBpbnRlbF91Y19pbml0X21taW8oc3RydWN0IGludGVs X3VjICp1Yyk7CiB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1 Yyk7Cit2b2lkIGludGVsX3VjX3Jlc2V0KHN0cnVjdCBpbnRlbF91YyAqdWMsIGJvb2wgc3RhbGxl ZCk7Cit2b2lkIGludGVsX3VjX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKK3Zv aWQgaW50ZWxfdWNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF91YyAqdWMpOwogdm9pZCBp bnRlbF91Y19zdXNwZW5kKHN0cnVjdCBpbnRlbF91YyAqdWMpOwogdm9pZCBpbnRlbF91Y19ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGludGVsX3VjICp1Yyk7CiBpbnQgaW50ZWxfdWNfcmVzdW1lKHN0 cnVjdCBpbnRlbF91YyAqdWMpOwpAQCAtODEsNiArODcsMTEgQEAgdWNfc3RhdGVfY2hlY2tlcnMo Z3VjLCBndWNfc3VibWlzc2lvbik7CiAjdW5kZWYgdWNfc3RhdGVfY2hlY2tlcnMKICN1bmRlZiBf X3VjX3N0YXRlX2NoZWNrZXIKIAorc3RhdGljIGlubGluZSBpbnQgaW50ZWxfdWNfd2FpdF9mb3Jf aWRsZShzdHJ1Y3QgaW50ZWxfdWMgKnVjLCBsb25nIHRpbWVvdXQpCit7CisJcmV0dXJuIGludGVs X2d1Y193YWl0X2Zvcl9pZGxlKCZ1Yy0+Z3VjLCB0aW1lb3V0KTsKK30KKwogI2RlZmluZSBpbnRl bF91Y19vcHNfZnVuY3Rpb24oX05BTUUsIF9PUFMsIF9UWVBFLCBfUkVUKSBcCiBzdGF0aWMgaW5s aW5lIF9UWVBFIGludGVsX3VjXyMjX05BTUUoc3RydWN0IGludGVsX3VjICp1YykgXAogeyBcCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNfcGFyYW1zLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNfcGFyYW1zLmMKaW5kZXggNGUyYjA3NzY5 MmNiLi44ZWNkOGI0MmYwNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmc19wYXJhbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNf cGFyYW1zLmMKQEAgLTYsOSArNiwyMCBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogCiAj aW5jbHVkZSAiaTkxNV9kZWJ1Z2ZzX3BhcmFtcy5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0Lmgi CisjaW5jbHVkZSAiZ3QvdWMvaW50ZWxfZ3VjLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNp bmNsdWRlICJpOTE1X3BhcmFtcy5oIgogCisjZGVmaW5lIE1BVENIX0RFQlVHRlNfTk9ERV9OQU1F KF9maWxlLCBfbmFtZSkJKHN0cmNtcCgoX2ZpbGUpLT5mX3BhdGguZGVudHJ5LT5kX25hbWUubmFt ZSwgKF9uYW1lKSkgPT0gMCkKKworI2RlZmluZSBHRVRfSTkxNShpOTE1LCBuYW1lLCBwdHIpCVwK KwlkbyB7CVwKKwkJc3RydWN0IGk5MTVfcGFyYW1zICpwYXJhbXM7CVwKKwkJcGFyYW1zID0gY29u dGFpbmVyX29mKCgodm9pZCAqKSAocHRyKSksIHR5cGVvZigqcGFyYW1zKSwgbmFtZSk7CVwKKwkJ KGk5MTUpID0gY29udGFpbmVyX29mKHBhcmFtcywgdHlwZW9mKCooaTkxNSkpLCBwYXJhbXMpOwlc CisJfSB3aGlsZSgwKQorCiAvKiBpbnQgcGFyYW0gKi8KIHN0YXRpYyBpbnQgaTkxNV9wYXJhbV9p bnRfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CkBAIC0yNCw2ICszNSwx NiBAQCBzdGF0aWMgaW50IGk5MTVfcGFyYW1faW50X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGZpbGUgKmZpbGUpCiAJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfcGFyYW1f aW50X3Nob3csIGlub2RlLT5pX3ByaXZhdGUpOwogfQogCitzdGF0aWMgaW50IG5vdGlmeV9ndWMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAo aW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbigmaTkxNS0+Z3QudWMpKQorCQlyZXQgPSBpbnRl bF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZSgmaTkxNS0+Z3QudWMuZ3VjKTsKKworCXJldHVy biByZXQ7Cit9CisKIHN0YXRpYyBzc2l6ZV90IGk5MTVfcGFyYW1faW50X3dyaXRlKHN0cnVjdCBm aWxlICpmaWxlLAogCQkJCSAgICBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGxlbiwK IAkJCQkgICAgbG9mZl90ICpvZmZwKQpAQCAtODEsOCArMTAyLDEwIEBAIHN0YXRpYyBzc2l6ZV90 IGk5MTVfcGFyYW1fdWludF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCQkgICAgIGNvbnN0 IGNoYXIgX191c2VyICp1YnVmLCBzaXplX3QgbGVuLAogCQkJCSAgICAgbG9mZl90ICpvZmZwKQog eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OwogCXN0cnVjdCBzZXFfZmlsZSAqbSA9 IGZpbGUtPnByaXZhdGVfZGF0YTsKIAl1bnNpZ25lZCBpbnQgKnZhbHVlID0gbS0+cHJpdmF0ZTsK Kwl1bnNpZ25lZCBpbnQgb2xkID0gKnZhbHVlOwogCWludCByZXQ7CiAKIAlyZXQgPSBrc3RydG91 aW50X2Zyb21fdXNlcih1YnVmLCBsZW4sIDAsIHZhbHVlKTsKQEAgLTk1LDYgKzExOCwxNCBAQCBz dGF0aWMgc3NpemVfdCBpOTE1X3BhcmFtX3VpbnRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJ CQkqdmFsdWUgPSBiOwogCX0KIAorCWlmICghcmV0ICYmIE1BVENIX0RFQlVHRlNfTk9ERV9OQU1F KGZpbGUsICJyZXNldCIpKSB7CisJCUdFVF9JOTE1KGk5MTUsIHJlc2V0LCB2YWx1ZSk7CisKKwkJ cmV0ID0gbm90aWZ5X2d1YyhpOTE1KTsKKwkJaWYgKHJldCkKKwkJCSp2YWx1ZSA9IG9sZDsKKwl9 CisKIAlyZXR1cm4gcmV0ID86IGxlbjsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2 aWN0LmMKaW5kZXggNGQyZDU5YTk5NDJiLi4yYjczZGRiMTFjNjYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXZpY3QuYwpAQCAtMjcsNiArMjcsNyBAQAogICovCiAKICNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fY29udGV4dC5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAjaW5jbHVk ZSAiZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCIKIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCBhMmM1OGI1NGE1OTIuLjBmMDhiY2Zi ZTk2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC0xNDI5LDIwICsx NDI5LDM3IEBAIGNhcHR1cmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK IHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NhcHR1cmVfdm1hICpjYXB0dXJlID0gTlVMTDsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NvcmVkdW1wICplZTsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEg PSBOVUxMOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAllZSA9IGludGVsX2VuZ2luZV9jb3Jl ZHVtcF9hbGxvYyhlbmdpbmUsIEdGUF9LRVJORUwpOwogCWlmICghZWUpCiAJCXJldHVybiBOVUxM OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFn cyk7Ci0JcnEgPSBpbnRlbF9lbmdpbmVfZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOworCWNl ID0gaW50ZWxfZW5naW5lX2dldF9odW5nX2NvbnRleHQoZW5naW5lKTsKKwlpZiAoY2UpIHsKKwkJ aW50ZWxfZW5naW5lX2NsZWFyX2h1bmdfY29udGV4dChlbmdpbmUpOworCQlycSA9IGludGVsX2Nv bnRleHRfZmluZF9hY3RpdmVfcmVxdWVzdChjZSk7CisJCWlmICghcnEgfHwgIWk5MTVfcmVxdWVz dF9zdGFydGVkKHJxKSkKKwkJCWdvdG8gbm9fcmVxdWVzdF9jYXB0dXJlOworCX0gZWxzZSB7CisJ CS8qCisJCSAqIEdldHRpbmcgaGVyZSB3aXRoIEd1QyBlbmFibGVkIG1lYW5zIGl0IGlzIGEgZm9y Y2VkIGVycm9yIGNhcHR1cmUKKwkJICogd2l0aCBubyBhY3R1YWwgaGFuZy4gU28sIG5vIG5lZWQg dG8gYXR0ZW1wdCB0aGUgZXhlY2xpc3Qgc2VhcmNoLgorCQkgKi8KKwkJaWYgKCFpbnRlbF91Y191 c2VzX2d1Y19zdWJtaXNzaW9uKCZlbmdpbmUtPmd0LT51YykpIHsKKwkJCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworCQkJcnEgPSBpbnRlbF9l bmdpbmVfZXhlY2xpc3RfZmluZF9odW5nX3JlcXVlc3QoZW5naW5lKTsKKwkJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLAorCQkJCQkgICAgICAgZmxh Z3MpOworCQl9CisJfQogCWlmIChycSkKIAkJY2FwdHVyZSA9IGludGVsX2VuZ2luZV9jb3JlZHVt cF9hZGRfcmVxdWVzdChlZSwgcnEsCiAJCQkJCQkJICAgIEFUT01JQ19NQVlGQUlMKTsKLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwog CWlmICghY2FwdHVyZSkgeworbm9fcmVxdWVzdF9jYXB0dXJlOgogCQlrZnJlZShlZSk7CiAJCXJl dHVybiBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDk0M2ZlNDg1YzY2Mi4u MzU4NGU0ZDAzZGMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTQxNDIsNiArNDE0Miw3 IEBAIGVudW0gewogCUZBVUxUX0FORF9DT05USU5VRSAvKiBVbnN1cHBvcnRlZCAqLwogfTsKIAor I2RlZmluZSBDVFhfR1RUX0FERFJFU1NfTUFTSyBHRU5NQVNLKDMxLCAxMikKICNkZWZpbmUgR0VO OF9DVFhfVkFMSUQgKDEgPDwgMCkKICNkZWZpbmUgR0VOOF9DVFhfRk9SQ0VfUERfUkVTVE9SRSAo MSA8PCAxKQogI2RlZmluZSBHRU44X0NUWF9GT1JDRV9SRVNUT1JFICgxIDw8IDIpCkBAIC0xMjMw OCw2ICsxMjMwOSw3IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewogCiAvKiBNT0NTIChNZW1vcnkg T2JqZWN0IENvbnRyb2wgU3RhdGUpIHJlZ2lzdGVycyAqLwogI2RlZmluZSBHRU45X0xOQ0ZDTU9D UyhpKQlfTU1JTygweGIwMjAgKyAoaSkgKiA0KQkvKiBMMyBDYWNoZSBDb250cm9sICovCisjZGVm aW5lIEdFTjlfTE5DRkNNT0NTX1JFR19DT1VOVAkzMgogCiAjZGVmaW5lIF9fR0VOOV9SQ1MwX01P Q1MwCTB4YzgwMAogI2RlZmluZSBHRU45X0dGWF9NT0NTKGkpCV9NTUlPKF9fR0VOOV9SQ1MwX01P Q1MwICsgKGkpICogNCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKaW5kZXggMDllYmVh OWEwMDkwLi4zMjljNjE1OTVmMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCkBA IC0xMTQsNiArMTE0LDkgQEAgc3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlKQogewogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gdG9fcmVxdWVz dChmZW5jZSk7CiAKKwlHRU1fQlVHX09OKHJxLT5ndWNfcHJpbyAhPSBHVUNfUFJJT19JTklUICYm CisJCSAgIHJxLT5ndWNfcHJpbyAhPSBHVUNfUFJJT19GSU5JKTsKKwogCS8qCiAJICogVGhlIHJl cXVlc3QgaXMgcHV0IG9udG8gYSBSQ1UgZnJlZWxpc3QgKGkuZS4gdGhlIGFkZHJlc3MKIAkgKiBp cyBpbW1lZGlhdGVseSByZXVzZWQpLCBtYXJrIHRoZSBmZW5jZXMgYXMgYmVpbmcgZnJlZWQgbm93 LgpAQCAtMTI1LDM5ICsxMjgsMTcgQEAgc3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogCWk5MTVfc3dfZmVuY2VfZmluaSgmcnEtPnNlbWFwaG9y ZSk7CiAKIAkvKgotCSAqIEtlZXAgb25lIHJlcXVlc3Qgb24gZWFjaCBlbmdpbmUgZm9yIHJlc2Vy dmVkIHVzZSB1bmRlciBtZW1wcmVzc3VyZQotCSAqCi0JICogV2UgZG8gbm90IGhvbGQgYSByZWZl cmVuY2UgdG8gdGhlIGVuZ2luZSBoZXJlIGFuZCBzbyBoYXZlIHRvIGJlCi0JICogdmVyeSBjYXJl ZnVsIGluIHdoYXQgcnEtPmVuZ2luZSB3ZSBwb2tlLiBUaGUgdmlydHVhbCBlbmdpbmUgaXMKLQkg KiByZWZlcmVuY2VkIHZpYSB0aGUgcnEtPmNvbnRleHQgYW5kIHdlIHJlbGVhc2VkIHRoYXQgcmVm IGR1cmluZwotCSAqIGk5MTVfcmVxdWVzdF9yZXRpcmUoKSwgZXJnbyB3ZSBtdXN0IG5vdCBkZXJl ZmVyZW5jZSBhIHZpcnR1YWwKLQkgKiBlbmdpbmUgaGVyZS4gTm90IHRoYXQgd2Ugd291bGQgd2Fu dCB0bywgYXMgdGhlIG9ubHkgY29uc3VtZXIgb2YKLQkgKiB0aGUgcmVzZXJ2ZWQgZW5naW5lLT5y ZXF1ZXN0X3Bvb2wgaXMgdGhlIHBvd2VyIG1hbmFnZW1lbnQgcGFya2luZywKLQkgKiB3aGljaCBt dXN0LW5vdC1mYWlsLCBhbmQgdGhhdCBpcyBvbmx5IHJ1biBvbiB0aGUgcGh5c2ljYWwgZW5naW5l cy4KLQkgKgotCSAqIFNpbmNlIHRoZSByZXF1ZXN0IG11c3QgaGF2ZSBiZWVuIGV4ZWN1dGVkIHRv IGJlIGhhdmUgY29tcGxldGVkLAotCSAqIHdlIGtub3cgdGhhdCBpdCB3aWxsIGhhdmUgYmVlbiBw cm9jZXNzZWQgYnkgdGhlIEhXIGFuZCB3aWxsCi0JICogbm90IGJlIHVuc3VibWl0dGVkIGFnYWlu LCBzbyBycS0+ZW5naW5lIGFuZCBycS0+ZXhlY3V0aW9uX21hc2sKLQkgKiBhdCB0aGlzIHBvaW50 IGlzIHN0YWJsZS4gcnEtPmV4ZWN1dGlvbl9tYXNrIHdpbGwgYmUgYSBzaW5nbGUKLQkgKiBiaXQg aWYgdGhlIGxhc3QgYW5kIF9vbmx5XyBlbmdpbmUgaXQgY291bGQgZXhlY3V0aW9uIG9uIHdhcyBh Ci0JICogcGh5c2ljYWwgZW5naW5lLCBpZiBpdCdzIG11bHRpcGxlIGJpdHMgdGhlbiBpdCBzdGFy dGVkIG9uIGFuZAotCSAqIGNvdWxkIHN0aWxsIGJlIG9uIGEgdmlydHVhbCBlbmdpbmUuIFRodXMg aWYgdGhlIG1hc2sgaXMgbm90IGEKLQkgKiBwb3dlci1vZi10d28gd2UgYXNzdW1lIHRoYXQgcnEt PmVuZ2luZSBtYXkgc3RpbGwgYmUgYSB2aXJ0dWFsCi0JICogZW5naW5lIGFuZCBzbyBhIGRhbmds aW5nIGludmFsaWQgcG9pbnRlciB0aGF0IHdlIGNhbm5vdCBkZXJlZmVyZW5jZQotCSAqCi0JICog Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmbG93IG9mIGEgYm9uZGVkIHJlcXVlc3QgdGhyb3Vn aCBhIHZpcnR1YWwKLQkgKiBlbmdpbmUuIFRoZSByZXF1ZXN0IGlzIGNyZWF0ZWQgd2l0aCBhIHdp ZGUgZW5naW5lIG1hc2sgKGFsbCBlbmdpbmVzCi0JICogdGhhdCB3ZSBtaWdodCBleGVjdXRlIG9u KS4gT24gcHJvY2Vzc2luZyB0aGUgYm9uZCwgdGhlIHJlcXVlc3QgbWFzawotCSAqIGlzIHJlZHVj ZWQgdG8gb25lIG9yIG1vcmUgZW5naW5lcy4gSWYgdGhlIHJlcXVlc3QgaXMgc3Vic2VxdWVudGx5 Ci0JICogYm91bmQgdG8gYSBzaW5nbGUgZW5naW5lLCBpdCB3aWxsIHRoZW4gYmUgY29uc3RyYWlu ZWQgdG8gb25seQotCSAqIGV4ZWN1dGUgb24gdGhhdCBlbmdpbmUgYW5kIG5ldmVyIHJldHVybmVk IHRvIHRoZSB2aXJ0dWFsIGVuZ2luZQotCSAqIGFmdGVyIHRpbWVzbGljaW5nIGF3YXksIHNlZSBf X3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKCkuIFRodXMgd2UKLQkgKiBrbm93IHRoYXQgaWYg dGhlIHJxLT5leGVjdXRpb25fbWFzayBpcyBhIHNpbmdsZSBiaXQsIHJxLT5lbmdpbmUKLQkgKiBj YW4gYmUgYSBwaHlzaWNhbCBlbmdpbmUgd2l0aCB0aGUgZXhhY3QgY29ycmVzcG9uZGluZyBtYXNr LgorCSAqIEtlZXAgb25lIHJlcXVlc3Qgb24gZWFjaCBlbmdpbmUgZm9yIHJlc2VydmVkIHVzZSB1 bmRlciBtZW1wcmVzc3VyZSwKKwkgKiBkbyBub3QgdXNlIHdpdGggdmlydHVhbCBlbmdpbmVzIGFz IHRoaXMgcmVhbGx5IGlzIG9ubHkgbmVlZGVkIGZvcgorCSAqIGtlcm5lbCBjb250ZXh0cy4KIAkg Ki8KLQlpZiAoaXNfcG93ZXJfb2ZfMihycS0+ZXhlY3V0aW9uX21hc2spICYmCi0JICAgICFjbXB4 Y2hnKCZycS0+ZW5naW5lLT5yZXF1ZXN0X3Bvb2wsIE5VTEwsIHJxKSkKKwlpZiAoIWludGVsX2Vu Z2luZV9pc192aXJ0dWFsKHJxLT5lbmdpbmUpICYmCisJICAgICFjbXB4Y2hnKCZycS0+ZW5naW5l LT5yZXF1ZXN0X3Bvb2wsIE5VTEwsIHJxKSkgeworCQlpbnRlbF9jb250ZXh0X3B1dChycS0+Y29u dGV4dCk7CiAJCXJldHVybjsKKwl9CisKKwlpbnRlbF9jb250ZXh0X3B1dChycS0+Y29udGV4dCk7 CiAKIAlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFsLnNsYWJfcmVxdWVzdHMsIHJxKTsKIH0KQEAgLTIw NCw3ICsxODUsNyBAQCBzdGF0aWMgYm9vbCBpcnFfd29ya19pbW0oc3RydWN0IGlycV93b3JrICp3 cmspCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBfX25vdGlmeV9leGVjdXRlX2Ni X2ltbShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3ZvaWQgaTkxNV9yZXF1ZXN0X25vdGlmeV9l eGVjdXRlX2NiX2ltbShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlfX25vdGlmeV9leGVj dXRlX2NiKHJxLCBpcnFfd29ya19pbW0pOwogfQpAQCAtMjc4LDM3ICsyNTksNiBAQCBpOTE1X3Jl cXVlc3RfYWN0aXZlX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAlyZXR1cm4gcmV0 OwogfQogCi0KLXN0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKLXsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsICpsb2NrZWQ7Ci0K LQkvKgotCSAqIFZpcnR1YWwgZW5naW5lcyBjb21wbGljYXRlIGFjcXVpcmluZyB0aGUgZW5naW5l IHRpbWVsaW5lIGxvY2ssCi0JICogYXMgdGhlaXIgcnEtPmVuZ2luZSBwb2ludGVyIGlzIG5vdCBz dGFibGUgdW50aWwgdW5kZXIgdGhhdAotCSAqIGVuZ2luZSBsb2NrLiBUaGUgc2ltcGxlIHBsb3kg d2UgdXNlIGlzIHRvIHRha2UgdGhlIGxvY2sgdGhlbgotCSAqIGNoZWNrIHRoYXQgdGhlIHJxIHN0 aWxsIGJlbG9uZ3MgdG8gdGhlIG5ld2x5IGxvY2tlZCBlbmdpbmUuCi0JICovCi0JbG9ja2VkID0g UkVBRF9PTkNFKHJxLT5lbmdpbmUpOwotCXNwaW5fbG9ja19pcnEoJmxvY2tlZC0+c2NoZWRfZW5n aW5lLT5sb2NrKTsKLQl3aGlsZSAodW5saWtlbHkobG9ja2VkICE9IChlbmdpbmUgPSBSRUFEX09O Q0UocnEtPmVuZ2luZSkpKSkgewotCQlzcGluX3VubG9jaygmbG9ja2VkLT5zY2hlZF9lbmdpbmUt PmxvY2spOwotCQlzcGluX2xvY2soJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKLQkJbG9j a2VkID0gZW5naW5lOwotCX0KLQlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7Ci0KLQlj bGVhcl9iaXQoSTkxNV9GRU5DRV9GTEFHX1BRVUVVRSwgJnJxLT5mZW5jZS5mbGFncyk7Ci0JY2xl YXJfYml0KEk5MTVfRkVOQ0VfRkxBR19IT0xELCAmcnEtPmZlbmNlLmZsYWdzKTsKLQotCS8qIFBy ZXZlbnQgZnVydGhlciBfX2F3YWl0X2V4ZWN1dGlvbigpIHJlZ2lzdGVyaW5nIGEgY2IsIHRoZW4g Zmx1c2ggKi8KLQlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19BQ1RJVkUsICZycS0+ZmVuY2UuZmxh Z3MpOwotCi0Jc3Bpbl91bmxvY2tfaXJxKCZsb2NrZWQtPnNjaGVkX2VuZ2luZS0+bG9jayk7Ci0K LQlfX25vdGlmeV9leGVjdXRlX2NiX2ltbShycSk7Ci19Ci0KIHN0YXRpYyB2b2lkIF9fcnFfaW5p dF93YXRjaGRvZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlycS0+d2F0Y2hkb2cudGlt ZXIuZnVuY3Rpb24gPSBOVUxMOwpAQCAtNDA1LDggKzM1NSw3IEBAIGJvb2wgaTkxNV9yZXF1ZXN0 X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkgKiBhZnRlciByZW1vdmluZyB0aGUg YnJlYWRjcnVtYiBhbmQgc2lnbmFsaW5nIGl0LCBzbyB0aGF0IHdlIGRvIG5vdAogCSAqIGluYWR2 ZXJ0ZW50bHkgYXR0YWNoIHRoZSBicmVhZGNydW1iIHRvIGEgY29tcGxldGVkIHJlcXVlc3QuCiAJ ICovCi0JaWYgKCFsaXN0X2VtcHR5KCZycS0+c2NoZWQubGluaykpCi0JCXJlbW92ZV9mcm9tX2Vu Z2luZShycSk7CisJcnEtPmVuZ2luZS0+cmVtb3ZlX2FjdGl2ZV9yZXF1ZXN0KHJxKTsKIAlHRU1f QlVHX09OKCFsbGlzdF9lbXB0eSgmcnEtPmV4ZWN1dGVfY2IpKTsKIAogCV9fbGlzdF9kZWxfZW50 cnkoJnJxLT5saW5rKTsgLyogcG9pc29uIG5laXRoZXIgcHJldi9uZXh0IChSQ1Ugd2Fsa3MpICov CkBAIC00MzEsNiArMzgwLDcgQEAgdm9pZCBpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8oc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCiAKIAlkbyB7CiAJCXRtcCA9IGxpc3RfZmlyc3RfZW50cnkoJnRs LT5yZXF1ZXN0cywgdHlwZW9mKCp0bXApLCBsaW5rKTsKKwkJR0VNX0JVR19PTighaTkxNV9yZXF1 ZXN0X2NvbXBsZXRlZCh0bXApKTsKIAl9IHdoaWxlIChpOTE1X3JlcXVlc3RfcmV0aXJlKHRtcCkg JiYgdG1wICE9IHJxKTsKIH0KIApAQCAtNTM2LDcgKzQ4Niw3IEBAIF9fYXdhaXRfZXhlY3V0aW9u KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCWlmIChsbGlzdF9hZGQoJmNiLT53b3JrLm5vZGUu bGxpc3QsICZzaWduYWwtPmV4ZWN1dGVfY2IpKSB7CiAJCWlmIChpOTE1X3JlcXVlc3RfaXNfYWN0 aXZlKHNpZ25hbCkgfHwKIAkJICAgIF9fcmVxdWVzdF9pbl9mbGlnaHQoc2lnbmFsKSkKLQkJCV9f bm90aWZ5X2V4ZWN1dGVfY2JfaW1tKHNpZ25hbCk7CisJCQlpOTE1X3JlcXVlc3Rfbm90aWZ5X2V4 ZWN1dGVfY2JfaW1tKHNpZ25hbCk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC02NjcsMTEgKzYxNywx NSBAQCBib29sIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0KQogCQkJCSAgICAgcmVxdWVzdC0+cmluZy0+dmFkZHIgKyByZXF1ZXN0LT5wb3N0Zml4KTsK IAogCXRyYWNlX2k5MTVfcmVxdWVzdF9leGVjdXRlKHJlcXVlc3QpOwotCWVuZ2luZS0+c2VyaWFs Kys7CisJaWYgKGVuZ2luZS0+YnVtcF9zZXJpYWwpCisJCWVuZ2luZS0+YnVtcF9zZXJpYWwoZW5n aW5lKTsKKwllbHNlCisJCWVuZ2luZS0+c2VyaWFsKys7CisKIAlyZXN1bHQgPSB0cnVlOwogCiAJ R0VNX0JVR19PTih0ZXN0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcmVxdWVzdC0+ZmVu Y2UuZmxhZ3MpKTsKLQlsaXN0X21vdmVfdGFpbCgmcmVxdWVzdC0+c2NoZWQubGluaywgJmVuZ2lu ZS0+c2NoZWRfZW5naW5lLT5yZXF1ZXN0cyk7CisJZW5naW5lLT5hZGRfYWN0aXZlX3JlcXVlc3Qo cmVxdWVzdCk7CiBhY3RpdmU6CiAJY2xlYXJfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUsICZy ZXF1ZXN0LT5mZW5jZS5mbGFncyk7CiAJc2V0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAm cmVxdWVzdC0+ZmVuY2UuZmxhZ3MpOwpAQCAtNzU5LDE4ICs3MTMsNiBAQCB2b2lkIGk5MTVfcmVx dWVzdF91bnN1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CiB9CiAKLXN0 YXRpYyB2b2lkIF9fY2FuY2VsX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gTlVMTDsKLQotCWk5MTVfcmVxdWVzdF9h Y3RpdmVfZW5naW5lKHJxLCAmZW5naW5lKTsKLQotCWlmIChlbmdpbmUgJiYgaW50ZWxfZW5naW5l X3B1bHNlKGVuZ2luZSkpCi0JCWludGVsX2d0X2hhbmRsZV9lcnJvcihlbmdpbmUtPmd0LCBlbmdp bmUtPm1hc2ssIDAsCi0JCQkJICAgICAgInJlcXVlc3QgY2FuY2VsbGF0aW9uIGJ5ICVzIiwKLQkJ CQkgICAgICBjdXJyZW50LT5jb21tKTsKLX0KLQogdm9pZCBpOTE1X3JlcXVlc3RfY2FuY2VsKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgZXJyb3IpCiB7CiAJaWYgKCFpOTE1X3JlcXVlc3Rf c2V0X2Vycm9yX29uY2UocnEsIGVycm9yKSkKQEAgLTc3OCw3ICs3MjAsNyBAQCB2b2lkIGk5MTVf cmVxdWVzdF9jYW5jZWwoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBlcnJvcikKIAogCXNl dF9iaXQoSTkxNV9GRU5DRV9GTEFHX1NFTlRJTkVMLCAmcnEtPmZlbmNlLmZsYWdzKTsKIAotCV9f Y2FuY2VsX3JlcXVlc3QocnEpOworCWludGVsX2NvbnRleHRfY2FuY2VsX3JlcXVlc3QocnEtPmNv bnRleHQsIHJxKTsKIH0KIAogc3RhdGljIGludCBfX2k5MTVfc3dfZmVuY2VfY2FsbApAQCAtOTUw LDcgKzg5MiwxOSBAQCBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQg KmNlLCBnZnBfdCBnZnApCiAJCX0KIAl9CiAKLQlycS0+Y29udGV4dCA9IGNlOworCS8qCisJICog SG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZWxfY29udGV4dCBvdmVyIGxpZmUgb2YgYW4gaTkx NV9yZXF1ZXN0LgorCSAqIFdpdGhvdXQgdGhpcyBhbiBpOTE1X3JlcXVlc3QgY2FuIGV4aXN0IGFm dGVyIHRoZSBjb250ZXh0IGhhcyBiZWVuCisJICogZGVzdHJveWVkIChlLmcuIHJlcXVlc3QgcmV0 aXJlZCwgY29udGV4dCBjbG9zZWQsIGJ1dCB1c2VyIHNwYWNlIGhvbGRzCisJICogYSByZWZlcmVu Y2UgdG8gdGhlIHJlcXVlc3QgZnJvbSBhbiBvdXQgZmVuY2UpLiBJbiB0aGUgY2FzZSBvZiBHdUMK KwkgKiBzdWJtaXNzaW9uICsgdmlydHVhbCBlbmdpbmUsIHRoZSBlbmdpbmUgdGhhdCB0aGUgcmVx dWVzdCByZWZlcmVuY2VzCisJICogaXMgYWxzbyBkZXN0cm95ZWQgd2hpY2ggY2FuIHRyaWdnZXIg YmFkIHBvaW50ZXIgZHJlZiBpbiBmZW5jZSBvcHMKKwkgKiAoZS5nLiBpOTE1X2ZlbmNlX2dldF9k cml2ZXJfbmFtZSkuIFdlIGNvdWxkIGxpa2VseSBjaGFuZ2UgdGhlc2UKKwkgKiBmdW5jdGlvbnMg dG8gYXZvaWQgdG91Y2hpbmcgdGhlIGVuZ2luZSBidXQgbGV0J3MganVzdCBiZSBzYWZlIGFuZAor CSAqIGhvbGQgdGhlIGludGVsX2NvbnRleHQgcmVmZXJlbmNlLiBJbiBleGVjbGlzdCBtb2RlIHRo ZSByZXF1ZXN0IGFsd2F5cworCSAqIGV2ZW50dWFsbHkgcG9pbnRzIHRvIGEgcGh5c2ljYWwgZW5n aW5lIHNvIHRoaXMgaXNuJ3QgYW4gaXNzdWUuCisJICovCisJcnEtPmNvbnRleHQgPSBpbnRlbF9j b250ZXh0X2dldChjZSk7CiAJcnEtPmVuZ2luZSA9IGNlLT5lbmdpbmU7CiAJcnEtPnJpbmcgPSBj ZS0+cmluZzsKIAlycS0+ZXhlY3V0aW9uX21hc2sgPSBjZS0+ZW5naW5lLT5tYXNrOwpAQCAtOTcz LDYgKzkyNyw4IEBAIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsIGdmcF90IGdmcCkKIAogCXJxLT5yY3VzdGF0ZSA9IGdldF9zdGF0ZV9zeW5jaHJvbml6ZV9y Y3UoKTsgLyogYWN0cyBhcyBzbXBfbWIoKSAqLwogCisJcnEtPmd1Y19wcmlvID0gR1VDX1BSSU9f SU5JVDsKKwogCS8qIFdlIGJ1bXAgdGhlIHJlZiBmb3IgdGhlIGZlbmNlIGNoYWluICovCiAJaTkx NV9zd19mZW5jZV9yZWluaXQoJmk5MTVfcmVxdWVzdF9nZXQocnEpLT5zdWJtaXQpOwogCWk5MTVf c3dfZmVuY2VfcmVpbml0KCZpOTE1X3JlcXVlc3RfZ2V0KHJxKS0+c2VtYXBob3JlKTsKQEAgLTEw MjcsNiArOTgzLDcgQEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwgZ2ZwX3QgZ2ZwKQogCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnJxLT5zY2hlZC53YWl0 ZXJzX2xpc3QpKTsKIAogZXJyX2ZyZWU6CisJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCWttZW1f Y2FjaGVfZnJlZShnbG9iYWwuc2xhYl9yZXF1ZXN0cywgcnEpOwogZXJyX3VucmVzZXJ2ZToKIAlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKQEAgLTEzNzksNiArMTMzNiw5IEBAIGk5MTVfcmVxdWVz dF9hd2FpdF9leHRlcm5hbChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5j ZSAqZmVuY2UpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIGludAoraTkxNV9yZXF1ZXN0X2F3 YWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmZyb20pOworCiBpbnQKIGk5MTVfcmVxdWVzdF9hd2FpdF9leGVjdXRpb24oc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCiAJCQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQpAQCAtMTQ2Miw3 ICsxNDIyLDggQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVz dCAqdG8sIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20pCiAJCQlyZXR1cm4gcmV0OwogCX0KIAot CWlmIChpc19wb3dlcl9vZl8yKHRvLT5leGVjdXRpb25fbWFzayB8IFJFQURfT05DRShmcm9tLT5l eGVjdXRpb25fbWFzaykpKQorCWlmICghaW50ZWxfZW5naW5lX3VzZXNfZ3VjKHRvLT5lbmdpbmUp ICYmCisJICAgIGlzX3Bvd2VyX29mXzIodG8tPmV4ZWN1dGlvbl9tYXNrIHwgUkVBRF9PTkNFKGZy b20tPmV4ZWN1dGlvbl9tYXNrKSkpCiAJCXJldCA9IGF3YWl0X3JlcXVlc3Rfc3VibWl0KHRvLCBm cm9tKTsKIAllbHNlCiAJCXJldCA9IGVtaXRfc2VtYXBob3JlX3dhaXQodG8sIGZyb20sIEk5MTVf RkVOQ0VfR0ZQKTsKQEAgLTE2MjEsNiArMTU4Miw4IEBAIF9faTkxNV9yZXF1ZXN0X2FkZF90b190 aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlwcmV2ID0gdG9fcmVxdWVzdChfX2k5 MTVfYWN0aXZlX2ZlbmNlX3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKIAkJCQkJCSAgJnJx LT5mZW5jZSkpOwogCWlmIChwcmV2ICYmICFfX2k5MTVfcmVxdWVzdF9pc19jb21wbGV0ZShwcmV2 KSkgeworCQlib29sIHVzZXNfZ3VjID0gaW50ZWxfZW5naW5lX3VzZXNfZ3VjKHJxLT5lbmdpbmUp OworCiAJCS8qCiAJCSAqIFRoZSByZXF1ZXN0cyBhcmUgc3VwcG9zZWQgdG8gYmUga2VwdCBpbiBv cmRlci4gSG93ZXZlciwKIAkJICogd2UgbmVlZCB0byBiZSB3YXJ5IGluIGNhc2UgdGhlIHRpbWVs aW5lLT5sYXN0X3JlcXVlc3QKQEAgLTE2MzEsNyArMTU5NCw4IEBAIF9faTkxNV9yZXF1ZXN0X2Fk ZF90b190aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkJCSAgIGk5MTVfc2Vxbm9f cGFzc2VkKHByZXYtPmZlbmNlLnNlcW5vLAogCQkJCQkgICAgIHJxLT5mZW5jZS5zZXFubykpOwog Ci0JCWlmIChpc19wb3dlcl9vZl8yKFJFQURfT05DRShwcmV2LT5lbmdpbmUpLT5tYXNrIHwgcnEt PmVuZ2luZS0+bWFzaykpCisJCWlmICgoIXVzZXNfZ3VjICYmIGlzX3Bvd2VyX29mXzIoUkVBRF9P TkNFKHByZXYtPmVuZ2luZSktPm1hc2sgfCBycS0+ZW5naW5lLT5tYXNrKSkgfHwKKwkJICAgICh1 c2VzX2d1YyAmJiBwcmV2LT5jb250ZXh0ID09IHJxLT5jb250ZXh0KSkKIAkJCWk5MTVfc3dfZmVu Y2VfYXdhaXRfc3dfZmVuY2UoJnJxLT5zdWJtaXQsCiAJCQkJCQkgICAgICZwcmV2LT5zdWJtaXQs CiAJCQkJCQkgICAgICZycS0+c3VibWl0cSk7CkBAIC0yMDcyLDYgKzIwMzYsNDcgQEAgdm9pZCBp OTE1X3JlcXVlc3Rfc2hvdyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCSAgIG5hbWUpOwogfQog CitzdGF0aWMgYm9vbCBlbmdpbmVfbWF0Y2hfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXUzMiByaW5nID0gRU5HSU5FX1JF QUQoZW5naW5lLCBSSU5HX1NUQVJUKTsKKworCXJldHVybiByaW5nID09IGk5MTVfZ2d0dF9vZmZz ZXQocnEtPnJpbmctPnZtYSk7Cit9CisKK3N0YXRpYyBib29sIG1hdGNoX3Jpbmcoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWJv b2wgZm91bmQ7CisJaW50IGk7CisKKwlpZiAoIWludGVsX2VuZ2luZV9pc192aXJ0dWFsKHJxLT5l bmdpbmUpKQorCQlyZXR1cm4gZW5naW5lX21hdGNoX3JpbmcocnEtPmVuZ2luZSwgcnEpOworCisJ Zm91bmQgPSBmYWxzZTsKKwlpID0gMDsKKwl3aGlsZSAoKGVuZ2luZSA9IGludGVsX2VuZ2luZV9n ZXRfc2libGluZyhycS0+ZW5naW5lLCBpKyspKSkgeworCQlmb3VuZCA9IGVuZ2luZV9tYXRjaF9y aW5nKGVuZ2luZSwgcnEpOworCQlpZiAoZm91bmQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g Zm91bmQ7Cit9CisKK2VudW0gaTkxNV9yZXF1ZXN0X3N0YXRlIGk5MTVfdGVzdF9yZXF1ZXN0X3N0 YXRlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCWlmIChpOTE1X3JlcXVlc3RfY29tcGxl dGVkKHJxKSkKKwkJcmV0dXJuIEk5MTVfUkVRVUVTVF9DT01QTEVURTsKKworCWlmICghaTkxNV9y ZXF1ZXN0X3N0YXJ0ZWQocnEpKQorCQlyZXR1cm4gSTkxNV9SRVFVRVNUX1BFTkRJTkc7CisKKwlp ZiAobWF0Y2hfcmluZyhycSkpCisJCXJldHVybiBJOTE1X1JFUVVFU1RfQUNUSVZFOworCisJcmV0 dXJuIEk5MTVfUkVRVUVTVF9RVUVVRUQ7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1f STkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMiCiAjaW5j bHVkZSAic2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaAppbmRleCA1ZGViNjVlYzVmYTUuLmYwNDYzZDE5YzcxMiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmgKQEAgLTI4NSw2ICsyODUsMjIgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7 CiAJCXN0cnVjdCBocnRpbWVyIHRpbWVyOwogCX0gd2F0Y2hkb2c7CiAKKwkvKgorCSAqIFJlcXVl c3RzIG1heSBuZWVkIHRvIGJlIHN0YWxsZWQgd2hlbiB1c2luZyBHdUMgc3VibWlzc2lvbiB3YWl0 aW5nIGZvcgorCSAqIGNlcnRhaW4gR3VDIG9wZXJhdGlvbnMgdG8gY29tcGxldGUuIElmIHRoYXQg aXMgdGhlIGNhc2UsIHN0YWxsZWQKKwkgKiByZXF1ZXN0cyBhcmUgYWRkZWQgdG8gYSBwZXIgY29u dGV4dCBsaXN0IG9mIHN0YWxsZWQgcmVxdWVzdHMuIFRoZQorCSAqIGJlbG93IGxpc3RfaGVhZCBp cyB0aGUgbGluayBpbiB0aGF0IGxpc3QuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBndWNfZmVu Y2VfbGluazsKKworCS8qKgorCSAqIFByaW9yaXR5IGxldmVsIHdoaWxlIHRoZSByZXF1ZXN0IGlz IGluZmxpZ2h0LiBEaWZmZXJzIHNsaWdodGx5IHRoYW4KKwkgKiBpOTE1IHNjaGVkdWxlciBwcmlv cml0eS4KKwkgKi8KKyNkZWZpbmUJR1VDX1BSSU9fSU5JVAkweGZmCisjZGVmaW5lCUdVQ19QUklP X0ZJTkkJMHhmZQorCXU4IGd1Y19wcmlvOworCiAJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVj dCB7CiAJCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKIAkJdW5zaWduZWQgbG9uZyBkZWxheTsKQEAg LTYzOSw0ICs2NTUsMTcgQEAgYm9vbAogaTkxNV9yZXF1ZXN0X2FjdGl2ZV9lbmdpbmUoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqYWN0aXZl KTsKIAordm9pZCBpOTE1X3JlcXVlc3Rfbm90aWZ5X2V4ZWN1dGVfY2JfaW1tKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKTsKKworZW51bSBpOTE1X3JlcXVlc3Rfc3RhdGUKK3sKKwlJOTE1X1JFUVVF U1RfVU5LTk9XTiA9IDAsCisJSTkxNV9SRVFVRVNUX0NPTVBMRVRFLAorCUk5MTVfUkVRVUVTVF9Q RU5ESU5HLAorCUk5MTVfUkVRVUVTVF9RVUVVRUQsCisJSTkxNV9SRVFVRVNUX0FDVElWRSwKK307 CisKK2VudW0gaTkxNV9yZXF1ZXN0X3N0YXRlIGk5MTVfdGVzdF9yZXF1ZXN0X3N0YXRlKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKTsKKwogI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9IICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwppbmRleCAzYTU4YTkxMzAzMDkuLjNmY2NhZTM2 NzJjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCkBAIC0yNDEsNiArMjQx LDkgQEAgc3RhdGljIHZvaWQgX19pOTE1X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3NjaGVkX25vZGUg Km5vZGUsCiAJLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFjZW1lbnQgZW5zdXJlIG91ciBk ZXBzIGV4ZWN1dGUgYmVmb3JlIHVzICovCiAJc2NoZWRfZW5naW5lID0gbG9ja19zY2hlZF9lbmdp bmUobm9kZSwgc2NoZWRfZW5naW5lLCAmY2FjaGUpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZV9yZXZlcnNlKGRlcCwgcCwgJmRmcywgZGZzX2xpbmspIHsKKwkJc3RydWN0IGk5MTVfcmVxdWVz dCAqZnJvbSA9IGNvbnRhaW5lcl9vZihkZXAtPnNpZ25hbGVyLAorCQkJCQkJCSBzdHJ1Y3QgaTkx NV9yZXF1ZXN0LAorCQkJCQkJCSBzY2hlZCk7CiAJCUlOSVRfTElTVF9IRUFEKCZkZXAtPmRmc19s aW5rKTsKIAogCQlub2RlID0gZGVwLT5zaWduYWxlcjsKQEAgLTI1NCw2ICsyNTcsMTAgQEAgc3Rh dGljIHZvaWQgX19pOTE1X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsCiAJ CUdFTV9CVUdfT04obm9kZV90b19yZXF1ZXN0KG5vZGUpLT5lbmdpbmUtPnNjaGVkX2VuZ2luZSAh PQogCQkJICAgc2NoZWRfZW5naW5lKTsKIAorCQkvKiBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgY2hh bmdpbmcgdGhlIG5vZGVzIHByaW9yaXR5ICovCisJCWlmIChzY2hlZF9lbmdpbmUtPmJ1bXBfaW5m bGlnaHRfcmVxdWVzdF9wcmlvKQorCQkJc2NoZWRfZW5naW5lLT5idW1wX2luZmxpZ2h0X3JlcXVl c3RfcHJpbyhmcm9tLCBwcmlvKTsKKwogCQlXUklURV9PTkNFKG5vZGUtPmF0dHIucHJpb3JpdHks IHByaW8pOwogCiAJCS8qCkBAIC00MzEsNyArNDM4LDcgQEAgdm9pZCBpOTE1X3JlcXVlc3Rfc2hv d193aXRoX3NjaGVkdWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqbSwKIAlyY3VfcmVhZF91bmxvY2so KTsKIH0KIAotdm9pZCBpOTE1X3NjaGVkX2VuZ2luZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQor c3RhdGljIHZvaWQgZGVmYXVsdF9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKQogewogCXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0KIAkJY29udGFpbmVyX29mKGtyZWYs IHR5cGVvZigqc2NoZWRfZW5naW5lKSwgcmVmKTsKQEAgLTQ0MCw2ICs0NDcsMTEgQEAgdm9pZCBp OTE1X3NjaGVkX2VuZ2luZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogCWtmcmVlKHNjaGVkX2Vu Z2luZSk7CiB9CiAKK3N0YXRpYyBib29sIGRlZmF1bHRfZGlzYWJsZWQoc3RydWN0IGk5MTVfc2No ZWRfZW5naW5lICpzY2hlZF9lbmdpbmUpCit7CisJcmV0dXJuIGZhbHNlOworfQorCiBzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKgogaTkxNV9zY2hlZF9lbmdpbmVfY3JlYXRlKHVuc2lnbmVkIGlu dCBzdWJjbGFzcykKIHsKQEAgLTQ1Myw2ICs0NjUsOCBAQCBpOTE1X3NjaGVkX2VuZ2luZV9jcmVh dGUodW5zaWduZWQgaW50IHN1YmNsYXNzKQogCiAJc2NoZWRfZW5naW5lLT5xdWV1ZSA9IFJCX1JP T1RfQ0FDSEVEOwogCXNjaGVkX2VuZ2luZS0+cXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47 CisJc2NoZWRfZW5naW5lLT5kZXN0cm95ID0gZGVmYXVsdF9kZXN0cm95OworCXNjaGVkX2VuZ2lu ZS0+ZGlzYWJsZWQgPSBkZWZhdWx0X2Rpc2FibGVkOwogCiAJSU5JVF9MSVNUX0hFQUQoJnNjaGVk X2VuZ2luZS0+cmVxdWVzdHMpOwogCUlOSVRfTElTVF9IRUFEKCZzY2hlZF9lbmdpbmUtPmhvbGQp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKaW5kZXggNjUwYWI4ZTBkYjlmLi5m NGQ5ODExYWRlNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaApAQCAtNTEs OCArNTEsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcmlvbGlzdF9mcmVlKHN0cnVjdCBp OTE1X3ByaW9saXN0ICpwKQogc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICoKIGk5MTVfc2NoZWRf ZW5naW5lX2NyZWF0ZSh1bnNpZ25lZCBpbnQgc3ViY2xhc3MpOwogCi12b2lkIGk5MTVfc2NoZWRf ZW5naW5lX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpOwotCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBp OTE1X3NjaGVkX2VuZ2luZSAqCiBpOTE1X3NjaGVkX2VuZ2luZV9nZXQoc3RydWN0IGk5MTVfc2No ZWRfZW5naW5lICpzY2hlZF9lbmdpbmUpCiB7CkBAIC02Myw3ICs2MSw3IEBAIGk5MTVfc2NoZWRf ZW5naW5lX2dldChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKIHN0YXRp YyBpbmxpbmUgdm9pZAogaTkxNV9zY2hlZF9lbmdpbmVfcHV0KHN0cnVjdCBpOTE1X3NjaGVkX2Vu Z2luZSAqc2NoZWRfZW5naW5lKQogewotCWtyZWZfcHV0KCZzY2hlZF9lbmdpbmUtPnJlZiwgaTkx NV9zY2hlZF9lbmdpbmVfZnJlZSk7CisJa3JlZl9wdXQoJnNjaGVkX2VuZ2luZS0+cmVmLCBzY2hl ZF9lbmdpbmUtPmRlc3Ryb3kpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKQEAgLTk4LDQgKzk2 LDEwIEBAIHZvaWQgaTkxNV9yZXF1ZXN0X3Nob3dfd2l0aF9zY2hlZHVsZShzdHJ1Y3QgZHJtX3By aW50ZXIgKm0sCiAJCQkJICAgICBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJICAgICBpbnQgaW5k ZW50KTsKIAorc3RhdGljIGlubGluZSBib29sCitpOTE1X3NjaGVkX2VuZ2luZV9kaXNhYmxlZChz dHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKK3sKKwlyZXR1cm4gc2NoZWRf ZW5naW5lLT5kaXNhYmxlZChzY2hlZF9lbmdpbmUpOworfQorCiAjZW5kaWYgLyogX0k5MTVfU0NI RURVTEVSX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVk dWxlcl90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMu aAppbmRleCA1OTM1YzMxNTJiZGMuLmIwYTFiNThjNzg5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oCkBAIC0xNjMsMTIgKzE2MywzNCBAQCBzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgewogCSAqLwogCXZvaWQgKnByaXZhdGVfZGF0YTsKIAorCS8qKgor CSAqIEBkZXN0cm95OiBkZXN0cm95IHNjaGVkdWxlIGVuZ2luZSAvIGNsZWFudXAgaW4gYmFja2Vu ZAorCSAqLworCXZvaWQJKCpkZXN0cm95KShzdHJ1Y3Qga3JlZiAqa3JlZik7CisKKwkvKioKKwkg KiBAZGlzYWJsZWQ6IGNoZWNrIGlmIGJhY2tlbmQgaGFzIGRpc2FibGVkIHN1Ym1pc3Npb24KKwkg Ki8KKwlib29sCSgqZGlzYWJsZWQpKHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5n aW5lKTsKKwogCS8qKgogCSAqIEBraWNrX2JhY2tlbmQ6IGtpY2sgYmFja2VuZCBhZnRlciBhIHJl cXVlc3QncyBwcmlvcml0eSBoYXMgY2hhbmdlZAogCSAqLwogCXZvaWQJKCpraWNrX2JhY2tlbmQp KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQkJCWludCBwcmlvKTsKIAorCS8qKgor CSAqIEBidW1wX2luZmxpZ2h0X3JlcXVlc3RfcHJpbzogdXBkYXRlIHByaW9yaXR5IG9mIGFuIGlu ZmxpZ2h0IHJlcXVlc3QKKwkgKi8KKwl2b2lkCSgqYnVtcF9pbmZsaWdodF9yZXF1ZXN0X3ByaW8p KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJCQkgICAgICBpbnQgcHJpbyk7CisKKwkvKioK KwkgKiBAcmV0aXJlX2luZmxpZ2h0X3JlcXVlc3RfcHJpbzogaW5kaWNhdGUgcmVxdWVzdCBpcyBy ZXRpcmVkIHRvCisJICogcHJpb3JpdHkgdHJhY2tpbmcKKwkgKi8KKwl2b2lkCSgqcmV0aXJlX2lu ZmxpZ2h0X3JlcXVlc3RfcHJpbykoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCiAJLyoqCiAJ ICogQHNjaGVkdWxlOiBhZGp1c3QgcHJpb3JpdHkgb2YgcmVxdWVzdAogCSAqCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RyYWNlLmgKaW5kZXggNjc3OGFkMmExNGE0Li5mYjM3NmU4MDQxYWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RyYWNlLmgKQEAgLTc5NCwzMCArNzk0LDQwIEBAIERFQ0xBUkVfRVZFTlRf Q0xBU1MoaTkxNV9yZXF1ZXN0LAogCSAgICBUUF9TVFJVQ1RfX2VudHJ5KAogCQkJICAgICBfX2Zp ZWxkKHUzMiwgZGV2KQogCQkJICAgICBfX2ZpZWxkKHU2NCwgY3R4KQorCQkJICAgICBfX2ZpZWxk KHUzMiwgZ3VjX2lkKQogCQkJICAgICBfX2ZpZWxkKHUxNiwgY2xhc3MpCiAJCQkgICAgIF9fZmll bGQodTE2LCBpbnN0YW5jZSkKIAkJCSAgICAgX19maWVsZCh1MzIsIHNlcW5vKQorCQkJICAgICBf X2ZpZWxkKHUzMiwgdGFpbCkKIAkJCSAgICAgKSwKIAogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJ CSAgIF9fZW50cnktPmRldiA9IHJxLT5lbmdpbmUtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsK IAkJCSAgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2luZS0+dWFiaV9jbGFzczsKIAkJCSAgIF9f ZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKKwkJCSAgIF9fZW50 cnktPmd1Y19pZCA9IHJxLT5jb250ZXh0LT5ndWNfaWQ7CiAJCQkgICBfX2VudHJ5LT5jdHggPSBy cS0+ZmVuY2UuY29udGV4dDsKIAkJCSAgIF9fZW50cnktPnNlcW5vID0gcnEtPmZlbmNlLnNlcW5v OworCQkJICAgX19lbnRyeS0+dGFpbCA9IHJxLT50YWlsOwogCQkJICAgKSwKIAotCSAgICBUUF9w cmludGsoImRldj0ldSwgZW5naW5lPSV1OiV1LCBjdHg9JWxsdSwgc2Vxbm89JXUiLAorCSAgICBU UF9wcmludGsoImRldj0ldSwgZW5naW5lPSV1OiV1LCBndWNfaWQ9JXUsIGN0eD0lbGx1LCBzZXFu bz0ldSwgdGFpbD0ldSIsCiAJCSAgICAgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y2xhc3MsIF9f ZW50cnktPmluc3RhbmNlLAotCQkgICAgICBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vKQor CQkgICAgICBfX2VudHJ5LT5ndWNfaWQsIF9fZW50cnktPmN0eCwgX19lbnRyeS0+c2Vxbm8sCisJ CSAgICAgIF9fZW50cnktPnRhaWwpCiApOwogCiBERUZJTkVfRVZFTlQoaTkxNV9yZXF1ZXN0LCBp OTE1X3JlcXVlc3RfYWRkLAotCSAgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSks Ci0JICAgIFRQX0FSR1MocnEpCisJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSksCisJICAgICBUUF9BUkdTKHJxKQogKTsKIAogI2lmIGRlZmluZWQoQ09ORklHX0RSTV9JOTE1 X0xPV19MRVZFTF9UUkFDRVBPSU5UUykKK0RFRklORV9FVkVOVChpOTE1X3JlcXVlc3QsIGk5MTVf cmVxdWVzdF9ndWNfc3VibWl0LAorCSAgICAgVFBfUFJPVE8oc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpLAorCSAgICAgVFBfQVJHUyhycSkKKyk7CisKIERFRklORV9FVkVOVChpOTE1X3JlcXVlc3Qs IGk5MTVfcmVxdWVzdF9zdWJtaXQsCiAJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSksCiAJICAgICBUUF9BUkdTKHJxKQpAQCAtODg1LDggKzg5NSwxMTQgQEAgVFJBQ0VfRVZF TlQoaTkxNV9yZXF1ZXN0X291dCwKIAkJCSAgICAgIF9fZW50cnktPmN0eCwgX19lbnRyeS0+c2Vx bm8sIF9fZW50cnktPmNvbXBsZXRlZCkKICk7CiAKK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoaW50ZWxf Y29udGV4dCwKKwkgICAgVFBfUFJPVE8oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKSwKKwkgICAg VFBfQVJHUyhjZSksCisKKwkgICAgVFBfU1RSVUNUX19lbnRyeSgKKwkJCSAgICAgX19maWVsZCh1 MzIsIGd1Y19pZCkKKwkJCSAgICAgX19maWVsZChpbnQsIHBpbl9jb3VudCkKKwkJCSAgICAgX19m aWVsZCh1MzIsIHNjaGVkX3N0YXRlKQorCQkJICAgICBfX2ZpZWxkKHUzMiwgZ3VjX3NjaGVkX3N0 YXRlX25vX2xvY2spCisJCQkgICAgIF9fZmllbGQodTgsIGd1Y19wcmlvKQorCQkJICAgICApLAor CisJICAgIFRQX2Zhc3RfYXNzaWduKAorCQkJICAgX19lbnRyeS0+Z3VjX2lkID0gY2UtPmd1Y19p ZDsKKwkJCSAgIF9fZW50cnktPnBpbl9jb3VudCA9IGF0b21pY19yZWFkKCZjZS0+cGluX2NvdW50 KTsKKwkJCSAgIF9fZW50cnktPnNjaGVkX3N0YXRlID0gY2UtPmd1Y19zdGF0ZS5zY2hlZF9zdGF0 ZTsKKwkJCSAgIF9fZW50cnktPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrID0KKwkJCSAgIGF0b21p Y19yZWFkKCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spOworCQkJICAgX19lbnRyeS0+Z3Vj X3ByaW8gPSBjZS0+Z3VjX3ByaW87CisJCQkgICApLAorCisJICAgIFRQX3ByaW50aygiZ3VjX2lk PSVkLCBwaW5fY291bnQ9JWQgc2NoZWRfc3RhdGU9MHgleCwweCV4LCBndWNfcHJpbz0ldSIsCisJ CSAgICAgIF9fZW50cnktPmd1Y19pZCwgX19lbnRyeS0+cGluX2NvdW50LCBfX2VudHJ5LT5zY2hl ZF9zdGF0ZSwKKwkJICAgICAgX19lbnRyeS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2ssIF9fZW50 cnktPmd1Y19wcmlvKQorKTsKKworREVGSU5FX0VWRU5UKGludGVsX2NvbnRleHQsIGludGVsX2Nv bnRleHRfc2V0X3ByaW8sCisJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up LAorCSAgICAgVFBfQVJHUyhjZSkKKyk7CisKK0RFRklORV9FVkVOVChpbnRlbF9jb250ZXh0LCBp bnRlbF9jb250ZXh0X3Jlc2V0LAorCSAgICAgVFBfUFJPVE8oc3RydWN0IGludGVsX2NvbnRleHQg KmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitERUZJTkVfRVZFTlQoaW50ZWxfY29udGV4 dCwgaW50ZWxfY29udGV4dF9iYW4sCisJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpLAorCSAgICAgVFBfQVJHUyhjZSkKKyk7CisKK0RFRklORV9FVkVOVChpbnRlbF9jb250 ZXh0LCBpbnRlbF9jb250ZXh0X3JlZ2lzdGVyLAorCSAgICAgVFBfUFJPVE8oc3RydWN0IGludGVs X2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitERUZJTkVfRVZFTlQoaW50 ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9kZXJlZ2lzdGVyLAorCSAgICAgVFBfUFJPVE8oc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitERUZJTkVf RVZFTlQoaW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9kZXJlZ2lzdGVyX2RvbmUsCisJICAg ICBUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpLAorCSAgICAgVFBfQVJHUyhjZSkK Kyk7CisKK0RFRklORV9FVkVOVChpbnRlbF9jb250ZXh0LCBpbnRlbF9jb250ZXh0X3NjaGVkX2Vu YWJsZSwKKwkgICAgIFRQX1BST1RPKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSksCisJICAgICBU UF9BUkdTKGNlKQorKTsKKworREVGSU5FX0VWRU5UKGludGVsX2NvbnRleHQsIGludGVsX2NvbnRl eHRfc2NoZWRfZGlzYWJsZSwKKwkgICAgIFRQX1BST1RPKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSksCisJICAgICBUUF9BUkdTKGNlKQorKTsKKworREVGSU5FX0VWRU5UKGludGVsX2NvbnRleHQs IGludGVsX2NvbnRleHRfc2NoZWRfZG9uZSwKKwkgICAgIFRQX1BST1RPKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSksCisJICAgICBUUF9BUkdTKGNlKQorKTsKKworREVGSU5FX0VWRU5UKGludGVs X2NvbnRleHQsIGludGVsX2NvbnRleHRfY3JlYXRlLAorCSAgICAgVFBfUFJPVE8oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitERUZJTkVfRVZFTlQo aW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9mZW5jZV9yZWxlYXNlLAorCSAgICAgVFBfUFJP VE8oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitE RUZJTkVfRVZFTlQoaW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9mcmVlLAorCSAgICAgVFBf UFJPVE8oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOwor CitERUZJTkVfRVZFTlQoaW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9zdGVhbF9ndWNfaWQs CisJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpLAorCSAgICAgVFBfQVJH UyhjZSkKKyk7CisKK0RFRklORV9FVkVOVChpbnRlbF9jb250ZXh0LCBpbnRlbF9jb250ZXh0X2Rv X3BpbiwKKwkgICAgIFRQX1BST1RPKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSksCisJICAgICBU UF9BUkdTKGNlKQorKTsKKworREVGSU5FX0VWRU5UKGludGVsX2NvbnRleHQsIGludGVsX2NvbnRl eHRfZG9fdW5waW4sCisJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpLAor CSAgICAgVFBfQVJHUyhjZSkKKyk7CisKICNlbHNlCiAjaWYgIWRlZmluZWQoVFJBQ0VfSEVBREVS X01VTFRJX1JFQUQpCitzdGF0aWMgaW5saW5lIHZvaWQKK3RyYWNlX2k5MTVfcmVxdWVzdF9ndWNf c3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworfQorCiBzdGF0aWMgaW5saW5lIHZv aWQKIHRyYWNlX2k5MTVfcmVxdWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7 CkBAIC05MDYsNiArMTAyMiw4MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIHRyYWNlX2k5MTVfcmVx dWVzdF9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7CiB9CisKK3N0YXRpYyBpbmxpbmUg dm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9zZXRfcHJpbyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9yZXNl dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAor dHJhY2VfaW50ZWxfY29udGV4dF9iYW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQor CitzdGF0aWMgaW5saW5lIHZvaWQKK3RyYWNlX2ludGVsX2NvbnRleHRfcmVnaXN0ZXIoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3RyYWNlX2lu dGVsX2NvbnRleHRfZGVyZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9kZXJlZ2lzdGVyX2RvbmUo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3Ry YWNlX2ludGVsX2NvbnRleHRfc2NoZWRfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK K3sKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0cmFjZV9pbnRlbF9jb250ZXh0X3NjaGVkX2Rp c2FibGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZv aWQKK3RyYWNlX2ludGVsX2NvbnRleHRfc2NoZWRfZG9uZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9jcmVh dGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQK K3RyYWNlX2ludGVsX2NvbnRleHRfZmVuY2VfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9mcmVl KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0 cmFjZV9pbnRlbF9jb250ZXh0X3N0ZWFsX2d1Y19pZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordHJhY2VfaW50ZWxfY29udGV4dF9kb19waW4o c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3Ry YWNlX2ludGVsX2NvbnRleHRfZG9fdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorewor fQogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfcmVxdWVzdC5jCmluZGV4IGJkNWM5NmE3N2JhMy4uZDY3NzEwZDEwNjE1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCkBAIC0xMzEzLDcgKzEz MTMsNyBAQCBzdGF0aWMgaW50IF9fbGl2ZV9wYXJhbGxlbF9lbmdpbmUxKHZvaWQgKmFyZykKIAkJ aTkxNV9yZXF1ZXN0X2FkZChycSk7CiAKIAkJZXJyID0gMDsKLQkJaWYgKGk5MTVfcmVxdWVzdF93 YWl0KHJxLCAwLCBIWiAvIDUpIDwgMCkKKwkJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxLCAwLCBI WikgPCAwKQogCQkJZXJyID0gLUVUSU1FOwogCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAkJaWYg KGVycikKQEAgLTE0MTksNyArMTQxOSw3IEBAIHN0YXRpYyBpbnQgX19saXZlX3BhcmFsbGVsX3Nw aW4odm9pZCAqYXJnKQogCX0KIAlpZ3Rfc3Bpbm5lcl9lbmQoJnNwaW4pOwogCi0JaWYgKGVyciA9 PSAwICYmIGk5MTVfcmVxdWVzdF93YWl0KHJxLCAwLCBIWiAvIDUpIDwgMCkKKwlpZiAoZXJyID09 IDAgJiYgaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaKSA8IDApCiAJCWVyciA9IC1FSU87CiAJ aTkxNV9yZXF1ZXN0X3B1dChycSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2lndF9mbHVzaF90ZXN0LmMKaW5kZXggN2IwOTM5ZTNmMDA3Li5hNmM3MWZjYTYxYWEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCkBA IC0xOSw3ICsxOSw3IEBAIGludCBpZ3RfZmx1c2hfdGVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAogCWNvbmRfcmVzY2hlZCgpOwogCi0JaWYgKGludGVsX2d0X3dhaXRfZm9yX2lk bGUoZ3QsIEhaIC8gNSkgPT0gLUVUSU1FKSB7CisJaWYgKGludGVsX2d0X3dhaXRfZm9yX2lkbGUo Z3QsIEhaKSA9PSAtRVRJTUUpIHsKIAkJcHJfZXJyKCIlcFMgdGltZWQgb3V0LCBjYW5jZWxsaW5n IGFsbCBmdXJ0aGVyIHRlc3RpbmcuXG4iLAogCQkgICAgICAgX19idWlsdGluX3JldHVybl9hZGRy ZXNzKDApKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ln dF9saXZlX3Rlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2ZV90 ZXN0LmMKaW5kZXggYzEzMDAxMGE3MDMzLi4xYzcyMTU0MmUyNzcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2ZV90ZXN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYwpAQCAtNSw3ICs1LDcgQEAKICAq LwogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKLSNpbmNsdWRlICJndC9pbnRlbF9ndF9yZXF1ZXN0 cy5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0 ZXN0LmgiCiAjaW5jbHVkZSAiaWd0X2ZsdXNoX3Rlc3QuaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYmQ2ZDY5YjMzMTUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVy X2hlbHBlcnMuYwpAQCAtMCwwICsxLDg5IEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKi8K KworLy8jaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKKyNpbmNsdWRlICJndC9pbnRl bF9ndC5oIgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5o IgorCisjaW5jbHVkZSAic2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgiCisKKyNk ZWZpbmUgUkVEVUNFRF9USU1FU0xJQ0UJNQorI2RlZmluZSBSRURVQ0VEX1BSRUVNUFQJCTEwCisj ZGVmaW5lIFdBSVRfRk9SX1JFU0VUX1RJTUUJMTAwMDAKKworaW50IGludGVsX3NlbGZ0ZXN0X21v ZGlmeV9wb2xpY3koc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSBzdHJ1Y3Qg aW50ZWxfc2VsZnRlc3Rfc2F2ZWRfcG9saWN5ICpzYXZlZCwKKwkJCQkgdTMyIG1vZGlmeV90eXBl KQorCit7CisJaW50IGVycjsKKworCXNhdmVkLT5yZXNldCA9IGVuZ2luZS0+aTkxNS0+cGFyYW1z LnJlc2V0OworCXNhdmVkLT5mbGFncyA9IGVuZ2luZS0+ZmxhZ3M7CisJc2F2ZWQtPnRpbWVzbGlj ZSA9IGVuZ2luZS0+cHJvcHMudGltZXNsaWNlX2R1cmF0aW9uX21zOworCXNhdmVkLT5wcmVlbXB0 X3RpbWVvdXQgPSBlbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tczsKKworCXN3aXRjaCAo bW9kaWZ5X3R5cGUpIHsKKwljYXNlIFNFTEZURVNUX1NDSEVEVUxFUl9NT0RJRllfRkFTVF9SRVNF VDoKKwkJLyoKKwkJICogRW5hYmxlIGZvcmNlIHByZS1lbXB0aW9uIG9uIHRpbWUgc2xpY2UgZXhw aXJhdGlvbgorCQkgKiB0b2dldGhlciB3aXRoIGVuZ2luZSByZXNldCBvbiBwcmUtZW1wdGlvbiB0 aW1lb3V0LgorCQkgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2UgdGhlIEd1QyBub3RpY2UgYW5k IHJlc2V0CisJCSAqIHRoZSBzaW5nbGUgaGFuZ2luZyBjb250ZXh0LgorCQkgKiBBbHNvLCByZWR1 Y2UgdGhlIHByZWVtcHRpb24gdGltZW91dCB0byBzb21ldGhpbmcKKwkJICogc21hbGwgdG8gc3Bl ZWQgdGhlIHRlc3QgdXAuCisJCSAqLworCQllbmdpbmUtPmk5MTUtPnBhcmFtcy5yZXNldCA9IDI7 CisJCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfV0FOVF9GT1JDRURfUFJFRU1QVElPTjsK KwkJZW5naW5lLT5wcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXMgPSBSRURVQ0VEX1RJTUVTTElD RTsKKwkJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRfbXMgPSBSRURVQ0VEX1BSRUVNUFQ7 CisJCWJyZWFrOworCisJY2FzZSBTRUxGVEVTVF9TQ0hFRFVMRVJfTU9ESUZZX05PX0hBTkdDSEVD SzoKKwkJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRfbXMgPSAwOworCQlicmVhazsKKwor CWRlZmF1bHQ6CisJCXByX2VycigiSW52YWxpZCBzY2hlZHVsZXIgcG9saWN5IG1vZGlmaWNhdGlv biB0eXBlOiAlZCFcbiIsIG1vZGlmeV90eXBlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ aWYgKCFpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKSkKKwkJcmV0dXJuIDA7CisKKwllcnIg PSBpbnRlbF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZSgmZW5naW5lLT5ndC0+dWMuZ3VjKTsK KwlpZiAoZXJyKQorCQlpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShlbmdpbmUsIHNhdmVk KTsKKworCXJldHVybiBlcnI7Cit9CisKK2ludCBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGlj eShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc2Vs ZnRlc3Rfc2F2ZWRfcG9saWN5ICpzYXZlZCkKK3sKKwkvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBw b2xpY2llcyAqLworCWVuZ2luZS0+aTkxNS0+cGFyYW1zLnJlc2V0ID0gc2F2ZWQtPnJlc2V0Owor CWVuZ2luZS0+ZmxhZ3MgPSBzYXZlZC0+ZmxhZ3M7CisJZW5naW5lLT5wcm9wcy50aW1lc2xpY2Vf ZHVyYXRpb25fbXMgPSBzYXZlZC0+dGltZXNsaWNlOworCWVuZ2luZS0+cHJvcHMucHJlZW1wdF90 aW1lb3V0X21zID0gc2F2ZWQtPnByZWVtcHRfdGltZW91dDsKKworCWlmICghaW50ZWxfZW5naW5l X3VzZXNfZ3VjKGVuZ2luZSkpCisJCXJldHVybiAwOworCisJcmV0dXJuIGludGVsX2d1Y19nbG9i YWxfcG9saWNpZXNfdXBkYXRlKCZlbmdpbmUtPmd0LT51Yy5ndWMpOworfQorCitpbnQgaW50ZWxf c2VsZnRlc3Rfd2FpdF9mb3JfcnEoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJbG9uZyBy ZXQ7CisKKwlyZXQgPSBpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgV0FJVF9GT1JfUkVTRVRfVElN RSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVs cGVycy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9o ZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNTBiYzVh OGJhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaApAQCAtMCwwICsxLDM1IEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX1NFTEZURVNUX1NDSEVEVUxFUl9I RUxQRVJTX0hfCisjZGVmaW5lIF9JTlRFTF9TRUxGVEVTVF9TQ0hFRFVMRVJfSEVMUEVSU19IXwor CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IGk5MTVfcmVxdWVzdDsKK3N0cnVj dCBpbnRlbF9lbmdpbmVfY3M7CisKK3N0cnVjdCBpbnRlbF9zZWxmdGVzdF9zYXZlZF9wb2xpY3kK K3sKKwl1MzIgZmxhZ3M7CisJdTMyIHJlc2V0OworCXU2NCB0aW1lc2xpY2U7CisJdTY0IHByZWVt cHRfdGltZW91dDsKK307CisKK2VudW0gc2VsZnRlc3Rfc2NoZWR1bGVyX21vZGlmeQoreworCVNF TEZURVNUX1NDSEVEVUxFUl9NT0RJRllfTk9fSEFOR0NIRUNLID0gMCwKKwlTRUxGVEVTVF9TQ0hF RFVMRVJfTU9ESUZZX0ZBU1RfUkVTRVQsCit9OworCitpbnQgaW50ZWxfc2VsZnRlc3RfbW9kaWZ5 X3BvbGljeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJIHN0cnVjdCBpbnRl bF9zZWxmdGVzdF9zYXZlZF9wb2xpY3kgKnNhdmVkLAorCQkJCSBlbnVtIHNlbGZ0ZXN0X3NjaGVk dWxlcl9tb2RpZnkgbW9kaWZ5X3R5cGUpOworaW50IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9s aWN5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9z ZWxmdGVzdF9zYXZlZF9wb2xpY3kgKnNhdmVkKTsKK2ludCBpbnRlbF9zZWxmdGVzdF93YWl0X2Zv cl9ycSggc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwppbmRleCBkMTg5YzRiZDRi ZWYuLjRmODE4MDE0Njg4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ2VtX2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2dlbV9kZXZpY2UuYwpAQCAtNTIsNyArNTIsOCBAQCB2b2lkIG1vY2tfZGV2aWNlX2Zs dXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWRvIHsKIAkJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZ3QsIGlkKQogCQkJbW9ja19lbmdpbmVfZmx1c2goZW5naW5lKTsKLQl9IHdo aWxlIChpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChndCwgTUFYX1NDSEVEVUxFX1RJ TUVPVVQpKTsKKwl9IHdoaWxlIChpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChndCwg TUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJCQkgIE5VTEwpKTsKIH0KIAogc3RhdGljIHZvaWQg bW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CmluZGV4IGUyMGVlZWNhN2ExYy4uNDQ5MTlkMDg0OGEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC01 NzIsNiArNTcyLDE1IEBAIHR5cGVkZWYgc3RydWN0IGRybV9pOTE1X2lycV93YWl0IHsKICNkZWZp bmUgICBJOTE1X1NDSEVEVUxFUl9DQVBfUFJFRU1QVElPTgkoMXVsIDw8IDIpCiAjZGVmaW5lICAg STkxNV9TQ0hFRFVMRVJfQ0FQX1NFTUFQSE9SRVMJKDF1bCA8PCAzKQogI2RlZmluZSAgIEk5MTVf U0NIRURVTEVSX0NBUF9FTkdJTkVfQlVTWV9TVEFUUwkoMXVsIDw8IDQpCisvKgorICogSW5kaWNh dGVzIHRoZSAyayB1c2VyIHByaW9yaXR5IGxldmVscyBhcmUgc3RhdGljYWxseSBtYXBwZWQgaW50 byAzIGJ1Y2tldHMgYXMKKyAqIGZvbGxvd3M6CisgKgorICogLTFrIHRvIC0xCUxvdyBwcmlvcml0 eQorICogMAkJTm9ybWFsIHByaW9yaXR5CisgKiAxIHRvIDFrCUhpZ2hlc3QgcHJpb3JpdHkKKyAq LworI2RlZmluZSAgIEk5MTVfU0NIRURVTEVSX0NBUF9TVEFUSUNfUFJJT1JJVFlfTUFQCSgxdWwg PDwgNSkKIAogI2RlZmluZSBJOTE1X1BBUkFNX0hVQ19TVEFUVVMJCSA0MgogCi0tIAoyLjI4LjAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=