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.7 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 E9D29C4707F for ; Thu, 27 May 2021 18:17:14 +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 A90D6613CC for ; Thu, 27 May 2021 18:17:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A90D6613CC 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 6B1246F493; Thu, 27 May 2021 18:17:12 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3B446E095 for ; Thu, 27 May 2021 18:17:08 +0000 (UTC) IronPort-SDR: NLcn7PvuUM0K8kYBQ8Fyk02QlLjMRhQ3ZtqKEXF74U1XfAlkepswhzNNrryGlBLvj3aHIhYVfq IwHRpzsyqIzA== X-IronPort-AV: E=McAfee;i="6200,9189,9997"; a="202808215" X-IronPort-AV: E=Sophos;i="5.83,228,1616482800"; d="scan'208";a="202808215" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 11:17:07 -0700 IronPort-SDR: z1aDjCjhAHe7OSLqkeR/mb4lE0kPT2gdoVS9Po8M9Atlt1w2yTvBVC/bm/9DCDDVaIATZJCDq5 bcbSvDuxCM0Q== X-IronPort-AV: E=Sophos;i="5.83,228,1616482800"; d="scan'208";a="415008569" Received: from lucas-s2600cw.jf.intel.com ([10.165.21.202]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 May 2021 11:17:07 -0700 From: Lucas De Marchi To: intel-gfx@lists.freedesktop.org Date: Thu, 27 May 2021 11:16:54 -0700 Message-Id: <20210527181700.1676790-2-lucas.demarchi@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210527181700.1676790-1-lucas.demarchi@intel.com> References: <20210527181700.1676790-1-lucas.demarchi@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/7] drm/i915/gt: replace IS_GEN and friends with IS_GRAPHICS_VER 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" VGhpcyB3YXMgZG9uZSBieSB0aGUgZm9sbG93aW5nIHNlbWFudGljIHBhdGNoOgoKCUBAIGV4cHJl c3Npb24gZGV2X3ByaXYsIEU7IEBACgktIElOVEVMX0dFTihkZXZfcHJpdikgPT0gRQoJKyBJU19H UkFQSElDU19WRVIoZGV2X3ByaXYsIEUpCgoJQEAgZXhwcmVzc2lvbiBkZXZfcHJpdjsgQEAKCS0g SU5URUxfR0VOKGRldl9wcml2KQoJKyBHUkFQSElDU19WRVIoZGV2X3ByaXYpCgoJQEAgZXhwcmVz c2lvbiBkZXZfcHJpdjsgZXhwcmVzc2lvbiBFOyBAQAoJLSBJU19HRU4oZGV2X3ByaXYsIEUpCgkr IElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgRSkKCglAQAoJZXhwcmVzc2lvbiBkZXZfcHJpdjsK CWV4cHJlc3Npb24gZnJvbSwgdW50aWw7CglAQAoJLSBJU19HRU5fUkFOR0UoZGV2X3ByaXYsIGZy b20sIHVudGlsKQoJKyBJU19HUkFQSElDU19SQU5HRShkZXZfcHJpdiwgZnJvbSwgdW50aWwpCgoJ QGRlZkAKCWV4cHJlc3Npb24gRTsKCWlkZW50aWZpZXIgaWQgPX4gIl5nZW4kIjsKCUBACgktIGlk ID0gR1JBUEhJQ1NfVkVSKEUpCgkrIHZlciA9IEdSQVBISUNTX1ZFUihFKQoKCUBACglpZGVudGlm aWVyIGRlZi5pZDsKCUBACgktIGlkCgkrIHZlcgoKSXQgYWxzbyB0YWtlcyBjYXJlIG9mIHJlbmFt aW5nIHRoZSB2YXJpYWJsZSB3ZSBhc3NpZ24gdG8gR1JBUEhJQ1NfVkVSKCkKc28gdG8gdXNlICJ2 ZXIiIHJhdGhlciB0aGFuICJnZW4iLgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgRGUgTWFyY2hpIDxs dWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVi dWdmc19ndF9wbS5jICAgICAgIHwgMzggKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2dlbjJfZW5naW5lX2NzLmMgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9nZW44X2VuZ2luZV9jcy5jICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuOF9wcGd0dC5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHRfc3NldS5jICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYyAgICAgfCA1NCArKysrKysrLS0tLS0tLS0KIC4uLi9kcm0vaTkxNS9ndC9p bnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jICB8IDE4ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9nZ3R0LmMgICAgICAgICAgfCAxOCArKy0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ2d0dF9mZW5jaW5nLmMgIHwgMzQgKysrKystLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAgICAgICAgIHwgMjcgKysrKy0tLS0KIC4uLi9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuYyAgICB8IDEyICsrLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2lycS5jICAgICAgICB8ICA2ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEuYyAgICAgfCAxMCArLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jICAgICAgICAgICB8IDE0ICsrLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jICAgICAgICAgICB8ICA2ICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCA0NiArKysrKystLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAgOCArLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMgICAgICAgICB8ICA2ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYyAgICAgICAgICAgfCAxNiArKy0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUuYyAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8IDEyICsrLS0KIC4uLi9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMgICB8IDY0ICsrKysrKysrKy0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBzLmMgICAgICAgICAgIHwg NjAgKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUu YyAgICAgICAgICB8IDE0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmth cm91bmRzLmMgICB8IDY2ICsrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9lbmdpbmVfcG0uYyAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZXhlY2xpc3RzLmMgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2d0X3BtLmMgICAgICB8ICA4ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfaGFuZ2NoZWNrLmMgIHwgIDggKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9sbGMuYyAgICAgICAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfbHJjLmMgICAgICAgIHwgIDggKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9tb2NzLmMgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf cmM2LmMgICAgICAgIHwgIDQgKy0KIC4uLi9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1p c3Npb24uYyAgICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ycHMu YyAgICAgICAgfCAxNiArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGlt ZWxpbmUuYyAgIHwgIDYgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3Vu ZHMuYyAgICB8ICA4ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMg ICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMu YyAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYyAg ICAgfCAgMiArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5j IHwgMTAgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYyAgICAgICAg fCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyAgICAgICAgIHwg IDQgKy0KIDQ0IGZpbGVzIGNoYW5nZWQsIDMyMyBpbnNlcnRpb25zKCspLCAzMjIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5jCmluZGV4IGQ0ZjQ0NTJj ZTVlZC4uMDM4OWJjZWViZDA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9k ZWJ1Z2ZzX2d0X3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9w bS5jCkBAIC04NSwxNCArODUsMTQgQEAgc3RhdGljIGludCBnZW42X2RycGMoc3RydWN0IHNlcV9m aWxlICptKQogCWd0X2NvcmVfc3RhdHVzID0gaW50ZWxfdW5jb3JlX3JlYWRfZncodW5jb3JlLCBH RU42X0dUX0NPUkVfU1RBVFVTKTsKIAogCXJjY3RsMSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29y ZSwgR0VONl9SQ19DT05UUk9MKTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJZ2VuOV9wb3dlcmdhdGVfZW5hYmxlID0KIAkJ CWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOV9QR19FTkFCTEUpOwogCQlnZW45X3Bvd2Vy Z2F0ZV9zdGF0dXMgPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU45X1BXUkdUX0RP TUFJTl9TVEFUVVMpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykKKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpIDw9IDcpCiAJCXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwgR0VO Nl9QQ09ERV9SRUFEX1JDNlZJRFMsCiAJCQkJICAgICAgICZyYzZ2aWRzLCBOVUxMKTsKIApAQCAt MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjKHN0cnVjdCBzZXFfZmlsZSAqbSkK IAkJICAgeWVzbm8ocmNjdGwxICYgR0VONl9SQ19DVExfUkMxZV9FTkFCTEUpKTsKIAlzZXFfcHJp bnRmKG0sICJSQzYgRW5hYmxlZDogJXNcbiIsCiAJCSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNf Q1RMX1JDNl9FTkFCTEUpKTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIFdlbGwgR2F0 aW5nIEVuYWJsZWQ6ICVzXG4iLAogCQkJICAgeWVzbm8oZ2VuOV9wb3dlcmdhdGVfZW5hYmxlICYg R0VOOV9SRU5ERVJfUEdfRU5BQkxFKSk7CiAJCXNlcV9wcmludGYobSwgIk1lZGlhIFdlbGwgR2F0 aW5nIEVuYWJsZWQ6ICVzXG4iLApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9k cnBjKHN0cnVjdCBzZXFfZmlsZSAqbSkKIAogCXNlcV9wcmludGYobSwgIkNvcmUgUG93ZXIgRG93 bjogJXNcbiIsCiAJCSAgIHllc25vKGd0X2NvcmVfc3RhdHVzICYgR0VONl9DT1JFX0NQRF9TVEFU RV9NQVNLKSk7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA+PSA5KSB7CiAJCXNlcV9wcmludGYobSwgIlJlbmRlciBQb3dlciBXZWxsOiAlc1xu IiwKIAkJCSAgIChnZW45X3Bvd2VyZ2F0ZV9zdGF0dXMgJgogCQkJICAgIEdFTjlfUFdSR1RfUkVO REVSX1NUQVRVU19NQVNLKSA/ICJVcCIgOiAiRG93biIpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9kcnBjKHN0cnVjdCBzZXFfZmlsZSAqbSkKIAlwcmludF9yYzZfcmVzKG0s ICJSQzYrIHJlc2lkZW5jeSBzaW5jZSBib290OiIsIEdFTjZfR1RfR0ZYX1JDNnApOwogCXByaW50 X3JjNl9yZXMobSwgIlJDNisrIHJlc2lkZW5jeSBzaW5jZSBib290OiIsIEdFTjZfR1RfR0ZYX1JD NnBwKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykgeworCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPD0gNykgewogCQlzZXFfcHJpbnRmKG0sICJSQzYgICB2b2x0YWdlOiAlZG1WXG4iLAog CQkJICAgR0VONl9ERUNPREVfUkM2X1ZJRCgoKHJjNnZpZHMgPj4gMCkgJiAweGZmKSkpOwogCQlz ZXFfcHJpbnRmKG0sICJSQzYrICB2b2x0YWdlOiAlZG1WXG4iLApAQCAtMjUwLDcgKzI1MCw3IEBA IHN0YXRpYyBpbnQgZnJlcXVlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQodW5jb3JlLT5ycG0pOwogCi0J aWYgKElTX0dFTihpOTE1LCA1KSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNSkgewog CQl1MTYgcmd2c3djdGwgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwgTUVNU1dDVEwpOwog CQl1MTYgcmd2c3RhdCA9IGludGVsX3VuY29yZV9yZWFkMTYodW5jb3JlLCBNRU1TVEFUX0lMSyk7 CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCXNlcV9wcmludGYobSwgImVmZmljaWVudCAo UlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKIAkJCSAgIGludGVsX2dwdV9mcmVxKHJwcywgcnBz LT5lZmZpY2llbnRfZnJlcSkpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsK Kwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7CiAJCXUzMiBycF9zdGF0ZV9s aW1pdHM7CiAJCXUzMiBndF9wZXJmX3N0YXR1czsKIAkJdTMyIHJwX3N0YXRlX2NhcDsKQEAgLTMy MSw3ICszMjEsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqdW51c2VkKQogCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZP UkNFV0FLRV9BTEwpOwogCiAJCXJlcWYgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjZf UlBOU1dSRVEpOwotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwkJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA+PSA5KSB7CiAJCQlyZXFmID4+PSAyMzsKIAkJfSBlbHNlIHsKIAkJCXJlcWYg Jj0gfkdFTjZfVFVSQk9fRElTQUJMRTsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgaW50IGZy ZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCWludGVs X3VuY29yZV9mb3JjZXdha2VfcHV0KHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAKLQkJaWYgKElO VEVMX0dFTihpOTE1KSA+PSAxMSkgeworCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7 CiAJCQlwbV9pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjExX0dQTV9XR0JPWFBF UkZfSU5UUl9FTkFCTEUpOwogCQkJcG1faW1yID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBH RU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfTUFTSyk7CiAJCQkvKgpAQCAtMzYzLDcgKzM2Myw3IEBA IHN0YXRpYyBpbnQgZnJlcXVlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCiAJCQkgKi8KIAkJCXBtX2lzciA9IDA7CiAJCQlwbV9paXIgPSAwOwotCQl9IGVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA+PSA4KSB7CisJCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDgpIHsKIAkJCXBtX2llciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9HVF9J RVIoMikpOwogCQkJcG1faW1yID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU44X0dUX0lN UigyKSk7CiAJCQlwbV9pc3IgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjhfR1RfSVNS KDIpKTsKQEAgLTM4NiwxNCArMzg2LDE0IEBAIHN0YXRpYyBpbnQgZnJlcXVlbmN5X3Nob3coc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAkJc2VxX3ByaW50ZihtLCAiUE0gSUVS PTB4JTA4eCBJTVI9MHglMDh4LCBNQVNLPTB4JTA4eFxuIiwKIAkJCSAgIHBtX2llciwgcG1faW1y LCBwbV9tYXNrKTsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8PSAxMCkKKwkJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA8PSAxMCkKIAkJCXNlcV9wcmludGYobSwgIlBNIElTUj0weCUwOHggSUlSPTB4 JTA4eFxuIiwKIAkJCQkgICBwbV9pc3IsIHBtX2lpcik7CiAJCXNlcV9wcmludGYobSwgInBtX2lu dHJtc2tfbWJ6OiAweCUwOHhcbiIsCiAJCQkgICBycHMtPnBtX2ludHJtc2tfbWJ6KTsKIAkJc2Vx X3ByaW50ZihtLCAiR1RfUEVSRl9TVEFUVVM6IDB4JTA4eFxuIiwgZ3RfcGVyZl9zdGF0dXMpOwog CQlzZXFfcHJpbnRmKG0sICJSZW5kZXIgcC1zdGF0ZSByYXRpbzogJWRcbiIsCi0JCQkgICAoZ3Rf cGVyZl9zdGF0dXMgJiAoSU5URUxfR0VOKGk5MTUpID49IDkgPyAweDFmZjAwIDogMHhmZjAwKSkg Pj4gOCk7CisJCQkgICAoZ3RfcGVyZl9zdGF0dXMgJiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkg PyAweDFmZjAwIDogMHhmZjAwKSkgPj4gOCk7CiAJCXNlcV9wcmludGYobSwgIlJlbmRlciBwLXN0 YXRlIFZJRDogJWRcbiIsCiAJCQkgICBndF9wZXJmX3N0YXR1cyAmIDB4ZmYpOwogCQlzZXFfcHJp bnRmKG0sICJSZW5kZXIgcC1zdGF0ZSBsaW1pdDogJWRcbiIsCkBAIC00MzcsMjAgKzQzNywyMCBA QCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51 c2VkKQogCQltYXhfZnJlcSA9IChJU19HRU45X0xQKGk5MTUpID8gcnBfc3RhdGVfY2FwID4+IDAg OgogCQkJICAgIHJwX3N0YXRlX2NhcCA+PiAxNikgJiAweGZmOwogCQltYXhfZnJlcSAqPSAoSVNf R0VOOV9CQyhpOTE1KSB8fAotCQkJICAgICBJTlRFTF9HRU4oaTkxNSkgPj0gMTAgPyBHRU45X0ZS RVFfU0NBTEVSIDogMSk7CisJCQkgICAgIEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCA/IEdFTjlf RlJFUV9TQ0FMRVIgOiAxKTsKIAkJc2VxX3ByaW50ZihtLCAiTG93ZXN0IChSUE4pIGZyZXF1ZW5j eTogJWRNSHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJlcShycHMsIG1heF9mcmVxKSk7CiAKIAkJ bWF4X2ZyZXEgPSAocnBfc3RhdGVfY2FwICYgMHhmZjAwKSA+PiA4OwogCQltYXhfZnJlcSAqPSAo SVNfR0VOOV9CQyhpOTE1KSB8fAotCQkJICAgICBJTlRFTF9HRU4oaTkxNSkgPj0gMTAgPyBHRU45 X0ZSRVFfU0NBTEVSIDogMSk7CisJCQkgICAgIEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCA/IEdF TjlfRlJFUV9TQ0FMRVIgOiAxKTsKIAkJc2VxX3ByaW50ZihtLCAiTm9taW5hbCAoUlAxKSBmcmVx dWVuY3k6ICVkTUh6XG4iLAogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBtYXhfZnJlcSkpOwog CiAJCW1heF9mcmVxID0gKElTX0dFTjlfTFAoaTkxNSkgPyBycF9zdGF0ZV9jYXAgPj4gMTYgOgog CQkJICAgIHJwX3N0YXRlX2NhcCA+PiAwKSAmIDB4ZmY7CiAJCW1heF9mcmVxICo9IChJU19HRU45 X0JDKGk5MTUpIHx8Ci0JCQkgICAgIElOVEVMX0dFTihpOTE1KSA+PSAxMCA/IEdFTjlfRlJFUV9T Q0FMRVIgOiAxKTsKKwkJCSAgICAgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwID8gR0VOOV9GUkVR X1NDQUxFUiA6IDEpOwogCQlzZXFfcHJpbnRmKG0sICJNYXggbm9uLW92ZXJjbG9ja2VkIChSUDAp IGZyZXF1ZW5jeTogJWRNSHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJlcShycHMsIG1heF9mcmVx KSk7CiAJCXNlcV9wcmludGYobSwgIk1heCBvdmVyY2xvY2tlZCBmcmVxdWVuY3k6ICVkTUh6XG4i LApAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0YXRpYyBpbnQgbGxjX3Nob3coc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBtLT5wcml2YXRlOwog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7Ci0JY29uc3QgYm9vbCBl ZHJhbSA9IElOVEVMX0dFTihpOTE1KSA+IDg7CisJY29uc3QgYm9vbCBlZHJhbSA9IEdSQVBISUNT X1ZFUihpOTE1KSA+IDg7CiAJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CiAJdW5z aWduZWQgaW50IG1heF9ncHVfZnJlcSwgbWluX2dwdV9mcmVxOwogCWludGVsX3dha2VyZWZfdCB3 YWtlcmVmOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHN0YXRpYyBpbnQgbGxjX3Nob3coc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCiAJbWluX2dwdV9mcmVxID0gcnBzLT5taW5fZnJlcTsK IAltYXhfZ3B1X2ZyZXEgPSBycHMtPm1heF9mcmVxOwotCWlmIChJU19HRU45X0JDKGk5MTUpIHx8 IElOVEVMX0dFTihpOTE1KSA+PSAxMCkgeworCWlmIChJU19HRU45X0JDKGk5MTUpIHx8IEdSQVBI SUNTX1ZFUihpOTE1KSA+PSAxMCkgewogCQkvKiBDb252ZXJ0IEdUIGZyZXF1ZW5jeSB0byA1MCBI WiB1bml0cyAqLwogCQltaW5fZ3B1X2ZyZXEgLz0gR0VOOV9GUkVRX1NDQUxFUjsKIAkJbWF4X2dw dV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7CkBAIC01MTgsNyArNTE4LDcgQEAgc3RhdGljIGlu dCBsbGNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCQkgICBpbnRlbF9n cHVfZnJlcShycHMsCiAJCQkJCSAgKGdwdV9mcmVxICoKIAkJCQkJICAgKElTX0dFTjlfQkMoaTkx NSkgfHwKLQkJCQkJICAgIElOVEVMX0dFTihpOTE1KSA+PSAxMCA/CisJCQkJCSAgICBHUkFQSElD U19WRVIoaTkxNSkgPj0gMTAgPwogCQkJCQkgICAgR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSksCiAJ CQkgICAoKGlhX2ZyZXEgPj4gMCkgJiAweGZmKSAqIDEwMCwKIAkJCSAgICgoaWFfZnJlcSA+PiA4 KSAmIDB4ZmYpICogMTAwKTsKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdGF0aWMgaW50IHJwc19ib29z dF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCXNlcV9wcmludGYobSwg IldhaXQgYm9vc3RzOiAlZFxuIiwgUkVBRF9PTkNFKHJwcy0+Ym9vc3RzKSk7CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDYgJiYgaW50ZWxfcnBzX2lzX2FjdGl2ZShycHMpKSB7CisJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA2ICYmIGludGVsX3Jwc19pc19hY3RpdmUocnBzKSkgewogCQlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOwogCQl1MzIgcnB1cCwgcnB1 cGVpOwogCQl1MzIgcnBkb3duLCBycGRvd25laTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4y X2VuZ2luZV9jcy5jCmluZGV4IDk2NDYyMDBkMjc5Mi4uNjEzODM4MzA1MDVlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMKQEAgLTc0LDcgKzc0LDcgQEAgaW50IGdl bjRfZW1pdF9mbHVzaF9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQogCWNt ZCA9IE1JX0ZMVVNIOwogCWlmIChtb2RlICYgRU1JVF9JTlZBTElEQVRFKSB7CiAJCWNtZCB8PSBN SV9FWEVfRkxVU0g7Ci0JCWlmIChJU19HNFgocnEtPmVuZ2luZS0+aTkxNSkgfHwgSVNfR0VOKHJx LT5lbmdpbmUtPmk5MTUsIDUpKQorCQlpZiAoSVNfRzRYKHJxLT5lbmdpbmUtPmk5MTUpIHx8IEdS QVBISUNTX1ZFUihycS0+ZW5naW5lLT5pOTE1KSA9PSA1KQogCQkJY21kIHw9IE1JX0lOVkFMSURB VEVfSVNQOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9l bmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKaW5k ZXggNzMyYzJlZDFkOTMzLi45NGUwYTU2NjlmOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuOF9lbmdpbmVfY3MuYwpAQCAtMzgsNyArMzgsNyBAQCBpbnQgZ2VuOF9lbWl0X2ZsdXNoX3Jj cyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIG1vZGUpCiAJCSAqIE9uIEdFTjk6IGJlZm9y ZSBWRl9DQUNIRV9JTlZBTElEQVRFIHdlIG5lZWQgdG8gZW1pdCBhIE5VTEwKIAkJICogcGlwZSBj b250cm9sLgogCQkgKi8KLQkJaWYgKElTX0dFTihycS0+ZW5naW5lLT5pOTE1LCA5KSkKKwkJaWYg KEdSQVBISUNTX1ZFUihycS0+ZW5naW5lLT5pOTE1KSA9PSA5KQogCQkJdmZfZmx1c2hfd2EgPSB0 cnVlOwogCiAJCS8qIFdhRm9yR0FNSGFuZzprYmwgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2dlbjhfcHBndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf cHBndHQuYwppbmRleCBlM2E4OTI0ZDIyODYuLjIxYzhiNzM1MGI3YSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2dlbjhfcHBndHQuYwpAQCAtNzA5LDcgKzcwOSw3IEBAIHN0cnVjdCBpOTE1X3BwZ3R0 ICpnZW44X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCSAqCiAJICogR2VuMTIg aGFzIGluaGVyaXRlZCB0aGUgc2FtZSByZWFkLW9ubHkgZmF1bHQgaXNzdWUgZnJvbSBnZW4xMS4K IAkgKi8KLQlwcGd0dC0+dm0uaGFzX3JlYWRfb25seSA9ICFJU19HRU5fUkFOR0UoZ3QtPmk5MTUs IDExLCAxMik7CisJcHBndHQtPnZtLmhhc19yZWFkX29ubHkgPSAhSVNfR1JBUEhJQ1NfVkVSKGd0 LT5pOTE1LCAxMSwgMTIpOwogCiAJaWYgKEhBU19MTUVNKGd0LT5pOTE1KSkKIAkJcHBndHQtPnZt LmFsbG9jX3B0X2RtYSA9IGFsbG9jX3B0X2xtZW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2NvbnRleHRfc3NldS5jCmluZGV4IDhkZmQ4ZjY1NmFhYS4uZTg2ZDgyNTVmZWVjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYwpAQCAtNzYs NyArNzYsNyBAQCBpbnRlbF9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAogewogCWludCByZXQ7CiAKLQlHRU1fQlVHX09OKElOVEVMX0dFTihjZS0+ZW5n aW5lLT5pOTE1KSA8IDgpOworCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGNlLT5lbmdpbmUtPmk5 MTUpIDwgOCk7CiAKIAlyZXQgPSBpbnRlbF9jb250ZXh0X2xvY2tfcGlubmVkKGNlKTsKIAlpZiAo cmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCAzZjlh ODExZWIwMmIuLjU0YmFmMTdiODFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKQEAgLTI0MCwxMCArMjQwLDEwIEBAIHZvaWQgaW50ZWxfZW5naW5lX3NldF9o d3NwX3dyaXRlbWFzayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBtYXNrKQog CSAqIFRob3VnaCB0aGV5IGFkZGVkIG1vcmUgcmluZ3Mgb24gZzR4L2lsaywgdGhleSBkaWQgbm90 IGFkZAogCSAqIHBlci1lbmdpbmUgSFdTVEFNIHVudGlsIGdlbjYuCiAJICovCi0JaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpIDwgNiAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykK KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCA2ICYmIGVuZ2luZS0+Y2xhc3MgIT0g UkVOREVSX0NMQVNTKQogCQlyZXR1cm47CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkg Pj0gMykKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMykKIAkJRU5HSU5FX1dS SVRFKGVuZ2luZSwgUklOR19IV1NUQU0sIG1hc2spOwogCWVsc2UKIAkJRU5HSU5FX1dSSVRFMTYo ZW5naW5lLCBSSU5HX0hXU1RBTSwgbWFzayk7CkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwgZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQpCiAJCUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVSQVRJT047CiAKIAkvKiBP dmVycmlkZSB0byB1bmludGVycnVwdGlibGUgZm9yIE9wZW5DTCB3b3JrbG9hZHMuICovCi0JaWYg KElOVEVMX0dFTihpOTE1KSA9PSAxMiAmJiBlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDEyICYmIGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVS X0NMQVNTKQogCQllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IDA7CiAKIAllbmdp bmUtPmRlZmF1bHRzID0gZW5naW5lLT5wcm9wczsgLyogbmV2ZXIgdG8gY2hhbmdlIGFnYWluICov CkBAIC0zNTIsOCArMzUyLDggQEAgc3RhdGljIHZvaWQgX19zZXR1cF9lbmdpbmVfY2FwYWJpbGl0 aWVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJICogSEVWQyBzdXBwb3J0IGlz IHByZXNlbnQgb24gZmlyc3QgZW5naW5lIGluc3RhbmNlCiAJCSAqIGJlZm9yZSBHZW4xMSBhbmQg b24gYWxsIGluc3RhbmNlcyBhZnRlcndhcmRzLgogCQkgKi8KLQkJaWYgKElOVEVMX0dFTihpOTE1 KSA+PSAxMSB8fAotCQkgICAgKElOVEVMX0dFTihpOTE1KSA+PSA5ICYmIGVuZ2luZS0+aW5zdGFu Y2UgPT0gMCkpCisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEgfHwKKwkJICAgIChHUkFQ SElDU19WRVIoaTkxNSkgPj0gOSAmJiBlbmdpbmUtPmluc3RhbmNlID09IDApKQogCQkJZW5naW5l LT51YWJpX2NhcGFiaWxpdGllcyB8PQogCQkJCUk5MTVfVklERU9fQ0xBU1NfQ0FQQUJJTElUWV9I RVZDOwogCkBAIC0zNjEsMTQgKzM2MSwxNCBAQCBzdGF0aWMgdm9pZCBfX3NldHVwX2VuZ2luZV9j YXBhYmlsaXRpZXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkgKiBTRkMgYmxv Y2sgaXMgcHJlc2VudCBvbmx5IG9uIGV2ZW4gbG9naWNhbCBlbmdpbmUKIAkJICogaW5zdGFuY2Vz LgogCQkgKi8KLQkJaWYgKChJTlRFTF9HRU4oaTkxNSkgPj0gMTEgJiYKKwkJaWYgKChHUkFQSElD U19WRVIoaTkxNSkgPj0gMTEgJiYKIAkJICAgICAoZW5naW5lLT5ndC0+aW5mby52ZGJveF9zZmNf YWNjZXNzICYKIAkJICAgICAgQklUKGVuZ2luZS0+aW5zdGFuY2UpKSkgfHwKLQkJICAgIChJTlRF TF9HRU4oaTkxNSkgPj0gOSAmJiBlbmdpbmUtPmluc3RhbmNlID09IDApKQorCQkgICAgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA5ICYmIGVuZ2luZS0+aW5zdGFuY2UgPT0gMCkpCiAJCQllbmdpbmUt PnVhYmlfY2FwYWJpbGl0aWVzIHw9CiAJCQkJSTkxNV9WSURFT19BTkRfRU5IQU5DRV9DTEFTU19D QVBBQklMSVRZX1NGQzsKIAl9IGVsc2UgaWYgKGVuZ2luZS0+Y2xhc3MgPT0gVklERU9fRU5IQU5D RU1FTlRfQ0xBU1MpIHsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCQlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDkpCiAJCQllbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzIHw9CiAJCQkJ STkxNV9WSURFT19BTkRfRU5IQU5DRV9DTEFTU19DQVBBQklMSVRZX1NGQzsKIAl9CkBAIC00NjYs NyArNDY2LDcgQEAgc3RhdGljIGludGVsX2VuZ2luZV9tYXNrX3QgaW5pdF9lbmdpbmVfbWFzayhz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiAJaW5mby0+ZW5naW5lX21hc2sgPSBJTlRFTF9JTkZPKGk5 MTUpLT5wbGF0Zm9ybV9lbmdpbmVfbWFzazsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCAxMSkK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpCiAJCXJldHVybiBpbmZvLT5lbmdpbmVfbWFz azsKIAogCW1lZGlhX2Z1c2UgPSB+aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU4xMV9HVF9W RUJPWF9WREJPWF9ESVNBQkxFKTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgaW50ZWxfZW5n aW5lX21hc2tfdCBpbml0X2VuZ2luZV9tYXNrKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJCSAqIGhv b2tlZCB1cCB0byBhbiBTRkMgKFNjYWxlciAmIEZvcm1hdCBDb252ZXJ0ZXIpIHVuaXQuCiAJCSAq IEluIFRHTCBlYWNoIFZEQk9YIGhhcyBhY2Nlc3MgdG8gYW4gU0ZDLgogCQkgKi8KLQkJaWYgKElO VEVMX0dFTihpOTE1KSA+PSAxMiB8fCBsb2dpY2FsX3ZkYm94KysgJSAyID09IDApCisJCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPj0gMTIgfHwgbG9naWNhbF92ZGJveCsrICUgMiA9PSAwKQogCQkJ Z3QtPmluZm8udmRib3hfc2ZjX2FjY2VzcyB8PSBCSVQoaSk7CiAJfQogCWRybV9kYmcoJmk5MTUt PmRybSwgInZkYm94IGVuYWJsZTogJTA0eCwgaW5zdGFuY2VzOiAlMDRseFxuIiwKQEAgLTcyOSw3 ICs3MjksNyBAQCBzdGF0aWMgaW50IGVuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCWludGVsX2VuZ2luZV9pbml0X3doaXRlbGlzdChlbmdpbmUpOwog CWludGVsX2VuZ2luZV9pbml0X2N0eF93YShlbmdpbmUpOwogCi0JaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDEyKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikK IAkJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfUkVMQVRJVkVfTU1JTzsKIAogCXJl dHVybiAwOwpAQCAtOTk3LDkgKzk5Nyw5IEBAIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9o ZWFkKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCXU2NCBhY3RoZDsK IAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDgpCiAJCWFjdGhkID0gRU5HSU5FX1JFQUQ2NChlbmdpbmUsIFJJTkdfQUNUSEQsIFJJTkdfQUNU SERfVURXKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkKKwllbHNlIGlmIChHUkFQ SElDU19WRVIoaTkxNSkgPj0gNCkKIAkJYWN0aGQgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdf QUNUSEQpOwogCWVsc2UKIAkJYWN0aGQgPSBFTkdJTkVfUkVBRChlbmdpbmUsIEFDVEhEKTsKQEAg LTEwMTEsNyArMTAxMSw3IEBAIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJdTY0IGJiYWRkcjsKIAot CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIoZW5n aW5lLT5pOTE1KSA+PSA4KQogCQliYmFkZHIgPSBFTkdJTkVfUkVBRDY0KGVuZ2luZSwgUklOR19C QkFERFIsIFJJTkdfQkJBRERSX1VEVyk7CiAJZWxzZQogCQliYmFkZHIgPSBFTkdJTkVfUkVBRChl bmdpbmUsIFJJTkdfQkJBRERSKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIGludCBpbnRlbF9lbmdp bmVfc3RvcF9jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJaW50IGVyciA9 IDA7CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCAzKQorCWlmIChHUkFQSElDU19W RVIoZW5naW5lLT5pOTE1KSA8IDMpCiAJCXJldHVybiAtRU5PREVWOwogCiAJRU5HSU5FX1RSQUNF KGVuZ2luZSwgIlxuIik7CkBAIC0xMTA4LDcgKzExMDgsNyBAQCByZWFkX3N1YnNsaWNlX3JlZyhj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJdTMyIG1jcl9tYXNrLCBtY3Jf c3MsIG1jciwgb2xkX21jciwgdmFsOwogCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlu czsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDExKSB7CiAJCW1jcl9tYXNrID0gR0VOMTFfTUNSX1NMSUNFX01BU0sgfCBHRU4xMV9N Q1JfU1VCU0xJQ0VfTUFTSzsKIAkJbWNyX3NzID0gR0VOMTFfTUNSX1NMSUNFKHNsaWNlKSB8IEdF TjExX01DUl9TVUJTTElDRShzdWJzbGljZSk7CiAJfSBlbHNlIHsKQEAgLTExNTcsNyArMTE1Nyw3 IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAKIAltZW1zZXQoaW5zdGRvbmUsIDAsIHNpemVvZigqaW5zdGRvbmUp KTsKIAotCXN3aXRjaCAoSU5URUxfR0VOKGk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19WRVIo aTkxNSkpIHsKIAlkZWZhdWx0OgogCQlpbnN0ZG9uZS0+aW5zdGRvbmUgPQogCQkJaW50ZWxfdW5j b3JlX3JlYWQodW5jb3JlLCBSSU5HX0lOU1RET05FKG1taW9fYmFzZSkpOwpAQCAtMTE2Nyw3ICsx MTY3LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uID0KIAkJCWlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VON19TQ19JTlNURE9ORSk7Ci0JCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTIpIHsKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikgewogCQkJ aW5zdGRvbmUtPnNsaWNlX2NvbW1vbl9leHRyYVswXSA9CiAJCQkJaW50ZWxfdW5jb3JlX3JlYWQo dW5jb3JlLCBHRU4xMl9TQ19JTlNURE9ORV9FWFRSQSk7CiAJCQlpbnN0ZG9uZS0+c2xpY2VfY29t bW9uX2V4dHJhWzFdID0KQEAgLTEyMzAsNyArMTIzMCw3IEBAIHN0YXRpYyBib29sIHJpbmdfaXNf aWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWlkbGUgPSBmYWxzZTsKIAog CS8qIE5vIGJpdCBmb3IgZ2VuMiwgc28gYXNzdW1lIHRoZSBDUyBwYXJzZXIgaXMgaWRsZSAqLwot CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+IDIgJiYKKwlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPiAyICYmCiAJICAgICEoRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX01JX01P REUpICYgTU9ERV9JRExFKSkKIAkJaWRsZSA9IGZhbHNlOwogCkBAIC0xMzI3LDcgKzEzMjcsNyBA QCB2b2lkIGludGVsX2VuZ2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRl bF9ndCAqZ3QpCiAKIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3dpdGNoIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSkgeworCXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsKIAljYXNlIDI6CiAJ CXJldHVybiBmYWxzZTsgLyogdXNlcyBwaHlzaWNhbCBub3QgdmlydHVhbCBhZGRyZXNzZXMgKi8K IAljYXNlIDM6CkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVf cHJpbnRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNs aXN0czsKIAl1NjQgYWRkcjsKIAotCWlmIChlbmdpbmUtPmlkID09IFJFTkRFUl9DTEFTUyAmJiBJ U19HRU5fUkFOR0UoZGV2X3ByaXYsIDQsIDcpKQorCWlmIChlbmdpbmUtPmlkID09IFJFTkRFUl9D TEFTUyAmJiBJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDQsIDcpKQogCQlkcm1fcHJpbnRmKG0s ICJcdENDSUQ6IDB4JTA4eFxuIiwgRU5HSU5FX1JFQUQoZW5naW5lLCBDQ0lEKSk7CiAJaWYgKEhB U19FWEVDTElTVFMoZGV2X3ByaXYpKSB7CiAJCWRybV9wcmludGYobSwgIlx0RUxfU1RBVF9ISTog MHglMDh4XG4iLApAQCAtMTQ0OSwxMyArMTQ0OSwxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdp bmVfcHJpbnRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlkcm1f cHJpbnRmKG0sICJcdFJJTkdfQ1RMOiAgIDB4JTA4eCVzXG4iLAogCQkgICBFTkdJTkVfUkVBRChl bmdpbmUsIFJJTkdfQ1RMKSwKIAkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0NUTCkgJiAo UklOR19XQUlUIHwgUklOR19XQUlUX1NFTUFQSE9SRSkgPyAiIFt3YWl0aW5nXSIgOiAiIik7Ci0J aWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gMikgeworCWlmIChHUkFQSElDU19WRVIoZW5n aW5lLT5pOTE1KSA+IDIpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRSSU5HX01PREU6ICAweCUwOHgl c1xuIiwKIAkJCSAgIEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19NSV9NT0RFKSwKIAkJCSAgIEVO R0lORV9SRUFEKGVuZ2luZSwgUklOR19NSV9NT0RFKSAmIChNT0RFX0lETEUpID8gIiBbaWRsZV0i IDogIiIpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwlpZiAoR1JB UEhJQ1NfVkVSKGRldl9wcml2KSA+PSA2KSB7CiAJCWRybV9wcmludGYobSwgIlx0UklOR19JTVI6 ICAgMHglMDh4XG4iLAogCQkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0lNUikpOwogCQlk cm1fcHJpbnRmKG0sICJcdFJJTkdfRVNSOiAgIDB4JTA4eFxuIiwKQEAgLTE0NzIsMTUgKzE0NzIs MTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJYWRkciA9IGludGVsX2VuZ2luZV9nZXRfbGFzdF9iYXRj aF9oZWFkKGVuZ2luZSk7CiAJZHJtX3ByaW50ZihtLCAiXHRCQkFERFI6IDB4JTA4eF8lMDh4XG4i LAogCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49 IDgpCiAJCWFkZHIgPSBFTkdJTkVfUkVBRDY0KGVuZ2luZSwgUklOR19ETUFfRkFERCwgUklOR19E TUFfRkFERF9VRFcpOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKKwllbHNl IGlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDQpCiAJCWFkZHIgPSBFTkdJTkVfUkVBRChl bmdpbmUsIFJJTkdfRE1BX0ZBREQpOwogCWVsc2UKIAkJYWRkciA9IEVOR0lORV9SRUFEKGVuZ2lu ZSwgRE1BX0ZBRERfSThYWCk7CiAJZHJtX3ByaW50ZihtLCAiXHRETUFfRkFERFI6IDB4JTA4eF8l MDh4XG4iLAogCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsK LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJaWYgKEdSQVBISUNTX1ZFUihkZXZf cHJpdikgPj0gNCkgewogCQlkcm1fcHJpbnRmKG0sICJcdElQRUlSOiAweCUwOHhcbiIsCiAJCQkg ICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfSVBFSVIpKTsKIAkJZHJtX3ByaW50ZihtLCAiXHRJ UEVIUjogMHglMDh4XG4iLApAQCAtMTU1OSw3ICsxNTU5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJ CX0KIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJCWV4ZWNsaXN0c19hY3RpdmVfdW5sb2NrX2JoKGV4 ZWNsaXN0cyk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikgeworCX0gZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+IDYpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRQ UF9ESVJfQkFTRTogMHglMDh4XG4iLAogCQkJICAgRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX1BQ X0RJUl9CQVNFKSk7CiAJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0VfUkVBRDogMHglMDh4 XG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3Rz X3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19z dWJtaXNzaW9uLmMKaW5kZXggOGRiMjAwNDIyOTUwLi5mYzc3NTkyZDg4YTkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYwpA QCAtMTg0Nyw3ICsxODQ3LDcgQEAgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqaW5hY3RpdmUpCiAJCUVOR0lORV9UUkFDRShl bmdpbmUsICJjc2JbJWRdOiBzdGF0dXM9MHglMDh4OjB4JTA4eFxuIiwKIAkJCSAgICAgaGVhZCwg dXBwZXJfMzJfYml0cyhjc2IpLCBsb3dlcl8zMl9iaXRzKGNzYikpOwogCi0JCWlmIChJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwkJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp ID49IDEyKQogCQkJcHJvbW90ZSA9IGdlbjEyX2NzYl9wYXJzZShjc2IpOwogCQllbHNlCiAJCQlw cm9tb3RlID0gZ2VuOF9jc2JfcGFyc2UoY3NiKTsKQEAgLTI3NzIsNyArMjc3Miw3IEBAIHN0YXRp YyB2b2lkIGVuYWJsZV9leGVjbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiAJaW50ZWxfZW5naW5lX3NldF9od3NwX3dyaXRlbWFzayhlbmdpbmUsIH4wdSk7IC8qIEhXU1RB TSAqLwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDExKQorCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMSkKIAkJbW9kZSA9IF9NQVNLRURfQklUX0VOQUJMRShH RU4xMV9HRlhfRElTQUJMRV9MRUdBQ1lfTU9ERSk7CiAJZWxzZQogCQltb2RlID0gX01BU0tFRF9C SVRfRU5BQkxFKEdGWF9SVU5fTElTVF9FTkFCTEUpOwpAQCAtMzEwMyw3ICszMTAzLDcgQEAgc3Rh dGljIHZvaWQgZXhlY2xpc3RzX3Bhcmsoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiBzdGF0aWMgYm9vbCBjYW5fcHJlZW1wdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiB7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gOCkKKwlpZiAoR1JBUEhJQ1NfVkVS KGVuZ2luZS0+aTkxNSkgPiA4KQogCQlyZXR1cm4gdHJ1ZTsKIAogCS8qIEdQR1BVIG9uIGJkdyBy ZXF1aXJlcyBleHRyYSB3L2E7IG5vdCBpbXBsZW1lbnRlZCAqLwpAQCAtMzE1NiwxMyArMzE1Niwx MyBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjhfZW1pdF9mbHVzaF94Y3M7CiAJZW5n aW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9pbml0X2JyZWFkY3J1bWI7CiAJ ZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJf eGNzOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikgeworCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikgewogCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNy dW1iID0gZ2VuMTJfZW1pdF9maW5pX2JyZWFkY3J1bWJfeGNzOwogCQllbmdpbmUtPmVtaXRfZmx1 c2ggPSBnZW4xMl9lbWl0X2ZsdXNoX3hjczsKIAl9CiAJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJt aXNzaW9uID0gZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247CiAKLQlpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkgeworCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSA8IDExKSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhfbG9naWNhbF9yaW5nX2VuYWJs ZV9pcnE7CiAJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW44X2xvZ2ljYWxfcmluZ19kaXNhYmxl X2lycTsKIAl9IGVsc2UgewpAQCAtMzE5NSw3ICszMTk1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNh bF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ dW5zaWduZWQgaW50IHNoaWZ0ID0gMDsKIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8 IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgMTEpIHsKIAkJY29uc3Qg dTggaXJxX3NoaWZ0c1tdID0gewogCQkJW1JDUzBdICA9IEdFTjhfUkNTX0lSUV9TSElGVCwKIAkJ CVtCQ1MwXSAgPSBHRU44X0JDU19JUlFfU0hJRlQsCkBAIC0zMjE1LDcgKzMyMTUsNyBAQCBzdGF0 aWMgdm9pZCBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAogc3RhdGljIHZvaWQgcmNzX3N1Ym1pc3Npb25fb3ZlcnJpZGUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpKSB7CiAJY2FzZSAxMjoK IAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVzaF9yY3M7CiAJCWVuZ2luZS0+ ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3M7CkBA IC0zMjY2LDEzICszMjY2LDEzIEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbl9zZXR1 cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZXhlY2xpc3RzLT5jc2Jfd3JpdGUg PQogCQkmZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW2ludGVsX2h3c19jc2Jfd3JpdGVfaW5kZXgo aTkxNSldOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDExKQorCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPCAxMSkKIAkJZXhlY2xpc3RzLT5jc2Jfc2l6ZSA9IEdFTjhfQ1NCX0VOVFJJRVM7CiAJ ZWxzZQogCQlleGVjbGlzdHMtPmNzYl9zaXplID0gR0VOMTFfQ1NCX0VOVFJJRVM7CiAKIAllbmdp bmUtPmNvbnRleHRfdGFnID0gR0VOTUFTSyhCSVRTX1BFUl9MT05HIC0gMiwgMCk7Ci0JaWYgKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUt Pmk5MTUpID49IDExKSB7CiAJCWV4ZWNsaXN0cy0+Y2NpZCB8PSBlbmdpbmUtPmluc3RhbmNlIDw8 IChHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfU0hJRlQgLSAzMik7CiAJCWV4ZWNsaXN0cy0+Y2NpZCB8 PSBlbmdpbmUtPmNsYXNzIDw8IChHRU4xMV9FTkdJTkVfQ0xBU1NfU0hJRlQgLSAzMik7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jCmluZGV4IDM1MDY5Y2E1ZDdkZS4uMTliZDg4 NTZjZTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jCkBAIC0xMDcsMTAgKzEw NywxMCBAQCBzdGF0aWMgYm9vbCBuZWVkc19pZGxlX21hcHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiAJaWYgKCFpbnRlbF92dGRfYWN0aXZlKCkpCiAJCXJldHVybiBmYWxzZTsKIAot CWlmIChJU19HRU4oaTkxNSwgNSkgJiYgSVNfTU9CSUxFKGk5MTUpKQorCWlmIChHUkFQSElDU19W RVIoaTkxNSkgPT0gNSAmJiBJU19NT0JJTEUoaTkxNSkpCiAJCXJldHVybiB0cnVlOwogCi0JaWYg KElTX0dFTihpOTE1LCAxMikpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMikKIAkJcmV0 dXJuIHRydWU7IC8qIFhYWCBETUFSIGZhdWx0IHJlYXNvbiA3ICovCiAKIAlyZXR1cm4gZmFsc2U7 CkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2dndHRfaW52YWxpZGF0ZShzdHJ1 Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCiAJZ2VuOF9nZ3R0X2ludmFsaWRhdGUoZ2d0dCk7CiAKLQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIp CiAJCWludGVsX3VuY29yZV93cml0ZV9mdyh1bmNvcmUsIEdFTjEyX0dVQ19UTEJfSU5WX0NSLAog CQkJCSAgICAgIEdFTjEyX0dVQ19UTEJfSU5WX0NSX0lOVkFMSURBVEUpOwogCWVsc2UKQEAgLTgy MCw3ICs4MjAsNyBAQCBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBpOTE1X2dn dHQgKmdndHQsIHU2NCBzaXplKQogCSAqIHJlc29ydCB0byBhbiB1bmNhY2hlZCBtYXBwaW5nLiBU aGUgV0MgaXNzdWUgaXMgZWFzaWx5IGNhdWdodCBieSB0aGUKIAkgKiByZWFkYmFjayBjaGVjayB3 aGVuIHdyaXRpbmcgR1RUIFBURSBlbnRyaWVzLgogCSAqLwotCWlmIChJU19HRU45X0xQKGk5MTUp IHx8IElOVEVMX0dFTihpOTE1KSA+PSAxMCkKKwlpZiAoSVNfR0VOOV9MUChpOTE1KSB8fCBHUkFQ SElDU19WRVIoaTkxNSkgPj0gMTApCiAJCWdndHQtPmdzbSA9IGlvcmVtYXAocGh5c19hZGRyLCBz aXplKTsKIAllbHNlCiAJCWdndHQtPmdzbSA9IGlvcmVtYXBfd2MocGh5c19hZGRyLCBzaXplKTsK QEAgLTEwNjUsNyArMTA2NSw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9nbWNoX3Byb2JlKHN0cnVjdCBp OTE1X2dndHQgKmdndHQpCiAJCWdndHQtPnZtLnB0ZV9lbmNvZGUgPSBoc3dfcHRlX2VuY29kZTsK IAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGk5MTUpKQogCQlnZ3R0LT52bS5wdGVfZW5jb2RlID0g Ynl0X3B0ZV9lbmNvZGU7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDcpCisJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDcpCiAJCWdndHQtPnZtLnB0ZV9lbmNvZGUgPSBpdmJf cHRlX2VuY29kZTsKIAllbHNlCiAJCWdndHQtPnZtLnB0ZV9lbmNvZGUgPSBzbmJfcHRlX2VuY29k ZTsKQEAgLTExMzcsOSArMTEzNyw5IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9odyhzdHJ1Y3Qg aTkxNV9nZ3R0ICpnZ3R0LCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWdndHQtPnZtLmRtYSA9IGk5 MTUtPmRybS5kZXY7CiAJZG1hX3Jlc3ZfaW5pdCgmZ2d0dC0+dm0ucmVzdik7CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpIDw9IDUpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSA1KQogCQlyZXQg PSBpOTE1X2dtY2hfcHJvYmUoZ2d0dCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpIDwgOCkK KwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA4KQogCQlyZXQgPSBnZW42X2dtY2hfcHJv YmUoZ2d0dCk7CiAJZWxzZQogCQlyZXQgPSBnZW44X2dtY2hfcHJvYmUoZ2d0dCk7CkBAIC0xMTk2 LDcgKzExOTYsNyBAQCBpbnQgaTkxNV9nZ3R0X3Byb2JlX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogCiBpbnQgaTkxNV9nZ3R0X2VuYWJsZV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIHsKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNiAmJiAhaW50ZWxfZW5hYmxl X2d0dCgpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA2ICYmICFpbnRlbF9lbmFibGVfZ3R0 KCkpCiAJCXJldHVybiAtRUlPOwogCiAJcmV0dXJuIDA7CkBAIC0xMjYxLDcgKzEyNjEsNyBAQCB2 b2lkIGk5MTVfZ2d0dF9yZXN1bWUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAlpZiAoZmx1c2gp CiAJCXdiaW52ZF9vbl9hbGxfY3B1cygpOwogCi0JaWYgKElOVEVMX0dFTihnZ3R0LT52bS5pOTE1 KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIoZ2d0dC0+dm0uaTkxNSkgPj0gOCkKIAkJc2V0dXBf cHJpdmF0ZV9wYXQoZ2d0dC0+dm0uZ3QtPnVuY29yZSk7CiAKIAlpbnRlbF9nZ3R0X3Jlc3RvcmVf ZmVuY2VzKGdndHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z2d0dF9mZW5jaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNp bmcuYwppbmRleCA3YmY4NGNkMjE1NDMuLmNhYzdmM2Y0NDY0MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dF9mZW5jaW5nLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dF9mZW5jaW5nLmMKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGlj IHZvaWQgaTk2NV93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSkK IAlpbnQgZmVuY2VfcGl0Y2hfc2hpZnQ7CiAJdTY0IHZhbDsKIAotCWlmIChJTlRFTF9HRU4oZmVu Y2VfdG9faTkxNShmZW5jZSkpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGZlbmNlX3RvX2k5 MTUoZmVuY2UpKSA+PSA2KSB7CiAJCWZlbmNlX3JlZ19sbyA9IEZFTkNFX1JFR19HRU42X0xPKGZl bmNlLT5pZCk7CiAJCWZlbmNlX3JlZ19oaSA9IEZFTkNFX1JFR19HRU42X0hJKGZlbmNlLT5pZCk7 CiAJCWZlbmNlX3BpdGNoX3NoaWZ0ID0gR0VONl9GRU5DRV9QSVRDSF9TSElGVDsKQEAgLTE3Myw5 ICsxNzMsOSBAQCBzdGF0aWMgdm9pZCBmZW5jZV93cml0ZShzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcg KmZlbmNlKQogCSAqIGFuZCBleHBsaWNpdGx5IG1hbmFnZWQgZm9yIGludGVybmFsIHVzZXJzLgog CSAqLwogCi0JaWYgKElTX0dFTihpOTE1LCAyKSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09 IDIpCiAJCWk4MzBfd3JpdGVfZmVuY2VfcmVnKGZlbmNlKTsKLQllbHNlIGlmIChJU19HRU4oaTkx NSwgMykpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDMpCiAJCWk5MTVfd3JpdGVf ZmVuY2VfcmVnKGZlbmNlKTsKIAllbHNlCiAJCWk5NjVfd3JpdGVfZmVuY2VfcmVnKGZlbmNlKTsK QEAgLTE4OCw3ICsxODgsNyBAQCBzdGF0aWMgdm9pZCBmZW5jZV93cml0ZShzdHJ1Y3QgaTkxNV9m ZW5jZV9yZWcgKmZlbmNlKQogCiBzdGF0aWMgYm9vbCBncHVfdXNlc19mZW5jZV9yZWdpc3RlcnMo c3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSkKIHsKLQlyZXR1cm4gSU5URUxfR0VOKGZlbmNl X3RvX2k5MTUoZmVuY2UpKSA8IDQ7CisJcmV0dXJuIEdSQVBISUNTX1ZFUihmZW5jZV90b19pOTE1 KGZlbmNlKSkgPCA0OwogfQogCiBzdGF0aWMgaW50IGZlbmNlX3VwZGF0ZShzdHJ1Y3QgaTkxNV9m ZW5jZV9yZWcgKmZlbmNlLApAQCAtNTY5LDcgKzU2OSw3IEBAIHN0YXRpYyB2b2lkIGRldGVjdF9i aXRfNl9zd2l6emxlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCiAJdTMyIHN3aXp6bGVfeCA9IEk5 MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOOwogCXUzMiBzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NX SVpaTEVfVU5LTk9XTjsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCB8fCBJU19WQUxMRVlW SUVXKGk5MTUpKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4IHx8IElTX1ZBTExFWVZJ RVcoaTkxNSkpIHsKIAkJLyoKIAkJICogT24gQkRXKywgc3dpenpsaW5nIGlzIG5vdCB1c2VkLiBX ZSBsZWF2ZSB0aGUgQ1BVIG1lbW9yeQogCQkgKiBjb250cm9sbGVyIGluIGNoYXJnZSBvZiBvcHRp bWl6aW5nIG1lbW9yeSBhY2Nlc3NlcyB3aXRob3V0CkBAIC01NzksNyArNTc5LDcgQEAgc3RhdGlj IHZvaWQgZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAkJICov CiAJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOwogCQlzd2l6emxlX3kgPSBJ OTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2 KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikgewogCQlpZiAoaTkxNS0+ cHJlc2VydmVfYmlvc19zd2l6emxlKSB7CiAJCQlpZiAoaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LCBESVNQX0FSQl9DVEwpICYKIAkJCSAgICBESVNQX1RJTEVfU1VSRkFDRV9TV0laWkxJTkcpIHsK QEAgLTYxMSwxNCArNjExLDE0IEBAIHN0YXRpYyB2b2lkIGRldGVjdF9iaXRfNl9zd2l6emxlKHN0 cnVjdCBpOTE1X2dndHQgKmdndHQpCiAJCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxF X05PTkU7CiAJCQl9CiAJCX0KLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpIHsKIAkJLyoKIAkJICogT24gSXJvbmxha2Ug d2hhdGV2ZXIgRFJBTSBjb25maWcsIEdQVSBhbHdheXMgZG8KIAkJICogc2FtZSBzd2l6emxpbmcg c2V0dXAuCiAJCSAqLwogCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMDsKIAkJ c3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFXzk7Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkx NSwgMikpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAyKSB7CiAJCS8qCiAJ CSAqIEFzIGZhciBhcyB3ZSBrbm93LCB0aGUgODY1IGRvZXNuJ3QgaGF2ZSB0aGVzZSBiaXQgNgog CQkgKiBzd2l6emxpbmcgaXNzdWVzLgpAQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyB2b2lkIGRl dGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCiAJCX0KIAogCQkvKiBj aGVjayBmb3IgTC1zaGFwZWQgbWVtb3J5IGFrYSBtb2RpZmllZCBlbmhhbmNlZCBhZGRyZXNzaW5n ICovCi0JCWlmIChJU19HRU4oaTkxNSwgNCkgJiYKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9 PSA0ICYmCiAJCSAgICAhKGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgRENDMikgJiBEQ0MyX01P RElGSUVEX0VOSEFOQ0VEX0RJU0FCTEUpKSB7CiAJCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NX SVpaTEVfVU5LTk9XTjsKIAkJCXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dO OwpAQCAtODQ0LDEwICs4NDQsMTAgQEAgdm9pZCBpbnRlbF9nZ3R0X2luaXRfZmVuY2VzKHN0cnVj dCBpOTE1X2dndHQgKmdndHQpCiAKIAlpZiAoIWk5MTVfZ2d0dF9oYXNfYXBlcnR1cmUoZ2d0dCkp CiAJCW51bV9mZW5jZXMgPSAwOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA3ICYmCisJ ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDcgJiYKIAkJICEoSVNfVkFMTEVZVklFVyhp OTE1KSB8fCBJU19DSEVSUllWSUVXKGk5MTUpKSkKIAkJbnVtX2ZlbmNlcyA9IDMyOwotCWVsc2Ug aWYgKElOVEVMX0dFTihpOTE1KSA+PSA0IHx8CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDQgfHwKIAkJIElTX0k5NDVHKGk5MTUpIHx8IElTX0k5NDVHTShpOTE1KSB8fAogCQkgSVNf RzMzKGk5MTUpIHx8IElTX1BJTkVWSUVXKGk5MTUpKQogCQludW1fZmVuY2VzID0gMTY7CkBAIC04 OTUsMjkgKzg5NSwyOSBAQCB2b2lkIGludGVsX2d0X2luaXRfc3dpenpsaW5nKHN0cnVjdCBpbnRl bF9ndCAqZ3QpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKIAlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOwogCi0JaWYgKElOVEVMX0dF TihpOTE1KSA8IDUgfHwKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgNSB8fAogCSAgICBpOTE1 LT5nZ3R0LmJpdF82X3N3aXp6bGVfeCA9PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORSkKIAkJcmV0 dXJuOwogCiAJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIERJU1BfQVJCX0NUTCwgMCwgRElTUF9U SUxFX1NVUkZBQ0VfU1dJWlpMSU5HKTsKIAotCWlmIChJU19HRU4oaTkxNSwgNSkpCisJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA9PSA1KQogCQlyZXR1cm47CiAKIAlpbnRlbF91bmNvcmVfcm13KHVu Y29yZSwgVElMRUNUTCwgMCwgVElMRUNUTF9TV1pDVEwpOwogCi0JaWYgKElTX0dFTihpOTE1LCA2 KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCiAJCWludGVsX3VuY29yZV93cml0ZSh1 bmNvcmUsCiAJCQkJICAgQVJCX01PREUsCiAJCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9N T0RFX1NXSVpaTEVfU05CKSk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDcpKQorCWVsc2UgaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA9PSA3KQogCQlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLAog CQkJCSAgIEFSQl9NT0RFLAogCQkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShBUkJfTU9ERV9TV0la WkxFX0lWQikpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCA4KSkKKwllbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPT0gOCkKIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBH QU1UQVJCTU9ERSwKIAkJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9C RFcpKTsKIAllbHNlCi0JCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOworCQlNSVNTSU5H X0NBU0UoR1JBUEhJQ1NfVkVSKGk5MTUpKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5j CmluZGV4IDhkNzdkY2JhZDA1OS4uN2YyNDMwMWNlZjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0LmMKQEAgLTExNSwxMCArMTE1LDEwIEBAIHN0YXRpYyB2b2lkIGluaXRfdW51c2VkX3Jp bmdzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjFfQkFT RSk7CiAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjJfQkFTRSk7CiAJCWluaXRfdW51c2VkX3Jp bmcoZ3QsIFNSQjNfQkFTRSk7Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgMikpIHsKKwl9IGVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAyKSB7CiAJCWluaXRfdW51c2VkX3JpbmcoZ3Qs IFNSQjBfQkFTRSk7CiAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjFfQkFTRSk7Ci0JfSBlbHNl IGlmIChJU19HRU4oaTkxNSwgMykpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9 PSAzKSB7CiAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFBSQjFfQkFTRSk7CiAJCWluaXRfdW51c2Vk X3JpbmcoZ3QsIFBSQjJfQkFTRSk7CiAJfQpAQCAtMTM1LDcgKzEzNSw3IEBAIGludCBpbnRlbF9n dF9pbml0X2h3KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJLyogRG91YmxlIGxheWVyIHNlY3VyaXR5 IGJsYW5rZXQsIHNlZSBpOTE1X2dlbV9pbml0KCkgKi8KIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCi0JaWYgKEhBU19FRFJBTShpOTE1KSAmJiBJ TlRFTF9HRU4oaTkxNSkgPCA5KQorCWlmIChIQVNfRURSQU0oaTkxNSkgJiYgR1JBUEhJQ1NfVkVS KGk5MTUpIDwgOSkKIAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEhTV19JRElDUiwgMCwgSURJ SEFTSE1TSygweGYpKTsKIAogCWlmIChJU19IQVNXRUxMKGk5MTUpKQpAQCAtMjA4LDEwICsyMDgs MTAgQEAgaW50ZWxfZ3RfY2xlYXJfZXJyb3JfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9ndCAqZ3Qs CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKIAl1MzIgZWlyOwog Ci0JaWYgKCFJU19HRU4oaTkxNSwgMikpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSAhPSAyKQog CQljbGVhcl9yZWdpc3Rlcih1bmNvcmUsIFBHVEJMX0VSKTsKIAotCWlmIChJTlRFTF9HRU4oaTkx NSkgPCA0KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA0KQogCQljbGVhcl9yZWdpc3Rlcih1 bmNvcmUsIElQRUlSKFJFTkRFUl9SSU5HX0JBU0UpKTsKIAllbHNlCiAJCWNsZWFyX3JlZ2lzdGVy KHVuY29yZSwgSVBFSVJfSTk2NSk7CkBAIC0yMjksMTMgKzIyOSwxMyBAQCBpbnRlbF9ndF9jbGVh cl9lcnJvcl9yZWdpc3RlcnMoc3RydWN0IGludGVsX2d0ICpndCwKIAkJCQkgICBJOTE1X01BU1RF Ul9FUlJPUl9JTlRFUlJVUFQpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyKSB7CiAJCXJtd19jbGVhcih1bmNvcmUsIEdF TjEyX1JJTkdfRkFVTFRfUkVHLCBSSU5HX0ZBVUxUX1ZBTElEKTsKIAkJaW50ZWxfdW5jb3JlX3Bv c3RpbmdfcmVhZCh1bmNvcmUsIEdFTjEyX1JJTkdfRkFVTFRfUkVHKTsKLQl9IGVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSA4KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g OCkgewogCQlybXdfY2xlYXIodW5jb3JlLCBHRU44X1JJTkdfRkFVTFRfUkVHLCBSSU5HX0ZBVUxU X1ZBTElEKTsKIAkJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIEdFTjhfUklOR19G QVVMVF9SRUcpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwl9IGVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7CiAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKIAkJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKQEAgLTI3Myw3ICsyNzMsNyBA QCBzdGF0aWMgdm9pZCBnZW44X2NoZWNrX2ZhdWx0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWk5 MTVfcmVnX3QgZmF1bHRfcmVnLCBmYXVsdF9kYXRhMF9yZWcsIGZhdWx0X2RhdGExX3JlZzsKIAl1 MzIgZmF1bHQ7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMikgeworCWlmIChHUkFQ SElDU19WRVIoZ3QtPmk5MTUpID49IDEyKSB7CiAJCWZhdWx0X3JlZyA9IEdFTjEyX1JJTkdfRkFV TFRfUkVHOwogCQlmYXVsdF9kYXRhMF9yZWcgPSBHRU4xMl9GQVVMVF9UTEJfREFUQTA7CiAJCWZh dWx0X2RhdGExX3JlZyA9IEdFTjEyX0ZBVUxUX1RMQl9EQVRBMTsKQEAgLTMxMyw5ICszMTMsOSBA QCB2b2lkIGludGVsX2d0X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGludGVsX2d0ICpn dCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OwogCiAJLyogRnJv bSBHRU44IG9ud2FyZHMgd2Ugb25seSBoYXZlIG9uZSAnQWxsIEVuZ2luZSBGYXVsdCBSZWdpc3Rl cicgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSA4KQogCQlnZW44X2NoZWNrX2ZhdWx0cyhndCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5 MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfY2hl Y2tfZmF1bHRzKGd0KTsKIAllbHNlCiAJCXJldHVybjsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lk IGludGVsX2d0X2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB2b2lkIGlu dGVsX2d0X2NoaXBzZXRfZmx1c2goc3RydWN0IGludGVsX2d0ICpndCkKIHsKIAl3bWIoKTsKLQlp ZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDYpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkg PCA2KQogCQlpbnRlbF9ndHRfY2hpcHNldF9mbHVzaCgpOwogfQogCkBAIC01OTEsNyArNTkxLDgg QEAgaW50IGludGVsX2d0X2luaXQoc3RydWN0IGludGVsX2d0ICpndCkKIAkgKi8KIAlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX2dldChndC0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAotCWVyciA9 IGludGVsX2d0X2luaXRfc2NyYXRjaChndCwgSVNfR0VOKGd0LT5pOTE1LCAyKSA/IFNaXzI1Nksg OiBTWl80Syk7CisJZXJyID0gaW50ZWxfZ3RfaW5pdF9zY3JhdGNoKGd0LAorCQkJCSAgICBHUkFQ SElDU19WRVIoZ3QtPmk5MTUpID09IDIgPyBTWl8yNTZLIDogU1pfNEspOwogCWlmIChlcnIpCiAJ CWdvdG8gb3V0X2Z3OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndF9jbG9ja191dGlscy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xv Y2tfdXRpbHMuYwppbmRleCA1ODJmY2FlZTExYWEuLjlmMGU3MjlkMmQxNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5jCkBAIC03Niw3ICs3Niw3 IEBAIHN0YXRpYyB1MzIgcmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlKQogCXUzMiBmMTlfMl9taHogPSAxOTIwMDAwMDsKIAl1MzIgZjI0X21oeiA9IDI0MDAw MDAwOwogCi0JaWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUpIDw9IDQpIHsKKwlpZiAoR1JBUEhJ Q1NfVkVSKHVuY29yZS0+aTkxNSkgPD0gNCkgewogCQkvKgogCQkgKiBQUk1zIHNheToKIAkJICoK QEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJCSAqICAgICAgKOKAnENMS0NGR+KAnSkgTUNIQkFSIHJl Z2lzdGVyKQogCQkgKi8KIAkJcmV0dXJuIFJVTlRJTUVfSU5GTyh1bmNvcmUtPmk5MTUpLT5yYXdj bGtfZnJlcSAqIDEwMDAgLyAxNjsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUp IDw9IDgpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUpIDw9IDgpIHsK IAkJLyoKIAkJICogUFJNcyBzYXk6CiAJCSAqCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB1MzIg cmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCQkgKiAg ICAgIHJvbGxpbmcgb3ZlciBldmVyeSAxLjUgaG91cnMpLgogCQkgKi8KIAkJcmV0dXJuIGYxMl81 X21oejsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUpIDw9IDkpIHsKKwl9IGVs c2UgaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUpIDw9IDkpIHsKIAkJdTMyIGN0Y19yZWcg PSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENUQ19NT0RFKTsKIAkJdTMyIGZyZXEgPSAwOwog CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJCX0KIAogCQlyZXR1cm4gZnJlcTsKLQl9IGVsc2Ug aWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUpIDw9IDEyKSB7CisJfSBlbHNlIGlmIChHUkFQSElD U19WRVIodW5jb3JlLT5pOTE1KSA8PSAxMikgewogCQl1MzIgY3RjX3JlZyA9IGludGVsX3VuY29y ZV9yZWFkKHVuY29yZSwgQ1RDX01PREUpOwogCQl1MzIgZnJlcSA9IDA7CiAKQEAgLTEyOCw3ICsx MjgsNyBAQCBzdGF0aWMgdTMyIHJlYWRfY2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSkKIAkJfSBlbHNlIHsKIAkJCXUzMiBjMCA9IGludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgUlBNX0NPTkZJRzApOwogCi0JCQlpZiAoSU5URUxfR0VOKHVuY29yZS0+aTkxNSkgPD0g MTApCisJCQlpZiAoR1JBUEhJQ1NfVkVSKHVuY29yZS0+aTkxNSkgPD0gMTApCiAJCQkJZnJlcSA9 IGdlbjEwX2dldF9jcnlzdGFsX2Nsb2NrX2ZyZXEodW5jb3JlLCBjMCk7CiAJCQllbHNlCiAJCQkJ ZnJlcSA9IGdlbjExX2dldF9jcnlzdGFsX2Nsb2NrX2ZyZXEodW5jb3JlLCBjMCk7CkBAIC0yMTEs NyArMjExLDcgQEAgdTY0IGludGVsX2d0X25zX3RvX3BtX2ludGVydmFsKGNvbnN0IHN0cnVjdCBp bnRlbF9ndCAqZ3QsIHU2NCBucykKIAkgKiBmcm96ZW4gbWFjaGluZS4KIAkgKi8KIAl2YWwgPSBk aXZfdTY0X3JvdW5kdXAoaW50ZWxfZ3RfbnNfdG9fY2xvY2tfaW50ZXJ2YWwoZ3QsIG5zKSwgMTYp OwotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDYpKQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUp ID09IDYpCiAJCXZhbCA9IGRpdl91NjRfcm91bmR1cCh2YWwsIDI1KSAqIDI1OwogCiAJcmV0dXJu IHZhbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2lycS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKaW5kZXggZDI5MTI2YzQ1 OGJhLi4xZWM2M2NjZWFiZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2lycS5j CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBnZW41X2d0X2lycV9yZXNldChzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNvcmU7CiAKIAlH RU4zX0lSUV9SRVNFVCh1bmNvcmUsIEdUKTsKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA2 KQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDYpCiAJCUdFTjNfSVJRX1JFU0VUKHVu Y29yZSwgR0VONl9QTSk7CiB9CiAKQEAgLTQxMywxNCArNDEzLDE0IEBAIHZvaWQgZ2VuNV9ndF9p cnFfcG9zdGluc3RhbGwoc3RydWN0IGludGVsX2d0ICpndCkKIAl9CiAKIAlndF9pcnFzIHw9IEdU X1JFTkRFUl9VU0VSX0lOVEVSUlVQVDsKLQlpZiAoSVNfR0VOKGd0LT5pOTE1LCA1KSkKKwlpZiAo R1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA9PSA1KQogCQlndF9pcnFzIHw9IElMS19CU0RfVVNFUl9J TlRFUlJVUFQ7CiAJZWxzZQogCQlndF9pcnFzIHw9IEdUX0JMVF9VU0VSX0lOVEVSUlVQVCB8IEdU X0JTRF9VU0VSX0lOVEVSUlVQVDsKIAogCUdFTjNfSVJRX0lOSVQodW5jb3JlLCBHVCwgZ3QtPmd0 X2ltciwgZ3RfaXJxcyk7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA2KSB7CisJaWYg KEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gNikgewogCQkvKgogCQkgKiBSUFMgaW50ZXJydXB0 cyB3aWxsIGdldCBlbmFibGVkL2Rpc2FibGVkIG9uIGRlbWFuZCB3aGVuIFJQUwogCQkgKiBpdHNl bGYgaXMgZW5hYmxlZC9kaXNhYmxlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2d0X3BtX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf cG1faXJxLmMKaW5kZXggODExYTExZWQxODFjLi5mZTUxZjg5NGIwNzMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX2lycS5jCkBAIC0xNiwxMCArMTYsMTAgQEAgc3RhdGlj IHZvaWQgd3JpdGVfcG1faW1yKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJdTMyIG1hc2sgPSBndC0+ cG1faW1yOwogCWk5MTVfcmVnX3QgcmVnOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkg eworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsKIAkJcmVnID0gR0VOMTFfR1BNX1dH Qk9YUEVSRl9JTlRSX01BU0s7CiAJCW1hc2sgPDw9IDE2OyAvKiBwbSBpcyBpbiB1cHBlciBoYWxm ICovCi0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDgpIHsKIAkJcmVnID0gR0VOOF9HVF9JTVIoMik7CiAJfSBlbHNl IHsKIAkJcmVnID0gR0VONl9QTUlNUjsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBnZW42X2d0X3Bt X21hc2tfaXJxKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHUzMiBtYXNrKQogdm9pZCBnZW42X2d0X3Bt X3Jlc2V0X2lpcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1MzIgcmVzZXRfbWFzaykKIHsKIAlzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOwotCWk5MTVfcmVnX3QgcmVnID0g SU5URUxfR0VOKGd0LT5pOTE1KSA+PSA4ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlSOwor CWk5MTVfcmVnX3QgcmVnID0gR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4ID8gR0VOOF9HVF9J SVIoMikgOiBHRU42X1BNSUlSOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZ3QtPmlycV9sb2Nr KTsKIApAQCAtNzcsMTAgKzc3LDEwIEBAIHN0YXRpYyB2b2lkIHdyaXRlX3BtX2llcihzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogCXUzMiBtYXNrID0gZ3QtPnBtX2llcjsKIAlpOTE1X3JlZ190IHJlZzsK IAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDExKSB7CiAJCXJlZyA9IEdFTjExX0dQTV9XR0JPWFBFUkZfSU5UUl9FTkFCTEU7CiAJCW1h c2sgPDw9IDE2OyAvKiBwbSBpcyBpbiB1cHBlciBoYWxmICovCi0JfSBlbHNlIGlmIChJTlRFTF9H RU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpIHsK IAkJcmVnID0gR0VOOF9HVF9JRVIoMik7CiAJfSBlbHNlIHsKIAkJcmVnID0gR0VONl9QTUlFUjsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmMKaW5kZXggOWI5OGY5ZDlmYWEzLi5iOWM5OTkz NTczZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jCkBAIC0zMjcsNyArMzI3LDcg QEAgdm9pZCBndHRfd3JpdGVfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2d0ICpndCkKIAkJaW50 ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBHRU44X0wzX0xSQV8xX0dQR1BVLAogCQkJ CSAgIEdFTjlfTDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxVRV9CWFQpOwotCWVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSA5ICYmIElOVEVMX0dFTihpOTE1KSA8PSAxMSkKKwllbHNlIGlmIChH UkFQSElDU19WRVIoaTkxNSkgPj0gOSAmJiBHUkFQSElDU19WRVIoaTkxNSkgPD0gMTEpCiAJCWlu dGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCiAJCQkJICAgR0VOOF9MM19MUkFfMV9HUEdQVSwKIAkJ CQkgICBHRU45X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfU0tMKTsKQEAgLTM0NCwxMyAr MzQ0LDEzIEBAIHZvaWQgZ3R0X3dyaXRlX3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3Qp CiAJICogZHJpdmVyLgogCSAqLwogCWlmIChIQVNfUEFHRV9TSVpFUyhpOTE1LCBJOTE1X0dUVF9Q QUdFX1NJWkVfNjRLKSAmJgotCSAgICBJTlRFTF9HRU4oaTkxNSkgPD0gMTApCisJICAgIEdSQVBI SUNTX1ZFUihpOTE1KSA8PSAxMCkKIAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsCiAJCQkJIEdF TjhfR0FNV19FQ09fREVWX1JXX0lBLAogCQkJCSAwLAogCQkJCSBHQU1XX0VDT19FTkFCTEVfNjRL X0lQU19GSUVMRCk7CiAKLQlpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDgsIDExKSkgeworCWlmIChJ U19HUkFQSElDU19WRVIoaTkxNSwgOCwgMTEpKSB7CiAJCWJvb2wgY2FuX3VzZV9ndHRfY2FjaGUg PSB0cnVlOwogCiAJCS8qCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIHZvaWQgYmR3X3NldHVw X3ByaXZhdGVfcHBhdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJICAgICAgR0VOOF9Q UEFUKDcsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9MTENFTExDIHwgR0VOOF9QUEFUX0FHRSgz KSk7CiAKIAkvKiBmb3Igc2Nhbm91dCB3aXRoIGVMTEMgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQlwYXQgfD0gR0VOOF9QUEFU KDIsIEdFTjhfUFBBVF9XQiB8IEdFTjhfUFBBVF9FTExDX09WRVJSSURFKTsKIAllbHNlCiAJCXBh dCB8PSBHRU44X1BQQVQoMiwgR0VOOF9QUEFUX1dUIHwgR0VOOF9QUEFUX0xMQ0VMTEMpOwpAQCAt NDgxLDExICs0ODEsMTEgQEAgdm9pZCBzZXR1cF9wcml2YXRlX3BhdChzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmUt Pmk5MTU7CiAKLQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDgpOworCUdFTV9CVUdfT04o R1JBUEhJQ1NfVkVSKGk5MTUpIDwgOCk7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIpCiAJCXRnbF9zZXR1cF9wcml2YXRlX3BwYXQo dW5jb3JlKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTApCisJZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDEwKQogCQljbmxfc2V0dXBfcHJpdmF0ZV9wcGF0KHVuY29yZSk7 CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhpOTE1KSB8fCBJU19HRU45X0xQKGk5MTUpKQogCQlj aHZfc2V0dXBfcHJpdmF0ZV9wcGF0KHVuY29yZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9sbGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xs Yy5jCmluZGV4IDA3NWQ3NDE2NDRhZS4uZWIxYTE1ZGVlZDIyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9sbGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9sbGMuYwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgYm9vbCBnZXRfaWFfY29uc3Rh bnRzKHN0cnVjdCBpbnRlbF9sbGMgKmxsYywKIAogCWNvbnN0cy0+bWluX2dwdV9mcmVxID0gcnBz LT5taW5fZnJlcTsKIAljb25zdHMtPm1heF9ncHVfZnJlcSA9IHJwcy0+bWF4X2ZyZXE7Ci0JaWYg KElOVEVMX0dFTihpOTE1KSA+PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7 CiAJCS8qIENvbnZlcnQgR1QgZnJlcXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCiAJCWNvbnN0cy0+ bWluX2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7CiAJCWNvbnN0cy0+bWF4X2dwdV9mcmVx IC89IEdFTjlfRlJFUV9TQ0FMRVI7CkBAIC04MywxMyArODMsMTMgQEAgc3RhdGljIHZvaWQgY2Fs Y19pYV9mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYywKIAljb25zdCBpbnQgZGlmZiA9IGNvbnN0 cy0+bWF4X2dwdV9mcmVxIC0gZ3B1X2ZyZXE7CiAJdW5zaWduZWQgaW50IGlhX2ZyZXEgPSAwLCBy aW5nX2ZyZXEgPSAwOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KSB7CisJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA5KSB7CiAJCS8qCiAJCSAqIHJpbmdfZnJlcSA9IDIgKiBHVC4gcmlu Z19mcmVxIGlzIGluIDEwME1IeiB1bml0cwogCQkgKiBObyBmbG9vciByZXF1aXJlZCBmb3Igcmlu ZyBmcmVxdWVuY3kgb24gU0tMLgogCQkgKi8KIAkJcmluZ19mcmVxID0gZ3B1X2ZyZXE7Ci0JfSBl bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDgpIHsKIAkJLyogbWF4KDIgKiBHVCwgRERSKS4gTkI6IEdUIGlzIDUwTUh6IHVu aXRzICovCiAJCXJpbmdfZnJlcSA9IG1heChjb25zdHMtPm1pbl9yaW5nX2ZyZXEsIGdwdV9mcmVx KTsKIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmMKaW5kZXggYWFmZTJhNGRmNDk2Li5hMjdiYWMwYTRiZmIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2xyYy5jCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyB2b2lkIHNldF9vZmZz ZXRzKHUzMiAqcmVncywKIAkJKnJlZ3MgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShjb3VudCk7CiAJ CWlmIChmbGFncyAmIFBPU1RFRCkKIAkJCSpyZWdzIHw9IE1JX0xSSV9GT1JDRV9QT1NURUQ7Ci0J CWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkKKwkJaWYgKEdSQVBISUNTX1ZFUihl bmdpbmUtPmk5MTUpID49IDExKQogCQkJKnJlZ3MgfD0gTUlfTFJJX0xSTV9DU19NTUlPOwogCQly ZWdzKys7CiAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHZvaWQgc2V0X29mZnNldHModTMyICpy ZWdzLAogCWlmIChjbG9zZSkgewogCQkvKiBDbG9zZSB0aGUgYmF0Y2g7IHVzZWQgbWFpbmx5IGJ5 IGxpdmVfbHJjX2xheW91dCgpICovCiAJCSpyZWdzID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKLQkJ aWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEwKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPj0gMTApCiAJCQkqcmVncyB8PSBCSVQoMCk7CiAJfQogfQpAQCAtNDk4LDIy ICs0OTgsMjIgQEAgc3RhdGljIGNvbnN0IHU4ICpyZWdfb2Zmc2V0cyhjb25zdCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogYWRkcmVzc2luZyB0byBhdXRvbWF0aWMgZml4dXAg dGhlIHJlZ2lzdGVyIHN0YXRlIGJldHdlZW4gdGhlCiAJICogcGh5c2ljYWwgZW5naW5lcyBmb3Ig dmlydHVhbCBlbmdpbmUuCiAJICovCi0JR0VNX0JVR19PTihJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA+PSAxMiAmJgorCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIg JiYKIAkJICAgIWludGVsX2VuZ2luZV9oYXNfcmVsYXRpdmVfbW1pbyhlbmdpbmUpKTsKIAogCWlm IChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykgewotCQlpZiAoSU5URUxfR0VOKGVuZ2lu ZS0+aTkxNSkgPj0gMTIpCisJCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikK IAkJCXJldHVybiBnZW4xMl9yY3Nfb2Zmc2V0czsKLQkJZWxzZSBpZiAoSU5URUxfR0VOKGVuZ2lu ZS0+aTkxNSkgPj0gMTEpCisJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49 IDExKQogCQkJcmV0dXJuIGdlbjExX3Jjc19vZmZzZXRzOwotCQllbHNlIGlmIChJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSA+PSA5KQorCQllbHNlIGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSA+PSA5KQogCQkJcmV0dXJuIGdlbjlfcmNzX29mZnNldHM7CiAJCWVsc2UKIAkJCXJldHVybiBn ZW44X3Jjc19vZmZzZXRzOwogCX0gZWxzZSB7Ci0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA+PSAxMikKKwkJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQogCQkJcmV0 dXJuIGdlbjEyX3hjc19vZmZzZXRzOwotCQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA+PSA5KQorCQllbHNlIGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA5KQogCQkJ cmV0dXJuIGdlbjlfeGNzX29mZnNldHM7CiAJCWVsc2UKIAkJCXJldHVybiBnZW44X3hjc19vZmZz ZXRzOwpAQCAtNTIyLDkgKzUyMiw5IEBAIHN0YXRpYyBjb25zdCB1OCAqcmVnX29mZnNldHMoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgaW50IGxyY19yaW5n X21pX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlmIChJ TlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSkgPj0gMTIpCiAJCXJldHVybiAweDYwOwotCWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUt Pmk5MTUpID49IDkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOSkK IAkJcmV0dXJuIDB4NTQ7CiAJZWxzZSBpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1Mp CiAJCXJldHVybiAweDU4OwpAQCAtNTM0LDkgKzUzNCw5IEBAIHN0YXRpYyBpbnQgbHJjX3Jpbmdf bWlfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBp bnQgbHJjX3JpbmdfZ3ByMChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7 Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQorCWlmIChHUkFQSElDU19WRVIo ZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJcmV0dXJuIDB4NzQ7Ci0JZWxzZSBpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gOSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSA+PSA5KQogCQlyZXR1cm4gMHg2ODsKIAllbHNlIGlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRF Ul9DTEFTUykKIAkJcmV0dXJuIDB4ZDg7CkBAIC01NDYsOSArNTQ2LDkgQEAgc3RhdGljIGludCBs cmNfcmluZ19ncHIwKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3Rh dGljIGludCBscmNfcmluZ193YV9iYl9wZXJfY3R4KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIpCisJaWYg KEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQogCQlyZXR1cm4gMHgxMjsKLQllbHNl IGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5IHx8IGVuZ2luZS0+Y2xhc3MgPT0gUkVO REVSX0NMQVNTKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkgfHwg ZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpCiAJCXJldHVybiAweDE4OwogCWVsc2UKIAkJ cmV0dXJuIC0xOwpAQCAtNTgxLDkgKzU4MSw5IEBAIHN0YXRpYyBpbnQgbHJjX3JpbmdfY21kX2J1 Zl9jY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoZW5naW5l LT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCiAJCXJldHVybiAtMTsKIAotCWlmIChJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0g MTIpCiAJCXJldHVybiAweGI2OwotCWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49 IDExKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDExKQogCQlyZXR1 cm4gMHhhYTsKIAllbHNlCiAJCXJldHVybiAtMTsKQEAgLTU5Miw5ICs1OTIsOSBAQCBzdGF0aWMg aW50IGxyY19yaW5nX2NtZF9idWZfY2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiBzdGF0aWMgdTMyCiBscmNfcmluZ19pbmRpcmVjdF9vZmZzZXRfZGVmYXVsdChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3dpdGNoIChJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSkgeworCXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsK IAlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpOworCQlN SVNTSU5HX0NBU0UoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpOwogCQlmYWxsdGhyb3VnaDsK IAljYXNlIDEyOgogCQlyZXR1cm4gR0VOMTJfQ1RYX1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VUX0RF RkFVTFQ7CkBAIC02MzcsNyArNjM3LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9jb21tb25fcmVncyh1 MzIgKiBjb25zdCByZWdzLAogCWN0bCB8PSBfTUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VO R0lORV9DVFhfUkVTVE9SRV9JTkhJQklUKTsKIAlpZiAoaW5oaWJpdCkKIAkJY3RsIHw9IENUWF9D VFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5p OTE1KSA8IDExKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA8IDExKQogCQljdGwg fD0gX01BU0tFRF9CSVRfRElTQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1NBVkVfSU5ISUJJVCB8 CiAJCQkJCSAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUpOwogCXJlZ3NbQ1RYX0NPTlRFWFRfQ09O VFJPTF0gPSBjdGw7CkBAIC04MDUsNyArODA1LDcgQEAgX19scmNfYWxsb2Nfc3RhdGUoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYg KElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpCiAJCWNvbnRleHRfc2l6ZSAr PSBJOTE1X0dUVF9QQUdFX1NJWkU7IC8qIGZvciByZWR6b25lICovCiAKLQlpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPT0gMTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkg PT0gMTIpIHsKIAkJY2UtPndhX2JiX3BhZ2UgPSBjb250ZXh0X3NpemUgLyBQQUdFX1NJWkU7CiAJ CWNvbnRleHRfc2l6ZSArPSBQQUdFX1NJWkU7CiAJfQpAQCAtMTExNCw3ICsxMTE0LDcgQEAgc3Rh dGljIHUzMiBscmNfZGVzY3JpcHRvcihjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJ ZGVzYyA8PD0gR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFX1NISUZUOwogCiAJZGVzYyB8PSBHRU44 X0NUWF9WQUxJRCB8IEdFTjhfQ1RYX1BSSVZJTEVHRTsKLQlpZiAoSVNfR0VOKGNlLT52bS0+aTkx NSwgOCkpCisJaWYgKEdSQVBISUNTX1ZFUihjZS0+dm0tPmk5MTUpID09IDgpCiAJCWRlc2MgfD0g R0VOOF9DVFhfTDNMTENfQ09IRVJFTlQ7CiAKIAlyZXR1cm4gaTkxNV9nZ3R0X29mZnNldChjZS0+ c3RhdGUpIHwgZGVzYzsKQEAgLTE0NjksNyArMTQ2OSw3IEBAIHZvaWQgbHJjX2luaXRfd2FfY3R4 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoZW5naW5lLT5jbGFzcyAhPSBS RU5ERVJfQ0xBU1MpCiAJCXJldHVybjsKIAotCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpKSB7CiAJY2FzZSAxMjoK IAljYXNlIDExOgogCQlyZXR1cm47CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCB2b2lkIGxyY19pbml0 X3dhX2N0eChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCXdhX2JiX2ZuWzFdID0g TlVMTDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpKTsK IAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jCmluZGV4IGIx NDEzOGZkNTA1Yy4uMTc4NDg4MDdmMTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9j cy5jCkBAIC0zNDQsMTEgKzM0NCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9tb2NzX3Nl dHRpbmdzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQl0YWJsZS0+c2l6 ZSA9IEFSUkFZX1NJWkUoZGcxX21vY3NfdGFibGUpOwogCQl0YWJsZS0+dGFibGUgPSBkZzFfbW9j c190YWJsZTsKIAkJdGFibGUtPm5fZW50cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKLQl9 IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDEyKSB7CiAJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUodGdsX21vY3Nf dGFibGUpOwogCQl0YWJsZS0+dGFibGUgPSB0Z2xfbW9jc190YWJsZTsKIAkJdGFibGUtPm5fZW50 cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAx MSkpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMSkgewogCQl0YWJsZS0+ c2l6ZSAgPSBBUlJBWV9TSVpFKGljbF9tb2NzX3RhYmxlKTsKIAkJdGFibGUtPnRhYmxlID0gaWNs X21vY3NfdGFibGU7CiAJCXRhYmxlLT5uX2VudHJpZXMgPSBHRU45X05VTV9NT0NTX0VOVFJJRVM7 CkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfbW9jc19zZXR0aW5n cyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJdGFibGUtPm5fZW50cmll cyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKIAkJdGFibGUtPnRhYmxlID0gYnJveHRvbl9tb2Nz X3RhYmxlOwogCX0gZWxzZSB7Ci0JCWRybV9XQVJOX09OQ0UoJmk5MTUtPmRybSwgSU5URUxfR0VO KGk5MTUpID49IDksCisJCWRybV9XQVJOX09OQ0UoJmk5MTUtPmRybSwgR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDksCiAJCQkgICAgICAiUGxhdGZvcm0gdGhhdCBzaG91bGQgaGF2ZSBhIE1PQ1MgdGFi bGUgZG9lcyBub3QuXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMzcwLDcgKzM3MCw3IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X21vY3Nfc2V0dGluZ3MoY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiAJCXJldHVybiAwOwogCiAJLyogV2FEaXNhYmxlU2tpcENhY2hpbmc6 c2tsLGJ4dCxrYmwsZ2xrICovCi0JaWYgKElTX0dFTihpOTE1LCA5KSkgeworCWlmIChHUkFQSElD U19WRVIoaTkxNSkgPT0gOSkgewogCQlpbnQgaTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgdGFibGUt PnNpemU7IGkrKykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Bw Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jCmluZGV4IDRlM2Q4 MGMyMjk1Yy4uMzg5MWMwNzg5MDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9wcGd0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0 LmMKQEAgLTE0Niw5ICsxNDYsOSBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBpbnRl bF9ndCAqZ3QpCiAKIAlndHRfd3JpdGVfd29ya2Fyb3VuZHMoZ3QpOwogCi0JaWYgKElTX0dFTihp OTE1LCA2KSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCiAJCWdlbjZfcHBndHRfZW5h YmxlKGd0KTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgNykpCisJZWxzZSBpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID09IDcpCiAJCWdlbjdfcHBndHRfZW5hYmxlKGd0KTsKIAogCXJldHVybiAwOwpA QCAtMTU3LDcgKzE1Nyw3IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGludGVsX2d0 ICpndCkKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wcGd0dCAqCiBfX3BwZ3R0X2NyZWF0ZShzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogewotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgOCkKKwlpZiAoR1JB UEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpCiAJCXJldHVybiBnZW42X3BwZ3R0X2NyZWF0ZShndCk7 CiAJZWxzZQogCQlyZXR1cm4gZ2VuOF9wcGd0dF9jcmVhdGUoZ3QpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9yYzYuYwppbmRleCAzYjdlNjJkZWJlN2UuLjI1OWQ3ZWI0ZTE2NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmM2LmMKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBn ZW4xMV9yYzZfZW5hYmxlKHN0cnVjdCBpbnRlbF9yYzYgKnJjNikKIAkJR0VOOV9NRURJQV9QR19F TkFCTEUgfAogCQlHRU4xMV9NRURJQV9TQU1QTEVSX1BHX0VOQUJMRTsKIAotCWlmIChJTlRFTF9H RU4oZ3QtPmk5MTUpID49IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gMTIp IHsKIAkJZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1ZDUzsgaSsrKQogCQkJaWYgKEhBU19FTkdJ TkUoZ3QsIF9WQ1MoaSkpKQogCQkJCXBnX2VuYWJsZSB8PSAoVkROX0hDUF9QT1dFUkdBVEVfRU5B QkxFKGkpIHwKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgdm9pZCBnZW45X3JjNl9lbmFibGUo c3RydWN0IGludGVsX3JjNiAqcmM2KQogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJLyog MmI6IFByb2dyYW0gUkM2IHRocmVzaG9sZHMuKi8KLQlpZiAoSU5URUxfR0VOKHJjNl90b19pOTE1 KHJjNikpID49IDEwKSB7CisJaWYgKEdSQVBISUNTX1ZFUihyYzZfdG9faTkxNShyYzYpKSA+PSAx MCkgewogCQlzZXQodW5jb3JlLCBHRU42X1JDNl9XQUtFX1JBVEVfTElNSVQsIDU0IDw8IDE2IHwg ODUpOwogCQlzZXQodW5jb3JlLCBHRU4xMF9NRURJQV9XQUtFX1JBVEVfTElNSVQsIDE1MCk7CiAJ fSBlbHNlIGlmIChJU19TS1lMQUtFKHJjNl90b19pOTE1KHJjNikpKSB7CkBAIC0yNDksOSArMjQ5 LDkgQEAgc3RhdGljIHZvaWQgZ2VuNl9yYzZfZW5hYmxlKHN0cnVjdCBpbnRlbF9yYzYgKnJjNikK IAlyYzZ2aWRzID0gMDsKIAlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGk5MTUsIEdFTjZf UENPREVfUkVBRF9SQzZWSURTLAogCQkJCSAgICAgJnJjNnZpZHMsIE5VTEwpOwotCWlmIChJU19H RU4oaTkxNSwgNikgJiYgcmV0KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA2ICYmIHJl dCkgewogCQlkcm1fZGJnKCZpOTE1LT5kcm0sICJDb3VsZG4ndCBjaGVjayBmb3IgQklPUyB3b3Jr YXJvdW5kXG4iKTsKLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA2KSAmJgorCX0gZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID09IDYgJiYKIAkJICAgKEdFTjZfREVDT0RFX1JDNl9WSUQocmM2 dmlkcyAmIDB4ZmYpIDwgNDUwKSkgewogCQlkcm1fZGJnKCZpOTE1LT5kcm0sCiAJCQkiWW91IHNo b3VsZCB1cGRhdGUgeW91ciBCSU9TLiBDb3JyZWN0aW5nIG1pbmltdW0gcmM2IHZvbHRhZ2UgKCVk bVYtPiVkbVYpXG4iLApAQCAtNTE1LDcgKzUxNSw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfcmM2 X2Rpc2FibGUoc3RydWN0IGludGVsX3JjNiAqcmM2KQogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSA9IHJjNl90b191bmNvcmUocmM2KTsKIAogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0 KHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCWlm IChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJc2V0KHVuY29yZSwgR0VOOV9QR19FTkFCTEUs IDApOwogCXNldCh1bmNvcmUsIEdFTjZfUkNfQ09OVFJPTCwgMCk7CiAJc2V0KHVuY29yZSwgR0VO Nl9SQ19TVEFURSwgMCk7CkBAIC01NzUsMTMgKzU3NSwxMyBAQCB2b2lkIGludGVsX3JjNl9lbmFi bGUoc3RydWN0IGludGVsX3JjNiAqcmM2KQogCQljaHZfcmM2X2VuYWJsZShyYzYpOwogCWVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoaTkxNSkpCiAJCXZsdl9yYzZfZW5hYmxlKHJjNik7Ci0JZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDExKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSAxMSkKIAkJZ2VuMTFfcmM2X2VuYWJsZShyYzYpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA5KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQlnZW45X3JjNl9l bmFibGUocmM2KTsKIAllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCiAJCWdlbjhfcmM2X2Vu YWJsZShyYzYpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVsc2UgaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlnZW42X3JjNl9lbmFibGUocmM2KTsKIAogCXJjNi0+ bWFudWFsID0gcmM2LT5jdGxfZW5hYmxlICYgR0VONl9SQ19DVExfUkM2X0VOQUJMRTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRlcnN0YXRlLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jCmluZGV4IGIwM2UxOTdiMWQ5 OS4uYjU3NWNkNmUwYjdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yZW5kZXJzdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JlbmRl cnN0YXRlLmMKQEAgLTE1LDcgKzE1LDcgQEAgcmVuZGVyX3N0YXRlX2dldF9yb2RhdGEoY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChlbmdpbmUtPmNsYXNzICE9IFJF TkRFUl9DTEFTUykKIAkJcmV0dXJuIE5VTEw7CiAKLQlzd2l0Y2ggKElOVEVMX0dFTihlbmdpbmUt Pmk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSkgewogCWNhc2Ug NjoKIAkJcmV0dXJuICZnZW42X251bGxfc3RhdGU7CiAJY2FzZSA3OgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3Jlc2V0LmMKaW5kZXggZDUwOTRiZTZkOTBmLi4yNzMxNWQ3Zjg5MzUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwpAQCAtNTY1LDcgKzU2NSw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9yZXNldF9lbmdpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJCSAqLwogCX0K IAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDExKQorCWlmIChHUkFQSElDU19WRVIoZ3Qt Pmk5MTUpID49IDExKQogCQlyZXQgPSBnZW4xMV9yZXNldF9lbmdpbmVzKGd0LCBlbmdpbmVfbWFz aywgcmV0cnkpOwogCWVsc2UKIAkJcmV0ID0gZ2VuNl9yZXNldF9lbmdpbmVzKGd0LCBlbmdpbmVf bWFzaywgcmV0cnkpOwpAQCAtNTk0LDE3ICs1OTQsMTcgQEAgc3RhdGljIHJlc2V0X2Z1bmMgaW50 ZWxfZ2V0X2dwdV9yZXNldChjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiAJaWYgKGlzX21v Y2tfZ3QoZ3QpKQogCQlyZXR1cm4gbW9ja19yZXNldDsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gOCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkKIAkJcmV0dXJuIGdl bjhfcmVzZXRfZW5naW5lczsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKKwllbHNl IGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKIAkJcmV0dXJuIGdlbjZfcmVzZXRfZW5naW5l czsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNSkKKwllbHNlIGlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gNSkKIAkJcmV0dXJuIGlsa19kb19yZXNldDsKIAllbHNlIGlmIChJU19HNFgo aTkxNSkpCiAJCXJldHVybiBnNHhfZG9fcmVzZXQ7CiAJZWxzZSBpZiAoSVNfRzMzKGk5MTUpIHx8 IElTX1BJTkVWSUVXKGk5MTUpKQogCQlyZXR1cm4gZzMzX2RvX3Jlc2V0OwotCWVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSAzKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAzKQog CQlyZXR1cm4gaTkxNV9kb19yZXNldDsKIAllbHNlCiAJCXJldHVybiBOVUxMOwpAQCAtNjU2LDcg KzY1Niw3IEBAIGJvb2wgaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShjb25zdCBzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQogaW50IGludGVsX3Jlc2V0X2d1YyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewogCXUz MiBndWNfZG9tYWluID0KLQkJSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMSA/IEdFTjExX0dSRE9N X0dVQyA6IEdFTjlfR1JET01fR1VDOworCQlHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDExID8g R0VOMTFfR1JET01fR1VDIDogR0VOOV9HUkRPTV9HVUM7CiAJaW50IHJldDsKIAogCUdFTV9CVUdf T04oIUhBU19HVF9VQyhndC0+aTkxNSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nX3N1Ym1pc3Npb24uYwppbmRleCAyYjZkZmZjYzIyNjIuLjBjNDIzZjA5NmUyYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9u LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMK QEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3c3RhbShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHUzMiBtYXNrKQogCSAqIGxvc3QgaW50ZXJydXB0cyBmb2xsb3dpbmcg YSByZXNldC4KIAkgKi8KIAlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKLQkJ aWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDYpCisJCWlmIChHUkFQSElDU19WRVIoZW5n aW5lLT5pOTE1KSA+PSA2KQogCQkJbWFzayAmPSB+QklUKDApOwogCQllbHNlCiAJCQltYXNrICY9 IH5JOTE1X1VTRVJfSU5URVJSVVBUOwpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBzZXRf aHdzX3BnYShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHBoeXNfYWRkcl90IHBoeXMp CiAJdTMyIGFkZHI7CiAKIAlhZGRyID0gbG93ZXJfMzJfYml0cyhwaHlzKTsKLQlpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPj0gNCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkg Pj0gNCkKIAkJYWRkciB8PSAocGh5cyA+PiAyOCkgJiAweGYwOwogCiAJaW50ZWxfdW5jb3JlX3dy aXRlKGVuZ2luZS0+dW5jb3JlLCBIV1NfUEdBLCBhZGRyKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3Rh dGljIHZvaWQgc2V0X2h3c3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgb2Zm c2V0KQogCSAqIFRoZSByaW5nIHN0YXR1cyBwYWdlIGFkZHJlc3NlcyBhcmUgbm8gbG9uZ2VyIG5l eHQgdG8gdGhlIHJlc3Qgb2YKIAkgKiB0aGUgcmluZyByZWdpc3RlcnMgYXMgb2YgZ2VuNy4KIAkg Ki8KLQlpZiAoSVNfR0VOKGVuZ2luZS0+aTkxNSwgNykpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPT0gNykgewogCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKIAkJLyoKIAkJICog Tm8gbW9yZSByaW5ncyBleGlzdCBvbiBHZW43LiBEZWZhdWx0IGNhc2UgaXMgb25seSB0byBzaHV0 IHVwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHNldF9od3NwKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgdTMyIG9mZnNldCkKIAkJCWh3c3AgPSBWRUJPWF9IV1NfUEdBX0dF Tjc7CiAJCQlicmVhazsKIAkJfQotCX0gZWxzZSBpZiAoSVNfR0VOKGVuZ2luZS0+aTkxNSwgNikp IHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDYpIHsKIAkJaHdz cCA9IFJJTkdfSFdTX1BHQV9HRU42KGVuZ2luZS0+bW1pb19iYXNlKTsKIAl9IGVsc2UgewogCQlo d3NwID0gUklOR19IV1NfUEdBKGVuZ2luZS0+bW1pb19iYXNlKTsKQEAgLTEwNSw3ICsxMDUsNyBA QCBzdGF0aWMgdm9pZCBzZXRfaHdzcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUz MiBvZmZzZXQpCiAKIHN0YXRpYyB2b2lkIGZsdXNoX2NzX3RsYihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiB7Ci0JaWYgKCFJU19HRU5fUkFOR0UoZW5naW5lLT5pOTE1LCA2LCA3KSkK KwlpZiAoIUlTX0dSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUsIDYsIDcpKQogCQlyZXR1cm47CiAK IAkvKiByaW5nIHNob3VsZCBiZSBpZGxlIGJlZm9yZSBpc3N1aW5nIGEgc3luYyBmbHVzaCovCkBA IC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgc2V0X3BwX2RpcihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJRU5HSU5FX1dSSVRFX0ZXKGVuZ2luZSwgUklOR19QUF9ESVJfRENM ViwgUFBfRElSX0RDTFZfMkcpOwogCUVOR0lORV9XUklURV9GVyhlbmdpbmUsIFJJTkdfUFBfRElS X0JBU0UsIHBwX2Rpcih2bSkpOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDcp IHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gNykgewogCQlFTkdJTkVfV1JJ VEVfRlcoZW5naW5lLAogCQkJCVJJTkdfTU9ERV9HRU43LAogCQkJCV9NQVNLRURfQklUX0VOQUJM RShHRlhfUFBHVFRfRU5BQkxFKSk7CkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGludCB4Y3Nf cmVzdW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCQkJIDUwMDAsIDAsIE5V TEwpKQogCQlnb3RvIGVycjsKIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+IDIpCisJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID4gMikKIAkJRU5HSU5FX1dSSVRFX0ZXKGVu Z2luZSwKIAkJCQlSSU5HX01JX01PREUsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7 CiAKQEAgLTY0Niw5ICs2NDYsOSBAQCBzdGF0aWMgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLAogCXUzMiAqY3M7CiAKIAlsZW4gPSA0OwotCWlmIChJU19HRU4oaTkx NSwgNykpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA3KQogCQlsZW4gKz0gMiArIChudW1f ZW5naW5lcyA/IDQgKiBudW1fZW5naW5lcyArIDYgOiAwKTsKLQllbHNlIGlmIChJU19HRU4oaTkx NSwgNSkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDUpCiAJCWxlbiArPSAyOwog CWlmIChmbGFncyAmIE1JX0ZPUkNFX1JFU1RPUkUpIHsKIAkJR0VNX0JVR19PTihmbGFncyAmIE1J X1JFU1RPUkVfSU5ISUJJVCk7CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIGludCBtaV9zZXRf Y29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwog CiAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2LGhzdyxi ZHcsY2h2ICovCi0JaWYgKElTX0dFTihpOTE1LCA3KSkgeworCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPT0gNykgewogCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKIAkJ aWYgKG51bV9lbmdpbmVzKSB7CiAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7 CkBAIC02NzgsNyArNjc4LDcgQEAgc3RhdGljIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKIAkJCQkJCUdFTjZfUFNNSV9TTEVFUF9NU0dfRElTQUJMRSk7CiAJCQl9 CiAJCX0KLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID09IDUpIHsKIAkJLyoKIAkJICogVGhpcyB3L2EgaXMgb25seSBsaXN0ZWQg Zm9yIHByZS1wcm9kdWN0aW9uIGlsayBhL2Igc3RlcHBpbmdzLAogCQkgKiBidXQgaXMgYWxzbyBt ZW50aW9uZWQgZm9yIHByb2dyYW1taW5nIHRoZSBwb3dlcmN0eC4gVG8gYmUKQEAgLTcxNiw3ICs3 MTYsNyBAQCBzdGF0aWMgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAogCSAqLwogCSpjcysrID0gTUlfTk9PUDsKIAotCWlmIChJU19HRU4oaTkxNSwgNykpIHsKKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDcpIHsKIAkJaWYgKG51bV9lbmdpbmVzKSB7CiAJCQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7CiAJCQlpOTE1X3JlZ190IGxhc3RfcmVn ID0ge307IC8qIGtlZXAgZ2NjIHF1aWV0ICovCkBAIC03NDAsNyArNzQwLDcgQEAgc3RhdGljIGlu dCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJCSpjcysrID0gTUlf Tk9PUDsKIAkJfQogCQkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwotCX0g ZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkx NSkgPT0gNSkgewogCQkqY3MrKyA9IE1JX1NVU1BFTkRfRkxVU0g7CiAJfQogCkBAIC0xMDAxLDcg KzEwMDEsNyBAQCBzdGF0aWMgdm9pZCByaW5nX3JlbGVhc2Uoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2lu ZS0+aTkxNTsKIAotCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBJTlRFTF9HRU4oZGV2X3By aXYpID4gMiAmJgorCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBHUkFQSElDU19WRVIoZGV2 X3ByaXYpID4gMiAmJgogCQkgICAgKEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19NSV9NT0RFKSAm IE1PREVfSURMRSkgPT0gMCk7CiAKIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oZW5naW5l KTsKQEAgLTEwMjksMTMgKzEwMjksMTMgQEAgc3RhdGljIHZvaWQgc2V0dXBfaXJxKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWludGVsX2VuZ2luZV9zZXRfaXJxX2hhbmRsZXIo ZW5naW5lLCBpcnFfaGFuZGxlcik7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpIHsKIAkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2Vu Nl9pcnFfZW5hYmxlOwogCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuNl9pcnFfZGlzYWJsZTsK LQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA1KSB7CisJfSBlbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gNSkgewogCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW41X2lycV9lbmFi bGU7CiAJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW41X2lycV9kaXNhYmxlOwotCX0gZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDMpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSAzKSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjNfaXJxX2VuYWJsZTsKIAkJZW5n aW5lLT5pcnFfZGlzYWJsZSA9IGdlbjNfaXJxX2Rpc2FibGU7CiAJfSBlbHNlIHsKQEAgLTEwNDks NyArMTA0OSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5 MTU7CiAKIAkvKiBnZW44KyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBleGVjbGlzdHMgKi8KLQlH RU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA+PSA4KTsKKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZF UihpOTE1KSA+PSA4KTsKIAogCXNldHVwX2lycShlbmdpbmUpOwogCkBAIC0xMDcwLDE0ICsxMDcw LDE0IEBAIHN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJICogZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYigpLgogCSAqLwogCWVuZ2lu ZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW4zX2VtaXRfYnJlYWRjcnVtYjsKLQlpZiAoSVNf R0VOKGk5MTUsIDUpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNSkKIAkJZW5naW5lLT5l bWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjVfZW1pdF9icmVhZGNydW1iOwogCiAJZW5naW5lLT5z ZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gaTl4eF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwogCi0J aWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikK IAkJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuNl9lbWl0X2JiX3N0YXJ0OwotCWVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA+PSA0KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA0 KQogCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBnZW40X2VtaXRfYmJfc3RhcnQ7CiAJZWxzZSBp ZiAoSVNfSTgzMChpOTE1KSB8fCBJU19JODQ1RyhpOTE1KSkKIAkJZW5naW5lLT5lbWl0X2JiX3N0 YXJ0ID0gaTgzMF9lbWl0X2JiX3N0YXJ0OwpAQCAtMTA5NCwxNiArMTA5NCwxNiBAQCBzdGF0aWMg dm9pZCBzZXR1cF9yY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJZW5naW5l LT5pcnFfZW5hYmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQ7CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDcpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDcpIHsKIAkJ ZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuN19lbWl0X2ZsdXNoX3JjczsKIAkJZW5naW5lLT5lbWl0 X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjdfZW1pdF9icmVhZGNydW1iX3JjczsKLQl9IGVsc2UgaWYg KElTX0dFTihpOTE1LCA2KSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYp IHsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9lbWl0X2ZsdXNoX3JjczsKIAkJZW5naW5l LT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjZfZW1pdF9icmVhZGNydW1iX3JjczsKLQl9IGVs c2UgaWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID09IDUpIHsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNF9lbWl0X2ZsdXNoX3JjczsKIAl9 IGVsc2UgewotCQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNCkKKwkJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA8IDQpCiAJCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW4yX2VtaXRfZmx1c2g7CiAJCWVs c2UKIAkJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRfZW1pdF9mbHVzaF9yY3M7CkBAIC0xMTE4 LDIwICsxMTE4LDIwIEBAIHN0YXRpYyB2b2lkIHNldHVwX3ZjcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUt Pmk5MTU7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDYpIHsKIAkJLyogZ2VuNiBic2QgbmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0YWls IHVwZGF0ZXMgKi8KLQkJaWYgKElTX0dFTihpOTE1LCA2KSkKKwkJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSA2KQogCQkJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gZ2VuNl9ic2Rf c2V0X2RlZmF1bHRfc3VibWlzc2lvbjsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9lbWl0 X2ZsdXNoX3ZjczsKIAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBHVF9CU0RfVVNFUl9JTlRF UlJVUFQ7CiAKLQkJaWYgKElTX0dFTihpOTE1LCA2KSkKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA9PSA2KQogCQkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjZfZW1pdF9icmVh ZGNydW1iX3hjczsKIAkJZWxzZQogCQkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdl bjdfZW1pdF9icmVhZGNydW1iX3hjczsKIAl9IGVsc2UgewogCQllbmdpbmUtPmVtaXRfZmx1c2gg PSBnZW40X2VtaXRfZmx1c2hfdmNzOwotCQlpZiAoSVNfR0VOKGk5MTUsIDUpKQorCQlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID09IDUpCiAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IElMS19C U0RfVVNFUl9JTlRFUlJVUFQ7CiAJCWVsc2UKIAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0g STkxNV9CU0RfVVNFUl9JTlRFUlJVUFQ7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBzdGF0aWMgdm9p ZCBzZXR1cF9iY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+ZW1p dF9mbHVzaCA9IGdlbjZfZW1pdF9mbHVzaF94Y3M7CiAJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sg PSBHVF9CTFRfVVNFUl9JTlRFUlJVUFQ7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDYpKQorCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gNikKIAkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9 IGdlbjZfZW1pdF9icmVhZGNydW1iX3hjczsKIAllbHNlCiAJCWVuZ2luZS0+ZW1pdF9maW5pX2Jy ZWFkY3J1bWIgPSBnZW43X2VtaXRfYnJlYWRjcnVtYl94Y3M7CkBAIC0xMTU1LDcgKzExNTUsNyBA QCBzdGF0aWMgdm9pZCBzZXR1cF92ZWNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKIAotCUdF TV9CVUdfT04oSU5URUxfR0VOKGk5MTUpIDwgNyk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIo aTkxNSkgPCA3KTsKIAogCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfZW1pdF9mbHVzaF94Y3M7 CiAJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBQTV9WRUJPWF9VU0VSX0lOVEVSUlVQVDsKQEAg LTEyMDMsNyArMTIwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmdlbjdfY3R4X3ZtYShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJ aW50IHNpemUsIGVycjsKIAotCWlmICghSVNfR0VOKGVuZ2luZS0+aTkxNSwgNykgfHwgZW5naW5l LT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp ICE9IDcgfHwgZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCiAJCXJldHVybiAwOwogCiAJ ZXJyID0gZ2VuN19jdHhfc3dpdGNoX2JiX3NldHVwKGVuZ2luZSwgTlVMTCAvKiBwcm9iZSBzaXpl ICovKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcnBzLmMKaW5kZXggOTdjYWIxYjk5ODcxLi4w NmU5YThlZDRlMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jw cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jCkBAIC0xOTYsNyAr MTk2LDcgQEAgc3RhdGljIHZvaWQgcnBzX3Jlc2V0X2ludGVycnVwdHMoc3RydWN0IGludGVsX3Jw cyAqcnBzKQogCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBycHNfdG9fZ3QocnBzKTsKIAogCXNwaW5f bG9ja19pcnEoJmd0LT5pcnFfbG9jayk7Ci0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gMTEp CisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gMTEpCiAJCWdlbjExX3Jwc19yZXNldF9p bnRlcnJ1cHRzKHJwcyk7CiAJZWxzZQogCQlnZW42X3Jwc19yZXNldF9pbnRlcnJ1cHRzKHJwcyk7 CkBAIC02MzAsNyArNjMwLDcgQEAgc3RhdGljIHUzMiBycHNfbGltaXRzKHN0cnVjdCBpbnRlbF9y cHMgKnJwcywgdTggdmFsKQogCSAqIGZyZXF1ZW5jeSwgaWYgdGhlIGRvd24gdGhyZXNob2xkIGV4 cGlyZXMgaW4gdGhhdCB3aW5kb3cgd2Ugd2lsbCBub3QKIAkgKiByZWNlaXZlIGEgZG93biBpbnRl cnJ1cHQuCiAJICovCi0JaWYgKElOVEVMX0dFTihycHNfdG9faTkxNShycHMpKSA+PSA5KSB7CisJ aWYgKEdSQVBISUNTX1ZFUihycHNfdG9faTkxNShycHMpKSA+PSA5KSB7CiAJCWxpbWl0cyA9IHJw cy0+bWF4X2ZyZXFfc29mdGxpbWl0IDw8IDIzOwogCQlpZiAodmFsIDw9IHJwcy0+bWluX2ZyZXFf c29mdGxpbWl0KQogCQkJbGltaXRzIHw9IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0IDw8IDE0OwpA QCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyB2b2lkIHJwc19zZXRfcG93ZXIoc3RydWN0IGludGVs X3JwcyAqcnBzLCBpbnQgbmV3X3Bvd2VyKQogCSAgICBpbnRlbF9ndF9uc190b19wbV9pbnRlcnZh bChndCwgZWlfZG93biAqIHRocmVzaG9sZF9kb3duICogMTApKTsKIAogCXNldCh1bmNvcmUsIEdF TjZfUlBfQ09OVFJPTCwKLQkgICAgKElOVEVMX0dFTihndC0+aTkxNSkgPiA5ID8gMCA6IEdFTjZf UlBfTUVESUFfVFVSQk8pIHwKKwkgICAgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPiA5ID8gMCA6 IEdFTjZfUlBfTUVESUFfVFVSQk8pIHwKIAkgICAgR0VONl9SUF9NRURJQV9IV19OT1JNQUxfTU9E RSB8CiAJICAgIEdFTjZfUlBfTUVESUFfSVNfR0ZYIHwKIAkgICAgR0VONl9SUF9FTkFCTEUgfApA QCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9ycHNfc2V0KHN0cnVjdCBpbnRlbF9y cHMgKnJwcywgdTggdmFsKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcnBzX3Rv X2k5MTUocnBzKTsKIAl1MzIgc3dyZXE7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpCisJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQlzd3JlcSA9IEdFTjlfRlJFUVVFTkNZKHZh bCk7CiAJZWxzZSBpZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9BRFdFTEwoaTkxNSkpCiAJ CXN3cmVxID0gSFNXX0ZSRVFVRU5DWSh2YWwpOwpAQCAtODEyLDE0ICs4MTIsMTQgQEAgc3RhdGlj IGludCBycHNfc2V0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcywgdTggdmFsLCBib29sIHVwZGF0ZSkK IAogCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCiAJCWVy ciA9IHZsdl9ycHNfc2V0KHJwcywgdmFsKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0g NikKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKIAkJZXJyID0gZ2VuNl9ycHNf c2V0KHJwcywgdmFsKTsKIAllbHNlCiAJCWVyciA9IGdlbjVfcnBzX3NldChycHMsIHZhbCk7CiAJ aWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWlmICh1cGRhdGUgJiYgSU5URUxfR0VOKGk5MTUp ID49IDYpCisJaWYgKHVwZGF0ZSAmJiBHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKIAkJZ2VuNl9y cHNfc2V0X3RocmVzaG9sZHMocnBzLCB2YWwpOwogCXJwcy0+bGFzdF9mcmVxID0gdmFsOwogCkBA IC04NTMsNyArODUzLDcgQEAgdm9pZCBpbnRlbF9ycHNfdW5wYXJrKHN0cnVjdCBpbnRlbF9ycHMg KnJwcykKIAlpZiAoaW50ZWxfcnBzX3VzZXNfdGltZXIocnBzKSkKIAkJcnBzX3N0YXJ0X3RpbWVy KHJwcyk7CiAKLQlpZiAoSVNfR0VOKHJwc190b19pOTE1KHJwcyksIDUpKQorCWlmIChHUkFQSElD U19WRVIocnBzX3RvX2k5MTUocnBzKSkgPT0gNSkKIAkJZ2VuNV9ycHNfdXBkYXRlKHJwcyk7CiB9 CiAKQEAgLTk5OSw3ICs5OTksNyBAQCBzdGF0aWMgdm9pZCBnZW42X3Jwc19pbml0KHN0cnVjdCBp bnRlbF9ycHMgKnJwcykKIAogCXJwcy0+ZWZmaWNpZW50X2ZyZXEgPSBycHMtPnJwMV9mcmVxOwog CWlmIChJU19IQVNXRUxMKGk5MTUpIHx8IElTX0JST0FEV0VMTChpOTE1KSB8fAotCSAgICBJU19H RU45X0JDKGk5MTUpIHx8IElOVEVMX0dFTihpOTE1KSA+PSAxMCkgeworCSAgICBJU19HRU45X0JD KGk5MTUpIHx8IEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCkgewogCQl1MzIgZGRjY19zdGF0dXMg PSAwOwogCiAJCWlmIChzYW5keWJyaWRnZV9wY29kZV9yZWFkKGk5MTUsCkBAIC0xMDEyLDcgKzEw MTIsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykK IAkJCQkJcnBzLT5tYXhfZnJlcSk7CiAJfQogCi0JaWYgKElTX0dFTjlfQkMoaTkxNSkgfHwgSU5U RUxfR0VOKGk5MTUpID49IDEwKSB7CisJaWYgKElTX0dFTjlfQkMoaTkxNSkgfHwgR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDEwKSB7CiAJCS8qIFN0b3JlIHRoZSBmcmVxdWVuY3kgdmFsdWVzIGluIDE2 LjY2IE1IWiB1bml0cywgd2hpY2ggaXMKIAkJICogdGhlIG5hdHVyYWwgaGFyZHdhcmUgdW5pdCBm b3IgU0tMCiAJCSAqLwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgc3RhdGljIGJvb2wgZ2VuOV9ycHNf ZW5hYmxlKHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSBndC0+dW5jb3JlOwogCiAJLyogUHJvZ3JhbSBkZWZhdWx0cyBhbmQgdGhyZXNob2xkcyBm b3IgUlBTICovCi0JaWYgKElTX0dFTihndC0+aTkxNSwgOSkpCisJaWYgKEdSQVBISUNTX1ZFUihn dC0+aTkxNSkgPT0gOSkKIAkJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwgR0VONl9SQ19W SURFT19GUkVRLAogCQkJCSAgICAgIEdFTjlfRlJFUVVFTkNZKHJwcy0+cnAxX2ZyZXEpKTsKIApA QCAtMTM2NSwxNiArMTM2NSwxNiBAQCB2b2lkIGludGVsX3Jwc19lbmFibGUoc3RydWN0IGludGVs X3JwcyAqcnBzKQogCQllbmFibGVkID0gY2h2X3Jwc19lbmFibGUocnBzKTsKIAllbHNlIGlmIChJ U19WQUxMRVlWSUVXKGk5MTUpKQogCQllbmFibGVkID0gdmx2X3Jwc19lbmFibGUocnBzKTsKLQll bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gOSkKIAkJZW5hYmxlZCA9IGdlbjlfcnBzX2VuYWJsZShycHMpOwotCWVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSA4KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KQog CQllbmFibGVkID0gZ2VuOF9ycHNfZW5hYmxlKHJwcyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5 MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWVuYWJsZWQg PSBnZW42X3Jwc19lbmFibGUocnBzKTsKIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGk5MTUpKQog CQllbmFibGVkID0gZ2VuNV9ycHNfZW5hYmxlKHJwcyk7CiAJZWxzZQotCQlNSVNTSU5HX0NBU0Uo SU5URUxfR0VOKGk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihpOTE1KSk7CiAJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAlpZiAo IWVuYWJsZWQpCiAJCXJldHVybjsKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgaW50ZWxfcnBz X2VuYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAKIAlpZiAoaGFzX2J1c3lfc3RhdHMocnBz KSkKIAkJaW50ZWxfcnBzX3NldF90aW1lcihycHMpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA2KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlpbnRlbF9ycHNf c2V0X2ludGVycnVwdHMocnBzKTsKIAllbHNlCiAJCS8qIElyb25sYWtlIGN1cnJlbnRseSB1c2Vz IGludGVsX2lwcy5rbyAqLyB7fQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBpbnRlbF9ycHNf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJaW50ZWxfcnBzX2NsZWFyX2ludGVycnVw dHMocnBzKTsKIAlpbnRlbF9ycHNfY2xlYXJfdGltZXIocnBzKTsKIAotCWlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNikKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfcnBzX2Rp c2FibGUocnBzKTsKIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGk5MTUpKQogCQlnZW41X3Jwc19k aXNhYmxlKHJwcyk7CkBAIC0xNDUzLDE0ICsxNDUzLDE0IEBAIGludCBpbnRlbF9ncHVfZnJlcShz dHJ1Y3QgaW50ZWxfcnBzICpycHMsIGludCB2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBycHNfdG9faTkxNShycHMpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5 KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJcmV0dXJuIERJVl9ST1VORF9DTE9T RVNUKHZhbCAqIEdUX0ZSRVFVRU5DWV9NVUxUSVBMSUVSLAogCQkJCQkgR0VOOV9GUkVRX1NDQUxF Uik7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGNodl9ncHVfZnJl cShycHMsIHZhbCk7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGJ5 dF9ncHVfZnJlcShycHMsIHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJ ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCXJldHVybiB2YWwgKiBHVF9GUkVR VUVOQ1lfTVVMVElQTElFUjsKIAllbHNlCiAJCXJldHVybiB2YWw7CkBAIC0xNDcwLDE0ICsxNDcw LDE0IEBAIGludCBpbnRlbF9mcmVxX29wY29kZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIGludCB2 YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBycHNfdG9faTkxNShycHMp OwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkg Pj0gOSkKIAkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKHZhbCAqIEdFTjlfRlJFUV9TQ0FMRVIs CiAJCQkJCSBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUik7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklF VyhpOTE1KSkKIAkJcmV0dXJuIGNodl9mcmVxX29wY29kZShycHMsIHZhbCk7CiAJZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGJ5dF9mcmVxX29wY29kZShycHMsIHZhbCk7 Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDYpCiAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2YWwsIEdUX0ZSRVFVRU5D WV9NVUxUSVBMSUVSKTsKIAllbHNlCiAJCXJldHVybiB2YWw7CkBAIC0xNzcwLDcgKzE3NzAsNyBA QCB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ycHMgKnJwcywgdTMyIHBt X2lpcikKIAkJc3Bpbl91bmxvY2soJmd0LT5pcnFfbG9jayk7CiAJfQogCi0JaWYgKElOVEVMX0dF TihndC0+aTkxNSkgPj0gOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4KQogCQly ZXR1cm47CiAKIAlpZiAocG1faWlyICYgUE1fVkVCT1hfVVNFUl9JTlRFUlJVUFQpCkBAIC0xODMz LDcgKzE4MzMsNyBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykK IAkJY2h2X3Jwc19pbml0KHJwcyk7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJ dmx2X3Jwc19pbml0KHJwcyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfcnBzX2luaXQocnBzKTsKIAll bHNlIGlmIChJU19JUk9OTEFLRV9NKGk5MTUpKQogCQlnZW41X3Jwc19pbml0KHJwcyk7CkBAIC0x ODQzLDcgKzE4NDMsNyBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJw cykKIAlycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCA9IHJwcy0+bWluX2ZyZXE7CiAKIAkvKiBBZnRl ciBzZXR0aW5nIG1heC1zb2Z0bGltaXQsIGZpbmQgdGhlIG92ZXJjbG9jayBtYXggZnJlcSAqLwot CWlmIChJU19HRU4oaTkxNSwgNikgfHwgSVNfSVZZQlJJREdFKGk5MTUpIHx8IElTX0hBU1dFTEwo aTkxNSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYgfHwgSVNfSVZZQlJJREdFKGk5 MTUpIHx8IElTX0hBU1dFTEwoaTkxNSkpIHsKIAkJdTMyIHBhcmFtcyA9IDA7CiAKIAkJc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChpOTE1LCBHRU42X1JFQURfT0NfUEFSQU1TLApAQCAtMTg3MiwxNiAr MTg3MiwxNiBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKIAkg KgogCSAqIFRPRE86IHZlcmlmeSBpZiB0aGlzIGNhbiBiZSByZXByb2R1Y2VkIG9uIFZMVixDSFYu CiAJICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSA3KQorCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPD0gNykKIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU42X1BNX1JQX1VQX0VJX0VYUElS RUQ7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDggJiYgSU5URUxfR0VOKGk5MTUpIDwgMTEp CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4ICYmIEdSQVBISUNTX1ZFUihpOTE1KSA8IDEx KQogCQlycHMtPnBtX2ludHJtc2tfbWJ6IHw9IEdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1Rf VE9fR1VDOwogfQogCiB2b2lkIGludGVsX3Jwc19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfcnBzICpy cHMpCiB7Ci0JaWYgKElOVEVMX0dFTihycHNfdG9faTkxNShycHMpKSA+PSA2KQorCWlmIChHUkFQ SElDU19WRVIocnBzX3RvX2k5MTUocnBzKSkgPj0gNikKIAkJcnBzX2Rpc2FibGVfaW50ZXJydXB0 cyhycHMpOwogfQogCkBAIC0xODkyLDExICsxODkyLDExIEBAIHUzMiBpbnRlbF9ycHNfZ2V0X2Nh Z2Yoc3RydWN0IGludGVsX3JwcyAqcnBzLCB1MzIgcnBzdGF0KQogCiAJaWYgKElTX1ZBTExFWVZJ RVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkKIAkJY2FnZiA9IChycHN0YXQgPj4gOCkg JiAweGZmOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCWVsc2UgaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA5KQogCQljYWdmID0gKHJwc3RhdCAmIEdFTjlfQ0FHRl9NQVNLKSA+ PiBHRU45X0NBR0ZfU0hJRlQ7CiAJZWxzZSBpZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9B RFdFTEwoaTkxNSkpCiAJCWNhZ2YgPSAocnBzdGF0ICYgSFNXX0NBR0ZfTUFTSykgPj4gSFNXX0NB R0ZfU0hJRlQ7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWNhZ2YgPSAocnBzdGF0ICYgR0VONl9DQUdGX01BU0sp ID4+IEdFTjZfQ0FHRl9TSElGVDsKIAllbHNlCiAJCWNhZ2YgPSBnZW41X2ludmVydF9mcmVxKHJw cywgKHJwc3RhdCAmIE1FTVNUQVRfUFNUQVRFX01BU0spID4+CkBAIC0xOTE1LDcgKzE5MTUsNyBA QCBzdGF0aWMgdTMyIHJlYWRfY2FnZihzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJCXZsdl9wdW5p dF9nZXQoaTkxNSk7CiAJCWZyZXEgPSB2bHZfcHVuaXRfcmVhZChpOTE1LCBQVU5JVF9SRUdfR1BV X0ZSRVFfU1RTKTsKIAkJdmx2X3B1bml0X3B1dChpOTE1KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dF TihpOTE1KSA+PSA2KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikgewog CQlmcmVxID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU42X1JQU1RBVDEpOwogCX0gZWxz ZSB7CiAJCWZyZXEgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIE1FTVNUQVRfSUxLKTsKQEAg LTE5NjgsNyArMTk2OCw3IEBAIHZvaWQgaW50ZWxfcnBzX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3Qg aW50ZWxfcnBzICpycHMpCiAJICogV2Ugb25seSByZWdpc3RlciB0aGUgaTkxNSBpcHMgcGFydCB3 aXRoIGludGVsLWlwcyBvbmNlIGV2ZXJ5dGhpbmcgaXMKIAkgKiBzZXQgdXAsIHRvIGF2b2lkIGlu dGVsLWlwcyBzbmVha2luZyBpbiBhbmQgcmVhZGluZyBib2d1cyB2YWx1ZXMuCiAJICovCi0JaWYg KElTX0dFTihndC0+aTkxNSwgNSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA9PSA1 KSB7CiAJCUdFTV9CVUdfT04oaXBzX21jaGRldik7CiAJCXJjdV9hc3NpZ25fcG9pbnRlcihpcHNf bWNoZGV2LCBndC0+aTkxNSk7CiAJCWlwc19waW5nX2Zvcl9pOTE1X2xvYWQoKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3NzZXUuYwppbmRleCAwZDlmNzRhZWM4ZmUuLjM2N2ZkNDRiODFjOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwpAQCAtNTkwLDEzICs1OTAsMTMgQEAg dm9pZCBpbnRlbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCQljaGVycnl2 aWV3X3NzZXVfaW5mb19pbml0KGd0KTsKIAllbHNlIGlmIChJU19CUk9BRFdFTEwoaTkxNSkpCiAJ CWJkd19zc2V1X2luZm9faW5pdChndCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDkpKQorCWVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KQogCQlnZW45X3NzZXVfaW5mb19pbml0KGd0 KTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTApKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA9PSAxMCkKIAkJZ2VuMTBfc3NldV9pbmZvX2luaXQoZ3QpOwotCWVsc2UgaWYgKElTX0dF TihpOTE1LCAxMSkpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDExKQogCQlnZW4x MV9zc2V1X2luZm9faW5pdChndCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKQor CWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikKIAkJZ2VuMTJfc3NldV9pbmZvX2lu aXQoZ3QpOwogfQogCkBAIC02MTMsNyArNjEzLDcgQEAgdTMyIGludGVsX3NzZXVfbWFrZV9ycGNz KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJICogTm8gZXhwbGljaXQgUlBDUyByZXF1ZXN0IGlzIG5l ZWRlZCB0byBlbnN1cmUgZnVsbAogCSAqIHNsaWNlL3N1YnNsaWNlL0VVIGVuYWJsZW1lbnQgcHJp b3IgdG8gR2VuOS4KIAkgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgOSkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpIDwgOSkKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAtNjUxLDcgKzY1MSw3IEBA IHUzMiBpbnRlbF9zc2V1X21ha2VfcnBjcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCSAqIHN1YnNs aWNlcyBhcmUgZW5hYmxlZCwgb3IgYSBjb3VudCBiZXR3ZWVuIG9uZSBhbmQgZm91ciBvbiB0aGUg Zmlyc3QKIAkgKiBzbGljZS4KIAkgKi8KLQlpZiAoSVNfR0VOKGk5MTUsIDExKSAmJgorCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gMTEgJiYKIAkgICAgc2xpY2VzID09IDEgJiYKIAkgICAgc3Vi c2xpY2VzID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8g MikpIHsKIAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAxKTsKQEAgLTY2OSw3ICs2NjksNyBAQCB1 MzIgaW50ZWxfc3NldV9tYWtlX3JwY3Moc3RydWN0IGludGVsX2d0ICpndCwKIAlpZiAoc3NldS0+ aGFzX3NsaWNlX3BnKSB7CiAJCXUzMiBtYXNrLCB2YWwgPSBzbGljZXM7CiAKLQkJaWYgKElOVEVM X0dFTihpOTE1KSA+PSAxMSkgeworCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7CiAJ CQltYXNrID0gR0VOMTFfUlBDU19TX0NOVF9NQVNLOwogCQkJdmFsIDw8PSBHRU4xMV9SUENTX1Nf Q05UX1NISUZUOwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dv cmthcm91bmRzLmMKaW5kZXggNjJjYjllZTViZmMzLi5iNjJkMWUzMWE2NDUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtNjk5LDkgKzY5OSw5IEBA IF9faW50ZWxfZW5naW5lX2luaXRfY3R4X3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKIAogCWlmIChJU19ERzEoaTkxNSkpCiAJCWRnMV9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdp bmUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEyKSkKKwllbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPT0gMTIpCiAJCWdlbjEyX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwg d2FsKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTEpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA9PSAxMSkKIAkJaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsK IAllbHNlIGlmIChJU19DQU5OT05MQUtFKGk5MTUpKQogCQljbmxfY3R4X3dvcmthcm91bmRzX2lu aXQoZW5naW5lLCB3YWwpOwpAQCAtNzE5LDE0ICs3MTksMTQgQEAgX19pbnRlbF9lbmdpbmVfaW5p dF9jdHhfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQljaHZfY3R4X3dvcmth cm91bmRzX2luaXQoZW5naW5lLCB3YWwpOwogCWVsc2UgaWYgKElTX0JST0FEV0VMTChpOTE1KSkK IAkJYmR3X2N0eF93b3JrYXJvdW5kc19pbml0KGVuZ2luZSwgd2FsKTsKLQllbHNlIGlmIChJU19H RU4oaTkxNSwgNykpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDcpCiAJCWdlbjdf Y3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lLCB3YWwpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1 LCA2KSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikKIAkJZ2VuNl9jdHhfd29y a2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpIDwg OCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA4KQogCQk7CiAJZWxzZQotCQlNSVNT SU5HX0NBU0UoSU5URUxfR0VOKGk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihp OTE1KSk7CiAKIAl3YV9pbml0X2ZpbmlzaCh3YWwpOwogfQpAQCAtOTUwLDcgKzk1MCw3IEBAIHdh X2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwpCiAJdW5zaWduZWQgaW50IHNsaWNlLCBzdWJzbGljZTsKIAl1MzIgbDNfZW4sIG1j ciwgbWNyX21hc2s7CiAKLQlHRU1fQlVHX09OKElOVEVMX0dFTihpOTE1KSA8IDEwKTsKKwlHRU1f QlVHX09OKEdSQVBISUNTX1ZFUihpOTE1KSA8IDEwKTsKIAogCS8qCiAJICogV2FQcm9ncmFtTWdz ckZvckwzQmFua1NwZWNpZmljTW1pb1JlYWRzOiBjbmwsaWNsCkBAIC05ODAsNyArOTgwLDcgQEAg d2FfaW5pdF9tY3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbCkKIAkgKiBvZiBldmVyeSBNTUlPIHJlYWQuCiAJICovCiAKLQlpZiAoSU5URUxf R0VOKGk5MTUpID49IDEwICYmIGlzX3Bvd2VyX29mXzIoc3NldS0+c2xpY2VfbWFzaykpIHsKKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwICYmIGlzX3Bvd2VyX29mXzIoc3NldS0+c2xpY2Vf bWFzaykpIHsKIAkJdTMyIGwzX2Z1c2UgPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQoJmk5MTUtPnVu Y29yZSwgR0VOMTBfTUlSUk9SX0ZVU0UzKSAmCiAJCQlHRU4xMF9MM0JBTktfTUFTSzsKQEAgLTEw MDIsNyArMTAwMiw3IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJfQogCXN1YnNsaWNlLS07CiAKLQlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewog CQltY3IgPSBHRU4xMV9NQ1JfU0xJQ0Uoc2xpY2UpIHwgR0VOMTFfTUNSX1NVQlNMSUNFKHN1YnNs aWNlKTsKIAkJbWNyX21hc2sgPSBHRU4xMV9NQ1JfU0xJQ0VfTUFTSyB8IEdFTjExX01DUl9TVUJT TElDRV9NQVNLOwogCX0gZWxzZSB7CkBAIC0xMTcxLDkgKzExNzEsOSBAQCBndF9pbml0X3dvcmth cm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV93YV9saXN0 ICp3YWwpCiAJCWRnMV9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7CiAJZWxzZSBpZiAo SVNfVElHRVJMQUtFKGk5MTUpKQogCQl0Z2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwp OwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMikpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID09IDEyKQogCQlnZW4xMl9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Ci0JZWxz ZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0g MTEpCiAJCWljbF9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7CiAJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShpOTE1KSkKIAkJY25sX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsK QEAgLTExOTMsMTggKzExOTMsMTggQEAgZ3RfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCQl2bHZfZ3Rfd29y a2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwogCWVsc2UgaWYgKElTX0lWWUJSSURHRShpOTE1KSkK IAkJaXZiX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKLQllbHNlIGlmIChJU19HRU4o aTkxNSwgNikpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDYpCiAJCXNuYl9ndF93 b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKQor CWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA1KQogCQlpbGtfZ3Rfd29ya2Fyb3VuZHNf aW5pdChpOTE1LCB3YWwpOwogCWVsc2UgaWYgKElTX0c0WChpOTE1KSkKIAkJZzR4X2d0X3dvcmth cm91bmRzX2luaXQoaTkxNSwgd2FsKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgNCkpCisJZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDQpCiAJCWdlbjRfZ3Rfd29ya2Fyb3VuZHNfaW5p dChpOTE1LCB3YWwpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA8PSA4KQorCWVsc2UgaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA8PSA4KQogCQk7CiAJZWxzZQotCQlNSVNTSU5HX0NBU0UoSU5U RUxfR0VOKGk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihpOTE1KSk7CiB9CiAK IHZvaWQgaW50ZWxfZ3RfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKQEAgLTE1NTgsOSArMTU1OCw5IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfd2hpdGVs aXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWlmIChJU19ERzEoaTkxNSkp CiAJCWRnMV93aGl0ZWxpc3RfYnVpbGQoZW5naW5lKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwg MTIpKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSAxMikKIAkJdGdsX3doaXRlbGlz dF9idWlsZChlbmdpbmUpOwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCAxMSkpCisJZWxzZSBpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID09IDExKQogCQlpY2xfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7 CiAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkKIAkJY25sX3doaXRlbGlzdF9idWlsZChl bmdpbmUpOwpAQCAtMTU3NiwxMCArMTU3NiwxMCBAQCB2b2lkIGludGVsX2VuZ2luZV9pbml0X3do aXRlbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWJ4dF93aGl0ZWxpc3Rf YnVpbGQoZW5naW5lKTsKIAllbHNlIGlmIChJU19TS1lMQUtFKGk5MTUpKQogCQlza2xfd2hpdGVs aXN0X2J1aWxkKGVuZ2luZSk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDgpCisJZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDgpCiAJCTsKIAllbHNlCi0JCU1JU1NJTkdfQ0FT RShJTlRFTF9HRU4oaTkxNSkpOworCQlNSVNTSU5HX0NBU0UoR1JBUEhJQ1NfVkVSKGk5MTUpKTsK IAogCXdhX2luaXRfZmluaXNoKHcpOwogfQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgcmNzX2VuZ2lu ZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfd2Ff bGlzdCAqd2FsKQogCQkJICAgICBFTkFCTEVfU01BTExQTCk7CiAJfQogCi0JaWYgKElTX0dFTihp OTE1LCAxMSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDExKSB7CiAJCS8qIFRoaXMg aXMgbm90IGFuIFdhLiBFbmFibGUgZm9yIGJldHRlciBpbWFnZSBxdWFsaXR5ICovCiAJCXdhX21h c2tlZF9lbih3YWwsCiAJCQkgICAgIF8zRF9DSElDS0VOMywKQEAgLTE3OTMsNyArMTc5Myw3IEBA IHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVj dCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJCSAgICAgRkZfRE9QX0NMT0NLX0dBVEVfRElTQUJMRSk7 CiAJfQogCi0JaWYgKElTX0dFTl9SQU5HRShpOTE1LCA5LCAxMikpIHsKKwlpZiAoSVNfR1JBUEhJ Q1NfVkVSKGk5MTUsIDksIDEyKSkgewogCQkvKiBGdHJQZXJDdHh0UHJlZW1wdGlvbkdyYW51bGFy aXR5Q29udHJvbDpza2wsYnh0LGtibCxjZmwsY25sLGljbCx0Z2wgKi8KIAkJd2FfbWFza2VkX2Vu KHdhbCwKIAkJCSAgICAgR0VON19GRl9TTElDRV9DU19DSElDS0VOMSwKQEAgLTE4MTcsNyArMTgx Nyw3IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJCSAgICAgR0VOOV9QT09MRURfRVVfTE9BRF9C QUxBTkNJTkdfRklYX0RJU0FCTEUpOwogCX0KIAotCWlmIChJU19HRU4oaTkxNSwgOSkpIHsKKwlp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDkpIHsKIAkJLyogV2FDb250ZXh0U3dpdGNoV2l0aENv bmN1cnJlbnRUTEJJbnZhbGlkYXRlOnNrbCxieHQsa2JsLGdsayxjZmwgKi8KIAkJd2FfbWFza2Vk X2VuKHdhbCwKIAkJCSAgICAgR0VOOV9DU0ZFX0NISUNLRU4xX1JDUywKQEAgLTE5MjEsNyArMTky MSw3IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJCQkgICAgIEdFTjdfUFNEX1NJTkdMRV9QT1JU X0RJU1BBVENIX0VOQUJMRSk7CiAJfQogCi0JaWYgKElTX0dFTihpOTE1LCA3KSkgeworCWlmIChH UkFQSElDU19WRVIoaTkxNSkgPT0gNykgewogCQkvKiBXYUJDU1ZDU1RsYkludmFsaWRhdGlvbk1v ZGU6aXZiLHZsdixoc3cgKi8KIAkJd2FfbWFza2VkX2VuKHdhbCwKIAkJCSAgICAgR0ZYX01PREVf R0VONywKQEAgLTE5NTMsNyArMTk1Myw3IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJICAgICAg IEdFTjZfV0laX0hBU0hJTkdfMTZ4NCk7CiAJfQogCi0JaWYgKElTX0dFTl9SQU5HRShpOTE1LCA2 LCA3KSkKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYsIDcpKQogCQkvKgogCQkgKiBXZSBu ZWVkIHRvIGRpc2FibGUgdGhlIEFzeW5jRmxpcCBwZXJmb3JtYW5jZSBvcHRpbWlzYXRpb25zIGlu CiAJCSAqIG9yZGVyIHRvIHVzZSBNSV9XQUlUX0ZPUl9FVkVOVCB3aXRoaW4gdGhlIENTLiBJdCBz aG91bGQKQEAgLTE5NjUsNyArMTk2NSw3IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJCSAgICAg TUlfTU9ERSwKIAkJCSAgICAgQVNZTkNfRkxJUF9QRVJGX0RJU0FCTEUpOwogCi0JaWYgKElTX0dF TihpOTE1LCA2KSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPT0gNikgewogCQkvKgogCQkg KiBSZXF1aXJlZCBmb3IgdGhlIGhhcmR3YXJlIHRvIHByb2dyYW0gc2NhbmxpbmUgdmFsdWVzIGZv cgogCQkgKiB3YWl0aW5nCkBAIC0yMDE5LDE0ICsyMDE5LDE0IEBAIHJjc19lbmdpbmVfd2FfaW5p dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndh bCkKIAkJCSAgICAgIENNMF9TVENfRVZJQ1RfRElTQUJMRV9MUkFfU05CKTsKIAl9CiAKLQlpZiAo SVNfR0VOX1JBTkdFKGk5MTUsIDQsIDYpKQorCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNCwg NikpCiAJCS8qIFdhVGltZWRTaW5nbGVWZXJ0ZXhEaXNwYXRjaDpjbCxidyxjdGcsZWxrLGlsayxz bmIgKi8KIAkJd2FfYWRkKHdhbCwgTUlfTU9ERSwKIAkJICAgICAgIDAsIF9NQVNLRURfQklUX0VO QUJMRShWU19USU1FUl9ESVNQQVRDSCksCiAJCSAgICAgICAvKiBYWFggYml0IGRvZXNuJ3Qgc3Rp Y2sgb24gQnJvYWR3YXRlciAqLwogCQkgICAgICAgSVNfSTk2NUcoaTkxNSkgPyAwIDogVlNfVElN RVJfRElTUEFUQ0gpOwogCi0JaWYgKElTX0dFTihpOTE1LCA0KSkKKwlpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID09IDQpCiAJCS8qCiAJCSAqIERpc2FibGUgQ09OU1RBTlRfQlVGRkVSIGJlZm9yZSBp dCBpcyBsb2FkZWQgZnJvbSB0aGUgY29udGV4dAogCQkgKiBpbWFnZS4gRm9yIGFzIGl0IGlzIGxv YWRlZCwgaXQgaXMgZXhlY3V0ZWQgYW5kIHRoZSBzdG9yZWQKQEAgLTIwNTgsNyArMjA1OCw3IEBA IHhjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVj dCBpOTE1X3dhX2xpc3QgKndhbCkKIHN0YXRpYyB2b2lkCiBlbmdpbmVfaW5pdF93b3JrYXJvdW5k cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndh bCkKIHsKLQlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwg NCkpCisJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA8 IDQpKQogCQlyZXR1cm47CiAKIAlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpCkBA IC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9pbml0X3dvcmthcm91bmRzKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3 YWwgPSAmZW5naW5lLT53YV9saXN0OwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwg NCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCA0KQogCQlyZXR1cm47CiAKIAl3 YV9pbml0X3N0YXJ0KHdhbCwgImVuZ2luZSIsIGVuZ2luZS0+bmFtZSk7CkBAIC0yMTEyLDkgKzIx MTIsOSBAQCBzdGF0aWMgYm9vbCBtY3JfcmFuZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHUzMiBvZmZzZXQpCiAJY29uc3Qgc3RydWN0IG1jcl9yYW5nZSAqbWNyX3JhbmdlczsKIAlp bnQgaTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpCisJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSAxMikKIAkJbWNyX3JhbmdlcyA9IG1jcl9yYW5nZXNfZ2VuMTI7Ci0JZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDgpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgp CiAJCW1jcl9yYW5nZXMgPSBtY3JfcmFuZ2VzX2dlbjg7CiAJZWxzZQogCQlyZXR1cm4gZmFsc2U7 CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCB3YV9saXN0X3NybShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwKIAl1MzIgc3JtLCAqY3M7CiAKIAlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCBNSV9T Uk1fTFJNX0dMT0JBTF9HVFQ7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KQorCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPj0gOCkKIAkJc3JtKys7CiAKIAlmb3IgKGkgPSAwLCB3YSA9IHdhbC0+ bGlzdDsgaSA8IHdhbC0+Y291bnQ7IGkrKywgd2ErKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYwppbmRleCAzNDUzZWI3N2M0OTguLjY0YWJmNWZlYWJm YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKQEAg LTUyLDcgKzUyLDcgQEAgc3RhdGljIGludCB3cml0ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEsIGludCBzbG90KQogCQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKIAljbWQgPSBNSV9T VE9SRV9SRUdJU1RFUl9NRU0gfCBNSV9VU0VfR0dUVDsKLQlpZiAoSU5URUxfR0VOKHJxLT5lbmdp bmUtPmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihycS0+ZW5naW5lLT5pOTE1KSA+PSA4 KQogCQljbWQrKzsKIAkqY3MrKyA9IGNtZDsKIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KFJJTkdfVElNRVNUQU1QKHJxLT5lbmdpbmUtPm1taW9fYmFzZSkpOwpAQCAtMTI1LDcgKzEyNSw3 IEBAIHN0YXRpYyBpbnQgcGVyZl9taV9iYl9zdGFydCh2b2lkICphcmcpCiAJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7CiAJaW50IGVyciA9IDA7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8 IDcpIC8qIGZvciBwZXItZW5naW5lIENTX1RJTUVTVEFNUCAqLworCWlmIChHUkFQSElDU19WRVIo Z3QtPmk5MTUpIDwgNykgLyogZm9yIHBlci1lbmdpbmUgQ1NfVElNRVNUQU1QICovCiAJCXJldHVy biAwOwogCiAJcGVyZl9iZWdpbihndCk7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGludCBw ZXJmX21pX25vb3Aodm9pZCAqYXJnKQogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCWludCBl cnIgPSAwOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA3KSAvKiBmb3IgcGVyLWVuZ2lu ZSBDU19USU1FU1RBTVAgKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDcpIC8qIGZv ciBwZXItZW5naW5lIENTX1RJTUVTVEFNUCAqLwogCQlyZXR1cm4gMDsKIAogCXBlcmZfYmVnaW4o Z3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5l X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYwppbmRl eCAyYzg5ODYyMmJkZmIuLjcyY2NhM2YwZGEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IGxp dmVfZW5naW5lX3RpbWVzdGFtcHModm9pZCAqYXJnKQogCSAqIHRoZSBzYW1lIENTIGNsb2NrLgog CSAqLwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KQorCWlmIChHUkFQSElDU19WRVIo Z3QtPmk5MTUpIDwgOCkKIAkJcmV0dXJuIDA7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBn dCwgaWQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4 ZWNsaXN0cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMK aW5kZXggMWY5MzU5MWE4YzY5Li5lYTIyMDNhZjA3NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCkBAIC0zMjY5LDcgKzMyNjksNyBAQCBzdGF0aWMg aW50IGxpdmVfcHJlZW1wdF91c2VyKHZvaWQgKmFyZykKIAkJaWYgKCFpbnRlbF9lbmdpbmVfaGFz X3ByZWVtcHRpb24oZW5naW5lKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChJU19HRU4oZ3QtPmk5 MTUsIDgpICYmIGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCQlpZiAoR1JBUEhJQ1Nf VkVSKGd0LT5pOTE1KSA9PSA4ICYmIGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQkJ Y29udGludWU7IC8qIHdlIG5lZWQgcGVyLWNvbnRleHQgR1BSICovCiAKIAkJaWYgKGlndF9saXZl X3Rlc3RfYmVnaW4oJnQsIGd0LT5pOTE1LCBfX2Z1bmNfXywgZW5naW5lLT5uYW1lKSkgewpAQCAt NDI5Myw3ICs0MjkzLDcgQEAgc3RhdGljIGludCBsaXZlX3ZpcnR1YWxfcHJlc2VydmVkKHZvaWQg KmFyZykKIAkJcmV0dXJuIDA7CiAKIAkvKiBBcyB3ZSB1c2UgQ1NfR1BSIHdlIGNhbm5vdCBydW4g YmVmb3JlIHRoZXkgZXhpc3RlZCBvbiBhbGwgZW5naW5lcy4gKi8KLQlpZiAoSU5URUxfR0VOKGd0 LT5pOTE1KSA8IDkpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA5KQogCQlyZXR1cm4g MDsKIAogCWZvciAoY2xhc3MgPSAwOyBjbGFzcyA8PSBNQVhfRU5HSU5FX0NMQVNTOyBjbGFzcysr KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYwppbmRleCBjMDg0NWJm NzJkZDMuLmI5NDQxMjE3Y2EzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZ3RfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9n dF9wbS5jCkBAIC03NCwxMCArNzQsMTAgQEAgc3RhdGljIGludCBsaXZlX2d0X2Nsb2Nrcyh2b2lk ICphcmcpCiAJCXJldHVybiAwOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNCkg LyogQW55IENTX1RJTUVTVEFNUD8gKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDQp IC8qIEFueSBDU19USU1FU1RBTVA/ICovCiAJCXJldHVybiAwOwogCi0JaWYgKElTX0dFTihndC0+ aTkxNSwgNSkpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPT0gNSkKIAkJLyoKIAkJICog WFhYIENTX1RJTUVTVEFNUCBsb3cgZHdvcmQgaXMgZHlzZnVuY3Rpb25hbD8KIAkJICoKQEAgLTg2 LDcgKzg2LDcgQEAgc3RhdGljIGludCBsaXZlX2d0X2Nsb2Nrcyh2b2lkICphcmcpCiAJCSAqLwog CQlyZXR1cm4gMDsKIAotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDQpKQorCWlmIChHUkFQSElDU19W RVIoZ3QtPmk5MTUpID09IDQpCiAJCS8qCiAJCSAqIFhYWCBDU19USU1FU1RBTVAgYXBwZWFycyBn aWJiZXJpc2gKIAkJICoKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IGxpdmVfZ3RfY2xv Y2tzKHZvaWQgKmFyZykKIAkJdTY0IHRpbWU7CiAJCXU2NCBkdDsKIAotCQlpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPCA3ICYmIGVuZ2luZS0+aWQgIT0gUkNTMCkKKwkJaWYgKEdSQVBISUNT X1ZFUihlbmdpbmUtPmk5MTUpIDwgNyAmJiBlbmdpbmUtPmlkICE9IFJDUzApCiAJCQljb250aW51 ZTsKIAogCQltZWFzdXJlX2Nsb2NrcyhlbmdpbmUsICZjeWNsZXMsICZkdCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCmluZGV4IDViNjNkNGRmOGM5My4u ODUzMjQ2ZmFkMDVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5n Y2hlY2suYwpAQCAtMTgwLDcgKzE4MCw3IEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhh bmcgKmgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJZ290byBjYW5jZWxfcnE7 CiAKIAliYXRjaCA9IGgtPmJhdGNoOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDgpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4KSB7CiAJCSpiYXRjaCsrID0gTUlfU1RP UkVfRFdPUkRfSU1NX0dFTjQ7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyhod3NfYWRkcmVz cyhod3MsIHJxKSk7CiAJCSpiYXRjaCsrID0gdXBwZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3Ms IHJxKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgaGFuZ19jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaGFu ZyAqaCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkqYmF0Y2grKyA9IE1JX0JB VENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgOCB8IDE7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0 cyh2bWEtPm5vZGUuc3RhcnQpOwogCQkqYmF0Y2grKyA9IHVwcGVyXzMyX2JpdHModm1hLT5ub2Rl LnN0YXJ0KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikgeworCX0gZWxz ZSBpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA2KSB7CiAJCSpiYXRjaCsrID0gTUlfU1RP UkVfRFdPUkRfSU1NX0dFTjQ7CiAJCSpiYXRjaCsrID0gMDsKIAkJKmJhdGNoKysgPSBsb3dlcl8z Ml9iaXRzKGh3c19hZGRyZXNzKGh3cywgcnEpKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBoYW5nX2Ny ZWF0ZV9yZXF1ZXN0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJCSpiYXRjaCsrID0gTUlfTk9PUDsKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJf U1RBUlQgfCAxIDw8IDg7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3Rh cnQpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlm IChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDQpIHsKIAkJKmJhdGNoKysgPSBNSV9TVE9SRV9E V09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsr ID0gbG93ZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7CkBAIC0yNDMsNyArMjQzLDcg QEAgaGFuZ19jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCX0KIAogCWZsYWdzID0gMDsKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1 KSA8PSA1KQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDw9IDUpCiAJCWZsYWdzIHw9IEk5 MTVfRElTUEFUQ0hfU0VDVVJFOwogCiAJZXJyID0gcnEtPmVuZ2luZS0+ZW1pdF9iYl9zdGFydChy cSwgdm1hLT5ub2RlLnN0YXJ0LCBQQUdFX1NJWkUsIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xsYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfbGxjLmMKaW5kZXggOTQwMDZmMTE3YmJkLi40NTliNzc1ZjE2M2EgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xsYy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xsYy5jCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRp YyBpbnQgZ2VuNl92ZXJpZnlfcmluZ19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKIAkJaWYg KGZvdW5kICE9IGlhX2ZyZXEpIHsKIAkJCXByX2VycigiTWluIGZyZXEgdGFibGUoJWQvWyVkLCAl ZF0pOiVkTUh6IGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgQ1BVIGZyZXEsIGZvdW5kICVkLCBleHBl Y3RlZCAlZFxuIiwKIAkJCSAgICAgICBncHVfZnJlcSwgY29uc3RzLm1pbl9ncHVfZnJlcSwgY29u c3RzLm1heF9ncHVfZnJlcSwKLQkJCSAgICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVx ICogKElOVEVMX0dFTihpOTE1KSA+PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKKwkJCSAg ICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVxICogKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKIAkJCSAgICAgICBmb3VuZCwgaWFfZnJlcSk7 CiAJCQllcnIgPSAtRUlOVkFMOwogCQkJYnJlYWs7CkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBp bnQgZ2VuNl92ZXJpZnlfcmluZ19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKIAkJaWYgKGZv dW5kICE9IHJpbmdfZnJlcSkgewogCQkJcHJfZXJyKCJNaW4gZnJlcSB0YWJsZSglZC9bJWQsICVk XSk6JWRNSHogZGlkIG5vdCBtYXRjaCBleHBlY3RlZCByaW5nIGZyZXEsIGZvdW5kICVkLCBleHBl Y3RlZCAlZFxuIiwKIAkJCSAgICAgICBncHVfZnJlcSwgY29uc3RzLm1pbl9ncHVfZnJlcSwgY29u c3RzLm1heF9ncHVfZnJlcSwKLQkJCSAgICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVx ICogKElOVEVMX0dFTihpOTE1KSA+PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKKwkJCSAg ICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVxICogKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKIAkJCSAgICAgICBmb3VuZCwgcmluZ19mcmVx KTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfbHJjLmMKaW5kZXggZDhmNjYyMzUyNGU4Li4zMTE5MDE2ZDk5MTAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCkBAIC01ODQsNyArNTg0LDcgQEAgc3RhdGljIGlu dCBfX2xpdmVfbHJjX2dwcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJaW50IGVy cjsKIAlpbnQgbjsKIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDkgJiYgZW5naW5l LT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp IDwgOSAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuIDA7IC8qIEdQ UiBvbmx5IG9uIHJjczAgZm9yIGdlbjggKi8KIAogCWVyciA9IGdwcl9tYWtlX2RpcnR5KGVuZ2lu ZS0+a2VybmVsX2NvbnRleHQpOwpAQCAtMTM4OSwxMCArMTM4OSwxMCBAQCBzdGF0aWMgaW50IF9f bHJjX2lzb2xhdGlvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBwb2lzb24p CiAKIHN0YXRpYyBib29sIHNraXBfaXNvbGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKLQlpZiAoZW5naW5lLT5jbGFzcyA9PSBDT1BZX0VOR0lORV9DTEFTUyAm JiBJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSA5KQorCWlmIChlbmdpbmUtPmNsYXNzID09IENP UFlfRU5HSU5FX0NMQVNTICYmIEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDkpCiAJCXJl dHVybiB0cnVlOwogCi0JaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTICYmIElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID09IDExKQorCWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9D TEFTUyAmJiBHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA9PSAxMSkKIAkJcmV0dXJuIHRydWU7 CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBzdGF0aWMgaW50IF9fbGl2 ZV9scmNfaW5kaXJlY3RfY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkv KiBXZSB1c2UgdGhlIGFscmVhZHkgcmVzZXJ2ZWQgZXh0cmEgcGFnZSBpbiBjb250ZXh0IHN0YXRl ICovCiAJaWYgKCFhLT53YV9iYl9wYWdlKSB7CiAJCUdFTV9CVUdfT04oYi0+d2FfYmJfcGFnZSk7 Ci0JCUdFTV9CVUdfT04oSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPT0gMTIpOworCQlHRU1fQlVH X09OKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID09IDEyKTsKIAkJZ290byB1bnBpbl9iOwog CX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jCmluZGV4IGU1NWE4ODdk MTFlMi4uYjliYjBlNmU5N2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9j cy5jCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGJvb2wgbWNyX3JhbmdlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCB1MzIgb2Zmc2V0KQogCSAqIHdoaWNoIG9ubHkgY29udHJvbHMg Q1BVIGluaXRpYXRlZCBNTUlPLiBSb3V0aW5nIGRvZXMgbm90CiAJICogd29yayBmb3IgQ1MgYWNj ZXNzIHNvIHdlIGNhbm5vdCB2ZXJpZnkgdGhlbSBvbiB0aGlzIHBhdGguCiAJICovCi0JcmV0dXJu IElOVEVMX0dFTihpOTE1KSA+PSA4ICYmIG9mZnNldCA+PSAweGIwMDAgJiYgb2Zmc2V0IDw9IDB4 YjRmZjsKKwlyZXR1cm4gR1JBUEhJQ1NfVkVSKGk5MTUpID49IDggJiYgb2Zmc2V0ID49IDB4YjAw MCAmJiBvZmZzZXQgPD0gMHhiNGZmOwogfQogCiBzdGF0aWMgaW50IGNoZWNrX2wzY2NfdGFibGUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9yYzYuYwppbmRleCA3MTBmODI1ZjZlNWEuLjhjNzBiN2UxMjA3NCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgY29u c3QgdTMyICpfX2xpdmVfcmM2X2N0eChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJfQogCiAJ Y21kID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfVVNFX0dHVFQ7Ci0JaWYgKElOVEVMX0dF TihycS0+ZW5naW5lLT5pOTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+ aTkxNSkgPj0gOCkKIAkJY21kKys7CiAKIAkqY3MrKyA9IGNtZDsKQEAgLTE5Myw3ICsxOTMsNyBA QCBpbnQgbGl2ZV9yYzZfY3R4X3dhKHZvaWQgKmFyZykKIAlpbnQgZXJyID0gMDsKIAogCS8qIEEg cmVhZCBvZiBDVFhfSU5GTyB1cHNldHMgcmM2LiBQb2tlIHRoZSBiZWFyISAqLwotCWlmIChJTlRF TF9HRU4oZ3QtPmk5MTUpIDwgOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpCiAJ CXJldHVybiAwOwogCiAJZW5naW5lcyA9IHJhbmRvbWlzZWRfZW5naW5lcyhndCwgJnBybmcsICZj b3VudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5n X3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3Vi bWlzc2lvbi5jCmluZGV4IGMxMmU3NDE3MWI2My4uMDQxOTU0NDA4ZDBmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYwpAQCAtNDEs MTAgKzQxLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmNyZWF0ZV93YWxseShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCXJldHVybiBFUlJfQ0FTVChjcyk7CiAJfQogCi0J aWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVu Z2luZS0+aTkxNSkgPj0gNikgewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40Owog CQkqY3MrKyA9IDA7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA0KSB7 CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA0KSB7CiAJCSpjcysr ID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkJKmNzKysgPSAwOwog CX0gZWxzZSB7CkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIGludCBsaXZlX2N0eF9zd2l0Y2hf d2Eodm9pZCAqYXJnKQogCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5l KSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChJU19HRU5fUkFOR0UoZ3QtPmk5MTUsIDQsIDUpKQor CQlpZiAoSVNfR1JBUEhJQ1NfVkVSKGd0LT5pOTE1LCA0LCA1KSkKIAkJCWNvbnRpbnVlOyAvKiBN SV9TVE9SRV9EV09SRCBpcyBwcml2aWxlZ2VkISAqLwogCiAJCXNhdmVkX3dhID0gZmV0Y2hfYW5k X3plcm8oJmVuZ2luZS0+d2FfY3R4LnZtYSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9ycHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X3Jwcy5jCmluZGV4IDNjYTFiZDU3OTNjMy4uN2VlMjUxM2UxNWY5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ycHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9ycHMuYwpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyB2b2lkIHNo b3dfcHN0YXRlX2xpbWl0cyhzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJCQlpOTE1X21taW9fcmVn X29mZnNldChCWFRfUlBfU1RBVEVfQ0FQKSwKIAkJCWludGVsX3VuY29yZV9yZWFkKHJwc190b191 bmNvcmUocnBzKSwKIAkJCQkJICBCWFRfUlBfU1RBVEVfQ0FQKSk7Ci0JfSBlbHNlIGlmIChJU19H RU4oaTkxNSwgOSkpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KSB7CiAJ CXByX2luZm8oIlBfU1RBVEVfTElNSVRTWyV4XTogMHglMDh4XG4iLAogCQkJaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VOOV9SUF9TVEFURV9MSU1JVFMpLAogCQkJaW50ZWxfdW5jb3JlX3JlYWQocnBz X3RvX3VuY29yZShycHMpLApAQCAtMjIyLDcgKzIyMiw3IEBAIGludCBsaXZlX3Jwc19jbG9ja19p bnRlcnZhbCh2b2lkICphcmcpCiAJc3RydWN0IGlndF9zcGlubmVyIHNwaW47CiAJaW50IGVyciA9 IDA7CiAKLQlpZiAoIWludGVsX3Jwc19pc19lbmFibGVkKHJwcykgfHwgSU5URUxfR0VOKGd0LT5p OTE1KSA8IDYpCisJaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IEdSQVBISUNTX1ZF UihndC0+aTkxNSkgPCA2KQogCQlyZXR1cm4gMDsKIAogCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZz cGluLCBndCkpCkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZvaWQgc2hvd19wY3VfY29uZmln KHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKIAogCW1pbl9ncHVfZnJlcSA9IHJwcy0+bWluX2ZyZXE7 CiAJbWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJLyogQ29udmVydCBHVCBm cmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KIAkJbWluX2dwdV9mcmVxIC89IEdFTjlfRlJFUV9T Q0FMRVI7CiAJCW1heF9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOwpAQCAtNjE0LDcgKzYx NCw3IEBAIGludCBsaXZlX3Jwc19mcmVxdWVuY3lfY3Modm9pZCAqYXJnKQogCWlmICghaW50ZWxf cnBzX2lzX2VuYWJsZWQocnBzKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5p OTE1KSA8IDgpIC8qIGZvciBDUyBzaW1wbGljaXR5ICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+ aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLwogCQlyZXR1cm4gMDsKIAogCWlmIChD UFVfTEFURU5DWSA+PSAwKQpAQCAtNzU1LDcgKzc1NSw3IEBAIGludCBsaXZlX3Jwc19mcmVxdWVu Y3lfc3JtKHZvaWQgKmFyZykKIAlpZiAoIWludGVsX3Jwc19pc19lbmFibGVkKHJwcykpCiAJCXJl dHVybiAwOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxp Y2l0eSAqLworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOCkgLyogZm9yIENTIHNpbXBs aWNpdHkgKi8KIAkJcmV0dXJuIDA7CiAKIAlpZiAoQ1BVX0xBVEVOQ1kgPj0gMCkKQEAgLTEwMzEs NyArMTAzMSw3IEBAIGludCBsaXZlX3Jwc19pbnRlcnJ1cHQodm9pZCAqYXJnKQogCSAqIEZpcnN0 LCBsZXQncyBjaGVjayB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcmVjZWl2aW5nIGludGVycnVwdHMu CiAJICovCiAKLQlpZiAoIWludGVsX3Jwc19oYXNfaW50ZXJydXB0cyhycHMpIHx8IElOVEVMX0dF TihndC0+aTkxNSkgPCA2KQorCWlmICghaW50ZWxfcnBzX2hhc19pbnRlcnJ1cHRzKHJwcykgfHwg R1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDYpCiAJCXJldHVybiAwOwogCiAJaW50ZWxfZ3RfcG1f Z2V0KGd0KTsKQEAgLTExMzYsNyArMTEzNiw3IEBAIGludCBsaXZlX3Jwc19wb3dlcih2b2lkICph cmcpCiAJICogdGhhdCB0aGVvcnkuCiAJICovCiAKLQlpZiAoIWludGVsX3Jwc19pc19lbmFibGVk KHJwcykgfHwgSU5URUxfR0VOKGd0LT5pOTE1KSA8IDYpCisJaWYgKCFpbnRlbF9ycHNfaXNfZW5h YmxlZChycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQogCQlyZXR1cm4gMDsKIAog CWlmICghbGlicmFwbF9zdXBwb3J0ZWQoZ3QtPmk5MTUpKQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAg aW50IGxpdmVfcnBzX2R5bmFtaWModm9pZCAqYXJnKQogCSAqIG1vdmluZyBwYXJ0cyBpbnRvIGR5 bmFtaWMgcmVjbG9ja2luZyBiYXNlZCBvbiBsb2FkLgogCSAqLwogCi0JaWYgKCFpbnRlbF9ycHNf aXNfZW5hYmxlZChycHMpIHx8IElOVEVMX0dFTihndC0+aTkxNSkgPCA2KQorCWlmICghaW50ZWxf cnBzX2lzX2VuYWJsZWQocnBzKSB8fCBHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgNikKIAkJcmV0 dXJuIDA7CiAKIAlpZiAoaWd0X3NwaW5uZXJfaW5pdCgmc3BpbiwgZ3QpKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKaW5kZXggOWFkYmQ5ZDE0N2JlLi42NGRh MGM5MWRlYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Rp bWVsaW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUu YwpAQCAtNDU3LDEyICs0NTcsMTIgQEAgc3RhdGljIGludCBlbWl0X2dndHRfc3RvcmVfZHcoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBhZGRyLCB1MzIgdmFsdWUpCiAJaWYgKElTX0VSUihj cykpCiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAotCWlmIChJTlRFTF9HRU4ocnEtPmVuZ2luZS0+ aTkxNSkgPj0gOCkgeworCWlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPj0gOCkg ewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CiAJCSpj cysrID0gYWRkcjsKIAkJKmNzKysgPSAwOwogCQkqY3MrKyA9IHZhbHVlOwotCX0gZWxzZSBpZiAo SU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDQpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNT X1ZFUihycS0+ZW5naW5lLT5pOTE1KSA+PSA0KSB7CiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRf SU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkJKmNzKysgPSAwOwogCQkqY3MrKyA9IGFkZHI7CkBA IC05OTIsNyArOTkyLDcgQEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJ ICogZXZlbiBhY3Jvc3MgbXVsdGlwbGUgd3JhcHMuCiAJICovCiAKLQlpZiAoSU5URUxfR0VOKGd0 LT5pOTE1KSA8IDgpIC8qIENTIGNvbnZlbmllbmNlIFtTUk0vTFJNXSAqLworCWlmIChHUkFQSElD U19WRVIoZ3QtPmk5MTUpIDwgOCkgLyogQ1MgY29udmVuaWVuY2UgW1NSTS9MUk1dICovCiAJCXJl dHVybiAwOwogCiAJdGwgPSBpbnRlbF90aW1lbGluZV9jcmVhdGUoZ3QpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKaW5kZXggNjQ5MzdlYzNmMmRj Li5jMzA3NTRkYWY0YjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X3dvcmthcm91bmRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf d29ya2Fyb3VuZHMuYwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHJlYWRfbm9ucHJpdnMoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQogCQlnb3RvIGVycl9yZXE7CiAKIAlzcm0gPSBNSV9TVE9SRV9SRUdJ U1RFUl9NRU0gfCBNSV9TUk1fTFJNX0dMT0JBTF9HVFQ7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUt Pmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDgpCiAJCXNy bSsrOwogCiAJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogUklOR19NQVhfTk9OUFJJVl9T TE9UUyk7CkBAIC01NDYsNyArNTQ2LDcgQEAgc3RhdGljIGludCBjaGVja19kaXJ0eV93aGl0ZWxp c3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCiAJCXNybSA9IE1JX1NUT1JFX1JFR0lTVEVS X01FTTsKIAkJbHJtID0gTUlfTE9BRF9SRUdJU1RFUl9NRU07Ci0JCWlmIChJTlRFTF9HRU4oZW5n aW5lLT5pOTE1KSA+PSA4KQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOCkK IAkJCWxybSsrLCBzcm0rKzsKIAogCQlwcl9kZWJ1ZygiJXM6IFdyaXRpbmcgZ2FyYmFnZSB0byAl eFxuIiwKQEAgLTc0OSw3ICs3NDksNyBAQCBzdGF0aWMgaW50IGxpdmVfZGlydHlfd2hpdGVsaXN0 KHZvaWQgKmFyZykKIAogCS8qIENhbiB0aGUgdXNlciB3cml0ZSB0byB0aGUgd2hpdGVsaXN0ZWQg cmVnaXN0ZXJzPyAqLwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA3KSAvKiBtaW5pbXVt IHJlcXVpcmVtZW50IGZvciBMUkksIFNSTSwgTFJNICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+ aTkxNSkgPCA3KSAvKiBtaW5pbXVtIHJlcXVpcmVtZW50IGZvciBMUkksIFNSTSwgTFJNICovCiAJ CXJldHVybiAwOwogCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7CkBAIC04Mjks NyArODI5LDcgQEAgc3RhdGljIGludCByZWFkX3doaXRlbGlzdGVkX3JlZ2lzdGVycyhzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCiAJCWdvdG8gZXJyX3JlcTsKIAogCXNybSA9IE1JX1NUT1JFX1JF R0lTVEVSX01FTTsKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOCkKKwlpZiAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOCkKIAkJc3JtKys7CiAKIAljcyA9IGludGVsX3Jp bmdfYmVnaW4ocnEsIDQgKiBlbmdpbmUtPndoaXRlbGlzdC5jb3VudCk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Yy5jCmluZGV4IGFkYWUwNGM0N2FhYi4uODRmODA2OTExMzcwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwpAQCAtNjAsNyArNjAsNyBAQCB2 b2lkIGludGVsX2d1Y19pbml0X3NlbmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJZW51 bSBmb3JjZXdha2VfZG9tYWlucyBmd19kb21haW5zID0gMDsKIAl1bnNpZ25lZCBpbnQgaTsKIAot CWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihndC0+ aTkxNSkgPj0gMTEpIHsKIAkJZ3VjLT5zZW5kX3JlZ3MuYmFzZSA9CiAJCQkJaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VOMTFfU09GVF9TQ1JBVENIKDApKTsKIAkJZ3VjLT5zZW5kX3JlZ3MuY291bnQg PSBHRU4xMV9TT0ZUX1NDUkFUQ0hfQ09VTlQ7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBpbnRl bF9ndWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAKIAltdXRleF9pbml0KCZn dWMtPnNlbmRfbXV0ZXgpOwogCXNwaW5fbG9ja19pbml0KCZndWMtPmlycV9sb2NrKTsKLQlpZiAo SU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkg ewogCQlndWMtPm5vdGlmeV9yZWcgPSBHRU4xMV9HVUNfSE9TVF9JTlRFUlJVUFQ7CiAJCWd1Yy0+ aW50ZXJydXB0cy5yZXNldCA9IGdlbjExX3Jlc2V0X2d1Y19pbnRlcnJ1cHRzOwogCQlndWMtPmlu dGVycnVwdHMuZW5hYmxlID0gZ2VuMTFfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jCmluZGV4IDE3NTI2NzE3MzY4Yy4uYjMy ZmFmYmEyYTkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfYWRzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5j CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogCWJsb2ItPnN5c3RlbV9pbmZvLmdlbmVyaWNfZ3Rfc3lzaW5mb1tHVUNf R0VORVJJQ19HVF9TWVNJTkZPX1ZEQk9YX1NGQ19TVVBQT1JUX01BU0tdID0KIAkJZ3QtPmluZm8u dmRib3hfc2ZjX2FjY2VzczsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIgJiYgIUlTX0RH RlgoaTkxNSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyICYmICFJU19ER0ZYKGk5 MTUpKSB7CiAJCXUzMiBkaXN0ZGJyZWcgPSBpbnRlbF91bmNvcmVfcmVhZChndC0+dW5jb3JlLAog CQkJCQkJICBHRU4xMl9ESVNUX0RCU19QT1BVTEFURUQpOwogCQlibG9iLT5zeXN0ZW1faW5mby5n ZW5lcmljX2d0X3N5c2luZm9bR1VDX0dFTkVSSUNfR1RfU1lTSU5GT19ET09SQkVMTF9DT1VOVF9Q RVJfU1FJREldID0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMKaW5k ZXggMjI3MGQ2YjNiMjcyLi43NmZlNzY2YWQxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19mdy5jCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19wcmVw YXJlX3hmZXIoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCWVsc2UKIAkJaW50ZWxfdW5j b3JlX3dyaXRlKHVuY29yZSwgR0VOOV9HVF9QTV9DT05GSUcsIEdUX0RPT1JCRUxMX0VOQUJMRSk7 CiAKLQlpZiAoSVNfR0VOKHVuY29yZS0+aTkxNSwgOSkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKHVu Y29yZS0+aTkxNSkgPT0gOSkgewogCQkvKiBET1AgQ2xvY2sgR2F0aW5nIEVuYWJsZSBmb3IgR3VD IGNsb2NrcyAqLwogCQlpbnRlbF91bmNvcmVfcm13KHVuY29yZSwgR0VON19NSVNDQ1BDVEwsCiAJ CQkJIDAsIEdFTjhfRE9QX0NMT0NLX0dBVEVfR1VDX0VOQUJMRSk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCAzMzU3MTlmMTc0 OTAuLjU0MWY2ZGExZWM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfc3VibWlzc2lvbi5jCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHZvaWQgZ3Vj X2ludGVycnVwdHNfY2FwdHVyZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXUzMiBpcnFzID0gR1Rf Q09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUOwogCXUzMiBkbWFzayA9IGlycXMgPDwgMTYgfCBpcnFz OwogCi0JR0VNX0JVR19PTihJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgMTEpOworCUdFTV9CVUdfT04o R1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDExKTsKIAogCS8qIERvbid0IGhhbmRsZSB0aGUgY3R4 IHN3aXRjaCBpbnRlcnJ1cHQgaW4gR3VDIHN1Ym1pc3Npb24gbW9kZSAqLwogCWludGVsX3VuY29y ZV9ybXcodW5jb3JlLCBHRU4xMV9SRU5ERVJfQ09QWV9JTlRSX0VOQUJMRSwgZG1hc2ssIDApOwpA QCAtNDUxLDcgKzQ1MSw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3Ry dWN0IGludGVsX2d0ICpndCkKIAl1MzIgaXJxcyA9IEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQ VDsKIAl1MzIgZG1hc2sgPSBpcnFzIDw8IDE2IHwgaXJxczsKIAotCUdFTV9CVUdfT04oSU5URUxf R0VOKGd0LT5pOTE1KSA8IDExKTsKKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZFUihndC0+aTkxNSkg PCAxMSk7CiAKIAkvKiBIYW5kbGUgY3R4IHN3aXRjaCBpbnRlcnJ1cHRzIGFnYWluICovCiAJaW50 ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEdFTjExX1JFTkRFUl9DT1BZX0lOVFJfRU5BQkxFLCAwLCBk bWFzayk7CkBAIC02NDgsNyArNjQ4LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNz KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBn ZW44X2VtaXRfZmx1c2hfeGNzOwogCWVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIgPSBnZW44 X2VtaXRfaW5pdF9icmVhZGNydW1iOwogCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBn ZW44X2VtaXRfZmluaV9icmVhZGNydW1iX3hjczsKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPj0gMTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpIHsKIAkJ ZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjEyX2VtaXRfZmluaV9icmVhZGNydW1i X3hjczsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVzaF94Y3M7CiAJfQpA QCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyB2b2lkIHJjc19zdWJtaXNzaW9uX292 ZXJyaWRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzd2l0Y2ggKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 KSkgewogCWNhc2UgMTI6CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjEyX2VtaXRfZmx1c2hf cmNzOwogCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2Jy ZWFkY3J1bWJfcmNzOwpAQCAtNzAwLDcgKzcwMCw3IEBAIGludCBpbnRlbF9ndWNfc3VibWlzc2lv bl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJICogVGhlIHNldHVwIHJl bGllcyBvbiBzZXZlcmFsIGFzc3VtcHRpb25zIChlLmcuIGlycXMgYWx3YXlzIGVuYWJsZWQpCiAJ ICogdGhhdCBhcmUgb25seSB2YWxpZCBvbiBnZW4xMSsKIAkgKi8KLQlHRU1fQlVHX09OKElOVEVM X0dFTihpOTE1KSA8IDExKTsKKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZFUihpOTE1KSA8IDExKTsK IAogCXRhc2tsZXRfc2V0dXAoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQsIGd1Y19zdWJtaXNz aW9uX3Rhc2tsZXQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9odWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCmluZGV4 IDU2ZDIxNDRkYzZhMC4uZmM1Mzg3YjQxMGEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9odWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9odWMuYwpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIGludGVsX2h1Y19pbml0X2Vhcmx5KHN0 cnVjdCBpbnRlbF9odWMgKmh1YykKIAogCWludGVsX3VjX2Z3X2luaXRfZWFybHkoJmh1Yy0+Zncs IElOVEVMX1VDX0ZXX1RZUEVfSFVDKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7CiAJCWh1Yy0+c3RhdHVzLnJlZyA9IEdF TjExX0hVQ19LRVJORUxfTE9BRF9JTkZPOwogCQlodWMtPnN0YXR1cy5tYXNrID0gSFVDX0xPQURf U1VDQ0VTU0ZVTDsKIAkJaHVjLT5zdGF0dXMudmFsdWUgPSBIVUNfTE9BRF9TVUNDRVNTRlVMOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKaW5kZXggNmFiYjhmMmRjMzNkLi42YzJi ZjRiNmJjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3Vj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwpAQCAtMjMsNyAr MjMsNyBAQCBzdGF0aWMgdm9pZCB1Y19leHBhbmRfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBpbnRl bF91YyAqdWMpCiAJCXJldHVybjsKIAogCS8qIERvbid0IGVuYWJsZSBHdUMvSHVDIG9uIHByZS1H ZW4xMiAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCAxMikgeworCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPCAxMikgewogCQlpOTE1LT5wYXJhbXMuZW5hYmxlX2d1YyA9IDA7CiAJCXJldHVybjsK IAl9CkBAIC00NjcsNyArNDY3LDcgQEAgc3RhdGljIGludCBfX3VjX2luaXRfaHcoc3RydWN0IGlu dGVsX3VjICp1YykKIAogCS8qIFdhRW5hYmxldUtlcm5lbEhlYWRlclZhbGlkRml4OnNrbCAqLwog CS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0LGtibCAqLwotCWlmIChJ U19HRU4oaTkxNSwgOSkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA9PSA5KQogCQlhdHRlbXB0 cyA9IDM7CiAJZWxzZQogCQlhdHRlbXB0cyA9IDE7Ci0tIAoyLjMxLjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=