From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ross Maxfield" Subject: Re: [PATCH][RFC] Sharing removable media patch Date: Fri, 26 May 2006 12:52:50 -0600 Message-ID: <4476F824.DD28.00D3.0@novell.com> References: <4468C0AF.5010006@virtualiron.com> <44686ECF.DD28.00D3.0@novell.com> <4476E448.DD28.00D3.0@novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part87A2B992.0__=" Return-path: In-Reply-To: <4476E448.DD28.00D3.0@novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --=__Part87A2B992.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Here's a second version of the patch with less noise. There is some appropriate code shifting. signed off by Ross Maxfield --=__Part87A2B992.0__= Content-Type: application/octet-stream; name="cdrom2.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cdrom2.patch" ZGlmZiAtciAzZWQzMjVmYTM5NWIgdG9vbHMvaW9lbXUvYmxvY2suYwotLS0gYS90b29scy9pb2Vt dS9ibG9jay5jCUZyaSBNYXkgMjYgMTM6NTM6NDkgMjAwNiArMDEwMAorKysgYi90b29scy9pb2Vt dS9ibG9jay5jCUZyaSBNYXkgMjYgMTI6Mjc6MTYgMjAwNiAtMDYwMApAQCAtMTQ3LDYgKzE0Nyw3 IEBAIGludCBiZHJ2X29wZW4yKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBjb24KICAgICB9CiAKICAg ICBicy0+aW5zZXJ0ZWQgPSAxOworICAgIHNoZGV2X3NldF9tZWRpYV9pbnN0YW5jZShicyk7CiAK ICAgICAvKiBjYWxsIHRoZSBjaGFuZ2UgY2FsbGJhY2sgKi8KICAgICBpZiAoYnMtPmNoYW5nZV9j YikKQEAgLTE3MCw2ICsxNzEsNyBAQCB2b2lkIGJkcnZfY2xvc2UoQmxvY2tEcml2ZXJTdGF0ZSAq YnMpCiAgICAgICAgIGJzLT5vcGFxdWUgPSBOVUxMOwogICAgICAgICBicy0+ZHJ2ID0gTlVMTDsK ICAgICAgICAgYnMtPmluc2VydGVkID0gMDsKKwlicy0+bWVkaWFfaW5zdGFuY2UgPSAwOwogCiAg ICAgICAgIC8qIGNhbGwgdGhlIGNoYW5nZSBjYWxsYmFjayAqLwogICAgICAgICBpZiAoYnMtPmNo YW5nZV9jYikKQEAgLTM4Nyw3ICszODksNyBAQCB2b2lkIGJkcnZfaXRlcmF0ZV9mb3JtYXQodm9p ZCAoKml0KSh2b2lkCiAgICAgfQogfQogCi1CbG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbmQoY29u c3QgY2hhciAqbmFtZSkKK0Jsb2NrRHJpdmVyU3RhdGUgKmJkcnZfZmluZF9ieV9kZXZpY2UoY29u c3QgY2hhciAqbmFtZSkKIHsKICAgICBCbG9ja0RyaXZlclN0YXRlICpiczsKIApAQCAtMzk2LDYg KzM5OCwxNSBAQCBCbG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbmQoY29uc3QgY2hhciAqCiAgICAg ICAgICAgICByZXR1cm4gYnM7CiAgICAgfQogICAgIHJldHVybiBOVUxMOworfQorCitCbG9ja0Ry aXZlclN0YXRlICpiZHJ2X2ZpbmRfYnMoaW50ICgqaXQpKEJsb2NrRHJpdmVyU3RhdGUgKiwgdm9p ZCAqKSwgdm9pZCAqb3BhcXVlKQoreworICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzOworCisgICAg Zm9yIChicyA9IGJkcnZfZmlyc3Q7IGJzICE9IE5VTEwgJiYgIWl0KGJzLCBvcGFxdWUpOyBicyA9 IGJzLT5uZXh0KTsKKworICAgIHJldHVybiggYnMgKTsKIH0KIAogdm9pZCBiZHJ2X2l0ZXJhdGUo dm9pZCAoKml0KSh2b2lkICpvcGFxdWUsIGNvbnN0IGNoYXIgKm5hbWUpLCB2b2lkICpvcGFxdWUp CmRpZmYgLXIgM2VkMzI1ZmEzOTViIHRvb2xzL2lvZW11L2Jsb2NrX2ludC5oCi0tLSBhL3Rvb2xz L2lvZW11L2Jsb2NrX2ludC5oCUZyaSBNYXkgMjYgMTM6NTM6NDkgMjAwNiArMDEwMAorKysgYi90 b29scy9pb2VtdS9ibG9ja19pbnQuaAlGcmkgTWF5IDI2IDEyOjI3OjE2IDIwMDYgLTA2MDAKQEAg LTI0LDM2ICsyNCwyMiBAQAogI2lmbmRlZiBCTE9DS19JTlRfSAogI2RlZmluZSBCTE9DS19JTlRf SAogCi1zdHJ1Y3QgQmxvY2tEcml2ZXIgewotICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9uYW1lOwot ICAgIGludCBpbnN0YW5jZV9zaXplOwotICAgIGludCAoKmJkcnZfcHJvYmUpKGNvbnN0IHVpbnQ4 X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0gICAgaW50ICgq YmRydl9vcGVuKShCbG9ja0RyaXZlclN0YXRlICpicywgY29uc3QgY2hhciAqZmlsZW5hbWUpOwot ICAgIGludCAoKmJkcnZfcmVhZCkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9y X251bSwgCi0gICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBuYl9zZWN0b3Jz KTsKLSAgICBpbnQgKCpiZHJ2X3dyaXRlKShCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBz ZWN0b3JfbnVtLCAKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGlu dCBuYl9zZWN0b3JzKTsKLSAgICB2b2lkICgqYmRydl9jbG9zZSkoQmxvY2tEcml2ZXJTdGF0ZSAq YnMpOwotICAgIGludCAoKmJkcnZfY3JlYXRlKShjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50NjRf dCB0b3RhbF9zZWN0b3JzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFj a2luZ19maWxlLCBpbnQgZmxhZ3MpOwotICAgIGludCAoKmJkcnZfaXNfYWxsb2NhdGVkKShCbG9j a0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgbmJfc2VjdG9ycywgaW50ICpwbnVtKTsKLSAgICBpbnQgKCpiZHJ2X3Nl dF9rZXkpKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBjb25zdCBjaGFyICprZXkpOwotICAgIHN0cnVj dCBCbG9ja0RyaXZlciAqbmV4dDsKLX07CitzdHJ1Y3QgQmxvY2tEcml2ZXI7CiAKLXN0cnVjdCBC bG9ja0RyaXZlclN0YXRlIHsKK3R5cGVkZWYgc3RydWN0IEJsb2NrRHJpdmVyU3RhdGUgewogICAg IGludDY0X3QgdG90YWxfc2VjdG9yczsKICAgICBpbnQgcmVhZF9vbmx5OyAvKiBpZiB0cnVlLCB0 aGUgbWVkaWEgaXMgcmVhZCBvbmx5ICovCiAgICAgaW50IGluc2VydGVkOyAvKiBpZiB0cnVlLCB0 aGUgbWVkaWEgaXMgcHJlc2VudCAqLwogICAgIGludCByZW1vdmFibGU7IC8qIGlmIHRydWUsIHRo ZSBtZWRpYSBjYW4gYmUgcmVtb3ZlZCAqLwogICAgIGludCBsb2NrZWQ7ICAgIC8qIGlmIHRydWUs IHRoZSBtZWRpYSBjYW5ub3QgdGVtcG9yYXJpbHkgYmUgZWplY3RlZCAqLwogICAgIGludCBlbmNy eXB0ZWQ7IC8qIGlmIHRydWUsIHRoZSBtZWRpYSBpcyBlbmNyeXB0ZWQgKi8KKyAgICBpbnQgbWVk aWFfaW5zdGFuY2U7CisgICAgaW50IHNoZGV2X2VsOwogICAgIC8qIGV2ZW50IGNhbGxiYWNrIHdo ZW4gaW5zZXJ0aW5nL3JlbW92aW5nICovCiAgICAgdm9pZCAoKmNoYW5nZV9jYikodm9pZCAqb3Bh cXVlKTsKICAgICB2b2lkICpjaGFuZ2Vfb3BhcXVlOwogCi0gICAgQmxvY2tEcml2ZXIgKmRydjsK KyAgICBzdHJ1Y3QgQmxvY2tEcml2ZXIgKmRydjsKICAgICB2b2lkICpvcGFxdWU7CiAKICAgICBp bnQgYm9vdF9zZWN0b3JfZW5hYmxlZDsKQEAgLTYzLDE1ICs0OSwzNCBAQCBzdHJ1Y3QgQmxvY2tE cml2ZXJTdGF0ZSB7CiAgICAgY2hhciBiYWNraW5nX2ZpbGVbMTAyNF07IC8qIGlmIG5vbiB6ZXJv LCB0aGUgaW1hZ2UgaXMgYSBkaWZmIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoaXMgZmlsZSBpbWFnZSAqLwogICAgIGludCBpc190ZW1wb3Jhcnk7Ci0gICAgCi0gICAgQmxv Y2tEcml2ZXJTdGF0ZSAqYmFja2luZ19oZDsKLSAgICAKKworICAgIHN0cnVjdCBCbG9ja0RyaXZl clN0YXRlICpiYWNraW5nX2hkOworCiAgICAgLyogTk9URTogdGhlIGZvbGxvd2luZyBpbmZvcyBh cmUgb25seSBoaW50cyBmb3IgcmVhbCBoYXJkd2FyZQogICAgICAgIGRyaXZlcnMuIFRoZXkgYXJl IG5vdCB1c2VkIGJ5IHRoZSBibG9jayBkcml2ZXIgKi8KICAgICBpbnQgY3lscywgaGVhZHMsIHNl Y3M7CiAgICAgaW50IHR5cGU7CiAgICAgY2hhciBkZXZpY2VfbmFtZVszMl07Ci0gICAgQmxvY2tE cml2ZXJTdGF0ZSAqbmV4dDsKLX07CisgICAgc3RydWN0IEJsb2NrRHJpdmVyU3RhdGUgKm5leHQ7 Cit9IEJsb2NrRHJpdmVyU3RhdGU7CisKK3R5cGVkZWYgc3RydWN0IEJsb2NrRHJpdmVyIHsKKyAg ICBjb25zdCBjaGFyICpmb3JtYXRfbmFtZTsKKyAgICBpbnQgaW5zdGFuY2Vfc2l6ZTsKKyAgICBp bnQgKCpiZHJ2X3Byb2JlKShjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSwgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOworICAgIGludCAoKmJkcnZfb3BlbikoQmxvY2tEcml2ZXJTdGF0ZSAq YnMsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAgICBpbnQgKCpiZHJ2X3JlYWQpKEJsb2NrRHJp dmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sCisgICAgICAgICAgICAgICAgICAgICB1 aW50OF90ICpidWYsIGludCBuYl9zZWN0b3JzKTsKKyAgICBpbnQgKCpiZHJ2X3dyaXRlKShCbG9j a0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAorICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IG5iX3NlY3RvcnMpOworICAgIHZvaWQgKCpiZHJ2 X2Nsb3NlKShCbG9ja0RyaXZlclN0YXRlICpicyk7CisgICAgaW50ICgqYmRydl9jcmVhdGUpKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQ2NF90IHRvdGFsX3NlY3RvcnMsCisgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmJhY2tpbmdfZmlsZSwgaW50IGZsYWdzKTsKKyAgICBpbnQg KCpiZHJ2X2lzX2FsbG9jYXRlZCkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9y X251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5iX3NlY3RvcnMsIGludCAq cG51bSk7CisgICAgaW50ICgqYmRydl9zZXRfa2V5KShCbG9ja0RyaXZlclN0YXRlICpicywgY29u c3QgY2hhciAqa2V5KTsKKyAgICBzdHJ1Y3QgQmxvY2tEcml2ZXIgKm5leHQ7Cit9IEJsb2NrRHJp dmVyOworCiAKICNlbmRpZiAvKiBCTE9DS19JTlRfSCAqLwpkaWZmIC1yIDNlZDMyNWZhMzk1YiB0 b29scy9pb2VtdS9ody9pZGUuYwotLS0gYS90b29scy9pb2VtdS9ody9pZGUuYwlGcmkgTWF5IDI2 IDEzOjUzOjQ5IDIwMDYgKzAxMDAKKysrIGIvdG9vbHMvaW9lbXUvaHcvaWRlLmMJRnJpIE1heSAy NiAxMjoyNzoxNiAyMDA2IC0wNjAwCkBAIC0yNzgsNiArMjc4LDcgQEAKICNkZWZpbmUgQVNDX0lM TEVHQUxfT1BDT0RFICAgICAgICAgICAgICAgICAgIDB4MjAKICNkZWZpbmUgQVNDX0xPR0lDQUxf QkxPQ0tfT09SICAgICAgICAgICAgICAgIDB4MjEKICNkZWZpbmUgQVNDX0lOVl9GSUVMRF9JTl9D TURfUEFDS0VUICAgICAgICAgIDB4MjQKKyNkZWZpbmUgQVNDX01FRElBX0NIQU5HRUQJCSAgICAg MHgyOAogI2RlZmluZSBBU0NfTUVESVVNX05PVF9QUkVTRU5UICAgICAgICAgICAgICAgMHgzYQog I2RlZmluZSBBU0NfU0FWSU5HX1BBUkFNRVRFUlNfTk9UX1NVUFBPUlRFRCAgMHgzOQogCkBAIC0y OTQsNiArMjk1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSURFU3RhdGUgewogdHlwZWRlZiBzdHJ1Y3Qg SURFU3RhdGUgewogICAgIC8qIGlkZSBjb25maWcgKi8KICAgICBpbnQgaXNfY2Ryb207CisgICAg aW50IG1lZGlhX2NoYW5nZWQ7CiAgICAgaW50IGN5bGluZGVycywgaGVhZHMsIHNlY3RvcnM7CiAg ICAgaW50NjRfdCBuYl9zZWN0b3JzOwogICAgIGludCBtdWx0X3NlY3RvcnM7CkBAIC0xMTMyLDEx ICsxMTM0LDM0IEBAIHN0YXRpYyBpbnQgY2Ryb21fcmVhZF90b2NfcmF3KElERVN0YXRlICoKICAg ICByZXR1cm4gbGVuOwogfQogCitzdGF0aWMgaW50IGNkX21lZGlhX2luc2VydGVkKElERVN0YXRl ICpzKQoreworICAgIGludCBoLCB4ID0gMDsKKworICAgIGlmIChzLT5icy0+cmVtb3ZhYmxlKSB7 CisgICAgICAgIGggPSBvcGVuKHMtPmJzLT5maWxlbmFtZSwgT19OT05CTE9DSywgT19SRE9OTFkp OworCisgICAgICAgIGlmIChoID49IDApIHsKKwkgICAgeCA9IGZjbnRsKGgsIEZfR0VURkwpOwor ICAgICAgICAgICAgeCAmPSB+T19OT05CTE9DSzsKKyAgICAgICAgICAgIGZjbnRsKGgsIEZfU0VU RkwsIHgpOworCisJICAgIHggPSByZWFkKGgsICZ4LCBzaXplb2YoeCkpOworCSAgICBjbG9zZSho KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIAorCXggPSBzaXplb2YoIHggKTsKKworICAg IHJldHVybigoeCA9PSBzaXplb2YoeCkpKTsKK30KKwkKIHN0YXRpYyB2b2lkIGlkZV9hdGFwaV9j bWQoSURFU3RhdGUgKnMpCiB7CiAgICAgY29uc3QgdWludDhfdCAqcGFja2V0OwogICAgIHVpbnQ4 X3QgKmJ1ZjsKICAgICBpbnQgbWF4X2xlbjsKKwogCiAgICAgcGFja2V0ID0gcy0+aW9fYnVmZmVy OwogICAgIGJ1ZiA9IHMtPmlvX2J1ZmZlcjsKQEAgLTExNTAsMTMgKzExNzUsMjggQEAgc3RhdGlj IHZvaWQgaWRlX2F0YXBpX2NtZChJREVTdGF0ZSAqcykKICAgICAgICAgcHJpbnRmKCJcbiIpOwog ICAgIH0KICNlbmRpZgorCiAgICAgc3dpdGNoKHMtPmlvX2J1ZmZlclswXSkgewogICAgIGNhc2Ug R1BDTURfVEVTVF9VTklUX1JFQURZOgogICAgICAgICBpZiAoYmRydl9pc19pbnNlcnRlZChzLT5i cykpIHsKLSAgICAgICAgICAgIGlkZV9hdGFwaV9jbWRfb2socyk7CisJICAgIGlmIChzLT5tZWRp YV9jaGFuZ2VkKSB7CisJCXMtPm1lZGlhX2NoYW5nZWQgPSAwOworICAgICAgICAgICAgCWlkZV9h dGFwaV9jbWRfZXJyb3IocywgU0VOU0VfVU5JVF9BVFRFTlRJT04sIEFTQ19NRURJQV9DSEFOR0VE KTsKKwkgICAgfQorICAgICAgICAgICAgZWxzZSB7CisJCWlmICghY2RfbWVkaWFfaW5zZXJ0ZWQo cykgfHwgc2hkZXZfbWVkaWFfY2hlY2socy0+YnMpKSB7CisJCSAgICBiZHJ2X2Nsb3NlKHMtPmJz KTsKKyAgICAgICAgICAgICAgICAgICAgaWRlX2F0YXBpX2NtZF9lcnJvcihzLCBTRU5TRV9OT1Rf UkVBRFksIEFTQ19NRURJVU1fTk9UX1BSRVNFTlQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICBpZGVfYXRhcGlfY21kX29rKHMp OworCSAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZGVfYXRhcGlfY21kX2Vy cm9yKHMsIFNFTlNFX05PVF9SRUFEWSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFTQ19NRURJVU1fTk9UX1BSRVNFTlQpOworICAgICAgICAgICAgaWRlX2F0YXBpX2NtZF9lcnJv cihzLCBTRU5TRV9OT1RfUkVBRFksIEFTQ19NRURJVU1fTk9UX1BSRVNFTlQpOworCisgICAgICAg ICAgICBpZiAoY2RfbWVkaWFfaW5zZXJ0ZWQocykpIHsKKwkJICAgIGRvX2luc2VydF9yZXF1ZXN0 KCk7CisJICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdQQ01EX01P REVfU0VOU0VfMTA6CkBAIC0xMjg4LDYgKzEzMjgsMTMgQEAgc3RhdGljIHZvaWQgaWRlX2F0YXBp X2NtZChJREVTdGF0ZSAqcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT Q19NRURJVU1fTk9UX1BSRVNFTlQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgfQorCisgICAgICAgICAgICBpZiAoc2hkZXZfbWVkaWFfY2hlY2socy0+YnMpKSB7CisJCWJk cnZfY2xvc2Uocy0+YnMpOworICAgICAgICAgICAgICAgIGlkZV9hdGFwaV9jbWRfZXJyb3Iocywg U0VOU0VfTk9UX1JFQURZLCBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbmJfc2VjdG9ycyA9IChwYWNr ZXRbNl0gPDwgMTYpIHwgKHBhY2tldFs3XSA8PCA4KSB8IHBhY2tldFs4XTsKICAgICAgICAgICAg IGxiYSA9IHViZTMyX3RvX2NwdShwYWNrZXQgKyAyKTsKICAgICAgICAgICAgIGlmIChuYl9zZWN0 b3JzID09IDApIHsKQEAgLTEzNDUsNyArMTM5Miw3IEBAIHN0YXRpYyB2b2lkIGlkZV9hdGFwaV9j bWQoSURFU3RhdGUgKnMpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlamVjdCAmJiAh c3RhcnQpIHsKICAgICAgICAgICAgICAgICAvKiBlamVjdCB0aGUgZGlzayAqLwotICAgICAgICAg ICAgICAgIGJkcnZfY2xvc2Uocy0+YnMpOworICAgICAgICAgICAgICAgIGRvX2VqZWN0KDEsIHMt PmJzLT5kZXZpY2VfbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZGVfYXRhcGlf Y21kX29rKHMpOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzE0MTksMTMgQEAgc3RhdGljIHZvaWQg aWRlX2F0YXBpX2NtZChJREVTdGF0ZSAqcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFTQ19NRURJVU1fTk9UX1BSRVNFTlQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hkZXZfbWVkaWFfY2hlY2socy0+YnMp KSB7CisJCWJkcnZfY2xvc2Uocy0+YnMpOworICAgICAgICAgICAgICAgIGlkZV9hdGFwaV9jbWRf ZXJyb3IocywgU0VOU0VfTk9UX1JFQURZLCBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbWF4X2xlbiA9 IHViZTE2X3RvX2NwdShwYWNrZXQgKyA3KTsKICAgICAgICAgICAgIGZvcm1hdCA9IHBhY2tldFs5 XSA+PiA2OwogICAgICAgICAgICAgbXNmID0gKHBhY2tldFsxXSA+PiAxKSAmIDE7CkBAIC0xNDQ0 LDkgKzE0OTgsOSBAQCBzdGF0aWMgdm9pZCBjZHJvbV9jaGFuZ2VfY2Iodm9pZCAqb3BhcXVlCiAg ICAgSURFU3RhdGUgKnMgPSBvcGFxdWU7CiAgICAgaW50NjRfdCBuYl9zZWN0b3JzOwogCi0gICAg LyogWFhYOiBzZW5kIGludGVycnVwdCB0b28gKi8KICAgICBiZHJ2X2dldF9nZW9tZXRyeShzLT5i cywgJm5iX3NlY3RvcnMpOwogICAgIHMtPm5iX3NlY3RvcnMgPSBuYl9zZWN0b3JzOworICAgIHMt Pm1lZGlhX2NoYW5nZWQgPSAxOwogfQogCiBzdGF0aWMgdm9pZCBpZGVfaW9wb3J0X3dyaXRlKHZv aWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQpAQCAtMTYzMSw2ICsxNjg1 LDcgQEAgc3RhdGljIHZvaWQgaWRlX2lvcG9ydF93cml0ZSh2b2lkICpvcGFxdQogICAgICAgICAg ICAgaWRlX3NldF9zaWduYXR1cmUocyk7CiAgICAgICAgICAgICBzLT5zdGF0dXMgPSAweDAwOyAv KiBOT1RFOiBSRUFEWSBpcyBfbm90XyBzZXQgKi8KICAgICAgICAgICAgIHMtPmVycm9yID0gMHgw MTsKKwkgICAgcy0+bWVkaWFfY2hhbmdlZCA9IDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgY2FzZSBXSU5fUEFDS0VUQ01EOgogICAgICAgICAgICAgaWYgKCFzLT5pc19jZHJvbSkKZGlm ZiAtciAzZWQzMjVmYTM5NWIgdG9vbHMvaW9lbXUvbW9uaXRvci5jCi0tLSBhL3Rvb2xzL2lvZW11 L21vbml0b3IuYwlGcmkgTWF5IDI2IDEzOjUzOjQ5IDIwMDYgKzAxMDAKKysrIGIvdG9vbHMvaW9l bXUvbW9uaXRvci5jCUZyaSBNYXkgMjYgMTI6Mjc6MTYgMjAwNiAtMDYwMApAQCAtMSw4ICsxLDgg QEAKIC8qCiAgKiBRRU1VIG1vbml0b3IKLSAqIAorICoKICAqIENvcHlyaWdodCAoYykgMjAwMy0y MDA0IEZhYnJpY2UgQmVsbGFyZAotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogICog b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksIHRvIGRlYWwKICAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKQEAgLTIzLDYgKzIz LDcgQEAKICAqLwogI2luY2x1ZGUgInZsLmgiCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVk ZSA8c3lzL3NobS5oPgogCiAvLyNkZWZpbmUgREVCVUcKIC8vI2RlZmluZSBERUJVR19DT01QTEVU SU9OCkBAIC0zMyw3ICszNCw3IEBACiAKIC8qCiAgKiBTdXBwb3J0ZWQgdHlwZXM6Ci0gKiAKKyAq CiAgKiAnRicgICAgICAgICAgZmlsZW5hbWUKICAqICdCJyAgICAgICAgICBibG9jayBkZXZpY2Ug bmFtZQogICogJ3MnICAgICAgICAgIHN0cmluZyAoYWNjZXB0IG9wdGlvbmFsIHF1b3RlKQpAQCAt NjYsNyArNjcsNyBAQCB2b2lkIHRlcm1fZmx1c2godm9pZCkKIHsKICAgICBpZiAodGVybV9vdXRi dWZfaW5kZXggPiAwKSB7CiAJaWYobW9uaXRvcl9oZCkKLSAgICAgICAgcWVtdV9jaHJfd3JpdGUo bW9uaXRvcl9oZCwgdGVybV9vdXRidWYsIHRlcm1fb3V0YnVmX2luZGV4KTsKKyAgICAgICAgcWVt dV9jaHJfd3JpdGUobW9uaXRvcl9oZCwgKGNvbnN0IHVpbnQ4X3QgKil0ZXJtX291dGJ1ZiwgdGVy bV9vdXRidWZfaW5kZXgpOwogCWVsc2UKIAkgICAgZndyaXRlKHRlcm1fb3V0YnVmLCB0ZXJtX291 dGJ1Zl9pbmRleCwgMSwgc3RkZXJyKTsKICAgICAgICAgdGVybV9vdXRidWZfaW5kZXggPSAwOwpA QCAtMjQwLDcgKzI0MSw3IEBAIHN0YXRpYyBjb25zdCBLZXlEZWYga2V5X2RlZnNbXSA9IHsKIHN0 YXRpYyBjb25zdCBLZXlEZWYga2V5X2RlZnNbXSA9IHsKICAgICB7IDB4MmEsICJzaGlmdCIgfSwK ICAgICB7IDB4MzYsICJzaGlmdF9yIiB9LAotICAgIAorCiAgICAgeyAweDM4LCAiYWx0IiB9LAog ICAgIHsgMHhiOCwgImFsdF9yIiB9LAogICAgIHsgMHgxZCwgImN0cmwiIH0sCkBAIC0yOTMsNyAr Mjk0LDcgQEAgc3RhdGljIGNvbnN0IEtleURlZiBrZXlfZGVmc1tdID0gewogICAgIHsgMHgzMCwg ImIiIH0sCiAgICAgeyAweDMxLCAibiIgfSwKICAgICB7IDB4MzIsICJtIiB9LAotICAgIAorCiAg ICAgeyAweDM5LCAic3BjIiB9LAogICAgIHsgMHgzYSwgImNhcHNfbG9jayIgfSwKICAgICB7IDB4 M2IsICJmMSIgfSwKQEAgLTM0OCw3ICszNDksNyBAQCBzdGF0aWMgdm9pZCBkb19zZW5kX2tleShj b25zdCBjaGFyICpzdHJpCiAgICAgdWludDhfdCBrZXljb2Rlc1sxNl07CiAgICAgY29uc3QgY2hh ciAqcDsKICAgICBpbnQgbmJfa2V5Y29kZXMsIGtleWNvZGUsIGk7Ci0gICAgCisKICAgICBuYl9r ZXljb2RlcyA9IDA7CiAgICAgcCA9IHN0cmluZzsKICAgICB3aGlsZSAoKnAgIT0gJ1wwJykgewpA QCAtMzg3LDcgKzM4OCw3IEBAIHN0YXRpYyB2b2lkIGRvX3NlbmRfa2V5KGNvbnN0IGNoYXIgKnN0 cmkKIH0KIAogCi1zdGF0aWMgaW50IGVqZWN0X2RldmljZShCbG9ja0RyaXZlclN0YXRlICpicywg aW50IGZvcmNlKQorc3RhdGljIGludCBlamVjdF9sb2dpY2FsX2RldmljZShCbG9ja0RyaXZlclN0 YXRlICpicywgaW50IGZvcmNlKQogewogICAgIGlmIChiZHJ2X2lzX2luc2VydGVkKGJzKSkgewog ICAgICAgICBpZiAoIWZvcmNlKSB7CkBAIC00MDUsMjMgKzQwNiw1NyBAQCBzdGF0aWMgaW50IGVq ZWN0X2RldmljZShCbG9ja0RyaXZlclN0YXRlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2 b2lkIGRvX2VqZWN0KGludCBmb3JjZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit2b2lkIGRvX2Vq ZWN0KGludCBmb3JjZSwgY29uc3QgY2hhciAqZGV2aWNlKQogewogICAgIGNoYXIgY21kWzEwMjRd OwogICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzOwogCi0gICAgYnMgPSBiZHJ2X2ZpbmQoZmlsZW5h bWUpOworICAgIGJzID0gYmRydl9maW5kX2J5X2RldmljZShkZXZpY2UpOworCiAgICAgaWYgKCFi cykgewotICAgICAgICB0ZXJtX3ByaW50ZigiZGV2aWNlIG5vdCBmb3VuZFxuIik7CisgICAgICAg IHRlcm1fcHJpbnRmKCInJXMnIG5vdCBmb3VuZFxuIiwgZGV2aWNlKTsKICAgICAgICAgcmV0dXJu OwogICAgIH0KLSAgICBlamVjdF9kZXZpY2UoYnMsIGZvcmNlKTsKLSAgICBzcHJpbnRmKGNtZCwg ImVqZWN0ICVzIiwgZmlsZW5hbWUpOwotICAgIHN5c3RlbShjbWQpOwotCi19Ci0KLXN0YXRpYyB2 b2lkIGRvX2NoYW5nZShjb25zdCBjaGFyICpkZXZpY2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQor CisgICAgaWYgKGVqZWN0X2xvZ2ljYWxfZGV2aWNlKGJzLCBmb3JjZSkgPT0gMCkgeworICAgICAg ICBzaGRldl9lamVjdF9ub3RpY2UoYnMpOworICAgICAgICBzcHJpbnRmKGNtZCwgImVqZWN0ICVz IiwgYnMtPmZpbGVuYW1lKTsKKyAgICAgICAgc3lzdGVtKGNtZCk7CisgICAgfQorfQorCit2b2lk IGRvX2luc2VydChjb25zdCBjaGFyICpkZXZpY2UpCit7CisgICAgQmxvY2tEcml2ZXJTdGF0ZSAq YnM7CisKKyAgICBicyA9IGJkcnZfZmluZF9ieV9kZXZpY2UoZGV2aWNlKTsKKworICAgIGlmICgh YnMpIHsKKyAgICAgICAgdGVybV9wcmludGYoIiclcycgbm90IGZvdW5kXG4iLCBkZXZpY2UpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFicy0+cmVtb3ZhYmxlKSB7CisgICAg ICAgIHRlcm1fcHJpbnRmKCInJXMnIG5vdCByZW1vdmFibGVcbiIsIGRldmljZSk7CisgICAgICAg IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYnMtPmluc2VydGVkKSB7CisgICAgICAgIHRlcm1f cHJpbnRmKCInJXMnIGlzIGFscmVhZHkgaW5zZXJ0ZWRcbiIsIGRldmljZSk7CisgICAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgICBiZHJ2X29wZW4oYnMsIGJzLT5maWxlbmFtZSwgMCk7Cit9CisK K3N0YXRpYyBpbnQgZmluZF9ic19ieV90eXBlKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCB2b2lkICpv cGFxdWUpCit7CisgICBpbnQgKnR5cGUgPSAoaW50ICopb3BhcXVlOworCisgICByZXR1cm4oIChi cy0+dHlwZSA9PSAqdHlwZSkgKTsKK30KKworc3RhdGljIHZvaWQgZG9fY2hhbmdlX3NvdXJjZShj b25zdCBjaGFyICpkZXZpY2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIEJsb2NrRHJp dmVyU3RhdGUgKmJzOwogI2lmIDAKQEAgLTQyOSwxNCArNDY0LDE4IEBAIHN0YXRpYyB2b2lkIGRv X2NoYW5nZShjb25zdCBjaGFyICpkZXZpY2UKICAgICBjaGFyIHBhc3N3b3JkWzI1Nl07CiAjZW5k aWYKIAotICAgIGJzID0gYmRydl9maW5kKGRldmljZSk7CisgICAgYnMgPSBiZHJ2X2ZpbmRfYnlf ZGV2aWNlKGRldmljZSk7CisKICAgICBpZiAoIWJzKSB7CiAgICAgICAgIHRlcm1fcHJpbnRmKCJk ZXZpY2Ugbm90IGZvdW5kXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoZWpl Y3RfZGV2aWNlKGJzLCAwKSA8IDApCisKKyAgICBpZiAoZWplY3RfbG9naWNhbF9kZXZpY2UoYnMs IDApIDwgMCkKICAgICAgICAgcmV0dXJuOwotICAgIGJkcnZfb3BlbihicywgZmlsZW5hbWUsIDAp OworCisgICAgZG9faW5zZXJ0KGJzLT5kZXZpY2VfbmFtZSk7CisKICNpZiAwCiAgICAgaWYgKGJk cnZfaXNfZW5jcnlwdGVkKGJzKSkgewogICAgICAgICB0ZXJtX3ByaW50ZigiJXMgaXMgZW5jcnlw dGVkLlxuIiwgZGV2aWNlKTsKQEAgLTQ0OCw2ICs0ODcsMjAgQEAgc3RhdGljIHZvaWQgZG9fY2hh bmdlKGNvbnN0IGNoYXIgKmRldmljZQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCit9CisKK3Zv aWQgZG9faW5zZXJ0X3JlcXVlc3QoKQoreworICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzID0gTlVM TDsKKyAgICBpbnQgdHlwZSA9IEJEUlZfVFlQRV9DRFJPTTsKKworICAgIGJzID0gYmRydl9maW5k X2JzKGZpbmRfYnNfYnlfdHlwZSwgJnR5cGUpOworCisgICAgaWYgKGJzKSB7CisgICAgICAgIGRv X2NoYW5nZV9zb3VyY2UoYnMtPmRldmljZV9uYW1lLCBicy0+ZmlsZW5hbWUpOworICAgIH0KKyAg ICBlbHNlCisgICAgICAgIHRlcm1fcHJpbnRmKCJEaWQgbm90IGZpbmQgY2Ryb20gYnMuXG4iKTsK IH0KIAogc3RhdGljIHZvaWQgZG9fc2NyZWVuX2R1bXAoY29uc3QgY2hhciAqZmlsZW5hbWUpCkBA IC00ODIsMTcgKzUzNSwxOSBAQCBzdGF0aWMgdGVybV9jbWRfdCB0ZXJtX2NtZHNbXSA9IHsKICAg ICAgICIiLCAicXVpdCB0aGUgZW11bGF0b3IiIH0sCiAgICAgeyAiZWplY3QiLCAiLWZCIiwgZG9f ZWplY3QsCiAgICAgICAiWy1mXSBkZXZpY2UiLCAiZWplY3QgYSByZW1vdmFibGUgbWVkaWEgKHVz ZSAtZiB0byBmb3JjZSBpdCkiIH0sCi0gICAgeyAiY2hhbmdlIiwgIkJGIiwgZG9fY2hhbmdlLAot ICAgICAgImRldmljZSBmaWxlbmFtZSIsICJjaGFuZ2UgYSByZW1vdmFibGUgbWVkaWEiIH0sCisg ICAgeyAiaW5zZXJ0IiwgIkIiLCBkb19pbnNlcnQsCisgICAgICAiZGV2aWNlIiwgIm5vdGlmaWVz IHFlbXUgb2YgaW5zZXJ0ZWQgcmVtb3ZhYmxlIG1lZGlhLiIgfSwKKyAgICB7ICJjaGFuZ2UiLCAi QkYiLCBkb19jaGFuZ2Vfc291cmNlLAorICAgICAgImRldmljZSBmaWxlbmFtZSIsICJjaGFuZ2Ug c291cmNlIGZvciB2aXJ0dWFsIHJlbW92YWJsZS1tZWRpYSBkZXZpY2UuIiB9LAogICAgIHsgInNj cmVlbmR1bXAiLCAiRiIsIGRvX3NjcmVlbl9kdW1wLAogICAgICAgImZpbGVuYW1lIiwgInNhdmUg c2NyZWVuIGludG8gUFBNIGltYWdlICdmaWxlbmFtZSciIH0sCiAgICAgeyAibG9nIiwgInMiLCBk b19sb2csCmRpZmYgLXIgM2VkMzI1ZmEzOTViIHRvb2xzL2lvZW11L3ZsLmgKLS0tIGEvdG9vbHMv aW9lbXUvdmwuaAlGcmkgTWF5IDI2IDEzOjUzOjQ5IDIwMDYgKzAxMDAKKysrIGIvdG9vbHMvaW9l bXUvdmwuaAlGcmkgTWF5IDI2IDEyOjI3OjE2IDIwMDYgLTA2MDAKQEAgLTM3LDYgKzM3LDcgQEAK ICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9z dGF0Lmg+CisjaW5jbHVkZSA8YmxvY2tfaW50Lmg+CiAjaW5jbHVkZSAiYXVkaW8vYXVkaW8uaCIK ICNpbmNsdWRlICJ4ZW5jdHJsLmgiCiAjaW5jbHVkZSAieHMuaCIKQEAgLTg0LDYgKzg1LDggQEAg c3RhdGljIGlubGluZSBjaGFyICpyZWFscGF0aChjb25zdCBjaGFyIAogI2VuZGlmCiAKIC8qIHZs LmMgKi8KKyNkZWZpbmUgQ0RST01fRElTS19QT1NJVElPTiAyCisKIHVpbnQ2NF90IG11bGRpdjY0 KHVpbnQ2NF90IGEsIHVpbnQzMl90IGIsIHVpbnQzMl90IGMpOwogCiB2b2lkIGh3X2Vycm9yKGNv bnN0IGNoYXIgKmZtdCwgLi4uKTsKQEAgLTM3NCw5ICszNzcsNiBAQCB2b2lkIHBvcnRfZTlfaW5p dCh2b2lkKTsKIHZvaWQgcG9ydF9lOV9pbml0KHZvaWQpOwogCiAvKiBibG9jay5jICovCi10eXBl ZGVmIHN0cnVjdCBCbG9ja0RyaXZlclN0YXRlIEJsb2NrRHJpdmVyU3RhdGU7Ci10eXBlZGVmIHN0 cnVjdCBCbG9ja0RyaXZlciBCbG9ja0RyaXZlcjsKLQogZXh0ZXJuIEJsb2NrRHJpdmVyIGJkcnZf cmF3OwogZXh0ZXJuIEJsb2NrRHJpdmVyIGJkcnZfY293OwogZXh0ZXJuIEJsb2NrRHJpdmVyIGJk cnZfcWNvdzsKQEAgLTQyMSw3ICs0MjEsOCBAQCB2b2lkIGJkcnZfc2V0X2NoYW5nZV9jYihCbG9j a0RyaXZlclN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2hhbmdlX2NiKSh2 b2lkICpvcGFxdWUpLCB2b2lkICpvcGFxdWUpOwogdm9pZCBiZHJ2X2dldF9mb3JtYXQoQmxvY2tE cml2ZXJTdGF0ZSAqYnMsIGNoYXIgKmJ1ZiwgaW50IGJ1Zl9zaXplKTsKIHZvaWQgYmRydl9pbmZv KHZvaWQpOwotQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maW5kKGNvbnN0IGNoYXIgKm5hbWUpOwor QmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maW5kX2JzKGludCAoKml0KShCbG9ja0RyaXZlclN0YXRl ICpicywgdm9pZCAqb3BhcXVlKSwgdm9pZCAqb3BhcXVlKTsKK0Jsb2NrRHJpdmVyU3RhdGUgKmJk cnZfZmluZF9ieV9kZXZpY2UoY29uc3QgY2hhciAqbmFtZSk7CiB2b2lkIGJkcnZfaXRlcmF0ZSh2 b2lkICgqaXQpKHZvaWQgKm9wYXF1ZSwgY29uc3QgY2hhciAqbmFtZSksIHZvaWQgKm9wYXF1ZSk7 CiBpbnQgYmRydl9pc19lbmNyeXB0ZWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOwogaW50IGJkcnZf c2V0X2tleShCbG9ja0RyaXZlclN0YXRlICpicywgY29uc3QgY2hhciAqa2V5KTsKQEAgLTc5Nyw2 ICs3OTgsMTUgQEAgaW50IGN1ZGFfaW5pdChvcGVucGljX3QgKm9wZW5waWMsIGludCBpcgogCiAj ZW5kaWYgLyogZGVmaW5lZChRRU1VX1RPT0wpICovCiAKKy8qIHNoZGV2LmggKi8KKworaW50IHNo ZGV2X2luaXQodm9pZCk7CitpbnQgc2hkZXZfcmVwb3J0X2RldmljZShCbG9ja0RyaXZlclN0YXRl ICpicywgY29uc3QgY2hhciAqbmFtZSk7Cit2b2lkIHNoZGV2X3NldF9tZWRpYV9pbnN0YW5jZShC bG9ja0RyaXZlclN0YXRlICpicyk7Cit2b2lkIHNoZGV2X2VqZWN0X25vdGljZShCbG9ja0RyaXZl clN0YXRlICpicyk7CitpbmxpbmUgaW50IHNoZGV2X21lZGlhX2NoZWNrKEJsb2NrRHJpdmVyU3Rh dGUgKmJzKTsKK3ZvaWQgZG9faW5mb19zaGRldih2b2lkKTsKKwogLyogbW9uaXRvci5jICovCiB2 b2lkIG1vbml0b3JfaW5pdChDaGFyRHJpdmVyU3RhdGUgKmhkLCBpbnQgc2hvd19iYW5uZXIpOwog dm9pZCB0ZXJtX3B1dHMoY29uc3QgY2hhciAqc3RyKTsKQEAgLTgwNCw2ICs4MTQsOSBAQCB2b2lk IHRlcm1fcHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfCiB2b2lkIHRlcm1fcHJpbnRmKGNv bnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf XywgMSwgMikpKTsKIHZvaWQgdGVybV9mbHVzaCh2b2lkKTsKIHZvaWQgdGVybV9wcmludF9oZWxw KHZvaWQpOwordm9pZCBkb19pbnNlcnRfcmVxdWVzdCh2b2lkKTsKK3ZvaWQgZG9fZWplY3QoaW50 IGZvcmNlLCBjb25zdCBjaGFyICpkZXZpY2UpOworCiAKIC8qIHJlYWRsaW5lLmMgKi8KIHR5cGVk ZWYgdm9pZCBSZWFkTGluZUZ1bmModm9pZCAqb3BhcXVlLCBjb25zdCBjaGFyICpzdHIpOwpkaWZm IC1yIDNlZDMyNWZhMzk1YiB0b29scy9pb2VtdS9zaGRldi5jCi0tLSAvZGV2L251bGwJVGh1IEph biAgMSAwMDowMDowMCAxOTcwICswMDAwCisrKyBiL3Rvb2xzL2lvZW11L3NoZGV2LmMJRnJpIE1h eSAyNiAxMjozNjo1NCAyMDA2IC0wNjAwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogTWFuYWdt ZW50IGZvciBEZXZpY2VzIFNoYXJlZCBBY3Jvc3MgR3Vlc3RzIAorICoKKyAqIENvcHlyaWdodCAo YykgMjAwNiBOb3ZlbGwsIEluYy4KKyAqIAorICogLSBBdXRob3I6IFJvc3MgTWF4ZmllbGQgKHJv c3MubWF4ZmllbGRAbm92ZWxsLmNvbSkKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisg KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT SEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTIElOCisgKiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgInZsLmgi CisjaW5jbHVkZSA8c3lzL3NobS5oPgorCisjZGVmaW5lIE1BWF9TSEFSRURfREVWUyA0CisjZGVm aW5lIFNIREVWX05BTUVfTEVOIDEyOAorI2RlZmluZSBTSEFSRURfREVWU19TSUdOQVRVUkUgIlNo UmREZVZzIgorI2RlZmluZSBRRU1VX0tFWV9QQVRIICIvZXRjL3hlbiIKKwordHlwZWRlZiBzdHJ1 Y3QgU2hhcmVkRGV2aWNlIHsKKyAgICBjaGFyIG5hbWVbU0hERVZfTkFNRV9MRU5dOworICAgIGlu dCAgbWVkaWFfaW5zdGFuY2U7Cit9IFNoYXJlZERldmljZTsKKwordHlwZWRlZiBzdHJ1Y3QgU2hh cmVkRGV2aWNlcyB7CisgICAgY2hhciAgICAgICAgIHNpZ25hdHVyZVtzaXplb2YoU0hBUkVEX0RF VlNfU0lHTkFUVVJFKV07CisgICAgU2hhcmVkRGV2aWNlIGRldmljZVtNQVhfU0hBUkVEX0RFVlNd OworfSBTaGFyZWREZXZpY2VzOworCitTaGFyZWREZXZpY2VzICpzaGRldnM7CisKK2ludCBzaGRl dl9pbml0KCkKK3sKKyAgICBrZXlfdCBzaG1fa2V5OworICAgIGludCBzaG1faWQ7CisKKyAgICAv KiBBbGxvYy9HZXQgc2hhcmVkIGRldmljZSBtZW1vcnkgKi8KKyAgICBzaG1fa2V5ID0gZnRvayhR RU1VX0tFWV9QQVRILCAnWCcpOworCisgICAgaWYgKCgoc2htX2lkID0gc2htZ2V0KHNobV9rZXks CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihTaGFyZWREZXZpY2VzKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgSVBDX0NSRUFUfElQQ19FWENMfDA2NjApKSAhPSAtMSkKKyAg ICAgICAgICAmJiAoKHNoZGV2cyA9IHNobWF0KHNobV9pZCwgMCwgMCkpICE9ICh2b2lkICopLTEp KSB7CisgICAgICAgIG1lbWNweSgmc2hkZXZzLT5zaWduYXR1cmUsIFNIQVJFRF9ERVZTX1NJR05B VFVSRSwKKyAgICAgICAgICAgICAgIHNpemVvZihTSEFSRURfREVWU19TSUdOQVRVUkUpKTsKKyAg ICB9CisgICAgZWxzZQorICAgIGlmIChlcnJubyA9PSBFRVhJU1QpCisgICAgeworICAgICAgICBp ZiAoKChzaG1faWQgPSBzaG1nZXQoc2htX2tleSwgc2l6ZW9mKFNoYXJlZERldmljZXMpLCAwKSkg PT0gLTEpCisgICAgICAgICAgICB8fCAoKHNoZGV2cyA9IHNobWF0KHNobV9pZCwgMCwgMCkpID09 ICh2b2lkICopLTEpCisgICAgICAgICAgICB8fCAobWVtY21wKHNoZGV2cy0+c2lnbmF0dXJlLCBT SEFSRURfREVWU19TSUdOQVRVUkUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihTSEFS RURfREVWU19TSUdOQVRVUkUpKSAhPSAwKSkgeworICAgICAgICAgICAgc2hkZXZzID0gTlVMTDsK KyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IHNldHVwIHN1cHBvcnQgZm9y IHNoYXJlZCBkZXZpY2VzLlxuIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkIHNoZGV2X3NldF9tZWRpYV9pbnN0YW5j ZShCbG9ja0RyaXZlclN0YXRlICpicykKK3sKKyAgICBicy0+bWVkaWFfaW5zdGFuY2UgPSBzaGRl dnMtPmRldmljZVticy0+c2hkZXZfZWxdLm1lZGlhX2luc3RhbmNlOworfQorCit2b2lkIHNoZGV2 X2VqZWN0X25vdGljZShCbG9ja0RyaXZlclN0YXRlICpicykKK3sKKyAgICBzaGRldnMtPmRldmlj ZVticy0+c2hkZXZfZWxdLm1lZGlhX2luc3RhbmNlKys7Cit9CisKK2lubGluZSBpbnQgc2hkZXZf bWVkaWFfY2hlY2soQmxvY2tEcml2ZXJTdGF0ZSAqYnMpCit7CisgICAgcmV0dXJuKCEoYnMtPm1l ZGlhX2luc3RhbmNlID09IHNoZGV2cy0+ZGV2aWNlW2JzLT5zaGRldl9lbF0ubWVkaWFfaW5zdGFu Y2UpKTsKK30KKworaW50IHNoZGV2X3JlcG9ydF9kZXZpY2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMs IGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOworICAg ICAgICAgKGkgPCBNQVhfU0hBUkVEX0RFVlMpICYmIHN0cmNtcChzaGRldnMtPmRldmljZVtpXS5u YW1lLCBuYW1lKTsKKyAgICAgICAgIGkrKyk7CisKKyAgICBpZiAoaSA9PSBNQVhfU0hBUkVEX0RF VlMpIHsKKyAgICAgICAgZm9yIChpID0gMDsKKyAgICAgICAgICAgICAoaSA8IE1BWF9TSEFSRURf REVWUykgJiYgKHNoZGV2cy0+ZGV2aWNlW2ldLm5hbWVbMF0gIT0gJ1wwJyk7CisgICAgICAgICAg ICAgaSsrKTsKKworICAgICAgICBpZiAoaSA8IE1BWF9TSEFSRURfREVWUykgeworICAgICAgICAg ICAgcHN0cmNweShzaGRldnMtPmRldmljZVtpXS5uYW1lLCBTSERFVl9OQU1FX0xFTiwgbmFtZSk7 CisgICAgICAgICAgICBzaGRldnMtPmRldmljZVtpXS5tZWRpYV9pbnN0YW5jZSA9IDA7CisgICAg ICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGV4 Y2VlZHMgbWF4aW11bSBvZiAlZCBzaGFyZWQgZGV2aWNlcy5cbiIsCisgICAgICAgICAgICAgICAg ICAgIG5hbWUsIE1BWF9TSEFSRURfREVWUyApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAg ICAgICB9CisgICAgfQorCisgICAgYnMtPm1lZGlhX2luc3RhbmNlID0gc2hkZXZzLT5kZXZpY2Vb aV0ubWVkaWFfaW5zdGFuY2U7CisgICAgYnMtPnNoZGV2X2VsID0gaTsKKworICAgIHJldHVybiAw OworfQorCit2b2lkIGRvX2luZm9fc2hkZXYodm9pZCkKK3sKKyAgICBpbnQgaTsKKworICAgIC8q IENhbiB0aGlzIGRldmljZSBiZSBtYWRlIGF2YWlsYmxlIHRvIHRoaXMgZG9tYWluPyAqLworICAg IGZvciAoaSA9IDA7IGkgPCBNQVhfU0hBUkVEX0RFVlM7IGkrKykgeworICAgICAgICBpZiAoc2hk ZXZzLT5kZXZpY2VbaV0ubmFtZVswXSAhPSAnXDAnKSB7CisgICAgICAgICAgICB0ZXJtX3ByaW50 ZigiJyVzJyBbJWRdXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hkZXZzLT5kZXZpY2Vb aV0ubmFtZSwKKwkJCXNoZGV2cy0+ZGV2aWNlW2ldLm1lZGlhX2luc3RhbmNlKTsKKyAgICAgICAg fQorICAgIH0KK30KKworCg== --=__Part87A2B992.0__= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=__Part87A2B992.0__=--