From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v2 04/11] xen: sched: close potential races when switching scheduler to CPUs Date: Wed, 06 Apr 2016 19:23:09 +0200 Message-ID: <20160406172309.25877.66499.stgit@Solace.fritz.box> References: <20160406170023.25877.15622.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 1anrAh-00019q-Er for xen-devel@lists.xenproject.org; Wed, 06 Apr 2016 17:23:15 +0000 Received: by mail-lf0-f65.google.com with SMTP id p81so5077693lfb.3 for ; Wed, 06 Apr 2016 10:23:13 -0700 (PDT) In-Reply-To: <20160406170023.25877.15622.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 , Meng Xu 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 UFUsIGFuZCBpbXBsZW1lbnRzIGl0IGZvciB0aGUKdmFyaW91cyBzY2hlZHVsZXJzICh0aGF0IG5l ZWRzIGl0OiBpLmUuLCBhbGwgZXhjZXB0IEFSSU5DNjUzKSwKc28gdGhhdCB0aGluZ3MgYXJlIGRv bmUgaW4gdGhlIHByb3BlciBvcmRlciBhbmQgdW5kZXIgdGhlCnByb3RlY3Rpb24gb2YgdGhlIGJl c3Qgc3VpdGVkIChzZXQgb2YpIGxvY2socykuIEl0IGlzCm5lY2Vzc2FyeSB0byBhZGQgdGhlIGhv b2sgKGFzIGNvbXBhcmVkIHRvIGtlZXAgZG9pbmcgdGhpbmdzCmluIGdlbmVyaWMgY29kZSksIGJl Y2F1c2UgZGlmZmVyZW50IHNjaGVkdWxlcnMgbWF5IGhhdmUKIGRpZmZlcmVudCBsb2NraW5nIHNj aGVtZXMuCgpTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGFyaW8uZmFnZ2lvbGlAY2l0 cml4LmNvbT4KLS0tCkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5j b20+CkNjOiBNZW5nIFh1IDxtZW5neHVAY2lzLnVwZW5uLmVkdT4KQ2M6IFRpYW55YW5nIENoZW4g PHRpY2hlQHNlYXMudXBlbm4uZWR1PgotLS0KQ2hhbmdlcyBmcm9tIHYxOgoKbmV3IHBhdGNoLCBi YXNpY2FsbHksIGNvbWluZyBmcm9tIHNxdWFzaGluZyB3aGF0IHdlcmUKNCBwYXRjaGVzIGluIHYx LiBJbiBhbnkgY2FzZSwgd2l0aCByZXNwZWN0IHRvIHRob3NlIDQKcGF0Y2hlczoKIC0gcnVucXVl dWUgbG9jayBpcyBiYWNrIGJlaW5nIHRha2VuIGluIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSwKICAg YXMgc3VnZ2VzdGVkIGR1cmluZyByZXZpZXc7CiAtIGFkZCBiYXJyaWVycyBmb3IgbWFraW5nIHN1 cmUgYWxsIGluaXRpYWxpemF0aW9uIGlzIGRvbmUKICAgd2hlbiB0aGUgbmV3IGxvY2sgaXMgYXNz aWduZWQsIGFzIHN1Z2VzdGVkIGR1cmluZyByZXZpZXc7CiAtIGFkZCBjb21tZW50cyBhbmQgQVNT RVJULXMgYWJvdXQgaG93IGFuZCB3aHkgdGhlIGFkb3B0ZWQKICAgbG9ja2luZyBzY2hlbWUgaXMg c2FmZSwgYXMgc3VnZ2VzdGVkIGR1cmluZyByZXZpZXcuCi0tLQogeGVuL2NvbW1vbi9zY2hlZF9j cmVkaXQuYyAgfCAgIDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9zY2hl ZF9jcmVkaXQyLmMgfCAgIDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tCiB4ZW4vY29tbW9uL3NjaGVkX3J0LmMgICAgICB8ICAgNDUgKysrKysrKysrKysrKysr KystLS0tLS0tCiB4ZW4vY29tbW9uL3NjaGVkdWxlLmMgICAgICB8ICAgNDEgKysrKysrKysrKysr KysrKystLS0tLQogeGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmggfCAgICAzICsrCiA1IGZpbGVz IGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQuYwpp bmRleCA5NmEyNDVkLi41NDBkNTE1IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRp dC5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKQEAgLTU3OCwxMiArNTc4LDU1IEBA IGNzY2hlZF9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGRh dGEsIGludCBjcHUpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBzdHJ1Y3QgY3Nj aGVkX3ByaXZhdGUgKnBydiA9IENTQ0hFRF9QUklWKG9wcyk7CisgICAgc3RydWN0IHNjaGVkdWxl X2RhdGEgKnNkID0gJnBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KTsKKworICAgIC8qCisgICAg ICogVGhpcyBpcyBjYWxsZWQgZWl0aGVyIGR1cmluZyBkdXJpbmcgYm9vdCwgcmVzdW1lIG9yIGhv dHBsdWcsIGluCisgICAgICogY2FzZSBDcmVkaXQxIGlzIHRoZSBzY2hlZHVsZXIgY2hvc2VuIGF0 IGJvb3QuIEluIHN1Y2ggY2FzZXMsIHRoZQorICAgICAqIHNjaGVkdWxlciBsb2NrIGZvciBjcHUg aXMgYWxyZWFkeSBwb2ludGluZyB0byB0aGUgZGVmYXVsdCBwZXItY3B1CisgICAgICogc3Bpbmxv Y2ssIGFzIENyZWRpdDEgbmVlZHMgaXQsIHNvIHRoZXJlIGlzIG5vIHJlbWFwcGluZyB0byBiZSBk b25lLgorICAgICAqLworICAgIEFTU0VSVChzZC0+c2NoZWR1bGVfbG9jayA9PSAmc2QtPl9sb2Nr ICYmICFzcGluX2lzX2xvY2tlZCgmc2QtPl9sb2NrKSk7CiAKICAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmcHJ2LT5sb2NrLCBmbGFncyk7CiAgICAgaW5pdF9wZGF0YShwcnYsIHBkYXRhLCBjcHUpOwog ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwogfQogCisvKiBD aGFuZ2UgdGhlIHNjaGVkdWxlciBvZiBjcHUgdG8gdXMgKENyZWRpdCkuICovCitzdGF0aWMgdm9p ZAorY3NjaGVkX3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHVuc2lnbmVkIGlu dCBjcHUsCisgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBkYXRhLCB2b2lkICp2ZGF0YSkKK3sK KyAgICBzdHJ1Y3Qgc2NoZWR1bGVfZGF0YSAqc2QgPSAmcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBj cHUpOworICAgIHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEX1BSSVYob3BzKTsK KyAgICBzdHJ1Y3QgY3NjaGVkX3ZjcHUgKnN2YyA9IHZkYXRhOworCisgICAgQVNTRVJUKHN2YyAm JiBpc19pZGxlX3ZjcHUoc3ZjLT52Y3B1KSk7CisKKyAgICBpZGxlX3ZjcHVbY3B1XS0+c2NoZWRf cHJpdiA9IHZkYXRhOworCisgICAgLyoKKyAgICAgKiBXZSBhcmUgaG9sZGluZyB0aGUgcnVucXVl dWUgbG9jayBhbHJlYWR5IChpdCdzIGJlZW4gdGFrZW4gaW4KKyAgICAgKiBzY2hlZHVsZV9jcHVf c3dpdGNoKCkpLiBJdCBhY3R1YWxseSBtYXkgb3IgbWF5IG5vdCBiZSB0aGUgJ3JpZ2h0JworICAg ICAqIG9uZSBmb3IgdGhpcyBjcHUsIGJ1dCB0aGF0IGlzIG9rIGZvciBwcmV2ZW50aW5nIHJhY2Vz LgorICAgICAqLworICAgIHNwaW5fbG9jaygmcHJ2LT5sb2NrKTsKKyAgICBpbml0X3BkYXRhKHBy diwgcGRhdGEsIGNwdSk7CisgICAgc3Bpbl91bmxvY2soJnBydi0+bG9jayk7CisKKyAgICBwZXJf Y3B1KHNjaGVkdWxlciwgY3B1KSA9IG9wczsKKyAgICBwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNw dSkuc2NoZWRfcHJpdiA9IHBkYXRhOworCisgICAgLyoKKyAgICAgKiAoUmU/KXJvdXRlIHRoZSBs b2NrIHRvIHRoZSBwZXIgcENQVSBsb2NrIGFzIC9sYXN0LyB0aGluZy4gSW4gZmFjdCwKKyAgICAg KiBpZiBpdCBpcyBmcmVlIChhbmQgaXQgY2FuIGJlKSB3ZSB3YW50IHRoYXQgYW55b25lIHRoYXQg bWFuYWdlcworICAgICAqIHRha2luZyBpdCwgZmluZHMgYWxsIHRoZSBpbml0aWFsaXphdGlvbnMg d2UndmUgZG9uZSBhYm92ZSBpbiBwbGFjZS4KKyAgICAgKi8KKyAgICBzbXBfbWIoKTsKKyAgICBz ZC0+c2NoZWR1bGVfbG9jayA9ICZzZC0+X2xvY2s7Cit9CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0 aWMgaW5saW5lIHZvaWQKIF9fY3NjaGVkX3ZjcHVfY2hlY2soc3RydWN0IHZjcHUgKnZjKQpAQCAt MjA2Nyw2ICsyMTEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgc2NoZWRfY3Jl ZGl0X2RlZiA9IHsKICAgICAuYWxsb2NfcGRhdGEgICAgPSBjc2NoZWRfYWxsb2NfcGRhdGEsCiAg ICAgLmluaXRfcGRhdGEgICAgID0gY3NjaGVkX2luaXRfcGRhdGEsCiAgICAgLmZyZWVfcGRhdGEg ICAgID0gY3NjaGVkX2ZyZWVfcGRhdGEsCisgICAgLnN3aXRjaF9zY2hlZCAgID0gY3NjaGVkX3N3 aXRjaF9zY2hlZCwKICAgICAuYWxsb2NfZG9tZGF0YSAgPSBjc2NoZWRfYWxsb2NfZG9tZGF0YSwK ICAgICAuZnJlZV9kb21kYXRhICAgPSBjc2NoZWRfZnJlZV9kb21kYXRhLAogCmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5j CmluZGV4IDg5ODllZWEuLjYwYzZmNWIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3Jl ZGl0Mi5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCkBAIC0xOTcxLDEyICsxOTcx LDEyIEBAIHN0YXRpYyB2b2lkIGRlYWN0aXZhdGVfcnVucXVldWUoc3RydWN0IGNzY2hlZDJfcHJp dmF0ZSAqcHJ2LCBpbnQgcnFpKQogICAgIGNwdW1hc2tfY2xlYXJfY3B1KHJxaSwgJnBydi0+YWN0 aXZlX3F1ZXVlcyk7CiB9CiAKLXN0YXRpYyB2b2lkCisvKiBSZXR1cm5zIHRoZSBJRCBvZiB0aGUg cnVucXVldWUgdGhlIGNwdSBpcyBhc3NpZ25lZCB0by4gKi8KK3N0YXRpYyB1bnNpZ25lZAogaW5p dF9wZGF0YShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiB7 CiAgICAgdW5zaWduZWQgcnFpOwogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJx ZDsKLSAgICBzcGlubG9ja190ICpvbGRfbG9jazsKIAogICAgIEFTU0VSVChzcGluX2lzX2xvY2tl ZCgmcHJ2LT5sb2NrKSk7CiAgICAgQVNTRVJUKCFjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnBydi0+ aW5pdGlhbGl6ZWQpKTsKQEAgLTIwMDcsNDQgKzIwMDcsODkgQEAgaW5pdF9wZGF0YShzdHJ1Y3Qg Y3NjaGVkMl9wcml2YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgIGFjdGl2YXRl X3J1bnF1ZXVlKHBydiwgcnFpKTsKICAgICB9CiAgICAgCi0gICAgLyogSVJRcyBhbHJlYWR5IGRp c2FibGVkICovCi0gICAgb2xkX2xvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2soY3B1KTsKLQotICAg IC8qIE1vdmUgc3BpbmxvY2sgdG8gbmV3IHJ1bnEgbG9jay4gICovCi0gICAgcGVyX2NwdShzY2hl ZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgPSAmcnFkLT5sb2NrOwotCiAgICAgLyogU2V0 IHRoZSBydW5xdWV1ZSBtYXAgKi8KICAgICBwcnYtPnJ1bnFfbWFwW2NwdV0gPSBycWk7CiAgICAg CiAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnJxZC0+aWRsZSk7CiAgICAgY3B1bWFza19zZXRf Y3B1KGNwdSwgJnJxZC0+YWN0aXZlKTsKLQotICAgIC8qIF9Ob3RfIHBjcHVfc2NoZWR1bGVfdW5s b2NrKCk6IHBlcl9jcHUoKS5zY2hlZHVsZV9sb2NrIGNoYW5nZWQhICovCi0gICAgc3Bpbl91bmxv Y2sob2xkX2xvY2spOwotCiAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6 ZWQpOwogCi0gICAgcmV0dXJuOworICAgIHJldHVybiBycWk7CiB9CiAKIHN0YXRpYyB2b2lkCiBj c2NoZWQyX2luaXRfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwZGF0 YSwgaW50IGNwdSkKIHsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQy X1BSSVYob3BzKTsKKyAgICBzcGlubG9ja190ICpvbGRfbG9jazsKICAgICB1bnNpZ25lZCBsb25n IGZsYWdzOworICAgIHVuc2lnbmVkIHJxaTsKIAogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcnYt PmxvY2ssIGZsYWdzKTsKLSAgICBpbml0X3BkYXRhKHBydiwgY3B1KTsKKyAgICBvbGRfbG9jayA9 IHBjcHVfc2NoZWR1bGVfbG9jayhjcHUpOworCisgICAgcnFpID0gaW5pdF9wZGF0YShwcnYsIGNw dSk7CisgICAgLyogTW92ZSB0aGUgc2NoZWR1bGVyIGxvY2sgdG8gdGhlIG5ldyBydW5xIGxvY2su ICovCisgICAgcGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2sgPSAmcHJ2 LT5ycWRbcnFpXS5sb2NrOworCisgICAgLyogX05vdF8gcGNwdV9zY2hlZHVsZV91bmxvY2soKTog c2NoZWR1bGVfbG9jayBtYXkgaGF2ZSBjaGFuZ2VkISAqLworICAgIHNwaW5fdW5sb2NrKG9sZF9s b2NrKTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIH0K IAorLyogQ2hhbmdlIHRoZSBzY2hlZHVsZXIgb2YgY3B1IHRvIHVzIChDcmVkaXQyKS4gKi8KK3N0 YXRpYyB2b2lkCitjc2NoZWQyX3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3Bz LCB1bnNpZ25lZCBpbnQgY3B1LAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGRhdGEsIHZv aWQgKnZkYXRhKQoreworICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJf UFJJVihuZXdfb3BzKTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMgPSB2ZGF0YTsKKyAg ICB1bnNpZ25lZCBycWk7CisKKyAgICBBU1NFUlQoIXBkYXRhICYmIHN2YyAmJiBpc19pZGxlX3Zj cHUoc3ZjLT52Y3B1KSk7CisKKyAgICAvKgorICAgICAqIFdlIG93biBvbmUgcnVucXVldWUgbG9j ayBhbHJlYWR5IChmcm9tIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSkuIFRoaXMKKyAgICAgKiBsb29r cyBsaWtlIGl0IHZpb2xhdGVzIHRoaXMgc2NoZWR1bGVyJ3MgbG9ja2luZyBydWxlcywgYnV0IGl0 IGRvZXMKKyAgICAgKiBub3QsIGFzIHdoYXQgd2Ugb3duIGlzIHRoZSBsb2NrIG9mIGFub3RoZXIg c2NoZWR1bGVyLCB0aGF0IGhlbmNlIGhhcworICAgICAqIG5vIHBhcnRpY3VsYXIgKG9yZGVyaW5n KSByZWxhdGlvbnNoaXAgd2l0aCBvdXIgcHJpdmF0ZSBnbG9iYWwgbG9jay4KKyAgICAgKiBBbmQg b3duaW5nIGV4YWN0bHkgdGhhdCBvbmUgKHRoZSBsb2NrIG9mIHRoZSBvbGQgc2NoZWR1bGVyIG9m IHRoaXMKKyAgICAgKiBjcHUpIGlzIHdoYXQgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgcmFjZXMu CisgICAgICovCisgICAgc3Bpbl9sb2NrX2lycSgmcHJ2LT5sb2NrKTsKKworICAgIGlkbGVfdmNw dVtjcHVdLT5zY2hlZF9wcml2ID0gdmRhdGE7CisKKyAgICBycWkgPSBpbml0X3BkYXRhKHBydiwg Y3B1KTsKKworICAgIC8qCisgICAgICogTm93IHRoYXQgd2Uga25vdyB3aGF0IHJ1bnF1ZXVlIHdl J2xsIGdvIGluLCBkb3VibGUgY2hlY2sgd2hhdCdzIHNhaWQKKyAgICAgKiBhYm92ZTogdGhlIGxv Y2sgd2UgYWxyZWFkeSBob2xkIGlzIG5vdCB0aGUgb25lIG9mIHRoaXMgcnVucXVldWUgb2YKKyAg ICAgKiB0aGlzIHNjaGVkdWxlciwgYW5kIHNvIGl0J3Mgc2FmZSB0byBoYXZlIHRha2VuIGl0IC9i ZWZvcmUvIG91cgorICAgICAqIHByaXZhdGUgZ2xvYmFsIGxvY2suCisgICAgICovCisgICAgQVNT RVJUKHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrICE9ICZwcnYtPnJx ZFtycWldLmxvY2spOworCisgICAgcGVyX2NwdShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOwor ICAgIHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gTlVMTDsgLyogbm8g cGRhdGEgKi8KKworICAgIC8qCisgICAgICogKFJlPylyb3V0ZSB0aGUgbG9jayB0byB0aGUgcGVy IHBDUFUgbG9jayBhcyAvbGFzdC8gdGhpbmcuIEluIGZhY3QsCisgICAgICogaWYgaXQgaXMgZnJl ZSAoYW5kIGl0IGNhbiBiZSkgd2Ugd2FudCB0aGF0IGFueW9uZSB0aGF0IG1hbmFnZXMKKyAgICAg KiB0YWtpbmcgaXQsIGZpbmQgYWxsIHRoZSBpbml0aWFsaXphdGlvbnMgd2UndmUgZG9uZSBhYm92 ZSBpbiBwbGFjZS4KKyAgICAgKi8KKyAgICBzbXBfbWIoKTsKKyAgICBwZXJfY3B1KHNjaGVkdWxl X2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayA9ICZwcnYtPnJxZFtycWldLmxvY2s7CisKKyAgICBz cGluX3VubG9ja19pcnEoJnBydi0+bG9jayk7Cit9CisKIHN0YXRpYyB2b2lkCiBjc2NoZWQyX2Zy ZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1LCBpbnQgY3B1 KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0 ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CiAgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVf ZGF0YSAqcnFkOwotICAgIHN0cnVjdCBzY2hlZHVsZV9kYXRhICpzZCA9ICZwZXJfY3B1KHNjaGVk dWxlX2RhdGEsIGNwdSk7CiAgICAgaW50IHJxaTsKIAogICAgIHNwaW5fbG9ja19pcnFzYXZlKCZw cnYtPmxvY2ssIGZsYWdzKTsKQEAgLTIwNzIsMTEgKzIxMTcsNiBAQCBjc2NoZWQyX2ZyZWVfcGRh dGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1LCBpbnQgY3B1KQogICAg ICAgICBkZWFjdGl2YXRlX3J1bnF1ZXVlKHBydiwgcnFpKTsKICAgICB9CiAKLSAgICAvKiBNb3Zl IHNwaW5sb2NrIHRvIHRoZSBvcmlnaW5hbCBsb2NrLiAgKi8KLSAgICBBU1NFUlQoc2QtPnNjaGVk dWxlX2xvY2sgPT0gJnJxZC0+bG9jayk7Ci0gICAgQVNTRVJUKCFzcGluX2lzX2xvY2tlZCgmc2Qt Pl9sb2NrKSk7Ci0gICAgc2QtPnNjaGVkdWxlX2xvY2sgPSAmc2QtPl9sb2NrOwotCiAgICAgc3Bp bl91bmxvY2soJnJxZC0+bG9jayk7CiAKICAgICBjcHVtYXNrX2NsZWFyX2NwdShjcHUsICZwcnYt PmluaXRpYWxpemVkKTsKQEAgLTIxNzAsNiArMjIxMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyIHNjaGVkX2NyZWRpdDJfZGVmID0gewogICAgIC5mcmVlX3ZkYXRhICAgICA9IGNz Y2hlZDJfZnJlZV92ZGF0YSwKICAgICAuaW5pdF9wZGF0YSAgICAgPSBjc2NoZWQyX2luaXRfcGRh dGEsCiAgICAgLmZyZWVfcGRhdGEgICAgID0gY3NjaGVkMl9mcmVlX3BkYXRhLAorICAgIC5zd2l0 Y2hfc2NoZWQgICA9IGNzY2hlZDJfc3dpdGNoX3NjaGVkLAogICAgIC5hbGxvY19kb21kYXRhICA9 IGNzY2hlZDJfYWxsb2NfZG9tZGF0YSwKICAgICAuZnJlZV9kb21kYXRhICAgPSBjc2NoZWQyX2Zy ZWVfZG9tZGF0YSwKIH07CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX3J0LmMgYi94ZW4v Y29tbW9uL3NjaGVkX3J0LmMKaW5kZXggYjk2YmQ5My4uM2JiOGM3MSAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi9zY2hlZF9ydC5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfcnQuYwpAQCAtNjgyLDYg KzY4MiwzNyBAQCBydF9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9p ZCAqcGRhdGEsIGludCBjcHUpCiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShvbGRfbG9jaywg ZmxhZ3MpOwogfQogCisvKiBDaGFuZ2UgdGhlIHNjaGVkdWxlciBvZiBjcHUgdG8gdXMgKFJURFMp LiAqLworc3RhdGljIHZvaWQKK3J0X3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdf b3BzLCB1bnNpZ25lZCBpbnQgY3B1LAorICAgICAgICAgICAgICAgIHZvaWQgKnBkYXRhLCB2b2lk ICp2ZGF0YSkKK3sKKyAgICBzdHJ1Y3QgcnRfcHJpdmF0ZSAqcHJ2ID0gcnRfcHJpdihuZXdfb3Bz KTsKKyAgICBzdHJ1Y3QgcnRfdmNwdSAqc3ZjID0gdmRhdGE7CisKKyAgICBBU1NFUlQoIXBkYXRh ICYmIHN2YyAmJiBpc19pZGxlX3ZjcHUoc3ZjLT52Y3B1KSk7CisKKyAgICAvKgorICAgICAqIFdl IGFyZSBob2xkaW5nIHRoZSBydW5xdWV1ZSBsb2NrIGFscmVhZHkgKGl0J3MgYmVlbiB0YWtlbiBp bgorICAgICAqIHNjaGVkdWxlX2NwdV9zd2l0Y2goKSkuIEl0J3MgYWN0dWFsbHkgdGhlIHJ1bnF1 ZXVlIGxvY2sgb2YKKyAgICAgKiBhbm90aGVyIHNjaGVkdWxlciwgYnV0IHRoYXQgaXMgaG93IHRo aW5ncyBuZWVkIHRvIGJlLCBmb3IKKyAgICAgKiBwcmV2ZW50aW5nIHJhY2VzLgorICAgICAqLwor ICAgIEFTU0VSVChwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1bGVfbG9jayAhPSAm cHJ2LT5sb2NrKTsKKworICAgIGlkbGVfdmNwdVtjcHVdLT5zY2hlZF9wcml2ID0gdmRhdGE7Cisg ICAgcGVyX2NwdShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOworICAgIHBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gTlVMTDsgLyogbm8gcGRhdGEgKi8KKworICAgIC8q CisgICAgICogKFJlPylyb3V0ZSB0aGUgbG9jayB0byB0aGUgcGVyIHBDUFUgbG9jayBhcyAvbGFz dC8gdGhpbmcuIEluIGZhY3QsCisgICAgICogaWYgaXQgaXMgZnJlZSAoYW5kIGl0IGNhbiBiZSkg d2Ugd2FudCB0aGF0IGFueW9uZSB0aGF0IG1hbmFnZXMKKyAgICAgKiB0YWtpbmcgaXQsIGZpbmQg YWxsIHRoZSBpbml0aWFsaXphdGlvbnMgd2UndmUgZG9uZSBhYm92ZSBpbiBwbGFjZS4KKyAgICAg Ki8KKyAgICBzbXBfbWIoKTsKKyAgICBwZXJfY3B1KHNjaGVkdWxlX2RhdGEsIGNwdSkuc2NoZWR1 bGVfbG9jayA9ICZwcnYtPmxvY2s7Cit9CisKIHN0YXRpYyB2b2lkICoKIHJ0X2FsbG9jX3BkYXRh KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSkKIHsKQEAgLTcwNywxOSArNzM4 LDYgQEAgcnRfYWxsb2NfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1 KQogc3RhdGljIHZvaWQKIHJ0X2ZyZWVfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCB2b2lkICpwY3B1LCBpbnQgY3B1KQogewotICAgIHN0cnVjdCBydF9wcml2YXRlICpwcnYgPSBy dF9wcml2KG9wcyk7Ci0gICAgc3RydWN0IHNjaGVkdWxlX2RhdGEgKnNkID0gJnBlcl9jcHUoc2No ZWR1bGVfZGF0YSwgY3B1KTsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0gICAgc3Bpbl9s b2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwotCi0gICAgLyogTW92ZSBzcGlubG9jayBi YWNrIHRvIHRoZSBkZWZhdWx0IGxvY2sgKi8KLSAgICBBU1NFUlQoc2QtPnNjaGVkdWxlX2xvY2sg PT0gJnBydi0+bG9jayk7Ci0gICAgQVNTRVJUKCFzcGluX2lzX2xvY2tlZCgmc2QtPl9sb2NrKSk7 Ci0gICAgc2QtPnNjaGVkdWxlX2xvY2sgPSAmc2QtPl9sb2NrOwotCi0gICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7Ci0KICAgICBmcmVlX2NwdW1hc2tfdmFyKF9j cHVtYXNrX3NjcmF0Y2hbY3B1XSk7CiB9CiAKQEAgLTE0NjgsNiArMTQ4Niw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyIHNjaGVkX3J0ZHNfZGVmID0gewogICAgIC5hbGxvY19wZGF0 YSAgICA9IHJ0X2FsbG9jX3BkYXRhLAogICAgIC5mcmVlX3BkYXRhICAgICA9IHJ0X2ZyZWVfcGRh dGEsCiAgICAgLmluaXRfcGRhdGEgICAgID0gcnRfaW5pdF9wZGF0YSwKKyAgICAuc3dpdGNoX3Nj aGVkICAgPSBydF9zd2l0Y2hfc2NoZWQsCiAgICAgLmFsbG9jX2RvbWRhdGEgID0gcnRfYWxsb2Nf ZG9tZGF0YSwKICAgICAuZnJlZV9kb21kYXRhICAgPSBydF9mcmVlX2RvbWRhdGEsCiAgICAgLmlu aXRfZG9tYWluICAgID0gcnRfZG9tX2luaXQsCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVk dWxlLmMgYi94ZW4vY29tbW9uL3NjaGVkdWxlLmMKaW5kZXggMTk0MTYxMy4uNTU1OWFhMSAxMDA2 NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZHVsZS5jCisrKyBiL3hlbi9jb21tb24vc2NoZWR1bGUu YwpAQCAtMTYzNSwxMSArMTYzNSwxMSBAQCB2b2lkIF9faW5pdCBzY2hlZHVsZXJfaW5pdCh2b2lk KQogaW50IHNjaGVkdWxlX2NwdV9zd2l0Y2godW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdXBv b2wgKmMpCiB7CiAgICAgc3RydWN0IHZjcHUgKmlkbGU7Ci0gICAgc3BpbmxvY2tfdCAqbG9jazsK ICAgICB2b2lkICpwcHJpdiwgKnBwcml2X29sZCwgKnZwcml2LCAqdnByaXZfb2xkOwogICAgIHN0 cnVjdCBzY2hlZHVsZXIgKm9sZF9vcHMgPSBwZXJfY3B1KHNjaGVkdWxlciwgY3B1KTsKICAgICBz dHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzID0gKGMgPT0gTlVMTCkgPyAmb3BzIDogYy0+c2NoZWQ7 CiAgICAgc3RydWN0IGNwdXBvb2wgKm9sZF9wb29sID0gcGVyX2NwdShjcHVwb29sLCBjcHUpOwor ICAgIHNwaW5sb2NrX3QgKiBvbGRfbG9jazsKIAogICAgIC8qCiAgICAgICogcENQVXMgb25seSBt b3ZlIGZyb20gYSB2YWxpZCBjcHVwb29sIHRvIGZyZWUgKGkuZS4sIG91dCBvZiBhbnkgcG9vbCks CkBAIC0xNjU4LDExICsxNjU4LDIxIEBAIGludCBzY2hlZHVsZV9jcHVfc3dpdGNoKHVuc2lnbmVk IGludCBjcHUsIHN0cnVjdCBjcHVwb29sICpjKQogICAgIGlmICggb2xkX29wcyA9PSBuZXdfb3Bz ICkKICAgICAgICAgZ290byBvdXQ7CiAKKyAgICAvKgorICAgICAqIFRvIHNldHVwIHRoZSBjcHUg Zm9yIHRoZSBuZXcgc2NoZWR1bGVyIHdlIG5lZWQ6CisgICAgICogIC0gYSB2YWxpZCBpbnN0YW5j ZSBvZiBwZXItQ1BVIHNjaGVkdWxlciBzcGVjaWZpYyBkYXRhLCBhcyBpdCBpcworICAgICAqICAg IGFsbG9jYXRlZCBieSBTQ0hFRF9PUChhbGxvY19wZGF0YSkuIE5vdGUgdGhhdCB3ZSBkbyBub3Qg d2FudCB0bworICAgICAqICAgIGluaXRpYWxpemUgaXQgeWV0IChpLmUuLCB3ZSBhcmUgbm90IGNh bGxpbmcgU0NIRURfT1AoaW5pdF9wZGF0YSkpLgorICAgICAqICAgIFRoYXQgd2lsbCBiZSBkb25l IGJ5IHRoZSB0YXJnZXQgc2NoZWR1bGVyLCBpbiBTQ0hFRF9PUChzd2l0Y2hfc2NoZWQpLAorICAg ICAqICAgIGluIHByb3BlciBvcmRlcmluZyBhbmQgd2l0aCBsb2NraW5nLgorICAgICAqICAtIGEg dmFsaWQgaW5zdGFuY2Ugb2YgcGVyLXZDUFUgc2NoZWR1bGVyIHNwZWNpZmljIGRhdGEsIGZvciB0 aGUgaWRsZQorICAgICAqICAgIHZDUFUgb2YgY3B1LiBUaGF0IGlzIHdoYXQgdGhlIHRhcmdldCBz Y2hlZHVsZXIgd2lsbCB1c2UgZm9yIHRoZQorICAgICAqICAgIHNjaGVkX3ByaXYgZmllbGQgb2Yg dGhlIHBlci12Q1BVIGluZm8gb2YgdGhlIGlkbGUgZG9tYWluLgorICAgICAqLwogICAgIGlkbGUg PSBpZGxlX3ZjcHVbY3B1XTsKICAgICBwcHJpdiA9IFNDSEVEX09QKG5ld19vcHMsIGFsbG9jX3Bk YXRhLCBjcHUpOwogICAgIGlmICggSVNfRVJSKHBwcml2KSApCiAgICAgICAgIHJldHVybiBQVFJf RVJSKHBwcml2KTsKLSAgICBTQ0hFRF9PUChuZXdfb3BzLCBpbml0X3BkYXRhLCBwcHJpdiwgY3B1 KTsKICAgICB2cHJpdiA9IFNDSEVEX09QKG5ld19vcHMsIGFsbG9jX3ZkYXRhLCBpZGxlLCBpZGxl LT5kb21haW4tPnNjaGVkX3ByaXYpOwogICAgIGlmICggdnByaXYgPT0gTlVMTCApCiAgICAgewpA QCAtMTY3MCwxNyArMTY4MCwzMCBAQCBpbnQgc2NoZWR1bGVfY3B1X3N3aXRjaCh1bnNpZ25lZCBp bnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAg fQogCi0gICAgbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9ja19pcnEoY3B1KTsKLQogICAgIFNDSEVE X09QKG9sZF9vcHMsIHRpY2tfc3VzcGVuZCwgY3B1KTsKKworICAgIC8qCisgICAgICogVGhlIGFj dHVhbCBzd2l0Y2gsIGluY2x1ZGluZyAoaWYgbmVjZXNzYXJ5KSB0aGUgcmVyb3V0aW5nIG9mIHRo ZQorICAgICAqIHNjaGVkdWxlciBsb2NrIHRvIHdoYXRldmVyIG5ld19vcHMgcHJlZmVycywgIG5l ZWRzIHRvIGhhcHBlbiBpbiBvbmUKKyAgICAgKiBjcml0aWNhbCBzZWN0aW9uLCBwcm90ZWN0ZWQg Ynkgb2xkX29wcycgbG9jaywgb3IgcmFjZXMgYXJlIHBvc3NpYmxlLgorICAgICAqIEl0IGlzLCBp biBmYWN0LCB0aGUgbG9jayBvZiBhbm90aGVyIHNjaGVkdWxlciB0aGF0IHdlIGFyZSB0YWtpbmcg KHRoZQorICAgICAqIHNjaGVkdWxlciBvZiB0aGUgY3B1cG9vbCB0aGF0IGNwdSBzdGlsbCBiZWxv bmdzIHRvKS4gQnV0IHRoYXQgaXMgb2sKKyAgICAgKiBhcywgYW55b25lIHRyeWluZyB0byBzY2hl ZHVsZSBvbiB0aGlzIGNwdSB3aWxsIHNwaW4gdW50aWwgd2hlbiB3ZQorICAgICAqIHJlbGVhc2Ug dGhhdCBsb2NrIChib3R0b20gb2YgdGhpcyBmdW5jdGlvbikuIFdoZW4gaGUnbGwgZ2V0IHRoZSBs b2NrCisgICAgICogLS10aGFua3MgdG8gdGhlIGxvb3AgaW5zaWRlICpfc2NoZWR1bGVfbG9jaygp IGZ1bmN0aW9ucy0tIGhlJ2xsIG5vdGljZQorICAgICAqIHRoYXQgdGhlIGxvY2sgaXRzZWxmIGNo YW5nZWQsIGFuZCByZXRyeSBhY3F1aXJpbmcgdGhlIG5ldyBvbmUgKHdoaWNoCisgICAgICogd2ls bCBiZSB0aGUgY29ycmVjdCwgcmVtYXBwZWQgb25lLCBhdCB0aGF0IHBvaW50KS4KKyAgICAgKi8K KyAgICBvbGRfbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9jayhjcHUpOworCiAgICAgdnByaXZfb2xk ID0gaWRsZS0+c2NoZWRfcHJpdjsKLSAgICBpZGxlLT5zY2hlZF9wcml2ID0gdnByaXY7Ci0gICAg cGVyX2NwdShzY2hlZHVsZXIsIGNwdSkgPSBuZXdfb3BzOwogICAgIHBwcml2X29sZCA9IHBlcl9j cHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZF9wcml2OwotICAgIHBlcl9jcHUoc2NoZWR1bGVf ZGF0YSwgY3B1KS5zY2hlZF9wcml2ID0gcHByaXY7Ci0gICAgU0NIRURfT1AobmV3X29wcywgdGlj a19yZXN1bWUsIGNwdSk7CisgICAgU0NIRURfT1AobmV3X29wcywgc3dpdGNoX3NjaGVkLCBjcHUs IHBwcml2LCB2cHJpdik7CiAKLSAgICBwY3B1X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgY3B1 KTsKKyAgICAvKiBfTm90XyBwY3B1X3NjaGVkdWxlX3VubG9jaygpOiBzY2hlZHVsZV9sb2NrIG1h eSBoYXZlIGNoYW5nZWQhICovCisgICAgc3Bpbl91bmxvY2tfaXJxKG9sZF9sb2NrKTsKKworICAg IFNDSEVEX09QKG5ld19vcHMsIHRpY2tfcmVzdW1lLCBjcHUpOwogCiAgICAgU0NIRURfT1Aob2xk X29wcywgZnJlZV92ZGF0YSwgdnByaXZfb2xkKTsKICAgICBTQ0hFRF9PUChvbGRfb3BzLCBmcmVl X3BkYXRhLCBwcHJpdl9vbGQsIGNwdSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2No ZWQtaWYuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCmluZGV4IDcwYzA4YzYuLjljZWJl NDEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCisrKyBiL3hlbi9pbmNs dWRlL3hlbi9zY2hlZC1pZi5oCkBAIC0xMzcsNiArMTM3LDkgQEAgc3RydWN0IHNjaGVkdWxlciB7 CiAgICAgdm9pZCAgICAgICAgICgqZnJlZV9kb21kYXRhKSAgIChjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICosIHZvaWQgKik7CiAgICAgdm9pZCAqICAgICAgICgqYWxsb2NfZG9tZGF0YSkgIChjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICosIHN0cnVjdCBkb21haW4gKik7CiAKKyAgICB2b2lkICAgICAg ICAgKCpzd2l0Y2hfc2NoZWQpICAgKHN0cnVjdCBzY2hlZHVsZXIgKiwgdW5zaWduZWQgaW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqLCB2b2lkICopOworCiAg ICAgaW50ICAgICAgICAgICgqaW5pdF9kb21haW4pICAgIChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICosIHN0cnVjdCBkb21haW4gKik7CiAgICAgdm9pZCAgICAgICAgICgqZGVzdHJveV9kb21haW4p IChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICosIHN0cnVjdCBkb21haW4gKik7CiAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=