From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 04/11] xen: sched: close potential races when switching scheduler to CPUs Date: Thu, 7 Apr 2016 15:54:44 +0100 Message-ID: <570674B4.202@citrix.com> References: <20160406170023.25877.15622.stgit@Solace.fritz.box> <20160406172309.25877.66499.stgit@Solace.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aoBR1-0002Xg-1x for xen-devel@lists.xenproject.org; Thu, 07 Apr 2016 15:01:27 +0000 In-Reply-To: <20160406172309.25877.66499.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 , Meng Xu List-Id: xen-devel@lists.xenproject.org T24gMDYvMDQvMTYgMTg6MjMsIERhcmlvIEZhZ2dpb2xpIHdyb3RlOgo+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 aW91cyBzY2hlZHVsZXJzICh0aGF0IG5lZWRzIGl0OiBpLmUuLCBhbGwgZXhjZXB0IEFSSU5DNjUz KSwKPiBzbyB0aGF0IHRoaW5ncyBhcmUgZG9uZSBpbiB0aGUgcHJvcGVyIG9yZGVyIGFuZCB1bmRl ciB0aGUKPiBwcm90ZWN0aW9uIG9mIHRoZSBiZXN0IHN1aXRlZCAoc2V0IG9mKSBsb2NrKHMpLiBJ dCBpcwo+IG5lY2Vzc2FyeSB0byBhZGQgdGhlIGhvb2sgKGFzIGNvbXBhcmVkIHRvIGtlZXAgZG9p bmcgdGhpbmdzCj4gaW4gZ2VuZXJpYyBjb2RlKSwgYmVjYXVzZSBkaWZmZXJlbnQgc2NoZWR1bGVy cyBtYXkgaGF2ZQo+ICBkaWZmZXJlbnQgbG9ja2luZyBzY2hlbWVzLgo+IAo+IFNpZ25lZC1vZmYt Ynk6IERhcmlvIEZhZ2dpb2xpIDxkYXJpby5mYWdnaW9saUBjaXRyaXguY29tPgoKSGV5IERhcmlv ISBFdmVyeXRoaW5nIGhlcmUgbG9va3MgZ29vZCwgZXhjZXB0IGZvciBvbmUgdGhpbmc6IHRoZQpz Y2hlZHVsZXIgbG9jayBmb3IgYXJpbmM2NTMgc2NoZWR1bGVyLiA6LSkgIFdoYXQgaGFwcGVucyBu b3cgaWYgeW91CmFzc2lnbiBhIGNwdSB0byBjcmVkaXQyLCBhbmQgdGhlbiBhc3NpZ24gaXQgdG8g YXJpbmM2NTM/ICBTaW5jZSBhcmluYwpkb2Vzbid0IGltcGxlbWVudCB0aGUgc3dpdGNoX3NjaGVk KCkgZnVuY3Rpb25hbGl0eSwgdGhlIHBlci1jcHUKc2NoZWR1bGVyIGxvY2sgd2lsbCBzdGlsbCBw b2ludCB0byB0aGUgY3JlZGl0MiBsb2NrLCB3b24ndCBpdD8KCldoaWNoIHdpbGwgKndvcmsqLCBh bHRob3VnaCBpdCB3aWxsIGFkZCB1bm5lY2Vzc2FyeSBjb250ZW50aW9uIHRvIHRoZQpjcmVkaXQy IGxvY2s7ICB1bnRpbCB0aGUgbG9jayBnb2VzIGF3YXksIGF0IHdoaWNoIHBvaW50CnZjcHVfc2No ZWR1bGVfbG9jayooKSB3aWxsIGVzc2VudGlhbGx5IGJlIHVzaW5nIGEgd2lsZCBwb2ludGVyLgoK IC1HZW9yZ2UKCj4gLS0tCj4gQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0 cml4LmNvbT4KPiBDYzogTWVuZyBYdSA8bWVuZ3h1QGNpcy51cGVubi5lZHU+Cj4gQ2M6IFRpYW55 YW5nIENoZW4gPHRpY2hlQHNlYXMudXBlbm4uZWR1Pgo+IC0tLQo+IENoYW5nZXMgZnJvbSB2MToK PiAKPiBuZXcgcGF0Y2gsIGJhc2ljYWxseSwgY29taW5nIGZyb20gc3F1YXNoaW5nIHdoYXQgd2Vy ZQo+IDQgcGF0Y2hlcyBpbiB2MS4gSW4gYW55IGNhc2UsIHdpdGggcmVzcGVjdCB0byB0aG9zZSA0 Cj4gcGF0Y2hlczoKPiAgLSBydW5xdWV1ZSBsb2NrIGlzIGJhY2sgYmVpbmcgdGFrZW4gaW4gc2No ZWR1bGVfY3B1X3N3aXRjaCgpLAo+ICAgIGFzIHN1Z2dlc3RlZCBkdXJpbmcgcmV2aWV3Owo+ICAt IGFkZCBiYXJyaWVycyBmb3IgbWFraW5nIHN1cmUgYWxsIGluaXRpYWxpemF0aW9uIGlzIGRvbmUK PiAgICB3aGVuIHRoZSBuZXcgbG9jayBpcyBhc3NpZ25lZCwgYXMgc3VnZXN0ZWQgZHVyaW5nIHJl dmlldzsKPiAgLSBhZGQgY29tbWVudHMgYW5kIEFTU0VSVC1zIGFib3V0IGhvdyBhbmQgd2h5IHRo ZSBhZG9wdGVkCj4gICAgbG9ja2luZyBzY2hlbWUgaXMgc2FmZSwgYXMgc3VnZ2VzdGVkIGR1cmlu ZyByZXZpZXcuCj4gLS0tCj4gIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMgIHwgICA0NCArKysr KysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgfCAgIDgx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIHhlbi9jb21t b24vc2NoZWRfcnQuYyAgICAgIHwgICA0NSArKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgeGVu L2NvbW1vbi9zY2hlZHVsZS5jICAgICAgfCAgIDQxICsrKysrKysrKysrKysrKysrLS0tLS0KPiAg eGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmggfCAgICAzICsrCj4gIDUgZmlsZXMgY2hhbmdlZCwg MTcyIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4v Y29tbW9uL3NjaGVkX2NyZWRpdC5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYwo+IGluZGV4 IDk2YTI0NWQuLjU0MGQ1MTUgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQu Ywo+ICsrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKPiBAQCAtNTc4LDEyICs1NzgsNTUg QEAgY3NjaGVkX2luaXRfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpw ZGF0YSwgaW50IGNwdSkKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgICAgIHN0 cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEX1BSSVYob3BzKTsKPiArICAgIHN0cnVj dCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7Cj4gKwo+ ICsgICAgLyoKPiArICAgICAqIFRoaXMgaXMgY2FsbGVkIGVpdGhlciBkdXJpbmcgZHVyaW5nIGJv b3QsIHJlc3VtZSBvciBob3RwbHVnLCBpbgo+ICsgICAgICogY2FzZSBDcmVkaXQxIGlzIHRoZSBz Y2hlZHVsZXIgY2hvc2VuIGF0IGJvb3QuIEluIHN1Y2ggY2FzZXMsIHRoZQo+ICsgICAgICogc2No ZWR1bGVyIGxvY2sgZm9yIGNwdSBpcyBhbHJlYWR5IHBvaW50aW5nIHRvIHRoZSBkZWZhdWx0IHBl ci1jcHUKPiArICAgICAqIHNwaW5sb2NrLCBhcyBDcmVkaXQxIG5lZWRzIGl0LCBzbyB0aGVyZSBp cyBubyByZW1hcHBpbmcgdG8gYmUgZG9uZS4KPiArICAgICAqLwo+ICsgICAgQVNTRVJUKHNkLT5z Y2hlZHVsZV9sb2NrID09ICZzZC0+X2xvY2sgJiYgIXNwaW5faXNfbG9ja2VkKCZzZC0+X2xvY2sp KTsKPiAgCj4gICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFncyk7Cj4gICAg ICBpbml0X3BkYXRhKHBydiwgcGRhdGEsIGNwdSk7Cj4gICAgICBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiArLyogQ2hhbmdlIHRoZSBzY2hlZHVs ZXIgb2YgY3B1IHRvIHVzIChDcmVkaXQpLiAqLwo+ICtzdGF0aWMgdm9pZAo+ICtjc2NoZWRfc3dp dGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdW5zaWduZWQgaW50IGNwdSwKPiArICAg ICAgICAgICAgICAgICAgICB2b2lkICpwZGF0YSwgdm9pZCAqdmRhdGEpCj4gK3sKPiArICAgIHN0 cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7Cj4g KyAgICBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiA9IENTQ0hFRF9QUklWKG9wcyk7Cj4gKyAg ICBzdHJ1Y3QgY3NjaGVkX3ZjcHUgKnN2YyA9IHZkYXRhOwo+ICsKPiArICAgIEFTU0VSVChzdmMg JiYgaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkpOwo+ICsKPiArICAgIGlkbGVfdmNwdVtjcHVdLT5z Y2hlZF9wcml2ID0gdmRhdGE7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFdlIGFyZSBob2xkaW5n IHRoZSBydW5xdWV1ZSBsb2NrIGFscmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBpbgo+ICsgICAgICog c2NoZWR1bGVfY3B1X3N3aXRjaCgpKS4gSXQgYWN0dWFsbHkgbWF5IG9yIG1heSBub3QgYmUgdGhl ICdyaWdodCcKPiArICAgICAqIG9uZSBmb3IgdGhpcyBjcHUsIGJ1dCB0aGF0IGlzIG9rIGZvciBw cmV2ZW50aW5nIHJhY2VzLgo+ICsgICAgICovCj4gKyAgICBzcGluX2xvY2soJnBydi0+bG9jayk7 Cj4gKyAgICBpbml0X3BkYXRhKHBydiwgcGRhdGEsIGNwdSk7Cj4gKyAgICBzcGluX3VubG9jaygm cHJ2LT5sb2NrKTsKPiArCj4gKyAgICBwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSA9IG9wczsKPiAr ICAgIHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gcGRhdGE7Cj4gKwo+ ICsgICAgLyoKPiArICAgICAqIChSZT8pcm91dGUgdGhlIGxvY2sgdG8gdGhlIHBlciBwQ1BVIGxv Y2sgYXMgL2xhc3QvIHRoaW5nLiBJbiBmYWN0LAo+ICsgICAgICogaWYgaXQgaXMgZnJlZSAoYW5k IGl0IGNhbiBiZSkgd2Ugd2FudCB0aGF0IGFueW9uZSB0aGF0IG1hbmFnZXMKPiArICAgICAqIHRh a2luZyBpdCwgZmluZHMgYWxsIHRoZSBpbml0aWFsaXphdGlvbnMgd2UndmUgZG9uZSBhYm92ZSBp biBwbGFjZS4KPiArICAgICAqLwo+ICsgICAgc21wX21iKCk7Cj4gKyAgICBzZC0+c2NoZWR1bGVf bG9jayA9ICZzZC0+X2xvY2s7Cj4gK30KPiArCj4gICNpZm5kZWYgTkRFQlVHCj4gIHN0YXRpYyBp bmxpbmUgdm9pZAo+ICBfX2NzY2hlZF92Y3B1X2NoZWNrKHN0cnVjdCB2Y3B1ICp2YykKPiBAQCAt MjA2Nyw2ICsyMTEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgc2NoZWRfY3Jl ZGl0X2RlZiA9IHsKPiAgICAgIC5hbGxvY19wZGF0YSAgICA9IGNzY2hlZF9hbGxvY19wZGF0YSwK PiAgICAgIC5pbml0X3BkYXRhICAgICA9IGNzY2hlZF9pbml0X3BkYXRhLAo+ICAgICAgLmZyZWVf cGRhdGEgICAgID0gY3NjaGVkX2ZyZWVfcGRhdGEsCj4gKyAgICAuc3dpdGNoX3NjaGVkICAgPSBj c2NoZWRfc3dpdGNoX3NjaGVkLAo+ICAgICAgLmFsbG9jX2RvbWRhdGEgID0gY3NjaGVkX2FsbG9j X2RvbWRhdGEsCj4gICAgICAuZnJlZV9kb21kYXRhICAgPSBjc2NoZWRfZnJlZV9kb21kYXRhLAo+ ICAKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9u L3NjaGVkX2NyZWRpdDIuYwo+IGluZGV4IDg5ODllZWEuLjYwYzZmNWIgMTAwNjQ0Cj4gLS0tIGEv eGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKPiArKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRp dDIuYwo+IEBAIC0xOTcxLDEyICsxOTcxLDEyIEBAIHN0YXRpYyB2b2lkIGRlYWN0aXZhdGVfcnVu cXVldWUoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LCBpbnQgcnFpKQo+ICAgICAgY3B1bWFz a19jbGVhcl9jcHUocnFpLCAmcHJ2LT5hY3RpdmVfcXVldWVzKTsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQKPiArLyogUmV0dXJucyB0aGUgSUQgb2YgdGhlIHJ1bnF1ZXVlIHRoZSBjcHUgaXMgYXNz aWduZWQgdG8uICovCj4gK3N0YXRpYyB1bnNpZ25lZAo+ICBpbml0X3BkYXRhKHN0cnVjdCBjc2No ZWQyX3ByaXZhdGUgKnBydiwgdW5zaWduZWQgaW50IGNwdSkKPiAgewo+ICAgICAgdW5zaWduZWQg cnFpOwo+ICAgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkOwo+IC0gICAgc3Bp bmxvY2tfdCAqb2xkX2xvY2s7Cj4gIAo+ICAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwcnYt PmxvY2spKTsKPiAgICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsICZwcnYtPmluaXRp YWxpemVkKSk7Cj4gQEAgLTIwMDcsNDQgKzIwMDcsODkgQEAgaW5pdF9wZGF0YShzdHJ1Y3QgY3Nj aGVkMl9wcml2YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCj4gICAgICAgICAgYWN0aXZhdGVf cnVucXVldWUocHJ2LCBycWkpOwo+ICAgICAgfQo+ICAgICAgCj4gLSAgICAvKiBJUlFzIGFscmVh ZHkgZGlzYWJsZWQgKi8KPiAtICAgIG9sZF9sb2NrID0gcGNwdV9zY2hlZHVsZV9sb2NrKGNwdSk7 Cj4gLQo+IC0gICAgLyogTW92ZSBzcGlubG9jayB0byBuZXcgcnVucSBsb2NrLiAgKi8KPiAtICAg IHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrID0gJnJxZC0+bG9jazsK PiAtCj4gICAgICAvKiBTZXQgdGhlIHJ1bnF1ZXVlIG1hcCAqLwo+ICAgICAgcHJ2LT5ydW5xX21h cFtjcHVdID0gcnFpOwo+ICAgICAgCj4gICAgICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmcnFkLT5p ZGxlKTsKPiAgICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZycWQtPmFjdGl2ZSk7Cj4gLQo+IC0g ICAgLyogX05vdF8gcGNwdV9zY2hlZHVsZV91bmxvY2soKTogcGVyX2NwdSgpLnNjaGVkdWxlX2xv Y2sgY2hhbmdlZCEgKi8KPiAtICAgIHNwaW5fdW5sb2NrKG9sZF9sb2NrKTsKPiAtCj4gICAgICBj cHVtYXNrX3NldF9jcHUoY3B1LCAmcHJ2LT5pbml0aWFsaXplZCk7Cj4gIAo+IC0gICAgcmV0dXJu Owo+ICsgICAgcmV0dXJuIHJxaTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAgY3NjaGVkMl9p bml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGRhdGEsIGludCBj cHUpCj4gIHsKPiAgICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJ VihvcHMpOwo+ICsgICAgc3BpbmxvY2tfdCAqb2xkX2xvY2s7Cj4gICAgICB1bnNpZ25lZCBsb25n IGZsYWdzOwo+ICsgICAgdW5zaWduZWQgcnFpOwo+ICAKPiAgICAgIHNwaW5fbG9ja19pcnFzYXZl KCZwcnYtPmxvY2ssIGZsYWdzKTsKPiAtICAgIGluaXRfcGRhdGEocHJ2LCBjcHUpOwo+ICsgICAg b2xkX2xvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2soY3B1KTsKPiArCj4gKyAgICBycWkgPSBpbml0 X3BkYXRhKHBydiwgY3B1KTsKPiArICAgIC8qIE1vdmUgdGhlIHNjaGVkdWxlciBsb2NrIHRvIHRo ZSBuZXcgcnVucSBsb2NrLiAqLwo+ICsgICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNj aGVkdWxlX2xvY2sgPSAmcHJ2LT5ycWRbcnFpXS5sb2NrOwo+ICsKPiArICAgIC8qIF9Ob3RfIHBj cHVfc2NoZWR1bGVfdW5sb2NrKCk6IHNjaGVkdWxlX2xvY2sgbWF5IGhhdmUgY2hhbmdlZCEgKi8K PiArICAgIHNwaW5fdW5sb2NrKG9sZF9sb2NrKTsKPiAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnBydi0+bG9jaywgZmxhZ3MpOwo+ICB9Cj4gIAo+ICsvKiBDaGFuZ2UgdGhlIHNjaGVkdWxl ciBvZiBjcHUgdG8gdXMgKENyZWRpdDIpLiAqLwo+ICtzdGF0aWMgdm9pZAo+ICtjc2NoZWQyX3N3 aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1LAo+ ICsgICAgICAgICAgICAgICAgICAgICB2b2lkICpwZGF0YSwgdm9pZCAqdmRhdGEpCj4gK3sKPiAr ICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJVihuZXdfb3BzKTsK PiArICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YyA9IHZkYXRhOwo+ICsgICAgdW5zaWduZWQg cnFpOwo+ICsKPiArICAgIEFTU0VSVCghcGRhdGEgJiYgc3ZjICYmIGlzX2lkbGVfdmNwdShzdmMt PnZjcHUpKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogV2Ugb3duIG9uZSBydW5xdWV1ZSBsb2Nr IGFscmVhZHkgKGZyb20gc2NoZWR1bGVfY3B1X3N3aXRjaCgpKS4gVGhpcwo+ICsgICAgICogbG9v a3MgbGlrZSBpdCB2aW9sYXRlcyB0aGlzIHNjaGVkdWxlcidzIGxvY2tpbmcgcnVsZXMsIGJ1dCBp dCBkb2VzCj4gKyAgICAgKiBub3QsIGFzIHdoYXQgd2Ugb3duIGlzIHRoZSBsb2NrIG9mIGFub3Ro ZXIgc2NoZWR1bGVyLCB0aGF0IGhlbmNlIGhhcwo+ICsgICAgICogbm8gcGFydGljdWxhciAob3Jk ZXJpbmcpIHJlbGF0aW9uc2hpcCB3aXRoIG91ciBwcml2YXRlIGdsb2JhbCBsb2NrLgo+ICsgICAg ICogQW5kIG93bmluZyBleGFjdGx5IHRoYXQgb25lICh0aGUgbG9jayBvZiB0aGUgb2xkIHNjaGVk dWxlciBvZiB0aGlzCj4gKyAgICAgKiBjcHUpIGlzIHdoYXQgaXMgbmVjZXNzYXJ5IHRvIHByZXZl bnQgcmFjZXMuCj4gKyAgICAgKi8KPiArICAgIHNwaW5fbG9ja19pcnEoJnBydi0+bG9jayk7Cj4g Kwo+ICsgICAgaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3ByaXYgPSB2ZGF0YTsKPiArCj4gKyAgICBy cWkgPSBpbml0X3BkYXRhKHBydiwgY3B1KTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogTm93IHRo YXQgd2Uga25vdyB3aGF0IHJ1bnF1ZXVlIHdlJ2xsIGdvIGluLCBkb3VibGUgY2hlY2sgd2hhdCdz IHNhaWQKPiArICAgICAqIGFib3ZlOiB0aGUgbG9jayB3ZSBhbHJlYWR5IGhvbGQgaXMgbm90IHRo ZSBvbmUgb2YgdGhpcyBydW5xdWV1ZSBvZgo+ICsgICAgICogdGhpcyBzY2hlZHVsZXIsIGFuZCBz byBpdCdzIHNhZmUgdG8gaGF2ZSB0YWtlbiBpdCAvYmVmb3JlLyBvdXIKPiArICAgICAqIHByaXZh dGUgZ2xvYmFsIGxvY2suCj4gKyAgICAgKi8KPiArICAgIEFTU0VSVChwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayAhPSAmcHJ2LT5ycWRbcnFpXS5sb2NrKTsKPiArCj4g KyAgICBwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSA9IG5ld19vcHM7Cj4gKyAgICBwZXJfY3B1KHNj aGVkdWxlX2RhdGEsIGNwdSkuc2NoZWRfcHJpdiA9IE5VTEw7IC8qIG5vIHBkYXRhICovCj4gKwo+ ICsgICAgLyoKPiArICAgICAqIChSZT8pcm91dGUgdGhlIGxvY2sgdG8gdGhlIHBlciBwQ1BVIGxv Y2sgYXMgL2xhc3QvIHRoaW5nLiBJbiBmYWN0LAo+ICsgICAgICogaWYgaXQgaXMgZnJlZSAoYW5k IGl0IGNhbiBiZSkgd2Ugd2FudCB0aGF0IGFueW9uZSB0aGF0IG1hbmFnZXMKPiArICAgICAqIHRh a2luZyBpdCwgZmluZCBhbGwgdGhlIGluaXRpYWxpemF0aW9ucyB3ZSd2ZSBkb25lIGFib3ZlIGlu IHBsYWNlLgo+ICsgICAgICovCj4gKyAgICBzbXBfbWIoKTsKPiArICAgIHBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrID0gJnBydi0+cnFkW3JxaV0ubG9jazsKPiArCj4g KyAgICBzcGluX3VubG9ja19pcnEoJnBydi0+bG9jayk7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lk Cj4gIGNzY2hlZDJfZnJlZV9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQg KnBjcHUsIGludCBjcHUpCj4gIHsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAgICBz dHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYob3BzKTsKPiAgICAgIHN0 cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKPiAtICAgIHN0cnVjdCBzY2hlZHVsZV9k YXRhICpzZCA9ICZwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7Cj4gICAgICBpbnQgcnFpOwo+ ICAKPiAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPiBAQCAtMjA3 MiwxMSArMjExNyw2IEBAIGNzY2hlZDJfZnJlZV9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHZvaWQgKnBjcHUsIGludCBjcHUpCj4gICAgICAgICAgZGVhY3RpdmF0ZV9ydW5xdWV1 ZShwcnYsIHJxaSk7Cj4gICAgICB9Cj4gIAo+IC0gICAgLyogTW92ZSBzcGlubG9jayB0byB0aGUg b3JpZ2luYWwgbG9jay4gICovCj4gLSAgICBBU1NFUlQoc2QtPnNjaGVkdWxlX2xvY2sgPT0gJnJx ZC0+bG9jayk7Cj4gLSAgICBBU1NFUlQoIXNwaW5faXNfbG9ja2VkKCZzZC0+X2xvY2spKTsKPiAt ICAgIHNkLT5zY2hlZHVsZV9sb2NrID0gJnNkLT5fbG9jazsKPiAtCj4gICAgICBzcGluX3VubG9j aygmcnFkLT5sb2NrKTsKPiAgCj4gICAgICBjcHVtYXNrX2NsZWFyX2NwdShjcHUsICZwcnYtPmlu aXRpYWxpemVkKTsKPiBAQCAtMjE3MCw2ICsyMjEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgc2NoZWRfY3JlZGl0Ml9kZWYgPSB7Cj4gICAgICAuZnJlZV92ZGF0YSAgICAgPSBj c2NoZWQyX2ZyZWVfdmRhdGEsCj4gICAgICAuaW5pdF9wZGF0YSAgICAgPSBjc2NoZWQyX2luaXRf cGRhdGEsCj4gICAgICAuZnJlZV9wZGF0YSAgICAgPSBjc2NoZWQyX2ZyZWVfcGRhdGEsCj4gKyAg ICAuc3dpdGNoX3NjaGVkICAgPSBjc2NoZWQyX3N3aXRjaF9zY2hlZCwKPiAgICAgIC5hbGxvY19k b21kYXRhICA9IGNzY2hlZDJfYWxsb2NfZG9tZGF0YSwKPiAgICAgIC5mcmVlX2RvbWRhdGEgICA9 IGNzY2hlZDJfZnJlZV9kb21kYXRhLAo+ICB9Owo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3Nj aGVkX3J0LmMgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMKPiBpbmRleCBiOTZiZDkzLi4zYmI4Yzcx IDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYwo+ICsrKyBiL3hlbi9jb21tb24v c2NoZWRfcnQuYwo+IEBAIC02ODIsNiArNjgyLDM3IEBAIHJ0X2luaXRfcGRhdGEoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwZGF0YSwgaW50IGNwdSkKPiAgICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUob2xkX2xvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiArLyogQ2hhbmdlIHRo ZSBzY2hlZHVsZXIgb2YgY3B1IHRvIHVzIChSVERTKS4gKi8KPiArc3RhdGljIHZvaWQKPiArcnRf c3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVuc2lnbmVkIGludCBjcHUs Cj4gKyAgICAgICAgICAgICAgICB2b2lkICpwZGF0YSwgdm9pZCAqdmRhdGEpCj4gK3sKPiArICAg IHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBydF9wcml2KG5ld19vcHMpOwo+ICsgICAgc3RydWN0 IHJ0X3ZjcHUgKnN2YyA9IHZkYXRhOwo+ICsKPiArICAgIEFTU0VSVCghcGRhdGEgJiYgc3ZjICYm IGlzX2lkbGVfdmNwdShzdmMtPnZjcHUpKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogV2UgYXJl IGhvbGRpbmcgdGhlIHJ1bnF1ZXVlIGxvY2sgYWxyZWFkeSAoaXQncyBiZWVuIHRha2VuIGluCj4g KyAgICAgKiBzY2hlZHVsZV9jcHVfc3dpdGNoKCkpLiBJdCdzIGFjdHVhbGx5IHRoZSBydW5xdWV1 ZSBsb2NrIG9mCj4gKyAgICAgKiBhbm90aGVyIHNjaGVkdWxlciwgYnV0IHRoYXQgaXMgaG93IHRo aW5ncyBuZWVkIHRvIGJlLCBmb3IKPiArICAgICAqIHByZXZlbnRpbmcgcmFjZXMuCj4gKyAgICAg Ki8KPiArICAgIEFTU0VSVChwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9j ayAhPSAmcHJ2LT5sb2NrKTsKPiArCj4gKyAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfcHJpdiA9 IHZkYXRhOwo+ICsgICAgcGVyX2NwdShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOwo+ICsgICAg cGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkX3ByaXYgPSBOVUxMOyAvKiBubyBwZGF0 YSAqLwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiAoUmU/KXJvdXRlIHRoZSBsb2NrIHRvIHRoZSBw ZXIgcENQVSBsb2NrIGFzIC9sYXN0LyB0aGluZy4gSW4gZmFjdCwKPiArICAgICAqIGlmIGl0IGlz IGZyZWUgKGFuZCBpdCBjYW4gYmUpIHdlIHdhbnQgdGhhdCBhbnlvbmUgdGhhdCBtYW5hZ2VzCj4g KyAgICAgKiB0YWtpbmcgaXQsIGZpbmQgYWxsIHRoZSBpbml0aWFsaXphdGlvbnMgd2UndmUgZG9u ZSBhYm92ZSBpbiBwbGFjZS4KPiArICAgICAqLwo+ICsgICAgc21wX21iKCk7Cj4gKyAgICBwZXJf Y3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayA9ICZwcnYtPmxvY2s7Cj4gK30K PiArCj4gIHN0YXRpYyB2b2lkICoKPiAgcnRfYWxsb2NfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCBpbnQgY3B1KQo+ICB7Cj4gQEAgLTcwNywxOSArNzM4LDYgQEAgcnRfYWxsb2Nf cGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQo+ICBzdGF0aWMgdm9p ZAo+ICBydF9mcmVlX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGNw dSwgaW50IGNwdSkKPiAgewo+IC0gICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYo b3BzKTsKPiAtICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSk7Cj4gLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtICAgIHNwaW5f bG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKPiAtCj4gLSAgICAvKiBNb3ZlIHNwaW5s b2NrIGJhY2sgdG8gdGhlIGRlZmF1bHQgbG9jayAqLwo+IC0gICAgQVNTRVJUKHNkLT5zY2hlZHVs ZV9sb2NrID09ICZwcnYtPmxvY2spOwo+IC0gICAgQVNTRVJUKCFzcGluX2lzX2xvY2tlZCgmc2Qt Pl9sb2NrKSk7Cj4gLSAgICBzZC0+c2NoZWR1bGVfbG9jayA9ICZzZC0+X2xvY2s7Cj4gLQo+IC0g ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7Cj4gLQo+ICAgICAg ZnJlZV9jcHVtYXNrX3ZhcihfY3B1bWFza19zY3JhdGNoW2NwdV0pOwo+ICB9Cj4gIAo+IEBAIC0x NDY4LDYgKzE0ODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNjaGVkdWxlciBzY2hlZF9ydGRz X2RlZiA9IHsKPiAgICAgIC5hbGxvY19wZGF0YSAgICA9IHJ0X2FsbG9jX3BkYXRhLAo+ICAgICAg LmZyZWVfcGRhdGEgICAgID0gcnRfZnJlZV9wZGF0YSwKPiAgICAgIC5pbml0X3BkYXRhICAgICA9 IHJ0X2luaXRfcGRhdGEsCj4gKyAgICAuc3dpdGNoX3NjaGVkICAgPSBydF9zd2l0Y2hfc2NoZWQs Cj4gICAgICAuYWxsb2NfZG9tZGF0YSAgPSBydF9hbGxvY19kb21kYXRhLAo+ICAgICAgLmZyZWVf ZG9tZGF0YSAgID0gcnRfZnJlZV9kb21kYXRhLAo+ICAgICAgLmluaXRfZG9tYWluICAgID0gcnRf ZG9tX2luaXQsCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWR1bGUuYyBiL3hlbi9jb21t b24vc2NoZWR1bGUuYwo+IGluZGV4IDE5NDE2MTMuLjU1NTlhYTEgMTAwNjQ0Cj4gLS0tIGEveGVu L2NvbW1vbi9zY2hlZHVsZS5jCj4gKysrIGIveGVuL2NvbW1vbi9zY2hlZHVsZS5jCj4gQEAgLTE2 MzUsMTEgKzE2MzUsMTEgQEAgdm9pZCBfX2luaXQgc2NoZWR1bGVyX2luaXQodm9pZCkKPiAgaW50 IHNjaGVkdWxlX2NwdV9zd2l0Y2godW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdXBvb2wgKmMp Cj4gIHsKPiAgICAgIHN0cnVjdCB2Y3B1ICppZGxlOwo+IC0gICAgc3BpbmxvY2tfdCAqbG9jazsK PiAgICAgIHZvaWQgKnBwcml2LCAqcHByaXZfb2xkLCAqdnByaXYsICp2cHJpdl9vbGQ7Cj4gICAg ICBzdHJ1Y3Qgc2NoZWR1bGVyICpvbGRfb3BzID0gcGVyX2NwdShzY2hlZHVsZXIsIGNwdSk7Cj4g ICAgICBzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzID0gKGMgPT0gTlVMTCkgPyAmb3BzIDogYy0+ c2NoZWQ7Cj4gICAgICBzdHJ1Y3QgY3B1cG9vbCAqb2xkX3Bvb2wgPSBwZXJfY3B1KGNwdXBvb2ws IGNwdSk7Cj4gKyAgICBzcGlubG9ja190ICogb2xkX2xvY2s7Cj4gIAo+ICAgICAgLyoKPiAgICAg ICAqIHBDUFVzIG9ubHkgbW92ZSBmcm9tIGEgdmFsaWQgY3B1cG9vbCB0byBmcmVlIChpLmUuLCBv dXQgb2YgYW55IHBvb2wpLAo+IEBAIC0xNjU4LDExICsxNjU4LDIxIEBAIGludCBzY2hlZHVsZV9j cHVfc3dpdGNoKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVwb29sICpjKQo+ICAgICAgaWYg KCBvbGRfb3BzID09IG5ld19vcHMgKQo+ICAgICAgICAgIGdvdG8gb3V0Owo+ICAKPiArICAgIC8q Cj4gKyAgICAgKiBUbyBzZXR1cCB0aGUgY3B1IGZvciB0aGUgbmV3IHNjaGVkdWxlciB3ZSBuZWVk Ogo+ICsgICAgICogIC0gYSB2YWxpZCBpbnN0YW5jZSBvZiBwZXItQ1BVIHNjaGVkdWxlciBzcGVj aWZpYyBkYXRhLCBhcyBpdCBpcwo+ICsgICAgICogICAgYWxsb2NhdGVkIGJ5IFNDSEVEX09QKGFs bG9jX3BkYXRhKS4gTm90ZSB0aGF0IHdlIGRvIG5vdCB3YW50IHRvCj4gKyAgICAgKiAgICBpbml0 aWFsaXplIGl0IHlldCAoaS5lLiwgd2UgYXJlIG5vdCBjYWxsaW5nIFNDSEVEX09QKGluaXRfcGRh dGEpKS4KPiArICAgICAqICAgIFRoYXQgd2lsbCBiZSBkb25lIGJ5IHRoZSB0YXJnZXQgc2NoZWR1 bGVyLCBpbiBTQ0hFRF9PUChzd2l0Y2hfc2NoZWQpLAo+ICsgICAgICogICAgaW4gcHJvcGVyIG9y ZGVyaW5nIGFuZCB3aXRoIGxvY2tpbmcuCj4gKyAgICAgKiAgLSBhIHZhbGlkIGluc3RhbmNlIG9m IHBlci12Q1BVIHNjaGVkdWxlciBzcGVjaWZpYyBkYXRhLCBmb3IgdGhlIGlkbGUKPiArICAgICAq ICAgIHZDUFUgb2YgY3B1LiBUaGF0IGlzIHdoYXQgdGhlIHRhcmdldCBzY2hlZHVsZXIgd2lsbCB1 c2UgZm9yIHRoZQo+ICsgICAgICogICAgc2NoZWRfcHJpdiBmaWVsZCBvZiB0aGUgcGVyLXZDUFUg aW5mbyBvZiB0aGUgaWRsZSBkb21haW4uCj4gKyAgICAgKi8KPiAgICAgIGlkbGUgPSBpZGxlX3Zj cHVbY3B1XTsKPiAgICAgIHBwcml2ID0gU0NIRURfT1AobmV3X29wcywgYWxsb2NfcGRhdGEsIGNw dSk7Cj4gICAgICBpZiAoIElTX0VSUihwcHJpdikgKQo+ICAgICAgICAgIHJldHVybiBQVFJfRVJS KHBwcml2KTsKPiAtICAgIFNDSEVEX09QKG5ld19vcHMsIGluaXRfcGRhdGEsIHBwcml2LCBjcHUp Owo+ICAgICAgdnByaXYgPSBTQ0hFRF9PUChuZXdfb3BzLCBhbGxvY192ZGF0YSwgaWRsZSwgaWRs ZS0+ZG9tYWluLT5zY2hlZF9wcml2KTsKPiAgICAgIGlmICggdnByaXYgPT0gTlVMTCApCj4gICAg ICB7Cj4gQEAgLTE2NzAsMTcgKzE2ODAsMzAgQEAgaW50IHNjaGVkdWxlX2NwdV9zd2l0Y2godW5z aWduZWQgaW50IGNwdSwgc3RydWN0IGNwdXBvb2wgKmMpCj4gICAgICAgICAgcmV0dXJuIC1FTk9N RU07Cj4gICAgICB9Cj4gIAo+IC0gICAgbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9ja19pcnEoY3B1 KTsKPiAtCj4gICAgICBTQ0hFRF9PUChvbGRfb3BzLCB0aWNrX3N1c3BlbmQsIGNwdSk7Cj4gKwo+ ICsgICAgLyoKPiArICAgICAqIFRoZSBhY3R1YWwgc3dpdGNoLCBpbmNsdWRpbmcgKGlmIG5lY2Vz c2FyeSkgdGhlIHJlcm91dGluZyBvZiB0aGUKPiArICAgICAqIHNjaGVkdWxlciBsb2NrIHRvIHdo YXRldmVyIG5ld19vcHMgcHJlZmVycywgIG5lZWRzIHRvIGhhcHBlbiBpbiBvbmUKPiArICAgICAq IGNyaXRpY2FsIHNlY3Rpb24sIHByb3RlY3RlZCBieSBvbGRfb3BzJyBsb2NrLCBvciByYWNlcyBh cmUgcG9zc2libGUuCj4gKyAgICAgKiBJdCBpcywgaW4gZmFjdCwgdGhlIGxvY2sgb2YgYW5vdGhl ciBzY2hlZHVsZXIgdGhhdCB3ZSBhcmUgdGFraW5nICh0aGUKPiArICAgICAqIHNjaGVkdWxlciBv ZiB0aGUgY3B1cG9vbCB0aGF0IGNwdSBzdGlsbCBiZWxvbmdzIHRvKS4gQnV0IHRoYXQgaXMgb2sK PiArICAgICAqIGFzLCBhbnlvbmUgdHJ5aW5nIHRvIHNjaGVkdWxlIG9uIHRoaXMgY3B1IHdpbGwg c3BpbiB1bnRpbCB3aGVuIHdlCj4gKyAgICAgKiByZWxlYXNlIHRoYXQgbG9jayAoYm90dG9tIG9m IHRoaXMgZnVuY3Rpb24pLiBXaGVuIGhlJ2xsIGdldCB0aGUgbG9jawo+ICsgICAgICogLS10aGFu a3MgdG8gdGhlIGxvb3AgaW5zaWRlICpfc2NoZWR1bGVfbG9jaygpIGZ1bmN0aW9ucy0tIGhlJ2xs IG5vdGljZQo+ICsgICAgICogdGhhdCB0aGUgbG9jayBpdHNlbGYgY2hhbmdlZCwgYW5kIHJldHJ5 IGFjcXVpcmluZyB0aGUgbmV3IG9uZSAod2hpY2gKPiArICAgICAqIHdpbGwgYmUgdGhlIGNvcnJl Y3QsIHJlbWFwcGVkIG9uZSwgYXQgdGhhdCBwb2ludCkuCj4gKyAgICAgKi8KPiArICAgIG9sZF9s b2NrID0gcGNwdV9zY2hlZHVsZV9sb2NrKGNwdSk7Cj4gKwo+ICAgICAgdnByaXZfb2xkID0gaWRs ZS0+c2NoZWRfcHJpdjsKPiAtICAgIGlkbGUtPnNjaGVkX3ByaXYgPSB2cHJpdjsKPiAtICAgIHBl cl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKPiAgICAgIHBwcml2X29sZCA9IHBlcl9j cHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2Owo+IC0gICAgcGVyX2NwdShzY2hlZHVs ZV9kYXRhLCBjcHUpLnNjaGVkX3ByaXYgPSBwcHJpdjsKPiAtICAgIFNDSEVEX09QKG5ld19vcHMs IHRpY2tfcmVzdW1lLCBjcHUpOwo+ICsgICAgU0NIRURfT1AobmV3X29wcywgc3dpdGNoX3NjaGVk LCBjcHUsIHBwcml2LCB2cHJpdik7Cj4gIAo+IC0gICAgcGNwdV9zY2hlZHVsZV91bmxvY2tfaXJx KGxvY2ssIGNwdSk7Cj4gKyAgICAvKiBfTm90XyBwY3B1X3NjaGVkdWxlX3VubG9jaygpOiBzY2hl ZHVsZV9sb2NrIG1heSBoYXZlIGNoYW5nZWQhICovCj4gKyAgICBzcGluX3VubG9ja19pcnEob2xk X2xvY2spOwo+ICsKPiArICAgIFNDSEVEX09QKG5ld19vcHMsIHRpY2tfcmVzdW1lLCBjcHUpOwo+ ICAKPiAgICAgIFNDSEVEX09QKG9sZF9vcHMsIGZyZWVfdmRhdGEsIHZwcml2X29sZCk7Cj4gICAg ICBTQ0hFRF9PUChvbGRfb3BzLCBmcmVlX3BkYXRhLCBwcHJpdl9vbGQsIGNwdSk7Cj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oIGIveGVuL2luY2x1ZGUveGVuL3NjaGVk LWlmLmgKPiBpbmRleCA3MGMwOGM2Li45Y2ViZTQxIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRl L3hlbi9zY2hlZC1pZi5oCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmgKPiBAQCAt MTM3LDYgKzEzNyw5IEBAIHN0cnVjdCBzY2hlZHVsZXIgewo+ICAgICAgdm9pZCAgICAgICAgICgq ZnJlZV9kb21kYXRhKSAgIChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICosIHZvaWQgKik7Cj4gICAg ICB2b2lkICogICAgICAgKCphbGxvY19kb21kYXRhKSAgKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Kiwgc3RydWN0IGRvbWFpbiAqKTsKPiAgCj4gKyAgICB2b2lkICAgICAgICAgKCpzd2l0Y2hfc2No ZWQpICAgKHN0cnVjdCBzY2hlZHVsZXIgKiwgdW5zaWduZWQgaW50LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICosIHZvaWQgKik7Cj4gKwo+ICAgICAgaW50ICAg ICAgICAgICgqaW5pdF9kb21haW4pICAgIChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICosIHN0cnVj dCBkb21haW4gKik7Cj4gICAgICB2b2lkICAgICAgICAgKCpkZXN0cm95X2RvbWFpbikgKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKiwgc3RydWN0IGRvbWFpbiAqKTsKPiAgCj4gCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK