From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v3 04/11] xen: sched: close potential races when switching scheduler to CPUs Date: Fri, 08 Apr 2016 03:23:46 +0200 Message-ID: <20160408012345.10762.40393.stgit@Solace.fritz.box> References: <20160408011204.10762.14241.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 1aoL9M-0007md-0v for xen-devel@lists.xenproject.org; Fri, 08 Apr 2016 01:23:52 +0000 Received: by mail-wm0-f67.google.com with SMTP id y144so765373wmd.0 for ; Thu, 07 Apr 2016 18:23:50 -0700 (PDT) In-Reply-To: <20160408011204.10762.14241.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: George Dunlap , Tianyang Chen , Josh Whitehead , Meng Xu , Robert VanVossen List-Id: xen-devel@lists.xenproject.org SW4gc2hvcnQsIHRoZSBwb2ludCBpcyBtYWtpbmcgc3VyZSB0aGF0IHRoZSBhY3R1YWwgc3dpdGNo Cm9mIHNjaGVkdWxlciBhbmQgdGhlIHJlbWFwcGluZyBvZiB0aGUgc2NoZWR1bGVyJ3MgcnVucXVl dWUKbG9jayBvY2N1ciBpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0aW9uLCBwcm90ZWN0ZWQgYnkg dGhlCiJvbGQiIHNjaGVkdWxlcidzIGxvY2sgKGFuZCBub3QsIGUuZy4sIGluIHRoZSBmcmVlX3Bk YXRhCmhvb2ssIGFzIGl0IGlzIG5vdyBmb3IgQ3JlZGl0MiBhbmQgUlREUykuCgpOb3QgZG9pbmcg IHNvLCBpcyAoYXQgbGVhc3QpIHJhY3kuIEluIGZhY3QsIGZvciBpbnN0YW5jZSwKaWYgd2Ugc3dp dGNoIGNwdSBYIGZyb20sIENyZWRpdDIgdG8gQ3JlZGl0LCB3ZSBkbzoKCiBzY2hlZHVsZV9jcHVf c3dpdGNoKHgsIGNzY2hlZDIgLS0+IGNzY2hlZCk6CiAgIC8vc2NoZWR1bGVyW3hdIGlzIGNzY2hl ZDIKICAgLy9zY2hlZHVsZV9sb2NrW3hdIGlzIGNzY2hlZDJfbG9jawogICBjc2NoZWRfYWxsb2Nf cGRhdGEoeCkKICAgY3NjaGVkX2luaXRfcGRhdGEoeCkKICAgcGNwdV9zY2hlZHVsZV9sb2NrKHgp IC0tLS0+IHRha2VzIGNzY2hlZDJfbG9jawogICBzY2hlZHVsZXJbWF0gPSBjc2NoZWQKICAgcGNw dV9zY2hlZHVsZV91bmxvY2soeCkgLS0+IHVubG9ja3MgY3NjaGVkMl9sb2NrCiAgIFsxXQogICBj c2NoZWQyX2ZyZWVfcGRhdGEoeCkKICAgICBwY3B1X3NjaGVkdWxlX2xvY2soeCkgLS0+IHRha2Vz IGNzY2hlZDJfbG9jawogICAgIHNjaGVkdWxlX2xvY2tbeF0gPSBjc2NoZWRfbG9jawogICAgIHNw aW5fdW5sb2NrKGNzY2hlZDJfbG9jaykKCldoaWxlLCBpZiB3ZSBzd2l0Y2ggY3B1IFggZnJvbSwg Q3JlZGl0IHRvIENyZWRpdDIsIHdlIGRvOgoKIHNjaGVkdWxlX2NwdV9zd2l0Y2goWCwgY3NjaGVk IC0tPiBjc2NoZWQyKToKICAgLy9zY2hlZHVsZXJbeF0gaXMgY3NjaGVkCiAgIC8vc2NoZWR1bGVf bG9ja1t4XSBpcyBjc2NoZWRfbG9jawogICBjc2NoZWQyX2FsbG9jX3BkYXRhKHgpCiAgIGNzY2hl ZDJfaW5pdF9wZGF0YSh4KQogICAgIHBjcHVfc2NoZWR1bGVfbG9jayh4KSAtLT4gdGFrZXMgY3Nj aGVkX2xvY2sKICAgICBzY2hlZHVsZV9sb2NrW3hdID0gY3NjaGVkMl9sb2NrCiAgICAgc3Bpbl91 bmxvY2soY3NjaGVkX2xvY2spCiAgIFsyXQogICBwY3B1X3NjaGVkdWxlX2xvY2soeCkgLS0tLT4g dGFrZXMgY3NjaGVkMl9sb2NrCiAgIHNjaGVkdWxlcltYXSA9IGNzY2hlZDIKICAgcGNwdV9zY2hl ZHVsZV91bmxvY2soeCkgLS0+IHVubG9ja3MgY3NjaGVkMl9sb2NrCiAgIGNzY2hlZF9mcmVlX3Bk YXRhKHgpCgpBbmQgaWYgd2Ugc3dpdGNoIGNwdSBYIGZyb20gUlREUyB0byBDcmVkaXQyLCB3ZSBk bzoKCiBzY2hlZHVsZV9jcHVfc3dpdGNoKFgsIFJURFMgLS0+IGNzY2hlZDIpOgogICAvL3NjaGVk dWxlclt4XSBpcyBydGRzCiAgIC8vc2NoZWR1bGVfbG9ja1t4XSBpcyBydGRzX2xvY2sKICAgY3Nj aGVkMl9hbGxvY19wZGF0YSh4KQogICBjc2NoZWQyX2luaXRfcGRhdGEoeCkKICAgICBwY3B1X3Nj aGVkdWxlX2xvY2soeCkgLS0+IHRha2VzIHJ0ZHNfbG9jawogICAgIHNjaGVkdWxlX2xvY2tbeF0g PSBjc2NoZWQyX2xvY2sKICAgICBzcGluX3VubG9jayhydGRzX2xvY2spCiAgIHBjcHVfc2NoZWR1 bGVfbG9jayh4KSAtLS0tPiB0YWtlcyBjc2NoZWQyX2xvY2sKICAgc2NoZWR1bGVyW3hdID0gY3Nj aGVkMgogICBwY3B1X3NjaGVkdWxlX3VubG9jayh4KSAtLT4gdW5sb2NrcyBjc2NoZWQyX2xvY2sK ICAgcnRkc19mcmVlX3BkYXRhKHgpCiAgICAgc3Bpbl9sb2NrKHJ0ZHNfbG9jaykKICAgICBBU1NF UlQoc2NoZWR1bGVfbG9ja1t4XSA9PSBydGRzX2xvY2spIFszXQogICAgIHNjaGVkdWxlX2xvY2tb eF0gPSBERUZBVUxUX1NDSEVEVUxFX0xPQ0sgWzRdCiAgICAgc3Bpbl91bmxvY2socnRkc19sb2Nr KQoKU28sIHRoZSBmaXJzdCBwcm9ibGVtIGlzIHRoYXQsIGlmIGFueXRoaW5nIHJlbGF0ZWQgdG8K c2NoZWR1bGluZywgYW5kIGludm9sdmluZyBDUFUsIGhhcHBlbnMgYXQgWzFdIG9yIFsyXSwgd2U6 CiAtIHRha2UgY3NjaGVkMl9sb2NrLAogLSBvcGVyYXRlIG9uIENyZWRpdDEgZnVuY3Rpb25zIGFu ZCBkYXRhIHN0cnVjdHVyZXMsCndoaWNoIGlzIG5vIGdvb2QhCgpUaGUgc2Vjb25kIHByb2JsZW0g aXMgdGhhdCB0aGUgQVNTRVJUIGF0IFszXSB0cmlnZ2VycywgYW5kCnRoZSB0aGlyZCB0aGF0IGF0 IFs0XSwgd2Ugc2NyZXcgdXAgdGhlIGxvY2sgcmVtYXBwaW5nIHdlJ3ZlCmRvbmUgZm9yIG91cnNl bGYgaW4gY3NjaGVkMl9pbml0X3BkYXRhKCkhCgpUaGUgZmlyc3QgcHJvYmxlbSBhcmlzZXMgYmVj YXVzZSB0aGVyZSBpcyBhIHdpbmRvdyBkdXJpbmcKd2hpY2ggdGhlIGxvY2sgaXMgYWxyZWFkeSB0 aGUgbmV3IG9uZSwgYnV0IHRoZSBzY2hlZHVsZXIgaXMKc3RpbGwgdGhlIG9sZCBvbmUuIFRoZSBv dGhlciB0d28sIGJlY2FzZSB3ZSBsZXQgc2NoZWR1bGVycwptZXNzIHdpdGggdGhlIGxvY2sgKHJl KW1hcHBpbmcgZG9uZSBieSBvdGhlcnMuCgpUaGlzIHBhdGNoLCB0aGVyZWZvcmUsIGludHJvZHVj ZXMgYSBuZXcgaG9vayBpbiB0aGUgc2NoZWR1bGVyCmludGVyZmFjZSwgY2FsbGVkIHN3aXRjaF9z Y2hlZCwgbWVhbnQgYXQgYmVpbmcgdXNlZCB3aGVuCnN3aXRjaGluZyBzY2hlZHVsZXIgb24gYSBD UFUsIGFuZCBpbXBsZW1lbnRzIGl0IGZvciB0aGUKdmFyaW91cyBzY2hlZHVsZXJzLCBzbyB0aGF0 IHRoaW5ncyBhcmUgZG9uZSBpbiB0aGUgcHJvcGVyCm9yZGVyIGFuZCB1bmRlciB0aGUgcHJvdGVj dGlvbiBvZiB0aGUgYmVzdCBzdWl0ZWQgKHNldCBvZikKbG9jayhzKS4gSXQgaXMgbmVjZXNzYXJ5 IHRvIGFkZCB0aGUgaG9vayAoYXMgY29tcGFyZWQgdG8Ka2VlcCBkb2luZyB0aGluZ3MgaW4gZ2Vu ZXJpYyBjb2RlKSwgYmVjYXVzZSBkaWZmZXJlbnQKc2NoZWR1bGVycyBtYXkgaGF2ZSBkaWZmZXJl bnQgbG9ja2luZyBzY2hlbWVzLgoKU2lnbmVkLW9mZi1ieTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlv LmZhZ2dpb2xpQGNpdHJpeC5jb20+Ci0tLQpDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxh cEBldS5jaXRyaXguY29tPgpDYzogSm9zaCBXaGl0ZWhlYWQgPGpvc2gud2hpdGVoZWFkQGRvcm5l cndvcmtzLmNvbT4KQ2M6IFJvYmVydCBWYW5Wb3NzZW4gPHJvYmVydC52YW52b3NzZW5AZG9ybmVy d29ya3MuY29tPgpDYzogTWVuZyBYdSA8bWVuZ3h1QGNpcy51cGVubi5lZHU+CkNjOiBUaWFueWFu ZyBDaGVuIDx0aWNoZUBzZWFzLnVwZW5uLmVkdT4KLS0tCkNoYW5nZXMgZnJvbSB2MjoKIC0gdGhl IGhvb2sgaXMgaW1wbGVtZW50ZWQgaW4gQVJJTkM2NTMgdG9vLCBhcyBuZWNlc3NhcnkgYW5kCiAg IGFzIHJlcXVlc3RlZCBkdXJpbmcgcmV2aWV3LgoKQ2hhbmdlcyBmcm9tIHYxOgoKbmV3IHBhdGNo LCBiYXNpY2FsbHksIGNvbWluZyBmcm9tIHNxdWFzaGluZyB3aGF0IHdlcmUKNCBwYXRjaGVzIGlu IHYxLiBJbiBhbnkgY2FzZSwgd2l0aCByZXNwZWN0IHRvIHRob3NlIDQKcGF0Y2hlczoKIC0gcnVu cXVldWUgbG9jayBpcyBiYWNrIGJlaW5nIHRha2VuIGluIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSwK ICAgYXMgc3VnZ2VzdGVkIGR1cmluZyByZXZpZXc7CiAtIGFkZCBiYXJyaWVycyBmb3IgbWFraW5n IHN1cmUgYWxsIGluaXRpYWxpemF0aW9uIGlzIGRvbmUKICAgd2hlbiB0aGUgbmV3IGxvY2sgaXMg YXNzaWduZWQsIGFzIHN1Z2VzdGVkIGR1cmluZyByZXZpZXc7CiAtIGFkZCBjb21tZW50cyBhbmQg QVNTRVJULXMgYWJvdXQgaG93IGFuZCB3aHkgdGhlIGFkb3B0ZWQKICAgbG9ja2luZyBzY2hlbWUg aXMgc2FmZSwgYXMgc3VnZ2VzdGVkIGR1cmluZyByZXZpZXcuCi0tLQogeGVuL2NvbW1vbi9zY2hl ZF9hcmluYzY1My5jIHwgICAzNCArKysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24vc2NoZWRf Y3JlZGl0LmMgICB8ICAgNDQgKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24vc2No ZWRfY3JlZGl0Mi5jICB8ICAgODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLQogeGVuL2NvbW1vbi9zY2hlZF9ydC5jICAgICAgIHwgICA0NSArKysrKysrKysrKysr KysrKy0tLS0tLS0KIHhlbi9jb21tb24vc2NoZWR1bGUuYyAgICAgICB8ICAgNDEgKysrKysrKysr KysrKysrKystLS0tLQogeGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmggIHwgICAgMyArKwogNiBm aWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9zY2hlZF9hcmluYzY1My5jIGIveGVuL2NvbW1vbi9zY2hlZF9hcmlu YzY1My5jCmluZGV4IGI3OWZjZGYuLmViZDIwOTAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2No ZWRfYXJpbmM2NTMuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX2FyaW5jNjUzLmMKQEAgLTY1Miw2 ICs2NTIsMzggQEAgYTY1M3NjaGVkX3BpY2tfY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHZjcHUgKnZjKQogfQogCiAvKioKKyAqIFhlbiBzY2hlZHVsZXIgY2FsbGJhY2sg dG8gY2hhbmdlIHRoZSBzY2hlZHVsZXIgb2YgYSBjcHUKKyAqCisgKiBAcGFyYW0gbmV3X29wcyAg IFBvaW50ZXIgdG8gdGhpcyBpbnN0YW5jZSBvZiB0aGUgc2NoZWR1bGVyIHN0cnVjdHVyZQorICog QHBhcmFtIGNwdSAgICAgICBUaGUgY3B1IHRoYXQgaXMgY2hhbmdpbmcgc2NoZWR1bGVyCisgKiBA cGFyYW0gcGRhdGEgICAgIHNjaGVkdWxlciBzcGVjaWZpYyBQQ1BVIGRhdGEgKHdlIGRvbid0IGhh dmUgYW55KQorICogQHBhcmFtIHZkYXRhICAgICBzY2hlZHVsZXIgc3BlY2lmaWMgVkNQVSBkYXRh IG9mIHRoZSBpZGxlIHZjcHUKKyAqLworc3RhdGljIHZvaWQKK2E2NTNfc3dpdGNoX3NjaGVkKHN0 cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVuc2lnbmVkIGludCBjcHUsCisgICAgICAgICAgICAg ICAgICB2b2lkICpwZGF0YSwgdm9pZCAqdmRhdGEpCit7CisgICAgc3RydWN0IHNjaGVkdWxlX2Rh dGEgKnNkID0gJnBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KTsKKyAgICBhcmluYzY1M192Y3B1 X3QgKnN2YyA9IHZkYXRhOworCisgICAgQVNTRVJUKCFwZGF0YSAmJiBzdmMgJiYgaXNfaWRsZV92 Y3B1KHN2Yy0+dmMpKTsKKworICAgIGlkbGVfdmNwdVtjcHVdLT5zY2hlZF9wcml2ID0gdmRhdGE7 CisKKyAgICBwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSA9IG5ld19vcHM7CisgICAgcGVyX2NwdShz Y2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkX3ByaXYgPSBOVUxMOyAvKiBubyBwZGF0YSAqLworCisg ICAgLyoKKyAgICAgKiAoUmU/KXJvdXRlIHRoZSBsb2NrIHRvIGl0cyBkZWZhdWx0IGxvY2F0aW9u LiBXZSBhY3R1YWxseSBkbyBub3QgdXNlCisgICAgICogaXQsIGJ1dCBpZiB3ZSBsZWF2ZSBpdCBw b2ludGluZyB0byB3aGVyZSBpdCBkb2VzIG5vdyAoaS5lLiwgdGhlCisgICAgICogcnVucXVldWUg bG9jayBmb3IgdGhpcyBQQ1BVIGluIHRoZSBkZWZhdWx0IHNjaGVkdWxlciksIHdlJ2QgYmUKKyAg ICAgKiBjYXVzaW5nIHVubmVjZXNzYXJ5IGNvbnRlbnRpb24gb24gdGhhdCBsb2NrIChpbiBjYXNl cyB3aGVyZSBpdCBpcworICAgICAqIHNoYXJlZCBhbW9uZyBtdWx0aXBsZSBQQ1BVcywgbGlrZSBp biBDcmVkaXQyIGFuZCBSVERTKS4KKyAgICAgKi8KKyAgICBzZC0+c2NoZWR1bGVfbG9jayA9ICZz ZC0+X2xvY2s7Cit9CisKKy8qKgogICogWGVuIHNjaGVkdWxlciBjYWxsYmFjayBmdW5jdGlvbiB0 byBwZXJmb3JtIGEgZ2xvYmFsIChub3QgZG9tYWluLXNwZWNpZmljKQogICogYWRqdXN0bWVudC4g SXQgaXMgdXNlZCBieSB0aGUgQVJJTkMgNjUzIHNjaGVkdWxlciB0byBwdXQgaW4gcGxhY2UgYSBu ZXcKICAqIEFSSU5DIDY1MyBzY2hlZHVsZSBvciB0byByZXRyaWV2ZSB0aGUgc2NoZWR1bGUgY3Vy cmVudGx5IGluIHBsYWNlLgpAQCAtNzI3LDYgKzc1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyIHNjaGVkX2FyaW5jNjUzX2RlZiA9IHsKIAogICAgIC5waWNrX2NwdSAgICAgICA9 IGE2NTNzY2hlZF9waWNrX2NwdSwKIAorICAgIC5zd2l0Y2hfc2NoZWQgICA9IGE2NTNfc3dpdGNo X3NjaGVkLAorCiAgICAgLmFkanVzdCAgICAgICAgID0gTlVMTCwKICAgICAuYWRqdXN0X2dsb2Jh bCAgPSBhNjUzc2NoZWRfYWRqdXN0X2dsb2JhbCwKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9z Y2hlZF9jcmVkaXQuYyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKaW5kZXggOTZhMjQ1ZC4u NDkwZjEwYiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYworKysgYi94ZW4v Y29tbW9uL3NjaGVkX2NyZWRpdC5jCkBAIC01NzgsMTIgKzU3OCw1NSBAQCBjc2NoZWRfaW5pdF9w ZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBkYXRhLCBpbnQgY3B1KQog ewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGNzY2hlZF9wcml2YXRlICpw cnYgPSBDU0NIRURfUFJJVihvcHMpOworICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZw ZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7CisKKyAgICAvKgorICAgICAqIFRoaXMgaXMgY2Fs bGVkIGVpdGhlciBkdXJpbmcgZHVyaW5nIGJvb3QsIHJlc3VtZSBvciBob3RwbHVnLCBpbgorICAg ICAqIGNhc2UgQ3JlZGl0MSBpcyB0aGUgc2NoZWR1bGVyIGNob3NlbiBhdCBib290LiBJbiBzdWNo IGNhc2VzLCB0aGUKKyAgICAgKiBzY2hlZHVsZXIgbG9jayBmb3IgY3B1IGlzIGFscmVhZHkgcG9p bnRpbmcgdG8gdGhlIGRlZmF1bHQgcGVyLWNwdQorICAgICAqIHNwaW5sb2NrLCBhcyBDcmVkaXQx IG5lZWRzIGl0LCBzbyB0aGVyZSBpcyBubyByZW1hcHBpbmcgdG8gYmUgZG9uZS4KKyAgICAgKi8K KyAgICBBU1NFUlQoc2QtPnNjaGVkdWxlX2xvY2sgPT0gJnNkLT5fbG9jayAmJiAhc3Bpbl9pc19s b2NrZWQoJnNkLT5fbG9jaykpOwogCiAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywg ZmxhZ3MpOwogICAgIGluaXRfcGRhdGEocHJ2LCBwZGF0YSwgY3B1KTsKICAgICBzcGluX3VubG9j a19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIH0KIAorLyogQ2hhbmdlIHRoZSBzY2hl ZHVsZXIgb2YgY3B1IHRvIHVzIChDcmVkaXQpLiAqLworc3RhdGljIHZvaWQKK2NzY2hlZF9zd2l0 Y2hfc2NoZWQoc3RydWN0IHNjaGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKKyAg ICAgICAgICAgICAgICAgICAgdm9pZCAqcGRhdGEsIHZvaWQgKnZkYXRhKQoreworICAgIHN0cnVj dCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSk7CisgICAg c3RydWN0IGNzY2hlZF9wcml2YXRlICpwcnYgPSBDU0NIRURfUFJJVihuZXdfb3BzKTsKKyAgICBz dHJ1Y3QgY3NjaGVkX3ZjcHUgKnN2YyA9IHZkYXRhOworCisgICAgQVNTRVJUKHN2YyAmJiBpc19p ZGxlX3ZjcHUoc3ZjLT52Y3B1KSk7CisKKyAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfcHJpdiA9 IHZkYXRhOworCisgICAgLyoKKyAgICAgKiBXZSBhcmUgaG9sZGluZyB0aGUgcnVucXVldWUgbG9j ayBhbHJlYWR5IChpdCdzIGJlZW4gdGFrZW4gaW4KKyAgICAgKiBzY2hlZHVsZV9jcHVfc3dpdGNo KCkpLiBJdCBhY3R1YWxseSBtYXkgb3IgbWF5IG5vdCBiZSB0aGUgJ3JpZ2h0JworICAgICAqIG9u ZSBmb3IgdGhpcyBjcHUsIGJ1dCB0aGF0IGlzIG9rIGZvciBwcmV2ZW50aW5nIHJhY2VzLgorICAg ICAqLworICAgIHNwaW5fbG9jaygmcHJ2LT5sb2NrKTsKKyAgICBpbml0X3BkYXRhKHBydiwgcGRh dGEsIGNwdSk7CisgICAgc3Bpbl91bmxvY2soJnBydi0+bG9jayk7CisKKyAgICBwZXJfY3B1KHNj aGVkdWxlciwgY3B1KSA9IG5ld19vcHM7CisgICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUp LnNjaGVkX3ByaXYgPSBwZGF0YTsKKworICAgIC8qCisgICAgICogKFJlPylyb3V0ZSB0aGUgbG9j ayB0byB0aGUgcGVyIHBDUFUgbG9jayBhcyAvbGFzdC8gdGhpbmcuIEluIGZhY3QsCisgICAgICog aWYgaXQgaXMgZnJlZSAoYW5kIGl0IGNhbiBiZSkgd2Ugd2FudCB0aGF0IGFueW9uZSB0aGF0IG1h bmFnZXMKKyAgICAgKiB0YWtpbmcgaXQsIGZpbmRzIGFsbCB0aGUgaW5pdGlhbGl6YXRpb25zIHdl J3ZlIGRvbmUgYWJvdmUgaW4gcGxhY2UuCisgICAgICovCisgICAgc21wX21iKCk7CisgICAgc2Qt PnNjaGVkdWxlX2xvY2sgPSAmc2QtPl9sb2NrOworfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGlj IGlubGluZSB2b2lkCiBfX2NzY2hlZF92Y3B1X2NoZWNrKHN0cnVjdCB2Y3B1ICp2YykKQEAgLTIw NjcsNiArMjExMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX2NyZWRp dF9kZWYgPSB7CiAgICAgLmFsbG9jX3BkYXRhICAgID0gY3NjaGVkX2FsbG9jX3BkYXRhLAogICAg IC5pbml0X3BkYXRhICAgICA9IGNzY2hlZF9pbml0X3BkYXRhLAogICAgIC5mcmVlX3BkYXRhICAg ICA9IGNzY2hlZF9mcmVlX3BkYXRhLAorICAgIC5zd2l0Y2hfc2NoZWQgICA9IGNzY2hlZF9zd2l0 Y2hfc2NoZWQsCiAgICAgLmFsbG9jX2RvbWRhdGEgID0gY3NjaGVkX2FsbG9jX2RvbWRhdGEsCiAg ICAgLmZyZWVfZG9tZGF0YSAgID0gY3NjaGVkX2ZyZWVfZG9tZGF0YSwKIApkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwpp bmRleCA4OTg5ZWVhLi42MGM2ZjViIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRp dDIuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwpAQCAtMTk3MSwxMiArMTk3MSwx MiBAQCBzdGF0aWMgdm9pZCBkZWFjdGl2YXRlX3J1bnF1ZXVlKHN0cnVjdCBjc2NoZWQyX3ByaXZh dGUgKnBydiwgaW50IHJxaSkKICAgICBjcHVtYXNrX2NsZWFyX2NwdShycWksICZwcnYtPmFjdGl2 ZV9xdWV1ZXMpOwogfQogCi1zdGF0aWMgdm9pZAorLyogUmV0dXJucyB0aGUgSUQgb2YgdGhlIHJ1 bnF1ZXVlIHRoZSBjcHUgaXMgYXNzaWduZWQgdG8uICovCitzdGF0aWMgdW5zaWduZWQKIGluaXRf cGRhdGEoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1KQogewog ICAgIHVuc2lnbmVkIHJxaTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7 Ci0gICAgc3BpbmxvY2tfdCAqb2xkX2xvY2s7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQo JnBydi0+bG9jaykpOwogICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsICZwcnYtPmlu aXRpYWxpemVkKSk7CkBAIC0yMDA3LDQ0ICsyMDA3LDg5IEBAIGluaXRfcGRhdGEoc3RydWN0IGNz Y2hlZDJfcHJpdmF0ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1KQogICAgICAgICBhY3RpdmF0ZV9y dW5xdWV1ZShwcnYsIHJxaSk7CiAgICAgfQogICAgIAotICAgIC8qIElSUXMgYWxyZWFkeSBkaXNh YmxlZCAqLwotICAgIG9sZF9sb2NrID0gcGNwdV9zY2hlZHVsZV9sb2NrKGNwdSk7Ci0KLSAgICAv KiBNb3ZlIHNwaW5sb2NrIHRvIG5ldyBydW5xIGxvY2suICAqLwotICAgIHBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrID0gJnJxZC0+bG9jazsKLQogICAgIC8qIFNldCB0 aGUgcnVucXVldWUgbWFwICovCiAgICAgcHJ2LT5ydW5xX21hcFtjcHVdID0gcnFpOwogICAgIAog ICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZycWQtPmlkbGUpOwogICAgIGNwdW1hc2tfc2V0X2Nw dShjcHUsICZycWQtPmFjdGl2ZSk7Ci0KLSAgICAvKiBfTm90XyBwY3B1X3NjaGVkdWxlX3VubG9j aygpOiBwZXJfY3B1KCkuc2NoZWR1bGVfbG9jayBjaGFuZ2VkISAqLwotICAgIHNwaW5fdW5sb2Nr KG9sZF9sb2NrKTsKLQogICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZwcnYtPmluaXRpYWxpemVk KTsKIAotICAgIHJldHVybjsKKyAgICByZXR1cm4gcnFpOwogfQogCiBzdGF0aWMgdm9pZAogY3Nj aGVkMl9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGRhdGEs IGludCBjcHUpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9Q UklWKG9wcyk7CisgICAgc3BpbmxvY2tfdCAqb2xkX2xvY2s7CiAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKKyAgICB1bnNpZ25lZCBycWk7CiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5s b2NrLCBmbGFncyk7Ci0gICAgaW5pdF9wZGF0YShwcnYsIGNwdSk7CisgICAgb2xkX2xvY2sgPSBw Y3B1X3NjaGVkdWxlX2xvY2soY3B1KTsKKworICAgIHJxaSA9IGluaXRfcGRhdGEocHJ2LCBjcHUp OworICAgIC8qIE1vdmUgdGhlIHNjaGVkdWxlciBsb2NrIHRvIHRoZSBuZXcgcnVucSBsb2NrLiAq LworICAgIHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrID0gJnBydi0+ cnFkW3JxaV0ubG9jazsKKworICAgIC8qIF9Ob3RfIHBjcHVfc2NoZWR1bGVfdW5sb2NrKCk6IHNj aGVkdWxlX2xvY2sgbWF5IGhhdmUgY2hhbmdlZCEgKi8KKyAgICBzcGluX3VubG9jayhvbGRfbG9j ayk7CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7CiB9CiAK Ky8qIENoYW5nZSB0aGUgc2NoZWR1bGVyIG9mIGNwdSB0byB1cyAoQ3JlZGl0MikuICovCitzdGF0 aWMgdm9pZAorY3NjaGVkMl9zd2l0Y2hfc2NoZWQoc3RydWN0IHNjaGVkdWxlciAqbmV3X29wcywg dW5zaWduZWQgaW50IGNwdSwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBkYXRhLCB2b2lk ICp2ZGF0YSkKK3sKKyAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BS SVYobmV3X29wcyk7CisgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqc3ZjID0gdmRhdGE7CisgICAg dW5zaWduZWQgcnFpOworCisgICAgQVNTRVJUKCFwZGF0YSAmJiBzdmMgJiYgaXNfaWRsZV92Y3B1 KHN2Yy0+dmNwdSkpOworCisgICAgLyoKKyAgICAgKiBXZSBvd24gb25lIHJ1bnF1ZXVlIGxvY2sg YWxyZWFkeSAoZnJvbSBzY2hlZHVsZV9jcHVfc3dpdGNoKCkpLiBUaGlzCisgICAgICogbG9va3Mg bGlrZSBpdCB2aW9sYXRlcyB0aGlzIHNjaGVkdWxlcidzIGxvY2tpbmcgcnVsZXMsIGJ1dCBpdCBk b2VzCisgICAgICogbm90LCBhcyB3aGF0IHdlIG93biBpcyB0aGUgbG9jayBvZiBhbm90aGVyIHNj aGVkdWxlciwgdGhhdCBoZW5jZSBoYXMKKyAgICAgKiBubyBwYXJ0aWN1bGFyIChvcmRlcmluZykg cmVsYXRpb25zaGlwIHdpdGggb3VyIHByaXZhdGUgZ2xvYmFsIGxvY2suCisgICAgICogQW5kIG93 bmluZyBleGFjdGx5IHRoYXQgb25lICh0aGUgbG9jayBvZiB0aGUgb2xkIHNjaGVkdWxlciBvZiB0 aGlzCisgICAgICogY3B1KSBpcyB3aGF0IGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHJhY2VzLgor ICAgICAqLworICAgIHNwaW5fbG9ja19pcnEoJnBydi0+bG9jayk7CisKKyAgICBpZGxlX3ZjcHVb Y3B1XS0+c2NoZWRfcHJpdiA9IHZkYXRhOworCisgICAgcnFpID0gaW5pdF9wZGF0YShwcnYsIGNw dSk7CisKKyAgICAvKgorICAgICAqIE5vdyB0aGF0IHdlIGtub3cgd2hhdCBydW5xdWV1ZSB3ZSds bCBnbyBpbiwgZG91YmxlIGNoZWNrIHdoYXQncyBzYWlkCisgICAgICogYWJvdmU6IHRoZSBsb2Nr IHdlIGFscmVhZHkgaG9sZCBpcyBub3QgdGhlIG9uZSBvZiB0aGlzIHJ1bnF1ZXVlIG9mCisgICAg ICogdGhpcyBzY2hlZHVsZXIsIGFuZCBzbyBpdCdzIHNhZmUgdG8gaGF2ZSB0YWtlbiBpdCAvYmVm b3JlLyBvdXIKKyAgICAgKiBwcml2YXRlIGdsb2JhbCBsb2NrLgorICAgICAqLworICAgIEFTU0VS VChwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayAhPSAmcHJ2LT5ycWRb cnFpXS5sb2NrKTsKKworICAgIHBlcl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKKyAg ICBwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWRfcHJpdiA9IE5VTEw7IC8qIG5vIHBk YXRhICovCisKKyAgICAvKgorICAgICAqIChSZT8pcm91dGUgdGhlIGxvY2sgdG8gdGhlIHBlciBw Q1BVIGxvY2sgYXMgL2xhc3QvIHRoaW5nLiBJbiBmYWN0LAorICAgICAqIGlmIGl0IGlzIGZyZWUg KGFuZCBpdCBjYW4gYmUpIHdlIHdhbnQgdGhhdCBhbnlvbmUgdGhhdCBtYW5hZ2VzCisgICAgICog dGFraW5nIGl0LCBmaW5kIGFsbCB0aGUgaW5pdGlhbGl6YXRpb25zIHdlJ3ZlIGRvbmUgYWJvdmUg aW4gcGxhY2UuCisgICAgICovCisgICAgc21wX21iKCk7CisgICAgcGVyX2NwdShzY2hlZHVsZV9k YXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgPSAmcHJ2LT5ycWRbcnFpXS5sb2NrOworCisgICAgc3Bp bl91bmxvY2tfaXJxKCZwcnYtPmxvY2spOworfQorCiBzdGF0aWMgdm9pZAogY3NjaGVkMl9mcmVl X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkK IHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUg KnBydiA9IENTQ0hFRDJfUFJJVihvcHMpOwogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2Rh dGEgKnJxZDsKLSAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqc2QgPSAmcGVyX2NwdShzY2hlZHVs ZV9kYXRhLCBjcHUpOwogICAgIGludCBycWk7CiAKICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJ2 LT5sb2NrLCBmbGFncyk7CkBAIC0yMDcyLDExICsyMTE3LDYgQEAgY3NjaGVkMl9mcmVlX3BkYXRh KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkKICAgICAg ICAgZGVhY3RpdmF0ZV9ydW5xdWV1ZShwcnYsIHJxaSk7CiAgICAgfQogCi0gICAgLyogTW92ZSBz cGlubG9jayB0byB0aGUgb3JpZ2luYWwgbG9jay4gICovCi0gICAgQVNTRVJUKHNkLT5zY2hlZHVs ZV9sb2NrID09ICZycWQtPmxvY2spOwotICAgIEFTU0VSVCghc3Bpbl9pc19sb2NrZWQoJnNkLT5f bG9jaykpOwotICAgIHNkLT5zY2hlZHVsZV9sb2NrID0gJnNkLT5fbG9jazsKLQogICAgIHNwaW5f dW5sb2NrKCZycWQtPmxvY2spOwogCiAgICAgY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmcHJ2LT5p bml0aWFsaXplZCk7CkBAIC0yMTcwLDYgKzIyMTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNj aGVkdWxlciBzY2hlZF9jcmVkaXQyX2RlZiA9IHsKICAgICAuZnJlZV92ZGF0YSAgICAgPSBjc2No ZWQyX2ZyZWVfdmRhdGEsCiAgICAgLmluaXRfcGRhdGEgICAgID0gY3NjaGVkMl9pbml0X3BkYXRh LAogICAgIC5mcmVlX3BkYXRhICAgICA9IGNzY2hlZDJfZnJlZV9wZGF0YSwKKyAgICAuc3dpdGNo X3NjaGVkICAgPSBjc2NoZWQyX3N3aXRjaF9zY2hlZCwKICAgICAuYWxsb2NfZG9tZGF0YSAgPSBj c2NoZWQyX2FsbG9jX2RvbWRhdGEsCiAgICAgLmZyZWVfZG9tZGF0YSAgID0gY3NjaGVkMl9mcmVl X2RvbWRhdGEsCiB9OwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5jIGIveGVuL2Nv bW1vbi9zY2hlZF9ydC5jCmluZGV4IGI5NmJkOTMuLjNiYjhjNzEgMTAwNjQ0Ci0tLSBhL3hlbi9j b21tb24vc2NoZWRfcnQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0LmMKQEAgLTY4Miw2ICs2 ODIsMzcgQEAgcnRfaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQg KnBkYXRhLCBpbnQgY3B1KQogICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUob2xkX2xvY2ssIGZs YWdzKTsKIH0KIAorLyogQ2hhbmdlIHRoZSBzY2hlZHVsZXIgb2YgY3B1IHRvIHVzIChSVERTKS4g Ki8KK3N0YXRpYyB2b2lkCitydF9zd2l0Y2hfc2NoZWQoc3RydWN0IHNjaGVkdWxlciAqbmV3X29w cywgdW5zaWduZWQgaW50IGNwdSwKKyAgICAgICAgICAgICAgICB2b2lkICpwZGF0YSwgdm9pZCAq dmRhdGEpCit7CisgICAgc3RydWN0IHJ0X3ByaXZhdGUgKnBydiA9IHJ0X3ByaXYobmV3X29wcyk7 CisgICAgc3RydWN0IHJ0X3ZjcHUgKnN2YyA9IHZkYXRhOworCisgICAgQVNTRVJUKCFwZGF0YSAm JiBzdmMgJiYgaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkpOworCisgICAgLyoKKyAgICAgKiBXZSBh cmUgaG9sZGluZyB0aGUgcnVucXVldWUgbG9jayBhbHJlYWR5IChpdCdzIGJlZW4gdGFrZW4gaW4K KyAgICAgKiBzY2hlZHVsZV9jcHVfc3dpdGNoKCkpLiBJdCdzIGFjdHVhbGx5IHRoZSBydW5xdWV1 ZSBsb2NrIG9mCisgICAgICogYW5vdGhlciBzY2hlZHVsZXIsIGJ1dCB0aGF0IGlzIGhvdyB0aGlu Z3MgbmVlZCB0byBiZSwgZm9yCisgICAgICogcHJldmVudGluZyByYWNlcy4KKyAgICAgKi8KKyAg ICBBU1NFUlQocGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgIT0gJnBy di0+bG9jayk7CisKKyAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRfcHJpdiA9IHZkYXRhOworICAg IHBlcl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKKyAgICBwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSkuc2NoZWRfcHJpdiA9IE5VTEw7IC8qIG5vIHBkYXRhICovCisKKyAgICAvKgor ICAgICAqIChSZT8pcm91dGUgdGhlIGxvY2sgdG8gdGhlIHBlciBwQ1BVIGxvY2sgYXMgL2xhc3Qv IHRoaW5nLiBJbiBmYWN0LAorICAgICAqIGlmIGl0IGlzIGZyZWUgKGFuZCBpdCBjYW4gYmUpIHdl IHdhbnQgdGhhdCBhbnlvbmUgdGhhdCBtYW5hZ2VzCisgICAgICogdGFraW5nIGl0LCBmaW5kIGFs bCB0aGUgaW5pdGlhbGl6YXRpb25zIHdlJ3ZlIGRvbmUgYWJvdmUgaW4gcGxhY2UuCisgICAgICov CisgICAgc21wX21iKCk7CisgICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxl X2xvY2sgPSAmcHJ2LT5sb2NrOworfQorCiBzdGF0aWMgdm9pZCAqCiBydF9hbGxvY19wZGF0YShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiB7CkBAIC03MDcsMTkgKzczOCw2 IEBAIHJ0X2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSkK IHN0YXRpYyB2b2lkCiBydF9mcmVlX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywg dm9pZCAqcGNwdSwgaW50IGNwdSkKIHsKLSAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRf cHJpdihvcHMpOwotICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVk dWxlX2RhdGEsIGNwdSk7Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLQotICAgIHNwaW5fbG9j a19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKLQotICAgIC8qIE1vdmUgc3BpbmxvY2sgYmFj ayB0byB0aGUgZGVmYXVsdCBsb2NrICovCi0gICAgQVNTRVJUKHNkLT5zY2hlZHVsZV9sb2NrID09 ICZwcnYtPmxvY2spOwotICAgIEFTU0VSVCghc3Bpbl9pc19sb2NrZWQoJnNkLT5fbG9jaykpOwot ICAgIHNkLT5zY2hlZHVsZV9sb2NrID0gJnNkLT5fbG9jazsKLQotICAgIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwotCiAgICAgZnJlZV9jcHVtYXNrX3ZhcihfY3B1 bWFza19zY3JhdGNoW2NwdV0pOwogfQogCkBAIC0xNDY4LDYgKzE0ODYsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHNjaGVkdWxlciBzY2hlZF9ydGRzX2RlZiA9IHsKICAgICAuYWxsb2NfcGRhdGEg ICAgPSBydF9hbGxvY19wZGF0YSwKICAgICAuZnJlZV9wZGF0YSAgICAgPSBydF9mcmVlX3BkYXRh LAogICAgIC5pbml0X3BkYXRhICAgICA9IHJ0X2luaXRfcGRhdGEsCisgICAgLnN3aXRjaF9zY2hl ZCAgID0gcnRfc3dpdGNoX3NjaGVkLAogICAgIC5hbGxvY19kb21kYXRhICA9IHJ0X2FsbG9jX2Rv bWRhdGEsCiAgICAgLmZyZWVfZG9tZGF0YSAgID0gcnRfZnJlZV9kb21kYXRhLAogICAgIC5pbml0 X2RvbWFpbiAgICA9IHJ0X2RvbV9pbml0LApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZHVs ZS5jIGIveGVuL2NvbW1vbi9zY2hlZHVsZS5jCmluZGV4IDE5NDE2MTMuLjU1NTlhYTEgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vc2NoZWR1bGUuYworKysgYi94ZW4vY29tbW9uL3NjaGVkdWxlLmMK QEAgLTE2MzUsMTEgKzE2MzUsMTEgQEAgdm9pZCBfX2luaXQgc2NoZWR1bGVyX2luaXQodm9pZCkK IGludCBzY2hlZHVsZV9jcHVfc3dpdGNoKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVwb29s ICpjKQogewogICAgIHN0cnVjdCB2Y3B1ICppZGxlOwotICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAg ICAgdm9pZCAqcHByaXYsICpwcHJpdl9vbGQsICp2cHJpdiwgKnZwcml2X29sZDsKICAgICBzdHJ1 Y3Qgc2NoZWR1bGVyICpvbGRfb3BzID0gcGVyX2NwdShzY2hlZHVsZXIsIGNwdSk7CiAgICAgc3Ry dWN0IHNjaGVkdWxlciAqbmV3X29wcyA9IChjID09IE5VTEwpID8gJm9wcyA6IGMtPnNjaGVkOwog ICAgIHN0cnVjdCBjcHVwb29sICpvbGRfcG9vbCA9IHBlcl9jcHUoY3B1cG9vbCwgY3B1KTsKKyAg ICBzcGlubG9ja190ICogb2xkX2xvY2s7CiAKICAgICAvKgogICAgICAqIHBDUFVzIG9ubHkgbW92 ZSBmcm9tIGEgdmFsaWQgY3B1cG9vbCB0byBmcmVlIChpLmUuLCBvdXQgb2YgYW55IHBvb2wpLApA QCAtMTY1OCwxMSArMTY1OCwyMSBAQCBpbnQgc2NoZWR1bGVfY3B1X3N3aXRjaCh1bnNpZ25lZCBp bnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAgICBpZiAoIG9sZF9vcHMgPT0gbmV3X29wcyAp CiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgLyoKKyAgICAgKiBUbyBzZXR1cCB0aGUgY3B1IGZv ciB0aGUgbmV3IHNjaGVkdWxlciB3ZSBuZWVkOgorICAgICAqICAtIGEgdmFsaWQgaW5zdGFuY2Ug b2YgcGVyLUNQVSBzY2hlZHVsZXIgc3BlY2lmaWMgZGF0YSwgYXMgaXQgaXMKKyAgICAgKiAgICBh bGxvY2F0ZWQgYnkgU0NIRURfT1AoYWxsb2NfcGRhdGEpLiBOb3RlIHRoYXQgd2UgZG8gbm90IHdh bnQgdG8KKyAgICAgKiAgICBpbml0aWFsaXplIGl0IHlldCAoaS5lLiwgd2UgYXJlIG5vdCBjYWxs aW5nIFNDSEVEX09QKGluaXRfcGRhdGEpKS4KKyAgICAgKiAgICBUaGF0IHdpbGwgYmUgZG9uZSBi eSB0aGUgdGFyZ2V0IHNjaGVkdWxlciwgaW4gU0NIRURfT1Aoc3dpdGNoX3NjaGVkKSwKKyAgICAg KiAgICBpbiBwcm9wZXIgb3JkZXJpbmcgYW5kIHdpdGggbG9ja2luZy4KKyAgICAgKiAgLSBhIHZh bGlkIGluc3RhbmNlIG9mIHBlci12Q1BVIHNjaGVkdWxlciBzcGVjaWZpYyBkYXRhLCBmb3IgdGhl IGlkbGUKKyAgICAgKiAgICB2Q1BVIG9mIGNwdS4gVGhhdCBpcyB3aGF0IHRoZSB0YXJnZXQgc2No ZWR1bGVyIHdpbGwgdXNlIGZvciB0aGUKKyAgICAgKiAgICBzY2hlZF9wcml2IGZpZWxkIG9mIHRo ZSBwZXItdkNQVSBpbmZvIG9mIHRoZSBpZGxlIGRvbWFpbi4KKyAgICAgKi8KICAgICBpZGxlID0g aWRsZV92Y3B1W2NwdV07CiAgICAgcHByaXYgPSBTQ0hFRF9PUChuZXdfb3BzLCBhbGxvY19wZGF0 YSwgY3B1KTsKICAgICBpZiAoIElTX0VSUihwcHJpdikgKQogICAgICAgICByZXR1cm4gUFRSX0VS UihwcHJpdik7Ci0gICAgU0NIRURfT1AobmV3X29wcywgaW5pdF9wZGF0YSwgcHByaXYsIGNwdSk7 CiAgICAgdnByaXYgPSBTQ0hFRF9PUChuZXdfb3BzLCBhbGxvY192ZGF0YSwgaWRsZSwgaWRsZS0+ ZG9tYWluLT5zY2hlZF9wcml2KTsKICAgICBpZiAoIHZwcml2ID09IE5VTEwgKQogICAgIHsKQEAg LTE2NzAsMTcgKzE2ODAsMzAgQEAgaW50IHNjaGVkdWxlX2NwdV9zd2l0Y2godW5zaWduZWQgaW50 IGNwdSwgc3RydWN0IGNwdXBvb2wgKmMpCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIH0K IAotICAgIGxvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2tfaXJxKGNwdSk7Ci0KICAgICBTQ0hFRF9P UChvbGRfb3BzLCB0aWNrX3N1c3BlbmQsIGNwdSk7CisKKyAgICAvKgorICAgICAqIFRoZSBhY3R1 YWwgc3dpdGNoLCBpbmNsdWRpbmcgKGlmIG5lY2Vzc2FyeSkgdGhlIHJlcm91dGluZyBvZiB0aGUK KyAgICAgKiBzY2hlZHVsZXIgbG9jayB0byB3aGF0ZXZlciBuZXdfb3BzIHByZWZlcnMsICBuZWVk cyB0byBoYXBwZW4gaW4gb25lCisgICAgICogY3JpdGljYWwgc2VjdGlvbiwgcHJvdGVjdGVkIGJ5 IG9sZF9vcHMnIGxvY2ssIG9yIHJhY2VzIGFyZSBwb3NzaWJsZS4KKyAgICAgKiBJdCBpcywgaW4g ZmFjdCwgdGhlIGxvY2sgb2YgYW5vdGhlciBzY2hlZHVsZXIgdGhhdCB3ZSBhcmUgdGFraW5nICh0 aGUKKyAgICAgKiBzY2hlZHVsZXIgb2YgdGhlIGNwdXBvb2wgdGhhdCBjcHUgc3RpbGwgYmVsb25n cyB0bykuIEJ1dCB0aGF0IGlzIG9rCisgICAgICogYXMsIGFueW9uZSB0cnlpbmcgdG8gc2NoZWR1 bGUgb24gdGhpcyBjcHUgd2lsbCBzcGluIHVudGlsIHdoZW4gd2UKKyAgICAgKiByZWxlYXNlIHRo YXQgbG9jayAoYm90dG9tIG9mIHRoaXMgZnVuY3Rpb24pLiBXaGVuIGhlJ2xsIGdldCB0aGUgbG9j aworICAgICAqIC0tdGhhbmtzIHRvIHRoZSBsb29wIGluc2lkZSAqX3NjaGVkdWxlX2xvY2soKSBm dW5jdGlvbnMtLSBoZSdsbCBub3RpY2UKKyAgICAgKiB0aGF0IHRoZSBsb2NrIGl0c2VsZiBjaGFu Z2VkLCBhbmQgcmV0cnkgYWNxdWlyaW5nIHRoZSBuZXcgb25lICh3aGljaAorICAgICAqIHdpbGwg YmUgdGhlIGNvcnJlY3QsIHJlbWFwcGVkIG9uZSwgYXQgdGhhdCBwb2ludCkuCisgICAgICovCisg ICAgb2xkX2xvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2soY3B1KTsKKwogICAgIHZwcml2X29sZCA9 IGlkbGUtPnNjaGVkX3ByaXY7Ci0gICAgaWRsZS0+c2NoZWRfcHJpdiA9IHZwcml2OwotICAgIHBl cl9jcHUoc2NoZWR1bGVyLCBjcHUpID0gbmV3X29wczsKICAgICBwcHJpdl9vbGQgPSBwZXJfY3B1 KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWRfcHJpdjsKLSAgICBwZXJfY3B1KHNjaGVkdWxlX2Rh dGEsIGNwdSkuc2NoZWRfcHJpdiA9IHBwcml2OwotICAgIFNDSEVEX09QKG5ld19vcHMsIHRpY2tf cmVzdW1lLCBjcHUpOworICAgIFNDSEVEX09QKG5ld19vcHMsIHN3aXRjaF9zY2hlZCwgY3B1LCBw cHJpdiwgdnByaXYpOwogCi0gICAgcGNwdV9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIGNwdSk7 CisgICAgLyogX05vdF8gcGNwdV9zY2hlZHVsZV91bmxvY2soKTogc2NoZWR1bGVfbG9jayBtYXkg aGF2ZSBjaGFuZ2VkISAqLworICAgIHNwaW5fdW5sb2NrX2lycShvbGRfbG9jayk7CisKKyAgICBT Q0hFRF9PUChuZXdfb3BzLCB0aWNrX3Jlc3VtZSwgY3B1KTsKIAogICAgIFNDSEVEX09QKG9sZF9v cHMsIGZyZWVfdmRhdGEsIHZwcml2X29sZCk7CiAgICAgU0NIRURfT1Aob2xkX29wcywgZnJlZV9w ZGF0YSwgcHByaXZfb2xkLCBjcHUpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVk LWlmLmggYi94ZW4vaW5jbHVkZS94ZW4vc2NoZWQtaWYuaAppbmRleCA3MGMwOGM2Li45Y2ViZTQx IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQtaWYuaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4vc2NoZWQtaWYuaApAQCAtMTM3LDYgKzEzNyw5IEBAIHN0cnVjdCBzY2hlZHVsZXIgewog ICAgIHZvaWQgICAgICAgICAoKmZyZWVfZG9tZGF0YSkgICAoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqLCB2b2lkICopOwogICAgIHZvaWQgKiAgICAgICAoKmFsbG9jX2RvbWRhdGEpICAoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqLCBzdHJ1Y3QgZG9tYWluICopOwogCisgICAgdm9pZCAgICAgICAg ICgqc3dpdGNoX3NjaGVkKSAgIChzdHJ1Y3Qgc2NoZWR1bGVyICosIHVuc2lnbmVkIGludCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiwgdm9pZCAqKTsKKwogICAg IGludCAgICAgICAgICAoKmluaXRfZG9tYWluKSAgICAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq LCBzdHJ1Y3QgZG9tYWluICopOwogICAgIHZvaWQgICAgICAgICAoKmRlc3Ryb3lfZG9tYWluKSAo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqLCBzdHJ1Y3QgZG9tYWluICopOwogCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK