From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ross Maxfield" Subject: [PATCH][RFC] Sharing removable media patch Date: Fri, 26 May 2006 11:28:06 -0600 Message-ID: <4476E448.DD28.00D3.0@novell.com> References: <4468C0AF.5010006@virtualiron.com> <44686ECF.DD28.00D3.0@novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__PartD7F2E9B6.0__=" Return-path: In-Reply-To: <44686ECF.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 --=__PartD7F2E9B6.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Attached is a patch that I created to make HVM virtual cdroms behave more like their physical counterparts. Problem: When cd media is ejected, and worse, replaced, the guest is not made aware until the you enter the qemu monitor and type 'change '. This 'change' command must also be done for each guest that has access to the media, i.e., has the 'cdrom =' line its config file. When a guest is not made aware of media changes then the guest continues on the assumption that all is well returns previously cached data for media not present, or worse, reads non-cached from the new media believing that it is still the previous media. Recognizing that the patch is large I will spend a moment explaining the theory of operations. The objective was to get each guest to be aware of media ejects and inerts regardless from which domain the event occurred, including Dom0. The foundation for this work is the creation of a very small amount of memory shared between all guests. This shared memory contains a list of shared removable media devices, as defined by the 'cdrom=' line that may exist is each guest's config file. There is one entry in this shared memory for each unique device name. Accompanying the device name is media instance number. This instance number is incremented each time media is ejected from any guest. The current value of the instance number is stored in the BlockDriverState structure when a guest is initialized. This instance number kept by the guest is compared against the value in the shared memory in the TEST_UNIT_READY routine and the cdrom read routine found in qemu's ide.c. If the values are not equal then is is assumed that the media has been ejected by another guest and a ASC_MEDIA_CHANGED error is returned to each quest's routine that is polling for removable media device status. If polling is not employed by the guest then the media changed notification will occur on the next IO request and the guest OS will respond appropriately. In addition to comparing the guest's media instance number against the value in shared memory the TEST_UNIT_READY routine checks the accessibility of the media. It does so by opening the the device with the O_NONBLOCK flag, clearing the flag with fcntl() and checking the value returned by a read() from the device. Using O_NONBLOCK prevents the automatic draw-in of the cd tray should it be ejected. If the guest believes that the media should be present then TEST_UNIT_READY returns ok, otherwise, it reports MEDIA_CHANGED and then MEDIA_NOT_PRESENT for all following TEST_UNIT_READY until it determined that media is once again present. This is determined by TEST_UNIT_READY when it believes that media is not present and the open() and read() succeed. When it is discovered that media has become present then qemu responds essentially as if qemu's 'change' command had been entered at the qemu's monitor screen. The device is opened and made available to the quest. The guest's media polling routines discover the new media and respond appropriately. Having the TEST_UNIT_READY check the media also allows the guests to respond properly when media is ejected manually or from Dom0. This implementation is stateless meaning that there is nothing to cleanup when a domain terminates, nicely or otherwise. The shared memory is not created until there is at least one guest and is removed when the last guest terminates, providing it did so nicely. Even if the memory should not be freed when the last domain terminates, it is not much memory and is never reallocated but simply reused by the next guest(s). It was suggested that xenstore be used in place of the shared memory. After considering this it was decided to stay with the shared memory approach because of the frequency at which the memory was accessed and by the fact that it is not data that is managed or even interesting. Also, there is no measurable difference in cd IO performance with this implementation, nor any visible signs, i.e., no spinning up, lights blinking, trays unexpectedly moving, etc. This implementation does nothing to protect against simultaneous writes to shared media. It is recognized that in the future there will need to be a comprehensive solution for the management of shared removable devices of all types. This patch simply satisfies the expectation that when media is present, or not, each guest responds appropriately. This patch applies to change set 10162. Signed off by Ross Maxfield --=__PartD7F2E9B6.0__= Content-Type: application/octet-stream; name="cdroms.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cdroms.patch" ZGlmZiAtciBkYzIxM2Q3NDU2NDIgdG9vbHMvaW9lbXUvYmxvY2suYwotLS0gYS90b29scy9pb2Vt dS9ibG9jay5jCU1vbiBNYXkgMTUgMTY6MzI6MDkgMjAwNiArMDEwMAorKysgYi90b29scy9pb2Vt dS9ibG9jay5jCVRodSBNYXkgMjUgMTQ6NTc6MTMgMjAwNiAtMDYwMApAQCAtMSw4ICsxLDggQEAK IC8qCiAgKiBRRU1VIFN5c3RlbSBFbXVsYXRvciBibG9jayBkcml2ZXIKLSAqIAorICoKICAqIENv cHlyaWdodCAoYykgMjAwMyBGYWJyaWNlIEJlbGxhcmQKLSAqIAorICoKICAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhIGNvcHkKICAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAgKiBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz CkBAIC00MSw2ICs0MSw3IEBAIEJsb2NrRHJpdmVyU3RhdGUgKmJkcnZfbmV3KGNvbnN0IGNoYXIg KmQKICAgICBicyA9IHFlbXVfbWFsbG9jeihzaXplb2YoQmxvY2tEcml2ZXJTdGF0ZSkpOwogICAg IGlmKCFicykKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBwc3RyY3B5KGJzLT5kZXZpY2Vf bmFtZSwgc2l6ZW9mKGJzLT5kZXZpY2VfbmFtZSksIGRldmljZV9uYW1lKTsKICAgICBpZiAoZGV2 aWNlX25hbWVbMF0gIT0gJ1wwJykgewogICAgICAgICAvKiBpbnNlcnQgYXQgdGhlIGVuZCAqLwpA QCAtNjIsNyArNjMsNyBAQCBCbG9ja0RyaXZlciAqYmRydl9maW5kX2Zvcm1hdChjb25zdCBjaGFy CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWludCBiZHJ2X2NyZWF0ZShCbG9ja0RyaXZlciAqZHJ2 LCAKK2ludCBiZHJ2X2NyZWF0ZShCbG9ja0RyaXZlciAqZHJ2LAogICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQ2NF90IHNpemVfaW5fc2VjdG9ycywKICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpiYWNraW5nX2ZpbGUsIGludCBmbGFncykKIHsKQEAgLTg2LDcgKzg3 LDcgQEAgc3RhdGljIEJsb2NrRHJpdmVyICpmaW5kX2ltYWdlX2Zvcm1hdChjbwogICAgICAgICBy ZXR1cm4gTlVMTDsKICAgICB9CiAgICAgY2xvc2UoZmQpOwotICAgIAorCiAgICAgZHJ2ID0gTlVM TDsKICAgICBzY29yZV9tYXggPSAwOwogICAgIGZvcihkcnYxID0gZmlyc3RfZHJ2OyBkcnYxICE9 IE5VTEw7IGRydjEgPSBkcnYxLT5uZXh0KSB7CkBAIC0xMDgsMTIgKzEwOSwxMyBAQCBpbnQgYmRy dl9vcGVuMihCbG9ja0RyaXZlclN0YXRlICpicywgY29uCiAgICAgICAgICAgICAgICBCbG9ja0Ry aXZlciAqZHJ2KQogewogICAgIGludCByZXQ7Ci0gICAgCisKKyAgICBwc3RyY3B5KGJzLT5maWxl bmFtZSwgc2l6ZW9mKGJzLT5maWxlbmFtZSksIGZpbGVuYW1lKTsKKwogICAgIGJzLT5yZWFkX29u bHkgPSAwOwogICAgIGJzLT5pc190ZW1wb3JhcnkgPSAwOwogICAgIGJzLT5lbmNyeXB0ZWQgPSAw OwotICAgIAotICAgIHBzdHJjcHkoYnMtPmZpbGVuYW1lLCBzaXplb2YoYnMtPmZpbGVuYW1lKSwg ZmlsZW5hbWUpOworCiAgICAgaWYgKCFkcnYpIHsKICAgICAgICAgZHJ2ID0gZmluZF9pbWFnZV9m b3JtYXQoZmlsZW5hbWUpOwogICAgICAgICBpZiAoIWRydikKQEAgLTEyMyw3ICsxMjUsNyBAQCBp bnQgYmRydl9vcGVuMihCbG9ja0RyaXZlclN0YXRlICpicywgY29uCiAgICAgYnMtPm9wYXF1ZSA9 IHFlbXVfbWFsbG9jeihkcnYtPmluc3RhbmNlX3NpemUpOwogICAgIGlmIChicy0+b3BhcXVlID09 IE5VTEwgJiYgZHJ2LT5pbnN0YW5jZV9zaXplID4gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAg IAorCiAgICAgcmV0ID0gZHJ2LT5iZHJ2X29wZW4oYnMsIGZpbGVuYW1lKTsKICAgICBpZiAocmV0 IDwgMCkgewogICAgICAgICBxZW11X2ZyZWUoYnMtPm9wYXF1ZSk7CkBAIC0xNDYsNiArMTQ4LDgg QEAgaW50IGJkcnZfb3BlbjIoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGNvbgogICAgICAgICAgICAg Z290byBmYWlsOwogICAgIH0KIAorICAgIHNoZGV2X3NldF9tZWRpYV9pbnN0YW5jZShicyk7CisK ICAgICBicy0+aW5zZXJ0ZWQgPSAxOwogCiAgICAgLyogY2FsbCB0aGUgY2hhbmdlIGNhbGxiYWNr ICovCkBAIC0xNzAsNiArMTc0LDcgQEAgdm9pZCBiZHJ2X2Nsb3NlKEJsb2NrRHJpdmVyU3RhdGUg KmJzKQogICAgICAgICBicy0+b3BhcXVlID0gTlVMTDsKICAgICAgICAgYnMtPmRydiA9IE5VTEw7 CiAgICAgICAgIGJzLT5pbnNlcnRlZCA9IDA7CisgICAgICAgIGJzLT5tZWRpYV9pbnN0YW5jZSA9 IDA7CiAKICAgICAgICAgLyogY2FsbCB0aGUgY2hhbmdlIGNhbGxiYWNrICovCiAgICAgICAgIGlm IChicy0+Y2hhbmdlX2NiKQpAQCAtMjIyLDcgKzIyNyw3IEBAIGludCBiZHJ2X2NvbW1pdChCbG9j a0RyaXZlclN0YXRlICpicykKIH0KIAogLyogcmV0dXJuIC0xIGlmIGVycm9yICovCi1pbnQgYmRy dl9yZWFkKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sIAoraW50IGJk cnZfcmVhZChCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAogICAgICAg ICAgICAgICB1aW50OF90ICpidWYsIGludCBuYl9zZWN0b3JzKQogewogICAgIGludCByZXQsIG47 CkBAIC0yNjEsNyArMjY2LDcgQEAgaW50IGJkcnZfcmVhZChCbG9ja0RyaXZlclN0YXRlICpicywg aW50NgogfQogCiAvKiByZXR1cm4gLTEgaWYgZXJyb3IgKi8KLWludCBiZHJ2X3dyaXRlKEJsb2Nr RHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sIAoraW50IGJkcnZfd3JpdGUoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwKICAgICAgICAgICAgICAgIGNv bnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IG5iX3NlY3RvcnMpCiB7CiAgICAgaWYgKCFicy0+aW5zZXJ0 ZWQpCkBAIC0yODYsNyArMjkxLDcgQEAgdm9pZCBiZHJ2X3NldF9ib290X3NlY3RvcihCbG9ja0Ry aXZlclN0YQogICAgIG1lbXNldChicy0+Ym9vdF9zZWN0b3JfZGF0YSArIHNpemUsIDAsIDUxMiAt IHNpemUpOwogfQogCi12b2lkIGJkcnZfc2V0X2dlb21ldHJ5X2hpbnQoQmxvY2tEcml2ZXJTdGF0 ZSAqYnMsIAordm9pZCBiZHJ2X3NldF9nZW9tZXRyeV9oaW50KEJsb2NrRHJpdmVyU3RhdGUgKmJz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjeWxzLCBpbnQgaGVhZHMsIGludCBz ZWNzKQogewogICAgIGJzLT5jeWxzID0gY3lsczsKQEAgLTMwMSw3ICszMDYsNyBAQCB2b2lkIGJk cnZfc2V0X3R5cGVfaGludChCbG9ja0RyaXZlclN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAg dHlwZSA9PSBCRFJWX1RZUEVfRkxPUFBZKSk7CiB9CiAKLXZvaWQgYmRydl9nZXRfZ2VvbWV0cnlf aGludChCbG9ja0RyaXZlclN0YXRlICpicywgCit2b2lkIGJkcnZfZ2V0X2dlb21ldHJ5X2hpbnQo QmxvY2tEcml2ZXJTdGF0ZSAqYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpw Y3lscywgaW50ICpwaGVhZHMsIGludCAqcHNlY3MpCiB7CiAgICAgKnBjeWxzID0gYnMtPmN5bHM7 CkBAIC0zMzksNyArMzQ0LDcgQEAgdm9pZCBiZHJ2X3NldF9sb2NrZWQoQmxvY2tEcml2ZXJTdGF0 ZSAqYgogICAgIGJzLT5sb2NrZWQgPSBsb2NrZWQ7CiB9CiAKLXZvaWQgYmRydl9zZXRfY2hhbmdl X2NiKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCAKK3ZvaWQgYmRydl9zZXRfY2hhbmdlX2NiKEJsb2Nr RHJpdmVyU3RhdGUgKmJzLAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNoYW5nZV9j Yikodm9pZCAqb3BhcXVlKSwgdm9pZCAqb3BhcXVlKQogewogICAgIGJzLT5jaGFuZ2VfY2IgPSBj aGFuZ2VfY2I7CkBAIC0zNzcsNyArMzgyLDcgQEAgdm9pZCBiZHJ2X2dldF9mb3JtYXQoQmxvY2tE cml2ZXJTdGF0ZSAqYgogICAgIH0KIH0KIAotdm9pZCBiZHJ2X2l0ZXJhdGVfZm9ybWF0KHZvaWQg KCppdCkodm9pZCAqb3BhcXVlLCBjb25zdCBjaGFyICpuYW1lKSwgCit2b2lkIGJkcnZfaXRlcmF0 ZV9mb3JtYXQodm9pZCAoKml0KSh2b2lkICpvcGFxdWUsIGNvbnN0IGNoYXIgKm5hbWUpLAogICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSkKIHsKICAgICBCbG9ja0RyaXZlciAq ZHJ2OwpAQCAtMzg3LDcgKzM5Miw3IEBAIHZvaWQgYmRydl9pdGVyYXRlX2Zvcm1hdCh2b2lkICgq aXQpKHZvaWQKICAgICB9CiB9CiAKLUJsb2NrRHJpdmVyU3RhdGUgKmJkcnZfZmluZChjb25zdCBj aGFyICpuYW1lKQorQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maW5kX2J5X2RldmljZShjb25zdCBj aGFyICpuYW1lKQogewogICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzOwogCkBAIC0zOTYsNiArNDAx LDE1IEBAIEJsb2NrRHJpdmVyU3RhdGUgKmJkcnZfZmluZChjb25zdCBjaGFyICoKICAgICAgICAg ICAgIHJldHVybiBiczsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7Cit9CisKK0Jsb2NrRHJpdmVy U3RhdGUgKmJkcnZfZmluZF9icyhpbnQgKCppdCkoQmxvY2tEcml2ZXJTdGF0ZSAqLCB2b2lkICop LCB2b2lkICpvcGFxdWUpCit7CisgICAgQmxvY2tEcml2ZXJTdGF0ZSAqYnM7CisKKyAgICBmb3Ig KGJzID0gYmRydl9maXJzdDsgYnMgIT0gTlVMTCAmJiAhaXQoYnMsIG9wYXF1ZSk7IGJzID0gYnMt Pm5leHQpOworCisgICAgcmV0dXJuKCBicyApOwogfQogCiB2b2lkIGJkcnZfaXRlcmF0ZSh2b2lk ICgqaXQpKHZvaWQgKm9wYXF1ZSwgY29uc3QgY2hhciAqbmFtZSksIHZvaWQgKm9wYXF1ZSkKQEAg LTQ4MSwyOCArNDk1LDI4IEBAIHN0YXRpYyBpbnQgcmF3X29wZW4oQmxvY2tEcml2ZXJTdGF0ZSAq YnMKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCByYXdfcmVhZChCbG9ja0RyaXZlclN0 YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLCAKK3N0YXRpYyBpbnQgcmF3X3JlYWQoQmxvY2tE cml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwKICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9ycykKIHsKICAgICBCRFJWUmF3U3RhdGUgKnMgPSBi cy0+b3BhcXVlOwogICAgIGludCByZXQ7Ci0gICAgCisKICAgICBsc2VlayhzLT5mZCwgc2VjdG9y X251bSAqIDUxMiwgU0VFS19TRVQpOwogICAgIHJldCA9IHJlYWQocy0+ZmQsIGJ1ZiwgbmJfc2Vj dG9ycyAqIDUxMik7Ci0gICAgaWYgKHJldCAhPSBuYl9zZWN0b3JzICogNTEyKSAKLSAgICAgICAg cmV0dXJuIC0xOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJhd193cml0ZShCbG9j a0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLCAKKyAgICBpZiAocmV0ICE9IG5i X3NlY3RvcnMgKiA1MTIpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludCByYXdfd3JpdGUoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9y X251bSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IG5iX3Nl Y3RvcnMpCiB7CiAgICAgQkRSVlJhd1N0YXRlICpzID0gYnMtPm9wYXF1ZTsKICAgICBpbnQgcmV0 OwotICAgIAorCiAgICAgbHNlZWsocy0+ZmQsIHNlY3Rvcl9udW0gKiA1MTIsIFNFRUtfU0VUKTsK ICAgICByZXQgPSB3cml0ZShzLT5mZCwgYnVmLCBuYl9zZWN0b3JzICogNTEyKTsKLSAgICBpZiAo cmV0ICE9IG5iX3NlY3RvcnMgKiA1MTIpIAorICAgIGlmIChyZXQgIT0gbmJfc2VjdG9ycyAqIDUx MikKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiAwOwogfQpAQCAtNTIxLDcgKzUzNSw3 IEBAIHN0YXRpYyBpbnQgcmF3X2NyZWF0ZShjb25zdCBjaGFyICpmaWxlbmEKICAgICBpZiAoZmxh Z3MgfHwgYmFja2luZ19maWxlKQogICAgICAgICByZXR1cm4gLUVOT1RTVVA7CiAKLSAgICBmZCA9 IG9wZW4oZmlsZW5hbWUsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX0JJTkFSWSB8 IE9fTEFSR0VGSUxFLCAKKyAgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fV1JPTkxZIHwgT19DUkVB VCB8IE9fVFJVTkMgfCBPX0JJTkFSWSB8IE9fTEFSR0VGSUxFLAogICAgICAgICAgICAgICAwNjQ0 KTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gLUVJTzsKZGlmZiAtciBkYzIxM2Q3 NDU2NDIgdG9vbHMvaW9lbXUvYmxvY2tfaW50LmgKLS0tIGEvdG9vbHMvaW9lbXUvYmxvY2tfaW50 LmgJTW9uIE1heSAxNSAxNjozMjowOSAyMDA2ICswMTAwCisrKyBiL3Rvb2xzL2lvZW11L2Jsb2Nr X2ludC5oCVRodSBNYXkgMjUgMTQ6NTc6MTMgMjAwNiAtMDYwMApAQCAtMSw4ICsxLDggQEAKIC8q CiAgKiBRRU1VIFN5c3RlbSBFbXVsYXRvciBibG9jayBkcml2ZXIKLSAqIAorICoKICAqIENvcHly aWdodCAoYykgMjAwMyBGYWJyaWNlIEJlbGxhcmQKLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh IGNvcHkKICAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCkBA IC0yNCwzNiArMjQsMjIgQEAKICNpZm5kZWYgQkxPQ0tfSU5UX0gKICNkZWZpbmUgQkxPQ0tfSU5U X0gKIAotc3RydWN0IEJsb2NrRHJpdmVyIHsKLSAgICBjb25zdCBjaGFyICpmb3JtYXRfbmFtZTsK LSAgICBpbnQgaW5zdGFuY2Vfc2l6ZTsKLSAgICBpbnQgKCpiZHJ2X3Byb2JlKShjb25zdCB1aW50 OF90ICpidWYsIGludCBidWZfc2l6ZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotICAgIGludCAo KmJkcnZfb3BlbikoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK LSAgICBpbnQgKCpiZHJ2X3JlYWQpKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rv cl9udW0sIAotICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9y cyk7Ci0gICAgaW50ICgqYmRydl93cml0ZSkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qg c2VjdG9yX251bSwgCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmLCBp bnQgbmJfc2VjdG9ycyk7Ci0gICAgdm9pZCAoKmJkcnZfY2xvc2UpKEJsb2NrRHJpdmVyU3RhdGUg KmJzKTsKLSAgICBpbnQgKCpiZHJ2X2NyZWF0ZSkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludDY0 X3QgdG90YWxfc2VjdG9ycywgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJh Y2tpbmdfZmlsZSwgaW50IGZsYWdzKTsKLSAgICBpbnQgKCpiZHJ2X2lzX2FsbG9jYXRlZCkoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG5iX3NlY3RvcnMsIGludCAqcG51bSk7Ci0gICAgaW50ICgqYmRydl9z ZXRfa2V5KShCbG9ja0RyaXZlclN0YXRlICpicywgY29uc3QgY2hhciAqa2V5KTsKLSAgICBzdHJ1 Y3QgQmxvY2tEcml2ZXIgKm5leHQ7Ci19Oworc3RydWN0IEJsb2NrRHJpdmVyOwogCi1zdHJ1Y3Qg QmxvY2tEcml2ZXJTdGF0ZSB7Cit0eXBlZGVmIHN0cnVjdCBCbG9ja0RyaXZlclN0YXRlIHsKICAg ICBpbnQ2NF90IHRvdGFsX3NlY3RvcnM7CiAgICAgaW50IHJlYWRfb25seTsgLyogaWYgdHJ1ZSwg dGhlIG1lZGlhIGlzIHJlYWQgb25seSAqLwogICAgIGludCBpbnNlcnRlZDsgLyogaWYgdHJ1ZSwg dGhlIG1lZGlhIGlzIHByZXNlbnQgKi8KICAgICBpbnQgcmVtb3ZhYmxlOyAvKiBpZiB0cnVlLCB0 aGUgbWVkaWEgY2FuIGJlIHJlbW92ZWQgKi8KICAgICBpbnQgbG9ja2VkOyAgICAvKiBpZiB0cnVl LCB0aGUgbWVkaWEgY2Fubm90IHRlbXBvcmFyaWx5IGJlIGVqZWN0ZWQgKi8KICAgICBpbnQgZW5j cnlwdGVkOyAvKiBpZiB0cnVlLCB0aGUgbWVkaWEgaXMgZW5jcnlwdGVkICovCisgICAgaW50IG1l ZGlhX2luc3RhbmNlOworICAgIGludCBzaGRldl9lbDsKICAgICAvKiBldmVudCBjYWxsYmFjayB3 aGVuIGluc2VydGluZy9yZW1vdmluZyAqLwogICAgIHZvaWQgKCpjaGFuZ2VfY2IpKHZvaWQgKm9w YXF1ZSk7CiAgICAgdm9pZCAqY2hhbmdlX29wYXF1ZTsKIAotICAgIEJsb2NrRHJpdmVyICpkcnY7 CisgICAgc3RydWN0IEJsb2NrRHJpdmVyICpkcnY7CiAgICAgdm9pZCAqb3BhcXVlOwogCiAgICAg aW50IGJvb3Rfc2VjdG9yX2VuYWJsZWQ7CkBAIC02MywxNSArNDksMzQgQEAgc3RydWN0IEJsb2Nr RHJpdmVyU3RhdGUgewogICAgIGNoYXIgYmFja2luZ19maWxlWzEwMjRdOyAvKiBpZiBub24gemVy bywgdGhlIGltYWdlIGlzIGEgZGlmZiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGlzIGZpbGUgaW1hZ2UgKi8KICAgICBpbnQgaXNfdGVtcG9yYXJ5OwotICAgIAotICAgIEJs b2NrRHJpdmVyU3RhdGUgKmJhY2tpbmdfaGQ7Ci0gICAgCisKKyAgICBzdHJ1Y3QgQmxvY2tEcml2 ZXJTdGF0ZSAqYmFja2luZ19oZDsKKwogICAgIC8qIE5PVEU6IHRoZSBmb2xsb3dpbmcgaW5mb3Mg YXJlIG9ubHkgaGludHMgZm9yIHJlYWwgaGFyZHdhcmUKICAgICAgICBkcml2ZXJzLiBUaGV5IGFy ZSBub3QgdXNlZCBieSB0aGUgYmxvY2sgZHJpdmVyICovCiAgICAgaW50IGN5bHMsIGhlYWRzLCBz ZWNzOwogICAgIGludCB0eXBlOwogICAgIGNoYXIgZGV2aWNlX25hbWVbMzJdOwotICAgIEJsb2Nr RHJpdmVyU3RhdGUgKm5leHQ7Ci19OworICAgIHN0cnVjdCBCbG9ja0RyaXZlclN0YXRlICpuZXh0 OworfSBCbG9ja0RyaXZlclN0YXRlOworCit0eXBlZGVmIHN0cnVjdCBCbG9ja0RyaXZlciB7Cisg ICAgY29uc3QgY2hhciAqZm9ybWF0X25hbWU7CisgICAgaW50IGluc3RhbmNlX3NpemU7CisgICAg aW50ICgqYmRydl9wcm9iZSkoY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKTsKKyAgICBpbnQgKCpiZHJ2X29wZW4pKEJsb2NrRHJpdmVyU3RhdGUg KmJzLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisgICAgaW50ICgqYmRydl9yZWFkKShCbG9ja0Ry aXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLAorICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9ycyk7CisgICAgaW50ICgqYmRydl93cml0ZSkoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwKKyAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBuYl9zZWN0b3JzKTsKKyAgICB2b2lkICgqYmRy dl9jbG9zZSkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOworICAgIGludCAoKmJkcnZfY3JlYXRlKShj b25zdCBjaGFyICpmaWxlbmFtZSwgaW50NjRfdCB0b3RhbF9zZWN0b3JzLAorICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpiYWNraW5nX2ZpbGUsIGludCBmbGFncyk7CisgICAgaW50 ICgqYmRydl9pc19hbGxvY2F0ZWQpKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rv cl9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYl9zZWN0b3JzLCBpbnQg KnBudW0pOworICAgIGludCAoKmJkcnZfc2V0X2tleSkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGNv bnN0IGNoYXIgKmtleSk7CisgICAgc3RydWN0IEJsb2NrRHJpdmVyICpuZXh0OworfSBCbG9ja0Ry aXZlcjsKKwogCiAjZW5kaWYgLyogQkxPQ0tfSU5UX0ggKi8KZGlmZiAtciBkYzIxM2Q3NDU2NDIg dG9vbHMvaW9lbXUvaHcvaWRlLmMKLS0tIGEvdG9vbHMvaW9lbXUvaHcvaWRlLmMJTW9uIE1heSAx NSAxNjozMjowOSAyMDA2ICswMTAwCisrKyBiL3Rvb2xzL2lvZW11L2h3L2lkZS5jCVRodSBNYXkg MjUgMTQ6NTc6MTMgMjAwNiAtMDYwMApAQCAtMjc4LDYgKzI3OCw3IEBACiAjZGVmaW5lIEFTQ19J TExFR0FMX09QQ09ERSAgICAgICAgICAgICAgICAgICAweDIwCiAjZGVmaW5lIEFTQ19MT0dJQ0FM X0JMT0NLX09PUiAgICAgICAgICAgICAgICAweDIxCiAjZGVmaW5lIEFTQ19JTlZfRklFTERfSU5f Q01EX1BBQ0tFVCAgICAgICAgICAweDI0CisjZGVmaW5lIEFTQ19NRURJQV9DSEFOR0VECQkgICAg IDB4MjgKICNkZWZpbmUgQVNDX01FRElVTV9OT1RfUFJFU0VOVCAgICAgICAgICAgICAgIDB4M2EK ICNkZWZpbmUgQVNDX1NBVklOR19QQVJBTUVURVJTX05PVF9TVVBQT1JURUQgIDB4MzkKIApAQCAt Mjk0LDYgKzI5NSw3IEBAIHR5cGVkZWYgc3RydWN0IElERVN0YXRlIHsKIHR5cGVkZWYgc3RydWN0 IElERVN0YXRlIHsKICAgICAvKiBpZGUgY29uZmlnICovCiAgICAgaW50IGlzX2Nkcm9tOworICAg IGludCBtZWRpYV9jaGFuZ2VkOwogICAgIGludCBjeWxpbmRlcnMsIGhlYWRzLCBzZWN0b3JzOwog ICAgIGludDY0X3QgbmJfc2VjdG9yczsKICAgICBpbnQgbXVsdF9zZWN0b3JzOwpAQCAtMTEzMiwx MSArMTEzNCwzNCBAQCBzdGF0aWMgaW50IGNkcm9tX3JlYWRfdG9jX3JhdyhJREVTdGF0ZSAqCiAg ICAgcmV0dXJuIGxlbjsKIH0KIAorc3RhdGljIGludCBjZF9tZWRpYV9pbnNlcnRlZChJREVTdGF0 ZSAqcykKK3sKKyAgICBpbnQgaCwgeCA9IDA7CisKKyAgICBpZiAocy0+YnMtPnJlbW92YWJsZSkg eworICAgICAgICBoID0gb3BlbihzLT5icy0+ZmlsZW5hbWUsIE9fTk9OQkxPQ0ssIE9fUkRPTkxZ KTsKKworICAgICAgICBpZiAoaCA+PSAwKSB7CisJICAgIHggPSBmY250bChoLCBGX0dFVEZMKTsK KyAgICAgICAgICAgIHggJj0gfk9fTk9OQkxPQ0s7CisgICAgICAgICAgICBmY250bChoLCBGX1NF VEZMLCB4KTsKKworCSAgICB4ID0gcmVhZChoLCAmeCwgc2l6ZW9mKHgpKTsKKwkgICAgY2xvc2Uo aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSAKKwl4ID0gc2l6ZW9mKCB4ICk7CisKKyAg ICByZXR1cm4oKHggPT0gc2l6ZW9mKHgpKSk7Cit9CisJCiBzdGF0aWMgdm9pZCBpZGVfYXRhcGlf Y21kKElERVN0YXRlICpzKQogewogICAgIGNvbnN0IHVpbnQ4X3QgKnBhY2tldDsKICAgICB1aW50 OF90ICpidWY7CiAgICAgaW50IG1heF9sZW47CisKIAogICAgIHBhY2tldCA9IHMtPmlvX2J1ZmZl cjsKICAgICBidWYgPSBzLT5pb19idWZmZXI7CkBAIC0xMTUwLDEzICsxMTc1LDI4IEBAIHN0YXRp YyB2b2lkIGlkZV9hdGFwaV9jbWQoSURFU3RhdGUgKnMpCiAgICAgICAgIHByaW50ZigiXG4iKTsK ICAgICB9CiAjZW5kaWYKKwogICAgIHN3aXRjaChzLT5pb19idWZmZXJbMF0pIHsKICAgICBjYXNl IEdQQ01EX1RFU1RfVU5JVF9SRUFEWToKICAgICAgICAgaWYgKGJkcnZfaXNfaW5zZXJ0ZWQocy0+ YnMpKSB7Ci0gICAgICAgICAgICBpZGVfYXRhcGlfY21kX29rKHMpOworCSAgICBpZiAocy0+bWVk aWFfY2hhbmdlZCkgeworCQlzLT5tZWRpYV9jaGFuZ2VkID0gMDsKKyAgICAgICAgICAgIAlpZGVf YXRhcGlfY21kX2Vycm9yKHMsIFNFTlNFX1VOSVRfQVRURU5USU9OLCBBU0NfTUVESUFfQ0hBTkdF RCk7CisJICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworCQlpZiAoIWNkX21lZGlhX2luc2VydGVk KHMpIHx8IHNoZGV2X21lZGlhX2NoZWNrKHMtPmJzKSkgeworCQkgICAgYmRydl9jbG9zZShzLT5i cyk7CisgICAgICAgICAgICAgICAgICAgIGlkZV9hdGFwaV9jbWRfZXJyb3IocywgU0VOU0VfTk9U X1JFQURZLCBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICAgICAgaWRlX2F0YXBpX2NtZF9vayhz KTsKKwkgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWRlX2F0YXBpX2NtZF9l cnJvcihzLCBTRU5TRV9OT1RfUkVBRFksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKKyAgICAgICAgICAgIGlkZV9hdGFwaV9jbWRfZXJy b3IocywgU0VOU0VfTk9UX1JFQURZLCBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKKworICAgICAg ICAgICAgaWYgKGNkX21lZGlhX2luc2VydGVkKHMpKSB7CisJCSAgICBkb19pbnNlcnRfcmVxdWVz dCgpOworCSAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHUENNRF9N T0RFX1NFTlNFXzEwOgpAQCAtMTI4OCw2ICsxMzI4LDEzIEBAIHN0YXRpYyB2b2lkIGlkZV9hdGFw aV9jbWQoSURFU3RhdGUgKnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB U0NfTUVESVVNX05PVF9QUkVTRU5UKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgaWYgKHNoZGV2X21lZGlhX2NoZWNrKHMtPmJzKSkgeworCQli ZHJ2X2Nsb3NlKHMtPmJzKTsKKyAgICAgICAgICAgICAgICBpZGVfYXRhcGlfY21kX2Vycm9yKHMs IFNFTlNFX05PVF9SRUFEWSwgQVNDX01FRElVTV9OT1RfUFJFU0VOVCk7CisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG5iX3NlY3RvcnMgPSAocGFj a2V0WzZdIDw8IDE2KSB8IChwYWNrZXRbN10gPDwgOCkgfCBwYWNrZXRbOF07CiAgICAgICAgICAg ICBsYmEgPSB1YmUzMl90b19jcHUocGFja2V0ICsgMik7CiAgICAgICAgICAgICBpZiAobmJfc2Vj dG9ycyA9PSAwKSB7CkBAIC0xMzQ1LDcgKzEzOTIsNyBAQCBzdGF0aWMgdm9pZCBpZGVfYXRhcGlf Y21kKElERVN0YXRlICpzKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZWplY3QgJiYg IXN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgLyogZWplY3QgdGhlIGRpc2sgKi8KLSAgICAgICAg ICAgICAgICBiZHJ2X2Nsb3NlKHMtPmJzKTsKKyAgICAgICAgICAgICAgICBkb19lamVjdCgxLCBz LT5icy0+ZGV2aWNlX25hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWRlX2F0YXBp X2NtZF9vayhzKTsKICAgICAgICAgfQpAQCAtMTM3Miw2ICsxNDE5LDEzIEBAIHN0YXRpYyB2b2lk IGlkZV9hdGFwaV9jbWQoSURFU3RhdGUgKnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBU0NfTUVESVVNX05PVF9QUkVTRU5UKTsKICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNoZGV2X21lZGlhX2NoZWNrKHMtPmJz KSkgeworCQliZHJ2X2Nsb3NlKHMtPmJzKTsKKyAgICAgICAgICAgICAgICBpZGVfYXRhcGlfY21k X2Vycm9yKHMsIFNFTlNFX05PVF9SRUFEWSwgQVNDX01FRElVTV9OT1RfUFJFU0VOVCk7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1heF9sZW4g PSB1YmUxNl90b19jcHUocGFja2V0ICsgNyk7CiAgICAgICAgICAgICBmb3JtYXQgPSBwYWNrZXRb OV0gPj4gNjsKICAgICAgICAgICAgIG1zZiA9IChwYWNrZXRbMV0gPj4gMSkgJiAxOwpAQCAtMTQ0 NCw5ICsxNDk4LDkgQEAgc3RhdGljIHZvaWQgY2Ryb21fY2hhbmdlX2NiKHZvaWQgKm9wYXF1ZQog ICAgIElERVN0YXRlICpzID0gb3BhcXVlOwogICAgIGludDY0X3QgbmJfc2VjdG9yczsKIAotICAg IC8qIFhYWDogc2VuZCBpbnRlcnJ1cHQgdG9vICovCiAgICAgYmRydl9nZXRfZ2VvbWV0cnkocy0+ YnMsICZuYl9zZWN0b3JzKTsKICAgICBzLT5uYl9zZWN0b3JzID0gbmJfc2VjdG9yczsKKyAgICBz LT5tZWRpYV9jaGFuZ2VkID0gMTsKIH0KIAogc3RhdGljIHZvaWQgaWRlX2lvcG9ydF93cml0ZSh2 b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKQEAgLTE2MzEsNiArMTY4 NSw3IEBAIHN0YXRpYyB2b2lkIGlkZV9pb3BvcnRfd3JpdGUodm9pZCAqb3BhcXUKICAgICAgICAg ICAgIGlkZV9zZXRfc2lnbmF0dXJlKHMpOwogICAgICAgICAgICAgcy0+c3RhdHVzID0gMHgwMDsg LyogTk9URTogUkVBRFkgaXMgX25vdF8gc2V0ICovCiAgICAgICAgICAgICBzLT5lcnJvciA9IDB4 MDE7CisJICAgIHMtPm1lZGlhX2NoYW5nZWQgPSAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgV0lOX1BBQ0tFVENNRDoKICAgICAgICAgICAgIGlmICghcy0+aXNfY2Ryb20pCmRp ZmYgLXIgZGMyMTNkNzQ1NjQyIHRvb2xzL2lvZW11L21vbml0b3IuYwotLS0gYS90b29scy9pb2Vt dS9tb25pdG9yLmMJTW9uIE1heSAxNSAxNjozMjowOSAyMDA2ICswMTAwCisrKyBiL3Rvb2xzL2lv ZW11L21vbml0b3IuYwlUaHUgTWF5IDI1IDE0OjU3OjEzIDIwMDYgLTA2MDAKQEAgLTEsOCArMSw4 IEBACiAvKgogICogUUVNVSBtb25pdG9yCi0gKiAKKyAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMt MjAwNCBGYWJyaWNlIEJlbGxhcmQKLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICAq IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCkBAIC0yMyw2ICsy Myw3IEBACiAgKi8KICNpbmNsdWRlICJ2bC5oIgogI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1 ZGUgPHN5cy9zaG0uaD4KIAogLy8jZGVmaW5lIERFQlVHCiAvLyNkZWZpbmUgREVCVUdfQ09NUExF VElPTgpAQCAtMzMsNyArMzQsNyBAQAogCiAvKgogICogU3VwcG9ydGVkIHR5cGVzOgotICogCisg KgogICogJ0YnICAgICAgICAgIGZpbGVuYW1lCiAgKiAnQicgICAgICAgICAgYmxvY2sgZGV2aWNl IG5hbWUKICAqICdzJyAgICAgICAgICBzdHJpbmcgKGFjY2VwdCBvcHRpb25hbCBxdW90ZSkKQEAg LTY2LDcgKzY3LDcgQEAgdm9pZCB0ZXJtX2ZsdXNoKHZvaWQpCiB7CiAgICAgaWYgKHRlcm1fb3V0 YnVmX2luZGV4ID4gMCkgewogCWlmKG1vbml0b3JfaGQpCi0gICAgICAgIHFlbXVfY2hyX3dyaXRl KG1vbml0b3JfaGQsIHRlcm1fb3V0YnVmLCB0ZXJtX291dGJ1Zl9pbmRleCk7CisgICAgICAgIHFl bXVfY2hyX3dyaXRlKG1vbml0b3JfaGQsIChjb25zdCB1aW50OF90ICopdGVybV9vdXRidWYsIHRl cm1fb3V0YnVmX2luZGV4KTsKIAllbHNlCiAJICAgIGZ3cml0ZSh0ZXJtX291dGJ1ZiwgdGVybV9v dXRidWZfaW5kZXgsIDEsIHN0ZGVycik7CiAgICAgICAgIHRlcm1fb3V0YnVmX2luZGV4ID0gMDsK QEAgLTI0MCw3ICsyNDEsNyBAQCBzdGF0aWMgY29uc3QgS2V5RGVmIGtleV9kZWZzW10gPSB7CiBz dGF0aWMgY29uc3QgS2V5RGVmIGtleV9kZWZzW10gPSB7CiAgICAgeyAweDJhLCAic2hpZnQiIH0s CiAgICAgeyAweDM2LCAic2hpZnRfciIgfSwKLSAgICAKKwogICAgIHsgMHgzOCwgImFsdCIgfSwK ICAgICB7IDB4YjgsICJhbHRfciIgfSwKICAgICB7IDB4MWQsICJjdHJsIiB9LApAQCAtMjkzLDcg KzI5NCw3IEBAIHN0YXRpYyBjb25zdCBLZXlEZWYga2V5X2RlZnNbXSA9IHsKICAgICB7IDB4MzAs ICJiIiB9LAogICAgIHsgMHgzMSwgIm4iIH0sCiAgICAgeyAweDMyLCAibSIgfSwKLSAgICAKKwog ICAgIHsgMHgzOSwgInNwYyIgfSwKICAgICB7IDB4M2EsICJjYXBzX2xvY2siIH0sCiAgICAgeyAw eDNiLCAiZjEiIH0sCkBAIC0zNDgsNyArMzQ5LDcgQEAgc3RhdGljIHZvaWQgZG9fc2VuZF9rZXko Y29uc3QgY2hhciAqc3RyaQogICAgIHVpbnQ4X3Qga2V5Y29kZXNbMTZdOwogICAgIGNvbnN0IGNo YXIgKnA7CiAgICAgaW50IG5iX2tleWNvZGVzLCBrZXljb2RlLCBpOwotICAgIAorCiAgICAgbmJf a2V5Y29kZXMgPSAwOwogICAgIHAgPSBzdHJpbmc7CiAgICAgd2hpbGUgKCpwICE9ICdcMCcpIHsK QEAgLTM4Nyw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCBkb19zZW5kX2tleShjb25zdCBjaGFyICpz dHJpCiB9CiAKIAotc3RhdGljIGludCBlamVjdF9kZXZpY2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMs IGludCBmb3JjZSkKK3N0YXRpYyBpbnQgZWplY3RfbG9naWNhbF9kZXZpY2UoQmxvY2tEcml2ZXJT dGF0ZSAqYnMsIGludCBmb3JjZSkKIHsKICAgICBpZiAoYmRydl9pc19pbnNlcnRlZChicykpIHsK ICAgICAgICAgaWYgKCFmb3JjZSkgewpAQCAtNDA1LDIzICs0MDYsNTcgQEAgc3RhdGljIGludCBl amVjdF9kZXZpY2UoQmxvY2tEcml2ZXJTdGF0ZQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMg dm9pZCBkb19lamVjdChpbnQgZm9yY2UsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQordm9pZCBkb19l amVjdChpbnQgZm9yY2UsIGNvbnN0IGNoYXIgKmRldmljZSkKIHsKICAgICBjaGFyIGNtZFsxMDI0 XTsKICAgICBCbG9ja0RyaXZlclN0YXRlICpiczsKIAotICAgIGJzID0gYmRydl9maW5kKGZpbGVu YW1lKTsKKyAgICBicyA9IGJkcnZfZmluZF9ieV9kZXZpY2UoZGV2aWNlKTsKKwogICAgIGlmICgh YnMpIHsKLSAgICAgICAgdGVybV9wcmludGYoImRldmljZSBub3QgZm91bmRcbiIpOworICAgICAg ICB0ZXJtX3ByaW50ZigiJyVzJyBub3QgZm91bmRcbiIsIGRldmljZSk7CiAgICAgICAgIHJldHVy bjsKICAgICB9Ci0gICAgZWplY3RfZGV2aWNlKGJzLCBmb3JjZSk7Ci0gICAgc3ByaW50ZihjbWQs ICJlamVjdCAlcyIsIGZpbGVuYW1lKTsKLSAgICBzeXN0ZW0oY21kKTsKLQotfQotCi1zdGF0aWMg dm9pZCBkb19jaGFuZ2UoY29uc3QgY2hhciAqZGV2aWNlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkK KworICAgIGlmIChlamVjdF9sb2dpY2FsX2RldmljZShicywgZm9yY2UpID09IDApIHsKKyAgICAg ICAgc2hkZXZfZWplY3Rfbm90aWNlKGJzKTsKKyAgICAgICAgc3ByaW50ZihjbWQsICJlamVjdCAl cyIsIGJzLT5maWxlbmFtZSk7CisgICAgICAgIHN5c3RlbShjbWQpOworICAgIH0KK30KKwordm9p ZCBkb19pbnNlcnQoY29uc3QgY2hhciAqZGV2aWNlKQoreworICAgIEJsb2NrRHJpdmVyU3RhdGUg KmJzOworCisgICAgYnMgPSBiZHJ2X2ZpbmRfYnlfZGV2aWNlKGRldmljZSk7CisKKyAgICBpZiAo IWJzKSB7CisgICAgICAgIHRlcm1fcHJpbnRmKCInJXMnIG5vdCBmb3VuZFxuIiwgZGV2aWNlKTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghYnMtPnJlbW92YWJsZSkgeworICAg ICAgICB0ZXJtX3ByaW50ZigiJyVzJyBub3QgcmVtb3ZhYmxlXG4iLCBkZXZpY2UpOworICAgICAg ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGJzLT5pbnNlcnRlZCkgeworICAgICAgICB0ZXJt X3ByaW50ZigiJyVzJyBpcyBhbHJlYWR5IGluc2VydGVkXG4iLCBkZXZpY2UpOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgYmRydl9vcGVuKGJzLCBicy0+ZmlsZW5hbWUsIDApOworfQor CitzdGF0aWMgaW50IGZpbmRfYnNfYnlfdHlwZShCbG9ja0RyaXZlclN0YXRlICpicywgdm9pZCAq b3BhcXVlKQoreworICAgaW50ICp0eXBlID0gKGludCAqKW9wYXF1ZTsKKworICAgcmV0dXJuKCAo YnMtPnR5cGUgPT0gKnR5cGUpICk7Cit9CisKK3N0YXRpYyB2b2lkIGRvX2NoYW5nZV9zb3VyY2Uo Y29uc3QgY2hhciAqZGV2aWNlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBCbG9ja0Ry aXZlclN0YXRlICpiczsKICNpZiAwCkBAIC00MjksMTQgKzQ2NCwxOCBAQCBzdGF0aWMgdm9pZCBk b19jaGFuZ2UoY29uc3QgY2hhciAqZGV2aWNlCiAgICAgY2hhciBwYXNzd29yZFsyNTZdOwogI2Vu ZGlmCiAKLSAgICBicyA9IGJkcnZfZmluZChkZXZpY2UpOworICAgIGJzID0gYmRydl9maW5kX2J5 X2RldmljZShkZXZpY2UpOworCiAgICAgaWYgKCFicykgewogICAgICAgICB0ZXJtX3ByaW50Zigi ZGV2aWNlIG5vdCBmb3VuZFxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGVq ZWN0X2RldmljZShicywgMCkgPCAwKQorCisgICAgaWYgKGVqZWN0X2xvZ2ljYWxfZGV2aWNlKGJz LCAwKSA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICBiZHJ2X29wZW4oYnMsIGZpbGVuYW1lLCAw KTsKKworICAgIGRvX2luc2VydChicy0+ZGV2aWNlX25hbWUpOworCiAjaWYgMAogICAgIGlmIChi ZHJ2X2lzX2VuY3J5cHRlZChicykpIHsKICAgICAgICAgdGVybV9wcmludGYoIiVzIGlzIGVuY3J5 cHRlZC5cbiIsIGRldmljZSk7CkBAIC00NDgsNiArNDg3LDIwIEBAIHN0YXRpYyB2b2lkIGRvX2No YW5nZShjb25zdCBjaGFyICpkZXZpY2UKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorfQorCit2 b2lkIGRvX2luc2VydF9yZXF1ZXN0KCkKK3sKKyAgICBCbG9ja0RyaXZlclN0YXRlICpicyA9IE5V TEw7CisgICAgaW50IHR5cGUgPSBCRFJWX1RZUEVfQ0RST007CisKKyAgICBicyA9IGJkcnZfZmlu ZF9icyhmaW5kX2JzX2J5X3R5cGUsICZ0eXBlKTsKKworICAgIGlmIChicykgeworICAgICAgICBk b19jaGFuZ2Vfc291cmNlKGJzLT5kZXZpY2VfbmFtZSwgYnMtPmZpbGVuYW1lKTsKKyAgICB9Cisg ICAgZWxzZQorICAgICAgICB0ZXJtX3ByaW50ZigiRGlkIG5vdCBmaW5kIGNkcm9tIGJzLlxuIik7 CiB9CiAKIHN0YXRpYyB2b2lkIGRvX3NjcmVlbl9kdW1wKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQpA QCAtNDgyLDE3ICs1MzUsMTkgQEAgc3RhdGljIHRlcm1fY21kX3QgdGVybV9jbWRzW10gPSB7CiAg ICAgICAiIiwgInF1aXQgdGhlIGVtdWxhdG9yIiB9LAogICAgIHsgImVqZWN0IiwgIi1mQiIsIGRv X2VqZWN0LAogICAgICAgIlstZl0gZGV2aWNlIiwgImVqZWN0IGEgcmVtb3ZhYmxlIG1lZGlhICh1 c2UgLWYgdG8gZm9yY2UgaXQpIiB9LAotICAgIHsgImNoYW5nZSIsICJCRiIsIGRvX2NoYW5nZSwK LSAgICAgICJkZXZpY2UgZmlsZW5hbWUiLCAiY2hhbmdlIGEgcmVtb3ZhYmxlIG1lZGlhIiB9LAor ICAgIHsgImluc2VydCIsICJCIiwgZG9faW5zZXJ0LAorICAgICAgImRldmljZSIsICJub3RpZmll cyBxZW11IG9mIGluc2VydGVkIHJlbW92YWJsZSBtZWRpYS4iIH0sCisgICAgeyAiY2hhbmdlIiwg IkJGIiwgZG9fY2hhbmdlX3NvdXJjZSwKKyAgICAgICJkZXZpY2UgZmlsZW5hbWUiLCAiY2hhbmdl IHNvdXJjZSBmb3IgdmlydHVhbCByZW1vdmFibGUtbWVkaWEgZGV2aWNlLiIgfSwKICAgICB7ICJz Y3JlZW5kdW1wIiwgIkYiLCBkb19zY3JlZW5fZHVtcCwKICAgICAgICJmaWxlbmFtZSIsICJzYXZl IHNjcmVlbiBpbnRvIFBQTSBpbWFnZSAnZmlsZW5hbWUnIiB9LAogICAgIHsgImxvZyIsICJzIiwg ZG9fbG9nLAogICAgICAgIml0ZW0xWywuLi5dIiwgImFjdGl2YXRlIGxvZ2dpbmcgb2YgdGhlIHNw ZWNpZmllZCBpdGVtcyB0byAnL3RtcC9xZW11LmxvZyciIH0sCiAgICAgeyAicXxxdWl0IiwgIiIs IGRvX3F1aXQsCiAgICAgICAiIiwgInF1aXQgdGhlIGVtdWxhdG9yIiB9LAotICAgIHsgInNlbmRr ZXkiLCAicyIsIGRvX3NlbmRfa2V5LCAKKyAgICB7ICJzZW5ka2V5IiwgInMiLCBkb19zZW5kX2tl eSwKICAgICAgICJrZXlzIiwgInNlbmQga2V5cyB0byB0aGUgVk0gKGUuZy4gJ3NlbmRrZXkgY3Ry bC1hbHQtZjEnKSIgfSwKLSAgICB7IE5VTEwsIE5VTEwsIH0sIAorICAgIHsgTlVMTCwgTlVMTCwg fSwKIH07CiAKIHN0YXRpYyB0ZXJtX2NtZF90IGluZm9fY21kc1tdID0gewpAQCAtNTk2LDcgKzY1 MSw3IEBAIHN0YXRpYyB2b2lkIG1vbml0b3JfaGFuZGxlX2NvbW1hbmQoY29uc3QKICNpZmRlZiBE RUJVRwogICAgIHRlcm1fcHJpbnRmKCJjb21tYW5kPSclcydcbiIsIGNtZGxpbmUpOwogI2VuZGlm Ci0gICAgCisKICAgICAvKiBleHRyYWN0IHRoZSBjb21tYW5kIG5hbWUgKi8KICAgICBwID0gY21k bGluZTsKICAgICBxID0gY21kbmFtZTsKQEAgLTYxMiwxMCArNjY3LDEwIEBAIHN0YXRpYyB2b2lk IG1vbml0b3JfaGFuZGxlX2NvbW1hbmQoY29uc3QKICAgICAgICAgbGVuID0gc2l6ZW9mKGNtZG5h bWUpIC0gMTsKICAgICBtZW1jcHkoY21kbmFtZSwgcHN0YXJ0LCBsZW4pOwogICAgIGNtZG5hbWVb bGVuXSA9ICdcMCc7Ci0gICAgCisKICAgICAvKiBmaW5kIHRoZSBjb21tYW5kICovCiAgICAgZm9y KGNtZCA9IHRlcm1fY21kczsgY21kLT5uYW1lICE9IE5VTEw7IGNtZCsrKSB7Ci0gICAgICAgIGlm IChjb21wYXJlX2NtZChjbWRuYW1lLCBjbWQtPm5hbWUpKSAKKyAgICAgICAgaWYgKGNvbXBhcmVf Y21kKGNtZG5hbWUsIGNtZC0+bmFtZSkpCiAgICAgICAgICAgICBnb3RvIGZvdW5kOwogICAgIH0K ICAgICB0ZXJtX3ByaW50ZigidW5rbm93biBjb21tYW5kOiAnJXMnXG4iLCBjbWRuYW1lKTsKQEAg LTYyNCw3ICs2NzksNyBAQCBzdGF0aWMgdm9pZCBtb25pdG9yX2hhbmRsZV9jb21tYW5kKGNvbnN0 CiAKICAgICBmb3IoaSA9IDA7IGkgPCBNQVhfQVJHUzsgaSsrKQogICAgICAgICBzdHJfYWxsb2Nh dGVkW2ldID0gTlVMTDsKLSAgICAKKwogICAgIC8qIHBhcnNlIHRoZSBwYXJhbWV0ZXJzICovCiAg ICAgdHlwZXN0ciA9IGNtZC0+YXJnc190eXBlOwogICAgIG5iX2FyZ3MgPSAwOwpAQCAtNzE3LDcg Kzc3Miw3IEBAIHN0YXRpYyB2b2lkIG1vbml0b3JfaGFuZGxlX2NvbW1hbmQoY29uc3QKICAgICB3 aGlsZSAoaXNzcGFjZSgqcCkpCiAgICAgICAgIHArKzsKICAgICBpZiAoKnAgIT0gJ1wwJykgewot ICAgICAgICB0ZXJtX3ByaW50ZigiJXM6IGV4dHJhbmVvdXMgY2hhcmFjdGVycyBhdCB0aGUgZW5k IG9mIGxpbmVcbiIsIAorICAgICAgICB0ZXJtX3ByaW50ZigiJXM6IGV4dHJhbmVvdXMgY2hhcmFj dGVycyBhdCB0aGUgZW5kIG9mIGxpbmVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNtZG5hbWUp OwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQpkaWZmIC1yIGRjMjEzZDc0NTY0MiB0b29scy9p b2VtdS90YXJnZXQtaTM4Ni1kbS9NYWtlZmlsZQotLS0gYS90b29scy9pb2VtdS90YXJnZXQtaTM4 Ni1kbS9NYWtlZmlsZQlNb24gTWF5IDE1IDE2OjMyOjA5IDIwMDYgKzAxMDAKKysrIGIvdG9vbHMv aW9lbXUvdGFyZ2V0LWkzODYtZG0vTWFrZWZpbGUJVGh1IE1heSAyNSAxNDo1NzoxMyAyMDA2IC0w NjAwCkBAIC0yNTAsNyArMjUwLDcgQEAgZW5kaWYKIGVuZGlmCiAKICMgbXVzdCB1c2Ugc3RhdGlj IGxpbmtpbmcgdG8gYXZvaWQgbGVhdmluZyBzdHVmZiBpbiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UK LVZMX09CSlM9dmwubyBleGVjLm8gbW9uaXRvci5vIG9zZGVwLm8gYmxvY2subyByZWFkbGluZS5v IHBjaS5vIGNvbnNvbGUubyAKK1ZMX09CSlM9dmwubyBleGVjLm8gbW9uaXRvci5vIHNoZGV2Lm8g b3NkZXAubyBibG9jay5vIHJlYWRsaW5lLm8gcGNpLm8gY29uc29sZS5vIAogVkxfT0JKUys9Ymxv Y2stY293Lm8gYmxvY2stcWNvdy5vIGJsb2NrLXZtZGsubyBibG9jay1jbG9vcC5vIGFlcy5vCiAj VkxfT0JKUys9IGJsb2NrLWNsb29wLm8KIApkaWZmIC1yIGRjMjEzZDc0NTY0MiB0b29scy9pb2Vt dS92bC5jCi0tLSBhL3Rvb2xzL2lvZW11L3ZsLmMJTW9uIE1heSAxNSAxNjozMjowOSAyMDA2ICsw MTAwCisrKyBiL3Rvb2xzL2lvZW11L3ZsLmMJVGh1IE1heSAyNSAxNDo1NzoxMyAyMDA2IC0wNjAw CkBAIC04MTgsNyArODE4LDcgQEAgc3RhdGljIHZvaWQgaW5pdF90aW1lcnModm9pZCkKICAgICB7 CiAgICAgICAgIC8qIGdldCB0aW1lcygpIHN5c2NhbGwgZnJlcXVlbmN5ICovCiAgICAgICAgIHRp bWVyX2ZyZXEgPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKLSAgICAgIAorCiAjaWZuZGVmIFRBUkdF VF9IVk0KICAgICAgICAgLyogdGltZXIgc2lnbmFsICovCiAgICAgICAgIHNpZ2ZpbGxzZXQoJmFj dC5zYV9tYXNrKTsKQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIHFlbXVfY2hyX3ByaW50ZihDaGFy RHJpdmVyU3RhdGUgKnMsCiAgICAgdmFfbGlzdCBhcDsKICAgICB2YV9zdGFydChhcCwgZm10KTsK ICAgICB2c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm10LCBhcCk7Ci0gICAgcWVtdV9jaHJf d3JpdGUocywgYnVmLCBzdHJsZW4oYnVmKSk7CisgICAgcWVtdV9jaHJfd3JpdGUocywgKHVpbnQ4 X3QgKikgYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgdmFfZW5kKGFwKTsKIH0KIApAQCAtOTU0LDcg Kzk1NCw3IEBAIHN0YXRpYyBpbnQgdW5peF93cml0ZShpbnQgZmQsIGNvbnN0IHVpbnQKICAgICBm ZF9zZXQgd3JpdGVmZHM7CiAgICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKIAotICAgIG1heF9m ZCA9IGZkOyAgCisgICAgbWF4X2ZkID0gZmQ7CiAKICAgICBsZW4gPSBsZW4xOwogICAgIHdoaWxl IChsZW4gPiAwKSB7CkBAIC0xOTAwLDcgKzE5MDAsNyBAQCBpbnQgcWVtdV9zYXZldm0oY29uc3Qg Y2hhciAqZmlsZW5hbWUpCiAgICAgICAgIC8qIElEIHN0cmluZyAqLwogICAgICAgICBsZW4gPSBz dHJsZW4oc2UtPmlkc3RyKTsKICAgICAgICAgcWVtdV9wdXRfYnl0ZShmLCBsZW4pOwotICAgICAg ICBxZW11X3B1dF9idWZmZXIoZiwgc2UtPmlkc3RyLCBsZW4pOworICAgICAgICBxZW11X3B1dF9i dWZmZXIoZiwgKHVpbnQ4X3QgKilzZS0+aWRzdHIsIGxlbik7CiAKICAgICAgICAgcWVtdV9wdXRf YmUzMihmLCBzZS0+aW5zdGFuY2VfaWQpOwogICAgICAgICBxZW11X3B1dF9iZTMyKGYsIHNlLT52 ZXJzaW9uX2lkKTsKQEAgLTE5NzQsNyArMTk3NCw3IEBAIGludCBxZW11X2xvYWR2bShjb25zdCBj aGFyICpmaWxlbmFtZSkKICAgICAgICAgbGVuID0gcWVtdV9nZXRfYnl0ZShmKTsKICAgICAgICAg aWYgKGZlb2YoZikpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgcWVtdV9nZXRfYnVmZmVy KGYsIGlkc3RyLCBsZW4pOworICAgICAgICBxZW11X2dldF9idWZmZXIoZiwgKHVpbnQ4X3QgKilp ZHN0ciwgbGVuKTsKICAgICAgICAgaWRzdHJbbGVuXSA9ICdcMCc7CiAgICAgICAgIGluc3RhbmNl X2lkID0gcWVtdV9nZXRfYmUzMihmKTsKICAgICAgICAgdmVyc2lvbl9pZCA9IHFlbXVfZ2V0X2Jl MzIoZik7CkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAjaWZkZWYgQ09ORklHX0dEQlNUVUIKICAgICBpbnQgdXNlX2dkYnN0dWIsIGdkYnN0dWJf cG9ydDsKICNlbmRpZgotICAgIGludCBpLCBoYXNfY2Ryb207CisgICAgaW50IGksIGhhc19jZHJv bSA9IDA7CiAgICAgaW50IHNuYXBzaG90LCBsaW51eF9ib290OwogICAgIENQVVN0YXRlICplbnY7 CiAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lOwpAQCAtMjU1Myw2ICsyNTUzLDggQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGNoYXIgcWVtdV9kbV9sb2dmaWxl bmFtZVs2NF07CiAgICAgY29uc3QgY2hhciAqbG9hZHZtID0gTlVMTDsKICAgICB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzLCAqcGFnZV9hcnJheTsKKyAgICBpbnQgZGV2X3R5cGU7CisgICAgY2hhciBi dWZbNjRdOwogICAgIGV4dGVybiB2b2lkICpzaGFyZWRfcGFnZTsKIAogI2lmICFkZWZpbmVkKENP TkZJR19TT0ZUTU1VKQpAQCAtMjU3OSw3ICsyNTgxLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogICAgIHZuY2Nvbm5lY3Q9TlVMTDsKICAgICBrZXJuZWxfZmlsZW5hbWUgPSBO VUxMOwogICAgIGtlcm5lbF9jbWRsaW5lID0gIiI7Ci0gICAgaGFzX2Nkcm9tID0gMTsKICAgICBj eWxzID0gaGVhZHMgPSBzZWNzID0gMDsKICAgICBwc3RyY3B5KG1vbml0b3JfZGV2aWNlLCBzaXpl b2YobW9uaXRvcl9kZXZpY2UpLCAidmMiKTsKIApAQCAtMjY0MiwxMiArMjY0Myw2IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgIGNhc2UgUUVNVV9PUFRJT05f aW5pdHJkOgogICAgICAgICAgICAgICAgIGluaXRyZF9maWxlbmFtZSA9IG9wdGFyZzsKICAgICAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUUVNVV9PUFRJT05faGRhOgotICAg ICAgICAgICAgICAgIGhkX2ZpbGVuYW1lWzBdID0gb3B0YXJnOwotICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgY2FzZSBRRU1VX09QVElPTl9oZGI6Ci0gICAgICAgICAgICAgICAg aGRfZmlsZW5hbWVbMV0gPSBvcHRhcmc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg ICAgICBjYXNlIFFFTVVfT1BUSU9OX3NuYXBzaG90OgogICAgICAgICAgICAgICAgIHNuYXBzaG90 ID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MjAsMTUgKzI3MTUsNTYgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBR RU1VX09QVElPTl9oZGE6CisgICAgICAgICAgICAgICAgaWYgKGhkX2ZpbGVuYW1lWzBdKSB7Cisg ICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJxZW11OiB2aXJ0dWFsIGRldmljZSAnaGQlYycgYWxyZWFkeSBkZWZpbmVkIGFzICVz XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhJywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoZF9maWxlbmFtZVswXSApOworICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaGRfZmlsZW5hbWVbMF0gPSBvcHRh cmc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFFFTVVfT1BUSU9O X2hkYjoKKyAgICAgICAgICAgICAgICBpZiAoaGRfZmlsZW5hbWVbMV0pIHsKKyAgICAgICAgICAg ICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInFl bXU6IHZpcnR1YWwgZGV2aWNlICdoZCVjJyBhbHJlYWR5IGRlZmluZWQgYXMgJXNcbiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhkX2ZpbGVuYW1lWzFdICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICBoZF9maWxlbmFtZVsxXSA9IG9wdGFyZzsKKyAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUUVNVV9PUFRJT05faGRjOgorICAg ICAgICAgICAgICAgIGlmIChoZF9maWxlbmFtZVsyXSkgeworICAgICAgICAgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicWVtdTogdmlydHVh bCBkZXZpY2UgJ2hkJWMnIGFscmVhZHkgZGVmaW5lZCBhcyAlc1xuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRfZmlsZW5h bWVbMl0gKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgIGhkX2ZpbGVuYW1lWzJdID0gb3B0YXJnOwotICAgICAgICAgICAgICAg IGhhc19jZHJvbSA9IDA7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl IFFFTVVfT1BUSU9OX2hkZDoKKyAgICAgICAgICAgICAgICBpZiAoaGRfZmlsZW5hbWVbM10pIHsK KyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInFlbXU6IHZpcnR1YWwgZGV2aWNlICdoZCVjJyBhbHJlYWR5IGRlZmluZWQgYXMg JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2QnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhkX2ZpbGVuYW1lWzNdICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBoZF9maWxlbmFtZVszXSA9IG9w dGFyZzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUUVNVV9PUFRJ T05fY2Ryb206Ci0gICAgICAgICAgICAgICAgaGRfZmlsZW5hbWVbMl0gPSBvcHRhcmc7CisgICAg ICAgICAgICAgICAgaWYgKGhkX2ZpbGVuYW1lW0NEUk9NX0RJU0tfUE9TSVRJT05dKSB7CisgICAg ICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJxZW11OiB2aXJ0dWFsIGRldmljZSAnaGQlYycgZm9yIGNkcm9tICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaXMgYWxyZWFkeSBkZWZpbmVkIGFzICVzXG4iLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdhJyArIENEUk9NX0RJU0tfUE9TSVRJT04sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGRfZmlsZW5hbWVbQ0RST01fRElTS19QT1NJVElPTl0gKTsKKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIGhkX2ZpbGVuYW1lW0NEUk9NX0RJU0tfUE9TSVRJT05dID0gb3B0YXJnOwogICAgICAgICAg ICAgICAgIGhhc19jZHJvbSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICBjYXNlIFFFTVVfT1BUSU9OX2Jvb3Q6CkBAIC0yOTQ0LDcgKzI5ODAsNyBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgbGludXhfYm9vdCA9IChrZXJuZWxfZmlsZW5hbWUg IT0gTlVMTCk7CiAKICAgICBpZiAoICFsaW51eF9ib290ICYmIGhkX2ZpbGVuYW1lWzBdID09ICdc MCcgJiYKLSAgICAgICAgIGhkX2ZpbGVuYW1lWzJdID09ICdcMCcgJiYgZmRfZmlsZW5hbWVbMF0g PT0gJ1wwJyApCisgICAgICAgICBoZF9maWxlbmFtZVtDRFJPTV9ESVNLX1BPU0lUSU9OXSA9PSAn XDAnICYmIGZkX2ZpbGVuYW1lWzBdID09ICdcMCcgKQogICAgICAgICBoZWxwKCk7CiAKICAgICAv KiBib290IHRvIGNkIGJ5IGRlZmF1bHQgaWYgbm8gaGFyZCBkaXNrICovCkBAIC0zMDc0LDU5ICsz MTEwLDU1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBmcHJpbnRmKGxv Z2ZpbGUsICJzaGFyZWQgcGFnZSBhdCBwZm46JWx4LCBtZm46ICVseFxuIiwgKG5yX3BhZ2VzLTEp LAogICAgICAgICAgICAocGFnZV9hcnJheVtucl9wYWdlcyAtIDFdKSk7CiAKLSAgICAvKiB3ZSBh bHdheXMgY3JlYXRlIHRoZSBjZHJvbSBkcml2ZSwgZXZlbiBpZiBubyBkaXNrIGlzIHRoZXJlICov CiAgICAgYmRydl9pbml0KCk7Ci0gICAgaWYgKGhhc19jZHJvbSkgewotICAgICAgICBpbnQgZmQ7 Ci0gICAgICAgIGlmICggKGZkID0gb3BlbihoZF9maWxlbmFtZVsyXSwgT19SRE9OTFkgfCBPX0JJ TkFSWSkpIDwgMCkgewotICAgICAgICAgICAgICAgIGhkX2ZpbGVuYW1lWzJdPU5VTEw7Ci0gICAg ICAgICAgICAgICAgYnNfdGFibGVbMl09TlVMTDsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKGxv Z2ZpbGUsICJDb3VsZCBub3Qgb3BlbiBDRCAlcy5cbiIsIGhkX2ZpbGVuYW1lW2ldKTsKLSAgICAg ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAg ICAgICAgICAgYnNfdGFibGVbMl0gPSBiZHJ2X25ldygiY2Ryb20iKTsKLSAgICAgICAgICAgICAg ICBiZHJ2X3NldF90eXBlX2hpbnQoYnNfdGFibGVbMl0sIEJEUlZfVFlQRV9DRFJPTSk7Ci0gICAg ICAgIH0KLSAgICB9CisKKyAgICBzaGRldl9pbml0KCk7CiAKICAgICAvKiBvcGVuIHRoZSB2aXJ0 dWFsIGJsb2NrIGRldmljZXMgKi8KICAgICBmb3IoaSA9IDA7IGkgPCBNQVhfRElTS1M7IGkrKykg ewogICAgICAgICBpZiAoaGRfZmlsZW5hbWVbaV0pIHsKLSAgICAgICAgICAgIGlmICghYnNfdGFi bGVbaV0pIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1Zls2NF07CisgICAgICAgICAgICBpZiAo KGkgPT0gQ0RST01fRElTS19QT1NJVElPTikgJiYgaGFzX2Nkcm9tKSB7CisgICAgICAgICAgICAg ICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImNkcm9tIik7CisgICAgICAgICAgICAgICAg ZGV2X3R5cGUgPSBCRFJWX1RZUEVfQ0RST007CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl bHNlIHsKICAgICAgICAgICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiaGQlYyIs IGkgKyAnYScpOwotICAgICAgICAgICAgICAgIGJzX3RhYmxlW2ldID0gYmRydl9uZXcoYnVmKTsK KyAgICAgICAgICAgICAgICBkZXZfdHlwZSA9IEJEUlZfVFlQRV9IRDsKICAgICAgICAgICAgIH0K KworICAgICAgICAgICAgYnNfdGFibGVbaV0gPSBiZHJ2X25ldyhidWYpOworCisgICAgICAgICAg ICBiZHJ2X3NldF90eXBlX2hpbnQoYnNfdGFibGVbaV0sIGRldl90eXBlKTsKKworICAgICAgICAg ICAgaWYgKGJzX3RhYmxlW2ldLT5yZW1vdmFibGUpCisgICAgICAgICAgICAgICAgc2hkZXZfcmVw b3J0X2RldmljZShic190YWJsZVtpXSwgaGRfZmlsZW5hbWVbaV0pOworCiAgICAgICAgICAgICBp ZiAoYmRydl9vcGVuKGJzX3RhYmxlW2ldLCBoZF9maWxlbmFtZVtpXSwgc25hcHNob3QpIDwgMCkg eworICAgICAgICAgICAgICAgIGlmIChic190YWJsZVtpXS0+cmVtb3ZhYmxlKQorICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi cWVtdTogY291bGQgbm90IG9wZW4gaGFyZCBkaXNrIGltYWdlICclcydcbiIsCiAgICAgICAgICAg ICAgICAgICAgICAgICBoZF9maWxlbmFtZVtpXSk7CiAgICAgICAgICAgICAgICAgZXhpdCgxKTsK ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGkgPT0gMCAmJiBjeWxzICE9IDApCiAg ICAgICAgICAgICAgICAgYmRydl9zZXRfZ2VvbWV0cnlfaGludChic190YWJsZVtpXSwgY3lscywg aGVhZHMsIHNlY3MpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogd2UgYWx3YXlzIGNyZWF0 ZSBhdCBsZWFzdCBvbmUgZmxvcHB5IGRpc2sgKi8KLSAgICBmZF90YWJsZVswXSA9IGJkcnZfbmV3 KCJmZGEiKTsKLSAgICBiZHJ2X3NldF90eXBlX2hpbnQoZmRfdGFibGVbMF0sIEJEUlZfVFlQRV9G TE9QUFkpOwotCiAgICAgZm9yKGkgPSAwOyBpIDwgTUFYX0ZEOyBpKyspIHsKICAgICAgICAgaWYg KGZkX2ZpbGVuYW1lW2ldKSB7CiAgICAgICAgICAgICBpZiAoIWZkX3RhYmxlW2ldKSB7Ci0gICAg ICAgICAgICAgICAgY2hhciBidWZbNjRdOwogICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwg c2l6ZW9mKGJ1ZiksICJmZCVjIiwgaSArICdhJyk7CiAgICAgICAgICAgICAgICAgZmRfdGFibGVb aV0gPSBiZHJ2X25ldyhidWYpOwogICAgICAgICAgICAgICAgIGJkcnZfc2V0X3R5cGVfaGludChm ZF90YWJsZVtpXSwgQkRSVl9UWVBFX0ZMT1BQWSk7CisgICAgICAgICAgICAgICAgc2hkZXZfcmVw b3J0X2RldmljZShmZF90YWJsZVtpXSwgZmRfZmlsZW5hbWVbaV0pOwogICAgICAgICAgICAgfQot ICAgICAgICAgICAgaWYgKGZkX2ZpbGVuYW1lW2ldICE9ICdcMCcpIHsKLSAgICAgICAgICAgICAg ICBpZiAoYmRydl9vcGVuKGZkX3RhYmxlW2ldLCBmZF9maWxlbmFtZVtpXSwgc25hcHNob3QpIDwg MCkgewotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNvdWxkIG5v dCBvcGVuIGZsb3BweSBkaXNrIGltYWdlICclcydcbiIsCisKKyAgICAgICAgICAgIGlmIChiZHJ2 X29wZW4oZmRfdGFibGVbaV0sIGZkX2ZpbGVuYW1lW2ldLCBzbmFwc2hvdCkgPCAwKQorICAgICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogY291bGQgbm90IG9wZW4gZmxvcHB5IGRp c2sgJyVzJ1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9maWxlbmFtZVtpXSk7 Ci0gICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLXIgZGMyMTNkNzQ1NjQyIHRvb2xzL2lv ZW11L3ZsLmgKLS0tIGEvdG9vbHMvaW9lbXUvdmwuaAlNb24gTWF5IDE1IDE2OjMyOjA5IDIwMDYg KzAxMDAKKysrIGIvdG9vbHMvaW9lbXUvdmwuaAlUaHUgTWF5IDI1IDE0OjU3OjEzIDIwMDYgLTA2 MDAKQEAgLTEsOCArMSw4IEBACiAvKgogICogUUVNVSBTeXN0ZW0gRW11bGF0b3IgaGVhZGVyCi0g KiAKKyAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMgRmFicmljZSBCZWxsYXJkCi0gKiAKKyAqCiAg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogICogaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24gdGhlIHJpZ2h0cwpAQCAtMzcsOSArMzcsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNp bmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8YmxvY2tf aW50Lmg+CiAjaW5jbHVkZSAiYXVkaW8vYXVkaW8uaCIKICNpbmNsdWRlICJ4ZW5jdHJsLmgiCiAj aW5jbHVkZSAieHMuaCIKKwogCiAjaWZuZGVmIE9fTEFSR0VGSUxFCiAjZGVmaW5lIE9fTEFSR0VG SUxFIDAKQEAgLTE0Nyw2ICsxNDksOCBAQCBleHRlcm4gaW50IGdyYXBoaWNfZGVwdGg7CiAjZGVm aW5lIEJJT1NfU0laRSAoKDI1NiArIDY0KSAqIDEwMjQpCiAjZW5kaWYKIAorI2RlZmluZSBDRFJP TV9ESVNLX1BPU0lUSU9OIDIKKwogLyoga2V5Ym9hcmQvbW91c2Ugc3VwcG9ydCAqLwogCiAjZGVm aW5lIE1PVVNFX0VWRU5UX0xCVVRUT04gMHgwMQpAQCAtMTkyLDkgKzE5Niw5IEBAIHR5cGVkZWYg dm9pZCBJT1JlYWRIYW5kbGVyKHZvaWQgKm9wYXF1ZSwKIHR5cGVkZWYgdm9pZCBJT1JlYWRIYW5k bGVyKHZvaWQgKm9wYXF1ZSwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSk7CiB0eXBlZGVm IGludCBJT0NhblJXSGFuZGxlcih2b2lkICpvcGFxdWUpOwogCi1pbnQgcWVtdV9hZGRfZmRfcmVh ZF9oYW5kbGVyKGludCBmZCwgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLCAKK2ludCBxZW11 X2FkZF9mZF9yZWFkX2hhbmRsZXIoaW50IGZkLCBJT0NhblJXSGFuZGxlciAqZmRfY2FuX3JlYWQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPUmVhZEhhbmRsZXIgKmZkX3JlYWQsIHZv aWQgKm9wYXF1ZSk7Ci1pbnQgcWVtdV9hZGRfZmRfZXZlbnRfcmVhZF9oYW5kbGVyKGludCBmZCwg SU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLCAKK2ludCBxZW11X2FkZF9mZF9ldmVudF9yZWFk X2hhbmRsZXIoaW50IGZkLCBJT0NhblJXSGFuZGxlciAqZmRfY2FuX3JlYWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElPUmVhZEhhbmRsZXIgKmZkX3JlYWQsIHZvaWQgKm9wYXF1ZSk7 CiB2b2lkIHFlbXVfZGVsX2ZkX3JlYWRfaGFuZGxlcihpbnQgZmQpOwogCkBAIC0yMDcsOCArMjEx LDggQEAgdHlwZWRlZiB2b2lkIElPRXZlbnRIYW5kbGVyKHZvaWQgKm9wYXF1ZQogCiB0eXBlZGVm IHN0cnVjdCBDaGFyRHJpdmVyU3RhdGUgewogICAgIGludCAoKmNocl93cml0ZSkoc3RydWN0IENo YXJEcml2ZXJTdGF0ZSAqcywgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsKLSAgICB2b2lk ICgqY2hyX2FkZF9yZWFkX2hhbmRsZXIpKHN0cnVjdCBDaGFyRHJpdmVyU3RhdGUgKnMsIAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFk LCAKKyAgICB2b2lkICgqY2hyX2FkZF9yZWFkX2hhbmRsZXIpKHN0cnVjdCBDaGFyRHJpdmVyU3Rh dGUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0NhblJXSGFuZGxlciAq ZmRfY2FuX3JlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JlYWRIYW5k bGVyICpmZF9yZWFkLCB2b2lkICpvcGFxdWUpOwogICAgIElPRXZlbnRIYW5kbGVyICpjaHJfZXZl bnQ7CiAgICAgdm9pZCAoKmNocl9zZW5kX2V2ZW50KShzdHJ1Y3QgQ2hhckRyaXZlclN0YXRlICpj aHIsIGludCBldmVudCk7CkBAIC0yMTgsMTEgKzIyMiwxMSBAQCB2b2lkIHFlbXVfY2hyX3ByaW50 ZihDaGFyRHJpdmVyU3RhdGUgKnMsCiB2b2lkIHFlbXVfY2hyX3ByaW50ZihDaGFyRHJpdmVyU3Rh dGUgKnMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIGludCBxZW11X2Nocl93cml0ZShDaGFyRHJp dmVyU3RhdGUgKnMsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7CiB2b2lkIHFlbXVfY2hy X3NlbmRfZXZlbnQoQ2hhckRyaXZlclN0YXRlICpzLCBpbnQgZXZlbnQpOwotdm9pZCBxZW11X2No cl9hZGRfcmVhZF9oYW5kbGVyKENoYXJEcml2ZXJTdGF0ZSAqcywgCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLCAKK3ZvaWQgcWVtdV9j aHJfYWRkX3JlYWRfaGFuZGxlcihDaGFyRHJpdmVyU3RhdGUgKnMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElPUmVhZEhhbmRsZXIgKmZkX3JlYWQsIHZvaWQgKm9wYXF1ZSk7 CiB2b2lkIHFlbXVfY2hyX2FkZF9ldmVudF9oYW5kbGVyKENoYXJEcml2ZXJTdGF0ZSAqcywgSU9F dmVudEhhbmRsZXIgKmNocl9ldmVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisKIC8qIGNvbnNvbGVzICovCiAKIHR5cGVkZWYgc3RydWN0IERpc3BsYXlTdGF0ZSBEaXNwbGF5 U3RhdGU7CkBAIC0yNTAsMTAgKzI1NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBOZXREcml2ZXJTdGF0 ZSB7CiAgICAgaW50IGluZGV4OyAvKiBpbmRleCBudW1iZXIgaW4gUUVNVSAqLwogICAgIHVpbnQ4 X3QgbWFjYWRkcls2XTsKICAgICBjaGFyIGlmbmFtZVsxNl07Ci0gICAgdm9pZCAoKnNlbmRfcGFj a2V0KShzdHJ1Y3QgTmV0RHJpdmVyU3RhdGUgKm5kLCAKKyAgICB2b2lkICgqc2VuZF9wYWNrZXQp KHN0cnVjdCBOZXREcml2ZXJTdGF0ZSAqbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50OF90ICpidWYsIGludCBzaXplKTsKLSAgICB2b2lkICgqYWRkX3JlYWRfcGFja2V0KShz dHJ1Y3QgTmV0RHJpdmVyU3RhdGUgKm5kLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ T0NhblJXSGFuZGxlciAqZmRfY2FuX3JlYWQsIAorICAgIHZvaWQgKCphZGRfcmVhZF9wYWNrZXQp KHN0cnVjdCBOZXREcml2ZXJTdGF0ZSAqbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg SU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IElPUmVhZEhhbmRsZXIgKmZkX3JlYWQsIHZvaWQgKm9wYXF1ZSk7CiAgICAgLyogdHVuIHNwZWNp ZmljIGRhdGEgKi8KICAgICBpbnQgZmQ7CkBAIC0yNjQsNyArMjY4LDcgQEAgZXh0ZXJuIE5ldERy aXZlclN0YXRlIG5kX3RhYmxlW01BWF9OSUNTXQogZXh0ZXJuIE5ldERyaXZlclN0YXRlIG5kX3Rh YmxlW01BWF9OSUNTXTsKIAogdm9pZCBxZW11X3NlbmRfcGFja2V0KE5ldERyaXZlclN0YXRlICpu ZCwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSk7Ci12b2lkIHFlbXVfYWRkX3JlYWRfcGFj a2V0KE5ldERyaXZlclN0YXRlICpuZCwgSU9DYW5SV0hhbmRsZXIgKmZkX2Nhbl9yZWFkLCAKK3Zv aWQgcWVtdV9hZGRfcmVhZF9wYWNrZXQoTmV0RHJpdmVyU3RhdGUgKm5kLCBJT0NhblJXSGFuZGxl ciAqZmRfY2FuX3JlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElPUmVhZEhhbmRsZXIg KmZkX3JlYWQsIHZvaWQgKm9wYXF1ZSk7CiAKIC8qIHRpbWVycyAqLwpAQCAtMzYxLDggKzM2NSw4 IEBAIHR5cGVkZWYgaW50IExvYWRTdGF0ZUhhbmRsZXIoUUVNVUZpbGUgKmYKIAogaW50IHFlbXVf bG9hZHZtKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIGludCBxZW11X3NhdmV2bShjb25zdCBjaGFy ICpmaWxlbmFtZSk7Ci1pbnQgcmVnaXN0ZXJfc2F2ZXZtKGNvbnN0IGNoYXIgKmlkc3RyLCAKLSAg ICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlX2lkLCAKK2ludCByZWdpc3Rlcl9zYXZldm0o Y29uc3QgY2hhciAqaWRzdHIsCisgICAgICAgICAgICAgICAgICAgIGludCBpbnN0YW5jZV9pZCwK ICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQsCiAgICAgICAgICAgICAgICAgICAg IFNhdmVTdGF0ZUhhbmRsZXIgKnNhdmVfc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIExvYWRT dGF0ZUhhbmRsZXIgKmxvYWRfc3RhdGUsCkBAIC0zNzQsOCArMzc4LDYgQEAgdm9pZCBwb3J0X2U5 X2luaXQodm9pZCk7CiB2b2lkIHBvcnRfZTlfaW5pdCh2b2lkKTsKIAogLyogYmxvY2suYyAqLwot dHlwZWRlZiBzdHJ1Y3QgQmxvY2tEcml2ZXJTdGF0ZSBCbG9ja0RyaXZlclN0YXRlOwotdHlwZWRl ZiBzdHJ1Y3QgQmxvY2tEcml2ZXIgQmxvY2tEcml2ZXI7CiAKIGV4dGVybiBCbG9ja0RyaXZlciBi ZHJ2X3JhdzsKIGV4dGVybiBCbG9ja0RyaXZlciBiZHJ2X2NvdzsKQEAgLTM4NSw3ICszODcsNyBA QCBleHRlcm4gQmxvY2tEcml2ZXIgYmRydl9jbG9vcDsKIAogdm9pZCBiZHJ2X2luaXQodm9pZCk7 CiBCbG9ja0RyaXZlciAqYmRydl9maW5kX2Zvcm1hdChjb25zdCBjaGFyICpmb3JtYXRfbmFtZSk7 Ci1pbnQgYmRydl9jcmVhdGUoQmxvY2tEcml2ZXIgKmRydiwgCitpbnQgYmRydl9jcmVhdGUoQmxv Y2tEcml2ZXIgKmRydiwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50 NjRfdCBzaXplX2luX3NlY3RvcnMsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFja2lu Z19maWxlLCBpbnQgZmxhZ3MpOwogQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9uZXcoY29uc3QgY2hh ciAqZGV2aWNlX25hbWUpOwpAQCAtMzk0LDkgKzM5Niw5IEBAIGludCBiZHJ2X29wZW4yKEJsb2Nr RHJpdmVyU3RhdGUgKmJzLCBjb24KIGludCBiZHJ2X29wZW4yKEJsb2NrRHJpdmVyU3RhdGUgKmJz LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IHNuYXBzaG90LAogICAgICAgICAgICAgICAgQmxv Y2tEcml2ZXIgKmRydik7CiB2b2lkIGJkcnZfY2xvc2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOwot aW50IGJkcnZfcmVhZChCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLCAK K2ludCBiZHJ2X3JlYWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgc2VjdG9yX251bSwK ICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbmJfc2VjdG9ycyk7Ci1pbnQgYmRydl93 cml0ZShCbG9ja0RyaXZlclN0YXRlICpicywgaW50NjRfdCBzZWN0b3JfbnVtLCAKK2ludCBiZHJ2 X3dyaXRlKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IHNlY3Rvcl9udW0sCiAgICAgICAg ICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBuYl9zZWN0b3JzKTsKIHZvaWQgYmRydl9n ZXRfZ2VvbWV0cnkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3QgKm5iX3NlY3RvcnNfcHRy KTsKIGludCBiZHJ2X2NvbW1pdChCbG9ja0RyaXZlclN0YXRlICpicyk7CkBAIC00MDYsMTAgKzQw OCwxMCBAQCB2b2lkIGJkcnZfc2V0X2Jvb3Rfc2VjdG9yKEJsb2NrRHJpdmVyU3RhCiAjZGVmaW5l IEJEUlZfVFlQRV9DRFJPTSAgMQogI2RlZmluZSBCRFJWX1RZUEVfRkxPUFBZIDIKIAotdm9pZCBi ZHJ2X3NldF9nZW9tZXRyeV9oaW50KEJsb2NrRHJpdmVyU3RhdGUgKmJzLCAKK3ZvaWQgYmRydl9z ZXRfZ2VvbWV0cnlfaGludChCbG9ja0RyaXZlclN0YXRlICpicywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgY3lscywgaW50IGhlYWRzLCBpbnQgc2Vjcyk7CiB2b2lkIGJkcnZfc2V0 X3R5cGVfaGludChCbG9ja0RyaXZlclN0YXRlICpicywgaW50IHR5cGUpOwotdm9pZCBiZHJ2X2dl dF9nZW9tZXRyeV9oaW50KEJsb2NrRHJpdmVyU3RhdGUgKmJzLCAKK3ZvaWQgYmRydl9nZXRfZ2Vv bWV0cnlfaGludChCbG9ja0RyaXZlclN0YXRlICpicywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKnBjeWxzLCBpbnQgKnBoZWFkcywgaW50ICpwc2Vjcyk7CiBpbnQgYmRydl9nZXRf dHlwZV9oaW50KEJsb2NrRHJpdmVyU3RhdGUgKmJzKTsKIGludCBiZHJ2X2lzX3JlbW92YWJsZShC bG9ja0RyaXZlclN0YXRlICpicyk7CkBAIC00MTcsMTUgKzQxOSwxNyBAQCBpbnQgYmRydl9pc19p bnNlcnRlZChCbG9ja0RyaXZlclN0YXRlICpiCiBpbnQgYmRydl9pc19pbnNlcnRlZChCbG9ja0Ry aXZlclN0YXRlICpicyk7CiBpbnQgYmRydl9pc19sb2NrZWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMp Owogdm9pZCBiZHJ2X3NldF9sb2NrZWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludCBsb2NrZWQp Owotdm9pZCBiZHJ2X3NldF9jaGFuZ2VfY2IoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIAordm9pZCBi ZHJ2X3NldF9jaGFuZ2VfY2IoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCiAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICgqY2hhbmdlX2NiKSh2b2lkICpvcGFxdWUpLCB2b2lkICpvcGFxdWUpOwog dm9pZCBiZHJ2X2dldF9mb3JtYXQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGNoYXIgKmJ1ZiwgaW50 IGJ1Zl9zaXplKTsKIHZvaWQgYmRydl9pbmZvKHZvaWQpOwotQmxvY2tEcml2ZXJTdGF0ZSAqYmRy dl9maW5kKGNvbnN0IGNoYXIgKm5hbWUpOworQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maW5kX2Jz KGludCAoKml0KShCbG9ja0RyaXZlclN0YXRlICpicywgdm9pZCAqb3BhcXVlKSwgdm9pZCAqb3Bh cXVlKTsKK0Jsb2NrRHJpdmVyU3RhdGUgKmJkcnZfZmluZF9ieV9kZXZpY2UoY29uc3QgY2hhciAq bmFtZSk7CitCbG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbmRfYnlfZmlsZW5hbWUoY29uc3QgY2hh ciAqbmFtZSk7CiB2b2lkIGJkcnZfaXRlcmF0ZSh2b2lkICgqaXQpKHZvaWQgKm9wYXF1ZSwgY29u c3QgY2hhciAqbmFtZSksIHZvaWQgKm9wYXF1ZSk7CiBpbnQgYmRydl9pc19lbmNyeXB0ZWQoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMpOwogaW50IGJkcnZfc2V0X2tleShCbG9ja0RyaXZlclN0YXRlICpi cywgY29uc3QgY2hhciAqa2V5KTsKLXZvaWQgYmRydl9pdGVyYXRlX2Zvcm1hdCh2b2lkICgqaXQp KHZvaWQgKm9wYXF1ZSwgY29uc3QgY2hhciAqbmFtZSksIAordm9pZCBiZHJ2X2l0ZXJhdGVfZm9y bWF0KHZvaWQgKCppdCkodm9pZCAqb3BhcXVlLCBjb25zdCBjaGFyICpuYW1lKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpOwogY29uc3QgY2hhciAqYmRydl9nZXRfZGV2 aWNlX25hbWUoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOwogCkBAIC00NDEsOSArNDQ1LDkgQEAgdHlw ZWRlZiB2b2lkIChJT1BvcnRXcml0ZUZ1bmMpKHZvaWQgKm9wYQogdHlwZWRlZiB2b2lkIChJT1Bv cnRXcml0ZUZ1bmMpKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkcmVzcywgdWludDMyX3QgZGF0 YSk7CiB0eXBlZGVmIHVpbnQzMl90IChJT1BvcnRSZWFkRnVuYykodm9pZCAqb3BhcXVlLCB1aW50 MzJfdCBhZGRyZXNzKTsKIAotaW50IHJlZ2lzdGVyX2lvcG9ydF9yZWFkKGludCBzdGFydCwgaW50 IGxlbmd0aCwgaW50IHNpemUsIAoraW50IHJlZ2lzdGVyX2lvcG9ydF9yZWFkKGludCBzdGFydCwg aW50IGxlbmd0aCwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU9Qb3J0UmVh ZEZ1bmMgKmZ1bmMsIHZvaWQgKm9wYXF1ZSk7Ci1pbnQgcmVnaXN0ZXJfaW9wb3J0X3dyaXRlKGlu dCBzdGFydCwgaW50IGxlbmd0aCwgaW50IHNpemUsIAoraW50IHJlZ2lzdGVyX2lvcG9ydF93cml0 ZShpbnQgc3RhcnQsIGludCBsZW5ndGgsIGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg ICAgICBJT1BvcnRXcml0ZUZ1bmMgKmZ1bmMsIHZvaWQgKm9wYXF1ZSk7CiB2b2lkIGlzYV91bmFz c2lnbl9pb3BvcnQoaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKTsKIApAQCAtNDU2LDExICs0NjAsMTEg QEAgdHlwZWRlZiBzdHJ1Y3QgUENJQnVzIFBDSUJ1czsKIHR5cGVkZWYgc3RydWN0IFBDSUJ1cyBQ Q0lCdXM7CiB0eXBlZGVmIHN0cnVjdCBQQ0lEZXZpY2UgUENJRGV2aWNlOwogCi10eXBlZGVmIHZv aWQgUENJQ29uZmlnV3JpdGVGdW5jKFBDSURldmljZSAqcGNpX2RldiwgCit0eXBlZGVmIHZvaWQg UENJQ29uZmlnV3JpdGVGdW5jKFBDSURldmljZSAqcGNpX2RldiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgYWRkcmVzcywgdWludDMyX3QgZGF0YSwgaW50IGxlbik7 Ci10eXBlZGVmIHVpbnQzMl90IFBDSUNvbmZpZ1JlYWRGdW5jKFBDSURldmljZSAqcGNpX2Rldiwg Cit0eXBlZGVmIHVpbnQzMl90IFBDSUNvbmZpZ1JlYWRGdW5jKFBDSURldmljZSAqcGNpX2RldiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkcmVzcywgaW50 IGxlbik7Ci10eXBlZGVmIHZvaWQgUENJTWFwSU9SZWdpb25GdW5jKFBDSURldmljZSAqcGNpX2Rl diwgaW50IHJlZ2lvbl9udW0sIAordHlwZWRlZiB2b2lkIFBDSU1hcElPUmVnaW9uRnVuYyhQQ0lE ZXZpY2UgKnBjaV9kZXYsIGludCByZWdpb25fbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCBzaXplLCBpbnQgdHlwZSk7CiAKICNkZWZp bmUgUENJX0FERFJFU1NfU1BBQ0VfTUVNCQkweDAwCkBAIC00ODUsNyArNDg5LDcgQEAgc3RydWN0 IFBDSURldmljZSB7CiAgICAgaW50IGRldmZuOwogICAgIGNoYXIgbmFtZVs2NF07CiAgICAgUENJ SU9SZWdpb24gaW9fcmVnaW9uc1tQQ0lfTlVNX1JFR0lPTlNdOwotICAgIAorCiAgICAgLyogZG8g bm90IGFjY2VzcyB0aGUgZm9sbG93aW5nIGZpZWxkcyAqLwogICAgIFBDSUNvbmZpZ1JlYWRGdW5j ICpjb25maWdfcmVhZDsKICAgICBQQ0lDb25maWdXcml0ZUZ1bmMgKmNvbmZpZ193cml0ZTsKQEAg LTQ5NCwxOCArNDk4LDE4IEBAIHN0cnVjdCBQQ0lEZXZpY2UgewogCiBQQ0lEZXZpY2UgKnBjaV9y ZWdpc3Rlcl9kZXZpY2UoUENJQnVzICpidXMsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlX3NpemUsIGludCBkZXZmbiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lDb25maWdSZWFkRnVuYyAqY29uZmlnX3JlYWQs IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSUNvbmZpZ1JlYWRGdW5jICpjb25m aWdfcmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lDb25maWdXcml0ZUZ1 bmMgKmNvbmZpZ193cml0ZSk7CiAKLXZvaWQgcGNpX3JlZ2lzdGVyX2lvX3JlZ2lvbihQQ0lEZXZp Y2UgKnBjaV9kZXYsIGludCByZWdpb25fbnVtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBzaXplLCBpbnQgdHlwZSwgCit2b2lkIHBjaV9yZWdpc3Rlcl9pb19yZWdpb24o UENJRGV2aWNlICpwY2lfZGV2LCBpbnQgcmVnaW9uX251bSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBzaXplLCBpbnQgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQQ0lNYXBJT1JlZ2lvbkZ1bmMgKm1hcF9mdW5jKTsKIAogdm9pZCBwY2lfc2V0X2lycShQ Q0lEZXZpY2UgKnBjaV9kZXYsIGludCBpcnFfbnVtLCBpbnQgbGV2ZWwpOwogCi11aW50MzJfdCBw Y2lfZGVmYXVsdF9yZWFkX2NvbmZpZyhQQ0lEZXZpY2UgKmQsIAordWludDMyX3QgcGNpX2RlZmF1 bHRfcmVhZF9jb25maWcoUENJRGV2aWNlICpkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgYWRkcmVzcywgaW50IGxlbik7Ci12b2lkIHBjaV9kZWZhdWx0X3dyaXRl X2NvbmZpZyhQQ0lEZXZpY2UgKmQsIAordm9pZCBwY2lfZGVmYXVsdF93cml0ZV9jb25maWcoUENJ RGV2aWNlICpkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkcmVz cywgdWludDMyX3QgdmFsLCBpbnQgbGVuKTsKIHZvaWQgZ2VuZXJpY19wY2lfc2F2ZShRRU1VRmls ZSogZiwgdm9pZCAqb3BhcXVlKTsKIGludCBnZW5lcmljX3BjaV9sb2FkKFFFTVVGaWxlKiBmLCB2 b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uX2lkKTsKQEAgLTU1Myw3ICs1NTcsNyBAQCBzdGF0aWMg aW5saW5lIHZvaWQgZHB5X3Jlc2l6ZShEaXNwbGF5U3RhCiAgICAgcy0+ZHB5X3Jlc2l6ZShzLCB3 LCBoKTsKIH0KIAotaW50IHZnYV9pbml0aWFsaXplKFBDSUJ1cyAqYnVzLCBEaXNwbGF5U3RhdGUg KmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsIAoraW50IHZnYV9pbml0aWFsaXplKFBDSUJ1cyAq YnVzLCBEaXNwbGF5U3RhdGUgKmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsCiAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyB2Z2FfcmFtX29mZnNldCwgaW50IHZnYV9yYW1fc2l6ZSk7 CiB2b2lkIHZnYV91cGRhdGVfZGlzcGxheSh2b2lkKTsKIHZvaWQgdmdhX2ludmFsaWRhdGVfZGlz cGxheSh2b2lkKTsKQEAgLTU2NCw5ICs1NjgsOSBAQCB2b2lkIHZuY19kaXNwbGF5X2luaXQoRGlz cGxheVN0YXRlICpkcywgCiAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBwb3J0LCBjb25zdCBj aGFyKiBjb25uZWN0KTsKIAogLyogY2lycnVzX3ZnYS5jICovCi12b2lkIHBjaV9jaXJydXNfdmdh X2luaXQoUENJQnVzICpidXMsIERpc3BsYXlTdGF0ZSAqZHMsIHVpbnQ4X3QgKnZnYV9yYW1fYmFz ZSwgCit2b2lkIHBjaV9jaXJydXNfdmdhX2luaXQoUENJQnVzICpidXMsIERpc3BsYXlTdGF0ZSAq ZHMsIHVpbnQ4X3QgKnZnYV9yYW1fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIHZnYV9yYW1fb2Zmc2V0LCBpbnQgdmdhX3JhbV9zaXplKTsKLXZvaWQgaXNhX2Np cnJ1c192Z2FfaW5pdChEaXNwbGF5U3RhdGUgKmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsIAor dm9pZCBpc2FfY2lycnVzX3ZnYV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIHVpbnQ4X3QgKnZnYV9y YW1fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZnYV9yYW1f b2Zmc2V0LCBpbnQgdmdhX3JhbV9zaXplKTsKIAogLyogc2RsLmMgKi8KQEAgLTYxMiw3ICs2MTYs NyBAQCBleHRlcm4gQmxvY2tEcml2ZXJTdGF0ZSAqZmRfdGFibGVbTUFYX0ZECiAKIHR5cGVkZWYg c3RydWN0IGZkY3RybF90IGZkY3RybF90OwogCi1mZGN0cmxfdCAqZmRjdHJsX2luaXQgKGludCBp cnFfbHZsLCBpbnQgZG1hX2NoYW5uLCBpbnQgbWVtX21hcHBlZCwgCitmZGN0cmxfdCAqZmRjdHJs X2luaXQgKGludCBpcnFfbHZsLCBpbnQgZG1hX2NoYW5uLCBpbnQgbWVtX21hcHBlZCwKICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAg ICAgQmxvY2tEcml2ZXJTdGF0ZSAqKmZkcyk7CiBpbnQgZmRjdHJsX2dldF9kcml2ZV90eXBlKGZk Y3RybF90ICpmZGN0cmwsIGludCBkcml2ZV9udW0pOwpAQCAtNzgzLDkgKzc4Nyw5IEBAIGludCBh ZGJfcmVxdWVzdChBREJCdXNTdGF0ZSAqcywgdWludDhfdCAKICAgICAgICAgICAgICAgICBjb25z dCB1aW50OF90ICpidWYsIGludCBsZW4pOwogaW50IGFkYl9wb2xsKEFEQkJ1c1N0YXRlICpzLCB1 aW50OF90ICpidWZfb3V0KTsKIAotQURCRGV2aWNlICphZGJfcmVnaXN0ZXJfZGV2aWNlKEFEQkJ1 c1N0YXRlICpzLCBpbnQgZGV2YWRkciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QURCRGV2aWNlUmVxdWVzdCAqZGV2cmVxLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBREJEZXZpY2VSZXNldCAqZGV2cmVzZXQsIAorQURCRGV2aWNlICphZGJfcmVnaXN0ZXJfZGV2 aWNlKEFEQkJ1c1N0YXRlICpzLCBpbnQgZGV2YWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBREJEZXZpY2VSZXF1ZXN0ICpkZXZyZXEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQURCRGV2aWNlUmVzZXQgKmRldnJlc2V0LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKm9wYXF1ZSk7CiB2b2lkIGFkYl9rYmRfaW5pdChBREJCdXNTdGF0ZSAq YnVzKTsKIHZvaWQgYWRiX21vdXNlX2luaXQoQURCQnVzU3RhdGUgKmJ1cyk7CkBAIC03OTYsNiAr ODAwLDE1IEBAIGludCBjdWRhX2luaXQob3BlbnBpY190ICpvcGVucGljLCBpbnQgaXIKIGludCBj dWRhX2luaXQob3BlbnBpY190ICpvcGVucGljLCBpbnQgaXJxKTsKIAogI2VuZGlmIC8qIGRlZmlu ZWQoUUVNVV9UT09MKSAqLworCisvKiBzaGRldi5oICovCisKK2ludCBzaGRldl9pbml0KHZvaWQp OworaW50IHNoZGV2X3JlcG9ydF9kZXZpY2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGNvbnN0IGNo YXIgKm5hbWUpOwordm9pZCBzaGRldl9zZXRfbWVkaWFfaW5zdGFuY2UoQmxvY2tEcml2ZXJTdGF0 ZSAqYnMpOwordm9pZCBzaGRldl9lamVjdF9ub3RpY2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOwor aW5saW5lIGludCBzaGRldl9tZWRpYV9jaGVjayhCbG9ja0RyaXZlclN0YXRlICpicyk7Cit2b2lk IGRvX2luZm9fc2hkZXYodm9pZCk7CiAKIC8qIG1vbml0b3IuYyAqLwogdm9pZCBtb25pdG9yX2lu aXQoQ2hhckRyaXZlclN0YXRlICpoZCwgaW50IHNob3dfYmFubmVyKTsKQEAgLTgwNCw2ICs4MTcs OCBAQCB2b2lkIHRlcm1fcHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfCiB2b2lkIHRlcm1f cHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo X19wcmludGZfXywgMSwgMikpKTsKIHZvaWQgdGVybV9mbHVzaCh2b2lkKTsKIHZvaWQgdGVybV9w cmludF9oZWxwKHZvaWQpOwordm9pZCBkb19pbnNlcnRfcmVxdWVzdCh2b2lkKTsKK3ZvaWQgZG9f ZWplY3QoaW50IGZvcmNlLCBjb25zdCBjaGFyICpkZXZpY2UpOwogCiAvKiByZWFkbGluZS5jICov CiB0eXBlZGVmIHZvaWQgUmVhZExpbmVGdW5jKHZvaWQgKm9wYXF1ZSwgY29uc3QgY2hhciAqc3Ry KTsK --=__PartD7F2E9B6.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 --=__PartD7F2E9B6.0__=--