From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 1/3] xen/ubsan: Import ubsan implementation from Linux 4.13 Date: Mon, 9 Oct 2017 15:11:17 +0100 Message-ID: <20171009141119.32595-2-wei.liu2@citrix.com> References: <20171009141119.32595-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e1YmY-0006vY-Hv for xen-devel@lists.xenproject.org; Mon, 09 Oct 2017 14:11:46 +0000 In-Reply-To: <20171009141119.32595-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCkEgZnV0dXJl IGNoYW5nZSB3aWxsIGFkanVzdCBpdCB0byBjb21waWxlIGluIFhlbi4KClNpZ25lZC1vZmYtYnk6 IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6 IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBXZWkgTGl1IDx3ZWku bGl1MkBjaXRyaXguY29tPgpBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgotLS0KIHhlbi9jb21tb24vdWJzYW4vTWFrZWZpbGUgfCAgIDEgKwogeGVuL2NvbW1vbi91YnNh bi91YnNhbi5jICB8IDQ1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmggIHwgIDg0ICsrKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCA1NDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21t b24vdWJzYW4vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3Vic2FuL3Vi c2FuLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmgKCmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL3Vic2FuL01ha2VmaWxlIGIveGVuL2NvbW1vbi91YnNhbi9NYWtl ZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lNmI4NWVhMTg3Ci0t LSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi91YnNhbi9NYWtlZmlsZQpAQCAtMCwwICsxIEBA CitvYmoteSArPSB1YnNhbi5vCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmMg Yi94ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZmIwNDA5ZGYxYgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vdWJzYW4v dWJzYW4uYwpAQCAtMCwwICsxLDQ1NiBAQAorLyoKKyAqIFVCU0FOIGVycm9yIHJlcG9ydGluZyBm dW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcyBD by4sIEx0ZC4KKyAqIEF1dGhvcjogQW5kcmV5IFJ5YWJpbmluIDxyeWFiaW5pbi5hLmFAZ21haWwu Y29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9i aXRvcHMuaD4KKyNpbmNsdWRlIDxsaW51eC9idWcuaD4KKyNpbmNsdWRlIDxsaW51eC9jdHlwZS5o PgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisKKyNpbmNs dWRlICJ1YnNhbi5oIgorCitjb25zdCBjaGFyICp0eXBlX2NoZWNrX2tpbmRzW10gPSB7CisJImxv YWQgb2YiLAorCSJzdG9yZSB0byIsCisJInJlZmVyZW5jZSBiaW5kaW5nIHRvIiwKKwkibWVtYmVy IGFjY2VzcyB3aXRoaW4iLAorCSJtZW1iZXIgY2FsbCBvbiIsCisJImNvbnN0cnVjdG9yIGNhbGwg b24iLAorCSJkb3duY2FzdCBvZiIsCisJImRvd25jYXN0IG9mIgorfTsKKworI2RlZmluZSBSRVBP UlRFRF9CSVQgMzEKKworI2lmIChCSVRTX1BFUl9MT05HID09IDY0KSAmJiBkZWZpbmVkKF9fQklH X0VORElBTikKKyNkZWZpbmUgQ09MVU1OX01BU0sgKH4oMVUgPDwgUkVQT1JURURfQklUKSkKKyNk ZWZpbmUgTElORV9NQVNLICAgKH4wVSkKKyNlbHNlCisjZGVmaW5lIENPTFVNTl9NQVNLICAgKH4w VSkKKyNkZWZpbmUgTElORV9NQVNLICh+KDFVIDw8IFJFUE9SVEVEX0JJVCkpCisjZW5kaWYKKwor I2RlZmluZSBWQUxVRV9MRU5HVEggNDAKKworc3RhdGljIGJvb2wgd2FzX3JlcG9ydGVkKHN0cnVj dCBzb3VyY2VfbG9jYXRpb24gKmxvY2F0aW9uKQoreworCXJldHVybiB0ZXN0X2FuZF9zZXRfYml0 KFJFUE9SVEVEX0JJVCwgJmxvY2F0aW9uLT5yZXBvcnRlZCk7Cit9CisKK3N0YXRpYyB2b2lkIHBy aW50X3NvdXJjZV9sb2NhdGlvbihjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJc3RydWN0IHNvdXJj ZV9sb2NhdGlvbiAqbG9jKQoreworCXByX2VycigiJXMgJXM6JWQ6JWRcbiIsIHByZWZpeCwgbG9j LT5maWxlX25hbWUsCisJCWxvYy0+bGluZSAmIExJTkVfTUFTSywgbG9jLT5jb2x1bW4gJiBDT0xV TU5fTUFTSyk7Cit9CisKK3N0YXRpYyBib29sIHN1cHByZXNzX3JlcG9ydChzdHJ1Y3Qgc291cmNl X2xvY2F0aW9uICpsb2MpCit7CisJcmV0dXJuIGN1cnJlbnQtPmluX3Vic2FuIHx8IHdhc19yZXBv cnRlZChsb2MpOworfQorCitzdGF0aWMgYm9vbCB0eXBlX2lzX2ludChzdHJ1Y3QgdHlwZV9kZXNj cmlwdG9yICp0eXBlKQoreworCXJldHVybiB0eXBlLT50eXBlX2tpbmQgPT0gdHlwZV9raW5kX2lu dDsKK30KKworc3RhdGljIGJvb2wgdHlwZV9pc19zaWduZWQoc3RydWN0IHR5cGVfZGVzY3JpcHRv ciAqdHlwZSkKK3sKKwlXQVJOX09OKCF0eXBlX2lzX2ludCh0eXBlKSk7CisJcmV0dXJuICB0eXBl LT50eXBlX2luZm8gJiAxOworfQorCitzdGF0aWMgdW5zaWduZWQgdHlwZV9iaXRfd2lkdGgoc3Ry dWN0IHR5cGVfZGVzY3JpcHRvciAqdHlwZSkKK3sKKwlyZXR1cm4gMSA8PCAodHlwZS0+dHlwZV9p bmZvID4+IDEpOworfQorCitzdGF0aWMgYm9vbCBpc19pbmxpbmVfaW50KHN0cnVjdCB0eXBlX2Rl c2NyaXB0b3IgKnR5cGUpCit7CisJdW5zaWduZWQgaW5saW5lX2JpdHMgPSBzaXplb2YodW5zaWdu ZWQgbG9uZykqODsKKwl1bnNpZ25lZCBiaXRzID0gdHlwZV9iaXRfd2lkdGgodHlwZSk7CisKKwlX QVJOX09OKCF0eXBlX2lzX2ludCh0eXBlKSk7CisKKwlyZXR1cm4gYml0cyA8PSBpbmxpbmVfYml0 czsKK30KKworc3RhdGljIHNfbWF4IGdldF9zaWduZWRfdmFsKHN0cnVjdCB0eXBlX2Rlc2NyaXB0 b3IgKnR5cGUsIHVuc2lnbmVkIGxvbmcgdmFsKQoreworCWlmIChpc19pbmxpbmVfaW50KHR5cGUp KSB7CisJCXVuc2lnbmVkIGV4dHJhX2JpdHMgPSBzaXplb2Yoc19tYXgpKjggLSB0eXBlX2JpdF93 aWR0aCh0eXBlKTsKKwkJcmV0dXJuICgoc19tYXgpdmFsKSA8PCBleHRyYV9iaXRzID4+IGV4dHJh X2JpdHM7CisJfQorCisJaWYgKHR5cGVfYml0X3dpZHRoKHR5cGUpID09IDY0KQorCQlyZXR1cm4g KihzNjQgKil2YWw7CisKKwlyZXR1cm4gKihzX21heCAqKXZhbDsKK30KKworc3RhdGljIGJvb2wg dmFsX2lzX25lZ2F0aXZlKHN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnR5cGUsIHVuc2lnbmVkIGxv bmcgdmFsKQoreworCXJldHVybiB0eXBlX2lzX3NpZ25lZCh0eXBlKSAmJiBnZXRfc2lnbmVkX3Zh bCh0eXBlLCB2YWwpIDwgMDsKK30KKworc3RhdGljIHVfbWF4IGdldF91bnNpZ25lZF92YWwoc3Ry dWN0IHR5cGVfZGVzY3JpcHRvciAqdHlwZSwgdW5zaWduZWQgbG9uZyB2YWwpCit7CisJaWYgKGlz X2lubGluZV9pbnQodHlwZSkpCisJCXJldHVybiB2YWw7CisKKwlpZiAodHlwZV9iaXRfd2lkdGgo dHlwZSkgPT0gNjQpCisJCXJldHVybiAqKHU2NCAqKXZhbDsKKworCXJldHVybiAqKHVfbWF4ICop dmFsOworfQorCitzdGF0aWMgdm9pZCB2YWxfdG9fc3RyaW5nKGNoYXIgKnN0ciwgc2l6ZV90IHNp emUsIHN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnR5cGUsCisJdW5zaWduZWQgbG9uZyB2YWx1ZSkK K3sKKwlpZiAodHlwZV9pc19pbnQodHlwZSkpIHsKKwkJaWYgKHR5cGVfYml0X3dpZHRoKHR5cGUp ID09IDEyOCkgeworI2lmIGRlZmluZWQoQ09ORklHX0FSQ0hfU1VQUE9SVFNfSU5UMTI4KSAmJiBk ZWZpbmVkKF9fU0laRU9GX0lOVDEyOF9fKQorCQkJdV9tYXggdmFsID0gZ2V0X3Vuc2lnbmVkX3Zh bCh0eXBlLCB2YWx1ZSk7CisKKwkJCXNjbnByaW50ZihzdHIsIHNpemUsICIweCUwOHglMDh4JTA4 eCUwOHgiLAorCQkJCSh1MzIpKHZhbCA+PiA5NiksCisJCQkJKHUzMikodmFsID4+IDY0KSwKKwkJ CQkodTMyKSh2YWwgPj4gMzIpLAorCQkJCSh1MzIpKHZhbCkpOworI2Vsc2UKKwkJCVdBUk5fT04o MSk7CisjZW5kaWYKKwkJfSBlbHNlIGlmICh0eXBlX2lzX3NpZ25lZCh0eXBlKSkgeworCQkJc2Nu cHJpbnRmKHN0ciwgc2l6ZSwgIiVsbGQiLAorCQkJCShzNjQpZ2V0X3NpZ25lZF92YWwodHlwZSwg dmFsdWUpKTsKKwkJfSBlbHNlIHsKKwkJCXNjbnByaW50ZihzdHIsIHNpemUsICIlbGx1IiwKKwkJ CQkodTY0KWdldF91bnNpZ25lZF92YWwodHlwZSwgdmFsdWUpKTsKKwkJfQorCX0KK30KKworc3Rh dGljIGJvb2wgbG9jYXRpb25faXNfdmFsaWQoc3RydWN0IHNvdXJjZV9sb2NhdGlvbiAqbG9jKQor eworCXJldHVybiBsb2MtPmZpbGVfbmFtZSAhPSBOVUxMOworfQorCitzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKHJlcG9ydF9sb2NrKTsKKworc3RhdGljIHZvaWQgdWJzYW5fcHJvbG9ndWUoc3RydWN0 IHNvdXJjZV9sb2NhdGlvbiAqbG9jYXRpb24sCisJCQl1bnNpZ25lZCBsb25nICpmbGFncykKK3sK KwljdXJyZW50LT5pbl91YnNhbisrOworCXNwaW5fbG9ja19pcnFzYXZlKCZyZXBvcnRfbG9jaywg KmZsYWdzKTsKKworCXByX2VycigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSIKKwkJIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwor CXByaW50X3NvdXJjZV9sb2NhdGlvbigiVUJTQU46IFVuZGVmaW5lZCBiZWhhdmlvdXIgaW4iLCBs b2NhdGlvbik7Cit9CisKK3N0YXRpYyB2b2lkIHVic2FuX2VwaWxvZ3VlKHVuc2lnbmVkIGxvbmcg KmZsYWdzKQoreworCWR1bXBfc3RhY2soKTsKKwlwcl9lcnIoIj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0iCisJCSI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09XG4iKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZXBvcnRfbG9jaywgKmZs YWdzKTsKKwljdXJyZW50LT5pbl91YnNhbi0tOworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVfb3Zl cmZsb3coc3RydWN0IG92ZXJmbG93X2RhdGEgKmRhdGEsIHVuc2lnbmVkIGxvbmcgbGhzLAorCQkJ dW5zaWduZWQgbG9uZyByaHMsIGNoYXIgb3ApCit7CisKKwlzdHJ1Y3QgdHlwZV9kZXNjcmlwdG9y ICp0eXBlID0gZGF0YS0+dHlwZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWNoYXIgbGhzX3Zh bF9zdHJbVkFMVUVfTEVOR1RIXTsKKwljaGFyIHJoc192YWxfc3RyW1ZBTFVFX0xFTkdUSF07CisK KwlpZiAoc3VwcHJlc3NfcmVwb3J0KCZkYXRhLT5sb2NhdGlvbikpCisJCXJldHVybjsKKworCXVi c2FuX3Byb2xvZ3VlKCZkYXRhLT5sb2NhdGlvbiwgJmZsYWdzKTsKKworCXZhbF90b19zdHJpbmco bGhzX3ZhbF9zdHIsIHNpemVvZihsaHNfdmFsX3N0ciksIHR5cGUsIGxocyk7CisJdmFsX3RvX3N0 cmluZyhyaHNfdmFsX3N0ciwgc2l6ZW9mKHJoc192YWxfc3RyKSwgdHlwZSwgcmhzKTsKKwlwcl9l cnIoIiVzIGludGVnZXIgb3ZlcmZsb3c6XG4iLAorCQl0eXBlX2lzX3NpZ25lZCh0eXBlKSA/ICJz aWduZWQiIDogInVuc2lnbmVkIik7CisJcHJfZXJyKCIlcyAlYyAlcyBjYW5ub3QgYmUgcmVwcmVz ZW50ZWQgaW4gdHlwZSAlc1xuIiwKKwkJbGhzX3ZhbF9zdHIsCisJCW9wLAorCQlyaHNfdmFsX3N0 ciwKKwkJdHlwZS0+dHlwZV9uYW1lKTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9CisK K3ZvaWQgX191YnNhbl9oYW5kbGVfYWRkX292ZXJmbG93KHN0cnVjdCBvdmVyZmxvd19kYXRhICpk YXRhLAorCQkJCXVuc2lnbmVkIGxvbmcgbGhzLAorCQkJCXVuc2lnbmVkIGxvbmcgcmhzKQorewor CisJaGFuZGxlX292ZXJmbG93KGRhdGEsIGxocywgcmhzLCAnKycpOworfQorRVhQT1JUX1NZTUJP TChfX3Vic2FuX2hhbmRsZV9hZGRfb3ZlcmZsb3cpOworCit2b2lkIF9fdWJzYW5faGFuZGxlX3N1 Yl9vdmVyZmxvdyhzdHJ1Y3Qgb3ZlcmZsb3dfZGF0YSAqZGF0YSwKKwkJCQl1bnNpZ25lZCBsb25n IGxocywKKwkJCQl1bnNpZ25lZCBsb25nIHJocykKK3sKKwloYW5kbGVfb3ZlcmZsb3coZGF0YSwg bGhzLCByaHMsICctJyk7Cit9CitFWFBPUlRfU1lNQk9MKF9fdWJzYW5faGFuZGxlX3N1Yl9vdmVy Zmxvdyk7CisKK3ZvaWQgX191YnNhbl9oYW5kbGVfbXVsX292ZXJmbG93KHN0cnVjdCBvdmVyZmxv d19kYXRhICpkYXRhLAorCQkJCXVuc2lnbmVkIGxvbmcgbGhzLAorCQkJCXVuc2lnbmVkIGxvbmcg cmhzKQoreworCWhhbmRsZV9vdmVyZmxvdyhkYXRhLCBsaHMsIHJocywgJyonKTsKK30KK0VYUE9S VF9TWU1CT0woX191YnNhbl9oYW5kbGVfbXVsX292ZXJmbG93KTsKKwordm9pZCBfX3Vic2FuX2hh bmRsZV9uZWdhdGVfb3ZlcmZsb3coc3RydWN0IG92ZXJmbG93X2RhdGEgKmRhdGEsCisJCQkJdW5z aWduZWQgbG9uZyBvbGRfdmFsKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJY2hhciBvbGRf dmFsX3N0cltWQUxVRV9MRU5HVEhdOworCisJaWYgKHN1cHByZXNzX3JlcG9ydCgmZGF0YS0+bG9j YXRpb24pKQorCQlyZXR1cm47CisKKwl1YnNhbl9wcm9sb2d1ZSgmZGF0YS0+bG9jYXRpb24sICZm bGFncyk7CisKKwl2YWxfdG9fc3RyaW5nKG9sZF92YWxfc3RyLCBzaXplb2Yob2xkX3ZhbF9zdHIp LCBkYXRhLT50eXBlLCBvbGRfdmFsKTsKKworCXByX2VycigibmVnYXRpb24gb2YgJXMgY2Fubm90 IGJlIHJlcHJlc2VudGVkIGluIHR5cGUgJXM6XG4iLAorCQlvbGRfdmFsX3N0ciwgZGF0YS0+dHlw ZS0+dHlwZV9uYW1lKTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9CitFWFBPUlRfU1lN Qk9MKF9fdWJzYW5faGFuZGxlX25lZ2F0ZV9vdmVyZmxvdyk7CisKKwordm9pZCBfX3Vic2FuX2hh bmRsZV9kaXZyZW1fb3ZlcmZsb3coc3RydWN0IG92ZXJmbG93X2RhdGEgKmRhdGEsCisJCQkJdW5z aWduZWQgbG9uZyBsaHMsCisJCQkJdW5zaWduZWQgbG9uZyByaHMpCit7CisJdW5zaWduZWQgbG9u ZyBmbGFnczsKKwljaGFyIHJoc192YWxfc3RyW1ZBTFVFX0xFTkdUSF07CisKKwlpZiAoc3VwcHJl c3NfcmVwb3J0KCZkYXRhLT5sb2NhdGlvbikpCisJCXJldHVybjsKKworCXVic2FuX3Byb2xvZ3Vl KCZkYXRhLT5sb2NhdGlvbiwgJmZsYWdzKTsKKworCXZhbF90b19zdHJpbmcocmhzX3ZhbF9zdHIs IHNpemVvZihyaHNfdmFsX3N0ciksIGRhdGEtPnR5cGUsIHJocyk7CisKKwlpZiAodHlwZV9pc19z aWduZWQoZGF0YS0+dHlwZSkgJiYgZ2V0X3NpZ25lZF92YWwoZGF0YS0+dHlwZSwgcmhzKSA9PSAt MSkKKwkJcHJfZXJyKCJkaXZpc2lvbiBvZiAlcyBieSAtMSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQg aW4gdHlwZSAlc1xuIiwKKwkJCXJoc192YWxfc3RyLCBkYXRhLT50eXBlLT50eXBlX25hbWUpOwor CWVsc2UKKwkJcHJfZXJyKCJkaXZpc2lvbiBieSB6ZXJvXG4iKTsKKworCXVic2FuX2VwaWxvZ3Vl KCZmbGFncyk7Cit9CitFWFBPUlRfU1lNQk9MKF9fdWJzYW5faGFuZGxlX2RpdnJlbV9vdmVyZmxv dyk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9udWxsX3B0cl9kZXJlZihzdHJ1Y3QgdHlwZV9taXNt YXRjaF9kYXRhICpkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoc3VwcHJl c3NfcmVwb3J0KCZkYXRhLT5sb2NhdGlvbikpCisJCXJldHVybjsKKworCXVic2FuX3Byb2xvZ3Vl KCZkYXRhLT5sb2NhdGlvbiwgJmZsYWdzKTsKKworCXByX2VycigiJXMgbnVsbCBwb2ludGVyIG9m IHR5cGUgJXNcbiIsCisJCXR5cGVfY2hlY2tfa2luZHNbZGF0YS0+dHlwZV9jaGVja19raW5kXSwK KwkJZGF0YS0+dHlwZS0+dHlwZV9uYW1lKTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9 CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9taXNzYWxpZ25lZF9hY2Nlc3Moc3RydWN0IHR5cGVfbWlz bWF0Y2hfZGF0YSAqZGF0YSwKKwkJCQl1bnNpZ25lZCBsb25nIHB0cikKK3sKKwl1bnNpZ25lZCBs b25nIGZsYWdzOworCisJaWYgKHN1cHByZXNzX3JlcG9ydCgmZGF0YS0+bG9jYXRpb24pKQorCQly ZXR1cm47CisKKwl1YnNhbl9wcm9sb2d1ZSgmZGF0YS0+bG9jYXRpb24sICZmbGFncyk7CisKKwlw cl9lcnIoIiVzIG1pc2FsaWduZWQgYWRkcmVzcyAlcCBmb3IgdHlwZSAlc1xuIiwKKwkJdHlwZV9j aGVja19raW5kc1tkYXRhLT50eXBlX2NoZWNrX2tpbmRdLAorCQkodm9pZCAqKXB0ciwgZGF0YS0+ dHlwZS0+dHlwZV9uYW1lKTsKKwlwcl9lcnIoIndoaWNoIHJlcXVpcmVzICVsZCBieXRlIGFsaWdu bWVudFxuIiwgZGF0YS0+YWxpZ25tZW50KTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9 CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9vYmplY3Rfc2l6ZV9taXNtYXRjaChzdHJ1Y3QgdHlwZV9t aXNtYXRjaF9kYXRhICpkYXRhLAorCQkJCQl1bnNpZ25lZCBsb25nIHB0cikKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJaWYgKHN1cHByZXNzX3JlcG9ydCgmZGF0YS0+bG9jYXRpb24pKQor CQlyZXR1cm47CisKKwl1YnNhbl9wcm9sb2d1ZSgmZGF0YS0+bG9jYXRpb24sICZmbGFncyk7CisJ cHJfZXJyKCIlcyBhZGRyZXNzICVwIHdpdGggaW5zdWZmaWNpZW50IHNwYWNlXG4iLAorCQl0eXBl X2NoZWNrX2tpbmRzW2RhdGEtPnR5cGVfY2hlY2tfa2luZF0sCisJCSh2b2lkICopIHB0cik7CisJ cHJfZXJyKCJmb3IgYW4gb2JqZWN0IG9mIHR5cGUgJXNcbiIsIGRhdGEtPnR5cGUtPnR5cGVfbmFt ZSk7CisJdWJzYW5fZXBpbG9ndWUoJmZsYWdzKTsKK30KKwordm9pZCBfX3Vic2FuX2hhbmRsZV90 eXBlX21pc21hdGNoKHN0cnVjdCB0eXBlX21pc21hdGNoX2RhdGEgKmRhdGEsCisJCQkJdW5zaWdu ZWQgbG9uZyBwdHIpCit7CisKKwlpZiAoIXB0cikKKwkJaGFuZGxlX251bGxfcHRyX2RlcmVmKGRh dGEpOworCWVsc2UgaWYgKGRhdGEtPmFsaWdubWVudCAmJiAhSVNfQUxJR05FRChwdHIsIGRhdGEt PmFsaWdubWVudCkpCisJCWhhbmRsZV9taXNzYWxpZ25lZF9hY2Nlc3MoZGF0YSwgcHRyKTsKKwll bHNlCisJCWhhbmRsZV9vYmplY3Rfc2l6ZV9taXNtYXRjaChkYXRhLCBwdHIpOworfQorRVhQT1JU X1NZTUJPTChfX3Vic2FuX2hhbmRsZV90eXBlX21pc21hdGNoKTsKKwordm9pZCBfX3Vic2FuX2hh bmRsZV9ub25udWxsX3JldHVybihzdHJ1Y3Qgbm9ubnVsbF9yZXR1cm5fZGF0YSAqZGF0YSkKK3sK Kwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKHN1cHByZXNzX3JlcG9ydCgmZGF0YS0+bG9j YXRpb24pKQorCQlyZXR1cm47CisKKwl1YnNhbl9wcm9sb2d1ZSgmZGF0YS0+bG9jYXRpb24sICZm bGFncyk7CisKKwlwcl9lcnIoIm51bGwgcG9pbnRlciByZXR1cm5lZCBmcm9tIGZ1bmN0aW9uIGRl Y2xhcmVkIHRvIG5ldmVyIHJldHVybiBudWxsXG4iKTsKKworCWlmIChsb2NhdGlvbl9pc192YWxp ZCgmZGF0YS0+YXR0cl9sb2NhdGlvbikpCisJCXByaW50X3NvdXJjZV9sb2NhdGlvbigicmV0dXJu c19ub25udWxsIGF0dHJpYnV0ZSBzcGVjaWZpZWQgaW4iLAorCQkJCSZkYXRhLT5hdHRyX2xvY2F0 aW9uKTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9CitFWFBPUlRfU1lNQk9MKF9fdWJz YW5faGFuZGxlX25vbm51bGxfcmV0dXJuKTsKKwordm9pZCBfX3Vic2FuX2hhbmRsZV92bGFfYm91 bmRfbm90X3Bvc2l0aXZlKHN0cnVjdCB2bGFfYm91bmRfZGF0YSAqZGF0YSwKKwkJCQkJdW5zaWdu ZWQgbG9uZyBib3VuZCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWNoYXIgYm91bmRfc3Ry W1ZBTFVFX0xFTkdUSF07CisKKwlpZiAoc3VwcHJlc3NfcmVwb3J0KCZkYXRhLT5sb2NhdGlvbikp CisJCXJldHVybjsKKworCXVic2FuX3Byb2xvZ3VlKCZkYXRhLT5sb2NhdGlvbiwgJmZsYWdzKTsK KworCXZhbF90b19zdHJpbmcoYm91bmRfc3RyLCBzaXplb2YoYm91bmRfc3RyKSwgZGF0YS0+dHlw ZSwgYm91bmQpOworCXByX2VycigidmFyaWFibGUgbGVuZ3RoIGFycmF5IGJvdW5kIHZhbHVlICVz IDw9IDBcbiIsIGJvdW5kX3N0cik7CisKKwl1YnNhbl9lcGlsb2d1ZSgmZmxhZ3MpOworfQorRVhQ T1JUX1NZTUJPTChfX3Vic2FuX2hhbmRsZV92bGFfYm91bmRfbm90X3Bvc2l0aXZlKTsKKwordm9p ZCBfX3Vic2FuX2hhbmRsZV9vdXRfb2ZfYm91bmRzKHN0cnVjdCBvdXRfb2ZfYm91bmRzX2RhdGEg KmRhdGEsCisJCQkJdW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdz OworCWNoYXIgaW5kZXhfc3RyW1ZBTFVFX0xFTkdUSF07CisKKwlpZiAoc3VwcHJlc3NfcmVwb3J0 KCZkYXRhLT5sb2NhdGlvbikpCisJCXJldHVybjsKKworCXVic2FuX3Byb2xvZ3VlKCZkYXRhLT5s b2NhdGlvbiwgJmZsYWdzKTsKKworCXZhbF90b19zdHJpbmcoaW5kZXhfc3RyLCBzaXplb2YoaW5k ZXhfc3RyKSwgZGF0YS0+aW5kZXhfdHlwZSwgaW5kZXgpOworCXByX2VycigiaW5kZXggJXMgaXMg b3V0IG9mIHJhbmdlIGZvciB0eXBlICVzXG4iLCBpbmRleF9zdHIsCisJCWRhdGEtPmFycmF5X3R5 cGUtPnR5cGVfbmFtZSk7CisJdWJzYW5fZXBpbG9ndWUoJmZsYWdzKTsKK30KK0VYUE9SVF9TWU1C T0woX191YnNhbl9oYW5kbGVfb3V0X29mX2JvdW5kcyk7CisKK3ZvaWQgX191YnNhbl9oYW5kbGVf c2hpZnRfb3V0X29mX2JvdW5kcyhzdHJ1Y3Qgc2hpZnRfb3V0X29mX2JvdW5kc19kYXRhICpkYXRh LAorCQkJCQl1bnNpZ25lZCBsb25nIGxocywgdW5zaWduZWQgbG9uZyByaHMpCit7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgdHlwZV9kZXNjcmlwdG9yICpyaHNfdHlwZSA9IGRhdGEt PnJoc190eXBlOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKmxoc190eXBlID0gZGF0YS0+bGhz X3R5cGU7CisJY2hhciByaHNfc3RyW1ZBTFVFX0xFTkdUSF07CisJY2hhciBsaHNfc3RyW1ZBTFVF X0xFTkdUSF07CisKKwlpZiAoc3VwcHJlc3NfcmVwb3J0KCZkYXRhLT5sb2NhdGlvbikpCisJCXJl dHVybjsKKworCXVic2FuX3Byb2xvZ3VlKCZkYXRhLT5sb2NhdGlvbiwgJmZsYWdzKTsKKworCXZh bF90b19zdHJpbmcocmhzX3N0ciwgc2l6ZW9mKHJoc19zdHIpLCByaHNfdHlwZSwgcmhzKTsKKwl2 YWxfdG9fc3RyaW5nKGxoc19zdHIsIHNpemVvZihsaHNfc3RyKSwgbGhzX3R5cGUsIGxocyk7CisK KwlpZiAodmFsX2lzX25lZ2F0aXZlKHJoc190eXBlLCByaHMpKQorCQlwcl9lcnIoInNoaWZ0IGV4 cG9uZW50ICVzIGlzIG5lZ2F0aXZlXG4iLCByaHNfc3RyKTsKKworCWVsc2UgaWYgKGdldF91bnNp Z25lZF92YWwocmhzX3R5cGUsIHJocykgPj0KKwkJdHlwZV9iaXRfd2lkdGgobGhzX3R5cGUpKQor CQlwcl9lcnIoInNoaWZ0IGV4cG9uZW50ICVzIGlzIHRvbyBsYXJnZSBmb3IgJXUtYml0IHR5cGUg JXNcbiIsCisJCQlyaHNfc3RyLAorCQkJdHlwZV9iaXRfd2lkdGgobGhzX3R5cGUpLAorCQkJbGhz X3R5cGUtPnR5cGVfbmFtZSk7CisJZWxzZSBpZiAodmFsX2lzX25lZ2F0aXZlKGxoc190eXBlLCBs aHMpKQorCQlwcl9lcnIoImxlZnQgc2hpZnQgb2YgbmVnYXRpdmUgdmFsdWUgJXNcbiIsCisJCQls aHNfc3RyKTsKKwllbHNlCisJCXByX2VycigibGVmdCBzaGlmdCBvZiAlcyBieSAlcyBwbGFjZXMg Y2Fubm90IGJlIgorCQkJIiByZXByZXNlbnRlZCBpbiB0eXBlICVzXG4iLAorCQkJbGhzX3N0ciwg cmhzX3N0ciwKKwkJCWxoc190eXBlLT50eXBlX25hbWUpOworCisJdWJzYW5fZXBpbG9ndWUoJmZs YWdzKTsKK30KK0VYUE9SVF9TWU1CT0woX191YnNhbl9oYW5kbGVfc2hpZnRfb3V0X29mX2JvdW5k cyk7CisKKwordm9pZCBfX25vcmV0dXJuCitfX3Vic2FuX2hhbmRsZV9idWlsdGluX3VucmVhY2hh YmxlKHN0cnVjdCB1bnJlYWNoYWJsZV9kYXRhICpkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKKwl1YnNhbl9wcm9sb2d1ZSgmZGF0YS0+bG9jYXRpb24sICZmbGFncyk7CisJcHJfZXJy KCJjYWxsaW5nIF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpXG4iKTsKKwl1YnNhbl9lcGlsb2d1ZSgm ZmxhZ3MpOworCXBhbmljKCJjYW4ndCByZXR1cm4gZnJvbSBfX2J1aWx0aW5fdW5yZWFjaGFibGUo KSIpOworfQorRVhQT1JUX1NZTUJPTChfX3Vic2FuX2hhbmRsZV9idWlsdGluX3VucmVhY2hhYmxl KTsKKwordm9pZCBfX3Vic2FuX2hhbmRsZV9sb2FkX2ludmFsaWRfdmFsdWUoc3RydWN0IGludmFs aWRfdmFsdWVfZGF0YSAqZGF0YSwKKwkJCQl1bnNpZ25lZCBsb25nIHZhbCkKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCWNoYXIgdmFsX3N0cltWQUxVRV9MRU5HVEhdOworCisJaWYgKHN1cHBy ZXNzX3JlcG9ydCgmZGF0YS0+bG9jYXRpb24pKQorCQlyZXR1cm47CisKKwl1YnNhbl9wcm9sb2d1 ZSgmZGF0YS0+bG9jYXRpb24sICZmbGFncyk7CisKKwl2YWxfdG9fc3RyaW5nKHZhbF9zdHIsIHNp emVvZih2YWxfc3RyKSwgZGF0YS0+dHlwZSwgdmFsKTsKKworCXByX2VycigibG9hZCBvZiB2YWx1 ZSAlcyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdHlwZSAlc1xuIiwKKwkJdmFsX3N0ciwgZGF0 YS0+dHlwZS0+dHlwZV9uYW1lKTsKKworCXVic2FuX2VwaWxvZ3VlKCZmbGFncyk7Cit9CitFWFBP UlRfU1lNQk9MKF9fdWJzYW5faGFuZGxlX2xvYWRfaW52YWxpZF92YWx1ZSk7CmRpZmYgLS1naXQg YS94ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmggYi94ZW4vY29tbW9uL3Vic2FuL3Vic2FuLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjJkMThkNGE1MwotLS0gL2Rldi9u dWxsCisrKyBiL3hlbi9jb21tb24vdWJzYW4vdWJzYW4uaApAQCAtMCwwICsxLDg0IEBACisjaWZu ZGVmIF9MSUJfVUJTQU5fSAorI2RlZmluZSBfTElCX1VCU0FOX0gKKworZW51bSB7CisJdHlwZV9r aW5kX2ludCA9IDAsCisJdHlwZV9raW5kX2Zsb2F0ID0gMSwKKwl0eXBlX3Vua25vd24gPSAweGZm ZmYKK307CisKK3N0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgeworCXUxNiB0eXBlX2tpbmQ7CisJdTE2 IHR5cGVfaW5mbzsKKwljaGFyIHR5cGVfbmFtZVsxXTsKK307CisKK3N0cnVjdCBzb3VyY2VfbG9j YXRpb24geworCWNvbnN0IGNoYXIgKmZpbGVfbmFtZTsKKwl1bmlvbiB7CisJCXVuc2lnbmVkIGxv bmcgcmVwb3J0ZWQ7CisJCXN0cnVjdCB7CisJCQl1MzIgbGluZTsKKwkJCXUzMiBjb2x1bW47CisJ CX07CisJfTsKK307CisKK3N0cnVjdCBvdmVyZmxvd19kYXRhIHsKKwlzdHJ1Y3Qgc291cmNlX2xv Y2F0aW9uIGxvY2F0aW9uOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnR5cGU7Cit9OworCitz dHJ1Y3QgdHlwZV9taXNtYXRjaF9kYXRhIHsKKwlzdHJ1Y3Qgc291cmNlX2xvY2F0aW9uIGxvY2F0 aW9uOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnR5cGU7CisJdW5zaWduZWQgbG9uZyBhbGln bm1lbnQ7CisJdW5zaWduZWQgY2hhciB0eXBlX2NoZWNrX2tpbmQ7Cit9OworCitzdHJ1Y3Qgbm9u bnVsbF9hcmdfZGF0YSB7CisJc3RydWN0IHNvdXJjZV9sb2NhdGlvbiBsb2NhdGlvbjsKKwlzdHJ1 Y3Qgc291cmNlX2xvY2F0aW9uIGF0dHJfbG9jYXRpb247CisJaW50IGFyZ19pbmRleDsKK307CisK K3N0cnVjdCBub25udWxsX3JldHVybl9kYXRhIHsKKwlzdHJ1Y3Qgc291cmNlX2xvY2F0aW9uIGxv Y2F0aW9uOworCXN0cnVjdCBzb3VyY2VfbG9jYXRpb24gYXR0cl9sb2NhdGlvbjsKK307CisKK3N0 cnVjdCB2bGFfYm91bmRfZGF0YSB7CisJc3RydWN0IHNvdXJjZV9sb2NhdGlvbiBsb2NhdGlvbjsK KwlzdHJ1Y3QgdHlwZV9kZXNjcmlwdG9yICp0eXBlOworfTsKKworc3RydWN0IG91dF9vZl9ib3Vu ZHNfZGF0YSB7CisJc3RydWN0IHNvdXJjZV9sb2NhdGlvbiBsb2NhdGlvbjsKKwlzdHJ1Y3QgdHlw ZV9kZXNjcmlwdG9yICphcnJheV90eXBlOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKmluZGV4 X3R5cGU7Cit9OworCitzdHJ1Y3Qgc2hpZnRfb3V0X29mX2JvdW5kc19kYXRhIHsKKwlzdHJ1Y3Qg c291cmNlX2xvY2F0aW9uIGxvY2F0aW9uOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKmxoc190 eXBlOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnJoc190eXBlOworfTsKKworc3RydWN0IHVu cmVhY2hhYmxlX2RhdGEgeworCXN0cnVjdCBzb3VyY2VfbG9jYXRpb24gbG9jYXRpb247Cit9Owor CitzdHJ1Y3QgaW52YWxpZF92YWx1ZV9kYXRhIHsKKwlzdHJ1Y3Qgc291cmNlX2xvY2F0aW9uIGxv Y2F0aW9uOworCXN0cnVjdCB0eXBlX2Rlc2NyaXB0b3IgKnR5cGU7Cit9OworCisjaWYgZGVmaW5l ZChDT05GSUdfQVJDSF9TVVBQT1JUU19JTlQxMjgpICYmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4 X18pCit0eXBlZGVmIF9faW50MTI4IHNfbWF4OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDEyOCB1 X21heDsKKyNlbHNlCit0eXBlZGVmIHM2NCBzX21heDsKK3R5cGVkZWYgdTY0IHVfbWF4OworI2Vu ZGlmCisKKyNlbmRpZgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==