From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Fw: kernel BUG at ./include/linux/mm.h:LINE! (3) From: Pete Zaitcev Message-Id: <20180108152555.791cceec@lembas.zaitcev.lan> Date: Mon, 8 Jan 2018 15:25:55 -0600 To: "Kirill A. Shutemov" Cc: Andrew Morton , Greg Kroah-Hartman , linux-mm@kvack.org, linux-usb@vger.kernel.org, zaitcev@redhat.com List-ID: T24gV2VkLCAzIEphbiAyMDE4IDEyOjI2OjA0ICswMzAwCiJLaXJpbGwgQS4gU2h1dGVtb3YiIDxr aXJpbGxAc2h1dGVtb3YubmFtZT4gd3JvdGU6Cgo+ID4gPiAtCXVuc2lnbmVkIGxvbmcgb2Zmc2V0 LCBjaHVua19pZHg7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQsIGNodW5rX2lkeCwgZmxh Z3M7Cj4gPiA+ICAJc3RydWN0IHBhZ2UgKnBhZ2VwdHI7Cj4gPiA+ICAKPiA+ID4gKwltdXRleF9s b2NrKCZycC0+ZmV0Y2hfbG9jayk7Cj4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnJwLT5iX2xv Y2ssIGZsYWdzKTsKPiA+ID4gIAlvZmZzZXQgPSB2bWYtPnBnb2ZmIDw8IFBBR0VfU0hJRlQ7Cgo+ ID4gSSB0aGluayB0aGF0IGdyYWJiaW5nIHRoZSBzcGlubG9jayBpcyBub3QgcmVhbGx5IG5lY2Vz c2FyeSBpbgo+ID4gdGhpcyBjYXNlLiBUaGUgLT5iX2xvY2sgaXMgZGVzaWduZWQgZm9yIHRoaW5n cyB0aGF0IGFyZSBhY2Nlc3NlZAo+ID4gZnJvbSBpbnRlcnJ1cHRzIHRoYXQgSG9zdCBDb250cm9s bGVyIERyaXZlciBzZXJ2ZXMgLS0gbW9zdGx5Cj4gPiB2YXJpb3VzIHBvaW50ZXJzLiBCeSBkZWZp bnRpb24gaXQncyBub3QgY292ZXJpbmcgdGhpbmdzIHRoYXQKPiA+IGFyZSByZWxhdGVkIHRvIHJl LWFsbG9jYXRpb24uIE5vdywgdGhlIHJlLWFsbG9jYXRpb24gaXRzZWxmCj4gPiBncmFicyBpdCwg YmVjYXVzZSBpdCByZXNldHMgaW5kZXhlcyBpbnRvIHRoZSBuZXcgYnVmZmVyLCBidXQKPiA+IGRv ZXMgbm90IGFwcGVhciB0byBhcHBseSBoZXJlLCBkb2VzIGl0IG5vdz8gIAo+IAo+IFBsZWFzZSwg ZG91YmxlIGNoZWNrIGV2ZXJ5dGhpbmcuIEkgcmVtZW1iZXIgdGhhdCB0aGUgbXV0ZXggd2Fzbid0 IGVub3VnaAo+IHRvIHN0b3AgYnVnIGZyb20gdHJpZ2dlcmluZy4gQnV0IEkgZGlkbid0IHNwZW5k IG11Y2ggdGltZSB1bmRlcnN0YW5kaW5nCj4gdGhlIGNvZGUuCgpBdHRhY2hlZCBpcyB0aGUgdGVz dCB0aGF0IEkgdXNlZCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0sIGFuZCBteQpwYXRjaCB3aXRo IGp1c3QgdGhlIC0+ZmV0Y2hfbG9jayBmaXhlcyBpdC4gVGhhdCBzYWlkLCB5b3VyIHRlc3QKc3Vp dGUgbWF5IGJlIG1vcmUgY29tcHJlaGVuc2l2ZSwgb3IgeW91IG1heSBoYXZlIGEgZGV2aWNlIHRo YXQKZ2VuZXJhdGVzIGVub3VnaCBVU0IgdHJhZmZpYyB3aXRoIGFzc29jaWF0ZWQgbW9uaXRvcmlu ZyBjYWxsYmFja3MuCkJ1dCBJIGRvbid0IHNlZSBpdC4KCkF0IHRoaXMgcG9pbnQsIEknbSBnb2lu ZyB0byBwb3N0IHRoZSBwYXRjaCB3aXRoIGEgU2lnbmVkLU9mZi1CeS4KCi0tIFBldGUKCih0aGlz IHJlcHJvZHVjZXMgdmVyeSBxdWlja2x5KQoKLyoKICogdXNibW9udGVzdDogVGhlIGNyYXNoIHRl c3QgZm9yIHVzYm1vbiwgY3Jhc2hlcyBrZXJuZWwgNC4xNQogKgogKiBDb3B5cmlnaHQgKGMpIDIw MDcgUmVkIEhhdCwgSW5jLgogKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWlrZSBGcnlzaW5nZXIgPHZh cGllckBnZW50b28ub3JnPgogKiBDb3B5cmlnaHQgKGMpIDIwMTggUGV0ZSBaYWl0Y2V2IDx6YWl0 Y2V2QHJlZGhhdC5jb20+CiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCiAqIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgog KgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhbG9uZwogKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogKiA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogKi8KI2luY2x1ZGUg PGN0eXBlLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRl IDxzdHJpbmcuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVk ZSA8bGltaXRzLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgoj aW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxzeXMv c3lzbWFjcm9zLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+ CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8c3RkYXJnLmg+CgojZGVmaW5lIFRBRyAi dXNibW9udGVzdCIKCiNpZmRlZiBfX0dOVUNfXwojZGVmaW5lIF9fdW51c2VkIF9fYXR0cmlidXRl X18oKHVudXNlZCkpCiNlbHNlCiNkZWZpbmUgX191bnVzZWQgLyoqLwojZW5kaWYKCiNkZWZpbmUg TU9OX0lPQ19NQUdJQyAweDkyCgojZGVmaW5lIE1PTl9JT0NHX1NUQVRTIF9JT1IoTU9OX0lPQ19N QUdJQywgMywgc3RydWN0IHVzYm1vbl9zdGF0cykKCiNkZWZpbmUgTU9OX0lPQ1RfUklOR19TSVpF IF9JTyhNT05fSU9DX01BR0lDLCA0KQoKI2RlZmluZSBNT05fSU9DUV9SSU5HX1NJWkUgX0lPKE1P Tl9JT0NfTUFHSUMsIDUpCgpzdHJ1Y3QgdXNibW9uX21mZXRjaF9hcmcgewoJdW5zaWduZWQgaW50 ICpvZmZ2ZWM7CQkvKiBWZWN0b3Igb2YgZXZlbnRzIGZldGNoZWQgKi8KCXVuc2lnbmVkIGludCBu ZmV0Y2g7CQkvKiBOdW0uIG9mIGV2ZW50cyB0byBmZXRjaCAvIGZldGNoZWQgKi8KCXVuc2lnbmVk IGludCBuZmx1c2g7CQkvKiBOdW1iZXIgb2YgZXZlbnRzIHRvIGZsdXNoICovCn07CgojZGVmaW5l IE1PTl9JT0NYX01GRVRDSCBfSU9XUihNT05fSU9DX01BR0lDLCA3LCBzdHJ1Y3QgdXNibW9uX21m ZXRjaF9hcmcpCgovKgogKi8Kc3RydWN0IHBhcmFtcyB7CglpbnQgaWZudW07CS8qIFVTQiBidXMg bnVtYmVyICovCgljaGFyICpkZXZuYW1lOwkvKiAvZGV2L3VzYm1vbk4gKi8KCgl1bnNpZ25lZCBp bnQgbWFwX3NpemU7Cn07CmNvbnN0IHVuc2lnbmVkIGludCBwYWdlX3NpemUgPSA4MTkyOwkvKiAy eCB0aGUgc2l6ZSBvbiB4ODYsIGNyb3NzLXBsYXRmb3JtICovCmNvbnN0IHVuc2lnbmVkIGludCBu dW1fcGFnZXMgPSAzOwoKdm9pZCBVc2FnZSh2b2lkKTsKCnZvaWQgcGFyc2VfcGFyYW1zKHN0cnVj dCBwYXJhbXMgKnAsIGNoYXIgKiphcmd2KTsKdm9pZCBtYWtlX2RldmljZShjb25zdCBzdHJ1Y3Qg cGFyYW1zICpwKTsKaW50IGZpbmRfbWFqb3Iodm9pZCk7CgpzdHJ1Y3QgcGFyYW1zIHBhcjsKCmlu dCBtYWluKGludCBhcmdjIF9fdW51c2VkLCBjaGFyICoqYXJndikKewoJaW50IGZkOwoJdW5zaWdu ZWQgY2hhciAqZGF0YV9idWZmOwoJdW5zaWduZWQgaW50IG47CglpbnQgd3N0YXQ7CglpbnQgcmM7 CgoJcGFyc2VfcGFyYW1zKCZwYXIsIGFyZ3YrMSk7CgoJLyoKCSAqIFR3byByZWFzb25zIHRvIGRv IHRoaXM6CgkgKiAxLiBSZWR1Y2Ugd2VpcmQgZXJyb3IgbWVzc2FnZXMuCgkgKiAyLiBJZiB3ZSBj cmVhdGUgZGV2aWNlIG5vZGVzLCB3ZSB3YW50IHRoZW0gb3duZWQgYnkgcm9vdC4KCSAqLwoJaWYg KGdldGV1aWQoKSAhPSAwKSB7CgkJZnByaW50ZihzdGRlcnIsIFRBRyAiOiBNdXN0IHJ1biBhcyBy b290XG4iKTsKCQlleGl0KDEpOwoJfQoKCWlmICgoZmQgPSBvcGVuKHBhci5kZXZuYW1lLCBPX1JE V1IpKSA9PSAtMSkgewoJCWlmIChlcnJubyA9PSBFTk9FTlQpIHsKCQkJbWFrZV9kZXZpY2UoJnBh cik7CgkJCWZkID0gb3BlbihwYXIuZGV2bmFtZSwgT19SRFdSKTsKCQl9CgkJaWYgKGZkID09IC0x KSB7CgkJCWlmIChlcnJubyA9PSBFTk9ERVYgJiYgcGFyLmlmbnVtID09IDApIHsKCQkJCWZwcmlu dGYoc3RkZXJyLCBUQUcKCQkJCSAgICAiOiBDYW4ndCBvcGVuIHBzZXVkby1idXMgemVybyBhdCAl cyIKCQkJCSAgICAiIChwcm9iYWJseSBub3Qgc3VwcG9ydGVkIGJ5IGtlcm5lbClcbiIsCgkJCQkg ICAgcGFyLmRldm5hbWUpOwoJCQl9IGVsc2UgewoJCQkJZnByaW50ZihzdGRlcnIsIFRBRyAiOiBD YW4ndCBvcGVuICVzOiAlc1xuIiwKCQkJCSAgICBwYXIuZGV2bmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKCQkJfQoJCQlleGl0KDEpOwoJCX0KCX0KCglyYyA9IGlvY3RsKGZkLCBNT05fSU9DVF9SSU5H X1NJWkUsIHBhci5tYXBfc2l6ZSk7CglpZiAocmMgPT0gLTEpIHsKCQlmcHJpbnRmKHN0ZGVyciwg VEFHICI6IENhbm5vdCBzZXQgcmluZyBzaXplICglZCk6ICVzXG4iLAoJCSAgICBwYXIubWFwX3Np emUsIHN0cmVycm9yKGVycm5vKSk7CgkJZXhpdCgxKTsKCX0KCglyYyA9IGZvcmsoKTsKCWlmIChy YyA8IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6IGZvcms6ICVzXG4iLCBzdHJlcnJvcihl cnJubykpOwoJCWV4aXQoMSk7Cgl9CglpZiAocmMgIT0gMCkgewoJCS8qCgkJICogVGhpcyBsb29w IHJhY2VzIHRoZSBtbWFwIGFuZCBtYWtlcyBpdCBjYXJzaCB3aXRoIEJVRygpIGluCgkJICogaW5j bHVkZS9saW51eC9tbS5oOjgzMS4KCQkgKi8KCQlmb3IgKDs7KSB7CgkJCXJjID0gaW9jdGwoZmQs IE1PTl9JT0NUX1JJTkdfU0laRSwgcGFyLm1hcF9zaXplKTsKCQkJaWYgKHJjID09IC0xKSB7CgkJ CQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6IENhbm5vdCBzZXQgcmluZyBzaXplICglZCk6ICVzXG4i LAoJCQkJICAgIHBhci5tYXBfc2l6ZSwgc3RyZXJyb3IoZXJybm8pKTsKCQkJCWV4aXQoMSk7CgkJ CX0KCgkJCXJjID0gd2FpdHBpZCgwLCAmd3N0YXQsIFdOT0hBTkcpOwoJCQlpZiAocmMgPCAwKSB7 CgkJCQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6IHdhaXRwaWQ6ICVzXG4iLAoJCQkJICAgIHN0cmVy cm9yKGVycm5vKSk7CgkJCQlleGl0KDEpOwoJCQl9CgkJCS8qCgkJCSAqIEV4aXQgaWYgdGhlIGNo aWxkIGNyYXNoZWQsIHRoaXMgd2F5IHRoZSB1c2VyIGRvZXMKCQkJICogbm90IG5lZWQgdG8gaHVu dCBhbmQga2lsbCB0aGUgcnVud2F3YXkgbWFwcGluZyBsb29wLgoJCQkgKi8KCQkJaWYgKHJjICE9 IDApCgkJCQlleGl0KDApOwoJCX0KCX0gZWxzZSB7CgkJLyoKCQkgKiBUaGlzIGxvb3Agc2V0cyB1 cCBhbmQgdGVhcnMgZG93biB0aGUgbW1hcCBjb250aW51b3VzbHkKCQkgKiBpbiBvcmRlciB0byBj YXVzZSBwYWdlIGZhdWx0cy4gTWVyZWx5IGFjY2Vzc2luZyB0aGUgbWFwcGVkCgkJICogYnVmZmVy IGNhdXNlcyB0aGUgZmF1bHRzIG9uZSB0aW1lIGF0IHRoZSBiZWdpbm5pbmcgb25seS4KCQkgKi8K CQlmb3IgKDs7KSB7CgkJCWRhdGFfYnVmZiA9IG1tYXAoMCwgcGFyLm1hcF9zaXplLCBQUk9UX1JF QUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKCQkJaWYgKGRhdGFfYnVmZiA9PSBNQVBfRkFJTEVEKSB7 CgkJCQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6IENhbm5vdCBtbWFwOiAlc1xuIiwKCQkJCSAgICBz dHJlcnJvcihlcnJubykpOwoJCQkJZXhpdCgxKTsKCQkJfQoKCQkJLyogZGVhciBnY2MsIHBsZWFz ZSBkb24ndCBvcHRpbWl6ZSBvcnogKi8KCQkJZm9yIChuID0gMDsgbiA8IG51bV9wYWdlczsgbisr KSB7CgkJCQl1bnNpZ25lZCBjaGFyIHg7CgkJCQl4ID0gKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFy ICopZGF0YV9idWZmKVtuICogcGFnZV9zaXplXTsKCQkJfQoKCQkJbXVubWFwKGRhdGFfYnVmZiwg cGFyLm1hcF9zaXplKTsKCQl9Cgl9CgoJLy8gcmV0dXJuIDA7Cn0KCnZvaWQgcGFyc2VfcGFyYW1z KHN0cnVjdCBwYXJhbXMgKnAsIGNoYXIgKiphcmd2KQp7CgljaGFyICphcmc7Cglsb25nIG51bTsK CgltZW1zZXQocCwgMCwgc2l6ZW9mKHN0cnVjdCBwYXJhbXMpKTsKCgl3aGlsZSAoKGFyZyA9ICph cmd2KyspICE9IE5VTEwpIHsKCQlpZiAoYXJnWzBdID09ICctJykgewoJCQlpZiAoYXJnWzFdID09 IDApCgkJCQlVc2FnZSgpOwoJCQlzd2l0Y2ggKGFyZ1sxXSkgewoJCQljYXNlICdpJzoKCQkJCWlm IChhcmdbMl0gIT0gMCkKCQkJCQlVc2FnZSgpOwoJCQkJaWYgKChhcmcgPSAqYXJndisrKSA9PSBO VUxMKQoJCQkJCVVzYWdlKCk7CgkJCQlpZiAoc3RybmNtcChhcmcsICJ1c2IiLCAzKSA9PSAwKQoJ CQkJCWFyZyArPSAzOwoJCQkJaWYgKCFpc2RpZ2l0KGFyZ1swXSkpCgkJCQkJVXNhZ2UoKTsKCQkJ CWVycm5vID0gMDsKCQkJCW51bSA9IHN0cnRvbChhcmcsIE5VTEwsIDEwKTsKCQkJCWlmIChlcnJu byAhPSAwKQoJCQkJCVVzYWdlKCk7CgkJCQlpZiAobnVtIDwgMCB8fCBudW0gPj0gMTI4KSB7CgkJ CQkJZnByaW50ZihzdGRlcnIsIFRBRyAiOiBCdXMgbnVtYmVyICVsZCIKCQkJCQkgICAiIGlzIG91 dCBvZiBib3VuZHNcbiIsIG51bSk7CgkJCQkJZXhpdCgyKTsKCQkJCX0KCQkJCXAtPmlmbnVtID0g bnVtOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQlVc2FnZSgpOwoJCQl9CgkJfSBlbHNlIHsK CQkJVXNhZ2UoKTsKCQl9Cgl9CgoJaWYgKHAtPmRldm5hbWUgPT0gTlVMTCkgewoJCWlmICgocC0+ ZGV2bmFtZSA9IG1hbGxvYygxMDApKSA9PSBOVUxMKSB7CgkJCWZwcmludGYoc3RkZXJyLCBUQUcg IjogTm8gY29yZVxuIik7CgkJCWV4aXQoMSk7CgkJfQoJCXNucHJpbnRmKHAtPmRldm5hbWUsIDEw MCwgIi9kZXYvdXNibW9uJWQiLCBwLT5pZm51bSk7Cgl9CgoJcC0+bWFwX3NpemUgPSBudW1fcGFn ZXMgKiBwYWdlX3NpemU7Cn0KCnZvaWQgbWFrZV9kZXZpY2UoY29uc3Qgc3RydWN0IHBhcmFtcyAq cCkKewoJaW50IG1ham9yOwoJZGV2X3QgZGV2OwoKCW1ham9yID0gZmluZF9tYWpvcigpOwoJZGV2 ID0gbWFrZWRldihtYWpvciwgcC0+aWZudW0pOwoJaWYgKG1rbm9kKHAtPmRldm5hbWUsIFNfSUZD SFJ8U19JUlVTUnxTX0lXVVNSLCBkZXYpICE9IDApIHsKCQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6 IENhbid0IG1ha2UgZGV2aWNlICVzOiAlc1xuIiwKCQkgICAgcC0+ZGV2bmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKCQlleGl0KDEpOwoJfQp9CgppbnQgZmluZF9tYWpvcih2b2lkKQp7Cglsb25nIG51 bTsKCUZJTEUgKmRmOwoJZW51bSB7IExFTiA9IDUwIH07CgljaGFyIGJ1ZmZbTEVOXSwgYywgKnA7 CgljaGFyICptYWpvciwgKm1uYW1lOwoKCWlmICgoZGYgPSBmb3BlbigiL3Byb2MvZGV2aWNlcyIs ICJyIikpID09IE5VTEwpIHsKCQlmcHJpbnRmKHN0ZGVyciwgVEFHICI6IENhbid0IG9wZW4gL3By b2MvZGV2aWNlc1xuIik7CgkJZXhpdCgxKTsKCX0KCW51bSA9IC0xOwoJd2hpbGUgKGZnZXRzKGJ1 ZmYsIExFTiwgZGYpICE9IE5VTEwpIHsKCQlwID0gYnVmZjsKCQltYWpvciA9IE5VTEw7CgkJbW5h bWUgPSBOVUxMOwoJCWZvciAocCA9IGJ1ZmY7IChjID0gKnApICE9IDA7IHArKykgewoJCQlpZiAo bWFqb3IgPT0gTlVMTCkgewoJCQkJaWYgKGMgIT0gJyAnKSB7CgkJCQkJbWFqb3IgPSBwOwoJCQkJ fQoJCQl9IGVsc2UgaWYgKG1uYW1lID09IE5VTEwpIHsKCQkJCWlmICghaXNkaWdpdChjKSAmJiBj ICE9ICcgJykgewoJCQkJCW1uYW1lID0gcDsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWlmIChjID09 ICdcbicpIHsKCQkJCQkqcCA9IDA7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKG1h am9yICE9IE5VTEwgJiYgbW5hbWUgIT0gTlVMTCkgewoJCQlpZiAoc3RyY21wKG1uYW1lLCAidXNi bW9uIikgPT0gMCkgewoJCQkJZXJybm8gPSAwOwoJCQkJbnVtID0gc3RydG9sKG1ham9yLCBOVUxM LCAxMCk7CgkJCQlpZiAoZXJybm8gIT0gMCkgewoJCQkJCWZwcmludGYoc3RkZXJyLCBUQUcgIjog U3ludGF4IGVycm9yICIKCQkJCQkgICAgImluIC9wcm9jL2RldmljZXNcbiIpOwoJCQkJCWV4aXQo MSk7CgkJCQl9CgkJCQlicmVhazsKCQkJfQoJCX0KCX0KCWZjbG9zZShkZik7CgoJaWYgKG51bSA9 PSAtMSkgewoJCWZwcmludGYoc3RkZXJyLCBUQUcgIjogQ2FuJ3QgZmluZCB1c2Jtb24gaW4gL3By b2MvZGV2aWNlc1xuIik7CgkJZXhpdCgxKTsKCX0KCglpZiAobnVtIDw9IDAgfHwgbnVtID4gSU5U X01BWCkgewoJCWZwcmludGYoc3RkZXJyLCBUQUcgIjogV2VpcmQgbWFqb3IgJWxkIGluIC9wcm9j L2RldmljZXNcbiIsCgkJICAgIG51bSk7CgkJZXhpdCgxKTsKCX0KCglyZXR1cm4gKGludCkgbnVt Owp9Cgp2b2lkIFVzYWdlKHZvaWQpCnsKCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICIKCSAgICAi dXNibW9udGVzdCBbLWkgdXNiTl1cbiIpOwoJZXhpdCgyKTsKfQotLS0KVG8gdW5zdWJzY3JpYmUg ZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4K dGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBt YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o dG1sCg==