From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH 21/60] xen/sched: make rt scheduler vcpu agnostic. Date: Tue, 28 May 2019 12:32:34 +0200 Message-ID: <20190528103313.1343-22-jgross@suse.com> References: <20190528103313.1343-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVZQB-0004mV-7K for xen-devel@lists.xenproject.org; Tue, 28 May 2019 10:33:31 +0000 In-Reply-To: <20190528103313.1343-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , George Dunlap , Meng Xu , Dario Faggioli List-Id: xen-devel@lists.xenproject.org U3dpdGNoIHJ0IHNjaGVkdWxlciBjb21wbGV0ZWx5IGZyb20gdmNwdSB0byBzY2hlZF91bml0IHVz YWdlLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0K IHhlbi9jb21tb24vc2NoZWRfcnQuYyB8IDM1NiArKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCsp LCAxODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIv eGVuL2NvbW1vbi9zY2hlZF9ydC5jCmluZGV4IDViMWY2NDU5Y2MuLjU3ODgzYmQwYTAgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMK QEAgLTM2LDcgKzM2LDcgQEAKICAqCiAgKiBNaWdyYXRpb24gY29tcGVuc2F0aW9uIGFuZCByZXNp c3QgbGlrZSBjcmVkaXQyIHRvIGJldHRlciB1c2UgY2FjaGU7CiAgKiBMb2NrIEhvbGRlciBQcm9i bGVtLCB1c2luZyB5aWVsZD8KLSAqIFNlbGYgc3dpdGNoIHByb2JsZW06IFZDUFVzIG9mIHRoZSBz YW1lIGRvbWFpbiBtYXkgcHJlZW1wdCBlYWNoIG90aGVyOworICogU2VsZiBzd2l0Y2ggcHJvYmxl bTogVU5JVHMgb2YgdGhlIHNhbWUgZG9tYWluIG1heSBwcmVlbXB0IGVhY2ggb3RoZXI7CiAgKi8K IAogLyoKQEAgLTQ0LDMwICs0NCwzMCBAQAogICoKICAqIFRoaXMgc2NoZWR1bGVyIGZvbGxvd3Mg dGhlIFByZWVtcHRpdmUgR2xvYmFsIEVhcmxpZXN0IERlYWRsaW5lIEZpcnN0IChFREYpCiAgKiB0 aGVvcnkgaW4gcmVhbC10aW1lIGZpZWxkLgotICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQsIHRo ZSBWQ1BVIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgotICogVGhl IHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBWQ1BVIHRvIHJ1biBvbiBh IGZlYXNpYmxlIFBDUFUuCi0gKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFZDUFUgY2FuIHJ1 biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCi0gKiBoYXMgYSBsb3dlci1w cmlvcml0eSBWQ1BVIHJ1bm5pbmcgb24gaXQuKQorICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQs IHRoZSBVTklUIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgorICog VGhlIHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBVTklUIHRvIHJ1biBv biBhIGZlYXNpYmxlIFBDUFUuCisgKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFVOSVQgY2Fu IHJ1biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCisgKiBoYXMgYSBsb3dl ci1wcmlvcml0eSBVTklUIHJ1bm5pbmcgb24gaXQuKQogICoKLSAqIEVhY2ggVkNQVSBoYXMgYSBk ZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5kIGEgZXh0cmF0aW1lIGZsYWcKLSAqIFRoZSBkZWFk bGluZSBvZiBhIFZDUFUgaXMgYXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZDsKLSAqIEEgVkNQVSBo YXMgaXRzIGJ1ZGdldCByZXBsZW5pc2hlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcGVyaW9k OwotICogV2hpbGUgc2NoZWR1bGVkLCBhIFZDUFUgYnVybnMgaXRzIGJ1ZGdldC4KLSAqIFRoZSBW Q1BVIG5lZWRzIHRvIGZpbmlzaCBpdHMgYnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFj aCBwZXJpb2Q7Ci0gKiBUaGUgVkNQVSBkaXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUg ZW5kIG9mIGVhY2ggcGVyaW9kLgotICogV2hlbiBhIFZDUFUgcnVucyBvdXQgb2YgYnVkZ2V0IGlu IGEgcGVyaW9kLCBpZiBpdHMgZXh0cmF0aW1lIGZsYWcgaXMgc2V0LAotICogdGhlIFZDUFUgaW5j cmVhc2VzIGl0cyBwcmlvcml0eV9sZXZlbCBieSAxIGFuZCByZWZpbGxzIGl0cyBidWRnZXQ7IG90 aGVyd2lzZSwKKyAqIEVhY2ggVU5JVCBoYXMgYSBkZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5k IGEgZXh0cmF0aW1lIGZsYWcKKyAqIFRoZSBkZWFkbGluZSBvZiBhbiBVTklUIGlzIGF0IHRoZSBl bmQgb2YgZWFjaCBwZXJpb2Q7CisgKiBBbiBVTklUIGhhcyBpdHMgYnVkZ2V0IHJlcGxlbmlzaGVk IGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBwZXJpb2Q7CisgKiBXaGlsZSBzY2hlZHVsZWQsIGFu IFVOSVQgYnVybnMgaXRzIGJ1ZGdldC4KKyAqIFRoZSBVTklUIG5lZWRzIHRvIGZpbmlzaCBpdHMg YnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFjaCBwZXJpb2Q7CisgKiBUaGUgVU5JVCBk aXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUgZW5kIG9mIGVhY2ggcGVyaW9kLgorICog V2hlbiBhbiBVTklUIHJ1bnMgb3V0IG9mIGJ1ZGdldCBpbiBhIHBlcmlvZCwgaWYgaXRzIGV4dHJh dGltZSBmbGFnIGlzIHNldCwKKyAqIHRoZSBVTklUIGluY3JlYXNlcyBpdHMgcHJpb3JpdHlfbGV2 ZWwgYnkgMSBhbmQgcmVmaWxscyBpdHMgYnVkZ2V0OyBvdGhlcndpc2UsCiAgKiBpdCBoYXMgdG8g d2FpdCB1bnRpbCBuZXh0IHBlcmlvZC4KICAqCi0gKiBFYWNoIFZDUFUgaXMgaW1wbGVtZW50ZWQg YXMgYSBkZWZlcmFibGUgc2VydmVyLgotICogV2hlbiBhIFZDUFUgaGFzIGEgdGFzayBydW5uaW5n IG9uIGl0LCBpdHMgYnVkZ2V0IGlzIGNvbnRpbnVvdXNseSBidXJuZWQ7Ci0gKiBXaGVuIGEgVkNQ VSBoYXMgbm8gdGFzayBidXQgd2l0aCBidWRnZXQgbGVmdCwgaXRzIGJ1ZGdldCBpcyBwcmVzZXJ2 ZWQuCisgKiBFYWNoIFVOSVQgaXMgaW1wbGVtZW50ZWQgYXMgYSBkZWZlcmFibGUgc2VydmVyLgor ICogV2hlbiBhbiBVTklUIGhhcyBhIHRhc2sgcnVubmluZyBvbiBpdCwgaXRzIGJ1ZGdldCBpcyBj b250aW51b3VzbHkgYnVybmVkOworICogV2hlbiBhbiBVTklUIGhhcyBubyB0YXNrIGJ1dCB3aXRo IGJ1ZGdldCBsZWZ0LCBpdHMgYnVkZ2V0IGlzIHByZXNlcnZlZC4KICAqCiAgKiBRdWV1ZSBzY2hl bWU6CiAgKiBBIGdsb2JhbCBydW5xdWV1ZSBhbmQgYSBnbG9iYWwgZGVwbGV0ZWRxdWV1ZSBmb3Ig ZWFjaCBDUFUgcG9vbC4KLSAqIFRoZSBydW5xdWV1ZSBob2xkcyBhbGwgcnVubmFibGUgVkNQVXMg d2l0aCBidWRnZXQsCisgKiBUaGUgcnVucXVldWUgaG9sZHMgYWxsIHJ1bm5hYmxlIFVOSVRzIHdp dGggYnVkZ2V0LAogICogc29ydGVkIGJ5IHByaW9yaXR5X2xldmVsIGFuZCBkZWFkbGluZTsKLSAq IFRoZSBkZXBsZXRlZHF1ZXVlIGhvbGRzIGFsbCBWQ1BVcyB3aXRob3V0IGJ1ZGdldCwgdW5zb3J0 ZWQ7CisgKiBUaGUgZGVwbGV0ZWRxdWV1ZSBob2xkcyBhbGwgVU5JVHMgd2l0aG91dCBidWRnZXQs IHVuc29ydGVkOwogICoKICAqIE5vdGU6IGNwdW1hc2sgYW5kIGNwdXBvb2wgaXMgc3VwcG9ydGVk LgogICovCkBAIC04Miw3ICs4Miw3IEBACiAgKiBpbiBzY2hlZHVsZS5jCiAgKgogICogVGhlIGZ1 bmN0aW9ucyBpbnZvbGVzIFJ1blEgYW5kIG5lZWRzIHRvIGdyYWIgbG9ja3MgYXJlOgotICogICAg dmNwdV9pbnNlcnQsIHZjcHVfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAorICog ICAgdW5pdF9pbnNlcnQsIHVuaXRfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAog ICovCiAKIApAQCAtOTUsNyArOTUsNyBAQAogCiAvKgogICogTWF4IHBlcmlvZDogbWF4IGRlbHRh IG9mIHRpbWUgdHlwZSwgYmVjYXVzZSBwZXJpb2QgaXMgYWRkZWQgdG8gdGhlIHRpbWUKLSAqIGEg dmNwdSBhY3RpdmF0ZXMsIHNvIHRoaXMgbXVzdCBub3Qgb3ZlcmZsb3cuCisgKiBhbiB1bml0IGFj dGl2YXRlcywgc28gdGhpcyBtdXN0IG5vdCBvdmVyZmxvdy4KICAqIE1pbiBwZXJpb2Q6IDEwIHVz LCBjb25zaWRlcmluZyB0aGUgc2NoZWR1bGluZyBvdmVyaGVhZCAod2hlbiBwZXJpb2QgaXMKICAq IHRvbyBsb3csIHNjaGVkdWxpbmcgaXMgaW52b2tlZCB0b28gZnJlcXVlbnRseSwgY2F1c2luZyBo aWdoIG92ZXJoZWFkKS4KICAqLwpAQCAtMTIxLDEyICsxMjEsMTIgQEAKICAqIEZsYWdzCiAgKi8K IC8qCi0gKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB2Y3B1IGVpdGhlciBydW5uaW5nIG9uLCBv ciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCisgKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB1bml0 IGVpdGhlciBydW5uaW5nIG9uLCBvciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCiAgKiBhIHBoeWlz Y2FsIGNwdT8KICAqICsgQWNjZXNzZWQgb25seSB3aXRoIGdsb2JhbCBsb2NrIGhlbGQuCiAgKiAr IFNldCB3aGVuIGNob3NlbiBhcyBuZXh0IGluIHJ0X3NjaGVkdWxlKCkuCiAgKiArIENsZWFyZWQg YWZ0ZXIgY29udGV4dCBzd2l0Y2ggaGFzIGJlZW4gc2F2ZWQgaW4gcnRfY29udGV4dF9zYXZlZCgp Ci0gKiArIENoZWNrZWQgaW4gdmNwdV93YWtlIHRvIHNlZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBS dW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCisgKiArIENoZWNrZWQgaW4gdW5pdF93YWtlIHRvIHNl ZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBSdW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCiAgKiAgIHNl dCBSVERTX2RlbGF5ZWRfcnVucV9hZGQKICAqICsgQ2hlY2tlZCB0byBiZSBmYWxzZSBpbiBydW5x X2luc2VydC4KICAqLwpAQCAtMTQ2LDE1ICsxNDYsMTUgQEAKIC8qCiAgKiBSVERTX2RlcGxldGVk OiBEb2VzIHRoaXMgdmNwIHJ1biBvdXQgb2YgYnVkZ2V0PwogICogVGhpcyBmbGFnIGlzCi0gKiAr IHNldCBpbiBidXJuX2J1ZGdldCgpIGlmIGEgdmNwdSBoYXMgemVybyBidWRnZXQgbGVmdDsKKyAq ICsgc2V0IGluIGJ1cm5fYnVkZ2V0KCkgaWYgYW4gdW5pdCBoYXMgemVybyBidWRnZXQgbGVmdDsK ICAqICsgY2xlYXJlZCBhbmQgY2hlY2tlZCBpbiB0aGUgcmVwZW5pc2htZW50IGhhbmRsZXIsCi0g KiAgIGZvciB0aGUgdmNwdXMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCisgKiAgIGZvciB0 aGUgdW5pdHMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCiAgKi8KICNkZWZpbmUgX19SVERT X2RlcGxldGVkICAgICAzCiAjZGVmaW5lIFJURFNfZGVwbGV0ZWQgKDE8PF9fUlREU19kZXBsZXRl ZCkKIAogLyoKLSAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHZjcHUgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKKyAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHVuaXQgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKICAqIG5vdCBwYXJ0IG9mIGFueSByZWFsLXRpbWUgcmVzZXJ2YXRpb24sIGFuZCB3 b3VsZCB0aGVyZWZvcmUKICAqIGJlIG90aGVyd2lzZSBsZWZ0IGlkbGU/CiAgKi8KQEAgLTE4Mywx MSArMTgzLDExIEBAIHN0cnVjdCBydF9wcml2YXRlIHsKICAgICBzcGlubG9ja190IGxvY2s7ICAg ICAgICAgICAgLyogdGhlIGdsb2JhbCBjb2Fyc2UtZ3JhaW5lZCBsb2NrICovCiAgICAgc3RydWN0 IGxpc3RfaGVhZCBzZG9tOyAgICAgIC8qIGxpc3Qgb2YgYXZhaWxhbGJlIGRvbWFpbnMsIHVzZWQg Zm9yIGR1bXAgKi8KIAotICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucTsgICAgICAvKiBvcmRlcmVk IGxpc3Qgb2YgcnVubmFibGUgdmNwdXMgKi8KLSAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlcGxldGVk cTsgLyogdW5vcmRlcmVkIGxpc3Qgb2YgZGVwbGV0ZWQgdmNwdXMgKi8KKyAgICBzdHJ1Y3QgbGlz dF9oZWFkIHJ1bnE7ICAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHVuaXRzICovCisg ICAgc3RydWN0IGxpc3RfaGVhZCBkZXBsZXRlZHE7IC8qIHVub3JkZXJlZCBsaXN0IG9mIGRlcGxl dGVkIHVuaXRzICovCiAKICAgICBzdHJ1Y3QgdGltZXIgcmVwbF90aW1lcjsgICAgLyogcmVwbGVu aXNobWVudCB0aW1lciAqLwotICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHE7ICAgICAvKiBvcmRl cmVkIGxpc3Qgb2YgdmNwdXMgdGhhdCBuZWVkIHJlcGxlbmlzaG1lbnQgKi8KKyAgICBzdHJ1Y3Qg bGlzdF9oZWFkIHJlcGxxOyAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHVuaXRzIHRoYXQgbmVlZCBy ZXBsZW5pc2htZW50ICovCiAKICAgICBjcHVtYXNrX3QgdGlja2xlZDsgICAgICAgICAgLyogY3B1 cyBiZWVuIHRpY2tsZWQgKi8KIH07CkBAIC0xOTksMTggKzE5OSwxOCBAQCBzdHJ1Y3QgcnRfdW5p dCB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBxX2VsZW07ICAgICAvKiBvbiB0aGUgcnVucS9kZXBs ZXRlZHEgbGlzdCAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHFfZWxlbTsgLyogb24gdGhl IHJlcGxlbmlzaG1lbnQgZXZlbnRzIGxpc3QgKi8KIAotICAgIC8qIFZDUFUgcGFyYW1ldGVycywg aW4gbmFub3NlY29uZHMgKi8KKyAgICAvKiBVTklUIHBhcmFtZXRlcnMsIGluIG5hbm9zZWNvbmRz ICovCiAgICAgc190aW1lX3QgcGVyaW9kOwogICAgIHNfdGltZV90IGJ1ZGdldDsKIAotICAgIC8q IFZDUFUgY3VycmVudCBpbmZvcm1hdGlvbiBpbiBuYW5vc2Vjb25kICovCisgICAgLyogVU5JVCBj dXJyZW50IGluZm9ybWF0aW9uIGluIG5hbm9zZWNvbmQgKi8KICAgICBzX3RpbWVfdCBjdXJfYnVk Z2V0OyAgICAgICAgIC8qIGN1cnJlbnQgYnVkZ2V0ICovCiAgICAgc190aW1lX3QgbGFzdF9zdGFy dDsgICAgICAgICAvKiBsYXN0IHN0YXJ0IHRpbWUgKi8KICAgICBzX3RpbWVfdCBjdXJfZGVhZGxp bmU7ICAgICAgIC8qIGN1cnJlbnQgZGVhZGxpbmUgZm9yIEVERiAqLwogCiAgICAgLyogVXAtcG9p bnRlcnMgKi8KICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwotICAgIHN0cnVjdCB2Y3B1ICp2Y3B1 OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogCiAgICAgdW5zaWduZWQgcHJpb3JpdHlf bGV2ZWw7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzX2V4dHJh dGltZShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICogYW5kIHRoZSByZXBsZW5pc2htZW50 IGV2ZW50cyBxdWV1ZS4KICAqLwogc3RhdGljIGludAotdmNwdV9vbl9xKGNvbnN0IHN0cnVjdCBy dF91bml0ICpzdmMpCit1bml0X29uX3EoY29uc3Qgc3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAg IHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5xX2VsZW0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBA IHJlcGxxX2VsZW0oc3RydWN0IGxpc3RfaGVhZCAqZWxlbSkKIH0KIAogc3RhdGljIGludAotdmNw dV9vbl9yZXBscShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQordW5pdF9vbl9yZXBscShjb25z dCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogewogICAgIHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5y ZXBscV9lbGVtKTsKIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCB2Y3B1X29uX3JlcGxxKGNvbnN0IHN0 cnVjdCBydF91bml0ICpzdmMpCiAgKiBPdGhlcndpc2UsIHJldHVybiB2YWx1ZSA8IDAKICAqLwog c3RhdGljIHNfdGltZV90Ci1jb21wYXJlX3ZjcHVfcHJpb3JpdHkoY29uc3Qgc3RydWN0IHJ0X3Vu aXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCitjb21wYXJlX3VuaXRfcHJpb3JpdHko Y29uc3Qgc3RydWN0IHJ0X3VuaXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCiB7CiAg ICAgaW50IHByaW8gPSB2Mi0+cHJpb3JpdHlfbGV2ZWwgLSB2MS0+cHJpb3JpdHlfbGV2ZWw7CiAK QEAgLTMwMiwxNSArMzAyLDE1IEBAIGNvbXBhcmVfdmNwdV9wcmlvcml0eShjb25zdCBzdHJ1Y3Qg cnRfdW5pdCAqdjEsIGNvbnN0IHN0cnVjdCBydF91bml0ICp2MikKIH0KIAogLyoKLSAqIERlYnVn IHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1hdGlvbgorICogRGVidWcgcmVsYXRl ZCBjb2RlLCBkdW1wIHVuaXQvY3B1IGluZm9ybWF0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1ydF9k dW1wX3ZjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5p dCAqc3ZjKQorcnRfZHVtcF91bml0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qg c3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAgICBjcHVtYXNrX3QgKmNwdXBvb2xfbWFzaywgKm1h c2s7CiAKICAgICBBU1NFUlQoc3ZjICE9IE5VTEwpOwotICAgIC8qIGlkbGUgdmNwdSAqLworICAg IC8qIGlkbGUgdW5pdCAqLwogICAgIGlmKCBzdmMtPnNkb20gPT0gTlVMTCApCiAgICAgewogICAg ICAgICBwcmludGsoIlxuIik7CkBAIC0zMjEsMjAgKzMyMSwyMCBAQCBydF9kdW1wX3ZjcHUoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAg ICAqIFdlIGNhbid0IGp1c3QgdXNlICdjcHVtYXNrX3NjcmF0Y2gnIGJlY2F1c2UgdGhlIGR1bXBp bmcgY2FuCiAgICAgICogaGFwcGVuIGZyb20gYSBwQ1BVIG91dHNpZGUgb2YgdGhpcyBzY2hlZHVs ZXIncyBjcHVwb29sLCBhbmQKICAgICAgKiBoZW5jZSBpdCdzIG5vdCByaWdodCB0byB1c2UgaXRz IHBDUFUncyBzY3JhdGNoIG1hc2suCi0gICAgICogT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIHNh ZmUgdG8gdXNlIHN2Yy0+dmNwdS0+cHJvY2Vzc29yJ3MKKyAgICAgKiBPbiB0aGUgb3RoZXIgaGFu ZCwgaXQgaXMgc2FmZSB0byB1c2Ugc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KSdzCiAgICAgICog b3duIHNjcmF0Y2ggc3BhY2UsIHNpbmNlIHdlIGhvbGQgdGhlIHJ1bnF1ZXVlIGxvY2suCiAgICAg ICovCi0gICAgbWFzayA9IGNwdW1hc2tfc2NyYXRjaF9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3Ip OworICAgIG1hc2sgPSBjcHVtYXNrX3NjcmF0Y2hfY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCkpOwogCi0gICAgY3B1cG9vbF9tYXNrID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayhzdmMtPnZj cHUtPmRvbWFpbik7Ci0gICAgY3B1bWFza19hbmQobWFzaywgY3B1cG9vbF9tYXNrLCBzdmMtPnZj cHUtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICBjcHVwb29sX21hc2sgPSBj cHVwb29sX2RvbWFpbl9jcHVtYXNrKHN2Yy0+dW5pdC0+ZG9tYWluKTsKKyAgICBjcHVtYXNrX2Fu ZChtYXNrLCBjcHVwb29sX21hc2ssIHN2Yy0+dW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAg IHByaW50aygiWyU1ZC4lLTJ1XSBjcHUgJXUsICglIlBSSV9zdGltZSIsICUiUFJJX3N0aW1lIiks IgogICAgICAgICAgICAiIGN1cl9iPSUiUFJJX3N0aW1lIiBjdXJfZD0lIlBSSV9zdGltZSIgbGFz dF9zdGFydD0lIlBSSV9zdGltZSJcbiIKICAgICAgICAgICAgIiBcdFx0IHByaW9yaXR5X2xldmVs PSVkIGhhc19leHRyYXRpbWU9JWRcbiIKICAgICAgICAgICAgIiBcdFx0IG9uUT0lZCBydW5uYWJs ZT0lZCBmbGFncz0leCBlZmZlY3RpdmUgaGFyZF9hZmZpbml0eT0lKnBibFxuIiwKLSAgICAgICAg ICAgIHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUt PnZjcHVfaWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUtPnByb2Nlc3NvciwKKyAgICAgICAgICAg IHN2Yy0+dW5pdC0+ZG9tYWluLT5kb21haW5faWQsCisgICAgICAgICAgICBzdmMtPnVuaXQtPnVu aXRfaWQsCisgICAgICAgICAgICBzY2hlZF91bml0X2NwdShzdmMtPnVuaXQpLAogICAgICAgICAg ICAgc3ZjLT5wZXJpb2QsCiAgICAgICAgICAgICBzdmMtPmJ1ZGdldCwKICAgICAgICAgICAgIHN2 Yy0+Y3VyX2J1ZGdldCwKQEAgLTM0Miw4ICszNDIsOCBAQCBydF9kdW1wX3ZjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgICAgICAg ICAgc3ZjLT5sYXN0X3N0YXJ0LAogICAgICAgICAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCwKICAg ICAgICAgICAgIGhhc19leHRyYXRpbWUoc3ZjKSwKLSAgICAgICAgICAgIHZjcHVfb25fcShzdmMp LAotICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShzdmMtPnZjcHUpLAorICAgICAgICAgICAgdW5p dF9vbl9xKHN2YyksCisgICAgICAgICAgICB1bml0X3J1bm5hYmxlKHN2Yy0+dW5pdCksCiAgICAg ICAgICAgICBzdmMtPmZsYWdzLAogICAgICAgICAgICAgbnJfY3B1X2lkcywgY3B1bWFza19iaXRz KG1hc2spKTsKIH0KQEAgLTM1NywxMSArMzU3LDExIEBAIHJ0X2R1bXBfcGNwdShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2 LT5sb2NrLCBmbGFncyk7CiAgICAgcHJpbnRrKCJDUFVbJTAyZF1cbiIsIGNwdSk7Ci0gICAgLyog Y3VycmVudCBWQ1BVIChub3RoaW5nIHRvIHNheSBpZiB0aGF0J3MgdGhlIGlkbGUgdmNwdSkuICov CisgICAgLyogY3VycmVudCBVTklUIChub3RoaW5nIHRvIHNheSBpZiB0aGF0J3MgdGhlIGlkbGUg dW5pdCkuICovCiAgICAgc3ZjID0gcnRfdW5pdChjdXJyX29uX2NwdShjcHUpKTsKLSAgICBpZiAo IHN2YyAmJiAhaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkgKQorICAgIGlmICggc3ZjICYmICFpc19p ZGxlX3VuaXQoc3ZjLT51bml0KSApCiAgICAgewotICAgICAgICBydF9kdW1wX3ZjcHUob3BzLCBz dmMpOworICAgICAgICBydF9kdW1wX3VuaXQob3BzLCBzdmMpOwogICAgIH0KICAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIH0KQEAgLTM4OCwzNSArMzg4LDM1 IEBAIHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIGxpc3RfZm9yX2Vh Y2ggKCBpdGVyLCBydW5xICkKICAgICB7CiAgICAgICAgIHN2YyA9IHFfZWxlbShpdGVyKTsKLSAg ICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKKyAgICAgICAgcnRfZHVtcF91bml0KG9wcywg c3ZjKTsKICAgICB9CiAKICAgICBwcmludGsoIkdsb2JhbCBEZXBsZXRlZFF1ZXVlIGluZm86XG4i KTsKICAgICBsaXN0X2Zvcl9lYWNoICggaXRlciwgZGVwbGV0ZWRxICkKICAgICB7CiAgICAgICAg IHN2YyA9IHFfZWxlbShpdGVyKTsKLSAgICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKKyAg ICAgICAgcnRfZHVtcF91bml0KG9wcywgc3ZjKTsKICAgICB9CiAKICAgICBwcmludGsoIkdsb2Jh bCBSZXBsZW5pc2htZW50IEV2ZW50cyBpbmZvOlxuIik7CiAgICAgbGlzdF9mb3JfZWFjaCAoIGl0 ZXIsIHJlcGxxICkKICAgICB7CiAgICAgICAgIHN2YyA9IHJlcGxxX2VsZW0oaXRlcik7Ci0gICAg ICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAgICAgIHJ0X2R1bXBfdW5pdChvcHMsIHN2 Yyk7CiAgICAgfQogCiAgICAgcHJpbnRrKCJEb21haW4gaW5mbzpcbiIpOwogICAgIGxpc3RfZm9y X2VhY2ggKCBpdGVyLCAmcHJ2LT5zZG9tICkKICAgICB7Ci0gICAgICAgIHN0cnVjdCB2Y3B1ICp2 OworICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdDsKIAogICAgICAgICBzZG9tID0gbGlz dF9lbnRyeShpdGVyLCBzdHJ1Y3QgcnRfZG9tLCBzZG9tX2VsZW0pOwogICAgICAgICBwcmludGso Ilx0ZG9tYWluOiAlZFxuIiwgc2RvbS0+ZG9tLT5kb21haW5faWQpOwogCi0gICAgICAgIGZvcl9l YWNoX3ZjcHUgKCBzZG9tLT5kb20sIHYgKQorICAgICAgICBmb3JfZWFjaF9zY2hlZF91bml0ICgg c2RvbS0+ZG9tLCB1bml0ICkKICAgICAgICAgewotICAgICAgICAgICAgc3ZjID0gcnRfdW5pdCh2 LT5zY2hlZF91bml0KTsKLSAgICAgICAgICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAg ICAgICAgICBzdmMgPSBydF91bml0KHVuaXQpOworICAgICAgICAgICAgcnRfZHVtcF91bml0KG9w cywgc3ZjKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDU4LDEyICs0NTgsMTIgQEAgcnRfdXBk YXRlX2RlYWRsaW5lKHNfdGltZV90IG5vdywgc3RydWN0IHJ0X3VuaXQgKnN2YykKICAgICAvKiBU UkFDRSAqLwogICAgIHsKICAgICAgICAgc3RydWN0IF9fcGFja2VkIHsKLSAgICAgICAgICAgIHVu c2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgIHVuc2lnbmVkIHVuaXQ6MTYsIGRv bToxNjsKICAgICAgICAgICAgIHVuc2lnbmVkIHByaW9yaXR5X2xldmVsOwogICAgICAgICAgICAg dWludDY0X3QgY3VyX2RlYWRsaW5lLCBjdXJfYnVkZ2V0OwogICAgICAgICB9IGQ7Ci0gICAgICAg IGQuZG9tID0gc3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgZC52Y3B1ID0g c3ZjLT52Y3B1LT52Y3B1X2lkOworICAgICAgICBkLmRvbSA9IHN2Yy0+dW5pdC0+ZG9tYWluLT5k b21haW5faWQ7CisgICAgICAgIGQudW5pdCA9IHN2Yy0+dW5pdC0+dW5pdF9pZDsKICAgICAgICAg ZC5wcmlvcml0eV9sZXZlbCA9IHN2Yy0+cHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgIGQuY3VyX2Rl YWRsaW5lID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9kZWFkbGluZTsKICAgICAgICAgZC5jdXJfYnVk Z2V0ID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9idWRnZXQ7CkBAIC00NzYsMTUgKzQ3NiwxNSBAQCBy dF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93LCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogfQog CiAvKgotICogSGVscGVycyBmb3IgcmVtb3ZpbmcgYW5kIGluc2VydGluZyBhIHZjcHUgaW4gYSBx dWV1ZQotICogdGhhdCBpcyBiZWluZyBrZXB0IG9yZGVyZWQgYnkgdGhlIHZjcHVzJyBkZWFkbGlu ZXMgKGFzIEVERgorICogSGVscGVycyBmb3IgcmVtb3ZpbmcgYW5kIGluc2VydGluZyBhbiB1bml0 IGluIGEgcXVldWUKKyAqIHRoYXQgaXMgYmVpbmcga2VwdCBvcmRlcmVkIGJ5IHRoZSB1bml0cycg ZGVhZGxpbmVzIChhcyBFREYKICAqIG1hbmRhdGVzKS4KICAqCi0gKiBGb3IgY2FsbGVycycgY29u dmVuaWVuY2UsIHRoZSB2Y3B1IHJlbW92aW5nIGhlbHBlciByZXR1cm5zCi0gKiB0cnVlIGlmIHRo ZSB2Y3B1IHJlbW92ZWQgd2FzIHRoZSBvbmUgYXQgdGhlIGZyb250IG9mIHRoZQorICogRm9yIGNh bGxlcnMnIGNvbnZlbmllbmNlLCB0aGUgdW5pdCByZW1vdmluZyBoZWxwZXIgcmV0dXJucworICog dHJ1ZSBpZiB0aGUgdW5pdCByZW1vdmVkIHdhcyB0aGUgb25lIGF0IHRoZSBmcm9udCBvZiB0aGUK ICAqIHF1ZXVlOyBzaW1pbGFybHksIHRoZSBpbnNlcnRpbmcgaGVscGVyIHJldHVybnMgdHJ1ZSBp ZiB0aGUKICAqIGluc2VydGVkIGVuZGVkIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUgKGkuZS4s IGluIGJvdGgKLSAqIGNhc2VzLCBpZiB0aGUgdmNwdSB3aXRoIHRoZSBlYXJsaWVzdCBkZWFkbGlu ZSBpcyB3aGF0IHdlCisgKiBjYXNlcywgaWYgdGhlIHVuaXQgd2l0aCB0aGUgZWFybGllc3QgZGVh ZGxpbmUgaXMgd2hhdCB3ZQogICogYXJlIGRlYWxpbmcgd2l0aCkuCiAgKi8KIHN0YXRpYyBpbmxp bmUgYm9vbApAQCAtNTEwLDcgKzUxMCw3IEBAIGRlYWRsaW5lX3F1ZXVlX2luc2VydChzdHJ1Y3Qg cnRfdW5pdCAqICgqcWVsZW0pKHN0cnVjdCBsaXN0X2hlYWQgKiksCiAgICAgbGlzdF9mb3JfZWFj aCAoIGl0ZXIsIHF1ZXVlICkKICAgICB7CiAgICAgICAgIHN0cnVjdCBydF91bml0ICogaXRlcl9z dmMgPSAoKnFlbGVtKShpdGVyKTsKLSAgICAgICAgaWYgKCBjb21wYXJlX3ZjcHVfcHJpb3JpdHko c3ZjLCBpdGVyX3N2YykgPiAwICkKKyAgICAgICAgaWYgKCBjb21wYXJlX3VuaXRfcHJpb3JpdHko c3ZjLCBpdGVyX3N2YykgPiAwICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBwb3MrKzsK ICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KHN0cnVjdCBy dF91bml0ICogKCpxZWxlbSkoc3RydWN0IGxpc3RfaGVhZCAqKSwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogcV9yZW1vdmUoc3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKLSAgICBBU1NFUlQoIHZjcHVfb25f cShzdmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3Eoc3ZjKSApOwogICAgIGxpc3RfZGVsX2lu aXQoJnN2Yy0+cV9lbGVtKTsKIH0KIApAQCAtNTM1LDE0ICs1MzUsMTQgQEAgcmVwbHFfcmVtb3Zl KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKnN2YykKICAgICBz dHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwogICAgIHN0cnVjdCBsaXN0X2hl YWQgKnJlcGxxID0gcnRfcmVwbHEob3BzKTsKIAotICAgIEFTU0VSVCggdmNwdV9vbl9yZXBscShz dmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAgIGlmICggZGVh ZGxpbmVfcXVldWVfcmVtb3ZlKHJlcGxxLCAmc3ZjLT5yZXBscV9lbGVtKSApCiAgICAgewogICAg ICAgICAvKgogICAgICAgICAgKiBUaGUgcmVwbGVuaXNobWVudCB0aW1lciBuZWVkcyB0byBiZSBz ZXQgdG8gZmlyZSB3aGVuIGEKLSAgICAgICAgICogcmVwbGVuaXNobWVudCBmb3IgdGhlIHZjcHUg YXQgdGhlIGZyb250IG9mIHRoZSByZXBsZW5pc2htZW50Ci0gICAgICAgICAqIHF1ZXVlIGlzIGR1 ZS4gSWYgaXQgaXMgc3VjaCB2Y3B1IHRoYXQgd2UganVzdCByZW1vdmVkLCB3ZSBtYXkKKyAgICAg ICAgICogcmVwbGVuaXNobWVudCBmb3IgdGhlIHVuaXQgYXQgdGhlIGZyb250IG9mIHRoZSByZXBs ZW5pc2htZW50CisgICAgICAgICAqIHF1ZXVlIGlzIGR1ZS4gSWYgaXQgaXMgc3VjaCB1bml0IHRo YXQgd2UganVzdCByZW1vdmVkLCB3ZSBtYXkKICAgICAgICAgICogbmVlZCB0byByZXByb2dyYW0g dGhlIHRpbWVyLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCAhbGlzdF9lbXB0eShyZXBscSkg KQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHJlcGxxX3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBydF91bml0ICpzdmMpCiAKIC8qCiAgKiBJbnNlcnQgc3ZjIHdpdGggYnVk Z2V0IGluIFJ1blEgYWNjb3JkaW5nIHRvIEVERjoKLSAqIHZjcHVzIHdpdGggc21hbGxlciBkZWFk bGluZXMgZ28gZmlyc3QuCisgKiB1bml0cyB3aXRoIHNtYWxsZXIgZGVhZGxpbmVzIGdvIGZpcnN0 LgogICogSW5zZXJ0IHN2YyB3aXRob3V0IGJ1ZGdldCBpbiBEZXBsZXRlZFEgdW5zb3J0ZWQ7CiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC01NjcsOCArNTY3LDggQEAgcnVucV9pbnNlcnQoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7CiAKICAgICBBU1NFUlQoIHNwaW5faXNfbG9ja2Vk KCZwcnYtPmxvY2spICk7Ci0gICAgQVNTRVJUKCAhdmNwdV9vbl9xKHN2YykgKTsKLSAgICBBU1NF UlQoIHZjcHVfb25fcmVwbHEoc3ZjKSApOworICAgIEFTU0VSVCggIXVuaXRfb25fcShzdmMpICk7 CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAgIC8qIGFkZCBzdmMgdG8g cnVucSBpZiBzdmMgc3RpbGwgaGFzIGJ1ZGdldCBvciBpdHMgZXh0cmF0aW1lIGlzIHNldCAqLwog ICAgIGlmICggc3ZjLT5jdXJfYnVkZ2V0ID4gMCB8fApAQCAtNTg0LDcgKzU4NCw3IEBAIHJlcGxx X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF91bml0ICpzdmMp CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOwogICAgIHN0cnVj dCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CiAKLSAgICBBU1NFUlQoICF2Y3B1X29u X3JlcGxxKHN2YykgKTsKKyAgICBBU1NFUlQoICF1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAg IC8qCiAgICAgICogVGhlIHRpbWVyIG1heSBiZSByZS1wcm9ncmFtbWVkIGlmIHN2YyBpcyBpbnNl cnRlZApAQCAtNjA3LDEyICs2MDcsMTIgQEAgcmVwbHFfcmVpbnNlcnQoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIHN0cnVjdCBydF91bml0ICpy ZWFybV9zdmMgPSBzdmM7CiAgICAgYm9vbF90IHJlYXJtID0gMDsKIAotICAgIEFTU0VSVCggdmNw dV9vbl9yZXBscShzdmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAog ICAgIC8qCiAgICAgICogSWYgc3ZjIHdhcyBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlcGxlbmlzaG1l bnQgcXVldWUsIHdlIGNlcnRhaW5seQogICAgICAqIG5lZWQgdG8gcmUtcHJvZ3JhbSB0aGUgdGlt ZXIsIGFuZCB3ZSB3YW50IHRvIHVzZSB0aGUgZGVhZGxpbmUgb2YKLSAgICAgKiB0aGUgdmNwdSB3 aGljaCBpcyBub3cgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZSAod2hpY2ggbWF5IHN0aWxsCisg ICAgICogdGhlIHVuaXQgd2hpY2ggaXMgbm93IGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUgKHdo aWNoIG1heSBzdGlsbAogICAgICAqIGJlIHN2YyBvciBub3QpLgogICAgICAqCiAgICAgICogV2Ug bWF5IGFsc28gbmVlZCB0byByZS1wcm9ncmFtLCBpZiBzdmMgaGFzIGJlZW4gcHV0IGF0IHRoZSBm cm9udApAQCAtNjMyLDI0ICs2MzIsMjMgQEAgcmVwbHFfcmVpbnNlcnQoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogfQogCiAvKgotICogUGljayBhIHZh bGlkIHJlc291cmNlIGZvciB0aGUgdmNwdSB2YwotICogVmFsaWQgcmVzb3VyY2Ugb2YgYSB2Y3B1 IGlzIGludGVzZWN0aW9uIG9mIHZjcHUncyBhZmZpbml0eQorICogUGljayBhIHZhbGlkIHJlc291 cmNlIGZvciB0aGUgdW5pdCB2YworICogVmFsaWQgcmVzb3VyY2Ugb2YgYW4gdW5pdCBpcyBpbnRl c2VjdGlvbiBvZiB1bml0J3MgYWZmaW5pdHkKICAqIGFuZCBhdmFpbGFibGUgcmVzb3VyY2VzCiAg Ki8KIHN0YXRpYyBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKgogcnRfcmVzX3BpY2soY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1 Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1OwogICAgIGNwdW1hc2tfdCBjcHVzOwogICAgIGNwdW1h c2tfdCAqb25saW5lOwogICAgIGludCBjcHU7CiAKLSAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFp bl9jcHVtYXNrKHZjLT5kb21haW4pOworICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2NwdW1h c2sodW5pdC0+ZG9tYWluKTsKICAgICBjcHVtYXNrX2FuZCgmY3B1cywgb25saW5lLCB1bml0LT5j cHVfaGFyZF9hZmZpbml0eSk7CiAKLSAgICBjcHUgPSBjcHVtYXNrX3Rlc3RfY3B1KHZjLT5wcm9j ZXNzb3IsICZjcHVzKQotICAgICAgICAgICAgPyB2Yy0+cHJvY2Vzc29yCi0gICAgICAgICAgICA6 IGNwdW1hc2tfY3ljbGUodmMtPnByb2Nlc3NvciwgJmNwdXMpOworICAgIGNwdSA9IGNwdW1hc2tf dGVzdF9jcHUoc2NoZWRfdW5pdF9jcHUodW5pdCksICZjcHVzKQorICAgICAgICAgICAgPyBzY2hl ZF91bml0X2NwdSh1bml0KQorICAgICAgICAgICAgOiBjcHVtYXNrX2N5Y2xlKHNjaGVkX3VuaXRf Y3B1KHVuaXQpLCAmY3B1cyk7CiAgICAgQVNTRVJUKCAhY3B1bWFza19lbXB0eSgmY3B1cykgJiYg Y3B1bWFza190ZXN0X2NwdShjcHUsICZjcHVzKSApOwogCiAgICAgcmV0dXJuIGdldF9zY2hlZF9y ZXMoY3B1KTsKQEAgLTczOCw3ICs3MzcsNyBAQCBydF9zd2l0Y2hfc2NoZWQoc3RydWN0IHNjaGVk dWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKICAgICBzdHJ1Y3QgcnRfdW5pdCAqc3Zj ID0gdmRhdGE7CiAgICAgc3RydWN0IHNjaGVkX3Jlc291cmNlICpzZCA9IGdldF9zY2hlZF9yZXMo Y3B1KTsKIAotICAgIEFTU0VSVCghcGRhdGEgJiYgc3ZjICYmIGlzX2lkbGVfdmNwdShzdmMtPnZj cHUpKTsKKyAgICBBU1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3VuaXQoc3ZjLT51bml0 KSk7CiAKICAgICAvKgogICAgICAqIFdlIGFyZSBob2xkaW5nIHRoZSBydW5xdWV1ZSBsb2NrIGFs cmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBpbgpAQCAtNzYyLDcgKzc2MSw3IEBAIHJ0X3N3aXRjaF9z Y2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAogICAgICAg ICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIlJURFM6IHRpbWVyIGluaXRpYWxpemVkIG9uIGNwdSAl dVxuIiwgY3B1KTsKICAgICB9CiAKLSAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfdW5pdC0+cHJp diA9IHZkYXRhOworICAgIHNjaGVkX2lkbGVfdW5pdChjcHUpLT5wcml2ID0gdmRhdGE7CiAKICAg ICByZXR1cm4gJnBydi0+bG9jazsKIH0KQEAgLTg0MiwxMCArODQxLDkgQEAgcnRfZnJlZV9kb21k YXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lk ICoKIHJ0X2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQsIHZvaWQgKmRkKQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQt PnZjcHU7CiAgICAgc3RydWN0IHJ0X3VuaXQgKnN2YzsKIAotICAgIC8qIEFsbG9jYXRlIHBlci1W Q1BVIGluZm8gKi8KKyAgICAvKiBBbGxvY2F0ZSBwZXItVU5JVCBpbmZvICovCiAgICAgc3ZjID0g eHphbGxvYyhzdHJ1Y3QgcnRfdW5pdCk7CiAgICAgaWYgKCBzdmMgPT0gTlVMTCApCiAgICAgICAg IHJldHVybiBOVUxMOwpAQCAtODU0LDEzICs4NTIsMTMgQEAgcnRfYWxsb2NfdmRhdGEoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwgdm9pZCAqZGQp CiAgICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cmVwbHFfZWxlbSk7CiAgICAgc3ZjLT5mbGFncyA9 IDBVOwogICAgIHN2Yy0+c2RvbSA9IGRkOwotICAgIHN2Yy0+dmNwdSA9IHZjOworICAgIHN2Yy0+ dW5pdCA9IHVuaXQ7CiAgICAgc3ZjLT5sYXN0X3N0YXJ0ID0gMDsKIAogICAgIF9fc2V0X2JpdChf X1JURFNfZXh0cmF0aW1lLCAmc3ZjLT5mbGFncyk7CiAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCA9 IDA7CiAgICAgc3ZjLT5wZXJpb2QgPSBSVERTX0RFRkFVTFRfUEVSSU9EOwotICAgIGlmICggIWlz X2lkbGVfdmNwdSh2YykgKQorICAgIGlmICggIWlzX2lkbGVfdW5pdCh1bml0KSApCiAgICAgICAg IHN2Yy0+YnVkZ2V0ID0gUlREU19ERUZBVUxUX0JVREdFVDsKIAogICAgIFNDSEVEX1NUQVRfQ1JB TksodW5pdF9hbGxvYyk7CkBAIC04ODAsMjIgKzg3OCwyMCBAQCBydF9mcmVlX3ZkYXRhKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcHJpdikKICAqIEl0IGlzIGNhbGxlZCBpbiBz Y2hlZF9tb3ZlX2RvbWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKICAqIGluIHNjaGVkdWxlLmMu CiAgKiBXaGVuIG1vdmUgYSBkb21haW4gdG8gYSBuZXcgY3B1cG9vbC4KLSAqIEl0IGluc2VydHMg dmNwdXMgb2YgbW92aW5nIGRvbWFpbiB0byB0aGUgc2NoZWR1bGVyJ3MgUnVuUSBpbgorICogSXQg aW5zZXJ0cyB1bml0cyBvZiBtb3ZpbmcgZG9tYWluIHRvIHRoZSBzY2hlZHVsZXIncyBSdW5RIGlu CiAgKiBkZXN0LiBjcHVwb29sLgogICovCiBzdGF0aWMgdm9pZAogcnRfdW5pdF9pbnNlcnQoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAg ICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1OwogICAgIHN0cnVjdCBydF91bml0ICpzdmMg PSBydF91bml0KHVuaXQpOwogICAgIHNfdGltZV90IG5vdzsKICAgICBzcGlubG9ja190ICpsb2Nr OwogCi0gICAgQlVHX09OKCBpc19pZGxlX3ZjcHUodmMpICk7CisgICAgQlVHX09OKCBpc19pZGxl X3VuaXQodW5pdCkgKTsKIAotICAgIC8qIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHZjIGlzbid0IHll dCBiZWluZyBzY2hlZHVsZWQgKi8KLSAgICB1bml0LT5yZXMgPSBydF9yZXNfcGljayhvcHMsIHVu aXQpOwotICAgIHZjLT5wcm9jZXNzb3IgPSB1bml0LT5yZXMtPnByb2Nlc3NvcjsKKyAgICAvKiBU aGlzIGlzIHNhZmUgYmVjYXVzZSB1bml0IGlzbid0IHlldCBiZWluZyBzY2hlZHVsZWQgKi8KKyAg ICBzY2hlZF9zZXRfcmVzKHVuaXQsIHJ0X3Jlc19waWNrKG9wcywgdW5pdCkpOwogCiAgICAgbG9j ayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKQEAgLTkwMyw3ICs4OTksNyBAQCBy dF91bml0X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0KQogICAgIGlmICggbm93ID49IHN2Yy0+Y3VyX2RlYWRsaW5lICkKICAgICAgICAg cnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKIAotICAgIGlmICggIXZjcHVfb25fcShzdmMp ICYmIHZjcHVfcnVubmFibGUodmMpICkKKyAgICBpZiAoICF1bml0X29uX3Eoc3ZjKSAmJiB1bml0 X3J1bm5hYmxlKHVuaXQpICkKICAgICB7CiAgICAgICAgIHJlcGxxX2luc2VydChvcHMsIHN2Yyk7 CiAKQEAgLTkzMCwxMCArOTI2LDEwIEBAIHJ0X3VuaXRfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgQlVHX09OKCBzZG9tID09 IE5VTEwgKTsKIAogICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwotICAg IGlmICggdmNwdV9vbl9xKHN2YykgKQorICAgIGlmICggdW5pdF9vbl9xKHN2YykgKQogICAgICAg ICBxX3JlbW92ZShzdmMpOwogCi0gICAgaWYgKCB2Y3B1X29uX3JlcGxxKHN2YykgKQorICAgIGlm ICggdW5pdF9vbl9yZXBscShzdmMpICkKICAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcyxzdmMpOwog CiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwpAQCAtOTQ3LDggKzk0 Myw4IEBAIGJ1cm5fYnVkZ2V0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0 X3VuaXQgKnN2Yywgc190aW1lX3Qgbm93KQogewogICAgIHNfdGltZV90IGRlbHRhOwogCi0gICAg LyogZG9uJ3QgYnVybiBidWRnZXQgZm9yIGlkbGUgVkNQVSAqLwotICAgIGlmICggaXNfaWRsZV92 Y3B1KHN2Yy0+dmNwdSkgKQorICAgIC8qIGRvbid0IGJ1cm4gYnVkZ2V0IGZvciBpZGxlIFVOSVQg Ki8KKyAgICBpZiAoIGlzX2lkbGVfdW5pdChzdmMtPnVuaXQpICkKICAgICAgICAgcmV0dXJuOwog CiAgICAgLyogYnVybiBhdCBuYW5vc2Vjb25kcyBsZXZlbCAqLwpAQCAtOTg1LDE0ICs5ODEsMTQg QEAgYnVybl9idWRnZXQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5p dCAqc3ZjLCBzX3RpbWVfdCBub3cpCiAgICAgLyogVFJBQ0UgKi8KICAgICB7CiAgICAgICAgIHN0 cnVjdCBfX3BhY2tlZCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7Cisg ICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAgICB1aW50NjRf dCBjdXJfYnVkZ2V0OwogICAgICAgICAgICAgaW50IGRlbHRhOwogICAgICAgICAgICAgdW5zaWdu ZWQgcHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgICAgICBib29sIGhhc19leHRyYXRpbWU7CiAgICAg ICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMtPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwot ICAgICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgIGQuZG9tID0gc3Zj LT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0ID0gc3ZjLT51bml0LT51 bml0X2lkOwogICAgICAgICBkLmN1cl9idWRnZXQgPSAodWludDY0X3QpIHN2Yy0+Y3VyX2J1ZGdl dDsKICAgICAgICAgZC5kZWx0YSA9IGRlbHRhOwogICAgICAgICBkLnByaW9yaXR5X2xldmVsID0g c3ZjLT5wcmlvcml0eV9sZXZlbDsKQEAgLTEwMjIsOSArMTAxOCw4IEBAIHJ1bnFfcGljayhjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAg aXRlcl9zdmMgPSBxX2VsZW0oaXRlcik7CiAKICAgICAgICAgLyogbWFzayBjcHVfaGFyZF9hZmZp bml0eSAmIGNwdXBvb2wgJiBtYXNrICovCi0gICAgICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWlu X2NwdW1hc2soaXRlcl9zdmMtPnZjcHUtPmRvbWFpbik7Ci0gICAgICAgIGNwdW1hc2tfYW5kKCZj cHVfY29tbW9uLCBvbmxpbmUsCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJfc3ZjLT52Y3B1LT5z Y2hlZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgIG9ubGluZSA9IGNwdXBvb2xf ZG9tYWluX2NwdW1hc2soaXRlcl9zdmMtPnVuaXQtPmRvbWFpbik7CisgICAgICAgIGNwdW1hc2tf YW5kKCZjcHVfY29tbW9uLCBvbmxpbmUsIGl0ZXJfc3ZjLT51bml0LT5jcHVfaGFyZF9hZmZpbml0 eSk7CiAgICAgICAgIGNwdW1hc2tfYW5kKCZjcHVfY29tbW9uLCBtYXNrLCAmY3B1X2NvbW1vbik7 CiAgICAgICAgIGlmICggY3B1bWFza19lbXB0eSgmY3B1X2NvbW1vbikgKQogICAgICAgICAgICAg Y29udGludWU7CkBAIC0xMDQwLDExICsxMDM1LDExIEBAIHJ1bnFfcGljayhjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAgaWYoIHN2YyAh PSBOVUxMICkKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IF9fcGFja2VkIHsKLSAgICAg ICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAgICAgICAgICAgICAgdW5z aWduZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cl9kZWFk bGluZSwgY3VyX2J1ZGdldDsKICAgICAgICAgICAgIH0gZDsKLSAgICAgICAgICAgIGQuZG9tID0g c3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgICAgIGQudmNwdSA9IHN2Yy0+ dmNwdS0+dmNwdV9pZDsKKyAgICAgICAgICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRv bWFpbl9pZDsKKyAgICAgICAgICAgIGQudW5pdCA9IHN2Yy0+dW5pdC0+dW5pdF9pZDsKICAgICAg ICAgICAgIGQuY3VyX2RlYWRsaW5lID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9kZWFkbGluZTsKICAg ICAgICAgICAgIGQuY3VyX2J1ZGdldCA9ICh1aW50NjRfdCkgc3ZjLT5jdXJfYnVkZ2V0OwogICAg ICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1JVTlFfUElDSywgMSwKQEAgLTEwNjgsNiArMTA2 Myw3IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qg bm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgc3RydWN0IHJ0X3VuaXQgKmNvbnN0 IHNjdXJyID0gcnRfdW5pdChjdXJyZW50LT5zY2hlZF91bml0KTsKICAgICBzdHJ1Y3QgcnRfdW5p dCAqc25leHQgPSBOVUxMOwogICAgIHN0cnVjdCB0YXNrX3NsaWNlIHJldCA9IHsgLm1pZ3JhdGVk ID0gMCB9OworICAgIHN0cnVjdCBzY2hlZF91bml0ICpjdXJydW5pdCA9IGN1cnJlbnQtPnNjaGVk X3VuaXQ7CiAKICAgICAvKiBUUkFDRSAqLwogICAgIHsKQEAgLTEwNzcsNyArMTA3Myw3IEBAIHJ0 X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29s X3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgICAgIGQuY3B1ID0gY3B1OwogICAgICAgICBkLnRh c2tsZXQgPSB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkOwogICAgICAgICBkLnRpY2tsZWQgPSBjcHVt YXNrX3Rlc3RfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7Ci0gICAgICAgIGQuaWRsZSA9IGlzX2lk bGVfdmNwdShjdXJyZW50KTsKKyAgICAgICAgZC5pZGxlID0gaXNfaWRsZV91bml0KGN1cnJ1bml0 KTsKICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1NDSEVEVUxFLCAxLAogICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGQpLAogICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7 CkBAIC0xMDg2LDcyICsxMDgyLDcwIEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgLyog Y2xlYXIgdGlja2VkIGJpdCBub3cgdGhhdCB3ZSd2ZSBiZWVuIHNjaGVkdWxlZCAqLwogICAgIGNw dW1hc2tfY2xlYXJfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7CiAKLSAgICAvKiBidXJuX2J1ZGdl dCB3b3VsZCByZXR1cm4gZm9yIElETEUgVkNQVSAqLworICAgIC8qIGJ1cm5fYnVkZ2V0IHdvdWxk IHJldHVybiBmb3IgSURMRSBVTklUICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vyciwgbm93 KTsKIAogICAgIGlmICggdGFza2xldF93b3JrX3NjaGVkdWxlZCApCiAgICAgewogICAgICAgICB0 cmFjZV92YXIoVFJDX1JURFNfU0NIRURfVEFTS0xFVCwgMSwgMCwgIE5VTEwpOwotICAgICAgICBz bmV4dCA9IHJ0X3VuaXQoaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICBzbmV4 dCA9IHJ0X3VuaXQoc2NoZWRfaWRsZV91bml0KGNwdSkpOwogICAgIH0KICAgICBlbHNlCiAgICAg ewogICAgICAgICBzbmV4dCA9IHJ1bnFfcGljayhvcHMsIGNwdW1hc2tfb2YoY3B1KSk7CiAgICAg ICAgIGlmICggc25leHQgPT0gTlVMTCApCi0gICAgICAgICAgICBzbmV4dCA9IHJ0X3VuaXQoaWRs ZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgc25leHQgPSBydF91bml0KHNj aGVkX2lkbGVfdW5pdChjcHUpKTsKIAogICAgICAgICAvKiBpZiBzY3VyciBoYXMgaGlnaGVyIHBy aW9yaXR5IGFuZCBidWRnZXQsIHN0aWxsIHBpY2sgc2N1cnIgKi8KLSAgICAgICAgaWYgKCAhaXNf aWRsZV92Y3B1KGN1cnJlbnQpICYmCi0gICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShjdXJyZW50 KSAmJgorICAgICAgICBpZiAoICFpc19pZGxlX3VuaXQoY3VycnVuaXQpICYmCisgICAgICAgICAg ICAgdW5pdF9ydW5uYWJsZShjdXJydW5pdCkgJiYKICAgICAgICAgICAgICBzY3Vyci0+Y3VyX2J1 ZGdldCA+IDAgJiYKLSAgICAgICAgICAgICAoIGlzX2lkbGVfdmNwdShzbmV4dC0+dmNwdSkgfHwK LSAgICAgICAgICAgICAgIGNvbXBhcmVfdmNwdV9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCAp ICkKKyAgICAgICAgICAgICAoIGlzX2lkbGVfdW5pdChzbmV4dC0+dW5pdCkgfHwKKyAgICAgICAg ICAgICAgIGNvbXBhcmVfdW5pdF9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCApICkKICAgICAg ICAgICAgIHNuZXh0ID0gc2N1cnI7CiAgICAgfQogCiAgICAgaWYgKCBzbmV4dCAhPSBzY3VyciAm JgotICAgICAgICAgIWlzX2lkbGVfdmNwdShjdXJyZW50KSAmJgotICAgICAgICAgdmNwdV9ydW5u YWJsZShjdXJyZW50KSApCisgICAgICAgICAhaXNfaWRsZV91bml0KGN1cnJ1bml0KSAmJgorICAg ICAgICAgdW5pdF9ydW5uYWJsZShjdXJydW5pdCkgKQogICAgICAgICBfX3NldF9iaXQoX19SVERT X2RlbGF5ZWRfcnVucV9hZGQsICZzY3Vyci0+ZmxhZ3MpOwogCiAgICAgc25leHQtPmxhc3Rfc3Rh cnQgPSBub3c7Ci0gICAgcmV0LnRpbWUgPSAgLTE7IC8qIGlmIGFuIGlkbGUgdmNwdSBpcyBwaWNr ZWQgKi8KLSAgICBpZiAoICFpc19pZGxlX3ZjcHUoc25leHQtPnZjcHUpICkKKyAgICByZXQudGlt ZSA9ICAtMTsgLyogaWYgYW4gaWRsZSB1bml0IGlzIHBpY2tlZCAqLworICAgIGlmICggIWlzX2lk bGVfdW5pdChzbmV4dC0+dW5pdCkgKQogICAgIHsKICAgICAgICAgaWYgKCBzbmV4dCAhPSBzY3Vy ciApCiAgICAgICAgIHsKICAgICAgICAgICAgIHFfcmVtb3ZlKHNuZXh0KTsKICAgICAgICAgICAg IF9fc2V0X2JpdChfX1JURFNfc2NoZWR1bGVkLCAmc25leHQtPmZsYWdzKTsKICAgICAgICAgfQot ICAgICAgICBpZiAoIHNuZXh0LT52Y3B1LT5wcm9jZXNzb3IgIT0gY3B1ICkKKyAgICAgICAgaWYg KCBzY2hlZF91bml0X2NwdShzbmV4dC0+dW5pdCkgIT0gY3B1ICkKICAgICAgICAgewotICAgICAg ICAgICAgc25leHQtPnZjcHUtPnByb2Nlc3NvciA9IGNwdTsKLSAgICAgICAgICAgIHNuZXh0LT52 Y3B1LT5zY2hlZF91bml0LT5yZXMgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisgICAgICAgICAgICBz Y2hlZF9zZXRfcmVzKHNuZXh0LT51bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOwogICAgICAgICAg ICAgcmV0Lm1pZ3JhdGVkID0gMTsKICAgICAgICAgfQogICAgICAgICByZXQudGltZSA9IHNuZXh0 LT5jdXJfYnVkZ2V0OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KICAgICB9 Ci0gICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdS0+c2NoZWRfdW5pdDsKKyAgICByZXQudGFzayA9 IHNuZXh0LT51bml0OwogCiAgICAgcmV0dXJuIHJldDsKIH0KIAogLyoKLSAqIFJlbW92ZSBWQ1BV IGZyb20gUnVuUQorICogUmVtb3ZlIFVOSVQgZnJvbSBSdW5RCiAgKiBUaGUgbG9jayBpcyBhbHJl YWR5IGdyYWJiZWQgaW4gc2NoZWR1bGUuYywgbm8gbmVlZCB0byBsb2NrIGhlcmUKICAqLwogc3Rh dGljIHZvaWQKIHJ0X3VuaXRfc2xlZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1 OwogICAgIHN0cnVjdCBydF91bml0ICogY29uc3Qgc3ZjID0gcnRfdW5pdCh1bml0KTsKIAotICAg IEJVR19PTiggaXNfaWRsZV92Y3B1KHZjKSApOworICAgIEJVR19PTiggaXNfaWRsZV91bml0KHVu aXQpICk7CiAgICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X3NsZWVwKTsKIAotICAgIGlmICggY3Vy cl9vbl9jcHUodmMtPnByb2Nlc3NvcikgPT0gdW5pdCApCi0gICAgICAgIGNwdV9yYWlzZV9zb2Z0 aXJxKHZjLT5wcm9jZXNzb3IsIFNDSEVEVUxFX1NPRlRJUlEpOwotICAgIGVsc2UgaWYgKCB2Y3B1 X29uX3Eoc3ZjKSApCisgICAgaWYgKCBjdXJyX29uX2NwdShzY2hlZF91bml0X2NwdSh1bml0KSkg PT0gdW5pdCApCisgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKHNjaGVkX3VuaXRfY3B1KHVuaXQp LCBTQ0hFRFVMRV9TT0ZUSVJRKTsKKyAgICBlbHNlIGlmICggdW5pdF9vbl9xKHN2YykgKQogICAg IHsKICAgICAgICAgcV9yZW1vdmUoc3ZjKTsKICAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcywgc3Zj KTsKQEAgLTExNjEsMjAgKzExNTUsMjAgQEAgcnRfdW5pdF9zbGVlcChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogfQogCiAvKgotICogUGljayBh IGNwdSB3aGVyZSB0byBydW4gYSB2Y3B1LAotICogcG9zc2libHkga2lja2luZyBvdXQgdGhlIHZj cHUgcnVubmluZyB0aGVyZQorICogUGljayBhIGNwdSB3aGVyZSB0byBydW4gYW4gdW5pdCwKKyAq IHBvc3NpYmx5IGtpY2tpbmcgb3V0IHRoZSB1bml0IHJ1bm5pbmcgdGhlcmUKICAqIENhbGxlZCBi eSB3YWtlKCkgYW5kIGNvbnRleHRfc2F2ZWQoKQogICogV2UgaGF2ZSBhIHJ1bm5pbmcgY2FuZGlk YXRlIGhlcmUsIHRoZSBraWNrIGxvZ2ljIGlzOgogICogQW1vbmcgYWxsIHRoZSBjcHVzIHRoYXQg YXJlIHdpdGhpbiB0aGUgY3B1IGFmZmluaXR5CiAgKiAxKSBpZiB0aGVyZSBhcmUgYW55IGlkbGUg Q1BVcywga2ljayBvbmUuCiAgICAgICBGb3IgY2FjaGUgYmVuZWZpdCwgd2UgY2hlY2sgbmV3LT5j cHUgYXMgZmlyc3QKICAqIDIpIG5vdyBhbGwgcGNwdXMgYXJlIGJ1c3k7Ci0gKiAgICBhbW9uZyBh bGwgdGhlIHJ1bm5pbmcgdmNwdXMsIHBpY2sgbG93ZXN0IHByaW9yaXR5IG9uZQorICogICAgYW1v bmcgYWxsIHRoZSBydW5uaW5nIHVuaXRzLCBwaWNrIGxvd2VzdCBwcmlvcml0eSBvbmUKICAqICAg IGlmIHNuZXh0IGhhcyBoaWdoZXIgcHJpb3JpdHksIGtpY2sgaXQuCiAgKgogICogVE9ETzoKLSAq IDEpIHdoYXQgaWYgdGhlc2UgdHdvIHZjcHVzIGJlbG9uZ3MgdG8gdGhlIHNhbWUgZG9tYWluPwot ICogICAgcmVwbGFjZSBhIHZjcHUgYmVsb25naW5nIHRvIHRoZSBzYW1lIGRvbWFpbiBpbnRyb2R1 Y2VzIG1vcmUgb3ZlcmhlYWQKKyAqIDEpIHdoYXQgaWYgdGhlc2UgdHdvIHVuaXRzIGJlbG9uZ3Mg dG8gdGhlIHNhbWUgZG9tYWluPworICogICAgcmVwbGFjZSBhbiB1bml0IGJlbG9uZ2luZyB0byB0 aGUgc2FtZSBkb21haW4gaW50cm9kdWNlcyBtb3JlIG92ZXJoZWFkCiAgKgogICogbG9jayBpcyBn cmFiYmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24KICAqLwpAQCAtMTE4MiwxOCArMTE3 NiwxOCBAQCBzdGF0aWMgdm9pZAogcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgcnRfdW5pdCAqbmV3KQogewogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYg PSBydF9wcml2KG9wcyk7Ci0gICAgc3RydWN0IHJ0X3VuaXQgKmxhdGVzdF9kZWFkbGluZV92Y3B1 ID0gTlVMTDsgLyogbG93ZXN0IHByaW9yaXR5ICovCisgICAgc3RydWN0IHJ0X3VuaXQgKmxhdGVz dF9kZWFkbGluZV91bml0ID0gTlVMTDsgLyogbG93ZXN0IHByaW9yaXR5ICovCiAgICAgc3RydWN0 IHJ0X3VuaXQgKml0ZXJfc3ZjOwotICAgIHN0cnVjdCB2Y3B1ICppdGVyX3ZjOworICAgIHN0cnVj dCBzY2hlZF91bml0ICppdGVyX3VuaXQ7CiAgICAgaW50IGNwdSA9IDAsIGNwdV90b190aWNrbGUg PSAwOwogICAgIGNwdW1hc2tfdCBub3RfdGlja2xlZDsKICAgICBjcHVtYXNrX3QgKm9ubGluZTsK IAotICAgIGlmICggbmV3ID09IE5VTEwgfHwgaXNfaWRsZV92Y3B1KG5ldy0+dmNwdSkgKQorICAg IGlmICggbmV3ID09IE5VTEwgfHwgaXNfaWRsZV91bml0KG5ldy0+dW5pdCkgKQogICAgICAgICBy ZXR1cm47CiAKLSAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKG5ldy0+dmNwdS0+ ZG9tYWluKTsKLSAgICBjcHVtYXNrX2FuZCgmbm90X3RpY2tsZWQsIG9ubGluZSwgbmV3LT52Y3B1 LT5zY2hlZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgb25saW5lID0gY3B1cG9vbF9k b21haW5fY3B1bWFzayhuZXctPnVuaXQtPmRvbWFpbik7CisgICAgY3B1bWFza19hbmQoJm5vdF90 aWNrbGVkLCBvbmxpbmUsIG5ldy0+dW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAgIGNwdW1h c2tfYW5kbm90KCZub3RfdGlja2xlZCwgJm5vdF90aWNrbGVkLCAmcHJ2LT50aWNrbGVkKTsKIAog ICAgIC8qCkBAIC0xMjAxLDMxICsxMTk1LDMxIEBAIHJ1bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKm5ldykKICAgICAgKiAgICBGb3IgY2FjaGUg YmVuZWZpdCx3ZSBmaXJzdCBzZWFyY2ggbmV3LT5jcHUuCiAgICAgICogICAgVGhlIHNhbWUgbG9v cCBhbHNvIGZpbmQgdGhlIG9uZSB3aXRoIGxvd2VzdCBwcmlvcml0eS4KICAgICAgKi8KLSAgICBj cHUgPSBjcHVtYXNrX3Rlc3Rfb3JfY3ljbGUobmV3LT52Y3B1LT5wcm9jZXNzb3IsICZub3RfdGlj a2xlZCk7CisgICAgY3B1ID0gY3B1bWFza190ZXN0X29yX2N5Y2xlKHNjaGVkX3VuaXRfY3B1KG5l dy0+dW5pdCksICZub3RfdGlja2xlZCk7CiAgICAgd2hpbGUgKCBjcHUhPSBucl9jcHVfaWRzICkK ICAgICB7Ci0gICAgICAgIGl0ZXJfdmMgPSBjdXJyX29uX2NwdShjcHUpLT52Y3B1OwotICAgICAg ICBpZiAoIGlzX2lkbGVfdmNwdShpdGVyX3ZjKSApCisgICAgICAgIGl0ZXJfdW5pdCA9IGN1cnJf b25fY3B1KGNwdSk7CisgICAgICAgIGlmICggaXNfaWRsZV91bml0KGl0ZXJfdW5pdCkgKQogICAg ICAgICB7CiAgICAgICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfaWRsZV9jcHUpOwog ICAgICAgICAgICAgY3B1X3RvX3RpY2tsZSA9IGNwdTsKICAgICAgICAgICAgIGdvdG8gb3V0Owog ICAgICAgICB9Ci0gICAgICAgIGl0ZXJfc3ZjID0gcnRfdW5pdChpdGVyX3ZjLT5zY2hlZF91bml0 KTsKLSAgICAgICAgaWYgKCBsYXRlc3RfZGVhZGxpbmVfdmNwdSA9PSBOVUxMIHx8Ci0gICAgICAg ICAgICAgY29tcGFyZV92Y3B1X3ByaW9yaXR5KGl0ZXJfc3ZjLCBsYXRlc3RfZGVhZGxpbmVfdmNw dSkgPCAwICkKLSAgICAgICAgICAgIGxhdGVzdF9kZWFkbGluZV92Y3B1ID0gaXRlcl9zdmM7Cisg ICAgICAgIGl0ZXJfc3ZjID0gcnRfdW5pdChpdGVyX3VuaXQpOworICAgICAgICBpZiAoIGxhdGVz dF9kZWFkbGluZV91bml0ID09IE5VTEwgfHwKKyAgICAgICAgICAgICBjb21wYXJlX3VuaXRfcHJp b3JpdHkoaXRlcl9zdmMsIGxhdGVzdF9kZWFkbGluZV91bml0KSA8IDAgKQorICAgICAgICAgICAg bGF0ZXN0X2RlYWRsaW5lX3VuaXQgPSBpdGVyX3N2YzsKIAogICAgICAgICBjcHVtYXNrX2NsZWFy X2NwdShjcHUsICZub3RfdGlja2xlZCk7CiAgICAgICAgIGNwdSA9IGNwdW1hc2tfY3ljbGUoY3B1 LCAmbm90X3RpY2tsZWQpOwogICAgIH0KIAotICAgIC8qIDIpIGNhbmRpY2F0ZSBoYXMgaGlnaGVy IHByaW9yaXR5LCBraWNrIG91dCBsb3dlc3QgcHJpb3JpdHkgdmNwdSAqLwotICAgIGlmICggbGF0 ZXN0X2RlYWRsaW5lX3ZjcHUgIT0gTlVMTCAmJgotICAgICAgICAgY29tcGFyZV92Y3B1X3ByaW9y aXR5KGxhdGVzdF9kZWFkbGluZV92Y3B1LCBuZXcpIDwgMCApCisgICAgLyogMikgY2FuZGljYXRl IGhhcyBoaWdoZXIgcHJpb3JpdHksIGtpY2sgb3V0IGxvd2VzdCBwcmlvcml0eSB1bml0ICovCisg ICAgaWYgKCBsYXRlc3RfZGVhZGxpbmVfdW5pdCAhPSBOVUxMICYmCisgICAgICAgICBjb21wYXJl X3VuaXRfcHJpb3JpdHkobGF0ZXN0X2RlYWRsaW5lX3VuaXQsIG5ldykgPCAwICkKICAgICB7CiAg ICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xlZF9idXN5X2NwdSk7Ci0gICAgICAgIGNwdV90 b190aWNrbGUgPSBsYXRlc3RfZGVhZGxpbmVfdmNwdS0+dmNwdS0+cHJvY2Vzc29yOworICAgICAg ICBjcHVfdG9fdGlja2xlID0gc2NoZWRfdW5pdF9jcHUobGF0ZXN0X2RlYWRsaW5lX3VuaXQtPnVu aXQpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTEyNTEsMzUgKzEyNDUsMzQgQEAg cnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAq bmV3KQogfQogCiAvKgotICogU2hvdWxkIGFsd2F5cyB3YWtlIHVwIHJ1bm5hYmxlIHZjcHUsIHB1 dCBpdCBiYWNrIHRvIFJ1blEuCisgKiBTaG91bGQgYWx3YXlzIHdha2UgdXAgcnVubmFibGUgdW5p dCwgcHV0IGl0IGJhY2sgdG8gUnVuUS4KICAqIENoZWNrIHByaW9yaXR5IHRvIHJhaXNlIGludGVy cnVwdAogICogVGhlIGxvY2sgaXMgYWxyZWFkeSBncmFiYmVkIGluIHNjaGVkdWxlLmMsIG5vIG5l ZWQgdG8gbG9jayBoZXJlCi0gKiBUT0RPOiB3aGF0IGlmIHRoZXNlIHR3byB2Y3B1cyBiZWxvbmdz IHRvIHRoZSBzYW1lIGRvbWFpbj8KKyAqIFRPRE86IHdoYXQgaWYgdGhlc2UgdHdvIHVuaXRzIGJl bG9uZ3MgdG8gdGhlIHNhbWUgZG9tYWluPwogICovCiBzdGF0aWMgdm9pZAogcnRfdW5pdF93YWtl KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB7 Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdTsKICAgICBzdHJ1Y3QgcnRfdW5pdCAq IGNvbnN0IHN2YyA9IHJ0X3VuaXQodW5pdCk7CiAgICAgc190aW1lX3Qgbm93OwogICAgIGJvb2xf dCBtaXNzZWQ7CiAKLSAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKyAgICBCVUdfT04o IGlzX2lkbGVfdW5pdCh1bml0KSApOwogCi0gICAgaWYgKCB1bmxpa2VseShjdXJyX29uX2NwdSh2 Yy0+cHJvY2Vzc29yKSA9PSB1bml0KSApCisgICAgaWYgKCB1bmxpa2VseShjdXJyX29uX2NwdShz Y2hlZF91bml0X2NwdSh1bml0KSkgPT0gdW5pdCkgKQogICAgIHsKICAgICAgICAgU0NIRURfU1RB VF9DUkFOSyh1bml0X3dha2VfcnVubmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg ICAvKiBvbiBSdW5RL0RlcGxldGVkUSwganVzdCB1cGRhdGUgaW5mbyBpcyBvayAqLwotICAgIGlm ICggdW5saWtlbHkodmNwdV9vbl9xKHN2YykpICkKKyAgICBpZiAoIHVubGlrZWx5KHVuaXRfb25f cShzdmMpKSApCiAgICAgewogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9vbnJ1 bnEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCBsaWtlbHkodmNwdV9ydW5u YWJsZSh2YykpICkKKyAgICBpZiAoIGxpa2VseSh1bml0X3J1bm5hYmxlKHVuaXQpKSApCiAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX3J1bm5hYmxlKTsKICAgICBlbHNlCiAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX25vdF9ydW5uYWJsZSk7CkBAIC0xMjk1LDE2 ICsxMjg4LDE2IEBAIHJ0X3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0 cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBz dmMpOwogCiAgICAgLyoKLSAgICAgKiBJZiBjb250ZXh0IGhhc24ndCBiZWVuIHNhdmVkIGZvciB0 aGlzIHZjcHUgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KKyAgICAgKiBJZiBjb250ZXh0IGhhc24n dCBiZWVuIHNhdmVkIGZvciB0aGlzIHVuaXQgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KICAgICAg KiB0aGUgcnVuLXF1ZXVlL2RlcGxldGVkLXF1ZXVlLiBJbnN0ZWFkLCB3ZSBzZXQgdGhlIGFwcHJv cHJpYXRlIGZsYWcsCi0gICAgICogdGhlIHZjcHUgd2lsbCBiZSBwdXQgYmFjayBvbiBxdWV1ZSBh ZnRlciB0aGUgY29udGV4dCBoYXMgYmVlbiBzYXZlZAorICAgICAqIHRoZSB1bml0IHdpbGwgYmUg cHV0IGJhY2sgb24gcXVldWUgYWZ0ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQKICAgICAg KiAoaW4gcnRfY29udGV4dF9zYXZlKCkpLgogICAgICAqLwogICAgIGlmICggdW5saWtlbHkoc3Zj LT5mbGFncyAmIFJURFNfc2NoZWR1bGVkKSApCiAgICAgewogICAgICAgICBfX3NldF9iaXQoX19S VERTX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKTsKICAgICAgICAgLyoKLSAgICAgICAg ICogVGhlIHZjcHUgaXMgd2FraW5nIHVwIGFscmVhZHksIGFuZCB3ZSBkaWRuJ3QgZXZlbiBoYWQg dGhlIHRpbWUgdG8KKyAgICAgICAgICogVGhlIHVuaXQgaXMgd2FraW5nIHVwIGFscmVhZHksIGFu ZCB3ZSBkaWRuJ3QgZXZlbiBoYWQgdGhlIHRpbWUgdG8KICAgICAgICAgICogcmVtb3ZlIGl0cyBu ZXh0IHJlcGxlbmlzaG1lbnQgZXZlbnQgZnJvbSB0aGUgcmVwbGVuaXNobWVudCBxdWV1ZQogICAg ICAgICAgKiB3aGVuIGl0IGJsb2NrZWQhIE5vIGJpZyBkZWFsLiBJZiB3ZSBkaWQgbm90IG1pc3Mg dGhlIGRlYWRsaW5lIGluCiAgICAgICAgICAqIHRoZSBtZWFudGltZSwgbGV0J3MganVzdCBsZWF2 ZSBpdCB0aGVyZS4gSWYgd2UgZGlkLCBsZXQncyByZW1vdmUgaXQKQEAgLTEzMjUsMjIgKzEzMTgs MjEgQEAgcnRfdW5pdF93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQpCiAKIC8qCiAgKiBzY3VyciBoYXMgZmluaXNoZWQgY29udGV4dCBzd2l0 Y2gsIGluc2VydCBpdCBiYWNrIHRvIHRoZSBSdW5RLAotICogYW5kIHRoZW4gcGljayB0aGUgaGln aGVzdCBwcmlvcml0eSB2Y3B1IGZyb20gcnVucSB0byBydW4KKyAqIGFuZCB0aGVuIHBpY2sgdGhl IGhpZ2hlc3QgcHJpb3JpdHkgdW5pdCBmcm9tIHJ1bnEgdG8gcnVuCiAgKi8KIHN0YXRpYyB2b2lk CiBydF9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdTsKICAg ICBzdHJ1Y3QgcnRfdW5pdCAqc3ZjID0gcnRfdW5pdCh1bml0KTsKICAgICBzcGlubG9ja190ICps b2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAogICAgIF9fY2xlYXJfYml0KF9f UlREU19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKLSAgICAvKiBub3QgaW5zZXJ0IGlkbGUgdmNw dSB0byBydW5xICovCi0gICAgaWYgKCBpc19pZGxlX3ZjcHUodmMpICkKKyAgICAvKiBub3QgaW5z ZXJ0IGlkbGUgdW5pdCB0byBydW5xICovCisgICAgaWYgKCBpc19pZGxlX3VuaXQodW5pdCkgKQog ICAgICAgICBnb3RvIG91dDsKIAogICAgIGlmICggX190ZXN0X2FuZF9jbGVhcl9iaXQoX19SVERT X2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKSAmJgotICAgICAgICAgbGlrZWx5KHZjcHVf cnVubmFibGUodmMpKSApCisgICAgICAgICBsaWtlbHkodW5pdF9ydW5uYWJsZSh1bml0KSkgKQog ICAgIHsKICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOwogICAgICAgICBydW5xX3RpY2ts ZShvcHMsIHN2Yyk7CkBAIC0xMzUzLDcgKzEzNDUsNyBAQCBvdXQ6CiB9CiAKIC8qCi0gKiBzZXQv Z2V0IGVhY2ggdmNwdSBpbmZvIG9mIGVhY2ggZG9tYWluCisgKiBzZXQvZ2V0IGVhY2ggdW5pdCBp bmZvIG9mIGVhY2ggZG9tYWluCiAgKi8KIHN0YXRpYyBpbnQKIHJ0X2RvbV9jbnRsKApAQCAtMTM2 Myw3ICsxMzU1LDcgQEAgcnRfZG9tX2NudGwoCiB7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBy diA9IHJ0X3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgcnRfdW5pdCAqc3ZjOwotICAgIHN0cnVjdCB2 Y3B1ICp2OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7CiAgICAgaW50IHJjID0gMDsKICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zY2hlZHBhcmFt X3ZjcHUgbG9jYWxfc2NoZWQ7CkBAIC0xMzg0LDkgKzEzNzYsOSBAQCBydF9kb21fY250bCgKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZw cnYtPmxvY2ssIGZsYWdzKTsKLSAgICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAg ICBmb3JfZWFjaF9zY2hlZF91bml0ICggZCwgdW5pdCApCiAgICAgICAgIHsKLSAgICAgICAgICAg IHN2YyA9IHJ0X3VuaXQodi0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICBzdmMgPSBydF91bml0 KHVuaXQpOwogICAgICAgICAgICAgc3ZjLT5wZXJpb2QgPSBNSUNST1NFQ1Mob3AtPnUucnRkcy5w ZXJpb2QpOyAvKiB0cmFuc2ZlciB0byBuYW5vc2VjICovCiAgICAgICAgICAgICBzdmMtPmJ1ZGdl dCA9IE1JQ1JPU0VDUyhvcC0+dS5ydGRzLmJ1ZGdldCk7CiAgICAgICAgIH0KQEAgLTE0NTQsNyAr MTQ0Niw3IEBAIHJ0X2RvbV9jbnRsKAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9 CiAgICAgICAgIGlmICggIXJjICkKLSAgICAgICAgICAgIC8qIG5vdGlmeSB1cHBlciBjYWxsZXIg aG93IG1hbnkgdmNwdXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gKi8KKyAgICAgICAgICAgIC8qIG5v dGlmeSB1cHBlciBjYWxsZXIgaG93IG1hbnkgdW5pdHMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gKi8K ICAgICAgICAgICAgIG9wLT51LnYubnJfdmNwdXMgPSBpbmRleDsKICAgICAgICAgYnJlYWs7CiAg ICAgfQpAQCAtMTQ2Myw3ICsxNDU1LDcgQEAgcnRfZG9tX2NudGwoCiB9CiAKIC8qCi0gKiBUaGUg cmVwbGVuaXNobWVudCB0aW1lciBoYW5kbGVyIHBpY2tzIHZjcHVzCisgKiBUaGUgcmVwbGVuaXNo bWVudCB0aW1lciBoYW5kbGVyIHBpY2tzIHVuaXRzCiAgKiBmcm9tIHRoZSByZXBscSBhbmQgZG9l cyB0aGUgYWN0dWFsIHJlcGxlbmlzaG1lbnQuCiAgKi8KIHN0YXRpYyB2b2lkIHJlcGxfdGltZXJf aGFuZGxlcih2b2lkICpkYXRhKXsKQEAgLTE0ODEsNyArMTQ3Myw3IEBAIHN0YXRpYyB2b2lkIHJl cGxfdGltZXJfaGFuZGxlcih2b2lkICpkYXRhKXsKICAgICBub3cgPSBOT1coKTsKIAogICAgIC8q Ci0gICAgICogRG8gdGhlIHJlcGxlbmlzaG1lbnQgYW5kIG1vdmUgcmVwbGVuaXNoZWQgdmNwdXMK KyAgICAgKiBEbyB0aGUgcmVwbGVuaXNobWVudCBhbmQgbW92ZSByZXBsZW5pc2hlZCB1bml0cwog ICAgICAqIHRvIHRoZSB0ZW1wb3JhcnkgbGlzdCB0byB0aWNrbGUuCiAgICAgICogSWYgc3ZjIGlz IG9uIHJ1biBxdWV1ZSwgd2UgbmVlZCB0byBwdXQgaXQgYXQKICAgICAgKiB0aGUgY29ycmVjdCBw bGFjZSBzaW5jZSBpdHMgZGVhZGxpbmUgY2hhbmdlcy4KQEAgLTE0OTcsNyArMTQ4OSw3IEBAIHN0 YXRpYyB2b2lkIHJlcGxfdGltZXJfaGFuZGxlcih2b2lkICpkYXRhKXsKICAgICAgICAgcnRfdXBk YXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKICAgICAgICAgbGlzdF9hZGQoJnN2Yy0+cmVwbHFfZWxl bSwgJnRtcF9yZXBscSk7CiAKLSAgICAgICAgaWYgKCB2Y3B1X29uX3Eoc3ZjKSApCisgICAgICAg IGlmICggdW5pdF9vbl9xKHN2YykgKQogICAgICAgICB7CiAgICAgICAgICAgICBxX3JlbW92ZShz dmMpOwogICAgICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOwpAQCAtMTUwNSwyNiArMTQ5 NywyNiBAQCBzdGF0aWMgdm9pZCByZXBsX3RpbWVyX2hhbmRsZXIodm9pZCAqZGF0YSl7CiAgICAg fQogCiAgICAgLyoKLSAgICAgKiBJdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgdXBkYXRlZCB2 Y3B1cy4KLSAgICAgKiBJZiBhbiB1cGRhdGVkIHZjcHUgaXMgcnVubmluZywgdGlja2xlIHRoZSBo ZWFkIG9mIHRoZQorICAgICAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBvZiB1cGRhdGVkIHVu aXRzLgorICAgICAqIElmIGFuIHVwZGF0ZWQgdW5pdCBpcyBydW5uaW5nLCB0aWNrbGUgdGhlIGhl YWQgb2YgdGhlCiAgICAgICogcnVucXVldWUgaWYgaXQgaGFzIGEgaGlnaGVyIHByaW9yaXR5Lgot ICAgICAqIElmIGFuIHVwZGF0ZWQgdmNwdSB3YXMgZGVwbGV0ZWQgYW5kIG9uIHRoZSBydW5xdWV1 ZSwgdGlja2xlIGl0LgotICAgICAqIEZpbmFsbHksIHJlaW5zZXJ0IHRoZSB2Y3B1cyBiYWNrIHRv IHJlcGxlbmlzaGVtZW50IGV2ZW50cyBsaXN0LgorICAgICAqIElmIGFuIHVwZGF0ZWQgdW5pdCB3 YXMgZGVwbGV0ZWQgYW5kIG9uIHRoZSBydW5xdWV1ZSwgdGlja2xlIGl0LgorICAgICAqIEZpbmFs bHksIHJlaW5zZXJ0IHRoZSB1bml0cyBiYWNrIHRvIHJlcGxlbmlzaGVtZW50IGV2ZW50cyBsaXN0 LgogICAgICAqLwogICAgIGxpc3RfZm9yX2VhY2hfc2FmZSAoIGl0ZXIsIHRtcCwgJnRtcF9yZXBs cSApCiAgICAgewogICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIpOwogCi0gICAgICAgIGlm ICggY3Vycl9vbl9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IpID09IHN2Yy0+dmNwdS0+c2NoZWRf dW5pdCAmJgorICAgICAgICBpZiAoIGN1cnJfb25fY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCkpID09IHN2Yy0+dW5pdCAmJgogICAgICAgICAgICAgICFsaXN0X2VtcHR5KHJ1bnEpICkKICAg ICAgICAgewogICAgICAgICAgICAgc3RydWN0IHJ0X3VuaXQgKm5leHRfb25fcnVucSA9IHFfZWxl bShydW5xLT5uZXh0KTsKIAotICAgICAgICAgICAgaWYgKCBjb21wYXJlX3ZjcHVfcHJpb3JpdHko c3ZjLCBuZXh0X29uX3J1bnEpIDwgMCApCisgICAgICAgICAgICBpZiAoIGNvbXBhcmVfdW5pdF9w cmlvcml0eShzdmMsIG5leHRfb25fcnVucSkgPCAwICkKICAgICAgICAgICAgICAgICBydW5xX3Rp Y2tsZShvcHMsIG5leHRfb25fcnVucSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIF9f dGVzdF9hbmRfY2xlYXJfYml0KF9fUlREU19kZXBsZXRlZCwgJnN2Yy0+ZmxhZ3MpICYmCi0gICAg ICAgICAgICAgICAgICB2Y3B1X29uX3Eoc3ZjKSApCisgICAgICAgICAgICAgICAgICB1bml0X29u X3Eoc3ZjKSApCiAgICAgICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yyk7CiAKICAgICAgICAg bGlzdF9kZWwoJnN2Yy0+cmVwbHFfZWxlbSk7CkBAIC0xNTMyLDcgKzE1MjQsNyBAQCBzdGF0aWMg dm9pZCByZXBsX3RpbWVyX2hhbmRsZXIodm9pZCAqZGF0YSl7CiAgICAgfQogCiAgICAgLyoKLSAg ICAgKiBJZiB0aGVyZSBhcmUgdmNwdXMgbGVmdCBpbiB0aGUgcmVwbGVuaXNobWVudCBldmVudCBs aXN0LAorICAgICAqIElmIHRoZXJlIGFyZSB1bml0cyBsZWZ0IGluIHRoZSByZXBsZW5pc2htZW50 IGV2ZW50IGxpc3QsCiAgICAgICogc2V0IHRoZSBuZXh0IHJlcGxlbmlzaG1lbnQgdG8gaGFwcGVu IGF0IHRoZSBkZWFkbGluZSBvZgogICAgICAqIHRoZSBvbmUgaW4gdGhlIGZyb250LgogICAgICAq LwotLSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 283EDC04E84 for ; Tue, 28 May 2019 10:34:06 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E778D208C3 for ; Tue, 28 May 2019 10:34:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E778D208C3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVZQT-0005QH-NX; Tue, 28 May 2019 10:33:49 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVZQB-0004mV-7K for xen-devel@lists.xenproject.org; Tue, 28 May 2019 10:33:31 +0000 X-Inumbo-ID: 04c33706-8134-11e9-a530-2316f2ad48b6 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 04c33706-8134-11e9-a530-2316f2ad48b6; Tue, 28 May 2019 10:33:23 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 1F360B03C; Tue, 28 May 2019 10:33:22 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Tue, 28 May 2019 12:32:34 +0200 Message-Id: <20190528103313.1343-22-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190528103313.1343-1-jgross@suse.com> References: <20190528103313.1343-1-jgross@suse.com> Subject: [Xen-devel] [PATCH 21/60] xen/sched: make rt scheduler vcpu agnostic. X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , George Dunlap , Meng Xu , Dario Faggioli MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190528103234.nMsgtc7uLn0AmDbmPaeG4VBrCMoITreMgPrez0DI9cs@z> U3dpdGNoIHJ0IHNjaGVkdWxlciBjb21wbGV0ZWx5IGZyb20gdmNwdSB0byBzY2hlZF91bml0IHVz YWdlLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0K IHhlbi9jb21tb24vc2NoZWRfcnQuYyB8IDM1NiArKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCsp LCAxODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIv eGVuL2NvbW1vbi9zY2hlZF9ydC5jCmluZGV4IDViMWY2NDU5Y2MuLjU3ODgzYmQwYTAgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMK QEAgLTM2LDcgKzM2LDcgQEAKICAqCiAgKiBNaWdyYXRpb24gY29tcGVuc2F0aW9uIGFuZCByZXNp c3QgbGlrZSBjcmVkaXQyIHRvIGJldHRlciB1c2UgY2FjaGU7CiAgKiBMb2NrIEhvbGRlciBQcm9i bGVtLCB1c2luZyB5aWVsZD8KLSAqIFNlbGYgc3dpdGNoIHByb2JsZW06IFZDUFVzIG9mIHRoZSBz YW1lIGRvbWFpbiBtYXkgcHJlZW1wdCBlYWNoIG90aGVyOworICogU2VsZiBzd2l0Y2ggcHJvYmxl bTogVU5JVHMgb2YgdGhlIHNhbWUgZG9tYWluIG1heSBwcmVlbXB0IGVhY2ggb3RoZXI7CiAgKi8K IAogLyoKQEAgLTQ0LDMwICs0NCwzMCBAQAogICoKICAqIFRoaXMgc2NoZWR1bGVyIGZvbGxvd3Mg dGhlIFByZWVtcHRpdmUgR2xvYmFsIEVhcmxpZXN0IERlYWRsaW5lIEZpcnN0IChFREYpCiAgKiB0 aGVvcnkgaW4gcmVhbC10aW1lIGZpZWxkLgotICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQsIHRo ZSBWQ1BVIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgotICogVGhl IHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBWQ1BVIHRvIHJ1biBvbiBh IGZlYXNpYmxlIFBDUFUuCi0gKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFZDUFUgY2FuIHJ1 biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCi0gKiBoYXMgYSBsb3dlci1w cmlvcml0eSBWQ1BVIHJ1bm5pbmcgb24gaXQuKQorICogQXQgYW55IHNjaGVkdWxpbmcgcG9pbnQs IHRoZSBVTklUIHdpdGggZWFybGllciBkZWFkbGluZSBoYXMgaGlnaGVyIHByaW9yaXR5LgorICog VGhlIHNjaGVkdWxlciBhbHdheXMgcGlja3MgaGlnaGVzdCBwcmlvcml0eSBVTklUIHRvIHJ1biBv biBhIGZlYXNpYmxlIFBDUFUuCisgKiBBIFBDUFUgaXMgZmVhc2libGUgaWYgdGhlIFVOSVQgY2Fu IHJ1biBvbiB0aGlzIFBDUFUgYW5kICh0aGUgUENQVSBpcyBpZGxlIG9yCisgKiBoYXMgYSBsb3dl ci1wcmlvcml0eSBVTklUIHJ1bm5pbmcgb24gaXQuKQogICoKLSAqIEVhY2ggVkNQVSBoYXMgYSBk ZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5kIGEgZXh0cmF0aW1lIGZsYWcKLSAqIFRoZSBkZWFk bGluZSBvZiBhIFZDUFUgaXMgYXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZDsKLSAqIEEgVkNQVSBo YXMgaXRzIGJ1ZGdldCByZXBsZW5pc2hlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcGVyaW9k OwotICogV2hpbGUgc2NoZWR1bGVkLCBhIFZDUFUgYnVybnMgaXRzIGJ1ZGdldC4KLSAqIFRoZSBW Q1BVIG5lZWRzIHRvIGZpbmlzaCBpdHMgYnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFj aCBwZXJpb2Q7Ci0gKiBUaGUgVkNQVSBkaXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUg ZW5kIG9mIGVhY2ggcGVyaW9kLgotICogV2hlbiBhIFZDUFUgcnVucyBvdXQgb2YgYnVkZ2V0IGlu IGEgcGVyaW9kLCBpZiBpdHMgZXh0cmF0aW1lIGZsYWcgaXMgc2V0LAotICogdGhlIFZDUFUgaW5j cmVhc2VzIGl0cyBwcmlvcml0eV9sZXZlbCBieSAxIGFuZCByZWZpbGxzIGl0cyBidWRnZXQ7IG90 aGVyd2lzZSwKKyAqIEVhY2ggVU5JVCBoYXMgYSBkZWRpY2F0ZWQgcGVyaW9kLCBidWRnZXQgYW5k IGEgZXh0cmF0aW1lIGZsYWcKKyAqIFRoZSBkZWFkbGluZSBvZiBhbiBVTklUIGlzIGF0IHRoZSBl bmQgb2YgZWFjaCBwZXJpb2Q7CisgKiBBbiBVTklUIGhhcyBpdHMgYnVkZ2V0IHJlcGxlbmlzaGVk IGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBwZXJpb2Q7CisgKiBXaGlsZSBzY2hlZHVsZWQsIGFu IFVOSVQgYnVybnMgaXRzIGJ1ZGdldC4KKyAqIFRoZSBVTklUIG5lZWRzIHRvIGZpbmlzaCBpdHMg YnVkZ2V0IGJlZm9yZSBpdHMgZGVhZGxpbmUgaW4gZWFjaCBwZXJpb2Q7CisgKiBUaGUgVU5JVCBk aXNjYXJkcyBpdHMgdW51c2VkIGJ1ZGdldCBhdCB0aGUgZW5kIG9mIGVhY2ggcGVyaW9kLgorICog V2hlbiBhbiBVTklUIHJ1bnMgb3V0IG9mIGJ1ZGdldCBpbiBhIHBlcmlvZCwgaWYgaXRzIGV4dHJh dGltZSBmbGFnIGlzIHNldCwKKyAqIHRoZSBVTklUIGluY3JlYXNlcyBpdHMgcHJpb3JpdHlfbGV2 ZWwgYnkgMSBhbmQgcmVmaWxscyBpdHMgYnVkZ2V0OyBvdGhlcndpc2UsCiAgKiBpdCBoYXMgdG8g d2FpdCB1bnRpbCBuZXh0IHBlcmlvZC4KICAqCi0gKiBFYWNoIFZDUFUgaXMgaW1wbGVtZW50ZWQg YXMgYSBkZWZlcmFibGUgc2VydmVyLgotICogV2hlbiBhIFZDUFUgaGFzIGEgdGFzayBydW5uaW5n IG9uIGl0LCBpdHMgYnVkZ2V0IGlzIGNvbnRpbnVvdXNseSBidXJuZWQ7Ci0gKiBXaGVuIGEgVkNQ VSBoYXMgbm8gdGFzayBidXQgd2l0aCBidWRnZXQgbGVmdCwgaXRzIGJ1ZGdldCBpcyBwcmVzZXJ2 ZWQuCisgKiBFYWNoIFVOSVQgaXMgaW1wbGVtZW50ZWQgYXMgYSBkZWZlcmFibGUgc2VydmVyLgor ICogV2hlbiBhbiBVTklUIGhhcyBhIHRhc2sgcnVubmluZyBvbiBpdCwgaXRzIGJ1ZGdldCBpcyBj b250aW51b3VzbHkgYnVybmVkOworICogV2hlbiBhbiBVTklUIGhhcyBubyB0YXNrIGJ1dCB3aXRo IGJ1ZGdldCBsZWZ0LCBpdHMgYnVkZ2V0IGlzIHByZXNlcnZlZC4KICAqCiAgKiBRdWV1ZSBzY2hl bWU6CiAgKiBBIGdsb2JhbCBydW5xdWV1ZSBhbmQgYSBnbG9iYWwgZGVwbGV0ZWRxdWV1ZSBmb3Ig ZWFjaCBDUFUgcG9vbC4KLSAqIFRoZSBydW5xdWV1ZSBob2xkcyBhbGwgcnVubmFibGUgVkNQVXMg d2l0aCBidWRnZXQsCisgKiBUaGUgcnVucXVldWUgaG9sZHMgYWxsIHJ1bm5hYmxlIFVOSVRzIHdp dGggYnVkZ2V0LAogICogc29ydGVkIGJ5IHByaW9yaXR5X2xldmVsIGFuZCBkZWFkbGluZTsKLSAq IFRoZSBkZXBsZXRlZHF1ZXVlIGhvbGRzIGFsbCBWQ1BVcyB3aXRob3V0IGJ1ZGdldCwgdW5zb3J0 ZWQ7CisgKiBUaGUgZGVwbGV0ZWRxdWV1ZSBob2xkcyBhbGwgVU5JVHMgd2l0aG91dCBidWRnZXQs IHVuc29ydGVkOwogICoKICAqIE5vdGU6IGNwdW1hc2sgYW5kIGNwdXBvb2wgaXMgc3VwcG9ydGVk LgogICovCkBAIC04Miw3ICs4Miw3IEBACiAgKiBpbiBzY2hlZHVsZS5jCiAgKgogICogVGhlIGZ1 bmN0aW9ucyBpbnZvbGVzIFJ1blEgYW5kIG5lZWRzIHRvIGdyYWIgbG9ja3MgYXJlOgotICogICAg dmNwdV9pbnNlcnQsIHZjcHVfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAorICog ICAgdW5pdF9pbnNlcnQsIHVuaXRfcmVtb3ZlLCBjb250ZXh0X3NhdmVkLCBydW5xX2luc2VydAog ICovCiAKIApAQCAtOTUsNyArOTUsNyBAQAogCiAvKgogICogTWF4IHBlcmlvZDogbWF4IGRlbHRh IG9mIHRpbWUgdHlwZSwgYmVjYXVzZSBwZXJpb2QgaXMgYWRkZWQgdG8gdGhlIHRpbWUKLSAqIGEg dmNwdSBhY3RpdmF0ZXMsIHNvIHRoaXMgbXVzdCBub3Qgb3ZlcmZsb3cuCisgKiBhbiB1bml0IGFj dGl2YXRlcywgc28gdGhpcyBtdXN0IG5vdCBvdmVyZmxvdy4KICAqIE1pbiBwZXJpb2Q6IDEwIHVz LCBjb25zaWRlcmluZyB0aGUgc2NoZWR1bGluZyBvdmVyaGVhZCAod2hlbiBwZXJpb2QgaXMKICAq IHRvbyBsb3csIHNjaGVkdWxpbmcgaXMgaW52b2tlZCB0b28gZnJlcXVlbnRseSwgY2F1c2luZyBo aWdoIG92ZXJoZWFkKS4KICAqLwpAQCAtMTIxLDEyICsxMjEsMTIgQEAKICAqIEZsYWdzCiAgKi8K IC8qCi0gKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB2Y3B1IGVpdGhlciBydW5uaW5nIG9uLCBv ciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCisgKiBSVERTX3NjaGVkdWxlZDogSXMgdGhpcyB1bml0 IGVpdGhlciBydW5uaW5nIG9uLCBvciBjb250ZXh0LXN3aXRjaGluZyBvZmYsCiAgKiBhIHBoeWlz Y2FsIGNwdT8KICAqICsgQWNjZXNzZWQgb25seSB3aXRoIGdsb2JhbCBsb2NrIGhlbGQuCiAgKiAr IFNldCB3aGVuIGNob3NlbiBhcyBuZXh0IGluIHJ0X3NjaGVkdWxlKCkuCiAgKiArIENsZWFyZWQg YWZ0ZXIgY29udGV4dCBzd2l0Y2ggaGFzIGJlZW4gc2F2ZWQgaW4gcnRfY29udGV4dF9zYXZlZCgp Ci0gKiArIENoZWNrZWQgaW4gdmNwdV93YWtlIHRvIHNlZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBS dW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCisgKiArIENoZWNrZWQgaW4gdW5pdF93YWtlIHRvIHNl ZSBpZiB3ZSBjYW4gYWRkIHRvIHRoZSBSdW5xdWV1ZSwgb3IgaWYgd2Ugc2hvdWxkCiAgKiAgIHNl dCBSVERTX2RlbGF5ZWRfcnVucV9hZGQKICAqICsgQ2hlY2tlZCB0byBiZSBmYWxzZSBpbiBydW5x X2luc2VydC4KICAqLwpAQCAtMTQ2LDE1ICsxNDYsMTUgQEAKIC8qCiAgKiBSVERTX2RlcGxldGVk OiBEb2VzIHRoaXMgdmNwIHJ1biBvdXQgb2YgYnVkZ2V0PwogICogVGhpcyBmbGFnIGlzCi0gKiAr IHNldCBpbiBidXJuX2J1ZGdldCgpIGlmIGEgdmNwdSBoYXMgemVybyBidWRnZXQgbGVmdDsKKyAq ICsgc2V0IGluIGJ1cm5fYnVkZ2V0KCkgaWYgYW4gdW5pdCBoYXMgemVybyBidWRnZXQgbGVmdDsK ICAqICsgY2xlYXJlZCBhbmQgY2hlY2tlZCBpbiB0aGUgcmVwZW5pc2htZW50IGhhbmRsZXIsCi0g KiAgIGZvciB0aGUgdmNwdXMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCisgKiAgIGZvciB0 aGUgdW5pdHMgdGhhdCBhcmUgYmVpbmcgcmVwbGVuaXNoZWQuCiAgKi8KICNkZWZpbmUgX19SVERT X2RlcGxldGVkICAgICAzCiAjZGVmaW5lIFJURFNfZGVwbGV0ZWQgKDE8PF9fUlREU19kZXBsZXRl ZCkKIAogLyoKLSAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHZjcHUgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKKyAqIFJURFNfZXh0cmF0aW1lOiBDYW4gdGhlIHVuaXQgcnVuIGluIHRoZSB0aW1l IHRoYXQgaXMKICAqIG5vdCBwYXJ0IG9mIGFueSByZWFsLXRpbWUgcmVzZXJ2YXRpb24sIGFuZCB3 b3VsZCB0aGVyZWZvcmUKICAqIGJlIG90aGVyd2lzZSBsZWZ0IGlkbGU/CiAgKi8KQEAgLTE4Mywx MSArMTgzLDExIEBAIHN0cnVjdCBydF9wcml2YXRlIHsKICAgICBzcGlubG9ja190IGxvY2s7ICAg ICAgICAgICAgLyogdGhlIGdsb2JhbCBjb2Fyc2UtZ3JhaW5lZCBsb2NrICovCiAgICAgc3RydWN0 IGxpc3RfaGVhZCBzZG9tOyAgICAgIC8qIGxpc3Qgb2YgYXZhaWxhbGJlIGRvbWFpbnMsIHVzZWQg Zm9yIGR1bXAgKi8KIAotICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucTsgICAgICAvKiBvcmRlcmVk IGxpc3Qgb2YgcnVubmFibGUgdmNwdXMgKi8KLSAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlcGxldGVk cTsgLyogdW5vcmRlcmVkIGxpc3Qgb2YgZGVwbGV0ZWQgdmNwdXMgKi8KKyAgICBzdHJ1Y3QgbGlz dF9oZWFkIHJ1bnE7ICAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHVuaXRzICovCisg ICAgc3RydWN0IGxpc3RfaGVhZCBkZXBsZXRlZHE7IC8qIHVub3JkZXJlZCBsaXN0IG9mIGRlcGxl dGVkIHVuaXRzICovCiAKICAgICBzdHJ1Y3QgdGltZXIgcmVwbF90aW1lcjsgICAgLyogcmVwbGVu aXNobWVudCB0aW1lciAqLwotICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHE7ICAgICAvKiBvcmRl cmVkIGxpc3Qgb2YgdmNwdXMgdGhhdCBuZWVkIHJlcGxlbmlzaG1lbnQgKi8KKyAgICBzdHJ1Y3Qg bGlzdF9oZWFkIHJlcGxxOyAgICAgLyogb3JkZXJlZCBsaXN0IG9mIHVuaXRzIHRoYXQgbmVlZCBy ZXBsZW5pc2htZW50ICovCiAKICAgICBjcHVtYXNrX3QgdGlja2xlZDsgICAgICAgICAgLyogY3B1 cyBiZWVuIHRpY2tsZWQgKi8KIH07CkBAIC0xOTksMTggKzE5OSwxOCBAQCBzdHJ1Y3QgcnRfdW5p dCB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBxX2VsZW07ICAgICAvKiBvbiB0aGUgcnVucS9kZXBs ZXRlZHEgbGlzdCAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVwbHFfZWxlbTsgLyogb24gdGhl IHJlcGxlbmlzaG1lbnQgZXZlbnRzIGxpc3QgKi8KIAotICAgIC8qIFZDUFUgcGFyYW1ldGVycywg aW4gbmFub3NlY29uZHMgKi8KKyAgICAvKiBVTklUIHBhcmFtZXRlcnMsIGluIG5hbm9zZWNvbmRz ICovCiAgICAgc190aW1lX3QgcGVyaW9kOwogICAgIHNfdGltZV90IGJ1ZGdldDsKIAotICAgIC8q IFZDUFUgY3VycmVudCBpbmZvcm1hdGlvbiBpbiBuYW5vc2Vjb25kICovCisgICAgLyogVU5JVCBj dXJyZW50IGluZm9ybWF0aW9uIGluIG5hbm9zZWNvbmQgKi8KICAgICBzX3RpbWVfdCBjdXJfYnVk Z2V0OyAgICAgICAgIC8qIGN1cnJlbnQgYnVkZ2V0ICovCiAgICAgc190aW1lX3QgbGFzdF9zdGFy dDsgICAgICAgICAvKiBsYXN0IHN0YXJ0IHRpbWUgKi8KICAgICBzX3RpbWVfdCBjdXJfZGVhZGxp bmU7ICAgICAgIC8qIGN1cnJlbnQgZGVhZGxpbmUgZm9yIEVERiAqLwogCiAgICAgLyogVXAtcG9p bnRlcnMgKi8KICAgICBzdHJ1Y3QgcnRfZG9tICpzZG9tOwotICAgIHN0cnVjdCB2Y3B1ICp2Y3B1 OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogCiAgICAgdW5zaWduZWQgcHJpb3JpdHlf bGV2ZWw7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzX2V4dHJh dGltZShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICogYW5kIHRoZSByZXBsZW5pc2htZW50 IGV2ZW50cyBxdWV1ZS4KICAqLwogc3RhdGljIGludAotdmNwdV9vbl9xKGNvbnN0IHN0cnVjdCBy dF91bml0ICpzdmMpCit1bml0X29uX3EoY29uc3Qgc3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAg IHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5xX2VsZW0pOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBA IHJlcGxxX2VsZW0oc3RydWN0IGxpc3RfaGVhZCAqZWxlbSkKIH0KIAogc3RhdGljIGludAotdmNw dV9vbl9yZXBscShjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQordW5pdF9vbl9yZXBscShjb25z dCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogewogICAgIHJldHVybiAhbGlzdF9lbXB0eSgmc3ZjLT5y ZXBscV9lbGVtKTsKIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCB2Y3B1X29uX3JlcGxxKGNvbnN0IHN0 cnVjdCBydF91bml0ICpzdmMpCiAgKiBPdGhlcndpc2UsIHJldHVybiB2YWx1ZSA8IDAKICAqLwog c3RhdGljIHNfdGltZV90Ci1jb21wYXJlX3ZjcHVfcHJpb3JpdHkoY29uc3Qgc3RydWN0IHJ0X3Vu aXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCitjb21wYXJlX3VuaXRfcHJpb3JpdHko Y29uc3Qgc3RydWN0IHJ0X3VuaXQgKnYxLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqdjIpCiB7CiAg ICAgaW50IHByaW8gPSB2Mi0+cHJpb3JpdHlfbGV2ZWwgLSB2MS0+cHJpb3JpdHlfbGV2ZWw7CiAK QEAgLTMwMiwxNSArMzAyLDE1IEBAIGNvbXBhcmVfdmNwdV9wcmlvcml0eShjb25zdCBzdHJ1Y3Qg cnRfdW5pdCAqdjEsIGNvbnN0IHN0cnVjdCBydF91bml0ICp2MikKIH0KIAogLyoKLSAqIERlYnVn IHJlbGF0ZWQgY29kZSwgZHVtcCB2Y3B1L2NwdSBpbmZvcm1hdGlvbgorICogRGVidWcgcmVsYXRl ZCBjb2RlLCBkdW1wIHVuaXQvY3B1IGluZm9ybWF0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1ydF9k dW1wX3ZjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5p dCAqc3ZjKQorcnRfZHVtcF91bml0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qg c3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKICAgICBjcHVtYXNrX3QgKmNwdXBvb2xfbWFzaywgKm1h c2s7CiAKICAgICBBU1NFUlQoc3ZjICE9IE5VTEwpOwotICAgIC8qIGlkbGUgdmNwdSAqLworICAg IC8qIGlkbGUgdW5pdCAqLwogICAgIGlmKCBzdmMtPnNkb20gPT0gTlVMTCApCiAgICAgewogICAg ICAgICBwcmludGsoIlxuIik7CkBAIC0zMjEsMjAgKzMyMSwyMCBAQCBydF9kdW1wX3ZjcHUoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAg ICAqIFdlIGNhbid0IGp1c3QgdXNlICdjcHVtYXNrX3NjcmF0Y2gnIGJlY2F1c2UgdGhlIGR1bXBp bmcgY2FuCiAgICAgICogaGFwcGVuIGZyb20gYSBwQ1BVIG91dHNpZGUgb2YgdGhpcyBzY2hlZHVs ZXIncyBjcHVwb29sLCBhbmQKICAgICAgKiBoZW5jZSBpdCdzIG5vdCByaWdodCB0byB1c2UgaXRz IHBDUFUncyBzY3JhdGNoIG1hc2suCi0gICAgICogT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIHNh ZmUgdG8gdXNlIHN2Yy0+dmNwdS0+cHJvY2Vzc29yJ3MKKyAgICAgKiBPbiB0aGUgb3RoZXIgaGFu ZCwgaXQgaXMgc2FmZSB0byB1c2Ugc2NoZWRfdW5pdF9jcHUoc3ZjLT51bml0KSdzCiAgICAgICog b3duIHNjcmF0Y2ggc3BhY2UsIHNpbmNlIHdlIGhvbGQgdGhlIHJ1bnF1ZXVlIGxvY2suCiAgICAg ICovCi0gICAgbWFzayA9IGNwdW1hc2tfc2NyYXRjaF9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3Ip OworICAgIG1hc2sgPSBjcHVtYXNrX3NjcmF0Y2hfY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCkpOwogCi0gICAgY3B1cG9vbF9tYXNrID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayhzdmMtPnZj cHUtPmRvbWFpbik7Ci0gICAgY3B1bWFza19hbmQobWFzaywgY3B1cG9vbF9tYXNrLCBzdmMtPnZj cHUtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICBjcHVwb29sX21hc2sgPSBj cHVwb29sX2RvbWFpbl9jcHVtYXNrKHN2Yy0+dW5pdC0+ZG9tYWluKTsKKyAgICBjcHVtYXNrX2Fu ZChtYXNrLCBjcHVwb29sX21hc2ssIHN2Yy0+dW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAg IHByaW50aygiWyU1ZC4lLTJ1XSBjcHUgJXUsICglIlBSSV9zdGltZSIsICUiUFJJX3N0aW1lIiks IgogICAgICAgICAgICAiIGN1cl9iPSUiUFJJX3N0aW1lIiBjdXJfZD0lIlBSSV9zdGltZSIgbGFz dF9zdGFydD0lIlBSSV9zdGltZSJcbiIKICAgICAgICAgICAgIiBcdFx0IHByaW9yaXR5X2xldmVs PSVkIGhhc19leHRyYXRpbWU9JWRcbiIKICAgICAgICAgICAgIiBcdFx0IG9uUT0lZCBydW5uYWJs ZT0lZCBmbGFncz0leCBlZmZlY3RpdmUgaGFyZF9hZmZpbml0eT0lKnBibFxuIiwKLSAgICAgICAg ICAgIHN2Yy0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUt PnZjcHVfaWQsCi0gICAgICAgICAgICBzdmMtPnZjcHUtPnByb2Nlc3NvciwKKyAgICAgICAgICAg IHN2Yy0+dW5pdC0+ZG9tYWluLT5kb21haW5faWQsCisgICAgICAgICAgICBzdmMtPnVuaXQtPnVu aXRfaWQsCisgICAgICAgICAgICBzY2hlZF91bml0X2NwdShzdmMtPnVuaXQpLAogICAgICAgICAg ICAgc3ZjLT5wZXJpb2QsCiAgICAgICAgICAgICBzdmMtPmJ1ZGdldCwKICAgICAgICAgICAgIHN2 Yy0+Y3VyX2J1ZGdldCwKQEAgLTM0Miw4ICszNDIsOCBAQCBydF9kdW1wX3ZjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgICAgICAg ICAgc3ZjLT5sYXN0X3N0YXJ0LAogICAgICAgICAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCwKICAg ICAgICAgICAgIGhhc19leHRyYXRpbWUoc3ZjKSwKLSAgICAgICAgICAgIHZjcHVfb25fcShzdmMp LAotICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShzdmMtPnZjcHUpLAorICAgICAgICAgICAgdW5p dF9vbl9xKHN2YyksCisgICAgICAgICAgICB1bml0X3J1bm5hYmxlKHN2Yy0+dW5pdCksCiAgICAg ICAgICAgICBzdmMtPmZsYWdzLAogICAgICAgICAgICAgbnJfY3B1X2lkcywgY3B1bWFza19iaXRz KG1hc2spKTsKIH0KQEAgLTM1NywxMSArMzU3LDExIEBAIHJ0X2R1bXBfcGNwdShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2 LT5sb2NrLCBmbGFncyk7CiAgICAgcHJpbnRrKCJDUFVbJTAyZF1cbiIsIGNwdSk7Ci0gICAgLyog Y3VycmVudCBWQ1BVIChub3RoaW5nIHRvIHNheSBpZiB0aGF0J3MgdGhlIGlkbGUgdmNwdSkuICov CisgICAgLyogY3VycmVudCBVTklUIChub3RoaW5nIHRvIHNheSBpZiB0aGF0J3MgdGhlIGlkbGUg dW5pdCkuICovCiAgICAgc3ZjID0gcnRfdW5pdChjdXJyX29uX2NwdShjcHUpKTsKLSAgICBpZiAo IHN2YyAmJiAhaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkgKQorICAgIGlmICggc3ZjICYmICFpc19p ZGxlX3VuaXQoc3ZjLT51bml0KSApCiAgICAgewotICAgICAgICBydF9kdW1wX3ZjcHUob3BzLCBz dmMpOworICAgICAgICBydF9kdW1wX3VuaXQob3BzLCBzdmMpOwogICAgIH0KICAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIH0KQEAgLTM4OCwzNSArMzg4LDM1 IEBAIHJ0X2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIGxpc3RfZm9yX2Vh Y2ggKCBpdGVyLCBydW5xICkKICAgICB7CiAgICAgICAgIHN2YyA9IHFfZWxlbShpdGVyKTsKLSAg ICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKKyAgICAgICAgcnRfZHVtcF91bml0KG9wcywg c3ZjKTsKICAgICB9CiAKICAgICBwcmludGsoIkdsb2JhbCBEZXBsZXRlZFF1ZXVlIGluZm86XG4i KTsKICAgICBsaXN0X2Zvcl9lYWNoICggaXRlciwgZGVwbGV0ZWRxICkKICAgICB7CiAgICAgICAg IHN2YyA9IHFfZWxlbShpdGVyKTsKLSAgICAgICAgcnRfZHVtcF92Y3B1KG9wcywgc3ZjKTsKKyAg ICAgICAgcnRfZHVtcF91bml0KG9wcywgc3ZjKTsKICAgICB9CiAKICAgICBwcmludGsoIkdsb2Jh bCBSZXBsZW5pc2htZW50IEV2ZW50cyBpbmZvOlxuIik7CiAgICAgbGlzdF9mb3JfZWFjaCAoIGl0 ZXIsIHJlcGxxICkKICAgICB7CiAgICAgICAgIHN2YyA9IHJlcGxxX2VsZW0oaXRlcik7Ci0gICAg ICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAgICAgIHJ0X2R1bXBfdW5pdChvcHMsIHN2 Yyk7CiAgICAgfQogCiAgICAgcHJpbnRrKCJEb21haW4gaW5mbzpcbiIpOwogICAgIGxpc3RfZm9y X2VhY2ggKCBpdGVyLCAmcHJ2LT5zZG9tICkKICAgICB7Ci0gICAgICAgIHN0cnVjdCB2Y3B1ICp2 OworICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdDsKIAogICAgICAgICBzZG9tID0gbGlz dF9lbnRyeShpdGVyLCBzdHJ1Y3QgcnRfZG9tLCBzZG9tX2VsZW0pOwogICAgICAgICBwcmludGso Ilx0ZG9tYWluOiAlZFxuIiwgc2RvbS0+ZG9tLT5kb21haW5faWQpOwogCi0gICAgICAgIGZvcl9l YWNoX3ZjcHUgKCBzZG9tLT5kb20sIHYgKQorICAgICAgICBmb3JfZWFjaF9zY2hlZF91bml0ICgg c2RvbS0+ZG9tLCB1bml0ICkKICAgICAgICAgewotICAgICAgICAgICAgc3ZjID0gcnRfdW5pdCh2 LT5zY2hlZF91bml0KTsKLSAgICAgICAgICAgIHJ0X2R1bXBfdmNwdShvcHMsIHN2Yyk7CisgICAg ICAgICAgICBzdmMgPSBydF91bml0KHVuaXQpOworICAgICAgICAgICAgcnRfZHVtcF91bml0KG9w cywgc3ZjKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDU4LDEyICs0NTgsMTIgQEAgcnRfdXBk YXRlX2RlYWRsaW5lKHNfdGltZV90IG5vdywgc3RydWN0IHJ0X3VuaXQgKnN2YykKICAgICAvKiBU UkFDRSAqLwogICAgIHsKICAgICAgICAgc3RydWN0IF9fcGFja2VkIHsKLSAgICAgICAgICAgIHVu c2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgIHVuc2lnbmVkIHVuaXQ6MTYsIGRv bToxNjsKICAgICAgICAgICAgIHVuc2lnbmVkIHByaW9yaXR5X2xldmVsOwogICAgICAgICAgICAg dWludDY0X3QgY3VyX2RlYWRsaW5lLCBjdXJfYnVkZ2V0OwogICAgICAgICB9IGQ7Ci0gICAgICAg IGQuZG9tID0gc3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgZC52Y3B1ID0g c3ZjLT52Y3B1LT52Y3B1X2lkOworICAgICAgICBkLmRvbSA9IHN2Yy0+dW5pdC0+ZG9tYWluLT5k b21haW5faWQ7CisgICAgICAgIGQudW5pdCA9IHN2Yy0+dW5pdC0+dW5pdF9pZDsKICAgICAgICAg ZC5wcmlvcml0eV9sZXZlbCA9IHN2Yy0+cHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgIGQuY3VyX2Rl YWRsaW5lID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9kZWFkbGluZTsKICAgICAgICAgZC5jdXJfYnVk Z2V0ID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9idWRnZXQ7CkBAIC00NzYsMTUgKzQ3NiwxNSBAQCBy dF91cGRhdGVfZGVhZGxpbmUoc190aW1lX3Qgbm93LCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogfQog CiAvKgotICogSGVscGVycyBmb3IgcmVtb3ZpbmcgYW5kIGluc2VydGluZyBhIHZjcHUgaW4gYSBx dWV1ZQotICogdGhhdCBpcyBiZWluZyBrZXB0IG9yZGVyZWQgYnkgdGhlIHZjcHVzJyBkZWFkbGlu ZXMgKGFzIEVERgorICogSGVscGVycyBmb3IgcmVtb3ZpbmcgYW5kIGluc2VydGluZyBhbiB1bml0 IGluIGEgcXVldWUKKyAqIHRoYXQgaXMgYmVpbmcga2VwdCBvcmRlcmVkIGJ5IHRoZSB1bml0cycg ZGVhZGxpbmVzIChhcyBFREYKICAqIG1hbmRhdGVzKS4KICAqCi0gKiBGb3IgY2FsbGVycycgY29u dmVuaWVuY2UsIHRoZSB2Y3B1IHJlbW92aW5nIGhlbHBlciByZXR1cm5zCi0gKiB0cnVlIGlmIHRo ZSB2Y3B1IHJlbW92ZWQgd2FzIHRoZSBvbmUgYXQgdGhlIGZyb250IG9mIHRoZQorICogRm9yIGNh bGxlcnMnIGNvbnZlbmllbmNlLCB0aGUgdW5pdCByZW1vdmluZyBoZWxwZXIgcmV0dXJucworICog dHJ1ZSBpZiB0aGUgdW5pdCByZW1vdmVkIHdhcyB0aGUgb25lIGF0IHRoZSBmcm9udCBvZiB0aGUK ICAqIHF1ZXVlOyBzaW1pbGFybHksIHRoZSBpbnNlcnRpbmcgaGVscGVyIHJldHVybnMgdHJ1ZSBp ZiB0aGUKICAqIGluc2VydGVkIGVuZGVkIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUgKGkuZS4s IGluIGJvdGgKLSAqIGNhc2VzLCBpZiB0aGUgdmNwdSB3aXRoIHRoZSBlYXJsaWVzdCBkZWFkbGlu ZSBpcyB3aGF0IHdlCisgKiBjYXNlcywgaWYgdGhlIHVuaXQgd2l0aCB0aGUgZWFybGllc3QgZGVh ZGxpbmUgaXMgd2hhdCB3ZQogICogYXJlIGRlYWxpbmcgd2l0aCkuCiAgKi8KIHN0YXRpYyBpbmxp bmUgYm9vbApAQCAtNTEwLDcgKzUxMCw3IEBAIGRlYWRsaW5lX3F1ZXVlX2luc2VydChzdHJ1Y3Qg cnRfdW5pdCAqICgqcWVsZW0pKHN0cnVjdCBsaXN0X2hlYWQgKiksCiAgICAgbGlzdF9mb3JfZWFj aCAoIGl0ZXIsIHF1ZXVlICkKICAgICB7CiAgICAgICAgIHN0cnVjdCBydF91bml0ICogaXRlcl9z dmMgPSAoKnFlbGVtKShpdGVyKTsKLSAgICAgICAgaWYgKCBjb21wYXJlX3ZjcHVfcHJpb3JpdHko c3ZjLCBpdGVyX3N2YykgPiAwICkKKyAgICAgICAgaWYgKCBjb21wYXJlX3VuaXRfcHJpb3JpdHko c3ZjLCBpdGVyX3N2YykgPiAwICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBwb3MrKzsK ICAgICB9CkBAIC01MjUsNyArNTI1LDcgQEAgZGVhZGxpbmVfcXVldWVfaW5zZXJ0KHN0cnVjdCBy dF91bml0ICogKCpxZWxlbSkoc3RydWN0IGxpc3RfaGVhZCAqKSwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogcV9yZW1vdmUoc3RydWN0IHJ0X3VuaXQgKnN2YykKIHsKLSAgICBBU1NFUlQoIHZjcHVfb25f cShzdmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3Eoc3ZjKSApOwogICAgIGxpc3RfZGVsX2lu aXQoJnN2Yy0+cV9lbGVtKTsKIH0KIApAQCAtNTM1LDE0ICs1MzUsMTQgQEAgcmVwbHFfcmVtb3Zl KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKnN2YykKICAgICBz dHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihvcHMpOwogICAgIHN0cnVjdCBsaXN0X2hl YWQgKnJlcGxxID0gcnRfcmVwbHEob3BzKTsKIAotICAgIEFTU0VSVCggdmNwdV9vbl9yZXBscShz dmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAgIGlmICggZGVh ZGxpbmVfcXVldWVfcmVtb3ZlKHJlcGxxLCAmc3ZjLT5yZXBscV9lbGVtKSApCiAgICAgewogICAg ICAgICAvKgogICAgICAgICAgKiBUaGUgcmVwbGVuaXNobWVudCB0aW1lciBuZWVkcyB0byBiZSBz ZXQgdG8gZmlyZSB3aGVuIGEKLSAgICAgICAgICogcmVwbGVuaXNobWVudCBmb3IgdGhlIHZjcHUg YXQgdGhlIGZyb250IG9mIHRoZSByZXBsZW5pc2htZW50Ci0gICAgICAgICAqIHF1ZXVlIGlzIGR1 ZS4gSWYgaXQgaXMgc3VjaCB2Y3B1IHRoYXQgd2UganVzdCByZW1vdmVkLCB3ZSBtYXkKKyAgICAg ICAgICogcmVwbGVuaXNobWVudCBmb3IgdGhlIHVuaXQgYXQgdGhlIGZyb250IG9mIHRoZSByZXBs ZW5pc2htZW50CisgICAgICAgICAqIHF1ZXVlIGlzIGR1ZS4gSWYgaXQgaXMgc3VjaCB1bml0IHRo YXQgd2UganVzdCByZW1vdmVkLCB3ZSBtYXkKICAgICAgICAgICogbmVlZCB0byByZXByb2dyYW0g dGhlIHRpbWVyLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCAhbGlzdF9lbXB0eShyZXBscSkg KQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHJlcGxxX3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBydF91bml0ICpzdmMpCiAKIC8qCiAgKiBJbnNlcnQgc3ZjIHdpdGggYnVk Z2V0IGluIFJ1blEgYWNjb3JkaW5nIHRvIEVERjoKLSAqIHZjcHVzIHdpdGggc21hbGxlciBkZWFk bGluZXMgZ28gZmlyc3QuCisgKiB1bml0cyB3aXRoIHNtYWxsZXIgZGVhZGxpbmVzIGdvIGZpcnN0 LgogICogSW5zZXJ0IHN2YyB3aXRob3V0IGJ1ZGdldCBpbiBEZXBsZXRlZFEgdW5zb3J0ZWQ7CiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC01NjcsOCArNTY3LDggQEAgcnVucV9pbnNlcnQoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnJ1bnEgPSBydF9ydW5xKG9wcyk7CiAKICAgICBBU1NFUlQoIHNwaW5faXNfbG9ja2Vk KCZwcnYtPmxvY2spICk7Ci0gICAgQVNTRVJUKCAhdmNwdV9vbl9xKHN2YykgKTsKLSAgICBBU1NF UlQoIHZjcHVfb25fcmVwbHEoc3ZjKSApOworICAgIEFTU0VSVCggIXVuaXRfb25fcShzdmMpICk7 CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAgIC8qIGFkZCBzdmMgdG8g cnVucSBpZiBzdmMgc3RpbGwgaGFzIGJ1ZGdldCBvciBpdHMgZXh0cmF0aW1lIGlzIHNldCAqLwog ICAgIGlmICggc3ZjLT5jdXJfYnVkZ2V0ID4gMCB8fApAQCAtNTg0LDcgKzU4NCw3IEBAIHJlcGxx X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBydF91bml0ICpzdmMp CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqcmVwbHEgPSBydF9yZXBscShvcHMpOwogICAgIHN0cnVj dCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7CiAKLSAgICBBU1NFUlQoICF2Y3B1X29u X3JlcGxxKHN2YykgKTsKKyAgICBBU1NFUlQoICF1bml0X29uX3JlcGxxKHN2YykgKTsKIAogICAg IC8qCiAgICAgICogVGhlIHRpbWVyIG1heSBiZSByZS1wcm9ncmFtbWVkIGlmIHN2YyBpcyBpbnNl cnRlZApAQCAtNjA3LDEyICs2MDcsMTIgQEAgcmVwbHFfcmVpbnNlcnQoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIHN0cnVjdCBydF91bml0ICpy ZWFybV9zdmMgPSBzdmM7CiAgICAgYm9vbF90IHJlYXJtID0gMDsKIAotICAgIEFTU0VSVCggdmNw dV9vbl9yZXBscShzdmMpICk7CisgICAgQVNTRVJUKCB1bml0X29uX3JlcGxxKHN2YykgKTsKIAog ICAgIC8qCiAgICAgICogSWYgc3ZjIHdhcyBhdCB0aGUgZnJvbnQgb2YgdGhlIHJlcGxlbmlzaG1l bnQgcXVldWUsIHdlIGNlcnRhaW5seQogICAgICAqIG5lZWQgdG8gcmUtcHJvZ3JhbSB0aGUgdGlt ZXIsIGFuZCB3ZSB3YW50IHRvIHVzZSB0aGUgZGVhZGxpbmUgb2YKLSAgICAgKiB0aGUgdmNwdSB3 aGljaCBpcyBub3cgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZSAod2hpY2ggbWF5IHN0aWxsCisg ICAgICogdGhlIHVuaXQgd2hpY2ggaXMgbm93IGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUgKHdo aWNoIG1heSBzdGlsbAogICAgICAqIGJlIHN2YyBvciBub3QpLgogICAgICAqCiAgICAgICogV2Ug bWF5IGFsc28gbmVlZCB0byByZS1wcm9ncmFtLCBpZiBzdmMgaGFzIGJlZW4gcHV0IGF0IHRoZSBm cm9udApAQCAtNjMyLDI0ICs2MzIsMjMgQEAgcmVwbHFfcmVpbnNlcnQoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogfQogCiAvKgotICogUGljayBhIHZh bGlkIHJlc291cmNlIGZvciB0aGUgdmNwdSB2YwotICogVmFsaWQgcmVzb3VyY2Ugb2YgYSB2Y3B1 IGlzIGludGVzZWN0aW9uIG9mIHZjcHUncyBhZmZpbml0eQorICogUGljayBhIHZhbGlkIHJlc291 cmNlIGZvciB0aGUgdW5pdCB2YworICogVmFsaWQgcmVzb3VyY2Ugb2YgYW4gdW5pdCBpcyBpbnRl c2VjdGlvbiBvZiB1bml0J3MgYWZmaW5pdHkKICAqIGFuZCBhdmFpbGFibGUgcmVzb3VyY2VzCiAg Ki8KIHN0YXRpYyBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKgogcnRfcmVzX3BpY2soY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1 Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1OwogICAgIGNwdW1hc2tfdCBjcHVzOwogICAgIGNwdW1h c2tfdCAqb25saW5lOwogICAgIGludCBjcHU7CiAKLSAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFp bl9jcHVtYXNrKHZjLT5kb21haW4pOworICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWluX2NwdW1h c2sodW5pdC0+ZG9tYWluKTsKICAgICBjcHVtYXNrX2FuZCgmY3B1cywgb25saW5lLCB1bml0LT5j cHVfaGFyZF9hZmZpbml0eSk7CiAKLSAgICBjcHUgPSBjcHVtYXNrX3Rlc3RfY3B1KHZjLT5wcm9j ZXNzb3IsICZjcHVzKQotICAgICAgICAgICAgPyB2Yy0+cHJvY2Vzc29yCi0gICAgICAgICAgICA6 IGNwdW1hc2tfY3ljbGUodmMtPnByb2Nlc3NvciwgJmNwdXMpOworICAgIGNwdSA9IGNwdW1hc2tf dGVzdF9jcHUoc2NoZWRfdW5pdF9jcHUodW5pdCksICZjcHVzKQorICAgICAgICAgICAgPyBzY2hl ZF91bml0X2NwdSh1bml0KQorICAgICAgICAgICAgOiBjcHVtYXNrX2N5Y2xlKHNjaGVkX3VuaXRf Y3B1KHVuaXQpLCAmY3B1cyk7CiAgICAgQVNTRVJUKCAhY3B1bWFza19lbXB0eSgmY3B1cykgJiYg Y3B1bWFza190ZXN0X2NwdShjcHUsICZjcHVzKSApOwogCiAgICAgcmV0dXJuIGdldF9zY2hlZF9y ZXMoY3B1KTsKQEAgLTczOCw3ICs3MzcsNyBAQCBydF9zd2l0Y2hfc2NoZWQoc3RydWN0IHNjaGVk dWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKICAgICBzdHJ1Y3QgcnRfdW5pdCAqc3Zj ID0gdmRhdGE7CiAgICAgc3RydWN0IHNjaGVkX3Jlc291cmNlICpzZCA9IGdldF9zY2hlZF9yZXMo Y3B1KTsKIAotICAgIEFTU0VSVCghcGRhdGEgJiYgc3ZjICYmIGlzX2lkbGVfdmNwdShzdmMtPnZj cHUpKTsKKyAgICBBU1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3VuaXQoc3ZjLT51bml0 KSk7CiAKICAgICAvKgogICAgICAqIFdlIGFyZSBob2xkaW5nIHRoZSBydW5xdWV1ZSBsb2NrIGFs cmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBpbgpAQCAtNzYyLDcgKzc2MSw3IEBAIHJ0X3N3aXRjaF9z Y2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAogICAgICAg ICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIlJURFM6IHRpbWVyIGluaXRpYWxpemVkIG9uIGNwdSAl dVxuIiwgY3B1KTsKICAgICB9CiAKLSAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfdW5pdC0+cHJp diA9IHZkYXRhOworICAgIHNjaGVkX2lkbGVfdW5pdChjcHUpLT5wcml2ID0gdmRhdGE7CiAKICAg ICByZXR1cm4gJnBydi0+bG9jazsKIH0KQEAgLTg0MiwxMCArODQxLDkgQEAgcnRfZnJlZV9kb21k YXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lk ICoKIHJ0X2FsbG9jX3ZkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQsIHZvaWQgKmRkKQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQt PnZjcHU7CiAgICAgc3RydWN0IHJ0X3VuaXQgKnN2YzsKIAotICAgIC8qIEFsbG9jYXRlIHBlci1W Q1BVIGluZm8gKi8KKyAgICAvKiBBbGxvY2F0ZSBwZXItVU5JVCBpbmZvICovCiAgICAgc3ZjID0g eHphbGxvYyhzdHJ1Y3QgcnRfdW5pdCk7CiAgICAgaWYgKCBzdmMgPT0gTlVMTCApCiAgICAgICAg IHJldHVybiBOVUxMOwpAQCAtODU0LDEzICs4NTIsMTMgQEAgcnRfYWxsb2NfdmRhdGEoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwgdm9pZCAqZGQp CiAgICAgSU5JVF9MSVNUX0hFQUQoJnN2Yy0+cmVwbHFfZWxlbSk7CiAgICAgc3ZjLT5mbGFncyA9 IDBVOwogICAgIHN2Yy0+c2RvbSA9IGRkOwotICAgIHN2Yy0+dmNwdSA9IHZjOworICAgIHN2Yy0+ dW5pdCA9IHVuaXQ7CiAgICAgc3ZjLT5sYXN0X3N0YXJ0ID0gMDsKIAogICAgIF9fc2V0X2JpdChf X1JURFNfZXh0cmF0aW1lLCAmc3ZjLT5mbGFncyk7CiAgICAgc3ZjLT5wcmlvcml0eV9sZXZlbCA9 IDA7CiAgICAgc3ZjLT5wZXJpb2QgPSBSVERTX0RFRkFVTFRfUEVSSU9EOwotICAgIGlmICggIWlz X2lkbGVfdmNwdSh2YykgKQorICAgIGlmICggIWlzX2lkbGVfdW5pdCh1bml0KSApCiAgICAgICAg IHN2Yy0+YnVkZ2V0ID0gUlREU19ERUZBVUxUX0JVREdFVDsKIAogICAgIFNDSEVEX1NUQVRfQ1JB TksodW5pdF9hbGxvYyk7CkBAIC04ODAsMjIgKzg3OCwyMCBAQCBydF9mcmVlX3ZkYXRhKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcHJpdikKICAqIEl0IGlzIGNhbGxlZCBpbiBz Y2hlZF9tb3ZlX2RvbWFpbigpIGFuZCBzY2hlZF9pbml0X3ZjcHUKICAqIGluIHNjaGVkdWxlLmMu CiAgKiBXaGVuIG1vdmUgYSBkb21haW4gdG8gYSBuZXcgY3B1cG9vbC4KLSAqIEl0IGluc2VydHMg dmNwdXMgb2YgbW92aW5nIGRvbWFpbiB0byB0aGUgc2NoZWR1bGVyJ3MgUnVuUSBpbgorICogSXQg aW5zZXJ0cyB1bml0cyBvZiBtb3ZpbmcgZG9tYWluIHRvIHRoZSBzY2hlZHVsZXIncyBSdW5RIGlu CiAgKiBkZXN0LiBjcHVwb29sLgogICovCiBzdGF0aWMgdm9pZAogcnRfdW5pdF9pbnNlcnQoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAg ICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1OwogICAgIHN0cnVjdCBydF91bml0ICpzdmMg PSBydF91bml0KHVuaXQpOwogICAgIHNfdGltZV90IG5vdzsKICAgICBzcGlubG9ja190ICpsb2Nr OwogCi0gICAgQlVHX09OKCBpc19pZGxlX3ZjcHUodmMpICk7CisgICAgQlVHX09OKCBpc19pZGxl X3VuaXQodW5pdCkgKTsKIAotICAgIC8qIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHZjIGlzbid0IHll dCBiZWluZyBzY2hlZHVsZWQgKi8KLSAgICB1bml0LT5yZXMgPSBydF9yZXNfcGljayhvcHMsIHVu aXQpOwotICAgIHZjLT5wcm9jZXNzb3IgPSB1bml0LT5yZXMtPnByb2Nlc3NvcjsKKyAgICAvKiBU aGlzIGlzIHNhZmUgYmVjYXVzZSB1bml0IGlzbid0IHlldCBiZWluZyBzY2hlZHVsZWQgKi8KKyAg ICBzY2hlZF9zZXRfcmVzKHVuaXQsIHJ0X3Jlc19waWNrKG9wcywgdW5pdCkpOwogCiAgICAgbG9j ayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKQEAgLTkwMyw3ICs4OTksNyBAQCBy dF91bml0X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0KQogICAgIGlmICggbm93ID49IHN2Yy0+Y3VyX2RlYWRsaW5lICkKICAgICAgICAg cnRfdXBkYXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKIAotICAgIGlmICggIXZjcHVfb25fcShzdmMp ICYmIHZjcHVfcnVubmFibGUodmMpICkKKyAgICBpZiAoICF1bml0X29uX3Eoc3ZjKSAmJiB1bml0 X3J1bm5hYmxlKHVuaXQpICkKICAgICB7CiAgICAgICAgIHJlcGxxX2luc2VydChvcHMsIHN2Yyk7 CiAKQEAgLTkzMCwxMCArOTI2LDEwIEBAIHJ0X3VuaXRfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgQlVHX09OKCBzZG9tID09 IE5VTEwgKTsKIAogICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwotICAg IGlmICggdmNwdV9vbl9xKHN2YykgKQorICAgIGlmICggdW5pdF9vbl9xKHN2YykgKQogICAgICAg ICBxX3JlbW92ZShzdmMpOwogCi0gICAgaWYgKCB2Y3B1X29uX3JlcGxxKHN2YykgKQorICAgIGlm ICggdW5pdF9vbl9yZXBscShzdmMpICkKICAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcyxzdmMpOwog CiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwpAQCAtOTQ3LDggKzk0 Myw4IEBAIGJ1cm5fYnVkZ2V0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0 X3VuaXQgKnN2Yywgc190aW1lX3Qgbm93KQogewogICAgIHNfdGltZV90IGRlbHRhOwogCi0gICAg LyogZG9uJ3QgYnVybiBidWRnZXQgZm9yIGlkbGUgVkNQVSAqLwotICAgIGlmICggaXNfaWRsZV92 Y3B1KHN2Yy0+dmNwdSkgKQorICAgIC8qIGRvbid0IGJ1cm4gYnVkZ2V0IGZvciBpZGxlIFVOSVQg Ki8KKyAgICBpZiAoIGlzX2lkbGVfdW5pdChzdmMtPnVuaXQpICkKICAgICAgICAgcmV0dXJuOwog CiAgICAgLyogYnVybiBhdCBuYW5vc2Vjb25kcyBsZXZlbCAqLwpAQCAtOTg1LDE0ICs5ODEsMTQg QEAgYnVybl9idWRnZXQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5p dCAqc3ZjLCBzX3RpbWVfdCBub3cpCiAgICAgLyogVFJBQ0UgKi8KICAgICB7CiAgICAgICAgIHN0 cnVjdCBfX3BhY2tlZCB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7Cisg ICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAgICB1aW50NjRf dCBjdXJfYnVkZ2V0OwogICAgICAgICAgICAgaW50IGRlbHRhOwogICAgICAgICAgICAgdW5zaWdu ZWQgcHJpb3JpdHlfbGV2ZWw7CiAgICAgICAgICAgICBib29sIGhhc19leHRyYXRpbWU7CiAgICAg ICAgIH0gZDsKLSAgICAgICAgZC5kb20gPSBzdmMtPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwot ICAgICAgICBkLnZjcHUgPSBzdmMtPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgIGQuZG9tID0gc3Zj LT51bml0LT5kb21haW4tPmRvbWFpbl9pZDsKKyAgICAgICAgZC51bml0ID0gc3ZjLT51bml0LT51 bml0X2lkOwogICAgICAgICBkLmN1cl9idWRnZXQgPSAodWludDY0X3QpIHN2Yy0+Y3VyX2J1ZGdl dDsKICAgICAgICAgZC5kZWx0YSA9IGRlbHRhOwogICAgICAgICBkLnByaW9yaXR5X2xldmVsID0g c3ZjLT5wcmlvcml0eV9sZXZlbDsKQEAgLTEwMjIsOSArMTAxOCw4IEBAIHJ1bnFfcGljayhjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAg aXRlcl9zdmMgPSBxX2VsZW0oaXRlcik7CiAKICAgICAgICAgLyogbWFzayBjcHVfaGFyZF9hZmZp bml0eSAmIGNwdXBvb2wgJiBtYXNrICovCi0gICAgICAgIG9ubGluZSA9IGNwdXBvb2xfZG9tYWlu X2NwdW1hc2soaXRlcl9zdmMtPnZjcHUtPmRvbWFpbik7Ci0gICAgICAgIGNwdW1hc2tfYW5kKCZj cHVfY29tbW9uLCBvbmxpbmUsCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJfc3ZjLT52Y3B1LT5z Y2hlZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgIG9ubGluZSA9IGNwdXBvb2xf ZG9tYWluX2NwdW1hc2soaXRlcl9zdmMtPnVuaXQtPmRvbWFpbik7CisgICAgICAgIGNwdW1hc2tf YW5kKCZjcHVfY29tbW9uLCBvbmxpbmUsIGl0ZXJfc3ZjLT51bml0LT5jcHVfaGFyZF9hZmZpbml0 eSk7CiAgICAgICAgIGNwdW1hc2tfYW5kKCZjcHVfY29tbW9uLCBtYXNrLCAmY3B1X2NvbW1vbik7 CiAgICAgICAgIGlmICggY3B1bWFza19lbXB0eSgmY3B1X2NvbW1vbikgKQogICAgICAgICAgICAg Y29udGludWU7CkBAIC0xMDQwLDExICsxMDM1LDExIEBAIHJ1bnFfcGljayhjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIGNvbnN0IGNwdW1hc2tfdCAqbWFzaykKICAgICAgICAgaWYoIHN2YyAh PSBOVUxMICkKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IF9fcGFja2VkIHsKLSAgICAg ICAgICAgICAgICB1bnNpZ25lZCB2Y3B1OjE2LCBkb206MTY7CisgICAgICAgICAgICAgICAgdW5z aWduZWQgdW5pdDoxNiwgZG9tOjE2OwogICAgICAgICAgICAgICAgIHVpbnQ2NF90IGN1cl9kZWFk bGluZSwgY3VyX2J1ZGdldDsKICAgICAgICAgICAgIH0gZDsKLSAgICAgICAgICAgIGQuZG9tID0g c3ZjLT52Y3B1LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgICAgIGQudmNwdSA9IHN2Yy0+ dmNwdS0+dmNwdV9pZDsKKyAgICAgICAgICAgIGQuZG9tID0gc3ZjLT51bml0LT5kb21haW4tPmRv bWFpbl9pZDsKKyAgICAgICAgICAgIGQudW5pdCA9IHN2Yy0+dW5pdC0+dW5pdF9pZDsKICAgICAg ICAgICAgIGQuY3VyX2RlYWRsaW5lID0gKHVpbnQ2NF90KSBzdmMtPmN1cl9kZWFkbGluZTsKICAg ICAgICAgICAgIGQuY3VyX2J1ZGdldCA9ICh1aW50NjRfdCkgc3ZjLT5jdXJfYnVkZ2V0OwogICAg ICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1JVTlFfUElDSywgMSwKQEAgLTEwNjgsNiArMTA2 Myw3IEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qg bm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgc3RydWN0IHJ0X3VuaXQgKmNvbnN0 IHNjdXJyID0gcnRfdW5pdChjdXJyZW50LT5zY2hlZF91bml0KTsKICAgICBzdHJ1Y3QgcnRfdW5p dCAqc25leHQgPSBOVUxMOwogICAgIHN0cnVjdCB0YXNrX3NsaWNlIHJldCA9IHsgLm1pZ3JhdGVk ID0gMCB9OworICAgIHN0cnVjdCBzY2hlZF91bml0ICpjdXJydW5pdCA9IGN1cnJlbnQtPnNjaGVk X3VuaXQ7CiAKICAgICAvKiBUUkFDRSAqLwogICAgIHsKQEAgLTEwNzcsNyArMTA3Myw3IEBAIHJ0 X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29s X3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgICAgIGQuY3B1ID0gY3B1OwogICAgICAgICBkLnRh c2tsZXQgPSB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkOwogICAgICAgICBkLnRpY2tsZWQgPSBjcHVt YXNrX3Rlc3RfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7Ci0gICAgICAgIGQuaWRsZSA9IGlzX2lk bGVfdmNwdShjdXJyZW50KTsKKyAgICAgICAgZC5pZGxlID0gaXNfaWRsZV91bml0KGN1cnJ1bml0 KTsKICAgICAgICAgdHJhY2VfdmFyKFRSQ19SVERTX1NDSEVEVUxFLCAxLAogICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGQpLAogICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7 CkBAIC0xMDg2LDcyICsxMDgyLDcwIEBAIHJ0X3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgc190aW1lX3Qgbm93LCBib29sX3QgdGFza2xldF93b3JrX3NjaGVkCiAgICAgLyog Y2xlYXIgdGlja2VkIGJpdCBub3cgdGhhdCB3ZSd2ZSBiZWVuIHNjaGVkdWxlZCAqLwogICAgIGNw dW1hc2tfY2xlYXJfY3B1KGNwdSwgJnBydi0+dGlja2xlZCk7CiAKLSAgICAvKiBidXJuX2J1ZGdl dCB3b3VsZCByZXR1cm4gZm9yIElETEUgVkNQVSAqLworICAgIC8qIGJ1cm5fYnVkZ2V0IHdvdWxk IHJldHVybiBmb3IgSURMRSBVTklUICovCiAgICAgYnVybl9idWRnZXQob3BzLCBzY3Vyciwgbm93 KTsKIAogICAgIGlmICggdGFza2xldF93b3JrX3NjaGVkdWxlZCApCiAgICAgewogICAgICAgICB0 cmFjZV92YXIoVFJDX1JURFNfU0NIRURfVEFTS0xFVCwgMSwgMCwgIE5VTEwpOwotICAgICAgICBz bmV4dCA9IHJ0X3VuaXQoaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICBzbmV4 dCA9IHJ0X3VuaXQoc2NoZWRfaWRsZV91bml0KGNwdSkpOwogICAgIH0KICAgICBlbHNlCiAgICAg ewogICAgICAgICBzbmV4dCA9IHJ1bnFfcGljayhvcHMsIGNwdW1hc2tfb2YoY3B1KSk7CiAgICAg ICAgIGlmICggc25leHQgPT0gTlVMTCApCi0gICAgICAgICAgICBzbmV4dCA9IHJ0X3VuaXQoaWRs ZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICAgICAgc25leHQgPSBydF91bml0KHNj aGVkX2lkbGVfdW5pdChjcHUpKTsKIAogICAgICAgICAvKiBpZiBzY3VyciBoYXMgaGlnaGVyIHBy aW9yaXR5IGFuZCBidWRnZXQsIHN0aWxsIHBpY2sgc2N1cnIgKi8KLSAgICAgICAgaWYgKCAhaXNf aWRsZV92Y3B1KGN1cnJlbnQpICYmCi0gICAgICAgICAgICAgdmNwdV9ydW5uYWJsZShjdXJyZW50 KSAmJgorICAgICAgICBpZiAoICFpc19pZGxlX3VuaXQoY3VycnVuaXQpICYmCisgICAgICAgICAg ICAgdW5pdF9ydW5uYWJsZShjdXJydW5pdCkgJiYKICAgICAgICAgICAgICBzY3Vyci0+Y3VyX2J1 ZGdldCA+IDAgJiYKLSAgICAgICAgICAgICAoIGlzX2lkbGVfdmNwdShzbmV4dC0+dmNwdSkgfHwK LSAgICAgICAgICAgICAgIGNvbXBhcmVfdmNwdV9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCAp ICkKKyAgICAgICAgICAgICAoIGlzX2lkbGVfdW5pdChzbmV4dC0+dW5pdCkgfHwKKyAgICAgICAg ICAgICAgIGNvbXBhcmVfdW5pdF9wcmlvcml0eShzY3Vyciwgc25leHQpID4gMCApICkKICAgICAg ICAgICAgIHNuZXh0ID0gc2N1cnI7CiAgICAgfQogCiAgICAgaWYgKCBzbmV4dCAhPSBzY3VyciAm JgotICAgICAgICAgIWlzX2lkbGVfdmNwdShjdXJyZW50KSAmJgotICAgICAgICAgdmNwdV9ydW5u YWJsZShjdXJyZW50KSApCisgICAgICAgICAhaXNfaWRsZV91bml0KGN1cnJ1bml0KSAmJgorICAg ICAgICAgdW5pdF9ydW5uYWJsZShjdXJydW5pdCkgKQogICAgICAgICBfX3NldF9iaXQoX19SVERT X2RlbGF5ZWRfcnVucV9hZGQsICZzY3Vyci0+ZmxhZ3MpOwogCiAgICAgc25leHQtPmxhc3Rfc3Rh cnQgPSBub3c7Ci0gICAgcmV0LnRpbWUgPSAgLTE7IC8qIGlmIGFuIGlkbGUgdmNwdSBpcyBwaWNr ZWQgKi8KLSAgICBpZiAoICFpc19pZGxlX3ZjcHUoc25leHQtPnZjcHUpICkKKyAgICByZXQudGlt ZSA9ICAtMTsgLyogaWYgYW4gaWRsZSB1bml0IGlzIHBpY2tlZCAqLworICAgIGlmICggIWlzX2lk bGVfdW5pdChzbmV4dC0+dW5pdCkgKQogICAgIHsKICAgICAgICAgaWYgKCBzbmV4dCAhPSBzY3Vy ciApCiAgICAgICAgIHsKICAgICAgICAgICAgIHFfcmVtb3ZlKHNuZXh0KTsKICAgICAgICAgICAg IF9fc2V0X2JpdChfX1JURFNfc2NoZWR1bGVkLCAmc25leHQtPmZsYWdzKTsKICAgICAgICAgfQot ICAgICAgICBpZiAoIHNuZXh0LT52Y3B1LT5wcm9jZXNzb3IgIT0gY3B1ICkKKyAgICAgICAgaWYg KCBzY2hlZF91bml0X2NwdShzbmV4dC0+dW5pdCkgIT0gY3B1ICkKICAgICAgICAgewotICAgICAg ICAgICAgc25leHQtPnZjcHUtPnByb2Nlc3NvciA9IGNwdTsKLSAgICAgICAgICAgIHNuZXh0LT52 Y3B1LT5zY2hlZF91bml0LT5yZXMgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisgICAgICAgICAgICBz Y2hlZF9zZXRfcmVzKHNuZXh0LT51bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOwogICAgICAgICAg ICAgcmV0Lm1pZ3JhdGVkID0gMTsKICAgICAgICAgfQogICAgICAgICByZXQudGltZSA9IHNuZXh0 LT5jdXJfYnVkZ2V0OyAvKiBpbnZva2UgdGhlIHNjaGVkdWxlciBuZXh0IHRpbWUgKi8KICAgICB9 Ci0gICAgcmV0LnRhc2sgPSBzbmV4dC0+dmNwdS0+c2NoZWRfdW5pdDsKKyAgICByZXQudGFzayA9 IHNuZXh0LT51bml0OwogCiAgICAgcmV0dXJuIHJldDsKIH0KIAogLyoKLSAqIFJlbW92ZSBWQ1BV IGZyb20gUnVuUQorICogUmVtb3ZlIFVOSVQgZnJvbSBSdW5RCiAgKiBUaGUgbG9jayBpcyBhbHJl YWR5IGdyYWJiZWQgaW4gc2NoZWR1bGUuYywgbm8gbmVlZCB0byBsb2NrIGhlcmUKICAqLwogc3Rh dGljIHZvaWQKIHJ0X3VuaXRfc2xlZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1 OwogICAgIHN0cnVjdCBydF91bml0ICogY29uc3Qgc3ZjID0gcnRfdW5pdCh1bml0KTsKIAotICAg IEJVR19PTiggaXNfaWRsZV92Y3B1KHZjKSApOworICAgIEJVR19PTiggaXNfaWRsZV91bml0KHVu aXQpICk7CiAgICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X3NsZWVwKTsKIAotICAgIGlmICggY3Vy cl9vbl9jcHUodmMtPnByb2Nlc3NvcikgPT0gdW5pdCApCi0gICAgICAgIGNwdV9yYWlzZV9zb2Z0 aXJxKHZjLT5wcm9jZXNzb3IsIFNDSEVEVUxFX1NPRlRJUlEpOwotICAgIGVsc2UgaWYgKCB2Y3B1 X29uX3Eoc3ZjKSApCisgICAgaWYgKCBjdXJyX29uX2NwdShzY2hlZF91bml0X2NwdSh1bml0KSkg PT0gdW5pdCApCisgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKHNjaGVkX3VuaXRfY3B1KHVuaXQp LCBTQ0hFRFVMRV9TT0ZUSVJRKTsKKyAgICBlbHNlIGlmICggdW5pdF9vbl9xKHN2YykgKQogICAg IHsKICAgICAgICAgcV9yZW1vdmUoc3ZjKTsKICAgICAgICAgcmVwbHFfcmVtb3ZlKG9wcywgc3Zj KTsKQEAgLTExNjEsMjAgKzExNTUsMjAgQEAgcnRfdW5pdF9zbGVlcChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogfQogCiAvKgotICogUGljayBh IGNwdSB3aGVyZSB0byBydW4gYSB2Y3B1LAotICogcG9zc2libHkga2lja2luZyBvdXQgdGhlIHZj cHUgcnVubmluZyB0aGVyZQorICogUGljayBhIGNwdSB3aGVyZSB0byBydW4gYW4gdW5pdCwKKyAq IHBvc3NpYmx5IGtpY2tpbmcgb3V0IHRoZSB1bml0IHJ1bm5pbmcgdGhlcmUKICAqIENhbGxlZCBi eSB3YWtlKCkgYW5kIGNvbnRleHRfc2F2ZWQoKQogICogV2UgaGF2ZSBhIHJ1bm5pbmcgY2FuZGlk YXRlIGhlcmUsIHRoZSBraWNrIGxvZ2ljIGlzOgogICogQW1vbmcgYWxsIHRoZSBjcHVzIHRoYXQg YXJlIHdpdGhpbiB0aGUgY3B1IGFmZmluaXR5CiAgKiAxKSBpZiB0aGVyZSBhcmUgYW55IGlkbGUg Q1BVcywga2ljayBvbmUuCiAgICAgICBGb3IgY2FjaGUgYmVuZWZpdCwgd2UgY2hlY2sgbmV3LT5j cHUgYXMgZmlyc3QKICAqIDIpIG5vdyBhbGwgcGNwdXMgYXJlIGJ1c3k7Ci0gKiAgICBhbW9uZyBh bGwgdGhlIHJ1bm5pbmcgdmNwdXMsIHBpY2sgbG93ZXN0IHByaW9yaXR5IG9uZQorICogICAgYW1v bmcgYWxsIHRoZSBydW5uaW5nIHVuaXRzLCBwaWNrIGxvd2VzdCBwcmlvcml0eSBvbmUKICAqICAg IGlmIHNuZXh0IGhhcyBoaWdoZXIgcHJpb3JpdHksIGtpY2sgaXQuCiAgKgogICogVE9ETzoKLSAq IDEpIHdoYXQgaWYgdGhlc2UgdHdvIHZjcHVzIGJlbG9uZ3MgdG8gdGhlIHNhbWUgZG9tYWluPwot ICogICAgcmVwbGFjZSBhIHZjcHUgYmVsb25naW5nIHRvIHRoZSBzYW1lIGRvbWFpbiBpbnRyb2R1 Y2VzIG1vcmUgb3ZlcmhlYWQKKyAqIDEpIHdoYXQgaWYgdGhlc2UgdHdvIHVuaXRzIGJlbG9uZ3Mg dG8gdGhlIHNhbWUgZG9tYWluPworICogICAgcmVwbGFjZSBhbiB1bml0IGJlbG9uZ2luZyB0byB0 aGUgc2FtZSBkb21haW4gaW50cm9kdWNlcyBtb3JlIG92ZXJoZWFkCiAgKgogICogbG9jayBpcyBn cmFiYmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24KICAqLwpAQCAtMTE4MiwxOCArMTE3 NiwxOCBAQCBzdGF0aWMgdm9pZAogcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgcnRfdW5pdCAqbmV3KQogewogICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYg PSBydF9wcml2KG9wcyk7Ci0gICAgc3RydWN0IHJ0X3VuaXQgKmxhdGVzdF9kZWFkbGluZV92Y3B1 ID0gTlVMTDsgLyogbG93ZXN0IHByaW9yaXR5ICovCisgICAgc3RydWN0IHJ0X3VuaXQgKmxhdGVz dF9kZWFkbGluZV91bml0ID0gTlVMTDsgLyogbG93ZXN0IHByaW9yaXR5ICovCiAgICAgc3RydWN0 IHJ0X3VuaXQgKml0ZXJfc3ZjOwotICAgIHN0cnVjdCB2Y3B1ICppdGVyX3ZjOworICAgIHN0cnVj dCBzY2hlZF91bml0ICppdGVyX3VuaXQ7CiAgICAgaW50IGNwdSA9IDAsIGNwdV90b190aWNrbGUg PSAwOwogICAgIGNwdW1hc2tfdCBub3RfdGlja2xlZDsKICAgICBjcHVtYXNrX3QgKm9ubGluZTsK IAotICAgIGlmICggbmV3ID09IE5VTEwgfHwgaXNfaWRsZV92Y3B1KG5ldy0+dmNwdSkgKQorICAg IGlmICggbmV3ID09IE5VTEwgfHwgaXNfaWRsZV91bml0KG5ldy0+dW5pdCkgKQogICAgICAgICBy ZXR1cm47CiAKLSAgICBvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKG5ldy0+dmNwdS0+ ZG9tYWluKTsKLSAgICBjcHVtYXNrX2FuZCgmbm90X3RpY2tsZWQsIG9ubGluZSwgbmV3LT52Y3B1 LT5zY2hlZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgb25saW5lID0gY3B1cG9vbF9k b21haW5fY3B1bWFzayhuZXctPnVuaXQtPmRvbWFpbik7CisgICAgY3B1bWFza19hbmQoJm5vdF90 aWNrbGVkLCBvbmxpbmUsIG5ldy0+dW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAgIGNwdW1h c2tfYW5kbm90KCZub3RfdGlja2xlZCwgJm5vdF90aWNrbGVkLCAmcHJ2LT50aWNrbGVkKTsKIAog ICAgIC8qCkBAIC0xMjAxLDMxICsxMTk1LDMxIEBAIHJ1bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHJ0X3VuaXQgKm5ldykKICAgICAgKiAgICBGb3IgY2FjaGUg YmVuZWZpdCx3ZSBmaXJzdCBzZWFyY2ggbmV3LT5jcHUuCiAgICAgICogICAgVGhlIHNhbWUgbG9v cCBhbHNvIGZpbmQgdGhlIG9uZSB3aXRoIGxvd2VzdCBwcmlvcml0eS4KICAgICAgKi8KLSAgICBj cHUgPSBjcHVtYXNrX3Rlc3Rfb3JfY3ljbGUobmV3LT52Y3B1LT5wcm9jZXNzb3IsICZub3RfdGlj a2xlZCk7CisgICAgY3B1ID0gY3B1bWFza190ZXN0X29yX2N5Y2xlKHNjaGVkX3VuaXRfY3B1KG5l dy0+dW5pdCksICZub3RfdGlja2xlZCk7CiAgICAgd2hpbGUgKCBjcHUhPSBucl9jcHVfaWRzICkK ICAgICB7Ci0gICAgICAgIGl0ZXJfdmMgPSBjdXJyX29uX2NwdShjcHUpLT52Y3B1OwotICAgICAg ICBpZiAoIGlzX2lkbGVfdmNwdShpdGVyX3ZjKSApCisgICAgICAgIGl0ZXJfdW5pdCA9IGN1cnJf b25fY3B1KGNwdSk7CisgICAgICAgIGlmICggaXNfaWRsZV91bml0KGl0ZXJfdW5pdCkgKQogICAg ICAgICB7CiAgICAgICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfaWRsZV9jcHUpOwog ICAgICAgICAgICAgY3B1X3RvX3RpY2tsZSA9IGNwdTsKICAgICAgICAgICAgIGdvdG8gb3V0Owog ICAgICAgICB9Ci0gICAgICAgIGl0ZXJfc3ZjID0gcnRfdW5pdChpdGVyX3ZjLT5zY2hlZF91bml0 KTsKLSAgICAgICAgaWYgKCBsYXRlc3RfZGVhZGxpbmVfdmNwdSA9PSBOVUxMIHx8Ci0gICAgICAg ICAgICAgY29tcGFyZV92Y3B1X3ByaW9yaXR5KGl0ZXJfc3ZjLCBsYXRlc3RfZGVhZGxpbmVfdmNw dSkgPCAwICkKLSAgICAgICAgICAgIGxhdGVzdF9kZWFkbGluZV92Y3B1ID0gaXRlcl9zdmM7Cisg ICAgICAgIGl0ZXJfc3ZjID0gcnRfdW5pdChpdGVyX3VuaXQpOworICAgICAgICBpZiAoIGxhdGVz dF9kZWFkbGluZV91bml0ID09IE5VTEwgfHwKKyAgICAgICAgICAgICBjb21wYXJlX3VuaXRfcHJp b3JpdHkoaXRlcl9zdmMsIGxhdGVzdF9kZWFkbGluZV91bml0KSA8IDAgKQorICAgICAgICAgICAg bGF0ZXN0X2RlYWRsaW5lX3VuaXQgPSBpdGVyX3N2YzsKIAogICAgICAgICBjcHVtYXNrX2NsZWFy X2NwdShjcHUsICZub3RfdGlja2xlZCk7CiAgICAgICAgIGNwdSA9IGNwdW1hc2tfY3ljbGUoY3B1 LCAmbm90X3RpY2tsZWQpOwogICAgIH0KIAotICAgIC8qIDIpIGNhbmRpY2F0ZSBoYXMgaGlnaGVy IHByaW9yaXR5LCBraWNrIG91dCBsb3dlc3QgcHJpb3JpdHkgdmNwdSAqLwotICAgIGlmICggbGF0 ZXN0X2RlYWRsaW5lX3ZjcHUgIT0gTlVMTCAmJgotICAgICAgICAgY29tcGFyZV92Y3B1X3ByaW9y aXR5KGxhdGVzdF9kZWFkbGluZV92Y3B1LCBuZXcpIDwgMCApCisgICAgLyogMikgY2FuZGljYXRl IGhhcyBoaWdoZXIgcHJpb3JpdHksIGtpY2sgb3V0IGxvd2VzdCBwcmlvcml0eSB1bml0ICovCisg ICAgaWYgKCBsYXRlc3RfZGVhZGxpbmVfdW5pdCAhPSBOVUxMICYmCisgICAgICAgICBjb21wYXJl X3VuaXRfcHJpb3JpdHkobGF0ZXN0X2RlYWRsaW5lX3VuaXQsIG5ldykgPCAwICkKICAgICB7CiAg ICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xlZF9idXN5X2NwdSk7Ci0gICAgICAgIGNwdV90 b190aWNrbGUgPSBsYXRlc3RfZGVhZGxpbmVfdmNwdS0+dmNwdS0+cHJvY2Vzc29yOworICAgICAg ICBjcHVfdG9fdGlja2xlID0gc2NoZWRfdW5pdF9jcHUobGF0ZXN0X2RlYWRsaW5lX3VuaXQtPnVu aXQpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKQEAgLTEyNTEsMzUgKzEyNDUsMzQgQEAg cnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgcnRfdW5pdCAq bmV3KQogfQogCiAvKgotICogU2hvdWxkIGFsd2F5cyB3YWtlIHVwIHJ1bm5hYmxlIHZjcHUsIHB1 dCBpdCBiYWNrIHRvIFJ1blEuCisgKiBTaG91bGQgYWx3YXlzIHdha2UgdXAgcnVubmFibGUgdW5p dCwgcHV0IGl0IGJhY2sgdG8gUnVuUS4KICAqIENoZWNrIHByaW9yaXR5IHRvIHJhaXNlIGludGVy cnVwdAogICogVGhlIGxvY2sgaXMgYWxyZWFkeSBncmFiYmVkIGluIHNjaGVkdWxlLmMsIG5vIG5l ZWQgdG8gbG9jayBoZXJlCi0gKiBUT0RPOiB3aGF0IGlmIHRoZXNlIHR3byB2Y3B1cyBiZWxvbmdz IHRvIHRoZSBzYW1lIGRvbWFpbj8KKyAqIFRPRE86IHdoYXQgaWYgdGhlc2UgdHdvIHVuaXRzIGJl bG9uZ3MgdG8gdGhlIHNhbWUgZG9tYWluPwogICovCiBzdGF0aWMgdm9pZAogcnRfdW5pdF93YWtl KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB7 Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdTsKICAgICBzdHJ1Y3QgcnRfdW5pdCAq IGNvbnN0IHN2YyA9IHJ0X3VuaXQodW5pdCk7CiAgICAgc190aW1lX3Qgbm93OwogICAgIGJvb2xf dCBtaXNzZWQ7CiAKLSAgICBCVUdfT04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKyAgICBCVUdfT04o IGlzX2lkbGVfdW5pdCh1bml0KSApOwogCi0gICAgaWYgKCB1bmxpa2VseShjdXJyX29uX2NwdSh2 Yy0+cHJvY2Vzc29yKSA9PSB1bml0KSApCisgICAgaWYgKCB1bmxpa2VseShjdXJyX29uX2NwdShz Y2hlZF91bml0X2NwdSh1bml0KSkgPT0gdW5pdCkgKQogICAgIHsKICAgICAgICAgU0NIRURfU1RB VF9DUkFOSyh1bml0X3dha2VfcnVubmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg ICAvKiBvbiBSdW5RL0RlcGxldGVkUSwganVzdCB1cGRhdGUgaW5mbyBpcyBvayAqLwotICAgIGlm ICggdW5saWtlbHkodmNwdV9vbl9xKHN2YykpICkKKyAgICBpZiAoIHVubGlrZWx5KHVuaXRfb25f cShzdmMpKSApCiAgICAgewogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9vbnJ1 bnEpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCBsaWtlbHkodmNwdV9ydW5u YWJsZSh2YykpICkKKyAgICBpZiAoIGxpa2VseSh1bml0X3J1bm5hYmxlKHVuaXQpKSApCiAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX3J1bm5hYmxlKTsKICAgICBlbHNlCiAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF93YWtlX25vdF9ydW5uYWJsZSk7CkBAIC0xMjk1LDE2 ICsxMjg4LDE2IEBAIHJ0X3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0 cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgICAgICBydF91cGRhdGVfZGVhZGxpbmUobm93LCBz dmMpOwogCiAgICAgLyoKLSAgICAgKiBJZiBjb250ZXh0IGhhc24ndCBiZWVuIHNhdmVkIGZvciB0 aGlzIHZjcHUgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KKyAgICAgKiBJZiBjb250ZXh0IGhhc24n dCBiZWVuIHNhdmVkIGZvciB0aGlzIHVuaXQgeWV0LCB3ZSBjYW4ndCBwdXQgaXQgb24KICAgICAg KiB0aGUgcnVuLXF1ZXVlL2RlcGxldGVkLXF1ZXVlLiBJbnN0ZWFkLCB3ZSBzZXQgdGhlIGFwcHJv cHJpYXRlIGZsYWcsCi0gICAgICogdGhlIHZjcHUgd2lsbCBiZSBwdXQgYmFjayBvbiBxdWV1ZSBh ZnRlciB0aGUgY29udGV4dCBoYXMgYmVlbiBzYXZlZAorICAgICAqIHRoZSB1bml0IHdpbGwgYmUg cHV0IGJhY2sgb24gcXVldWUgYWZ0ZXIgdGhlIGNvbnRleHQgaGFzIGJlZW4gc2F2ZWQKICAgICAg KiAoaW4gcnRfY29udGV4dF9zYXZlKCkpLgogICAgICAqLwogICAgIGlmICggdW5saWtlbHkoc3Zj LT5mbGFncyAmIFJURFNfc2NoZWR1bGVkKSApCiAgICAgewogICAgICAgICBfX3NldF9iaXQoX19S VERTX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKTsKICAgICAgICAgLyoKLSAgICAgICAg ICogVGhlIHZjcHUgaXMgd2FraW5nIHVwIGFscmVhZHksIGFuZCB3ZSBkaWRuJ3QgZXZlbiBoYWQg dGhlIHRpbWUgdG8KKyAgICAgICAgICogVGhlIHVuaXQgaXMgd2FraW5nIHVwIGFscmVhZHksIGFu ZCB3ZSBkaWRuJ3QgZXZlbiBoYWQgdGhlIHRpbWUgdG8KICAgICAgICAgICogcmVtb3ZlIGl0cyBu ZXh0IHJlcGxlbmlzaG1lbnQgZXZlbnQgZnJvbSB0aGUgcmVwbGVuaXNobWVudCBxdWV1ZQogICAg ICAgICAgKiB3aGVuIGl0IGJsb2NrZWQhIE5vIGJpZyBkZWFsLiBJZiB3ZSBkaWQgbm90IG1pc3Mg dGhlIGRlYWRsaW5lIGluCiAgICAgICAgICAqIHRoZSBtZWFudGltZSwgbGV0J3MganVzdCBsZWF2 ZSBpdCB0aGVyZS4gSWYgd2UgZGlkLCBsZXQncyByZW1vdmUgaXQKQEAgLTEzMjUsMjIgKzEzMTgs MjEgQEAgcnRfdW5pdF93YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQpCiAKIC8qCiAgKiBzY3VyciBoYXMgZmluaXNoZWQgY29udGV4dCBzd2l0 Y2gsIGluc2VydCBpdCBiYWNrIHRvIHRoZSBSdW5RLAotICogYW5kIHRoZW4gcGljayB0aGUgaGln aGVzdCBwcmlvcml0eSB2Y3B1IGZyb20gcnVucSB0byBydW4KKyAqIGFuZCB0aGVuIHBpY2sgdGhl IGhpZ2hlc3QgcHJpb3JpdHkgdW5pdCBmcm9tIHJ1bnEgdG8gcnVuCiAgKi8KIHN0YXRpYyB2b2lk CiBydF9jb250ZXh0X3NhdmVkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdTsKICAg ICBzdHJ1Y3QgcnRfdW5pdCAqc3ZjID0gcnRfdW5pdCh1bml0KTsKICAgICBzcGlubG9ja190ICps b2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAogICAgIF9fY2xlYXJfYml0KF9f UlREU19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKLSAgICAvKiBub3QgaW5zZXJ0IGlkbGUgdmNw dSB0byBydW5xICovCi0gICAgaWYgKCBpc19pZGxlX3ZjcHUodmMpICkKKyAgICAvKiBub3QgaW5z ZXJ0IGlkbGUgdW5pdCB0byBydW5xICovCisgICAgaWYgKCBpc19pZGxlX3VuaXQodW5pdCkgKQog ICAgICAgICBnb3RvIG91dDsKIAogICAgIGlmICggX190ZXN0X2FuZF9jbGVhcl9iaXQoX19SVERT X2RlbGF5ZWRfcnVucV9hZGQsICZzdmMtPmZsYWdzKSAmJgotICAgICAgICAgbGlrZWx5KHZjcHVf cnVubmFibGUodmMpKSApCisgICAgICAgICBsaWtlbHkodW5pdF9ydW5uYWJsZSh1bml0KSkgKQog ICAgIHsKICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOwogICAgICAgICBydW5xX3RpY2ts ZShvcHMsIHN2Yyk7CkBAIC0xMzUzLDcgKzEzNDUsNyBAQCBvdXQ6CiB9CiAKIC8qCi0gKiBzZXQv Z2V0IGVhY2ggdmNwdSBpbmZvIG9mIGVhY2ggZG9tYWluCisgKiBzZXQvZ2V0IGVhY2ggdW5pdCBp bmZvIG9mIGVhY2ggZG9tYWluCiAgKi8KIHN0YXRpYyBpbnQKIHJ0X2RvbV9jbnRsKApAQCAtMTM2 Myw3ICsxMzU1LDcgQEAgcnRfZG9tX2NudGwoCiB7CiAgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBy diA9IHJ0X3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgcnRfdW5pdCAqc3ZjOwotICAgIHN0cnVjdCB2 Y3B1ICp2OworICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0OwogICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7CiAgICAgaW50IHJjID0gMDsKICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zY2hlZHBhcmFt X3ZjcHUgbG9jYWxfc2NoZWQ7CkBAIC0xMzg0LDkgKzEzNzYsOSBAQCBydF9kb21fY250bCgKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZw cnYtPmxvY2ssIGZsYWdzKTsKLSAgICAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAg ICBmb3JfZWFjaF9zY2hlZF91bml0ICggZCwgdW5pdCApCiAgICAgICAgIHsKLSAgICAgICAgICAg IHN2YyA9IHJ0X3VuaXQodi0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICBzdmMgPSBydF91bml0 KHVuaXQpOwogICAgICAgICAgICAgc3ZjLT5wZXJpb2QgPSBNSUNST1NFQ1Mob3AtPnUucnRkcy5w ZXJpb2QpOyAvKiB0cmFuc2ZlciB0byBuYW5vc2VjICovCiAgICAgICAgICAgICBzdmMtPmJ1ZGdl dCA9IE1JQ1JPU0VDUyhvcC0+dS5ydGRzLmJ1ZGdldCk7CiAgICAgICAgIH0KQEAgLTE0NTQsNyAr MTQ0Niw3IEBAIHJ0X2RvbV9jbnRsKAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9 CiAgICAgICAgIGlmICggIXJjICkKLSAgICAgICAgICAgIC8qIG5vdGlmeSB1cHBlciBjYWxsZXIg aG93IG1hbnkgdmNwdXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gKi8KKyAgICAgICAgICAgIC8qIG5v dGlmeSB1cHBlciBjYWxsZXIgaG93IG1hbnkgdW5pdHMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gKi8K ICAgICAgICAgICAgIG9wLT51LnYubnJfdmNwdXMgPSBpbmRleDsKICAgICAgICAgYnJlYWs7CiAg ICAgfQpAQCAtMTQ2Myw3ICsxNDU1LDcgQEAgcnRfZG9tX2NudGwoCiB9CiAKIC8qCi0gKiBUaGUg cmVwbGVuaXNobWVudCB0aW1lciBoYW5kbGVyIHBpY2tzIHZjcHVzCisgKiBUaGUgcmVwbGVuaXNo bWVudCB0aW1lciBoYW5kbGVyIHBpY2tzIHVuaXRzCiAgKiBmcm9tIHRoZSByZXBscSBhbmQgZG9l cyB0aGUgYWN0dWFsIHJlcGxlbmlzaG1lbnQuCiAgKi8KIHN0YXRpYyB2b2lkIHJlcGxfdGltZXJf aGFuZGxlcih2b2lkICpkYXRhKXsKQEAgLTE0ODEsNyArMTQ3Myw3IEBAIHN0YXRpYyB2b2lkIHJl cGxfdGltZXJfaGFuZGxlcih2b2lkICpkYXRhKXsKICAgICBub3cgPSBOT1coKTsKIAogICAgIC8q Ci0gICAgICogRG8gdGhlIHJlcGxlbmlzaG1lbnQgYW5kIG1vdmUgcmVwbGVuaXNoZWQgdmNwdXMK KyAgICAgKiBEbyB0aGUgcmVwbGVuaXNobWVudCBhbmQgbW92ZSByZXBsZW5pc2hlZCB1bml0cwog ICAgICAqIHRvIHRoZSB0ZW1wb3JhcnkgbGlzdCB0byB0aWNrbGUuCiAgICAgICogSWYgc3ZjIGlz IG9uIHJ1biBxdWV1ZSwgd2UgbmVlZCB0byBwdXQgaXQgYXQKICAgICAgKiB0aGUgY29ycmVjdCBw bGFjZSBzaW5jZSBpdHMgZGVhZGxpbmUgY2hhbmdlcy4KQEAgLTE0OTcsNyArMTQ4OSw3IEBAIHN0 YXRpYyB2b2lkIHJlcGxfdGltZXJfaGFuZGxlcih2b2lkICpkYXRhKXsKICAgICAgICAgcnRfdXBk YXRlX2RlYWRsaW5lKG5vdywgc3ZjKTsKICAgICAgICAgbGlzdF9hZGQoJnN2Yy0+cmVwbHFfZWxl bSwgJnRtcF9yZXBscSk7CiAKLSAgICAgICAgaWYgKCB2Y3B1X29uX3Eoc3ZjKSApCisgICAgICAg IGlmICggdW5pdF9vbl9xKHN2YykgKQogICAgICAgICB7CiAgICAgICAgICAgICBxX3JlbW92ZShz dmMpOwogICAgICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOwpAQCAtMTUwNSwyNiArMTQ5 NywyNiBAQCBzdGF0aWMgdm9pZCByZXBsX3RpbWVyX2hhbmRsZXIodm9pZCAqZGF0YSl7CiAgICAg fQogCiAgICAgLyoKLSAgICAgKiBJdGVyYXRlIHRocm91Z2ggdGhlIGxpc3Qgb2YgdXBkYXRlZCB2 Y3B1cy4KLSAgICAgKiBJZiBhbiB1cGRhdGVkIHZjcHUgaXMgcnVubmluZywgdGlja2xlIHRoZSBo ZWFkIG9mIHRoZQorICAgICAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbGlzdCBvZiB1cGRhdGVkIHVu aXRzLgorICAgICAqIElmIGFuIHVwZGF0ZWQgdW5pdCBpcyBydW5uaW5nLCB0aWNrbGUgdGhlIGhl YWQgb2YgdGhlCiAgICAgICogcnVucXVldWUgaWYgaXQgaGFzIGEgaGlnaGVyIHByaW9yaXR5Lgot ICAgICAqIElmIGFuIHVwZGF0ZWQgdmNwdSB3YXMgZGVwbGV0ZWQgYW5kIG9uIHRoZSBydW5xdWV1 ZSwgdGlja2xlIGl0LgotICAgICAqIEZpbmFsbHksIHJlaW5zZXJ0IHRoZSB2Y3B1cyBiYWNrIHRv IHJlcGxlbmlzaGVtZW50IGV2ZW50cyBsaXN0LgorICAgICAqIElmIGFuIHVwZGF0ZWQgdW5pdCB3 YXMgZGVwbGV0ZWQgYW5kIG9uIHRoZSBydW5xdWV1ZSwgdGlja2xlIGl0LgorICAgICAqIEZpbmFs bHksIHJlaW5zZXJ0IHRoZSB1bml0cyBiYWNrIHRvIHJlcGxlbmlzaGVtZW50IGV2ZW50cyBsaXN0 LgogICAgICAqLwogICAgIGxpc3RfZm9yX2VhY2hfc2FmZSAoIGl0ZXIsIHRtcCwgJnRtcF9yZXBs cSApCiAgICAgewogICAgICAgICBzdmMgPSByZXBscV9lbGVtKGl0ZXIpOwogCi0gICAgICAgIGlm ICggY3Vycl9vbl9jcHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IpID09IHN2Yy0+dmNwdS0+c2NoZWRf dW5pdCAmJgorICAgICAgICBpZiAoIGN1cnJfb25fY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5p dCkpID09IHN2Yy0+dW5pdCAmJgogICAgICAgICAgICAgICFsaXN0X2VtcHR5KHJ1bnEpICkKICAg ICAgICAgewogICAgICAgICAgICAgc3RydWN0IHJ0X3VuaXQgKm5leHRfb25fcnVucSA9IHFfZWxl bShydW5xLT5uZXh0KTsKIAotICAgICAgICAgICAgaWYgKCBjb21wYXJlX3ZjcHVfcHJpb3JpdHko c3ZjLCBuZXh0X29uX3J1bnEpIDwgMCApCisgICAgICAgICAgICBpZiAoIGNvbXBhcmVfdW5pdF9w cmlvcml0eShzdmMsIG5leHRfb25fcnVucSkgPCAwICkKICAgICAgICAgICAgICAgICBydW5xX3Rp Y2tsZShvcHMsIG5leHRfb25fcnVucSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIF9f dGVzdF9hbmRfY2xlYXJfYml0KF9fUlREU19kZXBsZXRlZCwgJnN2Yy0+ZmxhZ3MpICYmCi0gICAg ICAgICAgICAgICAgICB2Y3B1X29uX3Eoc3ZjKSApCisgICAgICAgICAgICAgICAgICB1bml0X29u X3Eoc3ZjKSApCiAgICAgICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yyk7CiAKICAgICAgICAg bGlzdF9kZWwoJnN2Yy0+cmVwbHFfZWxlbSk7CkBAIC0xNTMyLDcgKzE1MjQsNyBAQCBzdGF0aWMg dm9pZCByZXBsX3RpbWVyX2hhbmRsZXIodm9pZCAqZGF0YSl7CiAgICAgfQogCiAgICAgLyoKLSAg ICAgKiBJZiB0aGVyZSBhcmUgdmNwdXMgbGVmdCBpbiB0aGUgcmVwbGVuaXNobWVudCBldmVudCBs aXN0LAorICAgICAqIElmIHRoZXJlIGFyZSB1bml0cyBsZWZ0IGluIHRoZSByZXBsZW5pc2htZW50 IGV2ZW50IGxpc3QsCiAgICAgICogc2V0IHRoZSBuZXh0IHJlcGxlbmlzaG1lbnQgdG8gaGFwcGVu IGF0IHRoZSBkZWFkbGluZSBvZgogICAgICAqIHRoZSBvbmUgaW4gdGhlIGZyb250LgogICAgICAq LwotLSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==