From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aravindh Puthiyaparambil Subject: [PATCH RFC v2 1/4] x86/mm: Shadow and p2m changes for PV mem_access Date: Mon, 7 Jul 2014 19:50:02 -0700 Message-ID: <1404787805-4540-2-git-send-email-aravindp@cisco.com> References: <1404787805-4540-1-git-send-email-aravindp@cisco.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta4.messagelabs.com ([85.158.143.247]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1X4LUL-0004H7-Dk for xen-devel@lists.xenproject.org; Tue, 08 Jul 2014 02:50:37 +0000 In-Reply-To: <1404787805-4540-1-git-send-email-aravindp@cisco.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Keir Fraser , Ian Jackson , Ian Campbell , Jan Beulich , Tim Deegan List-Id: xen-devel@lists.xenproject.org Q2hhbmdlcyB0byBzaGFkb3cgY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklmIHRoZSBzaGFk b3cgcGFnZWZhdWx0IGhhbmRsZXIgZGV0ZWN0cyB0aGF0IGEgbWVtX2FjY2VzcyBsaXN0ZW5lciBp cwpwcmVzZW50LCB0aGVuIGl0IGNoZWNrcyBpZiBhbiB2aW9sYXRpb24gb2NjdXJyZWQuIElmIGl0 IGRpZCwgdGhlbiB0aGUKdkNQVSBpcyBwYXVzZWQgYW5kIGFuIGV2ZW50IGlzIHNlbnQgdG8gdGhl IGxpc3RlbmVyLiBUaGUgb25seSBpbnN0YW5jZQp0aGlzIGRvZXMgbm90IG9jY3VyIGlzIHdoZW4g YSBsaXN0ZW5lciBoYXMgcmVnaXN0ZXJlZCBmb3Igd3JpdGUKdmlvbGF0aW9ucyBhbmQgWGVuIHdy aXRlcyB0byBhIGd1ZXN0IHBhZ2UuClNpbWlsYXJseSBpZiB0aGUgcHJvcGFnYXRpb24gY29kZSBk ZXRlY3RzIHRoYXQgYSBtZW1fYWNjZXNzIGxpc3RlbmVyIGlzCnByZXNlbnQsIHRoZW4gaXQgY3Jl YXRlcyB0aGUgUFRFIGFmdGVyIGFwcGx5aW5nIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBpdC4KV2Ug ZG8gbm90IHBvbGljZSBYZW4gd3JpdGVzIHRvIGd1ZXN0IG1lbW9yeSBtYWtpbmcgUFYgb24gcGFy IHdpdGggSFZNLgpUaGUgbWV0aG9kIHRvIGRvIHRoaXMgdXNlcyB0aGUgQ1IwLldQIGJpdCB3YXMg c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoLgoKUDJNIGNoYW5nZXMKLS0tLS0tLS0tLS0KQWRkIGEg bmV3IHAybSBpbXBsZW1lbnRhdGlvbiBmb3IgbWVtX2FjY2Vzcy4gVGhlIGFjY2VzcyBwZXJtaXNz aW9ucyBhcmUKc3Rhc2hlZCBpbiB0aGUgc2hhZG93X2ZsYWdzIGZpZWxkIG9mIHRoZSBwYWdlX2lu Zm8gc3RydWN0dXJlIGFzCnN1Z2dlc3RlZCBieSBUaW0gRGVlZ2FuLiBwMm1fbWVtX2FjY2Vzc19z ZXRfZW50cnkoKSBzZXRzIHRoZSBhY2Nlc3MgdmFsdWUKb2YgdGhlIG1mbiBnaXZlbiBhcyBpbnB1 dCBhbmQgYmxvd3MgdGhlIHNoYWRvdyBlbnRyaWVzIGZvciB0aGUgbWZuLgpwMm1fbWVtX2FjY2Vz c19nZXRfZW50cnkoKSByZXR1cm5zIHRoZSBhY2Nlc3MgdmFsdWUgb2YgdGhlIG1mbiBnaXZlbiBh cwppbnB1dC4KClNpZ25lZC1vZmYtYnk6IEFyYXZpbmRoIFB1dGhpeWFwYXJhbWJpbCA8YXJhdmlu ZHBAY2lzY28uY29tPgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4K Q2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6 IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgoKLS0tCkNoYW5nZXMgZnJvbSBSRkMgdjE6ClJlbW92 ZWQgc2hhZG93IG1lbV9hY2Nlc3MgbW9kZS4KUmVtb3ZlZCB0aGUgYWNjZXNzIGxvb2t1cCB0YWJs ZSBhbmQgaW5zdGVhZCB1c2UgdGhlIHNoYWRvd19mbGFncyBpbiB0aGUKcGFnZV9pbmZvIHN0cnVj dHVyZSB0byBzdGFzaCB0aGUgYWNjZXNzIHBlcm1pc3Npb25zLgpNb2RpZnkgcDJtX2FjY2Vzc190 b19mbGFncygpIHRvIG9ubHkgc2V0IHJlc3RyaWN0aXZlIHBlcm1pc3Npb25zLgpSZXBsYWNlIGlm IHdpdGggY2FzZSBzdGF0ZW1lbnQgaW4gcDJtX21lbV9hY2Nlc3Nfc2V0X2RlZmF1bHQoKS4KRml4 IHNldHRpbmcgb2YgZGVmYXVsdCBhY2Nlc3MgdmFsdWUuCkRvIG5vdCBwb2xpY2UgWGVuIHdyaXRl cyB0byBndWVzdCBtZW1vcnkgbWFraW5nIFBWIG9uIHBhciB3aXRoIEhWTS4KCk5PVEVTCi0tLS0t CkluY2x1ZGluZyBzY2hlZC5oIGluIHg4Nl82NC91YWNjZXNzLmggY2F1c2VkIGEgY2lyY3VsYXIg ZGVwZW5kZW5jeS4KCm1ha2VbM106IEVudGVyaW5nIGRpcmVjdG9yeSBgL2t1bW8va25jLXhlbi94 ZW4vYXJjaC94ODYnCmdjYyAtbyBhc20tb2Zmc2V0cy5zIHg4Nl82NC9hc20tb2Zmc2V0cy5jIDx0 cnVuY2F0ZWQ+CkluIGZpbGUgaW5jbHVkZWQgZnJvbSAva3Vtby9rbmMteGVuL3hlbi9pbmNsdWRl L2FzbS9tbS5oOjk6MCwKICAgICAgICAgICAgICAgICBmcm9tIC9rdW1vL2tuYy14ZW4veGVuL2lu Y2x1ZGUveGVuL21tLmg6MTE1LAogICAgICAgICAgICAgICAgIGZyb20gL2t1bW8va25jLXhlbi94 ZW4vaW5jbHVkZS9hc20vZG9tYWluLmg6NSwKICAgICAgICAgICAgICAgICBmcm9tIC9rdW1vL2tu Yy14ZW4veGVuL2luY2x1ZGUveGVuL2RvbWFpbi5oOjYsCiAgICAgICAgICAgICAgICAgZnJvbSAv a3Vtby9rbmMteGVuL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oOjEwLAogICAgICAgICAgICAgICAg IGZyb20geDg2XzY0L2FzbS1vZmZzZXRzLmM6MTA6Ci9rdW1vL2tuYy14ZW4veGVuL2luY2x1ZGUv YXNtL3VhY2Nlc3MuaDogSW4gZnVuY3Rpb24g4oCYX19jb3B5X3RvX3VzZXLigJk6Ci9rdW1vL2tu Yy14ZW4veGVuL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaDoxOTc6MTM6IGVycm9yOiBkZXJlZmVyZW5j aW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlCi9rdW1vL2tuYy14ZW4veGVuL2luY2x1ZGUv YXNtL3VhY2Nlc3MuaDoxOTc6MTM6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgdG8gaW5j b21wbGV0ZSB0eXBlCi9rdW1vL2tuYy14ZW4veGVuL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaDoyMDA6 MTM6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlCi9rdW1v L2tuYy14ZW4veGVuL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaDoyMDA6MTM6IGVycm9yOiBkZXJlZmVy ZW5jaW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlCi9rdW1vL2tuYy14ZW4veGVuL2luY2x1 ZGUvYXNtL3VhY2Nlc3MuaDoyMDM6MTM6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgdG8g aW5jb21wbGV0ZSB0eXBlCi9rdW1vL2tuYy14ZW4veGVuL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaDoy MDM6MTM6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlCi9r dW1vL2tuYy14ZW4veGVuL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaDoyMDY6MTM6IGVycm9yOiBkZXJl ZmVyZW5jaW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlCi9rdW1vL2tuYy14ZW4veGVuL2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaDoyMDY6MTM6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIg dG8gaW5jb21wbGV0ZSB0eXBlCm1ha2VbM106ICoqKiBbYXNtLW9mZnNldHMuc10gRXJyb3IgMQoK VGhlIGZpeCBmb3IgdGhpcyBpcyB0aGUgcmVhc29uIGZvciB0aGUgaW5jbHVkZSBjaGFuZ2VzIHRv IG1tLmgsIHBhZ2luZy5oIHNyYXQuYyBhbmQgdmVzYS5jLgogCiB4ZW4vYXJjaC94ODYvbW0vTWFr ZWZpbGUgICAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tbWEuYyAgICAg ICAgICAgICB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2Fy Y2gveDg2L21tL3AybS5jICAgICAgICAgICAgICAgIHwgIDUyICsrKysrKysrLS0tLQogeGVuL2Fy Y2gveDg2L21tL3BhZ2luZy5jICAgICAgICAgICAgIHwgICA3ICsrCiB4ZW4vYXJjaC94ODYvbW0v c2hhZG93L2NvbW1vbi5jICAgICAgfCAgNzUgKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94 ODYvbW0vc2hhZG93L211bHRpLmMgICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKyst CiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAgfCAgIDcgKysKIHhlbi9hcmNo L3g4Ni9zcmF0LmMgICAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvdXNlcmNv cHkuYyAgICAgICAgICAgICAgfCAgMTIgKysrCiB4ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYyAgICAg ICAgICAgICAgfCAgIDMgKwogeGVuL2RyaXZlcnMvdmlkZW8vdmVzYS5jICAgICAgICAgICAgIHwg ICAxICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggICAgICAgICB8ICAgNiArKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICAgICAgIHwgICAxIC0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvcDJtLmggICAgICAgICAgICB8ICAxNyArKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Bh Z2luZy5oICAgICAgICAgfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zaGFkb3cuaCAgICAg ICAgIHwgIDE1ICsrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYveDg2XzY0L3VhY2Nlc3MuaCB8ICAg NyArKwogMTcgZmlsZXMgY2hhbmdlZCwgNDMwIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9tbS9wMm0tbWEuYwoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9tbS9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9tbS9NYWtlZmlsZQpp bmRleCA3M2RjZGY0Li40MTEyOGE0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vTWFrZWZp bGUKKysrIGIveGVuL2FyY2gveDg2L21tL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQCBzdWJkaXIt eSArPSBzaGFkb3cKIHN1YmRpci15ICs9IGhhcAogCiBvYmoteSArPSBwYWdpbmcubwotb2JqLXkg Kz0gcDJtLm8gcDJtLXB0Lm8gcDJtLWVwdC5vIHAybS1wb2Qubworb2JqLXkgKz0gcDJtLm8gcDJt LXB0Lm8gcDJtLWVwdC5vIHAybS1wb2QubyBwMm0tbWEubwogb2JqLXkgKz0gZ3Vlc3Rfd2Fsa18y Lm8KIG9iai15ICs9IGd1ZXN0X3dhbGtfMy5vCiBvYmotJCh4ODZfNjQpICs9IGd1ZXN0X3dhbGtf NC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLW1hLmMgYi94ZW4vYXJjaC94ODYv bW0vcDJtLW1hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhhZDEyYwot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tbWEuYwpAQCAtMCwwICsxLDE0 OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogYXJjaC94ODYvbW0vcDJtLW1hLmMKKyAq CisgKiBJbXBsZW1lbnRhdGlvbiBvZiBwMm0gZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgdXNlIGJ5IFBW IG1lbV9hY2Nlc3MgY29kZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgQ2lzY28gU3lzdGVt cywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAq LworCisjaW5jbHVkZSA8eGVuL2h5cGVyY2FsbC5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgor I2luY2x1ZGUgPGFzbS9wMm0uaD4KKyNpbmNsdWRlIDxhc20vc2hhZG93Lmg+CisjaW5jbHVkZSAi bW0tbG9ja3MuaCIKKworLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtl IHRoZW0gd29yayB3aXRoIG1mbl90ICovCisjdW5kZWYgbWZuX3RvX3BhZ2UKKyNkZWZpbmUgbWZu X3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQorCisvKiBDb252ZXJ0IGFjY2Vz cyBwZXJtaXNzaW9ucyB0byBwYWdlIHRhYmxlIGZsYWdzICovCit2b2lkIHAybV9hY2Nlc3NfdG9f ZmxhZ3ModTMyICpmbGFncywgcDJtX2FjY2Vzc190IGFjY2VzcykKK3sKKyAgICAvKgorICAgICAq IFJlc3RyaWN0IHdpdGggYWNjZXNzIHBlcm1pc3Npb25zIHdoaWxlIHByb3BhZ2F0aW5nIG1vcmUg cmVzdHJpY3RpdmUgZ3Vlc3QKKyAgICAgKiBwZXJtaXNzaW9ucy4KKyAgICAgKi8KKyAgICBzd2l0 Y2ggKCBhY2Nlc3MgKQorICAgIHsKKyAgICBjYXNlIHAybV9hY2Nlc3NfcjoKKyAgICAgICAgKmZs YWdzICY9IH5fUEFHRV9SVzsKKyAgICAgICAgKmZsYWdzIHw9IF9QQUdFX05YX0JJVDsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSBwMm1fYWNjZXNzX3J4OgorICAgIGNhc2UgcDJtX2FjY2Vzc19y eDJydzoKKyAgICAgICAgKmZsYWdzICY9IH5fUEFHRV9SVzsKKyAgICAgICAgYnJlYWs7CisgICAg Y2FzZSBwMm1fYWNjZXNzX3J3OgorICAgICAgICAqZmxhZ3MgfD0gX1BBR0VfTlhfQklUOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIHAybV9hY2Nlc3Nfcnd4OgorICAgIGRlZmF1bHQ6CisgICAg ICAgIGJyZWFrOworICAgIH0KK30KKworLyoKKyAqIFNldCB0aGUgcGFnZSBwZXJtaXNzaW9uIG9m IHRoZSBtZm4uIFRoaXMgaW4gZWZmZWN0IHJlbW92ZXMgYWxsIHNoYWRvdworICogbWFwcGluZ3Mg b2YgdGhhdCBtZm4uIFRoZSBhY2Nlc3MgdHlwZSBvZiB0aGF0IG1mbiBpcyBzdG9yZWQgaW4gdGhl IGFjY2VzcworICogbG9va3VwIHRhYmxlLgorICovCitzdGF0aWMgaW50CitwMm1fbWVtX2FjY2Vz c19zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1m bl90IG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRl ciwgcDJtX3R5cGVfdCBwMm10LAorICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9hY2Nlc3Nf dCBwMm1hKQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSBwMm0tPmRvbWFpbjsKKyAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKKworICAgIEFTU0VSVChzaGFk b3dfbW9kZV9lbmFibGVkKGQpKTsKKworICAgIC8qCisgICAgICogRm9yIFBWIGRvbWFpbnMgd2Ug b25seSBzdXBwb3J0IHIsIHJ3LCByeCwgcngycncgYW5kIHJ3eCBhY2Nlc3MKKyAgICAgKiBwZXJt aXNzaW9ucworICAgICAqLworICAgIHN3aXRjaCAoIHAybWEgKQorICAgIHsKKyAgICBjYXNlIHAy bV9hY2Nlc3NfbjoKKyAgICBjYXNlIHAybV9hY2Nlc3NfdzoKKyAgICBjYXNlIHAybV9hY2Nlc3Nf eDoKKyAgICBjYXNlIHAybV9hY2Nlc3Nfd3g6CisgICAgY2FzZSBwMm1fYWNjZXNzX24ycnd4Ogor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg ICB9CisKKyAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKHBhZ2UpICE9IGQgKQorICAgICAgICByZXR1 cm4gLUVOT0VOVDsKKworICAgIHBhZ2luZ19sb2NrKGQpOworCisgICAgc2hhZG93X3NldF9hY2Nl c3MocGFnZSwgcDJtYSk7CisKKyAgICBBU1NFUlQoZC0+dmNwdSAmJiBkLT52Y3B1WzBdKTsKKyAg ICBpZiAoIHNoX3JlbW92ZV9hbGxfbWFwcGluZ3MoZC0+dmNwdVswXSwgbWZuKSApCisgICAgICAg IGZsdXNoX3RsYl9tYXNrKGQtPmRvbWFpbl9kaXJ0eV9jcHVtYXNrKTsKKworICAgIHBhZ2luZ191 bmxvY2soZCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogR2V0IHRoZSBwYWdlIHBlcm1pc3Np b24gb2YgdGhlIG1mbiBmcm9tIHBhZ2VfaW5mby0+c2hhZG93X2ZsYWdzICovCitzdGF0aWMgbWZu X3QKK3AybV9tZW1fYWNjZXNzX2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90ICp0LCBw Mm1fYWNjZXNzX3QgKmEsIHAybV9xdWVyeV90IHEsCisgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50ICpwYWdlX29yZGVyKQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSBwMm0t PmRvbWFpbjsKKyAgICAvKiBGb3IgUFYgZ3Vlc3RzIG1mbiA9PSBnZm4gKi8KKyAgICBtZm5fdCBt Zm4gPSBfbWZuKGdmbik7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IG1mbl90b19wYWdl KG1mbik7CisKKyAgICBBU1NFUlQoc2hhZG93X21vZGVfZW5hYmxlZChkKSk7CisKKyAgICAqdCA9 IHAybV9yYW1fcnc7CisKKyAgICBpZiAoIHBhZ2VfZ2V0X293bmVyKHBhZ2UpICE9IGQgKQorICAg ICAgICByZXR1cm4gX21mbihJTlZBTElEX01GTik7CisKKyAgICAqYSA9IHNoYWRvd19nZXRfYWNj ZXNzKHBhZ2UpOworICAgIHJldHVybiBtZm47Cit9CisKKy8qIFJlc2V0IHRoZSBzZXRfZW50cnkg YW5kIGdldF9lbnRyeSBmdW5jdGlvbiBwb2ludGVycyAqLwordm9pZCBwMm1fbWVtX2FjY2Vzc19y ZXNldChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQoreworICAgIHAybV9wdF9pbml0KHAybSk7Cit9 CisKKy8qIFNldCB0aGUgc2V0X2VudHJ5IGFuZCBnZXRfZW50cnkgZnVuY3Rpb24gcG9pbnRlcnMg Ki8KK3ZvaWQgcDJtX21lbV9hY2Nlc3NfaW5pdChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQorewor ICAgIHAybS0+c2V0X2VudHJ5ID0gcDJtX21lbV9hY2Nlc3Nfc2V0X2VudHJ5OworICAgIHAybS0+ Z2V0X2VudHJ5ID0gcDJtX21lbV9hY2Nlc3NfZ2V0X2VudHJ5OworfQorCisvKgorICogTG9jYWwg dmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNp Yy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5k ZXggNjQyZWMyOC4uYjI3NWJmYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGFz bS9tZW1fZXZlbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvbWVtX2V2ZW50Lmg+CiAjaW5jbHVkZSA8 YXNtL21lbV9zaGFyaW5nLmg+CisjaW5jbHVkZSA8YXNtL3NoYWRvdy5oPgogI2luY2x1ZGUgPHhl bi9ldmVudC5oPgogI2luY2x1ZGUgPGFzbS9odm0vbmVzdGVkaHZtLmg+CiAjaW5jbHVkZSA8YXNt L2h2bS9zdm0vYW1kLWlvbW11LXByb3RvLmg+CkBAIC0yNDcsNyArMjQ4LDkgQEAgbWZuX3QgX19n ZXRfZ2ZuX3R5cGVfYWNjZXNzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcg Z2ZuLAogICAgIGlmICggcSAmIFAyTV9VTlNIQVJFICkKICAgICAgICAgcSB8PSBQMk1fQUxMT0M7 CiAKLSAgICBpZiAoICFwMm0gfHwgIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShwMm0tPmRvbWFpbikg KQorICAgIGlmICggIXAybSB8fAorICAgICAgICAgKCFwYWdpbmdfbW9kZV90cmFuc2xhdGUocDJt LT5kb21haW4pICYmCisgICAgICAgICAhbWVtX2V2ZW50X2NoZWNrX3JpbmcoJnAybS0+ZG9tYWlu LT5tZW1fZXZlbnQtPmFjY2VzcykpICkKICAgICB7CiAgICAgICAgIC8qIE5vdCBuZWNlc3Nhcmls eSB0cnVlLCBidXQgZm9yIG5vbi10cmFuc2xhdGVkIGd1ZXN0cywgd2UgY2xhaW0KICAgICAgICAg ICogaXQncyB0aGUgbW9zdCBnZW5lcmljIGtpbmQgb2YgbWVtb3J5ICovCkBAIC0yODQsNyArMjg3 LDkgQEAgbWZuX3QgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0s IHVuc2lnbmVkIGxvbmcgZ2ZuLAogCiB2b2lkIF9fcHV0X2dmbihzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCB1bnNpZ25lZCBsb25nIGdmbikKIHsKLSAgICBpZiAoICFwMm0gfHwgIXBhZ2luZ19tb2Rl X3RyYW5zbGF0ZShwMm0tPmRvbWFpbikgKQorICAgIGlmICggIXAybSB8fAorICAgICAgICAgKCFw YWdpbmdfbW9kZV90cmFuc2xhdGUocDJtLT5kb21haW4pICYmCisgICAgICAgICAhbWVtX2V2ZW50 X2NoZWNrX3JpbmcoJnAybS0+ZG9tYWluLT5tZW1fZXZlbnQtPmFjY2VzcykpICkKICAgICAgICAg LyogTm90aGluZyB0byBkbyBpbiB0aGlzIGNhc2UgKi8KICAgICAgICAgcmV0dXJuOwogCkBAIC0x NDI2LDE4ICsxNDMxLDEwIEBAIHZvaWQgcDJtX21lbV9hY2Nlc3NfcmVzdW1lKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgfQogfQogCi0vKiBTZXQgYWNjZXNzIHR5cGUgZm9yIGEgcmVnaW9uIG9mIHBm bnMuCi0gKiBJZiBzdGFydF9wZm4gPT0gLTF1bCwgc2V0cyB0aGUgZGVmYXVsdCBhY2Nlc3MgdHlw ZSAqLwotbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBwZm4sIHVpbnQzMl90IG5yLAotICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg c3RhcnQsIHVpbnQzMl90IG1hc2ssIHhlbm1lbV9hY2Nlc3NfdCBhY2Nlc3MpCitpbnQgcDJtX2Nv bnZlcnRfeGVubWVtX2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeGVubWVtX2FjY2Vzc190IG1lbV9hY2Nlc3MsIHAybV9hY2Nlc3Nf dCAqYSkKIHsKLSAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQp OwotICAgIHAybV9hY2Nlc3NfdCBhLCBfYTsKLSAgICBwMm1fdHlwZV90IHQ7Ci0gICAgbWZuX3Qg bWZuOwotICAgIGxvbmcgcmMgPSAwOwotCi0gICAgc3RhdGljIGNvbnN0IHAybV9hY2Nlc3NfdCBt ZW1hY2Nlc3NbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgcDJtX2FjY2Vzc190IHAybWFbXSA9IHsK ICNkZWZpbmUgQUNDRVNTKGFjKSBbWEVOTUVNX2FjY2Vzc18jI2FjXSA9IHAybV9hY2Nlc3NfIyNh YwogICAgICAgICBBQ0NFU1MobiksCiAgICAgICAgIEFDQ0VTUyhyKSwKQEAgLTE0NTIsMjEgKzE0 NDksNDIgQEAgbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBwZm4sIHVpbnQzMl90IG5yLAogI3VuZGVmIEFDQ0VTUwogICAgIH07CiAKLSAgICBz d2l0Y2ggKCBhY2Nlc3MgKQorICAgIHN3aXRjaCAoIG1lbV9hY2Nlc3MgKQogICAgIHsKLSAgICBj YXNlIDAgLi4uIEFSUkFZX1NJWkUobWVtYWNjZXNzKSAtIDE6Ci0gICAgICAgIGEgPSBtZW1hY2Nl c3NbYWNjZXNzXTsKKyAgICBjYXNlIDAgLi4uIEFSUkFZX1NJWkUocDJtYSkgLSAxOgorICAgICAg ICAqYSA9IHAybWFbbWVtX2FjY2Vzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWEVOTUVN X2FjY2Vzc19kZWZhdWx0OgotICAgICAgICBhID0gcDJtLT5kZWZhdWx0X2FjY2VzczsKKyAgICAg ICAgKmEgPSBwMm0tPmRlZmF1bHRfYWNjZXNzOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8q CisgKiBTZXQgYWNjZXNzIHR5cGUgZm9yIGEgcmVnaW9uIG9mIHBmbnMuCisgKiBJZiBzdGFydF9w Zm4gPT0gLTF1bCwgc2V0cyB0aGUgZGVmYXVsdCBhY2Nlc3MgdHlwZSBmb3IgSFZNIGRvbWFpbnMK KyAqLworbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBwZm4sIHVpbnQzMl90IG5yLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg c3RhcnQsIHVpbnQzMl90IG1hc2ssIHhlbm1lbV9hY2Nlc3NfdCBhY2Nlc3MpCit7CisgICAgc3Ry dWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKKyAgICBwMm1fYWNjZXNz X3QgYSwgX2E7CisgICAgcDJtX3R5cGVfdCB0OworICAgIG1mbl90IG1mbjsKKyAgICBsb25nIHJj ID0gMDsKKworICAgIHJjID0gcDJtX2NvbnZlcnRfeGVubWVtX2FjY2VzcyhwMm0sIGFjY2Vzcywg JmEpOworICAgIGlmICggcmMgIT0gMCApCisgICAgICAgIHJldHVybiByYzsKIAogICAgIC8qIElm IHJlcXVlc3QgdG8gc2V0IGRlZmF1bHQgYWNjZXNzICovCiAgICAgaWYgKCBwZm4gPT0gfjB1bCAp CiAgICAgeworICAgICAgICBpZiAoIGlzX3B2X2RvbWFpbihkKSApCisgICAgICAgICAgICByZXR1 cm4gLUVOT1NZUzsKICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2VzcyA9IGE7CiAgICAgICAgIHJl dHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyBiL3hl bi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwppbmRleCAzMjc2NGJhLi40NzM5N2YxIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5j CkBAIC02MjcsNiArNjI3LDEzIEBAIHZvaWQgcGFnaW5nX3RlYXJkb3duKHN0cnVjdCBkb21haW4g KmQpCiAgICAgLyogY2xlYW4gdXAgbG9nIGRpcnR5IHJlc291cmNlcy4gKi8KICAgICBwYWdpbmdf bG9nX2RpcnR5X3RlYXJkb3duKGQpOwogCisgICAgLyoKKyAgICAgKiBSZXNldCBwMm0gc2V0dXAg aW4gdGhlIGNhc2Ugd2hlcmUgYSBtZW1fYWNjZXNzIGxpc3RlbmVyIGlzIHByZXNlbnQgd2hpbGUK KyAgICAgKiB0aGUgZG9tYWluIGlzIGJlaW5nIGRlc3Ryb3llZCBvciBpdCBjcmFzaGVkIHdpdGhv dXQgY2xlYW5pbmcgdXAuCisgICAgICovCisgICAgaWYgKCBpc19wdl9kb21haW4oZCkgKQorICAg ICAgICBwMm1fbWVtX2FjY2Vzc19yZXNldChwMm1fZ2V0X2hvc3RwMm0oZCkpOworCiAgICAgLyog TW92ZSBwb3B1bGF0ZS1vbi1kZW1hbmQgY2FjaGUgYmFjayB0byBkb21haW5fbGlzdCBmb3IgZGVz dHJ1Y3Rpb24gKi8KICAgICBwMm1fcG9kX2VtcHR5X2NhY2hlKGQpOwogfQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMKaW5kZXggM2M4MDNiNi4uOWFhY2Q4ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5j CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KICNpbmNsdWRlIDxh c20vZmx1c2h0bGIuaD4KICNpbmNsdWRlIDxhc20vc2hhZG93Lmg+CisjaW5jbHVkZSA8YXNtL21l bV9ldmVudC5oPgogI2luY2x1ZGUgPHhlbi9udW1hLmg+CiAjaW5jbHVkZSAicHJpdmF0ZS5oIgog CkBAIC0xMzU2LDcgKzEzNTcsNyBAQCB2b2lkIHNoYWRvd19wcmVhbGxvYyhzdHJ1Y3QgZG9tYWlu ICpkLCB1MzIgdHlwZSwgdW5zaWduZWQgaW50IGNvdW50KQogCiAvKiBEZWxpYmVyYXRlbHkgZnJl ZSBhbGwgdGhlIG1lbW9yeSB3ZSBjYW46IHRoaXMgd2lsbCB0ZWFyIGRvd24gYWxsIG9mCiAgKiB0 aGlzIGRvbWFpbidzIHNoYWRvd3MgKi8KLXN0YXRpYyB2b2lkIHNoYWRvd19ibG93X3RhYmxlcyhz dHJ1Y3QgZG9tYWluICpkKSAKK3ZvaWQgc2hhZG93X2Jsb3dfdGFibGVzKHN0cnVjdCBkb21haW4g KmQpCiB7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqc3AsICp0OwogICAgIHN0cnVjdCB2Y3B1ICp2 ID0gZC0+dmNwdVswXTsKQEAgLTI0MzUsMTUgKzI0MzYsMjAgQEAgaW50IHNoX3JlbW92ZV9hbGxf bWFwcGluZ3Moc3RydWN0IHZjcHUgKnYsIG1mbl90IGdtZm4pCiAgICAgLyogSWYgdGhhdCBkaWRu J3QgY2F0Y2ggdGhlIG1hcHBpbmcsIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nICovCiAgICAgaWYg KCAhc2hfY2hlY2tfcGFnZV9oYXNfbm9fcmVmcyhwYWdlKSApCiAgICAgewotICAgICAgICAvKiBE b24ndCBjb21wbGFpbiBpZiB3ZSdyZSBpbiBIVk0gYW5kIHRoZXJlIGFyZSBzb21lIGV4dHJhIG1h cHBpbmdzOiAKKyAgICAgICAgLyoKKyAgICAgICAgICogRG9uJ3QgY29tcGxhaW4gaWYgd2UncmUg aW4gSFZNIGFuZCB0aGVyZSBhcmUgc29tZSBleHRyYSBtYXBwaW5nczoKICAgICAgICAgICogVGhl IHFlbXUgaGVscGVyIHByb2Nlc3MgaGFzIGFuIHVudHlwZWQgbWFwcGluZyBvZiB0aGlzIGRvbSdz IFJBTSAKICAgICAgICAgICogYW5kIHRoZSBIVk0gcmVzdG9yZSBwcm9ncmFtIHRha2VzIGFub3Ro ZXIuCiAgICAgICAgICAqIEFsc28gYWxsb3cgb25lIHR5cGVkIHJlZmNvdW50IGZvciB4ZW5oZWFw IHBhZ2VzLCB0byBtYXRjaAotICAgICAgICAgKiBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KCku ICovCisgICAgICAgICAqIHNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QoKS4KKyAgICAgICAgICog UFYgZG9tYWlucyB0aGF0IGhhdmUgYSBtZW1fYWNjZXNzIGxpc3RlbmVyLCBydW5zIGluIHNoYWRv dyBtb2RlCisgICAgICAgICAqIHdpdGhvdXQgcmVmY291bnRzLgorICAgICAgICAgKi8KICAgICAg ICAgaWYgKCAhKHNoYWRvd19tb2RlX2V4dGVybmFsKHYtPmRvbWFpbikKICAgICAgICAgICAgICAg ICYmIChwYWdlLT5jb3VudF9pbmZvICYgUEdDX2NvdW50X21hc2spIDw9IDMKICAgICAgICAgICAg ICAgICYmICgocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfY291bnRfbWFzaykKLSAgICAg ICAgICAgICAgICAgICA9PSAhIWlzX3hlbl9oZWFwX3BhZ2UocGFnZSkpKSApCisgICAgICAgICAg ICAgICAgICAgPT0gISFpc194ZW5faGVhcF9wYWdlKHBhZ2UpKSkgJiYKKyAgICAgICAgICAgICAh bWVtX2V2ZW50X2NoZWNrX3JpbmcoJnYtPmRvbWFpbi0+bWVtX2V2ZW50LT5hY2Nlc3MpICkKICAg ICAgICAgewogICAgICAgICAgICAgU0hBRE9XX0VSUk9SKCJjYW4ndCBmaW5kIGFsbCBtYXBwaW5n cyBvZiBtZm4gJWx4OiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjPSUwOGx4IHQ9JTA4 bHhcbiIsIG1mbl94KGdtZm4pLCAKQEAgLTI5NTMsNyArMjk1OSw3IEBAIGludCBzaGFkb3dfZW5h YmxlKHN0cnVjdCBkb21haW4gKmQsIHUzMiBtb2RlKQogICAgICAgICBwYWdpbmdfdW5sb2NrKGQp OwogICAgIH0KIAotICAgIC8qIEFsbG93IHAybSBhbmQgbG9nLWRpcnR5IGNvZGUgdG8gYm9ycm93 IHNoYWRvdyBtZW1vcnkgKi8KKyAgICAvKiBBbGxvdyBwMm0sIGxvZy1kaXJ0eSBhbmQgbWVtX2Fj Y2VzcyBjb2RlIHRvIGJvcnJvdyBzaGFkb3cgbWVtb3J5ICovCiAgICAgZC0+YXJjaC5wYWdpbmcu YWxsb2NfcGFnZSA9IHNoYWRvd19hbGxvY19wMm1fcGFnZTsKICAgICBkLT5hcmNoLnBhZ2luZy5m cmVlX3BhZ2UgPSBzaGFkb3dfZnJlZV9wMm1fcGFnZTsKIApAQCAtMzE5Nyw3ICszMjAzLDcgQEAg c3RhdGljIGludCBzaGFkb3dfb25lX2JpdF9lbmFibGUoc3RydWN0IGRvbWFpbiAqZCwgdTMyIG1v ZGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBBbGxvdyBwMm0gYW5kIGxvZy1kaXJ0eSBj b2RlIHRvIGJvcnJvdyBzaGFkb3cgbWVtb3J5ICovCisgICAgLyogQWxsb3cgcDJtLCBsb2ctZGly dHkgYW5kIG1lbV9hY2Nlc3MgY29kZSB0byBib3Jyb3cgc2hhZG93IG1lbW9yeSAqLwogICAgIGQt PmFyY2gucGFnaW5nLmFsbG9jX3BhZ2UgPSBzaGFkb3dfYWxsb2NfcDJtX3BhZ2U7CiAgICAgZC0+ YXJjaC5wYWdpbmcuZnJlZV9wYWdlID0gc2hhZG93X2ZyZWVfcDJtX3BhZ2U7CiAKQEAgLTM2NjEs NiArMzY2Nyw2MyBAQCBvdXQ6CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIG1lbV9hY2Nl c3Mgc3VwcG9ydCAqLworCisvKgorICogU2hhZG93IHNwZWNpZmljIGNvZGUgd2hpY2ggaXMgY2Fs bGVkIGluIFhFTl9ET01DVExfTUVNX0VWRU5UX09QX0FDQ0VTU19FTkFCTEUKKyAqIGZvciBQViBn dWVzdHMuCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLgorICovCitpbnQgc2hhZG93X2VuYWJsZV9t ZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaW50IHJldDsKKworICAgIHBhZ2lu Z19sb2NrKGQpOworCisjaWYgKFNIQURPV19PUFRJTUlaQVRJT05TICYgU0hPUFRfTElOVVhfTDNf VE9QTEVWRUwpCisgICAgLyoKKyAgICAgKiAzMmJpdCBQViBndWVzdHMgb24gNjRiaXQgeGVuIGJl aGF2ZSBsaWtlIG9sZGVyIDY0Yml0IGxpbnV4OiB0aGV5CisgICAgICogY2hhbmdlIGFuIGw0ZSBp bnN0ZWFkIG9mIGNyMyB0byBzd2l0Y2ggdGFibGVzLiAgR2l2ZSB0aGVtIHRoZQorICAgICAqIHNh bWUgb3B0aW1pemF0aW9uCisgICAgICovCisgICAgaWYgKCBpc19wdl8zMm9uNjRfZG9tYWluKGQp ICkKKyAgICAgICAgZC0+YXJjaC5wYWdpbmcuc2hhZG93Lm9wdF9mbGFncyA9IFNIT1BUX0xJTlVY X0wzX1RPUExFVkVMOworI2VuZGlmCisKKyAgICByZXQgPSBzaGFkb3dfb25lX2JpdF9lbmFibGUo ZCwgUEdfU0hfZW5hYmxlKTsKKyAgICBwYWdpbmdfdW5sb2NrKGQpOworCisgICAgcmV0dXJuIHJl dDsKK30KKworLyoKKyAqIFNoYWRvdyBzcGVjaWZpYyBjb2RlIHdoaWNoIGlzIGNhbGxlZCBpbgor ICogWEVOX0RPTUNUTF9NRU1fRVZFTlRfT1BfQUNDRVNTX0RJU0FCTEUgZm9yIFBWIGd1ZXN0cwor ICovCitpbnQgc2hhZG93X2Rpc2FibGVfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkKQorewor ICAgIGludCByZXQ7CisKKyAgICBwYWdpbmdfbG9jayhkKTsKKyAgICByZXQgPSBzaGFkb3dfb25l X2JpdF9kaXNhYmxlKGQsIFBHX1NIX2VuYWJsZSk7CisgICAgcGFnaW5nX3VubG9jayhkKTsKKwor ICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgc2hhZG93X3NldF9hY2Nlc3Moc3RydWN0IHBhZ2Vf aW5mbyAqcGFnZSwgcDJtX2FjY2Vzc190IGEpCit7CisgICAgcGFnZS0+c2hhZG93X2ZsYWdzID0g KHBhZ2UtPnNoYWRvd19mbGFncyAmIH5TSEZfYWNjZXNzX21hc2spIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBhIDw8IFNIRl9hY2Nlc3Nfc2hpZnQ7CisKK30KKworcDJtX2FjY2Vzc190IHNo YWRvd19nZXRfYWNjZXNzKHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UpCit7CisgICAgcmV0dXJuIChw YWdlLT5zaGFkb3dfZmxhZ3MgJiBTSEZfYWNjZXNzX21hc2spID4+IFNIRl9hY2Nlc3Nfc2hpZnQ7 Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFNoYWRvdy1jb250cm9sIFhFTl9ET01DVEwg ZGlzcGF0Y2hlciAqLwogCiBpbnQgc2hhZG93X2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvbXVsdGkuYwppbmRleCBjNmM5ZDEwLi5kYjMwMzk2IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9t dWx0aS5jCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSA8YXNtL2h2bS9jYWNoZWF0dHIuaD4K ICNpbmNsdWRlIDxhc20vbXRyci5oPgogI2luY2x1ZGUgPGFzbS9ndWVzdF9wdC5oPgorI2luY2x1 ZGUgPGFzbS9tZW1fZXZlbnQuaD4KKyNpbmNsdWRlIDxhc20vbWVtX2FjY2Vzcy5oPgogI2luY2x1 ZGUgPHB1YmxpYy9zY2hlZC5oPgogI2luY2x1ZGUgInByaXZhdGUuaCIKICNpbmNsdWRlICJ0eXBl cy5oIgpAQCAtNjI1LDYgKzYyNywxNCBAQCBfc2hfcHJvcGFnYXRlKHN0cnVjdCB2Y3B1ICp2LAog ICAgICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIFByb3BhZ2F0ZSBhY2Nlc3MgcGVybWlzc2lv bnMgKi8KKyAgICBpZiAoIHVubGlrZWx5KG1lbV9ldmVudF9jaGVja19yaW5nKCZkLT5tZW1fZXZl bnQtPmFjY2VzcykpICYmCisgICAgICAgICBsZXZlbCA9PSAxICYmICFzaF9tZm5faXNfYV9wYWdl X3RhYmxlKHRhcmdldF9tZm4pICkKKyAgICB7CisgICAgICAgIHAybV9hY2Nlc3NfdCBhID0gc2hh ZG93X2dldF9hY2Nlc3MobWZuX3RvX3BhZ2UodGFyZ2V0X21mbikpOworICAgICAgICBwMm1fYWNj ZXNzX3RvX2ZsYWdzKCZzZmxhZ3MsIGEpOworICAgIH0KKwogICAgIC8vIFNldCB0aGUgQSZEIGJp dHMgZm9yIGhpZ2hlciBsZXZlbCBzaGFkb3dzLgogICAgIC8vIEhpZ2hlciBsZXZlbCBlbnRyaWVz IGRvIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGhhdmUgZGlydHkgYml0cywgYnV0CiAgICAgLy8g c2luY2Ugd2UgdXNlIHNoYWRvdyBsaW5lYXIgdGFibGVzLCBlYWNoIG9mIHRoZXNlIGVudHJpZXMg bWF5LCBhdCBzb21lCkBAIC0yODIyLDYgKzI4MzIsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1 bHQoc3RydWN0IHZjcHUgKnYsCiAgICAgaW50IHI7CiAgICAgZmV0Y2hfdHlwZV90IGZ0ID0gMDsK ICAgICBwMm1fdHlwZV90IHAybXQ7CisgICAgbWVtX2V2ZW50X3JlcXVlc3RfdCAqcmVxX3B0ciA9 IE5VTEw7CiAgICAgdWludDMyX3QgcmM7CiAgICAgaW50IHZlcnNpb247CiAjaWYgU0hBRE9XX09Q VElNSVpBVElPTlMgJiBTSE9QVF9GQVNUX0VNVUxBVElPTgpAQCAtMzAwOSw3ICszMDIwLDg0IEBA IHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKIAogICAgIC8qIFdoYXQg bWZuIGlzIHRoZSBndWVzdCB0cnlpbmcgdG8gYWNjZXNzPyAqLwogICAgIGdmbiA9IGd1ZXN0X2wx ZV9nZXRfZ2ZuKGd3LmwxZSk7Ci0gICAgZ21mbiA9IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7Cisg ICAgaWYgKCBsaWtlbHkoIW1lbV9ldmVudF9jaGVja19yaW5nKCZkLT5tZW1fZXZlbnQtPmFjY2Vz cykpICkKKyAgICAgICAgZ21mbiA9IGdldF9nZm4oZCwgZ2ZuLCAmcDJtdCk7CisgICAgLyoKKyAg ICAgKiBBIG1lbV9hY2Nlc3MgbGlzdGVuZXIgaXMgcHJlc2VudCwgc28gd2Ugd2lsbCBmaXJzdCBj aGVjayBpZiBhIHZpb2xhdGlvbgorICAgICAqIGhhcyBvY2N1cnJlZC4KKyAgICAgKi8KKyAgICBl bHNlCisgICAgeworICAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0 cDJtKHYtPmRvbWFpbik7CisgICAgICAgIHAybV9hY2Nlc3NfdCBwMm1hOworCisgICAgICAgIGdt Zm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKHAybSwgZ2ZuX3goZ2ZuKSwgJnAybXQsICZwMm1hLCAw LCBOVUxMKTsKKyAgICAgICAgaWYgKCBtZm5fdmFsaWQoZ21mbikgJiYgIXNoX21mbl9pc19hX3Bh Z2VfdGFibGUoZ21mbikKKyAgICAgICAgICAgICAmJiByZWdzLT5lcnJvcl9jb2RlICYgUEZFQ19w YWdlX3ByZXNlbnQKKyAgICAgICAgICAgICAmJiAhKHJlZ3MtPmVycm9yX2NvZGUgJiBQRkVDX3Jl c2VydmVkX2JpdCkgKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgdmlvbGF0aW9uID0gMDsK KyAgICAgICAgICAgIGJvb2xfdCBhY2Nlc3NfdyA9ICEhKHJlZ3MtPmVycm9yX2NvZGUgJiBQRkVD X3dyaXRlX2FjY2Vzcyk7CisgICAgICAgICAgICBib29sX3QgYWNjZXNzX3ggPSAhIShyZWdzLT5l cnJvcl9jb2RlICYgUEZFQ19pbnNuX2ZldGNoKTsKKyAgICAgICAgICAgIGJvb2xfdCBhY2Nlc3Nf ciA9IGFjY2Vzc194ID8gMCA6ICFhY2Nlc3NfdzsKKworICAgICAgICAgICAgLyogSWYgdGhlIGFj Y2VzcyBpcyBhZ2FpbnN0IHRoZSBwZXJtaXNzaW9ucywgdGhlbiBzZW5kIHRvIG1lbV9ldmVudCAq LworICAgICAgICAgICAgc3dpdGNoICggcDJtYSApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICBjYXNlIHAybV9hY2Nlc3NfcjoKKyAgICAgICAgICAgICAgICB2aW9sYXRpb24gPSBhY2Nlc3Nf dyB8fCBhY2Nlc3NfeDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug cDJtX2FjY2Vzc19yeDoKKyAgICAgICAgICAgIGNhc2UgcDJtX2FjY2Vzc19yeDJydzoKKyAgICAg ICAgICAgICAgICB2aW9sYXRpb24gPSBhY2Nlc3NfdzsKKyAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgIGNhc2UgcDJtX2FjY2Vzc19ydzoKKyAgICAgICAgICAgICAgICB2aW9sYXRp b24gPSBhY2Nlc3NfeDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug cDJtX2FjY2Vzc19yd3g6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRG8g bm90IHBvbGljZSB3cml0ZXMgdG8gZ3Vlc3QgbWVtb3J5IGZyb20gdGhlIFhlbiBoeXBlcnZpc29y LgorICAgICAgICAgICAgICogVGhpcyBrZWVwcyBQViBtZW1fYWNjZXNzIG9uIHBhciB3aXRoIEhW TS4gVHVybiBvZmYgQ1IwLldQIGhlcmUgdG8KKyAgICAgICAgICAgICAqIGFsbG93IHRoZSB3cml0 ZSB0byBnbyB0aHJvdWdoIGlmIHRoZSBndWVzdCBoYXMgbWFya2VkIHRoZSBwYWdlIGFzCisgICAg ICAgICAgICAgKiB3cml0YWJsZS4gVHVybiBpdCBiYWNrIG9uIGluIHRoZSBndWVzdCBhY2Nlc3Mg ZnVuY3Rpb25zCisgICAgICAgICAgICAgKiBfX2NvcHlfdG9fdXNlciAvIF9fcHV0X3VzZXJfc2l6 ZSgpIGFmdGVyIHRoZSB3cml0ZSBpcyBjb21wbGV0ZWQuCisgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgIGlmICggdmlvbGF0aW9uICYmIGFjY2Vzc193ICYmCisgICAgICAgICAgICAgICAgIHJl Z3MtPmVpcCA+PSBYRU5fVklSVF9TVEFSVCAmJiByZWdzLT5laXAgPD0gWEVOX1ZJUlRfRU5EICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNyMCA9IHJlYWRf Y3IwKCk7CisKKyAgICAgICAgICAgICAgICB2aW9sYXRpb24gPSAwOworICAgICAgICAgICAgICAg IGlmICggY3IwICYgWDg2X0NSMF9XUCAmJgorICAgICAgICAgICAgICAgICAgICAgZ3Vlc3RfbDFl X2dldF9mbGFncyhndy5sMWUpICYgX1BBR0VfUlcgKQorICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgY3IwICY9IH5YODZfQ1IwX1dQOworICAgICAgICAgICAgICAgICAgICB3 cml0ZV9jcjAoY3IwKTsKKyAgICAgICAgICAgICAgICAgICAgdi0+YXJjaC5wdl92Y3B1Lm5lZWRf Y3IwX3dwX3NldCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZiAoIHZpb2xhdGlvbiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg cGFkZHJfdCBncGEgPSAobWZuX3goZ21mbikgPDwgUEFHRV9TSElGVCkgKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHZhICYgKCgxIDw8IFBBR0VfU0hJRlQpIC0gMSkpOworICAgICAg ICAgICAgICAgIGlmICggIXAybV9tZW1fYWNjZXNzX2NoZWNrKGdwYSwgMSwgdmEsIGFjY2Vzc19y LCBhY2Nlc3NfdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Y2Nlc3NfeCwgJnJlcV9wdHIpICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgIFNIQURPV19QUklOVEsoIlBhZ2UgYWNjZXNzICVjJWMlYyBmb3IgZ21mbj0lIlBSSV9tZm4i IHAybWE6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY2Nlc3Nf ciA/ICdyJyA6ICctJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjY2Vz c193ID8gJ3cnIDogJy0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWNj ZXNzX3ggPyAneCcgOiAnLScpLCBtZm5feChnbWZuKSwgcDJtYSk7CisgICAgICAgICAgICAgICAg ICAgIC8qIFJpZ2h0cyBub3QgcHJvbW90ZWQsIHZjcHUgcGF1c2VkLCB3b3JrIGhlcmUgaXMgZG9u ZSAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9wdXRfZ2ZuOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICggc2hhZG93 X21vZGVfcmVmY291bnRzKGQpICYmIAogICAgICAgICAgKCghcDJtX2lzX3ZhbGlkKHAybXQpICYm ICFwMm1faXNfZ3JhbnQocDJtdCkpIHx8CkBAIC0zMjE0LDcgKzMzMDIsMTggQEAgc3RhdGljIGlu dCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAgIFNIQURPV19QUklOVEsoImZpeGVk XG4iKTsKICAgICBzaGFkb3dfYXVkaXRfdGFibGVzKHYpOwogICAgIHBhZ2luZ191bmxvY2soZCk7 Cisgb3V0X3B1dF9nZm46CiAgICAgcHV0X2dmbihkLCBnZm5feChnZm4pKTsKKworICAgIC8qIFNl bmQgYWNjZXNzIHZpb2xhdGlvbiB0byBtZW1fYWNjZXNzIGxpc3RlbmVyICovCisgICAgaWYgKCB1 bmxpa2VseShyZXFfcHRyICE9IE5VTEwpICkKKyAgICB7CisgICAgICAgIFNIQURPV19QUklOVEso Im1lbV9hY2Nlc3MgU0VORCB2aW9sYXRpb24gbWZuOiAweCUiUFJJX21mbiJcbiIsCisgICAgICAg ICAgICAgICAgICAgICAgbWZuX3goZ21mbikpOworICAgICAgICBtZW1fYWNjZXNzX3NlbmRfcmVx KGQsIHJlcV9wdHIpOworICAgICAgICB4ZnJlZShyZXFfcHRyKTsKKyAgICB9CisKICAgICByZXR1 cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOwogCiAgZW11bGF0ZToKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRl LmgKaW5kZXggYjc3OGZjZi4uZWRkYjNkYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3No YWRvdy9wcml2YXRlLmgKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKQEAg LTI2MCw2ICsyNjAsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgc2hfdHlwZV9oYXNfdXBfcG9pbnRl cihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHQpCiAKICNkZWZpbmUgU0hGX0wxX0FOWSAg KFNIRl9MMV8zMnxTSEZfTDFfUEFFfFNIRl9MMV82NCkKIAorLyoKKyAqIEJpdHMgMTQtMTcgb2Yg cGFnZV9pbmZvLT5zaGFkb3dfZmxhZ3MgYXJlIHVzZWQgdG8gc3RvcmUgdGhlIHAybV9hY2Nlc3Nf dAorICogdmFsdWVzIG9mIFBWIHNoYWRvdyBkb21haW4gcGFnZXMuCisgKi8KKyNkZWZpbmUgU0hG X2FjY2Vzc19zaGlmdCAoU0hfdHlwZV9tYXhfc2hhZG93ICsgMXUpCisjZGVmaW5lIFNIRl9hY2Nl c3NfbWFzayAoMHhmdSA8PCBTSEZfYWNjZXNzX3NoaWZ0KQorCiAjaWYgKFNIQURPV19PUFRJTUla QVRJT05TICYgU0hPUFRfT1VUX09GX1NZTkMpIAogLyogTWFya3MgYSBndWVzdCBMMSBwYWdlIHRh YmxlIHdoaWNoIGlzIHNoYWRvd2VkIGJ1dCBub3Qgd3JpdGUtcHJvdGVjdGVkLgogICogSWYgc2V0 LCB0aGVuICpvbmx5KiBMMSBzaGFkb3dzIChTSEZfTDFfKikgYXJlIGFsbG93ZWQuIApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3NyYXQuYyBiL3hlbi9hcmNoL3g4Ni9zcmF0LmMKaW5kZXggMmIw NTI3Mi4uODNkNDZiYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NyYXQuYworKysgYi94ZW4v YXJjaC94ODYvc3JhdC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8eGVuL2FjcGkuaD4K ICNpbmNsdWRlIDx4ZW4vbnVtYS5oPgogI2luY2x1ZGUgPHhlbi9wZm4uaD4KKyNpbmNsdWRlIDx4 ZW4vZXJybm8uaD4KICNpbmNsdWRlIDxhc20vZTgyMC5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+ CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni91c2VyY29weS5jIGIveGVuL2FyY2gveDg2L3Vz ZXJjb3B5LmMKaW5kZXggNGNjNzhmNS4uZWVjZjQyOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L3VzZXJjb3B5LmMKKysrIGIveGVuL2FyY2gveDg2L3VzZXJjb3B5LmMKQEAgLTQ1LDYgKzQ1LDE4 IEBAIHVuc2lnbmVkIGxvbmcgX19jb3B5X3RvX3VzZXJfbGwodm9pZCBfX3VzZXIgKnRvLCBjb25z dCB2b2lkICpmcm9tLCB1bnNpZ25lZCBuKQogICAgICAgICA6ICJtZW1vcnkiICk7CiAgICAgY2xh YygpOwogCisgICAgLyoKKyAgICAgKiBBIG1lbV9hY2Nlc3MgbGlzdGVuZXIgd2FzIHByZXNlbnQg YW5kIFhlbiB0cmllZCB0byB3cml0ZSB0byBndWVzdCBtZW1vcnkuCisgICAgICogVG8gYWxsb3cg dGhpcyB3cml0ZSB0byBnbyB0aHJvdWdoIHdpdGhvdXQgYW4gZXZlbnQgYmVpbmcgc2VudCB0byB0 aGUKKyAgICAgKiBsaXN0ZW5lciBvciB0aGUgcGFnZXRhYmxlIGVudHJ5IGJlaW5nIG1vZGlmaWVk LCB3ZSBkaXNhYmxlZCBDUjAuV1AgaW4gdGhlCisgICAgICogc2hhZG93IHBhZ2VmYXVsdCBoYW5k bGVyLiBXZSBhcmUgZW5hYmxpbmcgaXQgYmFjayBoZXJlIGFnYWluLgorICAgICAqLworICAgIGlm ICggdW5saWtlbHkoY3VycmVudC0+YXJjaC5wdl92Y3B1Lm5lZWRfY3IwX3dwX3NldCkgKQorICAg IHsKKyAgICAgICAgd3JpdGVfY3IwKHJlYWRfY3IwKCkgfCBYODZfQ1IwX1dQKTsKKyAgICAgICAg Y3VycmVudC0+YXJjaC5wdl92Y3B1Lm5lZWRfY3IwX3dwX3NldCA9IDA7CisgICAgfQorCiAgICAg cmV0dXJuIF9fbjsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgYi94 ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwppbmRleCA3YjQwOTJkLi41YjZmNzQ3IDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYworKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwpA QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNtL251 bWEuaD4KICNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KKyNpbmNsdWRlIDxhc20vc2hhZG93Lmg+ CiAjaWZkZWYgQ09ORklHX1g4NgogI2luY2x1ZGUgPGFzbS9wMm0uaD4KICNpbmNsdWRlIDxhc20v c2V0dXAuaD4gLyogZm9yIGhpZ2htZW1fc3RhcnQgb25seSAqLwpAQCAtMTY2MCw2ICsxNjYxLDgg QEAgaW50IGFzc2lnbl9wYWdlcygKICAgICAgICAgcGFnZV9zZXRfb3duZXIoJnBnW2ldLCBkKTsK ICAgICAgICAgc21wX3dtYigpOyAvKiBEb21haW4gcG9pbnRlciBtdXN0IGJlIHZpc2libGUgYmVm b3JlIHVwZGF0aW5nIHJlZmNudC4gKi8KICAgICAgICAgcGdbaV0uY291bnRfaW5mbyA9IFBHQ19h bGxvY2F0ZWQgfCAxOworICAgICAgICBpZiAoIGlzX3B2X2RvbWFpbihkKSApCisgICAgICAgICAg ICBzaGFkb3dfc2V0X2FjY2VzcygmcGdbaV0sIHAybV9nZXRfaG9zdHAybShkKS0+ZGVmYXVsdF9h Y2Nlc3MpOwogICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwoJnBnW2ldLCAmZC0+cGFnZV9saXN0 KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZpZGVvL3Zlc2EuYyBiL3hlbi9k cml2ZXJzL3ZpZGVvL3Zlc2EuYwppbmRleCA1NzVkYjYyLi5lN2FhNTRhIDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy92aWRlby92ZXNhLmMKKysrIGIveGVuL2RyaXZlcnMvdmlkZW8vdmVzYS5jCkBA IC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSA8eGVuL3htYWxsb2MuaD4KICNpbmNsdWRlIDx4ZW4v a2VybmVsLmg+CiAjaW5jbHVkZSA8eGVuL3ZnYS5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5oPgog I2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSAiZm9u dC5oIgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvZG9tYWluLmgKaW5kZXggYWJmNTVmYi4uZjdiMDI2MiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2Rv bWFpbi5oCkBAIC0zODAsNiArMzgwLDEyIEBAIHN0cnVjdCBwdl92Y3B1CiAgICAgLyogRGVmZXJy ZWQgVkEtYmFzZWQgdXBkYXRlIHN0YXRlLiAqLwogICAgIGJvb2xfdCBuZWVkX3VwZGF0ZV9ydW5z dGF0ZV9hcmVhOwogICAgIHN0cnVjdCB2Y3B1X3RpbWVfaW5mbyBwZW5kaW5nX3N5c3RlbV90aW1l OworCisgICAgLyoKKyAgICAgKiBGbGFnIHRoYXQgdHJhY2tzIGlmIENSMC5XUCBuZWVkcyB0byBi ZSBzZXQgYWZ0ZXIgYSBYZW4gd3JpdGUgdG8gZ3Vlc3QKKyAgICAgKiBtZW1vcnkgd2hlbiBhIFBW IGRvbWFpbiBoYXMgYSBtZW1fYWNjZXNzIGxpc3RlbmVyIGF0dGFjaGVkIHRvIGl0LgorICAgICAq LworICAgIGJvb2xfdCBuZWVkX2NyMF93cF9zZXQ7CiB9OwogCiBzdHJ1Y3QgYXJjaF92Y3B1CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L21tLmgKaW5kZXggZDI1MzExNy4uZWM5NWZlYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaApAQCAtNiw3ICs2LDYgQEAK ICNpbmNsdWRlIDx4ZW4vbGlzdC5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1 ZGUgPGFzbS9pby5oPgotI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAKIC8qCiAgKiBQZXItcGFn ZS1mcmFtZSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJt LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4IDBkZGJhZGIuLjAyOWVlYTggMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaApAQCAtNjAzLDYgKzYwMywxMCBAQCBib29sX3QgcDJtX21lbV9hY2Nlc3NfY2hl Y2socGFkZHJfdCBncGEsIGJvb2xfdCBnbGFfdmFsaWQsIHVuc2lnbmVkIGxvbmcgZ2xhLAogLyog UmVzdW1lcyB0aGUgcnVubmluZyBvZiB0aGUgVkNQVSwgcmVzdGFydGluZyB0aGUgbGFzdCBpbnN0 cnVjdGlvbiAqLwogdm9pZCBwMm1fbWVtX2FjY2Vzc19yZXN1bWUoc3RydWN0IGRvbWFpbiAqZCk7 CiAKKy8qIENvbnZlcnQgeGVubWVtX2FjY2Vzc190IHRvIHAybV9hY2Nlc3NfdCAqLworaW50IHAy bV9jb252ZXJ0X3hlbm1lbV9hY2Nlc3Moc3RydWN0IHAybV9kb21haW4gKnAybSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhlbm1lbV9hY2Nlc3NfdCBtZW1fYWNjZXNzLCBwMm1fYWNj ZXNzX3QgKmEpOworCiAvKiBTZXQgYWNjZXNzIHR5cGUgZm9yIGEgcmVnaW9uIG9mIHBmbnMuCiAg KiBJZiBzdGFydF9wZm4gPT0gLTF1bCwgc2V0cyB0aGUgZGVmYXVsdCBhY2Nlc3MgdHlwZSAqLwog bG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBz dGFydF9wZm4sIHVpbnQzMl90IG5yLApAQCAtNjEzLDYgKzYxNywxOSBAQCBsb25nIHAybV9zZXRf bWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdWlu dDMyX3QgbnIsCiBpbnQgcDJtX2dldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgcGZuLAogICAgICAgICAgICAgICAgICAgICAgICB4ZW5tZW1fYWNjZXNzX3QgKmFj Y2Vzcyk7CiAKKy8qCisgKiBGdW5jdGlvbnMgc3BlY2lmaWMgdG8gdGhlIHAybS1tYSBpbXBsZW1l bnRhdGlvbgorICovCisKKy8qIFNldCB1cCBwMm0gZnVuY3Rpb24gcG9pbnRlcnMgbWVtX2FjY2Vz cyBpbXBsZW1lbnRhdGlvbiAqLwordm9pZCBwMm1fbWVtX2FjY2Vzc19pbml0KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0pOworCisvKiBSZXNldCBwMm0gZnVuY3Rpb24gcG9pbnRlcnMgKi8KK3ZvaWQg cDJtX21lbV9hY2Nlc3NfcmVzZXQoc3RydWN0IHAybV9kb21haW4gKnAybSk7CisKKy8qIENvbnZl cnQgYWNjZXNzIHBlcm1pc3Npb25zIHRvIHBhZ2UgdGFibGUgZmxhZ3MgKi8KK3ZvaWQgcDJtX2Fj Y2Vzc190b19mbGFncyh1MzIgKmZsYWdzLCBwMm1fYWNjZXNzX3QgYWNjZXNzKTsKKwogLyogCiAg KiBJbnRlcm5hbCBmdW5jdGlvbnMsIG9ubHkgY2FsbGVkIGJ5IG90aGVyIHAybSBjb2RlCiAgKi8K ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnaW5nLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L3BhZ2luZy5oCmluZGV4IDliOGY4ZGUuLmQzMGM1NjkgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcGFnaW5nLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcu aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgogI2luY2x1 ZGUgPGFzbS9mbHVzaHRsYi5oPgogI2luY2x1ZGUgPGFzbS9kb21haW4uaD4KKyNpbmNsdWRlIDxh c20vdWFjY2Vzcy5oPgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIE1hY3JvcyB0byB0ZWxs IHdoaWNoIHBhZ2luZyBtb2RlIGEgZG9tYWluIGlzIGluICovCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L3NoYWRvdy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zaGFkb3cuaAppbmRl eCBmNDBjYWI0Li4wNDIwZGQ4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3NoYWRv dy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2hhZG93LmgKQEAgLTg2LDYgKzg2LDE4IEBA IGludCBzaGFkb3dfZGlzYWJsZV9sb2dfZGlydHkoc3RydWN0IGRvbWFpbiAqZCk7CiAvKiBzaGFk b3cgY29kZSB0byBjYWxsIHdoZW4gYml0bWFwIGlzIGJlaW5nIGNsZWFuZWQgKi8KIHZvaWQgc2hh ZG93X2NsZWFuX2RpcnR5X2JpdG1hcChzdHJ1Y3QgZG9tYWluICpkKTsKIAorLyogc2hhZG93IGNv ZGUgdG8gY2FsbCB3aGVuIG1lbV9hY2Nlc3MgaXMgZW5hYmxlZCAqLworaW50IHNoYWRvd19lbmFi bGVfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkKTsKKworLyogc2hhZG93IGNvZGUgdG8gY2Fs bCB3aGVuIG1lbSBhY2Nlc3MgaXMgZGlzYWJsZWQgKi8KK2ludCBzaGFkb3dfZGlzYWJsZV9tZW1f YWNjZXNzKHN0cnVjdCBkb21haW4gKmQpOworCisvKiBTZXQgdGhlIGFjY2VzcyB2YWx1ZSBpbiBz aGFkb3dfZmxhZ3MgKi8KK3ZvaWQgc2hhZG93X3NldF9hY2Nlc3Moc3RydWN0IHBhZ2VfaW5mbyAq cGFnZSwgcDJtX2FjY2Vzc190IGEpOworCisvKiBHZXQgdGhlIGFjY2VzcyB2YWx1ZSBmcm9tIHNo YWRvd19mbGFncyAqLworcDJtX2FjY2Vzc190IHNoYWRvd19nZXRfYWNjZXNzKHN0cnVjdCBwYWdl X2luZm8gKnBhZ2UpOworCiAvKiBVcGRhdGUgYWxsIHRoZSB0aGluZ3MgdGhhdCBhcmUgZGVyaXZl ZCBmcm9tIHRoZSBndWVzdCdzIENSMC9DUjMvQ1I0LgogICogQ2FsbGVkIHRvIGluaXRpYWxpemUg cGFnaW5nIHN0cnVjdHVyZXMgaWYgdGhlIHBhZ2luZyBtb2RlCiAgKiBoYXMgY2hhbmdlZCwgYW5k IHdoZW4gYnJpbmdpbmcgdXAgYSBWQ1BVIGZvciB0aGUgZmlyc3QgdGltZS4gKi8KQEAgLTExNCw2 ICsxMjYsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2hhZG93X3JlbW92ZV9hbGxfc2hhZG93cyhz dHJ1Y3QgdmNwdSAqdiwgbWZuX3QgZ21mbikKIC8qIERpc2NhcmQgX2FsbF8gbWFwcGluZ3MgZnJv bSB0aGUgZG9tYWluJ3Mgc2hhZG93cy4gKi8KIHZvaWQgc2hhZG93X2Jsb3dfdGFibGVzX3Blcl9k b21haW4oc3RydWN0IGRvbWFpbiAqZCk7CiAKKy8qIFRlYXIgZG93biBhbGwgb2YgdGhpcyBkb21h aW4ncyBzaGFkb3dzICovCit2b2lkIHNoYWRvd19ibG93X3RhYmxlcyhzdHJ1Y3QgZG9tYWluICpk KTsKKwogI2VuZGlmIC8qIF9YRU5fU0hBRE9XX0ggKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYveDg2XzY0L3VhY2Nlc3MuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2 XzY0L3VhY2Nlc3MuaAppbmRleCA5NTNhYmU3Li42ZDEzZWM2IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L3g4Nl82NC91YWNjZXNzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94 ODZfNjQvdWFjY2Vzcy5oCkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBfX1g4Nl82NF9VQUNDRVNT X0gKICNkZWZpbmUgX19YODZfNjRfVUFDQ0VTU19ICiAKKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4K KwogI2RlZmluZSBDT01QQVRfQVJHX1hMQVRfVklSVF9CQVNFICgodm9pZCAqKUFSR19YTEFUX1NU QVJUKGN1cnJlbnQpKQogI2RlZmluZSBDT01QQVRfQVJHX1hMQVRfU0laRSAgICAgICgyKlBBR0Vf U0laRSkKIHN0cnVjdCB2Y3B1OwpAQCAtNjUsNiArNjcsMTEgQEAgZG8gewkJCQkJCQkJCVwKIAlj YXNlIDg6IF9fcHV0X3VzZXJfYXNtKHgscHRyLHJldHZhbCwicSIsIiIsImlyIixlcnJyZXQpO2Jy ZWFrOwlcCiAJZGVmYXVsdDogX19wdXRfdXNlcl9iYWQoKTsJCQkJCVwKIAl9CQkJCQkJCQlcCisg ICAgaWYgKCB1bmxpa2VseShjdXJyZW50LT5hcmNoLnB2X3ZjcHUubmVlZF9jcjBfd3Bfc2V0KSAp IFwKKyAgICB7IFwKKyAgICAgICAgd3JpdGVfY3IwKHJlYWRfY3IwKCkgfCBYODZfQ1IwX1dQKTsg XAorICAgICAgICBjdXJyZW50LT5hcmNoLnB2X3ZjcHUubmVlZF9jcjBfd3Bfc2V0ID0gMDsgXAor ICAgIH0gXAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSBfX2dldF91c2VyX3NpemUoeCxwdHIsc2l6 ZSxyZXR2YWwsZXJycmV0KQkJCVwKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK