From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Howells Date: Tue, 31 Mar 2020 17:31:15 +0000 Subject: Re: Upcoming: Notifications, FS notifications and fsinfo() Message-Id: <2294742.1585675875@warthog.procyon.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="maccentraleurope" Content-Transfer-Encoding: base64 List-Id: References: <1445647.1585576702@warthog.procyon.org.uk> In-Reply-To: To: Miklos Szeredi Cc: dhowells@redhat.com, Linus Torvalds , Al Viro , dray@redhat.com, Karel Zak , Miklos Szeredi , Steven Whitehouse , Jeff Layton , Ian Kent , andres@anarazel.de, Christian Brauner , Lennart Poettering , keyrings@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org TWlrbG9zIFN6ZXJlZGkgPG1pa2xvc0BzemVyZWRpLmh1PiB3cm90ZToKCj4gVGhlIGJhc2ljIHBy b2JsZW0gaW4gbXkgdmlldywgaXMgdGhhdCB0aGUgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnQgb2Yg YQo+ICJnZXQgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbiIgdHlwZSBvZiBBUEkganVzdCBkb2VzIG5v dCB3YXJyYW50IGEKPiBiaW5hcnkgY29kZWQgaW50ZXJmYWNlLiBJJ3ZlIHNhaWQgdGhpcyBhIG51 bWJlciBvZiB0aW1lcywgYnV0IGl0IGZlbGwKPiBvbiBkZWFmIGVhcnMuCgpJdCBoYXNuJ3Qgc28g ZmFsbGVuLCBidXQgZG9uJ3QgbmVjZXNzYXJpbHkgYWdyZWUgd2l0aCB5b3UuICBMZXQncyBwaW4g c29tZQpudW1iZXJzIG9uIHRoaXMuCgpVc2luZyB3aGF0IEkgdGhpbmsgaXMgeW91ciBsYXRlc3Qg cGF0Y2ggd2hlcmUgeW91IGxvb2sgdXAKL3Byb2MvPHBpZD4vZmRpbmZvLzxmZD4gdG8gZmluZCBh IGZpbGUgdGhhdCBnaXZlcyBhIHN1bW1hcnkgb2Ygc29tZQppbmZvcm1hdGlvbiBpbiAia2V5OiB2 YWwiIGZvcm1hdCwgaW5jbHVkaW5nIGEgbW91bnQgSUQuICBZb3UgdGhlbiBoYXZlIHRvIGxvb2sK aW4gYSBtb3VudGVkIG1vdW50ZnMgbWFnaWMgZmlsZXN5c3RlbSBmb3IgYSBkaXJlY3RvcnkgY29y cmVzcG9uZGluZyBtb3VudCBJRAp0aGF0IGhhcyBhIGJ1bmNoIG9mIGF0dHJpYnV0ZSBmaWxlcyBp biBpdCwgbW9zdCB3aXRoIGEgc2luZ2xlIGF0dHJpYnV0ZSB2YWx1ZS4KCldoYXQgSSBjYW4gZG8g d2l0aCBpdCBpcywgc2F5LCBsb29rIHVwIHRoZSBtb3VudCBJRCBvZiB0aGUgb2JqZWN0IGF0dGFj aGVkIHRvCmEgcGF0aCAtIGJ1dCB0aGF0J3MgYWJvdXQgYWxsIGJlY2F1c2UgaXQgZG9lc24ndCBp bXBsZW1lbnQgYW55dGhpbmcgbGlrZQpsb29rLXVwLWJ5LW1vdW50LUlEIG9yIGxpc3QtY2hpbGRy ZW4uCgpBdHRhY2hlZCBpcyBhIGtlcm5lbCBwYXRjaCwgc3VwcGxlbWVudGFyeSB0byB0aGUgZnNp bmZvIHBhdGNoc2V0LCB0aGF0IGFkZHMKeW91ciBpbXBsZW1lbnRhdGlvbiwgZml4ZWQgZm9yIGNv ZXhpc3RlbmNlIHdpdGggdGhlIG1vdW50IG5vdGlmaWNhdGlvbnMgY29kZSwKcGx1cyBhIHNhbXBs ZSBwcm9ncmFtIHRoYXQgY3JlYXRlcyBOIG1vdW50cyBhbmQgdGhlbiBzZWVzIGhvdyBsb25nIGl0 IHRha2VzIHRvCnF1ZXJ5IGVhY2ggb2YgdGhvc2UgbW91bnRzIGZvciBpdHMgbW50X2lkIGJ5IGZv dXIgZGlmZmVyZW50IG1ldGhvZHM6CgogKDEpICJmIiAtIFVzZSBmc2luZm8sIGxvb2tpbmcgdXAg ZWFjaCBtb3VudCByb290IGRpcmVjdGx5IGJ5IHBhdGguCgogKDIpICJmMiIgLSBVc2UgZnNpbmZv LCBmaXJzdGx5IHVzaW5nIGZzaW5mbygpIHRvIGxvb2sgdXAgdGhlIGJhc2UgbW91bnQgYnkKICAg ICBwYXRoLCB0aGVuIHVzZSBmc2luZm8oKSB0byBnZXQgYSBsaXN0IG9mIGFsbCB0aGUgY2hpbGRy ZW4gb2YgdGhhdCBtb3VudAogICAgICh3aGljaCBpbiBmYWN0IGdpdmVzIG1lIHRoZSBtbnRfaWQs IGJ1dCBpZ25vcmluZyB0aGF0KSwgYW5kIHRoZW4gY2FsbAogICAgIGZzaW5mbygpIGJ5IG1vdW50 IElEIGZvciBlYWNoIGNoaWxkIHRvIGdldCBpdHMgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBpdHMK ICAgICBtbnRfaWQuCgogKDMpICJwIiAtIE9wZW4gdGhlIHJvb3Qgb2YgZWFjaCBtb3VudCB3aXRo IE9fUEFUSCBhbmQgdGhlbiBvcGVuIGFuZCByZWFkIHRoZQogICAgIHByb2NmaWxlIHRvIHJldHJp ZXZlIGluZm9ybWF0aW9uLCB0aGVuIHBhcnNlIHRoZSByZWNlaXZlZCB0ZXh0IHRvIGZpbmQKICAg ICB0aGUgbGluZSB3aXRoIHRoYXQga2V5LCB0aGVuIHBhcnNlIHRoZSBsaW5lIHRvIGdldCB0aGUg bnVtYmVyLCBhbGxvd2luZwogICAgIGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgbGluZSBt aWdodCBhY3F1aXJlIGV4dHJhIG51bWJlcnMuCgogKDQpICJwMiIgLSBPcGVuIHRoZSByb290IG9m IHRoZSBiYXNlIG1vdW50IHdpdGggT19QQVRILCB0aGVuIHJlYWQgdGhlCiAgICAgYXBwcm9wcmlh dGUgZmlsZSBpbiAvcHJvYy9mZGluZm8gdG8gZmluZCB0aGUgYmFzZSBtb3VudCBJRC4gIE9wZW4g Ii9tbnQiCiAgICAgT19QQVRIIHRvIHVzZSBhcyBhIGJhc2UuICBUaGVuIHJlYWQgPG1udGlkPi9j aGlsZHJlbiBhbmQgcGFyc2UgdGhlIGxpc3QKICAgICB0byBmaW5kIGVhY2ggY2hpbGQuICBFYWNo IGNoaWxkJ3MgPG1udGlkPi9pZCBmaWxlIGlzIHRoZW4gcmVhZC4KClJ1biB0aGUgcHJvZ3JhbSBs aWtlOgoKCW1vdW50IC10IG1vdW50ZnMgbm9uZSAvbW50Cglta2RpciAvdG1wL2EKCS4vdGVzdC1m c2luZm8tcGVyZiAvdG1wL2EgMjAwMDAKCk5vdGUgdGhhdCBpdCBkZXRhY2hlcyBpdHMgYmFzZSBt b3VudCBhZnRlcndhcmRzIGFuZCBsZXRzIGl0IGdldCBjbGVhbmVkIHVwIGFuZApzeXN0ZW1kIGdv ZXMgY3JhenkgZm9yIGEgYml0LiAgTm90ZSBhbHNvIHRoYXQgaXQgcHJpbnRzIHRoZSBzdW0gb2Yg YWxsIHRoZQptb3VudCBJRHMgYXMgYSBjb25zaXN0ZW5jeSBjaGVjayBmb3IgZWFjaCB0ZXN0LgoK T2theSwgdGhlIHJlc3VsdHM6CgogIEZvciAgMTAwMCBtb3VudHMsIGY9IDE1MTR1cyBmMj0gMTEw MnVzIHA9ICA2MDE0dXMgcDI9ICA2OTM1dXM7IHA9NC4wKmYgcD01LjUqZjIgcD0wLjkqcDIKICBG b3IgIDIwMDAgbW91bnRzLCBmPSA0NzEydXMgZjI9IDM2NzV1cyBwPSAyMDkzN3VzIHAyPSAyMjg3 OHVzOyBwPTQuNCpmIHA9NS43KmYyIHA9MC45KnAyCiAgRm9yICAzMDAwIG1vdW50cywgZj0gNjc5 NXVzIGYyPSA1MzA0dXMgcD0gMzEwODB1cyBwMj0gMzQwNTZ1czsgcD00LjYqZiBwPTUuOSpmMiBw PTAuOSpwMgogIEZvciAgNDAwMCBtb3VudHMsIGY9IDkyOTF1cyBmMj0gNzQzNHVzIHA9IDQwNzIz dXMgcDI9IDQ2NDc5dXM7IHA9NC40KmYgcD01LjUqZjIgcD0wLjkqcDIKICBGb3IgIDUwMDAgbW91 bnRzLCBmPTExNDIzdXMgZjI9IDkyMTl1cyBwPSA1MDg3OHVzIHAyPSA1ODg1N3VzOyBwPTQuNSpm IHA9NS41KmYyIHA9MC45KnAyCiAgRm9yIDEwMDAwIG1vdW50cywgZj0yMjg5OXVzIGYyPTE4MjQw dXMgcD0xMDEwNTR1cyBwMj0xMTcyNzN1czsgcD00LjQqZiBwPTUuNSpmMiBwPTAuOSpwMgogIEZv ciAyMDAwMCBtb3VudHMsIGY9NDU4MTF1cyBmMj0zNzIxMXVzIHA9MjAzNjQwdXMgcDI9MjM3Mzc3 dXM7IHA9NC40KmYgcD01LjUqZjIgcD0wLjkqcDIKICBGb3IgMzAwMDAgbW91bnRzLCBmPTY5NzAz dXMgZjI9NTQ4MDB1cyBwPTMwNjc3OHVzIHAyPTM1NzYyOXVzOyBwPTQuNCpmIHA9NS42KmYyIHA9 MC45KnAyCiAgICAgIApUaGUgbnVtYmVyIG9mIG1vdW50cyBkb2Vzbid0IGhhdmUgYW4gZWZmZWN0 IC0gbm90IHN1cnByaXNpbmcgd2l0aCBkaXJlY3QKcGF0aHdhbGstYmFzZWQgYXBwcm9hY2hlcyAo ImYiIGFuZCAicCIpIHNpbmNlIHRoZSBwYXRod2FsayBwYXJ0IGlzIHRoZSBzYW1lIGluCmJvdGgg Y2FzZXMsIHRob3VnaCBpbiBvbmUgZnNpbmZvKCkgZG9lcyBpdCBhbmQgaW4gdGhlIG90aGVyLCBv cGVuKE9fUEFUSCkuCgpBcyB5b3UgY2FuIHNlZSwgeW91ciBwcm9jZnMtYmFzZWQgYXBwcm9hY2gg dGFrZXMgY29uc2lzdGVudGx5IGFib3V0IDQuNCB0aW1lcwphcyBsb25nIGFzIGZzaW5mbyhRVUVS WV9QQVRIKSBhbmQgNS41IHRpbWVzIGFzIGxvbmcgYXMgZnNpbmZvKFFVRVJZX01PVU5UKS4KCkdv aW5nIHRocm91Z2ggbW91bnRmcyAoInAyIikgaXMgZXZlbiBzbG93ZXIgdGhhbiBnb2luZyB0aHJv dWdoIHByb2NmcywgdGhvdWdoCnRoaXMgcmVhbGx5IG91Z2h0IHRvIGJlIGNvbXBhcmFibGUgdG8g ZnNpbmZvLWJ5LW1vdW50LUlEICgiZjIiKSwgYnV0IHRoZQpsYXR0ZXIgaXMgc29tZXRoaW5nIGxp a2UgNi41eCBmYXN0ZXIuCgpJIHN1c3BlY3QgdGhlIHByb2Nmcy1iYXNlZCBhbmQgbW91bnRmcy1i YXNlZCBhcHByb2FjaGVzIHN1ZmZlciBmcm9tIGNyZWF0aW5nCmxvdHMgb2YgaW5vZGVzLCBkZW50 cmllcyBhbmQgZmlsZSBzdHJ1Y3RzIGFzIHlvdSBhY2Nlc3MgdGhlIGZpbGVzLiAgVGhpcyBhbHNv Cm1lYW5zIHRoYXQgdGhleSB1c2UgbW9yZSBsaXZlIHN0YXRlIG1lbW9yeSAtIGFuZCBJIHRoaW5r IGl0IGxpbmdlcnMgLSBpZiB5b3UKc3RhcnQgdXNpbmcgdGhlbSwgd2hlcmVhcyBmc2luZm8oKSB1 c2VzIG5vbmUgYXQgYWxsLCBiZXlvbmQgd2hhdGV2ZXIgaXMgdXNlZApieSB0aGUgcGF0aHdhbGsg dG8gZmluZCB0aGUgb2JqZWN0IHRvIHF1ZXJ5IChpZiB5b3UgZ28gdGhhdCByb3V0ZSkuCgptb3Vu dGZzIGlzIGdvaW5nIHRvIGJlIHdvcnNlIGFsc28gaWYgeW91IHdhbnQgbW9yZSB0aGFuIG9uZSB2 YWx1ZSBpZiB5b3UKcGVyc2lzdCBpbiBwdXR0aW5nIG9uZSBhdHRyaWJ1dGUgaW4gZWFjaCBmaWxl LgoKRGF2aWQKLS0tCmNvbW1pdCBlZDEwOWVmNDM1MWQ0NGEzZTg4MWU2NTE4YTIwNzQzMTExM2Mx N2MwCkF1dGhvcjogRGF2aWQgSG93ZWxscyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4KRGF0ZTogICBU dWUgTWFyIDMxIDE0OjM5OjA3IDIwMjAgKzAxMDAKCiAgICBQZXJmb3JtYW5jZSB0ZXN0IE1pa2zD s3MncyBwYXRjaCB2cyBmc2luZm8KCmRpZmYgLS1naXQgYS9mcy9NYWtlZmlsZSBiL2ZzL01ha2Vm aWxlCmluZGV4IGI2YmYyNDI0YzdmNy4uYWMwNjI3MTc2ZGIxIDEwMDY0NAotLS0gYS9mcy9NYWtl ZmlsZQorKysgYi9mcy9NYWtlZmlsZQpAQCAtMTM3LDMgKzEzNyw0IEBAIG9iai0kKENPTkZJR19F RklWQVJfRlMpCQkrPSBlZml2YXJmcy8KIG9iai0kKENPTkZJR19FUk9GU19GUykJCSs9IGVyb2Zz Lwogb2JqLSQoQ09ORklHX1ZCT1hTRl9GUykJCSs9IHZib3hzZi8KIG9iai0kKENPTkZJR19aT05F RlNfRlMpCQkrPSB6b25lZnMvCitvYmoteQkJCQkrPSBtb3VudGZzLwpkaWZmIC0tZ2l0IGEvZnMv bW91bnQuaCBiL2ZzL21vdW50LmgKaW5kZXggMDYzZjQxYmMyZTkzLi44OWIwOTFmYzQ4MmYgMTAw NjQ0Ci0tLSBhL2ZzL21vdW50LmgKKysrIGIvZnMvbW91bnQuaApAQCAtODIsNiArODIsNyBAQCBz dHJ1Y3QgbW91bnQgewogCWF0b21pY190IG1udF9zdWJ0cmVlX25vdGlmaWNhdGlvbnM7CS8qIE51 bWJlciBvZiBub3RpZmljYXRpb25zIGluIHN1YnRyZWUgKi8KIAlzdHJ1Y3Qgd2F0Y2hfbGlzdCAq bW50X3dhdGNoZXJzOyAvKiBXYXRjaGVzIG9uIGRlbnRyaWVzIHdpdGhpbiB0aGlzIG1vdW50ICov CiAjZW5kaWYKKwlzdHJ1Y3QgbW91bnRmc19lbnRyeSAqbW50X21vdW50ZnNfZW50cnk7CiB9IF9f cmFuZG9taXplX2xheW91dDsKIAogI2RlZmluZSBNTlRfTlNfSU5URVJOQUwgRVJSX1BUUigtRUlO VkFMKSAvKiBkaXN0aW5jdCBmcm9tIGFueSBtbnRfbmFtZXNwYWNlICovCkBAIC0xNzcsMyArMTc4 LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlfbW91bnQoc3RydWN0IG1vdW50ICp0cmln Z2VyZWQsCiB7CiB9CiAjZW5kaWYKKwordm9pZCBtbnRfbmFtZXNwYWNlX2xvY2tfcmVhZCh2b2lk KTsKK3ZvaWQgbW50X25hbWVzcGFjZV91bmxvY2tfcmVhZCh2b2lkKTsKKwordm9pZCBtb3VudGZz X2NyZWF0ZShzdHJ1Y3QgbW91bnQgKm1udCk7CitleHRlcm4gdm9pZCBtb3VudGZzX3JlbW92ZShz dHJ1Y3QgbW91bnQgKm1udCk7CitpbnQgbW91bnRmc19sb29rdXBfaW50ZXJuYWwoc3RydWN0IHZm c21vdW50ICptLCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CisKZGlmZiAtLWdpdCBhL2ZzL21vdW50ZnMv TWFrZWZpbGUgYi9mcy9tb3VudGZzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMzVhNjVlOWE5NjZmCi0tLSAvZGV2L251bGwKKysrIGIvZnMvbW91bnRm cy9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmoteQkJCQkrPSBzdXBlci5vCmRpZmYgLS1naXQg YS9mcy9tb3VudGZzL3N1cGVyLmMgYi9mcy9tb3VudGZzL3N1cGVyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MmMwMWViNjE1NGQKLS0tIC9kZXYvbnVsbAorKysg Yi9mcy9tb3VudGZzL3N1cGVyLmMKQEAgLTAsMCArMSw1MDIgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKworI2luY2x1ZGUgIi4uL3Bub2RlLmgiCisjaW5jbHVk ZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CisjaW5jbHVkZSA8bGludXgv bnNwcm94eS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzX3N0cnVjdC5oPgorI2luY2x1ZGUgPGxpbnV4 L2ZzX2NvbnRleHQuaD4KKworI2RlZmluZSBNT1VOVEZTX1NVUEVSX01BR0lDIDB4NGU3NTZmNGQK Kworc3RhdGljIERFRklORV9TUElOTE9DSyhtb3VudGZzX2xvY2spOworc3RhdGljIHN0cnVjdCBy Yl9yb290IG1vdW50ZnNfZW50cmllcyA9IFJCX1JPT1Q7CitzdGF0aWMgc3RydWN0IHZmc21vdW50 ICptb3VudGZzX21udCBfX3JlYWRfbW9zdGx5OworCitzdHJ1Y3QgbW91bnRmc19lbnRyeSB7CisJ c3RydWN0IGtyZWYga3JlZjsKKwlzdHJ1Y3QgbW91bnQgKm1udDsKKwlzdHJ1Y3QgcmJfbm9kZSBu b2RlOworCWludCBpZDsKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICptb3VudGZzX2F0dHJzW10g PSB7CisJInJvb3QiLCAibW91bnRwb2ludCIsICJpZCIsICJwYXJlbnQiLCAib3B0aW9ucyIsICJj aGlsZHJlbiIsCisJImdyb3VwIiwgIm1hc3RlciIsICJwcm9wYWdhdGVfZnJvbSIKK307CisKKyNk ZWZpbmUgTU9VTlRGU19JTk8oaWQpICgoKHVuc2lnbmVkIGxvbmcpIGlkICsgMSkgKiBcCisJCQkg KEFSUkFZX1NJWkUobW91bnRmc19hdHRycykgKyAxKSkKKwordm9pZCBtb3VudGZzX2VudHJ5X3Jl bGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCit7CisJa2ZyZWUoY29udGFpbmVyX29mKGtyZWYsIHN0 cnVjdCBtb3VudGZzX2VudHJ5LCBrcmVmKSk7Cit9CisKK3ZvaWQgbW91bnRmc19lbnRyeV9wdXQo c3RydWN0IG1vdW50ZnNfZW50cnkgKmVudHJ5KQoreworCWtyZWZfcHV0KCZlbnRyeS0+a3JlZiwg bW91bnRmc19lbnRyeV9yZWxlYXNlKTsKK30KKworc3RhdGljIGJvb2wgbW91bnRmc19lbnRyeV92 aXNpYmxlKHN0cnVjdCBtb3VudGZzX2VudHJ5ICplbnRyeSkKK3sKKwlzdHJ1Y3QgbW91bnQgKm1u dDsKKwlib29sIHZpc2libGUgPSBmYWxzZTsKKworCXJjdV9yZWFkX2xvY2soKTsKKwltbnQgPSBy Y3VfZGVyZWZlcmVuY2UoZW50cnktPm1udCk7CisJaWYgKG1udCAmJiBtbnQtPm1udF9ucyA9PSBj dXJyZW50LT5uc3Byb3h5LT5tbnRfbnMpCisJCXZpc2libGUgPSB0cnVlOworCXJjdV9yZWFkX3Vu bG9jaygpOworCisJcmV0dXJuIHZpc2libGU7Cit9CitzdGF0aWMgaW50IG1vdW50ZnNfYXR0cl9z aG93KHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpCit7CisJY29uc3QgY2hhciAqbmFtZSA9 IHNmLT5maWxlLT5mX3BhdGguZGVudHJ5LT5kX25hbWUubmFtZTsKKwlzdHJ1Y3QgbW91bnRmc19l bnRyeSAqZW50cnkgPSBzZi0+cHJpdmF0ZTsKKwlzdHJ1Y3QgbW91bnQgKm1udDsKKwlzdHJ1Y3Qg dmZzbW91bnQgKm07CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYjsKKwlzdHJ1Y3QgcGF0aCByb290 OworCWludCB0bXAsIGVyciA9IC1FTk9ERVY7CisKKwltbnRfbmFtZXNwYWNlX2xvY2tfcmVhZCgp OworCisJbW50ID0gZW50cnktPm1udDsKKwlpZiAoIW1udCB8fCAhbW50LT5tbnRfbnMpCisJCWdv dG8gb3V0OworCisJZXJyID0gMDsKKwltID0gJm1udC0+bW50OworCXNiID0gbS0+bW50X3NiOwor CisJaWYgKHN0cmNtcChuYW1lLCAicm9vdCIpID09IDApIHsKKwkJaWYgKHNiLT5zX29wLT5zaG93 X3BhdGgpIHsKKwkJCWVyciA9IHNiLT5zX29wLT5zaG93X3BhdGgoc2YsIG0tPm1udF9yb290KTsK KwkJfSBlbHNlIHsKKwkJCXNlcV9kZW50cnkoc2YsIG0tPm1udF9yb290LCAiIFx0XG5cXCIpOwor CQl9CisJCXNlcV9wdXRjKHNmLCAnXG4nKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW91 bnRwb2ludCIpID09IDApIHsKKwkJc3RydWN0IHBhdGggbW50X3BhdGggPSB7IC5kZW50cnkgPSBt LT5tbnRfcm9vdCwgLm1udCA9IG0gfTsKKworCQlnZXRfZnNfcm9vdChjdXJyZW50LT5mcywgJnJv b3QpOworCQllcnIgPSBzZXFfcGF0aF9yb290KHNmLCAmbW50X3BhdGgsICZyb290LCAiIFx0XG5c XCIpOworCQlpZiAoZXJyID09IFNFUV9TS0lQKSB7CisJCQlzZXFfcHV0cyhzZiwgIih1bnJlYWNo YWJsZSkiKTsKKwkJCWVyciA9IDA7CisJCX0KKwkJc2VxX3B1dGMoc2YsICdcbicpOworCQlwYXRo X3B1dCgmcm9vdCk7CisJfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImlkIikgPT0gMCkgeworCQlz ZXFfcHJpbnRmKHNmLCAiJWlcbiIsIG1udC0+bW50X2lkKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChu YW1lLCAicGFyZW50IikgPT0gMCkgeworCQl0bXAgPSByY3VfZGVyZWZlcmVuY2UobW50LT5tbnRf cGFyZW50KS0+bW50X2lkOworCQlzZXFfcHJpbnRmKHNmLCAiJWlcbiIsIHRtcCk7CisJfSBlbHNl IGlmIChzdHJjbXAobmFtZSwgIm9wdGlvbnMiKSA9PSAwKSB7CisJCWludCBtbnRfZmxhZ3MgPSBS RUFEX09OQ0UobS0+bW50X2ZsYWdzKTsKKworCQlzZXFfcHV0cyhzZiwgbW50X2ZsYWdzICYgTU5U X1JFQURPTkxZID8gInJvIiA6ICJydyIpOworCQlzZXFfbW50X29wdHMoc2YsIG1udF9mbGFncyk7 CisJCXNlcV9wdXRjKHNmLCAnXG4nKTsKKwl9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiY2hpbGRy ZW4iKSA9PSAwKSB7CisJCXN0cnVjdCBtb3VudCAqY2hpbGQ7CisJCWJvb2wgZmlyc3QgPSB0cnVl OworCisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZtbnQtPm1udF9tb3VudHMsIG1udF9j aGlsZCkgeworCQkJaWYgKCFmaXJzdCkKKwkJCQlzZXFfcHV0YyhzZiwgJywnKTsKKwkJCWVsc2UK KwkJCQlmaXJzdCA9IGZhbHNlOworCQkJc2VxX3ByaW50ZihzZiwgIiVpIiwgY2hpbGQtPm1udF9p ZCk7CisJCX0KKwkJaWYgKCFmaXJzdCkKKwkJCXNlcV9wdXRjKHNmLCAnXG4nKTsKKwl9IGVsc2Ug aWYgKHN0cmNtcChuYW1lLCAiZ3JvdXAiKSA9PSAwKSB7CisJCWlmIChJU19NTlRfU0hBUkVEKG1u dCkpCisJCQlzZXFfcHJpbnRmKHNmLCAiJWlcbiIsIG1udC0+bW50X2dyb3VwX2lkKTsKKwl9IGVs c2UgaWYgKHN0cmNtcChuYW1lLCAibWFzdGVyIikgPT0gMCkgeworCQlpZiAoSVNfTU5UX1NMQVZF KG1udCkpIHsKKwkJCXRtcCA9IHJjdV9kZXJlZmVyZW5jZShtbnQtPm1udF9tYXN0ZXIpLT5tbnRf Z3JvdXBfaWQ7CisJCQlzZXFfcHJpbnRmKHNmLCAiJWlcbiIsIHRtcCk7CisJCX0KKwl9IGVsc2Ug aWYgKHN0cmNtcChuYW1lLCAicHJvcGFnYXRlX2Zyb20iKSA9PSAwKSB7CisJCWlmIChJU19NTlRf U0xBVkUobW50KSkgeworCQkJZ2V0X2ZzX3Jvb3QoY3VycmVudC0+ZnMsICZyb290KTsKKwkJCXRt cCA9IGdldF9kb21pbmF0aW5nX2lkKG1udCwgJnJvb3QpOworCQkJaWYgKHRtcCkKKwkJCQlzZXFf cHJpbnRmKHNmLCAiJWlcbiIsIHRtcCk7CisJCX0KKwl9IGVsc2UgeworCQlXQVJOX09OKDEpOwor CQllcnIgPSAtRUlPOworCX0KK291dDoKKwltbnRfbmFtZXNwYWNlX3VubG9ja19yZWFkKCk7CisK KwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IG1vdW50ZnNfYXR0cl9vcGVuKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXJldHVybiBzaW5nbGVfb3Blbihm aWxlLCBtb3VudGZzX2F0dHJfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1vdW50ZnNfYXR0cl9mb3BzID0geworCS5vcGVu CQk9IG1vdW50ZnNfYXR0cl9vcGVuLAorCS5yZWFkCQk9IHNlcV9yZWFkLAorCS5sbHNlZWsJCT0g c2VxX2xzZWVrLAorCS5yZWxlYXNlCT0gc2luZ2xlX3JlbGVhc2UsCit9OworCitzdGF0aWMgc3Ry dWN0IG1vdW50ZnNfZW50cnkgKm1vdW50ZnNfbm9kZV90b19lbnRyeShzdHJ1Y3QgcmJfbm9kZSAq bm9kZSkKK3sKKwlyZXR1cm4gcmJfZW50cnkobm9kZSwgc3RydWN0IG1vdW50ZnNfZW50cnksIG5v ZGUpOworfQorCitzdGF0aWMgc3RydWN0IHJiX25vZGUgKiptb3VudGZzX2ZpbmRfbm9kZShpbnQg aWQsIHN0cnVjdCByYl9ub2RlICoqcGFyZW50KQoreworCXN0cnVjdCByYl9ub2RlICoqbGluayA9 ICZtb3VudGZzX2VudHJpZXMucmJfbm9kZTsKKworCSpwYXJlbnQgPSBOVUxMOworCXdoaWxlICgq bGluaykgeworCQlzdHJ1Y3QgbW91bnRmc19lbnRyeSAqZW50cnkgPSBtb3VudGZzX25vZGVfdG9f ZW50cnkoKmxpbmspOworCisJCSpwYXJlbnQgPSAqbGluazsKKwkJaWYgKGlkIDwgZW50cnktPmlk KQorCQkJbGluayA9ICZlbnRyeS0+bm9kZS5yYl9sZWZ0OworCQllbHNlIGlmIChpZCA+IGVudHJ5 LT5pZCkKKwkJCWxpbmsgPSAmZW50cnktPm5vZGUucmJfcmlnaHQ7CisJCWVsc2UKKwkJCWJyZWFr OworCX0KKwlyZXR1cm4gbGluazsKK30KKwordm9pZCBtb3VudGZzX2NyZWF0ZShzdHJ1Y3QgbW91 bnQgKm1udCkKK3sKKwlzdHJ1Y3QgbW91bnRmc19lbnRyeSAqZW50cnk7CisJc3RydWN0IHJiX25v ZGUgKipsaW5rLCAqcGFyZW50OworCisJZW50cnkgPSBremFsbG9jKHNpemVvZigqZW50cnkpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWVudHJ5KSB7CisJCVdBUk4oMSwgImZhaWxlZCB0byBhbGxvY2F0 ZSBtb3VudGZzIGVudHJ5Iik7CisJCXJldHVybjsKKwl9CisJa3JlZl9pbml0KCZlbnRyeS0+a3Jl Zik7CisJZW50cnktPm1udCA9IG1udDsKKwllbnRyeS0+aWQgPSBtbnQtPm1udF9pZDsKKworCXNw aW5fbG9jaygmbW91bnRmc19sb2NrKTsKKwlsaW5rID0gbW91bnRmc19maW5kX25vZGUoZW50cnkt PmlkLCAmcGFyZW50KTsKKwlpZiAoIVdBUk5fT04oKmxpbmspKSB7CisJCXJiX2xpbmtfbm9kZSgm ZW50cnktPm5vZGUsIHBhcmVudCwgbGluayk7CisJCXJiX2luc2VydF9jb2xvcigmZW50cnktPm5v ZGUsICZtb3VudGZzX2VudHJpZXMpOworCQltbnQtPm1udF9tb3VudGZzX2VudHJ5ID0gZW50cnk7 CisJfSBlbHNlIHsKKwkJa2ZyZWUoZW50cnkpOworCX0KKwlzcGluX3VubG9jaygmbW91bnRmc19s b2NrKTsKK30KKwordm9pZCBtb3VudGZzX3JlbW92ZShzdHJ1Y3QgbW91bnQgKm1udCkKK3sKKwlz dHJ1Y3QgbW91bnRmc19lbnRyeSAqZW50cnkgPSBtbnQtPm1udF9tb3VudGZzX2VudHJ5OworCisJ aWYgKCFlbnRyeSkKKwkJcmV0dXJuOworCXNwaW5fbG9jaygmbW91bnRmc19sb2NrKTsKKwllbnRy eS0+bW50ID0gTlVMTDsKKwlyYl9lcmFzZSgmZW50cnktPm5vZGUsICZtb3VudGZzX2VudHJpZXMp OworCXNwaW5fdW5sb2NrKCZtb3VudGZzX2xvY2spOworCisJbW91bnRmc19lbnRyeV9wdXQoZW50 cnkpOworCisJbW50LT5tbnRfbW91bnRmc19lbnRyeSA9IE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgbW91bnRmc19lbnRyeSAqbW91bnRmc19nZXRfZW50cnkoY29uc3QgY2hhciAqbmFtZSkKK3sK KwlzdHJ1Y3QgbW91bnRmc19lbnRyeSAqZW50cnkgPSBOVUxMOworCXN0cnVjdCByYl9ub2RlICoq bGluaywgKmR1bW15OworCXVuc2lnbmVkIGxvbmcgbW50X2lkOworCWNoYXIgYnVmWzMyXTsKKwlp bnQgcmV0OworCisJcmV0ID0ga3N0cnRvdWwobmFtZSwgMTAsICZtbnRfaWQpOworCWlmIChyZXQg fHwgbW50X2lkID4gSU5UX01BWCkKKwkJcmV0dXJuIE5VTEw7CisKKwlzbnByaW50ZihidWYsIHNp emVvZihidWYpLCAiJWx1IiwgbW50X2lkKTsKKwlpZiAoc3RyY21wKGJ1ZiwgbmFtZSkgIT0gMCkK KwkJcmV0dXJuIE5VTEw7CisKKwlzcGluX2xvY2soJm1vdW50ZnNfbG9jayk7CisJbGluayA9IG1v dW50ZnNfZmluZF9ub2RlKG1udF9pZCwgJmR1bW15KTsKKwlpZiAoKmxpbmspIHsKKwkJZW50cnkg PSBtb3VudGZzX25vZGVfdG9fZW50cnkoKmxpbmspOworCQlpZiAoIW1vdW50ZnNfZW50cnlfdmlz aWJsZShlbnRyeSkpCisJCQllbnRyeSA9IE5VTEw7CisJCWVsc2UKKwkJCWtyZWZfZ2V0KCZlbnRy eS0+a3JlZik7CisJfQorCXNwaW5fdW5sb2NrKCZtb3VudGZzX2xvY2spOworCisJcmV0dXJuIGVu dHJ5OworfQorCitzdGF0aWMgdm9pZCBtb3VudGZzX2luaXRfaW5vZGUoc3RydWN0IGlub2RlICpp bm9kZSwgdW1vZGVfdCBtb2RlKTsKKworc3RhdGljIHN0cnVjdCBkZW50cnkgKm1vdW50ZnNfbG9v a3VwX2VudHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKKwkJCQkJICAgc3RydWN0IG1vdW50ZnNf ZW50cnkgKmVudHJ5LAorCQkJCQkgICBpbnQgaWR4KQoreworCXN0cnVjdCBpbm9kZSAqaW5vZGU7 CisKKwlpbm9kZSA9IG5ld19pbm9kZShkZW50cnktPmRfc2IpOworCWlmICghaW5vZGUpIHsKKwkJ bW91bnRmc19lbnRyeV9wdXQoZW50cnkpOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9 CisJaW5vZGUtPmlfcHJpdmF0ZSA9IGVudHJ5OworCWlub2RlLT5pX2lubyA9IE1PVU5URlNfSU5P KGVudHJ5LT5pZCkgKyBpZHg7CisJbW91bnRmc19pbml0X2lub2RlKGlub2RlLCBpZHggPyBTX0lG UkVHIHwgMDQ0NCA6IFNfSUZESVIgfCAwNTU1KTsKKwlyZXR1cm4gZF9zcGxpY2VfYWxpYXMoaW5v ZGUsIGRlbnRyeSk7CisKK30KKworc3RhdGljIHN0cnVjdCBkZW50cnkgKm1vdW50ZnNfbG9va3Vw KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCisJCQkJICAgICB1bnNp Z25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IG1vdW50ZnNfZW50cnkgKmVudHJ5ID0gZGlyLT5p X3ByaXZhdGU7CisJaW50IGkgPSAwOworCisJaWYgKGVudHJ5KSB7CisJCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKG1vdW50ZnNfYXR0cnMpOyBpKyspCisJCQlpZiAoc3RyY21wKG1vdW50ZnNf YXR0cnNbaV0sIGRlbnRyeS0+ZF9uYW1lLm5hbWUpID09IDApCisJCQkJYnJlYWs7CisJCWlmIChp ID09IEFSUkFZX1NJWkUobW91bnRmc19hdHRycykpCisJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKKwkJaSsrOworCQlrcmVmX2dldCgmZW50cnktPmtyZWYpOworCX0gZWxzZSB7CisJCWVudHJ5 ID0gbW91bnRmc19nZXRfZW50cnkoZGVudHJ5LT5kX25hbWUubmFtZSk7CisJCWlmICghZW50cnkp CisJCQlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKKwl9CisKKwlyZXR1cm4gbW91bnRmc19sb29r dXBfZW50cnkoZGVudHJ5LCBlbnRyeSwgaSk7Cit9CisKK3N0YXRpYyBpbnQgbW91bnRmc19kX3Jl dmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJ c3RydWN0IG1vdW50ZnNfZW50cnkgKmVudHJ5ID0gZGVudHJ5LT5kX2lub2RlLT5pX3ByaXZhdGU7 CisKKwkvKiByb290OiB2YWxpZCAqLworCWlmICghZW50cnkpCisJCXJldHVybiAxOworCisJLyog cmVtb3ZlZDogaW52YWxpZCAqLworCWlmICghZW50cnktPm1udCkKKwkJcmV0dXJuIDA7CisKKwkv KiBhdHRyaWJ1dGUgb3IgdmlzaWJsZSBpbiB0aGlzIG5hbWVzcGFjZTogdmFsaWQgKi8KKwlpZiAo IWRfY2FuX2xvb2t1cChkZW50cnkpIHx8IG1vdW50ZnNfZW50cnlfdmlzaWJsZShlbnRyeSkpCisJ CXJldHVybiAxOworCisJLyogaW52bGlzaWJsZSBpbiB0aGlzIG5hbWVzcGFjZTogdmFsaWQgYnV0 IGRlbnkgZW50cnkqLworCXJldHVybiAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IG1vdW50ZnNf cmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpCit7CisJ c3RydWN0IHJiX25vZGUgKm5vZGU7CisJc3RydWN0IG1vdW50ZnNfZW50cnkgKmVudHJ5ID0gZmls ZV9pbm9kZShmaWxlKS0+aV9wcml2YXRlOworCWNoYXIgbmFtZVszMl07CisJY29uc3QgY2hhciAq czsKKwl1bnNpZ25lZCBpbnQgbGVuLCBwb3MsIGlkOworCisJaWYgKGN0eC0+cG9zIC0gMiA+IElO VF9NQVggfHwgIWRpcl9lbWl0X2RvdHMoZmlsZSwgY3R4KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAo ZW50cnkpIHsKKwkJd2hpbGUgKGN0eC0+cG9zIC0gMiA8IEFSUkFZX1NJWkUobW91bnRmc19hdHRy cykpIHsKKwkJCXMgPSBtb3VudGZzX2F0dHJzW2N0eC0+cG9zIC0gMl07CisJCQlpZiAoIWRpcl9l bWl0KGN0eCwgcywgc3RybGVuKHMpLAorCQkJCSAgICAgIE1PVU5URlNfSU5PKGVudHJ5LT5pZCkg KyBjdHgtPnBvcywKKwkJCQkgICAgICBEVF9SRUcpKQorCQkJCWJyZWFrOworCQkJY3R4LT5wb3Mr KzsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlwb3MgPSBjdHgtPnBvcyAtIDI7CisJZG8gewor CQlzcGluX2xvY2soJm1vdW50ZnNfbG9jayk7CisJCW1vdW50ZnNfZmluZF9ub2RlKHBvcywgJm5v ZGUpOworCQlwb3MgPSAxVSArIElOVF9NQVg7CisJCWRvIHsKKwkJCWlmICghbm9kZSkgeworCQkJ CXNwaW5fdW5sb2NrKCZtb3VudGZzX2xvY2spOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJZW50 cnkgPSBtb3VudGZzX25vZGVfdG9fZW50cnkobm9kZSk7CisJCQlub2RlID0gcmJfbmV4dChub2Rl KTsKKwkJfSB3aGlsZSAoIW1vdW50ZnNfZW50cnlfdmlzaWJsZShlbnRyeSkpOworCQlpZiAobm9k ZSkKKwkJCXBvcyA9IG1vdW50ZnNfbm9kZV90b19lbnRyeShub2RlKS0+aWQ7CisJCWlkID0gZW50 cnktPmlkOworCQlzcGluX3VubG9jaygmbW91bnRmc19sb2NrKTsKKworCQlsZW4gPSBzbnByaW50 ZihuYW1lLCBzaXplb2YobmFtZSksICIlaSIsIGlkKTsKKwkJY3R4LT5wb3MgPSBpZCArIDI7CisJ CWlmICghZGlyX2VtaXQoY3R4LCBuYW1lLCBsZW4sIE1PVU5URlNfSU5PKGlkKSwgRFRfRElSKSkK KwkJCXJldHVybiAwOworCX0gd2hpbGUgKHBvcyA8PSBJTlRfTUFYKTsKK291dDoKKwljdHgtPnBv cyA9ICBwb3MgKyAyOworCXJldHVybiAwOworfQorCitpbnQgbW91bnRmc19sb29rdXBfaW50ZXJu YWwoc3RydWN0IHZmc21vdW50ICptLCBzdHJ1Y3QgcGF0aCAqcGF0aCkKK3sKKwljaGFyIG5hbWVb MzJdOworCXN0cnVjdCBxc3RyIHRoaXMgPSB7IC5uYW1lID0gbmFtZSB9OworCXN0cnVjdCBtb3Vu dCAqbW50ID0gcmVhbF9tb3VudChtKTsKKwlzdHJ1Y3QgbW91bnRmc19lbnRyeSAqZW50cnkgPSBt bnQtPm1udF9tb3VudGZzX2VudHJ5OworCXN0cnVjdCBkZW50cnkgKmRlbnRyeSwgKm9sZCwgKnJv b3QgPSBtb3VudGZzX21udC0+bW50X3Jvb3Q7CisKKwl0aGlzLmxlbiA9IHNucHJpbnRmKG5hbWUs IHNpemVvZihuYW1lKSwgIiVpIiwgbW50LT5tbnRfaWQpOworCWRlbnRyeSA9IGRfaGFzaF9hbmRf bG9va3VwKHJvb3QsICZ0aGlzKTsKKwlpZiAoZGVudHJ5ICYmIGRlbnRyeS0+ZF9pbm9kZS0+aV9w cml2YXRlICE9IGVudHJ5KSB7CisJCWRfaW52YWxpZGF0ZShkZW50cnkpOworCQlkcHV0KGRlbnRy eSk7CisJCWRlbnRyeSA9IE5VTEw7CisJfQorCWlmICghZGVudHJ5KSB7CisJCWRlbnRyeSA9IGRf YWxsb2Mocm9vdCwgJnRoaXMpOworCQlpZiAoIWRlbnRyeSkKKwkJCXJldHVybiAtRU5PTUVNOwor CisJCWtyZWZfZ2V0KCZlbnRyeS0+a3JlZik7CisJCW9sZCA9IG1vdW50ZnNfbG9va3VwX2VudHJ5 KGRlbnRyeSwgZW50cnksIDApOworCQlpZiAob2xkKSB7CisJCQlkcHV0KGRlbnRyeSk7CisJCQlp ZiAoSVNfRVJSKG9sZCkpCisJCQkJcmV0dXJuIFBUUl9FUlIob2xkKTsKKwkJCWRlbnRyeSA9IG9s ZDsKKwkJfQorCX0KKworCSpwYXRoID0gKHN0cnVjdCBwYXRoKSB7IC5tbnQgPSBtb3VudGZzX21u dCwgLmRlbnRyeSA9IGRlbnRyeSB9OworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRlbnRyeV9vcGVyYXRpb25zIG1vdW50ZnNfZG9wcyA9IHsKKwkuZF9yZXZhbGlkYXRlID0g bW91bnRmc19kX3JldmFsaWRhdGUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29w ZXJhdGlvbnMgbW91bnRmc19pb3BzID0geworCS5sb29rdXAgPSBtb3VudGZzX2xvb2t1cCwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1vdW50ZnNfZm9wcyA9IHsK KwkuaXRlcmF0ZV9zaGFyZWQgPSBtb3VudGZzX3JlYWRkaXIsCisJLnJlYWQgPSBnZW5lcmljX3Jl YWRfZGlyLAorCS5sbHNlZWsgPSBnZW5lcmljX2ZpbGVfbGxzZWVrLAorfTsKKworc3RhdGljIHZv aWQgbW91bnRmc19pbml0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVtb2RlX3QgbW9kZSkK K3sKKwlpbm9kZS0+aV9tb2RlID0gbW9kZTsKKwlpbm9kZS0+aV9hdGltZSA9IGlub2RlLT5pX210 aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50X3RpbWUoaW5vZGUpOworCWlmIChTX0lTUkVH KG1vZGUpKSB7CisJCWlub2RlLT5pX3NpemUgPSBQQUdFX1NJWkU7CisJCWlub2RlLT5pX2ZvcCA9 ICZtb3VudGZzX2F0dHJfZm9wczsKKwl9IGVsc2UgeworCQlpbm9kZS0+aV9vcCA9ICZtb3VudGZz X2lvcHM7CisJCWlub2RlLT5pX2ZvcCA9ICZtb3VudGZzX2ZvcHM7CisJfQorfQorCitzdGF0aWMg dm9pZCBtb3VudGZzX2V2aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCit7CisJc3RydWN0 IG1vdW50ZnNfZW50cnkgKmVudHJ5ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCWNsZWFyX2lub2Rl KGlub2RlKTsKKwlpZiAoZW50cnkpCisJCW1vdW50ZnNfZW50cnlfcHV0KGVudHJ5KTsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIG1vdW50ZnNfc29wcyA9IHsKKwku c3RhdGZzCQk9IHNpbXBsZV9zdGF0ZnMsCisJLmRyb3BfaW5vZGUJPSBnZW5lcmljX2RlbGV0ZV9p bm9kZSwKKwkuZXZpY3RfaW5vZGUJPSBtb3VudGZzX2V2aWN0X2lub2RlLAorfTsKKworc3RhdGlj IGludCBtb3VudGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZz X2NvbnRleHQgKmZjKQoreworCXN0cnVjdCBpbm9kZSAqcm9vdDsKKworCXNiLT5zX2lmbGFncyB8 PSBTQl9JX05PRVhFQyB8IFNCX0lfTk9ERVY7CisJc2ItPnNfYmxvY2tzaXplID0gUEFHRV9TSVpF OworCXNiLT5zX2Jsb2Nrc2l6ZV9iaXRzID0gUEFHRV9TSElGVDsKKwlzYi0+c19tYWdpYyA9IE1P VU5URlNfU1VQRVJfTUFHSUM7CisJc2ItPnNfdGltZV9ncmFuID0gMTsKKwlzYi0+c19zaHJpbmsu c2Vla3MgPSAwOworCXNiLT5zX29wID0gJm1vdW50ZnNfc29wczsKKwlzYi0+c19kX29wID0gJm1v dW50ZnNfZG9wczsKKworCXJvb3QgPSBuZXdfaW5vZGUoc2IpOworCWlmICghcm9vdCkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlyb290LT5pX2lubyA9IDE7CisJbW91bnRmc19pbml0X2lub2RlKHJv b3QsIFNfSUZESVIgfCAwNDQ0KTsKKworCXNiLT5zX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290KTsK KwlpZiAoIXNiLT5zX3Jvb3QpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgbW91bnRmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCit7CisJ cmV0dXJuIGdldF90cmVlX3NpbmdsZShmYywgbW91bnRmc19maWxsX3N1cGVyKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgbW91bnRmc19jb250ZXh0X29w cyA9IHsKKwkuZ2V0X3RyZWUgPSBtb3VudGZzX2dldF90cmVlLAorfTsKKworc3RhdGljIGludCBt b3VudGZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCit7CisJZmMtPm9w cyA9ICZtb3VudGZzX2NvbnRleHRfb3BzOworCWZjLT5nbG9iYWwgPSB0cnVlOworCXJldHVybiAw OworfQorCitzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgbW91bnRmc19mc190eXBlID0g eworCS5uYW1lID0gIm1vdW50ZnMiLAorCS5pbml0X2ZzX2NvbnRleHQgPSBtb3VudGZzX2luaXRf ZnNfY29udGV4dCwKKwkua2lsbF9zYiA9IGtpbGxfYW5vbl9zdXBlciwKK307CisKK3N0YXRpYyBp bnQgX19pbml0IG1vdW50ZnNfaW5pdCh2b2lkKQoreworCWludCBlcnI7CisKKwllcnIgPSByZWdp c3Rlcl9maWxlc3lzdGVtKCZtb3VudGZzX2ZzX3R5cGUpOworCWlmICghZXJyKSB7CisJCW1vdW50 ZnNfbW50ID0ga2Vybl9tb3VudCgmbW91bnRmc19mc190eXBlKTsKKwkJaWYgKElTX0VSUihtb3Vu dGZzX21udCkpIHsKKwkJCWVyciA9IFBUUl9FUlIobW91bnRmc19tbnQpOworCQkJdW5yZWdpc3Rl cl9maWxlc3lzdGVtKCZtb3VudGZzX2ZzX3R5cGUpOworCQl9CisJfQorCXJldHVybiBlcnI7Cit9 Citmc19pbml0Y2FsbChtb3VudGZzX2luaXQpOwpkaWZmIC0tZ2l0IGEvZnMvbmFtZXNwYWNlLmMg Yi9mcy9uYW1lc3BhY2UuYwppbmRleCA1NDI3ZTczMmMxYmYuLmEwNWEyODg1YTkwZSAxMDA2NDQK LS0tIGEvZnMvbmFtZXNwYWNlLmMKKysrIGIvZnMvbmFtZXNwYWNlLmMKQEAgLTk2Miw2ICs5NjIs OCBAQCBzdHJ1Y3QgdmZzbW91bnQgKnZmc19jcmVhdGVfbW91bnQoc3RydWN0IGZzX2NvbnRleHQg KmZjKQogCiAJaWYgKGZjLT5zYl9mbGFncyAmIFNCX0tFUk5NT1VOVCkKIAkJbW50LT5tbnQubW50 X2ZsYWdzID0gTU5UX0lOVEVSTkFMOworCWVsc2UKKwkJbW91bnRmc19jcmVhdGUobW50KTsKIAog CWF0b21pY19pbmMoJmZjLT5yb290LT5kX3NiLT5zX2FjdGl2ZSk7CiAJbW50LT5tbnQubW50X3Ni CQk9IGZjLT5yb290LT5kX3NiOwpAQCAtMTAzMyw3ICsxMDM1LDcgQEAgdmZzX3N1Ym1vdW50KGNv bnN0IHN0cnVjdCBkZW50cnkgKm1vdW50cG9pbnQsIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICp0 eXBlLAogfQogRVhQT1JUX1NZTUJPTF9HUEwodmZzX3N1Ym1vdW50KTsKIAotc3RhdGljIHN0cnVj dCBtb3VudCAqY2xvbmVfbW50KHN0cnVjdCBtb3VudCAqb2xkLCBzdHJ1Y3QgZGVudHJ5ICpyb290 LAorc3RhdGljIHN0cnVjdCBtb3VudCAqY2xvbmVfbW50X2NvbW1vbihzdHJ1Y3QgbW91bnQgKm9s ZCwgc3RydWN0IGRlbnRyeSAqcm9vdCwKIAkJCQkJaW50IGZsYWcpCiB7CiAJc3RydWN0IHN1cGVy X2Jsb2NrICpzYiA9IG9sZC0+bW50Lm1udF9zYjsKQEAgLTExMDAsNiArMTEwMiwxNyBAQCBzdGF0 aWMgc3RydWN0IG1vdW50ICpjbG9uZV9tbnQoc3RydWN0IG1vdW50ICpvbGQsIHN0cnVjdCBkZW50 cnkgKnJvb3QsCiAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAorc3RhdGljIHN0cnVjdCBtb3Vu dCAqY2xvbmVfbW50KHN0cnVjdCBtb3VudCAqb2xkLCBzdHJ1Y3QgZGVudHJ5ICpyb290LAorCQkJ ICAgICAgIGludCBmbGFnKQoreworCXN0cnVjdCBtb3VudCAqbW50ID0gY2xvbmVfbW50X2NvbW1v bihvbGQsIHJvb3QsIGZsYWcpOworCisJaWYgKCFJU19FUlIobW50KSkKKwkJbW91bnRmc19jcmVh dGUobW50KTsKKworCXJldHVybiBtbnQ7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFudXBfbW50KHN0 cnVjdCBtb3VudCAqbW50KQogewogCXN0cnVjdCBobGlzdF9ub2RlICpwOwpAQCAtMTExMiw2ICsx MTI1LDcgQEAgc3RhdGljIHZvaWQgY2xlYW51cF9tbnQoc3RydWN0IG1vdW50ICptbnQpCiAJICog c28gbW50X2dldF93cml0ZXJzKCkgYmVsb3cgaXMgc2FmZS4KIAkgKi8KIAlXQVJOX09OKG1udF9n ZXRfd3JpdGVycyhtbnQpKTsKKwogCWlmICh1bmxpa2VseShtbnQtPm1udF9waW5zLmZpcnN0KSkK IAkJbW50X3Bpbl9raWxsKG1udCk7CiAJaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtLCBwLCAm bW50LT5tbnRfc3R1Y2tfY2hpbGRyZW4sIG1udF91bW91bnQpIHsKQEAgLTExOTcsNiArMTIxMSw4 IEBAIHN0YXRpYyB2b2lkIG1udHB1dF9ub19leHBpcmUoc3RydWN0IG1vdW50ICptbnQpCiAJdW5s b2NrX21vdW50X2hhc2goKTsKIAlzaHJpbmtfZGVudHJ5X2xpc3QoJmxpc3QpOwogCisJbW91bnRm c19yZW1vdmUobW50KTsKKwogCWlmIChsaWtlbHkoIShtbnQtPm1udC5tbnRfZmxhZ3MgJiBNTlRf SU5URVJOQUwpKSkgewogCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBjdXJyZW50OwogCQlp ZiAobGlrZWx5KCEodGFzay0+ZmxhZ3MgJiBQRl9LVEhSRUFEKSkpIHsKQEAgLTEyNjMsMTMgKzEy NzksMTQgQEAgRVhQT1JUX1NZTUJPTChwYXRoX2lzX21vdW50cG9pbnQpOwogc3RydWN0IHZmc21v dW50ICptbnRfY2xvbmVfaW50ZXJuYWwoY29uc3Qgc3RydWN0IHBhdGggKnBhdGgpCiB7CiAJc3Ry dWN0IG1vdW50ICpwOwotCXAgPSBjbG9uZV9tbnQocmVhbF9tb3VudChwYXRoLT5tbnQpLCBwYXRo LT5kZW50cnksIENMX1BSSVZBVEUpOworCXAgPSBjbG9uZV9tbnRfY29tbW9uKHJlYWxfbW91bnQo cGF0aC0+bW50KSwgcGF0aC0+ZGVudHJ5LCBDTF9QUklWQVRFKTsKIAlpZiAoSVNfRVJSKHApKQog CQlyZXR1cm4gRVJSX0NBU1QocCk7CiAJcC0+bW50Lm1udF9mbGFncyB8PSBNTlRfSU5URVJOQUw7 CiAJcmV0dXJuICZwLT5tbnQ7CiB9CiAKKwogI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAvKiBpdGVy YXRvcjsgd2Ugd2FudCBpdCB0byBoYXZlIGFjY2VzcyB0byBuYW1lc3BhY2Vfc2VtLCB0aHVzIGhl cmUuLi4gKi8KIHN0YXRpYyB2b2lkICptX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90 ICpwb3MpCkBAIC0xNDExLDYgKzE0MjgsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIG5hbWVzcGFj ZV9sb2NrKHZvaWQpCiAJZG93bl93cml0ZSgmbmFtZXNwYWNlX3NlbSk7CiB9CiAKK3ZvaWQgbW50 X25hbWVzcGFjZV9sb2NrX3JlYWQodm9pZCkKK3sKKwlkb3duX3JlYWQoJm5hbWVzcGFjZV9zZW0p OworfQorCit2b2lkIG1udF9uYW1lc3BhY2VfdW5sb2NrX3JlYWQodm9pZCkKK3sKKwl1cF9yZWFk KCZuYW1lc3BhY2Vfc2VtKTsKK30KKwogZW51bSB1bW91bnRfdHJlZV9mbGFncyB7CiAJVU1PVU5U X1NZTkMgPSAxLAogCVVNT1VOVF9QUk9QQUdBVEUgPSAyLApkaWZmIC0tZ2l0IGEvZnMvcHJvYy9i YXNlLmMgYi9mcy9wcm9jL2Jhc2UuYwppbmRleCBjN2M2NDI3MmIwZmEuLjA0NzdmOGI1MTE4MiAx MDA2NDQKLS0tIGEvZnMvcHJvYy9iYXNlLmMKKysrIGIvZnMvcHJvYy9iYXNlLmMKQEAgLTMwOTIs NiArMzA5Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVm ZltdID0gewogCURJUigiZmQiLCAgICAgICAgIFNfSVJVU1J8U19JWFVTUiwgcHJvY19mZF9pbm9k ZV9vcGVyYXRpb25zLCBwcm9jX2ZkX29wZXJhdGlvbnMpLAogCURJUigibWFwX2ZpbGVzIiwgIFNf SVJVU1J8U19JWFVTUiwgcHJvY19tYXBfZmlsZXNfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19tYXBf ZmlsZXNfb3BlcmF0aW9ucyksCiAJRElSKCJmZGluZm8iLCAgICAgU19JUlVTUnxTX0lYVVNSLCBw cm9jX2ZkaW5mb19pbm9kZV9vcGVyYXRpb25zLCBwcm9jX2ZkaW5mb19vcGVyYXRpb25zKSwKKwlE SVIoImZkbW91bnQiLCAgICBTX0lSVVNSfFNfSVhVU1IsIHByb2NfZmRtb3VudF9pbm9kZV9vcGVy YXRpb25zLCBwcm9jX2ZkbW91bnRfb3BlcmF0aW9ucyksCiAJRElSKCJucyIsCSAgU19JUlVTUnxT X0lYVUdPLCBwcm9jX25zX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25zX2Rpcl9vcGVyYXRp b25zKSwKICNpZmRlZiBDT05GSUdfTkVUCiAJRElSKCJuZXQiLCAgICAgICAgU19JUlVHT3xTX0lY VUdPLCBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25ldF9vcGVyYXRpb25zKSwKQEAg LTM0OTcsNiArMzQ5OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBw cm9jX3RpZF9jb21tX2lub2RlX29wZXJhdGlvbnMgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IHBp ZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0gewogCURJUigiZmQiLCAgICAgICAgU19JUlVTUnxT X0lYVVNSLCBwcm9jX2ZkX2lub2RlX29wZXJhdGlvbnMsIHByb2NfZmRfb3BlcmF0aW9ucyksCiAJ RElSKCJmZGluZm8iLCAgICBTX0lSVVNSfFNfSVhVU1IsIHByb2NfZmRpbmZvX2lub2RlX29wZXJh dGlvbnMsIHByb2NfZmRpbmZvX29wZXJhdGlvbnMpLAorCURJUigiZmRtb3VudCIsICAgU19JUlVT UnxTX0lYVVNSLCBwcm9jX2ZkbW91bnRfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19mZG1vdW50X29w ZXJhdGlvbnMpLAogCURJUigibnMiLAkgU19JUlVTUnxTX0lYVUdPLCBwcm9jX25zX2Rpcl9pbm9k ZV9vcGVyYXRpb25zLCBwcm9jX25zX2Rpcl9vcGVyYXRpb25zKSwKICNpZmRlZiBDT05GSUdfTkVU CiAJRElSKCJuZXQiLCAgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX25ldF9pbm9kZV9vcGVy YXRpb25zLCBwcm9jX25ldF9vcGVyYXRpb25zKSwKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvZmQuYyBi L2ZzL3Byb2MvZmQuYwppbmRleCA4MTg4MmExMzIxMmQuLjk0YTU3ZTE3ODgwMSAxMDA2NDQKLS0t IGEvZnMvcHJvYy9mZC5jCisrKyBiL2ZzL3Byb2MvZmQuYwpAQCAtMzYxLDMgKzM2MSw4NSBAQCBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfZmRpbmZvX29wZXJhdGlvbnMgPSB7CiAJ Lml0ZXJhdGVfc2hhcmVkCT0gcHJvY19yZWFkZmRpbmZvLAogCS5sbHNlZWsJCT0gZ2VuZXJpY19m aWxlX2xsc2VlaywKIH07CisKK3N0YXRpYyBpbnQgcHJvY19mZG1vdW50X2xpbmsoc3RydWN0IGRl bnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcGF0aCAqcGF0aCkKK3sKKwlzdHJ1Y3QgZmlsZXNfc3RydWN0 ICpmaWxlcyA9IE5VTEw7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCXN0cnVjdCBwYXRo IGZkX3BhdGg7CisJaW50IHJldCA9IC1FTk9FTlQ7CisKKwl0YXNrID0gZ2V0X3Byb2NfdGFzayhk X2lub2RlKGRlbnRyeSkpOworCWlmICh0YXNrKSB7CisJCWZpbGVzID0gZ2V0X2ZpbGVzX3N0cnVj dCh0YXNrKTsKKwkJcHV0X3Rhc2tfc3RydWN0KHRhc2spOworCX0KKworCWlmIChmaWxlcykgewor CQl1bnNpZ25lZCBpbnQgZmQgPSBwcm9jX2ZkKGRfaW5vZGUoZGVudHJ5KSk7CisJCXN0cnVjdCBm aWxlICpmZF9maWxlOworCisJCXNwaW5fbG9jaygmZmlsZXMtPmZpbGVfbG9jayk7CisJCWZkX2Zp bGUgPSBmY2hlY2tfZmlsZXMoZmlsZXMsIGZkKTsKKwkJaWYgKGZkX2ZpbGUpIHsKKwkJCWZkX3Bh dGggPSBmZF9maWxlLT5mX3BhdGg7CisJCQlwYXRoX2dldCgmZmRfcGF0aCk7CisJCQlyZXQgPSAw OworCQl9CisJCXNwaW5fdW5sb2NrKCZmaWxlcy0+ZmlsZV9sb2NrKTsKKwkJcHV0X2ZpbGVzX3N0 cnVjdChmaWxlcyk7CisJfQorCWlmICghcmV0KSB7CisJCXJldCA9IG1vdW50ZnNfbG9va3VwX2lu dGVybmFsKGZkX3BhdGgubW50LCBwYXRoKTsKKwkJcGF0aF9wdXQoJmZkX3BhdGgpOworCX0KKwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2ZkbW91bnRfaW5z dGFudGlhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LAorCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz aywgY29uc3Qgdm9pZCAqcHRyKQoreworCWNvbnN0IHN0cnVjdCBmZF9kYXRhICpkYXRhID0gcHRy OworCXN0cnVjdCBwcm9jX2lub2RlICplaTsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlOworCisJaW5v ZGUgPSBwcm9jX3BpZF9tYWtlX2lub2RlKGRlbnRyeS0+ZF9zYiwgdGFzaywgU19JRkxOSyB8IDA0 MDApOworCWlmICghaW5vZGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOworCisJZWkgPSBQ Uk9DX0koaW5vZGUpOworCWVpLT5mZCA9IGRhdGEtPmZkOworCisJaW5vZGUtPmlfb3AgPSAmcHJv Y19waWRfbGlua19pbm9kZV9vcGVyYXRpb25zOworCWlub2RlLT5pX3NpemUgPSA2NDsKKworCWVp LT5vcC5wcm9jX2dldF9saW5rID0gcHJvY19mZG1vdW50X2xpbms7CisJdGlkX2ZkX3VwZGF0ZV9p bm9kZSh0YXNrLCBpbm9kZSwgMCk7CisKKwlkX3NldF9kX29wKGRlbnRyeSwgJnRpZF9mZF9kZW50 cnlfb3BlcmF0aW9ucyk7CisJcmV0dXJuIGRfc3BsaWNlX2FsaWFzKGlub2RlLCBkZW50cnkpOwor fQorCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqCitwcm9jX2xvb2t1cGZkbW91bnQoc3RydWN0IGlu b2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKQorewor CXJldHVybiBwcm9jX2xvb2t1cGZkX2NvbW1vbihkaXIsIGRlbnRyeSwgcHJvY19mZG1vdW50X2lu c3RhbnRpYXRlKTsKK30KKworc3RhdGljIGludCBwcm9jX3JlYWRmZG1vdW50KHN0cnVjdCBmaWxl ICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCkKK3sKKwlyZXR1cm4gcHJvY19yZWFkZmRf Y29tbW9uKGZpbGUsIGN0eCwKKwkJCQkgIHByb2NfZmRtb3VudF9pbnN0YW50aWF0ZSk7Cit9CisK K2NvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfZmRtb3VudF9pbm9kZV9vcGVyYXRp b25zID0geworCS5sb29rdXAJCT0gcHJvY19sb29rdXBmZG1vdW50LAorCS5zZXRhdHRyCT0gcHJv Y19zZXRhdHRyLAorfTsKKworY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2ZkbW91 bnRfb3BlcmF0aW9ucyA9IHsKKwkucmVhZAkJPSBnZW5lcmljX3JlYWRfZGlyLAorCS5pdGVyYXRl X3NoYXJlZAk9IHByb2NfcmVhZGZkbW91bnQsCisJLmxsc2VlawkJPSBnZW5lcmljX2ZpbGVfbGxz ZWVrLAorfTsKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvZmQuaCBiL2ZzL3Byb2MvZmQuaAppbmRleCBm MzcxYTYwMmJmNTguLjllMDg3YzgzM2U2NSAxMDA2NDQKLS0tIGEvZnMvcHJvYy9mZC5oCisrKyBi L2ZzL3Byb2MvZmQuaApAQCAtMTAsNiArMTAsOSBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGlub2Rl X29wZXJhdGlvbnMgcHJvY19mZF9pbm9kZV9vcGVyYXRpb25zOwogZXh0ZXJuIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgcHJvY19mZGluZm9fb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBz dHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX2ZkaW5mb19pbm9kZV9vcGVyYXRpb25zOwogCitl eHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2ZkbW91bnRfb3BlcmF0aW9u czsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX2ZkbW91bnRfaW5v ZGVfb3BlcmF0aW9uczsKKwogZXh0ZXJuIGludCBwcm9jX2ZkX3Blcm1pc3Npb24oc3RydWN0IGlu b2RlICppbm9kZSwgaW50IG1hc2spOwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBwcm9j X2ZkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCmRpZmYgLS1naXQgYS9mcy9wcm9jX25hbWVzcGFjZS5j IGIvZnMvcHJvY19uYW1lc3BhY2UuYwppbmRleCAyNzNlZTgyZDhhYTkuLmU2MzRmYWE5MTYwZSAx MDA2NDQKLS0tIGEvZnMvcHJvY19uYW1lc3BhY2UuYworKysgYi9mcy9wcm9jX25hbWVzcGFjZS5j CkBAIC02MSwyNCArNjEsNiBAQCBzdGF0aWMgaW50IHNob3dfc2Jfb3B0cyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJcmV0dXJuIHNlY3VyaXR5X3NiX3Nob3df b3B0aW9ucyhtLCBzYik7CiB9CiAKLXN0YXRpYyB2b2lkIHNob3dfbW50X29wdHMoc3RydWN0IHNl cV9maWxlICptLCBzdHJ1Y3QgdmZzbW91bnQgKm1udCkKLXsKLQlzdGF0aWMgY29uc3Qgc3RydWN0 IHByb2NfZnNfaW5mbyBtbnRfaW5mb1tdID0gewotCQl7IE1OVF9OT1NVSUQsICIsbm9zdWlkIiB9 LAotCQl7IE1OVF9OT0RFViwgIixub2RldiIgfSwKLQkJeyBNTlRfTk9FWEVDLCAiLG5vZXhlYyIg fSwKLQkJeyBNTlRfTk9BVElNRSwgIixub2F0aW1lIiB9LAotCQl7IE1OVF9OT0RJUkFUSU1FLCAi LG5vZGlyYXRpbWUiIH0sCi0JCXsgTU5UX1JFTEFUSU1FLCAiLHJlbGF0aW1lIiB9LAotCQl7IDAs IE5VTEwgfQotCX07Ci0JY29uc3Qgc3RydWN0IHByb2NfZnNfaW5mbyAqZnNfaW5mb3A7Ci0KLQlm b3IgKGZzX2luZm9wID0gbW50X2luZm87IGZzX2luZm9wLT5mbGFnOyBmc19pbmZvcCsrKSB7Ci0J CWlmIChtbnQtPm1udF9mbGFncyAmIGZzX2luZm9wLT5mbGFnKQotCQkJc2VxX3B1dHMobSwgZnNf aW5mb3AtPnN0cik7Ci0JfQotfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFuZ2xlKHN0cnVjdCBz ZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqcykKIHsKQEAgLTEyMCw3ICsxMDIsNyBAQCBzdGF0aWMg aW50IHNob3dfdmZzbW50KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZmc21vdW50ICptbnQp CiAJZXJyID0gc2hvd19zYl9vcHRzKG0sIHNiKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKLQlz aG93X21udF9vcHRzKG0sIG1udCk7CisJc2VxX21udF9vcHRzKG0sIG1udC0+bW50X2ZsYWdzKTsK IAlpZiAoc2ItPnNfb3AtPnNob3dfb3B0aW9ucykKIAkJZXJyID0gc2ItPnNfb3AtPnNob3dfb3B0 aW9ucyhtLCBtbnRfcGF0aC5kZW50cnkpOwogCXNlcV9wdXRzKG0sICIgMCAwXG4iKTsKQEAgLTE1 Myw3ICsxMzUsNyBAQCBzdGF0aWMgaW50IHNob3dfbW91bnRpbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IHZmc21vdW50ICptbnQpCiAJCWdvdG8gb3V0OwogCiAJc2VxX3B1dHMobSwgbW50 LT5tbnRfZmxhZ3MgJiBNTlRfUkVBRE9OTFkgPyAiIHJvIiA6ICIgcnciKTsKLQlzaG93X21udF9v cHRzKG0sIG1udCk7CisJc2VxX21udF9vcHRzKG0sIG1udC0+bW50X2ZsYWdzKTsKIAogCS8qIFRh Z2dlZCBmaWVsZHMgKCJmb286WCIgb3IgImJhciIpICovCiAJaWYgKElTX01OVF9TSEFSRUQocikp CmRpZmYgLS1naXQgYS9mcy9zZXFfZmlsZS5jIGIvZnMvc2VxX2ZpbGUuYwppbmRleCAxNjAwMDM0 YTkyOWIuLjk3MjZiYWJhMTczMiAxMDA2NDQKLS0tIGEvZnMvc2VxX2ZpbGUuYworKysgYi9mcy9z ZXFfZmlsZS5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgvY3JlZC5oPgogI2lu Y2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvcHJpbnRrLmg+CisjaW5jbHVkZSA8 bGludXgvbW91bnQuaD4KICNpbmNsdWRlIDxsaW51eC9zdHJpbmdfaGVscGVycy5oPgogCiAjaW5j bHVkZSA8bGludXgvdWFjY2Vzcy5oPgpAQCAtNTQ4LDYgKzU0OSwyOCBAQCBpbnQgc2VxX2RlbnRy eShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAq ZXNjKQogfQogRVhQT1JUX1NZTUJPTChzZXFfZGVudHJ5KTsKIAordm9pZCBzZXFfbW50X29wdHMo c3RydWN0IHNlcV9maWxlICptLCBpbnQgbW50X2ZsYWdzKQoreworCXVuc2lnbmVkIGludCBpOwor CXN0YXRpYyBjb25zdCBzdHJ1Y3QgeworCQlpbnQgZmxhZzsKKwkJY29uc3QgY2hhciAqc3RyOwor CX0gbW50X2luZm9bXSA9IHsKKwkJeyBNTlRfTk9TVUlELCAiLG5vc3VpZCIgfSwKKwkJeyBNTlRf Tk9ERVYsICIsbm9kZXYiIH0sCisJCXsgTU5UX05PRVhFQywgIixub2V4ZWMiIH0sCisJCXsgTU5U X05PQVRJTUUsICIsbm9hdGltZSIgfSwKKwkJeyBNTlRfTk9ESVJBVElNRSwgIixub2RpcmF0aW1l IiB9LAorCQl7IE1OVF9SRUxBVElNRSwgIixyZWxhdGltZSIgfSwKKwkJeyAwLCBOVUxMIH0KKwl9 OworCisJZm9yIChpID0gMDsgbW50X2luZm9baV0uZmxhZzsgaSsrKSB7CisJCWlmIChtbnRfZmxh Z3MgJiBtbnRfaW5mb1tpXS5mbGFnKQorCQkJc2VxX3B1dHMobSwgbW50X2luZm9baV0uc3RyKTsK Kwl9Cit9CisKIHN0YXRpYyB2b2lkICpzaW5nbGVfc3RhcnQoc3RydWN0IHNlcV9maWxlICpwLCBs b2ZmX3QgKnBvcykKIHsKIAlyZXR1cm4gTlVMTCArICgqcG9zID09IDApOwpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIGIvaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oCmluZGV4 IDc3MGMyYmYzYWE0My4uOWRkNzgxMmViNzc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3Nl cV9maWxlLmgKKysrIGIvaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oCkBAIC0xMzgsNiArMTM4LDcg QEAgaW50IHNlcV9maWxlX3BhdGgoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCBmaWxlICosIGNv bnN0IGNoYXIgKik7CiBpbnQgc2VxX2RlbnRyeShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRl bnRyeSAqLCBjb25zdCBjaGFyICopOwogaW50IHNlcV9wYXRoX3Jvb3Qoc3RydWN0IHNlcV9maWxl ICptLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwKIAkJICBjb25zdCBzdHJ1Y3QgcGF0aCAqcm9v dCwgY29uc3QgY2hhciAqZXNjKTsKK3ZvaWQgc2VxX21udF9vcHRzKHN0cnVjdCBzZXFfZmlsZSAq bSwgaW50IG1udF9mbGFncyk7CiAKIGludCBzaW5nbGVfb3BlbihzdHJ1Y3QgZmlsZSAqLCBpbnQg KCopKHN0cnVjdCBzZXFfZmlsZSAqLCB2b2lkICopLCB2b2lkICopOwogaW50IHNpbmdsZV9vcGVu X3NpemUoc3RydWN0IGZpbGUgKiwgaW50ICgqKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgdm9pZCAqKSwg dm9pZCAqLCBzaXplX3QpOwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy92ZnMvTWFrZWZpbGUgYi9zYW1w bGVzL3Zmcy9NYWtlZmlsZQppbmRleCAxOWJlNjBhYjk1MGUuLjc4ZGViODQ4M2QyNyAxMDA2NDQK LS0tIGEvc2FtcGxlcy92ZnMvTWFrZWZpbGUKKysrIGIvc2FtcGxlcy92ZnMvTWFrZWZpbGUKQEAg LTQsNiArNCw3IEBACiBob3N0cHJvZ3MgOj0gXAogCXRlc3QtZnNpbmZvIFwKIAl0ZXN0LWZzbW91 bnQgXAorCXRlc3QtZnNpbmZvLXBlcmYgXAogCXRlc3QtbW50aW5mbyBcCiAJdGVzdC1zdGF0eAog CkBAIC0xMiw2ICsxMyw3IEBAIGFsd2F5cy15IDo9ICQoaG9zdHByb2dzKQogSE9TVENGTEFHU190 ZXN0LWZzaW5mby5vICs9IC1JJChvYmp0cmVlKS91c3IvaW5jbHVkZQogSE9TVExETElCU190ZXN0 LWZzaW5mbyArPSAtc3RhdGljIC1sbQogSE9TVENGTEFHU190ZXN0LW1udGluZm8ubyArPSAtSSQo b2JqdHJlZSkvdXNyL2luY2x1ZGUKK0hPU1RDRkxBR1NfdGVzdC1mc2luZm8tcGVyZi5vICs9IC1J JChvYmp0cmVlKS91c3IvaW5jbHVkZQogCiBIT1NUQ0ZMQUdTX3Rlc3QtZnNtb3VudC5vICs9IC1J JChvYmp0cmVlKS91c3IvaW5jbHVkZQogSE9TVENGTEFHU190ZXN0LXN0YXR4Lm8gKz0gLUkkKG9i anRyZWUpL3Vzci9pbmNsdWRlCg==