From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D53C6E942 for ; Tue, 16 Feb 2021 11:40:38 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 16 Feb 2021 12:39:46 +0100 Message-Id: <20210216114007.122175-15-zbigniew.kempczynski@intel.com> In-Reply-To: <20210216114007.122175-1-zbigniew.kempczynski@intel.com> References: <20210216114007.122175-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 14/35] lib/intel_batchbuffer: Integrate intel_bb with allocator List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: Q29tcGxleCBjaGFuZ2VzIGluc2lkZSBpbnRlbC1iYiByZWxhdGVkIHRvIGludHJvZHVjZSBJR1Qg YWxsb2NhdG9yLgoKU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmll dy5rZW1wY3p5bnNraUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERvbWluaWsgR3J6ZWdvcnpl ayA8ZG9taW5pay5ncnplZ29yemVrQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxpYi9pbnRlbF9hdXhfcGd0YWJsZS5jICAgICAgfCAg MjYgKy0KIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jICAgICAgfCA1MDIgKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0KIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oICAgICAgfCAgMjMg Ky0KIHRlc3RzL2k5MTUvYXBpX2ludGVsX2JiLmMgICAgfCAgMTYgKy0KIHRlc3RzL2k5MTUvZ2Vt X21tYXBfb2Zmc2V0LmMgfCAgIDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMo KyksIDE3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYXV4X3BndGFibGUu YyBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCmluZGV4IGMwNWQ0NTExZS4uZjI5YTMwOTE2IDEw MDY0NAotLS0gYS9saWIvaW50ZWxfYXV4X3BndGFibGUuYworKysgYi9saWIvaW50ZWxfYXV4X3Bn dGFibGUuYwpAQCAtOTQsOSArOTQsOSBAQCBwZ3RfdGFibGVfY291bnQoaW50IGFkZHJlc3NfYml0 cywgc3RydWN0IGludGVsX2J1ZiAqKmJ1ZnMsIGludCBidWZfY291bnQpCiAJCS8qIFdlIHJlcXVp cmUgYnVmcyB0byBiZSBzb3J0ZWQuICovCiAJCWlndF9hc3NlcnQoaSA9PSAwIHx8CiAJCQkgICBi dWYtPmFkZHIub2Zmc2V0ID49IGJ1ZnNbaSAtIDFdLT5hZGRyLm9mZnNldCArCi0JCQkJCSAgICAg ICBpbnRlbF9idWZfYm9fc2l6ZShidWZzW2kgLSAxXSkpOwotCisJCQkJaW50ZWxfYnVmX2JvX3Np emUoYnVmc1tpIC0gMV0pKTsKIAkJc3RhcnQgPSBBTElHTl9ET1dOKGJ1Zi0+YWRkci5vZmZzZXQs IDFVTCA8PCBhZGRyZXNzX2JpdHMpOworCiAJCS8qIEF2b2lkIGRvdWJsZSBjb3VudGluZyBmb3Ig b3ZlcmxhcHBpbmcgYWxpZ25lZCBidWZzLiAqLwogCQlzdGFydCA9IG1heChzdGFydCwgZW5kKTsK IApAQCAtMzQ2LDEwICszNDYsOCBAQCBwZ3RfcG9wdWxhdGVfZW50cmllc19mb3JfYnVmKHN0cnVj dCBwZ3RhYmxlICpwZ3QsCiAJCQkgICAgIHVpbnQ2NF90IHRvcF90YWJsZSwKIAkJCSAgICAgaW50 IHN1cmZhY2VfaWR4KQogewotCXVpbnQ2NF90IHN1cmZhY2VfYWRkciA9IGJ1Zi0+YWRkci5vZmZz ZXQgKwotCQkJCWJ1Zi0+c3VyZmFjZVtzdXJmYWNlX2lkeF0ub2Zmc2V0OwotCXVpbnQ2NF90IHN1 cmZhY2VfZW5kID0gc3VyZmFjZV9hZGRyICsKLQkJCSAgICAgICBidWYtPnN1cmZhY2Vbc3VyZmFj ZV9pZHhdLnNpemU7CisJdWludDY0X3Qgc3VyZmFjZV9hZGRyID0gYnVmLT5hZGRyLm9mZnNldCAr IGJ1Zi0+c3VyZmFjZVtzdXJmYWNlX2lkeF0ub2Zmc2V0OworCXVpbnQ2NF90IHN1cmZhY2VfZW5k ID0gc3VyZmFjZV9hZGRyICsgIGJ1Zi0+c3VyZmFjZVtzdXJmYWNlX2lkeF0uc2l6ZTsKIAl1aW50 NjRfdCBhdXhfYWRkciA9IGJ1Zi0+YWRkci5vZmZzZXQgKyBidWYtPmNjc1tzdXJmYWNlX2lkeF0u b2Zmc2V0OwogCXVpbnQ2NF90IGwxX2ZsYWdzID0gcGd0X2dldF9sMV9mbGFncyhidWYsIHN1cmZh Y2VfaWR4KTsKIAl1aW50NjRfdCBseF9mbGFncyA9IHBndF9nZXRfbHhfZmxhZ3MoKTsKQEAgLTQ0 MSw3ICs0MzksNiBAQCBzdHJ1Y3QgaW50ZWxfYnVmICoKIGludGVsX2F1eF9wZ3RhYmxlX2NyZWF0 ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCSBzdHJ1Y3QgaW50ZWxfYnVmICoqYnVmcywgaW50 IGJ1Zl9jb3VudCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqOwog CXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjIGxldmVsX2Rlc2NbXSA9IHsK IAkJewogCQkJLmlkeF9zaGlmdCA9IDE2LApAQCAtNDY1LDcgKzQ2Miw2IEBAIGludGVsX2F1eF9w Z3RhYmxlX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlzdHJ1Y3QgcGd0YWJsZSAqcGd0 OwogCXN0cnVjdCBidWZfb3BzICpib3BzOwogCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsKLQl1aW50 NjRfdCBwcmV2X2FsaWdubWVudDsKIAogCWlndF9hc3NlcnQoYnVmX2NvdW50KTsKIAlib3BzID0g YnVmc1swXS0+Ym9wczsKQEAgLTQ3NiwxMSArNDcyLDggQEAgaW50ZWxfYXV4X3BndGFibGVfY3Jl YXRlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCSAgICBJOTE1X0NPTVBSRVNTSU9OX05PTkUp OwogCiAJLyogV2UgbmVlZCB0byB1c2UgcGd0LT5tYXhfYWxpZ24gZm9yIGF1eCB0YWJsZSAqLwot CXByZXZfYWxpZ25tZW50ID0gaW50ZWxfYmJfc2V0X2RlZmF1bHRfb2JqZWN0X2FsaWdubWVudChp YmIsCi0JCQkJCQkJICAgICAgIHBndC0+bWF4X2FsaWduKTsKLQlvYmogPSBpbnRlbF9iYl9hZGRf aW50ZWxfYnVmKGliYiwgcGd0LT5idWYsIGZhbHNlKTsKLQlpbnRlbF9iYl9zZXRfZGVmYXVsdF9v YmplY3RfYWxpZ25tZW50KGliYiwgcHJldl9hbGlnbm1lbnQpOwotCW9iai0+YWxpZ25tZW50ID0g cGd0LT5tYXhfYWxpZ247CisJaW50ZWxfYmJfYWRkX2ludGVsX2J1Zl93aXRoX2FsaWdubWVudChp YmIsIHBndC0+YnVmLAorCQkJCQkgICAgICBwZ3QtPm1heF9hbGlnbiwgZmFsc2UpOwogCiAJcGd0 X21hcChpYmItPmk5MTUsIHBndCk7CiAJcGd0X3BvcHVsYXRlX2VudHJpZXMocGd0LCBidWZzLCBi dWZfY291bnQpOwpAQCAtNDk4LDkgKzQ5MSwxMCBAQCBhdXhfcGd0YWJsZV9yZXNlcnZlX2J1Zl9z bG90KHN0cnVjdCBpbnRlbF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50LAogewogCWludCBpOwog Ci0JZm9yIChpID0gMDsgaSA8IGJ1Zl9jb3VudDsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBidWZf Y291bnQ7IGkrKykgewogCQlpZiAoYnVmc1tpXS0+YWRkci5vZmZzZXQgPiBuZXdfYnVmLT5hZGRy Lm9mZnNldCkKIAkJCWJyZWFrOworCX0KIAogCW1lbW1vdmUoJmJ1ZnNbaSArIDFdLCAmYnVmc1tp XSwgc2l6ZW9mKGJ1ZnNbMF0pICogKGJ1Zl9jb3VudCAtIGkpKTsKIApAQCAtNjA2LDggKzYwMCwx MCBAQCBnZW4xMl9hdXhfcGd0YWJsZV9jbGVhbnVwKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1 Y3QgYXV4X3BndGFibGVfaW5mbyAqaW5mbykKIAkJaWd0X2Fzc2VydF9lcV91NjQoYWRkciwgaW5m by0+YnVmX3Bpbl9vZmZzZXRzW2ldKTsKIAl9CiAKLQlpZiAoaW5mby0+cGd0YWJsZV9idWYpCisJ aWYgKGluZm8tPnBndGFibGVfYnVmKSB7CisJCWludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoaWJi LCBpbmZvLT5wZ3RhYmxlX2J1Zik7CiAJCWludGVsX2J1Zl9kZXN0cm95KGluZm8tPnBndGFibGVf YnVmKTsKKwl9CiB9CiAKIHVpbnQzMl90CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZm ZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCmluZGV4IDgxMThkYzk0NS4uNmZiMzUwOTI0 IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysgYi9saWIvaW50ZWxfYmF0 Y2hidWZmZXIuYwpAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKICNp bmNsdWRlICJncGdwdV9maWxsLmgiCiAjaW5jbHVkZSAiaWd0X2F1eC5oIgotI2luY2x1ZGUgImln dF9yYW5kLmgiCiAjaW5jbHVkZSAiaTgzMF9yZWcuaCIKICNpbmNsdWRlICJodWNfY29weS5oIgog I2luY2x1ZGUgPGdsaWIuaD4KQEAgLTEyMTEsMjMgKzEyMTAsOSBAQCBzdGF0aWMgdm9pZCBfX3Jl YWxsb2NhdGVfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAl9CiB9CiAKLS8qCi0gKiBn ZW44X2Nhbm9uaWNhbF9hZGRyCi0gKiBVc2VkIHRvIGNvbnZlcnQgYW55IGFkZHJlc3MgaW50byBj YW5vbmljYWwgZm9ybSwgaS5lLiBbNjM6NDhdID09IFs0N10uCi0gKiBCYXNlZCBvbiBrZXJuZWwn cyBzaWduX2V4dGVuZDY0IGltcGxlbWVudGF0aW9uLgotICogQGFkZHJlc3MgLSBhIHZpcnR1YWwg YWRkcmVzcwotICovCi0jZGVmaW5lIEdFTjhfSElHSF9BRERSRVNTX0JJVCA0Nwotc3RhdGljIHVp bnQ2NF90IGdlbjhfY2Fub25pY2FsX2FkZHIodWludDY0X3QgYWRkcmVzcykKLXsKLQlpbnQgc2hp ZnQgPSA2MyAtIEdFTjhfSElHSF9BRERSRVNTX0JJVDsKLQotCXJldHVybiAoaW50NjRfdCkoYWRk cmVzcyA8PCBzaGlmdCkgPj4gc2hpZnQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgX19p bnRlbF9iYl9nZXRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCQkgICAgIHVpbnQz Ml90IGhhbmRsZSwKLQkJCQkJICAgICB1aW50MzJfdCBzaXplLAorCQkJCQkgICAgIHVpbnQ2NF90 IHNpemUsCiAJCQkJCSAgICAgdWludDMyX3QgYWxpZ25tZW50KQogewogCXVpbnQ2NF90IG9mZnNl dDsKQEAgLTEyMzUsMzMgKzEyMjAsNzcgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBfX2ludGVs X2JiX2dldF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsCiAJaWYgKGliYi0+ZW5mb3JjZV9y ZWxvY3MpCiAJCXJldHVybiAwOwogCi0JLyogcmFuZG9taXplIHRoZSBhZGRyZXNzLCB3ZSB0cnkg dG8gYXZvaWQgcmVsb2NhdGlvbnMgKi8KLQlvZmZzZXQgPSBoYXJzX3BldHJ1c2thX2Y1NF8xX3Jh bmRvbTY0KCZpYmItPnBybmcpOwotCW9mZnNldCArPSAyNTYgPDwgMTA7IC8qIEtlZXAgdGhlIGxv dyAyNTZrIGNsZWFyLCBmb3IgbmVnYXRpdmUgZGVsdGFzICovCi0Jb2Zmc2V0ICY9IGliYi0+Z3R0 X3NpemUgLSAxOwotCW9mZnNldCAmPSB+KGliYi0+YWxpZ25tZW50IC0gMSk7Ci0Jb2Zmc2V0ID0g Z2VuOF9jYW5vbmljYWxfYWRkcihvZmZzZXQpOworCW9mZnNldCA9IGludGVsX2FsbG9jYXRvcl9h bGxvYyhpYmItPmFsbG9jYXRvcl9oYW5kbGUsCisJCQkJICAgICAgIGhhbmRsZSwgc2l6ZSwgYWxp Z25tZW50KTsKIAogCXJldHVybiBvZmZzZXQ7CiB9CiAKIC8qKgotICogaW50ZWxfYmJfY3JlYXRl OgorICogX19pbnRlbF9iYl9jcmVhdGU6CiAgKiBAaTkxNTogZHJtIGZkCisgKiBAY3R4OiBjb250 ZXh0CiAgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hidWZmZXIKKyAqIEBkb19yZWxvY3M6IHVz ZSByZWxvY2F0aW9ucyBvciBhbGxvY2F0b3IKKyAqIEBhbGxvY2F0b3JfdHlwZTogYWxsb2NhdG9y IHR5cGUsIG11c3QgYmUgSU5URUxfQUxMT0NBVE9SX05PTkUgZm9yIHJlbG9jYXRpb25zCisgKgor ICogaW50ZWwtYmIgYXNzdW1lcyBpdCB3aWxsIHdvcmsgaW4gb25lIG9mIHR3byBtb2RlcyAtIHdp dGggcmVsb2NhdGlvbnMgb3IKKyAqIHdpdGggdXNpbmcgYWxsb2NhdG9yIChjdXJyZW50bHkgUkFO RE9NIGFuZCBTSU1QTEUgYXJlIGltcGxlbWVudGVkKS4KKyAqIFNvbWUgZGVzY3JpcHRpb24gaXMg cmVxdWlyZWQgdG8gZGVzY3JpYmUgaG93IHRoZXkgbWFpbnRhaW4gdGhlIGFkZHJlc3Nlcy4KKyAq CisgKiBCZWZvcmUgZW50ZXJpbmcgaW50byBlYWNoIHNjZW5hcmlvcyBnZW5lcmljIHJ1bGUgaXMg aW50ZWwtYmIga2VlcHMgb2JqZWN0cworICogYW5kIHRoZWlyIG9mZnNldHMgaW4gdGhlIGludGVy bmFsIGNhY2hlIGFuZCByZXVzZXMgaW4gc3Vic2VxdWVudCBleGVjcy4KKyAqCisgKiAxLiBpbnRl bC1iYiB3aXRoIHJlbG9jYXRpb25zCisgKgorICogQ3JlYXRpbmcgbmV3IGludGVsLWJiIGFkZHMg aGFuZGxlIHRvIGNhY2hlIGltcGxpY2l0bHkgYW5kIHNldHMgaXRzIGFkZHJlc3MKKyAqIHRvIDAu IE9iamVjdHMgYWRkZWQgdG8gaW50ZWwtYmIgbGF0ZXIgYWxzbyBoYXZlIGFkZHJlc3MgMCBzZXQg Zm9yIGZpcnN0IHJ1bi4KKyAqIEFmdGVyIGNhbGxpbmcgZXhlY2J1ZiBjYWNoZSBpcyBhbHRlcmVk IHdpdGggbmV3IGFkZHJlc3Nlcy4gQXMgaW50ZWwtYmIKKyAqIHdvcmtzIGluIHJlbG9jIG1vZGUg YWRkcmVzc2VzIGFyZSBvbmx5IHN1Z2dlc3Rpb24gdG8gdGhlIGRyaXZlciBhbmQgd2UKKyAqIGNh bm5vdCBiZSBzdXJlIHRoZXkgd29uJ3QgY2hhbmdlIGF0IG5leHQgZXhlYy4KKyAqCisgKiAyLiB3 aXRoIGFsbG9jYXRvcgorICoKKyAqIFRoaXMgbW9kZSBpcyB2YWxpZCBvbmx5IGZvciBwcGd0dC4g QWRkcmVzc2VzIGFyZSBhY3F1aXJlZCBmcm9tIGFsbG9jYXRvcgorICogYW5kIHNvZnRwaW5uZWQu IGludGVsLWJiIGNhY2hlIG11c3QgYmUgdGhlbiBjb2hlcmVudCB3aXRoIGFsbG9jYXRvcgorICog KHNpbXBsZSBpcyBjb2hlcmVudCwgcmFuZG9tIGlzIG5vdCBkdWUgdG8gZmFjdCB3ZSBkb24ndCBr ZWVwIGl0cyBzdGF0ZSkuCisgKiBXaGVuIHdlIGRvIGludGVsLWJiIHJlc2V0IHdpdGggcHVyZ2lu ZyBjYWNoZSBpdCBoYXMgdG8gcmVhY3F1aXJlIGFkZHJlc3NlcworICogZnJvbSBhbGxvY2F0b3Ig KGFsbG9jYXRvciBzaG91bGQgcmV0dXJuIHNhbWUgYWRkcmVzcyAtIHdoYXQgaXMgdHJ1ZSBmb3IK KyAqIHNpbXBsZSBhbGxvY2F0b3IgYW5kIGZhbHNlIGZvciByYW5kb20gYXMgbWVudGlvbmVkIGJl Zm9yZSkuCisgKgorICogSWYgd2UgZG8gcmVzZXQgd2l0aG91dCBwdXJnaW5nIGNhY2hlcyB3ZSB1 c2UgYWRkcmVzc2VzIGZyb20gaW50ZWwtYmIgY2FjaGUKKyAqIGR1cmluZyBleGVjYnVmIG9iamVj dHMgY29uc3RydWN0aW9uLgogICoKICAqIFJldHVybnM6CiAgKgogICogUG9pbnRlciB0aGUgaW50 ZWxfYmIsIGFzc2VydHMgb24gZmFpbHVyZS4KICAqLwogc3RhdGljIHN0cnVjdCBpbnRlbF9iYiAq Ci1fX2ludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50MzJfdCBzaXpl LCBib29sIGRvX3JlbG9jcykKK19faW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBj dHgsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVsb2NzLAorCQkgIHVpbnQ4X3QgYWxsb2NhdG9y X3R5cGUpCiB7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsKIAlz dHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikpOwotCXVpbnQ2NF90 IGd0dF9zaXplOwogCiAJaWd0X2Fzc2VydChpYmIpOwogCisJaWJiLT51c2VzX2Z1bGxfcHBndHQg PSBnZW1fdXNlc19mdWxsX3BwZ3R0KGk5MTUpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZl IGZ1bGwgcHBndHQgZHJpdmVyIGNhbiBjaGFuZ2Ugb3VyIGFkZHJlc3NlcworCSAqIHNvIGFsbG9j YXRvciBpcyB1c2VsZXNzIGluIHRoaXMgY2FzZS4gSnVzdCBlbmZvcmNlIHJlbG9jYXRpb25zCisJ ICogZm9yIHN1Y2ggZ2VucyBhbmQgZG9uJ3QgdXNlIGFsbG9jYXRvciBhdCBhbGwuCisJICovCisJ aWYgKCFpYmItPnVzZXNfZnVsbF9wcGd0dCkgeworCQlkb19yZWxvY3MgPSB0cnVlOworCQlhbGxv Y2F0b3JfdHlwZSA9IElOVEVMX0FMTE9DQVRPUl9OT05FOworCX0KKworCWlmICghZG9fcmVsb2Nz KQorCQlpYmItPmFsbG9jYXRvcl9oYW5kbGUgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihpOTE1LCBj dHgsIGFsbG9jYXRvcl90eXBlKTsKKwllbHNlCisJCWlndF9hc3NlcnQoYWxsb2NhdG9yX3R5cGUg PT0gSU5URUxfQUxMT0NBVE9SX05PTkUpOworCWliYi0+YWxsb2NhdG9yX3R5cGUgPSBhbGxvY2F0 b3JfdHlwZTsKIAlpYmItPmk5MTUgPSBpOTE1OwogCWliYi0+ZGV2aWQgPSBpbnRlbF9nZXRfZHJt X2RldmlkKGk5MTUpOwogCWliYi0+Z2VuID0gaW50ZWxfZ2VuKGliYi0+ZGV2aWQpOwpAQCAtMTI3 Myw0MSArMTMwMiw0MyBAQCBfX2ludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3QgY3R4 LCB1aW50MzJfdCBzaXplLCBib29sIGRvX3JlbG9jcykKIAlpYmItPmJhdGNoID0gY2FsbG9jKDEs IHNpemUpOwogCWlndF9hc3NlcnQoaWJiLT5iYXRjaCk7CiAJaWJiLT5wdHIgPSBpYmItPmJhdGNo OwotCWliYi0+cHJuZyA9ICh1aW50MzJfdCkgdG9fdXNlcl9wb2ludGVyKGliYik7CiAJaWJiLT5m ZW5jZSA9IC0xOwogCi0JZ3R0X3NpemUgPSBnZW1fYXBlcnR1cmVfc2l6ZShpOTE1KTsKLQlpZiAo IWdlbV91c2VzX2Z1bGxfcHBndHQoaTkxNSkpCi0JCWd0dF9zaXplIC89IDI7Ci0JaWYgKChndHRf c2l6ZSAtIDEpID4+IDMyKSB7CisJaWJiLT5ndHRfc2l6ZSA9IGdlbV9hcGVydHVyZV9zaXplKGk5 MTUpOworCWlmICgoaWJiLT5ndHRfc2l6ZSAtIDEpID4+IDMyKQogCQlpYmItPnN1cHBvcnRzXzQ4 Yl9hZGRyZXNzID0gdHJ1ZTsKIAotCQkvKgotCQkgKiBVbnRpbCB3ZSBkZXZlbG9wIElHVCBhZGRy ZXNzIGFsbG9jYXRvciB3ZSB3b3JrYXJvdW5kCi0JCSAqIHBsYXlpbmcgd2l0aCBjYW5vbmljYWwg YWRkcmVzc2VzIHdpdGggNDctYml0IHNldCB0byAxCi0JCSAqIGp1c3QgYnkgbGltaXRpbmcgZ3R0 IHNpemUgdG8gNDYtYml0IHdoZW4gZ3R0IGlzIDQ3IG9yIDQ4Ci0JCSAqIGJpdCBzaXplLiBDdXJy ZW50IGludGVyZmFjZSBkb2Vzbid0IHBhc3MgYm8gc2l6ZSwgc28KLQkJICogbGltaXRpbmcgdG8g NDYgYml0IG1ha2UgdXMgc3VyZSB3ZSB3b24ndCBlbnRlciB0bwotCQkgKiBhZGRyZXNzZXMgd2l0 aCA0Ny1iaXQgc2V0ICh3ZSB1c2UgMzItYml0IHNpemUgbm93IHNvCi0JCSAqIHN0aWxsIHdlIGZp dCA0Ny1iaXQgYWRkcmVzcyBzcGFjZSkuCi0JCSAqLwotCQlpZiAoZ3R0X3NpemUgJiAoM3VsbCA8 PCA0NykpCi0JCQlndHRfc2l6ZSA9ICgxdWxsIDw8IDQ2KTsKLQl9Ci0JaWJiLT5ndHRfc2l6ZSA9 IGd0dF9zaXplOwotCi0JaWJiLT5iYXRjaF9vZmZzZXQgPSBfX2ludGVsX2JiX2dldF9vZmZzZXQo aWJiLAotCQkJCQkJICBpYmItPmhhbmRsZSwKLQkJCQkJCSAgaWJiLT5zaXplLAotCQkJCQkJICBp YmItPmFsaWdubWVudCk7Ci0JaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGliYi0+aGFuZGxlLCBp YmItPnNpemUsCi0JCQkgICAgaWJiLT5iYXRjaF9vZmZzZXQsIGZhbHNlKTsKKwlvYmplY3QgPSBp bnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5kbGUsIGliYi0+c2l6ZSwKKwkJCQkgICAg IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MsIGliYi0+YWxpZ25tZW50LAorCQkJCSAgICAgZmFs c2UpOworCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0LT5vZmZzZXQ7CiAKIAlpYmItPnJlZmNv dW50ID0gMTsKIAogCXJldHVybiBpYmI7CiB9CiAKKy8qKgorICogaW50ZWxfYmJfY3JlYXRlX2Z1 bGw6CisgKiBAaTkxNTogZHJtIGZkCisgKiBAY3R4OiBjb250ZXh0CisgKiBAc2l6ZTogc2l6ZSBv ZiB0aGUgYmF0Y2hidWZmZXIKKyAqIEBhbGxvY2F0b3JfdHlwZTogYWxsb2NhdG9yIHR5cGUsIFNJ TVBMRSwgUkFORE9NLCAuLi4KKyAqCisgKiBDcmVhdGVzIGJiIHdpdGggY29udGV4dCBwYXNzZWQg aW4gQGN0eCwgc2l6ZSBpbiBAc2l6ZSBhbmQgYWxsb2NhdG9yIHR5cGUKKyAqIGluIEBhbGxvY2F0 b3JfdHlwZS4gUmVsb2NhdGlvbnMgYXJlIHNldCB0byBmYWxzZSBiZWNhdXNlIElHVCBhbGxvY2F0 b3IKKyAqIGlzIG5vdCB1c2VkIGluIHRoYXQgY2FzZS4KKyAqCisgKiBSZXR1cm5zOgorICoKKyAq IFBvaW50ZXIgdGhlIGludGVsX2JiLCBhc3NlcnRzIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBp bnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX2Z1bGwoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgdWlu dDMyX3Qgc2l6ZSwKKwkJCQkgICAgICB1aW50OF90IGFsbG9jYXRvcl90eXBlKQoreworCXJldHVy biBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIGZhbHNlLCBhbGxvY2F0b3JfdHlw ZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfY3JlYXRlOgogICogQGk5MTU6IGRybSBmZApAQCAt MTMyMSw3ICsxMzUyLDcgQEAgX19pbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IGN0 eCwgdWludDMyX3Qgc2l6ZSwgYm9vbCBkb19yZWxvY3MpCiAgKi8KIHN0cnVjdCBpbnRlbF9iYiAq aW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogewotCXJldHVybiBfX2lu dGVsX2JiX2NyZWF0ZShpOTE1LCAwLCBzaXplLCBmYWxzZSk7CisJcmV0dXJuIF9faW50ZWxfYmJf Y3JlYXRlKGk5MTUsIDAsIHNpemUsIGZhbHNlLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKIH0K IAogLyoqCkBAIC0xMzM5LDcgKzEzNzAsNyBAQCBzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2Ny ZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKIHN0cnVjdCBpbnRlbF9iYiAqCiBpbnRlbF9i Yl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90IHNp emUpCiB7Ci0JcmV0dXJuIF9faW50ZWxfYmJfY3JlYXRlKGk5MTUsIGN0eCwgc2l6ZSwgZmFsc2Up OworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIGZhbHNlLCBJTlRF TF9BTExPQ0FUT1JfU0lNUExFKTsKIH0KIAogLyoqCkBAIC0xMzU2LDcgKzEzODcsNyBAQCBpbnRl bF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGludCBpOTE1LCB1aW50MzJfdCBjdHgsIHVpbnQzMl90 IHNpemUpCiAgKi8KIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2Nz KGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShp OTE1LCAwLCBzaXplLCB0cnVlKTsKKwlyZXR1cm4gX19pbnRlbF9iYl9jcmVhdGUoaTkxNSwgMCwg c2l6ZSwgdHJ1ZSwgSU5URUxfQUxMT0NBVE9SX05PTkUpOwogfQogCiAvKioKQEAgLTEzNzUsNyAr MTQwNiw3IEBAIHN0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzKGlu dCBpOTE1LCB1aW50MzJfdCBzaXplKQogc3RydWN0IGludGVsX2JiICoKIGludGVsX2JiX2NyZWF0 ZV93aXRoX3JlbG9jc19hbmRfY29udGV4dChpbnQgaTkxNSwgdWludDMyX3QgY3R4LCB1aW50MzJf dCBzaXplKQogewotCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIHRy dWUpOworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBjdHgsIHNpemUsIHRydWUsIElO VEVMX0FMTE9DQVRPUl9OT05FKTsKIH0KIAogc3RhdGljIHZvaWQgX19pbnRlbF9iYl9kZXN0cm95 X3JlbG9jYXRpb25zKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQpAQCAtMTQyOSw2ICsxNDYwLDEwIEBA IHZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAlfX2ludGVsX2Ji X2Rlc3Ryb3lfb2JqZWN0cyhpYmIpOwogCV9faW50ZWxfYmJfZGVzdHJveV9jYWNoZShpYmIpOwog CisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5URUxfQUxMT0NBVE9SX05PTkUpIHsKKwkJ aW50ZWxfYWxsb2NhdG9yX2ZyZWUoaWJiLT5hbGxvY2F0b3JfaGFuZGxlLCBpYmItPmhhbmRsZSk7 CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShpYmItPmFsbG9jYXRvcl9oYW5kbGUpOworCX0KIAln ZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7CiAKIAlpZiAoaWJiLT5mZW5jZSA+PSAw KQpAQCAtMTQ0NSw2ICsxNDgwLDcgQEAgdm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBpbnRl bF9iYiAqaWJiKQogICoKICAqIFJlY3JlYXRlIGJhdGNoIGJvIHdoZW4gdGhlcmUncyBubyBhZGRp dGlvbmFsIHJlZmVyZW5jZS4KICovCisKIHZvaWQgaW50ZWxfYmJfcmVzZXQoc3RydWN0IGludGVs X2JiICppYmIsIGJvb2wgcHVyZ2Vfb2JqZWN0c19jYWNoZSkKIHsKIAl1aW50MzJfdCBpOwpAQCAt MTQ2OCwyOCArMTUwNCwzMiBAQCB2b2lkIGludGVsX2JiX3Jlc2V0KHN0cnVjdCBpbnRlbF9iYiAq aWJiLCBib29sIHB1cmdlX29iamVjdHNfY2FjaGUpCiAJX19pbnRlbF9iYl9kZXN0cm95X29iamVj dHMoaWJiKTsKIAlfX3JlYWxsb2NhdGVfb2JqZWN0cyhpYmIpOwogCi0JaWYgKHB1cmdlX29iamVj dHNfY2FjaGUpIHsKKwlpZiAocHVyZ2Vfb2JqZWN0c19jYWNoZSkKIAkJX19pbnRlbF9iYl9kZXN0 cm95X2NhY2hlKGliYik7CisKKwkvKgorCSAqIFdoZW4gd2UgdXNlIGFsbG9jYXRvcnMgd2UncmUg aW4gbm8tcmVsb2MgbW9kZSBzbyB3ZSBoYXZlIHRvIGZyZWUKKwkgKiBhbmQgcmVhY3F1aXJlIG9m ZnNldCAoaWJiLT5oYW5kbGUgY2FuIGNoYW5nZSBpbiBtdWx0aXByb2Nlc3MKKwkgKiBlbnZpcm9u bWVudCkuIFdlIGFsc28gaGF2ZSB0byByZW1vdmUgYW5kIGFkZCBpdCBhZ2FpbiB0bworCSAqIG9i amVjdHMgYW5kIGNhY2hlIHRyZWUuCisJICovCisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0g SU5URUxfQUxMT0NBVE9SX05PTkUgJiYgIXB1cmdlX29iamVjdHNfY2FjaGUpCisJCWludGVsX2Ji X3JlbW92ZV9vYmplY3QoaWJiLCBpYmItPmhhbmRsZSwgaWJiLT5iYXRjaF9vZmZzZXQsCisJCQkJ ICAgICAgIGliYi0+c2l6ZSk7CisKKwlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7 CisJaWJiLT5oYW5kbGUgPSBnZW1fY3JlYXRlKGliYi0+aTkxNSwgaWJiLT5zaXplKTsKKworCS8q IEtlZXAgYWRkcmVzcyBmb3IgYmIgaW4gcmVsb2MgbW9kZSBhbmQgUkFORE9NIGFsbG9jYXRvciAq LworCWlmIChpYmItPmFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpCiAJ CWliYi0+YmF0Y2hfb2Zmc2V0ID0gX19pbnRlbF9iYl9nZXRfb2Zmc2V0KGliYiwKIAkJCQkJCQkg IGliYi0+aGFuZGxlLAogCQkJCQkJCSAgaWJiLT5zaXplLAogCQkJCQkJCSAgaWJiLT5hbGlnbm1l bnQpOwotCX0gZWxzZSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmpl Y3Q7Ci0KLQkJb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9vYmplY3QoaWJiLCBpYmItPmhhbmRsZSk7 Ci0JCWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0ID8gb2JqZWN0LT5vZmZzZXQgOgotCQkJCQkg ICAgIF9faW50ZWxfYmJfZ2V0X29mZnNldChpYmIsCi0JCQkJCQkJCSAgIGliYi0+aGFuZGxlLAot CQkJCQkJCQkgICBpYmItPnNpemUsCi0JCQkJCQkJCSAgIGliYi0+YWxpZ25tZW50KTsKLQl9Ci0K LQlnZW1fY2xvc2UoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7Ci0JaWJiLT5oYW5kbGUgPSBnZW1f Y3JlYXRlKGliYi0+aTkxNSwgaWJiLT5zaXplKTsKIAogCWludGVsX2JiX2FkZF9vYmplY3QoaWJi LCBpYmItPmhhbmRsZSwgaWJiLT5zaXplLAotCQkJICAgIGliYi0+YmF0Y2hfb2Zmc2V0LCBmYWxz ZSk7CisJCQkgICAgaWJiLT5iYXRjaF9vZmZzZXQsCisJCQkgICAgaWJiLT5hbGlnbm1lbnQsIGZh bHNlKTsKIAlpYmItPnB0ciA9IGliYi0+YmF0Y2g7CiAJbWVtc2V0KGliYi0+YmF0Y2gsIDAsIGli Yi0+c2l6ZSk7CiB9CkBAIC0xNTI4LDggKzE1NjgsOCBAQCB2b2lkIGludGVsX2JiX3ByaW50KHN0 cnVjdCBpbnRlbF9iYiAqaWJiKQogCQkgaWJiLT5pOTE1LCBpYmItPmdlbiwgaWJiLT5kZXZpZCwg aWJiLT5kZWJ1Zyk7CiAJaWd0X2luZm8oImhhbmRsZTogJXUsIHNpemU6ICV1LCBiYXRjaDogJXAs IHB0cjogJXBcbiIsCiAJCSBpYmItPmhhbmRsZSwgaWJiLT5zaXplLCBpYmItPmJhdGNoLCBpYmIt PnB0cik7Ci0JaWd0X2luZm8oInBybmc6ICV1LCBndHRfc2l6ZTogJSIgUFJJdTY0ICIsIHN1cHBv cnRzIDQ4Yml0OiAlZFxuIiwKLQkJIGliYi0+cHJuZywgaWJiLT5ndHRfc2l6ZSwgaWJiLT5zdXBw b3J0c180OGJfYWRkcmVzcyk7CisJaWd0X2luZm8oImd0dF9zaXplOiAlIiBQUkl1NjQgIiwgc3Vw cG9ydHMgNDhiaXQ6ICVkXG4iLAorCQkgaWJiLT5ndHRfc2l6ZSwgaWJiLT5zdXBwb3J0c180OGJf YWRkcmVzcyk7CiAJaWd0X2luZm8oImN0eDogJXVcbiIsIGliYi0+Y3R4KTsKIAlpZ3RfaW5mbygi cm9vdDogJXBcbiIsIGliYi0+cm9vdCk7CiAJaWd0X2luZm8oIm9iamVjdHM6ICVwLCBudW1fb2Jq ZWN0czogJXUsIGFsbG9jYXRlZCBvYmo6ICV1XG4iLApAQCAtMTYwNSw3ICsxNjQ1LDcgQEAgX19h ZGRfdG9fY2FjaGUoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlpZiAo KmZvdW5kID09IG9iamVjdCkgewogCQltZW1zZXQob2JqZWN0LCAwLCBzaXplb2YoKm9iamVjdCkp OwogCQlvYmplY3QtPmhhbmRsZSA9IGhhbmRsZTsKLQkJb2JqZWN0LT5hbGlnbm1lbnQgPSBpYmIt PmFsaWdubWVudDsKKwkJb2JqZWN0LT5vZmZzZXQgPSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNT OwogCX0gZWxzZSB7CiAJCWZyZWUob2JqZWN0KTsKIAkJb2JqZWN0ID0gKmZvdW5kOwpAQCAtMTYx NCw2ICsxNjU0LDI1IEBAIF9fYWRkX3RvX2NhY2hlKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBoYW5kbGUpCiAJcmV0dXJuIG9iamVjdDsKIH0KIAorc3RhdGljIGJvb2wgX19yZW1vdmVf ZnJvbV9jYWNoZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQsICpvYmplY3Q7CisKKwlvYmpl Y3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7CisJaWYgKCFvYmplY3QpIHsK KwkJaWd0X3dhcm4oIk9iamVjdDogaGFuZGxlOiAldSBub3QgZm91bmRcbiIsIGhhbmRsZSk7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwlmb3VuZCA9IHRkZWxldGUoKHZvaWQgKikgb2JqZWN0LCAm aWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0cyk7CisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuIGZh bHNlOworCisJZnJlZShvYmplY3QpOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBpbnQg X19jb21wYXJlX2hhbmRsZXMoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewogCXJl dHVybiAoaW50KSAoKihpbnQzMl90ICopIHAxIC0gKihpbnQzMl90ICopIHAyKTsKQEAgLTE2Mzks MTIgKzE2OTgsNTQgQEAgc3RhdGljIHZvaWQgX19hZGRfdG9fb2JqZWN0cyhzdHJ1Y3QgaW50ZWxf YmIgKmliYiwKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIF9fcmVtb3ZlX2Zyb21fb2JqZWN0cyhzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy ICpvYmplY3QpCit7CisJdWludDMyX3QgaSwgKipoYW5kbGUsICp0b19mcmVlOworCWJvb2wgZm91 bmQgPSBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkgPCBpYmItPm51bV9vYmplY3RzOyBpKyspIHsK KwkJaWYgKGliYi0+b2JqZWN0c1tpXSA9PSBvYmplY3QpIHsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJ CWJyZWFrOworCQl9CisJfQorCisJLyoKKwkgKiBXaGVuIHdlIHJlc2V0IGJiICh3aXRob3V0IHB1 cmdpbmcpIHdlIGhhdmU6CisJICogMS4gY2FjaGUgd2hpY2ggY29udGFpbnMgYWxsIGNhY2hlZCBv YmplY3RzCisJICogMi4gb2JqZWN0cyBhcnJheSB3aGljaCBjb250YWlucyBvbmx5IGJiIG9iamVj dCAoY2xlYXJlZCBpbiByZXNldAorCSAqICAgIHBhdGggd2l0aCBiYiBvYmplY3QgYWRkZWQgYXQg dGhlIGVuZCkKKwkgKiBTbyAhZm91bmQgaXMgbm9ybWFsIHNpdHVhdGlvbiBhbmQgbm8gd2Fybmlu ZyBpcyBhZGRlZCBoZXJlLgorCSAqLworCWlmICghZm91bmQpCisJCXJldHVybjsKKworCWliYi0+ bnVtX29iamVjdHMtLTsKKwlpZiAoaSA8IGliYi0+bnVtX29iamVjdHMpCisJCW1lbW1vdmUoJmli Yi0+b2JqZWN0c1tpXSwgJmliYi0+b2JqZWN0c1tpICsgMV0sCisJCQlzaXplb2Yob2JqZWN0KSAq IChpYmItPm51bV9vYmplY3RzIC0gaSkpOworCisJaGFuZGxlID0gdGZpbmQoKHZvaWQgKikgJm9i amVjdC0+aGFuZGxlLAorCQkgICAgICAgJmliYi0+Y3VycmVudCwgX19jb21wYXJlX2hhbmRsZXMp OworCWlmICghaGFuZGxlKSB7CisJCWlndF93YXJuKCJPYmplY3QgJXUgZG9lc24ndCBleGlzdCBp biB0aGUgdHJlZSwgY2FuJ3QgcmVtb3ZlIiwKKwkJCSBvYmplY3QtPmhhbmRsZSk7CisJCXJldHVy bjsKKwl9CisKKwl0b19mcmVlID0gKmhhbmRsZTsKKwl0ZGVsZXRlKCh2b2lkICopICZvYmplY3Qt PmhhbmRsZSwgJmliYi0+Y3VycmVudCwgX19jb21wYXJlX2hhbmRsZXMpOworCWZyZWUodG9fZnJl ZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfYWRkX29iamVjdDoKICAqIEBpYmI6IHBvaW50ZXIg dG8gaW50ZWxfYmIKICAqIEBoYW5kbGU6IHdoaWNoIGhhbmRsZSB0byBhZGQgdG8gb2JqZWN0cyBh cnJheQogICogQHNpemU6IG9iamVjdCBzaXplCiAgKiBAb2Zmc2V0OiBwcmVzdW1lZCBvZmZzZXQg b2YgdGhlIG9iamVjdCB3aGVuIG5vIHJlbG9jYXRpb24gaXMgZW5mb3JjZWQKKyAqIEBhbGlnbm1l bnQ6IGFsaWdubWVudCBvZiB0aGUgb2JqZWN0LCBpZiAwIGl0IHdpbGwgYmUgc2V0IHRvIHBhZ2Ug c2l6ZQogICogQHdyaXRlOiBkb2VzIGEgaGFuZGxlIGlzIGEgcmVuZGVyIHRhcmdldAogICoKICAq IEZ1bmN0aW9uIGFkZHMgb3IgdXBkYXRlcyBleGVjb2JqIHNsb3QgaW4gYmIgb2JqZWN0cyBhcnJh eSBhbmQKQEAgLTE2NTIsMjMgKzE3NTMsNzEgQEAgc3RhdGljIHZvaWQgX19hZGRfdG9fb2JqZWN0 cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKICAqIGJlIG1hcmtlZCB3aXRoIEVYRUNfT0JKRUNUX1dS SVRFIGZsYWcuCiAgKi8KIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKLWludGVs X2JiX2FkZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWlu dDMyX3Qgc2l6ZSwKLQkJICAgIHVpbnQ2NF90IG9mZnNldCwgYm9vbCB3cml0ZSkKK2ludGVsX2Ji X2FkZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgc2l6ZSwKKwkJICAgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgYWxpZ25tZW50LCBib29s IHdyaXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmplY3Q7CiAK KwlpZ3RfYXNzZXJ0KElOVkFMSURfQUREUihvZmZzZXQpIHx8IGFsaWdubWVudCA9PSAwCisJCSAg IHx8IEFMSUdOKG9mZnNldCwgYWxpZ25tZW50KSA9PSBvZmZzZXQpOworCiAJb2JqZWN0ID0gX19h ZGRfdG9fY2FjaGUoaWJiLCBoYW5kbGUpOworCW9iamVjdC0+YWxpZ25tZW50ID0gYWxpZ25tZW50 ID86IDQwOTY7CiAJX19hZGRfdG9fb2JqZWN0cyhpYmIsIG9iamVjdCk7CiAKLQkvKiBMaW1pdCBj dXJyZW50IG9mZnNldCB0byBndHQgc2l6ZSAqLworCS8qCisJICogSWYgb2JqZWN0LT5vZmZzZXQg PT0gSU5WQUxJRF9BRERSRVNTIHdlIGFkZGVkIGZyZXNobHkgb2JqZWN0IHRvIHRoZQorCSAqIGNh Y2hlLiBJbiB0aGF0IGNhc2Ugd2UgaGF2ZSB0d28gY2hvaWNlczoKKwkgKiBhKSBnZXQgbmV3IG9m ZnNldCAocGFzc2VkIG9mZnNldCB3YXMgaW52YWxpZCkKKwkgKiBiKSB1c2Ugb2Zmc2V0IHBhc3Nl ZCBpbiB0aGUgY2FsbCAodmFsaWQpCisJICovCisJaWYgKElOVkFMSURfQUREUihvYmplY3QtPm9m ZnNldCkpIHsKKwkJaWYgKElOVkFMSURfQUREUihvZmZzZXQpKSB7CisJCQlvZmZzZXQgPSBfX2lu dGVsX2JiX2dldF9vZmZzZXQoaWJiLCBoYW5kbGUsIHNpemUsCisJCQkJCQkgICAgICAgb2JqZWN0 LT5hbGlnbm1lbnQpOworCQl9IGVsc2UgeworCQkJb2Zmc2V0ID0gb2Zmc2V0ICYgKGliYi0+Z3R0 X3NpemUgLSAxKTsKKworCQkJLyoKKwkJCSAqIEZvciBzaW1wbGUgYWxsb2NhdG9yIGNoZWNrIGVu dHJ5IGNvbnNpc3RlbmN5CisJCQkgKiAtIHJlc2VydmUgaWYgaXQgaXMgbm90IGFscmVhZHkgYWxs b2NhdGVkLgorCQkJICovCisJCQlpZiAoaWJiLT5hbGxvY2F0b3JfdHlwZSA9PSBJTlRFTF9BTExP Q0FUT1JfU0lNUExFKSB7CisJCQkJYm9vbCBhbGxvY2F0ZWQsIHJlc2VydmVkOworCisJCQkJcmVz ZXJ2ZWQgPSBpbnRlbF9hbGxvY2F0b3JfcmVzZXJ2ZV9pZl9ub3RfYWxsb2NhdGVkKGliYi0+YWxs b2NhdG9yX2hhbmRsZSwKKwkJCQkJCQkJCQkgICAgaGFuZGxlLCBzaXplLCBvZmZzZXQsCisJCQkJ CQkJCQkJICAgICZhbGxvY2F0ZWQpOworCQkJCWlndF9hc3NlcnRfZihhbGxvY2F0ZWQgfHwgcmVz ZXJ2ZWQsCisJCQkJCSAgICAgIkNhbid0IGdldCBvZmZzZXQsIGFsbG9jYXRlZDogJWQsIHJlc2Vy dmVkOiAlZFxuIiwKKwkJCQkJICAgICBhbGxvY2F0ZWQsIHJlc2VydmVkKTsKKwkJCX0KKwkJfQor CX0gZWxzZSB7CisJCS8qCisJCSAqIFRoaXMgYXNzZXJ0aW9uIG1ha2VzIHNlbnNlIG9ubHkgd2hl biB3ZSBoYXZlIHRvIGJlIGNvbnNpc3RlbnQKKwkJICogd2l0aCB1bmRlcmx5aW5nIGFsbG9jYXRv ci4gRm9yIHJlbG9jYXRpb25zIGFuZCB3aGVuICFwcGd0dAorCQkgKiB3ZSBjYW4gZXhwZWN0IGFk ZHJlc3NlcyBwYXNzZWQgYnkgdGhlIHVzZXIgY2FuIGJlIG1vdmVkCisJCSAqIHdpdGhpbiB0aGUg ZHJpdmVyLgorCQkgKi8KKwkJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgPT0gSU5URUxfQUxMT0NB VE9SX1NJTVBMRSkKKwkJCWlndF9hc3NlcnRfZihvYmplY3QtPm9mZnNldCA9PSBvZmZzZXQsCisJ CQkJICAgICAiKHBpZDogJWxkKSBoYW5kbGU6ICV1LCBvZmZzZXQgbm90IG1hdGNoOiAlIiBQUkl4 NjQgIiA8PiAlIiBQUkl4NjQgIlxuIiwKKwkJCQkgICAgIChsb25nKSBnZXRwaWQoKSwgaGFuZGxl LAorCQkJCSAgICAgKHVpbnQ2NF90KSBvYmplY3QtPm9mZnNldCwKKwkJCQkgICAgIG9mZnNldCk7 CisJfQorCiAJb2JqZWN0LT5vZmZzZXQgPSBvZmZzZXQ7Ci0JaWYgKG9mZnNldCAhPSBJTlRFTF9C VUZfSU5WQUxJRF9BRERSRVNTKQotCQlvYmplY3QtPm9mZnNldCA9IGdlbjhfY2Fub25pY2FsX2Fk ZHIob2Zmc2V0ICYgKGliYi0+Z3R0X3NpemUgLSAxKSk7CiAKLQlpZiAob2JqZWN0LT5vZmZzZXQg PT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUykKKwkvKiBMaW1pdCBjdXJyZW50IG9mZnNldCB0 byBndHQgc2l6ZSAqLworCWlmIChvZmZzZXQgIT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUykg eworCQlvYmplY3QtPm9mZnNldCA9IENBTk9OSUNBTChvZmZzZXQgJiAoaWJiLT5ndHRfc2l6ZSAt IDEpKTsKKwl9IGVsc2UgewogCQlvYmplY3QtPm9mZnNldCA9IF9faW50ZWxfYmJfZ2V0X29mZnNl dChpYmIsCiAJCQkJCQkgICAgICAgaGFuZGxlLCBzaXplLAogCQkJCQkJICAgICAgIG9iamVjdC0+ YWxpZ25tZW50KTsKKwl9CiAKIAlpZiAod3JpdGUpCiAJCW9iamVjdC0+ZmxhZ3MgfD0gRVhFQ19P QkpFQ1RfV1JJVEU7CkBAIC0xNjc2LDQwICsxODI1LDk1IEBAIGludGVsX2JiX2FkZF9vYmplY3Qo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3Qgc2l6ZSwKIAlp ZiAoaWJiLT5zdXBwb3J0c180OGJfYWRkcmVzcykKIAkJb2JqZWN0LT5mbGFncyB8PSBFWEVDX09C SkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsKIAorCWlmIChpYmItPnVzZXNfZnVsbF9wcGd0dCAm JiBpYmItPmFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpCisJCW9iamVj dC0+ZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOworCiAJcmV0dXJuIG9iamVjdDsKIH0KIAot c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgotaW50ZWxfYmJfYWRkX2ludGVsX2J1 ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBib29sIHdyaXRl KQorYm9vbCBpbnRlbF9iYl9yZW1vdmVfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBoYW5kbGUsCisJCQkgICAgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQogewot CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsKKwlib29sIGlzX3Jlc2VydmVkOwogCi0Jb2JqID0g aW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGJ1Zi0+aGFuZGxlLAotCQkJCSAgaW50ZWxfYnVmX2Jv X3NpemUoYnVmKSwKLQkJCQkgIGJ1Zi0+YWRkci5vZmZzZXQsIHdyaXRlKTsKKwlvYmplY3QgPSBp bnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7CisJaWYgKCFvYmplY3QpCisJCXJldHVy biBmYWxzZTsKIAotCS8qIEZvciBjb21wcmVzc2VkIHN1cmZhY2VzIGVuc3VyZSBhZGRyZXNzIGlz IGFsaWduZWQgdG8gNjRLQiAqLwotCWlmIChpYmItPmdlbiA+PSAxMiAmJiBidWYtPmNvbXByZXNz aW9uKSB7Ci0JCW9iai0+b2Zmc2V0ICY9IH4oMHgxMDAwMCAtIDEpOwotCQlvYmotPmFsaWdubWVu dCA9IDB4MTAwMDA7CisJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUgIT0gSU5URUxfQUxMT0NBVE9S X05PTkUpIHsKKwkJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoaWJiLT5hbGxvY2F0b3JfaGFuZGxlLCBo YW5kbGUpOworCQlpc19yZXNlcnZlZCA9IGludGVsX2FsbG9jYXRvcl9pc19yZXNlcnZlZChpYmIt PmFsbG9jYXRvcl9oYW5kbGUsCisJCQkJCQkJICBzaXplLCBvZmZzZXQpOworCQlpZiAoaXNfcmVz ZXJ2ZWQpCisJCQlpbnRlbF9hbGxvY2F0b3JfdW5yZXNlcnZlKGliYi0+YWxsb2NhdG9yX2hhbmRs ZSwgaGFuZGxlLAorCQkJCQkJICBzaXplLCBvZmZzZXQpOwogCX0KIAotCS8qIEZvciBnZW4zIGVu c3VyZSB0aWxlZCBidWZmZXJzIGFyZSBhbGlnbmVkIHRvIHBvd2VyIG9mIHR3byBzaXplICovCi0J aWYgKGliYi0+Z2VuID09IDMgJiYgYnVmLT50aWxpbmcpIHsKLQkJdWludDY0X3QgYWxpZ25tZW50 ID0gMTAyNCAqIDEwMjQ7CisJX19yZW1vdmVfZnJvbV9vYmplY3RzKGliYiwgb2JqZWN0KTsKKwlf X3JlbW92ZV9mcm9tX2NhY2hlKGliYiwgaGFuZGxlKTsKIAotCQl3aGlsZSAoYWxpZ25tZW50IDwg YnVmLT5zdXJmYWNlWzBdLnNpemUpCi0JCQlhbGlnbm1lbnQgPDw9IDE7Ci0JCW9iai0+b2Zmc2V0 ICY9IH4oYWxpZ25tZW50IC0gMSk7Ci0JCW9iai0+YWxpZ25tZW50ID0gYWxpZ25tZW50OworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg KgorX19pbnRlbF9iYl9hZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsCisJCQkgdWludDY0X3QgYWxpZ25tZW50LCBib29sIHdyaXRlKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CisKKwlpZ3RfYXNzZXJ0KEFM SUdOKGFsaWdubWVudCwgNDA5NikgPT0gYWxpZ25tZW50KTsKKworCWlmICghYWxpZ25tZW50KSB7 CisJCWFsaWdubWVudCA9IDB4MTAwMDsKKworCQlpZiAoaWJiLT5nZW4gPj0gMTIgJiYgYnVmLT5j b21wcmVzc2lvbikKKwkJCWFsaWdubWVudCA9IDB4MTAwMDA7CisKKwkJLyogRm9yIGdlbjMgZW5z dXJlIHRpbGVkIGJ1ZmZlcnMgYXJlIGFsaWduZWQgdG8gcG93ZXIgb2YgdHdvIHNpemUgKi8KKwkJ aWYgKGliYi0+Z2VuID09IDMgJiYgYnVmLT50aWxpbmcpIHsKKwkJCWFsaWdubWVudCA9IDEwMjQg KiAxMDI0OworCisJCQl3aGlsZSAoYWxpZ25tZW50IDwgYnVmLT5zdXJmYWNlWzBdLnNpemUpCisJ CQkJYWxpZ25tZW50IDw8PSAxOworCQl9CiAJfQogCi0JLyogVXBkYXRlIGFkZHJlc3MgaW4gaW50 ZWxfYnVmIGJ1ZmZlciAqLworCW9iaiA9IGludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBidWYtPmhh bmRsZSwgaW50ZWxfYnVmX2JvX3NpemUoYnVmKSwKKwkJCQkgIGJ1Zi0+YWRkci5vZmZzZXQsIGFs aWdubWVudCwgd3JpdGUpOwogCWJ1Zi0+YWRkci5vZmZzZXQgPSBvYmotPm9mZnNldDsKIAorCWlm ICghaWJiLT5lbmZvcmNlX3JlbG9jcykKKwkJb2JqLT5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7CisK IAlyZXR1cm4gb2JqOwogfQogCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCitp bnRlbF9iYl9hZGRfaW50ZWxfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxf YnVmICpidWYsIGJvb2wgd3JpdGUpCit7CisJcmV0dXJuIF9faW50ZWxfYmJfYWRkX2ludGVsX2J1 ZihpYmIsIGJ1ZiwgMCwgd3JpdGUpOworfQorCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MiAqCitpbnRlbF9iYl9hZGRfaW50ZWxfYnVmX3dpdGhfYWxpZ25tZW50KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkJICAgICAgdWludDY0X3QgYWxp Z25tZW50LCBib29sIHdyaXRlKQoreworCXJldHVybiBfX2ludGVsX2JiX2FkZF9pbnRlbF9idWYo aWJiLCBidWYsIGFsaWdubWVudCwgd3JpdGUpOworfQorCitib29sIGludGVsX2JiX3JlbW92ZV9p bnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKK3sK Kwlib29sIHJlbW92ZWQgPSBpbnRlbF9iYl9yZW1vdmVfb2JqZWN0KGliYiwgYnVmLT5oYW5kbGUs CisJCQkJCSAgICAgIGJ1Zi0+YWRkci5vZmZzZXQsCisJCQkJCSAgICAgIGludGVsX2J1Zl9ib19z aXplKGJ1ZikpOworCisJaWYgKHJlbW92ZWQpCisJCWJ1Zi0+YWRkci5vZmZzZXQgPSBJTlRFTF9C VUZfSU5WQUxJRF9BRERSRVNTOworCisJcmV0dXJuIHJlbW92ZWQ7Cit9CisKIHN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY19vYmplY3QyICoKIGludGVsX2JiX2ZpbmRfb2JqZWN0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpCiB7CkBAIC0xNzE3LDYgKzE5MjEsOCBAQCBpbnRl bF9iYl9maW5kX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQog CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqZm91bmQ7CiAKIAlmb3VuZCA9IHRm aW5kKCh2b2lkICopICZvYmplY3QsICZpYmItPnJvb3QsIF9fY29tcGFyZV9vYmplY3RzKTsKKwlp ZiAoIWZvdW5kKQorCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiAqZm91bmQ7CiB9CkBAIC0xNzI3 LDYgKzE5MzMsOCBAQCBpbnRlbF9iYl9vYmplY3Rfc2V0X2ZsYWcoc3RydWN0IGludGVsX2JiICpp YmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgZmxhZykKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5kbGUgfTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOwogCisJaWd0X2Fzc2VydF9mKGliYi0+cm9v dCwgIlRyeWluZyB0byBzZWFyY2ggaW4gbnVsbCB0cmVlXG4iKTsKKwogCWZvdW5kID0gdGZpbmQo KHZvaWQgKikgJm9iamVjdCwgJmliYi0+cm9vdCwgX19jb21wYXJlX29iamVjdHMpOwogCWlmICgh Zm91bmQpIHsKIAkJaWd0X3dhcm4oIlRyeWluZyB0byBzZXQgZmVuY2Ugb24gbm90IGZvdW5kIGhh bmRsZTogJXVcbiIsCkBAIC0xNzY2LDE0ICsxOTc0LDkgQEAgaW50ZWxfYmJfb2JqZWN0X2NsZWFy X2ZsYWcoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgZmxh ZykKICAqIEB3cml0ZV9kb21haW46IGdlbSBkb21haW4gYml0IGZvciB0aGUgcmVsb2NhdGlvbgog ICogQGRlbHRhOiBkZWx0YSB2YWx1ZSB0byBhZGQgdG8gQGJ1ZmZlcidzIGdwdSBhZGRyZXNzCiAg KiBAb2Zmc2V0OiBvZmZzZXQgd2l0aGluIGJiIHRvIGJlIHBhdGNoZWQKLSAqIEBwcmVzdW1lZF9v ZmZzZXQ6IGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLiBJZiAtMSBpcyBw YXNzZWQKLSAqIHRoZW4gZmluYWwgb2Zmc2V0IG9mIHRoZSBvYmplY3Qgd2lsbCBiZSByYW5kb21p emVkIChmb3Igbm8tcmVsb2MgYmIpIG9yCi0gKiAwIChmb3IgcmVsb2MgYmIsIGluIHRoYXQgY2Fz ZSByZWxvYy5wcmVzdW1lZF9vZmZzZXQgd2lsbCBiZSAtMSkuIEluCi0gKiBjYXNlIGFkZHJlc3Mg aXMga25vd24gaXQgc2hvdWxkIHBhc3NlZCBpbiBAcHJlc3VtZWRfb2Zmc2V0IChmb3Igbm8tcmVs b2MpLgogICoKICAqIEZ1bmN0aW9uIGFsbG9jYXRlcyBhZGRpdGlvbmFsIHJlbG9jYXRpb24gc2xv dCBpbiByZWxvYyBhcnJheSBmb3IgYSBoYW5kbGUuCi0gKiBJdCBhbHNvIGltcGxpY2l0bHkgYWRk cyBoYW5kbGUgaW4gdGhlIG9iamVjdHMgYXJyYXkgaWYgb2JqZWN0IGRvZXNuJ3QKLSAqIGV4aXN0 cyBidXQgZG9lc24ndCBtYXJrIGl0IGFzIGEgcmVuZGVyIHRhcmdldC4KKyAqIE9iamVjdCBtdXN0 IGJlIHByZXZpb3VzbHkgYWRkZWQgdG8gYmIuCiAgKi8KIHN0YXRpYyB1aW50NjRfdCBpbnRlbF9i Yl9hZGRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkJICAgdWludDMyX3QgdG9faGFu ZGxlLApAQCAtMTc4OCwxMyArMTk5MSw4IEBAIHN0YXRpYyB1aW50NjRfdCBpbnRlbF9iYl9hZGRf cmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgKm9iamVjdCwgKnRvX29iamVjdDsKIAl1aW50MzJfdCBpOwogCi0JaWYgKGliYi0+ZW5m b3JjZV9yZWxvY3MpIHsKLQkJb2JqZWN0ID0gaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGhhbmRs ZSwgMCwKLQkJCQkJICAgICBwcmVzdW1lZF9vZmZzZXQsIGZhbHNlKTsKLQl9IGVsc2UgewotCQlv YmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGhhbmRsZSk7Ci0JCWlndF9hc3NlcnQo b2JqZWN0KTsKLQl9CisJb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9vYmplY3QoaWJiLCBoYW5kbGUp OworCWlndF9hc3NlcnQob2JqZWN0KTsKIAogCS8qIEZvciBpYmIgd2UgaGF2ZSByZWxvY3MgYWxs b2NhdGVkIGluIGNodW5rcyAqLwogCWlmICh0b19oYW5kbGUgPT0gaWJiLT5oYW5kbGUpIHsKQEAg LTE5ODgsNDUgKzIxODYsNDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmJfZHVtcF9leGVjYnVmKHN0 cnVjdCBpbnRlbF9iYiAqaWJiLAogCWludCBpLCBqOwogCXVpbnQ2NF90IGFkZHJlc3M7CiAKLQlp Z3RfaW5mbygiZXhlY2J1ZiBiYXRjaCBsZW46ICV1LCBzdGFydCBvZmZzZXQ6IDB4JXgsICIKLQkJ ICJEUjE6IDB4JXgsIERSNDogMHgleCwgIgotCQkgIm51bSBjbGlwOiAldSwgY2xpcHB0cjogMHgl bGx4LCAiCi0JCSAiZmxhZ3M6IDB4JWxseCwgcnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxu IiwKLQkJIGV4ZWNidWYtPmJhdGNoX2xlbiwgZXhlY2J1Zi0+YmF0Y2hfc3RhcnRfb2Zmc2V0LAot CQkgZXhlY2J1Zi0+RFIxLCBleGVjYnVmLT5EUjQsCi0JCSBleGVjYnVmLT5udW1fY2xpcHJlY3Rz LCBleGVjYnVmLT5jbGlwcmVjdHNfcHRyLAotCQkgZXhlY2J1Zi0+ZmxhZ3MsIGV4ZWNidWYtPnJz dmQxLCBleGVjYnVmLT5yc3ZkMik7Ci0KLQlpZ3RfaW5mbygiZXhlY2J1ZiBidWZmZXJfY291bnQ6 ICVkXG4iLCBleGVjYnVmLT5idWZmZXJfY291bnQpOworCWlndF9kZWJ1ZygiZXhlY2J1ZiBbcGlk OiAlbGQsIGZkOiAlZCwgY3R4OiAldV1cbiIsCisJCSAgKGxvbmcpIGdldHBpZCgpLCBpYmItPmk5 MTUsIGliYi0+Y3R4KTsKKwlpZ3RfZGVidWcoImV4ZWNidWYgYmF0Y2ggbGVuOiAldSwgc3RhcnQg b2Zmc2V0OiAweCV4LCAiCisJCSAgIkRSMTogMHgleCwgRFI0OiAweCV4LCAiCisJCSAgIm51bSBj bGlwOiAldSwgY2xpcHB0cjogMHglbGx4LCAiCisJCSAgImZsYWdzOiAweCVsbHgsIHJzdmQxOiAw eCVsbHgsIHJzdmQyOiAweCVsbHhcbiIsCisJCSAgZXhlY2J1Zi0+YmF0Y2hfbGVuLCBleGVjYnVm LT5iYXRjaF9zdGFydF9vZmZzZXQsCisJCSAgZXhlY2J1Zi0+RFIxLCBleGVjYnVmLT5EUjQsCisJ CSAgZXhlY2J1Zi0+bnVtX2NsaXByZWN0cywgZXhlY2J1Zi0+Y2xpcHJlY3RzX3B0ciwKKwkJICBl eGVjYnVmLT5mbGFncywgZXhlY2J1Zi0+cnN2ZDEsIGV4ZWNidWYtPnJzdmQyKTsKKworCWlndF9k ZWJ1ZygiZXhlY2J1ZiBidWZmZXJfY291bnQ6ICVkXG4iLCBleGVjYnVmLT5idWZmZXJfY291bnQp OwogCWZvciAoaSA9IDA7IGkgPCBleGVjYnVmLT5idWZmZXJfY291bnQ7IGkrKykgewogCQlvYmpl Y3RzID0gJigoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKikKIAkJCSAgICBmcm9t X3VzZXJfcG9pbnRlcihleGVjYnVmLT5idWZmZXJzX3B0cikpW2ldOwogCQlyZWxvY3MgPSBmcm9t X3VzZXJfcG9pbnRlcihvYmplY3RzLT5yZWxvY3NfcHRyKTsKIAkJYWRkcmVzcyA9IG9iamVjdHMt Pm9mZnNldDsKLQkJaWd0X2luZm8oIiBbJWRdIGhhbmRsZTogJXUsIHJlbG9jX2NvdW50OiAlZCwg cmVsb2NfcHRyOiAlcCwgIgotCQkJICJhbGlnbjogMHglbGx4LCBvZmZzZXQ6IDB4JSIgUFJJeDY0 ICIsIGZsYWdzOiAweCVsbHgsICIKLQkJCSAicnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxu IiwKLQkJCSBpLCBvYmplY3RzLT5oYW5kbGUsIG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQsCi0J CQkgcmVsb2NzLAotCQkJIG9iamVjdHMtPmFsaWdubWVudCwKLQkJCSBhZGRyZXNzLAotCQkJIG9i amVjdHMtPmZsYWdzLAotCQkJIG9iamVjdHMtPnJzdmQxLCBvYmplY3RzLT5yc3ZkMik7CisJCWln dF9kZWJ1ZygiIFslZF0gaGFuZGxlOiAldSwgcmVsb2NfY291bnQ6ICVkLCByZWxvY19wdHI6ICVw LCAiCisJCQkgICJhbGlnbjogMHglbGx4LCBvZmZzZXQ6IDB4JSIgUFJJeDY0ICIsIGZsYWdzOiAw eCVsbHgsICIKKwkJCSAgInJzdmQxOiAweCVsbHgsIHJzdmQyOiAweCVsbHhcbiIsCisJCQkgIGks IG9iamVjdHMtPmhhbmRsZSwgb2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCwKKwkJCSAgcmVsb2Nz LAorCQkJICBvYmplY3RzLT5hbGlnbm1lbnQsCisJCQkgIGFkZHJlc3MsCisJCQkgIG9iamVjdHMt PmZsYWdzLAorCQkJICBvYmplY3RzLT5yc3ZkMSwgb2JqZWN0cy0+cnN2ZDIpOwogCQlpZiAob2Jq ZWN0cy0+cmVsb2NhdGlvbl9jb3VudCkgewotCQkJaWd0X2luZm8oIlx0ZXhlY2J1ZiByZWxvY3M6 XG4iKTsKKwkJCWlndF9kZWJ1ZygiXHRleGVjYnVmIHJlbG9jczpcbiIpOwogCQkJZm9yIChqID0g MDsgaiA8IG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQ7IGorKykgewogCQkJCXJlbG9jID0gJnJl bG9jc1tqXTsKIAkJCQlhZGRyZXNzID0gcmVsb2MtPnByZXN1bWVkX29mZnNldDsKLQkJCQlpZ3Rf aW5mbygiXHQgWyVkXSB0YXJnZXQgaGFuZGxlOiAldSwgIgotCQkJCQkgIm9mZnNldDogMHglbGx4 LCBkZWx0YTogMHgleCwgIgotCQkJCQkgInByZXN1bWVkX29mZnNldDogMHglIiBQUkl4NjQgIiwg IgotCQkJCQkgInJlYWRfZG9tYWluczogMHgleCwgIgotCQkJCQkgIndyaXRlX2RvbWFpbjogMHgl eFxuIiwKLQkJCQkJIGosIHJlbG9jLT50YXJnZXRfaGFuZGxlLAotCQkJCQkgcmVsb2MtPm9mZnNl dCwgcmVsb2MtPmRlbHRhLAotCQkJCQkgYWRkcmVzcywKLQkJCQkJIHJlbG9jLT5yZWFkX2RvbWFp bnMsCi0JCQkJCSByZWxvYy0+d3JpdGVfZG9tYWluKTsKKwkJCQlpZ3RfZGVidWcoIlx0IFslZF0g dGFyZ2V0IGhhbmRsZTogJXUsICIKKwkJCQkJICAib2Zmc2V0OiAweCVsbHgsIGRlbHRhOiAweCV4 LCAiCisJCQkJCSAgInByZXN1bWVkX29mZnNldDogMHglIiBQUkl4NjQgIiwgIgorCQkJCQkgICJy ZWFkX2RvbWFpbnM6IDB4JXgsICIKKwkJCQkJICAid3JpdGVfZG9tYWluOiAweCV4XG4iLAorCQkJ CQkgIGosIHJlbG9jLT50YXJnZXRfaGFuZGxlLAorCQkJCQkgIHJlbG9jLT5vZmZzZXQsIHJlbG9j LT5kZWx0YSwKKwkJCQkJICBhZGRyZXNzLAorCQkJCQkgIHJlbG9jLT5yZWFkX2RvbWFpbnMsCisJ CQkJCSAgcmVsb2MtPndyaXRlX2RvbWFpbik7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMDY5LDYgKzIy NjksMTIgQEAgc3RhdGljIHZvaWQgcHJpbnRfbm9kZShjb25zdCB2b2lkICpub2RlLCBWSVNJVCB3 aGljaCwgaW50IGRlcHRoKQogCX0KIH0KIAordm9pZCBpbnRlbF9iYl9kdW1wX2NhY2hlKHN0cnVj dCBpbnRlbF9iYiAqaWJiKQoreworCWlndF9pbmZvKCJbcGlkOiAlbGRdIGR1bXAgY2FjaGVcbiIs IChsb25nKSBnZXRwaWQoKSk7CisJdHdhbGsoaWJiLT5yb290LCBwcmludF9ub2RlKTsKK30KKwog c3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKIGNyZWF0ZV9vYmplY3Rz X2FycmF5KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewpAQCAtMjA3OCw4ICsyMjg0LDEwIEBAIGNy ZWF0ZV9vYmplY3RzX2FycmF5KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogCW9iamVjdHMgPSBtYWxs b2Moc2l6ZW9mKCpvYmplY3RzKSAqIGliYi0+bnVtX29iamVjdHMpOwogCWlndF9hc3NlcnQob2Jq ZWN0cyk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0czsgaSsrKQorCWZvciAo aSA9IDA7IGkgPCBpYmItPm51bV9vYmplY3RzOyBpKyspIHsKIAkJb2JqZWN0c1tpXSA9ICooaWJi LT5vYmplY3RzW2ldKTsKKwkJb2JqZWN0c1tpXS5vZmZzZXQgPSBDQU5PTklDQUwob2JqZWN0c1tp XS5vZmZzZXQpOworCX0KIAogCXJldHVybiBvYmplY3RzOwogfQpAQCAtMjA5NCw3ICsyMzAyLDEw IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vZmZzZXRzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQlv YmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIG9iamVjdHNbaV0uaGFuZGxlKTsKIAkJ aWd0X2Fzc2VydChvYmplY3QpOwogCi0JCW9iamVjdC0+b2Zmc2V0ID0gb2JqZWN0c1tpXS5vZmZz ZXQ7CisJCW9iamVjdC0+b2Zmc2V0ID0gREVDQU5PTklDQUwob2JqZWN0c1tpXS5vZmZzZXQpOwor CisJCWlmIChpID09IDApCisJCQlpYmItPmJhdGNoX29mZnNldCA9IG9iamVjdC0+b2Zmc2V0Owog CX0KIH0KIApAQCAtMjEyMiw2ICsyMzMzLDcgQEAgc3RhdGljIGludCBfX2ludGVsX2JiX2V4ZWMo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCiAJaWJiLT5vYmplY3Rz WzBdLT5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKGliYi0+cmVsb2NzKTsKIAlpYmItPm9i amVjdHNbMF0tPnJlbG9jYXRpb25fY291bnQgPSBpYmItPm51bV9yZWxvY3M7CiAJaWJiLT5vYmpl Y3RzWzBdLT5oYW5kbGUgPSBpYmItPmhhbmRsZTsKKwlpYmItPm9iamVjdHNbMF0tPm9mZnNldCA9 IGliYi0+YmF0Y2hfb2Zmc2V0OwogCiAJZ2VtX3dyaXRlKGliYi0+aTkxNSwgaWJiLT5oYW5kbGUs IDAsIGliYi0+YmF0Y2gsIGliYi0+c2l6ZSk7CiAKQEAgLTIyMDYsNyArMjQxOCw2IEBAIHVpbnQ2 NF90IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBoYW5kbGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqZWN0 ID0geyAuaGFuZGxlID0gaGFuZGxlIH07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKipmb3VuZDsKLQl1aW50NjRfdCBhZGRyZXNzOwogCiAJaWd0X2Fzc2VydChpYmIpOwogCkBA IC0yMjE0LDEyICsyNDI1LDcgQEAgdWludDY0X3QgaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlpZiAoIWZvdW5kKQogCQly ZXR1cm4gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUzsKIAotCWFkZHJlc3MgPSAoKmZvdW5kKS0+ b2Zmc2V0OwotCi0JaWYgKGFkZHJlc3MgPT0gSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUykKLQkJ cmV0dXJuIGFkZHJlc3M7Ci0KLQlyZXR1cm4gYWRkcmVzcyAmIChpYmItPmd0dF9zaXplIC0gMSk7 CisJcmV0dXJuICgqZm91bmQpLT5vZmZzZXQ7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmggYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAppbmRleCA3Njk4OWVh YWUuLmI5YTRlZTdlOCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIv bGliL2ludGVsX2JhdGNoYnVmZmVyLmgKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSAiaWd0X2Nv cmUuaCIKICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKICNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5j bHVkZSAiaW50ZWxfYWxsb2NhdG9yLmgiCiAKICNkZWZpbmUgQkFUQ0hfU1ogNDA5NgogI2RlZmlu ZSBCQVRDSF9SRVNFUlZFRCAxNgpAQCAtNDQxLDYgKzQ0Miw5IEBAIGlndF9tZWRpYV9zcGluZnVu Y190IGlndF9nZXRfbWVkaWFfc3BpbmZ1bmMoaW50IGRldmlkKTsKICAqIEJhdGNoYnVmZmVyIHdp dGhvdXQgbGliZHJtIGRlcGVuZGVuY3kKICAqLwogc3RydWN0IGludGVsX2JiIHsKKwl1aW50NjRf dCBhbGxvY2F0b3JfaGFuZGxlOworCXVpbnQ4X3QgYWxsb2NhdG9yX3R5cGU7CisKIAlpbnQgaTkx NTsKIAl1bnNpZ25lZCBpbnQgZ2VuOwogCWJvb2wgZGVidWc7CkBAIC00NTQsOSArNDU4LDkgQEAg c3RydWN0IGludGVsX2JiIHsKIAl1aW50NjRfdCBhbGlnbm1lbnQ7CiAJaW50IGZlbmNlOwogCi0J dWludDMyX3QgcHJuZzsKIAl1aW50NjRfdCBndHRfc2l6ZTsKIAlib29sIHN1cHBvcnRzXzQ4Yl9h ZGRyZXNzOworCWJvb2wgdXNlc19mdWxsX3BwZ3R0OwogCiAJdWludDMyX3QgY3R4OwogCkBAIC00 ODQsNiArNDg4LDggQEAgc3RydWN0IGludGVsX2JiIHsKIAlpbnQzMl90IHJlZmNvdW50OwogfTsK IAorc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGVfZnVsbChpbnQgaTkxNSwgdWludDMy X3QgY3R4LCB1aW50MzJfdCBzaXplLAorCQkJCSAgICAgIHVpbnQ4X3QgYWxsb2NhdG9yX3R5cGUp Owogc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNp emUpOwogc3RydWN0IGludGVsX2JiICoKIGludGVsX2JiX2NyZWF0ZV93aXRoX2NvbnRleHQoaW50 IGk5MTUsIHVpbnQzMl90IGN0eCwgdWludDMyX3Qgc2l6ZSk7CkBAIC01MTAsNiArNTE2LDcgQEAg dm9pZCBpbnRlbF9iYl9kdW1wKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBjaGFyICpmaWxl bmFtZSk7CiB2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9v bCBkZWJ1Zyk7CiB2b2lkIGludGVsX2JiX3NldF9kdW1wX2Jhc2U2NChzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgYm9vbCBkdW1wKTsKIAorLyoKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QKIGludGVsX2Ji X3NldF9kZWZhdWx0X29iamVjdF9hbGlnbm1lbnQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQ2 NF90IGFsaWdubWVudCkKIHsKQEAgLTUyNSw2ICs1MzIsNyBAQCBpbnRlbF9iYl9nZXRfZGVmYXVs dF9vYmplY3RfYWxpZ25tZW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewogCXJldHVybiBpYmIt PmFsaWdubWVudDsKIH0KKyovCiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zm c2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewpAQCAtNTc0LDExICs1ODIsMTYgQEAgc3RhdGlj IGlubGluZSB2b2lkIGludGVsX2JiX291dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qg ZHdvcmQpCiB9CiAKIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoKLWludGVsX2Ji X2FkZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDMy X3Qgc2l6ZSwKLQkJICAgIHVpbnQ2NF90IG9mZnNldCwgYm9vbCB3cml0ZSk7CitpbnRlbF9iYl9h ZGRfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90 IHNpemUsCisJCSAgICB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IGFsaWdubWVudCwgYm9vbCB3 cml0ZSk7Citib29sIGludGVsX2JiX3JlbW92ZV9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIs IHVpbnQzMl90IGhhbmRsZSwKKwkJCSAgICB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUp Owogc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgogaW50ZWxfYmJfYWRkX2ludGVs X2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBib29sIHdy aXRlKTsKLQorc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgoraW50ZWxfYmJfYWRk X2ludGVsX2J1Zl93aXRoX2FsaWdubWVudChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGlu dGVsX2J1ZiAqYnVmLAorCQkJCSAgICAgIHVpbnQ2NF90IGFsaWdubWVudCwgYm9vbCB3cml0ZSk7 Citib29sIGludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0 cnVjdCBpbnRlbF9idWYgKmJ1Zik7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq CiBpbnRlbF9iYl9maW5kX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFu ZGxlKTsKIApAQCAtNjI1LDYgKzYzOCw4IEBAIHVpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxv Y190b19vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkJCSB1aW50MzJfdCBvZmZzZXQs CiAJCQkJCSB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpOwogCit2b2lkIGludGVsX2JiX2R1bXBf Y2FjaGUoc3RydWN0IGludGVsX2JiICppYmIpOworCiB2b2lkIGludGVsX2JiX2V4ZWMoc3RydWN0 IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCiAJCSAgIHVpbnQ2NF90IGZsYWdz LCBib29sIHN5bmMpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIv dGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwppbmRleCAxNGJmZWFkYjMuLmM2Yzk0MzUwNiAxMDA2 NDQKLS0tIGEvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYworKysgYi90ZXN0cy9pOTE1L2FwaV9p bnRlbF9iYi5jCkBAIC04MTAsMTEgKzgxMCwxMSBAQCBzdGF0aWMgdm9pZCBvZmZzZXRfY29udHJv bChzdHJ1Y3QgYnVmX29wcyAqYm9wcykKIAlkc3QyID0gY3JlYXRlX2J1Zihib3BzLCBXSURUSCwg SEVJR0hULCBDT0xPUl83Nyk7CiAKIAlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgc3JjLT5oYW5k bGUsIGludGVsX2J1Zl9ib19zaXplKHNyYyksCi0JCQkgICAgc3JjLT5hZGRyLm9mZnNldCwgZmFs c2UpOworCQkJICAgIHNyYy0+YWRkci5vZmZzZXQsIDAsIGZhbHNlKTsKIAlpbnRlbF9iYl9hZGRf b2JqZWN0KGliYiwgZHN0MS0+aGFuZGxlLCBpbnRlbF9idWZfYm9fc2l6ZShkc3QxKSwKLQkJCSAg ICBkc3QxLT5hZGRyLm9mZnNldCwgdHJ1ZSk7CisJCQkgICAgZHN0MS0+YWRkci5vZmZzZXQsIDAs IHRydWUpOwogCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBkc3QyLT5oYW5kbGUsIGludGVsX2J1 Zl9ib19zaXplKGRzdDIpLAotCQkJICAgIGRzdDItPmFkZHIub2Zmc2V0LCB0cnVlKTsKKwkJCSAg ICBkc3QyLT5hZGRyLm9mZnNldCwgMCwgdHJ1ZSk7CiAKIAlpbnRlbF9iYl9vdXQoaWJiLCBNSV9C QVRDSF9CVUZGRVJfRU5EKTsKIAlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKQEAgLTgzOCwx MyArODM4LDEzIEBAIHN0YXRpYyB2b2lkIG9mZnNldF9jb250cm9sKHN0cnVjdCBidWZfb3BzICpi b3BzKQogCiAJZHN0MyA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhFSUdIVCwgQ09MT1JfMzMp OwogCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBkc3QzLT5oYW5kbGUsIGludGVsX2J1Zl9ib19z aXplKGRzdDMpLAotCQkJICAgIGRzdDMtPmFkZHIub2Zmc2V0LCB0cnVlKTsKKwkJCSAgICBkc3Qz LT5hZGRyLm9mZnNldCwgMCwgdHJ1ZSk7CiAJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIHNyYy0+ aGFuZGxlLCBpbnRlbF9idWZfYm9fc2l6ZShzcmMpLAotCQkJICAgIHNyYy0+YWRkci5vZmZzZXQs IGZhbHNlKTsKKwkJCSAgICBzcmMtPmFkZHIub2Zmc2V0LCAwLCBmYWxzZSk7CiAJaW50ZWxfYmJf YWRkX29iamVjdChpYmIsIGRzdDEtPmhhbmRsZSwgaW50ZWxfYnVmX2JvX3NpemUoZHN0MSksCi0J CQkgICAgZHN0MS0+YWRkci5vZmZzZXQsIHRydWUpOworCQkJICAgIGRzdDEtPmFkZHIub2Zmc2V0 LCAwLCB0cnVlKTsKIAlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgZHN0Mi0+aGFuZGxlLCBpbnRl bF9idWZfYm9fc2l6ZShkc3QyKSwKLQkJCSAgICBkc3QyLT5hZGRyLm9mZnNldCwgdHJ1ZSk7CisJ CQkgICAgZHN0Mi0+YWRkci5vZmZzZXQsIDAsIHRydWUpOwogCiAJaW50ZWxfYmJfb3V0KGliYiwg TUlfQkFUQ0hfQlVGRkVSX0VORCk7CiAJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7CkBAIC05 MDEsNyArOTAxLDcgQEAgc3RhdGljIHZvaWQgZGVsdGFfY2hlY2soc3RydWN0IGJ1Zl9vcHMgKmJv cHMpCiAJYnVmID0gY3JlYXRlX2J1Zihib3BzLCAweDEwMDAsIDB4MTAsIENPTE9SX0NDKTsKIAli dWYtPmFkZHIub2Zmc2V0ID0gMHhmZmZmZjAwMDsKIAlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwg YnVmLT5oYW5kbGUsIGludGVsX2J1Zl9ib19zaXplKGJ1ZiksCi0JCQkgICAgYnVmLT5hZGRyLm9m ZnNldCwgZmFsc2UpOworCQkJICAgIGJ1Zi0+YWRkci5vZmZzZXQsIDAsIGZhbHNlKTsKIAogCWlu dGVsX2JiX291dChpYmIsIE1JX1NUT1JFX0RXT1JEX0lNTSk7CiAJaW50ZWxfYmJfZW1pdF9yZWxv YyhpYmIsIGJ1Zi0+aGFuZGxlLApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZz ZXQuYyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXBfb2Zmc2V0LmMKaW5kZXggOGIyOWQwYTBhLi41ZTQ4 Y2Q2OTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX21tYXBfb2Zmc2V0LmMKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtNjE0LDggKzYxNCw4IEBAIHN0YXRpYyB2b2lk IGJsdF9jb2hlcmVuY3koaW50IGk5MTUpCiAJZHN0ID0gY3JlYXRlX2JvKGJvcHMsIDEsIHdpZHRo LCBoZWlnaHQpOwogCXNpemUgPSBzcmMtPnN1cmZhY2VbMF0uc2l6ZTsKIAotCWludGVsX2JiX2Fk ZF9vYmplY3QoaWJiLCBzcmMtPmhhbmRsZSwgc2l6ZSwgc3JjLT5hZGRyLm9mZnNldCwgZmFsc2Up OwotCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBkc3QtPmhhbmRsZSwgc2l6ZSwgZHN0LT5hZGRy Lm9mZnNldCwgdHJ1ZSk7CisJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIHNyYy0+aGFuZGxlLCBz aXplLCBzcmMtPmFkZHIub2Zmc2V0LCAwLCBmYWxzZSk7CisJaW50ZWxfYmJfYWRkX29iamVjdChp YmIsIGRzdC0+aGFuZGxlLCBzaXplLCBkc3QtPmFkZHIub2Zmc2V0LCAwLCB0cnVlKTsKIAogCWlu dGVsX2JiX2JsdF9jb3B5KGliYiwKIAkJCSAgc3JjLCAwLCAwLCBzcmMtPnN1cmZhY2VbMF0uc3Ry aWRlLAotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK