From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v8 02/18] kunit: test: add test resource management API Date: Wed, 10 Jul 2019 00:14:52 -0700 Message-ID: <20190710071508.173491-3-brendanhiggins@google.com> References: <20190710071508.173491-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190710071508.173491-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: devicetree@vger.kernel.org Q3JlYXRlIGEgY29tbW9uIEFQSSBmb3IgdGVzdCBtYW5hZ2VkIHJlc291cmNlcyBsaWtlIG1lbW9y eSBhbmQgdGVzdApvYmplY3RzLiBBIGxvdCBvZiB0aW1lcyBhIHRlc3Qgd2lsbCB3YW50IHRvIHNl dCB1cCBpbmZyYXN0cnVjdHVyZSB0byBiZQp1c2VkIGluIHRlc3QgY2FzZXM7IHRoaXMgY291bGQg YmUgYW55dGhpbmcgZnJvbSBqdXN0IHdhbnRpbmcgdG8gYWxsb2NhdGUKc29tZSBtZW1vcnkgdG8g c2V0dGluZyB1cCBhIGRyaXZlciBzdGFjazsgdGhpcyBkZWZpbmVzIGZhY2lsaXRpZXMgZm9yCmNy ZWF0aW5nICJ0ZXN0IHJlc291cmNlcyIgd2hpY2ggYXJlIG1hbmFnZWQgYnkgdGhlIHRlc3QgaW5m cmFzdHJ1Y3R1cmUKYW5kIGFyZSBhdXRvbWF0aWNhbGx5IGNsZWFuZWQgdXAgYXQgdGhlIGNvbmNs dXNpb24gb2YgdGhlIHRlc3QuCgpTaWduZWQtb2ZmLWJ5OiBCcmVuZGFuIEhpZ2dpbnMgPGJyZW5k YW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdy ZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogTG9nYW4gR3VudGhvcnBlIDxs b2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIGluY2x1ZGUva3VuaXQvdGVzdC5oIHwgMTE2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGt1bml0L3Rlc3QuYyAgICAg ICAgIHwgIDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDIxMCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9rdW5pdC90ZXN0 LmggYi9pbmNsdWRlL2t1bml0L3Rlc3QuaAppbmRleCBlMGIzNGFjYjllZTRlLi5iZGY0MWQzMWMz NDNjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2t1bml0L3Rlc3QuaAorKysgYi9pbmNsdWRlL2t1bml0 L3Rlc3QuaApAQCAtMTAsNiArMTAsNzAgQEAKICNkZWZpbmUgX0tVTklUX1RFU1RfSAogCiAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisKK3N0cnVjdCBr dW5pdF9yZXNvdXJjZTsKKwordHlwZWRlZiBpbnQgKCprdW5pdF9yZXNvdXJjZV9pbml0X3QpKHN0 cnVjdCBrdW5pdF9yZXNvdXJjZSAqLCB2b2lkICopOwordHlwZWRlZiB2b2lkICgqa3VuaXRfcmVz b3VyY2VfZnJlZV90KShzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKik7CisKKy8qKgorICogc3RydWN0 IGt1bml0X3Jlc291cmNlIC0gcmVwcmVzZW50cyBhICp0ZXN0IG1hbmFnZWQgcmVzb3VyY2UqCisg KiBAYWxsb2NhdGlvbjogZm9yIHRoZSB1c2VyIHRvIHN0b3JlIGFyYml0cmFyeSBkYXRhLgorICog QGZyZWU6IGEgdXNlciBzdXBwbGllZCBmdW5jdGlvbiB0byBmcmVlIHRoZSByZXNvdXJjZS4gUG9w dWxhdGVkIGJ5CisgKiBrdW5pdF9hbGxvY19yZXNvdXJjZSgpLgorICoKKyAqIFJlcHJlc2VudHMg YSAqdGVzdCBtYW5hZ2VkIHJlc291cmNlKiwgYSByZXNvdXJjZSB3aGljaCB3aWxsIGF1dG9tYXRp Y2FsbHkgYmUKKyAqIGNsZWFuZWQgdXAgYXQgdGhlIGVuZCBvZiBhIHRlc3QgY2FzZS4KKyAqCisg KiBFeGFtcGxlOgorICoKKyAqIC4uIGNvZGUtYmxvY2s6OiBjCisgKgorICoJc3RydWN0IGt1bml0 X2ttYWxsb2NfcGFyYW1zIHsKKyAqCQlzaXplX3Qgc2l6ZTsKKyAqCQlnZnBfdCBnZnA7CisgKgl9 OworICoKKyAqCXN0YXRpYyBpbnQga3VuaXRfa21hbGxvY19pbml0KHN0cnVjdCBrdW5pdF9yZXNv dXJjZSAqcmVzLCB2b2lkICpjb250ZXh0KQorICoJeworICoJCXN0cnVjdCBrdW5pdF9rbWFsbG9j X3BhcmFtcyAqcGFyYW1zID0gY29udGV4dDsKKyAqCQlyZXMtPmFsbG9jYXRpb24gPSBrbWFsbG9j KHBhcmFtcy0+c2l6ZSwgcGFyYW1zLT5nZnApOworICoKKyAqCQlpZiAoIXJlcy0+YWxsb2NhdGlv bikKKyAqCQkJcmV0dXJuIC1FTk9NRU07CisgKgorICoJCXJldHVybiAwOworICoJfQorICoKKyAq CXN0YXRpYyB2b2lkIGt1bml0X2ttYWxsb2NfZnJlZShzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJl cykKKyAqCXsKKyAqCQlrZnJlZShyZXMtPmFsbG9jYXRpb24pOworICoJfQorICoKKyAqCXZvaWQg Kmt1bml0X2ttYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2Zw KQorICoJeworICoJCXN0cnVjdCBrdW5pdF9rbWFsbG9jX3BhcmFtcyBwYXJhbXM7CisgKgkJc3Ry dWN0IGt1bml0X3Jlc291cmNlICpyZXM7CisgKgorICoJCXBhcmFtcy5zaXplID0gc2l6ZTsKKyAq CQlwYXJhbXMuZ2ZwID0gZ2ZwOworICoKKyAqCQlyZXMgPSBrdW5pdF9hbGxvY19yZXNvdXJjZSh0 ZXN0LCBrdW5pdF9rbWFsbG9jX2luaXQsCisgKgkJCWt1bml0X2ttYWxsb2NfZnJlZSwgJnBhcmFt cyk7CisgKgkJaWYgKHJlcykKKyAqCQkJcmV0dXJuIHJlcy0+YWxsb2NhdGlvbjsKKyAqCisgKgkJ cmV0dXJuIE5VTEw7CisgKgl9CisgKi8KK3N0cnVjdCBrdW5pdF9yZXNvdXJjZSB7CisJdm9pZCAq YWxsb2NhdGlvbjsKKwlrdW5pdF9yZXNvdXJjZV9mcmVlX3QgZnJlZTsKKworCS8qIHByaXZhdGU6 IGludGVybmFsIHVzZSBvbmx5LiAqLworCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKK307CiAKIHN0 cnVjdCBrdW5pdDsKIApAQCAtMTA5LDYgKzE3MywxMyBAQCBzdHJ1Y3Qga3VuaXQgewogCSAqIGhh dmUgdGVybWluYXRlZC4KIAkgKi8KIAlib29sIHN1Y2Nlc3M7IC8qIFJlYWQgb25seSBhZnRlciB0 ZXN0X2Nhc2UgZmluaXNoZXMhICovCisJc3RydWN0IG11dGV4IGxvY2s7IC8qIEdhdXJkcyBhbGwg bXV0YWJsZSB0ZXN0IHN0YXRlLiAqLworCS8qCisJICogQmVjYXVzZSByZXNvdXJjZXMgaXMgYSBs aXN0IHRoYXQgbWF5IGJlIHVwZGF0ZWQgbXVsdGlwbGUgdGltZXMgKHdpdGgKKwkgKiBuZXcgcmVz b3VyY2VzKSBmcm9tIGFueSB0aHJlYWQgYXNzb2NpYXRlZCB3aXRoIGEgdGVzdCBjYXNlLCB3ZSBt dXN0CisJICogcHJvdGVjdCBpdCB3aXRoIHNvbWUgdHlwZSBvZiBsb2NrLgorCSAqLworCXN0cnVj dCBsaXN0X2hlYWQgcmVzb3VyY2VzOyAvKiBQcm90ZWN0ZWQgYnkgbG9jay4gKi8KIH07CiAKIHZv aWQga3VuaXRfaW5pdF90ZXN0KHN0cnVjdCBrdW5pdCAqdGVzdCwgY29uc3QgY2hhciAqbmFtZSk7 CkBAIC0xNDEsNiArMjEyLDUxIEBAIGludCBrdW5pdF9ydW5fdGVzdHMoc3RydWN0IGt1bml0X3N1 aXRlICpzdWl0ZSk7CiAJCX0JCQkJCQkJICAgICAgIFwKIAkJbGF0ZV9pbml0Y2FsbChrdW5pdF9z dWl0ZV9pbml0IyNzdWl0ZSkKIAorLyoqCisgKiBrdW5pdF9hbGxvY19yZXNvdXJjZSgpIC0gQWxs b2NhdGVzIGEgKnRlc3QgbWFuYWdlZCByZXNvdXJjZSouCisgKiBAdGVzdDogVGhlIHRlc3QgY29u dGV4dCBvYmplY3QuCisgKiBAaW5pdDogYSB1c2VyIHN1cHBsaWVkIGZ1bmN0aW9uIHRvIGluaXRp YWxpemUgdGhlIHJlc291cmNlLgorICogQGZyZWU6IGEgdXNlciBzdXBwbGllZCBmdW5jdGlvbiB0 byBmcmVlIHRoZSByZXNvdXJjZS4KKyAqIEBjb250ZXh0OiBmb3IgdGhlIHVzZXIgdG8gcGFzcyBp biBhcmJpdHJhcnkgZGF0YSB0byB0aGUgaW5pdCBmdW5jdGlvbi4KKyAqCisgKiBBbGxvY2F0ZXMg YSAqdGVzdCBtYW5hZ2VkIHJlc291cmNlKiwgYSByZXNvdXJjZSB3aGljaCB3aWxsIGF1dG9tYXRp Y2FsbHkgYmUKKyAqIGNsZWFuZWQgdXAgYXQgdGhlIGVuZCBvZiBhIHRlc3QgY2FzZS4gU2VlICZz dHJ1Y3Qga3VuaXRfcmVzb3VyY2UgZm9yIGFuCisgKiBleGFtcGxlLgorICovCitzdHJ1Y3Qga3Vu aXRfcmVzb3VyY2UgKmt1bml0X2FsbG9jX3Jlc291cmNlKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJ CQkJICAgIGt1bml0X3Jlc291cmNlX2luaXRfdCBpbml0LAorCQkJCQkgICAga3VuaXRfcmVzb3Vy Y2VfZnJlZV90IGZyZWUsCisJCQkJCSAgICB2b2lkICpjb250ZXh0KTsKKwordm9pZCBrdW5pdF9m cmVlX3Jlc291cmNlKHN0cnVjdCBrdW5pdCAqdGVzdCwgc3RydWN0IGt1bml0X3Jlc291cmNlICpy ZXMpOworCisvKioKKyAqIGt1bml0X2ttYWxsb2MoKSAtIExpa2Uga21hbGxvYygpIGV4Y2VwdCB0 aGUgYWxsb2NhdGlvbiBpcyAqdGVzdCBtYW5hZ2VkKi4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250 ZXh0IG9iamVjdC4KKyAqIEBzaXplOiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGVzaXJlZCBt ZW1vcnkuCisgKiBAZ2ZwOiBmbGFncyBwYXNzZWQgdG8gdW5kZXJseWluZyBrbWFsbG9jKCkuCisg KgorICogSnVzdCBsaWtlIGBrbWFsbG9jKC4uLilgLCBleGNlcHQgdGhlIGFsbG9jYXRpb24gaXMg bWFuYWdlZCBieSB0aGUgdGVzdCBjYXNlCisgKiBhbmQgaXMgYXV0b21hdGljYWxseSBjbGVhbmVk IHVwIGFmdGVyIHRoZSB0ZXN0IGNhc2UgY29uY2x1ZGVzLiBTZWUgJnN0cnVjdAorICoga3VuaXRf cmVzb3VyY2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KK3ZvaWQgKmt1bml0X2ttYWxsb2Mo c3RydWN0IGt1bml0ICp0ZXN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKTsKKworLyoqCisgKiBr dW5pdF9remFsbG9jKCkgLSBKdXN0IGxpa2Uga3VuaXRfa21hbGxvYygpLCBidXQgemVyb2VzIHRo ZSBhbGxvY2F0aW9uLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQHNp emU6IFRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBkZXNpcmVkIG1lbW9yeS4KKyAqIEBnZnA6IGZs YWdzIHBhc3NlZCB0byB1bmRlcmx5aW5nIGttYWxsb2MoKS4KKyAqCisgKiBTZWUga3phbGxvYygp IGFuZCBrdW5pdF9rbWFsbG9jKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZCAqa3VuaXRfa3phbGxvYyhzdHJ1Y3Qga3VuaXQgKnRlc3QsIHNpemVfdCBzaXpl LCBnZnBfdCBnZnApCit7CisJcmV0dXJuIGt1bml0X2ttYWxsb2ModGVzdCwgc2l6ZSwgZ2ZwIHwg X19HRlBfWkVSTyk7Cit9CisKK3ZvaWQga3VuaXRfY2xlYW51cChzdHJ1Y3Qga3VuaXQgKnRlc3Qp OworCiB2b2lkIF9fcHJpbnRmKDMsIDQpIGt1bml0X3ByaW50ayhjb25zdCBjaGFyICpsZXZlbCwK IAkJCQkgY29uc3Qgc3RydWN0IGt1bml0ICp0ZXN0LAogCQkJCSBjb25zdCBjaGFyICpmbXQsIC4u Lik7CmRpZmYgLS1naXQgYS9rdW5pdC90ZXN0LmMgYi9rdW5pdC90ZXN0LmMKaW5kZXggNTcxZTRj NjVkZWI1Yy4uZjE2NWM5ZDhlMTBiMCAxMDA2NDQKLS0tIGEva3VuaXQvdGVzdC5jCisrKyBiL2t1 bml0L3Rlc3QuYwpAQCAtMTIyLDYgKzEyMiw4IEBAIHN0YXRpYyB2b2lkIGt1bml0X3ByaW50X3Rl c3RfY2FzZV9va19ub3Rfb2soc3RydWN0IGt1bml0X2Nhc2UgKnRlc3RfY2FzZSwKIAogdm9pZCBr dW5pdF9pbml0X3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0LCBjb25zdCBjaGFyICpuYW1lKQogewor CW11dGV4X2luaXQoJnRlc3QtPmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZ0ZXN0LT5yZXNvdXJj ZXMpOwogCXRlc3QtPm5hbWUgPSBuYW1lOwogCXRlc3QtPnN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAt MTUxLDYgKzE1Myw4IEBAIHN0YXRpYyB2b2lkIGt1bml0X3J1bl9jYXNlKHN0cnVjdCBrdW5pdF9z dWl0ZSAqc3VpdGUsCiAJaWYgKHN1aXRlLT5leGl0KQogCQlzdWl0ZS0+ZXhpdCgmdGVzdCk7CiAK KwlrdW5pdF9jbGVhbnVwKCZ0ZXN0KTsKKwogCXRlc3RfY2FzZS0+c3VjY2VzcyA9IHRlc3Quc3Vj Y2VzczsKIH0KIApAQCAtMTcxLDYgKzE3NSw5NiBAQCBpbnQga3VuaXRfcnVuX3Rlc3RzKHN0cnVj dCBrdW5pdF9zdWl0ZSAqc3VpdGUpCiAJcmV0dXJuIDA7CiB9CiAKK3N0cnVjdCBrdW5pdF9yZXNv dXJjZSAqa3VuaXRfYWxsb2NfcmVzb3VyY2Uoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkgICAg a3VuaXRfcmVzb3VyY2VfaW5pdF90IGluaXQsCisJCQkJCSAgICBrdW5pdF9yZXNvdXJjZV9mcmVl X3QgZnJlZSwKKwkJCQkJICAgIHZvaWQgKmNvbnRleHQpCit7CisJc3RydWN0IGt1bml0X3Jlc291 cmNlICpyZXM7CisJaW50IHJldDsKKworCXJlcyA9IGt6YWxsb2Moc2l6ZW9mKCpyZXMpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSBpbml0KHJlcywg Y29udGV4dCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXMtPmZyZWUgPSBmcmVl OworCW11dGV4X2xvY2soJnRlc3QtPmxvY2spOworCWxpc3RfYWRkX3RhaWwoJnJlcy0+bm9kZSwg JnRlc3QtPnJlc291cmNlcyk7CisJbXV0ZXhfdW5sb2NrKCZ0ZXN0LT5sb2NrKTsKKworCXJldHVy biByZXM7Cit9CisKK3ZvaWQga3VuaXRfZnJlZV9yZXNvdXJjZShzdHJ1Y3Qga3VuaXQgKnRlc3Qs IHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzKQoreworCXJlcy0+ZnJlZShyZXMpOworCWxpc3Rf ZGVsKCZyZXMtPm5vZGUpOworCWtmcmVlKHJlcyk7Cit9CisKK3N0cnVjdCBrdW5pdF9rbWFsbG9j X3BhcmFtcyB7CisJc2l6ZV90IHNpemU7CisJZ2ZwX3QgZ2ZwOworfTsKKworc3RhdGljIGludCBr dW5pdF9rbWFsbG9jX2luaXQoc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXMsIHZvaWQgKmNvbnRl eHQpCit7CisJc3RydWN0IGt1bml0X2ttYWxsb2NfcGFyYW1zICpwYXJhbXMgPSBjb250ZXh0Owor CisJcmVzLT5hbGxvY2F0aW9uID0ga21hbGxvYyhwYXJhbXMtPnNpemUsIHBhcmFtcy0+Z2ZwKTsK KwlpZiAoIXJlcy0+YWxsb2NhdGlvbikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQga3VuaXRfa21hbGxvY19mcmVlKHN0cnVjdCBrdW5pdF9yZXNvdXJj ZSAqcmVzKQoreworCWtmcmVlKHJlcy0+YWxsb2NhdGlvbik7Cit9CisKK3ZvaWQgKmt1bml0X2tt YWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKQoreworCXN0 cnVjdCBrdW5pdF9rbWFsbG9jX3BhcmFtcyBwYXJhbXM7CisJc3RydWN0IGt1bml0X3Jlc291cmNl ICpyZXM7CisKKwlwYXJhbXMuc2l6ZSA9IHNpemU7CisJcGFyYW1zLmdmcCA9IGdmcDsKKworCXJl cyA9IGt1bml0X2FsbG9jX3Jlc291cmNlKHRlc3QsCisJCQkJICAga3VuaXRfa21hbGxvY19pbml0 LAorCQkJCSAgIGt1bml0X2ttYWxsb2NfZnJlZSwKKwkJCQkgICAmcGFyYW1zKTsKKworCWlmIChy ZXMpCisJCXJldHVybiByZXMtPmFsbG9jYXRpb247CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9p ZCBrdW5pdF9jbGVhbnVwKHN0cnVjdCBrdW5pdCAqdGVzdCkKK3sKKwlzdHJ1Y3Qga3VuaXRfcmVz b3VyY2UgKnJlc291cmNlLCAqcmVzb3VyY2Vfc2FmZTsKKworCW11dGV4X2xvY2soJnRlc3QtPmxv Y2spOworCS8qCisJICogdGVzdC0+cmVzb3VyY2VzIGlzIGEgc3RhY2sgLSBlYWNoIGFsbG9jYXRp b24gbXVzdCBiZSBmcmVlZCBpbiB0aGUKKwkgKiByZXZlcnNlIG9yZGVyIGZyb20gd2hpY2ggaXQg d2FzIGFkZGVkIHNpbmNlIG9uZSByZXNvdXJjZSBtYXkgZGVwZW5kCisJICogb24gYW5vdGhlciBm b3IgaXRzIGVudGlyZSBsaWZldGltZS4KKwkgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVf cmV2ZXJzZShyZXNvdXJjZSwKKwkJCQkJIHJlc291cmNlX3NhZmUsCisJCQkJCSAmdGVzdC0+cmVz b3VyY2VzLAorCQkJCQkgbm9kZSkgeworCQlrdW5pdF9mcmVlX3Jlc291cmNlKHRlc3QsIHJlc291 cmNlKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZ0ZXN0LT5sb2NrKTsKK30KKwogdm9pZCBrdW5pdF9w cmludGsoY29uc3QgY2hhciAqbGV2ZWwsCiAJCSAgY29uc3Qgc3RydWN0IGt1bml0ICp0ZXN0LAog CQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotLSAKMi4yMi4wLjQxMC5nZDhmZGJlMjFiNS1nb29n CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=