From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v14 02/18] kunit: test: add test resource management API Date: Tue, 20 Aug 2019 16:20:30 -0700 Message-ID: <20190820232046.50175-3-brendanhiggins@google.com> References: <20190820232046.50175-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190820232046.50175-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 b2dhbmdAZGVsdGF0ZWUuY29tPgpSZXZpZXdlZC1ieTogU3RlcGhlbiBCb3lkIDxzYm95ZEBrZXJu ZWwub3JnPgotLS0KIGluY2x1ZGUva3VuaXQvdGVzdC5oIHwgMTg3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGt1bml0L3Rlc3QuYyAgICAgICAgIHwgMTYzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzUw IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2t1bml0L3Rlc3QuaCBiL2luY2x1 ZGUva3VuaXQvdGVzdC5oCmluZGV4IGUwYjM0YWNiOWVlNGUuLmYyNjRmZmU1OGYwMDggMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUva3VuaXQvdGVzdC5oCisrKyBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCkBA IC05LDggKzksNzIgQEAKICNpZm5kZWYgX0tVTklUX1RFU1RfSAogI2RlZmluZSBfS1VOSVRfVEVT VF9ICiAKKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4K IAorc3RydWN0IGt1bml0X3Jlc291cmNlOworCit0eXBlZGVmIGludCAoKmt1bml0X3Jlc291cmNl X2luaXRfdCkoc3RydWN0IGt1bml0X3Jlc291cmNlICosIHZvaWQgKik7Cit0eXBlZGVmIHZvaWQg KCprdW5pdF9yZXNvdXJjZV9mcmVlX3QpKHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqKTsKKworLyoq CisgKiBzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgLSByZXByZXNlbnRzIGEgKnRlc3QgbWFuYWdlZCBy ZXNvdXJjZSoKKyAqIEBhbGxvY2F0aW9uOiBmb3IgdGhlIHVzZXIgdG8gc3RvcmUgYXJiaXRyYXJ5 IGRhdGEuCisgKiBAZnJlZTogYSB1c2VyIHN1cHBsaWVkIGZ1bmN0aW9uIHRvIGZyZWUgdGhlIHJl c291cmNlLiBQb3B1bGF0ZWQgYnkKKyAqIGt1bml0X2FsbG9jX3Jlc291cmNlKCkuCisgKgorICog UmVwcmVzZW50cyBhICp0ZXN0IG1hbmFnZWQgcmVzb3VyY2UqLCBhIHJlc291cmNlIHdoaWNoIHdp bGwgYXV0b21hdGljYWxseSBiZQorICogY2xlYW5lZCB1cCBhdCB0aGUgZW5kIG9mIGEgdGVzdCBj YXNlLgorICoKKyAqIEV4YW1wbGU6CisgKgorICogLi4gY29kZS1ibG9jazo6IGMKKyAqCisgKglz dHJ1Y3Qga3VuaXRfa21hbGxvY19wYXJhbXMgeworICoJCXNpemVfdCBzaXplOworICoJCWdmcF90 IGdmcDsKKyAqCX07CisgKgorICoJc3RhdGljIGludCBrdW5pdF9rbWFsbG9jX2luaXQoc3RydWN0 IGt1bml0X3Jlc291cmNlICpyZXMsIHZvaWQgKmNvbnRleHQpCisgKgl7CisgKgkJc3RydWN0IGt1 bml0X2ttYWxsb2NfcGFyYW1zICpwYXJhbXMgPSBjb250ZXh0OworICoJCXJlcy0+YWxsb2NhdGlv biA9IGttYWxsb2MocGFyYW1zLT5zaXplLCBwYXJhbXMtPmdmcCk7CisgKgorICoJCWlmICghcmVz LT5hbGxvY2F0aW9uKQorICoJCQlyZXR1cm4gLUVOT01FTTsKKyAqCisgKgkJcmV0dXJuIDA7Cisg Kgl9CisgKgorICoJc3RhdGljIHZvaWQga3VuaXRfa21hbGxvY19mcmVlKHN0cnVjdCBrdW5pdF9y ZXNvdXJjZSAqcmVzKQorICoJeworICoJCWtmcmVlKHJlcy0+YWxsb2NhdGlvbik7CisgKgl9Cisg KgorICoJdm9pZCAqa3VuaXRfa21hbGxvYyhzdHJ1Y3Qga3VuaXQgKnRlc3QsIHNpemVfdCBzaXpl LCBnZnBfdCBnZnApCisgKgl7CisgKgkJc3RydWN0IGt1bml0X2ttYWxsb2NfcGFyYW1zIHBhcmFt czsKKyAqCQlzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlczsKKyAqCisgKgkJcGFyYW1zLnNpemUg PSBzaXplOworICoJCXBhcmFtcy5nZnAgPSBnZnA7CisgKgorICoJCXJlcyA9IGt1bml0X2FsbG9j X3Jlc291cmNlKHRlc3QsIGt1bml0X2ttYWxsb2NfaW5pdCwKKyAqCQkJa3VuaXRfa21hbGxvY19m cmVlLCAmcGFyYW1zKTsKKyAqCQlpZiAocmVzKQorICoJCQlyZXR1cm4gcmVzLT5hbGxvY2F0aW9u OworICoKKyAqCQlyZXR1cm4gTlVMTDsKKyAqCX0KKyAqLworc3RydWN0IGt1bml0X3Jlc291cmNl IHsKKwl2b2lkICphbGxvY2F0aW9uOworCWt1bml0X3Jlc291cmNlX2ZyZWVfdCBmcmVlOworCisJ LyogcHJpdmF0ZTogaW50ZXJuYWwgdXNlIG9ubHkuICovCisJc3RydWN0IGxpc3RfaGVhZCBub2Rl OworfTsKKwogc3RydWN0IGt1bml0OwogCiAvKioKQEAgLTEwOSw2ICsxNzMsMTMgQEAgc3RydWN0 IGt1bml0IHsKIAkgKiBoYXZlIHRlcm1pbmF0ZWQuCiAJICovCiAJYm9vbCBzdWNjZXNzOyAvKiBS ZWFkIG9ubHkgYWZ0ZXIgdGVzdF9jYXNlIGZpbmlzaGVzISAqLworCXNwaW5sb2NrX3QgbG9jazsg LyogR3VhcmRzIGFsbCBtdXRhYmxlIHRlc3Qgc3RhdGUuICovCisJLyoKKwkgKiBCZWNhdXNlIHJl c291cmNlcyBpcyBhIGxpc3QgdGhhdCBtYXkgYmUgdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyAod2l0 aAorCSAqIG5ldyByZXNvdXJjZXMpIGZyb20gYW55IHRocmVhZCBhc3NvY2lhdGVkIHdpdGggYSB0 ZXN0IGNhc2UsIHdlIG11c3QKKwkgKiBwcm90ZWN0IGl0IHdpdGggc29tZSB0eXBlIG9mIGxvY2su CisJICovCisJc3RydWN0IGxpc3RfaGVhZCByZXNvdXJjZXM7IC8qIFByb3RlY3RlZCBieSBsb2Nr LiAqLwogfTsKIAogdm9pZCBrdW5pdF9pbml0X3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0LCBjb25z dCBjaGFyICpuYW1lKTsKQEAgLTE0MSw2ICsyMTIsMTIyIEBAIGludCBrdW5pdF9ydW5fdGVzdHMo c3RydWN0IGt1bml0X3N1aXRlICpzdWl0ZSk7CiAJCX0JCQkJCQkJICAgICAgIFwKIAkJbGF0ZV9p bml0Y2FsbChrdW5pdF9zdWl0ZV9pbml0IyNzdWl0ZSkKIAorLyoKKyAqIExpa2Uga3VuaXRfYWxs b2NfcmVzb3VyY2UoKSBiZWxvdywgYnV0IHJldHVybnMgdGhlIHN0cnVjdCBrdW5pdF9yZXNvdXJj ZQorICogb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIGFsbG9jYXRpb24uIFRoaXMgaXMgbW9zdGx5 IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICovCitzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKmt1bml0 X2FsbG9jX2FuZF9nZXRfcmVzb3VyY2Uoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkJICAgIGt1 bml0X3Jlc291cmNlX2luaXRfdCBpbml0LAorCQkJCQkJICAgIGt1bml0X3Jlc291cmNlX2ZyZWVf dCBmcmVlLAorCQkJCQkJICAgIGdmcF90IGludGVybmFsX2dmcCwKKwkJCQkJCSAgICB2b2lkICpj b250ZXh0KTsKKworLyoqCisgKiBrdW5pdF9hbGxvY19yZXNvdXJjZSgpIC0gQWxsb2NhdGVzIGEg KnRlc3QgbWFuYWdlZCByZXNvdXJjZSouCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmpl Y3QuCisgKiBAaW5pdDogYSB1c2VyIHN1cHBsaWVkIGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhl IHJlc291cmNlLgorICogQGZyZWU6IGEgdXNlciBzdXBwbGllZCBmdW5jdGlvbiB0byBmcmVlIHRo ZSByZXNvdXJjZS4KKyAqIEBpbnRlcm5hbF9nZnA6IGdmcCB0byB1c2UgZm9yIGludGVybmFsIGFs bG9jYXRpb25zLCBpZiB1bnN1cmUsIHVzZSBHRlBfS0VSTkVMCisgKiBAY29udGV4dDogZm9yIHRo ZSB1c2VyIHRvIHBhc3MgaW4gYXJiaXRyYXJ5IGRhdGEgdG8gdGhlIGluaXQgZnVuY3Rpb24uCisg KgorICogQWxsb2NhdGVzIGEgKnRlc3QgbWFuYWdlZCByZXNvdXJjZSosIGEgcmVzb3VyY2Ugd2hp Y2ggd2lsbCBhdXRvbWF0aWNhbGx5IGJlCisgKiBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgYSB0 ZXN0IGNhc2UuIFNlZSAmc3RydWN0IGt1bml0X3Jlc291cmNlIGZvciBhbgorICogZXhhbXBsZS4K KyAqCisgKiBOT1RFOiBLVW5pdCBuZWVkcyB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGVhY2gga3Vu aXRfcmVzb3VyY2Ugb2JqZWN0LiBZb3UgbXVzdAorICogc3BlY2lmeSBhbiBAaW50ZXJuYWxfZ2Zw IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB1c2UgY29udGV4dCBvZiB5b3VyCisgKiByZXNv dXJjZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkICprdW5pdF9hbGxvY19yZXNvdXJjZShzdHJ1 Y3Qga3VuaXQgKnRlc3QsCisJCQkJCSBrdW5pdF9yZXNvdXJjZV9pbml0X3QgaW5pdCwKKwkJCQkJ IGt1bml0X3Jlc291cmNlX2ZyZWVfdCBmcmVlLAorCQkJCQkgZ2ZwX3QgaW50ZXJuYWxfZ2ZwLAor CQkJCQkgdm9pZCAqY29udGV4dCkKK3sKKwlzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlczsKKwor CXJlcyA9IGt1bml0X2FsbG9jX2FuZF9nZXRfcmVzb3VyY2UodGVzdCwgaW5pdCwgZnJlZSwgaW50 ZXJuYWxfZ2ZwLAorCQkJCQkgICBjb250ZXh0KTsKKworCWlmIChyZXMpCisJCXJldHVybiByZXMt PmFsbG9jYXRpb247CisKKwlyZXR1cm4gTlVMTDsKK30KKwordHlwZWRlZiBib29sICgqa3VuaXRf cmVzb3VyY2VfbWF0Y2hfdCkoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCSAgICAgICBjb25zdCB2 b2lkICpyZXMsCisJCQkJICAgICAgIHZvaWQgKm1hdGNoX2RhdGEpOworCisvKioKKyAqIGt1bml0 X3Jlc291cmNlX2luc3RhbmNlX21hdGNoKCkgLSBNYXRjaCBhIHJlc291cmNlIHdpdGggdGhlIHNh bWUgaW5zdGFuY2UuCisgKiBAdGVzdDogVGVzdCBjYXNlIHRvIHdoaWNoIHRoZSByZXNvdXJjZSBi ZWxvbmdzLgorICogQHJlczogVGhlIGRhdGEgc3RvcmVkIGluIGt1bml0X3Jlc291cmNlLT5hbGxv Y2F0aW9uLgorICogQG1hdGNoX2RhdGE6IFRoZSByZXNvdXJjZSBwb2ludGVyIHRvIG1hdGNoIGFn YWluc3QuCisgKgorICogQW4gaW5zdGFuY2Ugb2Yga3VuaXRfcmVzb3VyY2VfbWF0Y2hfdCB0aGF0 IG1hdGNoZXMgYSByZXNvdXJjZSB3aG9zZQorICogYWxsb2NhdGlvbiBtYXRjaGVzIEBtYXRjaF9k YXRhLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wga3VuaXRfcmVzb3VyY2VfaW5zdGFuY2VfbWF0 Y2goc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkJIGNvbnN0IHZvaWQgKnJlcywKKwkJCQkJCSB2 b2lkICptYXRjaF9kYXRhKQoreworCXJldHVybiByZXMgPT0gbWF0Y2hfZGF0YTsKK30KKworLyoq CisgKiBrdW5pdF9yZXNvdXJjZV9kZXN0cm95KCkgLSBGaW5kIGEga3VuaXRfcmVzb3VyY2UgYW5k IGRlc3Ryb3kgaXQuCisgKiBAdGVzdDogVGVzdCBjYXNlIHRvIHdoaWNoIHRoZSByZXNvdXJjZSBi ZWxvbmdzLgorICogQG1hdGNoOiBNYXRjaCBmdW5jdGlvbi4gUmV0dXJucyB3aGV0aGVyIGEgZ2l2 ZW4gcmVzb3VyY2UgbWF0Y2hlcyBAbWF0Y2hfZGF0YS4KKyAqIEBmcmVlOiBNdXN0IG1hdGNoIGZy ZWUgb24gdGhlIGt1bml0X3Jlc291cmNlIHRvIGZyZWUuCisgKiBAbWF0Y2hfZGF0YTogRGF0YSBw YXNzZWQgaW50byBAbWF0Y2guCisgKgorICogRnJlZSB0aGUgbGF0ZXN0IGt1bml0X3Jlc291cmNl IG9mIEB0ZXN0IGZvciB3aGljaCBAZnJlZSBtYXRjaGVzIHRoZQorICoga3VuaXRfcmVzb3VyY2Vf ZnJlZV90IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVzb3VyY2UgYW5kIGZvciB3aGljaCBAbWF0Y2gK KyAqIHJldHVybnMgdHJ1ZS4KKyAqCisgKiBSRVRVUk5TOgorICogMCBpZiBrdW5pdF9yZXNvdXJj ZSBpcyBmb3VuZCBhbmQgZnJlZWQsIC1FTk9FTlQgaWYgbm90IGZvdW5kLgorICovCitpbnQga3Vu aXRfcmVzb3VyY2VfZGVzdHJveShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkgICBrdW5pdF9yZXNv dXJjZV9tYXRjaF90IG1hdGNoLAorCQkJICAga3VuaXRfcmVzb3VyY2VfZnJlZV90IGZyZWUsCisJ CQkgICB2b2lkICptYXRjaF9kYXRhKTsKKworLyoqCisgKiBrdW5pdF9rbWFsbG9jKCkgLSBMaWtl IGttYWxsb2MoKSBleGNlcHQgdGhlIGFsbG9jYXRpb24gaXMgKnRlc3QgbWFuYWdlZCouCisgKiBA dGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAc2l6ZTogVGhlIHNpemUgaW4gYnl0 ZXMgb2YgdGhlIGRlc2lyZWQgbWVtb3J5LgorICogQGdmcDogZmxhZ3MgcGFzc2VkIHRvIHVuZGVy bHlpbmcga21hbGxvYygpLgorICoKKyAqIEp1c3QgbGlrZSBga21hbGxvYyguLi4pYCwgZXhjZXB0 IHRoZSBhbGxvY2F0aW9uIGlzIG1hbmFnZWQgYnkgdGhlIHRlc3QgY2FzZQorICogYW5kIGlzIGF1 dG9tYXRpY2FsbHkgY2xlYW5lZCB1cCBhZnRlciB0aGUgdGVzdCBjYXNlIGNvbmNsdWRlcy4gU2Vl ICZzdHJ1Y3QKKyAqIGt1bml0X3Jlc291cmNlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICovCit2 b2lkICprdW5pdF9rbWFsbG9jKHN0cnVjdCBrdW5pdCAqdGVzdCwgc2l6ZV90IHNpemUsIGdmcF90 IGdmcCk7CisKKy8qKgorICoga3VuaXRfa2ZyZWUoKSAtIExpa2Uga2ZyZWUgZXhjZXB0IGZvciBh bGxvY2F0aW9ucyBtYW5hZ2VkIGJ5IEtVbml0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNhc2UgdG8g d2hpY2ggdGhlIHJlc291cmNlIGJlbG9uZ3MuCisgKiBAcHRyOiBUaGUgbWVtb3J5IGFsbG9jYXRp b24gdG8gZnJlZS4KKyAqLwordm9pZCBrdW5pdF9rZnJlZShzdHJ1Y3Qga3VuaXQgKnRlc3QsIGNv bnN0IHZvaWQgKnB0cik7CisKKy8qKgorICoga3VuaXRfa3phbGxvYygpIC0gSnVzdCBsaWtlIGt1 bml0X2ttYWxsb2MoKSwgYnV0IHplcm9lcyB0aGUgYWxsb2NhdGlvbi4KKyAqIEB0ZXN0OiBUaGUg dGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBzaXplOiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUg ZGVzaXJlZCBtZW1vcnkuCisgKiBAZ2ZwOiBmbGFncyBwYXNzZWQgdG8gdW5kZXJseWluZyBrbWFs bG9jKCkuCisgKgorICogU2VlIGt6YWxsb2MoKSBhbmQga3VuaXRfa21hbGxvYygpIGZvciBtb3Jl IGluZm9ybWF0aW9uLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgKmt1bml0X2t6YWxsb2Moc3Ry dWN0IGt1bml0ICp0ZXN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKQoreworCXJldHVybiBrdW5p dF9rbWFsbG9jKHRlc3QsIHNpemUsIGdmcCB8IF9fR0ZQX1pFUk8pOworfQorCit2b2lkIGt1bml0 X2NsZWFudXAoc3RydWN0IGt1bml0ICp0ZXN0KTsKKwogdm9pZCBfX3ByaW50ZigzLCA0KSBrdW5p dF9wcmludGsoY29uc3QgY2hhciAqbGV2ZWwsCiAJCQkJIGNvbnN0IHN0cnVjdCBrdW5pdCAqdGVz dCwKIAkJCQkgY29uc3QgY2hhciAqZm10LCAuLi4pOwpkaWZmIC0tZ2l0IGEva3VuaXQvdGVzdC5j IGIva3VuaXQvdGVzdC5jCmluZGV4IGQzZGRhMzU5Zjk5YjEuLjY4YjEwMzdhYjc0ZDAgMTAwNjQ0 Ci0tLSBhL2t1bml0L3Rlc3QuYworKysgYi9rdW5pdC90ZXN0LmMKQEAgLTEyMiw2ICsxMjIsOCBA QCBzdGF0aWMgdm9pZCBrdW5pdF9wcmludF90ZXN0X2Nhc2Vfb2tfbm90X29rKHN0cnVjdCBrdW5p dF9jYXNlICp0ZXN0X2Nhc2UsCiAKIHZvaWQga3VuaXRfaW5pdF90ZXN0KHN0cnVjdCBrdW5pdCAq dGVzdCwgY29uc3QgY2hhciAqbmFtZSkKIHsKKwlzcGluX2xvY2tfaW5pdCgmdGVzdC0+bG9jayk7 CisJSU5JVF9MSVNUX0hFQUQoJnRlc3QtPnJlc291cmNlcyk7CiAJdGVzdC0+bmFtZSA9IG5hbWU7 CiAJdGVzdC0+c3VjY2VzcyA9IHRydWU7CiB9CkBAIC0xNTMsNiArMTU1LDggQEAgc3RhdGljIHZv aWQga3VuaXRfcnVuX2Nhc2Uoc3RydWN0IGt1bml0X3N1aXRlICpzdWl0ZSwKIAlpZiAoc3VpdGUt PmV4aXQpCiAJCXN1aXRlLT5leGl0KCZ0ZXN0KTsKIAorCWt1bml0X2NsZWFudXAoJnRlc3QpOwor CiAJdGVzdF9jYXNlLT5zdWNjZXNzID0gdGVzdC5zdWNjZXNzOwogfQogCkBAIC0xNzMsNiArMTc3 LDE2NSBAQCBpbnQga3VuaXRfcnVuX3Rlc3RzKHN0cnVjdCBrdW5pdF9zdWl0ZSAqc3VpdGUpCiAJ cmV0dXJuIDA7CiB9CiAKK3N0cnVjdCBrdW5pdF9yZXNvdXJjZSAqa3VuaXRfYWxsb2NfYW5kX2dl dF9yZXNvdXJjZShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJCQkgICAga3VuaXRfcmVzb3VyY2Vf aW5pdF90IGluaXQsCisJCQkJCQkgICAga3VuaXRfcmVzb3VyY2VfZnJlZV90IGZyZWUsCisJCQkJ CQkgICAgZ2ZwX3QgaW50ZXJuYWxfZ2ZwLAorCQkJCQkJICAgIHZvaWQgKmNvbnRleHQpCit7CisJ c3RydWN0IGt1bml0X3Jlc291cmNlICpyZXM7CisJaW50IHJldDsKKworCXJlcyA9IGt6YWxsb2Mo c2l6ZW9mKCpyZXMpLCBpbnRlcm5hbF9nZnApOworCWlmICghcmVzKQorCQlyZXR1cm4gTlVMTDsK KworCXJldCA9IGluaXQocmVzLCBjb250ZXh0KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gTlVMTDsK KworCXJlcy0+ZnJlZSA9IGZyZWU7CisJc3Bpbl9sb2NrKCZ0ZXN0LT5sb2NrKTsKKwlsaXN0X2Fk ZF90YWlsKCZyZXMtPm5vZGUsICZ0ZXN0LT5yZXNvdXJjZXMpOworCXNwaW5fdW5sb2NrKCZ0ZXN0 LT5sb2NrKTsKKworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkIGt1bml0X3Jlc291cmNl X2ZyZWUoc3RydWN0IGt1bml0ICp0ZXN0LCBzdHJ1Y3Qga3VuaXRfcmVzb3VyY2UgKnJlcykKK3sK KwlyZXMtPmZyZWUocmVzKTsKKwlrZnJlZShyZXMpOworfQorCitzdGF0aWMgc3RydWN0IGt1bml0 X3Jlc291cmNlICprdW5pdF9yZXNvdXJjZV9maW5kKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkJ CSAga3VuaXRfcmVzb3VyY2VfbWF0Y2hfdCBtYXRjaCwKKwkJCQkJCSAga3VuaXRfcmVzb3VyY2Vf ZnJlZV90IGZyZWUsCisJCQkJCQkgIHZvaWQgKm1hdGNoX2RhdGEpCit7CisJc3RydWN0IGt1bml0 X3Jlc291cmNlICpyZXNvdXJjZTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnRlc3QtPmxvY2sp OworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHJlc291cmNlLCAmdGVzdC0+cmVzb3Vy Y2VzLCBub2RlKSB7CisJCWlmIChyZXNvdXJjZS0+ZnJlZSAhPSBmcmVlKQorCQkJY29udGludWU7 CisJCWlmIChtYXRjaCh0ZXN0LCByZXNvdXJjZS0+YWxsb2NhdGlvbiwgbWF0Y2hfZGF0YSkpCisJ CQlyZXR1cm4gcmVzb3VyY2U7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1 Y3Qga3VuaXRfcmVzb3VyY2UgKmt1bml0X3Jlc291cmNlX3JlbW92ZSgKKwkJc3RydWN0IGt1bml0 ICp0ZXN0LAorCQlrdW5pdF9yZXNvdXJjZV9tYXRjaF90IG1hdGNoLAorCQlrdW5pdF9yZXNvdXJj ZV9mcmVlX3QgZnJlZSwKKwkJdm9pZCAqbWF0Y2hfZGF0YSkKK3sKKwlzdHJ1Y3Qga3VuaXRfcmVz b3VyY2UgKnJlc291cmNlOworCisJc3Bpbl9sb2NrKCZ0ZXN0LT5sb2NrKTsKKwlyZXNvdXJjZSA9 IGt1bml0X3Jlc291cmNlX2ZpbmQodGVzdCwgbWF0Y2gsIGZyZWUsIG1hdGNoX2RhdGEpOworCWlm IChyZXNvdXJjZSkKKwkJbGlzdF9kZWwoJnJlc291cmNlLT5ub2RlKTsKKwlzcGluX3VubG9jaygm dGVzdC0+bG9jayk7CisKKwlyZXR1cm4gcmVzb3VyY2U7Cit9CisKK2ludCBrdW5pdF9yZXNvdXJj ZV9kZXN0cm95KHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCSAgIGt1bml0X3Jlc291cmNlX21hdGNo X3QgbWF0Y2gsCisJCQkgICBrdW5pdF9yZXNvdXJjZV9mcmVlX3QgZnJlZSwKKwkJCSAgIHZvaWQg Km1hdGNoX2RhdGEpCit7CisJc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXNvdXJjZTsKKworCXJl c291cmNlID0ga3VuaXRfcmVzb3VyY2VfcmVtb3ZlKHRlc3QsIG1hdGNoLCBmcmVlLCBtYXRjaF9k YXRhKTsKKworCWlmICghcmVzb3VyY2UpCisJCXJldHVybiAtRU5PRU5UOworCisJa3VuaXRfcmVz b3VyY2VfZnJlZSh0ZXN0LCByZXNvdXJjZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBrdW5p dF9rbWFsbG9jX3BhcmFtcyB7CisJc2l6ZV90IHNpemU7CisJZ2ZwX3QgZ2ZwOworfTsKKworc3Rh dGljIGludCBrdW5pdF9rbWFsbG9jX2luaXQoc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXMsIHZv aWQgKmNvbnRleHQpCit7CisJc3RydWN0IGt1bml0X2ttYWxsb2NfcGFyYW1zICpwYXJhbXMgPSBj b250ZXh0OworCisJcmVzLT5hbGxvY2F0aW9uID0ga21hbGxvYyhwYXJhbXMtPnNpemUsIHBhcmFt cy0+Z2ZwKTsKKwlpZiAoIXJlcy0+YWxsb2NhdGlvbikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQga3VuaXRfa21hbGxvY19mcmVlKHN0cnVjdCBrdW5p dF9yZXNvdXJjZSAqcmVzKQoreworCWtmcmVlKHJlcy0+YWxsb2NhdGlvbik7Cit9CisKK3ZvaWQg Kmt1bml0X2ttYWxsb2Moc3RydWN0IGt1bml0ICp0ZXN0LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2Zw KQoreworCXN0cnVjdCBrdW5pdF9rbWFsbG9jX3BhcmFtcyBwYXJhbXMgPSB7CisJCS5zaXplID0g c2l6ZSwKKwkJLmdmcCA9IGdmcAorCX07CisKKwlyZXR1cm4ga3VuaXRfYWxsb2NfcmVzb3VyY2Uo dGVzdCwKKwkJCQkgICAga3VuaXRfa21hbGxvY19pbml0LAorCQkJCSAgICBrdW5pdF9rbWFsbG9j X2ZyZWUsCisJCQkJICAgIGdmcCwKKwkJCQkgICAgJnBhcmFtcyk7Cit9CisKK3ZvaWQga3VuaXRf a2ZyZWUoc3RydWN0IGt1bml0ICp0ZXN0LCBjb25zdCB2b2lkICpwdHIpCit7CisJaW50IHJjOwor CisJcmMgPSBrdW5pdF9yZXNvdXJjZV9kZXN0cm95KHRlc3QsCisJCQkJICAgIGt1bml0X3Jlc291 cmNlX2luc3RhbmNlX21hdGNoLAorCQkJCSAgICBrdW5pdF9rbWFsbG9jX2ZyZWUsCisJCQkJICAg ICh2b2lkICopcHRyKTsKKworCVdBUk5fT04ocmMpOworfQorCit2b2lkIGt1bml0X2NsZWFudXAo c3RydWN0IGt1bml0ICp0ZXN0KQoreworCXN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzb3VyY2U7 CisKKwkvKgorCSAqIHRlc3QtPnJlc291cmNlcyBpcyBhIHN0YWNrIC0gZWFjaCBhbGxvY2F0aW9u IG11c3QgYmUgZnJlZWQgaW4gdGhlCisJICogcmV2ZXJzZSBvcmRlciBmcm9tIHdoaWNoIGl0IHdh cyBhZGRlZCBzaW5jZSBvbmUgcmVzb3VyY2UgbWF5IGRlcGVuZAorCSAqIG9uIGFub3RoZXIgZm9y IGl0cyBlbnRpcmUgbGlmZXRpbWUuCisJICogQWxzbywgd2UgY2Fubm90IHVzZSB0aGUgbm9ybWFs IGxpc3RfZm9yX2VhY2ggY29uc3RydWN0cywgZXZlbiB0aGUKKwkgKiBzYWZlIG9uZXMgYmVjYXVz ZSAqYXJiaXRyYXJ5KiBub2RlcyBtYXkgYmUgZGVsZXRlZCB3aGVuCisJICoga3VuaXRfcmVzb3Vy Y2VfZnJlZSBpcyBjYWxsZWQ7IHRoZSBsaXN0X2Zvcl9lYWNoX3NhZmUgdmFyaWFudHMgb25seQor CSAqIHByb3RlY3QgYWdhaW5zdCB0aGUgY3VycmVudCBub2RlIGJlaW5nIGRlbGV0ZWQsIG5vdCB0 aGUgbmV4dC4KKwkgKi8KKwl3aGlsZSAodHJ1ZSkgeworCQlzcGluX2xvY2soJnRlc3QtPmxvY2sp OworCQlpZiAobGlzdF9lbXB0eSgmdGVzdC0+cmVzb3VyY2VzKSkgeworCQkJc3Bpbl91bmxvY2so JnRlc3QtPmxvY2spOworCQkJYnJlYWs7CisJCX0KKwkJcmVzb3VyY2UgPSBsaXN0X2xhc3RfZW50 cnkoJnRlc3QtPnJlc291cmNlcywKKwkJCQkJICAgc3RydWN0IGt1bml0X3Jlc291cmNlLAorCQkJ CQkgICBub2RlKTsKKwkJbGlzdF9kZWwoJnJlc291cmNlLT5ub2RlKTsKKwkJc3Bpbl91bmxvY2so JnRlc3QtPmxvY2spOworCisJCWt1bml0X3Jlc291cmNlX2ZyZWUodGVzdCwgcmVzb3VyY2UpOwor CX0KK30KKwogdm9pZCBrdW5pdF9wcmludGsoY29uc3QgY2hhciAqbGV2ZWwsCiAJCSAgY29uc3Qg c3RydWN0IGt1bml0ICp0ZXN0LAogCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotLSAKMi4yMy4w LnJjMS4xNTMuZ2RlZWQ4MDMzMGYtZ29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVs