From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v3 04/11] xen: sched: close potential races when switching scheduler to CPUs Date: Fri, 8 Apr 2016 13:52:48 +0100 Message-ID: <5707A9A0.7090608@citrix.com> References: <20160408011204.10762.14241.stgit@Solace.fritz.box> <20160408012345.10762.40393.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aoVuE-00085P-TX for xen-devel@lists.xenproject.org; Fri, 08 Apr 2016 12:52:59 +0000 In-Reply-To: <20160408012345.10762.40393.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli , xen-devel@lists.xenproject.org Cc: George Dunlap , Tianyang Chen , Josh Whitehead , Meng Xu , Robert VanVossen List-Id: xen-devel@lists.xenproject.org T24gMDgvMDQvMTYgMDI6MjMsIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+IEluIHNob3J0LCB0aGUg cG9pbnQgaXMgbWFraW5nIHN1cmUgdGhhdCB0aGUgYWN0dWFsIHN3aXRjaAo+IG9mIHNjaGVkdWxl ciBhbmQgdGhlIHJlbWFwcGluZyBvZiB0aGUgc2NoZWR1bGVyJ3MgcnVucXVldWUKPiBsb2NrIG9j Y3VyIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24sIHByb3RlY3RlZCBieSB0aGUKPiAib2xk IiBzY2hlZHVsZXIncyBsb2NrIChhbmQgbm90LCBlLmcuLCBpbiB0aGUgZnJlZV9wZGF0YQo+IGhv b2ssIGFzIGl0IGlzIG5vdyBmb3IgQ3JlZGl0MiBhbmQgUlREUykuCj4gCj4gTm90IGRvaW5nICBz bywgaXMgKGF0IGxlYXN0KSByYWN5LiBJbiBmYWN0LCBmb3IgaW5zdGFuY2UsCj4gaWYgd2Ugc3dp dGNoIGNwdSBYIGZyb20sIENyZWRpdDIgdG8gQ3JlZGl0LCB3ZSBkbzoKPiAKPiAgc2NoZWR1bGVf Y3B1X3N3aXRjaCh4LCBjc2NoZWQyIC0tPiBjc2NoZWQpOgo+ICAgIC8vc2NoZWR1bGVyW3hdIGlz IGNzY2hlZDIKPiAgICAvL3NjaGVkdWxlX2xvY2tbeF0gaXMgY3NjaGVkMl9sb2NrCj4gICAgY3Nj aGVkX2FsbG9jX3BkYXRhKHgpCj4gICAgY3NjaGVkX2luaXRfcGRhdGEoeCkKPiAgICBwY3B1X3Nj aGVkdWxlX2xvY2soeCkgLS0tLT4gdGFrZXMgY3NjaGVkMl9sb2NrCj4gICAgc2NoZWR1bGVyW1hd ID0gY3NjaGVkCj4gICAgcGNwdV9zY2hlZHVsZV91bmxvY2soeCkgLS0+IHVubG9ja3MgY3NjaGVk Ml9sb2NrCj4gICAgWzFdCj4gICAgY3NjaGVkMl9mcmVlX3BkYXRhKHgpCj4gICAgICBwY3B1X3Nj aGVkdWxlX2xvY2soeCkgLS0+IHRha2VzIGNzY2hlZDJfbG9jawo+ICAgICAgc2NoZWR1bGVfbG9j a1t4XSA9IGNzY2hlZF9sb2NrCj4gICAgICBzcGluX3VubG9jayhjc2NoZWQyX2xvY2spCj4gCj4g V2hpbGUsIGlmIHdlIHN3aXRjaCBjcHUgWCBmcm9tLCBDcmVkaXQgdG8gQ3JlZGl0Miwgd2UgZG86 Cj4gCj4gIHNjaGVkdWxlX2NwdV9zd2l0Y2goWCwgY3NjaGVkIC0tPiBjc2NoZWQyKToKPiAgICAv L3NjaGVkdWxlclt4XSBpcyBjc2NoZWQKPiAgICAvL3NjaGVkdWxlX2xvY2tbeF0gaXMgY3NjaGVk X2xvY2sKPiAgICBjc2NoZWQyX2FsbG9jX3BkYXRhKHgpCj4gICAgY3NjaGVkMl9pbml0X3BkYXRh KHgpCj4gICAgICBwY3B1X3NjaGVkdWxlX2xvY2soeCkgLS0+IHRha2VzIGNzY2hlZF9sb2NrCj4g ICAgICBzY2hlZHVsZV9sb2NrW3hdID0gY3NjaGVkMl9sb2NrCj4gICAgICBzcGluX3VubG9jayhj c2NoZWRfbG9jaykKPiAgICBbMl0KPiAgICBwY3B1X3NjaGVkdWxlX2xvY2soeCkgLS0tLT4gdGFr ZXMgY3NjaGVkMl9sb2NrCj4gICAgc2NoZWR1bGVyW1hdID0gY3NjaGVkMgo+ICAgIHBjcHVfc2No ZWR1bGVfdW5sb2NrKHgpIC0tPiB1bmxvY2tzIGNzY2hlZDJfbG9jawo+ICAgIGNzY2hlZF9mcmVl X3BkYXRhKHgpCj4gCj4gQW5kIGlmIHdlIHN3aXRjaCBjcHUgWCBmcm9tIFJURFMgdG8gQ3JlZGl0 Miwgd2UgZG86Cj4gCj4gIHNjaGVkdWxlX2NwdV9zd2l0Y2goWCwgUlREUyAtLT4gY3NjaGVkMik6 Cj4gICAgLy9zY2hlZHVsZXJbeF0gaXMgcnRkcwo+ICAgIC8vc2NoZWR1bGVfbG9ja1t4XSBpcyBy dGRzX2xvY2sKPiAgICBjc2NoZWQyX2FsbG9jX3BkYXRhKHgpCj4gICAgY3NjaGVkMl9pbml0X3Bk YXRhKHgpCj4gICAgICBwY3B1X3NjaGVkdWxlX2xvY2soeCkgLS0+IHRha2VzIHJ0ZHNfbG9jawo+ ICAgICAgc2NoZWR1bGVfbG9ja1t4XSA9IGNzY2hlZDJfbG9jawo+ICAgICAgc3Bpbl91bmxvY2so cnRkc19sb2NrKQo+ICAgIHBjcHVfc2NoZWR1bGVfbG9jayh4KSAtLS0tPiB0YWtlcyBjc2NoZWQy X2xvY2sKPiAgICBzY2hlZHVsZXJbeF0gPSBjc2NoZWQyCj4gICAgcGNwdV9zY2hlZHVsZV91bmxv Y2soeCkgLS0+IHVubG9ja3MgY3NjaGVkMl9sb2NrCj4gICAgcnRkc19mcmVlX3BkYXRhKHgpCj4g ICAgICBzcGluX2xvY2socnRkc19sb2NrKQo+ICAgICAgQVNTRVJUKHNjaGVkdWxlX2xvY2tbeF0g PT0gcnRkc19sb2NrKSBbM10KPiAgICAgIHNjaGVkdWxlX2xvY2tbeF0gPSBERUZBVUxUX1NDSEVE VUxFX0xPQ0sgWzRdCj4gICAgICBzcGluX3VubG9jayhydGRzX2xvY2spCj4gCj4gU28sIHRoZSBm aXJzdCBwcm9ibGVtIGlzIHRoYXQsIGlmIGFueXRoaW5nIHJlbGF0ZWQgdG8KPiBzY2hlZHVsaW5n LCBhbmQgaW52b2x2aW5nIENQVSwgaGFwcGVucyBhdCBbMV0gb3IgWzJdLCB3ZToKPiAgLSB0YWtl IGNzY2hlZDJfbG9jaywKPiAgLSBvcGVyYXRlIG9uIENyZWRpdDEgZnVuY3Rpb25zIGFuZCBkYXRh IHN0cnVjdHVyZXMsCj4gd2hpY2ggaXMgbm8gZ29vZCEKPiAKPiBUaGUgc2Vjb25kIHByb2JsZW0g aXMgdGhhdCB0aGUgQVNTRVJUIGF0IFszXSB0cmlnZ2VycywgYW5kCj4gdGhlIHRoaXJkIHRoYXQg YXQgWzRdLCB3ZSBzY3JldyB1cCB0aGUgbG9jayByZW1hcHBpbmcgd2UndmUKPiBkb25lIGZvciBv dXJzZWxmIGluIGNzY2hlZDJfaW5pdF9wZGF0YSgpIQo+IAo+IFRoZSBmaXJzdCBwcm9ibGVtIGFy aXNlcyBiZWNhdXNlIHRoZXJlIGlzIGEgd2luZG93IGR1cmluZwo+IHdoaWNoIHRoZSBsb2NrIGlz IGFscmVhZHkgdGhlIG5ldyBvbmUsIGJ1dCB0aGUgc2NoZWR1bGVyIGlzCj4gc3RpbGwgdGhlIG9s ZCBvbmUuIFRoZSBvdGhlciB0d28sIGJlY2FzZSB3ZSBsZXQgc2NoZWR1bGVycwo+IG1lc3Mgd2l0 aCB0aGUgbG9jayAocmUpbWFwcGluZyBkb25lIGJ5IG90aGVycy4KPiAKPiBUaGlzIHBhdGNoLCB0 aGVyZWZvcmUsIGludHJvZHVjZXMgYSBuZXcgaG9vayBpbiB0aGUgc2NoZWR1bGVyCj4gaW50ZXJm YWNlLCBjYWxsZWQgc3dpdGNoX3NjaGVkLCBtZWFudCBhdCBiZWluZyB1c2VkIHdoZW4KPiBzd2l0 Y2hpbmcgc2NoZWR1bGVyIG9uIGEgQ1BVLCBhbmQgaW1wbGVtZW50cyBpdCBmb3IgdGhlCj4gdmFy aW91cyBzY2hlZHVsZXJzLCBzbyB0aGF0IHRoaW5ncyBhcmUgZG9uZSBpbiB0aGUgcHJvcGVyCj4g b3JkZXIgYW5kIHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBiZXN0IHN1aXRlZCAoc2V0IG9m KQo+IGxvY2socykuIEl0IGlzIG5lY2Vzc2FyeSB0byBhZGQgdGhlIGhvb2sgKGFzIGNvbXBhcmVk IHRvCj4ga2VlcCBkb2luZyB0aGluZ3MgaW4gZ2VuZXJpYyBjb2RlKSwgYmVjYXVzZSBkaWZmZXJl bnQKPiBzY2hlZHVsZXJzIG1heSBoYXZlIGRpZmZlcmVudCBsb2NraW5nIHNjaGVtZXMuCj4gCj4g U2lnbmVkLW9mZi1ieTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+ CgpUaGFua3MhCgpSZXZpZXdlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRy aXguY29tPgoKCj4gLS0tCj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0 cml4LmNvbT4KPiBDYzogSm9zaCBXaGl0ZWhlYWQgPGpvc2gud2hpdGVoZWFkQGRvcm5lcndvcmtz LmNvbT4KPiBDYzogUm9iZXJ0IFZhblZvc3NlbiA8cm9iZXJ0LnZhbnZvc3NlbkBkb3JuZXJ3b3Jr cy5jb20+Cj4gQ2M6IE1lbmcgWHUgPG1lbmd4dUBjaXMudXBlbm4uZWR1Pgo+IENjOiBUaWFueWFu ZyBDaGVuIDx0aWNoZUBzZWFzLnVwZW5uLmVkdT4KPiAtLS0KPiBDaGFuZ2VzIGZyb20gdjI6Cj4g IC0gdGhlIGhvb2sgaXMgaW1wbGVtZW50ZWQgaW4gQVJJTkM2NTMgdG9vLCBhcyBuZWNlc3Nhcnkg YW5kCj4gICAgYXMgcmVxdWVzdGVkIGR1cmluZyByZXZpZXcuCj4gCj4gQ2hhbmdlcyBmcm9tIHYx Ogo+IAo+IG5ldyBwYXRjaCwgYmFzaWNhbGx5LCBjb21pbmcgZnJvbSBzcXVhc2hpbmcgd2hhdCB3 ZXJlCj4gNCBwYXRjaGVzIGluIHYxLiBJbiBhbnkgY2FzZSwgd2l0aCByZXNwZWN0IHRvIHRob3Nl IDQKPiBwYXRjaGVzOgo+ICAtIHJ1bnF1ZXVlIGxvY2sgaXMgYmFjayBiZWluZyB0YWtlbiBpbiBz Y2hlZHVsZV9jcHVfc3dpdGNoKCksCj4gICAgYXMgc3VnZ2VzdGVkIGR1cmluZyByZXZpZXc7Cj4g IC0gYWRkIGJhcnJpZXJzIGZvciBtYWtpbmcgc3VyZSBhbGwgaW5pdGlhbGl6YXRpb24gaXMgZG9u ZQo+ICAgIHdoZW4gdGhlIG5ldyBsb2NrIGlzIGFzc2lnbmVkLCBhcyBzdWdlc3RlZCBkdXJpbmcg cmV2aWV3Owo+ICAtIGFkZCBjb21tZW50cyBhbmQgQVNTRVJULXMgYWJvdXQgaG93IGFuZCB3aHkg dGhlIGFkb3B0ZWQKPiAgICBsb2NraW5nIHNjaGVtZSBpcyBzYWZlLCBhcyBzdWdnZXN0ZWQgZHVy aW5nIHJldmlldy4KPiAtLS0KPiAgeGVuL2NvbW1vbi9zY2hlZF9hcmluYzY1My5jIHwgICAzNCAr KysrKysrKysrKysrKysrKysKPiAgeGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYyAgIHwgICA0NCAr KysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyAgfCAg IDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgeGVuL2Nv bW1vbi9zY2hlZF9ydC5jICAgICAgIHwgICA0NSArKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAg eGVuL2NvbW1vbi9zY2hlZHVsZS5jICAgICAgIHwgICA0MSArKysrKysrKysrKysrKysrKy0tLS0t Cj4gIHhlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oICB8ICAgIDMgKysKPiAgNiBmaWxlcyBjaGFu Z2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L3hlbi9jb21tb24vc2NoZWRfYXJpbmM2NTMuYyBiL3hlbi9jb21tb24vc2NoZWRfYXJpbmM2NTMu Ywo+IGluZGV4IGI3OWZjZGYuLmViZDIwOTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9zY2hl ZF9hcmluYzY1My5jCj4gKysrIGIveGVuL2NvbW1vbi9zY2hlZF9hcmluYzY1My5jCj4gQEAgLTY1 Miw2ICs2NTIsMzggQEAgYTY1M3NjaGVkX3BpY2tfY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgc3RydWN0IHZjcHUgKnZjKQo+ICB9Cj4gIAo+ICAvKioKPiArICogWGVuIHNjaGVkdWxl ciBjYWxsYmFjayB0byBjaGFuZ2UgdGhlIHNjaGVkdWxlciBvZiBhIGNwdQo+ICsgKgo+ICsgKiBA cGFyYW0gbmV3X29wcyAgIFBvaW50ZXIgdG8gdGhpcyBpbnN0YW5jZSBvZiB0aGUgc2NoZWR1bGVy IHN0cnVjdHVyZQo+ICsgKiBAcGFyYW0gY3B1ICAgICAgIFRoZSBjcHUgdGhhdCBpcyBjaGFuZ2lu ZyBzY2hlZHVsZXIKPiArICogQHBhcmFtIHBkYXRhICAgICBzY2hlZHVsZXIgc3BlY2lmaWMgUENQ VSBkYXRhICh3ZSBkb24ndCBoYXZlIGFueSkKPiArICogQHBhcmFtIHZkYXRhICAgICBzY2hlZHVs ZXIgc3BlY2lmaWMgVkNQVSBkYXRhIG9mIHRoZSBpZGxlIHZjcHUKPiArICovCj4gK3N0YXRpYyB2 b2lkCj4gK2E2NTNfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVuc2ln bmVkIGludCBjcHUsCj4gKyAgICAgICAgICAgICAgICAgIHZvaWQgKnBkYXRhLCB2b2lkICp2ZGF0 YSkKPiArewo+ICsgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgKnNkID0gJnBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KTsKPiArICAgIGFyaW5jNjUzX3ZjcHVfdCAqc3ZjID0gdmRhdGE7Cj4gKwo+ ICsgICAgQVNTRVJUKCFwZGF0YSAmJiBzdmMgJiYgaXNfaWRsZV92Y3B1KHN2Yy0+dmMpKTsKPiAr Cj4gKyAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfcHJpdiA9IHZkYXRhOwo+ICsKPiArICAgIHBl cl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKPiArICAgIHBlcl9jcHUoc2NoZWR1bGVf ZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gTlVMTDsgLyogbm8gcGRhdGEgKi8KPiArCj4gKyAgICAv Kgo+ICsgICAgICogKFJlPylyb3V0ZSB0aGUgbG9jayB0byBpdHMgZGVmYXVsdCBsb2NhdGlvbi4g V2UgYWN0dWFsbHkgZG8gbm90IHVzZQo+ICsgICAgICogaXQsIGJ1dCBpZiB3ZSBsZWF2ZSBpdCBw b2ludGluZyB0byB3aGVyZSBpdCBkb2VzIG5vdyAoaS5lLiwgdGhlCj4gKyAgICAgKiBydW5xdWV1 ZSBsb2NrIGZvciB0aGlzIFBDUFUgaW4gdGhlIGRlZmF1bHQgc2NoZWR1bGVyKSwgd2UnZCBiZQo+ ICsgICAgICogY2F1c2luZyB1bm5lY2Vzc2FyeSBjb250ZW50aW9uIG9uIHRoYXQgbG9jayAoaW4g Y2FzZXMgd2hlcmUgaXQgaXMKPiArICAgICAqIHNoYXJlZCBhbW9uZyBtdWx0aXBsZSBQQ1BVcywg bGlrZSBpbiBDcmVkaXQyIGFuZCBSVERTKS4KPiArICAgICAqLwo+ICsgICAgc2QtPnNjaGVkdWxl X2xvY2sgPSAmc2QtPl9sb2NrOwo+ICt9Cj4gKwo+ICsvKioKPiAgICogWGVuIHNjaGVkdWxlciBj YWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGEgZ2xvYmFsIChub3QgZG9tYWluLXNwZWNpZmlj KQo+ICAgKiBhZGp1c3RtZW50LiBJdCBpcyB1c2VkIGJ5IHRoZSBBUklOQyA2NTMgc2NoZWR1bGVy IHRvIHB1dCBpbiBwbGFjZSBhIG5ldwo+ICAgKiBBUklOQyA2NTMgc2NoZWR1bGUgb3IgdG8gcmV0 cmlldmUgdGhlIHNjaGVkdWxlIGN1cnJlbnRseSBpbiBwbGFjZS4KPiBAQCAtNzI3LDYgKzc1OSw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX2FyaW5jNjUzX2RlZiA9IHsK PiAgCj4gICAgICAucGlja19jcHUgICAgICAgPSBhNjUzc2NoZWRfcGlja19jcHUsCj4gIAo+ICsg ICAgLnN3aXRjaF9zY2hlZCAgID0gYTY1M19zd2l0Y2hfc2NoZWQsCj4gKwo+ICAgICAgLmFkanVz dCAgICAgICAgID0gTlVMTCwKPiAgICAgIC5hZGp1c3RfZ2xvYmFsICA9IGE2NTNzY2hlZF9hZGp1 c3RfZ2xvYmFsLAo+ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYyBi L3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKPiBpbmRleCA5NmEyNDVkLi40OTBmMTBiIDEwMDY0 NAo+IC0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKPiArKysgYi94ZW4vY29tbW9uL3Nj aGVkX2NyZWRpdC5jCj4gQEAgLTU3OCwxMiArNTc4LDU1IEBAIGNzY2hlZF9pbml0X3BkYXRhKGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGRhdGEsIGludCBjcHUpCj4gIHsKPiAg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAgICBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diA9IENTQ0hFRF9QUklWKG9wcyk7Cj4gKyAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqc2QgPSAm cGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGlz IGlzIGNhbGxlZCBlaXRoZXIgZHVyaW5nIGR1cmluZyBib290LCByZXN1bWUgb3IgaG90cGx1Zywg aW4KPiArICAgICAqIGNhc2UgQ3JlZGl0MSBpcyB0aGUgc2NoZWR1bGVyIGNob3NlbiBhdCBib290 LiBJbiBzdWNoIGNhc2VzLCB0aGUKPiArICAgICAqIHNjaGVkdWxlciBsb2NrIGZvciBjcHUgaXMg YWxyZWFkeSBwb2ludGluZyB0byB0aGUgZGVmYXVsdCBwZXItY3B1Cj4gKyAgICAgKiBzcGlubG9j aywgYXMgQ3JlZGl0MSBuZWVkcyBpdCwgc28gdGhlcmUgaXMgbm8gcmVtYXBwaW5nIHRvIGJlIGRv bmUuCj4gKyAgICAgKi8KPiArICAgIEFTU0VSVChzZC0+c2NoZWR1bGVfbG9jayA9PSAmc2QtPl9s b2NrICYmICFzcGluX2lzX2xvY2tlZCgmc2QtPl9sb2NrKSk7Cj4gIAo+ICAgICAgc3Bpbl9sb2Nr X2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwo+ICAgICAgaW5pdF9wZGF0YShwcnYsIHBkYXRh LCBjcHUpOwo+ICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7 Cj4gIH0KPiAgCj4gKy8qIENoYW5nZSB0aGUgc2NoZWR1bGVyIG9mIGNwdSB0byB1cyAoQ3JlZGl0 KS4gKi8KPiArc3RhdGljIHZvaWQKPiArY3NjaGVkX3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1 bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAo+ICsgICAgICAgICAgICAgICAgICAgIHZv aWQgKnBkYXRhLCB2b2lkICp2ZGF0YSkKPiArewo+ICsgICAgc3RydWN0IHNjaGVkdWxlX2RhdGEg KnNkID0gJnBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KTsKPiArICAgIHN0cnVjdCBjc2NoZWRf cHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEX1BSSVYobmV3X29wcyk7Cj4gKyAgICBzdHJ1Y3QgY3NjaGVk X3ZjcHUgKnN2YyA9IHZkYXRhOwo+ICsKPiArICAgIEFTU0VSVChzdmMgJiYgaXNfaWRsZV92Y3B1 KHN2Yy0+dmNwdSkpOwo+ICsKPiArICAgIGlkbGVfdmNwdVtjcHVdLT5zY2hlZF9wcml2ID0gdmRh dGE7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFdlIGFyZSBob2xkaW5nIHRoZSBydW5xdWV1ZSBs b2NrIGFscmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBpbgo+ICsgICAgICogc2NoZWR1bGVfY3B1X3N3 aXRjaCgpKS4gSXQgYWN0dWFsbHkgbWF5IG9yIG1heSBub3QgYmUgdGhlICdyaWdodCcKPiArICAg ICAqIG9uZSBmb3IgdGhpcyBjcHUsIGJ1dCB0aGF0IGlzIG9rIGZvciBwcmV2ZW50aW5nIHJhY2Vz Lgo+ICsgICAgICovCj4gKyAgICBzcGluX2xvY2soJnBydi0+bG9jayk7Cj4gKyAgICBpbml0X3Bk YXRhKHBydiwgcGRhdGEsIGNwdSk7Cj4gKyAgICBzcGluX3VubG9jaygmcHJ2LT5sb2NrKTsKPiAr Cj4gKyAgICBwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSA9IG5ld19vcHM7Cj4gKyAgICBwZXJfY3B1 KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWRfcHJpdiA9IHBkYXRhOwo+ICsKPiArICAgIC8qCj4g KyAgICAgKiAoUmU/KXJvdXRlIHRoZSBsb2NrIHRvIHRoZSBwZXIgcENQVSBsb2NrIGFzIC9sYXN0 LyB0aGluZy4gSW4gZmFjdCwKPiArICAgICAqIGlmIGl0IGlzIGZyZWUgKGFuZCBpdCBjYW4gYmUp IHdlIHdhbnQgdGhhdCBhbnlvbmUgdGhhdCBtYW5hZ2VzCj4gKyAgICAgKiB0YWtpbmcgaXQsIGZp bmRzIGFsbCB0aGUgaW5pdGlhbGl6YXRpb25zIHdlJ3ZlIGRvbmUgYWJvdmUgaW4gcGxhY2UuCj4g KyAgICAgKi8KPiArICAgIHNtcF9tYigpOwo+ICsgICAgc2QtPnNjaGVkdWxlX2xvY2sgPSAmc2Qt Pl9sb2NrOwo+ICt9Cj4gKwo+ICAjaWZuZGVmIE5ERUJVRwo+ICBzdGF0aWMgaW5saW5lIHZvaWQK PiAgX19jc2NoZWRfdmNwdV9jaGVjayhzdHJ1Y3QgdmNwdSAqdmMpCj4gQEAgLTIwNjcsNiArMjEx MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX2NyZWRpdF9kZWYgPSB7 Cj4gICAgICAuYWxsb2NfcGRhdGEgICAgPSBjc2NoZWRfYWxsb2NfcGRhdGEsCj4gICAgICAuaW5p dF9wZGF0YSAgICAgPSBjc2NoZWRfaW5pdF9wZGF0YSwKPiAgICAgIC5mcmVlX3BkYXRhICAgICA9 IGNzY2hlZF9mcmVlX3BkYXRhLAo+ICsgICAgLnN3aXRjaF9zY2hlZCAgID0gY3NjaGVkX3N3aXRj aF9zY2hlZCwKPiAgICAgIC5hbGxvY19kb21kYXRhICA9IGNzY2hlZF9hbGxvY19kb21kYXRhLAo+ ICAgICAgLmZyZWVfZG9tZGF0YSAgID0gY3NjaGVkX2ZyZWVfZG9tZGF0YSwKPiAgCj4gZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVk aXQyLmMKPiBpbmRleCA4OTg5ZWVhLi42MGM2ZjViIDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24v c2NoZWRfY3JlZGl0Mi5jCj4gKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKPiBAQCAt MTk3MSwxMiArMTk3MSwxMiBAQCBzdGF0aWMgdm9pZCBkZWFjdGl2YXRlX3J1bnF1ZXVlKHN0cnVj dCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgaW50IHJxaSkKPiAgICAgIGNwdW1hc2tfY2xlYXJfY3B1 KHJxaSwgJnBydi0+YWN0aXZlX3F1ZXVlcyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkCj4gKy8q IFJldHVybnMgdGhlIElEIG9mIHRoZSBydW5xdWV1ZSB0aGUgY3B1IGlzIGFzc2lnbmVkIHRvLiAq Lwo+ICtzdGF0aWMgdW5zaWduZWQKPiAgaW5pdF9wZGF0YShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRl ICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCj4gIHsKPiAgICAgIHVuc2lnbmVkIHJxaTsKPiAgICAg IHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKPiAtICAgIHNwaW5sb2NrX3QgKm9s ZF9sb2NrOwo+ICAKPiAgICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcHJ2LT5sb2NrKSk7Cj4g ICAgICBBU1NFUlQoIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmcHJ2LT5pbml0aWFsaXplZCkpOwo+ IEBAIC0yMDA3LDQ0ICsyMDA3LDg5IEBAIGluaXRfcGRhdGEoc3RydWN0IGNzY2hlZDJfcHJpdmF0 ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1KQo+ICAgICAgICAgIGFjdGl2YXRlX3J1bnF1ZXVlKHBy diwgcnFpKTsKPiAgICAgIH0KPiAgICAgIAo+IC0gICAgLyogSVJRcyBhbHJlYWR5IGRpc2FibGVk ICovCj4gLSAgICBvbGRfbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9jayhjcHUpOwo+IC0KPiAtICAg IC8qIE1vdmUgc3BpbmxvY2sgdG8gbmV3IHJ1bnEgbG9jay4gICovCj4gLSAgICBwZXJfY3B1KHNj aGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayA9ICZycWQtPmxvY2s7Cj4gLQo+ICAgICAg LyogU2V0IHRoZSBydW5xdWV1ZSBtYXAgKi8KPiAgICAgIHBydi0+cnVucV9tYXBbY3B1XSA9IHJx aTsKPiAgICAgIAo+ICAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnJxZC0+aWRsZSk7Cj4gICAg ICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmcnFkLT5hY3RpdmUpOwo+IC0KPiAtICAgIC8qIF9Ob3Rf IHBjcHVfc2NoZWR1bGVfdW5sb2NrKCk6IHBlcl9jcHUoKS5zY2hlZHVsZV9sb2NrIGNoYW5nZWQh ICovCj4gLSAgICBzcGluX3VubG9jayhvbGRfbG9jayk7Cj4gLQo+ICAgICAgY3B1bWFza19zZXRf Y3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6ZWQpOwo+ICAKPiAtICAgIHJldHVybjsKPiArICAgIHJl dHVybiBycWk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gIGNzY2hlZDJfaW5pdF9wZGF0YShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBkYXRhLCBpbnQgY3B1KQo+ICB7Cj4g ICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYob3BzKTsKPiAr ICAgIHNwaW5sb2NrX3QgKm9sZF9sb2NrOwo+ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAr ICAgIHVuc2lnbmVkIHJxaTsKPiAgCj4gICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2Nr LCBmbGFncyk7Cj4gLSAgICBpbml0X3BkYXRhKHBydiwgY3B1KTsKPiArICAgIG9sZF9sb2NrID0g cGNwdV9zY2hlZHVsZV9sb2NrKGNwdSk7Cj4gKwo+ICsgICAgcnFpID0gaW5pdF9wZGF0YShwcnYs IGNwdSk7Cj4gKyAgICAvKiBNb3ZlIHRoZSBzY2hlZHVsZXIgbG9jayB0byB0aGUgbmV3IHJ1bnEg bG9jay4gKi8KPiArICAgIHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2Nr ID0gJnBydi0+cnFkW3JxaV0ubG9jazsKPiArCj4gKyAgICAvKiBfTm90XyBwY3B1X3NjaGVkdWxl X3VubG9jaygpOiBzY2hlZHVsZV9sb2NrIG1heSBoYXZlIGNoYW5nZWQhICovCj4gKyAgICBzcGlu X3VubG9jayhvbGRfbG9jayk7Cj4gICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxv Y2ssIGZsYWdzKTsKPiAgfQo+ICAKPiArLyogQ2hhbmdlIHRoZSBzY2hlZHVsZXIgb2YgY3B1IHRv IHVzIChDcmVkaXQyKS4gKi8KPiArc3RhdGljIHZvaWQKPiArY3NjaGVkMl9zd2l0Y2hfc2NoZWQo c3RydWN0IHNjaGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKPiArICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqcGRhdGEsIHZvaWQgKnZkYXRhKQo+ICt7Cj4gKyAgICBzdHJ1Y3Qg Y3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYobmV3X29wcyk7Cj4gKyAgICBzdHJ1 Y3QgY3NjaGVkMl92Y3B1ICpzdmMgPSB2ZGF0YTsKPiArICAgIHVuc2lnbmVkIHJxaTsKPiArCj4g KyAgICBBU1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3ZjcHUoc3ZjLT52Y3B1KSk7Cj4g Kwo+ICsgICAgLyoKPiArICAgICAqIFdlIG93biBvbmUgcnVucXVldWUgbG9jayBhbHJlYWR5IChm cm9tIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSkuIFRoaXMKPiArICAgICAqIGxvb2tzIGxpa2UgaXQg dmlvbGF0ZXMgdGhpcyBzY2hlZHVsZXIncyBsb2NraW5nIHJ1bGVzLCBidXQgaXQgZG9lcwo+ICsg ICAgICogbm90LCBhcyB3aGF0IHdlIG93biBpcyB0aGUgbG9jayBvZiBhbm90aGVyIHNjaGVkdWxl ciwgdGhhdCBoZW5jZSBoYXMKPiArICAgICAqIG5vIHBhcnRpY3VsYXIgKG9yZGVyaW5nKSByZWxh dGlvbnNoaXAgd2l0aCBvdXIgcHJpdmF0ZSBnbG9iYWwgbG9jay4KPiArICAgICAqIEFuZCBvd25p bmcgZXhhY3RseSB0aGF0IG9uZSAodGhlIGxvY2sgb2YgdGhlIG9sZCBzY2hlZHVsZXIgb2YgdGhp cwo+ICsgICAgICogY3B1KSBpcyB3aGF0IGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHJhY2VzLgo+ ICsgICAgICovCj4gKyAgICBzcGluX2xvY2tfaXJxKCZwcnYtPmxvY2spOwo+ICsKPiArICAgIGlk bGVfdmNwdVtjcHVdLT5zY2hlZF9wcml2ID0gdmRhdGE7Cj4gKwo+ICsgICAgcnFpID0gaW5pdF9w ZGF0YShwcnYsIGNwdSk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIE5vdyB0aGF0IHdlIGtub3cg d2hhdCBydW5xdWV1ZSB3ZSdsbCBnbyBpbiwgZG91YmxlIGNoZWNrIHdoYXQncyBzYWlkCj4gKyAg ICAgKiBhYm92ZTogdGhlIGxvY2sgd2UgYWxyZWFkeSBob2xkIGlzIG5vdCB0aGUgb25lIG9mIHRo aXMgcnVucXVldWUgb2YKPiArICAgICAqIHRoaXMgc2NoZWR1bGVyLCBhbmQgc28gaXQncyBzYWZl IHRvIGhhdmUgdGFrZW4gaXQgL2JlZm9yZS8gb3VyCj4gKyAgICAgKiBwcml2YXRlIGdsb2JhbCBs b2NrLgo+ICsgICAgICovCj4gKyAgICBBU1NFUlQocGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUp LnNjaGVkdWxlX2xvY2sgIT0gJnBydi0+cnFkW3JxaV0ubG9jayk7Cj4gKwo+ICsgICAgcGVyX2Nw dShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOwo+ICsgICAgcGVyX2NwdShzY2hlZHVsZV9kYXRh LCBjcHUpLnNjaGVkX3ByaXYgPSBOVUxMOyAvKiBubyBwZGF0YSAqLwo+ICsKPiArICAgIC8qCj4g KyAgICAgKiAoUmU/KXJvdXRlIHRoZSBsb2NrIHRvIHRoZSBwZXIgcENQVSBsb2NrIGFzIC9sYXN0 LyB0aGluZy4gSW4gZmFjdCwKPiArICAgICAqIGlmIGl0IGlzIGZyZWUgKGFuZCBpdCBjYW4gYmUp IHdlIHdhbnQgdGhhdCBhbnlvbmUgdGhhdCBtYW5hZ2VzCj4gKyAgICAgKiB0YWtpbmcgaXQsIGZp bmQgYWxsIHRoZSBpbml0aWFsaXphdGlvbnMgd2UndmUgZG9uZSBhYm92ZSBpbiBwbGFjZS4KPiAr ICAgICAqLwo+ICsgICAgc21wX21iKCk7Cj4gKyAgICBwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNw dSkuc2NoZWR1bGVfbG9jayA9ICZwcnYtPnJxZFtycWldLmxvY2s7Cj4gKwo+ICsgICAgc3Bpbl91 bmxvY2tfaXJxKCZwcnYtPmxvY2spOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICBjc2NoZWQy X2ZyZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1LCBpbnQg Y3B1KQo+ICB7Cj4gICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgICAgc3RydWN0IGNzY2hl ZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7Cj4gICAgICBzdHJ1Y3QgY3NjaGVk Ml9ydW5xdWV1ZV9kYXRhICpycWQ7Cj4gLSAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqc2QgPSAm cGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpOwo+ICAgICAgaW50IHJxaTsKPiAgCj4gICAgICBz cGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFncyk7Cj4gQEAgLTIwNzIsMTEgKzIxMTcs NiBAQCBjc2NoZWQyX2ZyZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lk ICpwY3B1LCBpbnQgY3B1KQo+ICAgICAgICAgIGRlYWN0aXZhdGVfcnVucXVldWUocHJ2LCBycWkp Owo+ICAgICAgfQo+ICAKPiAtICAgIC8qIE1vdmUgc3BpbmxvY2sgdG8gdGhlIG9yaWdpbmFsIGxv Y2suICAqLwo+IC0gICAgQVNTRVJUKHNkLT5zY2hlZHVsZV9sb2NrID09ICZycWQtPmxvY2spOwo+ IC0gICAgQVNTRVJUKCFzcGluX2lzX2xvY2tlZCgmc2QtPl9sb2NrKSk7Cj4gLSAgICBzZC0+c2No ZWR1bGVfbG9jayA9ICZzZC0+X2xvY2s7Cj4gLQo+ICAgICAgc3Bpbl91bmxvY2soJnJxZC0+bG9j ayk7Cj4gIAo+ICAgICAgY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmcHJ2LT5pbml0aWFsaXplZCk7 Cj4gQEAgLTIxNzAsNiArMjIxMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNj aGVkX2NyZWRpdDJfZGVmID0gewo+ICAgICAgLmZyZWVfdmRhdGEgICAgID0gY3NjaGVkMl9mcmVl X3ZkYXRhLAo+ICAgICAgLmluaXRfcGRhdGEgICAgID0gY3NjaGVkMl9pbml0X3BkYXRhLAo+ICAg ICAgLmZyZWVfcGRhdGEgICAgID0gY3NjaGVkMl9mcmVlX3BkYXRhLAo+ICsgICAgLnN3aXRjaF9z Y2hlZCAgID0gY3NjaGVkMl9zd2l0Y2hfc2NoZWQsCj4gICAgICAuYWxsb2NfZG9tZGF0YSAgPSBj c2NoZWQyX2FsbG9jX2RvbWRhdGEsCj4gICAgICAuZnJlZV9kb21kYXRhICAgPSBjc2NoZWQyX2Zy ZWVfZG9tZGF0YSwKPiAgfTsKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIv eGVuL2NvbW1vbi9zY2hlZF9ydC5jCj4gaW5kZXggYjk2YmQ5My4uM2JiOGM3MSAxMDA2NDQKPiAt LS0gYS94ZW4vY29tbW9uL3NjaGVkX3J0LmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMK PiBAQCAtNjgyLDYgKzY4MiwzNyBAQCBydF9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgdm9pZCAqcGRhdGEsIGludCBjcHUpCj4gICAgICBzcGluX3VubG9ja19pcnFyZXN0 b3JlKG9sZF9sb2NrLCBmbGFncyk7Cj4gIH0KPiAgCj4gKy8qIENoYW5nZSB0aGUgc2NoZWR1bGVy IG9mIGNwdSB0byB1cyAoUlREUykuICovCj4gK3N0YXRpYyB2b2lkCj4gK3J0X3N3aXRjaF9zY2hl ZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAo+ICsgICAgICAg ICAgICAgICAgdm9pZCAqcGRhdGEsIHZvaWQgKnZkYXRhKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgcnRf cHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihuZXdfb3BzKTsKPiArICAgIHN0cnVjdCBydF92Y3B1ICpz dmMgPSB2ZGF0YTsKPiArCj4gKyAgICBBU1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3Zj cHUoc3ZjLT52Y3B1KSk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFdlIGFyZSBob2xkaW5nIHRo ZSBydW5xdWV1ZSBsb2NrIGFscmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBpbgo+ICsgICAgICogc2No ZWR1bGVfY3B1X3N3aXRjaCgpKS4gSXQncyBhY3R1YWxseSB0aGUgcnVucXVldWUgbG9jayBvZgo+ ICsgICAgICogYW5vdGhlciBzY2hlZHVsZXIsIGJ1dCB0aGF0IGlzIGhvdyB0aGluZ3MgbmVlZCB0 byBiZSwgZm9yCj4gKyAgICAgKiBwcmV2ZW50aW5nIHJhY2VzLgo+ICsgICAgICovCj4gKyAgICBB U1NFUlQocGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgIT0gJnBydi0+ bG9jayk7Cj4gKwo+ICsgICAgaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3ByaXYgPSB2ZGF0YTsKPiAr ICAgIHBlcl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKPiArICAgIHBlcl9jcHUoc2No ZWR1bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gTlVMTDsgLyogbm8gcGRhdGEgKi8KPiArCj4g KyAgICAvKgo+ICsgICAgICogKFJlPylyb3V0ZSB0aGUgbG9jayB0byB0aGUgcGVyIHBDUFUgbG9j ayBhcyAvbGFzdC8gdGhpbmcuIEluIGZhY3QsCj4gKyAgICAgKiBpZiBpdCBpcyBmcmVlIChhbmQg aXQgY2FuIGJlKSB3ZSB3YW50IHRoYXQgYW55b25lIHRoYXQgbWFuYWdlcwo+ICsgICAgICogdGFr aW5nIGl0LCBmaW5kIGFsbCB0aGUgaW5pdGlhbGl6YXRpb25zIHdlJ3ZlIGRvbmUgYWJvdmUgaW4g cGxhY2UuCj4gKyAgICAgKi8KPiArICAgIHNtcF9tYigpOwo+ICsgICAgcGVyX2NwdShzY2hlZHVs ZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgPSAmcHJ2LT5sb2NrOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgdm9pZCAqCj4gIHJ0X2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg aW50IGNwdSkKPiAgewo+IEBAIC03MDcsMTkgKzczOCw2IEBAIHJ0X2FsbG9jX3BkYXRhKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSkKPiAgc3RhdGljIHZvaWQKPiAgcnRfZnJl ZV9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUsIGludCBjcHUp Cj4gIHsKPiAtICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG9wcyk7Cj4gLSAg ICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqc2QgPSAmcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUp Owo+IC0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCj4gLSAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmcHJ2LT5sb2NrLCBmbGFncyk7Cj4gLQo+IC0gICAgLyogTW92ZSBzcGlubG9jayBiYWNrIHRv IHRoZSBkZWZhdWx0IGxvY2sgKi8KPiAtICAgIEFTU0VSVChzZC0+c2NoZWR1bGVfbG9jayA9PSAm cHJ2LT5sb2NrKTsKPiAtICAgIEFTU0VSVCghc3Bpbl9pc19sb2NrZWQoJnNkLT5fbG9jaykpOwo+ IC0gICAgc2QtPnNjaGVkdWxlX2xvY2sgPSAmc2QtPl9sb2NrOwo+IC0KPiAtICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwo+IC0KPiAgICAgIGZyZWVfY3B1bWFz a192YXIoX2NwdW1hc2tfc2NyYXRjaFtjcHVdKTsKPiAgfQo+ICAKPiBAQCAtMTQ2OCw2ICsxNDg2 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgc2NoZWRfcnRkc19kZWYgPSB7Cj4g ICAgICAuYWxsb2NfcGRhdGEgICAgPSBydF9hbGxvY19wZGF0YSwKPiAgICAgIC5mcmVlX3BkYXRh ICAgICA9IHJ0X2ZyZWVfcGRhdGEsCj4gICAgICAuaW5pdF9wZGF0YSAgICAgPSBydF9pbml0X3Bk YXRhLAo+ICsgICAgLnN3aXRjaF9zY2hlZCAgID0gcnRfc3dpdGNoX3NjaGVkLAo+ICAgICAgLmFs bG9jX2RvbWRhdGEgID0gcnRfYWxsb2NfZG9tZGF0YSwKPiAgICAgIC5mcmVlX2RvbWRhdGEgICA9 IHJ0X2ZyZWVfZG9tZGF0YSwKPiAgICAgIC5pbml0X2RvbWFpbiAgICA9IHJ0X2RvbV9pbml0LAo+ IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkdWxlLmMgYi94ZW4vY29tbW9uL3NjaGVkdWxl LmMKPiBpbmRleCAxOTQxNjEzLi41NTU5YWExIDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24vc2No ZWR1bGUuYwo+ICsrKyBiL3hlbi9jb21tb24vc2NoZWR1bGUuYwo+IEBAIC0xNjM1LDExICsxNjM1 LDExIEBAIHZvaWQgX19pbml0IHNjaGVkdWxlcl9pbml0KHZvaWQpCj4gIGludCBzY2hlZHVsZV9j cHVfc3dpdGNoKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVwb29sICpjKQo+ICB7Cj4gICAg ICBzdHJ1Y3QgdmNwdSAqaWRsZTsKPiAtICAgIHNwaW5sb2NrX3QgKmxvY2s7Cj4gICAgICB2b2lk ICpwcHJpdiwgKnBwcml2X29sZCwgKnZwcml2LCAqdnByaXZfb2xkOwo+ICAgICAgc3RydWN0IHNj aGVkdWxlciAqb2xkX29wcyA9IHBlcl9jcHUoc2NoZWR1bGVyLCBjcHUpOwo+ICAgICAgc3RydWN0 IHNjaGVkdWxlciAqbmV3X29wcyA9IChjID09IE5VTEwpID8gJm9wcyA6IGMtPnNjaGVkOwo+ICAg ICAgc3RydWN0IGNwdXBvb2wgKm9sZF9wb29sID0gcGVyX2NwdShjcHVwb29sLCBjcHUpOwo+ICsg ICAgc3BpbmxvY2tfdCAqIG9sZF9sb2NrOwo+ICAKPiAgICAgIC8qCj4gICAgICAgKiBwQ1BVcyBv bmx5IG1vdmUgZnJvbSBhIHZhbGlkIGNwdXBvb2wgdG8gZnJlZSAoaS5lLiwgb3V0IG9mIGFueSBw b29sKSwKPiBAQCAtMTY1OCwxMSArMTY1OCwyMSBAQCBpbnQgc2NoZWR1bGVfY3B1X3N3aXRjaCh1 bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykKPiAgICAgIGlmICggb2xkX29wcyA9 PSBuZXdfb3BzICkKPiAgICAgICAgICBnb3RvIG91dDsKPiAgCj4gKyAgICAvKgo+ICsgICAgICog VG8gc2V0dXAgdGhlIGNwdSBmb3IgdGhlIG5ldyBzY2hlZHVsZXIgd2UgbmVlZDoKPiArICAgICAq ICAtIGEgdmFsaWQgaW5zdGFuY2Ugb2YgcGVyLUNQVSBzY2hlZHVsZXIgc3BlY2lmaWMgZGF0YSwg YXMgaXQgaXMKPiArICAgICAqICAgIGFsbG9jYXRlZCBieSBTQ0hFRF9PUChhbGxvY19wZGF0YSku IE5vdGUgdGhhdCB3ZSBkbyBub3Qgd2FudCB0bwo+ICsgICAgICogICAgaW5pdGlhbGl6ZSBpdCB5 ZXQgKGkuZS4sIHdlIGFyZSBub3QgY2FsbGluZyBTQ0hFRF9PUChpbml0X3BkYXRhKSkuCj4gKyAg ICAgKiAgICBUaGF0IHdpbGwgYmUgZG9uZSBieSB0aGUgdGFyZ2V0IHNjaGVkdWxlciwgaW4gU0NI RURfT1Aoc3dpdGNoX3NjaGVkKSwKPiArICAgICAqICAgIGluIHByb3BlciBvcmRlcmluZyBhbmQg d2l0aCBsb2NraW5nLgo+ICsgICAgICogIC0gYSB2YWxpZCBpbnN0YW5jZSBvZiBwZXItdkNQVSBz Y2hlZHVsZXIgc3BlY2lmaWMgZGF0YSwgZm9yIHRoZSBpZGxlCj4gKyAgICAgKiAgICB2Q1BVIG9m IGNwdS4gVGhhdCBpcyB3aGF0IHRoZSB0YXJnZXQgc2NoZWR1bGVyIHdpbGwgdXNlIGZvciB0aGUK PiArICAgICAqICAgIHNjaGVkX3ByaXYgZmllbGQgb2YgdGhlIHBlci12Q1BVIGluZm8gb2YgdGhl IGlkbGUgZG9tYWluLgo+ICsgICAgICovCj4gICAgICBpZGxlID0gaWRsZV92Y3B1W2NwdV07Cj4g ICAgICBwcHJpdiA9IFNDSEVEX09QKG5ld19vcHMsIGFsbG9jX3BkYXRhLCBjcHUpOwo+ICAgICAg aWYgKCBJU19FUlIocHByaXYpICkKPiAgICAgICAgICByZXR1cm4gUFRSX0VSUihwcHJpdik7Cj4g LSAgICBTQ0hFRF9PUChuZXdfb3BzLCBpbml0X3BkYXRhLCBwcHJpdiwgY3B1KTsKPiAgICAgIHZw cml2ID0gU0NIRURfT1AobmV3X29wcywgYWxsb2NfdmRhdGEsIGlkbGUsIGlkbGUtPmRvbWFpbi0+ c2NoZWRfcHJpdik7Cj4gICAgICBpZiAoIHZwcml2ID09IE5VTEwgKQo+ICAgICAgewo+IEBAIC0x NjcwLDE3ICsxNjgwLDMwIEBAIGludCBzY2hlZHVsZV9jcHVfc3dpdGNoKHVuc2lnbmVkIGludCBj cHUsIHN0cnVjdCBjcHVwb29sICpjKQo+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAg fQo+ICAKPiAtICAgIGxvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2tfaXJxKGNwdSk7Cj4gLQo+ICAg ICAgU0NIRURfT1Aob2xkX29wcywgdGlja19zdXNwZW5kLCBjcHUpOwo+ICsKPiArICAgIC8qCj4g KyAgICAgKiBUaGUgYWN0dWFsIHN3aXRjaCwgaW5jbHVkaW5nIChpZiBuZWNlc3NhcnkpIHRoZSBy ZXJvdXRpbmcgb2YgdGhlCj4gKyAgICAgKiBzY2hlZHVsZXIgbG9jayB0byB3aGF0ZXZlciBuZXdf b3BzIHByZWZlcnMsICBuZWVkcyB0byBoYXBwZW4gaW4gb25lCj4gKyAgICAgKiBjcml0aWNhbCBz ZWN0aW9uLCBwcm90ZWN0ZWQgYnkgb2xkX29wcycgbG9jaywgb3IgcmFjZXMgYXJlIHBvc3NpYmxl Lgo+ICsgICAgICogSXQgaXMsIGluIGZhY3QsIHRoZSBsb2NrIG9mIGFub3RoZXIgc2NoZWR1bGVy IHRoYXQgd2UgYXJlIHRha2luZyAodGhlCj4gKyAgICAgKiBzY2hlZHVsZXIgb2YgdGhlIGNwdXBv b2wgdGhhdCBjcHUgc3RpbGwgYmVsb25ncyB0bykuIEJ1dCB0aGF0IGlzIG9rCj4gKyAgICAgKiBh cywgYW55b25lIHRyeWluZyB0byBzY2hlZHVsZSBvbiB0aGlzIGNwdSB3aWxsIHNwaW4gdW50aWwg d2hlbiB3ZQo+ICsgICAgICogcmVsZWFzZSB0aGF0IGxvY2sgKGJvdHRvbSBvZiB0aGlzIGZ1bmN0 aW9uKS4gV2hlbiBoZSdsbCBnZXQgdGhlIGxvY2sKPiArICAgICAqIC0tdGhhbmtzIHRvIHRoZSBs b29wIGluc2lkZSAqX3NjaGVkdWxlX2xvY2soKSBmdW5jdGlvbnMtLSBoZSdsbCBub3RpY2UKPiAr ICAgICAqIHRoYXQgdGhlIGxvY2sgaXRzZWxmIGNoYW5nZWQsIGFuZCByZXRyeSBhY3F1aXJpbmcg dGhlIG5ldyBvbmUgKHdoaWNoCj4gKyAgICAgKiB3aWxsIGJlIHRoZSBjb3JyZWN0LCByZW1hcHBl ZCBvbmUsIGF0IHRoYXQgcG9pbnQpLgo+ICsgICAgICovCj4gKyAgICBvbGRfbG9jayA9IHBjcHVf c2NoZWR1bGVfbG9jayhjcHUpOwo+ICsKPiAgICAgIHZwcml2X29sZCA9IGlkbGUtPnNjaGVkX3By aXY7Cj4gLSAgICBpZGxlLT5zY2hlZF9wcml2ID0gdnByaXY7Cj4gLSAgICBwZXJfY3B1KHNjaGVk dWxlciwgY3B1KSA9IG5ld19vcHM7Cj4gICAgICBwcHJpdl9vbGQgPSBwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSkuc2NoZWRfcHJpdjsKPiAtICAgIHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1 KS5zY2hlZF9wcml2ID0gcHByaXY7Cj4gLSAgICBTQ0hFRF9PUChuZXdfb3BzLCB0aWNrX3Jlc3Vt ZSwgY3B1KTsKPiArICAgIFNDSEVEX09QKG5ld19vcHMsIHN3aXRjaF9zY2hlZCwgY3B1LCBwcHJp diwgdnByaXYpOwo+ICAKPiAtICAgIHBjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCBjcHUp Owo+ICsgICAgLyogX05vdF8gcGNwdV9zY2hlZHVsZV91bmxvY2soKTogc2NoZWR1bGVfbG9jayBt YXkgaGF2ZSBjaGFuZ2VkISAqLwo+ICsgICAgc3Bpbl91bmxvY2tfaXJxKG9sZF9sb2NrKTsKPiAr Cj4gKyAgICBTQ0hFRF9PUChuZXdfb3BzLCB0aWNrX3Jlc3VtZSwgY3B1KTsKPiAgCj4gICAgICBT Q0hFRF9PUChvbGRfb3BzLCBmcmVlX3ZkYXRhLCB2cHJpdl9vbGQpOwo+ICAgICAgU0NIRURfT1Ao b2xkX29wcywgZnJlZV9wZGF0YSwgcHByaXZfb2xkLCBjcHUpOwo+IGRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94ZW4vc2NoZWQtaWYuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCj4gaW5k ZXggNzBjMDhjNi4uOWNlYmU0MSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQt aWYuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCj4gQEAgLTEzNyw2ICsxMzcs OSBAQCBzdHJ1Y3Qgc2NoZWR1bGVyIHsKPiAgICAgIHZvaWQgICAgICAgICAoKmZyZWVfZG9tZGF0 YSkgICAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqLCB2b2lkICopOwo+ICAgICAgdm9pZCAqICAg ICAgICgqYWxsb2NfZG9tZGF0YSkgIChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICosIHN0cnVjdCBk b21haW4gKik7Cj4gIAo+ICsgICAgdm9pZCAgICAgICAgICgqc3dpdGNoX3NjaGVkKSAgIChzdHJ1 Y3Qgc2NoZWR1bGVyICosIHVuc2lnbmVkIGludCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqLCB2b2lkICopOwo+ICsKPiAgICAgIGludCAgICAgICAgICAoKmlu aXRfZG9tYWluKSAgICAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqLCBzdHJ1Y3QgZG9tYWluICop Owo+ICAgICAgdm9pZCAgICAgICAgICgqZGVzdHJveV9kb21haW4pIChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICosIHN0cnVjdCBkb21haW4gKik7Cj4gIAo+IAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==