From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 873C2C43461 for ; Thu, 8 Apr 2021 04:52:53 +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 4BC446113E for ; Thu, 8 Apr 2021 04:52:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4BC446113E 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 D265B6E9FA; Thu, 8 Apr 2021 04:52:42 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 44F8E6E9F8 for ; Thu, 8 Apr 2021 04:52:40 +0000 (UTC) IronPort-SDR: Wzcy/VCiIvpr4y/+vKoa2bi6+qeYRUAfUvIlIj+42kFvEtokc4DsTuBiSv70XQX/CowmLGqqSw /Nh90fxwHSaQ== X-IronPort-AV: E=McAfee;i="6000,8403,9947"; a="193573105" X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="193573105" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 21:52:38 -0700 IronPort-SDR: d2orR3/y4rc4BaxuhWH8L6Do53v77Fy9QvDYQGH0i3mRhwaCrtN74vYUbfok/YTJMxfzH+9U6a XtZ9g6Ic2k2A== X-IronPort-AV: E=Sophos;i="5.82,205,1613462400"; d="scan'208";a="422064251" Received: from lucas-s2600cw.jf.intel.com ([10.165.21.202]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 21:52:37 -0700 From: Lucas De Marchi To: intel-gfx@lists.freedesktop.org Date: Wed, 7 Apr 2021 21:52:26 -0700 Message-Id: <20210408045227.985408-12-lucas.demarchi@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210408045227.985408-1-lucas.demarchi@intel.com> References: <20210408045227.985408-1-lucas.demarchi@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 11/12] drm/i915: 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 ZXIiIHJhdGhlciB0aGFuICJnZW4iLgoKQWx0aG91Z2ggbm93IHdlIGhhdmUgc29tZSBwbGFjZXMg dGhhdCBjb3VsZCBiZSBjaGVja2luZyBmb3IgTUVESUFfVkVSKCkKaW5zdGVhZCBvZiBHUkFQSElD U19WRVIoKSwgaXQncyBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGRvbmUgaW4gYW4KYXV0b21h dGVkIG1hbm5lcjogaXQgbmVlZHMgYSBkZWVwIGluc3BlY3Rpb24gb2Ygd2hhdCB0aGUgY29kZSBp cyBkb2luZwphbmQgcG9zc2libHkgc29tZSByZWZhY3RvciB0byBzZXBhcmF0ZSBNRURJQV9WRVIo KS4gRm9yIGFsbCB0aGUgY3VycmVudApwbGF0Zm9ybXMgR1JBUEhJQ1NfVkVSIGFuZCBNRURJQV9W RVIgYXJlIHRoZSBzYW1lLCBzbyBsZWF2ZSB0aGlzIGZvcgp3aGVuIGl0IG1ha2VzIHNlbnNlLgoK U2lnbmVkLW9mZi1ieTogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgIDYg Ky0KIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8IDExICst LQogLi4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5jICAgIHwgIDggKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYyAgICB8IDE2ICsrLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90aWxpbmcuYyAgICB8IDEyICstLQog Li4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMgIHwgMTAgKy0tCiAu Li4vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jICAgfCAgNCArLQogLi4u L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMTYgKystLQogLi4u L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jICAgIHwgMTQgKystLQogLi4u L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaWd0X2dlbV91dGlscy5jICAgIHwgMTAgKy0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0X3BtLmMgICAgICAgfCAzOCArKysrLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgICAgICB8ICAyICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jICAgICAgfCAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfc3NldS5jICB8ICAyICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCA1NCArKysrKystLS0tLS0t CiAuLi4vZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyAgfCAxOCArKy0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jICAgICAgICAgIHwgMTggKyst LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHRfZmVuY2luZy5jICB8IDM0ICsr KystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jICAgICAgICAgICAgfCAy NyArKysrLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMgICAg fCAxMiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2lycS5jICAgICAgICB8 ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbV9pcnEuYyAgICAgfCAx MCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jICAgICAgICAgICB8IDE0 ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jICAgICAgICAgICB8ICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCA0NiAr KysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5jICAgICAgICAg IHwgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMgICAgICAgICB8 ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYyAgICAgICAgICAgfCAx NiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jICAgfCAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAgICAgICAgIHwgMTIg Ky0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jICAgfCA2NCAr KysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jICAgICAg ICAgICB8IDYwICsrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9z c2V1LmMgICAgICAgICAgfCAxNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93 b3JrYXJvdW5kcy5jICAgfCA2NiArKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9lbmdpbmVfcG0uYyAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfZXhlY2xpc3RzLmMgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2d0X3BtLmMgICAgICB8ICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9oYW5nY2hlY2suYyAgfCAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfbGxjLmMgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2xyYy5jICAgICAgICB8ICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9t b2NzLmMgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcmM2 LmMgICAgICAgIHwgIDQgKy0KIC4uLi9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Np b24uYyAgICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ycHMuYyAg ICAgICAgfCAxNiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGlu ZS5jICAgfCAgNiArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5j ICAgIHwgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jICAgICAg ICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMgICAg fCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMgICAgIHwg IDIgKy0KIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8IDEw ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMgICAgICAgIHwgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMgICAgICAgICB8ICA0ICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jICAgICAgICAgfCAgOCArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jICAgICAgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMgICAgICAgICB8IDEwICstLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d0dC5jICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jICAgICAgICAgICB8ICA2ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvaW50ZXJydXB0LmMgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jICAgICAgIHwgMTAgKy0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgICAgICAgfCAgNCArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3ZncHUuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgICB8IDEwICstLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgMzIgKysrKy0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8IDIwICsrLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgNCArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgODAgKysrKysrKysrLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAgIHwgMzQgKysr Ky0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8IDQ0 ICsrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgICAgICAgICAgICAg ICB8ICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAg fCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgICAgICAgIHwg MTYgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgICAgICAgIHwg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jICAgICAgICAgICAgICB8ICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jICAgICAgfCAyMiAr Ky0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJhbS5jICAgICAgICAgICAgIHwgMTQg KystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmMgICAgICAgICAgICAgIHwgMTAg Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgICAgfCAxNCAr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jICAgICAgICAgfCAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgICAgIHwgMjYgKysr LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jICAgICAgICAgICAgfCAxMCAr LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8ICA0ICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMgICAgfCAgNiArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jIHwgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jICB8IDEyICstLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jIHwgIDIgKy0KIDg3IGZp bGVzIGNoYW5nZWQsIDU5NSBpbnNlcnRpb25zKCspLCA1OTMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZmQ4ZWU1MmUxN2E0 Li45Mzc3MDYyNGUxYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuYwpAQCAtMTE5MSw3ICsxMTkxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3BwZ3R0X2JhcnJp ZXIodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpvbGQgPSBkYXRh OwogCi0JaWYgKElOVEVMX0dFTihvbGQtPmk5MTUpIDwgOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKG9s ZC0+aTkxNSkgPCA4KQogCQlnZW42X3BwZ3R0X3VucGluX2FsbChpOTE1X3ZtX3RvX3BwZ3R0KG9s ZCkpOwogCiAJaTkxNV92bV9jbG9zZShvbGQpOwpAQCAtMTQzNyw3ICsxNDM3LDcgQEAgaTkxNV9n ZW1fdXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGludGVsX2d0ICpndCwKIAljb250ZXh0LT5t YXhfZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlOwogCiAJLyog UGFydCBzcGVjaWZpYyByZXN0cmljdGlvbnMuICovCi0JaWYgKElTX0dFTihpOTE1LCAxMSkpIHsK KwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDExKSkgewogCQl1bnNpZ25lZCBpbnQgaHdfcyA9 IGh3ZWlnaHQ4KGRldmljZS0+c2xpY2VfbWFzayk7CiAJCXVuc2lnbmVkIGludCBod19zc19wZXJf cyA9IGh3ZWlnaHQ4KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7CiAJCXVuc2lnbmVkIGludCBy ZXFfcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOwpAQCAtMTUwNCw3ICsxNTA0LDcg QEAgc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWlm IChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0J aWYgKCFJU19HRU4oaTkxNSwgMTEpKQorCWlmICghSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDExKSkK IAkJcmV0dXJuIC1FTk9ERVY7CiAKIAlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0 X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDI5NzE0MzUxMWY5OS4uYzA1NGQ3YTU3ZDBhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAg LTUwMCw3ICs1MDAsNyBAQCBlYl92YWxpZGF0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAq ZWIsCiAJICogYWxzbyBjb3ZlcnMgYWxsIHBsYXRmb3JtcyB3aXRoIGxvY2FsIG1lbW9yeS4KIAkg Ki8KIAlpZiAoZW50cnktPnJlbG9jYXRpb25fY291bnQgJiYKLQkgICAgSU5URUxfR0VOKGViLT5p OTE1KSA+PSAxMiAmJiAhSVNfVElHRVJMQUtFKGViLT5pOTE1KSkKKwkgICAgR1JBUEhJQ1NfVkVS KGViLT5pOTE1KSA+PSAxMiAmJiAhSVNfVElHRVJMQUtFKGViLT5pOTE1KSkKIAkJcmV0dXJuIC1F SU5WQUw7CiAKIAlpZiAodW5saWtlbHkoZW50cnktPmZsYWdzICYgZWItPmludmFsaWRfZmxhZ3Mp KQpAQCAtMTQzOSw3ICsxNDM5LDggQEAgc3RhdGljIGludCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAogc3RhdGljIGJvb2wgcmVsb2NfY2FuX3VzZV9lbmdp bmUoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXJldHVybiBlbmdp bmUtPmNsYXNzICE9IFZJREVPX0RFQ09ERV9DTEFTUyB8fCAhSVNfR0VOKGVuZ2luZS0+aTkxNSwg Nik7CisJcmV0dXJuIGVuZ2luZS0+Y2xhc3MgIT0gVklERU9fREVDT0RFX0NMQVNTIHx8ICFJU19H UkFQSElDU19WRVIoZW5naW5lLT5pOTE1LAorCQkJCQkJCQkgICAgICAgNik7CiB9CiAKIHN0YXRp YyB1MzIgKnJlbG9jX2dwdShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKQEAgLTE2NzEsNyAr MTY3Miw3IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAog CQkgKiBiYXRjaGJ1ZmZlcnMuCiAJCSAqLwogCQlpZiAocmVsb2MtPndyaXRlX2RvbWFpbiA9PSBJ OTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04gJiYKLQkJICAgIElTX0dFTihlYi0+aTkxNSwgNikp IHsKKwkJICAgIElTX0dSQVBISUNTX1ZFUihlYi0+aTkxNSwgNikpIHsKIAkJCWVyciA9IGk5MTVf dm1hX2JpbmQodGFyZ2V0LT52bWEsCiAJCQkJCSAgICB0YXJnZXQtPnZtYS0+b2JqLT5jYWNoZV9s ZXZlbCwKIAkJCQkJICAgIFBJTl9HTE9CQUwsIE5VTEwpOwpAQCAtMjMzMiw3ICsyMzMzLDcgQEAg c3RhdGljIGludCBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiAJdTMyICpjczsKIAlpbnQgaTsKIAotCWlmICghSVNfR0VOKHJxLT5lbmdpbmUtPmk5 MTUsIDcpIHx8IHJxLT5lbmdpbmUtPmlkICE9IFJDUzApIHsKKwlpZiAoIUlTX0dSQVBISUNTX1ZF UihycS0+ZW5naW5lLT5pOTE1LCA3KSB8fCBycS0+ZW5naW5lLT5pZCAhPSBSQ1MwKSB7CiAJCWRy bV9kYmcoJnJxLT5lbmdpbmUtPmk5MTUtPmRybSwgInNvbCByZXNldCBpcyBnZW43L3JjcyBvbmx5 XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzM3NSw3ICszMzc2LDcgQEAgaTkxNV9n ZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJZWIuYmF0Y2hfZmxh Z3MgPSAwOwogCWlmIChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19TRUNVUkUpIHsKLQkJaWYgKElO VEVMX0dFTihpOTE1KSA+PSAxMSkKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkKIAkJ CXJldHVybiAtRU5PREVWOwogCiAJCS8qIFJldHVybiAtRVBFUk0gdG8gdHJpZ2dlciBmYWxsYmFj ayBjb2RlIG9uIG9sZCBiaW5hcmllcy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfYmx0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0X2JsdC5jCmluZGV4IGRmOGU4YzE4YzZjOS4uNzEyY2M0NWIzMmJkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfYmx0LmMKQEAg LTcyLDcgKzcyLDcgQEAgc3RydWN0IGk5MTVfdm1hICppbnRlbF9lbWl0X3ZtYV9maWxsX2JsdChz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAKIAkJR0VNX0JVR19PTihzaXplID4+IFBBR0VfU0hJ RlQgPiBTMTZfTUFYKTsKIAotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpIHsKKwkJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7CiAJCQkqY21kKysgPSBYWV9DT0xPUl9CTFRfQ01EIHwg QkxUX1dSSVRFX1JHQkEgfCAoNyAtIDIpOwogCQkJKmNtZCsrID0gQkxUX0RFUFRIXzMyIHwgQkxU X1JPUF9DT0xPUl9DT1BZIHwgUEFHRV9TSVpFOwogCQkJKmNtZCsrID0gMDsKQEAgLTIzMiw3ICsy MzIsNyBAQCBzdGF0aWMgYm9vbCB3YV8xMjA5NjQ0NjExX2FwcGxpZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHUzMiBzaXplKQogewogCXUzMiBoZWlnaHQgPSBzaXplID4+IFBBR0Vf U0hJRlQ7CiAKLQlpZiAoIUlTX0dFTihpOTE1LCAxMSkpCisJaWYgKCFJU19HUkFQSElDU19WRVIo aTkxNSwgMTEpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlyZXR1cm4gaGVpZ2h0ICUgNCA9PSAzICYm IGhlaWdodCA8PSA4OwpAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0cnVjdCBpOTE1X3ZtYSAqaW50ZWxf ZW1pdF92bWFfY29weV9ibHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQlzaXplID0gbWlu X3QodTY0LCByZW0sIGJsb2NrX3NpemUpOwogCQlHRU1fQlVHX09OKHNpemUgPj4gUEFHRV9TSElG VCA+IFMxNl9NQVgpOwogCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSAmJgorCQlpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDkgJiYKIAkJICAgICF3YV8xMjA5NjQ0NjExX2FwcGxpZXMoaTkx NSwgc2l6ZSkpIHsKIAkJCSpjbWQrKyA9IEdFTjlfWFlfRkFTVF9DT1BZX0JMVF9DTUQgfCAoMTAg LSAyKTsKIAkJCSpjbWQrKyA9IEJMVF9ERVBUSF8zMiB8IFBBR0VfU0laRTsKQEAgLTMwOSw3ICsz MDksNyBAQCBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2VtaXRfdm1hX2NvcHlfYmx0KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwKIAkJCSpjbWQrKyA9IFBBR0VfU0laRTsKIAkJCSpjbWQrKyA9IGxv d2VyXzMyX2JpdHMoc3JjX29mZnNldCk7CiAJCQkqY21kKysgPSB1cHBlcl8zMl9iaXRzKHNyY19v ZmZzZXQpOwotCQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7CisJCX0gZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpIHsKIAkJCSpjbWQrKyA9IFhZX1NSQ19DT1BZX0JM VF9DTUQgfCBCTFRfV1JJVEVfUkdCQSB8ICgxMCAtIDIpOwogCQkJKmNtZCsrID0gQkxUX0RFUFRI XzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IFBBR0VfU0laRTsKIAkJCSpjbWQrKyA9IDA7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3RvbGVuLmMKaW5kZXggYjA1OTdkZTIwNmRl Li4zYTZiZWM4NTAwM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc3Rv bGVuLmMKQEAgLTM3LDcgKzM3LDcgQEAgaW50IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZV9p bl9yYW5nZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJcmV0dXJuIC1FTk9ERVY7 CiAKIAkvKiBXYVNraXBTdG9sZW5NZW1vcnlGaXJzdFBhZ2U6YmR3KyAqLwotCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gOCAmJiBzdGFydCA8IDQwOTYpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA4ICYmIHN0YXJ0IDwgNDA5NikKIAkJc3RhcnQgPSA0MDk2OwogCiAJbXV0ZXhfbG9jaygmaTkx NS0+bW0uc3RvbGVuX2xvY2spOwpAQCAtODMsMTQgKzgzLDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9h ZGp1c3Rfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCSAqLwogCiAJLyog TWFrZSBzdXJlIHdlIGRvbid0IGNsb2JiZXIgdGhlIEdUVCBpZiBpdCdzIHdpdGhpbiBzdG9sZW4g bWVtb3J5ICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8PSA0ICYmCisJaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA8PSA0ICYmCiAJICAgICFJU19HMzMoaTkxNSkgJiYgIUlTX1BJTkVWSUVXKGk5MTUp ICYmICFJU19HNFgoaTkxNSkpIHsKIAkJc3RydWN0IHJlc291cmNlIHN0b2xlblsyXSA9IHsqZHNt LCAqZHNtfTsKIAkJc3RydWN0IHJlc291cmNlIGdndHRfcmVzOwogCQlyZXNvdXJjZV9zaXplX3Qg Z2d0dF9zdGFydDsKIAogCQlnZ3R0X3N0YXJ0ID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBQ R1RCTF9DVEwpOwotCQlpZiAoSVNfR0VOKGk5MTUsIDQpKQorCQlpZiAoSVNfR1JBUEhJQ1NfVkVS KGk5MTUsIDQpKQogCQkJZ2d0dF9zdGFydCA9IChnZ3R0X3N0YXJ0ICYgUEdUQkxfQUREUkVTU19M T19NQVNLKSB8CiAJCQkJICAgICAoZ2d0dF9zdGFydCAmIFBHVEJMX0FERFJFU1NfSElfTUFTSykg PDwgMjg7CiAJCWVsc2UKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW50IGk5MTVfYWRqdXN0 X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICogR0VOMyBmaXJtd2Fy ZSBsaWtlcyB0byBzbWFzaCBwY2kgYnJpZGdlcyBpbnRvIHRoZSBzdG9sZW4KIAkJICogcmFuZ2Uu IEFwcGFyZW50bHkgdGhpcyB3b3Jrcy4KIAkJICovCi0JCWlmICghciAmJiAhSVNfR0VOKGk5MTUs IDMpKSB7CisJCWlmICghciAmJiAhSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDMpKSB7CiAJCQlkcm1f ZXJyKCZpOTE1LT5kcm0sCiAJCQkJImNvbmZsaWN0IGRldGVjdGVkIHdpdGggc3RvbGVuIHJlZ2lv bjogJXBSXG4iLAogCQkJCWRzbSk7CkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIHZvaWQgZzR4 X2dldF9zdG9sZW5fcmVzZXJ2ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJICog V2hldGhlciBJTEsgcmVhbGx5IHJldXNlcyB0aGUgRUxLIHJlZ2lzdGVyIGZvciB0aGlzIGlzIHVu Y2xlYXIuCiAJICogTGV0J3Mgc2VlIGlmIHdlIGNhdGNoIGFueW9uZSB3aXRoIHRoaXMgc3VwcG9z ZWRseSBlbmFibGVkIG9uIElMSy4KIAkgKi8KLQlkcm1fV0FSTigmaTkxNS0+ZHJtLCBJU19HRU4o aTkxNSwgNSksCisJZHJtX1dBUk4oJmk5MTUtPmRybSwgSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDUp LAogCQkgIklMSyBzdG9sZW4gcmVzZXJ2ZWQgZm91bmQ/IDB4JTA4eFxuIiwKIAkJIHJlZ192YWwp OwogCkBAIC0zODksNyArMzg5LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9pbml0X3N0b2xlbihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGlu dGVsX3Z0ZF9hY3RpdmUoKSAmJiBJTlRFTF9HRU4oaTkxNSkgPCA4KSB7CisJaWYgKGludGVsX3Z0 ZF9hY3RpdmUoKSAmJiBHUkFQSElDU19WRVIoaTkxNSkgPCA4KSB7CiAJCWRybV9ub3RpY2UoJmk5 MTUtPmRybSwKIAkJCSAgICIlcywgZGlzYWJsaW5nIHVzZSBvZiBzdG9sZW4gbWVtb3J5XG4iLAog CQkJICAgIkRNQVIgYWN0aXZlIik7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGljIGludCBpOTE1 X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlyZXNlcnZl ZF9iYXNlID0gc3RvbGVuX3RvcDsKIAlyZXNlcnZlZF9zaXplID0gMDsKIAotCXN3aXRjaCAoSU5U RUxfR0VOKGk5MTUpKSB7CisJc3dpdGNoIChHUkFQSElDU19WRVIoaTkxNSkpIHsKIAljYXNlIDI6 CiAJY2FzZSAzOgogCQlicmVhazsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX2luaXRfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQkJCQkJJnJl c2VydmVkX2Jhc2UsICZyZXNlcnZlZF9zaXplKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJTUlT U0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIo aTkxNSkpOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIDExOgogCWNhc2UgMTI6CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMKaW5kZXggOWU4OTQ1MDEzMDkwLi5mNjA3 MDY3NjVlYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90 aWxpbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5nLmMK QEAgLTYyLDE0ICs2MiwxNCBAQCB1MzIgaTkxNV9nZW1fZmVuY2Vfc2l6ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKIAogCUdFTV9CVUdfT04oIXN0cmlkZSk7CiAKLQlpZiAoSU5URUxf R0VOKGk5MTUpID49IDQpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpIHsKIAkJc3Ry aWRlICo9IGk5MTVfZ2VtX3RpbGVfaGVpZ2h0KHRpbGluZyk7CiAJCUdFTV9CVUdfT04oIUlTX0FM SUdORUQoc3RyaWRlLCBJOTY1X0ZFTkNFX1BBR0UpKTsKIAkJcmV0dXJuIHJvdW5kdXAoc2l6ZSwg c3RyaWRlKTsKIAl9CiAKIAkvKiBQcmV2aW91cyBjaGlwcyBuZWVkIGEgcG93ZXItb2YtdHdvIGZl bmNlIHJlZ2lvbiB3aGVuIHRpbGluZyAqLwotCWlmIChJU19HRU4oaTkxNSwgMykpCisJaWYgKElT X0dSQVBISUNTX1ZFUihpOTE1LCAzKSkKIAkJZ2d0dF9zaXplID0gMTAyNCoxMDI0OwogCWVsc2UK IAkJZ2d0dF9zaXplID0gNTEyKjEwMjQ7CkBAIC0xMDIsNyArMTAyLDcgQEAgdTMyIGk5MTVfZ2Vt X2ZlbmNlX2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHNpemUs CiAJaWYgKHRpbGluZyA9PSBJOTE1X1RJTElOR19OT05FKQogCQlyZXR1cm4gSTkxNV9HVFRfTUlO X0FMSUdOTUVOVDsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkKKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDQpCiAJCXJldHVybiBJOTY1X0ZFTkNFX1BBR0U7CiAKIAkvKgpAQCAtMTMw LDEwICsxMzAsMTAgQEAgaTkxNV90aWxpbmdfb2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkvKiBjaGVjayBtYXhpbXVtIHN0cmlkZSAmIG9iamVjdCBzaXplICovCiAJLyogaTk2 NSsgc3RvcmVzIHRoZSBlbmQgYWRkcmVzcyBvZiB0aGUgZ3R0IG1hcHBpbmcgaW4gdGhlIGZlbmNl CiAJICogcmVnLCBzbyBkb250IGJvdGhlciB0byBjaGVjayB0aGUgc2l6ZSAqLwotCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNykgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNykgewogCQlp ZiAoc3RyaWRlIC8gMTI4ID4gR0VON19GRU5DRV9NQVhfUElUQ0hfVkFMKQogCQkJcmV0dXJuIGZh bHNlOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKKwl9IGVsc2UgaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA0KSB7CiAJCWlmIChzdHJpZGUgLyAxMjggPiBJOTY1X0ZFTkNF X01BWF9QSVRDSF9WQUwpCiAJCQlyZXR1cm4gZmFsc2U7CiAJfSBlbHNlIHsKQEAgLTE0NCw3ICsx NDQsNyBAQCBpOTE1X3RpbGluZ19vayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CQkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWlmIChJU19HRU4oaTkxNSwgMikgfHwKKwlpZiAoSVNf R1JBUEhJQ1NfVkVSKGk5MTUsIDIpIHx8CiAJICAgICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSAm JiBIQVNfMTI4X0JZVEVfWV9USUxJTkcoaTkxNSkpKQogCQl0aWxlX3dpZHRoID0gMTI4OwogCWVs c2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY2xpZW50X2JsdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jbGllbnRfYmx0LmMKaW5kZXggZDM2ODczODg1Y2MxLi4xNzZlNmIyMmY4N2YgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50 X2JsdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1f Y2xpZW50X2JsdC5jCkBAIC0xNTIsOCArMTUyLDggQEAgc3RhdGljIGludCBwcmVwYXJlX2JsaXQo Y29uc3Qgc3RydWN0IHRpbGVkX2JsaXRzICp0LAogCQkJc3RydWN0IGJsaXRfYnVmZmVyICpzcmMs CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2gpCiB7Ci0JY29uc3QgaW50IGdl biA9IElOVEVMX0dFTih0b19pOTE1KGJhdGNoLT5iYXNlLmRldikpOwotCWJvb2wgdXNlXzY0Yl9y ZWxvYyA9IGdlbiA+PSA4OworCWNvbnN0IGludCB2ZXIgPSBHUkFQSElDU19WRVIodG9faTkxNShi YXRjaC0+YmFzZS5kZXYpKTsKKwlib29sIHVzZV82NGJfcmVsb2MgPSB2ZXIgPj0gODsKIAl1MzIg c3JjX3BpdGNoLCBkc3RfcGl0Y2g7CiAJdTMyIGNtZCwgKmNzOwogCkBAIC0xNzEsNyArMTcxLDcg QEAgc3RhdGljIGludCBwcmVwYXJlX2JsaXQoY29uc3Qgc3RydWN0IHRpbGVkX2JsaXRzICp0LAog CSpjcysrID0gY21kOwogCiAJY21kID0gTUlfRkxVU0hfRFc7Ci0JaWYgKGdlbiA+PSA4KQorCWlm ICh2ZXIgPj0gOCkKIAkJY21kKys7CiAJKmNzKysgPSBjbWQ7CiAJKmNzKysgPSAwOwpAQCAtMTc5 LDcgKzE3OSw3IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9ibGl0KGNvbnN0IHN0cnVjdCB0aWxlZF9i bGl0cyAqdCwKIAkqY3MrKyA9IDA7CiAKIAljbWQgPSBYWV9TUkNfQ09QWV9CTFRfQ01EIHwgQkxU X1dSSVRFX1JHQkEgfCAoOCAtIDIpOwotCWlmIChnZW4gPj0gOCkKKwlpZiAodmVyID49IDgpCiAJ CWNtZCArPSAyOwogCiAJc3JjX3BpdGNoID0gdC0+d2lkdGggKiA0OwpAQCAtNjY2LDcgKzY2Niw3 IEBAIHN0YXRpYyBpbnQgaWd0X2NsaWVudF90aWxlZF9ibGl0cyh2b2lkICphcmcpCiAJaW50IGlu c3QgPSAwOwogCiAJLyogVGVzdCByZXF1aXJlcyBleHBsaWNpdCBCTFQgdGlsaW5nIGNvbnRyb2xz ICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8 IDQpCiAJCXJldHVybiAwOwogCiAJaWYgKGJhZF9zd2l6emxpbmcoaTkxNSkpIC8qIFJlcXVpcmVz IHNhbmUgKHN1Yi1wYWdlKSBzd2l6emxpbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCmluZGV4IGU5MzdiNjYy OTAxOS4uMTNiMDg4Y2M3ODdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMKQEAgLTIyMSwxMiArMjIxLDEyIEBA IHN0YXRpYyBpbnQgZ3B1X3NldChzdHJ1Y3QgY29udGV4dCAqY3R4LCB1bnNpZ25lZCBsb25nIG9m ZnNldCwgdTMyIHYpCiAJCWdvdG8gb3V0X3JxOwogCX0KIAotCWlmIChJTlRFTF9HRU4oY3R4LT5l bmdpbmUtPmk5MTUpID49IDgpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGN0eC0+ZW5naW5lLT5pOTE1 KSA+PSA4KSB7CiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCAxIDw8IDIyOwog CQkqY3MrKyA9IGxvd2VyXzMyX2JpdHMoaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgb2Zmc2V0KTsK IAkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIG9mZnNldCk7 CiAJCSpjcysrID0gdjsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihjdHgtPmVuZ2luZS0+aTkxNSkg Pj0gNCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGN0eC0+ZW5naW5lLT5pOTE1KSA+PSA0 KSB7CiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkJ KmNzKysgPSAwOwogCQkqY3MrKyA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIG9mZnNldDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29u dGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250 ZXh0LmMKaW5kZXggNWZlZjU5MjM5MGNiLi4yMzg2MWRlZGY5ZTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCkBAIC04 OTcsNyArODk3LDcgQEAgc3RhdGljIGludCBycGNzX3F1ZXJ5X2JhdGNoKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpycGNzLCBzdHJ1Y3QgaTkxNV92bWEgKnYKIHsKIAl1MzIgKmNtZDsKIAot CUdFTV9CVUdfT04oSU5URUxfR0VOKHZtYS0+dm0tPmk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihH UkFQSElDU19WRVIodm1hLT52bS0+aTkxNSkgPCA4KTsKIAogCWNtZCA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKHJwY3MsIEk5MTVfTUFQX1dCKTsKIAlpZiAoSVNfRVJSKGNtZCkpCkBAIC05MzIs NyArOTMyLDcgQEAgZW1pdF9ycGNzX3F1ZXJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiAKIAlHRU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGNlLT5lbmdp bmUpKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA4KQorCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPCA4KQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9i aiwgY2UtPnZtLCBOVUxMKTsKQEAgLTExMDAsNyArMTEwMCw3IEBAIF9fcmVhZF9zbGljZV9jb3Vu dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWYgKElO VEVMX0dFTihjZS0+ZW5naW5lLT5pOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIoY2Ut PmVuZ2luZS0+aTkxNSkgPj0gMTEpIHsKIAkJc19tYXNrID0gR0VOMTFfUlBDU19TX0NOVF9NQVNL OwogCQlzX3NoaWZ0ID0gR0VOMTFfUlBDU19TX0NOVF9TSElGVDsKIAl9IGVsc2UgewpAQCAtMTIy OSw3ICsxMjI5LDcgQEAgX19pZ3RfY3R4X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAJaW50IGluc3QgPSAwOwogCWludCByZXQgPSAwOwogCi0JaWYgKElOVEVMX0dFTihpOTE1 KSA8IDkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDkpCiAJCXJldHVybiAwOwogCiAJaWYg KGZsYWdzICYgVEVTVF9SRVNFVCkKQEAgLTE1MTgsNyArMTUxOCw3IEBAIHN0YXRpYyBpbnQgd3Jp dGVfdG9fc2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCX0KIAogCSpjbWQr KyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40OwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkg eworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQkqY21kKysgPSBsb3dlcl8zMl9i aXRzKG9mZnNldCk7CiAJCSpjbWQrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKIAl9IGVsc2Ug ewpAQCAtMTYwOCw3ICsxNjA4LDcgQEAgc3RhdGljIGludCByZWFkX2Zyb21fc2NyYXRjaChzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWlmIChJU19FUlIob2JqKSkKIAkJcmV0dXJuIFBU Ul9FUlIob2JqKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCWlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gOCkgewogCQljb25zdCB1MzIgR1BSMCA9IGVuZ2luZS0+bW1pb19iYXNl ICsgMHg2MDA7CiAKIAkJdm0gPSBpOTE1X2dlbV9jb250ZXh0X2dldF92bV9yY3UoY3R4KTsKQEAg LTE3ODMsNyArMTc4Myw3IEBAIHN0YXRpYyBpbnQgaWd0X3ZtX2lzb2xhdGlvbih2b2lkICphcmcp CiAJdTMyIGV4cGVjdGVkOwogCWludCBlcnI7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNykK KwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgNykKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAtMTgz Nyw3ICsxODM3LDcgQEAgc3RhdGljIGludCBpZ3Rfdm1faXNvbGF0aW9uKHZvaWQgKmFyZykKIAkJ CWNvbnRpbnVlOwogCiAJCS8qIE5vdCBhbGwgZW5naW5lcyBoYXZlIHRoZWlyIG93biBHUFIhICov Ci0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA4ICYmIGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NM QVNTKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgOCAmJiBlbmdpbmUtPmNsYXNzICE9IFJF TkRFUl9DTEFTUykKIAkJCWNvbnRpbnVlOwogCiAJCXdoaWxlICghX19pZ3RfdGltZW91dChlbmRf dGltZSwgTlVMTCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxm dGVzdHMvaTkxNV9nZW1fbW1hbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9tbWFuLmMKaW5kZXggNWNmNmRmNDljMzMzLi45NTNjZmI1M2NiZGUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5j CkBAIC0yNzMsNyArMjczLDcgQEAgc3RhdGljIGludCBjaGVja19wYXJ0aWFsX21hcHBpbmdzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiBzdGF0aWMgdW5zaWduZWQgaW50CiBzZXR1 cF90aWxlX3NpemUoc3RydWN0IHRpbGUgKnRpbGUsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogewotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gMikgeworCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPD0gMikgewogCQl0aWxlLT5oZWlnaHQgPSAxNjsKIAkJdGlsZS0+d2lkdGggPSAxMjg7 CiAJCXRpbGUtPnNpemUgPSAxMTsKQEAgLTI4OCw5ICsyODgsOSBAQCBzZXR1cF90aWxlX3NpemUo c3RydWN0IHRpbGUgKnRpbGUsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQl0aWxl LT5zaXplID0gMTI7CiAJfQogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCisJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA8IDQpCiAJCXJldHVybiA4MTkyIC8gdGlsZS0+d2lkdGg7Ci0JZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpIDwgNykKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA3 KQogCQlyZXR1cm4gMTI4ICogSTk2NV9GRU5DRV9NQVhfUElUQ0hfVkFMIC8gdGlsZS0+d2lkdGg7 CiAJZWxzZQogCQlyZXR1cm4gMTI4ICogR0VON19GRU5DRV9NQVhfUElUQ0hfVkFMIC8gdGlsZS0+ d2lkdGg7CkBAIC0zODYsNyArMzg2LDcgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmco dm9pZCAqYXJnKQogCQkJaWYgKGVycikKIAkJCQlnb3RvIG91dF91bmxvY2s7CiAKLQkJCWlmIChw aXRjaCA+IDIgJiYgSU5URUxfR0VOKGk5MTUpID49IDQpIHsKKwkJCWlmIChwaXRjaCA+IDIgJiYg R1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpIHsKIAkJCQl0aWxlLnN0cmlkZSA9IHRpbGUud2lkdGgg KiAocGl0Y2ggLSAxKTsKIAkJCQllcnIgPSBjaGVja19wYXJ0aWFsX21hcHBpbmdzKG9iaiwgJnRp bGUsIGVuZCk7CiAJCQkJaWYgKGVyciA9PSAtRUlOVFIpCkBAIC0zOTUsNyArMzk1LDcgQEAgc3Rh dGljIGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJnKQogCQkJCQlnb3RvIG91dF91bmxv Y2s7CiAJCQl9CiAKLQkJCWlmIChwaXRjaCA8IG1heF9waXRjaCAmJiBJTlRFTF9HRU4oaTkxNSkg Pj0gNCkgeworCQkJaWYgKHBpdGNoIDwgbWF4X3BpdGNoICYmIEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA0KSB7CiAJCQkJdGlsZS5zdHJpZGUgPSB0aWxlLndpZHRoICogKHBpdGNoICsgMSk7CiAJCQkJ ZXJyID0gY2hlY2tfcGFydGlhbF9tYXBwaW5ncyhvYmosICZ0aWxlLCBlbmQpOwogCQkJCWlmIChl cnIgPT0gLUVJTlRSKQpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyBpbnQgaWd0X3BhcnRpYWxf dGlsaW5nKHZvaWQgKmFyZykKIAkJCX0KIAkJfQogCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0g NCkgeworCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpIHsKIAkJCWZvcl9lYWNoX3ByaW1l X251bWJlcihwaXRjaCwgbWF4X3BpdGNoKSB7CiAJCQkJdGlsZS5zdHJpZGUgPSB0aWxlLndpZHRo ICogcGl0Y2g7CiAJCQkJZXJyID0gY2hlY2tfcGFydGlhbF9tYXBwaW5ncyhvYmosICZ0aWxlLCBl bmQpOwpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBpbnQgaWd0X3Ntb2tlX3RpbGluZyh2b2lk ICphcmcpCiAJCQl0aWxlLnN0cmlkZSA9CiAJCQkJaTkxNV9wcmFuZG9tX3UzMl9tYXhfc3RhdGUo bWF4X3BpdGNoLCAmcHJuZyk7CiAJCQl0aWxlLnN0cmlkZSA9ICgxICsgdGlsZS5zdHJpZGUpICog dGlsZS53aWR0aDsKLQkJCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA0KQorCQkJaWYgKEdSQVBISUNT X1ZFUihpOTE1KSA8IDQpCiAJCQkJdGlsZS5zdHJpZGUgPSByb3VuZGRvd25fcG93X29mX3R3byh0 aWxlLnN0cmlkZSk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L3NlbGZ0ZXN0cy9pZ3RfZ2VtX3V0aWxzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2Vs ZnRlc3RzL2lndF9nZW1fdXRpbHMuYwppbmRleCAwYjA5MmM2MmJiMzQuLmIzNWMxMjE5Yzg1MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pZ3RfZ2VtX3V0 aWxzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pZ3RfZ2VtX3V0 aWxzLmMKQEAgLTQ0LDcgKzQ0LDcgQEAgaWd0X2VtaXRfc3RvcmVfZHcoc3RydWN0IGk5MTVfdm1h ICp2bWEsCiAJCSAgdTMyIHZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OwotCWNvbnN0IGludCBnZW4gPSBJTlRFTF9HRU4odm1hLT52bS0+aTkxNSk7CisJY29uc3QgaW50 IHZlciA9IEdSQVBISUNTX1ZFUih2bWEtPnZtLT5pOTE1KTsKIAl1bnNpZ25lZCBsb25nIG4sIHNp emU7CiAJdTMyICpjbWQ7CiAJaW50IGVycjsKQEAgLTY1LDE0ICs2NSwxNCBAQCBpZ3RfZW1pdF9z dG9yZV9kdyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAlvZmZzZXQgKz0gdm1hLT5ub2RlLnN0YXJ0 OwogCiAJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKLQkJaWYgKGdlbiA+PSA4KSB7CisJ CWlmICh2ZXIgPj0gOCkgewogCQkJKmNtZCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQ7CiAJ CQkqY21kKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CiAJCQkqY21kKysgPSB1cHBlcl8zMl9i aXRzKG9mZnNldCk7CiAJCQkqY21kKysgPSB2YWw7Ci0JCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsK KwkJfSBlbHNlIGlmICh2ZXIgPj0gNCkgewogCQkJKmNtZCsrID0gTUlfU1RPUkVfRFdPUkRfSU1N X0dFTjQgfAotCQkJCShnZW4gPCA2ID8gTUlfVVNFX0dHVFQgOiAwKTsKKwkJCQkodmVyIDwgNiA/ IE1JX1VTRV9HR1RUIDogMCk7CiAJCQkqY21kKysgPSAwOwogCQkJKmNtZCsrID0gb2Zmc2V0Owog CQkJKmNtZCsrID0gdmFsOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGludCBpZ3RfZ3B1X2ZpbGxfZHco c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQlnb3RvIHNraXBfcmVxdWVzdDsKIAogCWZsYWdz ID0gMDsKLQlpZiAoSU5URUxfR0VOKGNlLT52bS0+aTkxNSkgPD0gNSkKKwlpZiAoR1JBUEhJQ1Nf VkVSKGNlLT52bS0+aTkxNSkgPD0gNSkKIAkJZmxhZ3MgfD0gSTkxNV9ESVNQQVRDSF9TRUNVUkU7 CiAKIAllcnIgPSBycS0+ZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJxLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZGVidWdmc19ndF9wbS5jCmluZGV4IGQ0ZjQ0NTJjZTVlZC4uMGFhOTg5OTE3YmQzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0X3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5jCkBAIC04NSwxNCArODUsMTQg QEAgc3RhdGljIGludCBnZW42X2RycGMoc3RydWN0IHNlcV9maWxlICptKQogCWd0X2NvcmVfc3Rh dHVzID0gaW50ZWxfdW5jb3JlX3JlYWRfZncodW5jb3JlLCBHRU42X0dUX0NPUkVfU1RBVFVTKTsK IAogCXJjY3RsMSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9SQ19DT05UUk9MKTsK LQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDkpIHsKIAkJZ2VuOV9wb3dlcmdhdGVfZW5hYmxlID0KIAkJCWludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgR0VOOV9QR19FTkFCTEUpOwogCQlnZW45X3Bvd2VyZ2F0ZV9zdGF0dXMgPQogCQkJaW50 ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU45X1BXUkdUX0RPTUFJTl9TVEFUVVMpOwogCX0KIAot CWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDcp CiAJCXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwgR0VONl9QQ09ERV9SRUFEX1JDNlZJRFMs CiAJCQkJICAgICAgICZyYzZ2aWRzLCBOVUxMKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRp YyBpbnQgZ2VuNl9kcnBjKHN0cnVjdCBzZXFfZmlsZSAqbSkKIAkJICAgeWVzbm8ocmNjdGwxICYg R0VONl9SQ19DVExfUkMxZV9FTkFCTEUpKTsKIAlzZXFfcHJpbnRmKG0sICJSQzYgRW5hYmxlZDog JXNcbiIsCiAJCSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDNl9FTkFCTEUpKTsKLQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkp IHsKIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIFdlbGwgR2F0aW5nIEVuYWJsZWQ6ICVzXG4iLAog CQkJICAgeWVzbm8oZ2VuOV9wb3dlcmdhdGVfZW5hYmxlICYgR0VOOV9SRU5ERVJfUEdfRU5BQkxF KSk7CiAJCXNlcV9wcmludGYobSwgIk1lZGlhIFdlbGwgR2F0aW5nIEVuYWJsZWQ6ICVzXG4iLApA QCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjKHN0cnVjdCBzZXFfZmlsZSAq bSkKIAogCXNlcV9wcmludGYobSwgIkNvcmUgUG93ZXIgRG93bjogJXNcbiIsCiAJCSAgIHllc25v KGd0X2NvcmVfc3RhdHVzICYgR0VONl9DT1JFX0NQRF9TVEFURV9NQVNLKSk7Ci0JaWYgKElOVEVM X0dFTihpOTE1KSA+PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KSB7CiAJCXNl cV9wcmludGYobSwgIlJlbmRlciBQb3dlciBXZWxsOiAlc1xuIiwKIAkJCSAgIChnZW45X3Bvd2Vy Z2F0ZV9zdGF0dXMgJgogCQkJICAgIEdFTjlfUFdSR1RfUkVOREVSX1NUQVRVU19NQVNLKSA/ICJV cCIgOiAiRG93biIpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9kcnBjKHN0 cnVjdCBzZXFfZmlsZSAqbSkKIAlwcmludF9yYzZfcmVzKG0sICJSQzYrIHJlc2lkZW5jeSBzaW5j ZSBib290OiIsIEdFTjZfR1RfR0ZYX1JDNnApOwogCXByaW50X3JjNl9yZXMobSwgIlJDNisrIHJl c2lkZW5jeSBzaW5jZSBib290OiIsIEdFTjZfR1RfR0ZYX1JDNnBwKTsKIAotCWlmIChJTlRFTF9H RU4oaTkxNSkgPD0gNykgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPD0gNykgewogCQlzZXFf cHJpbnRmKG0sICJSQzYgICB2b2x0YWdlOiAlZG1WXG4iLAogCQkJICAgR0VONl9ERUNPREVfUkM2 X1ZJRCgoKHJjNnZpZHMgPj4gMCkgJiAweGZmKSkpOwogCQlzZXFfcHJpbnRmKG0sICJSQzYrICB2 b2x0YWdlOiAlZG1WXG4iLApAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBpbnQgZnJlcXVlbmN5 X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQodW5jb3JlLT5ycG0pOwogCi0JaWYgKElTX0dFTihpOTE1LCA1KSkg eworCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNSkpIHsKIAkJdTE2IHJndnN3Y3RsID0gaW50 ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIE1FTVNXQ1RMKTsKIAkJdTE2IHJndnN0YXQgPSBpbnRl bF91bmNvcmVfcmVhZDE2KHVuY29yZSwgTUVNU1RBVF9JTEspOwogCkBAIC0yOTYsNyArMjk2LDcg QEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKIAogCQlzZXFfcHJpbnRmKG0sICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBN SHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsK LQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJfSBlbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gNikgewogCQl1MzIgcnBfc3RhdGVfbGltaXRzOwogCQl1MzIgZ3RfcGVy Zl9zdGF0dXM7CiAJCXUzMiBycF9zdGF0ZV9jYXA7CkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGlj IGludCBmcmVxdWVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAogCQly ZXFmID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU42X1JQTlNXUkVRKTsKLQkJaWYgKElO VEVMX0dFTihpOTE1KSA+PSA5KSB7CisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkgewog CQkJcmVxZiA+Pj0gMjM7CiAJCX0gZWxzZSB7CiAJCQlyZXFmICY9IH5HRU42X1RVUkJPX0RJU0FC TEU7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGludCBmcmVxdWVuY3lfc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAogCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEp IHsKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewogCQkJcG1faWVyID0gaW50ZWxf dW5jb3JlX3JlYWQodW5jb3JlLCBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfRU5BQkxFKTsKIAkJ CXBtX2ltciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTFfR1BNX1dHQk9YUEVSRl9J TlRSX01BU0spOwogCQkJLyoKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgaW50IGZyZXF1ZW5j eV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQkJICovCiAJCQlwbV9p c3IgPSAwOwogCQkJcG1faWlyID0gMDsKLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0g OCkgeworCQl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7CiAJCQlwbV9pZXIg PSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjhfR1RfSUVSKDIpKTsKIAkJCXBtX2ltciA9 IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9HVF9JTVIoMikpOwogCQkJcG1faXNyID0g aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU44X0dUX0lTUigyKSk7CkBAIC0zODYsMTQgKzM4 NiwxNCBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQogCiAJCXNlcV9wcmludGYobSwgIlBNIElFUj0weCUwOHggSU1SPTB4JTA4eCwg TUFTSz0weCUwOHhcbiIsCiAJCQkgICBwbV9pZXIsIHBtX2ltciwgcG1fbWFzayk7Ci0JCWlmIChJ TlRFTF9HRU4oaTkxNSkgPD0gMTApCisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPD0gMTApCiAJ CQlzZXFfcHJpbnRmKG0sICJQTSBJU1I9MHglMDh4IElJUj0weCUwOHhcbiIsCiAJCQkJICAgcG1f aXNyLCBwbV9paXIpOwogCQlzZXFfcHJpbnRmKG0sICJwbV9pbnRybXNrX21iejogMHglMDh4XG4i LAogCQkJICAgcnBzLT5wbV9pbnRybXNrX21ieik7CiAJCXNlcV9wcmludGYobSwgIkdUX1BFUkZf U1RBVFVTOiAweCUwOHhcbiIsIGd0X3BlcmZfc3RhdHVzKTsKIAkJc2VxX3ByaW50ZihtLCAiUmVu ZGVyIHAtc3RhdGUgcmF0aW86ICVkXG4iLAotCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKElOVEVM X0dFTihpOTE1KSA+PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOworCQkJICAgKGd0X3Bl cmZfc3RhdHVzICYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkp ID4+IDgpOwogCQlzZXFfcHJpbnRmKG0sICJSZW5kZXIgcC1zdGF0ZSBWSUQ6ICVkXG4iLAogCQkJ ICAgZ3RfcGVyZl9zdGF0dXMgJiAweGZmKTsKIAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3Rh dGUgbGltaXQ6ICVkXG4iLApAQCAtNDM3LDIwICs0MzcsMjAgQEAgc3RhdGljIGludCBmcmVxdWVu Y3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJbWF4X2ZyZXEgPSAo SVNfR0VOOV9MUChpOTE1KSA/IHJwX3N0YXRlX2NhcCA+PiAwIDoKIAkJCSAgICBycF9zdGF0ZV9j YXAgPj4gMTYpICYgMHhmZjsKIAkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoaTkxNSkgfHwKLQkJ CSAgICAgSU5URUxfR0VOKGk5MTUpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOworCQkJ ICAgICBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7CiAJ CXNlcV9wcmludGYobSwgIkxvd2VzdCAoUlBOKSBmcmVxdWVuY3k6ICVkTUh6XG4iLAogCQkJICAg aW50ZWxfZ3B1X2ZyZXEocnBzLCBtYXhfZnJlcSkpOwogCiAJCW1heF9mcmVxID0gKHJwX3N0YXRl X2NhcCAmIDB4ZmYwMCkgPj4gODsKIAkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoaTkxNSkgfHwK LQkJCSAgICAgSU5URUxfR0VOKGk5MTUpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwor CQkJICAgICBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7 CiAJCXNlcV9wcmludGYobSwgIk5vbWluYWwgKFJQMSkgZnJlcXVlbmN5OiAlZE1IelxuIiwKIAkJ CSAgIGludGVsX2dwdV9mcmVxKHJwcywgbWF4X2ZyZXEpKTsKIAogCQltYXhfZnJlcSA9IChJU19H RU45X0xQKGk5MTUpID8gcnBfc3RhdGVfY2FwID4+IDE2IDoKIAkJCSAgICBycF9zdGF0ZV9jYXAg Pj4gMCkgJiAweGZmOwogCQltYXhfZnJlcSAqPSAoSVNfR0VOOV9CQyhpOTE1KSB8fAotCQkJICAg ICBJTlRFTF9HRU4oaTkxNSkgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7CisJCQkgICAg IEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKTsKIAkJc2Vx X3ByaW50ZihtLCAiTWF4IG5vbi1vdmVyY2xvY2tlZCAoUlAwKSBmcmVxdWVuY3k6ICVkTUh6XG4i LAogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBtYXhfZnJlcSkpOwogCQlzZXFfcHJpbnRmKG0s ICJNYXggb3ZlcmNsb2NrZWQgZnJlcXVlbmN5OiAlZE1IelxuIiwKQEAgLTQ4OCw3ICs0ODgsNyBA QCBzdGF0aWMgaW50IGxsY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsK IAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gbS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGd0LT5pOTE1OwotCWNvbnN0IGJvb2wgZWRyYW0gPSBJTlRFTF9HRU4oaTkx NSkgPiA4OworCWNvbnN0IGJvb2wgZWRyYW0gPSBHUkFQSElDU19WRVIoaTkxNSkgPiA4OwogCXN0 cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOwogCXVuc2lnbmVkIGludCBtYXhfZ3B1X2Zy ZXEsIG1pbl9ncHVfZnJlcTsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKQEAgLTUwMCw3ICs1 MDAsNyBAQCBzdGF0aWMgaW50IGxsY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKIAogCW1pbl9ncHVfZnJlcSA9IHJwcy0+bWluX2ZyZXE7CiAJbWF4X2dwdV9mcmVxID0gcnBz LT5tYXhfZnJlcTsKLQlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8fCBJTlRFTF9HRU4oaTkxNSkgPj0g MTApIHsKKwlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8fCBHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAp IHsKIAkJLyogQ29udmVydCBHVCBmcmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KIAkJbWluX2dw dV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7CiAJCW1heF9ncHVfZnJlcSAvPSBHRU45X0ZSRVFf U0NBTEVSOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHN0YXRpYyBpbnQgbGxjX3Nob3coc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLAogCQkJCQkg IChncHVfZnJlcSAqCiAJCQkJCSAgIChJU19HRU45X0JDKGk5MTUpIHx8Ci0JCQkJCSAgICBJTlRF TF9HRU4oaTkxNSkgPj0gMTAgPworCQkJCQkgICAgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwID8K IAkJCQkJICAgIEdFTjlfRlJFUV9TQ0FMRVIgOiAxKSkpLAogCQkJICAgKChpYV9mcmVxID4+IDAp ICYgMHhmZikgKiAxMDAsCiAJCQkgICAoKGlhX2ZyZXEgPj4gOCkgJiAweGZmKSAqIDEwMCk7CkBA IC01ODAsNyArNTgwLDcgQEAgc3RhdGljIGludCBycHNfYm9vc3Rfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCiAKIAlzZXFfcHJpbnRmKG0sICJXYWl0IGJvb3N0czogJWRcbiIs IFJFQURfT05DRShycHMtPmJvb3N0cykpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2ICYm IGludGVsX3Jwc19pc19hY3RpdmUocnBzKSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g NiAmJiBpbnRlbF9ycHNfaXNfYWN0aXZlKHJwcykpIHsKIAkJc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlID0gZ3QtPnVuY29yZTsKIAkJdTMyIHJwdXAsIHJwdXBlaTsKIAkJdTMyIHJwZG93biwg cnBkb3duZWk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2lu ZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYwppbmRleCA5 NjQ2MjAwZDI3OTIuLjQxODA2NTEzNzVkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4y X2VuZ2luZV9jcy5jCkBAIC03NCw3ICs3NCw3IEBAIGludCBnZW40X2VtaXRfZmx1c2hfcmNzKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9kZSkKIAljbWQgPSBNSV9GTFVTSDsKIAlpZiAo bW9kZSAmIEVNSVRfSU5WQUxJREFURSkgewogCQljbWQgfD0gTUlfRVhFX0ZMVVNIOwotCQlpZiAo SVNfRzRYKHJxLT5lbmdpbmUtPmk5MTUpIHx8IElTX0dFTihycS0+ZW5naW5lLT5pOTE1LCA1KSkK KwkJaWYgKElTX0c0WChycS0+ZW5naW5lLT5pOTE1KSB8fCBJU19HUkFQSElDU19WRVIocnEtPmVu Z2luZS0+aTkxNSwgNSkpCiAJCQljbWQgfD0gTUlfSU5WQUxJREFURV9JU1A7CiAJfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwppbmRleCA3MzJjMmVkMWQ5MzMuLmRi Mzk0Yjc1ZDRmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdp bmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCkBA IC0zOCw3ICszOCw3IEBAIGludCBnZW44X2VtaXRfZmx1c2hfcmNzKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCB1MzIgbW9kZSkKIAkJICogT24gR0VOOTogYmVmb3JlIFZGX0NBQ0hFX0lOVkFMSURB VEUgd2UgbmVlZCB0byBlbWl0IGEgTlVMTAogCQkgKiBwaXBlIGNvbnRyb2wuCiAJCSAqLwotCQlp ZiAoSVNfR0VOKHJxLT5lbmdpbmUtPmk5MTUsIDkpKQorCQlpZiAoSVNfR1JBUEhJQ1NfVkVSKHJx LT5lbmdpbmUtPmk5MTUsIDkpKQogCQkJdmZfZmx1c2hfd2EgPSB0cnVlOwogCiAJCS8qIFdhRm9y R0FNSGFuZzprYmwgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf cHBndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBndHQuYwppbmRleCAxNzZj MTk2MzM0MTIuLmNmMTA4Y2E3NmYwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvZ2VuOF9wcGd0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfcHBndHQu YwpAQCAtNzE2LDcgKzcxNiw3IEBAIHN0cnVjdCBpOTE1X3BwZ3R0ICpnZW44X3BwZ3R0X2NyZWF0 ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCSAqCiAJICogR2VuMTIgaGFzIGluaGVyaXRlZCB0aGUg c2FtZSByZWFkLW9ubHkgZmF1bHQgaXNzdWUgZnJvbSBnZW4xMS4KIAkgKi8KLQlwcGd0dC0+dm0u aGFzX3JlYWRfb25seSA9ICFJU19HRU5fUkFOR0UoZ3QtPmk5MTUsIDExLCAxMik7CisJcHBndHQt PnZtLmhhc19yZWFkX29ubHkgPSAhSVNfR1JBUEhJQ1NfUkFOR0UoZ3QtPmk5MTUsIDExLCAxMik7 CiAKIAlwcGd0dC0+dm0uYWxsb2NfcHRfZG1hID0gYWxsb2NfcHRfZG1hOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3NzZXUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfc3NldS5jCmluZGV4IDhkZmQ4ZjY1NmFhYS4u ZTg2ZDgyNTVmZWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9j b250ZXh0X3NzZXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 X3NzZXUuYwpAQCAtNzYsNyArNzYsNyBAQCBpbnRlbF9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogewogCWludCByZXQ7CiAKLQlHRU1fQlVHX09OKElO VEVMX0dFTihjZS0+ZW5naW5lLT5pOTE1KSA8IDgpOworCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVS KGNlLT5lbmdpbmUtPmk5MTUpIDwgOCk7CiAKIAlyZXQgPSBpbnRlbF9jb250ZXh0X2xvY2tfcGlu bmVkKGNlKTsKIAlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYwppbmRleCA2ZGJkYmRlMDBmMTQuLmEyOGYyY2VkMzQwZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTI0MCwxMCArMjQwLDEwIEBAIHZvaWQgaW50 ZWxfZW5naW5lX3NldF9od3NwX3dyaXRlbWFzayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIHUzMiBtYXNrKQogCSAqIFRob3VnaCB0aGV5IGFkZGVkIG1vcmUgcmluZ3Mgb24gZzR4L2ls aywgdGhleSBkaWQgbm90IGFkZAogCSAqIHBlci1lbmdpbmUgSFdTVEFNIHVudGlsIGdlbjYuCiAJ ICovCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNiAmJiBlbmdpbmUtPmNsYXNzICE9 IFJFTkRFUl9DTEFTUykKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCA2ICYmIGVu Z2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm47CiAKLQlpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gMykKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0g MykKIAkJRU5HSU5FX1dSSVRFKGVuZ2luZSwgUklOR19IV1NUQU0sIG1hc2spOwogCWVsc2UKIAkJ RU5HSU5FX1dSSVRFMTYoZW5naW5lLCBSSU5HX0hXU1RBTSwgbWFzayk7CkBAIC0zMDgsNyArMzA4 LDcgQEAgc3RhdGljIGludCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwg ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQpCiAJCUNPTkZJR19EUk1fSTkxNV9USU1FU0xJQ0VfRFVS QVRJT047CiAKIAkvKiBPdmVycmlkZSB0byB1bmludGVycnVwdGlibGUgZm9yIE9wZW5DTCB3b3Jr bG9hZHMuICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA9PSAxMiAmJiBlbmdpbmUtPmNsYXNzID09 IFJFTkRFUl9DTEFTUykKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDEyKSAmJiBlbmdpbmUt PmNsYXNzID09IFJFTkRFUl9DTEFTUykKIAkJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRf bXMgPSAwOwogCiAJZW5naW5lLT5kZWZhdWx0cyA9IGVuZ2luZS0+cHJvcHM7IC8qIG5ldmVyIHRv IGNoYW5nZSBhZ2FpbiAqLwpAQCAtMzQ1LDggKzM0NSw4IEBAIHN0YXRpYyB2b2lkIF9fc2V0dXBf ZW5naW5lX2NhcGFiaWxpdGllcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCSAq IEhFVkMgc3VwcG9ydCBpcyBwcmVzZW50IG9uIGZpcnN0IGVuZ2luZSBpbnN0YW5jZQogCQkgKiBi ZWZvcmUgR2VuMTEgYW5kIG9uIGFsbCBpbnN0YW5jZXMgYWZ0ZXJ3YXJkcy4KIAkJICovCi0JCWlm IChJTlRFTF9HRU4oaTkxNSkgPj0gMTEgfHwKLQkJICAgIChJTlRFTF9HRU4oaTkxNSkgPj0gOSAm JiBlbmdpbmUtPmluc3RhbmNlID09IDApKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEx IHx8CisJCSAgICAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0YW5jZSA9 PSAwKSkKIAkJCWVuZ2luZS0+dWFiaV9jYXBhYmlsaXRpZXMgfD0KIAkJCQlJOTE1X1ZJREVPX0NM QVNTX0NBUEFCSUxJVFlfSEVWQzsKIApAQCAtMzU0LDE0ICszNTQsMTQgQEAgc3RhdGljIHZvaWQg X19zZXR1cF9lbmdpbmVfY2FwYWJpbGl0aWVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkJICogU0ZDIGJsb2NrIGlzIHByZXNlbnQgb25seSBvbiBldmVuIGxvZ2ljYWwgZW5naW5l CiAJCSAqIGluc3RhbmNlcy4KIAkJICovCi0JCWlmICgoSU5URUxfR0VOKGk5MTUpID49IDExICYm CisJCWlmICgoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExICYmCiAJCSAgICAgKGVuZ2luZS0+Z3Qt PmluZm8udmRib3hfc2ZjX2FjY2VzcyAmCiAJCSAgICAgIEJJVChlbmdpbmUtPmluc3RhbmNlKSkp IHx8Ci0JCSAgICAoSU5URUxfR0VOKGk5MTUpID49IDkgJiYgZW5naW5lLT5pbnN0YW5jZSA9PSAw KSkKKwkJICAgIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSAmJiBlbmdpbmUtPmluc3RhbmNlID09 IDApKQogCQkJZW5naW5lLT51YWJpX2NhcGFiaWxpdGllcyB8PQogCQkJCUk5MTVfVklERU9fQU5E X0VOSEFOQ0VfQ0xBU1NfQ0FQQUJJTElUWV9TRkM7CiAJfSBlbHNlIGlmIChlbmdpbmUtPmNsYXNz ID09IFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTKSB7Ci0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0g OSkKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5KQogCQkJZW5naW5lLT51YWJpX2NhcGFi aWxpdGllcyB8PQogCQkJCUk5MTVfVklERU9fQU5EX0VOSEFOQ0VfQ0xBU1NfQ0FQQUJJTElUWV9T RkM7CiAJfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IGlu aXRfZW5naW5lX21hc2soc3RydWN0IGludGVsX2d0ICpndCkKIAogCWluZm8tPmVuZ2luZV9tYXNr ID0gSU5URUxfSU5GTyhpOTE1KS0+cGxhdGZvcm1fZW5naW5lX21hc2s7CiAKLQlpZiAoSU5URUxf R0VOKGk5MTUpIDwgMTEpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDExKQogCQlyZXR1cm4g aW5mby0+ZW5naW5lX21hc2s7CiAKIAltZWRpYV9mdXNlID0gfmludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgR0VOMTFfR1RfVkVCT1hfVkRCT1hfRElTQUJMRSk7CkBAIC00ODUsNyArNDg1LDcgQEAg c3RhdGljIGludGVsX2VuZ2luZV9tYXNrX3QgaW5pdF9lbmdpbmVfbWFzayhzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQogCQkgKiBob29rZWQgdXAgdG8gYW4gU0ZDIChTY2FsZXIgJiBGb3JtYXQgQ29udmVy dGVyKSB1bml0LgogCQkgKiBJbiBUR0wgZWFjaCBWREJPWCBoYXMgYWNjZXNzIHRvIGFuIFNGQy4K IAkJICovCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIgfHwgbG9naWNhbF92ZGJveCsrICUg MiA9PSAwKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyIHx8IGxvZ2ljYWxfdmRib3gr KyAlIDIgPT0gMCkKIAkJCWd0LT5pbmZvLnZkYm94X3NmY19hY2Nlc3MgfD0gQklUKGkpOwogCX0K IAlkcm1fZGJnKCZpOTE1LT5kcm0sICJ2ZGJveCBlbmFibGU6ICUwNHgsIGluc3RhbmNlczogJTA0 bHhcbiIsCkBAIC03MjIsNyArNzIyLDcgQEAgc3RhdGljIGludCBlbmdpbmVfc2V0dXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpbnRlbF9lbmdpbmVfaW5pdF93aGl0 ZWxpc3QoZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9jdHhfd2EoZW5naW5lKTsKIAotCWlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2lu ZS0+aTkxNSkgPj0gMTIpCiAJCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1JFTEFU SVZFX01NSU87CiAKIAlyZXR1cm4gMDsKQEAgLTk4Niw5ICs5ODYsOSBAQCB1NjQgaW50ZWxfZW5n aW5lX2dldF9hY3RpdmVfaGVhZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAKIAl1NjQgYWN0aGQ7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSA4KQogCQlhY3RoZCA9IEVOR0lORV9SRUFENjQoZW5naW5lLCBSSU5H X0FDVEhELCBSSU5HX0FDVEhEX1VEVyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQp CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpCiAJCWFjdGhkID0gRU5HSU5FX1JF QUQoZW5naW5lLCBSSU5HX0FDVEhEKTsKIAllbHNlCiAJCWFjdGhkID0gRU5HSU5FX1JFQUQoZW5n aW5lLCBBQ1RIRCk7CkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB1NjQgaW50ZWxfZW5naW5lX2dldF9s YXN0X2JhdGNoX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewog CXU2NCBiYmFkZHI7CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOCkKKwlpZiAo R1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOCkKIAkJYmJhZGRyID0gRU5HSU5FX1JFQUQ2 NChlbmdpbmUsIFJJTkdfQkJBRERSLCBSSU5HX0JCQUREUl9VRFcpOwogCWVsc2UKIAkJYmJhZGRy ID0gRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0JCQUREUik7CkBAIC0xMDQ3LDcgKzEwNDcsNyBA QCBpbnQgaW50ZWxfZW5naW5lX3N0b3BfY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewogCWludCBlcnIgPSAwOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgMykK KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPCAzKQogCQlyZXR1cm4gLUVOT0RFVjsK IAogCUVOR0lORV9UUkFDRShlbmdpbmUsICJcbiIpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgcmVh ZF9zdWJzbGljZV9yZWcoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXUz MiBtY3JfbWFzaywgbWNyX3NzLCBtY3IsIG9sZF9tY3IsIHZhbDsKIAllbnVtIGZvcmNld2FrZV9k b21haW5zIGZ3X2RvbWFpbnM7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMSkgewogCQltY3JfbWFzayA9IEdFTjExX01DUl9TTElD RV9NQVNLIHwgR0VOMTFfTUNSX1NVQlNMSUNFX01BU0s7CiAJCW1jcl9zcyA9IEdFTjExX01DUl9T TElDRShzbGljZSkgfCBHRU4xMV9NQ1JfU1VCU0xJQ0Uoc3Vic2xpY2UpOwogCX0gZWxzZSB7CkBA IC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJbWVtc2V0KGluc3Rkb25lLCAwLCBz aXplb2YoKmluc3Rkb25lKSk7CiAKLQlzd2l0Y2ggKElOVEVMX0dFTihpOTE1KSkgeworCXN3aXRj aCAoR1JBUEhJQ1NfVkVSKGk5MTUpKSB7CiAJZGVmYXVsdDoKIAkJaW5zdGRvbmUtPmluc3Rkb25l ID0KIAkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgUklOR19JTlNURE9ORShtbWlvX2Jhc2Up KTsKQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAkJaW5zdGRvbmUtPnNsaWNl X2NvbW1vbiA9CiAJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjdfU0NfSU5TVERPTkUp OwotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKSB7CisJCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gMTIpIHsKIAkJCWluc3Rkb25lLT5zbGljZV9jb21tb25fZXh0cmFbMF0gPQogCQkJCWlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTJfU0NfSU5TVERPTkVfRVhUUkEpOwogCQkJaW5z dGRvbmUtPnNsaWNlX2NvbW1vbl9leHRyYVsxXSA9CkBAIC0xMjE5LDcgKzEyMTksNyBAQCBzdGF0 aWMgYm9vbCByaW5nX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlp ZGxlID0gZmFsc2U7CiAKIAkvKiBObyBiaXQgZm9yIGdlbjIsIHNvIGFzc3VtZSB0aGUgQ1MgcGFy c2VyIGlzIGlkbGUgKi8KLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPiAyICYmCisJaWYg KEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID4gMiAmJgogCSAgICAhKEVOR0lORV9SRUFEKGVu Z2luZSwgUklOR19NSV9NT0RFKSAmIE1PREVfSURMRSkpCiAJCWlkbGUgPSBmYWxzZTsKIApAQCAt MTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVf ZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN3aXRjaCAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp KSB7CiAJY2FzZSAyOgogCQlyZXR1cm4gZmFsc2U7IC8qIHVzZXMgcGh5c2ljYWwgbm90IHZpcnR1 YWwgYWRkcmVzc2VzICovCiAJY2FzZSAzOgpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMg PSAmZW5naW5lLT5leGVjbGlzdHM7CiAJdTY0IGFkZHI7CiAKLQlpZiAoZW5naW5lLT5pZCA9PSBS RU5ERVJfQ0xBU1MgJiYgSVNfR0VOX1JBTkdFKGRldl9wcml2LCA0LCA3KSkKKwlpZiAoZW5naW5l LT5pZCA9PSBSRU5ERVJfQ0xBU1MgJiYgSVNfR1JBUEhJQ1NfUkFOR0UoZGV2X3ByaXYsIDQsIDcp KQogCQlkcm1fcHJpbnRmKG0sICJcdENDSUQ6IDB4JTA4eFxuIiwgRU5HSU5FX1JFQUQoZW5naW5l LCBDQ0lEKSk7CiAJaWYgKEhBU19FWEVDTElTVFMoZGV2X3ByaXYpKSB7CiAJCWRybV9wcmludGYo bSwgIlx0RUxfU1RBVF9ISTogMHglMDh4XG4iLApAQCAtMTQzOCwxMyArMTQzOCwxMyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9lbmdpbmVfcHJpbnRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKIAlkcm1fcHJpbnRmKG0sICJcdFJJTkdfQ1RMOiAgIDB4JTA4eCVzXG4iLAog CQkgICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfQ1RMKSwKIAkJICAgRU5HSU5FX1JFQUQoZW5n aW5lLCBSSU5HX0NUTCkgJiAoUklOR19XQUlUIHwgUklOR19XQUlUX1NFTUFQSE9SRSkgPyAiIFt3 YWl0aW5nXSIgOiAiIik7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gMikgeworCWlm IChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+IDIpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRS SU5HX01PREU6ICAweCUwOHglc1xuIiwKIAkJCSAgIEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19N SV9NT0RFKSwKIAkJCSAgIEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19NSV9NT0RFKSAmIChNT0RF X0lETEUpID8gIiBbaWRsZV0iIDogIiIpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSA2KSB7CiAJCWRybV9wcmlu dGYobSwgIlx0UklOR19JTVI6ICAgMHglMDh4XG4iLAogCQkJICAgRU5HSU5FX1JFQUQoZW5naW5l LCBSSU5HX0lNUikpOwogCQlkcm1fcHJpbnRmKG0sICJcdFJJTkdfRVNSOiAgIDB4JTA4eFxuIiwK QEAgLTE0NjEsMTUgKzE0NjEsMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3Jl Z2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJYWRkciA9IGludGVsX2Vu Z2luZV9nZXRfbGFzdF9iYXRjaF9oZWFkKGVuZ2luZSk7CiAJZHJtX3ByaW50ZihtLCAiXHRCQkFE RFI6IDB4JTA4eF8lMDh4XG4iLAogCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9i aXRzKGFkZHIpKTsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQorCWlmIChHUkFQSElD U19WRVIoZGV2X3ByaXYpID49IDgpCiAJCWFkZHIgPSBFTkdJTkVfUkVBRDY0KGVuZ2luZSwgUklO R19ETUFfRkFERCwgUklOR19ETUFfRkFERF9VRFcpOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDQpCiAJCWFk ZHIgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfRE1BX0ZBREQpOwogCWVsc2UKIAkJYWRkciA9 IEVOR0lORV9SRUFEKGVuZ2luZSwgRE1BX0ZBRERfSThYWCk7CiAJZHJtX3ByaW50ZihtLCAiXHRE TUFfRkFERFI6IDB4JTA4eF8lMDh4XG4iLAogCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dl cl8zMl9iaXRzKGFkZHIpKTsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJaWYg KEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNCkgewogCQlkcm1fcHJpbnRmKG0sICJcdElQRUlS OiAweCUwOHhcbiIsCiAJCQkgICBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfSVBFSVIpKTsKIAkJ ZHJtX3ByaW50ZihtLCAiXHRJUEVIUjogMHglMDh4XG4iLApAQCAtMTU0OCw3ICsxNTQ4LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAJCX0KIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJCWV4ZWNsaXN0c19h Y3RpdmVfdW5sb2NrX2JoKGV4ZWNsaXN0cyk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID4gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+IDYpIHsKIAkJ ZHJtX3ByaW50ZihtLCAiXHRQUF9ESVJfQkFTRTogMHglMDh4XG4iLAogCQkJICAgRU5HSU5FX1JF QUQoZW5naW5lLCBSSU5HX1BQX0RJUl9CQVNFKSk7CiAJCWRybV9wcmludGYobSwgIlx0UFBfRElS X0JBU0VfUkVBRDogMHglMDh4XG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKaW5kZXggZGUxMjQ4NzBhZjQ0Li4yMmFjMjhi NDI5Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0 c19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xp c3RzX3N1Ym1pc3Npb24uYwpAQCAtMTg0Nyw3ICsxODQ3LDcgQEAgcHJvY2Vzc19jc2Ioc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqaW5hY3RpdmUp CiAJCUVOR0lORV9UUkFDRShlbmdpbmUsICJjc2JbJWRdOiBzdGF0dXM9MHglMDh4OjB4JTA4eFxu IiwKIAkJCSAgICAgaGVhZCwgdXBwZXJfMzJfYml0cyhjc2IpLCBsb3dlcl8zMl9iaXRzKGNzYikp OwogCi0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwkJaWYgKEdSQVBISUNT X1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQogCQkJcHJvbW90ZSA9IGdlbjEyX2NzYl9wYXJzZShj c2IpOwogCQllbHNlCiAJCQlwcm9tb3RlID0gZ2VuOF9jc2JfcGFyc2UoY3NiKTsKQEAgLTI3MzMs NyArMjczMyw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9leGVjbGlzdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCiAJaW50ZWxfZW5naW5lX3NldF9od3NwX3dyaXRlbWFzayhlbmdp bmUsIH4wdSk7IC8qIEhXU1RBTSAqLwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49 IDExKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMSkKIAkJbW9kZSA9IF9N QVNLRURfQklUX0VOQUJMRShHRU4xMV9HRlhfRElTQUJMRV9MRUdBQ1lfTU9ERSk7CiAJZWxzZQog CQltb2RlID0gX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9SVU5fTElTVF9FTkFCTEUpOwpAQCAtMzA2 NCw3ICszMDY0LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Bhcmsoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgYm9vbCBjYW5fcHJlZW1wdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gOCkK KwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPiA4KQogCQlyZXR1cm4gdHJ1ZTsKIAog CS8qIEdQR1BVIG9uIGJkdyByZXF1aXJlcyBleHRyYSB3L2E7IG5vdCBpbXBsZW1lbnRlZCAqLwpA QCAtMzEzMiwxMyArMzEzMiwxMyBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjhfZW1p dF9mbHVzaF94Y3M7CiAJZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9p bml0X2JyZWFkY3J1bWI7CiAJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjhfZW1p dF9maW5pX2JyZWFkY3J1bWJfeGNzOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAx MikgeworCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikgewogCQllbmdpbmUt PmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2JyZWFkY3J1bWJfeGNzOwog CQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW4xMl9lbWl0X2ZsdXNoX3hjczsKIAl9CiAJZW5naW5l LT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Np b247CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkgeworCWlmIChHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSA8IDExKSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhf bG9naWNhbF9yaW5nX2VuYWJsZV9pcnE7CiAJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW44X2xv Z2ljYWxfcmluZ19kaXNhYmxlX2lycTsKIAl9IGVsc2UgewpAQCAtMzE1NSw3ICszMTU1LDcgQEAg c3RhdGljIHZvaWQgbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiB7CiAJdW5zaWduZWQgaW50IHNoaWZ0ID0gMDsKIAotCWlmIChJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSA8IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp IDwgMTEpIHsKIAkJY29uc3QgdTggaXJxX3NoaWZ0c1tdID0gewogCQkJW1JDUzBdICA9IEdFTjhf UkNTX0lSUV9TSElGVCwKIAkJCVtCQ1MwXSAgPSBHRU44X0JDU19JUlFfU0hJRlQsCkBAIC0zMTc1 LDcgKzMxNzUsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIHZvaWQgcmNzX3N1Ym1pc3Npb25f b3ZlcnJpZGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN3aXRjaCAoSU5U RUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5 MTUpKSB7CiAJY2FzZSAxMjoKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVz aF9yY3M7CiAJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2Zpbmlf YnJlYWRjcnVtYl9yY3M7CkBAIC0zMjI2LDEzICszMjI2LDEzIEBAIGludCBpbnRlbF9leGVjbGlz dHNfc3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZXhl Y2xpc3RzLT5jc2Jfd3JpdGUgPQogCQkmZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW2ludGVsX2h3 c19jc2Jfd3JpdGVfaW5kZXgoaTkxNSldOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDExKQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCAxMSkKIAkJZXhlY2xpc3RzLT5jc2Jfc2l6ZSA9IEdF TjhfQ1NCX0VOVFJJRVM7CiAJZWxzZQogCQlleGVjbGlzdHMtPmNzYl9zaXplID0gR0VOMTFfQ1NC X0VOVFJJRVM7CiAKIAllbmdpbmUtPmNvbnRleHRfdGFnID0gR0VOTUFTSyhCSVRTX1BFUl9MT05H IC0gMiwgMCk7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDExKSB7CisJaWYgKEdS QVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDExKSB7CiAJCWV4ZWNsaXN0cy0+Y2NpZCB8PSBl bmdpbmUtPmluc3RhbmNlIDw8IChHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfU0hJRlQgLSAzMik7CiAJ CWV4ZWNsaXN0cy0+Y2NpZCB8PSBlbmdpbmUtPmNsYXNzIDw8IChHRU4xMV9FTkdJTkVfQ0xBU1Nf U0hJRlQgLSAzMik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jCmluZGV4IDY3 MGMxMjcxZTdkNS4uZTUyOTQ4NDhlNzBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9nZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0 dC5jCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBzdGF0aWMgYm9vbCBuZWVkc19pZGxlX21hcHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaWYgKCFpbnRlbF92dGRfYWN0aXZlKCkpCiAJ CXJldHVybiBmYWxzZTsKIAotCWlmIChJU19HRU4oaTkxNSwgNSkgJiYgSVNfTU9CSUxFKGk5MTUp KQorCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNSkgJiYgSVNfTU9CSUxFKGk5MTUpKQogCQly ZXR1cm4gdHJ1ZTsKIAotCWlmIChJU19HRU4oaTkxNSwgMTIpKQorCWlmIChJU19HUkFQSElDU19W RVIoaTkxNSwgMTIpKQogCQlyZXR1cm4gdHJ1ZTsgLyogWFhYIERNQVIgZmF1bHQgcmVhc29uIDcg Ki8KIAogCXJldHVybiBmYWxzZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBndWNf Z2d0dF9pbnZhbGlkYXRlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCiAKIAlnZW44X2dndHRfaW52 YWxpZGF0ZShnZ3R0KTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpCisJaWYgKEdSQVBI SUNTX1ZFUihpOTE1KSA+PSAxMikKIAkJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwgR0VO MTJfR1VDX1RMQl9JTlZfQ1IsCiAJCQkJICAgICAgR0VOMTJfR1VDX1RMQl9JTlZfQ1JfSU5WQUxJ REFURSk7CiAJZWxzZQpAQCAtODE5LDcgKzgxOSw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9j b21tb24oc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgdTY0IHNpemUpCiAJICogcmVzb3J0IHRvIGFu IHVuY2FjaGVkIG1hcHBpbmcuIFRoZSBXQyBpc3N1ZSBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHRoZQog CSAqIHJlYWRiYWNrIGNoZWNrIHdoZW4gd3JpdGluZyBHVFQgUFRFIGVudHJpZXMuCiAJICovCi0J aWYgKElTX0dFTjlfTFAoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49IDEwKQorCWlmIChJU19H RU45X0xQKGk5MTUpIHx8IEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCkKIAkJZ2d0dC0+Z3NtID0g aW9yZW1hcChwaHlzX2FkZHIsIHNpemUpOwogCWVsc2UKIAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF93 YyhwaHlzX2FkZHIsIHNpemUpOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3RhdGljIGludCBnZW42 X2dtY2hfcHJvYmUoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKIAkJZ2d0dC0+dm0ucHRlX2VuY29k ZSA9IGhzd19wdGVfZW5jb2RlOwogCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkpCiAJCWdn dHQtPnZtLnB0ZV9lbmNvZGUgPSBieXRfcHRlX2VuY29kZTsKLQllbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNykKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNykKIAkJZ2d0dC0+ dm0ucHRlX2VuY29kZSA9IGl2Yl9wdGVfZW5jb2RlOwogCWVsc2UKIAkJZ2d0dC0+dm0ucHRlX2Vu Y29kZSA9IHNuYl9wdGVfZW5jb2RlOwpAQCAtMTEzNCw5ICsxMTM0LDkgQEAgc3RhdGljIGludCBn Z3R0X3Byb2JlX2h3KHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHN0cnVjdCBpbnRlbF9ndCAqZ3Qp CiAJZ2d0dC0+dm0uZG1hID0gaTkxNS0+ZHJtLmRldjsKIAlkbWFfcmVzdl9pbml0KCZnZ3R0LT52 bS5yZXN2KTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNSkKKwlpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpIDw9IDUpCiAJCXJldCA9IGk5MTVfZ21jaF9wcm9iZShnZ3R0KTsKLQllbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPCA4KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDgpCiAJ CXJldCA9IGdlbjZfZ21jaF9wcm9iZShnZ3R0KTsKIAllbHNlCiAJCXJldCA9IGdlbjhfZ21jaF9w cm9iZShnZ3R0KTsKQEAgLTExOTMsNyArMTE5Myw3IEBAIGludCBpOTE1X2dndHRfcHJvYmVfaHco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIGludCBpOTE1X2dndHRfZW5hYmxlX2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewotCWlmIChJTlRFTF9HRU4oaTkxNSkg PCA2ICYmICFpbnRlbF9lbmFibGVfZ3R0KCkpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDYg JiYgIWludGVsX2VuYWJsZV9ndHQoKSkKIAkJcmV0dXJuIC1FSU87CiAKIAlyZXR1cm4gMDsKQEAg LTEyNTgsNyArMTI1OCw3IEBAIHZvaWQgaTkxNV9nZ3R0X3Jlc3VtZShzdHJ1Y3QgaTkxNV9nZ3R0 ICpnZ3R0KQogCWlmIChmbHVzaCkKIAkJd2JpbnZkX29uX2FsbF9jcHVzKCk7CiAKLQlpZiAoSU5U RUxfR0VOKGdndHQtPnZtLmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihnZ3R0LT52bS5p OTE1KSA+PSA4KQogCQlzZXR1cF9wcml2YXRlX3BhdChnZ3R0LT52bS5ndC0+dW5jb3JlKTsKIAog CWludGVsX2dndHRfcmVzdG9yZV9mZW5jZXMoZ2d0dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2dndHRfZmVuY2luZy5jCmluZGV4IGU3MmI3YTBkYzMxNi4uMjMzMTU1YWU4YmE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0X2ZlbmNpbmcuYwpAQCAt NTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgaTkx NV9mZW5jZV9yZWcgKmZlbmNlKQogCWludCBmZW5jZV9waXRjaF9zaGlmdDsKIAl1NjQgdmFsOwog Ci0JaWYgKElOVEVMX0dFTihmZW5jZV90b19pOTE1KGZlbmNlKSkgPj0gNikgeworCWlmIChHUkFQ SElDU19WRVIoZmVuY2VfdG9faTkxNShmZW5jZSkpID49IDYpIHsKIAkJZmVuY2VfcmVnX2xvID0g RkVOQ0VfUkVHX0dFTjZfTE8oZmVuY2UtPmlkKTsKIAkJZmVuY2VfcmVnX2hpID0gRkVOQ0VfUkVH X0dFTjZfSEkoZmVuY2UtPmlkKTsKIAkJZmVuY2VfcGl0Y2hfc2hpZnQgPSBHRU42X0ZFTkNFX1BJ VENIX1NISUZUOwpAQCAtMTczLDkgKzE3Myw5IEBAIHN0YXRpYyB2b2lkIGZlbmNlX3dyaXRlKHN0 cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCiAJICogYW5kIGV4cGxpY2l0bHkgbWFuYWdlZCBm b3IgaW50ZXJuYWwgdXNlcnMuCiAJICovCiAKLQlpZiAoSVNfR0VOKGk5MTUsIDIpKQorCWlmIChJ U19HUkFQSElDU19WRVIoaTkxNSwgMikpCiAJCWk4MzBfd3JpdGVfZmVuY2VfcmVnKGZlbmNlKTsK LQllbHNlIGlmIChJU19HRU4oaTkxNSwgMykpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5 MTUsIDMpKQogCQlpOTE1X3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSk7CiAJZWxzZQogCQlpOTY1X3dy aXRlX2ZlbmNlX3JlZyhmZW5jZSk7CkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIHZvaWQgZmVu Y2Vfd3JpdGUoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSkKIAogc3RhdGljIGJvb2wgZ3B1 X3VzZXNfZmVuY2VfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2UpCiB7Ci0J cmV0dXJuIElOVEVMX0dFTihmZW5jZV90b19pOTE1KGZlbmNlKSkgPCA0OworCXJldHVybiBHUkFQ SElDU19WRVIoZmVuY2VfdG9faTkxNShmZW5jZSkpIDwgNDsKIH0KIAogc3RhdGljIGludCBmZW5j ZV91cGRhdGUoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSwKQEAgLTU2OSw3ICs1NjksNyBA QCBzdGF0aWMgdm9pZCBkZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 KQogCXUzMiBzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKIAl1MzIgc3dp enpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CiAKLQlpZiAoSU5URUxfR0VOKGk5 MTUpID49IDggfHwgSVNfVkFMTEVZVklFVyhpOTE1KSkgeworCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gOCB8fCBJU19WQUxMRVlWSUVXKGk5MTUpKSB7CiAJCS8qCiAJCSAqIE9uIEJEVyssIHN3 aXp6bGluZyBpcyBub3QgdXNlZC4gV2UgbGVhdmUgdGhlIENQVSBtZW1vcnkKIAkJICogY29udHJv bGxlciBpbiBjaGFyZ2Ugb2Ygb3B0aW1pemluZyBtZW1vcnkgYWNjZXNzZXMgd2l0aG91dApAQCAt NTc5LDcgKzU3OSw3IEBAIHN0YXRpYyB2b2lkIGRldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBp OTE1X2dndHQgKmdndHQpCiAJCSAqLwogCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVf Tk9ORTsKIAkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7Ci0JfSBlbHNlIGlm IChJTlRFTF9HRU4oaTkxNSkgPj0gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDYpIHsKIAkJaWYgKGk5MTUtPnByZXNlcnZlX2Jpb3Nfc3dpenpsZSkgewogCQkJaWYgKGlu dGVsX3VuY29yZV9yZWFkKHVuY29yZSwgRElTUF9BUkJfQ1RMKSAmCiAJCQkgICAgRElTUF9USUxF X1NVUkZBQ0VfU1dJWlpMSU5HKSB7CkBAIC02MTEsMTQgKzYxMSwxNCBAQCBzdGF0aWMgdm9pZCBk ZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCQkJCXN3aXp6bGVf eSA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOwogCQkJfQogCQl9Ci0JfSBlbHNlIGlmIChJU19H RU4oaTkxNSwgNSkpIHsKKwl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA1KSkgewog CQkvKgogCQkgKiBPbiBJcm9ubGFrZSB3aGF0ZXZlciBEUkFNIGNvbmZpZywgR1BVIGFsd2F5cyBk bwogCQkgKiBzYW1lIHN3aXp6bGluZyBzZXR1cC4KIAkJICovCiAJCXN3aXp6bGVfeCA9IEk5MTVf QklUXzZfU1dJWlpMRV85XzEwOwogCQlzd2l6emxlX3kgPSBJOTE1X0JJVF82X1NXSVpaTEVfOTsK LQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAyKSkgeworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1Nf VkVSKGk5MTUsIDIpKSB7CiAJCS8qCiAJCSAqIEFzIGZhciBhcyB3ZSBrbm93LCB0aGUgODY1IGRv ZXNuJ3QgaGF2ZSB0aGVzZSBiaXQgNgogCQkgKiBzd2l6emxpbmcgaXNzdWVzLgpAQCAtNjk3LDcg KzY5Nyw3IEBAIHN0YXRpYyB2b2lkIGRldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBpOTE1X2dn dHQgKmdndHQpCiAJCX0KIAogCQkvKiBjaGVjayBmb3IgTC1zaGFwZWQgbWVtb3J5IGFrYSBtb2Rp ZmllZCBlbmhhbmNlZCBhZGRyZXNzaW5nICovCi0JCWlmIChJU19HRU4oaTkxNSwgNCkgJiYKKwkJ aWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA0KSAmJgogCQkgICAgIShpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIERDQzIpICYgRENDMl9NT0RJRklFRF9FTkhBTkNFRF9ESVNBQkxFKSkgewogCQkJ c3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CiAJCQlzd2l6emxlX3kgPSBJ OTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsKQEAgLTg0NCwxMCArODQ0LDEwIEBAIHZvaWQgaW50 ZWxfZ2d0dF9pbml0X2ZlbmNlcyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCiAJaWYgKCFpOTE1 X2dndHRfaGFzX2FwZXJ0dXJlKGdndHQpKQogCQludW1fZmVuY2VzID0gMDsKLQllbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gNyAmJgorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA3 ICYmCiAJCSAhKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkpCiAJ CW51bV9mZW5jZXMgPSAzMjsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCB8fAorCWVs c2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA0IHx8CiAJCSBJU19JOTQ1RyhpOTE1KSB8fCBJ U19JOTQ1R00oaTkxNSkgfHwKIAkJIElTX0czMyhpOTE1KSB8fCBJU19QSU5FVklFVyhpOTE1KSkK IAkJbnVtX2ZlbmNlcyA9IDE2OwpAQCAtODk1LDI5ICs4OTUsMjkgQEAgdm9pZCBpbnRlbF9ndF9p bml0X3N3aXp6bGluZyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gZ3QtPmk5MTU7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3Qt PnVuY29yZTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA1IHx8CisJaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA8IDUgfHwKIAkgICAgaTkxNS0+Z2d0dC5iaXRfNl9zd2l6emxlX3ggPT0gSTkxNV9C SVRfNl9TV0laWkxFX05PTkUpCiAJCXJldHVybjsKIAogCWludGVsX3VuY29yZV9ybXcodW5jb3Jl LCBESVNQX0FSQl9DVEwsIDAsIERJU1BfVElMRV9TVVJGQUNFX1NXSVpaTElORyk7CiAKLQlpZiAo SVNfR0VOKGk5MTUsIDUpKQorCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNSkpCiAJCXJldHVy bjsKIAogCWludGVsX3VuY29yZV9ybXcodW5jb3JlLCBUSUxFQ1RMLCAwLCBUSUxFQ1RMX1NXWkNU TCk7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDYpKQorCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwg NikpCiAJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCiAJCQkJICAgQVJCX01PREUsCiAJCQkJ ICAgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfU05CKSk7Ci0JZWxzZSBpZiAo SVNfR0VOKGk5MTUsIDcpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA3KSkKIAkJ aW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKIAkJCQkgICBBUkJfTU9ERSwKIAkJCQkgICBfTUFT S0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9JVkIpKTsKLQllbHNlIGlmIChJU19HRU4o aTkxNSwgOCkpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDgpKQogCQlpbnRlbF91 bmNvcmVfd3JpdGUodW5jb3JlLAogCQkJCSAgIEdBTVRBUkJNT0RFLAogCQkJCSAgIF9NQVNLRURf QklUX0VOQUJMRShBUkJfTU9ERV9TV0laWkxFX0JEVykpOwogCWVsc2UKLQkJTUlTU0lOR19DQVNF KElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKaW5kZXggOGQ3N2RjYmFkMDU5Li40MWVkYWY5 OWFmZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwpAQCAtMTE1LDEwICsxMTUsMTAg QEAgc3RhdGljIHZvaWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGludGVsX2d0ICpndCkKIAkJ aW5pdF91bnVzZWRfcmluZyhndCwgU1JCMV9CQVNFKTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwg U1JCMl9CQVNFKTsKIAkJaW5pdF91bnVzZWRfcmluZyhndCwgU1JCM19CQVNFKTsKLQl9IGVsc2Ug aWYgKElTX0dFTihpOTE1LCAyKSkgeworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUs IDIpKSB7CiAJCWluaXRfdW51c2VkX3JpbmcoZ3QsIFNSQjBfQkFTRSk7CiAJCWluaXRfdW51c2Vk X3JpbmcoZ3QsIFNSQjFfQkFTRSk7Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgMykpIHsKKwl9 IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCAzKSkgewogCQlpbml0X3VudXNlZF9yaW5n KGd0LCBQUkIxX0JBU0UpOwogCQlpbml0X3VudXNlZF9yaW5nKGd0LCBQUkIyX0JBU0UpOwogCX0K QEAgLTEzNSw3ICsxMzUsNyBAQCBpbnQgaW50ZWxfZ3RfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQogCS8qIERvdWJsZSBsYXllciBzZWN1cml0eSBibGFua2V0LCBzZWUgaTkxNV9nZW1faW5p dCgpICovCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBGT1JDRVdBS0VfQUxM KTsKIAotCWlmIChIQVNfRURSQU0oaTkxNSkgJiYgSU5URUxfR0VOKGk5MTUpIDwgOSkKKwlpZiAo SEFTX0VEUkFNKGk5MTUpICYmIEdSQVBISUNTX1ZFUihpOTE1KSA8IDkpCiAJCWludGVsX3VuY29y ZV9ybXcodW5jb3JlLCBIU1dfSURJQ1IsIDAsIElESUhBU0hNU0soMHhmKSk7CiAKIAlpZiAoSVNf SEFTV0VMTChpOTE1KSkKQEAgLTIwOCwxMCArMjA4LDEwIEBAIGludGVsX2d0X2NsZWFyX2Vycm9y X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSA9IGd0LT51bmNvcmU7CiAJdTMyIGVpcjsKIAotCWlmICghSVNfR0VOKGk5MTUsIDIpKQor CWlmICghSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDIpKQogCQljbGVhcl9yZWdpc3Rlcih1bmNvcmUs IFBHVEJMX0VSKTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA0KQorCWlmIChHUkFQSElDU19W RVIoaTkxNSkgPCA0KQogCQljbGVhcl9yZWdpc3Rlcih1bmNvcmUsIElQRUlSKFJFTkRFUl9SSU5H X0JBU0UpKTsKIAllbHNlCiAJCWNsZWFyX3JlZ2lzdGVyKHVuY29yZSwgSVBFSVJfSTk2NSk7CkBA IC0yMjksMTMgKzIyOSwxMyBAQCBpbnRlbF9ndF9jbGVhcl9lcnJvcl9yZWdpc3RlcnMoc3RydWN0 IGludGVsX2d0ICpndCwKIAkJCQkgICBJOTE1X01BU1RFUl9FUlJPUl9JTlRFUlJVUFQpOwogCX0K IAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDEyKSB7CiAJCXJtd19jbGVhcih1bmNvcmUsIEdFTjEyX1JJTkdfRkFVTFRfUkVHLCBSSU5H X0ZBVUxUX1ZBTElEKTsKIAkJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIEdFTjEy X1JJTkdfRkFVTFRfUkVHKTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7CisJ fSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQlybXdfY2xlYXIodW5jb3Jl LCBHRU44X1JJTkdfRkFVTFRfUkVHLCBSSU5HX0ZBVUxUX1ZBTElEKTsKIAkJaW50ZWxfdW5jb3Jl X3Bvc3RpbmdfcmVhZCh1bmNvcmUsIEdFTjhfUklOR19GQVVMVF9SRUcpOwotCX0gZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA2KSB7CiAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAkJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7CiAKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2NoZWNr X2ZhdWx0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWk5MTVfcmVnX3QgZmF1bHRfcmVnLCBmYXVs dF9kYXRhMF9yZWcsIGZhdWx0X2RhdGExX3JlZzsKIAl1MzIgZmF1bHQ7CiAKLQlpZiAoSU5URUxf R0VOKGd0LT5pOTE1KSA+PSAxMikgeworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDEy KSB7CiAJCWZhdWx0X3JlZyA9IEdFTjEyX1JJTkdfRkFVTFRfUkVHOwogCQlmYXVsdF9kYXRhMF9y ZWcgPSBHRU4xMl9GQVVMVF9UTEJfREFUQTA7CiAJCWZhdWx0X2RhdGExX3JlZyA9IEdFTjEyX0ZB VUxUX1RMQl9EQVRBMTsKQEAgLTMxMyw5ICszMTMsOSBAQCB2b2lkIGludGVsX2d0X2NoZWNrX2Fu ZF9jbGVhcl9mYXVsdHMoc3RydWN0IGludGVsX2d0ICpndCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGd0LT5pOTE1OwogCiAJLyogRnJvbSBHRU44IG9ud2FyZHMgd2Ugb25seSBo YXZlIG9uZSAnQWxsIEVuZ2luZSBGYXVsdCBSZWdpc3RlcicgKi8KLQlpZiAoSU5URUxfR0VOKGk5 MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KQogCQlnZW44X2NoZWNrX2Zh dWx0cyhndCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfY2hlY2tfZmF1bHRzKGd0KTsKIAllbHNlCiAJ CXJldHVybjsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIGludGVsX2d0X2ZsdXNoX2dndHRfd3Jp dGVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB2b2lkIGludGVsX2d0X2NoaXBzZXRfZmx1c2goc3Ry dWN0IGludGVsX2d0ICpndCkKIHsKIAl3bWIoKTsKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8 IDYpCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQogCQlpbnRlbF9ndHRfY2hpcHNl dF9mbHVzaCgpOwogfQogCkBAIC01OTEsNyArNTkxLDggQEAgaW50IGludGVsX2d0X2luaXQoc3Ry dWN0IGludGVsX2d0ICpndCkKIAkgKi8KIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChndC0+ dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAotCWVyciA9IGludGVsX2d0X2luaXRfc2NyYXRjaChn dCwgSVNfR0VOKGd0LT5pOTE1LCAyKSA/IFNaXzI1NksgOiBTWl80Syk7CisJZXJyID0gaW50ZWxf Z3RfaW5pdF9zY3JhdGNoKGd0LAorCQkJCSAgICBJU19HUkFQSElDU19WRVIoZ3QtPmk5MTUsIDIp ID8gU1pfMjU2SyA6IFNaXzRLKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dF9mdzsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMKaW5kZXggNTgyZmNh ZWUxMWFhLi45YjZmMmU0OWEyYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfY2xvY2tfdXRpbHMuYwpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdTMyIHJlYWRfY2xv Y2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAl1MzIgZjE5XzJfbWh6 ID0gMTkyMDAwMDA7CiAJdTMyIGYyNF9taHogPSAyNDAwMDAwMDsKIAotCWlmIChJTlRFTF9HRU4o dW5jb3JlLT5pOTE1KSA8PSA0KSB7CisJaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUpIDw9 IDQpIHsKIAkJLyoKIAkJICogUFJNcyBzYXk6CiAJCSAqCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRp YyB1MzIgcmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQog CQkgKiAgICAgICjigJxDTEtDRkfigJ0pIE1DSEJBUiByZWdpc3RlcikKIAkJICovCiAJCXJldHVy biBSVU5USU1FX0lORk8odW5jb3JlLT5pOTE1KS0+cmF3Y2xrX2ZyZXEgKiAxMDAwIC8gMTY7Ci0J fSBlbHNlIGlmIChJTlRFTF9HRU4odW5jb3JlLT5pOTE1KSA8PSA4KSB7CisJfSBlbHNlIGlmIChH UkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA8PSA4KSB7CiAJCS8qCiAJCSAqIFBSTXMgc2F5Ogog CQkgKgpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdTMyIHJlYWRfY2xvY2tfZnJlcXVlbmN5KHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAkJICogICAgICByb2xsaW5nIG92ZXIgZXZlcnkg MS41IGhvdXJzKS4KIAkJICovCiAJCXJldHVybiBmMTJfNV9taHo7Ci0JfSBlbHNlIGlmIChJTlRF TF9HRU4odW5jb3JlLT5pOTE1KSA8PSA5KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIodW5j b3JlLT5pOTE1KSA8PSA5KSB7CiAJCXUzMiBjdGNfcmVnID0gaW50ZWxfdW5jb3JlX3JlYWQodW5j b3JlLCBDVENfTU9ERSk7CiAJCXUzMiBmcmVxID0gMDsKIApAQCAtMTEzLDcgKzExMyw3IEBAIHN0 YXRpYyB1MzIgcmVhZF9jbG9ja19mcmVxdWVuY3koc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl KQogCQl9CiAKIAkJcmV0dXJuIGZyZXE7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4odW5jb3JlLT5p OTE1KSA8PSAxMikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKHVuY29yZS0+aTkxNSkgPD0g MTIpIHsKIAkJdTMyIGN0Y19yZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENUQ19NT0RF KTsKIAkJdTMyIGZyZXEgPSAwOwogCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHUzMiByZWFk X2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJCX0gZWxzZSB7 CiAJCQl1MzIgYzAgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIFJQTV9DT05GSUcwKTsKIAot CQkJaWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUpIDw9IDEwKQorCQkJaWYgKEdSQVBISUNTX1ZF Uih1bmNvcmUtPmk5MTUpIDw9IDEwKQogCQkJCWZyZXEgPSBnZW4xMF9nZXRfY3J5c3RhbF9jbG9j a19mcmVxKHVuY29yZSwgYzApOwogCQkJZWxzZQogCQkJCWZyZXEgPSBnZW4xMV9nZXRfY3J5c3Rh bF9jbG9ja19mcmVxKHVuY29yZSwgYzApOwpAQCAtMjExLDcgKzIxMSw3IEBAIHU2NCBpbnRlbF9n dF9uc190b19wbV9pbnRlcnZhbChjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1NjQgbnMpCiAJ ICogZnJvemVuIG1hY2hpbmUuCiAJICovCiAJdmFsID0gZGl2X3U2NF9yb3VuZHVwKGludGVsX2d0 X25zX3RvX2Nsb2NrX2ludGVydmFsKGd0LCBucyksIDE2KTsKLQlpZiAoSVNfR0VOKGd0LT5pOTE1 LCA2KSkKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGd0LT5pOTE1LCA2KSkKIAkJdmFsID0gZGl2X3U2 NF9yb3VuZHVwKHZhbCwgMjUpICogMjU7CiAKIAlyZXR1cm4gdmFsOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndF9pcnEuYwppbmRleCA5ZmM2YzkxMmE0ZTUuLjIyZGEyOWI1YmJlYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfaXJxLmMKQEAgLTQyOSw3ICs0MjksNyBAQCB2 b2lkIGdlbjVfZ3RfaXJxX3Jlc2V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKIAogCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwg R1QpOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDYpCisJaWYgKEdSQVBISUNTX1ZFUihn dC0+aTkxNSkgPj0gNikKIAkJR0VOM19JUlFfUkVTRVQodW5jb3JlLCBHRU42X1BNKTsKIH0KIApA QCAtNDQ3LDE0ICs0NDcsMTQgQEAgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogCX0KIAogCWd0X2lycXMgfD0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBU OwotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDUpKQorCWlmIChJU19HUkFQSElDU19WRVIoZ3QtPmk5 MTUsIDUpKQogCQlndF9pcnFzIHw9IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7CiAJZWxzZQogCQln dF9pcnFzIHw9IEdUX0JMVF9VU0VSX0lOVEVSUlVQVCB8IEdUX0JTRF9VU0VSX0lOVEVSUlVQVDsK IAogCUdFTjNfSVJRX0lOSVQodW5jb3JlLCBHVCwgZ3QtPmd0X2ltciwgZ3RfaXJxcyk7CiAKLQlp ZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkx NSkgPj0gNikgewogCQkvKgogCQkgKiBSUFMgaW50ZXJydXB0cyB3aWxsIGdldCBlbmFibGVkL2Rp c2FibGVkIG9uIGRlbWFuZCB3aGVuIFJQUwogCQkgKiBpdHNlbGYgaXMgZW5hYmxlZC9kaXNhYmxl ZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX2lycS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG1faXJxLmMKaW5kZXggODExYTEx ZWQxODFjLi5mZTUxZjg5NGIwNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3BtX2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X3BtX2lycS5jCkBAIC0xNiwxMCArMTYsMTAgQEAgc3RhdGljIHZvaWQgd3JpdGVfcG1faW1yKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpCiAJdTMyIG1hc2sgPSBndC0+cG1faW1yOwogCWk5MTVfcmVnX3Qg cmVnOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gMTEpIHsKIAkJcmVnID0gR0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRSX01BU0s7CiAJ CW1hc2sgPDw9IDE2OyAvKiBwbSBpcyBpbiB1cHBlciBoYWxmICovCi0JfSBlbHNlIGlmIChJTlRF TF9HRU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgp IHsKIAkJcmVnID0gR0VOOF9HVF9JTVIoMik7CiAJfSBlbHNlIHsKIAkJcmVnID0gR0VONl9QTUlN UjsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBnZW42X2d0X3BtX21hc2tfaXJxKHN0cnVjdCBpbnRl bF9ndCAqZ3QsIHUzMiBtYXNrKQogdm9pZCBnZW42X2d0X3BtX3Jlc2V0X2lpcihzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LCB1MzIgcmVzZXRfbWFzaykKIHsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSBndC0+dW5jb3JlOwotCWk5MTVfcmVnX3QgcmVnID0gSU5URUxfR0VOKGd0LT5pOTE1KSA+ PSA4ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlSOworCWk5MTVfcmVnX3QgcmVnID0gR1JB UEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlSOwog CiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZ3QtPmlycV9sb2NrKTsKIApAQCAtNzcsMTAgKzc3LDEw IEBAIHN0YXRpYyB2b2lkIHdyaXRlX3BtX2llcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXUzMiBt YXNrID0gZ3QtPnBtX2llcjsKIAlpOTE1X3JlZ190IHJlZzsKIAotCWlmIChJTlRFTF9HRU4oaTkx NSkgPj0gMTEpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7CiAJCXJlZyA9IEdF TjExX0dQTV9XR0JPWFBFUkZfSU5UUl9FTkFCTEU7CiAJCW1hc2sgPDw9IDE2OyAvKiBwbSBpcyBp biB1cHBlciBoYWxmICovCi0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCX0g ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpIHsKIAkJcmVnID0gR0VOOF9HVF9JRVIo Mik7CiAJfSBlbHNlIHsKIAkJcmVnID0gR0VONl9QTUlFUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3R0LmMKaW5kZXggOTQxZjhhZjAxNmQ2Li5kY2JkY2ZkZGNmN2UgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0dC5jCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBndHRfd3JpdGVfd29y a2Fyb3VuZHMoc3RydWN0IGludGVsX2d0ICpndCkKIAkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29y ZSwKIAkJCQkgICBHRU44X0wzX0xSQV8xX0dQR1BVLAogCQkJCSAgIEdFTjlfTDNfTFJBXzFfR1BH UFVfREVGQVVMVF9WQUxVRV9CWFQpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5ICYm IElOVEVMX0dFTihpOTE1KSA8PSAxMSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g OSAmJiBHUkFQSElDU19WRVIoaTkxNSkgPD0gMTEpCiAJCWludGVsX3VuY29yZV93cml0ZSh1bmNv cmUsCiAJCQkJICAgR0VOOF9MM19MUkFfMV9HUEdQVSwKIAkJCQkgICBHRU45X0wzX0xSQV8xX0dQ R1BVX0RFRkFVTFRfVkFMVUVfU0tMKTsKQEAgLTMwOSwxMyArMzA5LDEzIEBAIHZvaWQgZ3R0X3dy aXRlX3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJICogZHJpdmVyLgogCSAqLwog CWlmIChIQVNfUEFHRV9TSVpFUyhpOTE1LCBJOTE1X0dUVF9QQUdFX1NJWkVfNjRLKSAmJgotCSAg ICBJTlRFTF9HRU4oaTkxNSkgPD0gMTApCisJICAgIEdSQVBISUNTX1ZFUihpOTE1KSA8PSAxMCkK IAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsCiAJCQkJIEdFTjhfR0FNV19FQ09fREVWX1JXX0lB LAogCQkJCSAwLAogCQkJCSBHQU1XX0VDT19FTkFCTEVfNjRLX0lQU19GSUVMRCk7CiAKLQlpZiAo SVNfR0VOX1JBTkdFKGk5MTUsIDgsIDExKSkgeworCWlmIChJU19HUkFQSElDU19SQU5HRShpOTE1 LCA4LCAxMSkpIHsKIAkJYm9vbCBjYW5fdXNlX2d0dF9jYWNoZSA9IHRydWU7CiAKIAkJLyoKQEAg LTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBiZHdfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIAkgICAgICBHRU44X1BQQVQoNywgR0VOOF9QUEFUX1dC IHwgR0VOOF9QUEFUX0xMQ0VMTEMgfCBHRU44X1BQQVRfQUdFKDMpKTsKIAogCS8qIGZvciBzY2Fu b3V0IHdpdGggZUxMQyAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDkpCiAJCXBhdCB8PSBHRU44X1BQQVQoMiwgR0VOOF9QUEFUX1dCIHwg R0VOOF9QUEFUX0VMTENfT1ZFUlJJREUpOwogCWVsc2UKIAkJcGF0IHw9IEdFTjhfUFBBVCgyLCBH RU44X1BQQVRfV1QgfCBHRU44X1BQQVRfTExDRUxMQyk7CkBAIC00NDYsMTEgKzQ0NiwxMSBAQCB2 b2lkIHNldHVwX3ByaXZhdGVfcGF0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHVuY29yZS0+aTkxNTsKIAotCUdFTV9CVUdf T04oSU5URUxfR0VOKGk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkg PCA4KTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpCisJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSAxMikKIAkJdGdsX3NldHVwX3ByaXZhdGVfcHBhdCh1bmNvcmUpOwotCWVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA+PSAxMCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g MTApCiAJCWNubF9zZXR1cF9wcml2YXRlX3BwYXQodW5jb3JlKTsKIAllbHNlIGlmIChJU19DSEVS UllWSUVXKGk5MTUpIHx8IElTX0dFTjlfTFAoaTkxNSkpCiAJCWNodl9zZXR1cF9wcml2YXRlX3Bw YXQodW5jb3JlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xs Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbGxjLmMKaW5kZXggMDc1ZDc0MTY0 NGFlLi5lYjFhMTVkZWVkMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2xsYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xsYy5jCkBAIC02 NCw3ICs2NCw3IEBAIHN0YXRpYyBib29sIGdldF9pYV9jb25zdGFudHMoc3RydWN0IGludGVsX2xs YyAqbGxjLAogCiAJY29uc3RzLT5taW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxOwogCWNvbnN0 cy0+bWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJLyogQ29udmVydCBHVCBm cmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KIAkJY29uc3RzLT5taW5fZ3B1X2ZyZXEgLz0gR0VO OV9GUkVRX1NDQUxFUjsKIAkJY29uc3RzLT5tYXhfZ3B1X2ZyZXEgLz0gR0VOOV9GUkVRX1NDQUxF UjsKQEAgLTgzLDEzICs4MywxMyBAQCBzdGF0aWMgdm9pZCBjYWxjX2lhX2ZyZXEoc3RydWN0IGlu dGVsX2xsYyAqbGxjLAogCWNvbnN0IGludCBkaWZmID0gY29uc3RzLT5tYXhfZ3B1X2ZyZXEgLSBn cHVfZnJlcTsKIAl1bnNpZ25lZCBpbnQgaWFfZnJlcSA9IDAsIHJpbmdfZnJlcSA9IDA7CiAKLQlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDkp IHsKIAkJLyoKIAkJICogcmluZ19mcmVxID0gMiAqIEdULiByaW5nX2ZyZXEgaXMgaW4gMTAwTUh6 IHVuaXRzCiAJCSAqIE5vIGZsb29yIHJlcXVpcmVkIGZvciByaW5nIGZyZXF1ZW5jeSBvbiBTS0wu CiAJCSAqLwogCQlyaW5nX2ZyZXEgPSBncHVfZnJlcTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihp OTE1KSA+PSA4KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQkv KiBtYXgoMiAqIEdULCBERFIpLiBOQjogR1QgaXMgNTBNSHogdW5pdHMgKi8KIAkJcmluZ19mcmVx ID0gbWF4KGNvbnN0cy0+bWluX3JpbmdfZnJlcSwgZ3B1X2ZyZXEpOwogCX0gZWxzZSBpZiAoSVNf SEFTV0VMTChpOTE1KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwppbmRleCBlODY4 OTdjZGU5ODQuLjExOWE1NTIwZDUzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMK QEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHZvaWQgc2V0X29mZnNldHModTMyICpyZWdzLAogCQkq cmVncyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKGNvdW50KTsKIAkJaWYgKGZsYWdzICYgUE9TVEVE KQogCQkJKnJlZ3MgfD0gTUlfTFJJX0ZPUkNFX1BPU1RFRDsKLQkJaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDExKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEp CiAJCQkqcmVncyB8PSBNSV9MUklfTFJNX0NTX01NSU87CiAJCXJlZ3MrKzsKIApAQCAtNzAsNyAr NzAsNyBAQCBzdGF0aWMgdm9pZCBzZXRfb2Zmc2V0cyh1MzIgKnJlZ3MsCiAJaWYgKGNsb3NlKSB7 CiAJCS8qIENsb3NlIHRoZSBiYXRjaDsgdXNlZCBtYWlubHkgYnkgbGl2ZV9scmNfbGF5b3V0KCkg Ki8KIAkJKnJlZ3MgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwotCQlpZiAoSU5URUxfR0VOKGVuZ2lu ZS0+aTkxNSkgPj0gMTApCisJCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMCkK IAkJCSpyZWdzIHw9IEJJVCgwKTsKIAl9CiB9CkBAIC00OTgsMjIgKzQ5OCwyMiBAQCBzdGF0aWMg Y29uc3QgdTggKnJlZ19vZmZzZXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAkgKiBhZGRyZXNzaW5nIHRvIGF1dG9tYXRpYyBmaXh1cCB0aGUgcmVnaXN0ZXIgc3RhdGUg YmV0d2VlbiB0aGUKIAkgKiBwaHlzaWNhbCBlbmdpbmVzIGZvciB2aXJ0dWFsIGVuZ2luZS4KIAkg Ki8KLQlHRU1fQlVHX09OKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyICYmCisJR0VNX0JV R19PTihHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMiAmJgogCQkgICAhaW50ZWxfZW5n aW5lX2hhc19yZWxhdGl2ZV9tbWlvKGVuZ2luZSkpOwogCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0g UkVOREVSX0NMQVNTKSB7Ci0JCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwkJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEyKQogCQkJcmV0dXJuIGdlbjEyX3Jj c19vZmZzZXRzOwotCQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkKKwkJ ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCQlyZXR1cm4gZ2Vu MTFfcmNzX29mZnNldHM7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDkp CisJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJCQlyZXR1cm4g Z2VuOV9yY3Nfb2Zmc2V0czsKIAkJZWxzZQogCQkJcmV0dXJuIGdlbjhfcmNzX29mZnNldHM7CiAJ fSBlbHNlIHsKLQkJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQorCQlpZiAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTIpCiAJCQlyZXR1cm4gZ2VuMTJfeGNzX29mZnNl dHM7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDkpCisJCWVsc2UgaWYg KEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJCQlyZXR1cm4gZ2VuOV94Y3Nfb2Zm c2V0czsKIAkJZWxzZQogCQkJcmV0dXJuIGdlbjhfeGNzX29mZnNldHM7CkBAIC01MjIsOSArNTIy LDkgQEAgc3RhdGljIGNvbnN0IHU4ICpyZWdfb2Zmc2V0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBpbnQgbHJjX3JpbmdfbWlfbW9kZShjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5 MTUpID49IDEyKQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJcmV0 dXJuIDB4NjA7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOSkKKwllbHNl IGlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA5KQogCQlyZXR1cm4gMHg1NDsKIAll bHNlIGlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuIDB4NTg7CkBA IC01MzQsOSArNTM0LDkgQEAgc3RhdGljIGludCBscmNfcmluZ19taV9tb2RlKGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIGludCBscmNfcmluZ19ncHIwKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlpZiAoSU5URUxfR0VOKGVu Z2luZS0+aTkxNSkgPj0gMTIpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDEy KQogCQlyZXR1cm4gMHg3NDsKLQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA5 KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJCXJldHVybiAw eDY4OwogCWVsc2UgaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm4g MHhkODsKQEAgLTU0Niw5ICs1NDYsOSBAQCBzdGF0aWMgaW50IGxyY19yaW5nX2dwcjAoY29uc3Qg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0aWMgaW50IGxyY19yaW5nX3dh X2JiX3Blcl9jdHgoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2lu ZS0+aTkxNSkgPj0gMTIpCiAJCXJldHVybiAweDEyOwotCWVsc2UgaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDkgfHwgZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpCisJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gOSB8fCBlbmdpbmUtPmNsYXNzID09IFJF TkRFUl9DTEFTUykKIAkJcmV0dXJuIDB4MTg7CiAJZWxzZQogCQlyZXR1cm4gLTE7CkBAIC01ODEs OSArNTgxLDkgQEAgc3RhdGljIGludCBscmNfcmluZ19jbWRfYnVmX2NjdGwoY29uc3Qgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9D TEFTUykKIAkJcmV0dXJuIC0xOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEy KQorCWlmIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikKIAkJcmV0dXJuIDB4YjY7 Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpCisJZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCXJldHVybiAweGFhOwogCWVsc2UKIAkJ cmV0dXJuIC0xOwpAQCAtNTkyLDkgKzU5Miw5IEBAIHN0YXRpYyBpbnQgbHJjX3JpbmdfY21kX2J1 Zl9jY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyB1MzIK IGxyY19yaW5nX2luZGlyZWN0X29mZnNldF9kZWZhdWx0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIHsKLQlzd2l0Y2ggKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7CisJ c3dpdGNoIChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSkgewogCWRlZmF1bHQ6Ci0JCU1JU1NJ TkdfQ0FTRShJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQSElD U19WRVIoZW5naW5lLT5pOTE1KSk7CiAJCWZhbGx0aHJvdWdoOwogCWNhc2UgMTI6CiAJCXJldHVy biBHRU4xMl9DVFhfUkNTX0lORElSRUNUX0NUWF9PRkZTRVRfREVGQVVMVDsKQEAgLTYzNyw3ICs2 MzcsNyBAQCBzdGF0aWMgdm9pZCBpbml0X2NvbW1vbl9yZWdzKHUzMiAqIGNvbnN0IHJlZ3MsCiAJ Y3RsIHw9IF9NQVNLRURfQklUX0RJU0FCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lO SElCSVQpOwogCWlmIChpbmhpYml0KQogCQljdGwgfD0gQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNU T1JFX0lOSElCSVQ7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgMTEpCisJaWYgKEdS QVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgMTEpCiAJCWN0bCB8PSBfTUFTS0VEX0JJVF9ESVNB QkxFKENUWF9DVFJMX0VOR0lORV9DVFhfU0FWRV9JTkhJQklUIHwKIAkJCQkJICAgQ1RYX0NUUkxf UlNfQ1RYX0VOQUJMRSk7CiAJcmVnc1tDVFhfQ09OVEVYVF9DT05UUk9MXSA9IGN0bDsKQEAgLTgw NSw3ICs4MDUsNyBAQCBfX2xyY19hbGxvY19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdf RFJNX0k5MTVfREVCVUdfR0VNKSkKIAkJY29udGV4dF9zaXplICs9IEk5MTVfR1RUX1BBR0VfU0la RTsgLyogZm9yIHJlZHpvbmUgKi8KIAotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAx MikgeworCWlmIChJU19HUkFQSElDU19WRVIoZW5naW5lLT5pOTE1LCAxMikpIHsKIAkJY2UtPndh X2JiX3BhZ2UgPSBjb250ZXh0X3NpemUgLyBQQUdFX1NJWkU7CiAJCWNvbnRleHRfc2l6ZSArPSBQ QUdFX1NJWkU7CiAJfQpAQCAtMTExMiw3ICsxMTEyLDcgQEAgc3RhdGljIHUzMiBscmNfZGVzY3Jp cHRvcihjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJZGVzYyA8PD0gR0VOOF9DVFhf QUREUkVTU0lOR19NT0RFX1NISUZUOwogCiAJZGVzYyB8PSBHRU44X0NUWF9WQUxJRCB8IEdFTjhf Q1RYX1BSSVZJTEVHRTsKLQlpZiAoSVNfR0VOKGNlLT52bS0+aTkxNSwgOCkpCisJaWYgKElTX0dS QVBISUNTX1ZFUihjZS0+dm0tPmk5MTUsIDgpKQogCQlkZXNjIHw9IEdFTjhfQ1RYX0wzTExDX0NP SEVSRU5UOwogCiAJcmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0YXRlKSB8IGRlc2M7CkBA IC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIGxyY19pbml0X3dhX2N0eChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJaWYgKGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQly ZXR1cm47CiAKLQlzd2l0Y2ggKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7CisJc3dpdGNoIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSkgewogCWNhc2UgMTI6CiAJY2FzZSAxMToKIAkJcmV0 dXJuOwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgdm9pZCBscmNfaW5pdF93YV9jdHgoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQl3YV9iYl9mblsxXSA9IE5VTEw7CiAJCWJyZWFrOwog CWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSk7CisJCU1J U1NJTkdfQ0FTRShHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSk7CiAJCXJldHVybjsKIAl9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwppbmRleCBiMTQxMzhmZDUwNWMuLmE4OTU3 Y2M3OWZiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbW9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21vY3MuYwpAQCAtMzQ0LDExICsz NDQsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfbW9jc19zZXR0aW5ncyhjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJdGFibGUtPnNpemUgPSBBUlJBWV9TSVpFKGRn MV9tb2NzX3RhYmxlKTsKIAkJdGFibGUtPnRhYmxlID0gZGcxX21vY3NfdGFibGU7CiAJCXRhYmxl LT5uX2VudHJpZXMgPSBHRU45X05VTV9NT0NTX0VOVFJJRVM7Ci0JfSBlbHNlIGlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTIpIHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikg ewogCQl0YWJsZS0+c2l6ZSAgPSBBUlJBWV9TSVpFKHRnbF9tb2NzX3RhYmxlKTsKIAkJdGFibGUt PnRhYmxlID0gdGdsX21vY3NfdGFibGU7CiAJCXRhYmxlLT5uX2VudHJpZXMgPSBHRU45X05VTV9N T0NTX0VOVFJJRVM7Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgMTEpKSB7CisJfSBlbHNlIGlm IChJU19HUkFQSElDU19WRVIoaTkxNSwgMTEpKSB7CiAJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJ WkUoaWNsX21vY3NfdGFibGUpOwogCQl0YWJsZS0+dGFibGUgPSBpY2xfbW9jc190YWJsZTsKIAkJ dGFibGUtPm5fZW50cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKQEAgLTM2MSw3ICszNjEs NyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9tb2NzX3NldHRpbmdzKGNvbnN0IHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAogCQl0YWJsZS0+bl9lbnRyaWVzID0gR0VOOV9OVU1fTU9D U19FTlRSSUVTOwogCQl0YWJsZS0+dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7CiAJfSBlbHNl IHsKLQkJZHJtX1dBUk5fT05DRSgmaTkxNS0+ZHJtLCBJTlRFTF9HRU4oaTkxNSkgPj0gOSwKKwkJ ZHJtX1dBUk5fT05DRSgmaTkxNS0+ZHJtLCBHUkFQSElDU19WRVIoaTkxNSkgPj0gOSwKIAkJCSAg ICAgICJQbGF0Zm9ybSB0aGF0IHNob3VsZCBoYXZlIGEgTU9DUyB0YWJsZSBkb2VzIG5vdC5cbiIp OwogCQlyZXR1cm4gMDsKIAl9CkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBnZXRfbW9jc19zZXR0aW5ncyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAkJcmV0dXJuIDA7CiAKIAkvKiBXYURpc2FibGVTa2lwQ2FjaGluZzpza2wsYnh0LGtibCxnbGsg Ki8KLQlpZiAoSVNfR0VOKGk5MTUsIDkpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA5 KSkgewogCQlpbnQgaTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgdGFibGUtPnNpemU7IGkrKykKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5jCmluZGV4IDAxNGFlOGFjNDQ4MC4uM2RhZTRi NzhmNmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9wcGd0dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3BwZ3R0LmMKQEAgLTE0Nyw5ICsx NDcsOSBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAKIAln dHRfd3JpdGVfd29ya2Fyb3VuZHMoZ3QpOwogCi0JaWYgKElTX0dFTihpOTE1LCA2KSkKKwlpZiAo SVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYpKQogCQlnZW42X3BwZ3R0X2VuYWJsZShndCk7Ci0JZWxz ZSBpZiAoSVNfR0VOKGk5MTUsIDcpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA3 KSkKIAkJZ2VuN19wcGd0dF9lbmFibGUoZ3QpOwogCiAJcmV0dXJuIDA7CkBAIC0xNTgsNyArMTU4 LDcgQEAgaW50IGk5MTVfcHBndHRfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogc3RhdGlj IHN0cnVjdCBpOTE1X3BwZ3R0ICoKIF9fcHBndHRfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndCAqZ3Qp CiB7Ci0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KQorCWlmIChHUkFQSElDU19WRVIoZ3Qt Pmk5MTUpIDwgOCkKIAkJcmV0dXJuIGdlbjZfcHBndHRfY3JlYXRlKGd0KTsKIAllbHNlCiAJCXJl dHVybiBnZW44X3BwZ3R0X2NyZWF0ZShndCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yYzYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JjNi5j CmluZGV4IDNiN2U2MmRlYmU3ZS4uYWE0ODM0ZWIxNThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9yYzYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yYzYuYwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2b2lkIGdlbjExX3JjNl9lbmFi bGUoc3RydWN0IGludGVsX3JjNiAqcmM2KQogCQlHRU45X01FRElBX1BHX0VOQUJMRSB8CiAJCUdF TjExX01FRElBX1NBTVBMRVJfUEdfRU5BQkxFOwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkg Pj0gMTIpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMikgewogCQlmb3IgKGkg PSAwOyBpIDwgSTkxNV9NQVhfVkNTOyBpKyspCiAJCQlpZiAoSEFTX0VOR0lORShndCwgX1ZDUyhp KSkpCiAJCQkJcGdfZW5hYmxlIHw9IChWRE5fSENQX1BPV0VSR0FURV9FTkFCTEUoaSkgfApAQCAt MTI2LDcgKzEyNiw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfcmM2X2VuYWJsZShzdHJ1Y3QgaW50ZWxf cmM2ICpyYzYpCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAkvKiAyYjogUHJvZ3JhbSBS QzYgdGhyZXNob2xkcy4qLwotCWlmIChJTlRFTF9HRU4ocmM2X3RvX2k5MTUocmM2KSkgPj0gMTAp IHsKKwlpZiAoR1JBUEhJQ1NfVkVSKHJjNl90b19pOTE1KHJjNikpID49IDEwKSB7CiAJCXNldCh1 bmNvcmUsIEdFTjZfUkM2X1dBS0VfUkFURV9MSU1JVCwgNTQgPDwgMTYgfCA4NSk7CiAJCXNldCh1 bmNvcmUsIEdFTjEwX01FRElBX1dBS0VfUkFURV9MSU1JVCwgMTUwKTsKIAl9IGVsc2UgaWYgKElT X1NLWUxBS0UocmM2X3RvX2k5MTUocmM2KSkpIHsKQEAgLTI0OSw5ICsyNDksOSBAQCBzdGF0aWMg dm9pZCBnZW42X3JjNl9lbmFibGUoc3RydWN0IGludGVsX3JjNiAqcmM2KQogCXJjNnZpZHMgPSAw OwogCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwgR0VONl9QQ09ERV9SRUFEX1JD NlZJRFMsCiAJCQkJICAgICAmcmM2dmlkcywgTlVMTCk7Ci0JaWYgKElTX0dFTihpOTE1LCA2KSAm JiByZXQpIHsKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYpICYmIHJldCkgewogCQlkcm1f ZGJnKCZpOTE1LT5kcm0sICJDb3VsZG4ndCBjaGVjayBmb3IgQklPUyB3b3JrYXJvdW5kXG4iKTsK LQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA2KSAmJgorCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1Nf VkVSKGk5MTUsIDYpICYmCiAJCSAgIChHRU42X0RFQ09ERV9SQzZfVklEKHJjNnZpZHMgJiAweGZm KSA8IDQ1MCkpIHsKIAkJZHJtX2RiZygmaTkxNS0+ZHJtLAogCQkJIllvdSBzaG91bGQgdXBkYXRl IHlvdXIgQklPUy4gQ29ycmVjdGluZyBtaW5pbXVtIHJjNiB2b2x0YWdlICglZG1WLT4lZG1WKVxu IiwKQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX3JjNl9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9yYzYgKnJjNikKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSByYzZf dG9fdW5jb3JlKHJjNik7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIEZP UkNFV0FLRV9BTEwpOwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpID49IDkpCiAJCXNldCh1bmNvcmUsIEdFTjlfUEdfRU5BQkxFLCAwKTsKIAlzZXQo dW5jb3JlLCBHRU42X1JDX0NPTlRST0wsIDApOwogCXNldCh1bmNvcmUsIEdFTjZfUkNfU1RBVEUs IDApOwpAQCAtNTc1LDEzICs1NzUsMTMgQEAgdm9pZCBpbnRlbF9yYzZfZW5hYmxlKHN0cnVjdCBp bnRlbF9yYzYgKnJjNikKIAkJY2h2X3JjNl9lbmFibGUocmM2KTsKIAllbHNlIGlmIChJU19WQUxM RVlWSUVXKGk5MTUpKQogCQl2bHZfcmM2X2VuYWJsZShyYzYpOwotCWVsc2UgaWYgKElOVEVMX0dF TihpOTE1KSA+PSAxMSkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpCiAJCWdl bjExX3JjNl9lbmFibGUocmM2KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwll bHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJZ2VuOV9yYzZfZW5hYmxlKHJjNik7 CiAJZWxzZSBpZiAoSVNfQlJPQURXRUxMKGk5MTUpKQogCQlnZW44X3JjNl9lbmFibGUocmM2KTsK LQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKKwllbHNlIGlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gNikKIAkJZ2VuNl9yYzZfZW5hYmxlKHJjNik7CiAKIAlyYzYtPm1hbnVhbCA9IHJj Ni0+Y3RsX2VuYWJsZSAmIEdFTjZfUkNfQ1RMX1JDNl9FTkFCTEU7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3RhdGUuYwppbmRleCBiMDNlMTk3YjFkOTkuLmI1NzVjZDZl MGI3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVuZGVyc3Rh dGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZW5kZXJzdGF0ZS5jCkBA IC0xNSw3ICsxNSw3IEBAIHJlbmRlcl9zdGF0ZV9nZXRfcm9kYXRhKGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1Mp CiAJCXJldHVybiBOVUxMOwogCi0Jc3dpdGNoIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewor CXN3aXRjaCAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkpIHsKIAljYXNlIDY6CiAJCXJldHVy biAmZ2VuNl9udWxsX3N0YXRlOwogCWNhc2UgNzoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9y ZXNldC5jCmluZGV4IGEzNzdjNDU4OGFhYS4uYmYwYmQxYjMzYTRmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3Jlc2V0LmMKQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgaW50IGdlbjhf cmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkgKi8KIAl9CiAKLQlpZiAoSU5U RUxfR0VOKGd0LT5pOTE1KSA+PSAxMSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAx MSkKIAkJcmV0ID0gZ2VuMTFfcmVzZXRfZW5naW5lcyhndCwgZW5naW5lX21hc2ssIHJldHJ5KTsK IAllbHNlCiAJCXJldCA9IGdlbjZfcmVzZXRfZW5naW5lcyhndCwgZW5naW5lX21hc2ssIHJldHJ5 KTsKQEAgLTU5NCwxNyArNTk0LDE3IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9ncHVf cmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCkKIAogCWlmIChpc19tb2NrX2d0KGd0KSkK IAkJcmV0dXJuIG1vY2tfcmVzZXQ7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJ ZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpCiAJCXJldHVybiBnZW44X3Jlc2V0X2Vu Z2luZXM7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDYpCiAJCXJldHVybiBnZW42X3Jlc2V0X2VuZ2luZXM7Ci0JZWxzZSBp ZiAoSU5URUxfR0VOKGk5MTUpID49IDUpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDUpCiAJCXJldHVybiBpbGtfZG9fcmVzZXQ7CiAJZWxzZSBpZiAoSVNfRzRYKGk5MTUpKQogCQly ZXR1cm4gZzR4X2RvX3Jlc2V0OwogCWVsc2UgaWYgKElTX0czMyhpOTE1KSB8fCBJU19QSU5FVklF VyhpOTE1KSkKIAkJcmV0dXJuIGczM19kb19yZXNldDsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gMykKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMykKIAkJcmV0dXJuIGk5 MTVfZG9fcmVzZXQ7CiAJZWxzZQogCQlyZXR1cm4gTlVMTDsKQEAgLTY1Niw3ICs2NTYsNyBAQCBi b29sIGludGVsX2hhc19yZXNldF9lbmdpbmUoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCkKIGlu dCBpbnRlbF9yZXNldF9ndWMoc3RydWN0IGludGVsX2d0ICpndCkKIHsKIAl1MzIgZ3VjX2RvbWFp biA9Ci0JCUlOVEVMX0dFTihndC0+aTkxNSkgPj0gMTEgPyBHRU4xMV9HUkRPTV9HVUMgOiBHRU45 X0dSRE9NX0dVQzsKKwkJR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSAxMSA/IEdFTjExX0dSRE9N X0dVQyA6IEdFTjlfR1JET01fR1VDOwogCWludCByZXQ7CiAKIAlHRU1fQlVHX09OKCFIQVNfR1Rf VUMoZ3QtPmk5MTUpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3Jpbmdfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19z dWJtaXNzaW9uLmMKaW5kZXggOTU4NTU0NjU1NmVlLi5jMDExNTIxZDgwZWQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lvbi5jCkBAIC0yOCw3ICsy OCw3IEBAIHN0YXRpYyB2b2lkIHNldF9od3N0YW0oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgbWFzaykKIAkgKiBsb3N0IGludGVycnVwdHMgZm9sbG93aW5nIGEgcmVzZXQuCiAJ ICovCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKSB7Ci0JCWlmIChJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSA+PSA2KQorCQlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkg Pj0gNikKIAkJCW1hc2sgJj0gfkJJVCgwKTsKIAkJZWxzZQogCQkJbWFzayAmPSB+STkxNV9VU0VS X0lOVEVSUlVQVDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3c19wZ2Eoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBwaHlzX2FkZHJfdCBwaHlzKQogCXUzMiBhZGRy OwogCiAJYWRkciA9IGxvd2VyXzMyX2JpdHMocGh5cyk7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUt Pmk5MTUpID49IDQpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDQpCiAJCWFk ZHIgfD0gKHBoeXMgPj4gMjgpICYgMHhmMDsKIAogCWludGVsX3VuY29yZV93cml0ZShlbmdpbmUt PnVuY29yZSwgSFdTX1BHQSwgYWRkcik7CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyB2b2lkIHNl dF9od3NwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIG9mZnNldCkKIAkgKiBU aGUgcmluZyBzdGF0dXMgcGFnZSBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBuZXh0IHRvIHRoZSBy ZXN0IG9mCiAJICogdGhlIHJpbmcgcmVnaXN0ZXJzIGFzIG9mIGdlbjcuCiAJICovCi0JaWYgKElT X0dFTihlbmdpbmUtPmk5MTUsIDcpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihlbmdpbmUtPmk5 MTUsIDcpKSB7CiAJCXN3aXRjaCAoZW5naW5lLT5pZCkgewogCQkvKgogCQkgKiBObyBtb3JlIHJp bmdzIGV4aXN0IG9uIEdlbjcuIERlZmF1bHQgY2FzZSBpcyBvbmx5IHRvIHNodXQgdXAKQEAgLTky LDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgc2V0X2h3c3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCB1MzIgb2Zmc2V0KQogCQkJaHdzcCA9IFZFQk9YX0hXU19QR0FfR0VONzsKIAkJCWJy ZWFrOwogCQl9Ci0JfSBlbHNlIGlmIChJU19HRU4oZW5naW5lLT5pOTE1LCA2KSkgeworCX0gZWxz ZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSwgNikpIHsKIAkJaHdzcCA9IFJJTkdf SFdTX1BHQV9HRU42KGVuZ2luZS0+bW1pb19iYXNlKTsKIAl9IGVsc2UgewogCQlod3NwID0gUklO R19IV1NfUEdBKGVuZ2luZS0+bW1pb19iYXNlKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg dm9pZCBzZXRfaHdzcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBvZmZzZXQp CiAKIHN0YXRpYyB2b2lkIGZsdXNoX2NzX3RsYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7Ci0JaWYgKCFJU19HRU5fUkFOR0UoZW5naW5lLT5pOTE1LCA2LCA3KSkKKwlpZiAoIUlT X0dSQVBISUNTX1JBTkdFKGVuZ2luZS0+aTkxNSwgNiwgNykpCiAJCXJldHVybjsKIAogCS8qIHJp bmcgc2hvdWxkIGJlIGlkbGUgYmVmb3JlIGlzc3VpbmcgYSBzeW5jIGZsdXNoKi8KQEAgLTE1Miw3 ICsxNTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRfcHBfZGlyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAlFTkdJTkVfV1JJVEVfRlcoZW5naW5lLCBSSU5HX1BQX0RJUl9EQ0xWLCBQUF9E SVJfRENMVl8yRyk7CiAJRU5HSU5FX1dSSVRFX0ZXKGVuZ2luZSwgUklOR19QUF9ESVJfQkFTRSwg cHBfZGlyKHZtKSk7CiAKLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gNykgeworCWlm IChHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA3KSB7CiAJCUVOR0lORV9XUklURV9GVyhl bmdpbmUsCiAJCQkJUklOR19NT0RFX0dFTjcsCiAJCQkJX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9Q UEdUVF9FTkFCTEUpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgaW50IHhjc19yZXN1bWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJCQkgNTAwMCwgMCwgTlVMTCkpCiAJ CWdvdG8gZXJyOwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gMikKKwlpZiAoR1JB UEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPiAyKQogCQlFTkdJTkVfV1JJVEVfRlcoZW5naW5lLAog CQkJCVJJTkdfTUlfTU9ERSwgX01BU0tFRF9CSVRfRElTQUJMRShTVE9QX1JJTkcpKTsKIApAQCAt NjQ1LDkgKzY0NSw5IEBAIHN0YXRpYyBpbnQgbWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEsCiAJdTMyICpjczsKIAogCWxlbiA9IDQ7Ci0JaWYgKElTX0dFTihpOTE1LCA3KSkK KwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDcpKQogCQlsZW4gKz0gMiArIChudW1fZW5naW5l cyA/IDQgKiBudW1fZW5naW5lcyArIDYgOiAwKTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgNSkp CisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDUpKQogCQlsZW4gKz0gMjsKIAlpZiAo ZmxhZ3MgJiBNSV9GT1JDRV9SRVNUT1JFKSB7CiAJCUdFTV9CVUdfT04oZmxhZ3MgJiBNSV9SRVNU T1JFX0lOSElCSVQpOwpAQCAtNjYxLDcgKzY2MSw3IEBAIHN0YXRpYyBpbnQgbWlfc2V0X2NvbnRl eHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCXJldHVybiBQVFJfRVJSKGNzKTsKIAogCS8q IFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRleHQ6aXZiLHZsdixoc3csYmR3LGNo diAqLwotCWlmIChJU19HRU4oaTkxNSwgNykpIHsKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUs IDcpKSB7CiAJCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFOwogCQlpZiAo bnVtX2VuZ2luZXMpIHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKQEAg LTY3Nyw3ICs2NzcsNyBAQCBzdGF0aWMgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLAogCQkJCQkJR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKTsKIAkJCX0KIAkJ fQotCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDUpKSB7CisJfSBlbHNlIGlmIChJU19HUkFQSElD U19WRVIoaTkxNSwgNSkpIHsKIAkJLyoKIAkJICogVGhpcyB3L2EgaXMgb25seSBsaXN0ZWQgZm9y IHByZS1wcm9kdWN0aW9uIGlsayBhL2Igc3RlcHBpbmdzLAogCQkgKiBidXQgaXMgYWxzbyBtZW50 aW9uZWQgZm9yIHByb2dyYW1taW5nIHRoZSBwb3dlcmN0eC4gVG8gYmUKQEAgLTcxNSw3ICs3MTUs NyBAQCBzdGF0aWMgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAog CSAqLwogCSpjcysrID0gTUlfTk9PUDsKIAotCWlmIChJU19HRU4oaTkxNSwgNykpIHsKKwlpZiAo SVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDcpKSB7CiAJCWlmIChudW1fZW5naW5lcykgewogCQkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCQkJaTkxNV9yZWdfdCBsYXN0X3JlZyA9 IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBpbnQg bWlfc2V0X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkqY3MrKyA9IE1JX05P T1A7CiAJCX0KIAkJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRTsKLQl9IGVs c2UgaWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5 MTUsIDUpKSB7CiAJCSpjcysrID0gTUlfU1VTUEVORF9GTFVTSDsKIAl9CiAKQEAgLTEwMDQsNyAr MTAwNCw3IEBAIHN0YXRpYyB2b2lkIHJpbmdfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5pOTE1OwogCi0JZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIElOVEVMX0dFTihkZXZfcHJp dikgPiAyICYmCisJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIEdSQVBISUNTX1ZFUihkZXZf cHJpdikgPiAyICYmCiAJCSAgICAoRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX01JX01PREUpICYg TU9ERV9JRExFKSA9PSAwKTsKIAogCWludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihlbmdpbmUp OwpAQCAtMTAyNSwxMyArMTAyNSwxMyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZW5naW5lLT5pOTE1OwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjZfaXJx X2VuYWJsZTsKIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjZfaXJxX2Rpc2FibGU7Ci0JfSBl bHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDUpIHsKIAkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuNV9pcnFfZW5hYmxlOwog CQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuNV9pcnFfZGlzYWJsZTsKLQl9IGVsc2UgaWYgKElO VEVMX0dFTihpOTE1KSA+PSAzKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0g MykgewogCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW4zX2lycV9lbmFibGU7CiAJCWVuZ2luZS0+ aXJxX2Rpc2FibGUgPSBnZW4zX2lycV9kaXNhYmxlOwogCX0gZWxzZSB7CkBAIC0xMDQ1LDcgKzEw NDUsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owog CiAJLyogZ2VuOCsgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggZXhlY2xpc3RzICovCi0JR0VNX0JV R19PTihJTlRFTF9HRU4oaTkxNSkgPj0gOCk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkx NSkgPj0gOCk7CiAKIAlzZXR1cF9pcnEoZW5naW5lKTsKIApAQCAtMTA2NiwxNCArMTA2NiwxNCBA QCBzdGF0aWMgdm9pZCBzZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCSAqIGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIoKS4KIAkgKi8KIAllbmdpbmUtPmVt aXRfZmluaV9icmVhZGNydW1iID0gZ2VuM19lbWl0X2JyZWFkY3J1bWI7Ci0JaWYgKElTX0dFTihp OTE1LCA1KSkKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDUpKQogCQllbmdpbmUtPmVtaXRf ZmluaV9icmVhZGNydW1iID0gZ2VuNV9lbWl0X2JyZWFkY3J1bWI7CiAKIAllbmdpbmUtPnNldF9k ZWZhdWx0X3N1Ym1pc3Npb24gPSBpOXh4X3NldF9kZWZhdWx0X3N1Ym1pc3Npb247CiAKLQlpZiAo SU5URUxfR0VOKGk5MTUpID49IDYpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQll bmdpbmUtPmVtaXRfYmJfc3RhcnQgPSBnZW42X2VtaXRfYmJfc3RhcnQ7Ci0JZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpID49IDQpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDQpCiAJ CWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGdlbjRfZW1pdF9iYl9zdGFydDsKIAllbHNlIGlmIChJ U19JODMwKGk5MTUpIHx8IElTX0k4NDVHKGk5MTUpKQogCQllbmdpbmUtPmVtaXRfYmJfc3RhcnQg PSBpODMwX2VtaXRfYmJfc3RhcnQ7CkBAIC0xMDkwLDE2ICsxMDkwLDE2IEBAIHN0YXRpYyB2b2lk IHNldHVwX3JjcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIAllbmdpbmUtPmly cV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVDsKIAotCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gNykgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNykgewogCQllbmdp bmUtPmVtaXRfZmx1c2ggPSBnZW43X2VtaXRfZmx1c2hfcmNzOwogCQllbmdpbmUtPmVtaXRfZmlu aV9icmVhZGNydW1iID0gZ2VuN19lbWl0X2JyZWFkY3J1bWJfcmNzOwotCX0gZWxzZSBpZiAoSVNf R0VOKGk5MTUsIDYpKSB7CisJfSBlbHNlIGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNikpIHsK IAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9lbWl0X2ZsdXNoX3JjczsKIAkJZW5naW5lLT5l bWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjZfZW1pdF9icmVhZGNydW1iX3JjczsKLQl9IGVsc2Ug aWYgKElTX0dFTihpOTE1LCA1KSkgeworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUs IDUpKSB7CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRfZW1pdF9mbHVzaF9yY3M7CiAJfSBl bHNlIHsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDQpCisJCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPCA0KQogCQkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMl9lbWl0X2ZsdXNoOwogCQllbHNl CiAJCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW40X2VtaXRfZmx1c2hfcmNzOwpAQCAtMTExNCwy MCArMTExNCwyMCBAQCBzdGF0aWMgdm9pZCBzZXR1cF92Y3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5p OTE1OwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA2KSB7CiAJCS8qIGdlbjYgYnNkIG5lZWRzIGEgc3BlY2lhbCB3YSBmb3IgdGFpbCB1 cGRhdGVzICovCi0JCWlmIChJU19HRU4oaTkxNSwgNikpCisJCWlmIChJU19HUkFQSElDU19WRVIo aTkxNSwgNikpCiAJCQllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBnZW42X2JzZF9z ZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwogCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X2VtaXRf Zmx1c2hfdmNzOwogCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX0JTRF9VU0VSX0lOVEVS UlVQVDsKIAotCQlpZiAoSVNfR0VOKGk5MTUsIDYpKQorCQlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5 MTUsIDYpKQogCQkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjZfZW1pdF9icmVh ZGNydW1iX3hjczsKIAkJZWxzZQogCQkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdl bjdfZW1pdF9icmVhZGNydW1iX3hjczsKIAl9IGVsc2UgewogCQllbmdpbmUtPmVtaXRfZmx1c2gg PSBnZW40X2VtaXRfZmx1c2hfdmNzOwotCQlpZiAoSVNfR0VOKGk5MTUsIDUpKQorCQlpZiAoSVNf R1JBUEhJQ1NfVkVSKGk5MTUsIDUpKQogCQkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBJTEtf QlNEX1VTRVJfSU5URVJSVVBUOwogCQllbHNlCiAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9 IEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUOwpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgc3RhdGljIHZv aWQgc2V0dXBfYmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmVt aXRfZmx1c2ggPSBnZW42X2VtaXRfZmx1c2hfeGNzOwogCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr ID0gR1RfQkxUX1VTRVJfSU5URVJSVVBUOwogCi0JaWYgKElTX0dFTihpOTE1LCA2KSkKKwlpZiAo SVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYpKQogCQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1i ID0gZ2VuNl9lbWl0X2JyZWFkY3J1bWJfeGNzOwogCWVsc2UKIAkJZW5naW5lLT5lbWl0X2Zpbmlf YnJlYWRjcnVtYiA9IGdlbjdfZW1pdF9icmVhZGNydW1iX3hjczsKQEAgLTExNTEsNyArMTE1MSw3 IEBAIHN0YXRpYyB2b2lkIHNldHVwX3ZlY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OwogCi0J R0VNX0JVR19PTihJTlRFTF9HRU4oaTkxNSkgPCA3KTsKKwlHRU1fQlVHX09OKEdSQVBISUNTX1ZF UihpOTE1KSA8IDcpOwogCiAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9lbWl0X2ZsdXNoX3hj czsKIAllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUOwpA QCAtMTE5OSw3ICsxMTk5LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqZ2VuN19jdHhfdm1h KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK IAlpbnQgc2l6ZSwgZXJyOwogCi0JaWYgKCFJU19HRU4oZW5naW5lLT5pOTE1LCA3KSB8fCBlbmdp bmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKKwlpZiAoIUlTX0dSQVBISUNTX1ZFUihlbmdpbmUt Pmk5MTUsIDcpIHx8IGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQogCQlyZXR1cm4gMDsK IAogCWVyciA9IGdlbjdfY3R4X3N3aXRjaF9iYl9zZXR1cChlbmdpbmUsIE5VTEwgLyogcHJvYmUg c2l6ZSAqLyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jCmluZGV4IDQwNWQ4MTRlOTA0 MC4uMmZmNTMwMWExNDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ycHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ycHMuYwpAQCAtMTk2 LDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIHJwc19yZXNldF9pbnRlcnJ1cHRzKHN0cnVjdCBpbnRl bF9ycHMgKnJwcykKIAlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gcnBzX3RvX2d0KHJwcyk7CiAKIAlz cGluX2xvY2tfaXJxKCZndC0+aXJxX2xvY2spOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49 IDExKQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDExKQogCQlnZW4xMV9ycHNfcmVz ZXRfaW50ZXJydXB0cyhycHMpOwogCWVsc2UKIAkJZ2VuNl9ycHNfcmVzZXRfaW50ZXJydXB0cyhy cHMpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHN0YXRpYyB1MzIgcnBzX2xpbWl0cyhzdHJ1Y3QgaW50 ZWxfcnBzICpycHMsIHU4IHZhbCkKIAkgKiBmcmVxdWVuY3ksIGlmIHRoZSBkb3duIHRocmVzaG9s ZCBleHBpcmVzIGluIHRoYXQgd2luZG93IHdlIHdpbGwgbm90CiAJICogcmVjZWl2ZSBhIGRvd24g aW50ZXJydXB0LgogCSAqLwotCWlmIChJTlRFTF9HRU4ocnBzX3RvX2k5MTUocnBzKSkgPj0gOSkg eworCWlmIChHUkFQSElDU19WRVIocnBzX3RvX2k5MTUocnBzKSkgPj0gOSkgewogCQlsaW1pdHMg PSBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCA8PCAyMzsKIAkJaWYgKHZhbCA8PSBycHMtPm1pbl9m cmVxX3NvZnRsaW1pdCkKIAkJCWxpbWl0cyB8PSBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCA8PCAx NDsKQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgdm9pZCBycHNfc2V0X3Bvd2VyKHN0cnVjdCBp bnRlbF9ycHMgKnJwcywgaW50IG5ld19wb3dlcikKIAkgICAgaW50ZWxfZ3RfbnNfdG9fcG1faW50 ZXJ2YWwoZ3QsIGVpX2Rvd24gKiB0aHJlc2hvbGRfZG93biAqIDEwKSk7CiAKIAlzZXQodW5jb3Jl LCBHRU42X1JQX0NPTlRST0wsCi0JICAgIChJTlRFTF9HRU4oZ3QtPmk5MTUpID4gOSA/IDAgOiBH RU42X1JQX01FRElBX1RVUkJPKSB8CisJICAgIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID4gOSA/ IDAgOiBHRU42X1JQX01FRElBX1RVUkJPKSB8CiAJICAgIEdFTjZfUlBfTUVESUFfSFdfTk9STUFM X01PREUgfAogCSAgICBHRU42X1JQX01FRElBX0lTX0dGWCB8CiAJICAgIEdFTjZfUlBfRU5BQkxF IHwKQEAgLTc3MSw3ICs3NzEsNyBAQCBzdGF0aWMgaW50IGdlbjZfcnBzX3NldChzdHJ1Y3QgaW50 ZWxfcnBzICpycHMsIHU4IHZhbCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHJw c190b19pOTE1KHJwcyk7CiAJdTMyIHN3cmVxOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5 KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJc3dyZXEgPSBHRU45X0ZSRVFVRU5D WSh2YWwpOwogCWVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUp KQogCQlzd3JlcSA9IEhTV19GUkVRVUVOQ1kodmFsKTsKQEAgLTgxMiwxNCArODEyLDE0IEBAIHN0 YXRpYyBpbnQgcnBzX3NldChzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIHU4IHZhbCwgYm9vbCB1cGRh dGUpCiAKIAlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19DSEVSUllWSUVXKGk5MTUpKQog CQllcnIgPSB2bHZfcnBzX3NldChycHMsIHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWVyciA9IGdlbjZf cnBzX3NldChycHMsIHZhbCk7CiAJZWxzZQogCQllcnIgPSBnZW41X3Jwc19zZXQocnBzLCB2YWwp OwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAodXBkYXRlICYmIElOVEVMX0dFTihp OTE1KSA+PSA2KQorCWlmICh1cGRhdGUgJiYgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdl bjZfcnBzX3NldF90aHJlc2hvbGRzKHJwcywgdmFsKTsKIAlycHMtPmxhc3RfZnJlcSA9IHZhbDsK IApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgaW50ZWxfcnBzX3VucGFyayhzdHJ1Y3QgaW50ZWxf cnBzICpycHMpCiAJaWYgKGludGVsX3Jwc191c2VzX3RpbWVyKHJwcykpCiAJCXJwc19zdGFydF90 aW1lcihycHMpOwogCi0JaWYgKElTX0dFTihycHNfdG9faTkxNShycHMpLCA1KSkKKwlpZiAoSVNf R1JBUEhJQ1NfVkVSKHJwc190b19pOTE1KHJwcyksIDUpKQogCQlnZW41X3Jwc191cGRhdGUocnBz KTsKIH0KIApAQCAtOTk5LDcgKzk5OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfcnBzX2luaXQoc3Ry dWN0IGludGVsX3JwcyAqcnBzKQogCiAJcnBzLT5lZmZpY2llbnRfZnJlcSA9IHJwcy0+cnAxX2Zy ZXE7CiAJaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUpIHx8Ci0JICAg IElTX0dFTjlfQkMoaTkxNSkgfHwgSU5URUxfR0VOKGk5MTUpID49IDEwKSB7CisJICAgIElTX0dF TjlfQkMoaTkxNSkgfHwgR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEwKSB7CiAJCXUzMiBkZGNjX3N0 YXR1cyA9IDA7CiAKIAkJaWYgKHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwKQEAgLTEwMTIs NyArMTAxMiw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfcnBzX2luaXQoc3RydWN0IGludGVsX3JwcyAq cnBzKQogCQkJCQlycHMtPm1heF9mcmVxKTsKIAl9CiAKLQlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8 fCBJTlRFTF9HRU4oaTkxNSkgPj0gMTApIHsKKwlpZiAoSVNfR0VOOV9CQyhpOTE1KSB8fCBHUkFQ SElDU19WRVIoaTkxNSkgPj0gMTApIHsKIAkJLyogU3RvcmUgdGhlIGZyZXF1ZW5jeSB2YWx1ZXMg aW4gMTYuNjYgTUhaIHVuaXRzLCB3aGljaCBpcwogCQkgKiB0aGUgbmF0dXJhbCBoYXJkd2FyZSB1 bml0IGZvciBTS0wKIAkJICovCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCBzdGF0aWMgYm9vbCBnZW45 X3Jwc19lbmFibGUoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9IGd0LT51bmNvcmU7CiAKIAkvKiBQcm9ncmFtIGRlZmF1bHRzIGFuZCB0aHJlc2hv bGRzIGZvciBSUFMgKi8KLQlpZiAoSVNfR0VOKGd0LT5pOTE1LCA5KSkKKwlpZiAoSVNfR1JBUEhJ Q1NfVkVSKGd0LT5pOTE1LCA5KSkKIAkJaW50ZWxfdW5jb3JlX3dyaXRlX2Z3KHVuY29yZSwgR0VO Nl9SQ19WSURFT19GUkVRLAogCQkJCSAgICAgIEdFTjlfRlJFUVVFTkNZKHJwcy0+cnAxX2ZyZXEp KTsKIApAQCAtMTM2NSwxNiArMTM2NSwxNiBAQCB2b2lkIGludGVsX3Jwc19lbmFibGUoc3RydWN0 IGludGVsX3JwcyAqcnBzKQogCQllbmFibGVkID0gY2h2X3Jwc19lbmFibGUocnBzKTsKIAllbHNl IGlmIChJU19WQUxMRVlWSUVXKGk5MTUpKQogCQllbmFibGVkID0gdmx2X3Jwc19lbmFibGUocnBz KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwllbHNlIGlmIChHUkFQSElDU19W RVIoaTkxNSkgPj0gOSkKIAkJZW5hYmxlZCA9IGdlbjlfcnBzX2VuYWJsZShycHMpOwotCWVsc2Ug aWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSA4KQogCQllbmFibGVkID0gZ2VuOF9ycHNfZW5hYmxlKHJwcyk7Ci0JZWxzZSBpZiAoSU5URUxf R0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWVu YWJsZWQgPSBnZW42X3Jwc19lbmFibGUocnBzKTsKIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGk5 MTUpKQogCQllbmFibGVkID0gZ2VuNV9ycHNfZW5hYmxlKHJwcyk7CiAJZWxzZQotCQlNSVNTSU5H X0NBU0UoSU5URUxfR0VOKGk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihpOTE1 KSk7CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsK IAlpZiAoIWVuYWJsZWQpCiAJCXJldHVybjsKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgaW50 ZWxfcnBzX2VuYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAKIAlpZiAoaGFzX2J1c3lfc3Rh dHMocnBzKSkKIAkJaW50ZWxfcnBzX3NldF90aW1lcihycHMpOwotCWVsc2UgaWYgKElOVEVMX0dF TihpOTE1KSA+PSA2KQorCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQlpbnRl bF9ycHNfc2V0X2ludGVycnVwdHMocnBzKTsKIAllbHNlCiAJCS8qIElyb25sYWtlIGN1cnJlbnRs eSB1c2VzIGludGVsX2lwcy5rbyAqLyB7fQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgdm9pZCBpbnRl bF9ycHNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAJaW50ZWxfcnBzX2NsZWFyX2lu dGVycnVwdHMocnBzKTsKIAlpbnRlbF9ycHNfY2xlYXJfdGltZXIocnBzKTsKIAotCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNikKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZf cnBzX2Rpc2FibGUocnBzKTsKIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGk5MTUpKQogCQlnZW41 X3Jwc19kaXNhYmxlKHJwcyk7CkBAIC0xNDUzLDE0ICsxNDUzLDE0IEBAIGludCBpbnRlbF9ncHVf ZnJlcShzdHJ1Y3QgaW50ZWxfcnBzICpycHMsIGludCB2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBycHNfdG9faTkxNShycHMpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA5KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJcmV0dXJuIERJVl9ST1VO RF9DTE9TRVNUKHZhbCAqIEdUX0ZSRVFVRU5DWV9NVUxUSVBMSUVSLAogCQkJCQkgR0VOOV9GUkVR X1NDQUxFUik7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGNodl9n cHVfZnJlcShycHMsIHZhbCk7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJcmV0 dXJuIGJ5dF9ncHVfZnJlcShycHMsIHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49 IDYpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCXJldHVybiB2YWwgKiBH VF9GUkVRVUVOQ1lfTVVMVElQTElFUjsKIAllbHNlCiAJCXJldHVybiB2YWw7CkBAIC0xNDcwLDE0 ICsxNDcwLDE0IEBAIGludCBpbnRlbF9mcmVxX29wY29kZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMs IGludCB2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBycHNfdG9faTkx NShycHMpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5KQorCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gOSkKIAkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKHZhbCAqIEdFTjlfRlJFUV9T Q0FMRVIsCiAJCQkJCSBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUik7CiAJZWxzZSBpZiAoSVNfQ0hF UlJZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGNodl9mcmVxX29wY29kZShycHMsIHZhbCk7CiAJZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkKIAkJcmV0dXJuIGJ5dF9mcmVxX29wY29kZShycHMs IHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpCisJZWxzZSBpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDYpCiAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2YWwsIEdUX0ZS RVFVRU5DWV9NVUxUSVBMSUVSKTsKIAllbHNlCiAJCXJldHVybiB2YWw7CkBAIC0xNzcwLDcgKzE3 NzAsNyBAQCB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ycHMgKnJwcywg dTMyIHBtX2lpcikKIAkJc3Bpbl91bmxvY2soJmd0LT5pcnFfbG9jayk7CiAJfQogCi0JaWYgKElO VEVMX0dFTihndC0+aTkxNSkgPj0gOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA+PSA4 KQogCQlyZXR1cm47CiAKIAlpZiAocG1faWlyICYgUE1fVkVCT1hfVVNFUl9JTlRFUlJVUFQpCkBA IC0xODMzLDcgKzE4MzMsNyBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ycHMg KnJwcykKIAkJY2h2X3Jwc19pbml0KHJwcyk7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1 KSkKIAkJdmx2X3Jwc19pbml0KHJwcyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYp CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWdlbjZfcnBzX2luaXQocnBz KTsKIAllbHNlIGlmIChJU19JUk9OTEFLRV9NKGk5MTUpKQogCQlnZW41X3Jwc19pbml0KHJwcyk7 CkBAIC0xODQzLDcgKzE4NDMsNyBAQCB2b2lkIGludGVsX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9y cHMgKnJwcykKIAlycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCA9IHJwcy0+bWluX2ZyZXE7CiAKIAkv KiBBZnRlciBzZXR0aW5nIG1heC1zb2Z0bGltaXQsIGZpbmQgdGhlIG92ZXJjbG9jayBtYXggZnJl cSAqLwotCWlmIChJU19HRU4oaTkxNSwgNikgfHwgSVNfSVZZQlJJREdFKGk5MTUpIHx8IElTX0hB U1dFTEwoaTkxNSkpIHsKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYpIHx8IElTX0lWWUJS SURHRShpOTE1KSB8fCBJU19IQVNXRUxMKGk5MTUpKSB7CiAJCXUzMiBwYXJhbXMgPSAwOwogCiAJ CXNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoaTkxNSwgR0VONl9SRUFEX09DX1BBUkFNUywKQEAgLTE4 NzIsMTYgKzE4NzIsMTYgQEAgdm9pZCBpbnRlbF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpy cHMpCiAJICoKIAkgKiBUT0RPOiB2ZXJpZnkgaWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBW TFYsQ0hWLgogCSAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gNykKKwlpZiAoR1JBUEhJQ1Nf VkVSKGk5MTUpIDw9IDcpCiAJCXJwcy0+cG1faW50cm1za19tYnogfD0gR0VONl9QTV9SUF9VUF9F SV9FWFBJUkVEOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4ICYmIElOVEVMX0dFTihpOTE1 KSA8IDExKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCAmJiBHUkFQSElDU19WRVIoaTkx NSkgPCAxMSkKIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JF RElSRUNUX1RPX0dVQzsKIH0KIAogdm9pZCBpbnRlbF9ycHNfc2FuaXRpemUoc3RydWN0IGludGVs X3JwcyAqcnBzKQogewotCWlmIChJTlRFTF9HRU4ocnBzX3RvX2k5MTUocnBzKSkgPj0gNikKKwlp ZiAoR1JBUEhJQ1NfVkVSKHJwc190b19pOTE1KHJwcykpID49IDYpCiAJCXJwc19kaXNhYmxlX2lu dGVycnVwdHMocnBzKTsKIH0KIApAQCAtMTg5MiwxMSArMTg5MiwxMSBAQCB1MzIgaW50ZWxfcnBz X2dldF9jYWdmKHN0cnVjdCBpbnRlbF9ycHMgKnJwcywgdTMyIHJwc3RhdCkKIAogCWlmIChJU19W QUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCiAJCWNhZ2YgPSAocnBzdGF0 ID4+IDgpICYgMHhmZjsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOSkKKwllbHNlIGlm IChHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkKIAkJY2FnZiA9IChycHN0YXQgJiBHRU45X0NBR0Zf TUFTSykgPj4gR0VOOV9DQUdGX1NISUZUOwogCWVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwg SVNfQlJPQURXRUxMKGk5MTUpKQogCQljYWdmID0gKHJwc3RhdCAmIEhTV19DQUdGX01BU0spID4+ IEhTV19DQUdGX1NISUZUOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQorCWVsc2Ug aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KQogCQljYWdmID0gKHJwc3RhdCAmIEdFTjZfQ0FH Rl9NQVNLKSA+PiBHRU42X0NBR0ZfU0hJRlQ7CiAJZWxzZQogCQljYWdmID0gZ2VuNV9pbnZlcnRf ZnJlcShycHMsIChycHN0YXQgJiBNRU1TVEFUX1BTVEFURV9NQVNLKSA+PgpAQCAtMTkxNSw3ICsx OTE1LDcgQEAgc3RhdGljIHUzMiByZWFkX2NhZ2Yoc3RydWN0IGludGVsX3JwcyAqcnBzKQogCQl2 bHZfcHVuaXRfZ2V0KGk5MTUpOwogCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoaTkxNSwgUFVOSVRf UkVHX0dQVV9GUkVRX1NUUyk7CiAJCXZsdl9wdW5pdF9wdXQoaTkxNSk7Ci0JfSBlbHNlIGlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDYpIHsKIAkJZnJlcSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9SUFNUQVQxKTsK IAl9IGVsc2UgewogCQlmcmVxID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBNRU1TVEFUX0lM Syk7CkBAIC0xOTY4LDcgKzE5NjgsNyBAQCB2b2lkIGludGVsX3Jwc19kcml2ZXJfcmVnaXN0ZXIo c3RydWN0IGludGVsX3JwcyAqcnBzKQogCSAqIFdlIG9ubHkgcmVnaXN0ZXIgdGhlIGk5MTUgaXBz IHBhcnQgd2l0aCBpbnRlbC1pcHMgb25jZSBldmVyeXRoaW5nIGlzCiAJICogc2V0IHVwLCB0byBh dm9pZCBpbnRlbC1pcHMgc25lYWtpbmcgaW4gYW5kIHJlYWRpbmcgYm9ndXMgdmFsdWVzLgogCSAq LwotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDUpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihndC0+ aTkxNSwgNSkpIHsKIAkJR0VNX0JVR19PTihpcHNfbWNoZGV2KTsKIAkJcmN1X2Fzc2lnbl9wb2lu dGVyKGlwc19tY2hkZXYsIGd0LT5pOTE1KTsKIAkJaXBzX3BpbmdfZm9yX2k5MTVfbG9hZCgpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCmluZGV4IDBkOWY3NGFlYzhmZS4uNDZhYTQz MTM2NTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCkBAIC01OTAsMTMgKzU5 MCwxMyBAQCB2b2lkIGludGVsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJ CWNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoZ3QpOwogCWVsc2UgaWYgKElTX0JST0FEV0VMTChp OTE1KSkKIAkJYmR3X3NzZXVfaW5mb19pbml0KGd0KTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwg OSkpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDkpKQogCQlnZW45X3NzZXVfaW5m b19pbml0KGd0KTsKLQllbHNlIGlmIChJU19HRU4oaTkxNSwgMTApKQorCWVsc2UgaWYgKElTX0dS QVBISUNTX1ZFUihpOTE1LCAxMCkpCiAJCWdlbjEwX3NzZXVfaW5mb19pbml0KGd0KTsKLQllbHNl IGlmIChJU19HRU4oaTkxNSwgMTEpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCAx MSkpCiAJCWdlbjExX3NzZXVfaW5mb19pbml0KGd0KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gMTIpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyKQogCQlnZW4xMl9z c2V1X2luZm9faW5pdChndCk7CiB9CiAKQEAgLTYxMyw3ICs2MTMsNyBAQCB1MzIgaW50ZWxfc3Nl dV9tYWtlX3JwY3Moc3RydWN0IGludGVsX2d0ICpndCwKIAkgKiBObyBleHBsaWNpdCBSUENTIHJl cXVlc3QgaXMgbmVlZGVkIHRvIGVuc3VyZSBmdWxsCiAJICogc2xpY2Uvc3Vic2xpY2UvRVUgZW5h YmxlbWVudCBwcmlvciB0byBHZW45LgogCSAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA5KQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA5KQogCQlyZXR1cm4gMDsKIAogCS8qCkBAIC02NTEs NyArNjUxLDcgQEAgdTMyIGludGVsX3NzZXVfbWFrZV9ycGNzKHN0cnVjdCBpbnRlbF9ndCAqZ3Qs CiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBm b3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4oaTkxNSwgMTEp ICYmCisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCAxMSkgJiYKIAkgICAgc2xpY2VzID09IDEg JiYKIAkgICAgc3Vic2xpY2VzID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNl X21hc2tbMF0pIC8gMikpIHsKIAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAxKTsKQEAgLTY2OSw3 ICs2NjksNyBAQCB1MzIgaW50ZWxfc3NldV9tYWtlX3JwY3Moc3RydWN0IGludGVsX2d0ICpndCwK IAlpZiAoc3NldS0+aGFzX3NsaWNlX3BnKSB7CiAJCXUzMiBtYXNrLCB2YWwgPSBzbGljZXM7CiAK LQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp ID49IDExKSB7CiAJCQltYXNrID0gR0VOMTFfUlBDU19TX0NOVF9NQVNLOwogCQkJdmFsIDw8PSBH RU4xMV9SUENTX1NfQ05UX1NISUZUOwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3dvcmthcm91bmRzLmMKaW5kZXggMmM2ZjcyMTc0NjlmLi43ZTNhMDdmOWMxODMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtNjkz LDkgKzY5Myw5IEBAIF9faW50ZWxfZW5naW5lX2luaXRfY3R4X3dhKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKIAllbHNlIGlmIChJU19BTERFUkxBS0VfUyhpOTE1KSB8fCBJU19ST0NL RVRMQUtFKGk5MTUpIHx8CiAJCSBJU19USUdFUkxBS0UoaTkxNSkpCiAJCXRnbF9jdHhfd29ya2Fy b3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEyKSkKKwll bHNlIGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgMTIpKQogCQlnZW4xMl9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChlbmdpbmUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkKKwllbHNl IGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgMTEpKQogCQlpY2xfY3R4X3dvcmthcm91bmRzX2lu aXQoZW5naW5lLCB3YWwpOwogCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoaTkxNSkpCiAJCWNubF9j dHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7CkBAIC03MTMsMTQgKzcxMywxNCBAQCBf X2ludGVsX2VuZ2luZV9pbml0X2N0eF93YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAJCWNodl9jdHhfd29ya2Fyb3VuZHNfaW5pdChlbmdpbmUsIHdhbCk7CiAJZWxzZSBpZiAoSVNf QlJPQURXRUxMKGk5MTUpKQogCQliZHdfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lLCB3YWwp OwotCWVsc2UgaWYgKElTX0dFTihpOTE1LCA3KSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIo aTkxNSwgNykpCiAJCWdlbjdfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lLCB3YWwpOwotCWVs c2UgaWYgKElTX0dFTihpOTE1LCA2KSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwg NikpCiAJCWdlbjZfY3R4X3dvcmthcm91bmRzX2luaXQoZW5naW5lLCB3YWwpOwotCWVsc2UgaWYg KElOVEVMX0dFTihpOTE1KSA8IDgpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgOCkK IAkJOwogCWVsc2UKLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdf Q0FTRShHUkFQSElDU19WRVIoaTkxNSkpOwogCiAJd2FfaW5pdF9maW5pc2god2FsKTsKIH0KQEAg LTk0NCw3ICs5NDQsNyBAQCB3YV9pbml0X21jcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCXVuc2lnbmVkIGludCBzbGljZSwgc3Vic2xp Y2U7CiAJdTMyIGwzX2VuLCBtY3IsIG1jcl9tYXNrOwogCi0JR0VNX0JVR19PTihJTlRFTF9HRU4o aTkxNSkgPCAxMCk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkgPCAxMCk7CiAKIAkv KgogCSAqIFdhUHJvZ3JhbU1nc3JGb3JMM0JhbmtTcGVjaWZpY01taW9SZWFkczogY25sLGljbApA QCAtOTc0LDcgKzk3NCw3IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJICogb2YgZXZlcnkgTU1JTyByZWFkLgog CSAqLwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMCAmJiBpc19wb3dlcl9vZl8yKHNzZXUt PnNsaWNlX21hc2spKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMCAmJiBpc19wb3dl cl9vZl8yKHNzZXUtPnNsaWNlX21hc2spKSB7CiAJCXUzMiBsM19mdXNlID0KIAkJCWludGVsX3Vu Y29yZV9yZWFkKCZpOTE1LT51bmNvcmUsIEdFTjEwX01JUlJPUl9GVVNFMykgJgogCQkJR0VOMTBf TDNCQU5LX01BU0s7CkBAIC05OTYsNyArOTk2LDcgQEAgd2FfaW5pdF9tY3Ioc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAl9CiAJc3Vic2xp Y2UtLTsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKKwlpZiAoR1JBUEhJQ1NfVkVS KGk5MTUpID49IDExKSB7CiAJCW1jciA9IEdFTjExX01DUl9TTElDRShzbGljZSkgfCBHRU4xMV9N Q1JfU1VCU0xJQ0Uoc3Vic2xpY2UpOwogCQltY3JfbWFzayA9IEdFTjExX01DUl9TTElDRV9NQVNL IHwgR0VOMTFfTUNSX1NVQlNMSUNFX01BU0s7CiAJfSBlbHNlIHsKQEAgLTExMzksOSArMTEzOSw5 IEBAIGd0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0 cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJZGcxX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwg d2FsKTsKIAllbHNlIGlmIChJU19USUdFUkxBS0UoaTkxNSkpCiAJCXRnbF9ndF93b3JrYXJvdW5k c19pbml0KGk5MTUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEyKSkKKwllbHNlIGlm IChJU19HUkFQSElDU19WRVIoaTkxNSwgMTIpKQogCQlnZW4xMl9ndF93b3JrYXJvdW5kc19pbml0 KGk5MTUsIHdhbCk7Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDExKSkKKwllbHNlIGlmIChJU19H UkFQSElDU19WRVIoaTkxNSwgMTEpKQogCQlpY2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3 YWwpOwogCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoaTkxNSkpCiAJCWNubF9ndF93b3JrYXJvdW5k c19pbml0KGk5MTUsIHdhbCk7CkBAIC0xMTYxLDE4ICsxMTYxLDE4IEBAIGd0X2luaXRfd29ya2Fy b3VuZHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCkKIAkJdmx2X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKIAllbHNlIGlmIChJ U19JVllCUklER0UoaTkxNSkpCiAJCWl2Yl9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUsIHdhbCk7 Ci0JZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDYpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihp OTE1LCA2KSkKIAkJc25iX2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKLQllbHNlIGlm IChJU19HRU4oaTkxNSwgNSkpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDUpKQog CQlpbGtfZ3Rfd29ya2Fyb3VuZHNfaW5pdChpOTE1LCB3YWwpOwogCWVsc2UgaWYgKElTX0c0WChp OTE1KSkKIAkJZzR4X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKLQllbHNlIGlmIChJ U19HRU4oaTkxNSwgNCkpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDQpKQogCQln ZW40X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSwgd2FsKTsKLQllbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPD0gOCkKKwllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPD0gOCkKIAkJOwogCWVs c2UKLQkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7CisJCU1JU1NJTkdfQ0FTRShHUkFQ SElDU19WRVIoaTkxNSkpOwogfQogCiB2b2lkIGludGVsX2d0X2luaXRfd29ya2Fyb3VuZHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC0xNTI2LDkgKzE1MjYsOSBAQCB2b2lkIGlu dGVsX2VuZ2luZV9pbml0X3doaXRlbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAKIAlpZiAoSVNfREcxKGk5MTUpKQogCQlkZzFfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7Ci0J ZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDEyKSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIoaTkx NSwgMTIpKQogCQl0Z2xfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7Ci0JZWxzZSBpZiAoSVNfR0VO KGk5MTUsIDExKSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgMTEpKQogCQlpY2xf d2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7CiAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShpOTE1KSkK IAkJY25sX3doaXRlbGlzdF9idWlsZChlbmdpbmUpOwpAQCAtMTU0NCwxMCArMTU0NCwxMCBAQCB2 b2lkIGludGVsX2VuZ2luZV9pbml0X3doaXRlbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJCWJ4dF93aGl0ZWxpc3RfYnVpbGQoZW5naW5lKTsKIAllbHNlIGlmIChJU19TS1lM QUtFKGk5MTUpKQogCQlza2xfd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSk7Ci0JZWxzZSBpZiAoSU5U RUxfR0VOKGk5MTUpIDw9IDgpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDw9IDgpCiAJ CTsKIAllbHNlCi0JCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOworCQlNSVNTSU5HX0NB U0UoR1JBUEhJQ1NfVkVSKGk5MTUpKTsKIAogCXdhX2luaXRfZmluaXNoKHcpOwogfQpAQCAtMTY2 Myw3ICsxNjYzLDcgQEAgcmNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCQkJICAgICBFTkFCTEVfU01BTExQ TCk7CiAJfQogCi0JaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwlpZiAoSVNfR1JBUEhJQ1NfVkVS KGk5MTUsIDExKSkgewogCQkvKiBUaGlzIGlzIG5vdCBhbiBXYS4gRW5hYmxlIGZvciBiZXR0ZXIg aW1hZ2UgcXVhbGl0eSAqLwogCQl3YV9tYXNrZWRfZW4od2FsLAogCQkJICAgICBfM0RfQ0hJQ0tF TjMsCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCQkJICAgICBG Rl9ET1BfQ0xPQ0tfR0FURV9ESVNBQkxFKTsKIAl9CiAKLQlpZiAoSVNfR0VOX1JBTkdFKGk5MTUs IDksIDEyKSkgeworCWlmIChJU19HUkFQSElDU19SQU5HRShpOTE1LCA5LCAxMikpIHsKIAkJLyog RnRyUGVyQ3R4dFByZWVtcHRpb25HcmFudWxhcml0eUNvbnRyb2w6c2tsLGJ4dCxrYmwsY2ZsLGNu bCxpY2wsdGdsICovCiAJCXdhX21hc2tlZF9lbih3YWwsCiAJCQkgICAgIEdFTjdfRkZfU0xJQ0Vf Q1NfQ0hJQ0tFTjEsCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCByY3NfZW5naW5lX3dhX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJ CQkgICAgIEdFTjlfUE9PTEVEX0VVX0xPQURfQkFMQU5DSU5HX0ZJWF9ESVNBQkxFKTsKIAl9CiAK LQlpZiAoSVNfR0VOKGk5MTUsIDkpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA5KSkg ewogCQkvKiBXYUNvbnRleHRTd2l0Y2hXaXRoQ29uY3VycmVudFRMQkludmFsaWRhdGU6c2tsLGJ4 dCxrYmwsZ2xrLGNmbCAqLwogCQl3YV9tYXNrZWRfZW4od2FsLAogCQkJICAgICBHRU45X0NTRkVf Q0hJQ0tFTjFfUkNTLApAQCAtMTg5Myw3ICsxODkzLDcgQEAgcmNzX2VuZ2luZV93YV9pbml0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQog CQkJCSAgICAgR0VON19QU0RfU0lOR0xFX1BPUlRfRElTUEFUQ0hfRU5BQkxFKTsKIAl9CiAKLQlp ZiAoSVNfR0VOKGk5MTUsIDcpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA3KSkgewog CQkvKiBXYUJDU1ZDU1RsYkludmFsaWRhdGlvbk1vZGU6aXZiLHZsdixoc3cgKi8KIAkJd2FfbWFz a2VkX2VuKHdhbCwKIAkJCSAgICAgR0ZYX01PREVfR0VONywKQEAgLTE5MjUsNyArMTkyNSw3IEBA IHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVj dCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJICAgICAgIEdFTjZfV0laX0hBU0hJTkdfMTZ4NCk7CiAJ fQogCi0JaWYgKElTX0dFTl9SQU5HRShpOTE1LCA2LCA3KSkKKwlpZiAoSVNfR1JBUEhJQ1NfUkFO R0UoaTkxNSwgNiwgNykpCiAJCS8qCiAJCSAqIFdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgQXN5bmNG bGlwIHBlcmZvcm1hbmNlIG9wdGltaXNhdGlvbnMgaW4KIAkJICogb3JkZXIgdG8gdXNlIE1JX1dB SVRfRk9SX0VWRU5UIHdpdGhpbiB0aGUgQ1MuIEl0IHNob3VsZApAQCAtMTkzNyw3ICsxOTM3LDcg QEAgcmNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3Ry dWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCQkJICAgICBNSV9NT0RFLAogCQkJICAgICBBU1lOQ19G TElQX1BFUkZfRElTQUJMRSk7CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDYpKSB7CisJaWYgKElTX0dS QVBISUNTX1ZFUihpOTE1LCA2KSkgewogCQkvKgogCQkgKiBSZXF1aXJlZCBmb3IgdGhlIGhhcmR3 YXJlIHRvIHByb2dyYW0gc2NhbmxpbmUgdmFsdWVzIGZvcgogCQkgKiB3YWl0aW5nCkBAIC0xOTkx LDE0ICsxOTkxLDE0IEBAIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJCSAgICAgIENNMF9TVENfRVZJ Q1RfRElTQUJMRV9MUkFfU05CKTsKIAl9CiAKLQlpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDQsIDYp KQorCWlmIChJU19HUkFQSElDU19SQU5HRShpOTE1LCA0LCA2KSkKIAkJLyogV2FUaW1lZFNpbmds ZVZlcnRleERpc3BhdGNoOmNsLGJ3LGN0ZyxlbGssaWxrLHNuYiAqLwogCQl3YV9hZGQod2FsLCBN SV9NT0RFLAogCQkgICAgICAgMCwgX01BU0tFRF9CSVRfRU5BQkxFKFZTX1RJTUVSX0RJU1BBVENI KSwKIAkJICAgICAgIC8qIFhYWCBiaXQgZG9lc24ndCBzdGljayBvbiBCcm9hZHdhdGVyICovCiAJ CSAgICAgICBJU19JOTY1RyhpOTE1KSA/IDAgOiBWU19USU1FUl9ESVNQQVRDSCk7CiAKLQlpZiAo SVNfR0VOKGk5MTUsIDQpKQorCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNCkpCiAJCS8qCiAJ CSAqIERpc2FibGUgQ09OU1RBTlRfQlVGRkVSIGJlZm9yZSBpdCBpcyBsb2FkZWQgZnJvbSB0aGUg Y29udGV4dAogCQkgKiBpbWFnZS4gRm9yIGFzIGl0IGlzIGxvYWRlZCwgaXQgaXMgZXhlY3V0ZWQg YW5kIHRoZSBzdG9yZWQKQEAgLTIwMzAsNyArMjAzMCw3IEBAIHhjc19lbmdpbmVfd2FfaW5pdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkK IHN0YXRpYyB2b2lkCiBlbmdpbmVfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIHsKLQlpZiAoSTkxNV9TRUxG VEVTVF9PTkxZKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNCkpCisJaWYgKEk5MTVfU0VMRlRF U1RfT05MWShHUkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA8IDQpKQogCQlyZXR1cm47CiAKIAlp ZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpCkBAIC0yMDQzLDcgKzIwNDMsNyBAQCB2 b2lkIGludGVsX2VuZ2luZV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT53YV9saXN0 OwogCi0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNCkKKwlpZiAoR1JBUEhJQ1NfVkVS KGVuZ2luZS0+aTkxNSkgPCA0KQogCQlyZXR1cm47CiAKIAl3YV9pbml0X3N0YXJ0KHdhbCwgImVu Z2luZSIsIGVuZ2luZS0+bmFtZSk7CkBAIC0yMDg0LDkgKzIwODQsOSBAQCBzdGF0aWMgYm9vbCBt Y3JfcmFuZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBvZmZzZXQpCiAJY29u c3Qgc3RydWN0IG1jcl9yYW5nZSAqbWNyX3JhbmdlczsKIAlpbnQgaTsKIAotCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTIpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikKIAkJbWNyX3Jh bmdlcyA9IG1jcl9yYW5nZXNfZ2VuMTI7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDgp CisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgpCiAJCW1jcl9yYW5nZXMgPSBtY3Jf cmFuZ2VzX2dlbjg7CiAJZWxzZQogCQlyZXR1cm4gZmFsc2U7CkBAIC0yMTE1LDcgKzIxMTUsNyBA QCB3YV9saXN0X3NybShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAl1MzIgc3JtLCAqY3M7CiAK IAlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCBNSV9TUk1fTFJNX0dMT0JBTF9HVFQ7Ci0J aWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkK IAkJc3JtKys7CiAKIAlmb3IgKGkgPSAwLCB3YSA9IHdhbC0+bGlzdDsgaSA8IHdhbC0+Y291bnQ7 IGkrKywgd2ErKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVf Y3MuYwppbmRleCAzNDUzZWI3N2M0OTguLjY0YWJmNWZlYWJmYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGlj IGludCB3cml0ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQog CQlyZXR1cm4gUFRSX0VSUihjcyk7CiAKIAljbWQgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfCBN SV9VU0VfR0dUVDsKLQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpCisJaWYg KEdSQVBISUNTX1ZFUihycS0+ZW5naW5lLT5pOTE1KSA+PSA4KQogCQljbWQrKzsKIAkqY3MrKyA9 IGNtZDsKIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfVElNRVNUQU1QKHJxLT5l bmdpbmUtPm1taW9fYmFzZSkpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBpbnQgcGVyZl9t aV9iYl9zdGFydCh2b2lkICphcmcpCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50IGVy ciA9IDA7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDcpIC8qIGZvciBwZXItZW5naW5l IENTX1RJTUVTVEFNUCAqLworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgNykgLyogZm9y IHBlci1lbmdpbmUgQ1NfVElNRVNUQU1QICovCiAJCXJldHVybiAwOwogCiAJcGVyZl9iZWdpbihn dCk7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGludCBwZXJmX21pX25vb3Aodm9pZCAqYXJn KQogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCWludCBlcnIgPSAwOwogCi0JaWYgKElOVEVM X0dFTihndC0+aTkxNSkgPCA3KSAvKiBmb3IgcGVyLWVuZ2luZSBDU19USU1FU1RBTVAgKi8KKwlp ZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDcpIC8qIGZvciBwZXItZW5naW5lIENTX1RJTUVT VEFNUCAqLwogCQlyZXR1cm4gMDsKIAogCXBlcmZfYmVnaW4oZ3QpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfcG0uYwppbmRleCAyYzg5ODYyMmJkZmIuLjcyY2Nh M2YwZGEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3Bt LmMKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IGxpdmVfZW5naW5lX3RpbWVzdGFtcHMo dm9pZCAqYXJnKQogCSAqIHRoZSBzYW1lIENTIGNsb2NrLgogCSAqLwogCi0JaWYgKElOVEVMX0dF TihndC0+aTkxNSkgPCA4KQorCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOCkKIAkJcmV0 dXJuIDA7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMKaW5kZXggMTA4MWNkMzZhMmJkLi5m YWFmNjVlOWU2ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2V4ZWNsaXN0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNs aXN0cy5jCkBAIC0zMjY5LDcgKzMyNjksNyBAQCBzdGF0aWMgaW50IGxpdmVfcHJlZW1wdF91c2Vy KHZvaWQgKmFyZykKIAkJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZW5naW5lKSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChJU19HRU4oZ3QtPmk5MTUsIDgpICYmIGVuZ2luZS0+Y2xh c3MgIT0gUkVOREVSX0NMQVNTKQorCQlpZiAoSVNfR1JBUEhJQ1NfVkVSKGd0LT5pOTE1LCA4KSAm JiBlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKIAkJCWNvbnRpbnVlOyAvKiB3ZSBuZWVk IHBlci1jb250ZXh0IEdQUiAqLwogCiAJCWlmIChpZ3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBndC0+ aTkxNSwgX19mdW5jX18sIGVuZ2luZS0+bmFtZSkpIHsKQEAgLTQyOTMsNyArNDI5Myw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX3ByZXNlcnZlZCh2b2lkICphcmcpCiAJCXJldHVybiAwOwog CiAJLyogQXMgd2UgdXNlIENTX0dQUiB3ZSBjYW5ub3QgcnVuIGJlZm9yZSB0aGV5IGV4aXN0ZWQg b24gYWxsIGVuZ2luZXMuICovCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA5KQorCWlmIChH UkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOSkKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKGNsYXNzID0g MDsgY2xhc3MgPD0gTUFYX0VOR0lORV9DTEFTUzsgY2xhc3MrKykgewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMKaW5kZXggYzA4NDViZjcyZGQzLi5kZTJlNWE1ZWY4YTUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYwpAQCAtNzQsMTAgKzc0 LDEwIEBAIHN0YXRpYyBpbnQgbGl2ZV9ndF9jbG9ja3Modm9pZCAqYXJnKQogCQlyZXR1cm4gMDsK IAl9CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDQpIC8qIEFueSBDU19USU1FU1RBTVA/ ICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA0KSAvKiBBbnkgQ1NfVElNRVNUQU1Q PyAqLwogCQlyZXR1cm4gMDsKIAotCWlmIChJU19HRU4oZ3QtPmk5MTUsIDUpKQorCWlmIChJU19H UkFQSElDU19WRVIoZ3QtPmk5MTUsIDUpKQogCQkvKgogCQkgKiBYWFggQ1NfVElNRVNUQU1QIGxv dyBkd29yZCBpcyBkeXNmdW5jdGlvbmFsPwogCQkgKgpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMg aW50IGxpdmVfZ3RfY2xvY2tzKHZvaWQgKmFyZykKIAkJICovCiAJCXJldHVybiAwOwogCi0JaWYg KElTX0dFTihndC0+aTkxNSwgNCkpCisJaWYgKElTX0dSQVBISUNTX1ZFUihndC0+aTkxNSwgNCkp CiAJCS8qCiAJCSAqIFhYWCBDU19USU1FU1RBTVAgYXBwZWFycyBnaWJiZXJpc2gKIAkJICoKQEAg LTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IGxpdmVfZ3RfY2xvY2tzKHZvaWQgKmFyZykKIAkJ dTY0IHRpbWU7CiAJCXU2NCBkdDsKIAotCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCA3 ICYmIGVuZ2luZS0+aWQgIT0gUkNTMCkKKwkJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUp IDwgNyAmJiBlbmdpbmUtPmlkICE9IFJDUzApCiAJCQljb250aW51ZTsKIAogCQltZWFzdXJlX2Ns b2NrcyhlbmdpbmUsICZjeWNsZXMsICZkdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2hhbmdjaGVjay5jCmluZGV4IDc0Njk4NTk3MWMzYS4uZTRjODZlMmQ3MmVjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwpAQCAtMTgwLDcg KzE4MCw3IEBAIGhhbmdfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJZ290byBjYW5jZWxfcnE7CiAKIAliYXRjaCA9IGgtPmJh dGNoOwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUpID49IDgpIHsKKwlpZiAoR1JBUEhJQ1NfVkVS KGd0LT5pOTE1KSA+PSA4KSB7CiAJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQ7 CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7CiAJCSpi YXRjaCsrID0gdXBwZXJfMzJfYml0cyhod3NfYWRkcmVzcyhod3MsIHJxKSk7CkBAIC0xOTQsNyAr MTk0LDcgQEAgaGFuZ19jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8 IDEgPDwgOCB8IDE7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQp OwogCQkqYmF0Y2grKyA9IHVwcGVyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KTsKLQl9IGVsc2Ug aWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVS KGd0LT5pOTE1KSA+PSA2KSB7CiAJCSpiYXRjaCsrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQ7 CiAJCSpiYXRjaCsrID0gMDsKIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRyZXNz KGh3cywgcnEpKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVj dCBoYW5nICpoLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCSpiYXRjaCsrID0g TUlfTk9PUDsKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDg7CiAJ CSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOwotCX0gZWxzZSBpZiAo SU5URUxfR0VOKGd0LT5pOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoZ3Qt Pmk5MTUpID49IDQpIHsKIAkJKmJhdGNoKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1J X1VTRV9HR1RUOwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyho d3NfYWRkcmVzcyhod3MsIHJxKSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgaGFuZ19jcmVhdGVfcmVx dWVzdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0K IAogCWZsYWdzID0gMDsKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8PSA1KQorCWlmIChHUkFQ SElDU19WRVIoZ3QtPmk5MTUpIDw9IDUpCiAJCWZsYWdzIHw9IEk5MTVfRElTUEFUQ0hfU0VDVVJF OwogCiAJZXJyID0gcnEtPmVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgdm1hLT5ub2RlLnN0YXJ0 LCBQQUdFX1NJWkUsIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2xsYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbGxjLmMK aW5kZXggOTQwMDZmMTE3YmJkLi40NTliNzc1ZjE2M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xsYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2xsYy5jCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl92ZXJpZnlf cmluZ19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKIAkJaWYgKGZvdW5kICE9IGlhX2ZyZXEp IHsKIAkJCXByX2VycigiTWluIGZyZXEgdGFibGUoJWQvWyVkLCAlZF0pOiVkTUh6IGRpZCBub3Qg bWF0Y2ggZXhwZWN0ZWQgQ1BVIGZyZXEsIGZvdW5kICVkLCBleHBlY3RlZCAlZFxuIiwKIAkJCSAg ICAgICBncHVfZnJlcSwgY29uc3RzLm1pbl9ncHVfZnJlcSwgY29uc3RzLm1heF9ncHVfZnJlcSwK LQkJCSAgICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVxICogKElOVEVMX0dFTihpOTE1 KSA+PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKKwkJCSAgICAgICBpbnRlbF9ncHVfZnJl cShycHMsIGdwdV9mcmVxICogKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ID8gR0VOOV9GUkVRX1ND QUxFUiA6IDEpKSwKIAkJCSAgICAgICBmb3VuZCwgaWFfZnJlcSk7CiAJCQllcnIgPSAtRUlOVkFM OwogCQkJYnJlYWs7CkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgZ2VuNl92ZXJpZnlfcmlu Z19mcmVxKHN0cnVjdCBpbnRlbF9sbGMgKmxsYykKIAkJaWYgKGZvdW5kICE9IHJpbmdfZnJlcSkg ewogCQkJcHJfZXJyKCJNaW4gZnJlcSB0YWJsZSglZC9bJWQsICVkXSk6JWRNSHogZGlkIG5vdCBt YXRjaCBleHBlY3RlZCByaW5nIGZyZXEsIGZvdW5kICVkLCBleHBlY3RlZCAlZFxuIiwKIAkJCSAg ICAgICBncHVfZnJlcSwgY29uc3RzLm1pbl9ncHVfZnJlcSwgY29uc3RzLm1heF9ncHVfZnJlcSwK LQkJCSAgICAgICBpbnRlbF9ncHVfZnJlcShycHMsIGdwdV9mcmVxICogKElOVEVMX0dFTihpOTE1 KSA+PSA5ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpKSwKKwkJCSAgICAgICBpbnRlbF9ncHVfZnJl cShycHMsIGdwdV9mcmVxICogKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ID8gR0VOOV9GUkVRX1ND QUxFUiA6IDEpKSwKIAkJCSAgICAgICBmb3VuZCwgcmluZ19mcmVxKTsKIAkJCWVyciA9IC1FSU5W QUw7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKaW5kZXgg ODVlN2RmNmE1MTIzLi41YzRjZjI5ZGVhYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2xyYy5jCkBAIC01ODQsNyArNTg0LDcgQEAgc3RhdGljIGludCBfX2xpdmVfbHJjX2dwcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJaW50IGVycjsKIAlpbnQgbjsKIAotCWlm IChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDkgJiYgZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJf Q0xBU1MpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgOSAmJiBlbmdpbmUtPmNs YXNzICE9IFJFTkRFUl9DTEFTUykKIAkJcmV0dXJuIDA7IC8qIEdQUiBvbmx5IG9uIHJjczAgZm9y IGdlbjggKi8KIAogCWVyciA9IGdwcl9tYWtlX2RpcnR5KGVuZ2luZS0+a2VybmVsX2NvbnRleHQp OwpAQCAtMTM4NywxMCArMTM4NywxMCBAQCBzdGF0aWMgaW50IF9fbHJjX2lzb2xhdGlvbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBwb2lzb24pCiAKIHN0YXRpYyBib29sIHNr aXBfaXNvbGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlp ZiAoZW5naW5lLT5jbGFzcyA9PSBDT1BZX0VOR0lORV9DTEFTUyAmJiBJTlRFTF9HRU4oZW5naW5l LT5pOTE1KSA9PSA5KQorCWlmIChlbmdpbmUtPmNsYXNzID09IENPUFlfRU5HSU5FX0NMQVNTICYm IElTX0dSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUsIDkpKQogCQlyZXR1cm4gdHJ1ZTsKIAotCWlm IChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUyAmJiBJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA9PSAxMSkKKwlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MgJiYgSVNfR1JBUEhJ Q1NfVkVSKGVuZ2luZS0+aTkxNSwgMTEpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxz ZTsKQEAgLTE1NDksNyArMTU0OSw3IEBAIHN0YXRpYyBpbnQgX19saXZlX2xyY19pbmRpcmVjdF9j dHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCS8qIFdlIHVzZSB0aGUgYWxy ZWFkeSByZXNlcnZlZCBleHRyYSBwYWdlIGluIGNvbnRleHQgc3RhdGUgKi8KIAlpZiAoIWEtPndh X2JiX3BhZ2UpIHsKIAkJR0VNX0JVR19PTihiLT53YV9iYl9wYWdlKTsKLQkJR0VNX0JVR19PTihJ TlRFTF9HRU4oZW5naW5lLT5pOTE1KSA9PSAxMik7CisJCUdFTV9CVUdfT04oSVNfR1JBUEhJQ1Nf VkVSKGVuZ2luZS0+aTkxNSwgMTIpKTsKIAkJZ290byB1bnBpbl9iOwogCX0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jCmluZGV4IGU1NWE4ODdkMTFlMi4uYjliYjBlNmU5 N2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9tb2NzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbW9jcy5jCkBAIC0xODMsNyAr MTgzLDcgQEAgc3RhdGljIGJvb2wgbWNyX3JhbmdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1MzIgb2Zmc2V0KQogCSAqIHdoaWNoIG9ubHkgY29udHJvbHMgQ1BVIGluaXRpYXRlZCBN TUlPLiBSb3V0aW5nIGRvZXMgbm90CiAJICogd29yayBmb3IgQ1MgYWNjZXNzIHNvIHdlIGNhbm5v dCB2ZXJpZnkgdGhlbSBvbiB0aGlzIHBhdGguCiAJICovCi0JcmV0dXJuIElOVEVMX0dFTihpOTE1 KSA+PSA4ICYmIG9mZnNldCA+PSAweGIwMDAgJiYgb2Zmc2V0IDw9IDB4YjRmZjsKKwlyZXR1cm4g R1JBUEhJQ1NfVkVSKGk5MTUpID49IDggJiYgb2Zmc2V0ID49IDB4YjAwMCAmJiBvZmZzZXQgPD0g MHhiNGZmOwogfQogCiBzdGF0aWMgaW50IGNoZWNrX2wzY2NfdGFibGUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfcmM2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yYzYuYwppbmRl eCBmMDk3ZTQyMGFjNDUuLjRiYmI2NTE5NGM5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfcmM2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfcmM2LmMKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgY29uc3QgdTMyICpfX2xpdmVf cmM2X2N0eChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJfQogCiAJY21kID0gTUlfU1RPUkVf UkVHSVNURVJfTUVNIHwgTUlfVVNFX0dHVFQ7Ci0JaWYgKElOVEVMX0dFTihycS0+ZW5naW5lLT5p OTE1KSA+PSA4KQorCWlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPj0gOCkKIAkJ Y21kKys7CiAKIAkqY3MrKyA9IGNtZDsKQEAgLTE4NSw3ICsxODUsNyBAQCBpbnQgbGl2ZV9yYzZf Y3R4X3dhKHZvaWQgKmFyZykKIAlpbnQgZXJyID0gMDsKIAogCS8qIEEgcmVhZCBvZiBDVFhfSU5G TyB1cHNldHMgcmM2LiBQb2tlIHRoZSBiZWFyISAqLwotCWlmIChJTlRFTF9HRU4oZ3QtPmk5MTUp IDwgOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgpCiAJCXJldHVybiAwOwogCiAJ ZW5naW5lcyA9IHJhbmRvbWlzZWRfZW5naW5lcyhndCwgJnBybmcsICZjb3VudCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3Jpbmdfc3VibWlzc2lvbi5jCmluZGV4 IDk5NjA5MjcxYzNhNy4uNjc2YTc4NDkyYWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9yaW5nX3N1Ym1pc3Npb24uYwpAQCAtNDEsMTAgKzQxLDEwIEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmNyZWF0ZV93YWxseShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiAJCXJldHVybiBFUlJfQ0FTVChjcyk7CiAJfQogCi0JaWYgKElOVEVMX0dFTihl bmdpbmUtPmk5MTUpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPj0g NikgewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40OwogCQkqY3MrKyA9IDA7Ci0J fSBlbHNlIGlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA0KSB7CiAJCSpjcysrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkJKmNzKysgPSAwOwogCX0gZWxzZSB7CkBAIC0y NjYsNyArMjY2LDcgQEAgc3RhdGljIGludCBsaXZlX2N0eF9zd2l0Y2hfd2Eodm9pZCAqYXJnKQog CQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKIAkJCWNvbnRpbnVl OwogCi0JCWlmIChJU19HRU5fUkFOR0UoZ3QtPmk5MTUsIDQsIDUpKQorCQlpZiAoSVNfR1JBUEhJ Q1NfUkFOR0UoZ3QtPmk5MTUsIDQsIDUpKQogCQkJY29udGludWU7IC8qIE1JX1NUT1JFX0RXT1JE IGlzIHByaXZpbGVnZWQhICovCiAKIAkJc2F2ZWRfd2EgPSBmZXRjaF9hbmRfemVybygmZW5naW5l LT53YV9jdHgudm1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X3Jwcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfcnBzLmMKaW5kZXgg OTY3NjQxZmVlNDJhLi5mMzZjYjg4ZmY3Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X3Jwcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X3Jwcy5jCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIHZvaWQgc2hvd19wc3RhdGVfbGlt aXRzKHN0cnVjdCBpbnRlbF9ycHMgKnJwcykKIAkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KEJYVF9S UF9TVEFURV9DQVApLAogCQkJaW50ZWxfdW5jb3JlX3JlYWQocnBzX3RvX3VuY29yZShycHMpLAog CQkJCQkgIEJYVF9SUF9TVEFURV9DQVApKTsKLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA5KSkg eworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDkpKSB7CiAJCXByX2luZm8oIlBf U1RBVEVfTElNSVRTWyV4XTogMHglMDh4XG4iLAogCQkJaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VO OV9SUF9TVEFURV9MSU1JVFMpLAogCQkJaW50ZWxfdW5jb3JlX3JlYWQocnBzX3RvX3VuY29yZShy cHMpLApAQCAtMjIyLDcgKzIyMiw3IEBAIGludCBsaXZlX3Jwc19jbG9ja19pbnRlcnZhbCh2b2lk ICphcmcpCiAJc3RydWN0IGlndF9zcGlubmVyIHNwaW47CiAJaW50IGVyciA9IDA7CiAKLQlpZiAo IWludGVsX3Jwc19pc19lbmFibGVkKHJwcykgfHwgSU5URUxfR0VOKGd0LT5pOTE1KSA8IDYpCisJ aWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8IEdSQVBISUNTX1ZFUihndC0+aTkxNSkg PCA2KQogCQlyZXR1cm4gMDsKIAogCWlmIChpZ3Rfc3Bpbm5lcl9pbml0KCZzcGluLCBndCkpCkBA IC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZvaWQgc2hvd19wY3VfY29uZmlnKHN0cnVjdCBpbnRl bF9ycHMgKnJwcykKIAogCW1pbl9ncHVfZnJlcSA9IHJwcy0+bWluX2ZyZXE7CiAJbWF4X2dwdV9m cmVxID0gcnBzLT5tYXhfZnJlcTsKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDkpIHsKKwlpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID49IDkpIHsKIAkJLyogQ29udmVydCBHVCBmcmVxdWVuY3kgdG8g NTAgSFogdW5pdHMgKi8KIAkJbWluX2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7CiAJCW1h eF9ncHVfZnJlcSAvPSBHRU45X0ZSRVFfU0NBTEVSOwpAQCAtNjE0LDcgKzYxNCw3IEBAIGludCBs aXZlX3Jwc19mcmVxdWVuY3lfY3Modm9pZCAqYXJnKQogCWlmICghaW50ZWxfcnBzX2lzX2VuYWJs ZWQocnBzKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA8IDgpIC8q IGZvciBDUyBzaW1wbGljaXR5ICovCisJaWYgKEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA4KSAv KiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLwogCQlyZXR1cm4gMDsKIAogCWlmIChDUFVfTEFURU5DWSA+ PSAwKQpAQCAtNzU1LDcgKzc1NSw3IEBAIGludCBsaXZlX3Jwc19mcmVxdWVuY3lfc3JtKHZvaWQg KmFyZykKIAlpZiAoIWludGVsX3Jwc19pc19lbmFibGVkKHJwcykpCiAJCXJldHVybiAwOwogCi0J aWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KSAvKiBmb3IgQ1Mgc2ltcGxpY2l0eSAqLworCWlm IChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgOCkgLyogZm9yIENTIHNpbXBsaWNpdHkgKi8KIAkJ cmV0dXJuIDA7CiAKIAlpZiAoQ1BVX0xBVEVOQ1kgPj0gMCkKQEAgLTEwMzEsNyArMTAzMSw3IEBA IGludCBsaXZlX3Jwc19pbnRlcnJ1cHQodm9pZCAqYXJnKQogCSAqIEZpcnN0LCBsZXQncyBjaGVj ayB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcmVjZWl2aW5nIGludGVycnVwdHMuCiAJICovCiAKLQlp ZiAoIWludGVsX3Jwc19oYXNfaW50ZXJydXB0cyhycHMpIHx8IElOVEVMX0dFTihndC0+aTkxNSkg PCA2KQorCWlmICghaW50ZWxfcnBzX2hhc19pbnRlcnJ1cHRzKHJwcykgfHwgR1JBUEhJQ1NfVkVS KGd0LT5pOTE1KSA8IDYpCiAJCXJldHVybiAwOwogCiAJaW50ZWxfZ3RfcG1fZ2V0KGd0KTsKQEAg LTExMzYsNyArMTEzNiw3IEBAIGludCBsaXZlX3Jwc19wb3dlcih2b2lkICphcmcpCiAJICogdGhh dCB0aGVvcnkuCiAJICovCiAKLQlpZiAoIWludGVsX3Jwc19pc19lbmFibGVkKHJwcykgfHwgSU5U RUxfR0VOKGd0LT5pOTE1KSA8IDYpCisJaWYgKCFpbnRlbF9ycHNfaXNfZW5hYmxlZChycHMpIHx8 IEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPCA2KQogCQlyZXR1cm4gMDsKIAogCWlmICghbGlicmFw bF9lbmVyZ3lfdUooKSkKQEAgLTEyNDAsNyArMTI0MCw3IEBAIGludCBsaXZlX3Jwc19keW5hbWlj KHZvaWQgKmFyZykKIAkgKiBtb3ZpbmcgcGFydHMgaW50byBkeW5hbWljIHJlY2xvY2tpbmcgYmFz ZWQgb24gbG9hZC4KIAkgKi8KIAotCWlmICghaW50ZWxfcnBzX2lzX2VuYWJsZWQocnBzKSB8fCBJ TlRFTF9HRU4oZ3QtPmk5MTUpIDwgNikKKwlpZiAoIWludGVsX3Jwc19pc19lbmFibGVkKHJwcykg fHwgR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDYpCiAJCXJldHVybiAwOwogCiAJaWYgKGlndF9z cGlubmVyX2luaXQoJnNwaW4sIGd0KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF90aW1lbGluZS5jCmluZGV4IDlhZGJkOWQxNDdiZS4uNjRkYTBjOTFkZWMxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKQEAgLTQ1NywxMiArNDU3LDEy IEBAIHN0YXRpYyBpbnQgZW1pdF9nZ3R0X3N0b3JlX2R3KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LCB1MzIgYWRkciwgdTMyIHZhbHVlKQogCWlmIChJU19FUlIoY3MpKQogCQlyZXR1cm4gUFRSX0VS Uihjcyk7CiAKLQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpIHsKKwlpZiAo R1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpIHsKIAkJKmNzKysgPSBNSV9TVE9S RV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwogCQkqY3MrKyA9IGFkZHI7CiAJCSpjcysr ID0gMDsKIAkJKmNzKysgPSB2YWx1ZTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihycS0+ZW5naW5l LT5pOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkx NSkgPj0gNCkgewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dH VFQ7CiAJCSpjcysrID0gMDsKIAkJKmNzKysgPSBhZGRyOwpAQCAtOTkyLDcgKzk5Miw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCSAqIGV2ZW4gYWNyb3NzIG11bHRp cGxlIHdyYXBzLgogCSAqLwogCi0JaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPCA4KSAvKiBDUyBj b252ZW5pZW5jZSBbU1JNL0xSTV0gKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDgp IC8qIENTIGNvbnZlbmllbmNlIFtTUk0vTFJNXSAqLwogCQlyZXR1cm4gMDsKIAogCXRsID0gaW50 ZWxfdGltZWxpbmVfY3JlYXRlKGd0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF93b3JrYXJvdW5kcy5jCmluZGV4IDY0OTM3ZWMzZjJkYy4uYzMwNzU0ZGFmNGIxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKQEAgLTE0 NSw3ICsxNDUsNyBAQCByZWFkX25vbnByaXZzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAkJ Z290byBlcnJfcmVxOwogCiAJc3JtID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwgTUlfU1JNX0xS TV9HTE9CQUxfR1RUOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSA4KQorCWlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA4KQogCQlzcm0rKzsKIAogCWNzID0gaW50ZWxf cmluZ19iZWdpbihycSwgNCAqIFJJTkdfTUFYX05PTlBSSVZfU0xPVFMpOwpAQCAtNTQ2LDcgKzU0 Niw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfZGlydHlfd2hpdGVsaXN0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKIAogCQlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU07CiAJCWxybSA9IE1JX0xP QURfUkVHSVNURVJfTUVNOwotCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOCkKKwkJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDgpCiAJCQlscm0rKywgc3JtKys7CiAK IAkJcHJfZGVidWcoIiVzOiBXcml0aW5nIGdhcmJhZ2UgdG8gJXhcbiIsCkBAIC03NDksNyArNzQ5 LDcgQEAgc3RhdGljIGludCBsaXZlX2RpcnR5X3doaXRlbGlzdCh2b2lkICphcmcpCiAKIAkvKiBD YW4gdGhlIHVzZXIgd3JpdGUgdG8gdGhlIHdoaXRlbGlzdGVkIHJlZ2lzdGVycz8gKi8KIAotCWlm IChJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgNykgLyogbWluaW11bSByZXF1aXJlbWVudCBmb3IgTFJJ LCBTUk0sIExSTSAqLworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpIDwgNykgLyogbWluaW11 bSByZXF1aXJlbWVudCBmb3IgTFJJLCBTUk0sIExSTSAqLwogCQlyZXR1cm4gMDsKIAogCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkgewpAQCAtODI5LDcgKzgyOSw3IEBAIHN0YXRpYyBp bnQgcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAog CQlnb3RvIGVycl9yZXE7CiAKIAlzcm0gPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU07Ci0JaWYgKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5 MTUpID49IDgpCiAJCXNybSsrOwogCiAJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogZW5n aW5lLT53aGl0ZWxpc3QuY291bnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMu YwppbmRleCA3ODMwNWIyZWM4OWQuLmYyZDBhN2NlNDNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmMKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdF9z ZW5kX3JlZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMg ZndfZG9tYWlucyA9IDA7CiAJdW5zaWduZWQgaW50IGk7CiAKLQlpZiAoSU5URUxfR0VOKGd0LT5p OTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIoZ3QtPmk5MTUpID49IDExKSB7CiAJCWd1 Yy0+c2VuZF9yZWdzLmJhc2UgPQogCQkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjExX1NPRlRf U0NSQVRDSCgwKSk7CiAJCWd1Yy0+c2VuZF9yZWdzLmNvdW50ID0gR0VOMTFfU09GVF9TQ1JBVENI X0NPVU5UOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXRfZWFybHkoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogCiAJbXV0ZXhfaW5pdCgmZ3VjLT5zZW5kX211dGV4KTsKIAlz cGluX2xvY2tfaW5pdCgmZ3VjLT5pcnFfbG9jayk7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAx MSkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTEpIHsKIAkJZ3VjLT5ub3RpZnlfcmVn ID0gR0VOMTFfR1VDX0hPU1RfSU5URVJSVVBUOwogCQlndWMtPmludGVycnVwdHMucmVzZXQgPSBn ZW4xMV9yZXNldF9ndWNfaW50ZXJydXB0czsKIAkJZ3VjLT5pbnRlcnJ1cHRzLmVuYWJsZSA9IGdl bjExX2VuYWJsZV9ndWNfaW50ZXJydXB0czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19hZHMuYwppbmRleCAxNzUyNjcxNzM2OGMuLmIzMmZhZmJhMmE5MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwpAQCAtMTYyLDcgKzE2Miw3IEBA IHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlibG9i LT5zeXN0ZW1faW5mby5nZW5lcmljX2d0X3N5c2luZm9bR1VDX0dFTkVSSUNfR1RfU1lTSU5GT19W REJPWF9TRkNfU1VQUE9SVF9NQVNLXSA9CiAJCWd0LT5pbmZvLnZkYm94X3NmY19hY2Nlc3M7CiAK LQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyICYmICFJU19ER0ZYKGk5MTUpKSB7CisJaWYgKEdS QVBISUNTX1ZFUihpOTE1KSA+PSAxMiAmJiAhSVNfREdGWChpOTE1KSkgewogCQl1MzIgZGlzdGRi cmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwKIAkJCQkJCSAgR0VOMTJfRElTVF9E QlNfUE9QVUxBVEVEKTsKIAkJYmxvYi0+c3lzdGVtX2luZm8uZ2VuZXJpY19ndF9zeXNpbmZvW0dV Q19HRU5FUklDX0dUX1NZU0lORk9fRE9PUkJFTExfQ09VTlRfUEVSX1NRSURJXSA9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCmluZGV4IDIyNzBkNmIzYjI3Mi4uNDMz ODJlOGZhMTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfZncuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwpA QCAtMzAsNyArMzAsNyBAQCBzdGF0aWMgdm9pZCBndWNfcHJlcGFyZV94ZmVyKHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSkKIAllbHNlCiAJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdF TjlfR1RfUE1fQ09ORklHLCBHVF9ET09SQkVMTF9FTkFCTEUpOwogCi0JaWYgKElTX0dFTih1bmNv cmUtPmk5MTUsIDkpKSB7CisJaWYgKElTX0dSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUsIDkpKSB7 CiAJCS8qIERPUCBDbG9jayBHYXRpbmcgRW5hYmxlIGZvciBHdUMgY2xvY2tzICovCiAJCWludGVs X3VuY29yZV9ybXcodW5jb3JlLCBHRU43X01JU0NDUENUTCwKIAkJCQkgMCwgR0VOOF9ET1BfQ0xP Q0tfR0FURV9HVUNfRU5BQkxFKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDkyNjg4YTliNjcxNy4uMTY5OWIzMDJlYThhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKQEAgLTQyOSw3ICs0MjksNyBAQCBzdGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19jYXB0dXJl KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJdTMyIGlycXMgPSBHVF9DT05URVhUX1NXSVRDSF9JTlRF UlJVUFQ7CiAJdTMyIGRtYXNrID0gaXJxcyA8PCAxNiB8IGlycXM7CiAKLQlHRU1fQlVHX09OKElO VEVMX0dFTihndC0+aTkxNSkgPCAxMSk7CisJR0VNX0JVR19PTihHUkFQSElDU19WRVIoZ3QtPmk5 MTUpIDwgMTEpOwogCiAJLyogRG9uJ3QgaGFuZGxlIHRoZSBjdHggc3dpdGNoIGludGVycnVwdCBp biBHdUMgc3VibWlzc2lvbiBtb2RlICovCiAJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIEdFTjEx X1JFTkRFUl9DT1BZX0lOVFJfRU5BQkxFLCBkbWFzaywgMCk7CkBAIC00NDIsNyArNDQyLDcgQEAg c3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQog CXUzMiBpcnFzID0gR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUOwogCXUzMiBkbWFzayA9IGly cXMgPDwgMTYgfCBpcnFzOwogCi0JR0VNX0JVR19PTihJTlRFTF9HRU4oZ3QtPmk5MTUpIDwgMTEp OworCUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGd0LT5pOTE1KSA8IDExKTsKIAogCS8qIEhhbmRs ZSBjdHggc3dpdGNoIGludGVycnVwdHMgYWdhaW4gKi8KIAlpbnRlbF91bmNvcmVfcm13KHVuY29y ZSwgR0VOMTFfUkVOREVSX0NPUFlfSU5UUl9FTkFCTEUsIDAsIGRtYXNrKTsKQEAgLTY2MSw3ICs2 NjEsNyBAQCBzdGF0aWMgdm9pZCBndWNfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjhfZW1pdF9mbHVzaF94Y3M7 CiAJZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9pbml0X2JyZWFkY3J1 bWI7CiAJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9maW5pX2JyZWFk Y3J1bWJfeGNzOwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikgeworCWlmIChH UkFQSElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSAxMikgewogCQllbmdpbmUtPmVtaXRfZmluaV9i cmVhZGNydW1iID0gZ2VuMTJfZW1pdF9maW5pX2JyZWFkY3J1bWJfeGNzOwogCQllbmdpbmUtPmVt aXRfZmx1c2ggPSBnZW4xMl9lbWl0X2ZsdXNoX3hjczsKIAl9CkBAIC02NzAsNyArNjcwLDcgQEAg c3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAogc3RhdGljIHZvaWQgcmNzX3N1Ym1pc3Npb25fb3ZlcnJpZGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN3aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkp IHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpKSB7CiAJY2FzZSAxMjoKIAkJ ZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuMTJfZW1pdF9mbHVzaF9yY3M7CiAJCWVuZ2luZS0+ZW1p dF9maW5pX2JyZWFkY3J1bWIgPSBnZW4xMl9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3M7CkBAIC02 OTksNyArNjk5LDcgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX3NldHVwKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBUaGUgc2V0dXAgcmVsaWVzIG9uIHNldmVyYWwgYXNz dW1wdGlvbnMgKGUuZy4gaXJxcyBhbHdheXMgZW5hYmxlZCkKIAkgKiB0aGF0IGFyZSBvbmx5IHZh bGlkIG9uIGdlbjExKwogCSAqLwotCUdFTV9CVUdfT04oSU5URUxfR0VOKGk5MTUpIDwgMTEpOwor CUdFTV9CVUdfT04oR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpOwogCiAJdGFza2xldF9zZXR1cCgm ZW5naW5lLT5leGVjbGlzdHMudGFza2xldCwgZ3VjX3N1Ym1pc3Npb25fdGFza2xldCk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMKaW5kZXggMjEyNmRkODFhYzM4Li5hMGEz ZWQ0MmQ2OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1 Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCkBAIC00Myw3 ICs0Myw3IEBAIHZvaWQgaW50ZWxfaHVjX2luaXRfZWFybHkoc3RydWN0IGludGVsX2h1YyAqaHVj KQogCiAJaW50ZWxfdWNfZndfaW5pdF9lYXJseSgmaHVjLT5mdywgSU5URUxfVUNfRldfVFlQRV9I VUMpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCWlmIChHUkFQSElDU19WRVIo aTkxNSkgPj0gMTEpIHsKIAkJaHVjLT5zdGF0dXMucmVnID0gR0VOMTFfSFVDX0tFUk5FTF9MT0FE X0lORk87CiAJCWh1Yy0+c3RhdHVzLm1hc2sgPSBIVUNfTE9BRF9TVUNDRVNTRlVMOwogCQlodWMt PnN0YXR1cy52YWx1ZSA9IEhVQ19MT0FEX1NVQ0NFU1NGVUw7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfdWMuYwppbmRleCA2YWJiOGYyZGMzM2QuLjZlNDIxMGE1OTQ2NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCkBAIC0yMyw3ICsyMyw3IEBAIHN0YXRpYyB2b2lk IHVjX2V4cGFuZF9kZWZhdWx0X29wdGlvbnMoc3RydWN0IGludGVsX3VjICp1YykKIAkJcmV0dXJu OwogCiAJLyogRG9uJ3QgZW5hYmxlIEd1Qy9IdUMgb24gcHJlLUdlbjEyICovCi0JaWYgKElOVEVM X0dFTihpOTE1KSA8IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDEyKSB7CiAJCWk5 MTUtPnBhcmFtcy5lbmFibGVfZ3VjID0gMDsKIAkJcmV0dXJuOwogCX0KQEAgLTQ2Nyw3ICs0Njcs NyBAQCBzdGF0aWMgaW50IF9fdWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogCiAJLyog V2FFbmFibGV1S2VybmVsSGVhZGVyVmFsaWRGaXg6c2tsICovCiAJLyogV2FFbmFibGVHdUNCb290 SGFzaENoZWNrTm90U2V0OnNrbCxieHQsa2JsICovCi0JaWYgKElTX0dFTihpOTE1LCA5KSkKKwlp ZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDkpKQogCQlhdHRlbXB0cyA9IDM7CiAJZWxzZQogCQlh dHRlbXB0cyA9IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3Bh cnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwppbmRleCBmZWYx ZTg1N2NlZmMuLjU5NWFmYzBmOTNiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2NtZF9wYXJzZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNl ci5jCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgaW50IGNtZF9yZWdfaGFuZGxlcihzdHJ1 Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMsCiAJICogdXBkYXRlIHJlZyB2YWx1ZXMgaW4gaXQgaW50 byB2cmVncywgc28gTFJJcyBpbiB3b3JrbG9hZCB3aXRoCiAJICogaW5oaWJpdCBjb250ZXh0IHdp bGwgcmVzdG9yZSB3aXRoIGNvcnJlY3QgdmFsdWVzCiAJICovCi0JaWYgKElTX0dFTihzLT5lbmdp bmUtPmk5MTUsIDkpICYmCisJaWYgKElTX0dSQVBISUNTX1ZFUihzLT5lbmdpbmUtPmk5MTUsIDkp ICYmCiAJICAgIGludGVsX2d2dF9tbWlvX2lzX3NyX2luX2N0eChndnQsIG9mZnNldCkgJiYKIAkg ICAgIXN0cm5jbXAoY21kLCAibHJpIiwgMykpIHsKIAkJaW50ZWxfZ3Z0X2h5cGVydmlzb3JfcmVh ZF9ncGEocy0+dmdwdSwKQEAgLTEzODgsNyArMTM4OCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9jaGVj a19taV9kaXNwbGF5X2ZsaXAoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzLAogCWlmICghaW5m by0+YXN5bmNfZmxpcCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoSU5URUxfR0VOKHMtPmVuZ2luZS0+ aTkxNSkgPj0gOSkgeworCWlmIChHUkFQSElDU19WRVIocy0+ZW5naW5lLT5pOTE1KSA+PSA5KSB7 CiAJCXN0cmlkZSA9IHZncHVfdnJlZ190KHMtPnZncHUsIGluZm8tPnN0cmlkZV9yZWcpICYgR0VO TUFTSyg5LCAwKTsKIAkJdGlsZSA9ICh2Z3B1X3ZyZWdfdChzLT52Z3B1LCBpbmZvLT5jdHJsX3Jl ZykgJgogCQkJCUdFTk1BU0soMTIsIDEwKSkgPj4gMTA7CkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBz dGF0aWMgaW50IGdlbjhfdXBkYXRlX3BsYW5lX21taW9fZnJvbV9taV9kaXNwbGF5X2ZsaXAoCiAK IAlzZXRfbWFza19iaXRzKCZ2Z3B1X3ZyZWdfdCh2Z3B1LCBpbmZvLT5zdXJmX3JlZyksIEdFTk1B U0soMzEsIDEyKSwKIAkJICAgICAgaW5mby0+c3VyZl92YWwgPDwgMTIpOwotCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSA5KSB7 CiAJCXNldF9tYXNrX2JpdHMoJnZncHVfdnJlZ190KHZncHUsIGluZm8tPnN0cmlkZV9yZWcpLCBH RU5NQVNLKDksIDApLAogCQkJICAgICAgaW5mby0+c3RyaWRlX3ZhbCk7CiAJCXNldF9tYXNrX2Jp dHMoJnZncHVfdnJlZ190KHZncHUsIGluZm8tPmN0cmxfcmVnKSwgR0VOTUFTSygxMiwgMTApLApA QCAtMTQ0NCw3ICsxNDQ0LDcgQEAgc3RhdGljIGludCBkZWNvZGVfbWlfZGlzcGxheV9mbGlwKHN0 cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcywKIHsKIAlpZiAoSVNfQlJPQURXRUxMKHMtPmVuZ2lu ZS0+aTkxNSkpCiAJCXJldHVybiBnZW44X2RlY29kZV9taV9kaXNwbGF5X2ZsaXAocywgaW5mbyk7 Ci0JaWYgKElOVEVMX0dFTihzLT5lbmdpbmUtPmk5MTUpID49IDkpCisJaWYgKEdSQVBISUNTX1ZF UihzLT5lbmdpbmUtPmk5MTUpID49IDkpCiAJCXJldHVybiBza2xfZGVjb2RlX21pX2Rpc3BsYXlf ZmxpcChzLCBpbmZvKTsKIAogCXJldHVybiAtRU5PREVWOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1 Zi5jCmluZGV4IGQ0Zjg4M2YzNWI5NS4uOGU2NWNkODI1OGI5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2RtYWJ1Zi5jCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICp2Z3B1X2NyZWF0ZV9nZW0oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCW9iai0+ cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0dUVDsKIAlvYmotPndyaXRlX2RvbWFpbiA9 IDA7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChHUkFQSElDU19WRVIo ZGV2X3ByaXYpID49IDkpIHsKIAkJdW5zaWduZWQgaW50IHRpbGluZ19tb2RlID0gMDsKIAkJdW5z aWduZWQgaW50IHN0cmlkZSA9IDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9mYl9kZWNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5j CmluZGV4IDA4ODlhZDgyOTFiMC4uMTFhOGJhYmE2ODIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9mYl9kZWNvZGVyLmMKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdTMyIGludGVsX3ZncHVf Z2V0X3N0cmlkZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgaW50IHBpcGUsCiAJdTMyIHN0cmlk ZV9yZWcgPSB2Z3B1X3ZyZWdfdCh2Z3B1LCBEU1BTVFJJREUocGlwZSkpICYgc3RyaWRlX21hc2s7 CiAJdTMyIHN0cmlkZSA9IHN0cmlkZV9yZWc7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOSkgewogCQlzd2l0Y2ggKHRp bGVkKSB7CiAJCWNhc2UgUExBTkVfQ1RMX1RJTEVEX0xJTkVBUjoKIAkJCXN0cmlkZSA9IHN0cmlk ZV9yZWcgKiA2NDsKQEAgLTIxNSw3ICsyMTUsNyBAQCBpbnQgaW50ZWxfdmdwdV9kZWNvZGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKIAlpZiAoIXBsYW5lLT5lbmFibGVk KQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSA5KSB7CiAJCXBsYW5lLT50aWxlZCA9IHZh bCAmIFBMQU5FX0NUTF9USUxFRF9NQVNLOwogCQlmbXQgPSBza2xfZm9ybWF0X3RvX2RybSgKIAkJ CXZhbCAmIFBMQU5FX0NUTF9GT1JNQVRfTUFTSywKQEAgLTI1Niw5ICsyNTYsOSBAQCBpbnQgaW50 ZWxfdmdwdV9kZWNvZGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKIAl9 CiAKIAlwbGFuZS0+c3RyaWRlID0gaW50ZWxfdmdwdV9nZXRfc3RyaWRlKHZncHUsIHBpcGUsIHBs YW5lLT50aWxlZCwKLQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgPwotCQkJKF9QUklfUExB TkVfU1RSSURFX01BU0sgPj4gNikgOgotCQkJCV9QUklfUExBTkVfU1RSSURFX01BU0ssIHBsYW5l LT5icHApOworCQkoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSA5KSA/CisJCShfUFJJX1BMQU5F X1NUUklERV9NQVNLID4+IDYpIDoKKwkJX1BSSV9QTEFORV9TVFJJREVfTUFTSywgcGxhbmUtPmJw cCk7CiAKIAlwbGFuZS0+d2lkdGggPSAodmdwdV92cmVnX3QodmdwdSwgUElQRVNSQyhwaXBlKSkg JiBfUElQRV9IX1NSQ1NaX01BU0spID4+CiAJCV9QSVBFX0hfU1JDU1pfU0hJRlQ7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3R0LmMKaW5kZXggNjdhMjY5MjNhYTBlLi40MmEzOWY5ZWMzMGYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3R0LmMKQEAgLTEwNjEsMTIgKzEwNjEsMTIgQEAgc3RhdGljIGJvb2wgdmdwdV9pcHNf ZW5hYmxlZChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB2Z3B1LT5ndnQtPmd0LT5pOTE1OwogCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPT0gOSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID09IDEwKSB7CisJaWYgKElTX0dS QVBISUNTX1ZFUihkZXZfcHJpdiwgOSkgfHwgSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCAxMCkp IHsKIAkJdTMyIGlwcyA9IHZncHVfdnJlZ190KHZncHUsIEdFTjhfR0FNV19FQ09fREVWX1JXX0lB KSAmCiAJCQlHQU1XX0VDT19FTkFCTEVfNjRLX0lQU19GSUVMRDsKIAogCQlyZXR1cm4gaXBzID09 IEdBTVdfRUNPX0VOQUJMRV82NEtfSVBTX0ZJRUxEOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSAx MSkgewogCQkvKiA2NEsgcGFnaW5nIG9ubHkgY29udHJvbGxlZCBieSBJUFMgYml0IGluIFBURSBu b3cuICovCiAJCXJldHVybiB0cnVlOwogCX0gZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxl cnMuYwppbmRleCA0NzdiYWRmY2IyNTguLmUxNzk2YjEyNzJlMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2hhbmRsZXJzLmMKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgaW50IGdhbXdfZWNob19k ZXZfcndfaWFfd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCiB7CiAJdTMyIGlwcyA9ICgq KHUzMiAqKXBfZGF0YSkgJiBHQU1XX0VDT19FTkFCTEVfNjRLX0lQU19GSUVMRDsKIAotCWlmIChJ TlRFTF9HRU4odmdwdS0+Z3Z0LT5ndC0+aTkxNSkgPD0gMTApIHsKKwlpZiAoR1JBUEhJQ1NfVkVS KHZncHUtPmd2dC0+Z3QtPmk5MTUpIDw9IDEwKSB7CiAJCWlmIChpcHMgPT0gR0FNV19FQ09fRU5B QkxFXzY0S19JUFNfRklFTEQpCiAJCQlndnRfZGJnX2NvcmUoInZncHUlZDogaXBzIGVuYWJsZWRc biIsIHZncHUtPmlkKTsKIAkJZWxzZSBpZiAoIWlwcykKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0 aWMgaW50IG11bF9mb3JjZV93YWtlX3dyaXRlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAogCW9s ZCA9IHZncHVfdnJlZyh2Z3B1LCBvZmZzZXQpOwogCW5ldyA9IENBTENfTU9ERV9NQVNLX1JFRyhv bGQsICoodTMyICopcF9kYXRhKTsKIAotCWlmIChJTlRFTF9HRU4odmdwdS0+Z3Z0LT5ndC0+aTkx NSkgID49ICA5KSB7CisJaWYgKEdSQVBISUNTX1ZFUih2Z3B1LT5ndnQtPmd0LT5pOTE1KSAgPj0g IDkpIHsKIAkJc3dpdGNoIChvZmZzZXQpIHsKIAkJY2FzZSBGT1JDRVdBS0VfUkVOREVSX0dFTjlf UkVHOgogCQkJYWNrX3JlZ19vZmZzZXQgPSBGT1JDRVdBS0VfQUNLX1JFTkRFUl9HRU45X1JFRzsK QEAgLTExNzQsNyArMTE3NCw3IEBAIHN0YXRpYyBpbnQgZHBfYXV4X2NoX2N0bF9tbWlvX3dyaXRl KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAogCXdyaXRlX3ZyZWcodmdwdSwgb2Zmc2V0LCBwX2Rh dGEsIGJ5dGVzKTsKIAlkYXRhID0gdmdwdV92cmVnKHZncHUsIG9mZnNldCk7CiAKLQlpZiAoKElO VEVMX0dFTih2Z3B1LT5ndnQtPmd0LT5pOTE1KSA+PSA5KQorCWlmICgoR1JBUEhJQ1NfVkVSKHZn cHUtPmd2dC0+Z3QtPmk5MTUpID49IDkpCiAJCSYmIG9mZnNldCAhPSBfUkVHX1NLTF9EUF9BVVhf Q0hfQ1RMKHBvcnRfaW5kZXgpKSB7CiAJCS8qIFNLTCBEUEIvQy9EIGF1eCBjdGwgcmVnaXN0ZXIg Y2hhbmdlZCAqLwogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYwpp bmRleCA0OTdkMjhjZTQ3ZGYuLjYxNGI5NTFkOTE5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2ludGVycnVwdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9p bnRlcnJ1cHQuYwpAQCAtNTg1LDcgKzU4NSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfaW5pdF9pcnEo CiAKIAkJU0VUX0JJVF9JTkZPKGlycSwgNCwgUFJJTUFSWV9DX0ZMSVBfRE9ORSwgSU5URUxfR1ZU X0lSUV9JTkZPX0RFX1BJUEVfQyk7CiAJCVNFVF9CSVRfSU5GTyhpcnEsIDUsIFNQUklURV9DX0ZM SVBfRE9ORSwgSU5URUxfR1ZUX0lSUV9JTkZPX0RFX1BJUEVfQyk7Ci0JfSBlbHNlIGlmIChJTlRF TF9HRU4oZ3Z0LT5ndC0+aTkxNSkgPj0gOSkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGd2 dC0+Z3QtPmk5MTUpID49IDkpIHsKIAkJU0VUX0JJVF9JTkZPKGlycSwgMjUsIEFVWF9DSEFOTkVM X0IsIElOVEVMX0dWVF9JUlFfSU5GT19ERV9QT1JUKTsKIAkJU0VUX0JJVF9JTkZPKGlycSwgMjYs IEFVWF9DSEFOTkVMX0MsIElOVEVMX0dWVF9JUlFfSU5GT19ERV9QT1JUKTsKIAkJU0VUX0JJVF9J TkZPKGlycSwgMjcsIEFVWF9DSEFOTkVMX0QsIElOVEVMX0dWVF9JUlFfSU5GT19ERV9QT1JUKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwppbmRleCBjOTU4OWUyNmFmOTMu LjE2NTUwZDg5MDFjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9f Y29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwpA QCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV90bGJfcGVuZGluZ19ldmVudChz dHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKIAkgKi8KIAlmdyA9IGludGVsX3VuY29yZV9mb3JjZXdh a2VfZm9yX3JlZyh1bmNvcmUsIHJlZywKIAkJCQkJICAgIEZXX1JFR19SRUFEIHwgRldfUkVHX1dS SVRFKTsKLQlpZiAoZW5naW5lLT5pZCA9PSBSQ1MwICYmIElOVEVMX0dFTihlbmdpbmUtPmk5MTUp ID49IDkpCisJaWYgKGVuZ2luZS0+aWQgPT0gUkNTMCAmJiBHUkFQSElDU19WRVIoZW5naW5lLT5p OTE1KSA+PSA5KQogCQlmdyB8PSBGT1JDRVdBS0VfUkVOREVSOwogCiAJaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9nZXQodW5jb3JlLCBmdyk7CkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQg c3dpdGNoX21vY3Moc3RydWN0IGludGVsX3ZncHUgKnByZSwgc3RydWN0IGludGVsX3ZncHUgKm5l eHQsCiAJaWYgKGRybV9XQVJOX09OKCZlbmdpbmUtPmk5MTUtPmRybSwgZW5naW5lLT5pZCA+PSBB UlJBWV9TSVpFKHJlZ3MpKSkKIAkJcmV0dXJuOwogCi0JaWYgKGVuZ2luZS0+aWQgPT0gUkNTMCAm JiBJU19HRU4oZW5naW5lLT5pOTE1LCA5KSkKKwlpZiAoZW5naW5lLT5pZCA9PSBSQ1MwICYmIElT X0dSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUsIDkpKQogCQlyZXR1cm47CiAKIAlpZiAoIXByZSAm JiAhZ2VuOV9yZW5kZXJfbW9jcy5pbml0aWFsaXplZCkKQEAgLTQ3NCw3ICs0NzQsNyBAQCBzdGF0 aWMgdm9pZCBzd2l0Y2hfbW1pbyhzdHJ1Y3QgaW50ZWxfdmdwdSAqcHJlLAogCXN0cnVjdCBlbmdp bmVfbW1pbyAqbW1pbzsKIAl1MzIgb2xkX3YsIG5ld192OwogCi0JaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpID49IDkpCisJaWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpID49IDkpCiAJ CXN3aXRjaF9tb2NzKHByZSwgbmV4dCwgZW5naW5lKTsKIAogCWZvciAobW1pbyA9IGVuZ2luZS0+ aTkxNS0+Z3Z0LT5lbmdpbmVfbW1pb19saXN0Lm1taW87CkBAIC00ODYsNyArNDg2LDcgQEAgc3Rh dGljIHZvaWQgc3dpdGNoX21taW8oc3RydWN0IGludGVsX3ZncHUgKnByZSwKIAkJICogc3RhdGUg aW1hZ2Ugb24gZ2VuOSwgaXQncyBpbml0aWFsaXplZCBieSBscmkgY29tbWFuZCBhbmQKIAkJICog c2F2ZSBvciByZXN0b3JlIHdpdGggY29udGV4dCB0b2dldGhlci4KIAkJICovCi0JCWlmIChJU19H RU4oZW5naW5lLT5pOTE1LCA5KSAmJiBtbWlvLT5pbl9jb250ZXh0KQorCQlpZiAoSVNfR1JBUEhJ Q1NfVkVSKGVuZ2luZS0+aTkxNSwgOSkgJiYgbW1pby0+aW5fY29udGV4dCkKIAkJCWNvbnRpbnVl OwogCiAJCS8vIHNhdmUKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIGludGVsX2d2dF9pbml0X2Vu Z2luZV9tbWlvX2NvbnRleHQoc3RydWN0IGludGVsX2d2dCAqZ3Z0KQogewogCXN0cnVjdCBlbmdp bmVfbW1pbyAqbW1pbzsKIAotCWlmIChJTlRFTF9HRU4oZ3Z0LT5ndC0+aTkxNSkgPj0gOSkgewor CWlmIChHUkFQSElDU19WRVIoZ3Z0LT5ndC0+aTkxNSkgPj0gOSkgewogCQlndnQtPmVuZ2luZV9t bWlvX2xpc3QubW1pbyA9IGdlbjlfZW5naW5lX21taW9fbGlzdDsKIAkJZ3Z0LT5lbmdpbmVfbW1p b19saXN0LnRsYl9tbWlvX29mZnNldF9saXN0ID0gZ2VuOF90bGJfbW1pb19vZmZzZXRfbGlzdDsK IAkJZ3Z0LT5lbmdpbmVfbW1pb19saXN0LnRsYl9tbWlvX29mZnNldF9saXN0X2NudCA9IEFSUkFZ X1NJWkUoZ2VuOF90bGJfbW1pb19vZmZzZXRfbGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2No ZWR1bGVyLmMKaW5kZXggZmM3MzU2OTJmMjFmLi4xYzMxNTdlZDIzYmUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvc2NoZWR1bGVyLmMKQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMgaW50IGNvcHlf d29ya2xvYWRfdG9fcmluZ19idWZmZXIoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmts b2FkKQogCXUzMiAqY3M7CiAJaW50IGVycjsKIAotCWlmIChJU19HRU4ocmVxLT5lbmdpbmUtPmk5 MTUsIDkpICYmIGlzX2luaGliaXRfY29udGV4dChyZXEtPmNvbnRleHQpKQorCWlmIChJU19HUkFQ SElDU19WRVIocmVxLT5lbmdpbmUtPmk5MTUsIDkpICYmIGlzX2luaGliaXRfY29udGV4dChyZXEt PmNvbnRleHQpKQogCQlpbnRlbF92Z3B1X3Jlc3RvcmVfaW5oaWJpdF9jb250ZXh0KHZncHUsIHJl cSk7CiAKIAkvKgpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY3Vy cmVudF93b3JrbG9hZChzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQsIGludCByaW5nX2lkKQogc3RhdGlj IGludCB3b3JrbG9hZF90aHJlYWQodm9pZCAqYXJnKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IGFyZzsKLQljb25zdCBib29sIG5lZWRfZm9yY2Vfd2FrZSA9IElOVEVMX0dF TihlbmdpbmUtPmk5MTUpID49IDk7CisJY29uc3QgYm9vbCBuZWVkX2ZvcmNlX3dha2UgPSBHUkFQ SElDU19WRVIoZW5naW5lLT5pOTE1KSA+PSA5OwogCXN0cnVjdCBpbnRlbF9ndnQgKmd2dCA9IGVu Z2luZS0+aTkxNS0+Z3Z0OwogCXN0cnVjdCBpbnRlbF9ndnRfd29ya2xvYWRfc2NoZWR1bGVyICpz Y2hlZHVsZXIgPSAmZ3Z0LT5zY2hlZHVsZXI7CiAJc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQg Kndvcmtsb2FkID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92 Z3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCmluZGV4IDkwMzk3ODdmMTIz YS4uOWVlYzFiYmRmMGRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdw dS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMKQEAgLTE0OSwxMCArMTQ5 LDEwIEBAIGludCBpbnRlbF9ndnRfaW5pdF92Z3B1X3R5cGVzKHN0cnVjdCBpbnRlbF9ndnQgKmd2 dCkKIAkJZ3Z0LT50eXBlc1tpXS5hdmFpbF9pbnN0YW5jZSA9IG1pbihsb3dfYXZhaWwgLyB2Z3B1 X3R5cGVzW2ldLmxvd19tbSwKIAkJCQkJCSAgIGhpZ2hfYXZhaWwgLyB2Z3B1X3R5cGVzW2ldLmhp Z2hfbW0pOwogCi0JCWlmIChJU19HRU4oZ3Z0LT5ndC0+aTkxNSwgOCkpCisJCWlmIChJU19HUkFQ SElDU19WRVIoZ3Z0LT5ndC0+aTkxNSwgOCkpCiAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFt ZSwgIkdWVGdfVjRfJXMiLAogCQkJCXZncHVfdHlwZXNbaV0ubmFtZSk7Ci0JCWVsc2UgaWYgKElT X0dFTihndnQtPmd0LT5pOTE1LCA5KSkKKwkJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGd2dC0+ Z3QtPmk5MTUsIDkpKQogCQkJc3ByaW50ZihndnQtPnR5cGVzW2ldLm5hbWUsICJHVlRnX1Y1XyVz IiwKIAkJCQl2Z3B1X3R5cGVzW2ldLm5hbWUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21k X3BhcnNlci5jCmluZGV4IGU2ZjFlOTNhYmJiYi4uMjlhZDNjNDUwMzM5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwpAQCAtOTQ2LDggKzk0Niw4IEBAIGludCBpbnRlbF9l bmdpbmVfaW5pdF9jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlp bnQgY21kX3RhYmxlX2NvdW50OwogCWludCByZXQ7CiAKLQlpZiAoIUlTX0dFTihlbmdpbmUtPmk5 MTUsIDcpICYmICEoSVNfR0VOKGVuZ2luZS0+aTkxNSwgOSkgJiYKLQkJCQkJICBlbmdpbmUtPmNs YXNzID09IENPUFlfRU5HSU5FX0NMQVNTKSkKKwlpZiAoIUlTX0dSQVBISUNTX1ZFUihlbmdpbmUt Pmk5MTUsIDcpICYmICEoSVNfR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSwgOSkgJiYKKwkJCQkJ CSAgIGVuZ2luZS0+Y2xhc3MgPT0gQ09QWV9FTkdJTkVfQ0xBU1MpKQogCQlyZXR1cm4gMDsKIAog CXN3aXRjaCAoZW5naW5lLT5jbGFzcykgewpAQCAtOTc3LDcgKzk3Nyw3IEBAIGludCBpbnRlbF9l bmdpbmVfaW5pdF9jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJ YnJlYWs7CiAJY2FzZSBDT1BZX0VOR0lORV9DTEFTUzoKIAkJZW5naW5lLT5nZXRfY21kX2xlbmd0 aF9tYXNrID0gZ2VuN19ibHRfZ2V0X2NtZF9sZW5ndGhfbWFzazsKLQkJaWYgKElTX0dFTihlbmdp bmUtPmk5MTUsIDkpKSB7CisJCWlmIChJU19HUkFQSElDU19WRVIoZW5naW5lLT5pOTE1LCA5KSkg ewogCQkJY21kX3RhYmxlcyA9IGdlbjlfYmx0X2NtZF90YWJsZTsKIAkJCWNtZF90YWJsZV9jb3Vu dCA9IEFSUkFZX1NJWkUoZ2VuOV9ibHRfY21kX3RhYmxlKTsKIAkJCWVuZ2luZS0+Z2V0X2NtZF9s ZW5ndGhfbWFzayA9CkBAIC05OTMsNyArOTkzLDcgQEAgaW50IGludGVsX2VuZ2luZV9pbml0X2Nt ZF9wYXJzZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJY21kX3RhYmxlX2Nv dW50ID0gQVJSQVlfU0laRShnZW43X2JsdF9jbWRfdGFibGUpOwogCQl9CiAKLQkJaWYgKElTX0dF TihlbmdpbmUtPmk5MTUsIDkpKSB7CisJCWlmIChJU19HUkFQSElDU19WRVIoZW5naW5lLT5pOTE1 LCA5KSkgewogCQkJZW5naW5lLT5yZWdfdGFibGVzID0gZ2VuOV9ibHRfcmVnX3RhYmxlczsKIAkJ CWVuZ2luZS0+cmVnX3RhYmxlX2NvdW50ID0KIAkJCQlBUlJBWV9TSVpFKGdlbjlfYmx0X3JlZ190 YWJsZXMpOwpAQCAtMTUyMSw3ICsxNTIxLDcgQEAgaW50IGludGVsX2VuZ2luZV9jbWRfcGFyc2Vy KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQlpZiAoSVNfSEFTV0VMTChlbmdp bmUtPmk5MTUpKQogCQkJCQlmbGFncyA9IE1JX0JBVENIX05PTl9TRUNVUkVfSFNXOwogCi0JCQkJ R0VNX0JVR19PTighSVNfR0VOX1JBTkdFKGVuZ2luZS0+aTkxNSwgNiwgNykpOworCQkJCUdFTV9C VUdfT04oIUlTX0dSQVBISUNTX1JBTkdFKGVuZ2luZS0+aTkxNSwgNiwgNykpOwogCQkJCV9fZ2Vu Nl9lbWl0X2JiX3N0YXJ0KGJhdGNoX2VuZCwKIAkJCQkJCSAgICAgYmF0Y2hfYWRkciwKIAkJCQkJ CSAgICAgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBiNjU0Yjc0 OThiY2QuLjZhNjZkOWIxM2UzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAg LTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsKIAotCWlmIChJU19HRU4oZGV2X3ByaXYsIDUpKSB7 CisJaWYgKElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgNSkpIHsKIAkJdTE2IHJndnN3Y3RsID0g aW50ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIE1FTVNXQ1RMKTsKIAkJdTE2IHJndnN0YXQgPSBp bnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwgTUVNU1RBVF9JTEspOwogCkBAIC0zOTcsNyArMzk3 LDcgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQogCQlzZXFfcHJpbnRmKG0sCiAJCQkgICAiZWZmaWNpZW50IChSUGUpIGZy ZXF1ZW5jeTogJWQgTUh6XG4iLAogCQkJICAgaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmVmZmlj aWVudF9mcmVxKSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwl9 IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNikgewogCQl1MzIgcnBfc3RhdGVf bGltaXRzOwogCQl1MzIgZ3RfcGVyZl9zdGF0dXM7CiAJCXUzMiBycF9zdGF0ZV9jYXA7CkBAIC00 MjEsNyArNDIxLDcgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2 X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CiAKIAkJcmVxZiA9IGludGVsX3VuY29yZV9y ZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBHRU42X1JQTlNXUkVRKTsKLQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKKwkJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOSkKIAkJCXJl cWYgPj49IDIzOwogCQllbHNlIHsKIAkJCXJlcWYgJj0gfkdFTjZfVFVSQk9fRElTQUJMRTsKQEAg LTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQo JmRldl9wcml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCi0JCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDExKSB7CisJCWlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDExKSB7CiAJ CQlwbV9pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwgR0VOMTFfR1BN X1dHQk9YUEVSRl9JTlRSX0VOQUJMRSk7CiAJCQlwbV9pbXIgPSBpbnRlbF91bmNvcmVfcmVhZCgm ZGV2X3ByaXYtPnVuY29yZSwgR0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRSX01BU0spOwogCQkJLyoK QEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCQkgKi8KIAkJCXBtX2lzciA9IDA7CiAJCQlw bV9paXIgPSAwOwotCQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCQl9 IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOCkgewogCQkJcG1faWVyID0gaW50 ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsIEdFTjhfR1RfSUVSKDIpKTsKIAkJCXBt X2ltciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBHRU44X0dUX0lNUigy KSk7CiAJCQlwbV9pc3IgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwgR0VO OF9HVF9JU1IoMikpOwpAQCAtNDc5LDE0ICs0NzksMTQgQEAgc3RhdGljIGludCBpOTE1X2ZyZXF1 ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCiAJCXNlcV9wcmlu dGYobSwgIlBNIElFUj0weCUwOHggSU1SPTB4JTA4eCwgTUFTSz0weCUwOHhcbiIsCiAJCQkgICBw bV9pZXIsIHBtX2ltciwgcG1fbWFzayk7Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDEw KQorCQlpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA8PSAxMCkKIAkJCXNlcV9wcmludGYobSwg IlBNIElTUj0weCUwOHggSUlSPTB4JTA4eFxuIiwKIAkJCQkgICBwbV9pc3IsIHBtX2lpcik7CiAJ CXNlcV9wcmludGYobSwgInBtX2ludHJtc2tfbWJ6OiAweCUwOHhcbiIsCiAJCQkgICBycHMtPnBt X2ludHJtc2tfbWJ6KTsKIAkJc2VxX3ByaW50ZihtLCAiR1RfUEVSRl9TVEFUVVM6IDB4JTA4eFxu IiwgZ3RfcGVyZl9zdGF0dXMpOwogCQlzZXFfcHJpbnRmKG0sICJSZW5kZXIgcC1zdGF0ZSByYXRp bzogJWRcbiIsCi0JCQkgICAoZ3RfcGVyZl9zdGF0dXMgJiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOworCQkJICAgKGd0X3BlcmZfc3RhdHVzICYg KEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOSA/IDB4MWZmMDAgOiAweGZmMDApKSA+PiA4KTsK IAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgVklEOiAlZFxuIiwKIAkJCSAgIGd0X3Bl cmZfc3RhdHVzICYgMHhmZik7CiAJCXNlcV9wcmludGYobSwgIlJlbmRlciBwLXN0YXRlIGxpbWl0 OiAlZFxuIiwKQEAgLTUyNywyMCArNTI3LDIwIEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJbWF4X2ZyZXEgPSAoSVNf R0VOOV9MUChkZXZfcHJpdikgPyBycF9zdGF0ZV9jYXAgPj4gMCA6CiAJCQkgICAgcnBfc3RhdGVf Y2FwID4+IDE2KSAmIDB4ZmY7CiAJCW1heF9mcmVxICo9IChJU19HRU45X0JDKGRldl9wcml2KSB8 fAotCQkJICAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6 IDEpOworCQkJICAgICBHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDEwID8gR0VOOV9GUkVRX1ND QUxFUiA6IDEpOwogCQlzZXFfcHJpbnRmKG0sICJMb3dlc3QgKFJQTikgZnJlcXVlbmN5OiAlZE1I elxuIiwKIAkJCSAgIGludGVsX2dwdV9mcmVxKHJwcywgbWF4X2ZyZXEpKTsKIAogCQltYXhfZnJl cSA9IChycF9zdGF0ZV9jYXAgJiAweGZmMDApID4+IDg7CiAJCW1heF9mcmVxICo9IChJU19HRU45 X0JDKGRldl9wcml2KSB8fAotCQkJICAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwID8gR0VO OV9GUkVRX1NDQUxFUiA6IDEpOworCQkJICAgICBHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDEw ID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwogCQlzZXFfcHJpbnRmKG0sICJOb21pbmFsIChSUDEp IGZyZXF1ZW5jeTogJWRNSHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJlcShycHMsIG1heF9mcmVx KSk7CiAKIAkJbWF4X2ZyZXEgPSAoSVNfR0VOOV9MUChkZXZfcHJpdikgPyBycF9zdGF0ZV9jYXAg Pj4gMTYgOgogCQkJICAgIHJwX3N0YXRlX2NhcCA+PiAwKSAmIDB4ZmY7CiAJCW1heF9mcmVxICo9 IChJU19HRU45X0JDKGRldl9wcml2KSB8fAotCQkJICAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOworCQkJICAgICBHUkFQSElDU19WRVIoZGV2X3By aXYpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwogCQlzZXFfcHJpbnRmKG0sICJNYXgg bm9uLW92ZXJjbG9ja2VkIChSUDApIGZyZXF1ZW5jeTogJWRNSHpcbiIsCiAJCQkgICBpbnRlbF9n cHVfZnJlcShycHMsIG1heF9mcmVxKSk7CiAJCXNlcV9wcmludGYobSwgIk1heCBvdmVyY2xvY2tl ZCBmcmVxdWVuY3k6ICVkTUh6XG4iLApAQCAtNjExLDEyICs2MTEsMTIgQEAgc3RhdGljIGludCBp OTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCXNlcV9w dXRzKG0sICJMLXNoYXBlZCBtZW1vcnkgZGV0ZWN0ZWRcbiIpOwogCiAJLyogT24gQkRXKywgc3dp enpsaW5nIGlzIG5vdCB1c2VkLiBTZWUgZGV0ZWN0X2JpdF82X3N3aXp6bGUoKSAqLwotCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDggfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCisJaWYg KEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOCB8fCBJU19WQUxMRVlWSUVXKGRldl9wcml2KSkK IAkJcmV0dXJuIDA7CiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2 LT5ydW50aW1lX3BtKTsKIAotCWlmIChJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDMsIDQpKSB7CisJ aWYgKElTX0dSQVBISUNTX1JBTkdFKGRldl9wcml2LCAzLCA0KSkgewogCQlzZXFfcHJpbnRmKG0s ICJEREMgPSAweCUwOHhcbiIsCiAJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIERDQykp OwogCQlzZXFfcHJpbnRmKG0sICJEREMyID0gMHglMDh4XG4iLApAQCAtNjI1LDcgKzYyNSw3IEBA IHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQogCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIEMwRFJCMykpOwogCQlzZXFf cHJpbnRmKG0sICJDMURSQjMgPSAweCUwNHhcbiIsCiAJCQkgICBpbnRlbF91bmNvcmVfcmVhZDE2 KHVuY29yZSwgQzFEUkIzKSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYp IHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNikgewogCQlzZXFfcHJp bnRmKG0sICJNQURfRElNTV9DMCA9IDB4JTA4eFxuIiwKIAkJCSAgIGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgTUFEX0RJTU1fQzApKTsKIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzEgPSAw eCUwOHhcbiIsCkBAIC02MzQsNyArNjM0LDcgQEAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCQkgICBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIE1BRF9ESU1NX0MyKSk7CiAJCXNlcV9wcmludGYobSwgIlRJTEVDVEwgPSAweCUw OHhcbiIsCiAJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIFRJTEVDVEwpKTsKLQkJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwkJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikg Pj0gOCkKIAkJCXNlcV9wcmludGYobSwgIkdBTVRBUkJNT0RFID0gMHglMDh4XG4iLAogCQkJCSAg IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0FNVEFSQk1PREUpKTsKIAkJZWxzZQpAQCAtOTQ1 LDcgKzk0NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mb3JjZXdha2Vfb3BlbihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAogCWF0b21pY19pbmMoJmd0LT51c2VyX3dha2Vy ZWYpOwogCWludGVsX2d0X3BtX2dldChndCk7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gNikKIAkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91 c2VyX2dldChndC0+dW5jb3JlKTsKIAogCXJldHVybiAwOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9mb3JjZXdha2VfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlsZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGlub2RlLT5p X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKIAotCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNikKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCWludGVs X3VuY29yZV9mb3JjZXdha2VfdXNlcl9wdXQoJmk5MTUtPnVuY29yZSk7CiAJaW50ZWxfZ3RfcG1f cHV0KGd0KTsKIAlhdG9taWNfZGVjKCZndC0+dXNlcl93YWtlcmVmKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCmluZGV4IGVlZjk0NjM1ODA4ZC4uYjVjYmZhZmE2MTA1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRfYnJpZGdl X2RldihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBzdGF0aWMgaW50CiBpbnRl bF9hbGxvY19tY2hiYXJfcmVzb3VyY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogewotCWludCByZWcgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQgPyBNQ0hCQVJfSTk2NSA6 IE1DSEJBUl9JOTE1OworCWludCByZWcgPSBHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDQgPyBN Q0hCQVJfSTk2NSA6IE1DSEJBUl9JOTE1OwogCXUzMiB0ZW1wX2xvLCB0ZW1wX2hpID0gMDsKIAl1 NjQgbWNoYmFyX2FkZHI7CiAJaW50IHJldDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDQpCisJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNCkKIAkJcGNpX3JlYWRfY29uZmln X2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LCAmdGVtcF9oaSk7CiAJcGNpX3Jl YWRfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcsICZ0ZW1wX2xvKTsKIAlt Y2hiYXJfYWRkciA9ICgodTY0KXRlbXBfaGkgPDwgMzIpIHwgdGVtcF9sbzsKQEAgLTEzNyw3ICsx MzcsNyBAQCBpbnRlbF9hbGxvY19tY2hiYXJfcmVzb3VyY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQlyZXR1cm4gcmV0OwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDQpCisJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNCkKIAkJcGNpX3dyaXRl X2NvbmZpZ19kd29yZChkZXZfcHJpdi0+YnJpZGdlX2RldiwgcmVnICsgNCwKIAkJCQkgICAgICAg dXBwZXJfMzJfYml0cyhkZXZfcHJpdi0+bWNoX3Jlcy5zdGFydCkpOwogCkBAIC0xNTAsNyArMTUw LDcgQEAgaW50ZWxfYWxsb2NfbWNoYmFyX3Jlc291cmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHN0YXRpYyB2b2lkCiBpbnRlbF9zZXR1cF9tY2hiYXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWludCBtY2hiYXJfcmVnID0gSU5URUxfR0VOKGRl dl9wcml2KSA+PSA0ID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKKwlpbnQgbWNoYmFyX3Jl ZyA9IEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5 MTU7CiAJdTMyIHRlbXA7CiAJYm9vbCBlbmFibGVkOwogCkBAIC0xODksNyArMTg5LDcgQEAgaW50 ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHN0YXRp YyB2b2lkCiBpbnRlbF90ZWFyZG93bl9tY2hiYXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewotCWludCBtY2hiYXJfcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ID8g TUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKKwlpbnQgbWNoYmFyX3JlZyA9IEdSQVBISUNTX1ZF UihkZXZfcHJpdikgPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7CiAKIAlpZiAoZGV2 X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUpIHsKIAkJaWYgKElTX0k5MTVHKGRldl9wcml2KSB8 fCBJU19JOTE1R00oZGV2X3ByaXYpKSB7CkBAIC00NzQsNyArNDc0LDcgQEAgc3RhdGljIGludCBp OTE1X3NldF9kbWFfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJZ290byBt YXNrX2VycjsKIAogCS8qIG92ZXJsYXkgb24gZ2VuMiBpcyBicm9rZW4gYW5kIGNhbid0IGFkZHJl c3MgYWJvdmUgMUcgKi8KLQlpZiAoSVNfR0VOKGk5MTUsIDIpKQorCWlmIChJU19HUkFQSElDU19W RVIoaTkxNSwgMikpCiAJCW1hc2tfc2l6ZSA9IDMwOwogCiAJLyoKQEAgLTYwMCw3ICs2MDAsNyBA QCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2h3X3Byb2JlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkgKiBkZXZpY2UuIFRoZSBrZXJuZWwgdGhlbiBkaXNhYmxlcyB0aGF0IGlu dGVycnVwdCBzb3VyY2UgYW5kIHNvCiAJICogcHJldmVudHMgdGhlIG90aGVyIGRldmljZSBmcm9t IHdvcmtpbmcgcHJvcGVybHkuCiAJICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkg eworCWlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDUpIHsKIAkJaWYgKHBjaV9lbmFibGVf bXNpKHBkZXYpIDwgMCkKIAkJCWRybV9kYmcoJmRldl9wcml2LT5kcm0sICJjYW4ndCBlbmFibGUg TVNJIik7CiAJfQpAQCAtNzI4LDcgKzcyOCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfd2VsY29tZV9t ZXNzYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgICBpbnRlbF9w bGF0Zm9ybV9uYW1lKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGF0Zm9ybSksCiAJCQkgICBpbnRl bF9zdWJwbGF0Zm9ybShSVU5USU1FX0lORk8oZGV2X3ByaXYpLAogCQkJCQkgICAgIElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5wbGF0Zm9ybSksCi0JCQkgICBJTlRFTF9HRU4oZGV2X3ByaXYpKTsKKwkJ CSAgIEdSQVBISUNTX1ZFUihkZXZfcHJpdikpOwogCiAJCWludGVsX2RldmljZV9pbmZvX3ByaW50 X3N0YXRpYyhJTlRFTF9JTkZPKGRldl9wcml2KSwgJnApOwogCQlpbnRlbF9kZXZpY2VfaW5mb19w cmludF9ydW50aW1lKFJVTlRJTUVfSU5GTyhkZXZfcHJpdiksICZwKTsKQEAgLTgwMyw3ICs4MDMs NyBAQCBpbnQgaTkxNV9kcml2ZXJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0 cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJICovCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJN X0k5MTVfU0VMRlRFU1QpCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1VOU1RBQkxF X0ZBS0VfTE1FTSkpIHsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA5ICYmIGk5MTVfc2VsZnRl c3QubGl2ZSA8IDAgJiYKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA5ICYmIGk5MTVfc2Vs ZnRlc3QubGl2ZSA8IDAgJiYKIAkJICAgIGk5MTUtPnBhcmFtcy5mYWtlX2xtZW1fc3RhcnQpIHsK IAkJCW1rd3JpdGVfZGV2aWNlX2luZm8oaTkxNSktPm1lbW9yeV9yZWdpb25zID0KIAkJCQlSRUdJ T05fU01FTSB8IFJFR0lPTl9MTUVNIHwgUkVHSU9OX1NUT0xFTl9TTUVNOwpAQCAtMTE3MCw3ICsx MTcwLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgYm9vbCBoaWJlcm5hdGlvbikKIAkgKiBGdWppdHN1IEZTQyBTNzExMAogCSAqIEFj ZXIgQXNwaXJlIDE4MzBUCiAJICovCi0JaWYgKCEoaGliZXJuYXRpb24gJiYgSU5URUxfR0VOKGRl dl9wcml2KSA8IDYpKQorCWlmICghKGhpYmVybmF0aW9uICYmIEdSQVBISUNTX1ZFUihkZXZfcHJp dikgPCA2KSkKIAkJcGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpOwogCiBvdXQ6 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBiMjNmNThlOTRjZmIuLjZmZDNhYjYxZGUzNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00MzIsNyArNDMyLDcgQEAgaTkxNV9nZW1fcHJl YWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkvKiBQUkVBRCBp cyBkaXNhbGxvd2VkIGZvciBhbGwgcGxhdGZvcm1zIGFmdGVyIFRHTC1MUC4gIFRoaXMgYWxzbwog CSAqIGNvdmVycyBhbGwgcGxhdGZvcm1zIHdpdGggbG9jYWwgbWVtb3J5LgogCSAqLwotCWlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gMTIgJiYgIUlTX1RJR0VSTEFLRShpOTE1KSkKKwlpZiAoR1JBUEhJ Q1NfVkVSKGk5MTUpID49IDEyICYmICFJU19USUdFUkxBS0UoaTkxNSkpCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAogCWlmIChhcmdzLT5zaXplID09IDApCkBAIC03MTIsNyArNzEyLDcgQEAgaTkx NV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ LyogUFdSSVRFIGlzIGRpc2FsbG93ZWQgZm9yIGFsbCBwbGF0Zm9ybXMgYWZ0ZXIgVEdMLUxQLiAg VGhpcyBhbHNvCiAJICogY292ZXJzIGFsbCBwbGF0Zm9ybXMgd2l0aCBsb2NhbCBtZW1vcnkuCiAJ ICovCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMiAmJiAhSVNfVElHRVJMQUtFKGk5MTUpKQor CWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTIgJiYgIUlTX1RJR0VSTEFLRShpOTE1KSkKIAkJ cmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKGFyZ3MtPnNpemUgPT0gMCkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IGJiMTgxZmU1ZDQ3ZS4uZjllNzk5YzY3YjAyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTQzNiwxMyArNDM2LDEzIEBA IHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZV9idWYgKm0sCiAJZXJyX3ByaW50ZihtLCAiICBJTlNURE9ORTogMHglMDh4XG4iLAogCQkg ICBlZS0+aW5zdGRvbmUuaW5zdGRvbmUpOwogCi0JaWYgKGVlLT5lbmdpbmUtPmNsYXNzICE9IFJF TkRFUl9DTEFTUyB8fCBJTlRFTF9HRU4obS0+aTkxNSkgPD0gMykKKwlpZiAoZWUtPmVuZ2luZS0+ Y2xhc3MgIT0gUkVOREVSX0NMQVNTIHx8IEdSQVBISUNTX1ZFUihtLT5pOTE1KSA8PSAzKQogCQly ZXR1cm47CiAKIAllcnJfcHJpbnRmKG0sICIgIFNDX0lOU1RET05FOiAweCUwOHhcbiIsCiAJCSAg IGVlLT5pbnN0ZG9uZS5zbGljZV9jb21tb24pOwogCi0JaWYgKElOVEVMX0dFTihtLT5pOTE1KSA8 PSA2KQorCWlmIChHUkFQSElDU19WRVIobS0+aTkxNSkgPD0gNikKIAkJcmV0dXJuOwogCiAJZm9y X2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwgc2xpY2UsIHN1YnNs aWNlKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25l KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiAJCQkgICBzbGljZSwgc3Vic2xp Y2UsCiAJCQkgICBlZS0+aW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0pOwogCi0JaWYgKElO VEVMX0dFTihtLT5pOTE1KSA8IDEyKQorCWlmIChHUkFQSElDU19WRVIobS0+aTkxNSkgPCAxMikK IAkJcmV0dXJuOwogCiAJZXJyX3ByaW50ZihtLCAiICBTQ19JTlNURE9ORV9FWFRSQTogMHglMDh4 XG4iLApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJICAgdXBwZXJfMzJfYml0cyhz dGFydCksIGxvd2VyXzMyX2JpdHMoc3RhcnQpLAogCQkJICAgdXBwZXJfMzJfYml0cyhlbmQpLCBs b3dlcl8zMl9iaXRzKGVuZCkpOwogCX0KLQlpZiAoSU5URUxfR0VOKG0tPmk5MTUpID49IDQpIHsK KwlpZiAoR1JBUEhJQ1NfVkVSKG0tPmk5MTUpID49IDQpIHsKIAkJZXJyX3ByaW50ZihtLCAiICBC QkFERFI6IDB4JTA4eF8lMDh4XG4iLAogCQkJICAgKHUzMikoZWUtPmJiYWRkcj4+MzIpLCAodTMy KWVlLT5iYmFkZHIpOwogCQllcnJfcHJpbnRmKG0sICIgIEJCX1NUQVRFOiAweCUwOHhcbiIsIGVl LT5iYnN0YXRlKTsKQEAgLTU1MywxNCArNTUzLDE0IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50 X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCWVycl9wcmludGYo bSwgIiAgSU5TVFBNOiAweCUwOHhcbiIsIGVlLT5pbnN0cG0pOwogCWVycl9wcmludGYobSwgIiAg RkFERFI6IDB4JTA4eCAlMDh4XG4iLCB1cHBlcl8zMl9iaXRzKGVlLT5mYWRkciksCiAJCSAgIGxv d2VyXzMyX2JpdHMoZWUtPmZhZGRyKSk7Ci0JaWYgKElOVEVMX0dFTihtLT5pOTE1KSA+PSA2KSB7 CisJaWYgKEdSQVBISUNTX1ZFUihtLT5pOTE1KSA+PSA2KSB7CiAJCWVycl9wcmludGYobSwgIiAg UkMgUFNNSTogMHglMDh4XG4iLCBlZS0+cmNfcHNtaSk7CiAJCWVycl9wcmludGYobSwgIiAgRkFV TFRfUkVHOiAweCUwOHhcbiIsIGVlLT5mYXVsdF9yZWcpOwogCX0KIAlpZiAoSEFTX1BQR1RUKG0t Pmk5MTUpKSB7CiAJCWVycl9wcmludGYobSwgIiAgR0ZYX01PREU6IDB4JTA4eFxuIiwgZWUtPnZt X2luZm8uZ2Z4X21vZGUpOwogCi0JCWlmIChJTlRFTF9HRU4obS0+aTkxNSkgPj0gOCkgeworCQlp ZiAoR1JBUEhJQ1NfVkVSKG0tPmk5MTUpID49IDgpIHsKIAkJCWludCBpOwogCQkJZm9yIChpID0g MDsgaSA8IDQ7IGkrKykKIAkJCQllcnJfcHJpbnRmKG0sICIgIFBEUCVkOiAweCUwMTZsbHhcbiIs CkBAIC03MDcsMjUgKzcwNywyNSBAQCBzdGF0aWMgdm9pZCBlcnJfcHJpbnRfZ3Qoc3RydWN0IGRy bV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAlmb3IgKGkgPSAwOyBpIDwgZ3QtPm5mZW5jZTsg aSsrKQogCQllcnJfcHJpbnRmKG0sICIgIGZlbmNlWyVkXSA9ICUwOGxseFxuIiwgaSwgZ3QtPmZl bmNlW2ldKTsKIAotCWlmIChJU19HRU5fUkFOR0UobS0+aTkxNSwgNiwgMTEpKSB7CisJaWYgKElT X0dSQVBISUNTX1JBTkdFKG0tPmk5MTUsIDYsIDExKSkgewogCQllcnJfcHJpbnRmKG0sICJFUlJP UjogMHglMDh4XG4iLCBndC0+ZXJyb3IpOwogCQllcnJfcHJpbnRmKG0sICJET05FX1JFRzogMHgl MDh4XG4iLCBndC0+ZG9uZV9yZWcpOwogCX0KIAotCWlmIChJTlRFTF9HRU4obS0+aTkxNSkgPj0g OCkKKwlpZiAoR1JBUEhJQ1NfVkVSKG0tPmk5MTUpID49IDgpCiAJCWVycl9wcmludGYobSwgIkZB VUxUX1RMQl9EQVRBOiAweCUwOHggMHglMDh4XG4iLAogCQkJICAgZ3QtPmZhdWx0X2RhdGExLCBn dC0+ZmF1bHRfZGF0YTApOwogCi0JaWYgKElTX0dFTihtLT5pOTE1LCA3KSkKKwlpZiAoSVNfR1JB UEhJQ1NfVkVSKG0tPmk5MTUsIDcpKQogCQllcnJfcHJpbnRmKG0sICJFUlJfSU5UOiAweCUwOHhc biIsIGd0LT5lcnJfaW50KTsKIAotCWlmIChJU19HRU5fUkFOR0UobS0+aTkxNSwgOCwgMTEpKQor CWlmIChJU19HUkFQSElDU19SQU5HRShtLT5pOTE1LCA4LCAxMSkpCiAJCWVycl9wcmludGYobSwg IkdUVF9DQUNIRV9FTjogMHglMDh4XG4iLCBndC0+Z3R0X2NhY2hlKTsKIAotCWlmIChJU19HRU4o bS0+aTkxNSwgMTIpKQorCWlmIChJU19HUkFQSElDU19WRVIobS0+aTkxNSwgMTIpKQogCQllcnJf cHJpbnRmKG0sICJBVVhfRVJSX0RCRzogMHglMDh4XG4iLCBndC0+YXV4X2Vycik7CiAKLQlpZiAo SU5URUxfR0VOKG0tPmk5MTUpID49IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihtLT5pOTE1KSA+ PSAxMikgewogCQlpbnQgaTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgR0VOMTJfU0ZDX0RPTkVfTUFY OyBpKyspCkBAIC0xMDk3LDEyICsxMDk3LDEyIEBAIHN0YXRpYyB2b2lkIGd0X3JlY29yZF9mZW5j ZXMoc3RydWN0IGludGVsX2d0X2NvcmVkdW1wICpndCkKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUgPSBndC0+X2d0LT51bmNvcmU7CiAJaW50IGk7CiAKLQlpZiAoSU5URUxfR0VOKHVuY29y ZS0+aTkxNSkgPj0gNikgeworCWlmIChHUkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA+PSA2KSB7 CiAJCWZvciAoaSA9IDA7IGkgPCBnZ3R0LT5udW1fZmVuY2VzOyBpKyspCiAJCQlndC0+ZmVuY2Vb aV0gPQogCQkJCWludGVsX3VuY29yZV9yZWFkNjQodW5jb3JlLAogCQkJCQkJICAgIEZFTkNFX1JF R19HRU42X0xPKGkpKTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTih1bmNvcmUtPmk5MTUpID49IDQp IHsKKwl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUih1bmNvcmUtPmk5MTUpID49IDQpIHsKIAkJZm9y IChpID0gMDsgaSA8IGdndHQtPm51bV9mZW5jZXM7IGkrKykKIAkJCWd0LT5mZW5jZVtpXSA9CiAJ CQkJaW50ZWxfdW5jb3JlX3JlYWQ2NCh1bmNvcmUsCkBAIC0xMTIwLDIwICsxMTIwLDIwIEBAIHN0 YXRpYyB2b2lkIGVuZ2luZV9yZWNvcmRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY29y ZWR1bXAgKmVlKQogCWNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGVlLT5l bmdpbmU7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CiAK LQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49 IDYpIHsKIAkJZWUtPnJjX3BzbWkgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfUFNNSV9DVEwp OwogCi0JCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTIpCisJCWlmIChHUkFQSElDU19WRVIoaTkx NSkgPj0gMTIpCiAJCQllZS0+ZmF1bHRfcmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZW5naW5lLT51 bmNvcmUsCiAJCQkJCQkJICBHRU4xMl9SSU5HX0ZBVUxUX1JFRyk7Ci0JCWVsc2UgaWYgKElOVEVM X0dFTihpOTE1KSA+PSA4KQorCQllbHNlIGlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkKIAkJ CWVlLT5mYXVsdF9yZWcgPSBpbnRlbF91bmNvcmVfcmVhZChlbmdpbmUtPnVuY29yZSwKIAkJCQkJ CQkgIEdFTjhfUklOR19GQVVMVF9SRUcpOwogCQllbHNlCiAJCQllZS0+ZmF1bHRfcmVnID0gR0VO Nl9SSU5HX0ZBVUxUX1JFR19SRUFEKGVuZ2luZSk7CiAJfQogCi0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA0KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA0KSB7CiAJCWVlLT5lc3IgPSBF TkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfRVNSKTsKIAkJZWUtPmZhZGRyID0gRU5HSU5FX1JFQUQo ZW5naW5lLCBSSU5HX0RNQV9GQUREKTsKIAkJZWUtPmlwZWlyID0gRU5HSU5FX1JFQUQoZW5naW5l LCBSSU5HX0lQRUlSKTsKQEAgLTExNDEsNyArMTE0MSw3IEBAIHN0YXRpYyB2b2lkIGVuZ2luZV9y ZWNvcmRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY29yZWR1bXAgKmVlKQogCQllZS0+ aW5zdHBzID0gRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX0lOU1RQUyk7CiAJCWVlLT5iYmFkZHIg PSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfQkJBRERSKTsKIAkJZWUtPmNjaWQgPSBFTkdJTkVf UkVBRChlbmdpbmUsIENDSUQpOwotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpIHsKKwkJaWYg KEdSQVBISUNTX1ZFUihpOTE1KSA+PSA4KSB7CiAJCQllZS0+ZmFkZHIgfD0gKHU2NClFTkdJTkVf UkVBRChlbmdpbmUsIFJJTkdfRE1BX0ZBRERfVURXKSA8PCAzMjsKIAkJCWVlLT5iYmFkZHIgfD0g KHU2NClFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfQkJBRERSX1VEVykgPDwgMzI7CiAJCX0KQEAg LTExNjAsMTMgKzExNjAsMTMgQEAgc3RhdGljIHZvaWQgZW5naW5lX3JlY29yZF9yZWdpc3RlcnMo c3RydWN0IGludGVsX2VuZ2luZV9jb3JlZHVtcCAqZWUpCiAJZWUtPmhlYWQgPSBFTkdJTkVfUkVB RChlbmdpbmUsIFJJTkdfSEVBRCk7CiAJZWUtPnRhaWwgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJ TkdfVEFJTCk7CiAJZWUtPmN0bCA9IEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19DVEwpOwotCWlm IChJTlRFTF9HRU4oaTkxNSkgPiAyKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPiAyKQogCQll ZS0+bW9kZSA9IEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19NSV9NT0RFKTsKIAogCWlmICghSFdT X05FRURTX1BIWVNJQ0FMKGk5MTUpKSB7CiAJCWk5MTVfcmVnX3QgbW1pbzsKIAotCQlpZiAoSVNf R0VOKGk5MTUsIDcpKSB7CisJCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNykpIHsKIAkJCXN3 aXRjaCAoZW5naW5lLT5pZCkgewogCQkJZGVmYXVsdDoKIAkJCQlNSVNTSU5HX0NBU0UoZW5naW5l LT5pZCk7CkBAIC0xMTg0LDcgKzExODQsNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVjb3JkX3Jl Z2lzdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NvcmVkdW1wICplZSkKIAkJCQltbWlvID0gVkVC T1hfSFdTX1BHQV9HRU43OwogCQkJCWJyZWFrOwogCQkJfQotCQl9IGVsc2UgaWYgKElTX0dFTihl bmdpbmUtPmk5MTUsIDYpKSB7CisJCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGVuZ2luZS0+ aTkxNSwgNikpIHsKIAkJCW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFz ZSk7CiAJCX0gZWxzZSB7CiAJCQkvKiBYWFg6IGdlbjggcmV0dXJucyB0byBzYW5pdHkgKi8KQEAg LTEyMDEsMTMgKzEyMDEsMTMgQEAgc3RhdGljIHZvaWQgZW5naW5lX3JlY29yZF9yZWdpc3RlcnMo c3RydWN0IGludGVsX2VuZ2luZV9jb3JlZHVtcCAqZWUpCiAKIAkJZWUtPnZtX2luZm8uZ2Z4X21v ZGUgPSBFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfTU9ERV9HRU43KTsKIAotCQlpZiAoSVNfR0VO KGk5MTUsIDYpKSB7CisJCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgNikpIHsKIAkJCWVlLT52 bV9pbmZvLnBwX2Rpcl9iYXNlID0KIAkJCQlFTkdJTkVfUkVBRChlbmdpbmUsIFJJTkdfUFBfRElS X0JBU0VfUkVBRCk7Ci0JCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDcpKSB7CisJCX0gZWxzZSBp ZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDcpKSB7CiAJCQllZS0+dm1faW5mby5wcF9kaXJfYmFz ZSA9CiAJCQkJRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5HX1BQX0RJUl9CQVNFKTsKLQkJfSBlbHNl IGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCQl9IGVsc2UgaWYgKEdSQVBISUNTX1ZFUihp OTE1KSA+PSA4KSB7CiAJCQl1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwogCiAJCQlmb3Ig KGkgPSAwOyBpIDwgNDsgaSsrKSB7CkBAIC0xNTM5LDUyICsxNTM5LDUyIEBAIHN0YXRpYyB2b2lk IGd0X3JlY29yZF9yZWdzKHN0cnVjdCBpbnRlbF9ndF9jb3JlZHVtcCAqZ3QpCiAJCWd0LT5mb3Jj ZXdha2UgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEZPUkNFV0FLRV9WTFYpOwogCX0K IAotCWlmIChJU19HRU4oaTkxNSwgNykpCisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA3KSkK IAkJZ3QtPmVycl9pbnQgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjdfRVJSX0lOVCk7 CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSAxMikgewogCQlndC0+ZmF1bHRfZGF0YTAgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUs CiAJCQkJCQkgICAgR0VOMTJfRkFVTFRfVExCX0RBVEEwKTsKIAkJZ3QtPmZhdWx0X2RhdGExID0g aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAogCQkJCQkJICAgIEdFTjEyX0ZBVUxUX1RMQl9EQVRB MSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JB UEhJQ1NfVkVSKGk5MTUpID49IDgpIHsKIAkJZ3QtPmZhdWx0X2RhdGEwID0gaW50ZWxfdW5jb3Jl X3JlYWQodW5jb3JlLAogCQkJCQkJICAgIEdFTjhfRkFVTFRfVExCX0RBVEEwKTsKIAkJZ3QtPmZh dWx0X2RhdGExID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAogCQkJCQkJICAgIEdFTjhfRkFV TFRfVExCX0RBVEExKTsKIAl9CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDYpKSB7CisJaWYgKElTX0dS QVBISUNTX1ZFUihpOTE1LCA2KSkgewogCQlndC0+Zm9yY2V3YWtlID0gaW50ZWxfdW5jb3JlX3Jl YWRfZncodW5jb3JlLCBGT1JDRVdBS0UpOwogCQlndC0+Z2FiX2N0bCA9IGludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwgR0FCX0NUTCk7CiAJCWd0LT5nZnhfbW9kZSA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwgR0ZYX01PREUpOwogCX0KIAogCS8qIDI6IFJlZ2lzdGVycyB3aGljaCBiZWxvbmcg dG8gbXVsdGlwbGUgZ2VuZXJhdGlvbnMgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDcpCisJ aWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA3KQogCQlndC0+Zm9yY2V3YWtlID0gaW50ZWxfdW5j b3JlX3JlYWRfZncodW5jb3JlLCBGT1JDRVdBS0VfTVQpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSA2KSB7CiAJCWd0LT5kZXJybXIg PSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIERFUlJNUik7Ci0JCWlmIChJTlRFTF9HRU4oaTkx NSkgPCAxMikgeworCQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTIpIHsKIAkJCWd0LT5lcnJv ciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgRVJST1JfR0VONik7CiAJCQlndC0+ZG9uZV9y ZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIERPTkVfUkVHKTsKIAkJfQogCX0KIAogCS8q IDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICovCi0JaWYgKElTX0dFTl9SQU5HRShpOTE1 LCA2LCA3KSkgeworCWlmIChJU19HUkFQSElDU19SQU5HRShpOTE1LCA2LCA3KSkgewogCQlndC0+ Z2FtX2Vjb2NoayA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0FNX0VDT0NISyk7CiAJCWd0 LT5nYWNfZWNvID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHQUNfRUNPX0JJVFMpOwogCX0K IAotCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgOCwgMTEpKQorCWlmIChJU19HUkFQSElDU19SQU5H RShpOTE1LCA4LCAxMSkpCiAJCWd0LT5ndHRfY2FjaGUgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNv cmUsIEhTV19HVFRfQ0FDSEVfRU4pOwogCi0JaWYgKElTX0dFTihpOTE1LCAxMikpCisJaWYgKElT X0dSQVBISUNTX1ZFUihpOTE1LCAxMikpCiAJCWd0LT5hdXhfZXJyID0gaW50ZWxfdW5jb3JlX3Jl YWQodW5jb3JlLCBHRU4xMl9BVVhfRVJSX0RCRyk7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDEyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+PSAxMikgewogCQlmb3IgKGkgPSAwOyBp IDwgR0VOMTJfU0ZDX0RPTkVfTUFYOyBpKyspIHsKIAkJCWd0LT5zZmNfZG9uZVtpXSA9CiAJCQkJ aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU4xMl9TRkNfRE9ORShpKSk7CkBAIC0xNTk0LDcg KzE1OTQsNyBAQCBzdGF0aWMgdm9pZCBndF9yZWNvcmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3RfY29y ZWR1bXAgKmd0KQogCX0KIAogCS8qIDQ6IEV2ZXJ5dGhpbmcgZWxzZSAqLwotCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTEpIHsKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDExKSB7CiAJCWd0 LT5pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjhfREVfTUlTQ19JRVIpOwogCQln dC0+Z3RpZXJbMF0gPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLApAQCAtMTYxMyw3ICsx NjEzLDcgQEAgc3RhdGljIHZvaWQgZ3RfcmVjb3JkX3JlZ3Moc3RydWN0IGludGVsX2d0X2NvcmVk dW1wICpndCkKIAkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKIAkJCQkJICBHRU4xMV9HVU5J VF9DU01FX0lOVFJfRU5BQkxFKTsKIAkJZ3QtPm5ndGllciA9IDY7Ci0JfSBlbHNlIGlmIChJTlRF TF9HRU4oaTkxNSkgPj0gOCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDgp IHsKIAkJZ3QtPmllciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9ERV9NSVNDX0lF Uik7CiAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAJCQlndC0+Z3RpZXJbaV0gPQpAQCAtMTYy Myw3ICsxNjIzLDcgQEAgc3RhdGljIHZvaWQgZ3RfcmVjb3JkX3JlZ3Moc3RydWN0IGludGVsX2d0 X2NvcmVkdW1wICpndCkKIAkJZ3QtPmllciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgREVJ RVIpOwogCQlndC0+Z3RpZXJbMF0gPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdUSUVSKTsK IAkJZ3QtPm5ndGllciA9IDE7Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgMikpIHsKKwl9IGVs c2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCAyKSkgewogCQlndC0+aWVyID0gaW50ZWxfdW5j b3JlX3JlYWQxNih1bmNvcmUsIEdFTjJfSUVSKTsKIAl9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVX KGk5MTUpKSB7CiAJCWd0LT5pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjJfSUVS KTsKQEAgLTE2NzksNyArMTY3OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICplcnJvcl9tc2coc3Ry dWN0IGk5MTVfZ3B1X2NvcmVkdW1wICplcnJvcikKIAogCWxlbiA9IHNjbnByaW50ZihlcnJvci0+ ZXJyb3JfbXNnLCBzaXplb2YoZXJyb3ItPmVycm9yX21zZyksCiAJCQkiR1BVIEhBTkc6IGVjb2Rl ICVkOiV4OiUwOHgiLAotCQkJSU5URUxfR0VOKGVycm9yLT5pOTE1KSwgaHVuZ19jbGFzc2VzLAor CQkJR1JBUEhJQ1NfVkVSKGVycm9yLT5pOTE1KSwgaHVuZ19jbGFzc2VzLAogCQkJZ2VuZXJhdGVf ZWNvZGUoZmlyc3QpKTsKIAlpZiAoZmlyc3QgJiYgZmlyc3QtPmNvbnRleHQucGlkKSB7CiAJCS8q IEp1c3Qgc2hvdyB0aGUgZmlyc3QgZXhlY3V0aW5nIHByb2Nlc3MsIG1vcmUgaXMgY29uZnVzaW5n ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCA3ZWVmYmRlYzI1YTIuLjg2NWU3Y2RhOWY1 MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0yMTc0LDcgKzIxNzQsNyBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgaWxrX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAlndF9paXIg PSByYXdfcmVnX3JlYWQocmVncywgR1RJSVIpOwogCWlmIChndF9paXIpIHsKIAkJcmF3X3JlZ193 cml0ZShyZWdzLCBHVElJUiwgZ3RfaWlyKTsKLQkJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQor CQlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID49IDYpCiAJCQlnZW42X2d0X2lycV9oYW5kbGVyKCZp OTE1LT5ndCwgZ3RfaWlyKTsKIAkJZWxzZQogCQkJZ2VuNV9ndF9pcnFfaGFuZGxlcigmaTkxNS0+ Z3QsIGd0X2lpcik7CkBAIC0yMTkxLDcgKzIxOTEsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaWxr X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJcmV0ID0gSVJRX0hBTkRMRUQ7CiAJ fQogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSA2KSB7CiAJCXUzMiBwbV9paXIgPSByYXdfcmVnX3JlYWQocmVncywgR0VONl9QTUlJUik7 CiAJCWlmIChwbV9paXIpIHsKIAkJCXJhd19yZWdfd3JpdGUocmVncywgR0VONl9QTUlJUiwgcG1f aWlyKTsKQEAgLTMwMTQsNyArMzAxNCw3IEBAIHN0YXRpYyB2b2lkIGlsa19pcnFfcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCUdFTjNfSVJRX1JFU0VUKHVuY29yZSwg REUpOwogCWRldl9wcml2LT5pcnFfbWFzayA9IH4wdTsKIAotCWlmIChJU19HRU4oZGV2X3ByaXYs IDcpKQorCWlmIChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDcpKQogCQlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBHRU43X0VSUl9JTlQsIDB4ZmZmZmZmZmYpOwogCiAJaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpKSB7CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBzdGF0aWMgdm9pZCBpbGtfaXJx X3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKIAl1MzIgZGlzcGxheV9t YXNrLCBleHRyYV9tYXNrOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgeworCWlm IChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDcpIHsKIAkJZGlzcGxheV9tYXNrID0gKERFX01B U1RFUl9JUlFfQ09OVFJPTCB8IERFX0dTRV9JVkIgfAogCQkJCURFX1BDSF9FVkVOVF9JVkIgfCBE RV9BVVhfQ0hBTk5FTF9BX0lWQik7CiAJCWV4dHJhX21hc2sgPSAoREVfUElQRUNfVkJMQU5LX0lW QiB8IERFX1BJUEVCX1ZCTEFOS19JVkIgfApAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgdm9pZCBpbnRl bF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9wcml2 LT5sM19wYXJpdHkucmVtYXBfaW5mb1tpXSA9IE5VTEw7CiAKIAkvKiBwcmUtZ2VuMTEgdGhlIGd1 YyBpcnFzIGJpdHMgYXJlIGluIHRoZSB1cHBlciAxNiBiaXRzIG9mIHRoZSBwbSByZWcgKi8KLQlp ZiAoSEFTX0dUX1VDKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCisJaWYg KEhBU19HVF9VQyhkZXZfcHJpdikgJiYgR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA8IDExKQogCQlk ZXZfcHJpdi0+Z3QucG1fZ3VjX2V2ZW50cyA9IEdVQ19JTlRSX0dVQzJIT1NUIDw8IDE2OwogCiAJ aWYgKCFIQVNfRElTUExBWShkZXZfcHJpdikpCkBAIC00MzQ5LDE4ICs0MzQ5LDE4IEBAIHN0YXRp YyBpcnFfaGFuZGxlcl90IGludGVsX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJCXJldHVybiBjaGVycnl2aWV3X2lycV9oYW5kbGVyOwogCQllbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKIAkJCXJldHVybiB2YWxsZXl2aWV3X2lycV9oYW5k bGVyOwotCQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDQpKQorCQllbHNlIGlmIChJU19HUkFQ SElDU19WRVIoZGV2X3ByaXYsIDQpKQogCQkJcmV0dXJuIGk5NjVfaXJxX2hhbmRsZXI7Ci0JCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMykpCisJCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihk ZXZfcHJpdiwgMykpCiAJCQlyZXR1cm4gaTkxNV9pcnFfaGFuZGxlcjsKIAkJZWxzZQogCQkJcmV0 dXJuIGk4eHhfaXJxX2hhbmRsZXI7CiAJfSBlbHNlIHsKIAkJaWYgKEhBU19NQVNURVJfVU5JVF9J UlEoZGV2X3ByaXYpKQogCQkJcmV0dXJuIGRnMV9pcnFfaGFuZGxlcjsKLQkJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTEpCisJCWlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDExKQog CQkJcmV0dXJuIGdlbjExX2lycV9oYW5kbGVyOwotCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpCisJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0gOCkKIAkJCXJl dHVybiBnZW44X2lycV9oYW5kbGVyOwogCQllbHNlCiAJCQlyZXR1cm4gaWxrX2lycV9oYW5kbGVy OwpAQCAtNDM3NCwxNiArNDM3NCwxNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pcnFfcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJY2hlcnJ5dmlld19pcnFfcmVzZXQo ZGV2X3ByaXYpOwogCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKIAkJCXZhbGxl eXZpZXdfaXJxX3Jlc2V0KGRldl9wcml2KTsKLQkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0 KSkKKwkJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCA0KSkKIAkJCWk5NjVfaXJx X3Jlc2V0KGRldl9wcml2KTsKLQkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAzKSkKKwkJZWxz ZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCAzKSkKIAkJCWk5MTVfaXJxX3Jlc2V0KGRl dl9wcml2KTsKIAkJZWxzZQogCQkJaTh4eF9pcnFfcmVzZXQoZGV2X3ByaXYpOwogCX0gZWxzZSB7 Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQorCQlpZiAoR1JBUEhJQ1NfVkVSKGRl dl9wcml2KSA+PSAxMSkKIAkJCWdlbjExX2lycV9yZXNldChkZXZfcHJpdik7Ci0JCWVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwkJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9w cml2KSA+PSA4KQogCQkJZ2VuOF9pcnFfcmVzZXQoZGV2X3ByaXYpOwogCQllbHNlCiAJCQlpbGtf aXJxX3Jlc2V0KGRldl9wcml2KTsKQEAgLTQzOTcsMTYgKzQzOTcsMTYgQEAgc3RhdGljIHZvaWQg aW50ZWxfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAkJCWNoZXJyeXZpZXdfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsKIAkJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikpCiAJCQl2YWxsZXl2aWV3X2lycV9wb3N0aW5zdGFsbChkZXZf cHJpdik7Ci0JCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNCkpCisJCWVsc2UgaWYgKElTX0dS QVBISUNTX1ZFUihkZXZfcHJpdiwgNCkpCiAJCQlpOTY1X2lycV9wb3N0aW5zdGFsbChkZXZfcHJp dik7Ci0JCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMykpCisJCWVsc2UgaWYgKElTX0dSQVBI SUNTX1ZFUihkZXZfcHJpdiwgMykpCiAJCQlpOTE1X2lycV9wb3N0aW5zdGFsbChkZXZfcHJpdik7 CiAJCWVsc2UKIAkJCWk4eHhfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsKIAl9IGVsc2Ugewot CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKKwkJaWYgKEdSQVBISUNTX1ZFUihkZXZf cHJpdikgPj0gMTEpCiAJCQlnZW4xMV9pcnFfcG9zdGluc3RhbGwoZGV2X3ByaXYpOwotCQllbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCisJCWVsc2UgaWYgKEdSQVBISUNTX1ZFUihk ZXZfcHJpdikgPj0gOCkKIAkJCWdlbjhfaXJxX3Bvc3RpbnN0YWxsKGRldl9wcml2KTsKIAkJZWxz ZQogCQkJaWxrX2lycV9wb3N0aW5zdGFsbChkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVy Zi5jCmluZGV4IDg1YWQ2MmRiYWJmYS4uMjQ4NzcwNjFkMjc1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwpAQCAtNzE5LDcgKzcxOSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hcHBlbmRfb2FfcmVw b3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkgKiBpdCB0byB1c2Vyc3Bh Y2UuLi4KIAkJICovCiAJCXJlYXNvbiA9ICgocmVwb3J0MzJbMF0gPj4gT0FSRVBPUlRfUkVBU09O X1NISUZUKSAmCi0JCQkgIChJU19HRU4oc3RyZWFtLT5wZXJmLT5pOTE1LCAxMikgPworCQkJICAo SVNfR1JBUEhJQ1NfVkVSKHN0cmVhbS0+cGVyZi0+aTkxNSwgMTIpID8KIAkJCSAgIE9BUkVQT1JU X1JFQVNPTl9NQVNLX0VYVEVOREVEIDoKIAkJCSAgIE9BUkVQT1JUX1JFQVNPTl9NQVNLKSk7CiAK QEAgLTczNCw3ICs3MzQsNyBAQCBzdGF0aWMgaW50IGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJICogdW5kZXJzdGFuZCB0aGF0IHRoZSBJ RCBoYXMgYmVlbiBzcXVhc2hlZCBieSB0aGUga2VybmVsLgogCQkgKi8KIAkJaWYgKCEocmVwb3J0 MzJbMF0gJiBzdHJlYW0tPnBlcmYtPmdlbjhfdmFsaWRfY3R4X2JpdCkgJiYKLQkJICAgIElOVEVM X0dFTihzdHJlYW0tPnBlcmYtPmk5MTUpIDw9IDExKQorCQkgICAgR1JBUEhJQ1NfVkVSKHN0cmVh bS0+cGVyZi0+aTkxNSkgPD0gMTEpCiAJCQljdHhfaWQgPSByZXBvcnQzMlsyXSA9IElOVkFMSURf Q1RYX0lEOwogCiAJCS8qCkBAIC04MDEsNyArODAxLDcgQEAgc3RhdGljIGludCBnZW44X2FwcGVu ZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJaWYgKHN0YXJ0 X29mZnNldCAhPSAqb2Zmc2V0KSB7CiAJCWk5MTVfcmVnX3Qgb2FoZWFkcHRyOwogCi0JCW9haGVh ZHB0ciA9IElTX0dFTihzdHJlYW0tPnBlcmYtPmk5MTUsIDEyKSA/CisJCW9haGVhZHB0ciA9IElT X0dSQVBISUNTX1ZFUihzdHJlYW0tPnBlcmYtPmk5MTUsIDEyKSA/CiAJCQkgICAgR0VOMTJfT0FH X09BSEVBRFBUUiA6IEdFTjhfT0FIRUFEUFRSOwogCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZzdHJl YW0tPm9hX2J1ZmZlci5wdHJfbG9jaywgZmxhZ3MpOwpAQCAtODU0LDcgKzg1NCw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJaWYg KGRybV9XQVJOX09OKCZ1bmNvcmUtPmk5MTUtPmRybSwgIXN0cmVhbS0+b2FfYnVmZmVyLnZhZGRy KSkKIAkJcmV0dXJuIC1FSU87CiAKLQlvYXN0YXR1c19yZWcgPSBJU19HRU4oc3RyZWFtLT5wZXJm LT5pOTE1LCAxMikgPworCW9hc3RhdHVzX3JlZyA9IElTX0dSQVBISUNTX1ZFUihzdHJlYW0tPnBl cmYtPmk5MTUsIDEyKSA/CiAJCSAgICAgICBHRU4xMl9PQUdfT0FTVEFUVVMgOiBHRU44X09BU1RB VFVTOwogCiAJb2FzdGF0dXMgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIG9hc3RhdHVzX3Jl Zyk7CkBAIC05MDEsNyArOTAxLDcgQEAgc3RhdGljIGludCBnZW44X29hX3JlYWQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIG9hc3Rh dHVzX3JlZywKIAkJCQkgR0VOOF9PQVNUQVRVU19DT1VOVEVSX09WRVJGTE9XIHwKIAkJCQkgR0VO OF9PQVNUQVRVU19SRVBPUlRfTE9TVCwKLQkJCQkgSVNfR0VOX1JBTkdFKHVuY29yZS0+aTkxNSwg OCwgMTEpID8KKwkJCQkgSVNfR1JBUEhJQ1NfUkFOR0UodW5jb3JlLT5pOTE1LCA4LCAxMSkgPwog CQkJCSAoR0VOOF9PQVNUQVRVU19IRUFEX1BPSU5URVJfV1JBUCB8CiAJCQkJICBHRU44X09BU1RB VFVTX1RBSUxfUE9JTlRFUl9XUkFQKSA6IDApOwogCX0KQEAgLTEyNDMsNyArMTI0Myw3IEBAIHN0 YXRpYyBpbnQgb2FfZ2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKIAlpZiAoSVNfRVJSKGNlKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2UpOwogCi0Jc3dpdGNo IChJTlRFTF9HRU4oY2UtPmVuZ2luZS0+aTkxNSkpIHsKKwlzd2l0Y2ggKEdSQVBISUNTX1ZFUihj ZS0+ZW5naW5lLT5pOTE1KSkgewogCWNhc2UgNzogewogCQkvKgogCQkgKiBPbiBIYXN3ZWxsIHdl IGRvbid0IGRvIGFueSBwb3N0IHByb2Nlc3Npbmcgb2YgdGhlIHJlcG9ydHMKQEAgLTEyOTcsNyAr MTI5Nyw3IEBAIHN0YXRpYyBpbnQgb2FfZ2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIAl9CiAKIAlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoSU5URUxf R0VOKGNlLT5lbmdpbmUtPmk5MTUpKTsKKwkJTUlTU0lOR19DQVNFKEdSQVBISUNTX1ZFUihjZS0+ ZW5naW5lLT5pOTE1KSk7CiAJfQogCiAJY2UtPnRhZyA9IHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lk OwpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgc3RhdGljIHUzMiAqc2F2ZV9yZXN0b3JlX3JlZ2lzdGVy KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sIHUzMiAqY3MsCiAKIAljbWQgPSBzYXZl ID8gTUlfU1RPUkVfUkVHSVNURVJfTUVNIDogTUlfTE9BRF9SRUdJU1RFUl9NRU07CiAJY21kIHw9 IE1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKLQlpZiAoSU5URUxfR0VOKHN0cmVhbS0+cGVyZi0+aTkx NSkgPj0gOCkKKwlpZiAoR1JBUEhJQ1NfVkVSKHN0cmVhbS0+cGVyZi0+aTkxNSkgPj0gOCkKIAkJ Y21kKys7CiAKIAlmb3IgKGQgPSAwOyBkIDwgZHdvcmRfY291bnQ7IGQrKykgewpAQCAtMTczMSw3 ICsxNzMxLDcgQEAgc3RhdGljIGludCBhbGxvY19ub2Ffd2FpdChzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtKQogCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoTUlfUFJFRElDQVRF X1JFU1VMVF8xKTsKIAogCS8qIFJlc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nIGlmIHdlIGhhZCB0 aW1lc3RhbXBzIHJvbGwgb3Zlci4gKi8KLQkqY3MrKyA9IChJTlRFTF9HRU4oaTkxNSkgPCA4ID8K KwkqY3MrKyA9IChHUkFQSElDU19WRVIoaTkxNSkgPCA4ID8KIAkJIE1JX0JBVENIX0JVRkZFUl9T VEFSVCA6CiAJCSBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCkgfAogCQlNSV9CQVRDSF9QUkVE SUNBVEU7CkBAIC0xNzY4LDcgKzE3NjgsNyBAQCBzdGF0aWMgaW50IGFsbG9jX25vYV93YWl0KHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJKmNzKysgPSBpOTE1X21taW9fcmVnX29m ZnNldChNSV9QUkVESUNBVEVfUkVTVUxUXzEpOwogCiAJLyogUHJlZGljYXRlIHRoZSBqdW1wLiAg Ki8KLQkqY3MrKyA9IChJTlRFTF9HRU4oaTkxNSkgPCA4ID8KKwkqY3MrKyA9IChHUkFQSElDU19W RVIoaTkxNSkgPCA4ID8KIAkJIE1JX0JBVENIX0JVRkZFUl9TVEFSVCA6CiAJCSBNSV9CQVRDSF9C VUZGRVJfU1RBUlRfR0VOOCkgfAogCQlNSV9CQVRDSF9QUkVESUNBVEU7CkBAIC0xODkyLDcgKzE4 OTIsNyBAQCBhbGxvY19vYV9jb25maWdfYnVmZmVyKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0sCiAJCQkgICAgIG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbik7CiAKIAkvKiBKdW1wIGlu dG8gdGhlIGFjdGl2ZSB3YWl0LiAqLwotCSpjcysrID0gKElOVEVMX0dFTihzdHJlYW0tPnBlcmYt Pmk5MTUpIDwgOCA/CisJKmNzKysgPSAoR1JBUEhJQ1NfVkVSKHN0cmVhbS0+cGVyZi0+aTkxNSkg PCA4ID8KIAkJIE1JX0JBVENIX0JVRkZFUl9TVEFSVCA6CiAJCSBNSV9CQVRDSF9CVUZGRVJfU1RB UlRfR0VOOCk7CiAJKmNzKysgPSBpOTE1X2dndHRfb2Zmc2V0KHN0cmVhbS0+bm9hX3dhaXQpOwpA QCAtMjQ5Miw3ICsyNDkyLDcgQEAgZ2VuOF9lbmFibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAogCSAqIGJlIHJlYWQgYmFjayBmcm9tIGF1dG9tYXRpY2FsbHkg dHJpZ2dlcmVkIHJlcG9ydHMsIGFzIHBhcnQgb2YgdGhlCiAJICogUlBUX0lEIGZpZWxkLgogCSAq LwotCWlmIChJU19HRU5fUkFOR0Uoc3RyZWFtLT5wZXJmLT5pOTE1LCA5LCAxMSkpIHsKKwlpZiAo SVNfR1JBUEhJQ1NfUkFOR0Uoc3RyZWFtLT5wZXJmLT5pOTE1LCA5LCAxMSkpIHsKIAkJaW50ZWxf dW5jb3JlX3dyaXRlKHVuY29yZSwgR0VOOF9PQV9ERUJVRywKIAkJCQkgICBfTUFTS0VEX0JJVF9F TkFCTEUoR0VOOV9PQV9ERUJVR19ESVNBQkxFX0NMS19SQVRJT19SRVBPUlRTIHwKIAkJCQkJCSAg ICAgIEdFTjlfT0FfREVCVUdfSU5DTFVERV9DTEtfUkFUSU8pKTsKQEAgLTI3OTcsNyArMjc5Nyw3 IEBAIGdldF9kZWZhdWx0X3NzZXVfY29uZmlnKHN0cnVjdCBpbnRlbF9zc2V1ICpvdXRfc3NldSwK IAogCSpvdXRfc3NldSA9IGludGVsX3NzZXVfZnJvbV9kZXZpY2VfaW5mbyhkZXZpbmZvX3NzZXUp OwogCi0JaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIDExKSkgeworCWlmIChJU19HUkFQSElDU19W RVIoZW5naW5lLT5pOTE1LCAxMSkpIHsKIAkJLyoKIAkJICogV2Ugb25seSBuZWVkIHN1YnNsaWNl IGNvdW50IHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG9uZXMKIAkJICogd2Ugc2VsZWN0IC0g anVzdCB0dXJuIG9mZiBsb3cgYml0cyBpbiB0aGUgYW1vdW50IG9mIGhhbGYgb2YKQEAgLTI4NjQs NyArMjg2NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAogCX0KIAogCWlmICghKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiBT QU1QTEVfT0FfUkVQT1JUKSAmJgotCSAgICAoSU5URUxfR0VOKHBlcmYtPmk5MTUpIDwgMTIgfHwg IXN0cmVhbS0+Y3R4KSkgeworCSAgICAoR1JBUEhJQ1NfVkVSKHBlcmYtPmk5MTUpIDwgMTIgfHwg IXN0cmVhbS0+Y3R4KSkgewogCQlEUk1fREVCVUcoIk9ubHkgT0EgcmVwb3J0IHNhbXBsaW5nIHN1 cHBvcnRlZFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTMwMDYsNyArMzAwNiw3IEBA IHZvaWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsCiAKIAkvKiBwZXJmLmV4Y2x1c2l2ZV9zdHJlYW0gc2VyaWFsaXNlZCBieSBscmNfY29uZmln dXJlX2FsbF9jb250ZXh0cygpICovCiAJc3RyZWFtID0gUkVBRF9PTkNFKGVuZ2luZS0+aTkxNS0+ cGVyZi5leGNsdXNpdmVfc3RyZWFtKTsKLQlpZiAoc3RyZWFtICYmIElOVEVMX0dFTihzdHJlYW0t PnBlcmYtPmk5MTUpIDwgMTIpCisJaWYgKHN0cmVhbSAmJiBHUkFQSElDU19WRVIoc3RyZWFtLT5w ZXJmLT5pOTE1KSA8IDEyKQogCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY2UsIHN0 cmVhbSk7CiB9CiAKQEAgLTM0NDMsNyArMzQ0Myw3IEBAIGk5MTVfcGVyZl9vcGVuX2lvY3RsX2xv Y2tlZChzdHJ1Y3QgaTkxNV9wZXJmICpwZXJmLAogCSAqLwogCWlmIChJU19IQVNXRUxMKHBlcmYt Pmk5MTUpICYmIHNwZWNpZmljX2N0eCkKIAkJcHJpdmlsZWdlZF9vcCA9IGZhbHNlOwotCWVsc2Ug aWYgKElTX0dFTihwZXJmLT5pOTE1LCAxMikgJiYgc3BlY2lmaWNfY3R4ICYmCisJZWxzZSBpZiAo SVNfR1JBUEhJQ1NfVkVSKHBlcmYtPmk5MTUsIDEyKSAmJiBzcGVjaWZpY19jdHggJiYKIAkJIChw cm9wcy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgPT0gMCkKIAkJcHJpdmlsZWdl ZF9vcCA9IGZhbHNlOwogCkBAIC00MTE5LDcgKzQxMTksNyBAQCBpbnQgaTkxNV9wZXJmX2FkZF9j b25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAl9CiAJb2Ff Y29uZmlnLT5iX2NvdW50ZXJfcmVncyA9IHJlZ3M7CiAKLQlpZiAoSU5URUxfR0VOKHBlcmYtPmk5 MTUpIDwgOCkgeworCWlmIChHUkFQSElDU19WRVIocGVyZi0+aTkxNSkgPCA4KSB7CiAJCWlmIChh cmdzLT5uX2ZsZXhfcmVncyAhPSAwKSB7CiAJCQllcnIgPSAtRUlOVkFMOwogCQkJZ290byByZWdf ZXJyOwpAQCAtNDM2NCw3ICs0MzY0LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJICovCiAJCXBlcmYtPm9wcy5yZWFkID0gZ2VuOF9vYV9y ZWFkOwogCi0JCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgOCwgOSkpIHsKKwkJaWYgKElTX0dSQVBI SUNTX1JBTkdFKGk5MTUsIDgsIDkpKSB7CiAJCQlwZXJmLT5vcHMuaXNfdmFsaWRfYl9jb3VudGVy X3JlZyA9CiAJCQkJZ2VuN19pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKIAkJCXBlcmYtPm9wcy5p c192YWxpZF9tdXhfcmVnID0KQEAgLTQzODMsNyArNDM4Myw3IEBAIHZvaWQgaTkxNV9wZXJmX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCQlwZXJmLT5vcHMuZGlzYWJsZV9t ZXRyaWNfc2V0ID0gZ2VuOF9kaXNhYmxlX21ldHJpY19zZXQ7CiAJCQlwZXJmLT5vcHMub2FfaHdf dGFpbF9yZWFkID0gZ2VuOF9vYV9od190YWlsX3JlYWQ7CiAKLQkJCWlmIChJU19HRU4oaTkxNSwg OCkpIHsKKwkJCWlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgOCkpIHsKIAkJCQlwZXJmLT5jdHhf b2FjdHhjdHJsX29mZnNldCA9IDB4MTIwOwogCQkJCXBlcmYtPmN0eF9mbGV4ZXUwX29mZnNldCA9 IDB4MmNlOwogCkBAIC00Mzk0LDcgKzQzOTQsNyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJCQkJcGVyZi0+Z2VuOF92YWxpZF9jdHhfYml0 ID0gQklUKDE2KTsKIAkJCX0KLQkJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoaTkxNSwgMTAsIDEx KSkgeworCQl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1JBTkdFKGk5MTUsIDEwLCAxMSkpIHsKIAkJ CXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KIAkJCQlnZW43X2lzX3ZhbGlkX2Jf Y291bnRlcl9hZGRyOwogCQkJcGVyZi0+b3BzLmlzX3ZhbGlkX211eF9yZWcgPQpAQCAtNDQwOCw3 ICs0NDA4LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAkJCXBlcmYtPm9wcy5kaXNhYmxlX21ldHJpY19zZXQgPSBnZW4xMF9kaXNhYmxlX21l dHJpY19zZXQ7CiAJCQlwZXJmLT5vcHMub2FfaHdfdGFpbF9yZWFkID0gZ2VuOF9vYV9od190YWls X3JlYWQ7CiAKLQkJCWlmIChJU19HRU4oaTkxNSwgMTApKSB7CisJCQlpZiAoSVNfR1JBUEhJQ1Nf VkVSKGk5MTUsIDEwKSkgewogCQkJCXBlcmYtPmN0eF9vYWN0eGN0cmxfb2Zmc2V0ID0gMHgxMjg7 CiAJCQkJcGVyZi0+Y3R4X2ZsZXhldTBfb2Zmc2V0ID0gMHgzZGU7CiAJCQl9IGVsc2UgewpAQCAt NDQxNiw3ICs0NDE2LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIAkJCQlwZXJmLT5jdHhfZmxleGV1MF9vZmZzZXQgPSAweDc4ZTsKIAkJCX0K IAkJCXBlcmYtPmdlbjhfdmFsaWRfY3R4X2JpdCA9IEJJVCgxNik7Ci0JCX0gZWxzZSBpZiAoSVNf R0VOKGk5MTUsIDEyKSkgeworCQl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCAxMikp IHsKIAkJCXBlcmYtPm9wcy5pc192YWxpZF9iX2NvdW50ZXJfcmVnID0KIAkJCQlnZW4xMl9pc192 YWxpZF9iX2NvdW50ZXJfYWRkcjsKIAkJCXBlcmYtPm9wcy5pc192YWxpZF9tdXhfcmVnID0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IDQxNjUxYWMyNTVmYS4uYTRiNzJiZDljZWIzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgYm9vbCBleGNs dXNpdmVfbW1pb19hY2Nlc3MoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJ ICogcmlzayBhIG1hY2hpbmUgaGFuZy4gRm9yIGEgZnVuIGhpc3RvcnkgbGVzc29uIGRpZyBvdXQg dGhlIG9sZAogCSAqIHVzZXJzcGFjZSBpbnRlbF9ncHVfdG9wIGFuZCBydW4gaXQgb24gSXZ5YnJp ZGdlIG9yIEhhc3dlbGwhCiAJICovCi0JcmV0dXJuIElTX0dFTihpOTE1LCA3KTsKKwlyZXR1cm4g SVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDcpOwogfQogCiBzdGF0aWMgdm9pZCBlbmdpbmVfc2FtcGxl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdW5zaWduZWQgaW50IHBlcmlvZF9ucykK QEAgLTQ2Myw3ICs0NjMsNyBAQCBlbmdpbmVfZXZlbnRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKIAljYXNlIEk5MTVfU0FNUExFX1dBSVQ6CiAJCWJyZWFrOwogCWNhc2Ug STkxNV9TQU1QTEVfU0VNQToKLQkJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNikKKwkJ aWYgKEdSQVBISUNTX1ZFUihlbmdpbmUtPmk5MTUpIDwgNikKIAkJCXJldHVybiAtRU5PREVWOwog CQlicmVhazsKIAlkZWZhdWx0OgpAQCAtNDgzLDcgKzQ4Myw3IEBAIGNvbmZpZ19zdGF0dXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBjb25maWcpCiAJCQlyZXR1cm4gLUVOT0RF VjsKIAkJZmFsbHRocm91Z2g7CiAJY2FzZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZOgot CQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNikKKwkJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8IDYp CiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X1BNVV9JTlRFUlJVUFRT OgpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWludCByZXQgPSAtRU5PTUVNOwogCi0JaWYgKElOVEVM X0dFTihpOTE1KSA8PSAyKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA8PSAyKSB7CiAJCWRy bV9pbmZvKCZpOTE1LT5kcm0sICJQTVUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBHUFUuIik7CiAJ CXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IDkxNjU5NzFj M2M0Ny4uYmQ0OGVlMWVkZDQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAt MTE3NSwxMiArMTE3NSwxMiBAQCBfX2VtaXRfc2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVx dWVzdCAqdG8sCiAJCSAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20sCiAJCSAgICAgIHUz MiBzZXFubykKIHsKLQljb25zdCBpbnQgaGFzX3Rva2VuID0gSU5URUxfR0VOKHRvLT5lbmdpbmUt Pmk5MTUpID49IDEyOworCWNvbnN0IGludCBoYXNfdG9rZW4gPSBHUkFQSElDU19WRVIodG8tPmVu Z2luZS0+aTkxNSkgPj0gMTI7CiAJdTMyIGh3c3Bfb2Zmc2V0OwogCWludCBsZW4sIGVycjsKIAl1 MzIgKmNzOwogCi0JR0VNX0JVR19PTihJTlRFTF9HRU4odG8tPmVuZ2luZS0+aTkxNSkgPCA4KTsK KwlHRU1fQlVHX09OKEdSQVBISUNTX1ZFUih0by0+ZW5naW5lLT5pOTE1KSA8IDgpOwogCUdFTV9C VUdfT04oaTkxNV9yZXF1ZXN0X2hhc19pbml0aWFsX2JyZWFkY3J1bWIodG8pKTsKIAogCS8qIFdl IG5lZWQgdG8gcGluIHRoZSBzaWduYWxlcidzIEhXU1AgdW50aWwgd2UgYXJlIGZpbmlzaGVkIHJl YWRpbmcuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCmluZGV4IDBiYzdiNDlmODQz Yy4uZDY3ZTBkNmJlMThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1 c3BlbmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwpAQCAtMzgs MTQgKzM4LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3NhdmVfc3dmKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlpbnQgaTsKIAogCS8qIFNjcmF0Y2ggc3BhY2UgKi8KLQlpZiAo SVNfR0VOKGRldl9wcml2LCAyKSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7CisJaWYgKElTX0dS QVBISUNTX1ZFUihkZXZfcHJpdiwgMikgJiYgSVNfTU9CSUxFKGRldl9wcml2KSkgewogCQlmb3Ig KGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAJCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGMFtpXSA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNXRjAoaSkpOwogCQkJZGV2X3ByaXYtPnJlZ2ZpbGUu c2F2ZVNXRjFbaV0gPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBTV0YxKGkpKTsKIAkJfQogCQlm b3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogCQkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjNbaV0g PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBTV0YzKGkpKTsKLQl9IGVsc2UgaWYgKElTX0dFTihk ZXZfcHJpdiwgMikpIHsKKwl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgMikp IHsKIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykKIAkJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVT V0YxW2ldID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU1dGMShpKSk7CiAJfSBlbHNlIGlmIChI QVNfR01DSChkZXZfcHJpdikpIHsKQEAgLTYzLDE0ICs2MywxNCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9yZXN0b3JlX3N3ZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50IGk7 CiAKIAkvKiBTY3JhdGNoIHNwYWNlICovCi0JaWYgKElTX0dFTihkZXZfcHJpdiwgMikgJiYgSVNf TU9CSUxFKGRldl9wcml2KSkgeworCWlmIChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDIpICYm IElTX01PQklMRShkZXZfcHJpdikpIHsKIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewogCQkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFNXRjAoaSksIGRldl9wcml2LT5yZWdmaWxlLnNhdmVT V0YwW2ldKTsKIAkJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBTV0YxKGkpLCBkZXZfcHJpdi0+ cmVnZmlsZS5zYXZlU1dGMVtpXSk7CiAJCX0KIAkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykKIAkJ CWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBTV0YzKGkpLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZl U1dGM1tpXSk7Ci0JfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7CisJfSBlbHNlIGlm IChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDIpKSB7CiAJCWZvciAoaSA9IDA7IGkgPCA3OyBp KyspCiAJCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgU1dGMShpKSwgZGV2X3ByaXYtPnJlZ2Zp bGUuc2F2ZVNXRjFbaV0pOwogCX0gZWxzZSBpZiAoSEFTX0dNQ0goZGV2X3ByaXYpKSB7CkBAIC04 OCwxMCArODgsMTAgQEAgdm9pZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldl9w cml2LT5kcm0uZGV2KTsKIAogCS8qIERpc3BsYXkgYXJiaXRyYXRpb24gY29udHJvbCAqLwotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpCisJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikg PD0gNCkKIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZURTUEFSQiA9IGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIERTUEFSQik7CiAKLQlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkKKwlpZiAoSVNfR1JB UEhJQ1NfVkVSKGRldl9wcml2LCA0KSkKIAkJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgR0NE R01CVVMsCiAJCQkJICAgICAmZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsKIApAQCAt MTA0LDEyICsxMDQsMTIgQEAgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlpbnRlbF9yZXN0b3JlX3N3ZihkZXZfcHJpdik7CiAK LQlpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkKKwlpZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2 LCA0KSkKIAkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYsIEdDREdNQlVTLAogCQkJCSAgICAg IGRldl9wcml2LT5yZWdmaWxlLnNhdmVHQ0RHTUJVUyk7CiAKIAkvKiBEaXNwbGF5IGFyYml0cmF0 aW9uICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCkKKwlpZiAoR1JBUEhJQ1NfVkVS KGRldl9wcml2KSA8PSA0KQogCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFNQQVJCLCBkZXZf cHJpdi0+cmVnZmlsZS5zYXZlRFNQQVJCKTsKIAogCS8qIG9ubHkgcmVzdG9yZSBGQkMgaW5mbyBv biB0aGUgcGxhdGZvcm0gdGhhdCBzdXBwb3J0cyBGQkMqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNm cy5jCmluZGV4IDRjNmI1ZDUyYjVjYS4uYjA5OWUwOWNjYzMyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXQgPSAwOwogCWlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJcmV0ID0gc3lzZnNf Y3JlYXRlX2ZpbGVzKCZrZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwotCWVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNikKKwllbHNlIGlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49IDYp CiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygma2Rldi0+a29iaiwgZ2VuNl9hdHRycyk7CiAJ aWYgKHJldCkKIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlJQUyBzeXNmcyBzZXR1cCBmYWls ZWRcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwppbmRleCAxNzI3OTkyNzdkZDUuLjMxYTEw NWJjMTc5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKQEAgLTc0LDcgKzc0LDcgQEAgdm9p ZCBpbnRlbF92Z3B1X2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ ICogd2UgZG8gbm90IHN1cHBvcnQgVkdUIG9uIG9sZGVyIGdlbnMsIHJldHVybiBlYXJseSBzbyB3 ZSBkb24ndCBoYXZlCiAJICogdG8gY29uc2lkZXIgZGlmZmVyZW50bHkgbnVtYmVyZWQgb3Igc2l6 ZWQgTU1JTyBiYXJzCiAJICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQorCWlmIChH UkFQSElDU19WRVIoZGV2X3ByaXYpIDwgNikKIAkJcmV0dXJuOwogCiAJc2hhcmVkX2FyZWEgPSBw Y2lfaW9tYXBfcmFuZ2UocGRldiwgMCwgVkdUX1BWSU5GT19QQUdFLCBWR1RfUFZJTkZPX1NJWkUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKaW5kZXggNmEzNTFhNzA5 NDE3Li5iOGFlMzJjNTg4YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2lu Zm8uYwpAQCAtMjU2LDEwICsyNTYsMTAgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1l X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChJU19BRExTX0RJ U1BMQVlfU1RFUChkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9BMCkpCiAJCWZvcl9lYWNoX3BpcGUo ZGV2X3ByaXYsIHBpcGUpCiAJCQlydW50aW1lLT5udW1fc2NhbGVyc1twaXBlXSA9IDA7Ci0JZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgeworCWVsc2UgaWYgKEdSQVBISUNTX1ZF UihkZXZfcHJpdikgPj0gMTApIHsKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKIAkJ CXJ1bnRpbWUtPm51bV9zY2FsZXJzW3BpcGVdID0gMjsKLQl9IGVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgOSkpIHsKKwl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgOSkpIHsK IAkJcnVudGltZS0+bnVtX3NjYWxlcnNbUElQRV9BXSA9IDI7CiAJCXJ1bnRpbWUtPm51bV9zY2Fs ZXJzW1BJUEVfQl0gPSAyOwogCQlydW50aW1lLT5udW1fc2NhbGVyc1tQSVBFX0NdID0gMTsKQEAg LTI3MCwxMCArMjcwLDEwIEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoSEFTX0QxMl9QTEFORV9NSU5J TUlaQVRJT04oZGV2X3ByaXYpKQogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQogCQkJ cnVudGltZS0+bnVtX3Nwcml0ZXNbcGlwZV0gPSA0OwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTEpCisJZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSAxMSkKIAkJ Zm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKIAkJCXJ1bnRpbWUtPm51bV9zcHJpdGVzW3Bp cGVdID0gNjsKLQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSB8fCBJU19HRU1JTklMQUtF KGRldl9wcml2KSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDEwKSB8fCBJ U19HRU1JTklMQUtFKGRldl9wcml2KSkKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkK IAkJCXJ1bnRpbWUtPm51bV9zcHJpdGVzW3BpcGVdID0gMzsKIAllbHNlIGlmIChJU19CUk9YVE9O KGRldl9wcml2KSkgewpAQCAtMjkyLDEyICsyOTIsMTIgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19ydW50aW1lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp IHsKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKIAkJCXJ1bnRpbWUtPm51bV9zcHJp dGVzW3BpcGVdID0gMjsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJ U19HNFgoZGV2X3ByaXYpKSB7CisJfSBlbHNlIGlmIChHUkFQSElDU19WRVIoZGV2X3ByaXYpID49 IDUgfHwgSVNfRzRYKGRldl9wcml2KSkgewogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBl KQogCQkJcnVudGltZS0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAxOwogCX0KIAotCWlmIChIQVNfRElT UExBWShkZXZfcHJpdikgJiYgSVNfR0VOX1JBTkdFKGRldl9wcml2LCA3LCA4KSAmJgorCWlmIChI QVNfRElTUExBWShkZXZfcHJpdikgJiYgSVNfR1JBUEhJQ1NfUkFOR0UoZGV2X3ByaXYsIDcsIDgp ICYmCiAJICAgIEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7CiAJCXUzMiBmdXNlX3N0cmFwID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRlVTRV9TVFJBUCk7CiAJCXUzMiBzZnVzZV9zdHJhcCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNGVVNFX1NUUkFQKTsKQEAgLTMyNCw3ICszMjQsNyBA QCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCQlpbmZvLT5waXBlX21hc2sgJj0gfkJJVChQSVBFX0MpOwogCQkJ aW5mby0+Y3B1X3RyYW5zY29kZXJfbWFzayAmPSB+QklUKFRSQU5TQ09ERVJfQyk7CiAJCX0KLQl9 IGVsc2UgaWYgKEhBU19ESVNQTEFZKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKKwl9IGVsc2UgaWYgKEhBU19ESVNQTEFZKGRldl9wcml2KSAmJiBHUkFQSElDU19WRVIo ZGV2X3ByaXYpID49IDkpIHsKIAkJdTMyIGRmc20gPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBT S0xfREZTTSk7CiAKIAkJaWYgKGRmc20gJiBTS0xfREZTTV9QSVBFX0FfRElTQUJMRSkgewpAQCAt MzM5LDcgKzMzOSw3IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCWluZm8tPnBpcGVfbWFzayAmPSB+QklU KFBJUEVfQyk7CiAJCQlpbmZvLT5jcHVfdHJhbnNjb2Rlcl9tYXNrICY9IH5CSVQoVFJBTlNDT0RF Ul9DKTsKIAkJfQotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiAmJgorCQlpZiAoR1JB UEhJQ1NfVkVSKGRldl9wcml2KSA+PSAxMiAmJgogCQkgICAgKGRmc20gJiBUR0xfREZTTV9QSVBF X0RfRElTQUJMRSkpIHsKIAkJCWluZm8tPnBpcGVfbWFzayAmPSB+QklUKFBJUEVfRCk7CiAJCQlp bmZvLT5jcHVfdHJhbnNjb2Rlcl9tYXNrICY9IH5CSVQoVFJBTlNDT0RFUl9EKTsKQEAgLTM1MSwx NSArMzUxLDE1IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJaWYgKGRmc20gJiBTS0xfREZTTV9ESVNQTEFZ X1BNX0RJU0FCTEUpCiAJCQlpbmZvLT5kaXNwbGF5Lmhhc19mYmMgPSAwOwogCi0JCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDExICYmIChkZnNtICYgSUNMX0RGU01fRE1DX0RJU0FCTEUpKQor CQlpZiAoR1JBUEhJQ1NfVkVSKGRldl9wcml2KSA+PSAxMSAmJiAoZGZzbSAmIElDTF9ERlNNX0RN Q19ESVNBQkxFKSkKIAkJCWluZm8tPmRpc3BsYXkuaGFzX2NzciA9IDA7CiAKLQkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTAgJiYKKwkJaWYgKEdSQVBISUNTX1ZFUihkZXZfcHJpdikgPj0g MTAgJiYKIAkJICAgIChkZnNtICYgQ05MX0RGU01fRElTUExBWV9EU0NfRElTQUJMRSkpCiAJCQlp bmZvLT5kaXNwbGF5Lmhhc19kc2MgPSAwOwogCX0KIAotCWlmIChJU19HRU4oZGV2X3ByaXYsIDYp ICYmIGludGVsX3Z0ZF9hY3RpdmUoKSkgeworCWlmIChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYs IDYpICYmIGludGVsX3Z0ZF9hY3RpdmUoKSkgewogCQlkcm1faW5mbygmZGV2X3ByaXYtPmRybSwK IAkJCSAiRGlzYWJsaW5nIHBwR1RUIGZvciBWVC1kIHN1cHBvcnRcbiIpOwogCQlpbmZvLT5wcGd0 dF90eXBlID0gSU5URUxfUFBHVFRfTk9ORTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RyYW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RyYW0uYwppbmRl eCAxZTUzYzAxN2MzMGQuLjllMzEwNTdiMDgwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJhbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RyYW0u YwpAQCAtMTIxLDcgKzEyMSw3IEBAIHNrbF9kcmFtX2dldF9kaW1tX2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJCSAgICAgICBzdHJ1Y3QgZHJhbV9kaW1tX2luZm8gKmRpbW0s CiAJCSAgICAgICBpbnQgY2hhbm5lbCwgY2hhciBkaW1tX25hbWUsIHUxNiB2YWwpCiB7Ci0JaWYg KElOVEVMX0dFTihpOTE1KSA+PSAxMCkgeworCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gMTAp IHsKIAkJZGltbS0+c2l6ZSA9IGNubF9nZXRfZGltbV9zaXplKHZhbCk7CiAJCWRpbW0tPndpZHRo ID0gY25sX2dldF9kaW1tX3dpZHRoKHZhbCk7CiAJCWRpbW0tPnJhbmtzID0gY25sX2dldF9kaW1t X3JhbmtzKHZhbCk7CkBAIC00MjIsNyArNDIyLDcgQEAgc3RhdGljIGludCBpY2xfcGNvZGVfcmVh ZF9tZW1fZ2xvYmFsX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoSVNfR0VOKGRldl9wcml2LCAxMikpIHsKKwlp ZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCAxMikpIHsKIAkJc3dpdGNoICh2YWwgJiAweGYp IHsKIAkJY2FzZSAwOgogCQkJZHJhbV9pbmZvLT50eXBlID0gSU5URUxfRFJBTV9ERFI0OwpAQCAt NTAxLDEyICs1MDEsMTIgQEAgdm9pZCBpbnRlbF9kcmFtX2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAkgKi8KIAlkcmFtX2luZm8tPndtX2x2XzBfYWRqdXN0X25lZWRlZCA9 ICFJU19HRU45X0xQKGk5MTUpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA8IDkgfHwgIUhBU19E SVNQTEFZKGk5MTUpKQorCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPCA5IHx8ICFIQVNfRElTUExB WShpOTE1KSkKIAkJcmV0dXJuOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikKKwlpZiAo R1JBUEhJQ1NfVkVSKGk5MTUpID49IDEyKQogCQlyZXQgPSBnZW4xMl9nZXRfZHJhbV9pbmZvKGk5 MTUpOwotCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkKKwllbHNlIGlmIChHUkFQSElD U19WRVIoaTkxNSkgPj0gMTEpCiAJCXJldCA9IGdlbjExX2dldF9kcmFtX2luZm8oaTkxNSk7CiAJ ZWxzZSBpZiAoSVNfR0VOOV9MUChpOTE1KSkKIAkJcmV0ID0gYnh0X2dldF9kcmFtX2luZm8oaTkx NSk7CkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBpbnRlbF9kcmFtX2VkcmFtX2RldGVjdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAl1MzIgZWRyYW1fY2FwID0gMDsKIAotCWlm ICghKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUpIHx8IElOVEVMX0dFTihp OTE1KSA+PSA5KSkKKwlpZiAoIShJU19IQVNXRUxMKGk5MTUpIHx8IElTX0JST0FEV0VMTChpOTE1 KSB8fCBHUkFQSElDU19WRVIoaTkxNSkgPj0gOSkpCiAJCXJldHVybjsKIAogCWVkcmFtX2NhcCA9 IF9fcmF3X3VuY29yZV9yZWFkMzIoJmk5MTUtPnVuY29yZSwgSFNXX0VEUkFNX0NBUCk7CkBAIC01 NDksNyArNTQ5LDcgQEAgdm9pZCBpbnRlbF9kcmFtX2VkcmFtX2RldGVjdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAkgKiBUaGUgbmVlZGVkIGNhcGFiaWxpdHkgYml0cyBmb3Igc2l6 ZSBjYWxjdWxhdGlvbiBhcmUgbm90IHRoZXJlIHdpdGgKIAkgKiBwcmUgZ2VuOSBzbyByZXR1cm4g MTI4TUIgYWx3YXlzLgogCSAqLwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA5KQorCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPCA5KQogCQlpOTE1LT5lZHJhbV9zaXplX21iID0gMTI4OwogCWVsc2UK IAkJaTkxNS0+ZWRyYW1fc2l6ZV9tYiA9IGdlbjlfZWRyYW1fc2l6ZV9tYihpOTE1LCBlZHJhbV9j YXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wY2guYwppbmRleCA3NDc2ZjBlMDYzYzYuLjlhNzY3MTBm YzI2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGNoLmMKQEAgLTEzLDE3ICsxMywxNyBAQCBpbnRl bF9wY2hfdHlwZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkIHNob3J0IGlkKQogCXN3aXRjaCAoaWQpIHsKIAljYXNlIElOVEVMX1BDSF9JQlhfREVWSUNF X0lEX1RZUEU6CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRm91bmQgSWJleCBQZWFr IFBDSFxuIik7Ci0JCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhSVNfR0VOKGRldl9wcml2 LCA1KSk7CisJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhSVNfR1JBUEhJQ1NfVkVSKGRl dl9wcml2LCA1KSk7CiAJCXJldHVybiBQQ0hfSUJYOwogCWNhc2UgSU5URUxfUENIX0NQVF9ERVZJ Q0VfSURfVFlQRToKIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJGb3VuZCBDb3VnYXJQ b2ludCBQQ0hcbiIpOwogCQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwKLQkJCSAgICAhSVNf R0VOKGRldl9wcml2LCA2KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7CisJCQkgICAgIUlT X0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwog CQlyZXR1cm4gUENIX0NQVDsKIAljYXNlIElOVEVMX1BDSF9QUFRfREVWSUNFX0lEX1RZUEU6CiAJ CWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRm91bmQgUGFudGhlclBvaW50IFBDSFxuIik7 CiAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLAotCQkJICAgICFJU19HRU4oZGV2X3ByaXYs IDYpICYmICFJU19JVllCUklER0UoZGV2X3ByaXYpKTsKKwkJCSAgICAhSVNfR1JBUEhJQ1NfVkVS KGRldl9wcml2LCA2KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7CiAJCS8qIFBhbnRoZXJQ b2ludCBpcyBDUFQgY29tcGF0aWJsZSAqLwogCQlyZXR1cm4gUENIX0NQVDsKIAljYXNlIElOVEVM X1BDSF9MUFRfREVWSUNFX0lEX1RZUEU6CkBAIC0xNzksOSArMTc5LDkgQEAgaW50ZWxfdmlydF9k ZXRlY3RfcGNoKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaWQg PSBJTlRFTF9QQ0hfTFBUX0xQX0RFVklDRV9JRF9UWVBFOwogCWVsc2UgaWYgKElTX0hBU1dFTEwo ZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCiAJCWlkID0gSU5URUxfUENIX0xQ VF9ERVZJQ0VfSURfVFlQRTsKLQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lW WUJSSURHRShkZXZfcHJpdikpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCA2 KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQogCQlpZCA9IElOVEVMX1BDSF9DUFRfREVWSUNF X0lEX1RZUEU7Ci0JZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKKwllbHNlIGlmIChJU19H UkFQSElDU19WRVIoZGV2X3ByaXYsIDUpKQogCQlpZCA9IElOVEVMX1BDSF9JQlhfREVWSUNFX0lE X1RZUEU7CiAKIAlpZiAoaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCAwNjZhYmFhNzNh MDYuLmY0YzdmN2ZkNTliMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC03NjIyLDkgKzc2 MjIsOSBAQCB2b2lkIGludGVsX2luaXRfY2xvY2tfZ2F0aW5nX2hvb2tzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpZiAoSVNfREcxKGRldl9wcml2KSkKIAkJZGV2X3By aXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBkZzFfaW5pdF9jbG9ja19nYXRpbmc7Ci0J ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAxMikpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVS KGRldl9wcml2LCAxMikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0g Z2VuMTJscF9pbml0X2Nsb2NrX2dhdGluZzsKLQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDEx KSkKKwllbHNlIGlmIChJU19HUkFQSElDU19WRVIoZGV2X3ByaXYsIDExKSkKIAkJZGV2X3ByaXYt PmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpY2xfaW5pdF9jbG9ja19nYXRpbmc7CiAJZWxz ZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRf Y2xvY2tfZ2F0aW5nID0gY25sX2luaXRfY2xvY2tfZ2F0aW5nOwpAQCAtNzY0OCw5ICs3NjQ4LDkg QEAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZ19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0g aXZiX2luaXRfY2xvY2tfZ2F0aW5nOwogCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IHZsdl9pbml0X2Nsb2Nr X2dhdGluZzsKLQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQorCWVsc2UgaWYgKElTX0dS QVBISUNTX1ZFUihkZXZfcHJpdiwgNikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tf Z2F0aW5nID0gZ2VuNl9pbml0X2Nsb2NrX2dhdGluZzsKLQllbHNlIGlmIChJU19HRU4oZGV2X3By aXYsIDUpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgNSkpCiAJCWRldl9w cml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gaWxrX2luaXRfY2xvY2tfZ2F0aW5nOwog CWVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xv Y2tfZ2F0aW5nID0gZzR4X2luaXRfY2xvY2tfZ2F0aW5nOwpAQCAtNzY1OCwxMSArNzY1OCwxMSBA QCB2b2lkIGludGVsX2luaXRfY2xvY2tfZ2F0aW5nX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBp OTY1Z21faW5pdF9jbG9ja19nYXRpbmc7CiAJZWxzZSBpZiAoSVNfSTk2NUcoZGV2X3ByaXYpKQog CQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGk5NjVnX2luaXRfY2xvY2tf Z2F0aW5nOwotCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMykpCisJZWxzZSBpZiAoSVNfR1JB UEhJQ1NfVkVSKGRldl9wcml2LCAzKSkKIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19n YXRpbmcgPSBnZW4zX2luaXRfY2xvY2tfZ2F0aW5nOwogCWVsc2UgaWYgKElTX0k4NVgoZGV2X3By aXYpIHx8IElTX0k4NjVHKGRldl9wcml2KSkKIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9j a19nYXRpbmcgPSBpODV4X2luaXRfY2xvY2tfZ2F0aW5nOwotCWVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgMikpCisJZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKGRldl9wcml2LCAyKSkKIAkJZGV2 X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpODMwX2luaXRfY2xvY2tfZ2F0aW5n OwogCWVsc2UgewogCQlNSVNTSU5HX0NBU0UoSU5URUxfREVWSUQoZGV2X3ByaXYpKTsKQEAgLTc2 NzYsNyArNzY3Niw3IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJLyogRm9yIGN4c3IgKi8KIAlpZiAoSVNfUElORVZJRVcoZGV2X3ByaXYp KQogCQlwbnZfZ2V0X21lbV9mcmVxKGRldl9wcml2KTsKLQllbHNlIGlmIChJU19HRU4oZGV2X3By aXYsIDUpKQorCWVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihkZXZfcHJpdiwgNSkpCiAJCWlsa19n ZXRfbWVtX2ZyZXEoZGV2X3ByaXYpOwogCiAJaWYgKGludGVsX2hhc19zYWd2KGRldl9wcml2KSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCmluZGV4IDBlYzBjZjE5MTk1NS4uZjBh ODJiMzdiZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFu ZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKQEAgLTQzMCw3 ICs0MzAsNyBAQCBzdGF0aWMgaW50IF9fc2FuZHlicmlkZ2VfcGNvZGVfcncoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJaWYgKGlzX3JlYWQgJiYgdmFsMSkKIAkJKnZhbDEgPSBpbnRl bF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEdFTjZfUENPREVfREFUQTEpOwogCi0JaWYgKElOVEVM X0dFTihpOTE1KSA+IDYpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+IDYpCiAJCXJldHVybiBn ZW43X2NoZWNrX21haWxib3hfc3RhdHVzKG1ib3gpOwogCWVsc2UKIAkJcmV0dXJuIGdlbjZfY2hl Y2tfbWFpbGJveF9zdGF0dXMobWJveCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmlu ZGV4IDQ5MzY5OTczOGM3YS4uNDk2NWFhOTUzMGVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYwpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgc3RhdGljIGludCBpbnRlbF91bmNvcmVfZndf ZG9tYWluc19pbml0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKICNkZWZpbmUgZndfZG9t YWluX2luaXQodW5jb3JlX18sIGlkX18sIHNldF9fLCBhY2tfXykgXAogCShyZXQgPzogKHJldCA9 IF9fZndfZG9tYWluX2luaXQoKHVuY29yZV9fKSwgKGlkX18pLCAoc2V0X18pLCAoYWNrX18pKSkp CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1 KSA+PSAxMSkgewogCQkvKiB3ZSdsbCBwcnVuZSB0aGUgZG9tYWlucyBvZiBtaXNzaW5nIGVuZ2lu ZXMgbGF0ZXIgKi8KIAkJaW50ZWxfZW5naW5lX21hc2tfdCBlbWFzayA9IElOVEVMX0lORk8oaTkx NSktPnBsYXRmb3JtX2VuZ2luZV9tYXNrOwogCQlpbnQgaTsKQEAgLTE2NjUsNyArMTY2NSw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUpCiAJCQkJICAgICAgIEZPUkNFV0FLRV9NRURJQV9WRUJPWF9HRU4xMShpKSwK IAkJCQkgICAgICAgRk9SQ0VXQUtFX0FDS19NRURJQV9WRUJPWF9HRU4xMShpKSk7CiAJCX0KLQl9 IGVsc2UgaWYgKElTX0dFTl9SQU5HRShpOTE1LCA5LCAxMCkpIHsKKwl9IGVsc2UgaWYgKElTX0dS QVBISUNTX1JBTkdFKGk5MTUsIDksIDEwKSkgewogCQl1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2Vf Z2V0ID0gZndfZG9tYWluc19nZXRfd2l0aF9mYWxsYmFjazsKIAkJdW5jb3JlLT5mdW5jcy5mb3Jj ZV93YWtlX3B1dCA9IGZ3X2RvbWFpbnNfcHV0OwogCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZX X0RPTUFJTl9JRF9SRU5ERVIsCkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBzdGF0aWMgaW50IGludGVs X3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCQkJ ZndfZG9tYWluX2luaXQodW5jb3JlLCBGV19ET01BSU5fSURfUkVOREVSLAogCQkJCSAgICAgICBG T1JDRVdBS0UsIEZPUkNFV0FLRV9BQ0spOwogCQl9Ci0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwg NikpIHsKKwl9IGVsc2UgaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA2KSkgewogCQl1bmNvcmUt PmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KIAkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfdGhyZWFkX3N0 YXR1czsKIAkJdW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3X2RvbWFpbnNfcHV0OwpA QCAtMTgwMCw3ICsxODAwLDcgQEAgc3RhdGljIGludCB1bmNvcmVfbW1pb19zZXR1cChzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJaW50IG1taW9fYmFyOwogCWludCBtbWlvX3NpemU7CiAK LQltbWlvX2JhciA9IElTX0dFTihpOTE1LCAyKSA/IDEgOiAwOworCW1taW9fYmFyID0gSVNfR1JB UEhJQ1NfVkVSKGk5MTUsIDIpID8gMSA6IDA7CiAJLyoKIAkgKiBCZWZvcmUgZ2VuNCwgdGhlIHJl Z2lzdGVycyBhbmQgdGhlIEdUVCBhcmUgYmVoaW5kIGRpZmZlcmVudCBCQVJzLgogCSAqIEhvd2V2 ZXIsIGZyb20gZ2VuNCBvbndhcmRzLCB0aGUgcmVnaXN0ZXJzIGFuZCB0aGUgR1RUIGFyZSBzaGFy ZWQKQEAgLTE4MTAsNyArMTgxMCw3IEBAIHN0YXRpYyBpbnQgdW5jb3JlX21taW9fc2V0dXAoc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCSAqIGdlbmVyYXRpb25zIHVwIHRvIElyb25sYWtl LgogCSAqIEZvciBkZ2Z4IGNoaXBzIHJlZ2lzdGVyIHJhbmdlIGlzIGV4cGFuZGVkIHRvIDRNQi4K IAkgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNSkKKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUp IDwgNSkKIAkJbW1pb19zaXplID0gNTEyICogMTAyNDsKIAllbHNlIGlmIChJU19ER0ZYKGk5MTUp KQogCQltbWlvX3NpemUgPSA0ICogMTAyNCAqIDEwMjQ7CkBAIC0xODQ5LDcgKzE4NDksNyBAQCBz dGF0aWMgdm9pZCB1bmNvcmVfcmF3X2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQog CWlmIChpbnRlbF92Z3B1X2FjdGl2ZSh1bmNvcmUtPmk5MTUpKSB7CiAJCUFTU0lHTl9SQVdfV1JJ VEVfTU1JT19WRlVOQ1ModW5jb3JlLCB2Z3B1KTsKIAkJQVNTSUdOX1JBV19SRUFEX01NSU9fVkZV TkNTKHVuY29yZSwgdmdwdSk7Ci0JfSBlbHNlIGlmIChJU19HRU4odW5jb3JlLT5pOTE1LCA1KSkg eworCX0gZWxzZSBpZiAoSVNfR1JBUEhJQ1NfVkVSKHVuY29yZS0+aTkxNSwgNSkpIHsKIAkJQVNT SUdOX1JBV19XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwogCQlBU1NJR05fUkFXX1JF QURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKIAl9IGVsc2UgewpAQCAtMTg3MCw3ICsxODcw LDcgQEAgc3RhdGljIGludCB1bmNvcmVfZm9yY2V3YWtlX2luaXQoc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlKQogCQlyZXR1cm4gcmV0OwogCWZvcmNld2FrZV9lYXJseV9zYW5pdGl6ZSh1bmNv cmUsIDApOwogCi0JaWYgKElTX0dFTl9SQU5HRShpOTE1LCA2LCA3KSkgeworCWlmIChJU19HUkFQ SElDU19SQU5HRShpOTE1LCA2LCA3KSkgewogCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5j b3JlLCBnZW42KTsKIAogCQlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkgewpAQCAtMTg3OSw3ICsx ODc5LDcgQEAgc3RhdGljIGludCB1bmNvcmVfZm9yY2V3YWtlX2luaXQoc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlKQogCQl9IGVsc2UgewogCQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5j b3JlLCBnZW42KTsKIAkJfQotCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDgpKSB7CisJfSBlbHNl IGlmIChJU19HUkFQSElDU19WRVIoaTkxNSwgOCkpIHsKIAkJaWYgKElTX0NIRVJSWVZJRVcoaTkx NSkpIHsKIAkJCUFTU0lHTl9GV19ET01BSU5TX1RBQkxFKHVuY29yZSwgX19jaHZfZndfcmFuZ2Vz KTsKIAkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGZ3dGFibGUpOwpAQCAtMTg4 OCwxMSArMTg4OCwxMSBAQCBzdGF0aWMgaW50IHVuY29yZV9mb3JjZXdha2VfaW5pdChzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3Jl LCBnZW44KTsKIAkJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuNik7CiAJCX0K LQl9IGVsc2UgaWYgKElTX0dFTl9SQU5HRShpOTE1LCA5LCAxMCkpIHsKKwl9IGVsc2UgaWYgKElT X0dSQVBISUNTX1JBTkdFKGk5MTUsIDksIDEwKSkgewogCQlBU1NJR05fRldfRE9NQUlOU19UQUJM RSh1bmNvcmUsIF9fZ2VuOV9md19yYW5nZXMpOwogCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1Mo dW5jb3JlLCBmd3RhYmxlKTsKIAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBmd3Rh YmxlKTsKLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwl9IGVsc2UgaWYgKElTX0dS QVBISUNTX1ZFUihpOTE1LCAxMSkpIHsKIAkJQVNTSUdOX0ZXX0RPTUFJTlNfVEFCTEUodW5jb3Jl LCBfX2dlbjExX2Z3X3Jhbmdlcyk7CiAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUs IGdlbjExX2Z3dGFibGUpOwogCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjEx X2Z3dGFibGUpOwpAQCAtMTkxNyw3ICsxOTE3LDcgQEAgaW50IGludGVsX3VuY29yZV9pbml0X21t aW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpID4gNSAmJiAhaW50ZWxfdmdwdV9hY3RpdmUoaTkxNSkp CisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+IDUgJiYgIWludGVsX3ZncHVfYWN0aXZlKGk5MTUp KQogCQl1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRk9SQ0VXQUtFOwogCiAJaWYgKCFpbnRl bF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKSB7CkBAIC0xOTQwLDcgKzE5NDAsNyBAQCBp bnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCiAJ aWYgKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkKIAkJdW5jb3Jl LT5mbGFncyB8PSBVTkNPUkVfSEFTX0RCR19VTkNMQUlNRUQ7CiAKLQlpZiAoSVNfR0VOX1JBTkdF KGk5MTUsIDYsIDcpKQorCWlmIChJU19HUkFQSElDU19SQU5HRShpOTE1LCA2LCA3KSkKIAkJdW5j b3JlLT5mbGFncyB8PSBVTkNPUkVfSEFTX0ZJRk87CiAKIAkvKiBjbGVhciBvdXQgdW5jbGFpbWVk IHJlZyBkZXRlY3Rpb24gYml0ICovCkBAIC0xOTY3LDcgKzE5NjcsNyBAQCB2b2lkIGludGVsX3Vu Y29yZV9wcnVuZV9lbmdpbmVfZndfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUs CiAJZW51bSBmb3JjZXdha2VfZG9tYWluX2lkIGRvbWFpbl9pZDsKIAlpbnQgaTsKIAotCWlmICgh aW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSB8fCBJTlRFTF9HRU4odW5jb3JlLT5p OTE1KSA8IDExKQorCWlmICghaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSB8fCBH UkFQSElDU19WRVIodW5jb3JlLT5pOTE1KSA8IDExKQogCQlyZXR1cm47CiAKIAlmb3IgKGkgPSAw OyBpIDwgSTkxNV9NQVhfVkNTOyBpKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dvcGNtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jCmlu ZGV4IGVjNzc2NTkxZTFjZi4uMDI2YTlmYzFiYmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF93b3BjbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dv cGNtLmMKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBpbnRlbF93b3BjbV9pbml0X2Vhcmx5KHN0cnVj dCBpbnRlbF93b3BjbSAqd29wY20pCiAJaWYgKCFIQVNfR1RfVUMoaTkxNSkpCiAJCXJldHVybjsK IAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpCisJaWYgKEdSQVBISUNTX1ZFUihpOTE1KSA+ PSAxMSkKIAkJd29wY20tPnNpemUgPSBHRU4xMV9XT1BDTV9TSVpFOwogCWVsc2UKIAkJd29wY20t PnNpemUgPSBHRU45X1dPUENNX1NJWkU7CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB1MzIgY29u dGV4dF9yZXNlcnZlZF9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCWlm IChJU19HRU45X0xQKGk5MTUpKQogCQlyZXR1cm4gQlhUX1dPUENNX1JDNl9DVFhfUkVTRVJWRUQ7 Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDEwKQorCWVsc2UgaWYgKEdSQVBISUNTX1ZF UihpOTE1KSA+PSAxMCkKIAkJcmV0dXJuIENOTF9XT1BDTV9IV19DVFhfUkVTRVJWRUQ7CiAJZWxz ZQogCQlyZXR1cm4gMDsKQEAgLTE0NSwxMSArMTQ1LDExIEBAIHN0YXRpYyBib29sIGNoZWNrX2h3 X3Jlc3RyaWN0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCQkgIHUzMiBn dWNfd29wY21fYmFzZSwgdTMyIGd1Y193b3BjbV9zaXplLAogCQkJCSAgdTMyIGh1Y19md19zaXpl KQogewotCWlmIChJU19HRU4oaTkxNSwgOSkgJiYgIWdlbjlfY2hlY2tfZHdvcmRfZ2FwKGk5MTUs IGd1Y193b3BjbV9iYXNlLAotCQkJCQkJICAgICBndWNfd29wY21fc2l6ZSkpCisJaWYgKElTX0dS QVBISUNTX1ZFUihpOTE1LCA5KSAmJiAhZ2VuOV9jaGVja19kd29yZF9nYXAoaTkxNSwgZ3VjX3dv cGNtX2Jhc2UsCisJCQkJCQkJICAgICAgZ3VjX3dvcGNtX3NpemUpKQogCQlyZXR1cm4gZmFsc2U7 CiAKLQlpZiAoSVNfR0VOKGk5MTUsIDkpICYmCisJaWYgKElTX0dSQVBISUNTX1ZFUihpOTE1LCA5 KSAmJgogCSAgICAhZ2VuOV9jaGVja19odWNfZndfZml0cyhpOTE1LCBndWNfd29wY21fc2l6ZSwg aHVjX2Z3X3NpemUpKQogCQlyZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwppbmRleCAyZTRmMDZlYWFjYzEuLjc1ZjdkZmU2ZGEw NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0 dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwpA QCAtMTg4NCw5ICsxODg0LDkgQEAgc3RhdGljIGludCBpZ3RfY3NfdGxiKHZvaWQgKmFyZykKIAkJ dTMyICpjcyA9IGJhdGNoICsgaSAqIDY0IC8gc2l6ZW9mKCpjcyk7CiAJCXU2NCBhZGRyID0gKHZt LT50b3RhbCAtIFBBR0VfU0laRSkgKyBpICogc2l6ZW9mKHUzMik7CiAKLQkJR0VNX0JVR19PTihJ TlRFTF9HRU4oaTkxNSkgPCA2KTsKKwkJR0VNX0JVR19PTihHUkFQSElDU19WRVIoaTkxNSkgPCA2 KTsKIAkJY3NbMF0gPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKLQkJaWYgKElOVEVMX0dFTihp OTE1KSA+PSA4KSB7CisJCWlmIChHUkFQSElDU19WRVIoaTkxNSkgPj0gOCkgewogCQkJY3NbMV0g PSBsb3dlcl8zMl9iaXRzKGFkZHIpOwogCQkJY3NbMl0gPSB1cHBlcl8zMl9iaXRzKGFkZHIpOwog CQkJY3NbM10gPSBpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5j CmluZGV4IGU5ZDg2ZGFiODY3Ny4uZDZhZTc4MjEwMWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jCkBAIC05OCw3ICs5OCw3IEBAIHRlc3Rfc3RyZWFtKHN0 cnVjdCBpOTE1X3BlcmYgKnBlcmYpCiAJCQkJCQkgICBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIs CiAJCQkJCQkgICAwKSwKIAkJLnNhbXBsZV9mbGFncyA9IFNBTVBMRV9PQV9SRVBPUlQsCi0JCS5v YV9mb3JtYXQgPSBJU19HRU4ocGVyZi0+aTkxNSwgMTIpID8KKwkJLm9hX2Zvcm1hdCA9IElTX0dS QVBISUNTX1ZFUihwZXJmLT5pOTE1LCAxMikgPwogCQlJOTE1X09BX0ZPUk1BVF9BMzJ1NDBfQTR1 MzJfQjhfQzggOiBJOTE1X09BX0ZPUk1BVF9DNF9COCwKIAl9OwogCXN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW07CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIGludCB3cml0ZV90aW1l c3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQogCQlyZXR1cm4gUFRSX0VS Uihjcyk7CiAKIAlsZW4gPSA1OwotCWlmIChJTlRFTF9HRU4ocnEtPmVuZ2luZS0+aTkxNSkgPj0g OCkKKwlpZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpCiAJCWxlbisrOwog CiAJKmNzKysgPSBHRlhfT1BfUElQRV9DT05UUk9MKGxlbik7CkBAIC0zNjMsNyArMzYzLDcgQEAg c3RhdGljIGludCBsaXZlX25vYV9ncHIodm9pZCAqYXJnKQogCQl9CiAKIAkJY21kID0gTUlfU1RP UkVfUkVHSVNURVJfTUVNOwotCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpCisJCWlmIChHUkFQ SElDU19WRVIoaTkxNSkgPj0gOCkKIAkJCWNtZCsrOwogCQljbWQgfD0gTUlfVVNFX0dHVFQ7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwppbmRleCBl ZThlNzUzZDk4Y2UuLmRiMzY3YTY3MjFjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwpAQCAtOTYzLDcgKzk2Myw3IEBAIHN0YXRpYyBpbnQgbGl2 ZV9lbXB0eV9yZXF1ZXN0KHZvaWQgKmFyZykKIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKnJlY3Vy c2l2ZV9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCWNvbnN0IGludCBnZW4gPSBJTlRFTF9HRU4oaTkxNSk7 CisJY29uc3QgaW50IHZlciA9IEdSQVBISUNTX1ZFUihpOTE1KTsKIAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKIAl1MzIgKmNtZDsKIAlpbnQgZXJyOwpAQCAtOTg4LDExICs5ODgsMTEgQEAgc3RhdGlj IHN0cnVjdCBpOTE1X3ZtYSAqcmVjdXJzaXZlX2JhdGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQogCQlnb3RvIGVycjsKIAl9CiAKLQlpZiAoZ2VuID49IDgpIHsKKwlpZiAodmVyID49 IDgpIHsKIAkJKmNtZCsrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKIAkJ KmNtZCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOwogCQkqY21kKysgPSB1cHBl cl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7Ci0JfSBlbHNlIGlmIChnZW4gPj0gNikgeworCX0g ZWxzZSBpZiAodmVyID49IDYpIHsKIAkJKmNtZCsrID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwg MSA8PCA4OwogCQkqY21kKysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7CiAJfSBl bHNlIHsKQEAgLTI0ODIsNyArMjQ4Miw3IEBAIHN0YXRpYyBpbnQgcGVyZl9yZXF1ZXN0X2xhdGVu Y3kodm9pZCAqYXJnKQogCXN0cnVjdCBwbV9xb3NfcmVxdWVzdCBxb3M7CiAJaW50IGVyciA9IDA7 CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgOCkgLyogcGVyLWVuZ2luZSBDUyB0aW1lc3RhbXAs IHNlbWFwaG9yZXMgKi8KKwlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpIDwgOCkgLyogcGVyLWVuZ2lu ZSBDUyB0aW1lc3RhbXAsIHNlbWFwaG9yZXMgKi8KIAkJcmV0dXJuIDA7CiAKIAljcHVfbGF0ZW5j eV9xb3NfYWRkX3JlcXVlc3QoJnFvcywgMCk7IC8qIGRpc2FibGUgY3N0YXRlcyAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwppbmRleCBjZmJiZTQxNWI1 N2MuLjU1YzkzNTZkZTVhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2lndF9zcGlubmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ln dF9zcGlubmVyLmMKQEAgLTE3NCwxNSArMTc0LDE1IEBAIGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1 ZXN0KHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwKIAogCWJhdGNoID0gc3Bpbi0+YmF0Y2g7CiAK LQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpIHsKKwlpZiAoR1JBUEhJQ1Nf VkVSKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpIHsKIAkJKmJhdGNoKysgPSBNSV9TVE9SRV9EV09S RF9JTU1fR0VONDsKIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRzKGh3c19hZGRyZXNzKGh3cywg cnEpKTsKIAkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKGh3c19hZGRyZXNzKGh3cywgcnEpKTsK LQl9IGVsc2UgaWYgKElOVEVMX0dFTihycS0+ZW5naW5lLT5pOTE1KSA+PSA2KSB7CisJfSBlbHNl IGlmIChHUkFQSElDU19WRVIocnEtPmVuZ2luZS0+aTkxNSkgPj0gNikgewogCQkqYmF0Y2grKyA9 IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40OwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsrID0g aHdzX2FkZHJlc3MoaHdzLCBycSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4ocnEtPmVuZ2luZS0+ aTkxNSkgPj0gNCkgeworCX0gZWxzZSBpZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUp ID49IDQpIHsKIAkJKmJhdGNoKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9H R1RUOwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsrID0gaHdzX2FkZHJlc3MoaHdzLCBycSk7 CkBAIC0xOTQsMTEgKzE5NCwxMSBAQCBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdChzdHJ1Y3Qg aWd0X3NwaW5uZXIgKnNwaW4sCiAKIAkqYmF0Y2grKyA9IGFyYml0cmF0aW9uX2NvbW1hbmQ7CiAK LQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDgpCisJaWYgKEdSQVBISUNTX1ZF UihycS0+ZW5naW5lLT5pOTE1KSA+PSA4KQogCQkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9T VEFSVCB8IEJJVCg4KSB8IDE7CiAJZWxzZSBpZiAoSVNfSEFTV0VMTChycS0+ZW5naW5lLT5pOTE1 KSkKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9QUEdUVF9I U1c7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpID49IDYpCisJZWxzZSBp ZiAoR1JBUEhJQ1NfVkVSKHJxLT5lbmdpbmUtPmk5MTUpID49IDYpCiAJCSpiYXRjaCsrID0gTUlf QkFUQ0hfQlVGRkVSX1NUQVJUOwogCWVsc2UKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJf U1RBUlQgfCBNSV9CQVRDSF9HVFQ7CkBAIC0yMTYsNyArMjE2LDcgQEAgaWd0X3NwaW5uZXJfY3Jl YXRlX3JlcXVlc3Qoc3RydWN0IGlndF9zcGlubmVyICpzcGluLAogCX0KIAogCWZsYWdzID0gMDsK LQlpZiAoSU5URUxfR0VOKHJxLT5lbmdpbmUtPmk5MTUpIDw9IDUpCisJaWYgKEdSQVBISUNTX1ZF UihycS0+ZW5naW5lLT5pOTE1KSA8PSA1KQogCQlmbGFncyB8PSBJOTE1X0RJU1BBVENIX1NFQ1VS RTsKIAllcnIgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsIHZtYS0+bm9kZS5zdGFydCwgUEFH RV9TSVpFLCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF91bmNvcmUuYwppbmRleCBhZTY1ZWM3YjliZjEuLjAzM2YzYzk0YTM5ZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYwpAQCAtMzIxLDcgKzMyMSw3 IEBAIHN0YXRpYyBpbnQgbGl2ZV9md190YWJsZSh2b2lkICphcmcpCiAJLyogQ29uZmlybSB0aGUg dGFibGUgd2UgbG9hZCBpcyBzdGlsbCB2YWxpZCAqLwogCXJldHVybiBpbnRlbF9md190YWJsZV9j aGVjayhndC0+dW5jb3JlLT5md19kb21haW5zX3RhYmxlLAogCQkJCSAgICBndC0+dW5jb3JlLT5m d19kb21haW5zX3RhYmxlX2VudHJpZXMsCi0JCQkJICAgIElOVEVMX0dFTihndC0+aTkxNSkgPj0g OSk7CisJCQkJICAgIEdSQVBISUNTX1ZFUihndC0+aTkxNSkgPj0gOSk7CiB9CiAKIGludCBpbnRl bF91bmNvcmVfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi0t IAoyLjMxLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=