From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 1/3] locking: WW mutex cleanup Date: Tue, 19 Jun 2018 10:24:43 +0200 Message-ID: <20180619082445.11062-2-thellstrom@vmware.com> References: <20180619082445.11062-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-dm3nam05on062d.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe51::62d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 351E46E4EF for ; Tue, 19 Jun 2018 08:26:00 +0000 (UTC) In-Reply-To: <20180619082445.11062-1-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, peterz@infradead.org Cc: Kate Stewart , Thomas Hellstrom , Davidlohr Bueso , Jonathan Corbet , pv-drivers@vmware.com, linux-doc@vger.kernel.org, Josh Triplett , linaro-mm-sig@lists.linaro.org, David Airlie , Greg Kroah-Hartman , Ingo Molnar , linux-graphics-maintainer@vmware.com, Philippe Ombredanne , Thomas Gleixner , "Paul E. McKenney" , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogUGV0ZXIgWmlsanN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgoKTWFrZSB0aGUgV1cg bXV0ZXggY29kZSBtb3JlIHJlYWRhYmxlIGJ5IGFkZGluZyBjb21tZW50cywgc3BsaXR0aW5nIHVw CmZ1bmN0aW9ucyBhbmQgcG9pbnRpbmcgb3V0IHRoYXQgd2UncmUgYWN0dWFsbHkgdXNpbmcgdGhl IFdhaXQtRGllCmFsZ29yaXRobS4KCkNjOiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4K Q2M6IEpvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5uZXQ+CkNjOiBHdXN0YXZvIFBhZG92YW4g PGd1c3Rhdm9AcGFkb3Zhbi5vcmc+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5r aG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5v cmc+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+CkNjOiBEYXZpZGxvaHIgQnVl c28gPGRhdmVAc3Rnb2xhYnMubmV0PgpDYzogIlBhdWwgRS4gTWNLZW5uZXkiIDxwYXVsbWNrQGxp bnV4LnZuZXQuaWJtLmNvbT4KQ2M6IEpvc2ggVHJpcGxldHQgPGpvc2hAam9zaHRyaXBsZXR0Lm9y Zz4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogS2F0ZSBTdGV3 YXJ0IDxrc3Rld2FydEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogUGhpbGlwcGUgT21icmVkYW5u ZSA8cG9tYnJlZGFubmVAbmV4Yi5jb20+CkNjOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBs aW51eGZvdW5kYXRpb24ub3JnPgpDYzogbGludXgtZG9jQHZnZXIua2VybmVsLm9yZwpDYzogbGlu dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCkNjOiBsaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5v cmcKQ28tYXV0aG9yZWQtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNv bT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29t PgotLS0KIERvY3VtZW50YXRpb24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24udHh0IHwgIDEyICst CiBpbmNsdWRlL2xpbnV4L3d3X211dGV4LmggICAgICAgICAgICAgICAgICB8ICAyOCArKy0tLQog a2VybmVsL2xvY2tpbmcvbXV0ZXguYyAgICAgICAgICAgICAgICAgICAgfCAyMDIgKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCsp LCA5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ct bXV0ZXgtZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24u dHh0CmluZGV4IDM0YzNhMWI1MGI5YS4uMmZkN2YyYTJhZjIxIDEwMDY0NAotLS0gYS9Eb2N1bWVu dGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2xv Y2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dApAQCAtMzIsMTAgKzMyLDEwIEBAIHRoZSBvbGRlc3Qg dGFzaykgd2lucywgYW5kIHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVyIHJlc2VydmF0aW9uIGlkIChp LmUuIHRoZQogeW91bmdlciB0YXNrKSB1bmxvY2tzIGFsbCBvZiB0aGUgYnVmZmVycyB0aGF0IGl0 IGhhcyBhbHJlYWR5IGxvY2tlZCwgYW5kIHRoZW4KIHRyaWVzIGFnYWluLgogCi1JbiB0aGUgUkRC TVMgbGl0ZXJhdHVyZSB0aGlzIGRlYWRsb2NrIGhhbmRsaW5nIGFwcHJvYWNoIGlzIGNhbGxlZCB3 YWl0L3dvdW5kOgorSW4gdGhlIFJEQk1TIGxpdGVyYXR1cmUgdGhpcyBkZWFkbG9jayBoYW5kbGlu ZyBhcHByb2FjaCBpcyBjYWxsZWQgd2FpdC9kaWU6CiBUaGUgb2xkZXIgdGFza3Mgd2FpdHMgdW50 aWwgaXQgY2FuIGFjcXVpcmUgdGhlIGNvbnRlbmRlZCBsb2NrLiBUaGUgeW91bmdlciB0YXNrcwog bmVlZHMgdG8gYmFjayBvZmYgYW5kIGRyb3AgYWxsIHRoZSBsb2NrcyBpdCBpcyBjdXJyZW50bHkg aG9sZGluZywgaS5lLiB0aGUKLXlvdW5nZXIgdGFzayBpcyB3b3VuZGVkLgoreW91bmdlciB0YXNr IGRpZXMuCiAKIENvbmNlcHRzCiAtLS0tLS0tLQpAQCAtNTYsOSArNTYsOSBAQCBGdXJ0aGVybW9y ZSB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGNsYXNzIG9mIHcvdyBsb2NrIGFjcXVpcmUgZnVu Y3Rpb25zOgogCiAqIE5vcm1hbCBsb2NrIGFjcXVpc2l0aW9uIHdpdGggYSBjb250ZXh0LCB1c2lu ZyB3d19tdXRleF9sb2NrLgogCi0qIFNsb3dwYXRoIGxvY2sgYWNxdWlzaXRpb24gb24gdGhlIGNv bnRlbmRpbmcgbG9jaywgdXNlZCBieSB0aGUgd291bmRlZCB0YXNrCi0gIGFmdGVyIGhhdmluZyBk cm9wcGVkIGFsbCBhbHJlYWR5IGFjcXVpcmVkIGxvY2tzLiBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0 aGUKLSAgX3Nsb3cgcG9zdGZpeC4KKyogU2xvd3BhdGggbG9jayBhY3F1aXNpdGlvbiBvbiB0aGUg Y29udGVuZGluZyBsb2NrLCB1c2VkIGJ5IHRoZSB0YXNrIHRoYXQganVzdAorICBraWxsZWQgaXRz IHRyYW5zYWN0aW9uIGFmdGVyIGhhdmluZyBkcm9wcGVkIGFsbCBhbHJlYWR5IGFjcXVpcmVkIGxv Y2tzLgorICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSB0aGUgX3Nsb3cgcG9zdGZpeC4KIAogICBGcm9t IGEgc2ltcGxlIHNlbWFudGljcyBwb2ludC1vZi12aWV3IHRoZSBfc2xvdyBmdW5jdGlvbnMgYXJl IG5vdCBzdHJpY3RseQogICByZXF1aXJlZCwgc2luY2Ugc2ltcGx5IGNhbGxpbmcgdGhlIG5vcm1h bCB3d19tdXRleF9sb2NrIGZ1bmN0aW9ucyBvbiB0aGUKQEAgLTIyMCw3ICsyMjAsNyBAQCBtdXRl eGVzIGFyZSBhIG5hdHVyYWwgZml0IGZvciBzdWNoIGEgY2FzZSBmb3IgdHdvIHJlYXNvbnM6CiAK IE5vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIGRpZmZlcnMgaW4gdHdvIGltcG9ydGFudCB3YXlzIGZy b20gdGhlIGFib3ZlIG1ldGhvZHM6CiAtIFNpbmNlIHRoZSBsaXN0IG9mIG9iamVjdHMgaXMgZHlu YW1pY2FsbHkgY29uc3RydWN0ZWQgKGFuZCBtaWdodCB2ZXJ5IHdlbGwgYmUKLSAgZGlmZmVyZW50 IHdoZW4gcmV0cnlpbmcgZHVlIHRvIGhpdHRpbmcgdGhlIC1FREVBRExLIHdvdW5kIGNvbmRpdGlv bikgdGhlcmUncworICBkaWZmZXJlbnQgd2hlbiByZXRyeWluZyBkdWUgdG8gaGl0dGluZyB0aGUg LUVERUFETEsgZGllIGNvbmRpdGlvbikgdGhlcmUncwogICBubyBuZWVkIHRvIGtlZXAgYW55IG9i amVjdCBvbiBhIHBlcnNpc3RlbnQgbGlzdCB3aGVuIGl0J3Mgbm90IGxvY2tlZC4gV2UgY2FuCiAg IHRoZXJlZm9yZSBtb3ZlIHRoZSBsaXN0X2hlYWQgaW50byB0aGUgb2JqZWN0IGl0c2VsZi4KIC0g T24gdGhlIG90aGVyIGhhbmQgdGhlIGR5bmFtaWMgb2JqZWN0IGxpc3QgY29uc3RydWN0aW9uIGFs c28gbWVhbnMgdGhhdCB0aGUgLUVBTFJFQURZIHJldHVybgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC93d19tdXRleC5oIGIvaW5jbHVkZS9saW51eC93d19tdXRleC5oCmluZGV4IDM5ZmRhMTk1 YmY3OC4uZjgyZmNlMjIyOWM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgK KysrIGIvaW5jbHVkZS9saW51eC93d19tdXRleC5oCkBAIC02LDcgKzYsNyBAQAogICoKICAqICBD b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUmVkIEhhdCwgSW5jLiwgSW5nbyBNb2xuYXIg PG1pbmdvQHJlZGhhdC5jb20+CiAgKgotICogV291bmQvd2FpdCBpbXBsZW1lbnRhdGlvbjoKKyAq IFdhaXQvRGllIGltcGxlbWVudGF0aW9uOgogICogIENvcHlyaWdodCAoQykgMjAxMyBDYW5vbmlj YWwgTHRkLgogICoKICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVy ZSBhbmQgQVBJIGRlZmluaXRpb25zLgpAQCAtMjgsOSArMjgsOSBAQCBzdHJ1Y3Qgd3dfY2xhc3Mg ewogc3RydWN0IHd3X2FjcXVpcmVfY3R4IHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAJ dW5zaWduZWQgbG9uZyBzdGFtcDsKLQl1bnNpZ25lZCBhY3F1aXJlZDsKKwl1bnNpZ25lZCBpbnQg YWNxdWlyZWQ7CiAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKLQl1bnNpZ25lZCBkb25lX2Fj cXVpcmU7CisJdW5zaWduZWQgaW50IGRvbmVfYWNxdWlyZTsKIAlzdHJ1Y3Qgd3dfY2xhc3MgKnd3 X2NsYXNzOwogCXN0cnVjdCB3d19tdXRleCAqY29udGVuZGluZ19sb2NrOwogI2VuZGlmCkBAIC0z OCw4ICszOCw4IEBAIHN0cnVjdCB3d19hY3F1aXJlX2N0eCB7CiAJc3RydWN0IGxvY2tkZXBfbWFw IGRlcF9tYXA7CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfREVCVUdfV1dfTVVURVhfU0xPV1BBVEgK LQl1bnNpZ25lZCBkZWFkbG9ja19pbmplY3RfaW50ZXJ2YWw7Ci0JdW5zaWduZWQgZGVhZGxvY2tf aW5qZWN0X2NvdW50ZG93bjsKKwl1bnNpZ25lZCBpbnQgZGVhZGxvY2tfaW5qZWN0X2ludGVydmFs OworCXVuc2lnbmVkIGludCBkZWFkbG9ja19pbmplY3RfY291bnRkb3duOwogI2VuZGlmCiB9Owog CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHd3X211dGV4X2luaXQoc3Ry dWN0IHd3X211dGV4ICpsb2NrLAogICoKICAqIENvbnRleHQtYmFzZWQgdy93IG11dGV4IGFjcXVp cmluZyBjYW4gYmUgZG9uZSBpbiBhbnkgb3JkZXIgd2hhdHNvZXZlciB3aXRoaW4KICAqIGEgZ2l2 ZW4gbG9jayBjbGFzcy4gRGVhZGxvY2tzIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIGhhbmRsZWQgd2l0 aCB0aGUKLSAqIHdhaXQvd291bmQgbG9naWMuCisgKiB3YWl0L2RpZSBsb2dpYy4KICAqCiAgKiBN aXhpbmcgb2YgY29udGV4dC1iYXNlZCB3L3cgbXV0ZXggYWNxdWlyaW5nIGFuZCBzaW5nbGUgdy93 IG11dGV4IGxvY2tpbmcgY2FuCiAgKiByZXN1bHQgaW4gdW5kZXRlY3RlZCBkZWFkbG9ja3MgYW5k IGlzIHNvIGZvcmJpZGRlbi4gTWl4aW5nIGRpZmZlcmVudCBjb250ZXh0cwpAQCAtMTk1LDEzICsx OTUsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHd3X2FjcXVpcmVfZmluaShzdHJ1Y3Qgd3dfYWNx dWlyZV9jdHggKmN0eCkKICAqIExvY2sgdGhlIHcvdyBtdXRleCBleGNsdXNpdmVseSBmb3IgdGhp cyB0YXNrLgogICoKICAqIERlYWRsb2NrcyB3aXRoaW4gYSBnaXZlbiB3L3cgY2xhc3Mgb2YgbG9j a3MgYXJlIGRldGVjdGVkIGFuZCBoYW5kbGVkIHdpdGggdGhlCi0gKiB3YWl0L3dvdW5kIGFsZ29y aXRobS4gSWYgdGhlIGxvY2sgaXNuJ3QgaW1tZWRpYXRlbHkgYXZhaWFibGUgdGhpcyBmdW5jdGlv bgorICogd2FpdC9kaWUgYWxnb3JpdGhtLiBJZiB0aGUgbG9jayBpc24ndCBpbW1lZGlhdGVseSBh dmFpbGFibGUgdGhpcyBmdW5jdGlvbgogICogd2lsbCBlaXRoZXIgc2xlZXAgdW50aWwgaXQgaXMg KHdhaXQgY2FzZSkuIE9yIGl0IHNlbGVjdHMgdGhlIGN1cnJlbnQgY29udGV4dAotICogZm9yIGJh Y2tpbmcgb2ZmIGJ5IHJldHVybmluZyAtRURFQURMSyAod291bmQgY2FzZSkuIFRyeWluZyB0byBh Y3F1aXJlIHRoZQorICogZm9yIGJhY2tpbmcgb2ZmIGJ5IHJldHVybmluZyAtRURFQURMSyAoZGll IGNhc2UpLiBUcnlpbmcgdG8gYWNxdWlyZSB0aGUKICAqIHNhbWUgbG9jayB3aXRoIHRoZSBzYW1l IGNvbnRleHQgdHdpY2UgaXMgYWxzbyBkZXRlY3RlZCBhbmQgc2lnbmFsbGVkIGJ5CiAgKiByZXR1 cm5pbmcgLUVBTFJFQURZLiBSZXR1cm5zIDAgaWYgdGhlIG11dGV4IHdhcyBzdWNjZXNzZnVsbHkg YWNxdWlyZWQuCiAgKgotICogSW4gdGhlIHdvdW5kIGNhc2UgdGhlIGNhbGxlciBtdXN0IHJlbGVh c2UgYWxsIGN1cnJlbnRseSBoZWxkIHcvdyBtdXRleGVzIGZvcgorICogSW4gdGhlIGRpZSBjYXNl IHRoZSBjYWxsZXIgbXVzdCByZWxlYXNlIGFsbCBjdXJyZW50bHkgaGVsZCB3L3cgbXV0ZXhlcyBm b3IKICAqIHRoZSBnaXZlbiBjb250ZXh0IGFuZCB0aGVuIHdhaXQgZm9yIHRoaXMgY29udGVuZGlu ZyBsb2NrIHRvIGJlIGF2YWlsYWJsZSBieQogICogY2FsbGluZyB3d19tdXRleF9sb2NrX3Nsb3cu IEFsdGVybmF0aXZlbHkgY2FsbGVycyBjYW4gb3B0IHRvIG5vdCBhY3F1aXJlIHRoaXMKICAqIGxv Y2sgYW5kIHByb2NlZWQgd2l0aCB0cnlpbmcgdG8gYWNxdWlyZSBmdXJ0aGVyIHcvdyBtdXRleGVz IChlLmcuIHdoZW4KQEAgLTIyNiwxNCArMjI2LDE0IEBAIGV4dGVybiBpbnQgLyogX19tdXN0X2No ZWNrICovIHd3X211dGV4X2xvY2soc3RydWN0IHd3X211dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNx CiAgKiBMb2NrIHRoZSB3L3cgbXV0ZXggZXhjbHVzaXZlbHkgZm9yIHRoaXMgdGFzay4KICAqCiAg KiBEZWFkbG9ja3Mgd2l0aGluIGEgZ2l2ZW4gdy93IGNsYXNzIG9mIGxvY2tzIGFyZSBkZXRlY3Rl ZCBhbmQgaGFuZGxlZCB3aXRoIHRoZQotICogd2FpdC93b3VuZCBhbGdvcml0aG0uIElmIHRoZSBs b2NrIGlzbid0IGltbWVkaWF0ZWx5IGF2YWlhYmxlIHRoaXMgZnVuY3Rpb24KKyAqIHdhaXQvZGll IGFsZ29yaXRobS4gSWYgdGhlIGxvY2sgaXNuJ3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlIHRoaXMg ZnVuY3Rpb24KICAqIHdpbGwgZWl0aGVyIHNsZWVwIHVudGlsIGl0IGlzICh3YWl0IGNhc2UpLiBP ciBpdCBzZWxlY3RzIHRoZSBjdXJyZW50IGNvbnRleHQKLSAqIGZvciBiYWNraW5nIG9mZiBieSBy ZXR1cm5pbmcgLUVERUFETEsgKHdvdW5kIGNhc2UpLiBUcnlpbmcgdG8gYWNxdWlyZSB0aGUKKyAq IGZvciBiYWNraW5nIG9mZiBieSByZXR1cm5pbmcgLUVERUFETEsgKGRpZSBjYXNlKS4gVHJ5aW5n IHRvIGFjcXVpcmUgdGhlCiAgKiBzYW1lIGxvY2sgd2l0aCB0aGUgc2FtZSBjb250ZXh0IHR3aWNl IGlzIGFsc28gZGV0ZWN0ZWQgYW5kIHNpZ25hbGxlZCBieQogICogcmV0dXJuaW5nIC1FQUxSRUFE WS4gUmV0dXJucyAwIGlmIHRoZSBtdXRleCB3YXMgc3VjY2Vzc2Z1bGx5IGFjcXVpcmVkLiBJZiBh CiAgKiBzaWduYWwgYXJyaXZlcyB3aGlsZSB3YWl0aW5nIGZvciB0aGUgbG9jayB0aGVuIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyAtRUlOVFIuCiAgKgotICogSW4gdGhlIHdvdW5kIGNhc2UgdGhlIGNh bGxlciBtdXN0IHJlbGVhc2UgYWxsIGN1cnJlbnRseSBoZWxkIHcvdyBtdXRleGVzIGZvcgorICog SW4gdGhlIGRpZSBjYXNlIHRoZSBjYWxsZXIgbXVzdCByZWxlYXNlIGFsbCBjdXJyZW50bHkgaGVs ZCB3L3cgbXV0ZXhlcyBmb3IKICAqIHRoZSBnaXZlbiBjb250ZXh0IGFuZCB0aGVuIHdhaXQgZm9y IHRoaXMgY29udGVuZGluZyBsb2NrIHRvIGJlIGF2YWlsYWJsZSBieQogICogY2FsbGluZyB3d19t dXRleF9sb2NrX3Nsb3dfaW50ZXJydXB0aWJsZS4gQWx0ZXJuYXRpdmVseSBjYWxsZXJzIGNhbiBv cHQgdG8KICAqIG5vdCBhY3F1aXJlIHRoaXMgbG9jayBhbmQgcHJvY2VlZCB3aXRoIHRyeWluZyB0 byBhY3F1aXJlIGZ1cnRoZXIgdy93IG11dGV4ZXMKQEAgLTI1Niw3ICsyNTYsNyBAQCBleHRlcm4g aW50IF9fbXVzdF9jaGVjayB3d19tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IHd3X211 dGV4ICpsb2NrLAogICogQGxvY2s6IHRoZSBtdXRleCB0byBiZSBhY3F1aXJlZAogICogQGN0eDog dy93IGFjcXVpcmUgY29udGV4dAogICoKLSAqIEFjcXVpcmVzIGEgdy93IG11dGV4IHdpdGggdGhl IGdpdmVuIGNvbnRleHQgYWZ0ZXIgYSB3b3VuZCBjYXNlLiBUaGlzIGZ1bmN0aW9uCisgKiBBY3F1 aXJlcyBhIHcvdyBtdXRleCB3aXRoIHRoZSBnaXZlbiBjb250ZXh0IGFmdGVyIGEgZGllIGNhc2Uu IFRoaXMgZnVuY3Rpb24KICAqIHdpbGwgc2xlZXAgdW50aWwgdGhlIGxvY2sgYmVjb21lcyBhdmFp bGFibGUuCiAgKgogICogVGhlIGNhbGxlciBtdXN0IGhhdmUgcmVsZWFzZWQgYWxsIHcvdyBtdXRl eGVzIGFscmVhZHkgYWNxdWlyZWQgd2l0aCB0aGUKQEAgLTI5MCw3ICsyOTAsNyBAQCB3d19tdXRl eF9sb2NrX3Nsb3coc3RydWN0IHd3X211dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHgg KmN0eCkKICAqIEBsb2NrOiB0aGUgbXV0ZXggdG8gYmUgYWNxdWlyZWQKICAqIEBjdHg6IHcvdyBh Y3F1aXJlIGNvbnRleHQKICAqCi0gKiBBY3F1aXJlcyBhIHcvdyBtdXRleCB3aXRoIHRoZSBnaXZl biBjb250ZXh0IGFmdGVyIGEgd291bmQgY2FzZS4gVGhpcyBmdW5jdGlvbgorICogQWNxdWlyZXMg YSB3L3cgbXV0ZXggd2l0aCB0aGUgZ2l2ZW4gY29udGV4dCBhZnRlciBhIGRpZSBjYXNlLiBUaGlz IGZ1bmN0aW9uCiAgKiB3aWxsIHNsZWVwIHVudGlsIHRoZSBsb2NrIGJlY29tZXMgYXZhaWxhYmxl IGFuZCByZXR1cm5zIDAgd2hlbiB0aGUgbG9jayBoYXMKICAqIGJlZW4gYWNxdWlyZWQuIElmIGEg c2lnbmFsIGFycml2ZXMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIGxvY2sgdGhlbiB0aGlzCiAgKiBm dW5jdGlvbiByZXR1cm5zIC1FSU5UUi4KZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL211dGV4 LmMgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5jCmluZGV4IDIwNDgzNTlmMzNkMi4uNDEyYjRmYzA4 MjM1IDEwMDY0NAotLS0gYS9rZXJuZWwvbG9ja2luZy9tdXRleC5jCisrKyBiL2tlcm5lbC9sb2Nr aW5nL211dGV4LmMKQEAgLTI0Myw2ICsyNDMsMTcgQEAgdm9pZCBfX3NjaGVkIG11dGV4X2xvY2so c3RydWN0IG11dGV4ICpsb2NrKQogRVhQT1JUX1NZTUJPTChtdXRleF9sb2NrKTsKICNlbmRpZgog CisvKgorICogV2FpdC1EaWU6CisgKiAgIFRoZSBuZXdlciB0cmFuc2FjdGlvbnMgYXJlIGtpbGxl ZCB3aGVuOgorICogICAgIEl0ICh0aGUgbmV3IHRyYW5zYWN0aW9uKSBtYWtlcyBhIHJlcXVlc3Qg Zm9yIGEgbG9jayBiZWluZyBoZWxkCisgKiAgICAgYnkgYW4gb2xkZXIgdHJhbnNhY3Rpb24uCisg Ki8KKworLyoKKyAqIEFzc29jaWF0ZSB0aGUgd3dfbXV0ZXggQHd3IHdpdGggdGhlIGNvbnRleHQg QHd3X2N0eCB1bmRlciB3aGljaCB3ZSBhY3F1aXJlZAorICogaXQuCisgKi8KIHN0YXRpYyBfX2Fs d2F5c19pbmxpbmUgdm9pZAogd3dfbXV0ZXhfbG9ja19hY3F1aXJlZChzdHJ1Y3Qgd3dfbXV0ZXgg Knd3LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKIHsKQEAgLTI4MSwyNiArMjkyLDUz IEBAIHd3X211dGV4X2xvY2tfYWNxdWlyZWQoc3RydWN0IHd3X211dGV4ICp3dywgc3RydWN0IHd3 X2FjcXVpcmVfY3R4ICp3d19jdHgpCiAJREVCVUdfTE9DS1NfV0FSTl9PTih3d19jdHgtPnd3X2Ns YXNzICE9IHd3LT53d19jbGFzcyk7CiAjZW5kaWYKIAl3d19jdHgtPmFjcXVpcmVkKys7CisJd3ct PmN0eCA9IHd3X2N0eDsKIH0KIAorLyoKKyAqIERldGVybWluZSBpZiBjb250ZXh0IEBhIGlzICdh ZnRlcicgY29udGV4dCBAYi4gSU9XLCBAYSBpcyBhIHlvdW5nZXIKKyAqIHRyYW5zYWN0aW9uIHRo YW4gQGIgYW5kIGRlcGVuZGluZyBvbiBhbGdvcml0aG0gZWl0aGVyIG5lZWRzIHRvIHdhaXQgZm9y CisgKiBAYiBvciBkaWUuCisgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBfX3NjaGVkCiBfX3d3X2N0 eF9zdGFtcF9hZnRlcihzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmEsIHN0cnVjdCB3d19hY3F1aXJl X2N0eCAqYikKIHsKLQlyZXR1cm4gYS0+c3RhbXAgLSBiLT5zdGFtcCA8PSBMT05HX01BWCAmJgot CSAgICAgICAoYS0+c3RhbXAgIT0gYi0+c3RhbXAgfHwgYSA+IGIpOworCisJcmV0dXJuIChzaWdu ZWQgbG9uZykoYS0+c3RhbXAgLSBiLT5zdGFtcCkgPiAwOworfQorCisvKgorICogV2FpdC1EaWU7 IHdha2UgYSB5b3VuZ2VyIHdhaXRlciBjb250ZXh0ICh3aGVuIGxvY2tzIGhlbGQpIHN1Y2ggdGhh dCBpdCBjYW4KKyAqIGRpZS4KKyAqCisgKiBBbW9uZyB3YWl0ZXJzIHdpdGggY29udGV4dCwgb25s eSB0aGUgZmlyc3Qgb25lIGNhbiBoYXZlIG90aGVyIGxvY2tzIGFjcXVpcmVkCisgKiBhbHJlYWR5 IChjdHgtPmFjcXVpcmVkID4gMCksIGJlY2F1c2UgX193d19tdXRleF9hZGRfd2FpdGVyKCkgYW5k CisgKiBfX3d3X211dGV4X2NoZWNrX2tpbGwoKSB3YWtlIGFueSBidXQgdGhlIGVhcmxpZXN0IGNv bnRleHQuCisgKi8KK3N0YXRpYyBib29sIF9fc2NoZWQKK19fd3dfbXV0ZXhfZGllKHN0cnVjdCBt dXRleCAqbG9jaywgc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAorCSAgICAgICBzdHJ1Y3Qg d3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKK3sKKwlpZiAod2FpdGVyLT53d19jdHgtPmFjcXVpcmVk ID4gMCAmJgorCQkJX193d19jdHhfc3RhbXBfYWZ0ZXIod2FpdGVyLT53d19jdHgsIHd3X2N0eCkp IHsKKwkJZGVidWdfbXV0ZXhfd2FrZV93YWl0ZXIobG9jaywgd2FpdGVyKTsKKwkJd2FrZV91cF9w cm9jZXNzKHdhaXRlci0+dGFzayk7CisJfQorCisJcmV0dXJuIHRydWU7CiB9CiAKIC8qCi0gKiBX YWtlIHVwIGFueSB3YWl0ZXJzIHRoYXQgbWF5IGhhdmUgdG8gYmFjayBvZmYgd2hlbiB0aGUgbG9j ayBpcyBoZWxkIGJ5IHRoZQotICogZ2l2ZW4gY29udGV4dC4KKyAqIFdlIGp1c3QgYWNxdWlyZWQg QGxvY2sgdW5kZXIgQHd3X2N0eCwgaWYgdGhlcmUgYXJlIGxhdGVyIGNvbnRleHRzIHdhaXRpbmcK KyAqIGJlaGluZCB1cyBvbiB0aGUgd2FpdC1saXN0LCBjaGVjayBpZiB0aGV5IG5lZWQgdG8gZGll LgogICoKLSAqIER1ZSB0byB0aGUgaW52YXJpYW50cyBvbiB0aGUgd2FpdCBsaXN0LCB0aGlzIGNh biBvbmx5IGFmZmVjdCB0aGUgZmlyc3QKLSAqIHdhaXRlciB3aXRoIGEgY29udGV4dC4KKyAqIFNl ZSBfX3d3X211dGV4X2FkZF93YWl0ZXIoKSBmb3IgdGhlIGxpc3Qtb3JkZXIgY29uc3RydWN0aW9u OyBiYXNpY2FsbHkgdGhlCisgKiBsaXN0IGlzIG9yZGVyZWQgYnkgc3RhbXAsIHNtYWxsZXN0IChv bGRlc3QpIGZpcnN0LgogICoKICAqIFRoZSBjdXJyZW50IHRhc2sgbXVzdCBub3QgYmUgb24gdGhl IHdhaXQgbGlzdC4KICAqLwogc3RhdGljIHZvaWQgX19zY2hlZAotX193d19tdXRleF93YWtldXBf Zm9yX2JhY2tvZmYoc3RydWN0IG11dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3 X2N0eCkKK19fd3dfbXV0ZXhfY2hlY2tfd2FpdGVycyhzdHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVj dCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4KQogewogCXN0cnVjdCBtdXRleF93YWl0ZXIgKmN1cjsK IApAQCAtMzEwLDMwICszNDgsMjMgQEAgX193d19tdXRleF93YWtldXBfZm9yX2JhY2tvZmYoc3Ry dWN0IG11dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKIAkJaWYgKCFj dXItPnd3X2N0eCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChjdXItPnd3X2N0eC0+YWNxdWlyZWQg PiAwICYmCi0JCSAgICBfX3d3X2N0eF9zdGFtcF9hZnRlcihjdXItPnd3X2N0eCwgd3dfY3R4KSkg ewotCQkJZGVidWdfbXV0ZXhfd2FrZV93YWl0ZXIobG9jaywgY3VyKTsKLQkJCXdha2VfdXBfcHJv Y2VzcyhjdXItPnRhc2spOwotCQl9Ci0KLQkJYnJlYWs7CisJCWlmIChfX3d3X211dGV4X2RpZShs b2NrLCBjdXIsIHd3X2N0eCkpCisJCQlicmVhazsKIAl9CiB9CiAKIC8qCi0gKiBBZnRlciBhY3F1 aXJpbmcgbG9jayB3aXRoIGZhc3RwYXRoIG9yIHdoZW4gd2UgbG9zdCBvdXQgaW4gY29udGVzdGVk Ci0gKiBzbG93cGF0aCwgc2V0IGN0eCBhbmQgd2FrZSB1cCBhbnkgd2FpdGVycyBzbyB0aGV5IGNh biByZWNoZWNrLgorICogQWZ0ZXIgYWNxdWlyaW5nIGxvY2sgd2l0aCBmYXN0cGF0aCwgd2hlcmUg d2UgZG8gbm90IGhvbGQgd2FpdF9sb2NrLCBzZXQgY3R4CisgKiBhbmQgd2FrZSB1cCBhbnkgd2Fp dGVycyBzbyB0aGV5IGNhbiByZWNoZWNrLgogICovCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZv aWQKIHd3X211dGV4X3NldF9jb250ZXh0X2Zhc3RwYXRoKHN0cnVjdCB3d19tdXRleCAqbG9jaywg c3RydWN0IHd3X2FjcXVpcmVfY3R4ICpjdHgpCiB7CiAJd3dfbXV0ZXhfbG9ja19hY3F1aXJlZChs b2NrLCBjdHgpOwogCi0JbG9jay0+Y3R4ID0gY3R4OwotCiAJLyoKIAkgKiBUaGUgbG9jay0+Y3R4 IHVwZGF0ZSBzaG91bGQgYmUgdmlzaWJsZSBvbiBhbGwgY29yZXMgYmVmb3JlCi0JICogdGhlIGF0 b21pYyByZWFkIGlzIGRvbmUsIG90aGVyd2lzZSBjb250ZW5kZWQgd2FpdGVycyBtaWdodCBiZQor CSAqIHRoZSBXQUlURVJTIGNoZWNrIGlzIGRvbmUsIG90aGVyd2lzZSBjb250ZW5kZWQgd2FpdGVy cyBtaWdodCBiZQogCSAqIG1pc3NlZC4gVGhlIGNvbnRlbmRlZCB3YWl0ZXJzIHdpbGwgZWl0aGVy IHNlZSB3d19jdHggPT0gTlVMTAogCSAqIGFuZCBrZWVwIHNwaW5uaW5nLCBvciBpdCB3aWxsIGFj cXVpcmUgd2FpdF9sb2NrLCBhZGQgaXRzZWxmCiAJICogdG8gd2FpdGVyIGxpc3QgYW5kIHNsZWVw LgpAQCAtMzQ3LDI5ICszNzgsMTQgQEAgd3dfbXV0ZXhfc2V0X2NvbnRleHRfZmFzdHBhdGgoc3Ry dWN0IHd3X211dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKIAkJcmV0dXJu OwogCiAJLyoKLQkgKiBVaCBvaCwgd2UgcmFjZWQgaW4gZmFzdHBhdGgsIHdha2UgdXAgZXZlcnlv bmUgaW4gdGhpcyBjYXNlLAotCSAqIHNvIHRoZXkgY2FuIHNlZSB0aGUgbmV3IGxvY2stPmN0eC4K KwkgKiBVaCBvaCwgd2UgcmFjZWQgaW4gZmFzdHBhdGgsIGNoZWNrIGlmIGFueSBvZiB0aGUgd2Fp dGVycyBuZWVkIHRvCisJICogZGllLgogCSAqLwogCXNwaW5fbG9jaygmbG9jay0+YmFzZS53YWl0 X2xvY2spOwotCV9fd3dfbXV0ZXhfd2FrZXVwX2Zvcl9iYWNrb2ZmKCZsb2NrLT5iYXNlLCBjdHgp OworCV9fd3dfbXV0ZXhfY2hlY2tfd2FpdGVycygmbG9jay0+YmFzZSwgY3R4KTsKIAlzcGluX3Vu bG9jaygmbG9jay0+YmFzZS53YWl0X2xvY2spOwogfQogCi0vKgotICogQWZ0ZXIgYWNxdWlyaW5n IGxvY2sgaW4gdGhlIHNsb3dwYXRoIHNldCBjdHguCi0gKgotICogVW5saWtlIGZvciB0aGUgZmFz dCBwYXRoLCB0aGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3YWl0ZXJzIGFyZSB3b2tlbiB1cCB3aGVy ZQotICogbmVjZXNzYXJ5LgotICoKLSAqIENhbGxlcnMgbXVzdCBob2xkIHRoZSBtdXRleCB3YWl0 X2xvY2suCi0gKi8KLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZAotd3dfbXV0ZXhfc2V0X2Nv bnRleHRfc2xvd3BhdGgoc3RydWN0IHd3X211dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggKmN0eCkKLXsKLQl3d19tdXRleF9sb2NrX2FjcXVpcmVkKGxvY2ssIGN0eCk7Ci0JbG9jay0+ Y3R4ID0gY3R4OwotfQotCiAjaWZkZWYgQ09ORklHX01VVEVYX1NQSU5fT05fT1dORVIKIAogc3Rh dGljIGlubGluZQpAQCAtNjQ1LDM3ICs2NjEsNzMgQEAgdm9pZCBfX3NjaGVkIHd3X211dGV4X3Vu bG9jayhzdHJ1Y3Qgd3dfbXV0ZXggKmxvY2spCiB9CiBFWFBPUlRfU1lNQk9MKHd3X211dGV4X3Vu bG9jayk7CiAKKworc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgX19zY2hlZAorX193d19tdXRl eF9raWxsKHN0cnVjdCBtdXRleCAqbG9jaywgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3d19jdHgp Cit7CisJaWYgKHd3X2N0eC0+YWNxdWlyZWQgPiAwKSB7CisjaWZkZWYgQ09ORklHX0RFQlVHX01V VEVYRVMKKwkJc3RydWN0IHd3X211dGV4ICp3dzsKKworCQl3dyA9IGNvbnRhaW5lcl9vZihsb2Nr LCBzdHJ1Y3Qgd3dfbXV0ZXgsIGJhc2UpOworCQlERUJVR19MT0NLU19XQVJOX09OKHd3X2N0eC0+ Y29udGVuZGluZ19sb2NrKTsKKwkJd3dfY3R4LT5jb250ZW5kaW5nX2xvY2sgPSB3dzsKKyNlbmRp ZgorCQlyZXR1cm4gLUVERUFETEs7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAqIENo ZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBraWxsIHRoZSB0cmFuc2FjdGlvbiBmb3IgdGhlIGN1cnJl bnQgbG9jayBhY3F1aXJlLgorICoKKyAqIFdhaXQtRGllOiBJZiB3ZSdyZSB0cnlpbmcgdG8gYWNx dWlyZSBhIGxvY2sgYWxyZWFkeSBoZWxkIGJ5IGFuIG9sZGVyCisgKiAgICAgICAgICAgY29udGV4 dCwga2lsbCBvdXJzZWx2ZXMuCisgKgorICogU2luY2UgX193d19tdXRleF9hZGRfd2FpdGVyKCkg b3JkZXJzIHRoZSB3YWl0LWxpc3Qgb24gc3RhbXAsIHdlIG9ubHkgaGF2ZSB0bworICogbG9vayBh dCB3YWl0ZXJzIGJlZm9yZSB1cyBpbiB0aGUgd2FpdC1saXN0LgorICovCiBzdGF0aWMgaW5saW5l IGludCBfX3NjaGVkCi1fX3d3X211dGV4X2xvY2tfY2hlY2tfc3RhbXAoc3RydWN0IG11dGV4ICps b2NrLCBzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCi0JCQkgICAgc3RydWN0IHd3X2FjcXVp cmVfY3R4ICpjdHgpCitfX3d3X211dGV4X2NoZWNrX2tpbGwoc3RydWN0IG11dGV4ICpsb2NrLCBz dHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCisJCSAgICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0 eCAqY3R4KQogewogCXN0cnVjdCB3d19tdXRleCAqd3cgPSBjb250YWluZXJfb2YobG9jaywgc3Ry dWN0IHd3X211dGV4LCBiYXNlKTsKIAlzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmhvbGRfY3R4ID0g UkVBRF9PTkNFKHd3LT5jdHgpOwogCXN0cnVjdCBtdXRleF93YWl0ZXIgKmN1cjsKIAorCWlmIChj dHgtPmFjcXVpcmVkID09IDApCisJCXJldHVybiAwOworCiAJaWYgKGhvbGRfY3R4ICYmIF9fd3df Y3R4X3N0YW1wX2FmdGVyKGN0eCwgaG9sZF9jdHgpKQotCQlnb3RvIGRlYWRsb2NrOworCQlyZXR1 cm4gX193d19tdXRleF9raWxsKGxvY2ssIGN0eCk7CiAKIAkvKgogCSAqIElmIHRoZXJlIGlzIGEg d2FpdGVyIGluIGZyb250IG9mIHVzIHRoYXQgaGFzIGEgY29udGV4dCwgdGhlbiBpdHMKLQkgKiBz dGFtcCBpcyBlYXJsaWVyIHRoYW4gb3VycyBhbmQgd2UgbXVzdCBiYWNrIG9mZi4KKwkgKiBzdGFt cCBpcyBlYXJsaWVyIHRoYW4gb3VycyBhbmQgd2UgbXVzdCBraWxsIG91cnNlbGYuCiAJICovCiAJ Y3VyID0gd2FpdGVyOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmV2ZXJzZShjdXIs ICZsb2NrLT53YWl0X2xpc3QsIGxpc3QpIHsKLQkJaWYgKGN1ci0+d3dfY3R4KQotCQkJZ290byBk ZWFkbG9jazsKKwkJaWYgKCFjdXItPnd3X2N0eCkKKwkJCWNvbnRpbnVlOworCisJCXJldHVybiBf X3d3X211dGV4X2tpbGwobG9jaywgY3R4KTsKIAl9CiAKIAlyZXR1cm4gMDsKLQotZGVhZGxvY2s6 Ci0jaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKLQlERUJVR19MT0NLU19XQVJOX09OKGN0eC0+ Y29udGVuZGluZ19sb2NrKTsKLQljdHgtPmNvbnRlbmRpbmdfbG9jayA9IHd3OwotI2VuZGlmCi0J cmV0dXJuIC1FREVBRExLOwogfQogCisvKgorICogQWRkIEB3YWl0ZXIgdG8gdGhlIHdhaXQtbGlz dCwga2VlcCB0aGUgd2FpdC1saXN0IG9yZGVyZWQgYnkgc3RhbXAsIHNtYWxsZXN0CisgKiBmaXJz dC4gU3VjaCB0aGF0IG9sZGVyIGNvbnRleHRzIGFyZSBwcmVmZXJyZWQgdG8gYWNxdWlyZSB0aGUg bG9jayBvdmVyCisgKiB5b3VuZ2VyIGNvbnRleHRzLgorICoKKyAqIFdhaXRlcnMgd2l0aG91dCBj b250ZXh0IGFyZSBpbnRlcnNwZXJzZWQgaW4gRklGTyBvcmRlci4KKyAqCisgKiBGdXJ0aGVybW9y ZSwgZm9yIFdhaXQtRGllIGtpbGwgb3Vyc2VsZiBpbW1lZGlhdGVseSB3aGVuIHBvc3NpYmxlICh0 aGVyZSBhcmUKKyAqIG9sZGVyIGNvbnRleHRzIGFscmVhZHkgd2FpdGluZykgdG8gYXZvaWQgdW5u ZWNlc3Nhcnkgd2FpdGluZy4KKyAqLwogc3RhdGljIGlubGluZSBpbnQgX19zY2hlZAogX193d19t dXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKIAkJICAgICAgc3Ry dWN0IG11dGV4ICpsb2NrLApAQCAtNjkyLDcgKzc0NCw3IEBAIF9fd3dfbXV0ZXhfYWRkX3dhaXRl cihzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCiAJLyoKIAkgKiBBZGQgdGhlIHdhaXRlciBi ZWZvcmUgdGhlIGZpcnN0IHdhaXRlciB3aXRoIGEgaGlnaGVyIHN0YW1wLgogCSAqIFdhaXRlcnMg d2l0aG91dCBhIGNvbnRleHQgYXJlIHNraXBwZWQgdG8gYXZvaWQgc3RhcnZpbmcKLQkgKiB0aGVt LgorCSAqIHRoZW0uIFdhaXQtRGllIHdhaXRlcnMgbWF5IGRpZSBoZXJlLgogCSAqLwogCXBvcyA9 ICZsb2NrLT53YWl0X2xpc3Q7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKGN1ciwgJmxv Y2stPndhaXRfbGlzdCwgbGlzdCkgewpAQCAtNzAwLDM0ICs3NTIsMjcgQEAgX193d19tdXRleF9h ZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKIAkJCWNvbnRpbnVlOwogCiAJ CWlmIChfX3d3X2N0eF9zdGFtcF9hZnRlcih3d19jdHgsIGN1ci0+d3dfY3R4KSkgewotCQkJLyog QmFjayBvZmYgaW1tZWRpYXRlbHkgaWYgbmVjZXNzYXJ5LiAqLwotCQkJaWYgKHd3X2N0eC0+YWNx dWlyZWQgPiAwKSB7Ci0jaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKLQkJCQlzdHJ1Y3Qgd3df bXV0ZXggKnd3OworCQkJLyoKKwkJCSAqIFdhaXQtRGllOiBpZiB3ZSBmaW5kIGFuIG9sZGVyIGNv bnRleHQgd2FpdGluZywgdGhlcmUKKwkJCSAqIGlzIG5vIHBvaW50IGluIHF1ZXVlaW5nIGJlaGlu ZCBpdCwgYXMgd2UnZCBoYXZlIHRvCisJCQkgKiBkaWUgdGhlIG1vbWVudCBpdCB3b3VsZCBhY3F1 aXJlIHRoZSBsb2NrLgorCQkJICovCisJCQlpbnQgcmV0ID0gX193d19tdXRleF9raWxsKGxvY2ss IHd3X2N0eCk7CiAKLQkJCQl3dyA9IGNvbnRhaW5lcl9vZihsb2NrLCBzdHJ1Y3Qgd3dfbXV0ZXgs IGJhc2UpOwotCQkJCURFQlVHX0xPQ0tTX1dBUk5fT04od3dfY3R4LT5jb250ZW5kaW5nX2xvY2sp OwotCQkJCXd3X2N0eC0+Y29udGVuZGluZ19sb2NrID0gd3c7Ci0jZW5kaWYKLQkJCQlyZXR1cm4g LUVERUFETEs7Ci0JCQl9CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CiAKIAkJCWJyZWFr OwogCQl9CiAKIAkJcG9zID0gJmN1ci0+bGlzdDsKIAotCQkvKgotCQkgKiBXYWtlIHVwIHRoZSB3 YWl0ZXIgc28gdGhhdCBpdCBnZXRzIGEgY2hhbmNlIHRvIGJhY2sKLQkJICogb2ZmLgotCQkgKi8K LQkJaWYgKGN1ci0+d3dfY3R4LT5hY3F1aXJlZCA+IDApIHsKLQkJCWRlYnVnX211dGV4X3dha2Vf d2FpdGVyKGxvY2ssIGN1cik7Ci0JCQl3YWtlX3VwX3Byb2Nlc3MoY3VyLT50YXNrKTsKLQkJfQor CQkvKiBXYWl0LURpZTogZW5zdXJlIHlvdW5nZXIgd2FpdGVycyBkaWUuICovCisJCV9fd3dfbXV0 ZXhfZGllKGxvY2ssIGN1ciwgd3dfY3R4KTsKIAl9CiAKIAlsaXN0X2FkZF90YWlsKCZ3YWl0ZXIt Pmxpc3QsIHBvcyk7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzcxLDcgKzgxNiw3IEBAIF9fbXV0 ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0YXRlLCB1bnNpZ25lZCBp bnQgc3ViY2xhc3MsCiAJICovCiAJaWYgKF9fbXV0ZXhfdHJ5bG9jayhsb2NrKSkgewogCQlpZiAo dXNlX3d3X2N0eCAmJiB3d19jdHgpCi0JCQlfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihs b2NrLCB3d19jdHgpOworCQkJX193d19tdXRleF9jaGVja193YWl0ZXJzKGxvY2ssIHd3X2N0eCk7 CiAKIAkJZ290byBza2lwX3dhaXQ7CiAJfQpAQCAtNzg5LDEwICs4MzQsMTMgQEAgX19tdXRleF9s b2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBz dWJjbGFzcywKIAkJd2FpdGVyLnd3X2N0eCA9IE1VVEVYX1BPSVNPTl9XV19DVFg7CiAjZW5kaWYK IAl9IGVsc2UgewotCQkvKiBBZGQgaW4gc3RhbXAgb3JkZXIsIHdha2luZyB1cCB3YWl0ZXJzIHRo YXQgbXVzdCBiYWNrIG9mZi4gKi8KKwkJLyoKKwkJICogQWRkIGluIHN0YW1wIG9yZGVyLCB3YWtp bmcgdXAgd2FpdGVycyB0aGF0IG11c3Qga2lsbAorCQkgKiB0aGVtc2VsdmVzLgorCQkgKi8KIAkJ cmV0ID0gX193d19tdXRleF9hZGRfd2FpdGVyKCZ3YWl0ZXIsIGxvY2ssIHd3X2N0eCk7CiAJCWlm IChyZXQpCi0JCQlnb3RvIGVycl9lYXJseV9iYWNrb2ZmOworCQkJZ290byBlcnJfZWFybHlfa2ls bDsKIAogCQl3YWl0ZXIud3dfY3R4ID0gd3dfY3R4OwogCX0KQEAgLTgxNCw3ICs4NjIsNyBAQCBf X211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWdu ZWQgaW50IHN1YmNsYXNzLAogCQkJZ290byBhY3F1aXJlZDsKIAogCQkvKgotCQkgKiBDaGVjayBm b3Igc2lnbmFscyBhbmQgd291bmQgY29uZGl0aW9ucyB3aGlsZSBob2xkaW5nCisJCSAqIENoZWNr IGZvciBzaWduYWxzIGFuZCBraWxsIGNvbmRpdGlvbnMgd2hpbGUgaG9sZGluZwogCQkgKiB3YWl0 X2xvY2suIFRoaXMgZW5zdXJlcyB0aGUgbG9jayBjYW5jZWxsYXRpb24gaXMgb3JkZXJlZAogCQkg KiBhZ2FpbnN0IG11dGV4X3VubG9jaygpIGFuZCB3YWtlLXVwcyBkbyBub3QgZ28gbWlzc2luZy4K IAkJICovCkBAIC04MjMsOCArODcxLDggQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0 ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAkJCWdvdG8gZXJy OwogCQl9CiAKLQkJaWYgKHVzZV93d19jdHggJiYgd3dfY3R4ICYmIHd3X2N0eC0+YWNxdWlyZWQg PiAwKSB7Ci0JCQlyZXQgPSBfX3d3X211dGV4X2xvY2tfY2hlY2tfc3RhbXAobG9jaywgJndhaXRl ciwgd3dfY3R4KTsKKwkJaWYgKHVzZV93d19jdHggJiYgd3dfY3R4KSB7CisJCQlyZXQgPSBfX3d3 X211dGV4X2NoZWNrX2tpbGwobG9jaywgJndhaXRlciwgd3dfY3R4KTsKIAkJCWlmIChyZXQpCiAJ CQkJZ290byBlcnI7CiAJCX0KQEAgLTg2OSw3ICs5MTcsNyBAQCBfX211dGV4X2xvY2tfY29tbW9u KHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAog CWxvY2tfYWNxdWlyZWQoJmxvY2stPmRlcF9tYXAsIGlwKTsKIAogCWlmICh1c2Vfd3dfY3R4ICYm IHd3X2N0eCkKLQkJd3dfbXV0ZXhfc2V0X2NvbnRleHRfc2xvd3BhdGgod3csIHd3X2N0eCk7CisJ CXd3X211dGV4X2xvY2tfYWNxdWlyZWQod3csIHd3X2N0eCk7CiAKIAlzcGluX3VubG9jaygmbG9j ay0+d2FpdF9sb2NrKTsKIAlwcmVlbXB0X2VuYWJsZSgpOwpAQCAtODc4LDcgKzkyNiw3IEBAIF9f bXV0ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0YXRlLCB1bnNpZ25l ZCBpbnQgc3ViY2xhc3MsCiBlcnI6CiAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcp OwogCW11dGV4X3JlbW92ZV93YWl0ZXIobG9jaywgJndhaXRlciwgY3VycmVudCk7Ci1lcnJfZWFy bHlfYmFja29mZjoKK2Vycl9lYXJseV9raWxsOgogCXNwaW5fdW5sb2NrKCZsb2NrLT53YWl0X2xv Y2spOwogCWRlYnVnX211dGV4X2ZyZWVfd2FpdGVyKCZ3YWl0ZXIpOwogCW11dGV4X3JlbGVhc2Uo JmxvY2stPmRlcF9tYXAsIDEsIGlwKTsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==