From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Gleixner Subject: [patch V3 28/29] stacktrace: Provide common infrastructure Date: Thu, 25 Apr 2019 11:45:21 +0200 Message-ID: <20190425094803.713568606@linutronix.de> References: <20190425094453.875139013@linutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: LKML Cc: Mike Snitzer , David Airlie , Catalin Marinas , dri-devel@lists.freedesktop.org, linux-mm@kvack.org, dm-devel@redhat.com, Alexander Potapenko , Christoph Lameter , Miroslav Benes , Christoph Hellwig , Alasdair Kergon , Marek Szyprowski , linux-arch@vger.kernel.org, x86@kernel.org, kasan-dev@googlegroups.com, David Rientjes , Andrey Ryabinin , Alexey Dobriyan , intel-gfx@lists.freedesktop.org, Johannes Thumshirn , Akinobu Mita , Steven Rostedt , Josef Bacik , Mike Rapoport , Andy Lutomirski , Josh Poimboeuf List-Id: intel-gfx@lists.freedesktop.org QWxsIGFyY2hpdGVjdHVyZXMgd2hpY2ggc3VwcG9ydCBzdGFja3RyYWNlIGNhcnJ5IGR1cGxpY2F0 ZWQgY29kZSBhbmQKZG8gdGhlIHN0YWNrIHN0b3JhZ2UgYW5kIGZpbHRlcmluZyBhdCB0aGUgYXJj aGl0ZWN0dXJlIHNpZGUuCgpQcm92aWRlIGEgY29uc29saWRhdGVkIGludGVyZmFjZSB3aXRoIGEg Y2FsbGJhY2sgZnVuY3Rpb24gZm9yIGNvbnN1bWluZyB0aGUKc3RhY2sgZW50cmllcyBwcm92aWRl ZCBieSB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHN0YWNrIHdhbGtlci4gVGhpcwpyZW1vdmVz IGxvdHMgb2YgZHVwbGljYXRlZCBjb2RlIGFuZCBhbGxvd3MgdG8gaW1wbGVtZW50IGJldHRlciBm aWx0ZXJpbmcKdGhhbiAnc2tpcCBudW1iZXIgb2YgZW50cmllcycgaW4gdGhlIGZ1dHVyZSB3aXRo b3V0IHRvdWNoaW5nIGFueQphcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29kZS4KClNpZ25lZC1vZmYt Ynk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogbGludXgtYXJjaEB2 Z2VyLmtlcm5lbC5vcmcKLS0tClYzOiBGaXgga2VybmVsIGRvYwotLS0KIGluY2x1ZGUvbGludXgv c3RhY2t0cmFjZS5oIHwgICAzOSArKysrKysrKysrCiBrZXJuZWwvc3RhY2t0cmFjZS5jICAgICAg ICB8ICAxNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBs aWIvS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgIDQgKwogMyBmaWxlcyBjaGFuZ2VkLCAyMTYg aW5zZXJ0aW9ucygrKQoKLS0tIGEvaW5jbHVkZS9saW51eC9zdGFja3RyYWNlLmgKKysrIGIvaW5j bHVkZS9saW51eC9zdGFja3RyYWNlLmgKQEAgLTIzLDYgKzIzLDQ0IEBAIHVuc2lnbmVkIGludCBz dGFja190cmFjZV9zYXZlX3JlZ3Moc3RydWMKIHVuc2lnbmVkIGludCBzdGFja190cmFjZV9zYXZl X3VzZXIodW5zaWduZWQgbG9uZyAqc3RvcmUsIHVuc2lnbmVkIGludCBzaXplKTsKIAogLyogSW50 ZXJuYWwgaW50ZXJmYWNlcy4gRG8gbm90IHVzZSBpbiBnZW5lcmljIGNvZGUgKi8KKyNpZmRlZiBD T05GSUdfQVJDSF9TVEFDS1dBTEsKKworLyoqCisgKiBzdGFja190cmFjZV9jb25zdW1lX2ZuIC0g Q2FsbGJhY2sgZm9yIGFyY2hfc3RhY2tfd2FsaygpCisgKiBAY29va2llOglDYWxsZXIgc3VwcGxp ZWQgcG9pbnRlciBoYW5kZWQgYmFjayBieSBhcmNoX3N0YWNrX3dhbGsoKQorICogQGFkZHI6CVRo ZSBzdGFjayBlbnRyeSBhZGRyZXNzIHRvIGNvbnN1bWUKKyAqIEByZWxpYWJsZToJVHJ1ZSB3aGVu IHRoZSBzdGFjayBlbnRyeSBpcyByZWxpYWJsZS4gUmVxdWlyZWQgYnkKKyAqCQlzb21lIHByaW50 ayBiYXNlZCBjb25zdW1lcnMuCisgKgorICogUmV0dXJuOglUcnVlLCBpZiB0aGUgZW50cnkgd2Fz IGNvbnN1bWVkIG9yIHNraXBwZWQKKyAqCQlGYWxzZSwgaWYgdGhlcmUgaXMgbm8gc3BhY2UgbGVm dCB0byBzdG9yZQorICovCit0eXBlZGVmIGJvb2wgKCpzdGFja190cmFjZV9jb25zdW1lX2ZuKSh2 b2lkICpjb29raWUsIHVuc2lnbmVkIGxvbmcgYWRkciwKKwkJCQkgICAgICAgYm9vbCByZWxpYWJs ZSk7CisvKioKKyAqIGFyY2hfc3RhY2tfd2FsayAtIEFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmdW5j dGlvbiB0byB3YWxrIHRoZSBzdGFjaworICogQGNvbnN1bWVfZW50cnk6CUNhbGxiYWNrIHdoaWNo IGlzIGludm9rZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBjb2RlIGZvcgorICoJCQllYWNoIGVudHJ5 LgorICogQGNvb2tpZToJCUNhbGxlciBzdXBwbGllZCBwb2ludGVyIHdoaWNoIGlzIGhhbmRlZCBi YWNrIHRvCisgKgkJCUBjb25zdW1lX2VudHJ5CisgKiBAdGFzazoJCVBvaW50ZXIgdG8gYSB0YXNr IHN0cnVjdCwgY2FuIGJlIE5VTEwKKyAqIEByZWdzOgkJUG9pbnRlciB0byByZWdpc3RlcnMsIGNh biBiZSBOVUxMCisgKgorICogPT09PT09PT09PT09ID09PT09PT0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIHRhc2sJICAgICAgICByZWdzCisgKiA9PT09 PT09PT09PT0gPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorICogdGFzawkJTlVMTAlTdGFjayB0cmFjZSBmcm9tIHRhc2sgKGNhbiBiZSBjdXJyZW50 KQorICogY3VycmVudAlyZWdzCVN0YWNrIHRyYWNlIHN0YXJ0aW5nIG9uIHJlZ3MtPnN0YWNrcG9p bnRlcgorICogPT09PT09PT09PT09ID09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKyAqLwordm9pZCBhcmNoX3N0YWNrX3dhbGsoc3RhY2tfdHJhY2Vf Y29uc3VtZV9mbiBjb25zdW1lX2VudHJ5LCB2b2lkICpjb29raWUsCisJCSAgICAgc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CitpbnQgYXJjaF9zdGFja193 YWxrX3JlbGlhYmxlKHN0YWNrX3RyYWNlX2NvbnN1bWVfZm4gY29uc3VtZV9lbnRyeSwgdm9pZCAq Y29va2llLAorCQkJICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwordm9pZCBhcmNoX3N0 YWNrX3dhbGtfdXNlcihzdGFja190cmFjZV9jb25zdW1lX2ZuIGNvbnN1bWVfZW50cnksIHZvaWQg KmNvb2tpZSwKKwkJCSAgY29uc3Qgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOworCisjZWxzZSAvKiBD T05GSUdfQVJDSF9TVEFDS1dBTEsgKi8KIHN0cnVjdCBzdGFja190cmFjZSB7CiAJdW5zaWduZWQg aW50IG5yX2VudHJpZXMsIG1heF9lbnRyaWVzOwogCXVuc2lnbmVkIGxvbmcgKmVudHJpZXM7CkBA IC0zNyw2ICs3NSw3IEBAIGV4dGVybiB2b2lkIHNhdmVfc3RhY2tfdHJhY2VfdHNrKHN0cnVjdAog ZXh0ZXJuIGludCBzYXZlX3N0YWNrX3RyYWNlX3Rza19yZWxpYWJsZShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywKIAkJCQkJIHN0cnVjdCBzdGFja190cmFjZSAqdHJhY2UpOwogZXh0ZXJuIHZvaWQg c2F2ZV9zdGFja190cmFjZV91c2VyKHN0cnVjdCBzdGFja190cmFjZSAqdHJhY2UpOworI2VuZGlm IC8qICFDT05GSUdfQVJDSF9TVEFDS1dBTEsgKi8KICNlbmRpZiAvKiBDT05GSUdfU1RBQ0tUUkFD RSAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdfU1RBQ0tUUkFDRSkgJiYgZGVmaW5lZChDT05GSUdf SEFWRV9SRUxJQUJMRV9TVEFDS1RSQUNFKQotLS0gYS9rZXJuZWwvc3RhY2t0cmFjZS5jCisrKyBi L2tlcm5lbC9zdGFja3RyYWNlLmMKQEAgLTUsNiArNSw4IEBACiAgKgogICogIENvcHlyaWdodCAo QykgMjAwNiBSZWQgSGF0LCBJbmMuLCBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KICAq LworI2luY2x1ZGUgPGxpbnV4L3NjaGVkL3Rhc2tfc3RhY2suaD4KKyNpbmNsdWRlIDxsaW51eC9z Y2hlZC9kZWJ1Zy5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CkBAIC02Niw2ICs2OCwxNzUgQEAg aW50IHN0YWNrX3RyYWNlX3NucHJpbnQoY2hhciAqYnVmLCBzaXplXwogfQogRVhQT1JUX1NZTUJP TF9HUEwoc3RhY2tfdHJhY2Vfc25wcmludCk7CiAKKyNpZmRlZiBDT05GSUdfQVJDSF9TVEFDS1dB TEsKKworc3RydWN0IHN0YWNrdHJhY2VfY29va2llIHsKKwl1bnNpZ25lZCBsb25nCSpzdG9yZTsK Kwl1bnNpZ25lZCBpbnQJc2l6ZTsKKwl1bnNpZ25lZCBpbnQJc2tpcDsKKwl1bnNpZ25lZCBpbnQJ bGVuOworfTsKKworc3RhdGljIGJvb2wgc3RhY2tfdHJhY2VfY29uc3VtZV9lbnRyeSh2b2lkICpj b29raWUsIHVuc2lnbmVkIGxvbmcgYWRkciwKKwkJCQkgICAgICBib29sIHJlbGlhYmxlKQorewor CXN0cnVjdCBzdGFja3RyYWNlX2Nvb2tpZSAqYyA9IGNvb2tpZTsKKworCWlmIChjLT5sZW4gPj0g Yy0+c2l6ZSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGMtPnNraXAgPiAwKSB7CisJCWMtPnNr aXAtLTsKKwkJcmV0dXJuIHRydWU7CisJfQorCWMtPnN0b3JlW2MtPmxlbisrXSA9IGFkZHI7CisJ cmV0dXJuIGMtPmxlbiA8IGMtPnNpemU7Cit9CisKK3N0YXRpYyBib29sIHN0YWNrX3RyYWNlX2Nv bnN1bWVfZW50cnlfbm9zY2hlZCh2b2lkICpjb29raWUsIHVuc2lnbmVkIGxvbmcgYWRkciwKKwkJ CQkJICAgICAgYm9vbCByZWxpYWJsZSkKK3sKKwlpZiAoaW5fc2NoZWRfZnVuY3Rpb25zKGFkZHIp KQorCQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gc3RhY2tfdHJhY2VfY29uc3VtZV9lbnRyeShjb29r aWUsIGFkZHIsIHJlbGlhYmxlKTsKK30KKworLyoqCisgKiBzdGFja190cmFjZV9zYXZlIC0gU2F2 ZSBhIHN0YWNrIHRyYWNlIGludG8gYSBzdG9yYWdlIGFycmF5CisgKiBAc3RvcmU6CVBvaW50ZXIg dG8gc3RvcmFnZSBhcnJheQorICogQHNpemU6CVNpemUgb2YgdGhlIHN0b3JhZ2UgYXJyYXkKKyAq IEBza2lwbnI6CU51bWJlciBvZiBlbnRyaWVzIHRvIHNraXAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBz dGFjayB0cmFjZQorICoKKyAqIFJldHVybjogTnVtYmVyIG9mIHRyYWNlIGVudHJpZXMgc3RvcmVk LgorICovCit1bnNpZ25lZCBpbnQgc3RhY2tfdHJhY2Vfc2F2ZSh1bnNpZ25lZCBsb25nICpzdG9y ZSwgdW5zaWduZWQgaW50IHNpemUsCisJCQkgICAgICB1bnNpZ25lZCBpbnQgc2tpcG5yKQorewor CXN0YWNrX3RyYWNlX2NvbnN1bWVfZm4gY29uc3VtZV9lbnRyeSA9IHN0YWNrX3RyYWNlX2NvbnN1 bWVfZW50cnk7CisJc3RydWN0IHN0YWNrdHJhY2VfY29va2llIGMgPSB7CisJCS5zdG9yZQk9IHN0 b3JlLAorCQkuc2l6ZQk9IHNpemUsCisJCS5za2lwCT0gc2tpcG5yICsgMSwKKwl9OworCisJYXJj aF9zdGFja193YWxrKGNvbnN1bWVfZW50cnksICZjLCBjdXJyZW50LCBOVUxMKTsKKwlyZXR1cm4g Yy5sZW47Cit9CitFWFBPUlRfU1lNQk9MX0dQTChzdGFja190cmFjZV9zYXZlKTsKKworLyoqCisg KiBzdGFja190cmFjZV9zYXZlX3RzayAtIFNhdmUgYSB0YXNrIHN0YWNrIHRyYWNlIGludG8gYSBz dG9yYWdlIGFycmF5CisgKiBAdGFzazoJVGhlIHRhc2sgdG8gZXhhbWluZQorICogQHN0b3JlOglQ b2ludGVyIHRvIHN0b3JhZ2UgYXJyYXkKKyAqIEBzaXplOglTaXplIG9mIHRoZSBzdG9yYWdlIGFy cmF5CisgKiBAc2tpcG5yOglOdW1iZXIgb2YgZW50cmllcyB0byBza2lwIGF0IHRoZSBzdGFydCBv ZiB0aGUgc3RhY2sgdHJhY2UKKyAqCisgKiBSZXR1cm46IE51bWJlciBvZiB0cmFjZSBlbnRyaWVz IHN0b3JlZC4KKyAqLwordW5zaWduZWQgaW50IHN0YWNrX3RyYWNlX3NhdmVfdHNrKHN0cnVjdCB0 YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nICpzdG9yZSwKKwkJCQkgIHVuc2lnbmVkIGlu dCBzaXplLCB1bnNpZ25lZCBpbnQgc2tpcG5yKQoreworCXN0YWNrX3RyYWNlX2NvbnN1bWVfZm4g Y29uc3VtZV9lbnRyeSA9IHN0YWNrX3RyYWNlX2NvbnN1bWVfZW50cnlfbm9zY2hlZDsKKwlzdHJ1 Y3Qgc3RhY2t0cmFjZV9jb29raWUgYyA9IHsKKwkJLnN0b3JlCT0gc3RvcmUsCisJCS5zaXplCT0g c2l6ZSwKKwkJLnNraXAJPSBza2lwbnIgKyAxLAorCX07CisKKwlpZiAoIXRyeV9nZXRfdGFza19z dGFjayh0c2spKQorCQlyZXR1cm4gMDsKKworCWFyY2hfc3RhY2tfd2Fsayhjb25zdW1lX2VudHJ5 LCAmYywgdHNrLCBOVUxMKTsKKwlwdXRfdGFza19zdGFjayh0c2spOworCXJldHVybiBjLmxlbjsK K30KKworLyoqCisgKiBzdGFja190cmFjZV9zYXZlX3JlZ3MgLSBTYXZlIGEgc3RhY2sgdHJhY2Ug YmFzZWQgb24gcHRfcmVncyBpbnRvIGEgc3RvcmFnZSBhcnJheQorICogQHJlZ3M6CVBvaW50ZXIg dG8gcHRfcmVncyB0byBleGFtaW5lCisgKiBAc3RvcmU6CVBvaW50ZXIgdG8gc3RvcmFnZSBhcnJh eQorICogQHNpemU6CVNpemUgb2YgdGhlIHN0b3JhZ2UgYXJyYXkKKyAqIEBza2lwbnI6CU51bWJl ciBvZiBlbnRyaWVzIHRvIHNraXAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdGFjayB0cmFjZQorICoK KyAqIFJldHVybjogTnVtYmVyIG9mIHRyYWNlIGVudHJpZXMgc3RvcmVkLgorICovCit1bnNpZ25l ZCBpbnQgc3RhY2tfdHJhY2Vfc2F2ZV9yZWdzKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25l ZCBsb25nICpzdG9yZSwKKwkJCQkgICB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgaW50IHNr aXBucikKK3sKKwlzdGFja190cmFjZV9jb25zdW1lX2ZuIGNvbnN1bWVfZW50cnkgPSBzdGFja190 cmFjZV9jb25zdW1lX2VudHJ5OworCXN0cnVjdCBzdGFja3RyYWNlX2Nvb2tpZSBjID0geworCQku c3RvcmUJPSBzdG9yZSwKKwkJLnNpemUJPSBzaXplLAorCQkuc2tpcAk9IHNraXBuciwKKwl9Owor CisJYXJjaF9zdGFja193YWxrKGNvbnN1bWVfZW50cnksICZjLCBjdXJyZW50LCByZWdzKTsKKwly ZXR1cm4gYy5sZW47Cit9CisKKyNpZmRlZiBDT05GSUdfSEFWRV9SRUxJQUJMRV9TVEFDS1RSQUNF CisvKioKKyAqIHN0YWNrX3RyYWNlX3NhdmVfdHNrX3JlbGlhYmxlIC0gU2F2ZSB0YXNrIHN0YWNr IHdpdGggdmVyaWZpY2F0aW9uCisgKiBAdHNrOglQb2ludGVyIHRvIHRoZSB0YXNrIHRvIGV4YW1p bmUKKyAqIEBzdG9yZToJUG9pbnRlciB0byBzdG9yYWdlIGFycmF5CisgKiBAc2l6ZToJU2l6ZSBv ZiB0aGUgc3RvcmFnZSBhcnJheQorICoKKyAqIFJldHVybjoJQW4gZXJyb3IgaWYgaXQgZGV0ZWN0 cyBhbnkgdW5yZWxpYWJsZSBmZWF0dXJlcyBvZiB0aGUKKyAqCQlzdGFjay4gT3RoZXJ3aXNlIGl0 IGd1YXJhbnRlZXMgdGhhdCB0aGUgc3RhY2sgdHJhY2UgaXMKKyAqCQlyZWxpYWJsZSBhbmQgcmV0 dXJucyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc3RvcmVkLgorICoKKyAqIElmIHRoZSB0YXNrIGlz IG5vdCAnY3VycmVudCcsIHRoZSBjYWxsZXIgKm11c3QqIGVuc3VyZSB0aGUgdGFzayBpcyBpbmFj dGl2ZS4KKyAqLworaW50IHN0YWNrX3RyYWNlX3NhdmVfdHNrX3JlbGlhYmxlKHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nICpzdG9yZSwKKwkJCQkgIHVuc2lnbmVkIGludCBz aXplKQoreworCXN0YWNrX3RyYWNlX2NvbnN1bWVfZm4gY29uc3VtZV9lbnRyeSA9IHN0YWNrX3Ry YWNlX2NvbnN1bWVfZW50cnk7CisJc3RydWN0IHN0YWNrdHJhY2VfY29va2llIGMgPSB7CisJCS5z dG9yZQk9IHN0b3JlLAorCQkuc2l6ZQk9IHNpemUsCisJfTsKKwlpbnQgcmV0OworCisJLyoKKwkg KiBJZiB0aGUgdGFzayBkb2Vzbid0IGhhdmUgYSBzdGFjayAoZS5nLiwgYSB6b21iaWUpLCB0aGUg c3RhY2sgaXMKKwkgKiAicmVsaWFibHkiIGVtcHR5LgorCSAqLworCWlmICghdHJ5X2dldF90YXNr X3N0YWNrKHRzaykpCisJCXJldHVybiAwOworCisJcmV0ID0gYXJjaF9zdGFja193YWxrX3JlbGlh YmxlKGNvbnN1bWVfZW50cnksICZjLCB0c2spOworCXB1dF90YXNrX3N0YWNrKHRzayk7CisJcmV0 dXJuIHJldDsKK30KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1VTRVJfU1RBQ0tUUkFDRV9TVVBQ T1JUCisvKioKKyAqIHN0YWNrX3RyYWNlX3NhdmVfdXNlciAtIFNhdmUgYSB1c2VyIHNwYWNlIHN0 YWNrIHRyYWNlIGludG8gYSBzdG9yYWdlIGFycmF5CisgKiBAc3RvcmU6CVBvaW50ZXIgdG8gc3Rv cmFnZSBhcnJheQorICogQHNpemU6CVNpemUgb2YgdGhlIHN0b3JhZ2UgYXJyYXkKKyAqCisgKiBS ZXR1cm46IE51bWJlciBvZiB0cmFjZSBlbnRyaWVzIHN0b3JlZC4KKyAqLwordW5zaWduZWQgaW50 IHN0YWNrX3RyYWNlX3NhdmVfdXNlcih1bnNpZ25lZCBsb25nICpzdG9yZSwgdW5zaWduZWQgaW50 IHNpemUpCit7CisJc3RhY2tfdHJhY2VfY29uc3VtZV9mbiBjb25zdW1lX2VudHJ5ID0gc3RhY2tf dHJhY2VfY29uc3VtZV9lbnRyeTsKKwlzdHJ1Y3Qgc3RhY2t0cmFjZV9jb29raWUgYyA9IHsKKwkJ LnN0b3JlCT0gc3RvcmUsCisJCS5zaXplCT0gc2l6ZSwKKwl9OworCisJLyogVHJhY2UgdXNlciBz dGFjayBpZiBub3QgYSBrZXJuZWwgdGhyZWFkICovCisJaWYgKCFjdXJyZW50LT5tbSkKKwkJcmV0 dXJuIDA7CisKKwlhcmNoX3N0YWNrX3dhbGtfdXNlcihjb25zdW1lX2VudHJ5LCAmYywgdGFza19w dF9yZWdzKGN1cnJlbnQpKTsKKwlyZXR1cm4gYy5sZW47Cit9CisjZW5kaWYKKworI2Vsc2UgLyog Q09ORklHX0FSQ0hfU1RBQ0tXQUxLICovCisKIC8qCiAgKiBBcmNoaXRlY3R1cmVzIHRoYXQgZG8g bm90IGltcGxlbWVudCBzYXZlX3N0YWNrX3RyYWNlXyooKQogICogZ2V0IHRoZXNlIHdlYWsgYWxp YXNlcyBhbmQgb25jZS1wZXItYm9vdHVwIHdhcm5pbmdzCkBAIC0yMDMsMyArMzc0LDUgQEAgdW5z aWduZWQgaW50IHN0YWNrX3RyYWNlX3NhdmVfdXNlcih1bnNpZwogCXJldHVybiB0cmFjZS5ucl9l bnRyaWVzOwogfQogI2VuZGlmIC8qIENPTkZJR19VU0VSX1NUQUNLVFJBQ0VfU1VQUE9SVCAqLwor CisjZW5kaWYgLyogIUNPTkZJR19BUkNIX1NUQUNLV0FMSyAqLwotLS0gYS9saWIvS2NvbmZpZwor KysgYi9saWIvS2NvbmZpZwpAQCAtNTk3LDYgKzU5NywxMCBAQCBjb25maWcgQVJDSF9IQVNfVUFD Q0VTU19GTFVTSENBQ0hFCiBjb25maWcgQVJDSF9IQVNfVUFDQ0VTU19NQ1NBRkUKIAlib29sCiAK KyMgVGVtcG9yYXJ5LiBHb2VzIGF3YXkgd2hlbiBhbGwgYXJjaHMgYXJlIGNsZWFuZWQgdXAKK2Nv bmZpZyBBUkNIX1NUQUNLV0FMSworICAgICAgIGJvb2wKKwogY29uZmlnIFNUQUNLREVQT1QKIAli b29sCiAJc2VsZWN0IFNUQUNLVFJBQ0UKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZng=