From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joshua Otto Subject: [PATCH RFC 07/20] migration: defer precopy policy to libxl Date: Mon, 27 Mar 2017 05:06:19 -0400 Message-ID: <1490605592-12189-8-git-send-email-jtotto@uwaterloo.ca> References: <1490605592-12189-1-git-send-email-jtotto@uwaterloo.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csQd9-00050H-4M for xen-devel@lists.xenproject.org; Mon, 27 Mar 2017 09:08:03 +0000 In-Reply-To: <1490605592-12189-1-git-send-email-jtotto@uwaterloo.ca> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, czylin@uwaterloo.ca, Joshua Otto , imhy.yang@gmail.com, hjarmstr@uwaterloo.ca List-Id: xen-devel@lists.xenproject.org VGhlIHByZWNvcHkgcGhhc2Ugb2YgdGhlIHhjX2RvbWFpbl9zYXZlKCkgbGl2ZSBtaWdyYXRpb24g YWxnb3JpdGhtIGhhcwpoaXN0b3JpY2FsbHkgYmVlbiBpbXBsZW1lbnRlZCB0byBydW4gdW50aWwg ZWl0aGVyIGEpIChhbG1vc3QpIG5vIHBhZ2VzCmFyZSBkaXJ0eSBvciBiKSBzb21lIGZpeGVkLCBo YXJkLWNvZGVkIG1heGltdW0gbnVtYmVyIG9mIHByZWNvcHkKaXRlcmF0aW9ucyBoYXMgYmVlbiBl eGNlZWRlZC4gIFRoaXMgcG9saWN5IGFuZCBpdHMgaW1wbGVtZW50YXRpb24gYXJlCmxlc3MgdGhh biBpZGVhbCBmb3IgYSBmZXcgcmVhc29uczoKLSB0aGUgbG9naWMgb2YgdGhlIHBvbGljeSBpcyBp bnRlcnR3aW5lZCB3aXRoIHRoZSBjb250cm9sIGZsb3cgb2YgdGhlCiAgbWVjaGFuaXNtIG9mIHRo ZSBwcmVjb3B5IHN0YWdlCi0gaXQgY2FuJ3QgdGFrZSBpbnRvIGFjY291bnQgZmFjdHMgZXh0ZXJu YWwgdG8gdGhlIGltbWVkaWF0ZQogIG1pZ3JhdGlvbiBjb250ZXh0LCBzdWNoIGFzIGludGVyYWN0 aXZlIHVzZXIgaW5wdXQgb3IgdGhlIHBhc3NhZ2Ugb2YKICB3YWxsLWNsb2NrIHRpbWUKLSBpdCBk b2VzIG5vdCBwZXJtaXQgdGhlIHVzZXIgdG8gY2hhbmdlIHRoZWlyIG1pbmQsIG92ZXIgdGltZSwg YWJvdXQKICB3aGF0IHRvIGRvIGF0IHRoZSBlbmQgb2YgdGhlIHByZWNvcHkgKHRoZXkgZ2V0IGFu IHVuY29uZGl0aW9uYWwKICB0cmFuc2l0aW9uIGludG8gdGhlIHN0b3AtYW5kLWNvcHkgcGhhc2Ug b2YgdGhlIG1pZ3JhdGlvbikKClRvIHBlcm1pdCB1c2VycyB0byBpbXBsZW1lbnQgYXJiaXRyYXJ5 IGhpZ2hlci1sZXZlbCBwb2xpY2llcyBnb3Zlcm5pbmcKd2hlbiB0aGUgbGl2ZSBtaWdyYXRpb24g cHJlY29weSBwaGFzZSBzaG91bGQgZW5kLCBhbmQgd2hhdCBzaG91bGQgYmUKZG9uZSBuZXh0Ogot IGFkZCBhIHByZWNvcHlfcG9saWN5KCkgY2FsbGJhY2sgdG8gdGhlIHhjX2RvbWFpbl9zYXZlKCkg dXNlci1zdXBwbGllZAogIGNhbGxiYWNrcwotIGR1cmluZyB0aGUgcHJlY29weSBwaGFzZSBvZiBs aXZlIG1pZ3JhdGlvbnMsIGNvbnN1bHQgdGhpcyBwb2xpY3kgYWZ0ZXIKICBlYWNoIGJhdGNoIG9m IHBhZ2VzIHRyYW5zbWl0dGVkIGFuZCB0YWtlIHRoZSBkaWN0YXRlZCBhY3Rpb24sIHdoaWNoCiAg bWF5IGJlIHRvIGEpIGFib3J0IHRoZSBtaWdyYXRpb24gZW50aXJlbHksIGIpIGNvbnRpbnVlIHdp dGggdGhlCiAgcHJlY29weSwgb3IgYykgcHJvY2VlZCB0byB0aGUgc3RvcC1hbmQtY29weSBwaGFz ZS4KLSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvbGQgcG9saWN5IGFzIHN1Y2gg YSBjYWxsYmFjayBpbgogIGxpYnhsIGFuZCBwbHVtYiBpdCB0aHJvdWdoIHRoZSBJUEMgbWFjaGlu ZXJ5IHRvIGxpYnhjLCBlZmZlY3RpdmVseQogIG1haW50YWluZyB0aGUgb2xkIHBvbGljeSBmb3Ig bm93CgpTaWduZWQtb2ZmLWJ5OiBKb3NodWEgT3R0byA8anRvdHRvQHV3YXRlcmxvby5jYT4KLS0t CiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmggICAgIHwgIDIzICsrKystCiB0b29scy9s aWJ4Yy94Y19ub21pZ3JhdGUuYyAgICAgICAgIHwgICAzICstCiB0b29scy9saWJ4Yy94Y19zcl9j b21tb24uaCAgICAgICAgIHwgICA3ICstCiB0b29scy9saWJ4Yy94Y19zcl9zYXZlLmMgICAgICAg ICAgIHwgMTk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHRvb2xzL2xp YnhsL2xpYnhsX2RvbV9zYXZlLmMgICAgICAgfCAgMjAgKysrKwogdG9vbHMvbGlieGwvbGlieGxf c2F2ZV9jYWxsb3V0LmMgICB8ICAgMyArLQogdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9oZWxwZXIu YyAgICB8ICAgNyArLQogdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dlbi5wbCB8ICAgNCAr LQogOCBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oIGIvdG9vbHMvbGlieGMv aW5jbHVkZS94ZW5ndWVzdC5oCmluZGV4IGFhOGNjOGIuLjMwZmZiNmYgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hl bmd1ZXN0LmgKQEAgLTM5LDYgKzM5LDE0IEBACiAgKi8KIHN0cnVjdCB4ZW5ldnRjaG5faGFuZGxl OwogCisvKiBGb3Igc2F2ZSdzIHByZWNvcHlfcG9saWN5KCkuICovCitzdHJ1Y3QgcHJlY29weV9z dGF0cworeworICAgIHVuc2lnbmVkIGl0ZXJhdGlvbjsKKyAgICB1bnNpZ25lZCB0b3RhbF93cml0 dGVuOworICAgIGxvbmcgZGlydHlfY291bnQ7IC8qIC0xIGlmIHVua25vd24gKi8KK307CisKIC8q IGNhbGxiYWNrcyBwcm92aWRlZCBieSB4Y19kb21haW5fc2F2ZSAqLwogc3RydWN0IHNhdmVfY2Fs bGJhY2tzIHsKICAgICAvKiBDYWxsZWQgYWZ0ZXIgZXhwaXJhdGlvbiBvZiBjaGVja3BvaW50IGlu dGVydmFsLApAQCAtNDYsNiArNTQsMTcgQEAgc3RydWN0IHNhdmVfY2FsbGJhY2tzIHsKICAgICAg Ki8KICAgICBpbnQgKCpzdXNwZW5kKSh2b2lkKiBkYXRhKTsKIAorICAgIC8qIENhbGxlZCBhZnRl ciBldmVyeSBiYXRjaCBvZiBwYWdlIGRhdGEgc2VudCBkdXJpbmcgdGhlIHByZWNvcHkgcGhhc2Ug b2YgYQorICAgICAqIGxpdmUgbWlncmF0aW9uIHRvIGFzayB0aGUgY2FsbGVyIHdoYXQgdG8gZG8g bmV4dCBiYXNlZCBvbiB0aGUgY3VycmVudAorICAgICAqIHN0YXRlIG9mIHRoZSBwcmVjb3B5IG1p Z3JhdGlvbi4KKyAgICAgKi8KKyNkZWZpbmUgWEdTX1BPTElDWV9BQk9SVCAgICAgICAgICAoLTEp IC8qIEFiYW5kb24gdGhlIG1pZ3JhdGlvbiBlbnRpcmVseSBhbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIHRpZHkgdXAuICovCisjZGVmaW5lIFhHU19QT0xJQ1lf Q09OVElOVUVfUFJFQ09QWSAwICAvKiBSZW1haW4gaW4gdGhlIHByZWNvcHkgcGhhc2UuICovCisj ZGVmaW5lIFhHU19QT0xJQ1lfU1RPUF9BTkRfQ09QWSAgICAxICAvKiBJbW1lZGlhdGVseSBzdXNw ZW5kIGFuZCB0cmFuc21pdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIHJlbWFpbmluZyBkaXJ0eSBwYWdlcy4gKi8KKyAgICBpbnQgKCpwcmVjb3B5X3BvbGlj eSkoc3RydWN0IHByZWNvcHlfc3RhdHMgc3RhdHMsIHZvaWQgKmRhdGEpOworCiAgICAgLyogQ2Fs bGVkIGFmdGVyIHRoZSBndWVzdCdzIGRpcnR5IHBhZ2VzIGhhdmUgYmVlbgogICAgICAqICBjb3Bp ZWQgaW50byBhbiBvdXRwdXQgYnVmZmVyLgogICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHJlc3Vt ZXMgdGhlIGd1ZXN0ICYgdGhlIGRldmljZSBtb2RlbCwKQEAgLTEwMCw4ICsxMTksOCBAQCB0eXBl ZGVmIGVudW0gewogICogICAgICAgIGRvZXNuJ3QgdXNlIGNoZWNrcG9pbnRpbmcKICAqIEByZXR1 cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlCiAgKi8KLWludCB4Y19kb21haW5fc2F2ZSh4 Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50MzJfdCBkb20sIHVpbnQzMl90IG1heF9p dGVycywKLSAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtYXhfZmFjdG9yLCB1aW50MzJfdCBm bGFncyAvKiBYQ0ZMQUdTX3h4eCAqLywKK2ludCB4Y19kb21haW5fc2F2ZSh4Y19pbnRlcmZhY2Ug KnhjaCwgaW50IGlvX2ZkLCB1aW50MzJfdCBkb20sCisgICAgICAgICAgICAgICAgICAgdWludDMy X3QgZmxhZ3MgLyogWENGTEFHU194eHggKi8sCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNh dmVfY2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBodm0sCiAgICAgICAgICAgICAgICAgICAgeGNf bWlncmF0aW9uX3N0cmVhbV90IHN0cmVhbV90eXBlLCBpbnQgcmVjdl9mZCk7CiAKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX25vbWlncmF0ZS5jIGIvdG9vbHMvbGlieGMveGNfbm9taWdyYXRl LmMKaW5kZXggMTVjODM4Zi4uMmFmNjRlNCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfbm9t aWdyYXRlLmMKKysrIGIvdG9vbHMvbGlieGMveGNfbm9taWdyYXRlLmMKQEAgLTIwLDggKzIwLDcg QEAKICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8eGVuZ3Vlc3QuaD4KIAotaW50IHhj X2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVpbnQzMl90IGRvbSwg dWludDMyX3QgbWF4X2l0ZXJzLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1heF9mYWN0 b3IsIHVpbnQzMl90IGZsYWdzLAoraW50IHhjX2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNo LCBpbnQgaW9fZmQsIHVpbnQzMl90IGRvbSwgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHNhdmVfY2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBodm0sCiAgICAgICAg ICAgICAgICAgICAgeGNfbWlncmF0aW9uX3N0cmVhbV90IHN0cmVhbV90eXBlLCBpbnQgcmVjdl9m ZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oIGIvdG9vbHMvbGli eGMveGNfc3JfY29tbW9uLmgKaW5kZXggYjFhYTg4ZS4uYTkxNjBiZCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlieGMveGNfc3JfY29tbW9uLmgKKysrIGIvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmgK QEAgLTE5OCwxMiArMTk4LDExIEBAIHN0cnVjdCB4Y19zcl9jb250ZXh0CiAgICAgICAgICAgICAv KiBGdXJ0aGVyIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgc3RyZWFtLiAqLwogICAgICAg ICAgICAgYm9vbCBkZWJ1ZzsKIAotICAgICAgICAgICAgLyogUGFyYW1ldGVycyBmb3IgdHdlYWtp bmcgbGl2ZSBtaWdyYXRpb24uICovCi0gICAgICAgICAgICB1bnNpZ25lZCBtYXhfaXRlcmF0aW9u czsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRpcnR5X3RocmVzaG9sZDsKLQogICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBwMm1fc2l6ZTsKIAorICAgICAgICAgICAgc3RydWN0IHByZWNvcHlfc3Rh dHMgc3RhdHM7CisgICAgICAgICAgICBpbnQgcG9saWN5X2RlY2lzaW9uOworCiAgICAgICAgICAg ICB4ZW5fcGZuX3QgKmJhdGNoX3BmbnM7CiAgICAgICAgICAgICB1bnNpZ25lZCBucl9iYXRjaF9w Zm5zOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZGVmZXJyZWRfcGFnZXM7CmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMgYi90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMK aW5kZXggNzk3YWVjNS4uZWI5NTMzNCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfc3Jfc2F2 ZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwpAQCAtMjcxLDEzICsyNzEsMjkgQEAg c3RhdGljIGludCB3cml0ZV9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogfQogCiAv KgorICogVGVzdCBpZiB0aGUgYmF0Y2ggaXMgZnVsbC4KKyAqLworc3RhdGljIGJvb2wgYmF0Y2hf ZnVsbChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnNhdmUu bnJfYmF0Y2hfcGZucyA9PSBNQVhfQkFUQ0hfU0laRTsKK30KKworLyoKKyAqIFRlc3QgaWYgdGhl IGJhdGNoIGlzIGVtcHR5LgorICovCitzdGF0aWMgYm9vbCBiYXRjaF9lbXB0eShzdHJ1Y3QgeGNf c3JfY29udGV4dCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnNhdmUubnJfYmF0Y2hfcGZucyA9 PSAwOworfQorCisvKgogICogRmx1c2ggYSBiYXRjaCBvZiBwZm5zIGludG8gdGhlIHN0cmVhbS4K ICAqLwogc3RhdGljIGludCBmbHVzaF9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQog ewogICAgIGludCByYyA9IDA7CiAKLSAgICBpZiAoIGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zID09 IDAgKQorICAgIGlmICggYmF0Y2hfZW1wdHkoY3R4KSApCiAgICAgICAgIHJldHVybiByYzsKIAog ICAgIHJjID0gd3JpdGVfYmF0Y2goY3R4KTsKQEAgLTI5MywxOSArMzA5LDEyIEBAIHN0YXRpYyBp bnQgZmx1c2hfYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKIH0KIAogLyoKLSAqIEFk ZCBhIHNpbmdsZSBwZm4gdG8gdGhlIGJhdGNoLCBmbHVzaGluZyB0aGUgYmF0Y2ggaWYgZnVsbC4K KyAqIEFkZCBhIHNpbmdsZSBwZm4gdG8gdGhlIGJhdGNoLgogICovCi1zdGF0aWMgaW50IGFkZF90 b19iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LCB4ZW5fcGZuX3QgcGZuKQorc3RhdGlj IHZvaWQgYWRkX3RvX2JhdGNoKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIHhlbl9wZm5fdCBw Zm4pCiB7Ci0gICAgaW50IHJjID0gMDsKLQotICAgIGlmICggY3R4LT5zYXZlLm5yX2JhdGNoX3Bm bnMgPT0gTUFYX0JBVENIX1NJWkUgKQotICAgICAgICByYyA9IGZsdXNoX2JhdGNoKGN0eCk7Ci0K LSAgICBpZiAoIHJjID09IDAgKQotICAgICAgICBjdHgtPnNhdmUuYmF0Y2hfcGZuc1tjdHgtPnNh dmUubnJfYmF0Y2hfcGZucysrXSA9IHBmbjsKLQotICAgIHJldHVybiByYzsKKyAgICBhc3NlcnQo Y3R4LT5zYXZlLm5yX2JhdGNoX3BmbnMgPCBNQVhfQkFUQ0hfU0laRSk7CisgICAgY3R4LT5zYXZl LmJhdGNoX3BmbnNbY3R4LT5zYXZlLm5yX2JhdGNoX3BmbnMrK10gPSBwZm47CiB9CiAKIC8qCkBA IC0zNTIsMTAgKzM2MSwxNSBAQCBzdGF0aWMgaW50IHN1c3BlbmRfZG9tYWluKHN0cnVjdCB4Y19z cl9jb250ZXh0ICpjdHgpCiAgKiBTZW5kIGEgc3Vic2V0IG9mIHBhZ2VzIGluIHRoZSBndWVzdHMg cDJtLCBhY2NvcmRpbmcgdG8gdGhlIGRpcnR5IGJpdG1hcC4KICAqIFVzZWQgZm9yIGVhY2ggc3Vi c2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxpdmUgbWlncmF0aW9uIGxvb3AuCiAgKgorICogRHVy aW5nIHRoZSBwcmVjb3B5IHN0YWdlIG9mIGEgbGl2ZSBtaWdyYXRpb24sIHRlc3QgdGhlIHVzZXIt c3VwcGxpZWQKKyAqIHBvbGljeSBmdW5jdGlvbiBhZnRlciBlYWNoIGJhdGNoIG9mIHBhZ2VzIGFu ZCBjdXQgb2ZmIHRoZSBvcGVyYXRpb24KKyAqIGVhcmx5IGlmIGluZGljYXRlZC4gIFVubGVzcyBh Ym9ydGluZywgdGhlIGRpcnR5IHBhZ2VzIHJlbWFpbmluZyBpbiB0aGlzIHJvdW5kCisgKiBhcmUg dHJhbnNmZXJyZWQgaW50byB0aGUgZGVmZXJyZWRfcGFnZXMgYml0bWFwLgorICoKICAqIEJpdG1h cCBpcyBib3VuZGVkIGJ5IHAybV9zaXplLgogICovCiBzdGF0aWMgaW50IHNlbmRfZGlydHlfcGFn ZXMoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGVudHJpZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBlbnRyaWVzLCBib29sIHByZWNvcHkpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4 Y2ggPSBjdHgtPnhjaDsKICAgICB4ZW5fcGZuX3QgcDsKQEAgLTM2NCwzMSArMzc4LDU3IEBAIHN0 YXRpYyBpbnQgc2VuZF9kaXJ0eV9wYWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAogICAg IERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9uZywgZGlydHlfYml0 bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+c2F2ZS5kaXJ0 eV9iaXRtYXBfaGJ1Zik7CiAKLSAgICBmb3IgKCBwID0gMCwgd3JpdHRlbiA9IDA7IHAgPCBjdHgt PnNhdmUucDJtX3NpemU7ICsrcCApCisgICAgaW50ICgqcHJlY29weV9wb2xpY3kpKHN0cnVjdCBw cmVjb3B5X3N0YXRzLCB2b2lkICopID0KKyAgICAgICAgY3R4LT5zYXZlLmNhbGxiYWNrcy0+cHJl Y29weV9wb2xpY3k7CisgICAgdm9pZCAqZGF0YSA9IGN0eC0+c2F2ZS5jYWxsYmFja3MtPmRhdGE7 CisKKyAgICBhc3NlcnQoYmF0Y2hfZW1wdHkoY3R4KSk7CisgICAgZm9yICggcCA9IDAsIHdyaXR0 ZW4gPSAwOyBwIDwgY3R4LT5zYXZlLnAybV9zaXplOyApCiAgICAgewotICAgICAgICBpZiAoICF0 ZXN0X2JpdChwLCBkaXJ0eV9iaXRtYXApICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICBpZiAoIGN0eC0+c2F2ZS5saXZlICYmIHByZWNvcHkgKQorICAgICAgICB7CisgICAgICAgICAg ICBjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uID0gcHJlY29weV9wb2xpY3koY3R4LT5zYXZlLnN0 YXRzLCBkYXRhKTsKKyAgICAgICAgICAgIGlmICggY3R4LT5zYXZlLnBvbGljeV9kZWNpc2lvbiA9 PSBYR1NfUE9MSUNZX0FCT1JUICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICggY3R4LT5zYXZlLnBv bGljeV9kZWNpc2lvbiAhPSBYR1NfUE9MSUNZX0NPTlRJTlVFX1BSRUNPUFkgKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIC8qIEFueSBvdXRzdGFuZGluZyBkaXJ0eSBwYWdlcyBhcmUg bm93IGRlZmVycmVkIHVudGlsIHRoZSBuZXh0CisgICAgICAgICAgICAgICAgICogcGhhc2Ugb2Yg dGhlIG1pZ3JhdGlvbi4gKi8KKyAgICAgICAgICAgICAgICBiaXRtYXBfb3IoY3R4LT5zYXZlLmRl ZmVycmVkX3BhZ2VzLCBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGN0 eC0+c2F2ZS5wMm1fc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCBlbnRyaWVzID4gd3JpdHRl biApCisgICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZS5ucl9kZWZlcnJlZF9wYWdlcyArPSBl bnRyaWVzIC0gd3JpdHRlbjsKKworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIHJjID0gYWRkX3RvX2JhdGNoKGN0eCwgcCk7Cisg ICAgICAgIGZvciAoIDsgcCA8IGN0eC0+c2F2ZS5wMm1fc2l6ZSAmJiAhYmF0Y2hfZnVsbChjdHgp OyArK3AgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIHRlc3RfYW5kX2NsZWFyX2JpdChw LCBkaXJ0eV9iaXRtYXApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhZGRfdG9f YmF0Y2goY3R4LCBwKTsKKyAgICAgICAgICAgICAgICArK3dyaXR0ZW47CisgICAgICAgICAgICAg ICAgKytjdHgtPnNhdmUuc3RhdHMudG90YWxfd3JpdHRlbjsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgfQorCisgICAgICAgIHJjID0gZmx1c2hfYmF0Y2goY3R4KTsKICAgICAgICAgaWYgKCByYyAp CiAgICAgICAgICAgICByZXR1cm4gcmM7CiAKLSAgICAgICAgLyogVXBkYXRlIHByb2dyZXNzIGV2 ZXJ5IDRNQiB3b3J0aCBvZiBtZW1vcnkgc2VudC4gKi8KLSAgICAgICAgaWYgKCAod3JpdHRlbiAm ICgoMVUgPDwgKDIyIC0gMTIpKSAtIDEpKSA9PSAwICkKLSAgICAgICAgICAgIHhjX3JlcG9ydF9w cm9ncmVzc19zdGVwKHhjaCwgd3JpdHRlbiwgZW50cmllcyk7Ci0KLSAgICAgICAgKyt3cml0dGVu OworICAgICAgICAvKiBVcGRhdGUgcHJvZ3Jlc3MgYWZ0ZXIgZXZlcnkgYmF0Y2ggKDRNQikgd29y dGggb2YgbWVtb3J5IHNlbnQuICovCisgICAgICAgIHhjX3JlcG9ydF9wcm9ncmVzc19zdGVwKHhj aCwgd3JpdHRlbiwgZW50cmllcyk7CiAgICAgfQogCi0gICAgcmMgPSBmbHVzaF9iYXRjaChjdHgp OwotICAgIGlmICggcmMgKQotICAgICAgICByZXR1cm4gcmM7Ci0KICAgICBpZiAoIHdyaXR0ZW4g PiBlbnRyaWVzICkKICAgICAgICAgRFBSSU5URigiQml0bWFwIGNvbnRhaW5lZCBtb3JlIGVudHJp ZXMgdGhhbiBleHBlY3RlZC4uLiIpOwogCiAgICAgeGNfcmVwb3J0X3Byb2dyZXNzX3N0ZXAoeGNo LCBlbnRyaWVzLCBlbnRyaWVzKTsKIAorIGRvbmU6CiAgICAgcmV0dXJuIGN0eC0+c2F2ZS5vcHMu Y2hlY2tfdm1fc3RhdGUoY3R4KTsKIH0KIApAQCAtMzk2LDE0ICs0MzYsMTQgQEAgc3RhdGljIGlu dCBzZW5kX2RpcnR5X3BhZ2VzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCiAgKiBTZW5kIGFs bCBwYWdlcyBpbiB0aGUgZ3Vlc3RzIHAybS4gIFVzZWQgYXMgdGhlIGZpcnN0IGl0ZXJhdGlvbiBv ZiB0aGUgbGl2ZQogICogbWlncmF0aW9uIGxvb3AsIGFuZCBmb3IgYSBub24tbGl2ZSBzYXZlLgog ICovCi1zdGF0aWMgaW50IHNlbmRfYWxsX3BhZ2VzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgp CitzdGF0aWMgaW50IHNlbmRfYWxsX3BhZ2VzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIGJv b2wgcHJlY29weSkKIHsKICAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVJfU0hBRE9XKHVuc2ln bmVkIGxvbmcsIGRpcnR5X2JpdG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZjdHgtPnNhdmUuZGlydHlfYml0bWFwX2hidWYpOwogCiAgICAgYml0bWFwX3NldChkaXJ0 eV9iaXRtYXAsIGN0eC0+c2F2ZS5wMm1fc2l6ZSk7CiAKLSAgICByZXR1cm4gc2VuZF9kaXJ0eV9w YWdlcyhjdHgsIGN0eC0+c2F2ZS5wMm1fc2l6ZSk7CisgICAgcmV0dXJuIHNlbmRfZGlydHlfcGFn ZXMoY3R4LCBjdHgtPnNhdmUucDJtX3NpemUsIHByZWNvcHkpOwogfQogCiBzdGF0aWMgaW50IGVu YWJsZV9sb2dkaXJ0eShzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQpAQCAtNDQ2LDggKzQ4Niw3 IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3Byb2dyZXNzX3N0cmluZyhzdHJ1Y3QgeGNfc3JfY29udGV4 dCAqY3R4LAogICAgIHhjX2ludGVyZmFjZSAqeGNoID0gY3R4LT54Y2g7CiAgICAgY2hhciAqbmV3 X3N0ciA9IE5VTEw7CiAKLSAgICBpZiAoIGFzcHJpbnRmKCZuZXdfc3RyLCAiRnJhbWVzIGl0ZXJh dGlvbiAldSBvZiAldSIsCi0gICAgICAgICAgICAgICAgICBpdGVyLCBjdHgtPnNhdmUubWF4X2l0 ZXJhdGlvbnMpID09IC0xICkKKyAgICBpZiAoIGFzcHJpbnRmKCZuZXdfc3RyLCAiRnJhbWVzIGl0 ZXJhdGlvbiAldSIsIGl0ZXIpID09IC0xICkKICAgICB7CiAgICAgICAgIFBFUlJPUigiVW5hYmxl IHRvIGFsbG9jYXRlIG5ldyBwcm9ncmVzcyBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwpA QCAtNDY4LDIwICs1MDcsNDcgQEAgc3RhdGljIGludCBzZW5kX21lbW9yeV9saXZlKHN0cnVjdCB4 Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKICAg ICB4Y19zaGFkb3dfb3Bfc3RhdHNfdCBzdGF0cyA9IHsgMCwgY3R4LT5zYXZlLnAybV9zaXplIH07 CiAgICAgY2hhciAqcHJvZ3Jlc3Nfc3RyID0gTlVMTDsKLSAgICB1bnNpZ25lZCB4OwogICAgIGlu dCByYzsKIAorICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9u ZywgZGlydHlfYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0 eC0+c2F2ZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7CisKKyAgICBpbnQgKCpwcmVjb3B5X3BvbGljeSko c3RydWN0IHByZWNvcHlfc3RhdHMsIHZvaWQgKikgPQorICAgICAgICBjdHgtPnNhdmUuY2FsbGJh Y2tzLT5wcmVjb3B5X3BvbGljeTsKKyAgICB2b2lkICpkYXRhID0gY3R4LT5zYXZlLmNhbGxiYWNr cy0+ZGF0YTsKKwogICAgIHJjID0gdXBkYXRlX3Byb2dyZXNzX3N0cmluZyhjdHgsICZwcm9ncmVz c19zdHIsIDApOwogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKIAotICAgIHJjID0g c2VuZF9hbGxfcGFnZXMoY3R4KTsKKyNkZWZpbmUgQ09OU1VMVF9QT0xJQ1kgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgaWYgKCBjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uID09IFhH U19QT0xJQ1lfQUJPUlQgKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgICAgIHJjID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdvdG8gb3V0OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSBpZiAoIGN0eC0+c2F2ZS5wb2xpY3lfZGVj aXNpb24gIT0gWEdTX1BPTElDWV9DT05USU5VRV9QUkVDT1BZICkgIFwKKyAgICAgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIHJjID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGdvdG8gb3V0OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgY3R4LT5zYXZl LnN0YXRzID0gKHN0cnVjdCBwcmVjb3B5X3N0YXRzKQorICAgICAgICB7CisgICAgICAgICAgICAu aXRlcmF0aW9uICAgICA9IDAsCisgICAgICAgICAgICAudG90YWxfd3JpdHRlbiA9IDAsCisgICAg ICAgICAgICAuZGlydHlfY291bnQgICA9IC0xCisgICAgICAgIH07CisgICAgcmMgPSBzZW5kX2Fs bF9wYWdlcyhjdHgsIC8qIHByZWNvcHkgKi8gdHJ1ZSk7CiAgICAgaWYgKCByYyApCiAgICAgICAg IGdvdG8gb3V0OwogCi0gICAgZm9yICggeCA9IDE7Ci0gICAgICAgICAgKCh4IDwgY3R4LT5zYXZl Lm1heF9pdGVyYXRpb25zKSAmJgotICAgICAgICAgICAoc3RhdHMuZGlydHlfY291bnQgPiBjdHgt PnNhdmUuZGlydHlfdGhyZXNob2xkKSk7ICsreCApCisgICAgLyogc2VuZF9hbGxfcGFnZXMoKSBo YXMgdXBkYXRlZCB0aGUgc3RhdHMgKi8KKyAgICBDT05TVUxUX1BPTElDWTsKKworICAgIGZvciAo IGN0eC0+c2F2ZS5zdGF0cy5pdGVyYXRpb24gPSAxOyA7ICsrY3R4LT5zYXZlLnN0YXRzLml0ZXJh dGlvbiApCiAgICAgewogICAgICAgICBpZiAoIHhjX3NoYWRvd19jb250cm9sKAogICAgICAgICAg ICAgICAgICB4Y2gsIGN0eC0+ZG9taWQsIFhFTl9ET01DVExfU0hBRE9XX09QX0NMRUFOLApAQCAt NDkzLDE4ICs1NTksNDIgQEAgc3RhdGljIGludCBzZW5kX21lbW9yeV9saXZlKHN0cnVjdCB4Y19z cl9jb250ZXh0ICpjdHgpCiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQogCi0gICAg ICAgIGlmICggc3RhdHMuZGlydHlfY291bnQgPT0gMCApCi0gICAgICAgICAgICBicmVhazsKKyAg ICAgICAgLyogQ2hlY2sgdGhlIG5ldyBkaXJ0eV9jb3VudCBhZ2FpbnN0IHRoZSBwb2xpY3kuICov CisgICAgICAgIGN0eC0+c2F2ZS5zdGF0cy5kaXJ0eV9jb3VudCA9IHN0YXRzLmRpcnR5X2NvdW50 OworICAgICAgICBjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uID0gcHJlY29weV9wb2xpY3koY3R4 LT5zYXZlLnN0YXRzLCBkYXRhKTsKKyAgICAgICAgaWYgKCBjdHgtPnNhdmUucG9saWN5X2RlY2lz aW9uID09IFhHU19QT0xJQ1lfQUJPUlQgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC0x OworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3R4 LT5zYXZlLnBvbGljeV9kZWNpc2lvbiAhPSBYR1NfUE9MSUNZX0NPTlRJTlVFX1BSRUNPUFkgKQor ICAgICAgICB7CisgICAgICAgICAgICBiaXRtYXBfb3IoY3R4LT5zYXZlLmRlZmVycmVkX3BhZ2Vz LCBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLnAybV9zaXpl KTsKKyAgICAgICAgICAgIGN0eC0+c2F2ZS5ucl9kZWZlcnJlZF9wYWdlcyArPSBzdGF0cy5kaXJ0 eV9jb3VudDsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAg ICAgICB9CisKKyAgICAgICAgLyogQWZ0ZXIgdGhpcyBwb2ludCB3ZSB3b24ndCBrbm93IGhvdyBt YW55IHBhZ2VzIGFyZSByZWFsbHkgZGlydHkgdW50aWwKKyAgICAgICAgICogdGhlIG5leHQgaXRl cmF0aW9uLiAqLworICAgICAgICBjdHgtPnNhdmUuc3RhdHMuZGlydHlfY291bnQgPSAtMTsKIAot ICAgICAgICByYyA9IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCB4 KTsKKyAgICAgICAgcmMgPSB1cGRhdGVfcHJvZ3Jlc3Nfc3RyaW5nKGN0eCwgJnByb2dyZXNzX3N0 ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZS5zdGF0cy5p dGVyYXRpb24pOwogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIGdvdG8gb3V0OwogCi0g ICAgICAgIHJjID0gc2VuZF9kaXJ0eV9wYWdlcyhjdHgsIHN0YXRzLmRpcnR5X2NvdW50KTsKKyAg ICAgICAgcmMgPSBzZW5kX2RpcnR5X3BhZ2VzKGN0eCwgc3RhdHMuZGlydHlfY291bnQsIC8qIHBy ZWNvcHkgKi8gdHJ1ZSk7CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgZ290byBvdXQ7 CisKKyAgICAgICAgLyogc2VuZF9kaXJ0eV9wYWdlcygpIGhhcyB1cGRhdGVkIHRoZSBzdGF0cyAq LworICAgICAgICBDT05TVUxUX1BPTElDWTsKICAgICB9CiAKKyN1bmRlZiBDT05TVUxUX1BPTElD WQorCiAgb3V0OgogICAgIHhjX3NldF9wcm9ncmVzc19wcmVmaXgoeGNoLCBOVUxMKTsKICAgICBm cmVlKHByb2dyZXNzX3N0cik7CkBAIC01OTUsNyArNjg1LDcgQEAgc3RhdGljIGludCBzdXNwZW5k X2FuZF9zZW5kX2RpcnR5KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgaWYgKCBjdHgt PnNhdmUubGl2ZSApCiAgICAgewogICAgICAgICByYyA9IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmco Y3R4LCAmcHJvZ3Jlc3Nfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LT5zYXZlLm1heF9pdGVyYXRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC0+c2F2ZS5zdGF0cy5pdGVyYXRpb24pOwogICAgICAgICBpZiAoIHJjICkKICAg ICAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTYxNCw3ICs3MDQsOCBAQCBzdGF0aWMgaW50 IHN1c3BlbmRfYW5kX3NlbmRfZGlydHkoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKICAgICAg ICAgfQogICAgIH0KIAotICAgIHJjID0gc2VuZF9kaXJ0eV9wYWdlcyhjdHgsIHN0YXRzLmRpcnR5 X2NvdW50ICsgY3R4LT5zYXZlLm5yX2RlZmVycmVkX3BhZ2VzKTsKKyAgICByYyA9IHNlbmRfZGly dHlfcGFnZXMoY3R4LCBzdGF0cy5kaXJ0eV9jb3VudCArIGN0eC0+c2F2ZS5ucl9kZWZlcnJlZF9w YWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29weSAqLyBmYWxzZSk7CiAg ICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gb3V0OwogCkBAIC02NDUsNyArNzM2LDcgQEAgc3Rh dGljIGludCB2ZXJpZnlfZnJhbWVzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgICAg IGdvdG8gb3V0OwogCiAgICAgeGNfc2V0X3Byb2dyZXNzX3ByZWZpeCh4Y2gsICJGcmFtZXMgdmVy aWZ5Iik7Ci0gICAgcmMgPSBzZW5kX2FsbF9wYWdlcyhjdHgpOworICAgIHJjID0gc2VuZF9hbGxf cGFnZXMoY3R4LCAvKiBwcmVjb3B5ICovIGZhbHNlKTsKICAgICBpZiAoIHJjICkKICAgICAgICAg Z290byBvdXQ7CiAKQEAgLTcxOSw3ICs4MTAsNyBAQCBzdGF0aWMgaW50IHNlbmRfZG9tYWluX21l bW9yeV9ub25saXZlKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAKICAgICB4Y19zZXRfcHJv Z3Jlc3NfcHJlZml4KHhjaCwgIkZyYW1lcyIpOwogCi0gICAgcmMgPSBzZW5kX2FsbF9wYWdlcyhj dHgpOworICAgIHJjID0gc2VuZF9hbGxfcGFnZXMoY3R4LCAvKiBwcmVjb3B5ICovIGZhbHNlKTsK ICAgICBpZiAoIHJjICkKICAgICAgICAgZ290byBlcnI7CiAKQEAgLTkxMCw4ICsxMDAxLDcgQEAg c3RhdGljIGludCBzYXZlKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIHVpbnQxNl90IGd1ZXN0 X3R5cGUpCiB9OwogCiBpbnQgeGNfZG9tYWluX3NhdmUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBp b19mZCwgdWludDMyX3QgZG9tLAotICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1heF9pdGVy cywgdWludDMyX3QgbWF4X2ZhY3RvciwgdWludDMyX3QgZmxhZ3MsCi0gICAgICAgICAgICAgICAg ICAgc3RydWN0IHNhdmVfY2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBodm0sCisgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZmxhZ3MsIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyogY2FsbGJhY2tz LCBpbnQgaHZtLAogICAgICAgICAgICAgICAgICAgIHhjX21pZ3JhdGlvbl9zdHJlYW1fdCBzdHJl YW1fdHlwZSwgaW50IHJlY3ZfZmQpCiB7CiAgICAgc3RydWN0IHhjX3NyX2NvbnRleHQgY3R4ID0K QEAgLTkzMiwyNSArMTAyMiwxNyBAQCBpbnQgeGNfZG9tYWluX3NhdmUoeGNfaW50ZXJmYWNlICp4 Y2gsIGludCBpb19mZCwgdWludDMyX3QgZG9tLAogICAgICAgICAgICBzdHJlYW1fdHlwZSA9PSBY Q19NSUdfU1RSRUFNX1JFTVVTIHx8CiAgICAgICAgICAgIHN0cmVhbV90eXBlID09IFhDX01JR19T VFJFQU1fQ09MTyk7CiAKLSAgICAvKgotICAgICAqIFRPRE86IEZpbmQgc29tZSB0aW1lIHRvIGJl dHRlciB0d2VhayB0aGUgbGl2ZSBtaWdyYXRpb24gYWxnb3JpdGhtLgotICAgICAqCi0gICAgICog VGhlc2UgcGFyYW1ldGVycyBhcmUgYmV0dGVyIHRoYW4gdGhlIGxlZ2FjeSBhbGdvcml0aG0gZXNw ZWNpYWxseSBmb3IKLSAgICAgKiBidXN5IGd1ZXN0cy4KLSAgICAgKi8KLSAgICBjdHguc2F2ZS5t YXhfaXRlcmF0aW9ucyA9IDU7Ci0gICAgY3R4LnNhdmUuZGlydHlfdGhyZXNob2xkID0gNTA7Ci0K ICAgICAvKiBTYW5pdHkgY2hlY2tzIGZvciBjYWxsYmFja3MuICovCiAgICAgaWYgKCBodm0gKQog ICAgICAgICBhc3NlcnQoY2FsbGJhY2tzLT5zd2l0Y2hfcWVtdV9sb2dkaXJ0eSk7CisgICAgaWYg KCBjdHguc2F2ZS5saXZlICkKKyAgICAgICAgYXNzZXJ0KGNhbGxiYWNrcy0+cHJlY29weV9wb2xp Y3kpOwogICAgIGlmICggY3R4LnNhdmUuY2hlY2twb2ludGVkICkKICAgICAgICAgYXNzZXJ0KGNh bGxiYWNrcy0+Y2hlY2twb2ludCAmJiBjYWxsYmFja3MtPmFmdGVyY29weSk7CiAgICAgaWYgKCBj dHguc2F2ZS5jaGVja3BvaW50ZWQgPT0gWENfTUlHX1NUUkVBTV9DT0xPICkKICAgICAgICAgYXNz ZXJ0KGNhbGxiYWNrcy0+d2FpdF9jaGVja3BvaW50KTsKIAotICAgIERQUklOVEYoImZkICVkLCBk b20gJXUsIG1heF9pdGVycyAldSwgbWF4X2ZhY3RvciAldSwgZmxhZ3MgJXUsIGh2bSAlZCIsCi0g ICAgICAgICAgICBpb19mZCwgZG9tLCBtYXhfaXRlcnMsIG1heF9mYWN0b3IsIGZsYWdzLCBodm0p OworICAgIERQUklOVEYoImZkICVkLCBkb20gJXUsIGZsYWdzICV1LCBodm0gJWQiLCBpb19mZCwg ZG9tLCBmbGFncywgaHZtKTsKIAogICAgIGlmICggeGNfZG9tYWluX2dldGluZm8oeGNoLCBkb20s IDEsICZjdHguZG9taW5mbykgIT0gMSApCiAgICAgewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfZG9tX3NhdmUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zYXZlLmMKaW5kZXggNzdm ZTMwZS4uNmQyOGNjZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3NhdmUuYwor KysgYi90b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5jCkBAIC0zMjgsNiArMzI4LDI1IEBAIGlu dCBsaWJ4bF9fc2F2ZV9lbXVsYXRvcl94ZW5zdG9yZV9kYXRhKGxpYnhsX19kb21haW5fc2F2ZV9z dGF0ZSAqZHNzLAogICAgIHJldHVybiByYzsKIH0KIAorLyoKKyAqIFRoaXMgaXMgdGhlIGxpdmUg bWlncmF0aW9uIHByZWNvcHkgcG9saWN5IC0gaXQncyBjYWxsZWQgcGVyaW9kaWNhbGx5IGR1cmlu ZworICogdGhlIHByZWNvcHkgcGhhc2Ugb2YgbGl2ZSBtaWdyYXRpb25zLCBhbmQgaXMgcmVzcG9u c2libGUgZm9yIGRlY2lkaW5nIHdoZW4KKyAqIHRoZSBwcmVjb3B5IHBoYXNlIHNob3VsZCB0ZXJt aW5hdGUgYW5kIHdoYXQgc2hvdWxkIGJlIGRvbmUgbmV4dC4KKyAqCisgKiBUaGUgcG9saWN5IGlt cGxlbWVudGVkIGhlcmUgYmVoYXZlcyBpZGVudGljYWxseSB0byB0aGUgcG9saWN5IHByZXZpb3Vz bHkKKyAqIGhhcmQtY29kZWQgaW50byB4Y19kb21haW5fc2F2ZSgpIC0gaXQgcHJvY2VlZHMgdG8g dGhlIHN0b3AtYW5kLWNvcHkgcGhhc2Ugb2YKKyAqIHRoZSBsaXZlIG1pZ3JhdGlvbiB3aGVuIHRo ZXJlIGFyZSBlaXRoZXIgZmV3ZXIgdGhhbiA1MCBkaXJ0eSBwYWdlcywgb3IgbW9yZQorICogdGhh biA1IHByZWNvcHkgcm91bmRzIGhhdmUgY29tcGxldGVkLgorICovCitzdGF0aWMgaW50IGxpYnhs X19zYXZlX2xpdmVfbWlncmF0aW9uX3NpbXBsZV9wcmVjb3B5X3BvbGljeSgKKyAgICBzdHJ1Y3Qg cHJlY29weV9zdGF0cyBzdGF0cywgdm9pZCAqdXNlcikKK3sKKyAgICByZXR1cm4gKChzdGF0cy5k aXJ0eV9jb3VudCA+PSAwICYmIHN0YXRzLmRpcnR5X2NvdW50IDwgNTApIHx8CisgICAgICAgICAg ICBzdGF0cy5pdGVyYXRpb24gPj0gNSkKKyAgICAgICAgPyBYR1NfUE9MSUNZX1NUT1BfQU5EX0NP UFkKKyAgICAgICAgOiBYR1NfUE9MSUNZX0NPTlRJTlVFX1BSRUNPUFk7Cit9CisKIC8qLS0tLS0g bWFpbiBjb2RlIGZvciBzYXZpbmcsIGluIG9yZGVyIG9mIGV4ZWN1dGlvbiAtLS0tLSovCiAKIHZv aWQgbGlieGxfX2RvbWFpbl9zYXZlKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2RvbWFpbl9zYXZl X3N0YXRlICpkc3MpCkBAIC00MDEsNiArNDIwLDcgQEAgdm9pZCBsaWJ4bF9fZG9tYWluX3NhdmUo bGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZG9tYWluX3NhdmVfc3RhdGUgKmRzcykKICAgICBpZiAo ZHNzLT5jaGVja3BvaW50ZWRfc3RyZWFtID09IExJQlhMX0NIRUNLUE9JTlRFRF9TVFJFQU1fTk9O RSkKICAgICAgICAgY2FsbGJhY2tzLT5zdXNwZW5kID0gbGlieGxfX2RvbWFpbl9zdXNwZW5kX2Nh bGxiYWNrOwogCisgICAgY2FsbGJhY2tzLT5wcmVjb3B5X3BvbGljeSA9IGxpYnhsX19zYXZlX2xp dmVfbWlncmF0aW9uX3NpbXBsZV9wcmVjb3B5X3BvbGljeTsKICAgICBjYWxsYmFja3MtPnN3aXRj aF9xZW11X2xvZ2RpcnR5ID0gbGlieGxfX2RvbWFpbl9zdXNwZW5kX2NvbW1vbl9zd2l0Y2hfcWVt dV9sb2dkaXJ0eTsKIAogICAgIGRzcy0+c3dzLmFvICA9IGRzcy0+YW87CmRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9zYXZlX2NhbGxvdXQuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVf Y2FsbG91dC5jCmluZGV4IDQ2Yjg5MmMuLjAyNmI1NzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhs L2xpYnhsX3NhdmVfY2FsbG91dC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfY2FsbG91 dC5jCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgbGlieGxfX3hjX2RvbWFpbl9zYXZlKGxpYnhsX19l Z2MgKmVnYywgbGlieGxfX2RvbWFpbl9zYXZlX3N0YXRlICpkc3MsCiAgICAgICAgIGxpYnhsX19z cm1fY2FsbG91dF9lbnVtY2FsbGJhY2tzX3NhdmUoJnNocy0+Y2FsbGJhY2tzLnNhdmUuYSk7CiAK ICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGFyZ251bXNbXSA9IHsKLSAgICAgICAgZHNzLT5kb21p ZCwgMCwgMCwgZHNzLT54Y2ZsYWdzLCBkc3MtPmh2bSwKLSAgICAgICAgY2JmbGFncywgZHNzLT5j aGVja3BvaW50ZWRfc3RyZWFtLAorICAgICAgICBkc3MtPmRvbWlkLCBkc3MtPnhjZmxhZ3MsIGRz cy0+aHZtLCBjYmZsYWdzLCBkc3MtPmNoZWNrcG9pbnRlZF9zdHJlYW0sCiAgICAgfTsKIAogICAg IHNocy0+YW8gPSBhbzsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfaGVscGVy LmMgYi90b29scy9saWJ4bC9saWJ4bF9zYXZlX2hlbHBlci5jCmluZGV4IGQzZGVmNmIuLjAyNDFh NmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfaGVscGVyLmMKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfc2F2ZV9oZWxwZXIuYwpAQCAtMjUxLDggKzI1MSw2IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgaW9fZmQgPSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXRvaShORVhUQVJHKTsKICAgICAgICAgcmVjdl9mZCA9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXRvaShORVhUQVJHKTsKICAgICAgICAgdWludDMyX3QgZG9tID0gICAg ICAgICAgICAgICAgICAgICAgc3RydG91bChORVhUQVJHLDAsMTApOwotICAgICAgICB1aW50MzJf dCBtYXhfaXRlcnMgPSAgICAgICAgICAgICAgICBzdHJ0b3VsKE5FWFRBUkcsMCwxMCk7Ci0gICAg ICAgIHVpbnQzMl90IG1heF9mYWN0b3IgPSAgICAgICAgICAgICAgIHN0cnRvdWwoTkVYVEFSRyww LDEwKTsKICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSAgICAgICAgICAgICAgICAgICAgc3RydG91 bChORVhUQVJHLDAsMTApOwogICAgICAgICBpbnQgaHZtID0gICAgICAgICAgICAgICAgICAgICAg ICAgICBhdG9pKE5FWFRBUkcpOwogICAgICAgICB1bnNpZ25lZCBjYmZsYWdzID0gICAgICAgICAg ICAgICAgICBzdHJ0b3VsKE5FWFRBUkcsMCwxMCk7CkBAIC0yNjQsOSArMjYyLDggQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICBzdGFydHVwKCJzYXZlIik7CiAgICAg ICAgIHNldHVwX3NpZ25hbHMoc2F2ZV9zaWduYWxfaGFuZGxlcik7CiAKLSAgICAgICAgciA9IHhj X2RvbWFpbl9zYXZlKHhjaCwgaW9fZmQsIGRvbSwgbWF4X2l0ZXJzLCBtYXhfZmFjdG9yLCBmbGFn cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZWxwZXJfc2F2ZV9jYWxsYmFja3MsIGh2 bSwgc3RyZWFtX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWN2X2ZkKTsKKyAg ICAgICAgciA9IHhjX2RvbWFpbl9zYXZlKHhjaCwgaW9fZmQsIGRvbSwgZmxhZ3MsICZoZWxwZXJf c2F2ZV9jYWxsYmFja3MsIGh2bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90 eXBlLCByZWN2X2ZkKTsKICAgICAgICAgY29tcGxldGUocik7CiAKICAgICB9IGVsc2UgaWYgKCFz dHJjbXAobW9kZSwiLS1yZXN0b3JlLWRvbWFpbiIpKSB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4 bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsIGIvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dl bi5wbAppbmRleCAyNzg0NWJiLi41MGM5N2I0IDEwMDc1NQotLS0gYS90b29scy9saWJ4bC9saWJ4 bF9zYXZlX21zZ3NfZ2VuLnBsCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4u cGwKQEAgLTMzLDYgKzMzLDcgQEAgb3VyIEBtc2dzID0gKAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICd4ZW5fcGZuX3QnLCAnY29uc29sZV9nZm4nXSBdLAog ICAgIFsgIDksICdzclcnLCAgICAiY29tcGxldGUiLCAgICAgICAgICAgICAgW3F3KGludCByZXR2 YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZXJybm92YWwpXSBdLAorICAgIFsgMTAsICdzY3hXJywgICAicHJlY29weV9wb2xpY3kiLCBbJ3N0 cnVjdCBwcmVjb3B5X3N0YXRzJywgJ3N0YXRzJ10gXQogKTsKIAogIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0MSw3ICsxNDIsOCBAQCBzdGF0aWMgdm9pZCBi eXRlc19wdXQodW5zaWduZWQgY2hhciAqY29uc3QgYnVmLCBpbnQgKmxlbiwKIAogRU5ECiAKLWZv cmVhY2ggbXkgJHNpbXBsZXR5cGUgKHF3KGludCB1aW50MTZfdCB1aW50MzJfdCB1bnNpZ25lZCks ICd1bnNpZ25lZCBsb25nJywgJ3hlbl9wZm5fdCcpIHsKK2ZvcmVhY2ggbXkgJHNpbXBsZXR5cGUg KHF3KGludCB1aW50MTZfdCB1aW50MzJfdCB1bnNpZ25lZCksCisgICAgICAgICAgICAgICAgICAg ICAgICAndW5zaWduZWQgbG9uZycsICd4ZW5fcGZuX3QnLCAnc3RydWN0IHByZWNvcHlfc3RhdHMn KSB7CiAgICAgbXkgJHR5cGVpZCA9IHR5cGVpZCgkc2ltcGxldHlwZSk7CiAgICAgJG91dF9ib2R5 eydjYWxsb3V0J30gLj0gPDxFTkQ7CiBzdGF0aWMgaW50ICR7dHlwZWlkfV9nZXQoY29uc3QgdW5z aWduZWQgY2hhciAqKm1zZywKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==