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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 6D2E1C433E2 for ; Sun, 7 Jun 2020 22:21:40 +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 4A2D8206D5 for ; Sun, 7 Jun 2020 22:21:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4A2D8206D5 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 55A786E433; Sun, 7 Jun 2020 22:21:29 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7CF6F6E3EB for ; Sun, 7 Jun 2020 22:21:23 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from build.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 21425614-1500050 for multiple; Sun, 07 Jun 2020 23:21:14 +0100 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Sun, 7 Jun 2020 23:21:06 +0100 Message-Id: <20200607222108.14401-26-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200607222108.14401-1-chris@chris-wilson.co.uk> References: <20200607222108.14401-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 26/28] drm/i915: Fair low-latency scheduling X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" VGhlIGZpcnN0ICJzY2hlZHVsZXIiIHdhcyBhIHRvcG9ncmFwaGljYWwgc29ydGluZyBvZiByZXF1 ZXN0cyBpbnRvCnByaW9yaXR5IG9yZGVyLiBUaGUgZXhlY3V0aW9uIG9yZGVyIHdhcyBkZXRlcm1p bmlzdGljLCB0aGUgZWFybGllc3QKc3VibWl0dGVkLCBoaWdoZXN0IHByaW9yaXR5IHJlcXVlc3Qg d291bGQgYmUgZXhlY3V0ZWQgZmlyc3QuIFByaW9yaXR5CmluaGVyaXRlZCBlbnN1cmVkIHRoYXQg aW52ZXJzaW9ucyB3ZXJlIGtlcHQgYXQgYmF5LCBhbmQgYWxsb3dlZCB1cyB0bwpkeW5hbWljYWxs eSBib29zdCBwcmlvcml0aWVzIChlLmcuIGZvciBpbnRlcmFjdGl2ZSBwYWdlZmxpcHMpLgoKVGhl IG1pbmltYWxpc3RpYyB0aW1lc2xpY2luZyBzY2hlbWUgd2FzIGFuIGF0dGVtcHQgdG8gaW50cm9k dWNlIGZhaXJuZXNzCmJldHdlZW4gbG9uZyBydW5uaW5nIHJlcXVlc3RzLCBieSBldmljdGluZyB0 aGUgYWN0aXZlIHJlcXVlc3QgYXQgdGhlIGVuZApvZiBhIHRpbWVzbGljZSBhbmQgbW92aW5nIGl0 IHRvIHRoZSBiYWNrIG9mIGl0cyBwcmlvcml0eSBxdWV1ZSAod2hpbGUKZW5zdXJpbmcgdGhhdCBk ZXBlbmRlbmNpZXMgd2VyZSBrZXB0IGluIG9yZGVyKS4gRm9yIHNob3J0IHJ1bm5pbmcKcmVxdWVz dHMgZnJvbSBtYW55IGNsaWVudHMgb2YgZXF1YWwgcHJpb3JpdHksIHRoZSBzY2hlbWUgaXMgc3Rp bGwgdmVyeQptdWNoIEZJRk8gc3VibWlzc2lvbiBvcmRlcmluZywgYW5kIGFzIHVuZmFpciBhcyBi ZWZvcmUuCgpUbyBpbXBvc2UgZmFpcm5lc3MsIHdlIG5lZWQgYW4gZXh0ZXJuYWwgbWV0cmljIHRo YXQgZW5zdXJlcyB0aGF0IGNsaWVudHMKYXJlIGludGVycGVyc2VkLCB3ZSBkb24ndCBleGVjdXRl IG9uZSBsb25nIGNoYWluIGZyb20gY2xpZW50IEEgYmVmb3JlCmV4ZWN1dGluZyBhbnkgb2YgY2xp ZW50IEIuIFRoaXMgY291bGQgYmUgaW1wb3NlZCBieSB0aGUgY2xpZW50cyBieSB1c2luZwphIGZl bmNlcyBiYXNlZCBvbiBhbiBleHRlcm5hbCBjbG9jaywgdGhhdCBpcyB0aGV5IG9ubHkgc3VibWl0 IHdvcmsgZm9yIGEKImZyYW1lIiBhdCBmcmFtZS1pbnRlcnZhbCwgaW5zdGVhZCBvZiBzdWJtaXR0 aW5nIGFzIG11Y2ggd29yayBhcyB0aGV5CmFyZSBhYmxlIHRvLiBUaGUgc3RhbmRhcmQgU3dhcEJ1 ZmZlcnMgYXBwcm9hY2ggaXMgYWtpbiB0byBkb3VibGUKYnVmZmVycmluZywgd2hlcmUgYXMgb25l IGZyYW1lIGlzIGJlaW5nIGV4ZWN1dGVkLCB0aGUgbmV4dCBpcyBiZWluZwpzdWJtaXR0ZWQsIHN1 Y2ggdGhhdCB0aGVyZSBpcyBhbHdheXMgYSBtYXhpbXVtIG9mIHR3byBmcmFtZXMgcGVyIGNsaWVu dAppbiB0aGUgcGlwZWxpbmUuIEV2ZW4gdGhpcyBzY2hlbWUgZXhoaWJpdHMgdW5mYWlybmVzcyB1 bmRlciBsb2FkIGFzIGEKc2luZ2xlIGNsaWVudCB3aWxsIGV4ZWN1dGUgdHdvIGZyYW1lcyBiYWNr IHRvIGJhY2sgYmVmb3JlIHRoZSBuZXh0LCBhbmQKd2l0aCBlbm91Z2ggY2xpZW50cywgZGVhZGxp bmVzIHdpbGwgYmUgbWlzc2VkLgoKVGhlIGlkZWEgaW50cm9kdWNlZCBieSBCRlMvTXVRU1MgaXMg dGhhdCBmYWlybmVzcyBpcyBpbnRyb2R1Y2VkIGJ5Cm1ldGVyaW5nIHdpdGggYW4gZXh0ZXJuYWwg Y2xvY2suIEV2ZXJ5IHJlcXVlc3QsIHdoZW4gaXQgYmVjb21lcyByZWFkeSB0bwpleGVjdXRlIGlz IGFzc2lnbmVkIGEgdmlydHVhbCBkZWFkbGluZSwgYW5kIGV4ZWN1dGlvbiBvcmRlciBpcyB0aGVu CmRldGVybWluZWQgYnkgZWFybGllc3QgZGVhZGxpbmUuIFByaW9yaXR5IGlzIHVzZWQgYXMgYSBo aW50LCByYXRoZXIgdGhhbgpzdHJpY3Qgb3JkZXJpbmcsIHdoZXJlIGhpZ2ggcHJpb3JpdHkgcmVx dWVzdHMgaGF2ZSBlYXJsaWVyIGRlYWRsaW5lcywKYnV0IG5vdCBuZWNlc3NhcmlseSBlYXJsaWVy IHRoYW4gb3V0c3RhbmRpbmcgd29yay4gVGh1cyB3b3JrIGlzIGV4ZWN1dGVkCmluIG9yZGVyIG9m ICdyZWFkaW5lc3MnLCB3aXRoIHRpbWVzbGljaW5nIHRvIGRlbW90ZSBsb25nIHJ1bm5pbmcgd29y ay4KClRoZSBBY2hpbGxlJ3MgaGVlbCBvZiB0aGlzIHNjaGVkdWxlciBpcyBpdHMgc3Ryb25nIHBy ZWZlcmVuY2UgZm9yCmxvdy1sYXRlbmN5IGFuZCBmYXZvdXJpbmcgb2YgbmV3IHF1ZXVlcy4gV2hl cmVhcyBpdCB3YXMgZWFzeSB0byBkb21pbmF0ZQp0aGUgb2xkIHNjaGVkdWxlciBieSBmbG9vZGlu ZyBpdCB3aXRoIG1hbnkgcmVxdWVzdHMgb3ZlciBhIHNob3J0IHBlcmlvZApvZiB0aW1lLCB0aGUg bmV3IHNjaGVkdWxlciBjYW4gYmUgZG9taW5hdGVkIGJ5IGEgJ3N5bmNocm9ub3VzJyBjbGllbnQK dGhhdCB3YWl0cyBmb3IgZWFjaCBvZiBpdHMgcmVxdWVzdHMgdG8gY29tcGxldGUgYmVmb3JlIHN1 Ym1pdHRpbmcgdGhlCm5leHQuIEFzIHN1Y2ggYSBjbGllbnQgaGFzIG5vIGhpc3RvcnksIGl0IGlz IGFsd2F5cyBjb25zaWRlcmVkCnJlYWR5LXRvLXJ1biBhbmQgcmVjZWl2ZXMgYW4gZWFybGllciBk ZWFkbGluZSB0aGFuIHRoZSBsb25nIHJ1bm5pbmcKcmVxdWVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgMTIgKy0KIC4uLi9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYyAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oICB8ICAyNCAtLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgMzI4ICsrKysrKystLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgIHwgICA1ICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAgICAgfCAgNDMgKystCiAuLi4v Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgfCAgIDYgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaCAgICB8ICAgNyArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgICAgfCAzMjIgKysrKysrKysrKysr LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggICAgICAgICB8ICAy MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaCAgIHwgIDE3 ICsKIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oICB8ICAgMSAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMgfCAgIDEgKwog Li4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hlZHVsZXIuYyAgIHwgIDQ5ICsrKwog MTYgZmlsZXMgY2hhbmdlZCwgNDg0IGluc2VydGlvbnMoKyksIDM2MiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hl ZHVsZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXgg ZDc5MzA3ZDc5MGRhLi5iOTliMzMzMjQ2N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9jcy5jCkBAIC01MTMsNyArNTEzLDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5p dF9leGVjbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWV4ZWNsaXN0cy0+ YWN0aXZlID0KIAkJbWVtc2V0KGV4ZWNsaXN0cy0+aW5mbGlnaHQsIDAsIHNpemVvZihleGVjbGlz dHMtPmluZmxpZ2h0KSk7CiAKLQlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRf TUlOOwogCWV4ZWNsaXN0cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKIH0KIApAQCAtMTE4OCwx NCArMTE4NywxNSBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIH0KIAotc3RhdGljIGludCBwcmludF9zY2hlZF9h dHRyKGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIsCi0JCQkgICAgY2hhciAqYnVm LCBpbnQgeCwgaW50IGxlbikKK3N0YXRpYyBpbnQgcHJpbnRfc2NoZWQoY29uc3Qgc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSwKKwkJICAgICAgIGNoYXIgKmJ1ZiwgaW50IHgsIGludCBsZW4p CiB7Ci0JaWYgKGF0dHItPnByaW9yaXR5ID09IEk5MTVfUFJJT1JJVFlfSU5WQUxJRCkKKwlpZiAo bm9kZS0+YXR0ci5wcmlvcml0eSA9PSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQpCiAJCXJldHVybiB4 OwogCiAJeCArPSBzbnByaW50ZihidWYgKyB4LCBsZW4gLSB4LAotCQkgICAgICAiIHByaW89JWQi LCBhdHRyLT5wcmlvcml0eSk7CisJCSAgICAgICIgcHJpbz0lZCwgZGw9JWxsdSIsCisJCSAgICAg IG5vZGUtPmF0dHIucHJpb3JpdHksIG5vZGUtPmRlYWRsaW5lKTsKIAogCXJldHVybiB4OwogfQpA QCAtMTIwOCw3ICsxMjA4LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVxdWVzdChzdHJ1Y3QgZHJt X3ByaW50ZXIgKm0sCiAJY2hhciBidWZbODBdID0gIiI7CiAJaW50IHggPSAwOwogCi0JeCA9IHBy aW50X3NjaGVkX2F0dHIoJnJxLT5zY2hlZC5hdHRyLCBidWYsIHgsIHNpemVvZihidWYpKTsKKwl4 ID0gcHJpbnRfc2NoZWQoJnJxLT5zY2hlZCwgYnVmLCB4LCBzaXplb2YoYnVmKSk7CiAKIAlkcm1f cHJpbnRmKG0sICIlcyAlbGx4OiVsbHglcyVzICVzIEAgJWRtczogJXNcbiIsCiAJCSAgIHByZWZp eCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFy dGJlYXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu YwppbmRleCA1MjUxODYwZTk1MmQuLmJhNzc4YzdiNWQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuYwpAQCAtMjE0LDYgKzIxNCw3IEBA IGludCBpbnRlbF9lbmdpbmVfcHVsc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiAJX19zZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19TRU5USU5FTCwgJnJxLT5mZW5jZS5mbGFncyk7 CiAJaWRsZV9wdWxzZShlbmdpbmUsIHJxKTsKKwlycS0+c2NoZWQuZGVhZGxpbmUgPSAwOwogCiAJ X19pOTE1X3JlcXVlc3RfY29tbWl0KHJxKTsKIAlfX2k5MTVfcmVxdWVzdF9xdWV1ZShycSwgJmF0 dHIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3Bt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwppbmRleCBkMGEx MDc4ZWY2MzIuLmFjOWM3NzdhNjU5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3BtLmMKQEAgLTE4OCw2ICsxODgsNyBAQCBzdGF0aWMgYm9vbCBzd2l0Y2hfdG9fa2Vy bmVsX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWk5MTVfcmVxdWVz dF9hZGRfYWN0aXZlX2JhcnJpZXJzKHJxKTsKIAogCS8qIEluc3RhbGwgb3Vyc2VsdmVzIGFzIGEg cHJlZW1wdGlvbiBiYXJyaWVyICovCisJcnEtPnNjaGVkLmRlYWRsaW5lID0gMDsKIAlycS0+c2No ZWQuYXR0ci5wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfQkFSUklFUjsKIAlpZiAobGlrZWx5KCFf X2k5MTVfcmVxdWVzdF9jb21taXQocnEpKSkgeyAvKiBlbmdpbmUgc2hvdWxkIGJlIGlkbGUhICov CiAJCS8qCkBAIC0yNDgsOSArMjQ5LDYgQEAgc3RhdGljIGludCBfX2VuZ2luZV9wYXJrKHN0cnVj dCBpbnRlbF93YWtlcmVmICp3ZikKIAlpbnRlbF9lbmdpbmVfcGFya19oZWFydGJlYXQoZW5naW5l KTsKIAlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7CiAKLQkvKiBNdXN0 IGJlIHJlc2V0IHVwb24gaWRsaW5nLCBvciB3ZSBtYXkgbWlzcyB0aGUgYnVzeSB3YWtldXAuICov Ci0JR0VNX0JVR19PTihlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50ICE9IElO VF9NSU4pOwotCiAJaWYgKGVuZ2luZS0+cGFyaykKIAkJZW5naW5lLT5wYXJrKGVuZ2luZSk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggNDhl MTExZjE2ZGM1Li5hM2M2MDAzODI0NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV90eXBlcy5oCkBAIC0yMzEsMzAgKzIzMSw2IEBAIHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzIHsKIAkgKi8KIAl1bnNpZ25lZCBpbnQgcG9ydF9tYXNrOwogCi0JLyoqCi0J ICogQHN3aXRjaF9wcmlvcml0eV9oaW50OiBTZWNvbmQgY29udGV4dCBwcmlvcml0eS4KLQkgKgot CSAqIFdlIHN1Ym1pdCBtdWx0aXBsZSBjb250ZXh0cyB0byB0aGUgSFcgc2ltdWx0YW5lb3VzbHkg YW5kIHdvdWxkCi0JICogbGlrZSB0byBvY2Nhc2lvbmFsbHkgc3dpdGNoIGJldHdlZW4gdGhlbSB0 byBlbXVsYXRlIHRpbWVzbGljaW5nLgotCSAqIFRvIGtub3cgd2hlbiB0aW1lc2xpY2luZyBpcyBz dWl0YWJsZSwgd2UgdHJhY2sgdGhlIHByaW9yaXR5IG9mCi0JICogdGhlIGNvbnRleHQgc3VibWl0 dGVkIHNlY29uZC4KLQkgKi8KLQlpbnQgc3dpdGNoX3ByaW9yaXR5X2hpbnQ7Ci0KLQkvKioKLQkg KiBAcXVldWVfcHJpb3JpdHlfaGludDogSGlnaGVzdCBwZW5kaW5nIHByaW9yaXR5LgotCSAqCi0J ICogV2hlbiB3ZSBhZGQgcmVxdWVzdHMgaW50byB0aGUgcXVldWUsIG9yIGFkanVzdCB0aGUgcHJp b3JpdHkgb2YKLQkgKiBleGVjdXRpbmcgcmVxdWVzdHMsIHdlIGNvbXB1dGUgdGhlIG1heGltdW0g cHJpb3JpdHkgb2YgdGhvc2UKLQkgKiBwZW5kaW5nIHJlcXVlc3RzLiBXZSBjYW4gdGhlbiB1c2Ug dGhpcyB2YWx1ZSB0byBkZXRlcm1pbmUgaWYKLQkgKiB3ZSBuZWVkIHRvIHByZWVtcHQgdGhlIGV4 ZWN1dGluZyByZXF1ZXN0cyB0byBzZXJ2aWNlIHRoZSBxdWV1ZS4KLQkgKiBIb3dldmVyLCBzaW5j ZSB0aGUgd2UgbWF5IGhhdmUgcmVjb3JkZWQgdGhlIHByaW9yaXR5IG9mIGFuIGluZmxpZ2h0Ci0J ICogcmVxdWVzdCB3ZSB3YW50ZWQgdG8gcHJlZW1wdCBidXQgc2luY2UgY29tcGxldGVkLCBhdCB0 aGUgdGltZSBvZgotCSAqIGRlcXVldWluZyB0aGUgcHJpb3JpdHkgaGludCBtYXkgbm8gbG9uZ2Vy IG1heSBtYXRjaCB0aGUgaGlnaGVzdAotCSAqIGF2YWlsYWJsZSByZXF1ZXN0IHByaW9yaXR5Lgot CSAqLwotCWludCBxdWV1ZV9wcmlvcml0eV9oaW50OwotCiAJLyoqCiAJICogQHF1ZXVlOiBxdWV1 ZSBvZiByZXF1ZXN0cywgaW4gcHJpb3JpdHkgbGlzdHMKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfbHJjLmMKaW5kZXggZjljMDk1Yzc5ODc0Li4wNjc4ZGJiOWI5ZmMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2xyYy5jCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RydWN0IHZpcnR1YWxf ZW5naW5lIHsKIAkgKi8KIAlzdHJ1Y3QgdmVfbm9kZSB7CiAJCXN0cnVjdCByYl9ub2RlIHJiOwot CQlpbnQgcHJpbzsKKwkJdTY0IGRlYWRsaW5lOwogCX0gbm9kZXNbSTkxNV9OVU1fRU5HSU5FU107 CiAKIAkvKgpAQCAtNDExLDEyICs0MTEsMTcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9w cmlvbGlzdCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQogCiBzdGF0aWMgaW5saW5l IGludCBycV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewotCXJldHVybiBS RUFEX09OQ0UocnEtPnNjaGVkLmF0dHIucHJpb3JpdHkpOworCXJldHVybiBycS0+c2NoZWQuYXR0 ci5wcmlvcml0eTsKIH0KIAotc3RhdGljIGludCBlZmZlY3RpdmVfcHJpbyhjb25zdCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyBpbmxpbmUgdTY0IHJxX2RlYWRsaW5lKGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewotCWludCBwcmlvID0gcnFfcHJpbyhycSk7CisJcmV0 dXJuIHJxLT5zY2hlZC5kZWFkbGluZTsKK30KKworc3RhdGljIHU2NCBlZmZlY3RpdmVfZGVhZGxp bmUoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJdTY0IGRlYWRsaW5lID0gcnFf ZGVhZGxpbmUocnEpOwogCiAJLyoKIAkgKiBJZiB0aGlzIHJlcXVlc3QgaXMgc3BlY2lhbCBhbmQg bXVzdCBub3QgYmUgaW50ZXJydXB0ZWQgYXQgYW55CkBAIC00MjcsMjcgKzQzMiwyNyBAQCBzdGF0 aWMgaW50IGVmZmVjdGl2ZV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCSAq IG5vcHJlZW1wdCBmb3IgYXMgbG9uZyBhcyBkZXNpcmVkKS4KIAkgKi8KIAlpZiAoaTkxNV9yZXF1 ZXN0X2hhc19ub3ByZWVtcHQocnEpKQotCQlwcmlvID0gSTkxNV9QUklPUklUWV9VTlBSRUVNUFRB QkxFOworCQlkZWFkbGluZSA9IDA7CiAKLQlyZXR1cm4gcHJpbzsKKwlyZXR1cm4gZGVhZGxpbmU7 CiB9CiAKLXN0YXRpYyBpbnQgcXVldWVfcHJpbyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqZXhlY2xpc3RzKQorc3RhdGljIHU2NCBxdWV1ZV9kZWFkbGluZShjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQogewogCXN0cnVjdCByYl9ub2Rl ICpyYjsKIAogCXJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVlKTsKIAlpZiAo IXJiKQotCQlyZXR1cm4gSU5UX01JTjsKKwkJcmV0dXJuIEk5MTVfREVBRExJTkVfTkVWRVI7CiAK LQlyZXR1cm4gdG9fcHJpb2xpc3QocmIpLT5wcmlvcml0eTsKKwlyZXR1cm4gdG9fcHJpb2xpc3Qo cmIpLT5kZWFkbGluZTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkJY29uc3Qgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCiAJCQkJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSkKIHsKLQlpbnQgbGFz dF9wcmlvOworCXU2NCBsYXN0X2RlYWRsaW5lOwogCiAJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3Nl bWFwaG9yZXMoZW5naW5lKSkKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNDcwLDE2ICs0NzUsMTQgQEAg c3RhdGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCiAJICogcHJpb3JpdHkgbGV2ZWw6IHRoZSB0YXNrIHRoYXQgaXMgcnVubmlu ZyBzaG91bGQgcmVtYWluIHJ1bm5pbmcKIAkgKiB0byBwcmVzZXJ2ZSBGSUZPIG9yZGVyaW5nIG9m IGRlcGVuZGVuY2llcy4KIAkgKi8KLQlsYXN0X3ByaW8gPSBtYXgoZWZmZWN0aXZlX3ByaW8ocnEp LCBJOTE1X1BSSU9SSVRZX05PUk1BTCAtIDEpOwotCWlmIChlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1 ZV9wcmlvcml0eV9oaW50IDw9IGxhc3RfcHJpbykKLQkJcmV0dXJuIGZhbHNlOworCWxhc3RfZGVh ZGxpbmUgPSBlZmZlY3RpdmVfZGVhZGxpbmUocnEpOwogCiAJLyoKIAkgKiBDaGVjayBhZ2FpbnN0 IHRoZSBmaXJzdCByZXF1ZXN0IGluIEVMU1BbMV0sIGl0IHdpbGwsIHRoYW5rcyB0byB0aGUKIAkg KiBwb3dlciBvZiBQSSwgYmUgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgb2YgdGhhdCBjb250ZXh0Lgog CSAqLwogCWlmICghbGlzdF9pc19sYXN0KCZycS0+c2NoZWQubGluaywgJmVuZ2luZS0+YWN0aXZl LnJlcXVlc3RzKSAmJgotCSAgICBycV9wcmlvKGxpc3RfbmV4dF9lbnRyeShycSwgc2NoZWQubGlu aykpID4gbGFzdF9wcmlvKQorCSAgICBycV9kZWFkbGluZShsaXN0X25leHRfZW50cnkocnEsIHNj aGVkLmxpbmspKSA8IGxhc3RfZGVhZGxpbmUpCiAJCXJldHVybiB0cnVlOwogCiAJaWYgKHZlKSB7 CkBAIC00OTEsNyArNDk0LDcgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQlyY3VfcmVhZF9sb2NrKCk7CiAJ CQluZXh0ID0gUkVBRF9PTkNFKHZlLT5yZXF1ZXN0KTsKIAkJCWlmIChuZXh0KQotCQkJCXByZWVt cHQgPSBycV9wcmlvKG5leHQpID4gbGFzdF9wcmlvOworCQkJCXByZWVtcHQgPSBycV9kZWFkbGlu ZShuZXh0KSA8IGxhc3RfZGVhZGxpbmU7CiAJCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJfQogCkBA IC01MDksNyArNTEyLDcgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25zdCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJICogRUxTUFswXSBvciBFTFNQWzFdIGFz LCB0aGFua3MgYWdhaW4gdG8gUEksIGlmIGl0IHdhcyB0aGUgc2FtZQogCSAqIGNvbnRleHQsIGl0 J3MgcHJpb3JpdHkgd291bGQgbm90IGV4Y2VlZCBFTFNQWzBdIGFrYSBsYXN0X3ByaW8uCiAJICov Ci0JcmV0dXJuIHF1ZXVlX3ByaW8oJmVuZ2luZS0+ZXhlY2xpc3RzKSA+IGxhc3RfcHJpbzsKKwly ZXR1cm4gcXVldWVfZGVhZGxpbmUoJmVuZ2luZS0+ZXhlY2xpc3RzKSA8IGxhc3RfZGVhZGxpbmU7 CiB9CiAKIF9fbWF5YmVfdW51c2VkIHN0YXRpYyBpbmxpbmUgYm9vbApAQCAtNTI2LDcgKzUyOSw3 IEBAIGFzc2VydF9wcmlvcml0eV9xdWV1ZShjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwcmV2 LAogCWlmIChpOTE1X3JlcXVlc3RfaXNfYWN0aXZlKHByZXYpKQogCQlyZXR1cm4gdHJ1ZTsKIAot CXJldHVybiBycV9wcmlvKHByZXYpID49IHJxX3ByaW8obmV4dCk7CisJcmV0dXJuIHJxX2RlYWRs aW5lKHByZXYpIDw9IHJxX2RlYWRsaW5lKG5leHQpOwogfQogCiAvKgpAQCAtMTA5NiwyMiArMTA5 OSwzMCBAQCBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuLCAqYWN0aXZlID0g TlVMTDsKIAlzdHJ1Y3QgbGlzdF9oZWFkICp1bmluaXRpYWxpemVkX3ZhcihwbCk7Ci0JaW50IHBy aW8gPSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQ7CisJdTY0IGRlYWRsaW5lID0gSTkxNV9ERUFETElO RV9ORVZFUjsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOwog CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UocnEsIHJuLAogCQkJCQkgJmVuZ2lu ZS0+YWN0aXZlLnJlcXVlc3RzLAogCQkJCQkgc2NoZWQubGluaykgewotCQlpZiAoaTkxNV9yZXF1 ZXN0X2NvbXBsZXRlZChycSkpCisJCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewor CQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOwogCQkJY29udGludWU7IC8qIFhYWCAq LworCQl9CiAKIAkJX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQocnEpOwogCi0JCUdFTV9CVUdfT04o cnFfcHJpbyhycSkgPT0gSTkxNV9QUklPUklUWV9JTlZBTElEKTsKLQkJaWYgKHJxX3ByaW8ocnEp ICE9IHByaW8pIHsKLQkJCXByaW8gPSBycV9wcmlvKHJxKTsKLQkJCXBsID0gaTkxNV9zY2hlZF9s b29rdXBfcHJpb2xpc3QoZW5naW5lLCBwcmlvKTsKKwkJaWYgKGk5MTVfcmVxdWVzdF9zdGFydGVk KHJxKSkgeworCQkJdTY0IGRlYWRsaW5lID0KKwkJCQlpOTE1X3NjaGVkdWxlcl9uZXh0X3ZpcnR1 YWxfZGVhZGxpbmUocnFfcHJpbyhycSkpOworCQkJcnEtPnNjaGVkLmRlYWRsaW5lID0gbWluKHJx X2RlYWRsaW5lKHJxKSwgZGVhZGxpbmUpOworCQl9CisKKwkJaWYgKHJxX2RlYWRsaW5lKHJxKSAh PSBkZWFkbGluZSkgeworCQkJZGVhZGxpbmUgPSBycV9kZWFkbGluZShycSk7CisJCQlwbCA9IGk5 MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KGVuZ2luZSwgZGVhZGxpbmUpOworCiAJCX0KIAkJR0VN X0JVR19PTihSQl9FTVBUWV9ST09UKCZlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZS5yYl9yb290KSk7 CiAKQEAgLTE1NDYsMTQgKzE1NTcsMTQgQEAgZHVtcF9wb3J0KGNoYXIgKmJ1ZiwgaW50IGJ1Zmxl biwgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlpZiAoIXJx KQogCQlyZXR1cm4gIiI7CiAKLQlzbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVzY2NpZDoleCAlbGx4 OiVsbGQlcyBwcmlvICVkIiwKKwlzbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVzY2NpZDoleCAlbGx4 OiVsbGQlcyBkbCAlbGx1IiwKIAkJIHByZWZpeCwKIAkJIHJxLT5jb250ZXh0LT5scmMuY2NpZCwK IAkJIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8sCiAJCSBpOTE1X3JlcXVlc3Rf Y29tcGxldGVkKHJxKSA/ICIhIiA6CiAJCSBpOTE1X3JlcXVlc3Rfc3RhcnRlZChycSkgPyAiKiIg OgogCQkgIiIsCi0JCSBycV9wcmlvKHJxKSk7CisJCSBycV9kZWFkbGluZShycSkpOwogCiAJcmV0 dXJuIGJ1ZjsKIH0KQEAgLTE4NjMsNyArMTg3NCw5IEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxfeGZl cl9icmVhZGNydW1icyhzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlKQogCWludGVsX2VuZ2luZV90 cmFuc2Zlcl9zdGFsZV9icmVhZGNydW1icyh2ZS0+c2libGluZ3NbMF0sICZ2ZS0+Y29udGV4dCk7 CiB9CiAKLXN0YXRpYyB2b2lkIGRlZmVyX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IHN0cnVjdCBsaXN0X2hlYWQgKiBjb25zdCBwbCkKK3N0YXRpYyB2b2lkIGRlZmVyX3JlcXVlc3Qo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKiBjb25zdCBw bCwKKwkJCSAgdTY0IGRlYWRsaW5lKQogewogCUxJU1RfSEVBRChsaXN0KTsKIApAQCAtMTg3OCw2 ICsxODkxLDcgQEAgc3RhdGljIHZvaWQgZGVmZXJfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgc3RydWN0IGxpc3RfaGVhZCAqIGNvbnN0IHBsKQogCQlzdHJ1Y3QgaTkxNV9kZXBlbmRl bmN5ICpwOwogCiAJCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2lzX2FjdGl2ZShycSkpOworCQly cS0+c2NoZWQuZGVhZGxpbmUgPSBkZWFkbGluZTsKIAkJbGlzdF9tb3ZlX3RhaWwoJnJxLT5zY2hl ZC5saW5rLCBwbCk7CiAKIAkJZm9yX2VhY2hfd2FpdGVyKHAsIHJxKSB7CkBAIC0xOTAwLDEwICsx OTE0LDkgQEAgc3RhdGljIHZvaWQgZGVmZXJfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgc3RydWN0IGxpc3RfaGVhZCAqIGNvbnN0IHBsKQogCQkJaWYgKCFpOTE1X3JlcXVlc3RfaXNf cmVhZHkodykpCiAJCQkJY29udGludWU7CiAKLQkJCWlmIChycV9wcmlvKHcpIDwgcnFfcHJpbyhy cSkpCisJCQlpZiAocnFfZGVhZGxpbmUodykgPiBkZWFkbGluZSkKIAkJCQljb250aW51ZTsKIAot CQkJR0VNX0JVR19PTihycV9wcmlvKHcpID4gcnFfcHJpbyhycSkpOwogCQkJbGlzdF9tb3ZlX3Rh aWwoJnctPnNjaGVkLmxpbmssICZsaXN0KTsKIAkJfQogCkBAIC0xOTE0LDQ2ICsxOTI3LDIxIEBA IHN0YXRpYyB2b2lkIGRlZmVyX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVj dCBsaXN0X2hlYWQgKiBjb25zdCBwbCkKIHN0YXRpYyB2b2lkIGRlZmVyX2FjdGl2ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJ dTY0IGRlYWRsaW5lOwogCiAJcnEgPSBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2lu ZSk7CiAJaWYgKCFycSkKIAkJcmV0dXJuOwogCi0JZGVmZXJfcmVxdWVzdChycSwgaTkxNV9zY2hl ZF9sb29rdXBfcHJpb2xpc3QoZW5naW5lLCBycV9wcmlvKHJxKSkpOwotfQotCi1zdGF0aWMgYm9v bAotbmVlZF90aW1lc2xpY2UoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAot CSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKLQkgICAgICAgc3RydWN0IHZp cnR1YWxfZW5naW5lICp2ZSkKLXsKLQlpbnQgaGludDsKLQotCWlmICghaW50ZWxfZW5naW5lX2hh c190aW1lc2xpY2VzKGVuZ2luZSkpCi0JCXJldHVybiBmYWxzZTsKLQotCWhpbnQgPSBlbmdpbmUt PmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50OwotCi0JaWYgKHZlKSB7Ci0JCWNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmluZmxpZ2h0ID0KLQkJCWludGVsX2NvbnRleHRfaW5mbGln aHQoJnZlLT5jb250ZXh0KTsKLQotCQlpZiAoIWluZmxpZ2h0IHx8IGluZmxpZ2h0ID09IGVuZ2lu ZSkgewotCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqbmV4dDsKLQotCQkJcmN1X3JlYWRfbG9jaygp OwotCQkJbmV4dCA9IFJFQURfT05DRSh2ZS0+cmVxdWVzdCk7Ci0JCQlpZiAobmV4dCkKLQkJCQlo aW50ID0gbWF4KGhpbnQsIHJxX3ByaW8obmV4dCkpOwotCQkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0J CX0KLQl9Ci0KLQlpZiAoIWxpc3RfaXNfbGFzdCgmcnEtPnNjaGVkLmxpbmssICZlbmdpbmUtPmFj dGl2ZS5yZXF1ZXN0cykpCi0JCWhpbnQgPSBtYXgoaGludCwgcnFfcHJpbyhsaXN0X25leHRfZW50 cnkocnEsIHNjaGVkLmxpbmspKSk7CisJZGVhZGxpbmUgPSBtYXgocnFfZGVhZGxpbmUocnEpLAor CQkgICAgICAgaTkxNV9zY2hlZHVsZXJfbmV4dF92aXJ0dWFsX2RlYWRsaW5lKHJxX3ByaW8ocnEp KSk7CisJRU5HSU5FX1RSQUNFKGVuZ2luZSwgImRlZmVyICVsbHg6JWxsZCwgZGw6JWxsdSAtPiAl bGx1XG4iLAorCQkgICAgIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8sCisJCSAg ICAgcnFfZGVhZGxpbmUocnEpLCBkZWFkbGluZSk7CiAKLQlHRU1fQlVHX09OKGhpbnQgPj0gSTkx NV9QUklPUklUWV9VTlBSRUVNUFRBQkxFKTsKLQlyZXR1cm4gaGludCA+PSBlZmZlY3RpdmVfcHJp byhycSk7CisJZGVmZXJfcmVxdWVzdChycSwKKwkJICAgICAgaTkxNV9zY2hlZF9sb29rdXBfcHJp b2xpc3QoZW5naW5lLCBkZWFkbGluZSksCisJCSAgICAgIGRlYWRsaW5lKTsKIH0KIAogc3RhdGlj IGJvb2wKQEAgLTE5NzYsNDIgKzE5NjQsNTYgQEAgdGltZXNsaWNlX3lpZWxkKGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICplbCwKIH0KIAogc3RhdGljIGJvb2wKLXRpbWVzbGlj ZV9leHBpcmVkKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICplbCwKLQkJICBj b25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3RpbWVzbGljZV9leHBpcmVkKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7 Ci0JcmV0dXJuIHRpbWVyX2V4cGlyZWQoJmVsLT50aW1lcikgfHwgdGltZXNsaWNlX3lpZWxkKGVs LCBycSk7Ci19CisJY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmVsID0gJmVu Z2luZS0+ZXhlY2xpc3RzOwogCi1zdGF0aWMgaW50Ci1zd2l0Y2hfcHJpbyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQotewotCWlm IChsaXN0X2lzX2xhc3QoJnJxLT5zY2hlZC5saW5rLCAmZW5naW5lLT5hY3RpdmUucmVxdWVzdHMp KQotCQlyZXR1cm4gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludDsKKwlpZiAo IWludGVsX2VuZ2luZV9oYXNfdGltZXNsaWNlcyhlbmdpbmUpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlpZiAoaTkxNV9yZXF1ZXN0X2hhc19ub3ByZWVtcHQocnEpICYmIGk5MTVfcmVxdWVzdF9zdGFy dGVkKHJxKSkKKwkJcmV0dXJuIGZhbHNlOwogCi0JcmV0dXJuIHJxX3ByaW8obGlzdF9uZXh0X2Vu dHJ5KHJxLCBzY2hlZC5saW5rKSk7CisJcmV0dXJuIHRpbWVyX2V4cGlyZWQoJmVsLT50aW1lcikg fHwgdGltZXNsaWNlX3lpZWxkKGVsLCBycSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZwotdGltZXNsaWNlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0 YXRpYyB1bnNpZ25lZCBsb25nIHRpbWVzbGljZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CiAJcmV0dXJuIFJFQURfT05DRShlbmdpbmUtPnByb3BzLnRpbWVzbGljZV9k dXJhdGlvbl9tcyk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGFjdGl2ZV90aW1lc2xpY2Uo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIGJvb2wgbmVlZHNf dGltZXNsaWNlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgICBj b25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCWNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gKmV4ZWNsaXN0cy0+YWN0aXZlOwotCisJLyogSWYgbm90 IGN1cnJlbnRseSBhY3RpdmUsIG9yIGFib3V0IHRvIHN3aXRjaCwgd2FpdCBmb3IgbmV4dCBldmVu dCAqLwogCWlmICghcnEgfHwgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCi0JCXJldHVybiAw OworCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBXZSBkbyBub3QgbmVlZCB0byBzdGFydCB0aGUgdGlt ZXNsaWNlIHVudGlsIGFmdGVyIHRoZSBBQ0sgKi8KKwlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+ZXhl Y2xpc3RzLnBlbmRpbmdbMF0pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBJZiBFTFNQWzFdIGlz IG9jY3VwaWVkLCBhbHdheXMgY2hlY2sgdG8gc2VlIGlmIHdvcnRoIHNsaWNpbmcgKi8KKwlpZiAo IWxpc3RfaXNfbGFzdCgmcnEtPnNjaGVkLmxpbmssICZlbmdpbmUtPmFjdGl2ZS5yZXF1ZXN0cykp CisJCXJldHVybiB0cnVlOworCisJLyogT3RoZXJ3aXNlLCBFTFNQWzBdIGlzIGJ5IGl0c2VsZiwg YnV0IG1heSBiZSB3YWl0aW5nIGluIHRoZSBxdWV1ZSAqLworCWlmIChyYl9maXJzdF9jYWNoZWQo JmVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlKSkKKwkJcmV0dXJuIHRydWU7CiAKLQlpZiAoUkVBRF9P TkNFKGV4ZWNsaXN0cy0+c3dpdGNoX3ByaW9yaXR5X2hpbnQpIDwgZWZmZWN0aXZlX3ByaW8ocnEp KQorCXJldHVybiByYl9maXJzdF9jYWNoZWQoJmVuZ2luZS0+ZXhlY2xpc3RzLnZpcnR1YWwpOwor fQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBhY3RpdmVfdGltZXNsaWNlKGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwkvKiBEaXNhYmxlIHRoZSB0aW1lciBpZiB0aGVy ZSBpcyBub3RoaW5nIHRvIHN3aXRjaCB0byAqLworCWlmICghbmVlZHNfdGltZXNsaWNlKGVuZ2lu ZSwgZXhlY2xpc3RzX2FjdGl2ZSgmZW5naW5lLT5leGVjbGlzdHMpKSkKIAkJcmV0dXJuIDA7CiAK IAlyZXR1cm4gdGltZXNsaWNlKGVuZ2luZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldF90aW1lc2xp Y2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgc3RhcnRfdGlt ZXNsaWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1bnNpZ25lZCBsb25n IGR1cmF0aW9uOwogCkBAIC0yMDI0LDI5ICsyMDI2LDYgQEAgc3RhdGljIHZvaWQgc2V0X3RpbWVz bGljZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc2V0X3RpbWVyX21zKCZlbmdp bmUtPmV4ZWNsaXN0cy50aW1lciwgZHVyYXRpb24pOwogfQogCi1zdGF0aWMgdm9pZCBzdGFydF90 aW1lc2xpY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgcHJpbykKLXsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xp c3RzOwotCXVuc2lnbmVkIGxvbmcgZHVyYXRpb247Ci0KLQlpZiAoIWludGVsX2VuZ2luZV9oYXNf dGltZXNsaWNlcyhlbmdpbmUpKQotCQlyZXR1cm47Ci0KLQlXUklURV9PTkNFKGV4ZWNsaXN0cy0+ c3dpdGNoX3ByaW9yaXR5X2hpbnQsIHByaW8pOwotCWlmIChwcmlvID09IElOVF9NSU4pCi0JCXJl dHVybjsKLQotCWlmICh0aW1lcl9wZW5kaW5nKCZleGVjbGlzdHMtPnRpbWVyKSkKLQkJcmV0dXJu OwotCi0JZHVyYXRpb24gPSB0aW1lc2xpY2UoZW5naW5lKTsKLQlFTkdJTkVfVFJBQ0UoZW5naW5l LAotCQkgICAgICJzdGFydCB0aW1lc2xpY2luZywgcHJpbzolZCwgaW50ZXJ2YWw6JWx1IiwKLQkJ ICAgICBwcmlvLCBkdXJhdGlvbik7Ci0KLQlzZXRfdGltZXJfbXMoJmV4ZWNsaXN0cy0+dGltZXIs IGR1cmF0aW9uKTsKLX0KLQogc3RhdGljIHZvaWQgcmVjb3JkX3ByZWVtcHRpb24oc3RydWN0IGlu dGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKIHsKIAkodm9pZClJOTE1X1NFTEZURVNU X09OTFkoZXhlY2xpc3RzLT5wcmVlbXB0X2hhbmcuY291bnQrKyk7CkBAIC0yMTM4LDExICsyMTE3 LDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAogCQlpZiAobmVlZF9wcmVlbXB0KGVuZ2luZSwgbGFzdCwgdmUpKSB7CiAJ CQlFTkdJTkVfVFJBQ0UoZW5naW5lLAotCQkJCSAgICAgInByZWVtcHRpbmcgbGFzdD0lbGx4OiVs bGQsIHByaW89JWQsIGhpbnQ9JWRcbiIsCisJCQkJICAgICAicHJlZW1wdGluZyBsYXN0PSVsbHg6 JWxsdSwgZGw9JWxsdVxuIiwKIAkJCQkgICAgIGxhc3QtPmZlbmNlLmNvbnRleHQsCiAJCQkJICAg ICBsYXN0LT5mZW5jZS5zZXFubywKLQkJCQkgICAgIGxhc3QtPnNjaGVkLmF0dHIucHJpb3JpdHks Ci0JCQkJICAgICBleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQpOworCQkJCSAgICAgcnFf ZGVhZGxpbmUobGFzdCkpOwogCQkJcmVjb3JkX3ByZWVtcHRpb24oZXhlY2xpc3RzKTsKIAogCQkJ LyoKQEAgLTIxNjIsMTQgKzIxNDAsMTMgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJX191bndpbmRfaW5jb21wbGV0ZV9y ZXF1ZXN0cyhlbmdpbmUpOwogCiAJCQlsYXN0ID0gTlVMTDsKLQkJfSBlbHNlIGlmIChuZWVkX3Rp bWVzbGljZShlbmdpbmUsIGxhc3QsIHZlKSAmJgotCQkJICAgdGltZXNsaWNlX2V4cGlyZWQoZXhl Y2xpc3RzLCBsYXN0KSkgeworCQl9IGVsc2UgaWYgKHRpbWVzbGljZV9leHBpcmVkKGVuZ2luZSwg bGFzdCkpIHsKIAkJCUVOR0lORV9UUkFDRShlbmdpbmUsCi0JCQkJICAgICAiZXhwaXJlZCBsYXN0 PSVsbHg6JWxsZCwgcHJpbz0lZCwgaGludD0lZCwgeWllbGQ/PSVzXG4iLAotCQkJCSAgICAgbGFz dC0+ZmVuY2UuY29udGV4dCwKLQkJCQkgICAgIGxhc3QtPmZlbmNlLnNlcW5vLAotCQkJCSAgICAg bGFzdC0+c2NoZWQuYXR0ci5wcmlvcml0eSwKLQkJCQkgICAgIGV4ZWNsaXN0cy0+cXVldWVfcHJp b3JpdHlfaGludCwKKwkJCQkgICAgICJleHBpcmVkOiVzIGxhc3Q9JWxseDolbGx1LCBkZWFkbGlu ZT0lbGx1LCBub3c9JWxsdSwgeWllbGQ/PSVzXG4iLAorCQkJCSAgICAgeWVzbm8odGltZXJfZXhw aXJlZCgmZXhlY2xpc3RzLT50aW1lcikpLAorCQkJCSAgICAgbGFzdC0+ZmVuY2UuY29udGV4dCwg bGFzdC0+ZmVuY2Uuc2Vxbm8sCisJCQkJICAgICBycV9kZWFkbGluZShsYXN0KSwKKwkJCQkgICAg IGk5MTVfc2NoZWRfdG9fdGlja3Moa3RpbWVfZ2V0KCkpLAogCQkJCSAgICAgeWVzbm8odGltZXNs aWNlX3lpZWxkKGV4ZWNsaXN0cywgbGFzdCkpKTsKIAogCQkJcmluZ19zZXRfcGF1c2VkKGVuZ2lu ZSwgMSk7CkBAIC0yMjA1LDcgKzIxODIsNiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCQkJICogRXZlbiBpZiBFTFNQWzFd IGlzIG9jY3VwaWVkIGFuZCBub3Qgd29ydGh5CiAJCQkJICogb2YgdGltZXNsaWNlcywgb3VyIHF1 ZXVlIG1pZ2h0IGJlLgogCQkJCSAqLwotCQkJCXN0YXJ0X3RpbWVzbGljZShlbmdpbmUsIHF1ZXVl X3ByaW8oZXhlY2xpc3RzKSk7CiAJCQkJcmV0dXJuOwogCQkJfQogCQl9CkBAIC0yMjI0LDcgKzIy MDAsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJCUdFTV9CVUdfT04ocnEtPmVuZ2luZSAhPSAmdmUtPmJhc2UpOwogCQlH RU1fQlVHX09OKHJxLT5jb250ZXh0ICE9ICZ2ZS0+Y29udGV4dCk7CiAKLQkJaWYgKHVubGlrZWx5 KHJxX3ByaW8ocnEpIDwgcXVldWVfcHJpbyhleGVjbGlzdHMpKSkgeworCQlpZiAodW5saWtlbHko cnFfZGVhZGxpbmUocnEpID4gcXVldWVfZGVhZGxpbmUoZXhlY2xpc3RzKSkpIHsKIAkJCXNwaW5f dW5sb2NrKCZ2ZS0+YmFzZS5hY3RpdmUubG9jayk7CiAJCQlicmVhazsKIAkJfQpAQCAtMjIzMyw3 ICsyMjA5LDYgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCiAJCWlmIChsYXN0ICYmICFjYW5fbWVyZ2VfcnEobGFzdCwgcnEp KSB7CiAJCQlzcGluX3VubG9jaygmdmUtPmJhc2UuYWN0aXZlLmxvY2spOwotCQkJc3RhcnRfdGlt ZXNsaWNlKGVuZ2luZSwgcnFfcHJpbyhycSkpOwogCQkJcmV0dXJuOyAvKiBsZWF2ZSB0aGlzIGZv ciBhbm90aGVyIHNpYmxpbmcgKi8KIAkJfQogCkBAIC0yMjQ1LDEwICsyMjIwLDcgQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CQkJICAgICBpOTE1X3JlcXVlc3Rfc3RhcnRlZChycSkgPyAiKiIgOgogCQkJICAgICAiIiwKIAkJ CSAgICAgeWVzbm8oZW5naW5lICE9IHZlLT5zaWJsaW5nc1swXSkpOwotCiAJCVdSSVRFX09OQ0Uo dmUtPnJlcXVlc3QsIE5VTEwpOwotCQlXUklURV9PTkNFKHZlLT5iYXNlLmV4ZWNsaXN0cy5xdWV1 ZV9wcmlvcml0eV9oaW50LAotCQkJICAgSU5UX01JTik7CiAKIAkJcmIgPSAmdmUtPm5vZGVzW2Vu Z2luZS0+aWRdLnJiOwogCQlyYl9lcmFzZV9jYWNoZWQocmIsICZleGVjbGlzdHMtPnZpcnR1YWwp OwpAQCAtMjM5MSwyOCArMjM2Myw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiAKIGRvbmU6Ci0JLyoKLQkgKiBIZXJl IGJlIGEgYml0IG9mIG1hZ2ljISBPciBzbGVpZ2h0LW9mLWhhbmQsIHdoaWNoZXZlciB5b3UgcHJl ZmVyLgotCSAqCi0JICogV2UgY2hvb3NlIHRoZSBwcmlvcml0eSBoaW50IHN1Y2ggdGhhdCBpZiB3 ZSBhZGQgYSByZXF1ZXN0IG9mIGdyZWF0ZXIKLQkgKiBwcmlvcml0eSB0aGFuIHRoaXMsIHdlIGtp Y2sgdGhlIHN1Ym1pc3Npb24gdGFza2xldCB0byBkZWNpZGUgb24KLQkgKiB0aGUgcmlnaHQgb3Jk ZXIgb2Ygc3VibWl0dGluZyB0aGUgcmVxdWVzdHMgdG8gaGFyZHdhcmUuIFdlIG11c3QKLQkgKiBh bHNvIGJlIHByZXBhcmVkIHRvIHJlb3JkZXIgcmVxdWVzdHMgYXMgdGhleSBhcmUgaW4tZmxpZ2h0 IG9uIHRoZQotCSAqIEhXLiBXZSBkZXJpdmUgdGhlIHByaW9yaXR5IGhpbnQgdGhlbiBhcyB0aGUg Zmlyc3QgImhvbGUiIGluCi0JICogdGhlIEhXIHN1Ym1pc3Npb24gcG9ydHMgYW5kIGlmIHRoZXJl IGFyZSBubyBhdmFpbGFibGUgc2xvdHMsCi0JICogdGhlIHByaW9yaXR5IG9mIHRoZSBsb3dlc3Qg ZXhlY3V0aW5nIHJlcXVlc3QsIGkuZS4gbGFzdC4KLQkgKgotCSAqIFdoZW4gd2UgZG8gcmVjZWl2 ZSBhIGhpZ2hlciBwcmlvcml0eSByZXF1ZXN0IHJlYWR5IHRvIHJ1biBmcm9tIHRoZQotCSAqIHVz ZXIsIHNlZSBxdWV1ZV9yZXF1ZXN0KCksIHRoZSBwcmlvcml0eSBoaW50IGlzIGJ1bXBlZCB0byB0 aGF0Ci0JICogcmVxdWVzdCB0cmlnZ2VyaW5nIHByZWVtcHRpb24gb24gdGhlIG5leHQgZGVxdWV1 ZSAob3Igc3Vic2VxdWVudAotCSAqIGludGVycnVwdCBmb3Igc2Vjb25kYXJ5IHBvcnRzKS4KLQkg Ki8KLQlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBxdWV1ZV9wcmlvKGV4ZWNsaXN0 cyk7Ci0KIAlpZiAoc3VibWl0KSB7CiAJCSpwb3J0ID0gZXhlY2xpc3RzX3NjaGVkdWxlX2luKGxh c3QsIHBvcnQgLSBleGVjbGlzdHMtPnBlbmRpbmcpOwotCQlleGVjbGlzdHMtPnN3aXRjaF9wcmlv cml0eV9oaW50ID0KLQkJCXN3aXRjaF9wcmlvKGVuZ2luZSwgKmV4ZWNsaXN0cy0+cGVuZGluZyk7 CiAKIAkJLyoKIAkJICogU2tpcCBpZiB3ZSBlbmRlZCB1cCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUg c2V0IG9mIHJlcXVlc3RzLApAQCAtMjQzMiw3ICsyMzg0LDYgQEAgc3RhdGljIHZvaWQgZXhlY2xp c3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlzZXRfcHJlZW1w dF90aW1lb3V0KGVuZ2luZSwgKmFjdGl2ZSk7CiAJCWV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5n aW5lKTsKIAl9IGVsc2UgewotCQlzdGFydF90aW1lc2xpY2UoZW5naW5lLCBleGVjbGlzdHMtPnF1 ZXVlX3ByaW9yaXR5X2hpbnQpOwogc2tpcF9zdWJtaXQ6CiAJCXJpbmdfc2V0X3BhdXNlZChlbmdp bmUsIDApOwogCX0KQEAgLTI2NzUsNyArMjYyNiw2IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3Ni KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9IHdoaWxlIChoZWFkICE9IHRhaWwp OwogCiAJZXhlY2xpc3RzLT5jc2JfaGVhZCA9IGhlYWQ7Ci0Jc2V0X3RpbWVzbGljZShlbmdpbmUp OwogCiAJLyoKIAkgKiBHZW4xMSBoYXMgcHJvdmVuIHRvIGZhaWwgd3J0IGdsb2JhbCBvYnNlcnZh dGlvbiBwb2ludCBiZXR3ZWVuCkBAIC0yODI0LDkgKzI3NzQsMTAgQEAgc3RhdGljIGJvb2wgaG9s ZF9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCXJldHVybiByZXN1bHQ7 CiB9CiAKLXN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3VuaG9sZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKK3N0YXRpYyBib29sIF9fZXhlY2xpc3RzX3VuaG9sZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKIHsKIAlMSVNUX0hFQUQobGlzdCk7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKIAogCWRv IHsKIAkJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqcDsKQEAgLTI4MzcsMTAgKzI3ODgsNyBAQCBz dGF0aWMgdm9pZCBfX2V4ZWNsaXN0c191bmhvbGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJ CUdFTV9CVUdfT04oIWk5MTVfc3dfZmVuY2Vfc2lnbmFsZWQoJnJxLT5zdWJtaXQpKTsKIAogCQlp OTE1X3JlcXVlc3RfY2xlYXJfaG9sZChycSk7Ci0JCWxpc3RfbW92ZV90YWlsKCZycS0+c2NoZWQu bGluaywKLQkJCSAgICAgICBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChycS0+ZW5naW5lLAot CQkJCQkJCSAgcnFfcHJpbyhycSkpKTsKLQkJc2V0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfUFFVRVVF LCAmcnEtPmZlbmNlLmZsYWdzKTsKKwkJc3VibWl0IHw9IGludGVsX2VuZ2luZV9xdWV1ZV9yZXF1 ZXN0KHJxLT5lbmdpbmUsIHJxKTsKIAogCQkvKiBBbHNvIHJlbGVhc2UgYW55IGNoaWxkcmVuIG9u IHRoaXMgZW5naW5lIHRoYXQgYXJlIHJlYWR5ICovCiAJCWZvcl9lYWNoX3dhaXRlcihwLCBycSkg ewpAQCAtMjg2OSw2ICsyODE3LDggQEAgc3RhdGljIHZvaWQgX19leGVjbGlzdHNfdW5ob2xkKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCiAJCXJxID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxs KCZsaXN0LCB0eXBlb2YoKnJxKSwgc2NoZWQubGluayk7CiAJfSB3aGlsZSAocnEpOworCisJcmV0 dXJuIHN1Ym1pdDsKIH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3VuaG9sZChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCkBAIC0yODgwLDEyICsyODMwLDggQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX3VuaG9sZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJICogTW92 ZSB0aGlzIHJlcXVlc3QgYmFjayB0byB0aGUgcHJpb3JpdHkgcXVldWUsIGFuZCBhbGwgb2YgaXRz CiAJICogY2hpbGRyZW4gYW5kIGdyYW5kY2hpbGRyZW4gdGhhdCB3ZXJlIHN1c3BlbmRlZCBhbG9u ZyB3aXRoIGl0LgogCSAqLwotCV9fZXhlY2xpc3RzX3VuaG9sZChycSk7Ci0KLQlpZiAocnFfcHJp byhycSkgPiBlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50KSB7Ci0JCWVuZ2lu ZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBycV9wcmlvKHJxKTsKKwlpZiAoX19l eGVjbGlzdHNfdW5ob2xkKHJxKSkKIAkJdGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5leGVj bGlzdHMudGFza2xldCk7Ci0JfQogCiAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPmFjdGl2ZS5s b2NrKTsKIH0KQEAgLTMxMjcsNiArMzA3Myw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJt aXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQlpZiAodW5saWtlbHkodGltZW91 dCAmJiBwcmVlbXB0X3RpbWVvdXQoZW5naW5lKSkpCiAJCQlleGVjbGlzdHNfcmVzZXQoZW5naW5l LCAicHJlZW1wdGlvbiB0aW1lIG91dCIpOwogCX0KKworCXN0YXJ0X3RpbWVzbGljZShlbmdpbmUp OwogfQogCiBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19raWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICpleGVjbGlzdHMpCkBAIC0zMTQ4LDE1ICszMDk2LDYgQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX3ByZWVtcHQoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKQogCWV4ZWNsaXN0c19r aWNrKHRpbWVyLCBwcmVlbXB0KTsKIH0KIAotc3RhdGljIHZvaWQgcXVldWVfcmVxdWVzdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQotewotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnJxLT5zY2hlZC5saW5rKSk7Ci0JbGlzdF9h ZGRfdGFpbCgmcnEtPnNjaGVkLmxpbmssCi0JCSAgICAgIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9s aXN0KGVuZ2luZSwgcnFfcHJpbyhycSkpKTsKLQlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVF VUUsICZycS0+ZmVuY2UuZmxhZ3MpOwotfQotCiBzdGF0aWMgdm9pZCBfX3N1Ym1pdF9xdWV1ZV9p bW0oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwpAQCAt MzE2NywxOCArMzEwNiw2IEBAIHN0YXRpYyB2b2lkIF9fc3VibWl0X3F1ZXVlX2ltbShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0 KGVuZ2luZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN1Ym1pdF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCi0JCQkgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0J c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNs aXN0czsKLQotCWlmIChycV9wcmlvKHJxKSA8PSBleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hp bnQpCi0JCXJldHVybjsKLQotCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IHJxX3By aW8ocnEpOwotCV9fc3VibWl0X3F1ZXVlX2ltbShlbmdpbmUpOwotfQotCiBzdGF0aWMgYm9vbCBh bmNlc3Rvcl9vbl9ob2xkKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJ CSAgICAgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7CkBAIC0zMjEzLDEyICszMTQw LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJlcXVlc3QpCiAJCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPnNjaGVkLmxpbmssICZl bmdpbmUtPmFjdGl2ZS5ob2xkKTsKIAkJaTkxNV9yZXF1ZXN0X3NldF9ob2xkKHJlcXVlc3QpOwog CX0gZWxzZSB7Ci0JCXF1ZXVlX3JlcXVlc3QoZW5naW5lLCByZXF1ZXN0KTsKLQotCQlHRU1fQlVH X09OKFJCX0VNUFRZX1JPT1QoJmVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlLnJiX3Jvb3QpKTsKLQkJ R0VNX0JVR19PTihsaXN0X2VtcHR5KCZyZXF1ZXN0LT5zY2hlZC5saW5rKSk7Ci0KLQkJc3VibWl0 X3F1ZXVlKGVuZ2luZSwgcmVxdWVzdCk7CisJCWlmIChpbnRlbF9lbmdpbmVfcXVldWVfcmVxdWVz dChlbmdpbmUsIHJlcXVlc3QpKQorCQkJX19zdWJtaXRfcXVldWVfaW1tKGVuZ2luZSk7CisJCXN0 YXJ0X3RpbWVzbGljZShlbmdpbmUpOwogCX0KIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVu Z2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKQEAgLTQyNzMsMTAgKzQxOTcsNiBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfcmVzZXRfcmV3aW5kKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgYm9vbCBzdGFsbGVkKQogCiBzdGF0aWMgdm9pZCBub3Bfc3VibWlzc2lvbl90YXNrbGV0KHVu c2lnbmVkIGxvbmcgZGF0YSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5n aW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwotCi0JLyogVGhlIGRyaXZlciBp cyB3ZWRnZWQ7IGRvbid0IHByb2Nlc3MgYW55IG1vcmUgZXZlbnRzLiAqLwotCVdSSVRFX09OQ0Uo ZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCwgSU5UX01JTik7CiB9CiAKIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQpAQCAtNDMyMiw2ICs0MjQyLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0 X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCXJiX2VyYXNlX2NhY2hl ZCgmcC0+bm9kZSwgJmV4ZWNsaXN0cy0+cXVldWUpOwogCQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7 CiAJfQorCUdFTV9CVUdfT04oIVJCX0VNUFRZX1JPT1QoJmV4ZWNsaXN0cy0+cXVldWUucmJfcm9v dCkpOwogCiAJLyogT24taG9sZCByZXF1ZXN0cyB3aWxsIGJlIGZsdXNoZWQgdG8gdGltZWxpbmUg dXBvbiB0aGVpciByZWxlYXNlICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+ YWN0aXZlLmhvbGQsIHNjaGVkLmxpbmspCkBAIC00MzQzLDE3ICs0MjY0LDEyIEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCQkJcnEtPmVuZ2luZSA9IGVuZ2luZTsKIAkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7 CiAJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKLQotCQkJdmUtPmJhc2UuZXhlY2xpc3RzLnF1ZXVl X3ByaW9yaXR5X2hpbnQgPSBJTlRfTUlOOwogCQl9CiAJCXNwaW5fdW5sb2NrKCZ2ZS0+YmFzZS5h Y3RpdmUubG9jayk7CiAJfQogCiAJLyogUmVtYWluaW5nIF91bnJlYWR5XyByZXF1ZXN0cyB3aWxs IGJlIG5vcCdlZCB3aGVuIHN1Ym1pdHRlZCAqLwogCi0JZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0 eV9oaW50ID0gSU5UX01JTjsKLQlleGVjbGlzdHMtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7Ci0K IAlHRU1fQlVHX09OKF9fdGFza2xldF9pc19lbmFibGVkKCZleGVjbGlzdHMtPnRhc2tsZXQpKTsK IAlleGVjbGlzdHMtPnRhc2tsZXQuZnVuYyA9IG5vcF9zdWJtaXNzaW9uX3Rhc2tsZXQ7CiAKQEAg LTU0NDksNyArNTM2NSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMg dmlydHVhbF9jb250ZXh0X29wcyA9IHsKIAkuZGVzdHJveSA9IHZpcnR1YWxfY29udGV4dF9kZXN0 cm95LAogfTsKIAotc3RhdGljIGludGVsX2VuZ2luZV9tYXNrX3QgdmlydHVhbF9zdWJtaXNzaW9u X21hc2soc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSkKK3N0YXRpYyBpbnRlbF9lbmdpbmVfbWFz a190Cit2aXJ0dWFsX3N1Ym1pc3Npb25fbWFzayhzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlLCB1 NjQgKmRlYWRsaW5lKQogewogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCWludGVsX2VuZ2lu ZV9tYXNrX3QgbWFzazsKQEAgLTU0NjYsOSArNTM4MywxMSBAQCBzdGF0aWMgaW50ZWxfZW5naW5l X21hc2tfdCB2aXJ0dWFsX3N1Ym1pc3Npb25fbWFzayhzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZl KQogCQltYXNrID0gdmUtPnNpYmxpbmdzWzBdLT5tYXNrOwogCX0KIAotCUVOR0lORV9UUkFDRSgm dmUtPmJhc2UsICJycT0lbGx4OiVsbGQsIG1hc2s9JXgsIHByaW89JWRcbiIsCisJKmRlYWRsaW5l ID0gcnFfZGVhZGxpbmUocnEpOworCisJRU5HSU5FX1RSQUNFKCZ2ZS0+YmFzZSwgInJxPSVsbHg6 JWxsdSwgbWFzaz0leCwgZGw9JWxsdVxuIiwKIAkJICAgICBycS0+ZmVuY2UuY29udGV4dCwgcnEt PmZlbmNlLnNlcW5vLAotCQkgICAgIG1hc2ssIHZlLT5iYXNlLmV4ZWNsaXN0cy5xdWV1ZV9wcmlv cml0eV9oaW50KTsKKwkJICAgICBtYXNrLCAqZGVhZGxpbmUpOwogCiAJcmV0dXJuIG1hc2s7CiB9 CkBAIC01NDc2LDEyICs1Mzk1LDEyIEBAIHN0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHZpcnR1 YWxfc3VibWlzc2lvbl9tYXNrKHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUpCiBzdGF0aWMgdm9p ZCB2aXJ0dWFsX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiB7CiAJc3Ry dWN0IHZpcnR1YWxfZW5naW5lICogY29uc3QgdmUgPSAoc3RydWN0IHZpcnR1YWxfZW5naW5lICop ZGF0YTsKLQljb25zdCBpbnQgcHJpbyA9IFJFQURfT05DRSh2ZS0+YmFzZS5leGVjbGlzdHMucXVl dWVfcHJpb3JpdHlfaGludCk7CiAJaW50ZWxfZW5naW5lX21hc2tfdCBtYXNrOworCXU2NCBkZWFk bGluZTsKIAl1bnNpZ25lZCBpbnQgbjsKIAogCXJjdV9yZWFkX2xvY2soKTsKLQltYXNrID0gdmly dHVhbF9zdWJtaXNzaW9uX21hc2sodmUpOworCW1hc2sgPSB2aXJ0dWFsX3N1Ym1pc3Npb25fbWFz ayh2ZSwgJmRlYWRsaW5lKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlpZiAodW5saWtlbHkoIW1h c2spKQogCQlyZXR1cm47CkBAIC01NTE0LDcgKzU0MzMsOCBAQCBzdGF0aWMgdm9pZCB2aXJ0dWFs X3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAJCQkgKi8KIAkJCWZpcnN0 ID0gcmJfZmlyc3RfY2FjaGVkKCZzaWJsaW5nLT5leGVjbGlzdHMudmlydHVhbCkgPT0KIAkJCQkm bm9kZS0+cmI7Ci0JCQlpZiAocHJpbyA9PSBub2RlLT5wcmlvIHx8IChwcmlvID4gbm9kZS0+cHJp byAmJiBmaXJzdCkpCisJCQlpZiAoZGVhZGxpbmUgPT0gbm9kZS0+ZGVhZGxpbmUgfHwKKwkJCSAg ICAoZGVhZGxpbmUgPCBub2RlLT5kZWFkbGluZSAmJiBmaXJzdCkpCiAJCQkJZ290byBzdWJtaXRf ZW5naW5lOwogCiAJCQlyYl9lcmFzZV9jYWNoZWQoJm5vZGUtPnJiLCAmc2libGluZy0+ZXhlY2xp c3RzLnZpcnR1YWwpOwpAQCAtNTUyOCw3ICs1NDQ4LDcgQEAgc3RhdGljIHZvaWQgdmlydHVhbF9z dWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCiAJCQlyYiA9ICpwYXJlbnQ7 CiAJCQlvdGhlciA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKm90aGVyKSwgcmIpOwotCQkJaWYgKHBy aW8gPiBvdGhlci0+cHJpbykgeworCQkJaWYgKGRlYWRsaW5lIDwgb3RoZXItPmRlYWRsaW5lKSB7 CiAJCQkJcGFyZW50ID0gJnJiLT5yYl9sZWZ0OwogCQkJfSBlbHNlIHsKIAkJCQlwYXJlbnQgPSAm cmItPnJiX3JpZ2h0OwpAQCAtNTU0Myw4ICs1NDYzLDggQEAgc3RhdGljIHZvaWQgdmlydHVhbF9z dWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCiBzdWJtaXRfZW5naW5lOgog CQlHRU1fQlVHX09OKFJCX0VNUFRZX05PREUoJm5vZGUtPnJiKSk7Ci0JCW5vZGUtPnByaW8gPSBw cmlvOwotCQlpZiAoZmlyc3QgJiYgcHJpbyA+IHNpYmxpbmctPmV4ZWNsaXN0cy5xdWV1ZV9wcmlv cml0eV9oaW50KQorCQlub2RlLT5kZWFkbGluZSA9IGRlYWRsaW5lOworCQlpZiAoZmlyc3QpCiAJ CQl0YXNrbGV0X2hpX3NjaGVkdWxlKCZzaWJsaW5nLT5leGVjbGlzdHMudGFza2xldCk7CiAKIHVu bG9ja19lbmdpbmU6CkBAIC01NTc4LDExICs1NDk4LDExIEBAIHN0YXRpYyB2b2lkIHZpcnR1YWxf c3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAKIAlpZiAoaTkxNV9yZXF1 ZXN0X2NvbXBsZXRlZChycSkpIHsKIAkJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJxKTsKLQotCQl2 ZS0+YmFzZS5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47CiAJCXZlLT5y ZXF1ZXN0ID0gTlVMTDsKIAl9IGVsc2UgewotCQl2ZS0+YmFzZS5leGVjbGlzdHMucXVldWVfcHJp b3JpdHlfaGludCA9IHJxX3ByaW8ocnEpOworCQlycS0+c2NoZWQuZGVhZGxpbmUgPQorCQkJbWlu KHJxLT5zY2hlZC5kZWFkbGluZSwKKwkJCSAgICBpOTE1X3NjaGVkdWxlcl9uZXh0X3ZpcnR1YWxf ZGVhZGxpbmUocnFfcHJpbyhycSkpKTsKIAkJdmUtPnJlcXVlc3QgPSBpOTE1X3JlcXVlc3RfZ2V0 KHJxKTsKIAogCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KHZpcnR1YWxfcXVldWUodmUpKSk7CkBA IC01Njg2LDcgKzU2MDYsNiBAQCBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAogCXZlLT5iYXNlLmJvbmRfZXhlY3V0ZSA9IHZp cnR1YWxfYm9uZF9leGVjdXRlOwogCiAJSU5JVF9MSVNUX0hFQUQodmlydHVhbF9xdWV1ZSh2ZSkp OwotCXZlLT5iYXNlLmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKIAl0 YXNrbGV0X2luaXQoJnZlLT5iYXNlLmV4ZWNsaXN0cy50YXNrbGV0LAogCQkgICAgIHZpcnR1YWxf c3VibWlzc2lvbl90YXNrbGV0LAogCQkgICAgICh1bnNpZ25lZCBsb25nKXZlKTsKQEAgLTU4NzMs MTMgKzU3OTIsNiBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19zaG93X3JlcXVlc3RzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJc2hvd19yZXF1ZXN0KG0sIGxhc3QsICJcdFx0RSAi KTsKIAl9CiAKLQlpZiAoZXhlY2xpc3RzLT5zd2l0Y2hfcHJpb3JpdHlfaGludCAhPSBJTlRfTUlO KQotCQlkcm1fcHJpbnRmKG0sICJcdFx0U3dpdGNoIHByaW9yaXR5IGhpbnQ6ICVkXG4iLAotCQkJ ICAgUkVBRF9PTkNFKGV4ZWNsaXN0cy0+c3dpdGNoX3ByaW9yaXR5X2hpbnQpKTsKLQlpZiAoZXhl Y2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ICE9IElOVF9NSU4pCi0JCWRybV9wcmludGYobSwg Ilx0XHRRdWV1ZSBwcmlvcml0eSBoaW50OiAlZFxuIiwKLQkJCSAgIFJFQURfT05DRShleGVjbGlz dHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQpKTsKLQogCWxhc3QgPSBOVUxMOwogCWNvdW50ID0gMDsK IAlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVlKTsgcmI7IHJiID0g cmJfbmV4dChyYikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2No ZWNrLmMKaW5kZXggYWZhNGY4ODAzNWFjLi4wMWZjYThhY2Q0YzQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCkBAIC04NzksNyArODc5LDEwIEBAIHN0 YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJCQli cmVhazsKIAkJCQl9CiAKLQkJCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8gNSkg PCAwKSB7CisJCQkJLyogV2l0aCBkZWFkbGluZXMsIG5vIHN0cmljdCBwcmlvcml0eSAqLworCQkJ CWk5MTVfcmVxdWVzdF9zZXRfZGVhZGxpbmUocnEsIDApOworCisJCQkJaWYgKGk5MTVfcmVxdWVz dF93YWl0KHJxLCAwLCBIWiAvIDIpIDwgMCkgewogCQkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9 CiAJCQkJCQlkcm1faW5mb19wcmludGVyKGd0LT5pOTE1LT5kcm0uZGV2KTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwppbmRleCAwNTJkY2M1OWZjYzUuLmIxODI3NmNmMzBl ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKQEAgLTg1LDYgKzg1LDkg QEAgc3RhdGljIGludCB3YWl0X2Zvcl9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAogCQkJICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkgICB1bnNpZ25lZCBsb25n IHRpbWVvdXQpCiB7CisJLyogSWdub3JlIG91ciBvd24gYXR0ZW1wdHMgdG8gc3VwcHJlc3MgZXhj ZXNzIHRhc2tsZXRzICovCisJdGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5leGVjbGlzdHMu dGFza2xldCk7CisKIAl0aW1lb3V0ICs9IGppZmZpZXM7CiAJZG8gewogCQlib29sIGRvbmUgPSB0 aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpOwpAQCAtNzU0LDcgKzc1Nyw3IEBAIHNlbWFwaG9y ZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCBpbnQgaWR4KQogc3RhdGljIGludAogcmVsZWFzZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAJICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsCi0JICAgICAgaW50 IGlkeCwgaW50IHByaW8pCisJICAgICAgaW50IGlkeCwgdTY0IGRlYWRsaW5lKQogewogCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxOwogCXUzMiAqY3M7CkBAIC03NzksMTAgKzc4Miw3IEBAIHJlbGVh c2VfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWk5MTVfcmVxdWVzdF9n ZXQocnEpOwogCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCi0JbG9jYWxfYmhfZGlzYWJsZSgpOwot CWk5MTVfcmVxdWVzdF9zZXRfcHJpb3JpdHkocnEsIHByaW8pOwotCWxvY2FsX2JoX2VuYWJsZSgp OyAvKiBraWNrIHRhc2tsZXQgKi8KLQorCWk5MTVfcmVxdWVzdF9zZXRfZGVhZGxpbmUocnEsIGRl YWRsaW5lKTsKIAlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAogCXJldHVybiAwOwpAQCAtNzk2LDYg Kzc5Niw3IEBAIHNsaWNlX3NlbWFwaG9yZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpv dXRlciwKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3RydWN0IGk5MTVfcmVx dWVzdCAqaGVhZDsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlsb25nIHRpbWVvdXQ7CiAJ aW50IGVyciwgaSwgbiA9IDA7CiAKIAloZWFkID0gc2VtYXBob3JlX3F1ZXVlKG91dGVyLCB2bWEs IG4rKyk7CkBAIC04MTYsMTIgKzgxNywxNiBAQCBzbGljZV9zZW1hcGhvcmVfcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqb3V0ZXIsCiAJCX0KIAl9CiAKLQllcnIgPSByZWxlYXNlX3F1ZXVl KG91dGVyLCB2bWEsIG4sIEk5MTVfUFJJT1JJVFlfQkFSUklFUik7CisJZXJyID0gcmVsZWFzZV9x dWV1ZShvdXRlciwgdm1hLCBuLCAwKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAotCWlmIChp OTE1X3JlcXVlc3Rfd2FpdChoZWFkLCAwLAotCQkJICAgICAgMiAqIFJVTlRJTUVfSU5GTyhvdXRl ci0+aTkxNSktPm51bV9lbmdpbmVzICogKGNvdW50ICsgMikgKiAoY291bnQgKyAzKSkgPCAwKSB7 CisJLyogRXhwZWN0ZWQgbnVtYmVyIG9mIHBlc3NpbWFsIHNsaWNlcyByZXF1aXJlZCAqLworCXRp bWVvdXQgPSBSVU5USU1FX0lORk8ob3V0ZXItPmk5MTUpLT5udW1fZW5naW5lcyAqIChjb3VudCAr IDIpICogKGNvdW50ICsgMyk7CisJdGltZW91dCAqPSA0OyAvKiBzYWZldHkgZmFjdG9yLCBpbmNs dWRpbmcgYnVja2V0aW5nICovCisJdGltZW91dCArPSBIWiAvIDI7IC8qIGFuZCBpbmNsdWRlIHRo ZSByZXF1ZXN0IGNvbXBsZXRpb24gKi8KKworCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChoZWFkLCAw LCB0aW1lb3V0KSA8IDApIHsKIAkJcHJfZXJyKCJGYWlsZWQgdG8gc2xpY2UgYWxvbmcgc2VtYXBo b3JlIGNoYWluIG9mIGxlbmd0aCAoJWQsICVkKSFcbiIsCiAJCSAgICAgICBjb3VudCwgbik7CiAJ CUdFTV9UUkFDRV9EVU1QKCk7CkBAIC05MjYsNiArOTMxLDggQEAgY3JlYXRlX3Jld2luZGVyKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9m ZW5jZShycSwgJndhaXQtPmZlbmNlKTsKIAkJaWYgKGVycikKIAkJCWdvdG8gZXJyOworCisJCWk5 MTVfcmVxdWVzdF9zZXRfZGVhZGxpbmUocnEsIHJxX2RlYWRsaW5lKHdhaXQpKTsKIAl9CiAKIAlj cyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDE0KTsKQEAgLTEyMDAsNyArMTIwNyw3IEBAIHN0YXRp YyBpbnQgbGl2ZV90aW1lc2xpY2VfcXVldWUodm9pZCAqYXJnKQogCQkJZXJyID0gUFRSX0VSUihy cSk7CiAJCQlnb3RvIGVycl9oZWFydGJlYXQ7CiAJCX0KLQkJaTkxNV9yZXF1ZXN0X3NldF9wcmlv cml0eShycSwgSTkxNV9QUklPUklUWV9NQVgpOworCQlpOTE1X3JlcXVlc3Rfc2V0X2RlYWRsaW5l KHJxLCAwKTsKIAkJZXJyID0gd2FpdF9mb3Jfc3VibWl0KGVuZ2luZSwgcnEsIEhaIC8gMik7CiAJ CWlmIChlcnIpIHsKIAkJCXByX2VycigiJXM6IFRpbWVkIG91dCB0cnlpbmcgdG8gc3VibWl0IHNl bWFwaG9yZXNcbiIsCkBAIC0xMjIzLDEwICsxMjMwLDkgQEAgc3RhdGljIGludCBsaXZlX3RpbWVz bGljZV9xdWV1ZSh2b2lkICphcmcpCiAJCX0KIAogCQlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocnEpKTsKLQkJR0VNX0JVR19PTihleGVjbGlzdHNfYWN0aXZlKCZlbmdpbmUtPmV4 ZWNsaXN0cykgIT0gcnEpOwogCiAJCS8qIFF1ZXVlOiBzZW1hcGhvcmUgc2lnbmFsLCBtYXRjaGlu ZyBwcmlvcml0eSBhcyBzZW1hcGhvcmUgKi8KLQkJZXJyID0gcmVsZWFzZV9xdWV1ZShlbmdpbmUs IHZtYSwgMSwgZWZmZWN0aXZlX3ByaW8ocnEpKTsKKwkJZXJyID0gcmVsZWFzZV9xdWV1ZShlbmdp bmUsIHZtYSwgMSwgZWZmZWN0aXZlX2RlYWRsaW5lKHJxKSk7CiAJCWlmIChlcnIpCiAJCQlnb3Rv IGVycl9ycTsKIApAQCAtMTMyNiw3ICsxMzMyLDcgQEAgc3RhdGljIGludCBsaXZlX3RpbWVzbGlj ZV9ub3ByZWVtcHQodm9pZCAqYXJnKQogCiAJCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5n aW5lKTsKIAkJaWYgKElTX0VSUihjZSkpIHsKLQkJCWVyciA9IFBUUl9FUlIocnEpOworCQkJZXJy ID0gUFRSX0VSUihjZSk7CiAJCQlnb3RvIG91dF9zcGluOwogCQl9CiAKQEAgLTEzMzcsNiArMTM0 Myw3IEBAIHN0YXRpYyBpbnQgbGl2ZV90aW1lc2xpY2Vfbm9wcmVlbXB0KHZvaWQgKmFyZykKIAkJ CWdvdG8gb3V0X3NwaW47CiAJCX0KIAorCQlycS0+c2NoZWQuZGVhZGxpbmUgPSAwOwogCQlycS0+ c2NoZWQuYXR0ci5wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfQkFSUklFUjsKIAkJaTkxNV9yZXF1 ZXN0X2dldChycSk7CiAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwpAQCAtMTcwOSw2ICsxNzE2LDcg QEAgc3RhdGljIGludCBsaXZlX2xhdGVfcHJlZW1wdCh2b2lkICphcmcpCiAKIAkvKiBNYWtlIHN1 cmUgY3R4X2xvIHN0YXlzIGJlZm9yZSBjdHhfaGkgdW50aWwgd2UgdHJpZ2dlciBwcmVlbXB0aW9u LiAqLwogCWN0eF9sby0+c2NoZWQucHJpb3JpdHkgPSAxOworCWN0eF9oaS0+c2NoZWQucHJpb3Jp dHkgPSBJOTE1X1BSSU9SSVRZX01JTjsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBp ZCkgewogCQlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0OwpAQCAtMjY0OCw2ICsyNjU2LDkgQEAgc3Rh dGljIGludCBsaXZlX3ByZWVtcHRfZ2FuZyh2b2lkICphcmcpCiAJCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpuID0KIAkJCQlsaXN0X25leHRfZW50cnkocnEsIGNsaWVudF9saW5rKTsKIAorCQkJLyog V2l0aCBkZWFkbGluZXMsIG5vIHN0cmljdCBwcmlvcml0eSBvcmRlcmluZyAqLworCQkJaTkxNV9y ZXF1ZXN0X3NldF9kZWFkbGluZShycSwgMCk7CisKIAkJCWlmIChlcnIgPT0gMCAmJiBpOTE1X3Jl cXVlc3Rfd2FpdChycSwgMCwgSFogLyA1KSA8IDApIHsKIAkJCQlzdHJ1Y3QgZHJtX3ByaW50ZXIg cCA9CiAJCQkJCWRybV9pbmZvX3ByaW50ZXIoZW5naW5lLT5pOTE1LT5kcm0uZGV2KTsKQEAgLTI4 NjksNyArMjg4MCw3IEBAIHN0YXRpYyBpbnQgcHJlZW1wdF91c2VyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKIAlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKIAlpOTE1X3JlcXVlc3RfYWRk KHJxKTsKIAotCWk5MTVfcmVxdWVzdF9zZXRfcHJpb3JpdHkocnEsIEk5MTVfUFJJT1JJVFlfTUFY KTsKKwlpOTE1X3JlcXVlc3Rfc2V0X2RlYWRsaW5lKHJxLCAwKTsKIAogCWlmIChpOTE1X3JlcXVl c3Rfd2FpdChycSwgMCwgSFogLyAyKSA8IDApCiAJCWVyciA9IC1FVElNRTsKQEAgLTQ0MDIsNiAr NDQxMyw3IEBAIHN0YXRpYyBpbnQgZW1pdF9zZW1hcGhvcmVfc2lnbmFsKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwgdm9pZCAqc2xvdCkKIAogCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwog CisJcnEtPnNjaGVkLmRlYWRsaW5lID0gMDsKIAlycS0+c2NoZWQuYXR0ci5wcmlvcml0eSA9IEk5 MTVfUFJJT1JJVFlfQkFSUklFUjsKIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKIAlyZXR1cm4gMDsK QEAgLTQ5MTEsNiArNDkyMywxMCBAQCBzdGF0aWMgaW50IF9fbGl2ZV9scmNfZ3ByKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJZXJyID0gZW1pdF9zZW1hcGhvcmVfc2lnbmFsKGVu Z2luZS0+a2VybmVsX2NvbnRleHQsIHNsb3QpOwogCQlpZiAoZXJyKQogCQkJZ290byBlcnJfcnE7 CisKKwkJZXJyID0gd2FpdF9mb3Jfc3VibWl0KGVuZ2luZSwgcnEsIEhaIC8gMik7CisJCWlmIChl cnIpCisJCQlnb3RvIGVycl9ycTsKIAl9IGVsc2UgewogCQlzbG90WzBdID0gMTsKIAkJd21iKCk7 CkBAIC01NDY4LDYgKzU0ODQsNyBAQCBzdGF0aWMgaW50IHBvaXNvbl9yZWdpc3RlcnMoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLCB1MzIgcG9pc29uLCB1MzIgKnNlbWEpCiAKIAlpbnRlbF9yaW5n X2FkdmFuY2UocnEsIGNzKTsKIAorCXJxLT5zY2hlZC5kZWFkbGluZSA9IDA7CiAJcnEtPnNjaGVk LmF0dHIucHJpb3JpdHkgPSBJOTE1X1BSSU9SSVRZX0JBUlJJRVI7CiBlcnJfcnE6CiAJaTkxNV9y ZXF1ZXN0X2FkZChycSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYwppbmRleCAwYzQyZThiMGMyMTEuLjZkYTQ2NWM3YzRmNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCkBA IC0zMzMsOCArMzMzLDYgQEAgc3RhdGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKIAl9CiBkb25lOgot CWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9Ci0JCXJiID8gdG9fcHJpb2xpc3QocmIp LT5wcmlvcml0eSA6IElOVF9NSU47CiAJaWYgKHN1Ym1pdCkgewogCQkqcG9ydCA9IHNjaGVkdWxl X2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPmluZmxpZ2h0KTsKIAkJKisrcG9ydCA9IE5VTEw7 CkBAIC00NzMsMTIgKzQ3MSwxMCBAQCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfY2FuY2VsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAm ZXhlY2xpc3RzLT5xdWV1ZSk7CiAJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKIAl9CisJR0VNX0JV R19PTighUkJfRU1QVFlfUk9PVCgmZXhlY2xpc3RzLT5xdWV1ZS5yYl9yb290KSk7CiAKIAkvKiBS ZW1haW5pbmcgX3VucmVhZHlfIHJlcXVlc3RzIHdpbGwgYmUgbm9wJ2VkIHdoZW4gc3VibWl0dGVk ICovCiAKLQlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRfTUlOOwotCWV4ZWNs aXN0cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKLQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wcmlvbGlzdF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wcmlvbGlzdF90eXBlcy5oCmluZGV4IGJjMmZhODRmOThhOC4uNDNhMGFjNDUyOTVmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wcmlvbGlzdF90eXBlcy5oCkBAIC0yMiw2ICsy Miw4IEBAIGVudW0gewogCiAJLyogSW50ZXJhY3RpdmUgd29ya2xvYWQsIHNjaGVkdWxlZCBmb3Ig aW1tZWRpYXRlIHBhZ2VmbGlwcGluZyAqLwogCUk5MTVfUFJJT1JJVFlfRElTUExBWSwKKworCV9f STkxNV9QUklPUklUWV9LRVJORUxfXwogfTsKIAogLyogU21hbGxlc3QgcHJpb3JpdHkgdmFsdWUg dGhhdCBjYW5ub3QgYmUgYnVtcGVkLiAqLwpAQCAtMzUsMTMgKzM3LDEyIEBAIGVudW0gewogICog aS5lLiBub3RoaW5nIGNhbiBoYXZlIGhpZ2hlciBwcmlvcml0eSBhbmQgZm9yY2UgdXMgdG8gdXN1 cnAgdGhlCiAgKiBhY3RpdmUgcmVxdWVzdC4KICAqLwotI2RlZmluZSBJOTE1X1BSSU9SSVRZX1VO UFJFRU1QVEFCTEUgSU5UX01BWAotI2RlZmluZSBJOTE1X1BSSU9SSVRZX0JBUlJJRVIgKEk5MTVf UFJJT1JJVFlfVU5QUkVFTVBUQUJMRSAtIDEpCisjZGVmaW5lIEk5MTVfUFJJT1JJVFlfQkFSUklF UiBJTlRfTUFYCiAKIHN0cnVjdCBpOTE1X3ByaW9saXN0IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJl cXVlc3RzOwogCXN0cnVjdCByYl9ub2RlIG5vZGU7Ci0JaW50IHByaW9yaXR5OworCXU2NCBkZWFk bGluZTsKIH07CiAKICNlbmRpZiAvKiBfSTkxNV9QUklPTElTVF9UWVBFU19IXyAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCAxMThhYjY2NTBkMWYuLjIzNTk0ZTcxMjI5MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKQEAgLTU2MSw3ICs1NjEsNyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgaTkxNV9yZXF1ZXN0X2NsZWFyX2hvbGQoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX3RpbWVsaW5lICoKLWk5MTVf cmVxdWVzdF90aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK2k5MTVfcmVxdWVzdF90 aW1lbGluZShjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAkvKiBWYWxpZCBvbmx5 IHdoaWxlIHRoZSByZXF1ZXN0IGlzIGJlaW5nIGNvbnN0cnVjdGVkIChvciByZXRpcmVkKS4gKi8K IAlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChycS0+dGltZWxpbmUsCkBAIC01NzYs NyArNTc2LDcgQEAgaTkxNV9yZXF1ZXN0X2dlbV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF90aW1lbGluZSAqCi1pOTE1X3Jl cXVlc3RfYWN0aXZlX3RpbWVsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoraTkxNV9yZXF1 ZXN0X2FjdGl2ZV90aW1lbGluZShjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAkv KgogCSAqIFdoZW4gaW4gdXNlIGR1cmluZyBzdWJtaXNzaW9uLCB3ZSBhcmUgcHJvdGVjdGVkIGJ5 IGEgZ3VhcmFudGVlIHRoYXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCmluZGV4 IDRjMTg5YjgxY2M2Mi4uMzBiY2I2ZjlkOTlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2No ZWR1bGVyLmMKQEAgLTIwLDYgKzIwLDExIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nbG9iYWxfc2No ZWR1bGVyIHsKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaXBpX2xvY2spOwogc3RhdGljIExJU1Rf SEVBRChpcGlfbGlzdCk7CiAKK3N0YXRpYyBpbmxpbmUgdTY0IHJxX2RlYWRsaW5lKGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXJldHVybiBSRUFEX09OQ0UocnEtPnNjaGVkLmRl YWRsaW5lKTsKK30KKwogc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKIHsKIAlyZXR1cm4gUkVBRF9PTkNFKHJxLT5zY2hlZC5hdHRyLnByaW9y aXR5KTsKQEAgLTMyLDYgKzM3LDcgQEAgc3RhdGljIHZvaWQgaXBpX3NjaGVkdWxlKHN0cnVjdCBp cnFfd29yayAqd3JrKQogCQlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICpwOwogCQlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycTsKIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKKwkJdTY0IGRlYWRsaW5lOwog CQlpbnQgcHJpbzsKIAogCQlzcGluX2xvY2tfaXJxc2F2ZSgmaXBpX2xvY2ssIGZsYWdzKTsKQEAg LTQwLDcgKzQ2LDEwIEBAIHN0YXRpYyB2b2lkIGlwaV9zY2hlZHVsZShzdHJ1Y3QgaXJxX3dvcmsg KndyaykKIAkJCXJxID0gY29udGFpbmVyX29mKHAtPnNpZ25hbGVyLCB0eXBlb2YoKnJxKSwgc2No ZWQpOwogCQkJbGlzdF9kZWxfaW5pdCgmcC0+aXBpX2xpbmspOwogCisJCQlkZWFkbGluZSA9IHAt PmlwaV9kZWFkbGluZTsKIAkJCXByaW8gPSBwLT5pcGlfcHJpb3JpdHk7CisKKwkJCXAtPmlwaV9k ZWFkbGluZSA9IEk5MTVfREVBRExJTkVfTkVWRVI7CiAJCQlwLT5pcGlfcHJpb3JpdHkgPSBJOTE1 X1BSSU9SSVRZX0lOVkFMSUQ7CiAJCX0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXBpX2xv Y2ssIGZsYWdzKTsKQEAgLTUyLDYgKzYxLDggQEAgc3RhdGljIHZvaWQgaXBpX3NjaGVkdWxlKHN0 cnVjdCBpcnFfd29yayAqd3JrKQogCiAJCWlmIChwcmlvID4gcnFfcHJpbyhycSkpCiAJCQlpOTE1 X3JlcXVlc3Rfc2V0X3ByaW9yaXR5KHJxLCBwcmlvKTsKKwkJaWYgKGRlYWRsaW5lIDwgcnFfZGVh ZGxpbmUocnEpKQorCQkJaTkxNV9yZXF1ZXN0X3NldF9kZWFkbGluZShycSwgZGVhZGxpbmUpOwog CX0gd2hpbGUgKDEpOwogCXJjdV9yZWFkX3VubG9jaygpOwogfQpAQCAtNzksMjggKzkwLDggQEAg c3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJi X25vZGUgKnJiKQogCXJldHVybiByYl9lbnRyeShyYiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5v ZGUpOwogfQogCi1zdGF0aWMgdm9pZCBhc3NlcnRfcHJpb2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKQotewotCXN0cnVjdCByYl9ub2RlICpyYjsK LQlsb25nIGxhc3RfcHJpbzsKLQotCWlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVC VUdfR0VNKSkKLQkJcmV0dXJuOwotCi0JR0VNX0JVR19PTihyYl9maXJzdF9jYWNoZWQoJmV4ZWNs aXN0cy0+cXVldWUpICE9Ci0JCSAgIHJiX2ZpcnN0KCZleGVjbGlzdHMtPnF1ZXVlLnJiX3Jvb3Qp KTsKLQotCWxhc3RfcHJpbyA9IElOVF9NQVg7Ci0JZm9yIChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgm ZXhlY2xpc3RzLT5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Ci0JCWNvbnN0IHN0cnVj dCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOwotCi0JCUdFTV9CVUdfT04ocC0+ cHJpb3JpdHkgPiBsYXN0X3ByaW8pOwotCQlsYXN0X3ByaW8gPSBwLT5wcmlvcml0eTsKLQl9Ci19 Ci0KIHN0cnVjdCBsaXN0X2hlYWQgKgotaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3Qoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgcHJpbykKK2k5MTVfc2NoZWRfbG9va3VwX3By aW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGRlYWRsaW5lKQogewog CXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2lu ZS0+ZXhlY2xpc3RzOwogCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwpAQCAtMTA4LDEwICs5OSw5 IEBAIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgaW50IHByaW8pCiAJYm9vbCBmaXJzdCA9IHRydWU7CiAKIAlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKLQlhc3NlcnRfcHJpb2xpc3RzKGV4ZWNsaXN0cyk7 CiAKIAlpZiAodW5saWtlbHkoZXhlY2xpc3RzLT5ub19wcmlvbGlzdCkpCi0JCXByaW8gPSBJOTE1 X1BSSU9SSVRZX05PUk1BTDsKKwkJZGVhZGxpbmUgPSAwOwogCiBmaW5kX3ByaW9saXN0OgogCS8q IG1vc3QgcG9zaXRpdmUgcHJpb3JpdHkgaXMgc2NoZWR1bGVkIGZpcnN0LCBlcXVhbCBwcmlvcml0 aWVzIGZpZm8gKi8KQEAgLTEyMCw5ICsxMTAsOSBAQCBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlz dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQogCXdoaWxlICgqcGFy ZW50KSB7CiAJCXJiID0gKnBhcmVudDsKIAkJcCA9IHRvX3ByaW9saXN0KHJiKTsKLQkJaWYgKHBy aW8gPiBwLT5wcmlvcml0eSkgeworCQlpZiAoZGVhZGxpbmUgPCBwLT5kZWFkbGluZSkgewogCQkJ cGFyZW50ID0gJnJiLT5yYl9sZWZ0OwotCQl9IGVsc2UgaWYgKHByaW8gPCBwLT5wcmlvcml0eSkg eworCQl9IGVsc2UgaWYgKGRlYWRsaW5lID4gcC0+ZGVhZGxpbmUpIHsKIAkJCXBhcmVudCA9ICZy Yi0+cmJfcmlnaHQ7CiAJCQlmaXJzdCA9IGZhbHNlOwogCQl9IGVsc2UgewpAQCAtMTMwLDEzICsx MjAsMTMgQEAgaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLCBpbnQgcHJpbykKIAkJfQogCX0KIAotCWlmIChwcmlvID09IEk5MTVfUFJJT1JJ VFlfTk9STUFMKSB7CisJaWYgKCFkZWFkbGluZSkgewogCQlwID0gJmV4ZWNsaXN0cy0+ZGVmYXVs dF9wcmlvbGlzdDsKIAl9IGVsc2UgewogCQlwID0ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xh Yl9wcmlvcml0aWVzLCBHRlBfQVRPTUlDKTsKIAkJLyogQ29udmVydCBhbiBhbGxvY2F0aW9uIGZh aWx1cmUgdG8gYSBwcmlvcml0eSBidW1wICovCiAJCWlmICh1bmxpa2VseSghcCkpIHsKLQkJCXBy aW8gPSBJOTE1X1BSSU9SSVRZX05PUk1BTDsgLyogcmVjdXJzZXMganVzdCBvbmNlICovCisJCQlk ZWFkbGluZSA9IDA7IC8qIHJlY3Vyc2VzIGp1c3Qgb25jZSAqLwogCiAJCQkvKiBUbyBtYWludGFp biBvcmRlcmluZyB3aXRoIGFsbCByZW5kZXJpbmcsIGFmdGVyIGFuCiAJCQkgKiBhbGxvY2F0aW9u IGZhaWx1cmUgd2UgaGF2ZSB0byBkaXNhYmxlIGFsbCBzY2hlZHVsaW5nLgpAQCAtMTUxLDcgKzE0 MSw3IEBAIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgaW50IHByaW8pCiAJCX0KIAl9CiAKLQlwLT5wcmlvcml0eSA9IHByaW87CisJcC0+ ZGVhZGxpbmUgPSBkZWFkbGluZTsKIAlJTklUX0xJU1RfSEVBRCgmcC0+cmVxdWVzdHMpOwogCiAJ cmJfbGlua19ub2RlKCZwLT5ub2RlLCByYiwgcGFyZW50KTsKQEAgLTE2MCw3MCArMTUwLDIyMSBA QCBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGludCBwcmlvKQogCXJldHVybiAmcC0+cmVxdWVzdHM7CiB9CiAKLXZvaWQgX19pOTE1X3By aW9saXN0X2ZyZWUoc3RydWN0IGk5MTVfcHJpb2xpc3QgKnApCit2b2lkIGk5MTVfcHJpb2xpc3Rf ZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKK3sKKwlpZiAocC0+ZGVhZGxpbmUpCisJCWtt ZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9wcmlvcml0aWVzLCBwKTsKK30KKworc3RhdGljIGJv b2wga2lja19zdWJtaXNzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwg dTY0IGRlYWRsaW5lKQogewotCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9wcmlvcml0aWVz LCBwKTsKKwljb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICppbmZsaWdodDsKKwlib29sIGtpY2sg PSB0cnVlOworCisJcmN1X3JlYWRfbG9jaygpOworCWluZmxpZ2h0ID0gZXhlY2xpc3RzX2FjdGl2 ZSgmZW5naW5lLT5leGVjbGlzdHMpOworCWlmIChpbmZsaWdodCkKKwkJa2ljayA9IGRlYWRsaW5l IDwgcnFfZGVhZGxpbmUoaW5mbGlnaHQpOworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJu IGtpY2s7Cit9CisKK3N0YXRpYyBib29sIF9faTkxNV9yZXF1ZXN0X3NldF9kZWFkbGluZShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTY0IGRlYWRsaW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcm47CisJ c3RydWN0IGxpc3RfaGVhZCAqcGxpc3Q7CisJTElTVF9IRUFEKGRmcyk7CisKKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKKwlsaXN0X2FkZCgmcnEtPnNjaGVkLmRm cywgJmRmcyk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZGZzLCBzY2hlZC5kZnMpIHsK KwkJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqcDsKKworCQlHRU1fQlVHX09OKHJxLT5lbmdpbmUg IT0gZW5naW5lKTsKKworCQlmb3JfZWFjaF9zaWduYWxlcihwLCBycSkgeworCQkJc3RydWN0IGk5 MTVfcmVxdWVzdCAqcyA9CisJCQkJY29udGFpbmVyX29mKHAtPnNpZ25hbGVyLCB0eXBlb2YoKnMp LCBzY2hlZCk7CisKKwkJCUdFTV9CVUdfT04ocyA9PSBycSk7CisKKwkJCWlmIChycV9kZWFkbGlu ZShzKSA8PSBkZWFkbGluZSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocykpCisJCQkJY29udGludWU7CisKKwkJCWlmIChzLT5lbmdpbmUgIT0gcnEtPmVu Z2luZSkgeworCQkJCXNwaW5fbG9jaygmaXBpX2xvY2spOworCQkJCWlmIChkZWFkbGluZSA8IHAt PmlwaV9kZWFkbGluZSkgeworCQkJCQlwLT5pcGlfZGVhZGxpbmUgPSBkZWFkbGluZTsKKwkJCQkJ bGlzdF9tb3ZlKCZwLT5pcGlfbGluaywgJmlwaV9saXN0KTsKKwkJCQkJaXJxX3dvcmtfcXVldWUo JmlwaV93b3JrKTsKKwkJCQl9CisJCQkJc3Bpbl91bmxvY2soJmlwaV9sb2NrKTsKKwkJCQljb250 aW51ZTsKKwkJCX0KKworCQkJbGlzdF9tb3ZlX3RhaWwoJnMtPnNjaGVkLmRmcywgJmRmcyk7CisJ CX0KKwl9CisKKwlwbGlzdCA9IGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KGVuZ2luZSwgZGVh ZGxpbmUpOworCisJLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFjZW1lbnQgZW5zdXJlIG91 ciBkZXBzIGV4ZWN1dGUgZmlyc3QgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVfcmV2ZXJz ZShycSwgcm4sICZkZnMsIHNjaGVkLmRmcykgeworCQlHRU1fQlVHX09OKHJxLT5lbmdpbmUgIT0g ZW5naW5lKTsKKwkJR0VNX0JVR19PTihkZWFkbGluZSA+IHJxX2RlYWRsaW5lKHJxKSk7CisKKwkJ SU5JVF9MSVNUX0hFQUQoJnJxLT5zY2hlZC5kZnMpOworCQlXUklURV9PTkNFKHJxLT5zY2hlZC5k ZWFkbGluZSwgZGVhZGxpbmUpOworCQlSUV9UUkFDRShycSwgInNldC1kZWFkbGluZTolbGx1XG4i LCBkZWFkbGluZSk7CisKKwkJLyoKKwkJICogT25jZSB0aGUgcmVxdWVzdCBpcyByZWFkeSwgaXQg d2lsbCBiZSBwbGFjZWQgaW50byB0aGUKKwkJICogcHJpb3JpdHkgbGlzdHMgYW5kIHRoZW4gb250 byB0aGUgSFcgcnVubGlzdC4gQmVmb3JlIHRoZQorCQkgKiByZXF1ZXN0IGlzIHJlYWR5LCBpdCBk b2VzIG5vdCBjb250cmlidXRlIHRvIG91ciBwcmVlbXB0aW9uCisJCSAqIGRlY2lzaW9ucyBhbmQg d2UgY2FuIHNhZmVseSBpZ25vcmUgaXQsIGFzIGl0IHdpbGwsIGFuZAorCQkgKiBhbnkgcHJlZW1w dGlvbiByZXF1aXJlZCwgYmUgZGVhbHQgd2l0aCB1cG9uIHN1Ym1pc3Npb24uCisJCSAqIFNlZSBl bmdpbmUtPnN1Ym1pdF9yZXF1ZXN0KCkKKwkJICovCisKKwkJaWYgKGk5MTVfcmVxdWVzdF9pbl9w cmlvcml0eV9xdWV1ZShycSkpCisJCQlsaXN0X21vdmVfdGFpbCgmcnEtPnNjaGVkLmxpbmssIHBs aXN0KTsKKwl9CisKKwlyZXR1cm4ga2lja19zdWJtaXNzaW9uKGVuZ2luZSwgZGVhZGxpbmUpOwog fQogCi1zdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0KGludCBwcmlvLCBpbnQgYWN0aXZl KQordm9pZCBpOTE1X3JlcXVlc3Rfc2V0X2RlYWRsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LCB1NjQgZGVhZGxpbmUpCiB7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gUkVB RF9PTkNFKHJxLT5lbmdpbmUpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWludGVs X2VuZ2luZV9oYXNfc2NoZWR1bGVyKGVuZ2luZSkpCisJCXJldHVybjsKKwogCS8qCi0JICogQWxs b3cgcHJlZW1wdGlvbiBvZiBsb3cgLT4gbm9ybWFsIC0+IGhpZ2gsIGJ1dCB3ZSBkbwotCSAqIG5v dCBhbGxvdyBsb3cgcHJpb3JpdHkgdGFza3MgdG8gcHJlZW1wdCBvdGhlciBsb3cgcHJpb3JpdHkK LQkgKiB0YXNrcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGxhdGVuY3kgZm9yIGxvdyBwcmlv cml0eQotCSAqIHRhc2tzIGRvZXMgbm90IG1hdHRlciAoYXMgbXVjaCBhcyBiYWNrZ3JvdW5kIHRo cm91Z2hwdXQpLAotCSAqIHNvIGtpc3MuCisJICogVmlydHVhbCBlbmdpbmVzIGNvbXBsaWNhdGUg YWNxdWlyaW5nIHRoZSBlbmdpbmUgdGltZWxpbmUgbG9jaywKKwkgKiBhcyB0aGVpciBycS0+ZW5n aW5lIHBvaW50ZXIgaXMgbm90IHN0YWJsZSB1bnRpbCB1bmRlciB0aGF0CisJICogZW5naW5lIGxv Y2suIFRoZSBzaW1wbGUgcGxveSB3ZSB1c2UgaXMgdG8gdGFrZSB0aGUgbG9jayB0aGVuCisJICog Y2hlY2sgdGhhdCB0aGUgcnEgc3RpbGwgYmVsb25ncyB0byB0aGUgbmV3bHkgbG9ja2VkIGVuZ2lu ZS4KIAkgKi8KLQlyZXR1cm4gcHJpbyA+PSBtYXgoSTkxNV9QUklPUklUWV9OT1JNQUwsIGFjdGl2 ZSk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKKwl3 aGlsZSAoZW5naW5lICE9IFJFQURfT05DRShycS0+ZW5naW5lKSkgeworCQlzcGluX3VubG9jaygm ZW5naW5lLT5hY3RpdmUubG9jayk7CisJCWVuZ2luZSA9IFJFQURfT05DRShycS0+ZW5naW5lKTsK KwkJc3Bpbl9sb2NrKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKKwl9CisKKwlpZiAoaTkxNV9yZXF1 ZXN0X2NvbXBsZXRlZChycSkpCisJCWdvdG8gdW5sb2NrOworCisJaWYgKGRlYWRsaW5lID49IHJx X2RlYWRsaW5lKHJxKSkKKwkJZ290byB1bmxvY2s7CisKKwlpZiAoX19pOTE1X3JlcXVlc3Rfc2V0 X2RlYWRsaW5lKHJxLCBkZWFkbGluZSkpCisJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+ ZXhlY2xpc3RzLnRhc2tsZXQpOworCit1bmxvY2s6CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBraWNrX3N1Ym1p c3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJICAgIGNvbnN0IHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxLAotCQkJICAgIGludCBwcmlvKQorc3RhdGljIHU2NCBwcmlvX3Ns aWNlKGludCBwcmlvKQogewotCWNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKmluZmxpZ2h0Owor CXU2NCBzbGljZTsKKwlpbnQgc2Y7CiAKIAkvKgotCSAqIFdlIG9ubHkgbmVlZCB0byBraWNrIHRo ZSB0YXNrbGV0IG9uY2UgZm9yIHRoZSBoaWdoIHByaW9yaXR5Ci0JICogbmV3IGNvbnRleHQgd2Ug YWRkIGludG8gdGhlIHF1ZXVlLgorCSAqIFdpdGggYSAxbXMgc2NoZWR1bGluZyBxdWFudHVtOgor CSAqCisJICogICBNQVggVVNFUjogIH4zMnVzIGRlYWRsaW5lCisJICogICAwOiAgICAgICAgIH4x Nm1zIGRlYWRsaW5lCisJICogICBNSU5fVVNFUjogMTAwMG1zIGRlYWRsaW5lCiAJICovCi0JaWYg KHByaW8gPD0gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCkKLQkJcmV0dXJu OwogCi0JcmN1X3JlYWRfbG9jaygpOworCWlmIChwcmlvID49IF9fSTkxNV9QUklPUklUWV9LRVJO RUxfXykKKwkJcmV0dXJuIElOVF9NQVggLSBwcmlvOwogCi0JLyogTm90aGluZyBjdXJyZW50bHkg YWN0aXZlPyBXZSdyZSBvdmVyZHVlIGZvciBhIHN1Ym1pc3Npb24hICovCi0JaW5mbGlnaHQgPSBl eGVjbGlzdHNfYWN0aXZlKCZlbmdpbmUtPmV4ZWNsaXN0cyk7Ci0JaWYgKCFpbmZsaWdodCkKLQkJ Z290byB1bmxvY2s7CisJc2xpY2UgPSBfX0k5MTVfUFJJT1JJVFlfS0VSTkVMX18gLSBwcmlvOwor CWlmIChwcmlvID49IDApCisJCXNmID0gMjAgLSA2OworCWVsc2UKKwkJc2YgPSAyMCAtIDE7CisK KwlyZXR1cm4gc2xpY2UgPDwgc2Y7Cit9CisKK3U2NCBpOTE1X3NjaGVkdWxlcl92aXJ0dWFsX2Rl YWRsaW5lKHU2NCBrdCwgaW50IHByaW9yaXR5KQoreworCXJldHVybiBpOTE1X3NjaGVkX3RvX3Rp Y2tzKGt0ICsgcHJpb19zbGljZShwcmlvcml0eSkpOworfQorCit1NjQgaTkxNV9zY2hlZHVsZXJf bmV4dF92aXJ0dWFsX2RlYWRsaW5lKGludCBwcmlvcml0eSkKK3sKKwlyZXR1cm4gaTkxNV9zY2hl ZHVsZXJfdmlydHVhbF9kZWFkbGluZShrdGltZV9nZXQoKSwgcHJpb3JpdHkpOworfQorCitzdGF0 aWMgdTY0IHNpZ25hbF9kZWFkbGluZShjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sK Kwl1NjQgbGFzdCA9IGt0aW1lX3RvX25zKGt0aW1lX2dldCgpKTsKKwljb25zdCBzdHJ1Y3QgaTkx NV9kZXBlbmRlbmN5ICpwOwogCiAJLyoKLQkgKiBJZiB3ZSBhcmUgYWxyZWFkeSB0aGUgY3VycmVu dGx5IGV4ZWN1dGluZyBjb250ZXh0LCBkb24ndAotCSAqIGJvdGhlciBldmFsdWF0aW5nIGlmIHdl IHNob3VsZCBwcmVlbXB0IG91cnNlbHZlcy4KKwkgKiBGaW5kIHRoZSBlYXJsaWVzdCBwb2ludCBh dCB3aGljaCB3ZSB3aWxsIGJlY29tZSAncmVhZHknLAorCSAqIHdoaWNoIHdlIGluZmVyIGZyb20g dGhlIGRlYWRsaW5lIG9mIGFsbCBhY3RpdmUgc2lnbmFsZXJzLgorCSAqIFdlIHdpbGwgcG9zaXRp b24gb3Vyc2VsdmVzIGF0IHRoZSBlbmQgb2YgdGhhdCBjaGFpbiBvZiB3b3JrLgogCSAqLwotCWlm IChpbmZsaWdodC0+Y29udGV4dCA9PSBycS0+Y29udGV4dCkKLQkJZ290byB1bmxvY2s7CiAKLQlF TkdJTkVfVFJBQ0UoZW5naW5lLAotCQkgICAgICJidW1waW5nIHF1ZXVlLXByaW9yaXR5LWhpbnQ6 JWQgZm9yIHJxOiVsbHg6JWxsZCwgaW5mbGlnaHQ6JWxseDolbGxkIHByaW8gJWRcbiIsCi0JCSAg ICAgcHJpbywKLQkJICAgICBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLAotCQkg ICAgIGluZmxpZ2h0LT5mZW5jZS5jb250ZXh0LCBpbmZsaWdodC0+ZmVuY2Uuc2Vxbm8sCi0JCSAg ICAgaW5mbGlnaHQtPnNjaGVkLmF0dHIucHJpb3JpdHkpOworCXJjdV9yZWFkX2xvY2soKTsKKwlm b3JfZWFjaF9zaWduYWxlcihwLCBycSkgeworCQljb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpz ID0KKwkJCWNvbnRhaW5lcl9vZihwLT5zaWduYWxlciwgdHlwZW9mKCpzKSwgc2NoZWQpOworCQl1 NjQgZGVhZGxpbmU7CiAKLQllbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50ID0g cHJpbzsKLQlpZiAobmVlZF9wcmVlbXB0KHByaW8sIHJxX3ByaW8oaW5mbGlnaHQpKSkKLQkJdGFz a2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5leGVjbGlzdHMudGFza2xldCk7CisJCWlmIChpOTE1 X3JlcXVlc3RfY29tcGxldGVkKHMpKQorCQkJY29udGludWU7CiAKLXVubG9jazoKKwkJaWYgKHJx X3ByaW8ocykgPCBycV9wcmlvKHJxKSkKKwkJCWNvbnRpbnVlOworCisJCWRlYWRsaW5lID0gaTkx NV9zY2hlZF90b19ucyhycV9kZWFkbGluZShzKSk7CisJCWlmIChwLT5mbGFncyAmIEk5MTVfREVQ RU5ERU5DWV9XRUFLKQorCQkJZGVhZGxpbmUgLT0gcHJpb19zbGljZShycV9wcmlvKHMpKTsKKwor CQlsYXN0ID0gbWF4KGxhc3QsIGRlYWRsaW5lKTsKKwl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CisK KwlyZXR1cm4gbGFzdDsKIH0KIAotc3RhdGljIHZvaWQgX19pOTE1X3JlcXVlc3Rfc2V0X3ByaW9y aXR5KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgcHJpbykKK3N0YXRpYyB1NjQgZWFybGll c3RfZGVhZGxpbmUoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJcmV0dXJuIGk5 MTVfc2NoZWR1bGVyX3ZpcnR1YWxfZGVhZGxpbmUoc2lnbmFsX2RlYWRsaW5lKHJxKSwKKwkJCQkJ ICAgICAgIHJxX3ByaW8ocnEpKTsKK30KKworc3RhdGljIGJvb2wgc2V0X2VhcmxpZXN0X2RlYWRs aW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1NjQgb2xkKQoreworCXU2NCBkbDsKKworCS8q IFJlY29tcHV0ZSBvdXIgZGVhZGxpbmVzIGFuZCBwcm9tb3RlIGFmdGVyIGEgcHJpb3JpdHkgY2hh bmdlICovCisJZGwgPSBtaW4oZWFybGllc3RfZGVhZGxpbmUocnEpLCBycV9kZWFkbGluZShycSkp OworCWlmIChkbCA+PSBvbGQpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBfX2k5MTVfcmVx dWVzdF9zZXRfZGVhZGxpbmUocnEsIGRsKTsKK30KKworc3RhdGljIGJvb2wgX19pOTE1X3JlcXVl c3Rfc2V0X3ByaW9yaXR5KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgcHJpbykKIHsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwogCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJuOwotCXN0cnVjdCBsaXN0X2hlYWQgKnBsaXN0OworCWJvb2wga2ljayA9IGZh bHNlOwogCUxJU1RfSEVBRChkZnMpOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT5h Y3RpdmUubG9jayk7CkBAIC0yODAsMzIgKzQyMSwyMCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfcmVx dWVzdF9zZXRfcHJpb3JpdHkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBwcmlvKQogCQl9 CiAJfQogCi0JcGxpc3QgPSBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdpbmUsIHByaW8p OwotCi0JLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFjZW1lbnQgZW5zdXJlIG91ciBkZXBz IGV4ZWN1dGUgZmlyc3QgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVfcmV2ZXJzZShycSwg cm4sICZkZnMsIHNjaGVkLmRmcykgewogCQlHRU1fQlVHX09OKHJxLT5lbmdpbmUgIT0gZW5naW5l KTsKKwkJR0VNX0JVR19PTihwcmlvIDwgcnFfcHJpbyhycSkpOwogCiAJCUlOSVRfTElTVF9IRUFE KCZycS0+c2NoZWQuZGZzKTsKIAkJV1JJVEVfT05DRShycS0+c2NoZWQuYXR0ci5wcmlvcml0eSwg cHJpbyk7CisJCVJRX1RSQUNFKHJxLCAic2V0LXByaW9yaXR5OiVkXG4iLCBwcmlvKTsKIAotCQkv KgotCQkgKiBPbmNlIHRoZSByZXF1ZXN0IGlzIHJlYWR5LCBpdCB3aWxsIGJlIHBsYWNlZCBpbnRv IHRoZQotCQkgKiBwcmlvcml0eSBsaXN0cyBhbmQgdGhlbiBvbnRvIHRoZSBIVyBydW5saXN0LiBC ZWZvcmUgdGhlCi0JCSAqIHJlcXVlc3QgaXMgcmVhZHksIGl0IGRvZXMgbm90IGNvbnRyaWJ1dGUg dG8gb3VyIHByZWVtcHRpb24KLQkJICogZGVjaXNpb25zIGFuZCB3ZSBjYW4gc2FmZWx5IGlnbm9y ZSBpdCwgYXMgaXQgd2lsbCwgYW5kCi0JCSAqIGFueSBwcmVlbXB0aW9uIHJlcXVpcmVkLCBiZSBk ZWFsdCB3aXRoIHVwb24gc3VibWlzc2lvbi4KLQkJICogU2VlIGVuZ2luZS0+c3VibWl0X3JlcXVl c3QoKQotCQkgKi8KLQkJaWYgKCFpOTE1X3JlcXVlc3RfaXNfcmVhZHkocnEpKQotCQkJY29udGlu dWU7Ci0KLQkJaWYgKGk5MTVfcmVxdWVzdF9pbl9wcmlvcml0eV9xdWV1ZShycSkpCi0JCQlsaXN0 X21vdmVfdGFpbCgmcnEtPnNjaGVkLmxpbmssIHBsaXN0KTsKLQotCQkvKiBEZWZlciAodGFza2xl dCkgc3VibWlzc2lvbiB1bnRpbCBhZnRlciBhbGwgdXBkYXRlcy4gKi8KLQkJa2lja19zdWJtaXNz aW9uKGVuZ2luZSwgcnEsIHByaW8pOworCQlpZiAoaTkxNV9yZXF1ZXN0X2lzX3JlYWR5KHJxKSAm JgorCQkgICAgc2V0X2VhcmxpZXN0X2RlYWRsaW5lKHJxLCBycV9kZWFkbGluZShycSkpKQorCQkJ a2ljayA9IHRydWU7CiAJfQorCisJcmV0dXJuIGtpY2s7CiB9CiAKIHZvaWQgaTkxNV9yZXF1ZXN0 X3NldF9wcmlvcml0eShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHByaW8pCkBAIC0zMTYs MTIgKzQ0NSw2IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X3NldF9wcmlvcml0eShzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwgaW50IHByaW8pCiAJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3NjaGVkdWxlcihl bmdpbmUpKQogCQlyZXR1cm47CiAKLQkvKgotCSAqIFZpcnR1YWwgZW5naW5lcyBjb21wbGljYXRl IGFjcXVpcmluZyB0aGUgZW5naW5lIHRpbWVsaW5lIGxvY2ssCi0JICogYXMgdGhlaXIgcnEtPmVu Z2luZSBwb2ludGVyIGlzIG5vdCBzdGFibGUgdW50aWwgdW5kZXIgdGhhdAotCSAqIGVuZ2luZSBs b2NrLiBUaGUgc2ltcGxlIHBsb3kgd2UgdXNlIGlzIHRvIHRha2UgdGhlIGxvY2sgdGhlbgotCSAq IGNoZWNrIHRoYXQgdGhlIHJxIHN0aWxsIGJlbG9uZ3MgdG8gdGhlIG5ld2x5IGxvY2tlZCBlbmdp bmUuCi0JICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdz KTsKIAl3aGlsZSAoZW5naW5lICE9IFJFQURfT05DRShycS0+ZW5naW5lKSkgewogCQlzcGluX3Vu bG9jaygmZW5naW5lLT5hY3RpdmUubG9jayk7CkBAIC0zMzUsMTIgKzQ1OCwyMSBAQCB2b2lkIGk5 MTVfcmVxdWVzdF9zZXRfcHJpb3JpdHkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBwcmlv KQogCWlmIChwcmlvIDw9IHJxX3ByaW8ocnEpKQogCQlnb3RvIHVubG9jazsKIAotCV9faTkxNV9y ZXF1ZXN0X3NldF9wcmlvcml0eShycSwgcHJpbyk7CisJaWYgKF9faTkxNV9yZXF1ZXN0X3NldF9w cmlvcml0eShycSwgcHJpbykpCisJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+ZXhlY2xp c3RzLnRhc2tsZXQpOwogCiB1bmxvY2s6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5l LT5hY3RpdmUubG9jaywgZmxhZ3MpOwogfQogCitib29sIGludGVsX2VuZ2luZV9xdWV1ZV9yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsK KwlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUsICZycS0+ZmVuY2UuZmxhZ3MpOworCXJl dHVybiBzZXRfZWFybGllc3RfZGVhZGxpbmUocnEsIEk5MTVfREVBRExJTkVfTkVWRVIpOworfQor CiB2b2lkIGk5MTVfc2NoZWRfbm9kZV9pbml0KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUp CiB7CiAJc3Bpbl9sb2NrX2luaXQoJm5vZGUtPmxvY2spOwpAQCAtMzU2LDYgKzQ4OCw3IEBAIHZv aWQgaTkxNV9zY2hlZF9ub2RlX2luaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKIHZv aWQgaTkxNV9zY2hlZF9ub2RlX3JlaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQog ewogCW5vZGUtPmF0dHIucHJpb3JpdHkgPSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQ7CisJbm9kZS0+ ZGVhZGxpbmUgPSBJOTE1X0RFQURMSU5FX05FVkVSOwogCW5vZGUtPnNlbWFwaG9yZXMgPSAwOwog CW5vZGUtPmZsYWdzID0gMDsKIApAQCAtMzg4LDYgKzUyMSw3IEBAIGJvb2wgX19pOTE1X3NjaGVk X25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKIAogCWlm ICghbm9kZV9zaWduYWxlZChzaWduYWwpKSB7CiAJCUlOSVRfTElTVF9IRUFEKCZkZXAtPmlwaV9s aW5rKTsKKwkJZGVwLT5pcGlfZGVhZGxpbmUgPSBJOTE1X0RFQURMSU5FX05FVkVSOwogCQlkZXAt PmlwaV9wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfSU5WQUxJRDsKIAkJZGVwLT5zaWduYWxlciA9 IHNpZ25hbDsKIAkJZGVwLT53YWl0ZXIgPSBub2RlOwpAQCAtNTE5LDYgKzY1MywxMCBAQCB2b2lk IGk5MTVfc2NoZWRfbm9kZV9yZXRpcmUoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKIAlz cGluX3VubG9ja19pcnEoJm5vZGUtPmxvY2spOwogfQogCisjaWYgSVNfRU5BQkxFRChDT05GSUdf RFJNX0k5MTVfU0VMRlRFU1QpCisjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMi CisjZW5kaWYKKwogc3RhdGljIHZvaWQgaTkxNV9nbG9iYWxfc2NoZWR1bGVyX3Nocmluayh2b2lk KQogewogCWttZW1fY2FjaGVfc2hyaW5rKGdsb2JhbC5zbGFiX2RlcGVuZGVuY2llcyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAppbmRleCBiMjZhMTNlZjZmZWIuLjYyMjY1MTA4 MjMwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCkBAIC0zNywxNSArMzcs MjcgQEAgaW50IGk5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgaTkxNV9zY2hl ZF9ub2RlICpub2RlLAogdm9pZCBpOTE1X3NjaGVkX25vZGVfcmV0aXJlKHN0cnVjdCBpOTE1X3Nj aGVkX25vZGUgKm5vZGUpOwogCiB2b2lkIGk5MTVfcmVxdWVzdF9zZXRfcHJpb3JpdHkoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgaW50IHByaW8pOwordm9pZCBpOTE1X3JlcXVlc3Rfc2V0 X2RlYWRsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHU2NCBkZWFkbGluZSk7CisK K3U2NCBpOTE1X3NjaGVkdWxlcl92aXJ0dWFsX2RlYWRsaW5lKHU2NCBrdCwgaW50IHByaW9yaXR5 KTsKK3U2NCBpOTE1X3NjaGVkdWxlcl9uZXh0X3ZpcnR1YWxfZGVhZGxpbmUoaW50IHByaW9yaXR5 KTsKKworYm9vbCBpbnRlbF9lbmdpbmVfcXVldWVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCiBzdHJ1Y3QgbGlz dF9oZWFkICoKLWk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgaW50IHByaW8pOworaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3Qoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgZGVhZGxpbmUpOworCit2b2lkIGk5MTVfcHJp b2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCk7CisKK3N0YXRpYyBpbmxpbmUgdTY0 IGk5MTVfc2NoZWRfdG9fdGlja3Moa3RpbWVfdCBrdCkKK3sKKwlyZXR1cm4ga3RpbWVfdG9fbnMo a3QpID4+IEk5MTVfU0NIRURfREVBRExJTkVfU0hJRlQ7Cit9CiAKLXZvaWQgX19pOTE1X3ByaW9s aXN0X2ZyZWUoc3RydWN0IGk5MTVfcHJpb2xpc3QgKnApOwotc3RhdGljIGlubGluZSB2b2lkIGk5 MTVfcHJpb2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKK3N0YXRpYyBpbmxpbmUg dTY0IGk5MTVfc2NoZWRfdG9fbnModTY0IGRlYWRsaW5lKQogewotCWlmIChwLT5wcmlvcml0eSAh PSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKLQkJX19pOTE1X3ByaW9saXN0X2ZyZWUocCk7CisJcmV0 dXJuIGRlYWRsaW5lIDw8IEk5MTVfU0NIRURfREVBRExJTkVfU0hJRlQ7CiB9CiAKICNlbmRpZiAv KiBfSTkxNV9TQ0hFRFVMRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVk dWxlcl90eXBlcy5oCmluZGV4IGNlNjA1NzdkZjJiZi4uYWU3Y2E3OGE4OGM4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmgKQEAgLTY5LDYgKzY5LDIyIEBA IHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgewogCXVuc2lnbmVkIGludCBmbGFnczsKICNkZWZpbmUg STkxNV9TQ0hFRF9IQVNfRVhURVJOQUxfQ0hBSU4JQklUKDApCiAJaW50ZWxfZW5naW5lX21hc2tf dCBzZW1hcGhvcmVzOworCisJLyoqCisJICogQGRlYWRsaW5lOiBbdmlydHVhbF0gZGVhZGxpbmUK KwkgKgorCSAqIFdoZW4gdGhlIHJlcXVlc3QgaXMgcmVhZHkgZm9yIGV4ZWN1dGlvbiwgaXQgaXMg Z2l2ZW4gYSBxdW90YQorCSAqICh0aGUgZW5naW5lJ3MgdGltZXNsaWNlKSBhbmQgYSB2aXJ0dWFs IGRlYWRsaW5lLiBUaGUgdmlydHVhbAorCSAqIGRlYWRsaW5lIGlzIGRlcml2ZWQgZnJvbSB0aGUg Y3VycmVudCB0aW1lOgorCSAqICAgICBrdGltZV9nZXQoKSArIChwcmlvX3JhdGlvICogdGltZXNs aWNlKQorCSAqCisJICogUmVxdWVzdHMgYXJlIHRoZW4gZXhlY3V0ZWQgaW4gb3JkZXIgb2YgZGVh ZGxpbmUgY29tcGxldGlvbi4KKwkgKiBSZXF1ZXN0cyB3aXRoIGVhcmxpZXIgZGVhZGxpbmVzIHRo YW4gY3VycmVudGx5IGV4ZWN1dGluZyBvbgorCSAqIHRoZSBlbmdpbmUgd2lsbCBwcmVlbXB0IHRo ZSBhY3RpdmUgcmVxdWVzdHMuCisJICovCisJdTY0IGRlYWRsaW5lOworI2RlZmluZSBJOTE1X1ND SEVEX0RFQURMSU5FX1NISUZUIDE5IC8qIGkuZS4gcm91Z2hseSA1MDB1cyBidWNrZXRzICovCisj ZGVmaW5lIEk5MTVfREVBRExJTkVfTkVWRVIgVTY0X01BWAogfTsKIAogc3RydWN0IGk5MTVfZGVw ZW5kZW5jeSB7CkBAIC04MSw2ICs5Nyw3IEBAIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgewogI2Rl ZmluZSBJOTE1X0RFUEVOREVOQ1lfQUxMT0MJCUJJVCgwKQogI2RlZmluZSBJOTE1X0RFUEVOREVO Q1lfRVhURVJOQUwJQklUKDEpCiAjZGVmaW5lIEk5MTVfREVQRU5ERU5DWV9XRUFLCQlCSVQoMikK Kwl1NjQgaXBpX2RlYWRsaW5lOwogCWludCBpcGlfcHJpb3JpdHk7CiB9OwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAppbmRl eCAxOTI5ZmViYTRlOGUuLjI5ZmY2YjY2OWNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCkBAIC0yNCw2ICsyNCw3IEBA IHNlbGZ0ZXN0KHVuY29yZSwgaW50ZWxfdW5jb3JlX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3Qo ZW5naW5lLCBpbnRlbF9lbmdpbmVfY3NfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdCh0aW1lbGlu ZXMsIGludGVsX3RpbWVsaW5lX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QocmVxdWVzdHMsIGk5 MTVfcmVxdWVzdF9tb2NrX3NlbGZ0ZXN0cykKK3NlbGZ0ZXN0KHNjaGVkdWxlciwgaTkxNV9zY2hl ZHVsZXJfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChvYmplY3RzLCBpOTE1X2dlbV9vYmplY3Rf bW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChwaHlzLCBpOTE1X2dlbV9waHlzX21vY2tfc2VsZnRl c3RzKQogc2VsZnRlc3QoZG1hYnVmLCBpOTE1X2dlbV9kbWFidWZfbW9ja19zZWxmdGVzdHMpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKaW5kZXggOTJj NjI4ZjE4YzYwLi5kYjkxZTYzOTkxOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9yZXF1ZXN0LmMKQEAgLTIxMjQsNiArMjEyNCw3IEBAIHN0YXRpYyBpbnQgbWVh c3VyZV9wcmVlbXB0aW9uKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAogCQlpbnRlbF9yaW5n X2FkdmFuY2UocnEsIGNzKTsKIAkJcnEtPnNjaGVkLmF0dHIucHJpb3JpdHkgPSBJOTE1X1BSSU9S SVRZX0JBUlJJRVI7CisJCXJxLT5zY2hlZC5kZWFkbGluZSA9IDA7CiAKIAkJZWxhcHNlZFtpIC0g MV0gPSBFTkdJTkVfUkVBRF9GVyhjZS0+ZW5naW5lLCBSSU5HX1RJTUVTVEFNUCk7CiAJCWk5MTVf cmVxdWVzdF9hZGQocnEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9zY2hlZHVsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlj YTUwZGI4MTAzNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3NjaGVkdWxlci5jCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlv bgorICovCisKKyNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCisKK3N0YXRpYyBpbnQgbW9ja19z Y2hlZHVsZXJfc2xpY2VzKHZvaWQgKmR1bW15KQoreworCXU2NCBtaW4sIG1heCwgbm9ybWFsLCBr ZXJuZWw7CisKKwltaW4gPSBwcmlvX3NsaWNlKEk5MTVfUFJJT1JJVFlfTUlOKTsKKwlwcl9pbmZv KCIlOHMgc2xpY2U6ICVsbHV1c1xuIiwgIm1pbiIsIG1pbiA+PiAxMCk7CisKKwlub3JtYWwgPSBw cmlvX3NsaWNlKDApOworCXByX2luZm8oIiU4cyBzbGljZTogJWxsdXVzXG4iLCAibm9ybWFsIiwg bm9ybWFsID4+IDEwKTsKKworCW1heCA9IHByaW9fc2xpY2UoSTkxNV9QUklPUklUWV9NQVgpOwor CXByX2luZm8oIiU4cyBzbGljZTogJWxsdXVzXG4iLCAibWF4IiwgbWF4ID4+IDEwKTsKKworCWtl cm5lbCA9IHByaW9fc2xpY2UoSTkxNV9QUklPUklUWV9CQVJSSUVSKTsKKwlwcl9pbmZvKCIlOHMg c2xpY2U6ICVsbHV1c1xuIiwgImtlcm5lbCIsIGtlcm5lbCA+PiAxMCk7CisKKwlpZiAoa2VybmVs ICE9IDApIHsKKwkJcHJfZXJyKCJrZXJuZWwgcHJpbyBzbGljZSBzaG91bGQgYmUgMFxuIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChtYXggPj0gbm9ybWFsKSB7CisJCXByX2Vycigi bWF4aW11bSBwcmlvIHNsaWNlIHNob3VsZCBiZSBzaG9ydGVyIHRoYW4gbm9ybWFsXG4iKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKG1pbiA8PSBub3JtYWwpIHsKKwkJcHJfZXJyKCJt aW5pbXVtIHByaW8gc2xpY2Ugc2hvdWxkIGJlIGxvbmdlciB0aGFuIG5vcm1hbFxuIik7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV9zY2hlZHVsZXJf bW9ja19zZWxmdGVzdHModm9pZCkKK3sKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVz dCB0ZXN0c1tdID0geworCQlTVUJURVNUKG1vY2tfc2NoZWR1bGVyX3NsaWNlcyksCisJfTsKKwor CXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBOVUxMKTsKK30KLS0gCjIuMjAuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==