From mboxrd@z Thu Jan 1 00:00:00 1970 From: robert.foss@collabora.com Subject: [RFC i-g-t v3 08/13] lib/stubs: Add stubs for intel_bufmgr. Date: Wed, 15 Jun 2016 05:51:05 -0400 Message-ID: <1465984270-13918-9-git-send-email-robert.foss@collabora.com> References: <1465984270-13918-1-git-send-email-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4D5CA6E893 for ; Wed, 15 Jun 2016 09:51:18 +0000 (UTC) In-Reply-To: <1465984270-13918-1-git-send-email-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: daniel.vetter@ffwll.ch, daniel.stone@collabora.com, marius.c.vlad@intel.com, tomeu.vizoso@collabora.com, emil.l.velikov@gmail.com, chris@chris-wilson.co.uk Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+CgpUaGlzIHBhdGNo IHByb3ZpZGVzIHN0dWJzIGZvciBmdW5jdGlvbmFsaXR5IG90aGVyd2lzZSBwcm92aWRlZCBieSBp bnRlbF9idWZtZ3IuCgpUaGUgc3R1YmJlZCBmdW5jdGlvbnMgYWxsIGZhaWwgd2l0aCBhIGNhbGwg dG8gaWd0X3JlcXVpcmVfZihmYWxzZSwiIikuCkRlZmluZXMgYW5kIGVudW1zIGhhdmUgYmVlbiBj b3BpZWQgZnJvbSBsaWJkcm1faW50ZWwuCgpEdWUgdG8gdGhlIHN0dWJiZWQgdGVzdHMgZmFpbGlu ZyB3aXRoIGFuIGlndF9yZXF1aXJlX2YoKSBjYWxsLCB0aGVzZSBzdHVicyBhcmUKbm90IHdlbGwg c3VpdGVkIGZvciBub24tdGVzdHMsIHNpbmNlIHRvb2xzL2JlbmNobWFya3MvZXRjICdza2lwcGlu ZycKZXhlY3V0aW9uIGlzIHVuaGVscGZ1bC4KClNpZ25lZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxy b2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIGxpYi9NYWtlZmlsZS5hbSAgICAgICAgICAg ICAgfCAgIDcgKwogbGliL3N0dWJzL2RybS9SRUFETUUgICAgICAgICB8ICAgNCArCiBsaWIvc3R1 YnMvZHJtL2ludGVsX2J1Zm1nci5jIHwgMjY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwog bGliL3N0dWJzL2RybS9pbnRlbF9idWZtZ3IuaCB8IDQzMCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDcxMCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N0dWJzL2RybS9SRUFETUUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli L3N0dWJzL2RybS9pbnRlbF9idWZtZ3IuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5hbSBi L2xpYi9NYWtlZmlsZS5hbQppbmRleCBkMmFlOThkLi4zZTEyZjI1IDEwMDY0NAotLS0gYS9saWIv TWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC0xNCw2ICsxNCwxMyBAQCBpZiBI QVZFX0xJQkRSTV9WQzQKICAgICAgICAgaWd0X3ZjNC5oCiBlbmRpZgogCitpZiBIQVZFX0xJQkRS TV9JTlRFTAorZWxzZQorICAgIGxpYmludGVsX3Rvb2xzX2xhX1NPVVJDRVMgKz0gCVwKKyAgICAg ICAgc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5jCVwKKyAgICAgICAgc3R1YnMvZHJtL2ludGVsX2J1 Zm1nci5oCitlbmRpZgorCiBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKQogQU1fQ0ZMQUdT ID0gJChDV0FSTkZMQUdTKSAkKERSTV9DRkxBR1MpICQoUENJQUNDRVNTX0NGTEFHUykgJChMSUJV TldJTkRfQ0ZMQUdTKSAkKERFQlVHX0NGTEFHUykgXAogCSAgICAtRElHVF9TUkNESVI9XCIiJChh YnNfdG9wX3NyY2RpcikvdGVzdHMiXCIgXApkaWZmIC0tZ2l0IGEvbGliL3N0dWJzL2RybS9SRUFE TUUgYi9saWIvc3R1YnMvZHJtL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5kZWM2YTFkCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3N0dWJzL2RybS9SRUFETUUKQEAg LTAsMCArMSw0IEBACitpbnRlbF9idWZtZ3IuaCBpcyBhIGNvcHkgdGhlIGZpbGUgcHJvdmlkZWQg aW4gbGliZHJtIChpbnRlbC9pbnRlbF9idWZtZ3IuaCkuCisKK0JlZm9yZSByZWxlYXNpbmcgaS1n LXQgYSBjdXJyZW50IGNvcHkgb2YgaW50ZWxfYnVmbWdyLmggc2hvdWxkIGJlIGNvcGllZCBpbnRv Cit0aGlzIGRpcmVjdG9yeSBvZiBpLWctdC4KZGlmZiAtLWdpdCBhL2xpYi9zdHVicy9kcm0vaW50 ZWxfYnVmbWdyLmMgYi9saWIvc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMWMxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3R1 YnMvZHJtL2ludGVsX2J1Zm1nci5jCkBAIC0wLDAgKzEsMjY5IEBACisjaW5jbHVkZSA8c3RkYm9v bC5oPgorCisjaW5jbHVkZSAiaWd0X2NvcmUuaCIKKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIK KworY29uc3QgY2hhciAqIGNvbnN0IG1pc3Npbmdfc3VwcG9ydF9zdHIgPSAiTm90IGNvbXBpbGVk IHdpdGggbGliZHJtX2ludGVsIHN1cHBvcnRcbiI7CisKK2RybV9pbnRlbF9idWZtZ3IgKmRybV9p bnRlbF9idWZtZ3JfZ2VtX2luaXQoaW50IGZkLCBpbnQgYmF0Y2hfc2l6ZSkKK3sKKwlpZ3RfcmVx dWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9i dWZtZ3IgKikgTlVMTDsKK30KKwordm9pZCBkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoZHJtX2lu dGVsX2JvICpibykKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3Ry KTsKK30KKworZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxsb2MoZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSB1bnNpZ25lZCBsb25nIHNpemUsIHVu c2lnbmVkIGludCBhbGlnbm1lbnQpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19z dXBwb3J0X3N0cik7CisJcmV0dXJuIChkcm1faW50ZWxfYm8gKikgTlVMTDsKK30KKworaW50IGRy bV9pbnRlbF9ib19zdWJkYXRhKGRybV9pbnRlbF9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgb2Zmc2V0 LAorCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlpZ3RfcmVx dWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworaW50 IGRybV9pbnRlbF9nZW1fYm9fY29udGV4dF9leGVjKGRybV9pbnRlbF9ibyAqYm8sIGRybV9pbnRl bF9jb250ZXh0ICpjdHgsCisJCQkJICBpbnQgdXNlZCwgdW5zaWduZWQgaW50IGZsYWdzKQorewor CWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAwOwor fQorCitpbnQgZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoZHJtX2ludGVsX2JvICpibywgdWludDMy X3Qgb2Zmc2V0LAorCQkJCWRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCB1aW50MzJfdCB0YXJnZXRf b2Zmc2V0LAorCQkJCXVpbnQzMl90IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWlu KQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVy biAwOworfQorCitpbnQgZHJtX2ludGVsX2JvX2VtaXRfcmVsb2NfZmVuY2UoZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3Qgb2Zmc2V0LAorCQkJCSAgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8sCisJ CQkJICB1aW50MzJfdCB0YXJnZXRfb2Zmc2V0LAorCQkJCSAgdWludDMyX3QgcmVhZF9kb21haW5z LCB1aW50MzJfdCB3cml0ZV9kb21haW4pCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2lu Z19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZ2V0X3Rp bGluZyhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAorCQkJICAgIHVp bnQzMl90ICogc3dpenpsZV9tb2RlKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdf c3VwcG9ydF9zdHIpOworCXJldHVybiAwOworfQorCitpbnQgZHJtX2ludGVsX2JvX21yYl9leGVj KGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2VkLAorCQkJICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAq Y2xpcHJlY3RzLCBpbnQgbnVtX2NsaXByZWN0cywKKwkJCSAgaW50IERSNCwgdW5zaWduZWQgaW50 IGZsYWdzKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOwor CXJldHVybiAwOworfQorCit2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJfYW5ub3Rh dGlvbnMoZHJtX2ludGVsX2JvICpibywKKwkJCQkJICAgICAgZHJtX2ludGVsX2F1Yl9hbm5vdGF0 aW9uICphbm5vdGF0aW9ucywKKwkJCQkJICAgICAgdW5zaWduZWQgY291bnQpCit7CisJaWd0X3Jl cXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9CisKK3ZvaWQgZHJtX2ludGVs X2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlp Z3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKworaW50IGRybV9p bnRlbF9ib19leGVjKGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2VkLAorCQkgICAgICBzdHJ1Y3Qg ZHJtX2NsaXBfcmVjdCAqY2xpcHJlY3RzLCBpbnQgbnVtX2NsaXByZWN0cywgaW50IERSNCkKK3sK KwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsK K30KKwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZHJtX2ludGVsX2J1Zm1nciAqYnVm bWdyKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQor Cit2b2lkIGRybV9pbnRlbF9ib193YWl0X3JlbmRlcmluZyhkcm1faW50ZWxfYm8gKmJvKQorewor CWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQorCitpbnQgZHJt X2ludGVsX2JvX2dldF9zdWJkYXRhKGRybV9pbnRlbF9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgb2Zm c2V0LAorCQkJICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKmRhdGEpCit7CisJaWd0X3Jl cXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2lu dCBkcm1faW50ZWxfYm9fbWFwKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCit7 CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7 Cit9CisKK2ludCBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoZHJtX2ludGVsX2JvICpibykKK3sK KwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsK K30KKwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfZmVuY2VkX3JlbG9jcyhkcm1f aW50ZWxfYnVmbWdyICpidWZtZ3IpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19z dXBwb3J0X3N0cik7Cit9CisKK2ludCBkcm1faW50ZWxfYm9fdW5tYXAoZHJtX2ludGVsX2JvICpi bykKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1 cm4gMDsKK30KKworaW50IGRybV9pbnRlbF9ib19mbGluayhkcm1faW50ZWxfYm8gKmJvLCB1aW50 MzJfdCAqIG5hbWUpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0 cik7CisJcmV0dXJuIDA7Cit9CisKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2dlbV9jcmVh dGVfZnJvbV9uYW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJCWNvbnN0IGNoYXIg Km5hbWUsCisJCQkJCQl1bnNpZ25lZCBpbnQgaGFuZGxlKQoreworCWlndF9yZXF1aXJlX2YoZmFs c2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAoZHJtX2ludGVsX2JvICopIE5VTEw7 Cit9CisKK2ludCBkcm1faW50ZWxfYm9fZ2VtX2V4cG9ydF90b19wcmltZShkcm1faW50ZWxfYm8g KmJvLCBpbnQgKnByaW1lX2ZkKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3Vw cG9ydF9zdHIpOworCXJldHVybiAwOworfQorCitkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19n ZW1fY3JlYXRlX2Zyb21fcHJpbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJIGlu dCBwcmltZV9mZCwgaW50IHNpemUpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19z dXBwb3J0X3N0cik7CisJcmV0dXJuIChkcm1faW50ZWxfYm8gKikgTlVMTDsKK30KKwordm9pZCBk cm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfdm1hX2NhY2hlX3NpemUoZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyLAorCQkJCQkgICAgIGludCBsaW1pdCkKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBt aXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKworaW50IGRybV9pbnRlbF9nZW1fYm9fdW5tYXBfZ3R0 KGRybV9pbnRlbF9ibyAqYm8pCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBw b3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2RybV9pbnRlbF9jb250ZXh0ICpkcm1faW50ZWxf Z2VtX2NvbnRleHRfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlpZ3RfcmVx dWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9i byAqKSBOVUxMOworfQorCit2b2lkIGRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGRybV9p bnRlbF9jb250ZXh0ICpjdHgpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBw b3J0X3N0cik7Cit9CisKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX3RpbGVkKGRy bV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJ CQkgICAgICAgaW50IHgsIGludCB5LCBpbnQgY3BwLAorCQkJCSAgICAgICB1aW50MzJfdCAqdGls aW5nX21vZGUsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKnBpdGNoLAorCQkJCSAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzKQoreworCWlndF9yZXF1aXJlX2YoZmFsc2UsIG1pc3Npbmdfc3Vw cG9ydF9zdHIpOworCXJldHVybiAoZHJtX2ludGVsX2JvICopIE5VTEw7Cit9CisKK3ZvaWQgZHJt X2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9maWxlbmFtZShkcm1faW50ZWxfYnVmbWdyICpidWZt Z3IsCisJCQkJCSAgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJaWd0X3JlcXVpcmVfZihmYWxz ZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9CisKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1f c2V0X2F1Yl9kdW1wKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgaW50IGVuYWJsZSkKK3sKKwlp Z3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKK30KKwordm9pZCBkcm1f aW50ZWxfZ2VtX2JvX2F1Yl9kdW1wX2JtcChkcm1faW50ZWxfYm8gKmJvLAorCQkJCSAgIGludCB4 MSwgaW50IHkxLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQkJICAgZW51bSBhdWJfZHVtcF9i bXBfZm9ybWF0IGZvcm1hdCwKKwkJCQkgICBpbnQgcGl0Y2gsIGludCBvZmZzZXQpCit7CisJaWd0 X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9CisKK3ZvaWQgZHJtX2lu dGVsX2dlbV9ib19zdGFydF9ndHRfYWNjZXNzKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9l bmFibGUpCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7Cit9 CisKK2ludCBkcm1faW50ZWxfYm9fc2V0X3RpbGluZyhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJf dCAqIHRpbGluZ19tb2RlLAorCQkJCXVpbnQzMl90IHN0cmlkZSkKK3sKKwlpZ3RfcmVxdWlyZV9m KGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGRybV9p bnRlbF9ib19kaXNhYmxlX3JldXNlKGRybV9pbnRlbF9ibyAqYm8pCit7CisJaWd0X3JlcXVpcmVf ZihmYWxzZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZHJt X2ludGVsX2JvX3JlZmVyZW5jZShkcm1faW50ZWxfYm8gKmJvKQoreworCWlndF9yZXF1aXJlX2Yo ZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworfQorCitpbnQgZHJtX2ludGVsX2J1Zm1ncl9n ZW1fZ2V0X2RldmlkKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKK3sKKwlpZ3RfcmVxdWlyZV9m KGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gMDsKK30KKworZHJtX2ludGVs X2JvICpkcm1faW50ZWxfYm9fYWxsb2NfZm9yX3JlbmRlcihkcm1faW50ZWxfYnVmbWdyICpidWZt Z3IsCisJCQkJCSAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyBz aXplLAorCQkJCQkgICAgdW5zaWduZWQgaW50IGFsaWdubWVudCkKK3sKKwlpZ3RfcmVxdWlyZV9m KGZhbHNlLCBtaXNzaW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gKGRybV9pbnRlbF9ibyAqKSBO VUxMOworfQorCitpbnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMoZHJtX2ludGVsX2JvICpibywg ZHJtX2ludGVsX2JvICp0YXJnZXRfYm8pCit7CisJaWd0X3JlcXVpcmVfZihmYWxzZSwgbWlzc2lu Z19zdXBwb3J0X3N0cik7CisJcmV0dXJuIDA7Cit9CisKK2ludCBkcm1faW50ZWxfZ2VtX2JvX3dh aXQoZHJtX2ludGVsX2JvICpibywgaW50NjRfdCB0aW1lb3V0X25zKQoreworCWlndF9yZXF1aXJl X2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOworCXJldHVybiAwOworfQorCitkcm1faW50 ZWxfYm8gKmRybV9pbnRlbF9ib19hbGxvY191c2VycHRyKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1n ciwKKwkJCQkJIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSB2b2lkICphZGRyLCB1aW50MzJfdCB0 aWxpbmdfbW9kZSwKKwkJCQkJIHVpbnQzMl90IHN0cmlkZSwgdW5zaWduZWQgbG9uZyBzaXplLAor CQkJCQkgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpZ3RfcmVxdWlyZV9mKGZhbHNlLCBtaXNz aW5nX3N1cHBvcnRfc3RyKTsKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2xpYi9zdHVi cy9kcm0vaW50ZWxfYnVmbWdyLmggYi9saWIvc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYmNlNjAKLS0tIC9kZXYvbnVsbAorKysg Yi9saWIvc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5oCkBAIC0wLDAgKzEsNDMwIEBACisjaWZuZGVm IElOVEVMX0RSTV9TVFVCU19ICisjZGVmaW5lIElOVEVMX0RSTV9TVFVCU19ICisKKyNpbmNsdWRl IDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPGRybS5oPgorCisKK2VudW0gYXViX2R1bXBfYm1wX2Zv cm1hdCB7CisJQVVCX0RVTVBfQk1QX0ZPUk1BVF84QklUID0gMSwKKwlBVUJfRFVNUF9CTVBfRk9S TUFUX0FSR0JfNDQ0NCA9IDQsCisJQVVCX0RVTVBfQk1QX0ZPUk1BVF9BUkdCXzA4ODggPSA2LAor CUFVQl9EVU1QX0JNUF9GT1JNQVRfQVJHQl84ODg4ID0gNywKK307CisKK3R5cGVkZWYgc3RydWN0 IF9kcm1faW50ZWxfYm8gZHJtX2ludGVsX2JvOwordHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9i dWZtZ3IgZHJtX2ludGVsX2J1Zm1ncjsKK3R5cGVkZWYgc3RydWN0IF9kcm1faW50ZWxfY29udGV4 dCBkcm1faW50ZWxfY29udGV4dDsKKworc3RydWN0IF9kcm1faW50ZWxfY29udGV4dCB7CisJdW5z aWduZWQgaW50IGN0eF9pZDsKKwlzdHJ1Y3QgX2RybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKK307 CisKK3N0cnVjdCBfZHJtX2ludGVsX2J1Zm1nciB7CisJLyoqCisJICogQWxsb2NhdGUgYSBidWZm ZXIgb2JqZWN0LgorCSAqCisJICogQnVmZmVyIG9iamVjdHMgYXJlIG5vdCBuZWNlc3NhcmlseSBp bml0aWFsbHkgbWFwcGVkIGludG8gQ1BVIHZpcnR1YWwKKwkgKiBhZGRyZXNzIHNwYWNlIG9yIGdy YXBoaWNzIGRldmljZSBhcGVydHVyZS4gIFRoZXkgbXVzdCBiZSBtYXBwZWQKKwkgKiB1c2luZyBi b19tYXAoKSBvciBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoKSB0byBiZSB1c2VkIGJ5IHRoZSBD UFUuCisJICovCisJZHJtX2ludGVsX2JvICooKmJvX2FsbG9jKSAoZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5z aWduZWQgaW50IGFsaWdubWVudCk7CisKKwkvKioKKwkgKiBBbGxvY2F0ZSBhIGJ1ZmZlciBvYmpl Y3QsIGhpbnRpbmcgdGhhdCBpdCB3aWxsIGJlIHVzZWQgYXMgYQorCSAqIHJlbmRlciB0YXJnZXQu CisJICoKKwkgKiBUaGlzIGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyBib19hbGxvYy4KKwkgKi8K Kwlkcm1faW50ZWxfYm8gKigqYm9fYWxsb2NfZm9yX3JlbmRlcikgKGRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1nciwKKwkJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCSAgdW5zaWduZWQgbG9u ZyBzaXplLAorCQkJCQkJICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50KTsKKworCS8qKgorCSAqIEFs bG9jYXRlIGEgYnVmZmVyIG9iamVjdCBmcm9tIGFuIGV4aXN0aW5nIHVzZXIgYWNjZXNzaWJsZQor CSAqIGFkZHJlc3MgbWFsbG9jJ2Qgd2l0aCB0aGUgcHJvdmlkZWQgc2l6ZS4KKwkgKiBBbGlnbm1l bnQgaXMgdXNlZCB3aGVuIG1hcHBpbmcgdG8gdGhlIGd0dC4KKwkgKiBGbGFncyBtYXkgYmUgSTkx NV9WTUFQX1JFQURfT05MWSBvciBJOTE1X1VTRVJQVFJfVU5TWU5DSFJPTklaRUQKKwkgKi8KKwlk cm1faW50ZWxfYm8gKigqYm9fYWxsb2NfdXNlcnB0cikoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy LAorCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmFkZHIsCisJCQkJCSAgdWludDMyX3Qg dGlsaW5nX21vZGUsIHVpbnQzMl90IHN0cmlkZSwKKwkJCQkJICB1bnNpZ25lZCBsb25nIHNpemUs CisJCQkJCSAgdW5zaWduZWQgbG9uZyBmbGFncyk7CisKKwkvKioKKwkgKiBBbGxvY2F0ZSBhIHRp bGVkIGJ1ZmZlciBvYmplY3QuCisJICoKKwkgKiBBbGlnbm1lbnQgZm9yIHRpbGVkIG9iamVjdHMg aXMgc2V0IGF1dG9tYXRpY2FsbHk7IHRoZSAnZmxhZ3MnCisJICogYXJndW1lbnQgcHJvdmlkZXMg YSBoaW50IGFib3V0IGhvdyB0aGUgb2JqZWN0IHdpbGwgYmUgdXNlZCBpbml0aWFsbHkuCisJICoK KwkgKiBWYWxpZCB0aWxpbmcgZm9ybWF0cyBhcmU6CisJICogIEk5MTVfVElMSU5HX05PTkUKKwkg KiAgSTkxNV9USUxJTkdfWAorCSAqICBJOTE1X1RJTElOR19ZCisJICoKKwkgKiBOb3RlIHRoZSB0 aWxpbmcgZm9ybWF0IG1heSBiZSByZWplY3RlZDsgY2FsbGVycyBzaG91bGQgY2hlY2sgdGhlCisJ ICogJ3RpbGluZ19tb2RlJyBmaWVsZCBvbiByZXR1cm4sIGFzIHdlbGwgYXMgdGhlIHBpdGNoIHZh bHVlLCB3aGljaAorCSAqIG1heSBoYXZlIGJlZW4gcm91bmRlZCB1cCB0byBhY2NvbW1vZGF0ZSBm b3IgdGlsaW5nIHJlc3RyaWN0aW9ucy4KKwkgKi8KKwlkcm1faW50ZWxfYm8gKigqYm9fYWxsb2Nf dGlsZWQpIChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCSBjb25zdCBjaGFyICpuYW1l LAorCQkJCQkgaW50IHgsIGludCB5LCBpbnQgY3BwLAorCQkJCQkgdWludDMyX3QgKnRpbGluZ19t b2RlLAorCQkJCQkgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCisJCQkJCSB1bnNpZ25lZCBsb25nIGZs YWdzKTsKKworCS8qKiBUYWtlcyBhIHJlZmVyZW5jZSBvbiBhIGJ1ZmZlciBvYmplY3QgKi8KKwl2 b2lkICgqYm9fcmVmZXJlbmNlKSAoZHJtX2ludGVsX2JvICpibyk7CisKKwkvKioKKwkgKiBSZWxl YXNlcyBhIHJlZmVyZW5jZSBvbiBhIGJ1ZmZlciBvYmplY3QsIGZyZWVpbmcgdGhlIGRhdGEgaWYK KwkgKiBubyByZWZlcmVuY2VzIHJlbWFpbi4KKwkgKi8KKwl2b2lkICgqYm9fdW5yZWZlcmVuY2Up IChkcm1faW50ZWxfYm8gKmJvKTsKKworCS8qKgorCSAqIE1hcHMgdGhlIGJ1ZmZlciBpbnRvIHVz ZXJzcGFjZS4KKwkgKgorCSAqIFRoaXMgZnVuY3Rpb24gd2lsbCBibG9jayB3YWl0aW5nIGZvciBh bnkgZXhpc3RpbmcgZXhlY3V0aW9uIG9uIHRoZQorCSAqIGJ1ZmZlciB0byBjb21wbGV0ZSwgZmly c3QuICBUaGUgcmVzdWx0aW5nIG1hcHBpbmcgaXMgYXZhaWxhYmxlIGF0CisJICogYnVmLT52aXJ0 dWFsLgorCSAqLworCWludCAoKmJvX21hcCkgKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9l bmFibGUpOworCisJLyoqCisJICogUmVkdWNlcyB0aGUgcmVmY291bnQgb24gdGhlIHVzZXJzcGFj ZSBtYXBwaW5nIG9mIHRoZSBidWZmZXIKKwkgKiBvYmplY3QuCisJICovCisJaW50ICgqYm9fdW5t YXApIChkcm1faW50ZWxfYm8gKmJvKTsKKworCS8qKgorCSAqIFdyaXRlIGRhdGEgaW50byBhbiBv YmplY3QuCisJICoKKwkgKiBUaGlzIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uLCBpZiBtaXNzaW5n LAorCSAqIGRybV9pbnRlbF9ibyB3aWxsIG1hcC9tZW1jcHkvdW5tYXAuCisJICovCisJaW50ICgq Ym9fc3ViZGF0YSkgKGRybV9pbnRlbF9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAorCQkJ ICAgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCB2b2lkICpkYXRhKTsKKworCS8qKgorCSAqIFJl YWQgZGF0YSBmcm9tIGFuIG9iamVjdAorCSAqCisJICogVGhpcyBpcyBhbiBvcHRpb25hbCBmdW5j dGlvbiwgaWYgbWlzc2luZywKKwkgKiBkcm1faW50ZWxfYm8gd2lsbCBtYXAvbWVtY3B5L3VubWFw LgorCSAqLworCWludCAoKmJvX2dldF9zdWJkYXRhKSAoZHJtX2ludGVsX2JvICpibywgdW5zaWdu ZWQgbG9uZyBvZmZzZXQsCisJCQkJICAgdW5zaWduZWQgbG9uZyBzaXplLCB2b2lkICpkYXRhKTsK KworCS8qKgorCSAqIFdhaXRzIGZvciByZW5kZXJpbmcgdG8gYW4gb2JqZWN0IGJ5IHRoZSBHUFUg dG8gaGF2ZSBjb21wbGV0ZWQuCisJICoKKwkgKiBUaGlzIGlzIG5vdCByZXF1aXJlZCBmb3IgYW55 IGFjY2VzcyB0byB0aGUgQk8gYnkgYm9fbWFwLAorCSAqIGJvX3N1YmRhdGEsIGV0Yy4gIEl0IGlz IG1lcmVseSBhIHdheSBmb3IgdGhlIGRyaXZlciB0byBpbXBsZW1lbnQKKwkgKiBnbEZpbmlzaC4K KwkgKi8KKwl2b2lkICgqYm9fd2FpdF9yZW5kZXJpbmcpIChkcm1faW50ZWxfYm8gKmJvKTsKKwor CS8qKgorCSAqIFRlYXJzIGRvd24gdGhlIGJ1ZmZlciBtYW5hZ2VyIGluc3RhbmNlLgorCSAqLwor CXZvaWQgKCpkZXN0cm95KSAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKTsKKworCS8qKgorCSAq IEluZGljYXRlIGlmIHRoZSBidWZmZXIgY2FuIGJlIHBsYWNlZCBhbnl3aGVyZSBpbiB0aGUgZnVs bCBwcGd0dAorCSAqIGFkZHJlc3MgcmFuZ2UgKDJeNDgpLgorCSAqCisJICogQW55IHJlc291cmNl IHVzZWQgd2l0aCBmbGF0L2hlYXBsZXNzICgweDAwMDAwMDAwLTB4ZmZmZmYwMDApCisJICogR2Vu ZXJhbCBTdGF0ZSBIZWFwIChHU0gpIG9yIEludHJ1Y3Rpb25zIFN0YXRlIEhlYXAgKElTSCkgbXVz dAorCSAqIGJlIGluIGEgMzItYml0IHJhbmdlLiA0OC1iaXQgcmFuZ2Ugd2lsbCBvbmx5IGJlIHVz ZWQgd2hlbiBleHBsaWNpdGx5CisJICogcmVxdWVzdGVkLgorCSAqCisJICogXHBhcmFtIGJvIEJ1 ZmZlciB0byBzZXQgdGhlIHVzZV80OGJfYWRkcmVzc19yYW5nZSBmbGFnLgorCSAqIFxwYXJhbSBl bmFibGUgVGhlIGZsYWcgdmFsdWUuCisJICovCisJdm9pZCAoKmJvX3VzZV80OGJfYWRkcmVzc19y YW5nZSkgKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IGVuYWJsZSk7CisKKwkvKioKKwkgKiBB ZGQgcmVsb2NhdGlvbiBlbnRyeSBpbiByZWxvY19idWYsIHdoaWNoIHdpbGwgYmUgdXBkYXRlZCB3 aXRoIHRoZQorCSAqIHRhcmdldCBidWZmZXIncyByZWFsIG9mZnNldCBvbiBvbiBjb21tYW5kIHN1 Ym1pc3Npb24uCisJICoKKwkgKiBSZWxvY2F0aW9ucyByZW1haW4gaW4gcGxhY2UgZm9yIHRoZSBs aWZldGltZSBvZiB0aGUgYnVmZmVyIG9iamVjdC4KKwkgKgorCSAqIFxwYXJhbSBibyBCdWZmZXIg dG8gd3JpdGUgdGhlIHJlbG9jYXRpb24gaW50by4KKwkgKiBccGFyYW0gb2Zmc2V0IEJ5dGUgb2Zm c2V0IHdpdGhpbiByZWxvY19ibyBvZiB0aGUgcG9pbnRlciB0bworCSAqCQkJdGFyZ2V0X2JvLgor CSAqIFxwYXJhbSB0YXJnZXRfYm8gQnVmZmVyIHdob3NlIG9mZnNldCBzaG91bGQgYmUgd3JpdHRl biBpbnRvIHRoZQorCSAqICAgICAgICAgICAgICAgICAgcmVsb2NhdGlvbiBlbnRyeS4KKwkgKiBc cGFyYW0gdGFyZ2V0X29mZnNldCBDb25zdGFudCB2YWx1ZSB0byBiZSBhZGRlZCB0byB0YXJnZXRf Ym8ncworCSAqCQkJb2Zmc2V0IGluIHJlbG9jYXRpb24gZW50cnkuCisJICogXHBhcmFtIHJlYWRf ZG9tYWlucyBHRU0gcmVhZCBkb21haW5zIHdoaWNoIHRoZSBidWZmZXIgd2lsbCBiZQorCSAqCQkJ cmVhZCBpbnRvIGJ5IHRoZSBjb21tYW5kIHRoYXQgdGhpcyByZWxvY2F0aW9uCisJICoJCQlpcyBw YXJ0IG9mLgorCSAqIFxwYXJhbSB3cml0ZV9kb21haW5zIEdFTSByZWFkIGRvbWFpbnMgd2hpY2gg dGhlIGJ1ZmZlciB3aWxsIGJlCisJICoJCQlkaXJ0aWVkIGluIGJ5IHRoZSBjb21tYW5kIHRoYXQg dGhpcworCSAqCQkJcmVsb2NhdGlvbiBpcyBwYXJ0IG9mLgorCSAqLworCWludCAoKmJvX2VtaXRf cmVsb2MpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJICBkcm1faW50 ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QgdGFyZ2V0X29mZnNldCwKKwkJCQkgIHVpbnQzMl90 IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWluKTsKKwlpbnQgKCpib19lbWl0X3Jl bG9jX2ZlbmNlKShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQsCisJCQkJICAgZHJt X2ludGVsX2JvICp0YXJnZXRfYm8sCisJCQkJICAgdWludDMyX3QgdGFyZ2V0X29mZnNldCwKKwkJ CQkgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJICAgdWludDMyX3Qgd3JpdGVfZG9tYWlu KTsKKworCS8qKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBidWZmZXIgcG9pbnRlZCB0byBieSBiby4g Ki8KKwlpbnQgKCpib19leGVjKSAoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCQlkcm1f Y2xpcF9yZWN0X3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsCisJCQlpbnQgRFI0KTsK KworCS8qKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBidWZmZXIgcG9pbnRlZCB0byBieSBibyBvbiB0 aGUgc2VsZWN0ZWQKKwkgKiByaW5nIGJ1ZmZlcgorCSAqLworCWludCAoKmJvX21yYl9leGVjKSAo ZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCQkJZHJtX2NsaXBfcmVjdF90ICpjbGlwcmVj dHMsIGludCBudW1fY2xpcHJlY3RzLAorCQkJCWludCBEUjQsIHVuc2lnbmVkIGZsYWdzKTsKKwor CS8qKgorCSAqIFBpbiBhIGJ1ZmZlciB0byB0aGUgYXBlcnR1cmUgYW5kIGZpeCB0aGUgb2Zmc2V0 IHVudGlsIHVucGlubmVkCisJICoKKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byBwaW4KKwkgKiBc cGFyYW0gYWxpZ25tZW50IFJlcXVpcmVkIGFsaWdubWVudCBmb3IgYXBlcnR1cmUsIGluIGJ5dGVz CisJICovCisJaW50ICgqYm9fcGluKSAoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgYWxpZ25t ZW50KTsKKworCS8qKgorCSAqIFVucGluIGEgYnVmZmVyIGZyb20gdGhlIGFwZXJ0dXJlLCBhbGxv d2luZyBpdCB0byBiZSByZW1vdmVkCisJICoKKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byB1bnBp bgorCSAqLworCWludCAoKmJvX3VucGluKSAoZHJtX2ludGVsX2JvICpibyk7CisKKwkvKioKKwkg KiBBc2sgdGhhdCB0aGUgYnVmZmVyIGJlIHBsYWNlZCBpbiB0aWxpbmcgbW9kZQorCSAqCisJICog XHBhcmFtIGJ1ZiBCdWZmZXIgdG8gc2V0IHRpbGluZyBtb2RlIGZvcgorCSAqIFxwYXJhbSB0aWxp bmdfbW9kZSBkZXNpcmVkLCBhbmQgcmV0dXJuZWQgdGlsaW5nIG1vZGUKKwkgKi8KKwlpbnQgKCpi b19zZXRfdGlsaW5nKSAoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwK KwkJCQkgIHVpbnQzMl90IHN0cmlkZSk7CisKKwkvKioKKwkgKiBHZXQgdGhlIGN1cnJlbnQgdGls aW5nIChhbmQgcmVzdWx0aW5nIHN3aXp6bGluZykgbW9kZSBmb3IgdGhlIGJvLgorCSAqCisJICog XHBhcmFtIGJ1ZiBCdWZmZXIgdG8gZ2V0IHRpbGluZyBtb2RlIGZvcgorCSAqIFxwYXJhbSB0aWxp bmdfbW9kZSByZXR1cm5lZCB0aWxpbmcgbW9kZQorCSAqIFxwYXJhbSBzd2l6emxlX21vZGUgcmV0 dXJuZWQgc3dpenpsaW5nIG1vZGUKKwkgKi8KKwlpbnQgKCpib19nZXRfdGlsaW5nKSAoZHJtX2lu dGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKKwkJCQkgIHVpbnQzMl90ICogc3dp enpsZV9tb2RlKTsKKworCS8qKgorCSAqIFNldCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgYnVm ZmVyIHdpbGwgYmUgc29mdHBpbm5lZAorCSAqIFxwYXJhbSBibyBCdWZmZXIgdG8gc2V0IHRoZSBz b2Z0cGluIG9mZnNldCBmb3IKKwkgKiBccGFyYW0gb2Zmc2V0IFNvZnRwaW4gb2Zmc2V0CisJICov CisJaW50ICgqYm9fc2V0X3NvZnRwaW5fb2Zmc2V0KSAoZHJtX2ludGVsX2JvICpibywgdWludDY0 X3Qgb2Zmc2V0KTsKKworCS8qKgorCSAqIENyZWF0ZSBhIHZpc2libGUgbmFtZSBmb3IgYSBidWZm ZXIgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3RoZXIgYXBwcworCSAqCisJICogXHBhcmFtIGJ1ZiBC dWZmZXIgdG8gY3JlYXRlIGEgbmFtZSBmb3IKKwkgKiBccGFyYW0gbmFtZSBSZXR1cm5lZCBuYW1l CisJICovCisJaW50ICgqYm9fZmxpbmspIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIG5h bWUpOworCisJLyoqCisJICogUmV0dXJucyAxIGlmIG1hcHBpbmcgdGhlIGJ1ZmZlciBmb3Igd3Jp dGUgY291bGQgY2F1c2UgdGhlIHByb2Nlc3MKKwkgKiB0byBibG9jaywgZHVlIHRvIHRoZSBvYmpl Y3QgYmVpbmcgYWN0aXZlIGluIHRoZSBHUFUuCisJICovCisJaW50ICgqYm9fYnVzeSkgKGRybV9p bnRlbF9ibyAqYm8pOworCisJLyoqCisJICogU3BlY2lmeSB0aGUgdm9sYXRpbGl0eSBvZiB0aGUg YnVmZmVyLgorCSAqIFxwYXJhbSBibyBCdWZmZXIgdG8gY3JlYXRlIGEgbmFtZSBmb3IKKwkgKiBc cGFyYW0gbWFkdiBUaGUgcHVyZ2VhYmxlIHN0YXR1cworCSAqCisJICogVXNlIEk5MTVfTUFEVl9E T05UTkVFRCB0byBtYXJrIHRoZSBidWZmZXIgYXMgcHVyZ2VhYmxlLCBhbmQgaXQgd2lsbCBiZQor CSAqIHJlY2xhaW1lZCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuIElmIHlvdSBzdWJzZXF1ZW50bHkg cmVxdWlyZSB0aGUgYnVmZmVyLAorCSAqIHRoZW4geW91IG11c3QgcGFzcyBJOTE1X01BRFZfV0lM TE5FRUQgdG8gbWFyayB0aGUgYnVmZmVyIGFzIHJlcXVpcmVkLgorCSAqCisJICogUmV0dXJucyAx IGlmIHRoZSBidWZmZXIgd2FzIHJldGFpbmVkLCBvciAwIGlmIGl0IHdhcyBkaXNjYXJkZWQgd2hp bHN0CisJICogbWFya2VkIGFzIEk5MTVfTUFEVl9ET05UTkVFRC4KKwkgKi8KKwlpbnQgKCpib19t YWR2aXNlKSAoZHJtX2ludGVsX2JvICpibywgaW50IG1hZHYpOworCisJaW50ICgqY2hlY2tfYXBl cnR1cmVfc3BhY2UpIChkcm1faW50ZWxfYm8gKiogYm9fYXJyYXksIGludCBjb3VudCk7CisKKwkv KioKKwkgKiBEaXNhYmxlIGJ1ZmZlciByZXVzZSBmb3IgYnVmZmVycyB3aGljaCB3aWxsIGJlIHNo YXJlZCBpbiBzb21lIHdheSwKKwkgKiBhcyB3aXRoIHNjYW5vdXQgYnVmZmVycy4gV2hlbiB0aGUg YnVmZmVyIHJlZmVyZW5jZSBjb3VudCBnb2VzIHRvCisJICogemVybywgaXQgd2lsbCBiZSBmcmVl ZCBhbmQgbm90IHBsYWNlZCBpbiB0aGUgcmV1c2UgbGlzdC4KKwkgKgorCSAqIFxwYXJhbSBibyBC dWZmZXIgdG8gZGlzYWJsZSByZXVzZSBmb3IKKwkgKi8KKwlpbnQgKCpib19kaXNhYmxlX3JldXNl KSAoZHJtX2ludGVsX2JvICpibyk7CisKKwkvKioKKwkgKiBRdWVyeSB3aGV0aGVyIGEgYnVmZmVy IGlzIHJldXNhYmxlLgorCSAqCisJICogXHBhcmFtIGJvIEJ1ZmZlciB0byBxdWVyeQorCSAqLwor CWludCAoKmJvX2lzX3JldXNhYmxlKSAoZHJtX2ludGVsX2JvICpibyk7CisKKwkvKioKKwkgKgor CSAqIFJldHVybiB0aGUgcGlwZSBhc3NvY2lhdGVkIHdpdGggYSBjcnRjX2lkIHNvIHRoYXQgdmJs YW5rCisJICogc3luY2hyb25pemF0aW9uIGNhbiB1c2UgdGhlIGNvcnJlY3QgZGF0YSBpbiB0aGUg cmVxdWVzdC4KKwkgKiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBLTVMgYW5kIGdlbSBhdCB0 aGlzIHBvaW50LCB3aGVuCisJICogdW5zdXBwb3J0ZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAt MSBhbmQgbGVhdmVzIHRoZSBkZWNpc2lvbgorCSAqIG9mIHdoYXQgdG8gZG8gaW4gdGhhdCBjYXNl IHRvIHRoZSBjYWxsZXIKKwkgKgorCSAqIFxwYXJhbSBidWZtZ3IgdGhlIGFzc29jaWF0ZWQgYnVm ZmVyIG1hbmFnZXIKKwkgKiBccGFyYW0gY3J0Y19pZCB0aGUgY3J0YyBpZGVudGlmaWVyCisJICov CisJaW50ICgqZ2V0X3BpcGVfZnJvbV9jcnRjX2lkKSAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy LCBpbnQgY3J0Y19pZCk7CisKKwkvKiogUmV0dXJucyB0cnVlIGlmIHRhcmdldF9ibyBpcyBpbiB0 aGUgcmVsb2NhdGlvbiB0cmVlIHJvb3RlZCBhdCBiby4gKi8KKwlpbnQgKCpib19yZWZlcmVuY2Vz KSAoZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8pOworCisJLyoqPCBF bmFibGVzIHZlcmJvc2UgZGVidWdnaW5nIHByaW50b3V0cyAqLworCWludCBkZWJ1ZzsKK307CisK K3N0cnVjdCBfZHJtX2ludGVsX2JvIHsKKwkvKioKKwkgKiBTaXplIGluIGJ5dGVzIG9mIHRoZSBi dWZmZXIgb2JqZWN0LgorCSAqCisJICogVGhlIHNpemUgbWF5IGJlIGxhcmdlciB0aGFuIHRoZSBz aXplIG9yaWdpbmFsbHkgcmVxdWVzdGVkIGZvciB0aGUKKwkgKiBhbGxvY2F0aW9uLCBzdWNoIGFz IGJlaW5nIGFsaWduZWQgdG8gcGFnZSBzaXplLgorCSAqLworCXVuc2lnbmVkIGxvbmcgc2l6ZTsK KworCS8qKgorCSAqIEFsaWdubWVudCByZXF1aXJlbWVudCBmb3Igb2JqZWN0CisJICoKKwkgKiBV c2VkIGZvciBHVFQgbWFwcGluZyAmIHBpbm5pbmcgdGhlIG9iamVjdC4KKwkgKi8KKwl1bnNpZ25l ZCBsb25nIGFsaWduOworCisJLyoqCisJICogRGVwcmVjYXRlZCBmaWVsZCBjb250YWluaW5nIChw b3NzaWJseSB0aGUgbG93IDMyLWJpdHMgb2YpIHRoZSBsYXN0CisJICogc2VlbiB2aXJ0dWFsIGNh cmQgYWRkcmVzcy4gIFVzZSBvZmZzZXQ2NCBpbnN0ZWFkLgorCSAqLworCXVuc2lnbmVkIGxvbmcg b2Zmc2V0OworCisJLyoqCisJICogVmlydHVhbCBhZGRyZXNzIGZvciBhY2Nlc3NpbmcgdGhlIGJ1 ZmZlciBkYXRhLiAgT25seSB2YWxpZCB3aGlsZQorCSAqIG1hcHBlZC4KKwkgKi8KKyNpZmRlZiBf X2NwbHVzcGx1cworCXZvaWQgKnZpcnQ7CisjZWxzZQorCXZvaWQgKnZpcnR1YWw7CisjZW5kaWYK KworCS8qKiBCdWZmZXIgbWFuYWdlciBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZl ciBvYmplY3QgKi8KKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisKKwkvKioKKwkgKiBNTS1z cGVjaWZpYyBoYW5kbGUgZm9yIGFjY2Vzc2luZyBvYmplY3QKKwkgKi8KKwlpbnQgaGFuZGxlOwor CisJLyoqCisJICogTGFzdCBzZWVuIGNhcmQgdmlydHVhbCBhZGRyZXNzIChvZmZzZXQgZnJvbSB0 aGUgYmVnaW5uaW5nIG9mIHRoZQorCSAqIGFwZXJ0dXJlKSBmb3IgdGhlIG9iamVjdC4gIFRoaXMg c2hvdWxkIGJlIHVzZWQgdG8gZmlsbCByZWxvY2F0aW9uCisJICogZW50cmllcyB3aGVuIGNhbGxp bmcgZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoKQorCSAqLworCXVpbnQ2NF90IG9mZnNldDY0Owor fTsKKwordHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9hdWJfYW5ub3RhdGlvbiB7CisJdWludDMy X3QgdHlwZTsKKwl1aW50MzJfdCBzdWJ0eXBlOworCXVpbnQzMl90IGVuZGluZ19vZmZzZXQ7Cit9 IGRybV9pbnRlbF9hdWJfYW5ub3RhdGlvbjsKKworZHJtX2ludGVsX2J1Zm1nciAqZHJtX2ludGVs X2J1Zm1ncl9nZW1faW5pdChpbnQgZmQsIGludCBiYXRjaF9zaXplKTsKK3ZvaWQgZHJtX2ludGVs X2JvX3VucmVmZXJlbmNlKGRybV9pbnRlbF9ibyAqYm8pOworZHJtX2ludGVsX2JvICpkcm1faW50 ZWxfYm9fYWxsb2MoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCBjb25zdCBjaGFyICpuYW1lLAor CQkJCSB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGludCBhbGlnbm1lbnQpOworaW50IGRy bV9pbnRlbF9ib19zdWJkYXRhKGRybV9pbnRlbF9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgb2Zmc2V0 LAorCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7CitpbnQgZHJtX2lu dGVsX2dlbV9ib19jb250ZXh0X2V4ZWMoZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVsX2NvbnRl eHQgKmN0eCwKKwkJCQkgIGludCB1c2VkLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworaW50IGRybV9p bnRlbF9ib19lbWl0X3JlbG9jKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9mZnNldCwKKwkJ CQlkcm1faW50ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QgdGFyZ2V0X29mZnNldCwKKwkJCQl1 aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7CitpbnQgZHJtX2lu dGVsX2JvX2VtaXRfcmVsb2NfZmVuY2UoZHJtX2ludGVsX2JvICpibywgdWludDMyX3Qgb2Zmc2V0 LAorCQkJCSAgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8sCisJCQkJICB1aW50MzJfdCB0YXJnZXRf b2Zmc2V0LAorCQkJCSAgdWludDMyX3QgcmVhZF9kb21haW5zLCB1aW50MzJfdCB3cml0ZV9kb21h aW4pOworaW50IGRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQz Ml90ICogdGlsaW5nX21vZGUsCisJCQkJdWludDMyX3QgKiBzd2l6emxlX21vZGUpOworaW50IGRy bV9pbnRlbF9ib19tcmJfZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwKKwkJCXN0cnVj dCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBpbnQgRFI0LAor CQkJdW5zaWduZWQgaW50IGZsYWdzKTsKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1 Yl9hbm5vdGF0aW9ucyhkcm1faW50ZWxfYm8gKmJvLAorCQkJCQkgZHJtX2ludGVsX2F1Yl9hbm5v dGF0aW9uICphbm5vdGF0aW9ucywKKwkJCQkJIHVuc2lnbmVkIGNvdW50KTsKK3ZvaWQgZHJtX2lu dGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncik7Citp bnQgZHJtX2ludGVsX2JvX2V4ZWMoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCisJCQkgIHN0 cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBpbnQgRFI0 KTsKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1n cik7Cit2b2lkIGRybV9pbnRlbF9ib193YWl0X3JlbmRlcmluZyhkcm1faW50ZWxfYm8gKmJvKTsK K2ludCBkcm1faW50ZWxfYm9fZ2V0X3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQg bG9uZyBvZmZzZXQsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqZGF0YSk7CitpbnQg ZHJtX2ludGVsX2JvX21hcChkcm1faW50ZWxfYm8gKmJvLCBpbnQgd3JpdGVfZW5hYmxlKTsKK2lu dCBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoZHJtX2ludGVsX2JvICpibyk7Cit2b2lkIGRybV9p bnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9mZW5jZWRfcmVsb2NzKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1ncik7CitpbnQgZHJtX2ludGVsX2JvX3VubWFwKGRybV9pbnRlbF9ibyAqYm8pOworaW50IGRy bV9pbnRlbF9ib19mbGluayhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIG5hbWUpOworZHJt X2ludGVsX2JvICpkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUoZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyLAorCQkJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXVuc2lnbmVkIGlu dCBoYW5kbGUpOworaW50IGRybV9pbnRlbF9ib19nZW1fZXhwb3J0X3RvX3ByaW1lKGRybV9pbnRl bF9ibyAqYm8sIGludCAqcHJpbWVfZmQpOworZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fZ2Vt X2NyZWF0ZV9mcm9tX3ByaW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJCWludCBw cmltZV9mZCwgaW50IHNpemUpOwordm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfdm1hX2Nh Y2hlX3NpemUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJIGludCBsaW1pdCk7Citp bnQgZHJtX2ludGVsX2dlbV9ib191bm1hcF9ndHQoZHJtX2ludGVsX2JvICpibyk7Citkcm1faW50 ZWxfY29udGV4dCAqZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShkcm1faW50ZWxfYnVmbWdy ICpidWZtZ3IpOwordm9pZCBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShkcm1faW50ZWxf Y29udGV4dCAqY3R4KTsKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX3RpbGVkKGRy bV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJ ICAgaW50IHgsIGludCB5LCBpbnQgY3BwLAorCQkJCQkgICB1aW50MzJfdCAqdGlsaW5nX21vZGUs CisJCQkJCSAgIHVuc2lnbmVkIGxvbmcgKnBpdGNoLAorCQkJCQkgICB1bnNpZ25lZCBsb25nIGZs YWdzKTsKK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9maWxlbmFtZShkcm1faW50 ZWxfYnVmbWdyICpidWZtZ3IsCisJCQkJCSAgY29uc3QgY2hhciAqZmlsZW5hbWUpOwordm9pZCBk cm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2R1bXAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy LCBpbnQgZW5hYmxlKTsKK3ZvaWQgZHJtX2ludGVsX2dlbV9ib19hdWJfZHVtcF9ibXAoZHJtX2lu dGVsX2JvICpibywKKwkJCQkgICBpbnQgeDEsIGludCB5MSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LAorCQkJCSAgIGVudW0gYXViX2R1bXBfYm1wX2Zvcm1hdCBmb3JtYXQsCisJCQkJICAgaW50IHBp dGNoLCBpbnQgb2Zmc2V0KTsKK3ZvaWQgZHJtX2ludGVsX2dlbV9ib19zdGFydF9ndHRfYWNjZXNz KGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpOworaW50IGRybV9pbnRlbF9ib19z ZXRfdGlsaW5nKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90ICogdGlsaW5nX21vZGUsCisJCQkJ dWludDMyX3Qgc3RyaWRlKTsKK2ludCBkcm1faW50ZWxfYm9fZGlzYWJsZV9yZXVzZShkcm1faW50 ZWxfYm8gKmJvKTsKK3ZvaWQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZShkcm1faW50ZWxfYm8gKmJv KTsKK2ludCBkcm1faW50ZWxfYnVmbWdyX2dlbV9nZXRfZGV2aWQoZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyKTsKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX2Zvcl9yZW5kZXIoZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCXVu c2lnbmVkIGxvbmcgc2l6ZSwKKwkJCQkJCXVuc2lnbmVkIGludCBhbGlnbm1lbnQpOworaW50IGRy bV9pbnRlbF9ib19yZWZlcmVuY2VzKGRybV9pbnRlbF9ibyAqYm8sIGRybV9pbnRlbF9ibyAqdGFy Z2V0X2JvKTsKK2ludCBkcm1faW50ZWxfZ2VtX2JvX3dhaXQoZHJtX2ludGVsX2JvICpibywgaW50 NjRfdCB0aW1lb3V0X25zKTsKK2RybV9pbnRlbF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jX3VzZXJw dHIoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJCQkgY29uc3QgY2hhciAqbmFtZSwKKwkJ CQkJIHZvaWQgKmFkZHIsIHVpbnQzMl90IHRpbGluZ19tb2RlLAorCQkJCQkgdWludDMyX3Qgc3Ry aWRlLCB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJCSB1bnNpZ25lZCBsb25nIGZsYWdzKTsKKwor I2VuZGlmLy9JTlRFTF9CVUZNR1JfSAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=