From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 6/9] x86/pagewalk: Re-implement the pagetable walker Date: Thu, 16 Mar 2017 16:31:40 +0000 Message-ID: <1489681903-28119-7-git-send-email-andrew.cooper3@citrix.com> References: <1489681903-28119-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489681903-28119-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhlIGV4aXN0aW5nIHBhZ2V0YWJsZSB3YWxrZXIgaGFzIGNvbXBsaWNhdGVkIHJldHVybiBzZW1h bnRpY3MsIHdoaWNoIHNxdWVlemUKbXVsdGlwbGUgcGllY2VzIG9mIGluZm9ybWF0aW9uIGludG8g c2luZ2xlIGludGVnZXIuICBUaGlzIHdvdWxkIGJlIGZpbmUgaWYgdGhlCmluZm9ybWF0aW9uIGRp ZG4ndCBvdmVybGFwLCBidXQgaXQgZG9lcy4KClNwZWNpZmljYWxseSwgX1BBR0VfSU5WQUxJRF9C SVRTIGZvciAzLWxldmVsIGd1ZXN0cyBhbGlhcyBfUEFHRV9QQUdFRCBhbmQKX1BBR0VfU0hBUkVE LiAgQSBndWVzdCB3aGljaCBjb25zdHJ1Y3RzIGEgUFRFIHdpdGggYml0cyA1MiBvciA1MyBzZXQg KHRoZQpzdGFydCBvZiB0aGUgdXBwZXIgc29mdHdhcmUtYXZhaWxhYmxlIHJhbmdlKSB3aWxsIGNy ZWF0ZSBhIHZpcnR1YWwgYWRkcmVzcwp3aGljaCwgd2hlbiB3YWxrZWQgYnkgWGVuLCB0cmlja3Mg WGVuIGludG8gYmVsaWV2aW5nIHRoZSBmcmFtZSBpcyBwYWdlZCBvcgpzaGFyZWQuICBUaGlzIGJl aGF2aW91ciB3YXMgaW50cm9kdWNlZCBieSBYU0EtMTczIChjL3MgOGIxNzY0OCkuCgpJdCBpcyBh bHNvIGNvbXBsaWNhdGVkIHRvIHR1cm4gcmMgYmFjayBpbnRvIGEgbm9ybWFsIHBhZ2VmYXVsdCBl cnJvciBjb2RlLgpJbnN0ZWFkLCBjaGFuZ2UgdGhlIGNhbGxpbmcgc2VtYW50aWNzIHRvIHJldHVy biBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzLAphbmQgaGF2ZSB0aGUgZnVuY3Rpb24gYWNj dW11bGF0ZSBhIHJlYWwgcGFnZWZhdWx0IGVycm9yIGNvZGUgYXMgaXQgZ29lcwooaW5jbHVkaW5n IHN5bnRoZXRpYyBlcnJvciBjb2Rlcywgd2hpY2ggZG8gbm90IGFsaWFzIGhhcmR3YXJlIG9uZXMp LiAgVGhpcwpyZXF1aXJlcyBhbiBlcXVpdmFsZW50IGFkanVzdG1lbnQgdG8gbWFwX2RvbWFpbl9n Zm4oKS4KCklzc3VlcyBmaXhlZDoKICogMi1sZXZlbCBQU0UzNiBzdXBlcnBhZ2VzIG5vdyByZXR1 cm4gdGhlIGNvcnJlY3QgdHJhbnNsYXRpb24uCiAqIDItbGV2ZWwgTDIgc3VwZXJwYWdlcyB3aXRo b3V0IENSMC5QU0Ugbm93IHJldHVybiB0aGUgY29ycmVjdCB0cmFuc2xhdGlvbi4KICogU01FUCBu b3cgaW5oaWJpdHMgYSB1c2VyIGluc3RydWN0aW9uIGZldGNoIGV2ZW4gaWYgTlggaXNuJ3QgYWN0 aXZlLgogKiBTdXBlcnZpc29yIHdyaXRlcyB3aXRob3V0IENSMC5XUCBub3cgc2V0IHRoZSBsZWFm IGRpcnR5IGJpdC4KICogTDRlLl9QQUdFX0dMT0JBTCBpcyBzdHJpY3RseSByZXNlcnZlZCBvbiBB TUQuCiAqIDMtbGV2ZWwgbDMgZW50cmllcyBoYXZlIGFsbCByZXNlcnZlZCBiaXRzIGNoZWNrZWQu CiAqIDMtbGV2ZWwgZW50cmllcyBjYW4gbm8gbG9uZ2VyIGFsaWFzIFhlbidzIGlkZWEgb2YgcGFn ZWQgb3Igc2hhcmVkLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpSZXZp ZXdlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgpSZXZpZXdl ZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9t bS9ndWVzdF93YWxrLmMgICAgICB8IDQ0OSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMgIHwgIDIxICstCiB4ZW4v YXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYyAgfCAgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9w Mm0uYyAgICAgICAgICAgICB8ICAxNyArLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5j ICAgIHwgIDI3ICstLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oICAgIHwgIDYyICsr KystLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCAgICAgICAgIHwgICAyICstCiB4ZW4vaW5j bHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgfCAgIDMgLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9w cm9jZXNzb3IuaCAgIHwgICAyICsKIHhlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3BhZ2UuaCB8 ICAgNiAtCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMDMgaW5zZXJ0aW9ucygrKSwgMjg4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgYi94ZW4vYXJj aC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCmluZGV4IDExZjRjNWQuLmJkYjUyZDkgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2d1ZXN0 X3dhbGsuYwpAQCAtMzIsNDQgKzMyLDYgQEAgYXNtKCIuZmlsZSBcIiIgX19PQkpFQ1RfRklMRV9f ICJcIiIpOwogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNtL2d1ZXN0X3B0Lmg+ CiAKLWV4dGVybiBjb25zdCB1aW50MzJfdCBnd19wYWdlX2ZsYWdzW107Ci0jaWYgR1VFU1RfUEFH SU5HX0xFVkVMUyA9PSBDT05GSUdfUEFHSU5HX0xFVkVMUwotY29uc3QgdWludDMyX3QgZ3dfcGFn ZV9mbGFnc1tdID0gewotICAgIC8qIEkvRiAtICBVc3IgV3IgKi8KLSAgICAvKiAwICAgMCAgIDAg ICAwICovIF9QQUdFX1BSRVNFTlQsCi0gICAgLyogMCAgIDAgICAwICAgMSAqLyBfUEFHRV9QUkVT RU5UfF9QQUdFX1JXLAotICAgIC8qIDAgICAwICAgMSAgIDAgKi8gX1BBR0VfUFJFU0VOVHxfUEFH RV9VU0VSLAotICAgIC8qIDAgICAwICAgMSAgIDEgKi8gX1BBR0VfUFJFU0VOVHxfUEFHRV9SV3xf UEFHRV9VU0VSLAotICAgIC8qIDAgICAxICAgMCAgIDAgKi8gX1BBR0VfUFJFU0VOVCwKLSAgICAv KiAwICAgMSAgIDAgICAxICovIF9QQUdFX1BSRVNFTlR8X1BBR0VfUlcsCi0gICAgLyogMCAgIDEg ICAxICAgMCAqLyBfUEFHRV9QUkVTRU5UfF9QQUdFX1VTRVIsCi0gICAgLyogMCAgIDEgICAxICAg MSAqLyBfUEFHRV9QUkVTRU5UfF9QQUdFX1JXfF9QQUdFX1VTRVIsCi0gICAgLyogMSAgIDAgICAw ICAgMCAqLyBfUEFHRV9QUkVTRU5UfF9QQUdFX05YX0JJVCwKLSAgICAvKiAxICAgMCAgIDAgICAx ICovIF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0VfTlhfQklULAotICAgIC8qIDEgICAwICAg MSAgIDAgKi8gX1BBR0VfUFJFU0VOVHxfUEFHRV9VU0VSfF9QQUdFX05YX0JJVCwKLSAgICAvKiAx ICAgMCAgIDEgICAxICovIF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0VfVVNFUnxfUEFHRV9O WF9CSVQsCi0gICAgLyogMSAgIDEgICAwICAgMCAqLyBfUEFHRV9QUkVTRU5UfF9QQUdFX05YX0JJ VCwKLSAgICAvKiAxICAgMSAgIDAgICAxICovIF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0Vf TlhfQklULAotICAgIC8qIDEgICAxICAgMSAgIDAgKi8gX1BBR0VfUFJFU0VOVHxfUEFHRV9VU0VS fF9QQUdFX05YX0JJVCwKLSAgICAvKiAxICAgMSAgIDEgICAxICovIF9QQUdFX1BSRVNFTlR8X1BB R0VfUld8X1BBR0VfVVNFUnxfUEFHRV9OWF9CSVQsCi19OwotI2VuZGlmCi0KLS8qIEZsYWdzIHRo YXQgYXJlIG5lZWRlZCBpbiBhIHBhZ2V0YWJsZSBlbnRyeSwgd2l0aCB0aGUgc2Vuc2Ugb2YgTlgg aW52ZXJ0ZWQgKi8KLXN0YXRpYyB1aW50MzJfdCBtYW5kYXRvcnlfZmxhZ3Moc3RydWN0IHZjcHUg KnYsIHVpbnQzMl90IHBmZWMpIAotewotICAgIC8qIERvbid0IGRlbWFuZCBub3QtTlggaWYgdGhl IENQVSB3b3VsZG4ndCBlbmZvcmNlIGl0LiAqLwotICAgIGlmICggIWd1ZXN0X3N1cHBvcnRzX254 KHYpICkKLSAgICAgICAgcGZlYyAmPSB+UEZFQ19pbnNuX2ZldGNoOwotCi0gICAgLyogRG9uJ3Qg ZGVtYW5kIFIvVyBpZiB0aGUgQ1BVIHdvdWxkbid0IGVuZm9yY2UgaXQuICovCi0gICAgaWYgKCBp c19odm1fdmNwdSh2KSAmJiB1bmxpa2VseSghaHZtX3dwX2VuYWJsZWQodikpIAotICAgICAgICAg JiYgIShwZmVjICYgUEZFQ191c2VyX21vZGUpICkKLSAgICAgICAgcGZlYyAmPSB+UEZFQ193cml0 ZV9hY2Nlc3M7Ci0KLSAgICByZXR1cm4gZ3dfcGFnZV9mbGFnc1socGZlYyAmIDB4MWYpID4+IDFd IHwgX1BBR0VfSU5WQUxJRF9CSVRTOwotfQotCiAvKiBNb2RpZnkgYSBndWVzdCBwYWdldGFibGUg ZW50cnkgdG8gc2V0IHRoZSBBY2Nlc3NlZCBhbmQgRGlydHkgYml0cy4KICAqIFJldHVybnMgbm9u LXplcm8gaWYgaXQgYWN0dWFsbHkgd3JpdGVzIHRvIGd1ZXN0IG1lbW9yeS4gKi8KIHN0YXRpYyB1 aW50MzJfdCBzZXRfYWRfYml0cyh2b2lkICpndWVzdF9wLCB2b2lkICp3YWxrX3AsIGludCBzZXRf ZGlydHkpCkBAIC05MCw2MiArNTIsMzMgQEAgc3RhdGljIHVpbnQzMl90IHNldF9hZF9iaXRzKHZv aWQgKmd1ZXN0X3AsIHZvaWQgKndhbGtfcCwgaW50IHNldF9kaXJ0eSkKICAgICByZXR1cm4gMDsK IH0KIAotI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPj0gNAotc3RhdGljIGJvb2xfdCBwa2V5X2Zh dWx0KHN0cnVjdCB2Y3B1ICp2Y3B1LCB1aW50MzJfdCBwZmVjLAotICAgICAgICB1aW50MzJfdCBw dGVfZmxhZ3MsIHVpbnQzMl90IHB0ZV9wa2V5KQotewotICAgIHVpbnQzMl90IHBrcnU7Ci0KLSAg ICAvKiBXaGVuIHBhZ2UgaXNuJ3QgcHJlc2VudCwgIFBLRVkgaXNuJ3QgY2hlY2tlZC4gKi8KLSAg ICBpZiAoICEocGZlYyAmIFBGRUNfcGFnZV9wcmVzZW50KSB8fCBpc19wdl92Y3B1KHZjcHUpICkK LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKgotICAgICAqIFBLVTogIGFkZGl0aW9uYWwgbWVj aGFuaXNtIGJ5IHdoaWNoIHRoZSBwYWdpbmcgY29udHJvbHMKLSAgICAgKiBhY2Nlc3MgdG8gdXNl ci1tb2RlIGFkZHJlc3NlcyBiYXNlZCBvbiB0aGUgdmFsdWUgaW4gdGhlCi0gICAgICogUEtSVSBy ZWdpc3Rlci4gQSBmYXVsdCBpcyBjb25zaWRlcmVkIGFzIGEgUEtVIHZpb2xhdGlvbiBpZiBhbGwK LSAgICAgKiBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWU6Ci0gICAgICogMS5D UjRfUEtFPTEuCi0gICAgICogMi5FRkVSX0xNQT0xLgotICAgICAqIDMuUGFnZSBpcyBwcmVzZW50 IHdpdGggbm8gcmVzZXJ2ZWQgYml0IHZpb2xhdGlvbnMuCi0gICAgICogNC5UaGUgYWNjZXNzIGlz IG5vdCBhbiBpbnN0cnVjdGlvbiBmZXRjaC4KLSAgICAgKiA1LlRoZSBhY2Nlc3MgaXMgdG8gYSB1 c2VyIHBhZ2UuCi0gICAgICogNi5QS1JVLkFEPTEgb3IKLSAgICAgKiAgICAgIHRoZSBhY2Nlc3Mg aXMgYSBkYXRhIHdyaXRlIGFuZCBQS1JVLldEPTEgYW5kCi0gICAgICogICAgICAgICAgZWl0aGVy IENSMC5XUD0xIG9yIGl0IGlzIGEgdXNlciBhY2Nlc3MuCi0gICAgICovCi0gICAgaWYgKCAhaHZt X3BrdV9lbmFibGVkKHZjcHUpIHx8Ci0gICAgICAgICAhaHZtX2xvbmdfbW9kZV9lbmFibGVkKHZj cHUpIHx8Ci0gICAgICAgICAocGZlYyAmIFBGRUNfcmVzZXJ2ZWRfYml0KSB8fAotICAgICAgICAg KHBmZWMgJiBQRkVDX2luc25fZmV0Y2gpIHx8Ci0gICAgICAgICAhKHB0ZV9mbGFncyAmIF9QQUdF X1VTRVIpICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBwa3J1ID0gcmVhZF9wa3J1KCk7Ci0g ICAgaWYgKCB1bmxpa2VseShwa3J1KSApCi0gICAgewotICAgICAgICBib29sX3QgcGtydV9hZCA9 IHJlYWRfcGtydV9hZChwa3J1LCBwdGVfcGtleSk7Ci0gICAgICAgIGJvb2xfdCBwa3J1X3dkID0g cmVhZF9wa3J1X3dkKHBrcnUsIHB0ZV9wa2V5KTsKLQotICAgICAgICAvKiBDb25kaXRpb24gNiAq LwotICAgICAgICBpZiAoIHBrcnVfYWQgfHwKLSAgICAgICAgICAgICAocGtydV93ZCAmJiAocGZl YyAmIFBGRUNfd3JpdGVfYWNjZXNzKSAmJgotICAgICAgICAgICAgICAoaHZtX3dwX2VuYWJsZWQo dmNwdSkgfHwgKHBmZWMgJiBQRkVDX3VzZXJfbW9kZSkpKSApCi0gICAgICAgICAgICByZXR1cm4g MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0vKiBXYWxrIHRoZSBndWVz dCBwYWdldGFibGVzLCBhZnRlciB0aGUgbWFubmVyIG9mIGEgaGFyZHdhcmUgd2Fsa2VyLiAqLwot LyogQmVjYXVzZSB0aGUgd2FsayBpcyBlc3NlbnRpYWxseSByYW5kb20sIGl0IGNhbiBjYXVzZSBh IGRlYWRsb2NrIAotICogd2FybmluZyBpbiB0aGUgcDJtIGxvY2tpbmcgY29kZS4gSGlnaGx5IHVu bGlrZWx5IHRoaXMgaXMgYW4gYWN0dWFsCi0gKiBkZWFkbG9jaywgYmVjYXVzZSB3aG8gd291bGQg d2FsayBwYWdlIHRhYmxlIGluIHRoZSBvcHBvc2l0ZSBvcmRlcj8gKi8KLXVpbnQzMl90CisvKgor ICogV2FsayB0aGUgZ3Vlc3QgcGFnZXRhYmxlcywgYWZ0ZXIgdGhlIG1hbm5lciBvZiBhIGhhcmR3 YXJlIHdhbGtlci4KKyAqCisgKiBUaGlzIGlzIGEgY29uZGVuc2luZyBvZiB0aGUgJ1BhZ2luZycg Y2hhcHRlcnMgZnJvbSBJbnRlbCBhbmQgQU1EIHNvZnR3YXJlCisgKiBtYW51YWxzLiAgUGxlYXNl IHJlZmVyIGNsb3NlbHkgdG8gdGhlbS4KKyAqCisgKiBBIHBhZ2V0YWJsZSB3YWxrIGNvbnNpc3Rz IG9mIHR3byBwYXJ0czoKKyAqICAgMSkgdG8gZmluZCB3aGV0aGVyIGEgdHJhbnNsYXRpb24gZXhp c3RzLCBhbmQKKyAqICAgMikgaWYgYSB0cmFuc2xhdGlvbiBkb2VzIGV4aXN0LCB0byBjaGVjayB3 aGV0aGVyIHRoZSB0cmFuc2xhdGlvbidzIGFjY2VzcworICogICAgICByaWdodHMgcGVybWl0IHRo ZSBhY2Nlc3MuCisgKgorICogQSB0cmFuc2xhdGlvbiBpcyBmb3VuZCBieSBmb2xsb3dpbmcgdGhl IHBhZ2V0YWJsZSBzdHJ1Y3R1cmUgKHN0YXJ0aW5nIGF0CisgKiAlY3IzKSB0byBhIGxlYWYgZW50 cnkgKGFuIEwxIFBURSwgb3IgYSBoaWdoZXIgbGV2ZWwgZW50cnkgd2l0aCBQU0Ugc2V0KQorICog d2hpY2ggaWRlbnRpZmllcyB0aGUgcGh5c2ljYWwgZGVzdGluYXRpb24gb2YgdGhlIGFjY2Vzcy4K KyAqCisgKiBBIHRyYW5zbGF0aW9uIGZyb20gb25lIGxldmVsIHRvIHRoZSBuZXh0IGV4aXN0cyBp ZiB0aGUgUFRFIGlzIGJvdGggcHJlc2VudAorICogYW5kIGhhcyBubyByZXNlcnZlZCBiaXRzIHNl dC4gIElmIHRoZSBwYWdld2FsayBjb3VudGVycyBhIHNpdHVhdGlvbiB3aGVyZSBhCisgKiB0cmFu c2xhdGlvbiBkb2VzIG5vdCBleGlzdCwgdGhlIHdhbGsgc3RvcHMgYXQgdGhhdCBwb2ludC4KKyAq CisgKiBUaGUgYWNjZXNzIHJpZ2h0cyAoTlgsIFVzZXIsIFJXIGJpdHMpIGFyZSBjb2xsZWN0ZWQg YXMgdGhlIHdhbGsgcHJvZ3Jlc3Nlcy4KKyAqIElmIGEgdHJhbnNsYXRpb24gZXhpc3RzLCB0aGUg YWNjdW11bGF0ZWQgYWNjZXNzIHJpZ2h0cyBhcmUgY29tcGFyZWQgdG8gdGhlCisgKiByZXF1ZXN0 ZWQgd2FsaywgdG8gc2VlIHdoZXRoZXIgdGhlIGFjY2VzcyBpcyBwZXJtaXR0ZWQuCisgKi8KK2Jv b2wKIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLAogICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YSwgd2Fsa190ICpndywgCi0g ICAgICAgICAgICAgICAgICB1aW50MzJfdCBwZmVjLCBtZm5fdCB0b3BfbWZuLCB2b2lkICp0b3Bf bWFwKQorICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2FsaywgbWZuX3QgdG9wX21mbiwgdm9p ZCAqdG9wX21hcCkKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHAy bV90eXBlX3QgcDJtdDsKQEAgLTE1NSw2NCArODgsNDQgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3Ry dWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgZ3Vlc3RfbDNlX3QgKmwz cCA9IE5VTEw7CiAgICAgZ3Vlc3RfbDRlX3QgKmw0cDsKICNlbmRpZgotICAgIHVuc2lnbmVkIGlu dCBwa2V5OwotICAgIHVpbnQzMl90IGdmbGFncywgbWZsYWdzLCBpZmxhZ3MsIHJjID0gMDsKLSAg ICBib29sX3Qgc21lcCA9IDAsIHNtYXAgPSAwOworICAgIHVpbnQzMl90IGdmbGFncywgcmM7CiAg ICAgYm9vbF90IHBzZTFHID0gMCwgcHNlMk0gPSAwOwogICAgIHAybV9xdWVyeV90IHF0ID0gUDJN X0FMTE9DIHwgUDJNX1VOU0hBUkU7CiAKLSAgICAvKiBPbmx5IGltcGxpY2l0IHN1cGVydmlzb3Ig ZGF0YSBhY2Nlc3NlcyBleGlzdC4gKi8KLSAgICBBU1NFUlQoIShwZmVjICYgUEZFQ19pbXBsaWNp dCkgfHwKLSAgICAgICAgICAgIShwZmVjICYgKFBGRUNfaW5zbl9mZXRjaHxQRkVDX3VzZXJfbW9k ZSkpKTsKKyNkZWZpbmUgQVJfQUNDVU1fQU5EIChfUEFHRV9VU0VSIHwgX1BBR0VfUlcpCisjZGVm aW5lIEFSX0FDQ1VNX09SICAoX1BBR0VfTlhfQklUKQorICAgIC8qIFN0YXJ0IHdpdGggYWxsIEFO RCBiaXRzIHNldCwgYWxsIE9SIGJpdHMgY2xlYXIuICovCisgICAgdWludDMyX3QgYXIsIGFyX2Fu ZCA9IH4wdSwgYXJfb3IgPSAwOwogCi0gICAgcGVyZmNfaW5jcihndWVzdF93YWxrKTsKLSAgICBt ZW1zZXQoZ3csIDAsIHNpemVvZigqZ3cpKTsKLSAgICBndy0+dmEgPSB2YTsKLQotICAgIC8qIE1h bmRhdG9yeSBiaXRzIHRoYXQgbXVzdCBiZSBzZXQgaW4gZXZlcnkgZW50cnkuICBXZSBpbnZlcnQg TlggYW5kCi0gICAgICogdGhlIGludmFsaWQgYml0cywgdG8gY2FsY3VsYXRlIGFzIGlmIHRoZXJl IHdlcmUgYW4gIlgiIGJpdCB0aGF0Ci0gICAgICogYWxsb3dlZCBhY2Nlc3MuICBXZSB3aWxsIGFj Y3VtdWxhdGUsIGluIHJjLCB0aGUgc2V0IG9mIGZsYWdzIHRoYXQKLSAgICAgKiBhcmUgbWlzc2lu Zy91bndhbnRlZC4gKi8KLSAgICBtZmxhZ3MgPSBtYW5kYXRvcnlfZmxhZ3ModiwgcGZlYyk7Ci0g ICAgaWZsYWdzID0gKF9QQUdFX05YX0JJVCB8IF9QQUdFX0lOVkFMSURfQklUUyk7CisgICAgYm9v bCB3YWxrX29rID0gZmFsc2U7CiAKLSAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgJiYgIShwZmVj ICYgUEZFQ191c2VyX21vZGUpICkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzID0gZ3Vlc3RfY3B1X3VzZXJfcmVncygpOworICAgIC8qCisgICAgICogVE9E TyAtIFdlIHNob3VsZCBBU1NFUlQoKSB0aGF0IG9ubHkgdGhlIGZvbGxvd2luZyBiaXRzIGFyZSBz ZXQgYXMKKyAgICAgKiBpbnB1dHMgdG8gYSBndWVzdCB3YWxrLCBidXQgYSB3aG9sZSBsb2FkIG9m IGNvZGUgY3VycmVudGx5IHBhc3NlcyBpbgorICAgICAqIG90aGVyIFBGRUNfIGNvbnN0YW50cy4K KyAgICAgKi8KKyAgICB3YWxrICY9IChQRkVDX2ltcGxpY2l0IHwgUEZFQ19pbnNuX2ZldGNoIHwg UEZFQ191c2VyX21vZGUgfCBQRkVDX3dyaXRlX2FjY2Vzcyk7CiAKLSAgICAgICAgLyogU01FUDog a2VybmVsLW1vZGUgaW5zdHJ1Y3Rpb24gZmV0Y2hlcyBmcm9tIHVzZXItbW9kZSBtYXBwaW5ncwot ICAgICAgICAgKiBzaG91bGQgZmF1bHQuICBVbmxpa2UgTlggb3IgaW52YWxpZCBiaXRzLCB3ZSdy ZSBsb29raW5nIGZvciBfYWxsXwotICAgICAgICAgKiBlbnRyaWVzIGluIHRoZSB3YWxrIHRvIGhh dmUgX1BBR0VfVVNFUiBzZXQsIHNvIHdlIG5lZWQgdG8gZG8gdGhlCi0gICAgICAgICAqIHdob2xl IHdhbGsgYXMgaWYgaXQgd2VyZSBhIHVzZXItbW9kZSBvbmUgYW5kIHRoZW4gaW52ZXJ0IHRoZSBh bnN3ZXIuICovCi0gICAgICAgIHNtZXAgPSAgaHZtX3NtZXBfZW5hYmxlZCh2KSAmJiAocGZlYyAm IFBGRUNfaW5zbl9mZXRjaCk7CisgICAgLyogT25seSBpbXBsaWNpdCBzdXBlcnZpc29yIGRhdGEg YWNjZXNzZXMgZXhpc3QuICovCisgICAgQVNTRVJUKCEod2FsayAmIFBGRUNfaW1wbGljaXQpIHx8 CisgICAgICAgICAgICEod2FsayAmIChQRkVDX2luc25fZmV0Y2h8UEZFQ191c2VyX21vZGUpKSk7 CiAKLSAgICAgICAgc3dpdGNoICggdi0+YXJjaC5zbWFwX2NoZWNrX3BvbGljeSApCi0gICAgICAg IHsKLSAgICAgICAgY2FzZSBTTUFQX0NIRUNLX0hPTk9SX0NQTF9BQzoKLSAgICAgICAgICAgIC8q Ci0gICAgICAgICAgICAgKiBTTUFQOiBrZXJuZWwtbW9kZSBkYXRhIGFjY2Vzc2VzIGZyb20gdXNl ci1tb2RlIG1hcHBpbmdzCi0gICAgICAgICAgICAgKiBzaG91bGQgZmF1bHQuCi0gICAgICAgICAg ICAgKiBBIGZhdWx0IGlzIGNvbnNpZGVyZWQgYXMgYSBTTUFQIHZpb2xhdGlvbiBpZiB0aGUgZm9s bG93aW5nCi0gICAgICAgICAgICAgKiBjb25kaXRpb25zIGNvbWUgdHJ1ZToKLSAgICAgICAgICAg ICAqICAgLSBYODZfQ1I0X1NNQVAgaXMgc2V0IGluIENSNAotICAgICAgICAgICAgICogICAtIEEg dXNlciBwYWdlIGlzIGFjY2Vzc2VkCi0gICAgICAgICAgICAgKiAgIC0gQ1BMID0gMyBvciBYODZf RUZMQUdTX0FDIGlzIGNsZWFyCi0gICAgICAgICAgICAgKiAgIC0gUGFnZSBmYXVsdCBpbiBrZXJu ZWwgbW9kZQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbWFwID0gaHZtX3NtYXBfZW5h YmxlZCh2KSAmJgotICAgICAgICAgICAgICAgICAgICgoaHZtX2dldF9jcGwodikgPT0gMykgfHwg IShyZWdzLT5lZmxhZ3MgJiBYODZfRUZMQUdTX0FDKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg ICAgICAgY2FzZSBTTUFQX0NIRUNLX0VOQUJMRUQ6Ci0gICAgICAgICAgICBzbWFwID0gaHZtX3Nt YXBfZW5hYmxlZCh2KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg ICAgICAgICAgQVNTRVJUKHYtPmFyY2guc21hcF9jaGVja19wb2xpY3kgPT0gU01BUF9DSEVDS19E SVNBQkxFRCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICAvKgor ICAgICAqIFBGRUNfaW5zbl9mZXRjaCBpcyBvbmx5IHVzZWQgYXMgYW4gaW5wdXQgdG8gcGFnZXRh YmxlIHdhbGtpbmcgaWYgTlggb3IKKyAgICAgKiBTTUVQIGFyZSBlbmFibGVkLiAgT3RoZXJ3aXNl LCBpbnN0cnVjdGlvbiBmZXRjaGVzIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZQorICAgICAqIGZyb20g ZGF0YSByZWFkcy4KKyAgICAgKgorICAgICAqIFRoaXMgcHJvcGVydHkgY2FuIGJlIGRlbW9uc3Ry YXRlZCBvbiByZWFsIGhhcmR3YXJlIGJ5IGhhdmluZyBOWCBhbmQKKyAgICAgKiBTTUVQIGluYWN0 aXZlLCBidXQgU01BUCBhY3RpdmUsIGFuZCBvYnNlcnZpbmcgdGhhdCBFRkxBR1MuQUMgZGV0ZXJt aW5lcworICAgICAqIHdoZXRoZXIgYSBwYWdlZmF1bHQgb2NjdXJlcyBmb3Igc3VwZXJ2aXNvciBl eGVjdXRpb24gb24gdXNlciBtYXBwaW5ncy4KKyAgICAgKi8KKyAgICBpZiAoICEoZ3Vlc3Rfc3Vw cG9ydHNfbngodikgfHwgZ3Vlc3Rfc21lcF9lbmFibGVkKHYpKSApCisgICAgICAgIHdhbGsgJj0g flBGRUNfaW5zbl9mZXRjaDsKIAotICAgIGlmICggc21lcCB8fCBzbWFwICkKLSAgICAgICAgbWZs YWdzIHw9IF9QQUdFX1VTRVI7CisgICAgcGVyZmNfaW5jcihndWVzdF93YWxrKTsKKyAgICBtZW1z ZXQoZ3csIDAsIHNpemVvZigqZ3cpKTsKKyAgICBndy0+dmEgPSB2YTsKKyAgICBndy0+cGZlYyA9 IHdhbGsgJiAoUEZFQ19pbnNuX2ZldGNoIHwgUEZFQ191c2VyX21vZGUgfCBQRkVDX3dyaXRlX2Fj Y2Vzcyk7CiAKICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDMgLyogUEFFIG9yIDY0Li4uICov CiAjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSA0IC8qIDY0LWJpdCBvbmx5Li4uICovCkBAIC0y MjEsMTcgKzEzNCwyMCBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0 IHAybV9kb21haW4gKnAybSwKICAgICBndy0+bDRtZm4gPSB0b3BfbWZuOwogICAgIGw0cCA9IChn dWVzdF9sNGVfdCAqKSB0b3BfbWFwOwogICAgIGd3LT5sNGUgPSBsNHBbZ3Vlc3RfbDRfdGFibGVf b2Zmc2V0KHZhKV07Ci0gICAgZ2ZsYWdzID0gZ3Vlc3RfbDRlX2dldF9mbGFncyhndy0+bDRlKSBe IGlmbGFnczsKLSAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKSB7Ci0gICAgICAg IHJjIHw9IF9QQUdFX1BSRVNFTlQ7CisgICAgZ2ZsYWdzID0gZ3Vlc3RfbDRlX2dldF9mbGFncyhn dy0+bDRlKTsKKyAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICBn b3RvIG91dDsKLSAgICB9Ci0gICAgaWYgKCBnZmxhZ3MgJiBfUEFHRV9QU0UgKQorCisgICAgLyog Q2hlY2sgZm9yIHJlc2VydmVkIGJpdHMuICovCisgICAgaWYgKCBndWVzdF9sNGVfcnN2ZF9iaXRz KHYsIGd3LT5sNGUpICkKICAgICB7Ci0gICAgICAgIHJjIHw9IF9QQUdFX1BTRSB8IF9QQUdFX0lO VkFMSURfQklUOworICAgICAgICBndy0+cGZlYyB8PSBQRkVDX3Jlc2VydmVkX2JpdCB8IFBGRUNf cGFnZV9wcmVzZW50OwogICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gICAgcmMgfD0gKChnZmxh Z3MgJiBtZmxhZ3MpIF4gbWZsYWdzKTsKKworICAgIC8qIEFjY3VtdWxhdGUgbDRlIGFjY2VzcyBy aWdodHMuICovCisgICAgYXJfYW5kICY9IGdmbGFnczsKKyAgICBhcl9vciAgfD0gZ2ZsYWdzOwog CiAgICAgLyogTWFwIHRoZSBsMyB0YWJsZSAqLwogICAgIGwzcCA9IG1hcF9kb21haW5fZ2ZuKHAy bSwgCkBAIC0yNDEsMTcgKzE1NywyOCBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAq diwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAgICAgICAgICAgICAgICAgICAgICBxdCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAmcmMpOyAKICAgICBpZihsM3AgPT0gTlVMTCkKKyAg ICB7CisgICAgICAgIGd3LT5wZmVjIHw9IHJjICYgUEZFQ19zeW50aF9tYXNrOwogICAgICAgICBn b3RvIG91dDsKKyAgICB9CisKICAgICAvKiBHZXQgdGhlIGwzZSBhbmQgY2hlY2sgaXRzIGZsYWdz Ki8KICAgICBndy0+bDNlID0gbDNwW2d1ZXN0X2wzX3RhYmxlX29mZnNldCh2YSldOwotICAgIHBr ZXkgPSBndWVzdF9sM2VfZ2V0X3BrZXkoZ3ctPmwzZSk7Ci0gICAgZ2ZsYWdzID0gZ3Vlc3RfbDNl X2dldF9mbGFncyhndy0+bDNlKSBeIGlmbGFnczsKLSAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0Vf UFJFU0VOVCkgKSB7Ci0gICAgICAgIHJjIHw9IF9QQUdFX1BSRVNFTlQ7CisgICAgZ2ZsYWdzID0g Z3Vlc3RfbDNlX2dldF9mbGFncyhndy0+bDNlKTsKKyAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0Vf UFJFU0VOVCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIC8qIENoZWNrIGZvciByZXNlcnZl ZCBiaXRzLCBpbmNsdWRpbmcgcG9zc2libHkgX1BBR0VfUFNFLiAqLworICAgIGlmICggZ3Vlc3Rf bDNlX3JzdmRfYml0cyh2LCBndy0+bDNlKSApCisgICAgeworICAgICAgICBndy0+cGZlYyB8PSBQ RkVDX3Jlc2VydmVkX2JpdCB8IFBGRUNfcGFnZV9wcmVzZW50OwogICAgICAgICBnb3RvIG91dDsK ICAgICB9Ci0gICAgcmMgfD0gKChnZmxhZ3MgJiBtZmxhZ3MpIF4gbWZsYWdzKTsKICAgICAKKyAg ICAvKiBBY2N1bXVsYXRlIGwzZSBhY2Nlc3MgcmlnaHRzLiAqLworICAgIGFyX2FuZCAmPSBnZmxh Z3M7CisgICAgYXJfb3IgIHw9IGdmbGFnczsKKwogICAgIHBzZTFHID0gISEoZ2ZsYWdzICYgX1BB R0VfUFNFKTsKIAogICAgIGlmICggcHNlMUcgKQpAQCAtMjcyLDI2ICsxOTksMjUgQEAgZ3Vlc3Rf d2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAg ICAgICAgICAvKiBfUEFHRV9QU0VfUEFUIG5vdCBzZXQ6IHJlbW92ZSBfUEFHRV9QQVQgZnJvbSBm bGFncy4gKi8KICAgICAgICAgICAgIGZsYWdzICY9IH5fUEFHRV9QQVQ7CiAKLSAgICAgICAgaWYg KCAhZ3Vlc3Rfc3VwcG9ydHNfbDNfc3VwZXJwYWdlcyhkKSApCi0gICAgICAgICAgICByYyB8PSBf UEFHRV9QU0UgfCBfUEFHRV9JTlZBTElEX0JJVDsKLSAgICAgICAgaWYgKCBnZm5feChzdGFydCkg JiBHVUVTVF9MM19HRk5fTUFTSyAmIH4weDEgKQotICAgICAgICAgICAgcmMgfD0gX1BBR0VfSU5W QUxJRF9CSVRTOwotCiAgICAgICAgIC8qIEluY3JlbWVudCB0aGUgcGZuIGJ5IHRoZSByaWdodCBu dW1iZXIgb2YgNGsgcGFnZXMuICovCiAgICAgICAgIHN0YXJ0ID0gX2dmbigoZ2ZuX3goc3RhcnQp ICYgfkdVRVNUX0wzX0dGTl9NQVNLKSArCiAgICAgICAgICAgICAgICAgICAgICAoKHZhID4+IFBB R0VfU0hJRlQpICYgR1VFU1RfTDNfR0ZOX01BU0spKTsKICAgICAgICAgZ3ctPmwxZSA9IGd1ZXN0 X2wxZV9mcm9tX2dmbihzdGFydCwgZmxhZ3MpOwogICAgICAgICBndy0+bDJtZm4gPSBndy0+bDFt Zm4gPSBJTlZBTElEX01GTjsKLSAgICAgICAgZ290byBzZXRfYWQ7CisgICAgICAgIGdvdG8gbGVh ZjsKICAgICB9CiAKICNlbHNlIC8qIFBBRSBvbmx5Li4uICovCiAKICAgICAvKiBHZXQgdGhlIGwz ZSBhbmQgY2hlY2sgaXRzIGZsYWcgKi8KICAgICBndy0+bDNlID0gKChndWVzdF9sM2VfdCAqKSB0 b3BfbWFwKVtndWVzdF9sM190YWJsZV9vZmZzZXQodmEpXTsKLSAgICBpZiAoICEoZ3Vlc3RfbDNl X2dldF9mbGFncyhndy0+bDNlKSAmIF9QQUdFX1BSRVNFTlQpICkgCisgICAgZ2ZsYWdzID0gZ3Vl c3RfbDNlX2dldF9mbGFncyhndy0+bDNlKTsKKyAgICBpZiAoICEoZ2ZsYWdzICYgX1BBR0VfUFJF U0VOVCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGlmICggZ3Vlc3RfbDNlX3JzdmRfYml0 cyh2LCBndy0+bDNlKSApCiAgICAgewotICAgICAgICByYyB8PSBfUEFHRV9QUkVTRU5UOworICAg ICAgICBndy0+cGZlYyB8PSBQRkVDX3Jlc2VydmVkX2JpdCB8IFBGRUNfcGFnZV9wcmVzZW50Owog ICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTMwNSw3ICsyMzEsMTEgQEAgZ3Vlc3Rfd2Fs a190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgcXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJnJjKTsgCiAg ICAgaWYobDJwID09IE5VTEwpCisgICAgeworICAgICAgICBndy0+cGZlYyB8PSByYyAmIFBGRUNf c3ludGhfbWFzazsKICAgICAgICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgLyogR2V0IHRoZSBs MmUgKi8KICAgICBndy0+bDJlID0gbDJwW2d1ZXN0X2wyX3RhYmxlX29mZnNldCh2YSldOwogCkBA IC0zMTgsMTUgKzI0OCwzMiBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3Ry dWN0IHAybV9kb21haW4gKnAybSwKIAogI2VuZGlmIC8qIEFsbCBsZXZlbHMuLi4gKi8KIAotICAg IHBrZXkgPSBndWVzdF9sMmVfZ2V0X3BrZXkoZ3ctPmwyZSk7Ci0gICAgZ2ZsYWdzID0gZ3Vlc3Rf bDJlX2dldF9mbGFncyhndy0+bDJlKSBeIGlmbGFnczsKLSAgICBpZiAoICEoZ2ZsYWdzICYgX1BB R0VfUFJFU0VOVCkgKSB7Ci0gICAgICAgIHJjIHw9IF9QQUdFX1BSRVNFTlQ7CisgICAgLyogQ2hl Y2sgdGhlIGwyZSBmbGFncy4gKi8KKyAgICBnZmxhZ3MgPSBndWVzdF9sMmVfZ2V0X2ZsYWdzKGd3 LT5sMmUpOworICAgIGlmICggIShnZmxhZ3MgJiBfUEFHRV9QUkVTRU5UKSApCisgICAgICAgIGdv dG8gb3V0OworCisgICAgLyoKKyAgICAgKiBJbiAyLWxldmVsIHBhZ2luZyB3aXRob3V0IENSMC5Q U0UsIHRoZXJlIGFyZSBubyByZXNlcnZlZCBiaXRzLCBhbmQgdGhlCisgICAgICogUEFUL1BTRSBi aXQgaXMgaWdub3JlZC4KKyAgICAgKi8KKyAgICBpZiAoIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0g MiAmJiAhZ3Vlc3Rfc3VwcG9ydHNfbDJfc3VwZXJwYWdlcyh2KSApCisgICAgeworICAgICAgICBn dy0+bDJlLmwyICY9IH5fUEFHRV9QU0U7CisgICAgICAgIGdmbGFncyAmPSB+X1BBR0VfUFNFOwor ICAgIH0KKyAgICAvKiBlbHNlIGNoZWNrIGZvciByZXNlcnZlZCBiaXRzLCBpbmNsdWRpbmcgcG9z c2libHkgX1BBR0VfUFNFLiAqLworICAgIGVsc2UgaWYgKCBndWVzdF9sMmVfcnN2ZF9iaXRzKHYs IGd3LT5sMmUpICkKKyAgICB7CisgICAgICAgIGd3LT5wZmVjIHw9IFBGRUNfcmVzZXJ2ZWRfYml0 IHwgUEZFQ19wYWdlX3ByZXNlbnQ7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KLSAgICByYyB8 PSAoKGdmbGFncyAmIG1mbGFncykgXiBtZmxhZ3MpOwogCi0gICAgcHNlMk0gPSAoZ2ZsYWdzICYg X1BBR0VfUFNFKSAmJiBndWVzdF9zdXBwb3J0c19sMl9zdXBlcnBhZ2VzKHYpOworICAgIC8qIEFj Y3VtdWxhdGUgbDJlIGFjY2VzcyByaWdodHMuICovCisgICAgYXJfYW5kICY9IGdmbGFnczsKKyAg ICBhcl9vciAgfD0gZ2ZsYWdzOworCisgICAgcHNlMk0gPSAhIShnZmxhZ3MgJiBfUEFHRV9QU0Up OwogCiAgICAgaWYgKCBwc2UyTSApCiAgICAgewpAQCAtMzM0LDcgKzI4MSwxMSBAQCBndWVzdF93 YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAg ICAgICogbm8gZ3Vlc3QgbDFlLiAgV2UgbWFrZSBvbmUgdXAgc28gdGhhdCB0aGUgcHJvcGFnYXRp b24gY29kZQogICAgICAgICAgKiBjYW4gZ2VuZXJhdGUgYSBzaGFkb3cgbDEgdGFibGUuICBTdGFy dCB3aXRoIHRoZSBnZm4gb2YgdGhlIAogICAgICAgICAgKiBmaXJzdCA0ay1wYWdlIG9mIHRoZSBz dXBlcnBhZ2UuICovCisjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA9PSAyCisgICAgICAgIGdmbl90 IHN0YXJ0ID0gX2dmbih1bmZvbGRfcHNlMzYoZ3ctPmwyZS5sMikgPj4gUEFHRV9TSElGVCk7Cisj ZWxzZQogICAgICAgICBnZm5fdCBzdGFydCA9IGd1ZXN0X2wyZV9nZXRfZ2ZuKGd3LT5sMmUpOwor I2VuZGlmCiAgICAgICAgIC8qIEdyYW50IGZ1bGwgYWNjZXNzIGluIHRoZSBsMWUsIHNpbmNlIGFs bCB0aGUgZ3Vlc3QgZW50cnkncyAKICAgICAgICAgICogYWNjZXNzIGNvbnRyb2xzIGFyZSBlbmZv cmNlZCBpbiB0aGUgc2hhZG93IGwyZS4gKi8KICAgICAgICAgaW50IGZsYWdzID0gKF9QQUdFX1BS RVNFTlR8X1BBR0VfVVNFUnxfUEFHRV9SV3wKQEAgLTM0OCw3MCArMjk5LDEzNyBAQCBndWVzdF93 YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAg ICAgICAgIC8qIF9QQUdFX1BTRV9QQVQgbm90IHNldDogcmVtb3ZlIF9QQUdFX1BBVCBmcm9tIGZs YWdzLiAqLwogICAgICAgICAgICAgZmxhZ3MgJj0gfl9QQUdFX1BBVDsKIAotICAgICAgICBpZiAo IGdmbl94KHN0YXJ0KSAmIEdVRVNUX0wyX0dGTl9NQVNLICYgfjB4MSApCi0gICAgICAgICAgICBy YyB8PSBfUEFHRV9JTlZBTElEX0JJVFM7Ci0KLSAgICAgICAgLyogSW5jcmVtZW50IHRoZSBwZm4g YnkgdGhlIHJpZ2h0IG51bWJlciBvZiA0ayBwYWdlcy4gIAotICAgICAgICAgKiBNYXNrIG91dCBQ QVQgYW5kIGludmFsaWQgYml0cy4gKi8KKyAgICAgICAgLyogSW5jcmVtZW50IHRoZSBwZm4gYnkg dGhlIHJpZ2h0IG51bWJlciBvZiA0ayBwYWdlcy4gKi8KICAgICAgICAgc3RhcnQgPSBfZ2ZuKChn Zm5feChzdGFydCkgJiB+R1VFU1RfTDJfR0ZOX01BU0spICsKICAgICAgICAgICAgICAgICAgICAg IGd1ZXN0X2wxX3RhYmxlX29mZnNldCh2YSkpOworI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0g MgorICAgICAgICAgLyogV2lkZXIgdGhhbiAzMiBiaXRzIGlmIFBTRTM2IHN1cGVycGFnZS4gKi8K KyAgICAgICAgZ3ctPmVsMWUgPSAoZ2ZuX3goc3RhcnQpIDw8IFBBR0VfU0hJRlQpIHwgZmxhZ3M7 CisjZWxzZQogICAgICAgICBndy0+bDFlID0gZ3Vlc3RfbDFlX2Zyb21fZ2ZuKHN0YXJ0LCBmbGFn cyk7CisjZW5kaWYKICAgICAgICAgZ3ctPmwxbWZuID0gSU5WQUxJRF9NRk47Ci0gICAgfSAKLSAg ICBlbHNlIAorICAgICAgICBnb3RvIGxlYWY7CisgICAgfQorCisgICAgLyogTWFwIHRoZSBsMSB0 YWJsZSAqLworICAgIGwxcCA9IG1hcF9kb21haW5fZ2ZuKHAybSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBndWVzdF9sMmVfZ2V0X2dmbihndy0+bDJlKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAmZ3ctPmwxbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICZwMm10LAorICAgICAg ICAgICAgICAgICAgICAgICAgIHF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICZyYyk7Cisg ICAgaWYgKCBsMXAgPT0gTlVMTCApCiAgICAgewotICAgICAgICAvKiBOb3QgYSBzdXBlcnBhZ2U6 IGNhcnJ5IG9uIGFuZCBmaW5kIHRoZSBsMWUuICovCi0gICAgICAgIGwxcCA9IG1hcF9kb21haW5f Z2ZuKHAybSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXN0X2wyZV9nZXRfZ2Zu KGd3LT5sMmUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmd3LT5sMW1mbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAybXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmMpOwotICAgICAgICBp ZihsMXAgPT0gTlVMTCkKKyAgICAgICAgZ3ctPnBmZWMgfD0gcmMgJiBQRkVDX3N5bnRoX21hc2s7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBndy0+bDFlID0gbDFwW2d1ZXN0X2wxX3Rh YmxlX29mZnNldCh2YSldOworICAgIGdmbGFncyA9IGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3ctPmwx ZSk7CisgICAgaWYgKCAhKGdmbGFncyAmIF9QQUdFX1BSRVNFTlQpICkKKyAgICAgICAgZ290byBv dXQ7CisKKyAgICAvKiBDaGVjayBmb3IgcmVzZXJ2ZWQgYml0cy4gKi8KKyAgICBpZiAoIGd1ZXN0 X2wxZV9yc3ZkX2JpdHModiwgZ3ctPmwxZSkgKQorICAgIHsKKyAgICAgICAgZ3ctPnBmZWMgfD0g UEZFQ19yZXNlcnZlZF9iaXQgfCBQRkVDX3BhZ2VfcHJlc2VudDsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorCisgICAgLyogQWNjdW11bGF0ZSBsMWUgYWNjZXNzIHJpZ2h0cy4gKi8KKyAgICBh cl9hbmQgJj0gZ2ZsYWdzOworICAgIGFyX29yICB8PSBnZmxhZ3M7CisKKyBsZWFmOgorICAgIGd3 LT5wZmVjIHw9IFBGRUNfcGFnZV9wcmVzZW50OworCisgICAgLyoKKyAgICAgKiBUaGUgcGFnZXRh YmxlIHdhbGsgaGFzIHJldHVybmVkIGEgc3VjY2Vzc2Z1bCB0cmFuc2xhdGlvbi4gIE5vdyBjaGVj aworICAgICAqIGFjY2VzcyByaWdodHMgdG8gc2VlIHdoZXRoZXIgdGhlIGFjY2VzcyBzaG91bGQg c3VjY2VlZC4KKyAgICAgKi8KKyAgICBhciA9IChhcl9hbmQgJiBBUl9BQ0NVTV9BTkQpIHwgKGFy X29yICYgQVJfQUNDVU1fT1IpOworCisgICAgaWYgKCAod2FsayAmIFBGRUNfaW5zbl9mZXRjaCkg JiYgKGFyICYgX1BBR0VfTlhfQklUKSApCisgICAgICAgIC8qIFJlcXVlc3RlZCBhbiBpbnN0cnVj dGlvbiBmZXRjaCBhbmQgZm91bmQgTlg/IEZhaWwuICovCisgICAgICAgIGdvdG8gb3V0OworCisg ICAgaWYgKCB3YWxrICYgUEZFQ191c2VyX21vZGUgKSAvKiBSZXF1ZXN0ZWQgYSB1c2VyIGFjZXNz LiAqLworICAgIHsKKyAgICAgICAgaWYgKCAhKGFyICYgX1BBR0VfVVNFUikgKQorICAgICAgICAg ICAgLyogR290IGEgc3VwZXJ2aXNvciB3YWxrPyAgVW5jb25kaXRpb25hbCBmYWlsLiAqLwogICAg ICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgIGd3LT5sMWUgPSBsMXBbZ3Vlc3RfbDFfdGFibGVf b2Zmc2V0KHZhKV07Ci0gICAgICAgIHBrZXkgPSBndWVzdF9sMWVfZ2V0X3BrZXkoZ3ctPmwxZSk7 Ci0gICAgICAgIGdmbGFncyA9IGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3ctPmwxZSkgXiBpZmxhZ3M7 Ci0gICAgICAgIGlmICggIShnZmxhZ3MgJiBfUEFHRV9QUkVTRU5UKSApIHsKLSAgICAgICAgICAg IHJjIHw9IF9QQUdFX1BSRVNFTlQ7CisKKyAgICAgICAgaWYgKCAod2FsayAmIFBGRUNfd3JpdGVf YWNjZXNzKSAmJiAhKGFyICYgX1BBR0VfUlcpICkKKyAgICAgICAgICAgIC8qIFJlcXVlc3RlZCBh IHdyaXRlIGFuZCBvbmx5IGdvdCBhIHJlYWQ/IEZhaWwuICovCiAgICAgICAgICAgICBnb3RvIG91 dDsKKyAgICB9CisgICAgZWxzZSAvKiBSZXF1ZXN0ZWQgYSBzdXBlcnZpc29yIGFjY2Vzcy4gKi8K KyAgICB7CisgICAgICAgIGlmICggYXIgJiBfUEFHRV9VU0VSICkgLyogR290IGEgdXNlciB3YWxr LiAqLworICAgICAgICB7CisgICAgICAgICAgICBpZiAoICh3YWxrICYgUEZFQ19pbnNuX2ZldGNo KSAmJiBndWVzdF9zbWVwX2VuYWJsZWQodikgKQorICAgICAgICAgICAgICAgIC8qIFVzZXIgaW5z biBmZXRjaCBhbmQgc21lcD8gRmFpbC4gKi8KKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKwor ICAgICAgICAgICAgaWYgKCAhKHdhbGsgJiBQRkVDX2luc25fZmV0Y2gpICYmIGd1ZXN0X3NtYXBf ZW5hYmxlZCh2KSAmJgorICAgICAgICAgICAgICAgICAoKHdhbGsgJiBQRkVDX2ltcGxpY2l0KSB8 fAorICAgICAgICAgICAgICAgICAgIShndWVzdF9jcHVfdXNlcl9yZWdzKCktPmVmbGFncyAmIFg4 Nl9FRkxBR1NfQUMpKSApCisgICAgICAgICAgICAgICAgLyogVXNlciBkYXRhIGFjY2VzcyBhbmQg c21hcD8gRmFpbC4gKi8KKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQotICAg ICAgICByYyB8PSAoKGdmbGFncyAmIG1mbGFncykgXiBtZmxhZ3MpOworCisgICAgICAgIGlmICgg KHdhbGsgJiBQRkVDX3dyaXRlX2FjY2VzcykgJiYgIShhciAmIF9QQUdFX1JXKSAmJgorICAgICAg ICAgICAgIGd1ZXN0X3dwX2VuYWJsZWQodikgKQorICAgICAgICAgICAgLyogUmVxdWVzdGVkIGEg d3JpdGUsIGdvdCBhIHJlYWQsIGFuZCBDUjAuV1AgaXMgc2V0PyBGYWlsLiAqLworICAgICAgICAg ICAgZ290byBvdXQ7CiAgICAgfQogCiAjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSA0IC8qIDY0 LWJpdCBvbmx5Li4uICovCi1zZXRfYWQ6Ci0gICAgaWYgKCBwa2V5X2ZhdWx0KHYsIHBmZWMsIGdm bGFncywgcGtleSkgKQotICAgICAgICByYyB8PSBfUEFHRV9QS0VZX0JJVFM7CisgICAgLyoKKyAg ICAgKiBJZiBhbGwgYWNjZXNzIGNoZWNrcyBhcmUgdGh1c2ZhciBvaywgY2hlY2sgUHJvdGVjdGlv biBLZXkgZm9yIDY0Yml0CisgICAgICogdXNlciBkYXRhIGFjY2Vzc2VzLgorICAgICAqCisgICAg ICogTi5CLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSB3YWxrIGVuZGVkIHdpdGggYSBzdXBlcnBhZ2Us IHRoZSBmYWJyaWNhdGVkCisgICAgICogZ3ctPmwxZSBjb250YWlucyB0aGUgYXBwcm9wcmlhdGUg bGVhZiBwa2V5LgorICAgICAqLworICAgIGlmICggKHdhbGsgJiBQRkVDX3VzZXJfbW9kZSkgJiYg ISh3YWxrICYgUEZFQ19pbnNuX2ZldGNoKSAmJgorICAgICAgICAgZ3Vlc3RfcGt1X2VuYWJsZWQo dikgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHBrZXkgPSBndWVzdF9sMWVfZ2V0X3Br ZXkoZ3ctPmwxZSk7CisgICAgICAgIHVuc2lnbmVkIGludCBwa3J1ID0gcmVhZF9wa3J1KCk7CisK KyAgICAgICAgaWYgKCByZWFkX3BrcnVfYWQocGtydSwgcGtleSkgfHwKKyAgICAgICAgICAgICAo KGFyICYgUEZFQ193cml0ZV9hY2Nlc3MpICYmIHJlYWRfcGtydV93ZChwa3J1LCBwa2V5KSkgKQor ICAgICAgICB7CisgICAgICAgICAgICBndy0+cGZlYyB8PSBQRkVDX3Byb3Rfa2V5OworICAgICAg ICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYKLSAgICAvKiBOb3cgcmUt aW52ZXJ0IHRoZSB1c2VyLW1vZGUgcmVxdWlyZW1lbnQgZm9yIFNNRVAgYW5kIFNNQVAgKi8KLSAg ICBpZiAoIHNtZXAgfHwgc21hcCApCi0gICAgICAgIHJjIF49IF9QQUdFX1VTRVI7CisKKyAgICB3 YWxrX29rID0gdHJ1ZTsKIAogICAgIC8qIEdvIGJhY2sgYW5kIHNldCBhY2Nlc3NlZCBhbmQgZGly dHkgYml0cyBvbmx5IGlmIHRoZSB3YWxrIHdhcyBhCiAgICAgICogc3VjY2Vzcy4gIEFsdGhvdWdo IHRoZSBQUk1zIHNheSBoaWdoZXItbGV2ZWwgX1BBR0VfQUNDRVNTRUQgYml0cwogICAgICAqIGdl dCBzZXQgd2hlbmV2ZXIgYSBsb3dlci1sZXZlbCBQVCBpcyB1c2VkLCBhdCBsZWFzdCBzb21lIGhh cmR3YXJlCiAgICAgICogd2Fsa2VycyBiZWhhdmUgdGhpcyB3YXkuICovCi0gICAgaWYgKCByYyA9 PSAwICkgCi0gICAgewogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gNCAvKiA2NC1iaXQgb25s eS4uLiAqLwotICAgICAgICBpZiAoIHNldF9hZF9iaXRzKGw0cCArIGd1ZXN0X2w0X3RhYmxlX29m ZnNldCh2YSksICZndy0+bDRlLCAwKSApCi0gICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShk LCBndy0+bDRtZm4pOwotICAgICAgICBpZiAoIHNldF9hZF9iaXRzKGwzcCArIGd1ZXN0X2wzX3Rh YmxlX29mZnNldCh2YSksICZndy0+bDNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIChwc2Ux RyAmJiAocGZlYyAmIFBGRUNfd3JpdGVfYWNjZXNzKSkpICkKLSAgICAgICAgICAgIHBhZ2luZ19t YXJrX2RpcnR5KGQsIGd3LT5sM21mbik7CisgICAgaWYgKCBzZXRfYWRfYml0cyhsNHAgKyBndWVz dF9sNF90YWJsZV9vZmZzZXQodmEpLCAmZ3ctPmw0ZSwgMCkgKQorICAgICAgICBwYWdpbmdfbWFy a19kaXJ0eShkLCBndy0+bDRtZm4pOworICAgIGlmICggc2V0X2FkX2JpdHMobDNwICsgZ3Vlc3Rf bDNfdGFibGVfb2Zmc2V0KHZhKSwgJmd3LT5sM2UsCisgICAgICAgICAgICAgICAgICAgICAocHNl MUcgJiYgKHdhbGsgJiBQRkVDX3dyaXRlX2FjY2VzcykpKSApCisgICAgICAgIHBhZ2luZ19tYXJr X2RpcnR5KGQsIGd3LT5sM21mbik7CiAjZW5kaWYKLSAgICAgICAgaWYgKCAhcHNlMUcgKSAKKyAg ICBpZiAoICFwc2UxRyApCisgICAgeworICAgICAgICBpZiAoIHNldF9hZF9iaXRzKGwycCArIGd1 ZXN0X2wyX3RhYmxlX29mZnNldCh2YSksICZndy0+bDJlLAorICAgICAgICAgICAgICAgICAgICAg ICAgIChwc2UyTSAmJiAod2FsayAmIFBGRUNfd3JpdGVfYWNjZXNzKSkpICkKKyAgICAgICAgICAg IHBhZ2luZ19tYXJrX2RpcnR5KGQsIGd3LT5sMm1mbik7CisgICAgICAgIGlmICggIXBzZTJNICkK ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCBzZXRfYWRfYml0cyhsMnAgKyBndWVzdF9sMl90 YWJsZV9vZmZzZXQodmEpLCAmZ3ctPmwyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBzZTJNICYmIChwZmVjICYgUEZFQ193cml0ZV9hY2Nlc3MpKSkgKQotICAgICAgICAgICAgICAg IHBhZ2luZ19tYXJrX2RpcnR5KGQsIGd3LT5sMm1mbik7Ci0gICAgICAgICAgICBpZiAoICFwc2Uy TSApIAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICggc2V0X2FkX2JpdHMobDFw ICsgZ3Vlc3RfbDFfdGFibGVfb2Zmc2V0KHZhKSwgJmd3LT5sMWUsIAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBmZWMgJiBQRkVDX3dyaXRlX2FjY2VzcykpICkKLSAgICAgICAg ICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZCwgZ3ctPmwxbWZuKTsKLSAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGlmICggc2V0X2FkX2JpdHMobDFwICsgZ3Vlc3RfbDFfdGFibGVfb2Zm c2V0KHZhKSwgJmd3LT5sMWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3YWxrICYg UEZFQ193cml0ZV9hY2Nlc3MpKSApCisgICAgICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHko ZCwgZ3ctPmwxbWZuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM2LDEwICs0NTQsNSBAQCBn dWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwK ICAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3goZ3ctPmwxbWZuKSkpOwogICAgIH0K IAotICAgIC8qIElmIHRoaXMgZ3Vlc3QgaGFzIGEgcmVzdHJpY3RlZCBwaHlzaWNhbCBhZGRyZXNz IHNwYWNlIHRoZW4gdGhlCi0gICAgICogdGFyZ2V0IEdGTiBtdXN0IGZpdCB3aXRoaW4gaXQuICov Ci0gICAgaWYgKCAhKHJjICYgX1BBR0VfUFJFU0VOVCkgJiYgIWdmbl92YWxpZChkLCBndWVzdF93 YWxrX3RvX2dmbihndykpICkKLSAgICAgICAgcmMgfD0gX1BBR0VfSU5WQUxJRF9CSVRTOwotCi0g ICAgcmV0dXJuIHJjOworICAgIHJldHVybiB3YWxrX29rOwogfQpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dh bGsuYwppbmRleCBlMjAyYzlhLi41YTQ4OTZiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0v aGFwL2d1ZXN0X3dhbGsuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYwpA QCAtNTAsNyArNTAsNyBAQCB1bnNpZ25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BB R0lOR19MRVZFTFMpKAogICAgIHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCB1bnNpZ25lZCBsb25nIGNyMywKICAgICBwYWRkcl90IGdhLCB1aW50MzJfdCAqcGZlYywgdW5z aWduZWQgaW50ICpwYWdlX29yZGVyKQogewotICAgIHVpbnQzMl90IG1pc3Npbmc7CisgICAgYm9v bCB3YWxrX29rOwogICAgIG1mbl90IHRvcF9tZm47CiAgICAgdm9pZCAqdG9wX21hcDsKICAgICBw Mm1fdHlwZV90IHAybXQ7CkBAIC05MSwxMiArOTEsMTIgQEAgdW5zaWduZWQgbG9uZyBoYXBfcDJt X2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxT ID09IDMKICAgICB0b3BfbWFwICs9IChjcjMgJiB+KFBBR0VfTUFTSyB8IDMxKSk7CiAjZW5kaWYK LSAgICBtaXNzaW5nID0gZ3Vlc3Rfd2Fsa190YWJsZXModiwgcDJtLCBnYSwgJmd3LCAqcGZlYywg dG9wX21mbiwgdG9wX21hcCk7CisgICAgd2Fsa19vayA9IGd1ZXN0X3dhbGtfdGFibGVzKHYsIHAy bSwgZ2EsICZndywgKnBmZWMsIHRvcF9tZm4sIHRvcF9tYXApOwogICAgIHVubWFwX2RvbWFpbl9w YWdlKHRvcF9tYXApOwogICAgIHB1dF9wYWdlKHRvcF9wYWdlKTsKIAogICAgIC8qIEludGVycHJl dCB0aGUgYW5zd2VyICovCi0gICAgaWYgKCBtaXNzaW5nID09IDAgKQorICAgIGlmICggd2Fsa19v ayApCiAgICAgewogICAgICAgICBnZm5fdCBnZm4gPSBndWVzdF93YWxrX3RvX2dmbigmZ3cpOwog ICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwpAQCAtMTIzLDIwICsxMjMsNyBAQCB1bnNp Z25lZCBsb25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAogICAgICAg ICByZXR1cm4gZ2ZuX3goZ2ZuKTsKICAgICB9CiAKLSAgICBpZiAoIG1pc3NpbmcgJiBfUEFHRV9Q UkVTRU5UICkKLSAgICAgICAgKnBmZWMgJj0gflBGRUNfcGFnZV9wcmVzZW50OwotCi0gICAgaWYg KCBtaXNzaW5nICYgX1BBR0VfSU5WQUxJRF9CSVRTICkgCi0gICAgICAgICpwZmVjIHw9IFBGRUNf cmVzZXJ2ZWRfYml0OwotCi0gICAgaWYgKCBtaXNzaW5nICYgX1BBR0VfUEtFWV9CSVRTICkKLSAg ICAgICAgKnBmZWMgfD0gUEZFQ19wcm90X2tleTsKLQotICAgIGlmICggbWlzc2luZyAmIF9QQUdF X1BBR0VEICkKLSAgICAgICAgKnBmZWMgPSBQRkVDX3BhZ2VfcGFnZWQ7Ci0KLSAgICBpZiAoIG1p c3NpbmcgJiBfUEFHRV9TSEFSRUQgKQotICAgICAgICAqcGZlYyA9IFBGRUNfcGFnZV9zaGFyZWQ7 CisgICAgKnBmZWMgPSBndy5wZmVjOwogCiAgb3V0X3R3ZWFrX3BmZWM6CiAgICAgLyoKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2VwdC5jIGIveGVuL2FyY2gveDg2L21t L2hhcC9uZXN0ZWRfZXB0LmMKaW5kZXggMDJiMjdiMS4uMTRiMWJiMCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9u ZXN0ZWRfZXB0LmMKQEAgLTIwOCw3ICsyMDgsNyBAQCBuZXB0X3dhbGtfdGFibGVzKHN0cnVjdCB2 Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGwyZ2EsIGVwdF93YWxrX3QgKmd3KQogICAgIGdvdG8gb3V0 OwogCiBtYXBfZXJyOgotICAgIGlmICggcmMgPT0gX1BBR0VfUEFHRUQgKQorICAgIGlmICggcmMg PT0gUEZFQ19wYWdlX3BhZ2VkICkKICAgICB7CiAgICAgICAgIHJldCA9IEVQVF9UUkFOU0xBVEVf UkVUUlk7CiAgICAgICAgIGdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IGE1NjUxYTMuLmQzODAwNGMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMK QEAgLTE3NzQsMTcgKzE3NzQsMTggQEAgdW5zaWduZWQgbG9uZyBwYWdpbmdfZ3ZhX3RvX2dmbihz dHJ1Y3QgdmNwdSAqdiwKIH0KIAogLyoKLSAqIElmIHRoZSBtYXAgaXMgbm9uLU5VTEwsIHdlIGxl YXZlIHRoaXMgZnVuY3Rpb24gaGF2aW5nCi0gKiBhY3F1aXJlZCBhbiBleHRyYSByZWYgb24gbWZu X3RvX3BhZ2UoKm1mbikuCisgKiBJZiB0aGUgbWFwIGlzIG5vbi1OVUxMLCB3ZSBsZWF2ZSB0aGlz IGZ1bmN0aW9uIGhhdmluZyBhY3F1aXJlZCBhbiBleHRyYSByZWYKKyAqIG9uIG1mbl90b19wYWdl KCptZm4pLiAgSW4gYWxsIGNhc2VzLCAqcGZlYyBjb250YWlucyBhcHByb3ByaWF0ZQorICogc3lu dGhldGljL3N0cnVjdHVyZSBQRkVDXyogYml0cy4KICAqLwogdm9pZCAqbWFwX2RvbWFpbl9nZm4o c3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuLAotICAgICAgICAg ICAgICAgICAgICAgcDJtX3R5cGVfdCAqcDJtdCwgcDJtX3F1ZXJ5X3QgcSwgdWludDMyX3QgKnJj KQorICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCAqcDJtdCwgcDJtX3F1ZXJ5X3QgcSwg dWludDMyX3QgKnBmZWMpCiB7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKIAogICAgIGlm ICggIWdmbl92YWxpZChwMm0tPmRvbWFpbiwgZ2ZuKSApCiAgICAgewotICAgICAgICAqcmMgPSBf UEFHRV9JTlZBTElEX0JJVDsKKyAgICAgICAgKnBmZWMgPSBQRkVDX3Jlc2VydmVkX2JpdCB8IFBG RUNfcGFnZV9wcmVzZW50OwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE3OTYs MjEgKzE3OTcsMjMgQEAgdm9pZCAqbWFwX2RvbWFpbl9nZm4oc3RydWN0IHAybV9kb21haW4gKnAy bSwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuLAogICAgICAgICBpZiAoIHBhZ2UgKQogICAgICAgICAg ICAgcHV0X3BhZ2UocGFnZSk7CiAgICAgICAgIHAybV9tZW1fcGFnaW5nX3BvcHVsYXRlKHAybS0+ ZG9tYWluLCBnZm5feChnZm4pKTsKLSAgICAgICAgKnJjID0gX1BBR0VfUEFHRUQ7CisgICAgICAg ICpwZmVjID0gUEZFQ19wYWdlX3BhZ2VkOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAg ICAgaWYgKCBwMm1faXNfc2hhcmVkKCpwMm10KSApCiAgICAgewogICAgICAgICBpZiAoIHBhZ2Ug KQogICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Ci0gICAgICAgICpyYyA9IF9QQUdFX1NIQVJF RDsKKyAgICAgICAgKnBmZWMgPSBQRkVDX3BhZ2Vfc2hhcmVkOwogICAgICAgICByZXR1cm4gTlVM TDsKICAgICB9CiAgICAgaWYgKCAhcGFnZSApCiAgICAgewotICAgICAgICAqcmMgfD0gX1BBR0Vf UFJFU0VOVDsKKyAgICAgICAgKnBmZWMgPSAwOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9 CisKKyAgICAqcGZlYyA9IFBGRUNfcGFnZV9wcmVzZW50OwogICAgICptZm4gPSBwYWdlX3RvX21m bihwYWdlKTsKICAgICBBU1NFUlQobWZuX3ZhbGlkKCptZm4pKTsKIApkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0 aS5jCmluZGV4IDUyY2VmNDYuLjQ3NjJlMTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9z aGFkb3cvbXVsdGkuYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTE3 MSw3ICsxNzEsNyBAQCBkZWxldGVfc2hhZG93X3N0YXR1cyhzdHJ1Y3QgZG9tYWluICpkLCBtZm5f dCBnbWZuLCB1MzIgc2hhZG93X3R5cGUsIG1mbl90IHNtZm4pCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAvKiBGdW5jdGlvbnMgZm9yIHdhbGtpbmcgdGhlIGd1ZXN0IHBhZ2UgdGFibGVzICovCiAKLXN0 YXRpYyBpbmxpbmUgdWludDMyX3QKK3N0YXRpYyBpbmxpbmUgYm9vbAogc2hfd2Fsa19ndWVzdF90 YWJsZXMoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmEsIHdhbGtfdCAqZ3csCiAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBwZmVjKQogewpAQCAtMjg1OCw2ICsyODU4LDcgQEAg c3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAgIGludCByOwogICAg IHAybV90eXBlX3QgcDJtdDsKICAgICB1aW50MzJfdCByYywgZXJyb3JfY29kZTsKKyAgICBib29s IHdhbGtfb2s7CiAgICAgaW50IHZlcnNpb247CiAgICAgY29uc3Qgc3RydWN0IG5wZmVjIGFjY2Vz cyA9IHsKICAgICAgICAgIC5yZWFkX2FjY2VzcyA9IDEsCkBAIC0zMDc1LDIxICszMDc2LDIwIEBA IHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKICAgICAgKiBzaGFkb3cg cGFnZSB0YWJsZS4gKi8KICAgICB2ZXJzaW9uID0gYXRvbWljX3JlYWQoJmQtPmFyY2gucGFnaW5n LnNoYWRvdy5ndGFibGVfZGlydHlfdmVyc2lvbik7CiAgICAgcm1iKCk7Ci0gICAgcmMgPSBzaF93 YWxrX2d1ZXN0X3RhYmxlcyh2LCB2YSwgJmd3LCBlcnJvcl9jb2RlKTsKKyAgICB3YWxrX29rID0g c2hfd2Fsa19ndWVzdF90YWJsZXModiwgdmEsICZndywgZXJyb3JfY29kZSk7CiAKICNpZiAoU0hB RE9XX09QVElNSVpBVElPTlMgJiBTSE9QVF9PVVRfT0ZfU1lOQykKICAgICByZWdzLT5lcnJvcl9j b2RlICY9IH5QRkVDX3BhZ2VfcHJlc2VudDsKLSAgICBpZiAoICEocmMgJiBfUEFHRV9QUkVTRU5U KSApCisgICAgaWYgKCBndy5wZmVjICYgUEZFQ19wYWdlX3ByZXNlbnQgKQogICAgICAgICByZWdz LT5lcnJvcl9jb2RlIHw9IFBGRUNfcGFnZV9wcmVzZW50OwogI2VuZGlmCiAKLSAgICBpZiAoIHJj ICE9IDAgKQorICAgIGlmICggIXdhbGtfb2sgKQogICAgIHsKICAgICAgICAgcGVyZmNfaW5jcihz aGFkb3dfZmF1bHRfYmFpbF9yZWFsX2ZhdWx0KTsKICAgICAgICAgU0hBRE9XX1BSSU5USygibm90 IGEgc2hhZG93IGZhdWx0XG4iKTsKICAgICAgICAgcmVzZXRfZWFybHlfdW5zaGFkb3codik7Ci0g ICAgICAgIGlmICggKHJjICYgX1BBR0VfSU5WQUxJRF9CSVRTKSApCi0gICAgICAgICAgICByZWdz LT5lcnJvcl9jb2RlIHw9IFBGRUNfcmVzZXJ2ZWRfYml0OworICAgICAgICByZWdzLT5lcnJvcl9j b2RlID0gZ3cucGZlYyAmIFBGRUNfYXJjaF9tYXNrOwogICAgICAgICBnb3RvIHByb3BhZ2F0ZTsK ICAgICB9CiAKQEAgLTM3MjMsNyArMzcyMyw3IEBAIHNoX2d2YV90b19nZm4oc3RydWN0IHZjcHUg KnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiB7CiAgICAgd2Fsa190IGd3OwogICAgIGdmbl90 IGdmbjsKLSAgICB1aW50MzJfdCBtaXNzaW5nOworICAgIGJvb2wgd2Fsa19vazsKIAogI2lmIChT SEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BUX1ZJUlRVQUxfVExCKQogICAgIC8qIENoZWNrIHRo ZSB2VExCIGNhY2hlIGZpcnN0ICovCkBAIC0zNzMyLDE4ICszNzMyLDkgQEAgc2hfZ3ZhX3RvX2dm bihzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICAgICAgcmV0dXJu IHZ0bGJfZ2ZuOwogI2VuZGlmIC8qIChTSEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BUX1ZJUlRV QUxfVExCKSAqLwogCi0gICAgaWYgKCAobWlzc2luZyA9IHNoX3dhbGtfZ3Vlc3RfdGFibGVzKHYs IHZhLCAmZ3csICpwZmVjKSkgIT0gMCApCisgICAgaWYgKCAhKHdhbGtfb2sgPSBzaF93YWxrX2d1 ZXN0X3RhYmxlcyh2LCB2YSwgJmd3LCAqcGZlYykpICkKICAgICB7Ci0gICAgICAgIGlmICggKG1p c3NpbmcgJiBfUEFHRV9QUkVTRU5UKSApCi0gICAgICAgICAgICAqcGZlYyAmPSB+UEZFQ19wYWdl X3ByZXNlbnQ7Ci0gICAgICAgIGlmICggbWlzc2luZyAmIF9QQUdFX0lOVkFMSURfQklUUyApCi0g ICAgICAgICAgICAqcGZlYyB8PSBQRkVDX3Jlc2VydmVkX2JpdDsKLSAgICAgICAgLyoKLSAgICAg ICAgICogU0RNIEludGVsIDY0IFZvbHVtZSAzLCBDaGFwdGVyIFBhZ2luZywgUEFHRS1GQVVMVCBF WENFUFRJT05TOgotICAgICAgICAgKiBUaGUgUEZFQ19pbnNuX2ZldGNoIGZsYWcgaXMgc2V0IG9u bHkgd2hlbiBOWCBvciBTTUVQIGFyZSBlbmFibGVkLgotICAgICAgICAgKi8KLSAgICAgICAgaWYg KCBpc19odm1fdmNwdSh2KSAmJiAhaHZtX254X2VuYWJsZWQodikgJiYgIWh2bV9zbWVwX2VuYWJs ZWQodikgKQotICAgICAgICAgICAgKnBmZWMgJj0gflBGRUNfaW5zbl9mZXRjaDsKKyAgICAgICAg KnBmZWMgPSBndy5wZmVjOwogICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwogICAg IH0KICAgICBnZm4gPSBndWVzdF93YWxrX3RvX2dmbigmZ3cpOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5o CmluZGV4IDRlNTAxOGQuLjVmYjc3YzYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv Z3Vlc3RfcHQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgKQEAgLTI1Mywx OSArMjUzLDI2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9zdXBwb3J0c19ueChjb25zdCBz dHJ1Y3QgdmNwdSAqdikKICAgICByZXR1cm4gaHZtX254X2VuYWJsZWQodik7CiB9CiAKK3N0YXRp YyBpbmxpbmUgYm9vbCBndWVzdF93cF9lbmFibGVkKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQorewor ICAgIC8qIFBWIGd1ZXN0cyBjYW4ndCBjb250cm9sIENSMC5XUCwgYW5kIGl0IGlzIHVuY29uZGl0 aW9uYWxseSBzZXQgYnkgWGVuLiAqLworICAgIHJldHVybiBpc19wdl92Y3B1KHYpIHx8IGh2bV93 cF9lbmFibGVkKHYpOworfQogCi0vKgotICogU29tZSBiaXRzIGFyZSBpbnZhbGlkIGluIGFueSBw YWdldGFibGUgZW50cnkuCi0gKiBOb3JtYWwgZmxhZ3MgdmFsdWVzIGdldCByZXByZXNlbnRlZCBp biAyNC1iaXQgdmFsdWVzIChzZWUKLSAqIGdldF9wdGVfZmxhZ3MoKSBhbmQgcHV0X3B0ZV9mbGFn cygpKSwgc28gc2V0IGJpdCAyNCBpbgotICogYWRkaXRpb24gdG8gYmUgYWJsZSB0byBmbGFnIG91 dCBvZiByYW5nZSBmcmFtZSBudW1iZXJzLgotICovCi0jaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA9 PSAzCi0jZGVmaW5lIF9QQUdFX0lOVkFMSURfQklUUyBcCi0gICAgKF9QQUdFX0lOVkFMSURfQklU IHwgZ2V0X3B0ZV9mbGFncygoKDF1bGwgPDwgNjMpIC0gMSkgJiB+KFBBR0VfU0laRSAtIDEpKSkK LSNlbHNlIC8qIDItbGV2ZWwgYW5kIDQtbGV2ZWwgKi8KLSNkZWZpbmUgX1BBR0VfSU5WQUxJRF9C SVRTIF9QQUdFX0lOVkFMSURfQklUCi0jZW5kaWYKK3N0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9z bWVwX2VuYWJsZWQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCit7CisgICAgcmV0dXJuICFpc19wdl92 Y3B1KHYpICYmIGh2bV9zbWVwX2VuYWJsZWQodik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBn dWVzdF9zbWFwX2VuYWJsZWQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCit7CisgICAgcmV0dXJuICFp c19wdl92Y3B1KHYpICYmIGh2bV9zbWFwX2VuYWJsZWQodik7Cit9CisKK3N0YXRpYyBpbmxpbmUg Ym9vbCBndWVzdF9wa3VfZW5hYmxlZChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICByZXR1 cm4gIWlzX3B2X3ZjcHUodikgJiYgaHZtX3BrdV9lbmFibGVkKHYpOworfQogCiAvKiBIZWxwZXJz IGZvciBpZGVudGlmeWluZyB3aGV0aGVyIGd1ZXN0IGVudHJpZXMgaGF2ZSByZXNlcnZlZCBiaXRz IHNldC4gKi8KIApAQCAtMzMxLDEzICszMzgsMTkgQEAgc3RydWN0IGd1ZXN0X3BhZ2V0YWJsZV93 YWxrCiAgICAgZ3Vlc3RfbDNlX3QgbDNlOyAgICAgICAgICAgIC8qIEd1ZXN0J3MgbGV2ZWwgMyBl bnRyeSAqLwogI2VuZGlmCiAgICAgZ3Vlc3RfbDJlX3QgbDJlOyAgICAgICAgICAgIC8qIEd1ZXN0 J3MgbGV2ZWwgMiBlbnRyeSAqLwotICAgIGd1ZXN0X2wxZV90IGwxZTsgICAgICAgICAgICAvKiBH dWVzdCdzIGxldmVsIDEgZW50cnkgKG9yIGZhYnJpY2F0aW9uKSAqLworICAgIHVuaW9uCisgICAg eworICAgICAgICBndWVzdF9sMWVfdCBsMWU7ICAgICAgICAvKiBHdWVzdCdzIGxldmVsIDEgZW50 cnkgKG9yIGZhYnJpY2F0aW9uKS4gKi8KKyAgICAgICAgdWludDY0X3QgICBlbDFlOyAgICAgICAg LyogTDIgUFNFMzYgc3VwZXJwYWdlcyB3aWRlciB0aGFuIDMyIGJpdHMuICovCisgICAgfTsKICNp ZiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQKICAgICBtZm5fdCBsNG1mbjsgICAgICAgICAgICAg ICAgLyogTUZOIHRoYXQgdGhlIGxldmVsIDQgZW50cnkgd2FzIGluICovCiAgICAgbWZuX3QgbDNt Zm47ICAgICAgICAgICAgICAgIC8qIE1GTiB0aGF0IHRoZSBsZXZlbCAzIGVudHJ5IHdhcyBpbiAq LwogI2VuZGlmCiAgICAgbWZuX3QgbDJtZm47ICAgICAgICAgICAgICAgIC8qIE1GTiB0aGF0IHRo ZSBsZXZlbCAyIGVudHJ5IHdhcyBpbiAqLwogICAgIG1mbl90IGwxbWZuOyAgICAgICAgICAgICAg ICAvKiBNRk4gdGhhdCB0aGUgbGV2ZWwgMSBlbnRyeSB3YXMgaW4gKi8KKworICAgIHVpbnQzMl90 IHBmZWM7ICAgICAgICAgICAgICAvKiBBY2N1bXVsYXRlZCBQRkVDXyogZXJyb3IgY29kZSBmcm9t IHdhbGsuICovCiB9OwogCiAvKiBHaXZlbiBhIHdhbGtfdCwgdHJhbnNsYXRlIHRoZSBndy0+dmEg aW50byB0aGUgZ3Vlc3QncyBub3Rpb24gb2YgdGhlCkBAIC0zNDYsNyArMzU5LDkgQEAgc3RhdGlj IGlubGluZSBnZm5fdCBndWVzdF93YWxrX3RvX2dmbihjb25zdCB3YWxrX3QgKmd3KQogewogICAg IGlmICggIShndWVzdF9sMWVfZ2V0X2ZsYWdzKGd3LT5sMWUpICYgX1BBR0VfUFJFU0VOVCkgKQog ICAgICAgICByZXR1cm4gSU5WQUxJRF9HRk47Ci0gICAgcmV0dXJuIGd1ZXN0X2wxZV9nZXRfZ2Zu KGd3LT5sMWUpOworICAgIHJldHVybiAoR1VFU1RfUEFHSU5HX0xFVkVMUyA9PSAyCisgICAgICAg ICAgICA/IF9nZm4oZ3ctPmVsMWUgPj4gUEFHRV9TSElGVCkKKyAgICAgICAgICAgIDogZ3Vlc3Rf bDFlX2dldF9nZm4oZ3ctPmwxZSkpOwogfQogCiAvKiBHaXZlbiBhIHdhbGtfdCwgdHJhbnNsYXRl IHRoZSBndy0+dmEgaW50byB0aGUgZ3Vlc3QncyBub3Rpb24gb2YgdGhlCkBAIC0zOTIsOCArNDA3 LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ3Vlc3Rfd2Fsa190b19wYWdlX29yZGVy KGNvbnN0IHdhbGtfdCAqZ3cpCiAgKiB3ZSBnby4gIEZvciB0aGUgcHVycG9zZXMgb2YgcmVhZGlu ZyBwYWdldGFibGVzIHdlIHRyZWF0IGFsbCBub24tUkFNCiAgKiBtZW1vcnkgYXMgY29udGluaW5n IHplcm9lcy4KICAqCi0gKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG9yIHRoZSBzZXQgb2YgcGVy bWlzc2lvbiBiaXRzIHRoYXQgd2UgZmFpbGVkIG9uCi0gKiBpZiB0aGUgd2FsayBkaWQgbm90IGNv bXBsZXRlLgorICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1 cmUuICB3YWxrX3QucGZlYyBjb250YWlucworICogdGhlIGFjY3VtdWxhdGVkIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KICAqLwogCiAvKiBNYWNyby1mdSBzbyB5b3UgY2FuIGNhbGwgZ3Vlc3Rfd2Fs a190YWJsZXMoKSBhbmQgZ2V0IHRoZSByaWdodCBvbmUuICovCkBAIC00MDEsNyArNDE2LDcgQEAg c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ3Vlc3Rfd2Fsa190b19wYWdlX29yZGVyKGNvbnN0 IHdhbGtfdCAqZ3cpCiAjZGVmaW5lIEdQVF9SRU5BTUUoX24sIF9sKSBHUFRfUkVOQU1FMihfbiwg X2wpCiAjZGVmaW5lIGd1ZXN0X3dhbGtfdGFibGVzIEdQVF9SRU5BTUUoZ3Vlc3Rfd2Fsa190YWJs ZXMsIEdVRVNUX1BBR0lOR19MRVZFTFMpCiAKLWV4dGVybiB1aW50MzJfdAorYm9vbAogZ3Vlc3Rf d2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2ln bmVkIGxvbmcgdmEsCiAgICAgICAgICAgICAgICAgICB3YWxrX3QgKmd3LCB1aW50MzJfdCBwZmVj LCBtZm5fdCB0b3BfbWZuLCB2b2lkICp0b3BfbWFwKTsKIApAQCAtNDIxLDggKzQzNiwyMSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgcHJpbnRfZ3coY29uc3Qgd2Fsa190ICpndykKICNlbmRpZiAvKiBB bGwgbGV2ZWxzLi4uICovCiAgICAgZ3ByaW50ayhYRU5MT0dfSU5GTywgIiAgIGwyZT0lIiBQUklf Z3B0ZSAiIGwybWZuPSUiIFBSSV9tZm4gIlxuIiwKICAgICAgICAgICAgIGd3LT5sMmUubDIsIG1m bl94KGd3LT5sMm1mbikpOworI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMgorICAgIGdwcmlu dGsoWEVOTE9HX0lORk8sICIgIGVsMWU9JTA4IiBQUkl4NjQgIiBsMW1mbj0lIiBQUklfbWZuICJc biIsCisgICAgICAgICAgICBndy0+ZWwxZSwgbWZuX3goZ3ctPmwxbWZuKSk7CisjZWxzZQogICAg IGdwcmludGsoWEVOTE9HX0lORk8sICIgICBsMWU9JSIgUFJJX2dwdGUgIiBsMW1mbj0lIiBQUklf bWZuICJcbiIsCiAgICAgICAgICAgICBndy0+bDFlLmwxLCBtZm5feChndy0+bDFtZm4pKTsKKyNl bmRpZgorICAgIGdwcmludGsoWEVOTE9HX0lORk8sICIgICBwZmVjPSUwMnhbJWMlYyVjJWMlYyVj XVxuIiwgZ3ctPnBmZWMsCisgICAgICAgICAgICBndy0+cGZlYyAmIFBGRUNfcHJvdF9rZXkgICAg ID8gJ0snIDogJy0nLAorICAgICAgICAgICAgZ3ctPnBmZWMgJiBQRkVDX2luc25fZmV0Y2ggICA/ ICdJJyA6ICdkJywKKyAgICAgICAgICAgIGd3LT5wZmVjICYgUEZFQ19yZXNlcnZlZF9iaXQgPyAn UicgOiAnLScsCisgICAgICAgICAgICBndy0+cGZlYyAmIFBGRUNfdXNlcl9tb2RlICAgID8gJ1Un IDogJ3MnLAorICAgICAgICAgICAgZ3ctPnBmZWMgJiBQRkVDX3dyaXRlX2FjY2VzcyA/ICdXJyA6 ICdyJywKKyAgICAgICAgICAgIGd3LT5wZmVjICYgUEZFQ19wYWdlX3ByZXNlbnQgPyAnUCcgOiAn LScKKyAgICAgICAgKTsKIH0KIAogI2VuZGlmIC8qIF9YRU5fQVNNX0dVRVNUX1BUX0ggKi8KZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3AybS5oCmluZGV4IDQ3MGQyOWQuLmJjMTg5ZDEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaApAQCAtNjc5LDcgKzY3 OSw3IEBAIGludCBwMm1fc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVk IGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiBleHRlcm4gdm9pZCBwMm1fcHRfaW5pdChzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtKTsKIAogdm9pZCAqbWFwX2RvbWFpbl9nZm4oc3RydWN0IHAybV9kb21haW4g KnAybSwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuLAotICAgICAgICAgICAgICAgICAgICAgcDJtX3R5 cGVfdCAqcDJtdCwgcDJtX3F1ZXJ5X3QgcSwgdWludDMyX3QgKnJjKTsKKyAgICAgICAgICAgICAg ICAgICAgIHAybV90eXBlX3QgKnAybXQsIHAybV9xdWVyeV90IHEsIHVpbnQzMl90ICpwZmVjKTsK IAogLyogRGVidWdnaW5nIGFuZCBhdWRpdGluZyBvZiB0aGUgUDJNIGNvZGU/ICovCiAjaWZuZGVm IE5ERUJVRwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdlLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L3BhZ2UuaAppbmRleCA0NmZhZmZjLi5iYzU5NDZiIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2Uu aApAQCAtMzE0LDkgKzMxNCw2IEBAIHZvaWQgZWZpX3VwZGF0ZV9sNF9wZ3RhYmxlKHVuc2lnbmVk IGludCBsNGlkeCwgbDRfcGdlbnRyeV90KTsKICNkZWZpbmUgX1BBR0VfUFNFX1BBVCAgX0FDKDB4 MTAwMCxVKQogI2RlZmluZSBfUEFHRV9BVkFJTF9ISUdIIChfQUMoMHg3ZmYsIFUpIDw8IDEyKQog I2RlZmluZSBfUEFHRV9OWCAgICAgICAoY3B1X2hhc19ueCA/IF9QQUdFX05YX0JJVCA6IDApCi0v KiBub24tYXJjaGl0ZWN0dXJhbCBmbGFncyAqLwotI2RlZmluZSBfUEFHRV9QQUdFRCAgIDB4MjAw MFUKLSNkZWZpbmUgX1BBR0VfU0hBUkVEICAweDQwMDBVCiAKIC8qCiAgKiBEZWJ1ZyBvcHRpb246 IEVuc3VyZSB0aGF0IGdyYW50ZWQgbWFwcGluZ3MgYXJlIG5vdCBpbXBsaWNpdGx5IHVubWFwcGVk LgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKaW5kZXggZDNiYThlYS4uNzU2MzJkOSAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L3Byb2Nlc3Nvci5oCkBAIC03MywxMCArNzMsMTIgQEAKICNkZWZpbmUgUEZFQ19yZXNlcnZl ZF9iaXQgICAoX0FDKDEsVSkgPDwgMykKICNkZWZpbmUgUEZFQ19pbnNuX2ZldGNoICAgICAoX0FD KDEsVSkgPDwgNCkKICNkZWZpbmUgUEZFQ19wcm90X2tleSAgICAgICAoX0FDKDEsVSkgPDwgNSkK KyNkZWZpbmUgUEZFQ19hcmNoX21hc2sgICAgICAoX0FDKDB4ZmZmZixVKSkgLyogQXJjaGl0ZWN0 dXJhbCBQRkVDIHZhbHVlcy4gKi8KIC8qIEludGVybmFsbHkgdXNlZCBvbmx5IGZsYWdzLiAqLwog I2RlZmluZSBQRkVDX3BhZ2VfcGFnZWQgICAgICgxVTw8MTYpCiAjZGVmaW5lIFBGRUNfcGFnZV9z aGFyZWQgICAgKDFVPDwxNykKICNkZWZpbmUgUEZFQ19pbXBsaWNpdCAgICAgICAoMVU8PDE4KSAv KiBQYWdld2FsayBpbnB1dCBmb3IgbGR0L2dkdC9pZHQvdHIgYWNjZXNzZXMuICovCisjZGVmaW5l IFBGRUNfc3ludGhfbWFzayAgICAgKH5QRkVDX2FyY2hfbWFzaykgLyogU3ludGhldGljIFBGRUMg dmFsdWVzLiAqLwogCiAvKiBPdGhlciBleGNlcHRpb24gZXJyb3IgY29kZSB2YWx1ZXMuICovCiAj ZGVmaW5lIFg4Nl9YRUNfRVhUICAgICAgICAgKF9BQygxLFUpIDw8IDApCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4 Nl82NC9wYWdlLmgKaW5kZXggNWE2MTNiYy4uMWE2Y2FlNiAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni94ODZfNjQvcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0 L3BhZ2UuaApAQCAtMTUyLDEyICsxNTIsNiBAQCB0eXBlZGVmIGw0X3BnZW50cnlfdCByb290X3Bn ZW50cnlfdDsKICNkZWZpbmUgX1BBR0VfR05UVEFCICgxVTw8MjIpCiAKIC8qCi0gKiBCaXQgMjQg b2YgYSAyNC1iaXQgZmxhZyBtYXNrISAgVGhpcyBpcyBub3QgYW55IGJpdCBvZiBhIHJlYWwgcHRl LAotICogYW5kIGlzIG9ubHkgdXNlZCBmb3Igc2lnbmFsbGluZyBpbiB2YXJpYWJsZXMgdGhhdCBj b250YWluIGZsYWdzLgotICovCi0jZGVmaW5lIF9QQUdFX0lOVkFMSURfQklUICgxVTw8MjQpCi0K LS8qCiAgKiBCaXQgMTIgb2YgYSAyNC1iaXQgZmxhZyBtYXNrLiBUaGlzIGNvcnJlc3BvbmRzIHRv IGJpdCA1MiBvZiBhIHB0ZS4KICAqIFRoaXMgaXMgbmVlZGVkIHRvIGRpc3Rpbmd1aXNoIGJldHdl ZW4gdXNlciBhbmQga2VybmVsIFBURXMgc2luY2UgX1BBR0VfVVNFUgogICogaXMgYXNzZXJ0ZWQg Zm9yIGJvdGguCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=