From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Christie Subject: Re: [dm-devel] [PATCH 0/15] copy offload patches Date: Thu, 10 Dec 2015 19:46:06 -0600 Message-ID: <566A2ADE.7010504@cs.wisc.edu> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070407060702040704040304" Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: device-mapper development , Mikulas Patocka Cc: Jens Axboe , Mike Snitzer , linux-scsi@vger.kernel.org, "Martin K. Petersen" , "James E.J. Bottomley" , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org List-Id: dm-devel.ids This is a multi-part message in MIME format. --------------070407060702040704040304 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 12/10/2015 04:33 PM, Martin K. Petersen wrote: > Mike: What's your status? I'm afraid I didn't get a chance to dig very > deep in your series since it coincided with me scrambling to sort out > SCSI for 4.4. Do you think there's a chance we could get your patches in > shape for 4.5? Is there an up-to-date tree I can look at? I just had 2 review comments left: 1. Originally, I had left REQ_FLUSH a flag. Christoph suggested to break it up into a op and flag: http://marc.info/?l=linux-scsi&m=144689113106515&w=2 I started this and messed up :) Was going to retry next week. 2. Start REQ_OP_READ off at non-zero to try and shake out code that was not converted. There are a several places where we assume reads are zero and writes are 1 for things like indexing in arrays (like blktrace's ddir_act or dm starts), passing into block functions (like nvme_alloc_request's call of blk_mq_alloc_request), and if/else's. I am not done fixing all of them and testing. Also, the btrfs patch is really large (1000 lines) because that code base is so large and there were so many places we passed around rw to through multiple functions. I wanted to try and break it up, so it would be easier for those guys to review. I attached a tarball of the patches here. Patches made against Jens's linux-block tree: https://git.kernel.org/cgit/linux/kernel/git/axboe/linux-block.git/ for-next branch. Last commit was: commit 4c93772e14f0b20f38462c395336a6f5c8c7727d Merge: e1b98c0 8c0b391 Author: Jens Axboe Date: Wed Dec 9 10:57:21 2015 -0700 Merge branch 'for-4.5/nvme' into for-next --------------070407060702040704040304 Content-Type: application/x-tar; name="req-op.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="req-op.tar" cmVxLW9wLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NzUA MDAwMTc1MQAwMDAxNzUxADAwMDAwMDAwMDAwADEyNjMyNDI1MTIyADAxMDQwMAAgNQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwMS1ibG9jay1mcy1kcml2ZXJz LXJlbW92ZS1ydy1hcmd1bWVudC1mcm9tLXN1Ym1pdF9iaW8ucGF0Y2gAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAxNTI2MDcA MTI2MzIxNTQyMzAAMDI0MDIxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt bmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZy b20gMTg1NjQxNTYwNThlMGY4ZGRkOGIxZDg4MTYzNzc4M2ZiNTQ4YzdjYSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNv bT4KRGF0ZTogVHVlLCAxIERlYyAyMDE1IDIxOjQzOjI4IC0wNjAwClN1YmplY3Q6IFtQQVRD SCAwMS8zMF0gYmxvY2svZnMvZHJpdmVyczogcmVtb3ZlIHJ3IGFyZ3VtZW50IGZyb20gc3Vi bWl0X2JpbwoKVGhpcyBoYXMgY2FsbGVycyBvZiBzdWJtaXRfYmlvL3N1Ym1pdF9iaW9fd2Fp dCBzZXQgYmlvLT5iaV9ydwppbnN0ZWFkIG9mIHBhc3NpbmcgaXQgdG8gc3VibWl0X2Jpby4K ClRoZXJlIGlzIG5vIHBlcmZvcm1hbmNlIG9yIGJ1ZyBmaXggcmVhc29uIGZvciB0aGlzIGxp a2Ugd2hlbiBpdAp3YXMgcHJvcG9zZWQgaW4gdGhlIHBhc3QuIFBlb3BsZSBmZWx0IGl0IG1h ZGUgdGhlIEFQSSBuaWNlciBzaW5jZQp3ZSBoYXZlIHVzZXJzIGRvIHRoaXMgd2l0aCBldmVy eSBvdGhlciBmaWVsZCBhbHJlYWR5LiBTb21lCnVzZXJzIHdlcmUgYWxyZWFkeSBkb2luZyB0 aGlzIHNvIGl0IHNlZW1zIHRvIGF2b2lkIGNvbmZ1c2lvbiAoanVzdApzZXQgaXQgbGlrZSB0 aGUgcmVzdCBvZiB0aGUgZmllbGRzKS4KClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hyaXN0aWUg PG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogYmxvY2svYmlvLmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNyArKystLS0tCiBibG9jay9ibGstY29yZS5jICAgICAgICAgICAgICAg ICAgICB8IDExICsrKystLS0tLS0tCiBibG9jay9ibGstZmx1c2guYyAgICAgICAgICAgICAg ICAgICB8ICAzICsrLQogYmxvY2svYmxrLWxpYi5jICAgICAgICAgICAgICAgICAgICAgfCAg OSArKysrKystLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2FjdGxvZy5jICAgIHwgIDIg Ky0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jICAgIHwgIDQgKystLQogZHJp dmVycy9ibG9jay9mbG9wcHkuYyAgICAgICAgICAgICAgfCAgMyArKy0KIGRyaXZlcnMvYmxv Y2sveGVuLWJsa2JhY2svYmxrYmFjay5jIHwgIDQgKysrLQogZHJpdmVycy9ibG9jay94ZW4t YmxrZnJvbnQuYyAgICAgICAgfCAgNCArKy0tCiBkcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5j ICAgICAgICAgICB8ICA2ICsrKystLQogZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAg NCArKy0tCiBkcml2ZXJzL21kL2RtLWJ1ZmlvLmMgICAgICAgICAgICAgICB8ICAzICsrLQog ZHJpdmVycy9tZC9kbS1pby5jICAgICAgICAgICAgICAgICAgfCAgMyArKy0KIGRyaXZlcnMv bWQvZG0tbG9nLXdyaXRlcy5jICAgICAgICAgIHwgIDkgKysrKysrLS0tCiBkcml2ZXJzL21k L2RtLXRoaW4uYyAgICAgICAgICAgICAgICB8ICAzICsrLQogZHJpdmVycy9tZC9tZC5jICAg ICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrLS0tCiBkcml2ZXJzL21kL3JhaWQxLmMg ICAgICAgICAgICAgICAgICB8ICAzICsrLQogZHJpdmVycy9tZC9yYWlkMTAuYyAgICAgICAg ICAgICAgICAgfCAgNCArKystCiBkcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMgICAgICAgICAg ICB8ICA3ICsrKystLS0KIGRyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9jay5jIHwg MjQgKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBmcy9idHJmcy9jaGVjay1pbnRlZ3JpdHku YyAgICAgICAgICB8IDE4ICsrKysrKysrKystLS0tLS0tLQogZnMvYnRyZnMvY2hlY2staW50 ZWdyaXR5LmggICAgICAgICAgfCAgNCArKy0tCiBmcy9idHJmcy9kaXNrLWlvLmMgICAgICAg ICAgICAgICAgICB8ICAzICsrLQogZnMvYnRyZnMvZXh0ZW50X2lvLmMgICAgICAgICAgICAg ICAgfCAgNyArKysrLS0tCiBmcy9idHJmcy9yYWlkNTYuYyAgICAgICAgICAgICAgICAgICB8 IDE2ICsrKysrKysrKysrLS0tLS0KIGZzL2J0cmZzL3NjcnViLmMgICAgICAgICAgICAgICAg ICAgIHwgMTYgKysrKysrKysrKystLS0tLQogZnMvYnRyZnMvdm9sdW1lcy5jICAgICAgICAg ICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQogZnMvYnVmZmVyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMyArKy0KIGZzL2RpcmVjdC1pby5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDMgKystCiBmcy9leHQ0L2NyeXB0by5jICAgICAgICAgICAgICAgICAgICB8ICAz ICsrLQogZnMvZXh0NC9wYWdlLWlvLmMgICAgICAgICAgICAgICAgICAgfCAgMyArKy0KIGZz L2V4dDQvcmVhZHBhZ2UuYyAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0tCiBmcy9m MmZzL2RhdGEuYyAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrLS0tLS0KIGZz L2YyZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKy0tCiBmcy9nZnMy L2xvcHMuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQogZnMvZ2ZzMi9vcHNfZnN0 eXBlLmMgICAgICAgICAgICAgICAgfCAgMyArKy0KIGZzL2hmc3BsdXMvd3JhcHBlci5jICAg ICAgICAgICAgICAgIHwgIDMgKystCiBmcy9qZnMvamZzX2xvZ21nci5jICAgICAgICAgICAg ICAgICB8ICA2ICsrKystLQogZnMvamZzL2pmc19tZXRhcGFnZS5jICAgICAgICAgICAgICAg fCAxMCArKysrKystLS0tCiBmcy9sb2dmcy9kZXZfYmRldi5jICAgICAgICAgICAgICAgICB8 IDE1ICsrKysrKysrKystLS0tLQogZnMvbXBhZ2UuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMyArKy0KIGZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5jICAgIHwgMjIg KysrKysrKysrKysrLS0tLS0tLS0tLQogZnMvbmlsZnMyL3NlZ2J1Zi5jICAgICAgICAgICAg ICAgICAgfCAgMyArKy0KIGZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgICAgICAgIHwg MTIgKysrKysrKy0tLS0tCiBmcy94ZnMveGZzX2FvcHMuYyAgICAgICAgICAgICAgICAgICB8 ICAzICsrLQogZnMveGZzL3hmc19idWYuYyAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0t CiBpbmNsdWRlL2xpbnV4L2Jpby5oICAgICAgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRl L2xpbnV4L2ZzLmggICAgICAgICAgICAgICAgICB8ICAyICstCiBrZXJuZWwvcG93ZXIvc3dh cC5jICAgICAgICAgICAgICAgICB8ICA1ICsrKy0tCiBtbS9wYWdlX2lvLmMgICAgICAgICAg ICAgICAgICAgICAgICB8IDEwICsrKysrKy0tLS0KIDUxIGZpbGVzIGNoYW5nZWQsIDIwOSBp bnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmlv LmMgYi9ibG9jay9iaW8uYwppbmRleCBkYmFiZDQ4Li45MjExMTJiIDEwMDY0NAotLS0gYS9i bG9jay9iaW8uYworKysgYi9ibG9jay9iaW8uYwpAQCAtODU5LDIxICs4NTksMjAgQEAgc3Rh dGljIHZvaWQgc3VibWl0X2Jpb193YWl0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbykKIAogLyoq CiAgKiBzdWJtaXRfYmlvX3dhaXQgLSBzdWJtaXQgYSBiaW8sIGFuZCB3YWl0IHVudGlsIGl0 IGNvbXBsZXRlcwotICogQHJ3OiB3aGV0aGVyIHRvICVSRUFEIG9yICVXUklURSwgb3IgbWF5 YmUgdG8gJVJFQURBIChyZWFkIGFoZWFkKQogICogQGJpbzogVGhlICZzdHJ1Y3QgYmlvIHdo aWNoIGRlc2NyaWJlcyB0aGUgSS9PCiAgKgogICogU2ltcGxlIHdyYXBwZXIgYXJvdW5kIHN1 Ym1pdF9iaW8oKS4gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIHRoZSBlcnJvciBmcm9tCiAg KiBiaW9fZW5kaW8oKSBvbiBmYWlsdXJlLgogICovCi1pbnQgc3VibWl0X2Jpb193YWl0KGlu dCBydywgc3RydWN0IGJpbyAqYmlvKQoraW50IHN1Ym1pdF9iaW9fd2FpdChzdHJ1Y3QgYmlv ICpiaW8pCiB7CiAJc3RydWN0IHN1Ym1pdF9iaW9fcmV0IHJldDsKIAotCXJ3IHw9IFJFUV9T WU5DOwogCWluaXRfY29tcGxldGlvbigmcmV0LmV2ZW50KTsKIAliaW8tPmJpX3ByaXZhdGUg PSAmcmV0OwogCWJpby0+YmlfZW5kX2lvID0gc3VibWl0X2Jpb193YWl0X2VuZGlvOwotCXN1 Ym1pdF9iaW8ocncsIGJpbyk7CisJYmlvLT5iaV9ydyB8PSBSRVFfU1lOQzsKKwlzdWJtaXRf YmlvKGJpbyk7CiAJd2FpdF9mb3JfY29tcGxldGlvbigmcmV0LmV2ZW50KTsKIAogCXJldHVy biByZXQuZXJyb3I7CmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxr LWNvcmUuYwppbmRleCA1ZWM5OTYwLi5hYzkyNzVjIDEwMDY0NAotLS0gYS9ibG9jay9ibGst Y29yZS5jCisrKyBiL2Jsb2NrL2Jsay1jb3JlLmMKQEAgLTIwNjgsNyArMjA2OCw2IEBAIEVY UE9SVF9TWU1CT0woZ2VuZXJpY19tYWtlX3JlcXVlc3QpOwogCiAvKioKICAqIHN1Ym1pdF9i aW8gLSBzdWJtaXQgYSBiaW8gdG8gdGhlIGJsb2NrIGRldmljZSBsYXllciBmb3IgSS9PCi0g KiBAcnc6IHdoZXRoZXIgdG8gJVJFQUQgb3IgJVdSSVRFLCBvciBtYXliZSB0byAlUkVBREEg KHJlYWQgYWhlYWQpCiAgKiBAYmlvOiBUaGUgJnN0cnVjdCBiaW8gd2hpY2ggZGVzY3JpYmVz IHRoZSBJL08KICAqCiAgKiBzdWJtaXRfYmlvKCkgaXMgdmVyeSBzaW1pbGFyIGluIHB1cnBv c2UgdG8gZ2VuZXJpY19tYWtlX3JlcXVlc3QoKSwgYW5kCkBAIC0yMDc2LDEwICsyMDc1LDgg QEAgRVhQT1JUX1NZTUJPTChnZW5lcmljX21ha2VfcmVxdWVzdCk7CiAgKiBpbnRlcmZhY2Vz OyBAYmlvIG11c3QgYmUgcHJlc2V0dXAgYW5kIHJlYWR5IGZvciBJL08uCiAgKgogICovCi1i bGtfcWNfdCBzdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQorYmxrX3FjX3Qg c3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JYmlvLT5iaV9ydyB8PSBydzsKLQog CS8qCiAJICogSWYgaXQncyBhIHJlZ3VsYXIgcmVhZC93cml0ZSBvciBhIGJhcnJpZXIgd2l0 aCBkYXRhIGF0dGFjaGVkLAogCSAqIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBhY2NvdW50aW5n IHN0dWZmIGJlZm9yZSBzdWJtaXNzaW9uLgpAQCAtMjA4NywxMiArMjA4NCwxMiBAQCBibGtf cWNfdCBzdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQogCWlmIChiaW9faGFz X2RhdGEoYmlvKSkgewogCQl1bnNpZ25lZCBpbnQgY291bnQ7CiAKLQkJaWYgKHVubGlrZWx5 KHJ3ICYgUkVRX1dSSVRFX1NBTUUpKQorCQlpZiAodW5saWtlbHkoYmlvLT5iaV9ydyAmIFJF UV9XUklURV9TQU1FKSkKIAkJCWNvdW50ID0gYmRldl9sb2dpY2FsX2Jsb2NrX3NpemUoYmlv LT5iaV9iZGV2KSA+PiA5OwogCQllbHNlCiAJCQljb3VudCA9IGJpb19zZWN0b3JzKGJpbyk7 CiAKLQkJaWYgKHJ3ICYgV1JJVEUpIHsKKwkJaWYgKGJpby0+YmlfcncgJiBXUklURSkgewog CQkJY291bnRfdm1fZXZlbnRzKFBHUEdPVVQsIGNvdW50KTsKIAkJfSBlbHNlIHsKIAkJCXRh c2tfaW9fYWNjb3VudF9yZWFkKGJpby0+YmlfaXRlci5iaV9zaXplKTsKQEAgLTIxMDMsNyAr MjEwMCw3IEBAIGJsa19xY190IHN1Ym1pdF9iaW8oaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8p CiAJCQljaGFyIGJbQkRFVk5BTUVfU0laRV07CiAJCQlwcmludGsoS0VSTl9ERUJVRyAiJXMo JWQpOiAlcyBibG9jayAlTHUgb24gJXMgKCV1IHNlY3RvcnMpXG4iLAogCQkJY3VycmVudC0+ Y29tbSwgdGFza19waWRfbnIoY3VycmVudCksCi0JCQkJKHJ3ICYgV1JJVEUpID8gIldSSVRF IiA6ICJSRUFEIiwKKwkJCQkoYmlvLT5iaV9ydyAmIFdSSVRFKSA/ICJXUklURSIgOiAiUkVB RCIsCiAJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAog CQkJCWJkZXZuYW1lKGJpby0+YmlfYmRldiwgYiksCiAJCQkJY291bnQpOwpkaWZmIC0tZ2l0 IGEvYmxvY2svYmxrLWZsdXNoLmMgYi9ibG9jay9ibGstZmx1c2guYwppbmRleCA5YzQyM2U1 Li5lMDkyZTEzIDEwMDY0NAotLS0gYS9ibG9jay9ibGstZmx1c2guYworKysgYi9ibG9jay9i bGstZmx1c2guYwpAQCAtNDg0LDggKzQ4NCw5IEBAIGludCBibGtkZXZfaXNzdWVfZmx1c2go c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZ2ZwX3QgZ2ZwX21hc2ssCiAKIAliaW8gPSBi aW9fYWxsb2MoZ2ZwX21hc2ssIDApOwogCWJpby0+YmlfYmRldiA9IGJkZXY7CisJYmlvLT5i aV9ydyB8PSBXUklURV9GTFVTSDsKIAotCXJldCA9IHN1Ym1pdF9iaW9fd2FpdChXUklURV9G TFVTSCwgYmlvKTsKKwlyZXQgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIAogCS8qCiAJICog VGhlIGRyaXZlciBtdXN0IHN0b3JlIHRoZSBlcnJvciBsb2NhdGlvbiBpbiAtPmJpX3NlY3Rv ciwgaWYKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1saWIuYyBiL2Jsb2NrL2Jsay1saWIuYwpp bmRleCA5ZWJmNjUzLi41MjkyZTMwIDEwMDY0NAotLS0gYS9ibG9jay9ibGstbGliLmMKKysr IGIvYmxvY2svYmxrLWxpYi5jCkBAIC0xMDIsMTMgKzEwMiwxNCBAQCBpbnQgYmxrZGV2X2lz c3VlX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9y LAogCQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRjaF9lbmRfaW87CiAJCWJpby0+YmlfYmRl diA9IGJkZXY7CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKKwkJYmlvLT5iaV9ydyB8PSB0 eXBlOwogCiAJCWJpby0+YmlfaXRlci5iaV9zaXplID0gcmVxX3NlY3RzIDw8IDk7CiAJCW5y X3NlY3RzIC09IHJlcV9zZWN0czsKIAkJc2VjdG9yID0gZW5kX3NlY3Q7CiAKIAkJYXRvbWlj X2luYygmYmIuZG9uZSk7Ci0JCXN1Ym1pdF9iaW8odHlwZSwgYmlvKTsKKwkJc3VibWl0X2Jp byhiaW8pOwogCiAJCS8qCiAJCSAqIFdlIGNhbiBsb29wIGZvciBhIGxvbmcgdGltZSBpbiBo ZXJlLCBpZiBzb21lb25lIGRvZXMKQEAgLTE3Nyw2ICsxNzgsNyBAQCBpbnQgYmxrZGV2X2lz c3VlX3dyaXRlX3NhbWUoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qgc2Vj dG9yLAogCQliaW8tPmJpX2lvX3ZlYy0+YnZfcGFnZSA9IHBhZ2U7CiAJCWJpby0+YmlfaW9f dmVjLT5idl9vZmZzZXQgPSAwOwogCQliaW8tPmJpX2lvX3ZlYy0+YnZfbGVuID0gYmRldl9s b2dpY2FsX2Jsb2NrX3NpemUoYmRldik7CisJCWJpby0+YmlfcncgfD0gUkVRX1dSSVRFIHwg UkVRX1dSSVRFX1NBTUU7CiAKIAkJaWYgKG5yX3NlY3RzID4gbWF4X3dyaXRlX3NhbWVfc2Vj dG9ycykgewogCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBtYXhfd3JpdGVfc2FtZV9zZWN0 b3JzIDw8IDk7CkBAIC0xODgsNyArMTkwLDcgQEAgaW50IGJsa2Rldl9pc3N1ZV93cml0ZV9z YW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJfQog CiAJCWF0b21pY19pbmMoJmJiLmRvbmUpOwotCQlzdWJtaXRfYmlvKFJFUV9XUklURSB8IFJF UV9XUklURV9TQU1FLCBiaW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJfQogCiAJLyogV2Fp dCBmb3IgYmlvcyBpbi1mbGlnaHQgKi8KQEAgLTIzOCw2ICsyNDAsNyBAQCBzdGF0aWMgaW50 IF9fYmxrZGV2X2lzc3VlX3plcm9vdXQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2Vj dG9yX3Qgc2VjdG9yLAogCQliaW8tPmJpX2JkZXYgICA9IGJkZXY7CiAJCWJpby0+YmlfZW5k X2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gJmJiOworCQli aW8tPmJpX3J3IHw9IFdSSVRFOwogCiAJCXdoaWxlIChucl9zZWN0cyAhPSAwKSB7CiAJCQlz eiA9IG1pbigoc2VjdG9yX3QpIFBBR0VfU0laRSA+PiA5ICwgbnJfc2VjdHMpOwpAQCAtMjQ5 LDcgKzI1Miw3IEBAIHN0YXRpYyBpbnQgX19ibGtkZXZfaXNzdWVfemVyb291dChzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJCX0KIAkJcmV0ID0gMDsK IAkJYXRvbWljX2luYygmYmIuZG9uZSk7Ci0JCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CisJ CXN1Ym1pdF9iaW8oYmlvKTsKIAl9CiAKIAkvKiBXYWl0IGZvciBiaW9zIGluLWZsaWdodCAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYwppbmRleCAxMDQ1OWExLi42MDY5ZTE1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYworKysgYi9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRp YyBpbnQgX2RyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNl LAogCWlmIChkcmJkX2luc2VydF9mYXVsdChkZXZpY2UsIChydyAmIFdSSVRFKSA/IERSQkRf RkFVTFRfTURfV1IgOiBEUkJEX0ZBVUxUX01EX1JEKSkKIAkJYmlvX2lvX2Vycm9yKGJpbyk7 CiAJZWxzZQotCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJ d2FpdF91bnRpbF9kb25lX29yX2ZvcmNlX2RldGFjaGVkKGRldmljZSwgYmRldiwgJmRldmlj ZS0+bWRfaW8uZG9uZSk7CiAJaWYgKCFiaW8tPmJpX2Vycm9yKQogCQllcnIgPSBkZXZpY2Ut Pm1kX2lvLmVycm9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0 bWFwLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwppbmRleCAwZGFiYzli Li41NDQ1NGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAu YworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwpAQCAtMTAyMywxMiAr MTAyMywxMiBAQCBzdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2Jt X2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpIF9fbXVzdF9obwogCWJpb19hZGRfcGFnZShi aW8sIHBhZ2UsIGxlbiwgMCk7CiAJYmlvLT5iaV9wcml2YXRlID0gY3R4OwogCWJpby0+Ymlf ZW5kX2lvID0gZHJiZF9ibV9lbmRpbzsKKwliaW8tPmJpX3J3IHw9IHJ3OwogCiAJaWYgKGRy YmRfaW5zZXJ0X2ZhdWx0KGRldmljZSwgKHJ3ICYgV1JJVEUpID8gRFJCRF9GQVVMVF9NRF9X UiA6IERSQkRfRkFVTFRfTURfUkQpKSB7Ci0JCWJpby0+YmlfcncgfD0gcnc7CiAJCWJpb19p b19lcnJvcihiaW8pOwogCX0gZWxzZSB7Ci0JCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJCXN1 Ym1pdF9iaW8oYmlvKTsKIAkJLyogdGhpcyBzaG91bGQgbm90IGNvdW50IGFzIHVzZXIgYWN0 aXZpdHkgYW5kIGNhdXNlIHRoZQogCQkgKiByZXN5bmMgdG8gdGhyb3R0bGUgLS0gc2VlIGRy YmRfcnNfc2hvdWxkX3Nsb3dfZG93bigpLiAqLwogCQlhdG9taWNfYWRkKGxlbiA+PiA5LCAm ZGV2aWNlLT5yc19zZWN0X2V2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZmxvcHB5 LmMgYi9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCmluZGV4IDMzMTM2M2UuLjNiMTQwNGMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKKysrIGIvZHJpdmVycy9ibG9jay9m bG9wcHkuYwpAQCAtMzgxNiw4ICszODE2LDkgQEAgc3RhdGljIGludCBfX2Zsb3BweV9yZWFk X2Jsb2NrXzAoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgaW50IGRyaXZlKQogCWJpby5i aV9mbGFncyB8PSAoMSA8PCBCSU9fUVVJRVQpOwogCWJpby5iaV9wcml2YXRlID0gJmNiZGF0 YTsKIAliaW8uYmlfZW5kX2lvID0gZmxvcHB5X3JiMF9jYjsKKwliaW8uYmlfcncgfD0gUkVB RDsKIAotCXN1Ym1pdF9iaW8oUkVBRCwgJmJpbyk7CisJc3VibWl0X2JpbygmYmlvKTsKIAlw cm9jZXNzX2ZkX3JlcXVlc3QoKTsKIAogCWluaXRfY29tcGxldGlvbigmY2JkYXRhLmNvbXBs ZXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5j IGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKaW5kZXggZjkwOTk5NC4u ZGE4ZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNr LmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKQEAgLTEzNDMs NiArMTM0Myw3IEBAIHN0YXRpYyBpbnQgZGlzcGF0Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhl bl9ibGtpZiAqYmxraWYsCiAJCQliaW8tPmJpX3ByaXZhdGUgPSBwZW5kaW5nX3JlcTsKIAkJ CWJpby0+YmlfZW5kX2lvICA9IGVuZF9ibG9ja19pb19vcDsKIAkJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgID0gcHJlcS5zZWN0b3JfbnVtYmVyOworCQkJYmlvLT5iaV9ydwl8PSBvcGVy YXRpb247CiAJCX0KIAogCQlwcmVxLnNlY3Rvcl9udW1iZXIgKz0gc2VnW2ldLm5zZWM7CkBA IC0xMzYwLDEzICsxMzYxLDE0IEBAIHN0YXRpYyBpbnQgZGlzcGF0Y2hfcndfYmxvY2tfaW8o c3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCiAJCWJpby0+YmlfYmRldiAgICA9IHByZXEuYmRl djsKIAkJYmlvLT5iaV9wcml2YXRlID0gcGVuZGluZ19yZXE7CiAJCWJpby0+YmlfZW5kX2lv ICA9IGVuZF9ibG9ja19pb19vcDsKKwkJYmlvLT5iaV9ydwl8PSBvcGVyYXRpb247CiAJfQog CiAJYXRvbWljX3NldCgmcGVuZGluZ19yZXEtPnBlbmRjbnQsIG5iaW8pOwogCWJsa19zdGFy dF9wbHVnKCZwbHVnKTsKIAogCWZvciAoaSA9IDA7IGkgPCBuYmlvOyBpKyspCi0JCXN1Ym1p dF9iaW8ob3BlcmF0aW9uLCBiaW9saXN0W2ldKTsKKwkJc3VibWl0X2JpbyhiaW9saXN0W2ld KTsKIAogCS8qIExldCB0aGUgSS9PcyBnby4uICovCiAJYmxrX2ZpbmlzaF9wbHVnKCZwbHVn KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgYi9kcml2ZXJz L2Jsb2NrL3hlbi1ibGtmcm9udC5jCmluZGV4IDJmZWUyZWUuLjgxNDQ0ZmMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIvZHJpdmVycy9ibG9jay94 ZW4tYmxrZnJvbnQuYwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgc3RhdGljIGludCBibGtpZl9y ZWNvdmVyKHN0cnVjdCBibGtmcm9udF9pbmZvICppbmZvKQogCQkJCWJpb190cmltKGNsb25l ZF9iaW8sIG9mZnNldCwgc2l6ZSk7CiAJCQkJY2xvbmVkX2Jpby0+YmlfcHJpdmF0ZSA9IHNw bGl0X2JpbzsKIAkJCQljbG9uZWRfYmlvLT5iaV9lbmRfaW8gPSBzcGxpdF9iaW9fZW5kOwot CQkJCXN1Ym1pdF9iaW8oY2xvbmVkX2Jpby0+YmlfcncsIGNsb25lZF9iaW8pOworCQkJCXN1 Ym1pdF9iaW8oY2xvbmVkX2Jpbyk7CiAJCQl9CiAJCQkvKgogCQkJICogTm93IHdlIGhhdmUg dG8gd2FpdCBmb3IgYWxsIHRob3NlIHNtYWxsZXIgYmlvcyB0bwpAQCAtMTc1OCw3ICsxNzU4 LDcgQEAgc3RhdGljIGludCBibGtpZl9yZWNvdmVyKHN0cnVjdCBibGtmcm9udF9pbmZvICpp bmZvKQogCQkJY29udGludWU7CiAJCX0KIAkJLyogV2UgZG9uJ3QgbmVlZCB0byBzcGxpdCB0 aGlzIGJpbyAqLwotCQlzdWJtaXRfYmlvKGJpby0+YmlfcncsIGJpbyk7CisJCXN1Ym1pdF9i aW8oYmlvKTsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNh Y2hlL2RlYnVnLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jCmluZGV4IDhiMWYxZDUu LmRiNjg1NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL2RlYnVnLmMKKysrIGIv ZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYwpAQCAtNTIsOSArNTIsMTAgQEAgdm9pZCBiY2hf YnRyZWVfdmVyaWZ5KHN0cnVjdCBidHJlZSAqYikKIAliaW8tPmJpX2JkZXYJCT0gUFRSX0NB Q0hFKGItPmMsICZiLT5rZXksIDApLT5iZGV2OwogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJ PSBQVFJfT0ZGU0VUKCZiLT5rZXksIDApOwogCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZ X1NJWkUoJnYtPmtleSkgPDwgOTsKKwliaW8tPmJpX3J3CQl8PSBSRVFfTUVUQXxSRUFEX1NZ TkM7CiAJYmNoX2Jpb19tYXAoYmlvLCBzb3J0ZWQpOwogCi0Jc3VibWl0X2Jpb193YWl0KFJF UV9NRVRBfFJFQURfU1lOQywgYmlvKTsKKwlzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIAliY2hf YmJpb19mcmVlKGJpbywgYi0+Yyk7CiAKIAltZW1jcHkob25kaXNrLCBzb3J0ZWQsIEtFWV9T SVpFKCZ2LT5rZXkpIDw8IDkpOwpAQCAtMTEzLDExICsxMTQsMTIgQEAgdm9pZCBiY2hfZGF0 YV92ZXJpZnkoc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8pCiAJY2hl Y2sgPSBiaW9fY2xvbmUoYmlvLCBHRlBfTk9JTyk7CiAJaWYgKCFjaGVjaykKIAkJcmV0dXJu OworCWNoZWNrLT5iaV9ydyB8PSBSRUFEX1NZTkM7CiAKIAlpZiAoYmlvX2FsbG9jX3BhZ2Vz KGNoZWNrLCBHRlBfTk9JTykpCiAJCWdvdG8gb3V0X3B1dDsKIAotCXN1Ym1pdF9iaW9fd2Fp dChSRUFEX1NZTkMsIGNoZWNrKTsKKwlzdWJtaXRfYmlvX3dhaXQoY2hlY2spOwogCiAJYmlv X2Zvcl9lYWNoX3NlZ21lbnQoYnYsIGJpbywgaXRlcikgewogCQl2b2lkICpwMSA9IGttYXBf YXRvbWljKGJ2LmJ2X3BhZ2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvam91 cm5hbC5jIGIvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jCmluZGV4IDI5ZWJhNzIuLmFm M2Y5ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYworKysgYi9k cml2ZXJzL21kL2JjYWNoZS9qb3VybmFsLmMKQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMg dm9pZCBqb3VybmFsX2Rpc2NhcmRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJ c3RydWN0IGpvdXJuYWxfZGV2aWNlICpqYSA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1 Y3Qgam91cm5hbF9kZXZpY2UsIGRpc2NhcmRfd29yayk7CiAKLQlzdWJtaXRfYmlvKDAsICZq YS0+ZGlzY2FyZF9iaW8pOworCXN1Ym1pdF9iaW8oJmphLT5kaXNjYXJkX2Jpbyk7CiB9CiAK IHN0YXRpYyB2b2lkIGRvX2pvdXJuYWxfZGlzY2FyZChzdHJ1Y3QgY2FjaGUgKmNhKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyBiL2RyaXZlcnMvbWQvYmNhY2hl L3N1cGVyLmMKaW5kZXggNjc5YTA5My4uOGNkMjE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9iY2FjaGUvc3VwZXIuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCkBAIC0y MTIsNyArMjEyLDcgQEAgc3RhdGljIHZvaWQgX193cml0ZV9zdXBlcihzdHJ1Y3QgY2FjaGVf c2IgKnNiLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQgaTsKIAogCWJpby0+YmlfaXRl ci5iaV9zZWN0b3IJPSBTQl9TRUNUT1I7Ci0JYmlvLT5iaV9ydwkJPSBSRVFfU1lOQ3xSRVFf TUVUQTsKKwliaW8tPmJpX3J3CQk9IFJFUV9XUklURXxSRVFfU1lOQ3xSRVFfTUVUQTsKIAli aW8tPmJpX2l0ZXIuYmlfc2l6ZQk9IFNCX1NJWkU7CiAJYmNoX2Jpb19tYXAoYmlvLCBOVUxM KTsKIApAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIF9fd3JpdGVfc3VwZXIoc3Ry dWN0IGNhY2hlX3NiICpzYiwgc3RydWN0IGJpbyAqYmlvKQogCXByX2RlYnVnKCJ2ZXIgJWxs dSwgZmxhZ3MgJWxsdSwgc2VxICVsbHUiLAogCQkgc2ItPnZlcnNpb24sIHNiLT5mbGFncywg c2ItPnNlcSk7CiAKLQlzdWJtaXRfYmlvKFJFUV9XUklURSwgYmlvKTsKKwlzdWJtaXRfYmlv KGJpbyk7CiB9CiAKIHN0YXRpYyB2b2lkIGJjaF93cml0ZV9iZGV2X3N1cGVyX3VubG9jayhz dHJ1Y3QgY2xvc3VyZSAqY2wpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMg Yi9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMKaW5kZXggMmRkMzMwOC4uMTIzNDE3MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9kbS1idWZpby5jCisrKyBiL2RyaXZlcnMvbWQvZG0tYnVmaW8u YwpAQCAtNjE0LDYgKzYxNCw3IEBAIHN0YXRpYyB2b2lkIHVzZV9pbmxpbmVfYmlvKHN0cnVj dCBkbV9idWZmZXIgKmIsIGludCBydywgc2VjdG9yX3QgYmxvY2ssCiAJICogdGhlIGRtX2J1 ZmZlcidzIGlubGluZSBiaW8gaXMgbG9jYWwgdG8gYnVmaW8uCiAJICovCiAJYi0+YmlvLmJp X3ByaXZhdGUgPSBlbmRfaW87CisJYi0+YmlvLmJpX3J3IHw9IHJ3OwogCiAJLyoKIAkgKiBX ZSBhc3N1bWUgdGhhdCBpZiBsZW4gPj0gUEFHRV9TSVpFIHB0ciBpcyBwYWdlLWFsaWduZWQu CkBAIC02NDAsNyArNjQxLDcgQEAgc3RhdGljIHZvaWQgdXNlX2lubGluZV9iaW8oc3RydWN0 IGRtX2J1ZmZlciAqYiwgaW50IHJ3LCBzZWN0b3JfdCBibG9jaywKIAkJcHRyICs9IFBBR0Vf U0laRTsKIAl9IHdoaWxlIChsZW4gPiAwKTsKIAotCXN1Ym1pdF9iaW8ocncsICZiLT5iaW8p OworCXN1Ym1pdF9iaW8oJmItPmJpbyk7CiB9CiAKIHN0YXRpYyB2b2lkIHN1Ym1pdF9pbyhz dHJ1Y3QgZG1fYnVmZmVyICpiLCBpbnQgcncsIHNlY3Rvcl90IGJsb2NrLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9kbS1pby5jIGIvZHJpdmVycy9tZC9kbS1pby5jCmluZGV4IDgxYzVl MWEuLjE5NzUzMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0taW8uYworKysgYi9kcml2 ZXJzL21kL2RtLWlvLmMKQEAgLTMyMiw2ICszMjIsNyBAQCBzdGF0aWMgdm9pZCBkb19yZWdp b24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9pb19yZWdpb24gKndoZXJl LAogCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gd2hlcmUtPnNlY3RvciArICh3aGVyZS0+ Y291bnQgLSByZW1haW5pbmcpOwogCQliaW8tPmJpX2JkZXYgPSB3aGVyZS0+YmRldjsKIAkJ YmlvLT5iaV9lbmRfaW8gPSBlbmRpbzsKKwkJYmlvLT5iaV9ydyB8PSBydzsKIAkJc3RvcmVf aW9fYW5kX3JlZ2lvbl9pbl9iaW8oYmlvLCBpbywgcmVnaW9uKTsKIAogCQlpZiAocncgJiBS RVFfRElTQ0FSRCkgewpAQCAtMzU1LDcgKzM1Niw3IEBAIHN0YXRpYyB2b2lkIGRvX3JlZ2lv bihpbnQgcncsIHVuc2lnbmVkIHJlZ2lvbiwgc3RydWN0IGRtX2lvX3JlZ2lvbiAqd2hlcmUs CiAJCX0KIAogCQlhdG9taWNfaW5jKCZpby0+Y291bnQpOwotCQlzdWJtaXRfYmlvKHJ3LCBi aW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJfSB3aGlsZSAocmVtYWluaW5nKTsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgYi9kcml2ZXJzL21kL2Rt LWxvZy13cml0ZXMuYwppbmRleCA2MjQ1ODlkLi4yMTc2MGUzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2RtLWxvZy13cml0ZXMuYworKysgYi9kcml2ZXJzL21kL2RtLWxvZy13cml0ZXMu YwpAQCAtMjA1LDYgKzIwNSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfbWV0YWRhdGEoc3RydWN0 IGxvZ193cml0ZXNfYyAqbGMsIHZvaWQgKmVudHJ5LAogCWJpby0+YmlfYmRldiA9IGxjLT5s b2dkZXYtPmJkZXY7CiAJYmlvLT5iaV9lbmRfaW8gPSBsb2dfZW5kX2lvOwogCWJpby0+Ymlf cHJpdmF0ZSA9IGxjOworCWJpby0+YmlfcncgfD0gV1JJVEU7CiAKIAlwYWdlID0gYWxsb2Nf cGFnZShHRlBfS0VSTkVMKTsKIAlpZiAoIXBhZ2UpIHsKQEAgLTIyNiw3ICsyMjcsNyBAQCBz dGF0aWMgaW50IHdyaXRlX21ldGFkYXRhKHN0cnVjdCBsb2dfd3JpdGVzX2MgKmxjLCB2b2lk ICplbnRyeSwKIAkJRE1FUlIoIkNvdWxkbid0IGFkZCBwYWdlIHRvIHRoZSBsb2cgYmxvY2si KTsKIAkJZ290byBlcnJvcl9iaW87CiAJfQotCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CisJ c3VibWl0X2JpbyhiaW8pOwogCXJldHVybiAwOwogZXJyb3JfYmlvOgogCWJpb19wdXQoYmlv KTsKQEAgLTI2OSw2ICsyNzAsNyBAQCBzdGF0aWMgaW50IGxvZ19vbmVfYmxvY2soc3RydWN0 IGxvZ193cml0ZXNfYyAqbGMsCiAJYmlvLT5iaV9iZGV2ID0gbGMtPmxvZ2Rldi0+YmRldjsK IAliaW8tPmJpX2VuZF9pbyA9IGxvZ19lbmRfaW87CiAJYmlvLT5iaV9wcml2YXRlID0gbGM7 CisJYmlvLT5iaV9ydyB8PSBXUklURTsKIAogCWZvciAoaSA9IDA7IGkgPCBibG9jay0+dmVj X2NudDsgaSsrKSB7CiAJCS8qCkBAIC0yNzksNyArMjgxLDcgQEAgc3RhdGljIGludCBsb2df b25lX2Jsb2NrKHN0cnVjdCBsb2dfd3JpdGVzX2MgKmxjLAogCQkJCSAgIGJsb2NrLT52ZWNz W2ldLmJ2X2xlbiwgMCk7CiAJCWlmIChyZXQgIT0gYmxvY2stPnZlY3NbaV0uYnZfbGVuKSB7 CiAJCQlhdG9taWNfaW5jKCZsYy0+aW9fYmxvY2tzKTsKLQkJCXN1Ym1pdF9iaW8oV1JJVEUs IGJpbyk7CisJCQlzdWJtaXRfYmlvKGJpbyk7CiAJCQliaW8gPSBiaW9fYWxsb2MoR0ZQX0tF Uk5FTCwgYmxvY2stPnZlY19jbnQgLSBpKTsKIAkJCWlmICghYmlvKSB7CiAJCQkJRE1FUlIo IkNvdWxkbid0IGFsbG9jIGxvZyBiaW8iKTsKQEAgLTI5MCw2ICsyOTIsNyBAQCBzdGF0aWMg aW50IGxvZ19vbmVfYmxvY2soc3RydWN0IGxvZ193cml0ZXNfYyAqbGMsCiAJCQliaW8tPmJp X2JkZXYgPSBsYy0+bG9nZGV2LT5iZGV2OwogCQkJYmlvLT5iaV9lbmRfaW8gPSBsb2dfZW5k X2lvOwogCQkJYmlvLT5iaV9wcml2YXRlID0gbGM7CisJCQliaW8tPmJpX3J3IHw9IFdSSVRF OwogCiAJCQlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBibG9jay0+dmVjc1tpXS5idl9wYWdl LAogCQkJCQkgICBibG9jay0+dmVjc1tpXS5idl9sZW4sIDApOwpAQCAtMzAxLDcgKzMwNCw3 IEBAIHN0YXRpYyBpbnQgbG9nX29uZV9ibG9jayhzdHJ1Y3QgbG9nX3dyaXRlc19jICpsYywK IAkJfQogCQlzZWN0b3IgKz0gYmxvY2stPnZlY3NbaV0uYnZfbGVuID4+IFNFQ1RPUl9TSElG VDsKIAl9Ci0Jc3VibWl0X2JpbyhXUklURSwgYmlvKTsKKwlzdWJtaXRfYmlvKGJpbyk7CiBv dXQ6CiAJa2ZyZWUoYmxvY2stPmRhdGEpOwogCWtmcmVlKGJsb2NrKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVycy9tZC9kbS10aGluLmMKaW5kZXggNjM5 MDNhNS4uNGRiNWFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMKKysrIGIv ZHJpdmVycy9tZC9kbS10aGluLmMKQEAgLTM2NSw4ICszNjUsOSBAQCBzdGF0aWMgaW50IF9f YmxrZGV2X2lzc3VlX2Rpc2NhcmRfYXN5bmMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwg c2VjdG9yX3Qgc2VjdAogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlv LT5iaV9iZGV2ID0gYmRldjsKIAliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3NlY3RzIDw8 IDk7CisJYmlvLT5iaV9ydyB8PSB0eXBlOwogCi0Jc3VibWl0X2Jpbyh0eXBlLCBiaW8pOwor CXN1Ym1pdF9iaW8oYmlvKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9tZC5jIGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IDgwNzA5NWYuLmM5NDAzZDUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTM5 OSw4ICszOTksOSBAQCBzdGF0aWMgdm9pZCBzdWJtaXRfZmx1c2hlcyhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndzKQogCQkJYmktPmJpX2VuZF9pbyA9IG1kX2VuZF9mbHVzaDsKIAkJCWJpLT5i aV9wcml2YXRlID0gcmRldjsKIAkJCWJpLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKKwkJCWJp LT5iaV9ydyB8PSBXUklURV9GTFVTSDsKIAkJCWF0b21pY19pbmMoJm1kZGV2LT5mbHVzaF9w ZW5kaW5nKTsKLQkJCXN1Ym1pdF9iaW8oV1JJVEVfRkxVU0gsIGJpKTsKKwkJCXN1Ym1pdF9i aW8oYmkpOwogCQkJcmN1X3JlYWRfbG9jaygpOwogCQkJcmRldl9kZWNfcGVuZGluZyhyZGV2 LCBtZGRldik7CiAJCX0KQEAgLTc0NSw5ICs3NDYsMTAgQEAgdm9pZCBtZF9zdXBlcl93cml0 ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgbWRfcmRldiAqcmRldiwKIAliaW9fYWRk X3BhZ2UoYmlvLCBwYWdlLCBzaXplLCAwKTsKIAliaW8tPmJpX3ByaXZhdGUgPSByZGV2Owog CWJpby0+YmlfZW5kX2lvID0gc3VwZXJfd3JpdHRlbjsKKwliaW8tPmJpX3J3IHw9IFdSSVRF X0ZMVVNIX0ZVQTsKIAogCWF0b21pY19pbmMoJm1kZGV2LT5wZW5kaW5nX3dyaXRlcyk7Ci0J c3VibWl0X2JpbyhXUklURV9GTFVTSF9GVUEsIGJpbyk7CisJc3VibWl0X2JpbyhiaW8pOwog fQogCiB2b2lkIG1kX3N1cGVyX3dhaXQoc3RydWN0IG1kZGV2ICptZGRldikKQEAgLTc2NCw2 ICs3NjYsNyBAQCBpbnQgc3luY19wYWdlX2lvKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBzZWN0 b3JfdCBzZWN0b3IsIGludCBzaXplLAogCiAJYmlvLT5iaV9iZGV2ID0gKG1ldGFkYXRhX29w ICYmIHJkZXYtPm1ldGFfYmRldikgPwogCQlyZGV2LT5tZXRhX2JkZXYgOiByZGV2LT5iZGV2 OworCWJpby0+YmlfcncgfD0gcnc7CiAJaWYgKG1ldGFkYXRhX29wKQogCQliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+c2Jfc3RhcnQ7CiAJZWxzZSBpZiAocmRl di0+bWRkZXYtPnJlc2hhcGVfcG9zaXRpb24gIT0gTWF4U2VjdG9yICYmCkBAIC03NzMsNyAr Nzc2LDggQEAgaW50IHN5bmNfcGFnZV9pbyhzdHJ1Y3QgbWRfcmRldiAqcmRldiwgc2VjdG9y X3Qgc2VjdG9yLCBpbnQgc2l6ZSwKIAllbHNlCiAJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBzZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldDsKIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdl LCBzaXplLCAwKTsKLQlzdWJtaXRfYmlvX3dhaXQocncsIGJpbyk7CisKKwlzdWJtaXRfYmlv X3dhaXQoYmlvKTsKIAogCXJldCA9ICFiaW8tPmJpX2Vycm9yOwogCWJpb19wdXQoYmlvKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEuYwpp bmRleCBlMjE2OWZmLi4wMWU2ZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMK KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC0yMjA4LDcgKzIyMDgsOCBAQCBzdGF0aWMg aW50IG5hcnJvd193cml0ZV9lcnJvcihzdHJ1Y3QgcjFiaW8gKnIxX2JpbywgaW50IGkpCiAJ CWJpb190cmltKHdiaW8sIHNlY3RvciAtIHIxX2Jpby0+c2VjdG9yLCBzZWN0b3JzKTsKIAkJ d2Jpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CiAJCXdiaW8t PmJpX2JkZXYgPSByZGV2LT5iZGV2OwotCQlpZiAoc3VibWl0X2Jpb193YWl0KFdSSVRFLCB3 YmlvKSA8IDApCisKKwkJaWYgKHN1Ym1pdF9iaW9fd2FpdCh3YmlvKSA8IDApCiAJCQkvKiBm YWlsdXJlISAqLwogCQkJb2sgPSByZGV2X3NldF9iYWRibG9ja3MocmRldiwgc2VjdG9yLAog CQkJCQkJc2VjdG9ycywgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9k cml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IDQxZDcwYmMuLjU1YWU5NDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtMjQ3 Miw3ICsyNDcyLDkgQEAgc3RhdGljIGludCBuYXJyb3dfd3JpdGVfZXJyb3Ioc3RydWN0IHIx MGJpbyAqcjEwX2JpbywgaW50IGkpCiAJCQkJICAgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9i aW8sIHJkZXYpICsKIAkJCQkgICAoc2VjdG9yIC0gcjEwX2Jpby0+c2VjdG9yKSk7CiAJCXdi aW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwotCQlpZiAoc3VibWl0X2Jpb193YWl0KFdSSVRF LCB3YmlvKSA8IDApCisJCXdiaW8tPmJpX3J3IHw9IFdSSVRFOworCisJCWlmIChzdWJtaXRf YmlvX3dhaXQod2JpbykgPCAwKQogCQkJLyogRmFpbHVyZSEgKi8KIAkJCW9rID0gcmRldl9z ZXRfYmFkYmxvY2tzKHJkZXYsIHNlY3RvciwKIAkJCQkJCXNlY3RvcnMsIDApCmRpZmYgLS1n aXQgYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hlLmMgYi9kcml2ZXJzL21kL3JhaWQ1LWNhY2hl LmMKaW5kZXggYjg4N2UwNC4uNjg0YzkxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlk NS1jYWNoZS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwpAQCAtMjUwLDcgKzI1 MCw3IEBAIHN0YXRpYyB2b2lkIHI1bF9zdWJtaXRfY3VycmVudF9pbyhzdHJ1Y3QgcjVsX2xv ZyAqbG9nKQogCV9fcjVsX3NldF9pb191bml0X3N0YXRlKGlvLCBJT19VTklUX0lPX1NUQVJU KTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2ctPmlvX2xpc3RfbG9jaywgZmxhZ3Mp OwogCi0Jc3VibWl0X2JpbyhXUklURSwgaW8tPmN1cnJlbnRfYmlvKTsKKwlzdWJtaXRfYmlv KGlvLT5jdXJyZW50X2Jpbyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgYmlvICpyNWxfYmlvX2Fs bG9jKHN0cnVjdCByNWxfbG9nICpsb2cpCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIHZv aWQgcjVsX2FwcGVuZF9wYXlsb2FkX3BhZ2Uoc3RydWN0IHI1bF9sb2cgKmxvZywgc3RydWN0 IHBhZ2UgKnBhZ2UpCiAJCWlvLT5jdXJyZW50X2JpbyA9IHI1bF9iaW9fYWxsb2MobG9nKTsK IAkJYmlvX2NoYWluKGlvLT5jdXJyZW50X2JpbywgcHJldik7CiAKLQkJc3VibWl0X2JpbyhX UklURSwgcHJldik7CisJCXN1Ym1pdF9iaW8ocHJldik7CiAJfQogCiAJaWYgKCFiaW9fYWRk X3BhZ2UoaW8tPmN1cnJlbnRfYmlvLCBwYWdlLCBQQUdFX1NJWkUsIDApKQpAQCAtNjQ2LDcg KzY0Niw4IEBAIHZvaWQgcjVsX2ZsdXNoX3N0cmlwZV90b19yYWlkKHN0cnVjdCByNWxfbG9n ICpsb2cpCiAJYmlvX3Jlc2V0KCZsb2ctPmZsdXNoX2Jpbyk7CiAJbG9nLT5mbHVzaF9iaW8u YmlfYmRldiA9IGxvZy0+cmRldi0+YmRldjsKIAlsb2ctPmZsdXNoX2Jpby5iaV9lbmRfaW8g PSByNWxfbG9nX2ZsdXNoX2VuZGlvOwotCXN1Ym1pdF9iaW8oV1JJVEVfRkxVU0gsICZsb2ct PmZsdXNoX2Jpbyk7CisJbG9nLT5mbHVzaF9iaW8uYmlfcncgfD0gV1JJVEVfRkxVU0g7CisJ c3VibWl0X2JpbygmbG9nLT5mbHVzaF9iaW8pOwogfQogCiBzdGF0aWMgdm9pZCByNWxfd3Jp dGVfc3VwZXIoc3RydWN0IHI1bF9sb2cgKmxvZywgc2VjdG9yX3QgY3ApOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMgYi9kcml2ZXJzL3Rhcmdl dC90YXJnZXRfY29yZV9pYmxvY2suYwppbmRleCBkNTg5MWI2Li5hM2IxYzI3IDEwMDY0NAot LS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYworKysgYi9kcml2ZXJz L3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYwpAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRp YyB2b2lkIGlibG9ja19iaW9fZG9uZShzdHJ1Y3QgYmlvICpiaW8pCiB9CiAKIHN0YXRpYyBz dHJ1Y3QgYmlvICoKLWlibG9ja19nZXRfYmlvKHN0cnVjdCBzZV9jbWQgKmNtZCwgc2VjdG9y X3QgbGJhLCB1MzIgc2dfbnVtKQoraWJsb2NrX2dldF9iaW8oc3RydWN0IHNlX2NtZCAqY21k LCBzZWN0b3JfdCBsYmEsIHUzMiBzZ19udW0sIGludCBydykKIHsKIAlzdHJ1Y3QgaWJsb2Nr X2RldiAqaWJfZGV2ID0gSUJMT0NLX0RFVihjbWQtPnNlX2Rldik7CiAJc3RydWN0IGJpbyAq YmlvOwpAQCAtMzUwLDE4ICszNTAsMTkgQEAgaWJsb2NrX2dldF9iaW8oc3RydWN0IHNlX2Nt ZCAqY21kLCBzZWN0b3JfdCBsYmEsIHUzMiBzZ19udW0pCiAJYmlvLT5iaV9wcml2YXRlID0g Y21kOwogCWJpby0+YmlfZW5kX2lvID0gJmlibG9ja19iaW9fZG9uZTsKIAliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gbGJhOworCWJpby0+YmlfcncgfD0gcnc7CiAKIAlyZXR1cm4gYmlv OwogfQogCi1zdGF0aWMgdm9pZCBpYmxvY2tfc3VibWl0X2Jpb3Moc3RydWN0IGJpb19saXN0 ICpsaXN0LCBpbnQgcncpCitzdGF0aWMgdm9pZCBpYmxvY2tfc3VibWl0X2Jpb3Moc3RydWN0 IGJpb19saXN0ICpsaXN0KQogewogCXN0cnVjdCBibGtfcGx1ZyBwbHVnOwogCXN0cnVjdCBi aW8gKmJpbzsKIAogCWJsa19zdGFydF9wbHVnKCZwbHVnKTsKIAl3aGlsZSAoKGJpbyA9IGJp b19saXN0X3BvcChsaXN0KSkpCi0JCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJCXN1Ym1pdF9i aW8oYmlvKTsKIAlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwogfQogCkBAIC00MDMsOSArNDA0 LDEwIEBAIGlibG9ja19leGVjdXRlX3N5bmNfY2FjaGUoc3RydWN0IHNlX2NtZCAqY21kKQog CWJpbyA9IGJpb19hbGxvYyhHRlBfS0VSTkVMLCAwKTsKIAliaW8tPmJpX2VuZF9pbyA9IGli bG9ja19lbmRfaW9fZmx1c2g7CiAJYmlvLT5iaV9iZGV2ID0gaWJfZGV2LT5pYmRfYmQ7CisJ YmlvLT5iaV9ydyB8PSBXUklURV9GTFVTSDsKIAlpZiAoIWltbWVkKQogCQliaW8tPmJpX3By aXZhdGUgPSBjbWQ7Ci0Jc3VibWl0X2JpbyhXUklURV9GTFVTSCwgYmlvKTsKKwlzdWJtaXRf YmlvKGJpbyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ1NCw3ICs0NTYsNyBAQCBpYmxvY2tf ZXhlY3V0ZV93cml0ZV9zYW1lKHN0cnVjdCBzZV9jbWQgKmNtZCkKIAkJZ290byBmYWlsOwog CWNtZC0+cHJpdiA9IGlicjsKIAotCWJpbyA9IGlibG9ja19nZXRfYmlvKGNtZCwgYmxvY2tf bGJhLCAxKTsKKwliaW8gPSBpYmxvY2tfZ2V0X2JpbyhjbWQsIGJsb2NrX2xiYSwgMSwgV1JJ VEUpOwogCWlmICghYmlvKQogCQlnb3RvIGZhaWxfZnJlZV9pYnI7CiAKQEAgLTQ2Nyw3ICs0 NjksNyBAQCBpYmxvY2tfZXhlY3V0ZV93cml0ZV9zYW1lKHN0cnVjdCBzZV9jbWQgKmNtZCkK IAkJd2hpbGUgKGJpb19hZGRfcGFnZShiaW8sIHNnX3BhZ2Uoc2cpLCBzZy0+bGVuZ3RoLCBz Zy0+b2Zmc2V0KQogCQkJCSE9IHNnLT5sZW5ndGgpIHsKIAotCQkJYmlvID0gaWJsb2NrX2dl dF9iaW8oY21kLCBibG9ja19sYmEsIDEpOworCQkJYmlvID0gaWJsb2NrX2dldF9iaW8oY21k LCBibG9ja19sYmEsIDEsIFdSSVRFKTsKIAkJCWlmICghYmlvKQogCQkJCWdvdG8gZmFpbF9w dXRfYmlvczsKIApAQCAtNDgwLDcgKzQ4Miw3IEBAIGlibG9ja19leGVjdXRlX3dyaXRlX3Nh bWUoc3RydWN0IHNlX2NtZCAqY21kKQogCQlzZWN0b3JzIC09IDE7CiAJfQogCi0JaWJsb2Nr X3N1Ym1pdF9iaW9zKCZsaXN0LCBXUklURSk7CisJaWJsb2NrX3N1Ym1pdF9iaW9zKCZsaXN0 KTsKIAlyZXR1cm4gMDsKIAogZmFpbF9wdXRfYmlvczoKQEAgLTcwNiw3ICs3MDgsNyBAQCBp YmxvY2tfZXhlY3V0ZV9ydyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHN0cnVjdCBzY2F0dGVybGlz dCAqc2dsLCB1MzIgc2dsX25lbnRzLAogCQlyZXR1cm4gMDsKIAl9CiAKLQliaW8gPSBpYmxv Y2tfZ2V0X2JpbyhjbWQsIGJsb2NrX2xiYSwgc2dsX25lbnRzKTsKKwliaW8gPSBpYmxvY2tf Z2V0X2JpbyhjbWQsIGJsb2NrX2xiYSwgc2dsX25lbnRzLCBydyk7CiAJaWYgKCFiaW8pCiAJ CWdvdG8gZmFpbF9mcmVlX2licjsKIApAQCAtNzI2LDExICs3MjgsMTEgQEAgaWJsb2NrX2V4 ZWN1dGVfcncoc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwg dTMyIHNnbF9uZW50cywKIAkJd2hpbGUgKGJpb19hZGRfcGFnZShiaW8sIHNnX3BhZ2Uoc2cp LCBzZy0+bGVuZ3RoLCBzZy0+b2Zmc2V0KQogCQkJCSE9IHNnLT5sZW5ndGgpIHsKIAkJCWlm IChiaW9fY250ID49IElCTE9DS19NQVhfQklPX1BFUl9UQVNLKSB7Ci0JCQkJaWJsb2NrX3N1 Ym1pdF9iaW9zKCZsaXN0LCBydyk7CisJCQkJaWJsb2NrX3N1Ym1pdF9iaW9zKCZsaXN0KTsK IAkJCQliaW9fY250ID0gMDsKIAkJCX0KIAotCQkJYmlvID0gaWJsb2NrX2dldF9iaW8oY21k LCBibG9ja19sYmEsIHNnX251bSk7CisJCQliaW8gPSBpYmxvY2tfZ2V0X2JpbyhjbWQsIGJs b2NrX2xiYSwgc2dfbnVtLCBydyk7CiAJCQlpZiAoIWJpbykKIAkJCQlnb3RvIGZhaWxfcHV0 X2Jpb3M7CiAKQEAgLTc1MCw3ICs3NTIsNyBAQCBpYmxvY2tfZXhlY3V0ZV9ydyhzdHJ1Y3Qg c2VfY21kICpjbWQsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCB1MzIgc2dsX25lbnRzLAog CQkJZ290byBmYWlsX3B1dF9iaW9zOwogCX0KIAotCWlibG9ja19zdWJtaXRfYmlvcygmbGlz dCwgcncpOworCWlibG9ja19zdWJtaXRfYmlvcygmbGlzdCk7CiAJaWJsb2NrX2NvbXBsZXRl X2NtZChjbWQpOwogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9jaGVjay1p bnRlZ3JpdHkuYyBiL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jCmluZGV4IDAzNDBjNTcu Ljc3MTcwNDMgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jCisrKyBi L2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jCkBAIC0xNjgzLDYgKzE2ODMsNyBAQCBzdGF0 aWMgaW50IGJ0cmZzaWNfcmVhZF9ibG9jayhzdHJ1Y3QgYnRyZnNpY19zdGF0ZSAqc3RhdGUs CiAJCX0KIAkJYmlvLT5iaV9iZGV2ID0gYmxvY2tfY3R4LT5kZXYtPmJkZXY7CiAJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBkZXZfYnl0ZW5yID4+IDk7CisJCWJpby0+YmlfcncgfD0g UkVBRDsKIAogCQlmb3IgKGogPSBpOyBqIDwgbnVtX3BhZ2VzOyBqKyspIHsKIAkJCXJldCA9 IGJpb19hZGRfcGFnZShiaW8sIGJsb2NrX2N0eC0+cGFnZXZbal0sCkBAIC0xNjk1LDcgKzE2 OTYsNyBAQCBzdGF0aWMgaW50IGJ0cmZzaWNfcmVhZF9ibG9jayhzdHJ1Y3QgYnRyZnNpY19z dGF0ZSAqc3RhdGUsCiAJCQkgICAgICAgImJ0cmZzaWM6IGVycm9yLCBmYWlsZWQgdG8gYWRk IGEgc2luZ2xlIHBhZ2UhXG4iKTsKIAkJCXJldHVybiAtMTsKIAkJfQotCQlpZiAoc3VibWl0 X2Jpb193YWl0KFJFQUQsIGJpbykpIHsKKwkJaWYgKHN1Ym1pdF9iaW9fd2FpdChiaW8pKSB7 CiAJCQlwcmludGsoS0VSTl9JTkZPCiAJCQkgICAgICAgImJ0cmZzaWM6IHJlYWQgZXJyb3Ig YXQgbG9naWNhbCAlbGx1IGRldiAlcyFcbiIsCiAJCQkgICAgICAgYmxvY2tfY3R4LT5zdGFy dCwgYmxvY2tfY3R4LT5kZXYtPm5hbWUpOwpAQCAtMjk2MCw5ICsyOTYxLDEwIEBAIGludCBi dHJmc2ljX3N1Ym1pdF9iaChpbnQgcncsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCiAJcmV0 dXJuIHN1Ym1pdF9iaChydywgYmgpOwogfQogCi1zdGF0aWMgdm9pZCBfX2J0cmZzaWNfc3Vi bWl0X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKK3N0YXRpYyB2b2lkIF9fYnRyZnNp Y19zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbykKIHsKIAlzdHJ1Y3QgYnRyZnNpY19kZXZf c3RhdGUgKmRldl9zdGF0ZTsKKwlpbnQgcncgPSBiaW8tPmJpX3J3OwogCiAJaWYgKCFidHJm c2ljX2lzX2luaXRpYWxpemVkKQogCQlyZXR1cm47CkBAIC0zMDU4LDE2ICszMDYwLDE2IEBA IGxlYXZlOgogCW11dGV4X3VubG9jaygmYnRyZnNpY19tdXRleCk7CiB9CiAKLXZvaWQgYnRy ZnNpY19zdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQordm9pZCBidHJmc2lj X3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKQogewotCV9fYnRyZnNpY19zdWJtaXRfYmlv KHJ3LCBiaW8pOwotCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJX19idHJmc2ljX3N1Ym1pdF9i aW8oYmlvKTsKKwlzdWJtaXRfYmlvKGJpbyk7CiB9CiAKLWludCBidHJmc2ljX3N1Ym1pdF9i aW9fd2FpdChpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKK2ludCBidHJmc2ljX3N1Ym1pdF9i aW9fd2FpdChzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JX19idHJmc2ljX3N1Ym1pdF9iaW8ocncs IGJpbyk7Ci0JcmV0dXJuIHN1Ym1pdF9iaW9fd2FpdChydywgYmlvKTsKKwlfX2J0cmZzaWNf c3VibWl0X2JpbyhiaW8pOworCXJldHVybiBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIH0KIAog aW50IGJ0cmZzaWNfbW91bnQoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCmRpZmYgLS1naXQg YS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuaCBiL2ZzL2J0cmZzL2NoZWNrLWludGVncml0 eS5oCmluZGV4IDEzYjg1NjYuLmMwNGUyNDkgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2NoZWNr LWludGVncml0eS5oCisrKyBiL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5oCkBAIC0yMSw4 ICsyMSw4IEBACiAKICNpZmRlZiBDT05GSUdfQlRSRlNfRlNfQ0hFQ0tfSU5URUdSSVRZCiBp bnQgYnRyZnNpY19zdWJtaXRfYmgoaW50IHJ3LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsK LXZvaWQgYnRyZnNpY19zdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKTsKLWlu dCBidHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChpbnQgcncsIHN0cnVjdCBiaW8gKmJpbyk7Cit2 b2lkIGJ0cmZzaWNfc3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pOworaW50IGJ0cmZzaWNf c3VibWl0X2Jpb193YWl0KHN0cnVjdCBiaW8gKmJpbyk7CiAjZWxzZQogI2RlZmluZSBidHJm c2ljX3N1Ym1pdF9iaCBzdWJtaXRfYmgKICNkZWZpbmUgYnRyZnNpY19zdWJtaXRfYmlvIHN1 Ym1pdF9iaW8KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2Rpc2staW8uYyBiL2ZzL2J0cmZzL2Rp c2staW8uYwppbmRleCA5NzRiZTA5Li41M2NhNzE1IDEwMDY0NAotLS0gYS9mcy9idHJmcy9k aXNrLWlvLmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC0zNDE2LDEyICszNDE2LDEz IEBAIHN0YXRpYyBpbnQgd3JpdGVfZGV2X2ZsdXNoKHN0cnVjdCBidHJmc19kZXZpY2UgKmRl dmljZSwgaW50IHdhaXQpCiAKIAliaW8tPmJpX2VuZF9pbyA9IGJ0cmZzX2VuZF9lbXB0eV9i YXJyaWVyOwogCWJpby0+YmlfYmRldiA9IGRldmljZS0+YmRldjsKKwliaW8tPmJpX3J3IHw9 IFdSSVRFX0ZMVVNIOwogCWluaXRfY29tcGxldGlvbigmZGV2aWNlLT5mbHVzaF93YWl0KTsK IAliaW8tPmJpX3ByaXZhdGUgPSAmZGV2aWNlLT5mbHVzaF93YWl0OwogCWRldmljZS0+Zmx1 c2hfYmlvID0gYmlvOwogCiAJYmlvX2dldChiaW8pOwotCWJ0cmZzaWNfc3VibWl0X2JpbyhX UklURV9GTFVTSCwgYmlvKTsKKwlidHJmc2ljX3N1Ym1pdF9iaW8oYmlvKTsKIAogCXJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9l eHRlbnRfaW8uYwppbmRleCA5YWJlMTg3Li40NGQ4NzYyIDEwMDY0NAotLS0gYS9mcy9idHJm cy9leHRlbnRfaW8uYworKysgYi9mcy9idHJmcy9leHRlbnRfaW8uYwpAQCAtMjEzMiw5ICsy MTMyLDEwIEBAIGludCByZXBhaXJfaW9fZmFpbHVyZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1 NjQgc3RhcnQsIHU2NCBsZW5ndGgsIHU2NCBsb2dpY2FsLAogCQlyZXR1cm4gLUVJTzsKIAl9 CiAJYmlvLT5iaV9iZGV2ID0gZGV2LT5iZGV2OworCWJpby0+YmlfcncgfD0gV1JJVEVfU1lO QzsKIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsZW5ndGgsIHBnX29mZnNldCk7CiAKLQlp ZiAoYnRyZnNpY19zdWJtaXRfYmlvX3dhaXQoV1JJVEVfU1lOQywgYmlvKSkgeworCWlmIChi dHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChiaW8pKSB7CiAJCS8qIHRyeSB0byByZW1hcCB0aGF0 IGV4dGVudCBlbHNld2hlcmU/ICovCiAJCWJpb19wdXQoYmlvKTsKIAkJYnRyZnNfZGV2X3N0 YXRfaW5jX2FuZF9wcmludChkZXYsIEJUUkZTX0RFVl9TVEFUX1dSSVRFX0VSUlMpOwpAQCAt MjgyNSwxNCArMjgyNiwxNCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBzdWJtaXRfb25l X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywKIAlzdGFydCA9IHBhZ2Vfb2Zmc2V0KHBh Z2UpICsgYnZlYy0+YnZfb2Zmc2V0OwogCiAJYmlvLT5iaV9wcml2YXRlID0gTlVMTDsKLQor CWJpby0+YmlfcncgfD0gcnc7CiAJYmlvX2dldChiaW8pOwogCiAJaWYgKHRyZWUtPm9wcyAm JiB0cmVlLT5vcHMtPnN1Ym1pdF9iaW9faG9vaykKIAkJcmV0ID0gdHJlZS0+b3BzLT5zdWJt aXRfYmlvX2hvb2socGFnZS0+bWFwcGluZy0+aG9zdCwgcncsIGJpbywKIAkJCQkJICAgbWly cm9yX251bSwgYmlvX2ZsYWdzLCBzdGFydCk7CiAJZWxzZQotCQlidHJmc2ljX3N1Ym1pdF9i aW8ocncsIGJpbyk7CisJCWJ0cmZzaWNfc3VibWl0X2JpbyhiaW8pOwogCiAJYmlvX3B1dChi aW8pOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9yYWlkNTYuYyBiL2Zz L2J0cmZzL3JhaWQ1Ni5jCmluZGV4IDFhMzNkM2UuLjUzMmNlYjAgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL3JhaWQ1Ni5jCisrKyBiL2ZzL2J0cmZzL3JhaWQ1Ni5jCkBAIC0xMzIzLDcgKzEz MjMsOSBAQCB3cml0ZV9kYXRhOgogCiAJCWJpby0+YmlfcHJpdmF0ZSA9IHJiaW87CiAJCWJp by0+YmlfZW5kX2lvID0gcmFpZF93cml0ZV9lbmRfaW87Ci0JCXN1Ym1pdF9iaW8oV1JJVEUs IGJpbyk7CisJCWJpby0+YmlfcncgfD0gV1JJVEU7CisKKwkJc3VibWl0X2JpbyhiaW8pOwog CX0KIAlyZXR1cm47CiAKQEAgLTE1NzcsMTEgKzE1NzksMTIgQEAgc3RhdGljIGludCByYWlk NTZfcm13X3N0cmlwZShzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8pCiAKIAkJYmlvLT5i aV9wcml2YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRfaW8gPSByYWlkX3Jtd19lbmRfaW87 CisJCWJpby0+YmlfcncgfD0gUkVBRDsKIAogCQlidHJmc19iaW9fd3FfZW5kX2lvKHJiaW8t PmZzX2luZm8sIGJpbywKIAkJCQkgICAgQlRSRlNfV1FfRU5ESU9fUkFJRDU2KTsKIAotCQlz dWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJCXN1Ym1pdF9iaW8oYmlvKTsKIAl9CiAJLyogdGhl IGFjdHVhbCB3cml0ZSB3aWxsIGhhcHBlbiBvbmNlIHRoZSByZWFkcyBhcmUgZG9uZSAqLwog CXJldHVybiAwOwpAQCAtMjEwMywxMSArMjEwNiwxMiBAQCBzdGF0aWMgaW50IF9fcmFpZDU2 X3Bhcml0eV9yZWNvdmVyKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbykKIAogCQliaW8t PmJpX3ByaXZhdGUgPSByYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHJhaWRfcmVjb3Zlcl9l bmRfaW87CisJCWJpby0+YmlfcncgfD0gUkVBRDsKIAogCQlidHJmc19iaW9fd3FfZW5kX2lv KHJiaW8tPmZzX2luZm8sIGJpbywKIAkJCQkgICAgQlRSRlNfV1FfRU5ESU9fUkFJRDU2KTsK IAotCQlzdWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJCXN1Ym1pdF9iaW8oYmlvKTsKIAl9CiBv dXQ6CiAJcmV0dXJuIDA7CkBAIC0yNDY1LDcgKzI0NjksOCBAQCBzdWJtaXRfd3JpdGU6CiAK IAkJYmlvLT5iaV9wcml2YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRfaW8gPSByYWlkX3dy aXRlX3Bhcml0eV9lbmRfaW87Ci0JCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CisJCWJpby0+ YmlfcncgfD0gV1JJVEU7CisJCXN1Ym1pdF9iaW8oYmlvKTsKIAl9CiAJcmV0dXJuOwogCkBA IC0yNjQyLDExICsyNjQ3LDEyIEBAIHN0YXRpYyB2b2lkIHJhaWQ1Nl9wYXJpdHlfc2NydWJf c3RyaXBlKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbykKIAogCQliaW8tPmJpX3ByaXZh dGUgPSByYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHJhaWQ1Nl9wYXJpdHlfc2NydWJfZW5k X2lvOworCQliaW8tPmJpX3J3IHw9IFJFQUQ7CiAKIAkJYnRyZnNfYmlvX3dxX2VuZF9pbyhy YmlvLT5mc19pbmZvLCBiaW8sCiAJCQkJICAgIEJUUkZTX1dRX0VORElPX1JBSUQ1Nik7CiAK LQkJc3VibWl0X2JpbyhSRUFELCBiaW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJfQogCS8q IHRoZSBhY3R1YWwgd3JpdGUgd2lsbCBoYXBwZW4gb25jZSB0aGUgcmVhZHMgYXJlIGRvbmUg Ki8KIAlyZXR1cm47CmRpZmYgLS1naXQgYS9mcy9idHJmcy9zY3J1Yi5jIGIvZnMvYnRyZnMv c2NydWIuYwppbmRleCAyOTA3YTc3Li44ODY3NWRiIDEwMDY0NAotLS0gYS9mcy9idHJmcy9z Y3J1Yi5jCisrKyBiL2ZzL2J0cmZzL3NjcnViLmMKQEAgLTE1MDQsOCArMTUwNCw5IEBAIHN0 YXRpYyB2b2lkIHNjcnViX3JlY2hlY2tfYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sCiAJCQkJc2Jsb2NrLT5ub19pb19lcnJvcl9zZWVuID0gMDsKIAkJfSBlbHNlIHsK IAkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBwYWdlLT5waHlzaWNhbCA+PiA5OworCQkJ YmlvLT5iaV9ydyB8PSBSRUFEOwogCi0JCQlpZiAoYnRyZnNpY19zdWJtaXRfYmlvX3dhaXQo UkVBRCwgYmlvKSkKKwkJCWlmIChidHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChiaW8pKQogCQkJ CXNibG9jay0+bm9faW9fZXJyb3Jfc2VlbiA9IDA7CiAJCX0KIApAQCAtMTU4NSw2ICsxNTg2 LDcgQEAgc3RhdGljIGludCBzY3J1Yl9yZXBhaXJfcGFnZV9mcm9tX2dvb2RfY29weShzdHJ1 Y3Qgc2NydWJfYmxvY2sgKnNibG9ja19iYWQsCiAJCQlyZXR1cm4gLUVJTzsKIAkJYmlvLT5i aV9iZGV2ID0gcGFnZV9iYWQtPmRldi0+YmRldjsKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX3J3IHw9IFdSSVRFOwog CiAJCXJldCA9IGJpb19hZGRfcGFnZShiaW8sIHBhZ2VfZ29vZC0+cGFnZSwgUEFHRV9TSVpF LCAwKTsKIAkJaWYgKFBBR0VfU0laRSAhPSByZXQpIHsKQEAgLTE1OTIsNyArMTU5NCw3IEBA IHN0YXRpYyBpbnQgc2NydWJfcmVwYWlyX3BhZ2VfZnJvbV9nb29kX2NvcHkoc3RydWN0IHNj cnViX2Jsb2NrICpzYmxvY2tfYmFkLAogCQkJcmV0dXJuIC1FSU87CiAJCX0KIAotCQlpZiAo YnRyZnNpY19zdWJtaXRfYmlvX3dhaXQoV1JJVEUsIGJpbykpIHsKKwkJaWYgKGJ0cmZzaWNf c3VibWl0X2Jpb193YWl0KGJpbykpIHsKIAkJCWJ0cmZzX2Rldl9zdGF0X2luY19hbmRfcHJp bnQocGFnZV9iYWQtPmRldiwKIAkJCQlCVFJGU19ERVZfU1RBVF9XUklURV9FUlJTKTsKIAkJ CWJ0cmZzX2Rldl9yZXBsYWNlX3N0YXRzX2luYygKQEAgLTE2ODUsNiArMTY4Nyw3IEBAIGFn YWluOgogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX3dyX2Jpb19lbmRfaW87CiAJCWJpby0+ YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9 IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJpby0+YmlfcncgfD0gV1JJVEU7CiAJCXNiaW8t PmVyciA9IDA7CiAJfSBlbHNlIGlmIChzYmlvLT5waHlzaWNhbCArIHNiaW8tPnBhZ2VfY291 bnQgKiBQQUdFX1NJWkUgIT0KIAkJICAgc3BhZ2UtPnBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFj ZSB8fApAQCAtMTczMiw3ICsxNzM1LDcgQEAgc3RhdGljIHZvaWQgc2NydWJfd3Jfc3VibWl0 KHN0cnVjdCBzY3J1Yl9jdHggKnNjdHgpCiAJICogb3JkZXJzIHRoZSByZXF1ZXN0cyBiZWZv cmUgc2VuZGluZyB0aGVtIHRvIHRoZSBkcml2ZXIgd2hpY2gKIAkgKiBkb3VibGVkIHRoZSB3 cml0ZSBwZXJmb3JtYW5jZSBvbiBzcGlubmluZyBkaXNrcyB3aGVuIG1lYXN1cmVkCiAJICog d2l0aCBMaW51eCAzLjUgKi8KLQlidHJmc2ljX3N1Ym1pdF9iaW8oV1JJVEUsIHNiaW8tPmJp byk7CisJYnRyZnNpY19zdWJtaXRfYmlvKHNiaW8tPmJpbyk7CiB9CiAKIHN0YXRpYyB2b2lk IHNjcnViX3dyX2Jpb19lbmRfaW8oc3RydWN0IGJpbyAqYmlvKQpAQCAtMjA0Miw3ICsyMDQ1 LDcgQEAgc3RhdGljIHZvaWQgc2NydWJfc3VibWl0KHN0cnVjdCBzY3J1Yl9jdHggKnNjdHgp CiAJc2JpbyA9IHNjdHgtPmJpb3Nbc2N0eC0+Y3Vycl07CiAJc2N0eC0+Y3VyciA9IC0xOwog CXNjcnViX3BlbmRpbmdfYmlvX2luYyhzY3R4KTsKLQlidHJmc2ljX3N1Ym1pdF9iaW8oUkVB RCwgc2Jpby0+YmlvKTsKKwlidHJmc2ljX3N1Ym1pdF9iaW8oc2Jpby0+YmlvKTsKIH0KIAog c3RhdGljIGludCBzY3J1Yl9hZGRfcGFnZV90b19yZF9iaW8oc3RydWN0IHNjcnViX2N0eCAq c2N0eCwKQEAgLTIwODgsNiArMjA5MSw3IEBAIGFnYWluOgogCQliaW8tPmJpX2VuZF9pbyA9 IHNjcnViX2Jpb19lbmRfaW87CiAJCWJpby0+YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsK IAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJp by0+YmlfcncgfD0gUkVBRDsKIAkJc2Jpby0+ZXJyID0gMDsKIAl9IGVsc2UgaWYgKHNiaW8t PnBoeXNpY2FsICsgc2Jpby0+cGFnZV9jb3VudCAqIFBBR0VfU0laRSAhPQogCQkgICBzcGFn ZS0+cGh5c2ljYWwgfHwKQEAgLTQzNDAsNiArNDM0NCw4IEBAIHN0YXRpYyBpbnQgd3JpdGVf cGFnZV9ub2NvdyhzdHJ1Y3Qgc2NydWJfY3R4ICpzY3R4LAogCWJpby0+YmlfaXRlci5iaV9z aXplID0gMDsKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGh5c2ljYWxfZm9yX2Rldl9y ZXBsYWNlID4+IDk7CiAJYmlvLT5iaV9iZGV2ID0gZGV2LT5iZGV2OworCWJpby0+Ymlfcncg fD0gV1JJVEVfU1lOQzsKKwogCXJldCA9IGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0Vf Q0FDSEVfU0laRSwgMCk7CiAJaWYgKHJldCAhPSBQQUdFX0NBQ0hFX1NJWkUpIHsKIGxlYXZl X3dpdGhfZWlvOgpAQCAtNDM0OCw3ICs0MzU0LDcgQEAgbGVhdmVfd2l0aF9laW86CiAJCXJl dHVybiAtRUlPOwogCX0KIAotCWlmIChidHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChXUklURV9T WU5DLCBiaW8pKQorCWlmIChidHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChiaW8pKQogCQlnb3Rv IGxlYXZlX3dpdGhfZWlvOwogCiAJYmlvX3B1dChiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvYnRy ZnMvdm9sdW1lcy5jIGIvZnMvYnRyZnMvdm9sdW1lcy5jCmluZGV4IGE2ZGY4ZmQuLmQxOWVi ODEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3ZvbHVtZXMuYworKysgYi9mcy9idHJmcy92b2x1 bWVzLmMKQEAgLTQ0NSw3ICs0NDUsNyBAQCBsb29wX2xvY2s6CiAJCQlzeW5jX3BlbmRpbmcg PSAwOwogCQl9CiAKLQkJYnRyZnNpY19zdWJtaXRfYmlvKGN1ci0+YmlfcncsIGN1cik7CisJ CWJ0cmZzaWNfc3VibWl0X2JpbyhjdXIpOwogCQludW1fcnVuKys7CiAJCWJhdGNoX3J1bisr OwogCkBAIC01OTMwLDcgKzU5MzAsNyBAQCBzdGF0aWMgdm9pZCBidHJmc19lbmRfYmlvKHN0 cnVjdCBiaW8gKmJpbykKICAqLwogc3RhdGljIG5vaW5saW5lIHZvaWQgYnRyZnNfc2NoZWR1 bGVfYmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCQkJCQlzdHJ1Y3QgYnRyZnNfZGV2 aWNlICpkZXZpY2UsCi0JCQkJCWludCBydywgc3RydWN0IGJpbyAqYmlvKQorCQkJCQlzdHJ1 Y3QgYmlvICpiaW8pCiB7CiAJaW50IHNob3VsZF9xdWV1ZSA9IDE7CiAJc3RydWN0IGJ0cmZz X3BlbmRpbmdfYmlvcyAqcGVuZGluZ19iaW9zOwpAQCAtNTk0MSw5ICs1OTQxLDkgQEAgc3Rh dGljIG5vaW5saW5lIHZvaWQgYnRyZnNfc2NoZWR1bGVfYmlvKHN0cnVjdCBidHJmc19yb290 ICpyb290LAogCX0KIAogCS8qIGRvbid0IGJvdGhlciB3aXRoIGFkZGl0aW9uYWwgYXN5bmMg c3RlcHMgZm9yIHJlYWRzLCByaWdodCBub3cgKi8KLQlpZiAoIShydyAmIFJFUV9XUklURSkp IHsKKwlpZiAoIShiaW8tPmJpX3J3ICYgUkVRX1dSSVRFKSkgewogCQliaW9fZ2V0KGJpbyk7 Ci0JCWJ0cmZzaWNfc3VibWl0X2JpbyhydywgYmlvKTsKKwkJYnRyZnNpY19zdWJtaXRfYmlv KGJpbyk7CiAJCWJpb19wdXQoYmlvKTsKIAkJcmV0dXJuOwogCX0KQEAgLTU5NTcsNyArNTk1 Nyw2IEBAIHN0YXRpYyBub2lubGluZSB2b2lkIGJ0cmZzX3NjaGVkdWxlX2JpbyhzdHJ1Y3Qg YnRyZnNfcm9vdCAqcm9vdCwKIAlhdG9taWNfaW5jKCZyb290LT5mc19pbmZvLT5ucl9hc3lu Y19iaW9zKTsKIAlXQVJOX09OKGJpby0+YmlfbmV4dCk7CiAJYmlvLT5iaV9uZXh0ID0gTlVM TDsKLQliaW8tPmJpX3J3IHw9IHJ3OwogCiAJc3Bpbl9sb2NrKCZkZXZpY2UtPmlvX2xvY2sp OwogCWlmIChiaW8tPmJpX3J3ICYgUkVRX1NZTkMpCkBAIC01OTkxLDYgKzU5OTAsNyBAQCBz dGF0aWMgdm9pZCBzdWJtaXRfc3RyaXBlX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwg c3RydWN0IGJ0cmZzX2JpbyAqYmJpbywKIAlidHJmc19pb19iaW8oYmlvKS0+c3RyaXBlX2lu ZGV4ID0gZGV2X25yOwogCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5kX2JpbzsKIAliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gcGh5c2ljYWwgPj4gOTsKKwliaW8tPmJpX3J3IHw9IHJ3 OwogI2lmZGVmIERFQlVHCiAJewogCQlzdHJ1Y3QgcmN1X3N0cmluZyAqbmFtZTsKQEAgLTYw MDksOSArNjAwOSw5IEBAIHN0YXRpYyB2b2lkIHN1Ym1pdF9zdHJpcGVfYmlvKHN0cnVjdCBi dHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvLAogCWJ0cmZzX2Jpb19j b3VudGVyX2luY19ub2Jsb2NrZWQocm9vdC0+ZnNfaW5mbyk7CiAKIAlpZiAoYXN5bmMpCi0J CWJ0cmZzX3NjaGVkdWxlX2Jpbyhyb290LCBkZXYsIHJ3LCBiaW8pOworCQlidHJmc19zY2hl ZHVsZV9iaW8ocm9vdCwgZGV2LCBiaW8pOwogCWVsc2UKLQkJYnRyZnNpY19zdWJtaXRfYmlv KHJ3LCBiaW8pOworCQlidHJmc2ljX3N1Ym1pdF9iaW8oYmlvKTsKIH0KIAogc3RhdGljIHZv aWQgYmJpb19lcnJvcihzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvLCBzdHJ1Y3QgYmlvICpiaW8s IHU2NCBsb2dpY2FsKQpkaWZmIC0tZ2l0IGEvZnMvYnVmZmVyLmMgYi9mcy9idWZmZXIuYwpp bmRleCA0ZjRjZDk1Li42M2QwYWVkIDEwMDY0NAotLS0gYS9mcy9idWZmZXIuYworKysgYi9m cy9idWZmZXIuYwpAQCAtMzA0MSw4ICszMDQxLDkgQEAgc3RhdGljIGludCBzdWJtaXRfYmhf d2JjKGludCBydywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwKIAkJcncgfD0gUkVRX01FVEE7 CiAJaWYgKGJ1ZmZlcl9wcmlvKGJoKSkKIAkJcncgfD0gUkVRX1BSSU87CisJYmlvLT5iaV9y dyB8PSBydzsKIAotCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJc3VibWl0X2JpbyhiaW8pOwog CXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9mcy9kaXJlY3QtaW8uYyBiL2ZzL2RpcmVj dC1pby5jCmluZGV4IGNiNTMzN2QuLmU1ZWUwM2IgMTAwNjQ0Ci0tLSBhL2ZzL2RpcmVjdC1p by5jCisrKyBiL2ZzL2RpcmVjdC1pby5jCkBAIC0zNjksNiArMzY5LDcgQEAgZGlvX2Jpb19h bGxvYyhzdHJ1Y3QgZGlvICpkaW8sIHN0cnVjdCBkaW9fc3VibWl0ICpzZGlvLAogCiAJYmlv LT5iaV9iZGV2ID0gYmRldjsKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gZmlyc3Rfc2Vj dG9yOworCWJpby0+YmlfcncgfD0gZGlvLT5ydzsKIAlpZiAoZGlvLT5pc19hc3luYykKIAkJ YmlvLT5iaV9lbmRfaW8gPSBkaW9fYmlvX2VuZF9haW87CiAJZWxzZQpAQCAtNDA2LDcgKzQw Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaW9fYmlvX3N1Ym1pdChzdHJ1Y3QgZGlvICpk aW8sIHN0cnVjdCBkaW9fc3VibWl0ICpzZGlvKQogCQkJICAgICAgIHNkaW8tPmxvZ2ljYWxf b2Zmc2V0X2luX2Jpbyk7CiAJCWRpby0+YmlvX2Nvb2tpZSA9IEJMS19RQ19UX05PTkU7CiAJ fSBlbHNlCi0JCWRpby0+YmlvX2Nvb2tpZSA9IHN1Ym1pdF9iaW8oZGlvLT5ydywgYmlvKTsK KwkJZGlvLT5iaW9fY29va2llID0gc3VibWl0X2JpbyhiaW8pOwogCiAJc2Rpby0+YmlvID0g TlVMTDsKIAlzZGlvLT5ib3VuZGFyeSA9IDA7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2NyeXB0 by5jIGIvZnMvZXh0NC9jcnlwdG8uYwppbmRleCBhZjA2ODMwLi4zMmRmYjNkIDEwMDY0NAot LS0gYS9mcy9leHQ0L2NyeXB0by5jCisrKyBiL2ZzL2V4dDQvY3J5cHRvLmMKQEAgLTQyNiw2 ICs0MjYsNyBAQCBpbnQgZXh0NF9lbmNyeXB0ZWRfemVyb291dChzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZXh0NF9leHRlbnQgKmV4KQogCQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+ aV9zYi0+c19iZGV2OwogCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0KIAkJCXBibGsgPDwg KGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZV9iaXRzIC0gOSk7CisJCWJpby0+YmlfcncgfD0g V1JJVEU7CiAJCXJldCA9IGJpb19hZGRfcGFnZShiaW8sIGNpcGhlcnRleHRfcGFnZSwKIAkJ CQkgICBpbm9kZS0+aV9zYi0+c19ibG9ja3NpemUsIDApOwogCQlpZiAocmV0ICE9IGlub2Rl LT5pX3NiLT5zX2Jsb2Nrc2l6ZSkgewpAQCAtNDM3LDcgKzQzOCw3IEBAIGludCBleHQ0X2Vu Y3J5cHRlZF96ZXJvb3V0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2V4dGVu dCAqZXgpCiAJCQllcnIgPSAtRUlPOwogCQkJZ290byBlcnJvdXQ7CiAJCX0KLQkJZXJyID0g c3VibWl0X2Jpb193YWl0KFdSSVRFLCBiaW8pOworCQllcnIgPSBzdWJtaXRfYmlvX3dhaXQo YmlvKTsKIAkJaWYgKChlcnIgPT0gMCkgJiYgYmlvLT5iaV9lcnJvcikKIAkJCWVyciA9IC1F SU87CiAJCWJpb19wdXQoYmlvKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIv ZnMvZXh0NC9wYWdlLWlvLmMKaW5kZXggMTdmYmUzOC4uODZiYjYwYmEgMTAwNjQ0Ci0tLSBh L2ZzL2V4dDQvcGFnZS1pby5jCisrKyBiL2ZzL2V4dDQvcGFnZS1pby5jCkBAIC0zNTcsNyAr MzU3LDggQEAgdm9pZCBleHQ0X2lvX3N1Ym1pdChzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlv KQogCQlpbnQgaW9fb3AgPSBpby0+aW9fd2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwg PwogCQkJICAgIFdSSVRFX1NZTkMgOiBXUklURTsKIAkJYmlvX2dldChpby0+aW9fYmlvKTsK LQkJc3VibWl0X2Jpbyhpb19vcCwgaW8tPmlvX2Jpbyk7CisJCWlvLT5pb19iaW8tPmJpX3J3 IHw9IGlvX29wOworCQlzdWJtaXRfYmlvKGlvLT5pb19iaW8pOwogCQliaW9fcHV0KGlvLT5p b19iaW8pOwogCX0KIAlpby0+aW9fYmlvID0gTlVMTDsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQv cmVhZHBhZ2UuYyBiL2ZzL2V4dDQvcmVhZHBhZ2UuYwppbmRleCA1ZGM1ZTk1Li43NzJlNDBi IDEwMDY0NAotLS0gYS9mcy9leHQ0L3JlYWRwYWdlLmMKKysrIGIvZnMvZXh0NC9yZWFkcGFn ZS5jCkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGV4dDRfbXBhZ2VfcmVhZHBhZ2VzKHN0cnVj dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkgKi8KIAkJaWYgKGJpbyAmJiAobGFzdF9i bG9ja19pbl9iaW8gIT0gYmxvY2tzWzBdIC0gMSkpIHsKIAkJc3VibWl0X2FuZF9yZWFsbG9j OgotCQkJc3VibWl0X2JpbyhSRUFELCBiaW8pOworCQkJc3VibWl0X2JpbyhiaW8pOwogCQkJ YmlvID0gTlVMTDsKIAkJfQogCQlpZiAoYmlvID09IE5VTEwpIHsKQEAgLTI5NCw2ICsyOTQs NyBAQCBpbnQgZXh0NF9tcGFnZV9yZWFkcGFnZXMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmcsCiAJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmxvY2tzWzBdIDw8IChibGti aXRzIC0gOSk7CiAJCQliaW8tPmJpX2VuZF9pbyA9IG1wYWdlX2VuZF9pbzsKIAkJCWJpby0+ YmlfcHJpdmF0ZSA9IGN0eDsKKwkJCWJpby0+YmlfcncgfD0gUkVBRDsKIAkJfQogCiAJCWxl bmd0aCA9IGZpcnN0X2hvbGUgPDwgYmxrYml0czsKQEAgLTMwMywxNCArMzA0LDE0IEBAIGlu dCBleHQ0X21wYWdlX3JlYWRwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywK IAkJaWYgKCgobWFwLm1fZmxhZ3MgJiBFWFQ0X01BUF9CT1VOREFSWSkgJiYKIAkJICAgICAo cmVsYXRpdmVfYmxvY2sgPT0gbWFwLm1fbGVuKSkgfHwKIAkJICAgIChmaXJzdF9ob2xlICE9 IGJsb2Nrc19wZXJfcGFnZSkpIHsKLQkJCXN1Ym1pdF9iaW8oUkVBRCwgYmlvKTsKKwkJCXN1 Ym1pdF9iaW8oYmlvKTsKIAkJCWJpbyA9IE5VTEw7CiAJCX0gZWxzZQogCQkJbGFzdF9ibG9j a19pbl9iaW8gPSBibG9ja3NbYmxvY2tzX3Blcl9wYWdlIC0gMV07CiAJCWdvdG8gbmV4dF9w YWdlOwogCWNvbmZ1c2VkOgogCQlpZiAoYmlvKSB7Ci0JCQlzdWJtaXRfYmlvKFJFQUQsIGJp byk7CisJCQlzdWJtaXRfYmlvKGJpbyk7CiAJCQliaW8gPSBOVUxMOwogCQl9CiAJCWlmICgh UGFnZVVwdG9kYXRlKHBhZ2UpKQpAQCAtMzIzLDYgKzMyNCw2IEBAIGludCBleHQ0X21wYWdl X3JlYWRwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAl9CiAJQlVHX09O KHBhZ2VzICYmICFsaXN0X2VtcHR5KHBhZ2VzKSk7CiAJaWYgKGJpbykKLQkJc3VibWl0X2Jp byhSRUFELCBiaW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJcmV0dXJuIDA7CiB9CmRpZmYg LS1naXQgYS9mcy9mMmZzL2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4IDk3MmVhYjcu LjFiMmRiYWEgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2YyZnMvZGF0 YS5jCkBAIC0xMTEsOCArMTExLDkgQEAgc3RhdGljIHZvaWQgX19zdWJtaXRfbWVyZ2VkX2Jp byhzdHJ1Y3QgZjJmc19iaW9faW5mbyAqaW8pCiAJCXRyYWNlX2YyZnNfc3VibWl0X3JlYWRf YmlvKGlvLT5zYmktPnNiLCBmaW8sIGlvLT5iaW8pOwogCWVsc2UKIAkJdHJhY2VfZjJmc19z dWJtaXRfd3JpdGVfYmlvKGlvLT5zYmktPnNiLCBmaW8sIGlvLT5iaW8pOworCWlvLT5iaW8t PmJpX3J3IHw9IGZpby0+cnc7CiAKLQlzdWJtaXRfYmlvKGZpby0+cncsIGlvLT5iaW8pOwor CXN1Ym1pdF9iaW8oaW8tPmJpbyk7CiAJaW8tPmJpbyA9IE5VTEw7CiB9CiAKQEAgLTE1Nyw4 ICsxNTgsOSBAQCBpbnQgZjJmc19zdWJtaXRfcGFnZV9iaW8oc3RydWN0IGYyZnNfaW9faW5m byAqZmlvKQogCQliaW9fcHV0KGJpbyk7CiAJCXJldHVybiAtRUZBVUxUOwogCX0KKwliaW8t PmJpX3J3IHw9IGZpby0+cnc7CiAKLQlzdWJtaXRfYmlvKGZpby0+cncsIGJpbyk7CisJc3Vi bWl0X2JpbyhiaW8pOwogCXJldHVybiAwOwogfQogCkBAIC05NTQsNyArOTU2LDcgQEAgZ290 X2l0OgogCQkgKi8KIAkJaWYgKGJpbyAmJiAobGFzdF9ibG9ja19pbl9iaW8gIT0gYmxvY2tf bnIgLSAxKSkgewogc3VibWl0X2FuZF9yZWFsbG9jOgotCQkJc3VibWl0X2JpbyhSRUFELCBi aW8pOworCQkJc3VibWl0X2JpbyhiaW8pOwogCQkJYmlvID0gTlVMTDsKIAkJfQogCQlpZiAo YmlvID09IE5VTEwpIHsKQEAgLTk4Myw2ICs5ODUsNyBAQCBzdWJtaXRfYW5kX3JlYWxsb2M6 CiAJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soYmxvY2tf bnIpOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBmMmZzX3JlYWRfZW5kX2lvOwogCQkJYmlvLT5i aV9wcml2YXRlID0gY3R4OworCQkJYmlvLT5iaV9ydyB8PSBSRUFEOwogCQl9CiAKIAkJaWYg KGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGJsb2Nrc2l6ZSwgMCkgPCBibG9ja3NpemUpCkBA IC05OTcsNyArMTAwMCw3IEBAIHNldF9lcnJvcl9wYWdlOgogCQlnb3RvIG5leHRfcGFnZTsK IGNvbmZ1c2VkOgogCQlpZiAoYmlvKSB7Ci0JCQlzdWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJ CQlzdWJtaXRfYmlvKGJpbyk7CiAJCQliaW8gPSBOVUxMOwogCQl9CiAJCXVubG9ja19wYWdl KHBhZ2UpOwpAQCAtMTAwNyw3ICsxMDEwLDcgQEAgbmV4dF9wYWdlOgogCX0KIAlCVUdfT04o cGFnZXMgJiYgIWxpc3RfZW1wdHkocGFnZXMpKTsKIAlpZiAoYmlvKQotCQlzdWJtaXRfYmlv KFJFQUQsIGJpbyk7CisJCXN1Ym1pdF9iaW8oYmlvKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZm IC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwppbmRleCBm NzdiMzI1Li40Nzk2OGU1IDEwMDY0NAotLS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysgYi9m cy9mMmZzL3NlZ21lbnQuYwpAQCAtMzM0LDcgKzMzNCw4IEBAIHJlcGVhdDoKIAkJZmNjLT5k aXNwYXRjaF9saXN0ID0gbGxpc3RfcmV2ZXJzZV9vcmRlcihmY2MtPmRpc3BhdGNoX2xpc3Qp OwogCiAJCWJpby0+YmlfYmRldiA9IHNiaS0+c2ItPnNfYmRldjsKLQkJcmV0ID0gc3VibWl0 X2Jpb193YWl0KFdSSVRFX0ZMVVNILCBiaW8pOworCQliaW8tPmJpX3J3IHw9IFdSSVRFX0ZM VVNIOworCQlyZXQgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIAogCQlsbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKGNtZCwgbmV4dCwKIAkJCQkJICBmY2MtPmRpc3BhdGNoX2xpc3QsIGxs bm9kZSkgewpAQCAtMzY2LDcgKzM2Nyw4IEBAIGludCBmMmZzX2lzc3VlX2ZsdXNoKHN0cnVj dCBmMmZzX3NiX2luZm8gKnNiaSkKIAkJaW50IHJldDsKIAogCQliaW8tPmJpX2JkZXYgPSBz YmktPnNiLT5zX2JkZXY7Ci0JCXJldCA9IHN1Ym1pdF9iaW9fd2FpdChXUklURV9GTFVTSCwg YmlvKTsKKwkJYmlvLT5iaV9ydyB8PSBXUklURV9GTFVTSDsKKwkJcmV0ID0gc3VibWl0X2Jp b193YWl0KGJpbyk7CiAJCWJpb19wdXQoYmlvKTsKIAkJcmV0dXJuIHJldDsKIAl9CmRpZmYg LS1naXQgYS9mcy9nZnMyL2xvcHMuYyBiL2ZzL2dmczIvbG9wcy5jCmluZGV4IGQ1MzY5YTEu LmFjYzVjY2IgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvbG9wcy5jCisrKyBiL2ZzL2dmczIvbG9w cy5jCkBAIC0yNDAsNyArMjQwLDggQEAgdm9pZCBnZnMyX2xvZ19mbHVzaF9iaW8oc3RydWN0 IGdmczJfc2JkICpzZHAsIGludCBydykKIHsKIAlpZiAoc2RwLT5zZF9sb2dfYmlvKSB7CiAJ CWF0b21pY19pbmMoJnNkcC0+c2RfbG9nX2luX2ZsaWdodCk7Ci0JCXN1Ym1pdF9iaW8ocncs IHNkcC0+c2RfbG9nX2Jpbyk7CisJCXNkcC0+c2RfbG9nX2Jpby0+YmlfcncgfD0gcnc7CisJ CXN1Ym1pdF9iaW8oc2RwLT5zZF9sb2dfYmlvKTsKIAkJc2RwLT5zZF9sb2dfYmlvID0gTlVM TDsKIAl9CiB9CmRpZmYgLS1naXQgYS9mcy9nZnMyL29wc19mc3R5cGUuYyBiL2ZzL2dmczIv b3BzX2ZzdHlwZS5jCmluZGV4IGJhYWI5OWIuLmRmYWMzOTUgMTAwNjQ0Ci0tLSBhL2ZzL2dm czIvb3BzX2ZzdHlwZS5jCisrKyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCkBAIC0yNDYsNyAr MjQ2LDggQEAgc3RhdGljIGludCBnZnMyX3JlYWRfc3VwZXIoc3RydWN0IGdmczJfc2JkICpz ZHAsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpbGVudCkKIAogCWJpby0+YmlfZW5kX2lvID0g ZW5kX2Jpb19pb19wYWdlOwogCWJpby0+YmlfcHJpdmF0ZSA9IHBhZ2U7Ci0Jc3VibWl0X2Jp byhSRUFEX1NZTkMgfCBSRVFfTUVUQSwgYmlvKTsKKwliaW8tPmJpX3J3IHw9IFJFQURfU1lO QyB8IFJFUV9NRVRBOworCXN1Ym1pdF9iaW8oYmlvKTsKIAl3YWl0X29uX3BhZ2VfbG9ja2Vk KHBhZ2UpOwogCWJpb19wdXQoYmlvKTsKIAlpZiAoIVBhZ2VVcHRvZGF0ZShwYWdlKSkgewpk aWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy93cmFwcGVyLmMgYi9mcy9oZnNwbHVzL3dyYXBwZXIu YwppbmRleCBjYzYyMzU2Li43ZTYwNWI1IDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL3dyYXBw ZXIuYworKysgYi9mcy9oZnNwbHVzL3dyYXBwZXIuYwpAQCAtNjUsNiArNjUsNyBAQCBpbnQg aGZzcGx1c19zdWJtaXRfYmlvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHNlY3Rvcl90IHNl Y3RvciwKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PSU8sIDEpOwogCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKKwliaW8t PmJpX3J3IHw9IHJ3OwogCiAJaWYgKCEocncgJiBXUklURSkgJiYgZGF0YSkKIAkJKmRhdGEg PSAodTggKilidWYgKyBvZmZzZXQ7CkBAIC04Myw3ICs4NCw3IEBAIGludCBoZnNwbHVzX3N1 Ym1pdF9iaW8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc2VjdG9yX3Qgc2VjdG9yLAogCQli dWYgPSAodTggKilidWYgKyBsZW47CiAJfQogCi0JcmV0ID0gc3VibWl0X2Jpb193YWl0KHJ3 LCBiaW8pOworCXJldCA9IHN1Ym1pdF9iaW9fd2FpdChiaW8pOwogb3V0OgogCWJpb19wdXQo YmlvKTsKIAlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7CmRpZmYgLS1naXQgYS9mcy9qZnMv amZzX2xvZ21nci5jIGIvZnMvamZzL2pmc19sb2dtZ3IuYwppbmRleCBhNjliZGYyLi43YTk1 YjMxIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2xvZ21nci5jCisrKyBiL2ZzL2pmcy9qZnNf bG9nbWdyLmMKQEAgLTIwMDUsMTIgKzIwMDUsMTMgQEAgc3RhdGljIGludCBsYm1SZWFkKHN0 cnVjdCBqZnNfbG9nICogbG9nLCBpbnQgcG4sIHN0cnVjdCBsYnVmICoqIGJwcCkKIAogCWJp by0+YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOworCWJp by0+YmlfcncgfD0gUkVBRF9TWU5DOwogCS8qY2hlY2sgaWYgam91cm5hbGluZyB0byBkaXNr IGhhcyBiZWVuIGRpc2FibGVkKi8KIAlpZiAobG9nLT5ub19pbnRlZ3JpdHkpIHsKIAkJYmlv LT5iaV9pdGVyLmJpX3NpemUgPSAwOwogCQlsYm1JT0RvbmUoYmlvKTsKIAl9IGVsc2Ugewot CQlzdWJtaXRfYmlvKFJFQURfU1lOQywgYmlvKTsKKwkJc3VibWl0X2JpbyhiaW8pOwogCX0K IAogCXdhaXRfZXZlbnQoYnAtPmxfaW9ldmVudCwgKGJwLT5sX2ZsYWcgIT0gbGJtUkVBRCkp OwpAQCAtMjE0OCwxMyArMjE0OSwxNCBAQCBzdGF0aWMgdm9pZCBsYm1TdGFydElPKHN0cnVj dCBsYnVmICogYnApCiAKIAliaW8tPmJpX2VuZF9pbyA9IGxibUlPRG9uZTsKIAliaW8tPmJp X3ByaXZhdGUgPSBicDsKKwliaW8tPmJpX3J3IHw9IFdSSVRFX1NZTkM7CiAKIAkvKiBjaGVj ayBpZiBqb3VybmFsaW5nIHRvIGRpc2sgaGFzIGJlZW4gZGlzYWJsZWQgKi8KIAlpZiAobG9n LT5ub19pbnRlZ3JpdHkpIHsKIAkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSAwOwogCQlsYm1J T0RvbmUoYmlvKTsKIAl9IGVsc2UgewotCQlzdWJtaXRfYmlvKFdSSVRFX1NZTkMsIGJpbyk7 CisJCXN1Ym1pdF9iaW8oYmlvKTsKIAkJSU5DUkVNRU5UKGxtU3RhdC5zdWJtaXR0ZWQpOwog CX0KIH0KZGlmZiAtLWdpdCBhL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuYyBiL2ZzL2pmcy9qZnNf bWV0YXBhZ2UuYwppbmRleCBhM2ViMzE2Li5iNWI3NmE1IDEwMDY0NAotLS0gYS9mcy9qZnMv amZzX21ldGFwYWdlLmMKKysrIGIvZnMvamZzL2pmc19tZXRhcGFnZS5jCkBAIC00MTEsNyAr NDExLDcgQEAgc3RhdGljIGludCBtZXRhcGFnZV93cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKnBh Z2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQogCQkJaW5jX2lvKHBhZ2UpOwog CQkJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJCQlnb3RvIGR1bXBfYmlvOwotCQkJ c3VibWl0X2JpbyhXUklURSwgYmlvKTsKKwkJCXN1Ym1pdF9iaW8oYmlvKTsKIAkJCW5yX3Vu ZGVyd2F5Kys7CiAJCQliaW8gPSBOVUxMOwogCQl9IGVsc2UKQEAgLTQzNCw2ICs0MzQsNyBA QCBzdGF0aWMgaW50IG1ldGFwYWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3Ry dWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBwYmxvY2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKIAkJYmlvLT5iaV9lbmRfaW8g PSBtZXRhcGFnZV93cml0ZV9lbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBhZ2U7CisJ CWJpby0+YmlfcncgfD0gV1JJVEU7CiAKIAkJLyogRG9uJ3QgY2FsbCBiaW9fYWRkX3BhZ2Ug eWV0LCB3ZSBtYXkgYWRkIHRvIHRoaXMgdmVjICovCiAJCWJpb19vZmZzZXQgPSBvZmZzZXQ7 CkBAIC00NDgsNyArNDQ5LDcgQEAgc3RhdGljIGludCBtZXRhcGFnZV93cml0ZXBhZ2Uoc3Ry dWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKQogCQlpZiAo IWJpby0+YmlfaXRlci5iaV9zaXplKQogCQkJZ290byBkdW1wX2JpbzsKIAotCQlzdWJtaXRf YmlvKFdSSVRFLCBiaW8pOworCQlzdWJtaXRfYmlvKGJpbyk7CiAJCW5yX3VuZGVyd2F5Kys7 CiAJfQogCWlmIChyZWRpcnR5KQpAQCAtNTA2LDcgKzUwNyw3IEBAIHN0YXRpYyBpbnQgbWV0 YXBhZ2VfcmVhZHBhZ2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKIAkJ CQlpbnNlcnRfbWV0YXBhZ2UocGFnZSwgTlVMTCk7CiAJCQlpbmNfaW8ocGFnZSk7CiAJCQlp ZiAoYmlvKQotCQkJCXN1Ym1pdF9iaW8oUkVBRCwgYmlvKTsKKwkJCQlzdWJtaXRfYmlvKGJp byk7CiAKIAkJCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAJCQliaW8tPmJpX2Jk ZXYgPSBpbm9kZS0+aV9zYi0+c19iZGV2OwpAQCAtNTE0LDYgKzUxNSw3IEBAIHN0YXRpYyBp bnQgbWV0YXBhZ2VfcmVhZHBhZ2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3QgcGFnZSAqcGFn ZSkKIAkJCQlwYmxvY2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKIAkJCWJpby0+Ymlf ZW5kX2lvID0gbWV0YXBhZ2VfcmVhZF9lbmRfaW87CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBw YWdlOworCQkJYmlvLT5iaV9ydyB8PSBSRUFEOwogCQkJbGVuID0geGxlbiA8PCBpbm9kZS0+ aV9ibGtiaXRzOwogCQkJb2Zmc2V0ID0gYmxvY2tfb2Zmc2V0IDw8IGlub2RlLT5pX2Jsa2Jp dHM7CiAJCQlpZiAoYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgbGVuLCBvZmZzZXQpIDwgbGVu KQpAQCAtNTIzLDcgKzUyNSw3IEBAIHN0YXRpYyBpbnQgbWV0YXBhZ2VfcmVhZHBhZ2Uoc3Ry dWN0IGZpbGUgKmZwLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKIAkJCWJsb2NrX29mZnNldCsrOwog CX0KIAlpZiAoYmlvKQotCQlzdWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJCXN1Ym1pdF9iaW8o YmlvKTsKIAllbHNlCiAJCXVubG9ja19wYWdlKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9mcy9s b2dmcy9kZXZfYmRldi5jIGIvZnMvbG9nZnMvZGV2X2JkZXYuYwppbmRleCBhNzA5ZDgwLi42 MjNkZDNlIDEwMDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfYmRldi5jCisrKyBiL2ZzL2xvZ2Zz L2Rldl9iZGV2LmMKQEAgLTI5LDggKzI5LDkgQEAgc3RhdGljIGludCBzeW5jX3JlcXVlc3Qo c3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykK IAliaW8uYmlfYmRldiA9IGJkZXY7CiAJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZS0+ aW5kZXggKiAoUEFHRV9TSVpFID4+IDkpOwogCWJpby5iaV9pdGVyLmJpX3NpemUgPSBQQUdF X1NJWkU7CisJYmlvLmJpX3J3IHw9IHJ3OwogCi0JcmV0dXJuIHN1Ym1pdF9iaW9fd2FpdChy dywgJmJpbyk7CisJcmV0dXJuIHN1Ym1pdF9iaW9fd2FpdCgmYmlvKTsKIH0KIAogc3RhdGlj IGludCBiZGV2X3JlYWRwYWdlKHZvaWQgKl9zYiwgc3RydWN0IHBhZ2UgKnBhZ2UpCkBAIC05 NSw4ICs5Niw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dyaXRlc2VnKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yID0gb2ZzID4+IDk7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBzYjsKIAkJCWJpby0+ YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOworCQkJYmlvLT5iaV9ydyB8PSBXUklURTsK IAkJCWF0b21pY19pbmMoJnN1cGVyLT5zX3BlbmRpbmdfd3JpdGVzKTsKLQkJCXN1Ym1pdF9i aW8oV1JJVEUsIGJpbyk7CisJCQlzdWJtaXRfYmlvKGJpbyk7CiAKIAkJCW9mcyArPSBpICog UEFHRV9TSVpFOwogCQkJaW5kZXggKz0gaTsKQEAgLTEyMiw4ICsxMjQsOSBAQCBzdGF0aWMg aW50IF9fYmRldl93cml0ZXNlZyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1NjQgb2ZzLCBw Z29mZl90IGluZGV4LAogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKIAli aW8tPmJpX3ByaXZhdGUgPSBzYjsKIAliaW8tPmJpX2VuZF9pbyA9IHdyaXRlc2VnX2VuZF9p bzsKKwliaW8tPmJpX3J3IHw9IFdSSVRFOwogCWF0b21pY19pbmMoJnN1cGVyLT5zX3BlbmRp bmdfd3JpdGVzKTsKLQlzdWJtaXRfYmlvKFdSSVRFLCBiaW8pOworCXN1Ym1pdF9iaW8oYmlv KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTg1LDggKzE4OCw5IEBAIHN0YXRpYyBpbnQgZG9f ZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTY0IG9mcywgcGdvZmZfdCBpbmRleCwK IAkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJp dmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87CisJCQliaW8t PmJpX3J3IHw9IFdSSVRFOwogCQkJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0 ZXMpOwotCQkJc3VibWl0X2JpbyhXUklURSwgYmlvKTsKKwkJCXN1Ym1pdF9iaW8oYmlvKTsK IAogCQkJb2ZzICs9IGkgKiBQQUdFX1NJWkU7CiAJCQlpbmRleCArPSBpOwpAQCAtMjA2LDgg KzIxMCw5IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2Zz ID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSBlcmFz ZV9lbmRfaW87CisJYmlvLT5iaV9ydyB8PSBXUklURTsKIAlhdG9taWNfaW5jKCZzdXBlci0+ c19wZW5kaW5nX3dyaXRlcyk7Ci0Jc3VibWl0X2JpbyhXUklURSwgYmlvKTsKKwlzdWJtaXRf YmlvKGJpbyk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL21wYWdlLmMgYi9m cy9tcGFnZS5jCmluZGV4IDE0ODBkM2EuLjlmZWM2N2YgMTAwNjQ0Ci0tLSBhL2ZzL21wYWdl LmMKKysrIGIvZnMvbXBhZ2UuYwpAQCAtNTgsOCArNTgsOSBAQCBzdGF0aWMgdm9pZCBtcGFn ZV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvKQogc3RhdGljIHN0cnVjdCBiaW8gKm1wYWdlX2Jp b19zdWJtaXQoaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJYmlvLT5iaV9lbmRfaW8g PSBtcGFnZV9lbmRfaW87CisJYmlvLT5iaV9ydyB8PSBydzsKIAlndWFyZF9iaW9fZW9kKHJ3 LCBiaW8pOwotCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJc3VibWl0X2JpbyhiaW8pOwogCXJl dHVybiBOVUxMOwogfQogCmRpZmYgLS1naXQgYS9mcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2ts YXlvdXQuYyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5jCmluZGV4IGRkZDAx MzguLmJiOGQ2MjkgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91 dC5jCisrKyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5jCkBAIC0xMDIsMTQg KzEwMiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3BhcmFsbGVsKHN0cnVjdCBwYXJh bGxlbF9pbyAqcCkKIH0KIAogc3RhdGljIHN0cnVjdCBiaW8gKgotYmxfc3VibWl0X2Jpbyhp bnQgcncsIHN0cnVjdCBiaW8gKmJpbykKK2JsX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlv KQogewogCWlmIChiaW8pIHsKIAkJZ2V0X3BhcmFsbGVsKGJpby0+YmlfcHJpdmF0ZSk7CiAJ CWRwcmludGsoIiVzIHN1Ym1pdHRpbmcgJXMgYmlvICV1QCVsbHVcbiIsIF9fZnVuY19fLAot CQkJcncgPT0gUkVBRCA/ICJyZWFkIiA6ICJ3cml0ZSIsIGJpby0+YmlfaXRlci5iaV9zaXpl LAorCQkJYmlvLT5iaV9ydyA9PSBSRUFEID8gInJlYWQiIDogIndyaXRlIiwKKwkJCWJpby0+ YmlfaXRlci5iaV9zaXplLAogCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKLQkJc3VibWl0X2JpbyhydywgYmlvKTsKKwkJc3VibWl0X2JpbyhiaW8p OwogCX0KIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTE1OCw3ICsxNTksNyBAQCBkb19hZGRfcGFn ZV90b19iaW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgbnBnLCBpbnQgcncsIHNlY3Rvcl90IGlz ZWN0LAogCWlmIChkaXNrX2FkZHIgPCBtYXAtPnN0YXJ0IHx8IGRpc2tfYWRkciA+PSBtYXAt PnN0YXJ0ICsgbWFwLT5sZW4pIHsKIAkJaWYgKCFkZXYtPm1hcChkZXYsIGRpc2tfYWRkciwg bWFwKSkKIAkJCXJldHVybiBFUlJfUFRSKC1FSU8pOwotCQliaW8gPSBibF9zdWJtaXRfYmlv KHJ3LCBiaW8pOworCQliaW8gPSBibF9zdWJtaXRfYmlvKGJpbyk7CiAJfQogCWRpc2tfYWRk ciArPSBtYXAtPmRpc2tfb2Zmc2V0OwogCWRpc2tfYWRkciAtPSBtYXAtPnN0YXJ0OwpAQCAt MTc0LDkgKzE3NSwxMCBAQCByZXRyeToKIAkJCQlkaXNrX2FkZHIgPj4gU0VDVE9SX1NISUZU LCBlbmRfaW8sIHBhcik7CiAJCWlmICghYmlvKQogCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CisJCWJpby0+YmlfcncgfD0gcnc7CiAJfQogCWlmIChiaW9fYWRkX3BhZ2UoYmlvLCBw YWdlLCAqbGVuLCBvZmZzZXQpIDwgKmxlbikgewotCQliaW8gPSBibF9zdWJtaXRfYmlvKHJ3 LCBiaW8pOworCQliaW8gPSBibF9zdWJtaXRfYmlvKGJpbyk7CiAJCWdvdG8gcmV0cnk7CiAJ fQogCXJldHVybiBiaW87CkBAIC0yNTIsNyArMjU0LDcgQEAgYmxfcmVhZF9wYWdlbGlzdChz dHJ1Y3QgbmZzX3BnaW9faGVhZGVyICpoZWFkZXIpCiAJZm9yIChpID0gcGdfaW5kZXg7IGkg PCBoZWFkZXItPnBhZ2VfYXJyYXkubnBhZ2VzOyBpKyspIHsKIAkJaWYgKGV4dGVudF9sZW5n dGggPD0gMCkgewogCQkJLyogV2UndmUgdXNlZCB1cCB0aGUgcHJldmlvdXMgZXh0ZW50ICov Ci0JCQliaW8gPSBibF9zdWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJCQliaW8gPSBibF9zdWJt aXRfYmlvKGJpbyk7CiAKIAkJCS8qIEdldCB0aGUgbmV4dCBvbmUgKi8KIAkJCWlmICghZXh0 X3RyZWVfbG9va3VwKGJsLCBpc2VjdCwgJmJlLCBmYWxzZSkpIHsKQEAgLTI3Myw3ICsyNzUs NyBAQCBibF9yZWFkX3BhZ2VsaXN0KHN0cnVjdCBuZnNfcGdpb19oZWFkZXIgKmhlYWRlcikK IAkJfQogCiAJCWlmIChpc19ob2xlKCZiZSkpIHsKLQkJCWJpbyA9IGJsX3N1Ym1pdF9iaW8o UkVBRCwgYmlvKTsKKwkJCWJpbyA9IGJsX3N1Ym1pdF9iaW8oYmlvKTsKIAkJCS8qIEZpbGwg aG9sZSB3LyB6ZXJvZXMgdy9vIGFjY2Vzc2luZyBkZXZpY2UgKi8KIAkJCWRwcmludGsoIiVz IFplcm9pbmcgcGFnZSBmb3IgaG9sZVxuIiwgX19mdW5jX18pOwogCQkJemVyb191c2VyX3Nl Z21lbnQocGFnZXNbaV0sIHBnX29mZnNldCwgcGdfbGVuKTsKQEAgLTMwNiw3ICszMDgsNyBA QCBibF9yZWFkX3BhZ2VsaXN0KHN0cnVjdCBuZnNfcGdpb19oZWFkZXIgKmhlYWRlcikKIAkJ aGVhZGVyLT5yZXMuY291bnQgPSAoaXNlY3QgPDwgU0VDVE9SX1NISUZUKSAtIGhlYWRlci0+ YXJncy5vZmZzZXQ7CiAJfQogb3V0OgotCWJsX3N1Ym1pdF9iaW8oUkVBRCwgYmlvKTsKKwli bF9zdWJtaXRfYmlvKGJpbyk7CiAJYmxrX2ZpbmlzaF9wbHVnKCZwbHVnKTsKIAlwdXRfcGFy YWxsZWwocGFyKTsKIAlyZXR1cm4gUE5GU19BVFRFTVBURUQ7CkBAIC0zOTgsNyArNDAwLDcg QEAgYmxfd3JpdGVfcGFnZWxpc3Qoc3RydWN0IG5mc19wZ2lvX2hlYWRlciAqaGVhZGVyLCBp bnQgc3luYykKIAlmb3IgKGkgPSBwZ19pbmRleDsgaSA8IGhlYWRlci0+cGFnZV9hcnJheS5u cGFnZXM7IGkrKykgewogCQlpZiAoZXh0ZW50X2xlbmd0aCA8PSAwKSB7CiAJCQkvKiBXZSd2 ZSB1c2VkIHVwIHRoZSBwcmV2aW91cyBleHRlbnQgKi8KLQkJCWJpbyA9IGJsX3N1Ym1pdF9i aW8oV1JJVEUsIGJpbyk7CisJCQliaW8gPSBibF9zdWJtaXRfYmlvKGJpbyk7CiAJCQkvKiBH ZXQgdGhlIG5leHQgb25lICovCiAJCQlpZiAoIWV4dF90cmVlX2xvb2t1cChibCwgaXNlY3Qs ICZiZSwgdHJ1ZSkpIHsKIAkJCQloZWFkZXItPnBuZnNfZXJyb3IgPSAtRUlOVkFMOwpAQCAt NDI3LDcgKzQyOSw3IEBAIGJsX3dyaXRlX3BhZ2VsaXN0KHN0cnVjdCBuZnNfcGdpb19oZWFk ZXIgKmhlYWRlciwgaW50IHN5bmMpCiAKIAloZWFkZXItPnJlcy5jb3VudCA9IGhlYWRlci0+ YXJncy5jb3VudDsKIG91dDoKLQlibF9zdWJtaXRfYmlvKFdSSVRFLCBiaW8pOworCWJsX3N1 Ym1pdF9iaW8oYmlvKTsKIAlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwogCXB1dF9wYXJhbGxl bChwYXIpOwogCXJldHVybiBQTkZTX0FUVEVNUFRFRDsKZGlmZiAtLWdpdCBhL2ZzL25pbGZz Mi9zZWdidWYuYyBiL2ZzL25pbGZzMi9zZWdidWYuYwppbmRleCBmNjM2MjBjLi40MjhlY2U4 IDEwMDY0NAotLS0gYS9mcy9uaWxmczIvc2VnYnVmLmMKKysrIGIvZnMvbmlsZnMyL3NlZ2J1 Zi5jCkBAIC0zNjgsNyArMzY4LDggQEAgc3RhdGljIGludCBuaWxmc19zZWdidWZfc3VibWl0 X2JpbyhzdHJ1Y3QgbmlsZnNfc2VnbWVudF9idWZmZXIgKnNlZ2J1ZiwKIAogCWJpby0+Ymlf ZW5kX2lvID0gbmlsZnNfZW5kX2Jpb193cml0ZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBzZWdi dWY7Ci0Jc3VibWl0X2Jpbyhtb2RlLCBiaW8pOworCWJpby0+YmlfcncgfD0gbW9kZTsKKwlz dWJtaXRfYmlvKGJpbyk7CiAJc2VnYnVmLT5zYl9uYmlvKys7CiAKIAl3aS0+YmlvID0gTlVM TDsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgYi9mcy9vY2Zz Mi9jbHVzdGVyL2hlYXJ0YmVhdC5jCmluZGV4IDcwOWZiYmQuLmRmNGNkZWYgMTAwNjQ0Ci0t LSBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKKysrIGIvZnMvb2NmczIvY2x1c3Rl ci9oZWFydGJlYXQuYwpAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyB2b2lkIG8yaGJfYmlv X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgc3RydWN0IGJpbyAqbzJoYl9zZXR1 cF9vbmVfYmlvKHN0cnVjdCBvMmhiX3JlZ2lvbiAqcmVnLAogCQkJCSAgICAgIHN0cnVjdCBv MmhiX2Jpb193YWl0X2N0eHQgKndjLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCAqY3VycmVu dF9zbG90LAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBtYXhfc2xvdHMpCisJCQkJICAgICAg dW5zaWduZWQgaW50IG1heF9zbG90cywgaW50IHJ3KQogewogCWludCBsZW4sIGN1cnJlbnRf cGFnZTsKIAl1bnNpZ25lZCBpbnQgdmVjX2xlbiwgdmVjX3N0YXJ0OwpAQCAtNDE3LDYgKzQx Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpvMmhiX3NldHVwX29uZV9iaW8oc3RydWN0IG8y aGJfcmVnaW9uICpyZWcsCiAJYmlvLT5iaV9iZGV2ID0gcmVnLT5ocl9iZGV2OwogCWJpby0+ YmlfcHJpdmF0ZSA9IHdjOwogCWJpby0+YmlfZW5kX2lvID0gbzJoYl9iaW9fZW5kX2lvOwor CWJpby0+YmlfcncgfD0gcnc7CiAKIAl2ZWNfc3RhcnQgPSAoY3MgPDwgYml0cykgJSBQQUdF X0NBQ0hFX1NJWkU7CiAJd2hpbGUoY3MgPCBtYXhfc2xvdHMpIHsKQEAgLTQ1Miw3ICs0NTMs OCBAQCBzdGF0aWMgaW50IG8yaGJfcmVhZF9zbG90cyhzdHJ1Y3QgbzJoYl9yZWdpb24gKnJl ZywKIAlvMmhiX2Jpb193YWl0X2luaXQoJndjKTsKIAogCXdoaWxlKGN1cnJlbnRfc2xvdCA8 IG1heF9zbG90cykgewotCQliaW8gPSBvMmhiX3NldHVwX29uZV9iaW8ocmVnLCAmd2MsICZj dXJyZW50X3Nsb3QsIG1heF9zbG90cyk7CisJCWJpbyA9IG8yaGJfc2V0dXBfb25lX2Jpbyhy ZWcsICZ3YywgJmN1cnJlbnRfc2xvdCwgbWF4X3Nsb3RzLAorCQkJCQkgUkVBRCk7CiAJCWlm IChJU19FUlIoYmlvKSkgewogCQkJc3RhdHVzID0gUFRSX0VSUihiaW8pOwogCQkJbWxvZ19l cnJubyhzdGF0dXMpOwpAQCAtNDYwLDcgKzQ2Miw3IEBAIHN0YXRpYyBpbnQgbzJoYl9yZWFk X3Nsb3RzKHN0cnVjdCBvMmhiX3JlZ2lvbiAqcmVnLAogCQl9CiAKIAkJYXRvbWljX2luYygm d2Mud2NfbnVtX3JlcXMpOwotCQlzdWJtaXRfYmlvKFJFQUQsIGJpbyk7CisJCXN1Ym1pdF9i aW8oYmlvKTsKIAl9CiAKIAlzdGF0dXMgPSAwOwpAQCAtNDg0LDcgKzQ4Niw3IEBAIHN0YXRp YyBpbnQgbzJoYl9pc3N1ZV9ub2RlX3dyaXRlKHN0cnVjdCBvMmhiX3JlZ2lvbiAqcmVnLAog CiAJc2xvdCA9IG8ybm1fdGhpc19ub2RlKCk7CiAKLQliaW8gPSBvMmhiX3NldHVwX29uZV9i aW8ocmVnLCB3cml0ZV93YywgJnNsb3QsIHNsb3QrMSk7CisJYmlvID0gbzJoYl9zZXR1cF9v bmVfYmlvKHJlZywgd3JpdGVfd2MsICZzbG90LCBzbG90KzEsIFdSSVRFX1NZTkMpOwogCWlm IChJU19FUlIoYmlvKSkgewogCQlzdGF0dXMgPSBQVFJfRVJSKGJpbyk7CiAJCW1sb2dfZXJy bm8oc3RhdHVzKTsKQEAgLTQ5Miw3ICs0OTQsNyBAQCBzdGF0aWMgaW50IG8yaGJfaXNzdWVf bm9kZV93cml0ZShzdHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAl9CiAKIAlhdG9taWNfaW5j KCZ3cml0ZV93Yy0+d2NfbnVtX3JlcXMpOwotCXN1Ym1pdF9iaW8oV1JJVEVfU1lOQywgYmlv KTsKKwlzdWJtaXRfYmlvKGJpbyk7CiAKIAlzdGF0dXMgPSAwOwogYmFpbDoKZGlmZiAtLWdp dCBhL2ZzL3hmcy94ZnNfYW9wcy5jIGIvZnMveGZzL3hmc19hb3BzLmMKaW5kZXggMjllN2U1 ZC4uYTEwNTJkMiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19hb3BzLmMKKysrIGIvZnMveGZz L3hmc19hb3BzLmMKQEAgLTM4Miw3ICszODIsOCBAQCB4ZnNfc3VibWl0X2lvZW5kX2JpbygK IAlhdG9taWNfaW5jKCZpb2VuZC0+aW9fcmVtYWluaW5nKTsKIAliaW8tPmJpX3ByaXZhdGUg PSBpb2VuZDsKIAliaW8tPmJpX2VuZF9pbyA9IHhmc19lbmRfYmlvOwotCXN1Ym1pdF9iaW8o d2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwgPyBXUklURV9TWU5DIDogV1JJVEUsIGJp byk7CisJYmlvLT5iaV9ydyB8PSAod2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwgPyBX UklURV9TWU5DIDogV1JJVEUpOworCXN1Ym1pdF9iaW8oYmlvKTsKIH0KIAogU1RBVElDIHN0 cnVjdCBiaW8gKgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19idWYuYyBiL2ZzL3hmcy94ZnNf YnVmLmMKaW5kZXggMzI0M2NkZi4uYjdkYTc4ZiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19i dWYuYworKysgYi9mcy94ZnMveGZzX2J1Zi5jCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBuZXh0 X2NodW5rOgogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9l bmRfaW8gPSB4ZnNfYnVmX2Jpb19lbmRfaW87CiAJYmlvLT5iaV9wcml2YXRlID0gYnA7Ci0K KwliaW8tPmJpX3J3IHw9IHJ3OwogCiAJZm9yICg7IHNpemUgJiYgbnJfcGFnZXM7IG5yX3Bh Z2VzLS0sIHBhZ2VfaW5kZXgrKykgewogCQlpbnQJcmJ5dGVzLCBuYnl0ZXMgPSBQQUdFX1NJ WkUgLSBvZmZzZXQ7CkBAIC0xMTg3LDcgKzExODcsNyBAQCBuZXh0X2NodW5rOgogCQkJZmx1 c2hfa2VybmVsX3ZtYXBfcmFuZ2UoYnAtPmJfYWRkciwKIAkJCQkJCXhmc19idWZfdm1hcF9s ZW4oYnApKTsKIAkJfQotCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOworCQlzdWJtaXRfYmlvKGJp byk7CiAJCWlmIChzaXplKQogCQkJZ290byBuZXh0X2NodW5rOwogCX0gZWxzZSB7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2Jpby5oIGIvaW5jbHVkZS9saW51eC9iaW8uaAppbmRl eCA1MzQ5ZTY4Li45ZjBlMmNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jpby5oCisr KyBiL2luY2x1ZGUvbGludXgvYmlvLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgYmlvX2lvX2Vycm9yKHN0cnVjdCBiaW8gKmJpbykKIHN0cnVjdCByZXF1ZXN0 X3F1ZXVlOwogZXh0ZXJuIGludCBiaW9fcGh5c19zZWdtZW50cyhzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqLCBzdHJ1Y3QgYmlvICopOwogCi1leHRlcm4gaW50IHN1Ym1pdF9iaW9fd2FpdChp bnQgcncsIHN0cnVjdCBiaW8gKmJpbyk7CitleHRlcm4gaW50IHN1Ym1pdF9iaW9fd2FpdChz dHJ1Y3QgYmlvICpiaW8pOwogZXh0ZXJuIHZvaWQgYmlvX2FkdmFuY2Uoc3RydWN0IGJpbyAq LCB1bnNpZ25lZCk7CiAKIGV4dGVybiB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKik7CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5k ZXggM2FhNTE0Mi4uZmZjODUwOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oCisr KyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjYxMSw3ICsyNjExLDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIHJlbW92ZV9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiBleHRl cm4gdm9pZCBpbm9kZV9zYl9saXN0X2FkZChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIAogI2lm ZGVmIENPTkZJR19CTE9DSwotZXh0ZXJuIGJsa19xY190IHN1Ym1pdF9iaW8oaW50LCBzdHJ1 Y3QgYmlvICopOworZXh0ZXJuIGJsa19xY190IHN1Ym1pdF9iaW8oc3RydWN0IGJpbyAqKTsK IGV4dGVybiBpbnQgYmRldl9yZWFkX29ubHkoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKICNl bmRpZgogZXh0ZXJuIGludCBzZXRfYmxvY2tzaXplKHN0cnVjdCBibG9ja19kZXZpY2UgKiwg aW50KTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9zd2FwLmMgYi9rZXJuZWwvcG93ZXIv c3dhcC5jCmluZGV4IDEyY2Q5ODkuLjY0OWRmYzcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dl ci9zd2FwLmMKKysrIGIva2VybmVsL3Bvd2VyL3N3YXAuYwpAQCAtMjYwLDYgKzI2MCw3IEBA IHN0YXRpYyBpbnQgaGliX3N1Ym1pdF9pbyhpbnQgcncsIHBnb2ZmX3QgcGFnZV9vZmYsIHZv aWQgKmFkZHIsCiAJYmlvID0gYmlvX2FsbG9jKF9fR0ZQX1JFQ0xBSU0gfCBfX0dGUF9ISUdI LCAxKTsKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZV9vZmYgKiAoUEFHRV9TSVpF ID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGhpYl9yZXN1bWVfYmRldjsKKwliaW8tPmJpX3J3 IHw9IHJ3OwogCiAJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfU0laRSwgMCkg PCBQQUdFX1NJWkUpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJQTTogQWRkaW5nIHBhZ2UgdG8g YmlvIGZhaWxlZCBhdCAlbGx1XG4iLApAQCAtMjcyLDkgKzI3Myw5IEBAIHN0YXRpYyBpbnQg aGliX3N1Ym1pdF9pbyhpbnQgcncsIHBnb2ZmX3QgcGFnZV9vZmYsIHZvaWQgKmFkZHIsCiAJ CWJpby0+YmlfZW5kX2lvID0gaGliX2VuZF9pbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gaGI7 CiAJCWF0b21pY19pbmMoJmhiLT5jb3VudCk7Ci0JCXN1Ym1pdF9iaW8ocncsIGJpbyk7CisJ CXN1Ym1pdF9iaW8oYmlvKTsKIAl9IGVsc2UgewotCQllcnJvciA9IHN1Ym1pdF9iaW9fd2Fp dChydywgYmlvKTsKKwkJZXJyb3IgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIAkJYmlvX3B1 dChiaW8pOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vcGFnZV9pby5jIGIvbW0vcGFnZV9pby5j CmluZGV4IGI5OTVhNWIuLjg0MTBjZGIgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfaW8uYworKysg Yi9tbS9wYWdlX2lvLmMKQEAgLTI1Myw3ICsyNTMsNyBAQCBpbnQgX19zd2FwX3dyaXRlcGFn ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsCiAJ CWJpb19lbmRfaW9fdCBlbmRfd3JpdGVfZnVuYykKIHsKIAlzdHJ1Y3QgYmlvICpiaW87Ci0J aW50IHJldCwgcncgPSBXUklURTsKKwlpbnQgcmV0OwogCXN0cnVjdCBzd2FwX2luZm9fc3Ry dWN0ICpzaXMgPSBwYWdlX3N3YXBfaW5mbyhwYWdlKTsKIAogCWlmIChzaXMtPmZsYWdzICYg U1dQX0ZJTEUpIHsKQEAgLTMxMSwxMiArMzExLDEzIEBAIGludCBfX3N3YXBfd3JpdGVwYWdl KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYywKIAkJ cmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CiAJfQorCWJpby0+YmlfcncgfD0gV1JJVEU7 CiAJaWYgKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMKQotCQlydyB8PSBSRVFfU1lO QzsKKwkJYmlvLT5iaV9ydyB8PSBSRVFfU1lOQzsKIAljb3VudF92bV9ldmVudChQU1dQT1VU KTsKIAlzZXRfcGFnZV93cml0ZWJhY2socGFnZSk7CiAJdW5sb2NrX3BhZ2UocGFnZSk7Ci0J c3VibWl0X2JpbyhydywgYmlvKTsKKwlzdWJtaXRfYmlvKGJpbyk7CiBvdXQ6CiAJcmV0dXJu IHJldDsKIH0KQEAgLTM1OCw4ICszNTksOSBAQCBpbnQgc3dhcF9yZWFkcGFnZShzdHJ1Y3Qg cGFnZSAqcGFnZSkKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CiAJfQorCWJpby0+ YmlfcncgfD0gUkVBRDsKIAljb3VudF92bV9ldmVudChQU1dQSU4pOwotCXN1Ym1pdF9iaW8o UkVBRCwgYmlvKTsKKwlzdWJtaXRfYmlvKGJpbyk7CiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0K LS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwMi1hZGQtUkVRX09QLWRlZmlu aXRpb25zLWFuZC1iaV9vcC1vcC1maWVsZHMucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMTI0MDIA MTI2MzIxNTQyMzAAMDIxNTcwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt bmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZy b20gMWVlM2FhYTI3OGVkZGRlYjAwMjE2MGUxZDJkYTkxODI2MTAxODQ5MCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNv bT4KRGF0ZTogRnJpLCA0IERlYyAyMDE1IDA1OjU4OjE5IC0wNjAwClN1YmplY3Q6IFtQQVRD SCAwMi8zMF0gYWRkIFJFUV9PUCBkZWZpbml0aW9ucyBhbmQgYmlfb3Avb3AgZmllbGRzCgpU aGUgZm9sbG93aW5nIHBhdGNoZXMgc2VwYXJhdGUgdGhlIG9wZXJhdGlvbiAod3JpdGUsIHJl YWQsIGRpc2NhcmQsCmV0YykgZnJvbSB0aGUgZmxhZ3MgaW4gYmlfcncvY21kX2ZsYWdzLiBU aGlzIHBhdGNoIGFkZHMgZGVmaW5pdGlvbnMKZm9yIHJlcXVlc3QvYmlvIG9wZXJhdGlvbnMs IGFkZHMgZmllbGRzIHRvIHRoZSByZXF1ZXN0L2JpbyB0byBzZXQKdGhlbSwgYW5kIHNvbWUg dGVtcG9yYXJ5IGNvbXBhdCBjb2RlIHNvIGNvZGUgY2FuIHVzZSBlaXRoZXIgb25lLiBJbgp0 aGUgZmluYWwgcGF0Y2hlcyB0aGlzIGNvbXBhdCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCB3aGVu IGV2ZXJ5dGhpbmcgaXMKY29udmVydGVkLgoKSW4gdGhlc2UgaW5pdGlhbCBwYXRjaGVzIHRo ZSBSRVFfT1BzIG1hdGNoIHRoZSBSRVEgb25lcyBmb3IgY29tcGF0CnJlYXNvbnMgd2hpbGUg YWxsIHRoZSBjb2RlIGlzIGNvbnZlcnRlZCBpbiB0aGlzIHNldC4gSW4gdGhlIGxhc3QKcGF0 Y2hlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZC4KClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hyaXN0 aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogYmxvY2svYmxrLWNvcmUuYyAgICAgICAg ICB8IDE5ICsrKysrKysrKysrKysrKystLS0KIGluY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgg fCAxNSArKysrKysrKysrKysrKy0KIGluY2x1ZGUvbGludXgvYmxrZGV2LmggICAgfCAgMSAr CiBpbmNsdWRlL2xpbnV4L2ZzLmggICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLQogNCBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jb3JlLmMgYi9ibG9jay9i bGstY29yZS5jCmluZGV4IGFjOTI3NWMuLjY0ODk0ZTAgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Js ay1jb3JlLmMKKysrIGIvYmxvY2svYmxrLWNvcmUuYwpAQCAtMTY3Myw3ICsxNjczLDggQEAg dm9pZCBpbml0X3JlcXVlc3RfZnJvbV9iaW8oc3RydWN0IHJlcXVlc3QgKnJlcSwgc3RydWN0 IGJpbyAqYmlvKQogewogCXJlcS0+Y21kX3R5cGUgPSBSRVFfVFlQRV9GUzsKIAotCXJlcS0+ Y21kX2ZsYWdzIHw9IGJpby0+YmlfcncgJiBSRVFfQ09NTU9OX01BU0s7CisJLyogdG1wIGNv bXBhdC4gQWxsb3cgdXNlcnMgdG8gc2V0IGJpX29wIG9yIGJpX3J3ICovCisJcmVxLT5jbWRf ZmxhZ3MgfD0gKGJpby0+YmlfcncgfCBiaW8tPmJpX29wKSAmIFJFUV9DT01NT05fTUFTSzsK IAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9SQUhFQUQpCiAJCXJlcS0+Y21kX2ZsYWdzIHw9IFJF UV9GQUlMRkFTVF9NQVNLOwogCkBAIC0yMDA4LDYgKzIwMDksMTIgQEAgYmxrX3FjX3QgZ2Vu ZXJpY19tYWtlX3JlcXVlc3Qoc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBiaW9fbGlzdCBi aW9fbGlzdF9vbl9zdGFjazsKIAlibGtfcWNfdCByZXQgPSBCTEtfUUNfVF9OT05FOwogCisJ LyogdG1wIGNvbXBhdC4gQWxsb3cgdXNlcnMgdG8gc2V0IGVpdGhlciBvbmUgb3IgYm90aC4K KwkgKiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHdlIGhhdmUgY29udmVydGVkCisJICog ZXZlcnlvbmUgaW4gdGhlIG5leHQgcGF0Y2hlcy4KKwkgKi8KKwliaW8tPmJpX3J3IHw9IGJp by0+Ymlfb3A7CisKIAlpZiAoIWdlbmVyaWNfbWFrZV9yZXF1ZXN0X2NoZWNrcyhiaW8pKQog CQlnb3RvIG91dDsKIApAQCAtMjA3Nyw2ICsyMDg0LDEyIEBAIEVYUE9SVF9TWU1CT0woZ2Vu ZXJpY19tYWtlX3JlcXVlc3QpOwogICovCiBibGtfcWNfdCBzdWJtaXRfYmlvKHN0cnVjdCBi aW8gKmJpbykKIHsKKwkvKiB0bXAgY29tcGF0LiBBbGxvdyB1c2VycyB0byBzZXQgZWl0aGVy IG9uZSBvciBib3RoLgorCSAqIFRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gd2UgaGF2ZSBj b252ZXJ0ZWQKKwkgKiBldmVyeW9uZSBpbiB0aGUgbmV4dCBwYXRjaGVzLgorCSAqLworCWJp by0+YmlfcncgfD0gYmlvLT5iaV9vcDsKKwogCS8qCiAJICogSWYgaXQncyBhIHJlZ3VsYXIg cmVhZC93cml0ZSBvciBhIGJhcnJpZXIgd2l0aCBkYXRhIGF0dGFjaGVkLAogCSAqIGdvIHRo cm91Z2ggdGhlIG5vcm1hbCBhY2NvdW50aW5nIHN0dWZmIGJlZm9yZSBzdWJtaXNzaW9uLgpA QCAtMjk1NSw4ICsyOTY4LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoX19ibGtfZW5kX3JlcXVl c3RfZXJyKTsKIHZvaWQgYmxrX3JxX2Jpb19wcmVwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJCSAgICAgc3RydWN0IGJpbyAqYmlvKQogewotCS8q IEJpdCAwIChSL1cpIGlzIGlkZW50aWNhbCBpbiBycS0+Y21kX2ZsYWdzIGFuZCBiaW8tPmJp X3J3ICovCi0JcnEtPmNtZF9mbGFncyB8PSBiaW8tPmJpX3J3ICYgUkVRX1dSSVRFOworCS8q IHRtcCBjb21wYXQuIEFsbG93IHVzZXJzIHRvIHNldCBiaV9vcCBvciBiaV9ydyAqLworCXJx LT5jbWRfZmxhZ3MgfD0gYmlvX2RhdGFfZGlyKGJpbyk7CiAKIAlpZiAoYmlvX2hhc19kYXRh KGJpbykpCiAJCXJxLT5ucl9waHlzX3NlZ21lbnRzID0gYmlvX3BoeXNfc2VnbWVudHMocSwg YmlvKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmggYi9pbmNsdWRl L2xpbnV4L2Jsa190eXBlcy5oCmluZGV4IDBmYjY1ODQuLjRmMjJkNWMgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtfdHlw ZXMuaApAQCAtNDgsOSArNDgsMTUgQEAgc3RydWN0IGJpbyB7CiAJc3RydWN0IGJsb2NrX2Rl dmljZQkqYmlfYmRldjsKIAl1bnNpZ25lZCBpbnQJCWJpX2ZsYWdzOwkvKiBzdGF0dXMsIGNv bW1hbmQsIGV0YyAqLwogCWludAkJCWJpX2Vycm9yOwotCXVuc2lnbmVkIGxvbmcJCWJpX3J3 OwkJLyogYm90dG9tIGJpdHMgUkVBRC9XUklURSwKKwl1bnNpZ25lZCBsb25nCQliaV9ydzsJ CS8qIGJvdHRvbSBiaXRzIHJxX2ZsYWdzX2JpdHMKIAkJCQkJCSAqIHRvcCBiaXRzIHByaW9y aXR5CiAJCQkJCQkgKi8KKwkvKgorCSAqIHRoaXMgd2lsbCBiZSBhIHU4IGluIHRoZSBuZXh0 IHBhdGNoZXMgYW5kIGJpX3J3IGNhbiBiZSBzaHJ1bmsgdG8KKwkgKiBhIHUzMi4gRm9yIGNv bXBhdCBpbiB0aGVzZSB0cmFuc2lzdGlvbmFsIHBhdGNoZXMgb3AgaXMgYSBpbnQgaGVyZS4K KwkgKi8KKwlpbnQJCQliaV9vcDsJCS8qIFJFUV9PUCAqLworCiAKIAlzdHJ1Y3QgYnZlY19p dGVyCWJpX2l0ZXI7CiAKQEAgLTI0NCw2ICsyNTAsMTMgQEAgZW51bSBycV9mbGFnX2JpdHMg ewogI2RlZmluZSBSRVFfTVFfSU5GTElHSFQJCSgxVUxMIDw8IF9fUkVRX01RX0lORkxJR0hU KQogI2RlZmluZSBSRVFfTk9fVElNRU9VVAkJKDFVTEwgPDwgX19SRVFfTk9fVElNRU9VVCkK IAorZW51bSByZXFfb3AgeworCVJFUV9PUF9SRUFELAorCVJFUV9PUF9XUklURQkJPSBSRVFf V1JJVEUsCisJUkVRX09QX0RJU0NBUkQJCT0gUkVRX0RJU0NBUkQsCisJUkVRX09QX1dSSVRF X1NBTUUJPSBSRVFfV1JJVEVfU0FNRSwKK307CisKIHR5cGVkZWYgdW5zaWduZWQgaW50IGJs a19xY190OwogI2RlZmluZSBCTEtfUUNfVF9OT05FCS0xVQogI2RlZmluZSBCTEtfUUNfVF9T SElGVAkxNgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibGtkZXYuaCBiL2luY2x1ZGUv bGludXgvYmxrZGV2LmgKaW5kZXggZTcxMWYyOS4uNmZkMzZmOCAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9ibGtkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oCkBAIC05 NSw2ICs5NSw3IEBAIHN0cnVjdCByZXF1ZXN0IHsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cTsKIAlzdHJ1Y3QgYmxrX21xX2N0eCAqbXFfY3R4OwogCisJaW50IG9wOwogCXU2NCBjbWRf ZmxhZ3M7CiAJdW5zaWduZWQgY21kX3R5cGU7CiAJdW5zaWduZWQgbG9uZyBhdG9taWNfZmxh Z3M7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2Zz LmgKaW5kZXggZmZjODUwOC4uNmE1MTYwMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9m cy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjM3NCwxNSArMjM3NCw0OCBAQCBl eHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CiBleHRlcm4gaW50 IGlzX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CiAKICNpZmRlZiBDT05GSUdfQkxPQ0sK Kworc3RhdGljIGlubGluZSBib29sIG9wX2lzX3dyaXRlKGludCBvcCkKK3sKKwlzd2l0Y2gg KG9wKSB7CisJY2FzZSBSRVFfT1BfV1JJVEU6CisJY2FzZSBSRVFfT1BfV1JJVEVfU0FNRToK KwljYXNlIFJFUV9PUF9ESVNDQVJEOgorCQlyZXR1cm4gdHJ1ZTsKKwlkZWZhdWx0OgorCQly ZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogcmV0dXJuIFJFQUQsIFJFQURBLCBvciBX UklURQogICovCi0jZGVmaW5lIGJpb19ydyhiaW8pCQkoKGJpbyktPmJpX3J3ICYgKFJXX01B U0sgfCBSV0FfTUFTSykpCitzdGF0aWMgaW5saW5lIGludCBiaW9fcncoc3RydWN0IGJpbyAq YmlvKQoreworCS8qCisJICogdG1wIGNwbXBhdC4gQWxsb3cgdXNlcnMgdG8gc2V0IGVpdGhl ciBvcCBvciBydywgdW50aWwKKwkgKiBhbGwgY29kZSBpcyBjb252ZXJ0ZWQgaW4gdGhlIG5l eHQgcGF0Y2hlcy4KKwkgKi8KKwlpZiAob3BfaXNfd3JpdGUoYmlvLT5iaV9vcCkpCisJCXJl dHVybiBXUklURTsKKworCXJldHVybiBiaW8tPmJpX3J3ICYgKFJXX01BU0sgfCBSV0FfTUFT Syk7Cit9CiAKIC8qCiAgKiByZXR1cm4gZGF0YSBkaXJlY3Rpb24sIFJFQUQgb3IgV1JJVEUK ICAqLwotI2RlZmluZSBiaW9fZGF0YV9kaXIoYmlvKQkoKGJpbyktPmJpX3J3ICYgMSkKK3N0 YXRpYyBpbmxpbmUgaW50IGJpb19kYXRhX2RpcihzdHJ1Y3QgYmlvICpiaW8pCit7CisJLyoK KwkgKiB0bXAgY3BtcGF0LiBBbGxvdyB1c2VycyB0byBzZXQgZWl0aGVyIG9wIG9yIHJ3LCB1 bnRpbAorCSAqIGFsbCBjb2RlIGlzIGNvbnZlcnRlZCBpbiB0aGUgbmV4dCBwYXRjaGVzLgor CSAqLworCWlmIChvcF9pc193cml0ZShiaW8tPmJpX29wKSkKKwkJcmV0dXJuIFdSSVRFOwor CisJcmV0dXJuIGJpby0+YmlfcncgJiAxOworfQogCiBleHRlcm4gdm9pZCBjaGVja19kaXNr X3NpemVfY2hhbmdlKHN0cnVjdCBnZW5kaXNrICpkaXNrLAogCQkJCSAgIHN0cnVjdCBibG9j a19kZXZpY2UgKmJkZXYpOwotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwNC1ibG9jay1mcy1tbS1kcml2ZXJzLXNldC1iaV9v cC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMzQwMTQAMTI2MzIxNTQyMzAA MDIxMTEwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gZGJjMWJlNzlk YWZkNDRlODk4NzgxNGI5MjRiYzFmYTgyMWRkOWY3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogVHVl LCA4IERlYyAyMDE1IDEyOjU5OjE5IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAwNC8zMF0gYmxv Y2svZnMvbW0vZHJpdmVyczogc2V0IGJpX29wIHRvIFJFUV9PUAoKVGhpcyBwYXRjaCBjb252 ZXJ0cyB0aGUgc2ltcGxlIGJpX3J3IHVzZSBjYXNlcyBpbiB0aGUgYmxvY2ssCmRyaXZlcnMs IG1tIGFuZCBmcyBjb2RlIHRvIHVzZSBiaV9vcCBmb3IgYSBSRVFfT1AgYW5kIGJpX3J3CmZv ciBycV9mbGFnX2JpdHMuCgpUaGVzZSBzaG91bGQgYmUgc2ltcGxlIG9uZSBsaW5lciBjYXNl cywgc28gSSBqdXN0IGRpZCB0aGVtCmluIG9uZSBwYXRjaC4gVGhlIG5leHQgcGF0Y2hlcyBo YW5kbGUgdGhlIG1vcmUgY29tcGxpY2F0ZWQKY2FzZXMgaW4gYSBtb2R1bGUgcGVyIHBhdGNo LgoKU2lnbmVkLW9mZi1ieTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4K LS0tCiBibG9jay9iaW8uYyAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrLS0tCiBi bG9jay9ibGstZmx1c2guYyAgICAgICAgICAgICAgICB8ICAxICsKIGJsb2NrL2Jsay1saWIu YyAgICAgICAgICAgICAgICAgIHwgIDcgKysrKy0tLQogYmxvY2svYmxrLW1hcC5jICAgICAg ICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9mbG9wcHkuYyAgICAgICAgICAg fCAgMiArLQogZHJpdmVycy9ibG9jay9wa3RjZHZkLmMgICAgICAgICAgfCAgNCArKy0tCiBk cml2ZXJzL2xpZ2h0bnZtL3JycGMuYyAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvc2Nz aS9vc2Qvb3NkX2luaXRpYXRvci5jIHwgIDggKysrKy0tLS0KIGZzL2V4b2ZzL29yZS5jICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2V4dDQvY3J5cHRvLmMgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2V4dDQvcGFnZS1pby5jICAgICAgICAgICAgICAgIHwgIDcgKysr Ky0tLQogZnMvZXh0NC9yZWFkcGFnZS5jICAgICAgICAgICAgICAgfCAgMiArLQogZnMvamZz L2pmc19sb2dtZ3IuYyAgICAgICAgICAgICAgfCAgMiArKwogZnMvamZzL2pmc19tZXRhcGFn ZS5jICAgICAgICAgICAgfCAgNCArKy0tCiBmcy9sb2dmcy9kZXZfYmRldi5jICAgICAgICAg ICAgICB8IDEyICsrKysrKy0tLS0tLQogZnMvbmZzL2Jsb2NrbGF5b3V0L2Jsb2NrbGF5b3V0 LmMgfCAgMiArLQogbW0vcGFnZV9pby5jICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0t CiAxNyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jCmluZGV4IDkyMTExMmIu LjNiOGU5NzAgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jpby5jCisrKyBiL2Jsb2NrL2Jpby5jCkBA IC01ODEsNiArNTgxLDcgQEAgdm9pZCBfX2Jpb19jbG9uZV9mYXN0KHN0cnVjdCBiaW8gKmJp bywgc3RydWN0IGJpbyAqYmlvX3NyYykKIAkgKi8KIAliaW8tPmJpX2JkZXYgPSBiaW9fc3Jj LT5iaV9iZGV2OwogCWJpb19zZXRfZmxhZyhiaW8sIEJJT19DTE9ORUQpOworCWJpby0+Ymlf b3AgPSBiaW9fc3JjLT5iaV9vcDsKIAliaW8tPmJpX3J3ID0gYmlvX3NyYy0+Ymlfcnc7CiAJ YmlvLT5iaV9pdGVyID0gYmlvX3NyYy0+YmlfaXRlcjsKIAliaW8tPmJpX2lvX3ZlYyA9IGJp b19zcmMtPmJpX2lvX3ZlYzsKQEAgLTY2Myw2ICs2NjQsNyBAQCBzdHJ1Y3QgYmlvICpiaW9f Y2xvbmVfYmlvc2V0KHN0cnVjdCBiaW8gKmJpb19zcmMsIGdmcF90IGdmcF9tYXNrLAogCQly ZXR1cm4gTlVMTDsKIAogCWJpby0+YmlfYmRldgkJPSBiaW9fc3JjLT5iaV9iZGV2OworCWJp by0+Ymlfb3AJCT0gYmlvX3NyYy0+Ymlfb3A7CiAJYmlvLT5iaV9ydwkJPSBiaW9fc3JjLT5i aV9ydzsKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gYmlvX3NyYy0+YmlfaXRlci5iaV9z ZWN0b3I7CiAJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3Np emU7CkBAIC0xMTY4LDcgKzExNzAsNyBAQCBzdHJ1Y3QgYmlvICpiaW9fY29weV91c2VyX2lv dihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwKIAkJZ290byBvdXRfYm1kOwogCiAJaWYgKGl0 ZXItPnR5cGUgJiBXUklURSkKLQkJYmlvLT5iaV9ydyB8PSBSRVFfV1JJVEU7CisJCWJpby0+ Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAKIAlyZXQgPSAwOwogCkBAIC0xMzM4LDcgKzEzNDAs NyBAQCBzdHJ1Y3QgYmlvICpiaW9fbWFwX3VzZXJfaW92KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLAogCSAqIHNldCBkYXRhIGRpcmVjdGlvbiwgYW5kIGNoZWNrIGlmIG1hcHBlZCBwYWdl cyBuZWVkIGJvdW5jaW5nCiAJICovCiAJaWYgKGl0ZXItPnR5cGUgJiBXUklURSkKLQkJYmlv LT5iaV9ydyB8PSBSRVFfV1JJVEU7CisJCWJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAK IAliaW9fc2V0X2ZsYWcoYmlvLCBCSU9fVVNFUl9NQVBQRUQpOwogCkBAIC0xNTMxLDcgKzE1 MzMsNyBAQCBzdHJ1Y3QgYmlvICpiaW9fY29weV9rZXJuKHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLAogCQliaW8tPmJpX3ByaXZhdGUg PSBkYXRhOwogCX0gZWxzZSB7CiAJCWJpby0+YmlfZW5kX2lvID0gYmlvX2NvcHlfa2Vybl9l bmRpbzsKLQkJYmlvLT5iaV9ydyB8PSBSRVFfV1JJVEU7CisJCWJpby0+Ymlfb3AgPSBSRVFf T1BfV1JJVEU7CiAJfQogCiAJcmV0dXJuIGJpbzsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1m bHVzaC5jIGIvYmxvY2svYmxrLWZsdXNoLmMKaW5kZXggZTA5MmUxMy4uMzg2ZjU3YSAxMDA2 NDQKLS0tIGEvYmxvY2svYmxrLWZsdXNoLmMKKysrIGIvYmxvY2svYmxrLWZsdXNoLmMKQEAg LTQ4NCw2ICs0ODQsNyBAQCBpbnQgYmxrZGV2X2lzc3VlX2ZsdXNoKHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYsIGdmcF90IGdmcF9tYXNrLAogCiAJYmlvID0gYmlvX2FsbG9jKGdmcF9t YXNrLCAwKTsKIAliaW8tPmJpX2JkZXYgPSBiZGV2OworCWJpby0+Ymlfb3AgPSBSRVFfT1Bf V1JJVEU7CiAJYmlvLT5iaV9ydyB8PSBXUklURV9GTFVTSDsKIAogCXJldCA9IHN1Ym1pdF9i aW9fd2FpdChiaW8pOwpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxpYi5jIGIvYmxvY2svYmxr LWxpYi5jCmluZGV4IDUyOTJlMzAuLjVjNTU4MTcgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1s aWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTQyLDcgKzQyLDcgQEAgaW50IGJsa2Rl dl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNl Y3RvciwKIHsKIAlERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyh3YWl0KTsKIAlzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotCWludCB0eXBlID0g UkVRX1dSSVRFIHwgUkVRX0RJU0NBUkQ7CisJaW50IHR5cGUgPSAwOwogCXVuc2lnbmVkIGlu dCBncmFudWxhcml0eTsKIAlpbnQgYWxpZ25tZW50OwogCXN0cnVjdCBiaW9fYmF0Y2ggYmI7 CkBAIC0xMDIsNiArMTAyLDcgQEAgaW50IGJsa2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBi bG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJYmlvLT5iaV9lbmRfaW8g PSBiaW9fYmF0Y2hfZW5kX2lvOwogCQliaW8tPmJpX2JkZXYgPSBiZGV2OwogCQliaW8tPmJp X3ByaXZhdGUgPSAmYmI7CisJCWJpby0+Ymlfb3AgPSBSRVFfT1BfRElTQ0FSRDsKIAkJYmlv LT5iaV9ydyB8PSB0eXBlOwogCiAJCWJpby0+YmlfaXRlci5iaV9zaXplID0gcmVxX3NlY3Rz IDw8IDk7CkBAIC0xNzgsNyArMTc5LDcgQEAgaW50IGJsa2Rldl9pc3N1ZV93cml0ZV9zYW1l KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJYmlvLT5i aV9pb192ZWMtPmJ2X3BhZ2UgPSBwYWdlOwogCQliaW8tPmJpX2lvX3ZlYy0+YnZfb2Zmc2V0 ID0gMDsKIAkJYmlvLT5iaV9pb192ZWMtPmJ2X2xlbiA9IGJkZXZfbG9naWNhbF9ibG9ja19z aXplKGJkZXYpOwotCQliaW8tPmJpX3J3IHw9IFJFUV9XUklURSB8IFJFUV9XUklURV9TQU1F OworCQliaW8tPmJpX29wID0gUkVRX09QX1dSSVRFX1NBTUU7CiAKIAkJaWYgKG5yX3NlY3Rz ID4gbWF4X3dyaXRlX3NhbWVfc2VjdG9ycykgewogCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUg PSBtYXhfd3JpdGVfc2FtZV9zZWN0b3JzIDw8IDk7CkBAIC0yNDAsNyArMjQxLDcgQEAgc3Rh dGljIGludCBfX2Jsa2Rldl9pc3N1ZV96ZXJvb3V0KHN0cnVjdCBibG9ja19kZXZpY2UgKmJk ZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJYmlvLT5iaV9iZGV2ICAgPSBiZGV2OwogCQliaW8t PmJpX2VuZF9pbyA9IGJpb19iYXRjaF9lbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZi YjsKLQkJYmlvLT5iaV9ydyB8PSBXUklURTsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklU RTsKIAogCQl3aGlsZSAobnJfc2VjdHMgIT0gMCkgewogCQkJc3ogPSBtaW4oKHNlY3Rvcl90 KSBQQUdFX1NJWkUgPj4gOSAsIG5yX3NlY3RzKTsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1t YXAuYyBiL2Jsb2NrL2Jsay1tYXAuYwppbmRleCBmNTY1ZTExLi45MDIxYThmIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbWFwLmMKKysrIGIvYmxvY2svYmxrLW1hcC5jCkBAIC0yMjQsNyAr MjI0LDcgQEAgaW50IGJsa19ycV9tYXBfa2VybihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwg c3RydWN0IHJlcXVlc3QgKnJxLCB2b2lkICprYnVmLAogCQlyZXR1cm4gUFRSX0VSUihiaW8p OwogCiAJaWYgKCFyZWFkaW5nKQotCQliaW8tPmJpX3J3IHw9IFJFUV9XUklURTsKKwkJYmlv LT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAogCWlmIChkb19jb3B5KQogCQlycS0+Y21kX2Zs YWdzIHw9IFJFUV9DT1BZX1VTRVI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Zsb3Bw eS5jIGIvZHJpdmVycy9ibG9jay9mbG9wcHkuYwppbmRleCAzYjE0MDRjLi5lNGY0YWRiIDEw MDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCisrKyBiL2RyaXZlcnMvYmxvY2sv ZmxvcHB5LmMKQEAgLTM4MTYsNyArMzgxNiw3IEBAIHN0YXRpYyBpbnQgX19mbG9wcHlfcmVh ZF9ibG9ja18wKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBkcml2ZSkKIAliaW8u YmlfZmxhZ3MgfD0gKDEgPDwgQklPX1FVSUVUKTsKIAliaW8uYmlfcHJpdmF0ZSA9ICZjYmRh dGE7CiAJYmlvLmJpX2VuZF9pbyA9IGZsb3BweV9yYjBfY2I7Ci0JYmlvLmJpX3J3IHw9IFJF QUQ7CisJYmlvLmJpX29wID0gUkVRX09QX1JFQUQ7CiAKIAlzdWJtaXRfYmlvKCZiaW8pOwog CXByb2Nlc3NfZmRfcmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9wa3Rj ZHZkLmMgYi9kcml2ZXJzL2Jsb2NrL3BrdGNkdmQuYwppbmRleCBkMDZjNjJlLi5hNGVjYmQz IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3BrdGNkdmQuYworKysgYi9kcml2ZXJzL2Js b2NrL3BrdGNkdmQuYwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgc3RhdGljIHZvaWQgcGt0X2dh dGhlcl9kYXRhKHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQsIHN0cnVjdCBwYWNrZXRfZGF0 YSAqcGt0KQogCQkJQlVHKCk7CiAKIAkJYXRvbWljX2luYygmcGt0LT5pb193YWl0KTsKLQkJ YmlvLT5iaV9ydyA9IFJFQUQ7CisJCWJpby0+Ymlfb3AgPSBSRVFfT1BfUkVBRDsKIAkJcGt0 X3F1ZXVlX2JpbyhwZCwgYmlvKTsKIAkJZnJhbWVzX3JlYWQrKzsKIAl9CkBAIC0xMzM2LDcg KzEzMzYsNyBAQCBzdGF0aWMgdm9pZCBwa3Rfc3RhcnRfd3JpdGUoc3RydWN0IHBrdGNkdmRf ZGV2aWNlICpwZCwgc3RydWN0IHBhY2tldF9kYXRhICpwa3QpCiAKIAkvKiBTdGFydCB0aGUg d3JpdGUgcmVxdWVzdCAqLwogCWF0b21pY19zZXQoJnBrdC0+aW9fd2FpdCwgMSk7Ci0JcGt0 LT53X2Jpby0+YmlfcncgPSBXUklURTsKKwlwa3QtPndfYmlvLT5iaV9vcCA9IFJFUV9PUF9X UklURTsKIAlwa3RfcXVldWVfYmlvKHBkLCBwa3QtPndfYmlvKTsKIH0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9saWdodG52bS9ycnBjLmMgYi9kcml2ZXJzL2xpZ2h0bnZtL3JycGMuYwpp bmRleCA3NWU1OWMzLi4xYjFmZmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3Jy cGMuYworKysgYi9kcml2ZXJzL2xpZ2h0bnZtL3JycGMuYwpAQCAtMzAxLDcgKzMwMSw3IEBA IHRyeToKIAogCQkvKiBQZXJmb3JtIHJlYWQgdG8gZG8gR0MgKi8KIAkJYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA9IHJycGNfZ2V0X3NlY3RvcihyZXYtPmFkZHIpOwotCQliaW8tPmJpX3J3 ID0gUkVBRDsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOwogCQliaW8tPmJpX3ByaXZh dGUgPSAmd2FpdDsKIAkJYmlvLT5iaV9lbmRfaW8gPSBycnBjX2VuZF9zeW5jX2JpbzsKIApA QCAtMzE5LDcgKzMxOSw3IEBAIHRyeToKIAkJcmVpbml0X2NvbXBsZXRpb24oJndhaXQpOwog CiAJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBycnBjX2dldF9zZWN0b3IocmV2LT5hZGRy KTsKLQkJYmlvLT5iaV9ydyA9IFdSSVRFOworCQliaW8tPmJpX29wID0gUkVRX09QX1dSSVRF OwogCQliaW8tPmJpX3ByaXZhdGUgPSAmd2FpdDsKIAkJYmlvLT5iaV9lbmRfaW8gPSBycnBj X2VuZF9zeW5jX2JpbzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL29zZC9vc2RfaW5p dGlhdG9yLmMgYi9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3IuYwppbmRleCA2ZDQ1 ODI1Li5iNTViZTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0 b3IuYworKysgYi9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3IuYwpAQCAtNzI5LDcg KzcyOSw3IEBAIHN0YXRpYyBpbnQgX29zZF9yZXFfbGlzdF9vYmplY3RzKHN0cnVjdCBvc2Rf cmVxdWVzdCAqb3IsCiAJCXJldHVybiBQVFJfRVJSKGJpbyk7CiAJfQogCi0JYmlvLT5iaV9y dyAmPSB+UkVRX1dSSVRFOworCWJpby0+Ymlfb3AgPSBSRVFfT1BfUkVBRDsKIAlvci0+aW4u YmlvID0gYmlvOwogCW9yLT5pbi50b3RhbF9ieXRlcyA9IGJpby0+YmlfaXRlci5iaV9zaXpl OwogCXJldHVybiAwOwpAQCAtODQyLDcgKzg0Miw3IEBAIGludCBvc2RfcmVxX3dyaXRlX2tl cm4oc3RydWN0IG9zZF9yZXF1ZXN0ICpvciwKIAlpZiAoSVNfRVJSKGJpbykpCiAJCXJldHVy biBQVFJfRVJSKGJpbyk7CiAKLQliaW8tPmJpX3J3IHw9IFJFUV9XUklURTsgLyogRklYTUU6 IGJpb19zZXRfZGlyKCkgKi8KKwliaW8tPmJpX29wID0gUkVRX09QX1dSSVRFOwogCW9zZF9y ZXFfd3JpdGUob3IsIG9iaiwgb2Zmc2V0LCBiaW8sIGxlbik7CiAJcmV0dXJuIDA7CiB9CkBA IC05NTksNyArOTU5LDcgQEAgc3RhdGljIGludCBfb3NkX3JlcV9maW5hbGl6ZV9jZGJfY29u dChzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9yLCBjb25zdCB1OCAqY2FwX2tleSkKIAlpZiAoSVNf RVJSKGJpbykpCiAJCXJldHVybiBQVFJfRVJSKGJpbyk7CiAKLQliaW8tPmJpX3J3IHw9IFJF UV9XUklURTsKKwliaW8tPmJpX29wID0gUkVRX09QX1dSSVRFOwogCiAJLyogaW50ZWdyaXR5 IGNoZWNrIHRoZSBjb250aW51YXRpb24gYmVmb3JlIHRoZSBiaW8gaXMgbGlua2VkCiAJICog d2l0aCB0aGUgb3RoZXIgZGF0YSBzZWdtZW50cyBzaW5jZSB0aGUgY29udGludWF0aW9uCkBA IC0xMDgwLDcgKzEwODAsNyBAQCBpbnQgb3NkX3JlcV93cml0ZV9zZ19rZXJuKHN0cnVjdCBv c2RfcmVxdWVzdCAqb3IsCiAJaWYgKElTX0VSUihiaW8pKQogCQlyZXR1cm4gUFRSX0VSUihi aW8pOwogCi0JYmlvLT5iaV9ydyB8PSBSRVFfV1JJVEU7CisJYmlvLT5iaV9vcCA9IFJFUV9P UF9XUklURTsKIAlvc2RfcmVxX3dyaXRlX3NnKG9yLCBvYmosIGJpbywgc2dsaXN0LCBudW1l bnRyaWVzKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZnMvZXhvZnMvb3JlLmMgYi9m cy9leG9mcy9vcmUuYwppbmRleCA3YmQ4YWM4Li5jNDBlZDc0IDEwMDY0NAotLS0gYS9mcy9l eG9mcy9vcmUuYworKysgYi9mcy9leG9mcy9vcmUuYwpAQCAtODc4LDcgKzg3OCw3IEBAIHN0 YXRpYyBpbnQgX3dyaXRlX21pcnJvcihzdHJ1Y3Qgb3JlX2lvX3N0YXRlICppb3MsIGludCBj dXJfY29tcCkKIAkJCX0gZWxzZSB7CiAJCQkJYmlvID0gbWFzdGVyX2Rldi0+YmlvOwogCQkJ CS8qIEZJWE1FOiBiaW9fc2V0X2RpcigpICovCi0JCQkJYmlvLT5iaV9ydyB8PSBSRVFfV1JJ VEU7CisJCQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJCX0KIAogCQkJb3NkX3Jl cV93cml0ZShvciwgX2lvc19vYmooaW9zLCBjdXJfY29tcCksCmRpZmYgLS1naXQgYS9mcy9l eHQ0L2NyeXB0by5jIGIvZnMvZXh0NC9jcnlwdG8uYwppbmRleCAzMmRmYjNkLi42YmQ5NWE0 IDEwMDY0NAotLS0gYS9mcy9leHQ0L2NyeXB0by5jCisrKyBiL2ZzL2V4dDQvY3J5cHRvLmMK QEAgLTQyNiw3ICs0MjYsNyBAQCBpbnQgZXh0NF9lbmNyeXB0ZWRfemVyb291dChzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9leHRlbnQgKmV4KQogCQliaW8tPmJpX2JkZXYg PSBpbm9kZS0+aV9zYi0+c19iZGV2OwogCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0KIAkJ CXBibGsgPDwgKGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZV9iaXRzIC0gOSk7Ci0JCWJpby0+ YmlfcncgfD0gV1JJVEU7CisJCWJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCXJldCA9 IGJpb19hZGRfcGFnZShiaW8sIGNpcGhlcnRleHRfcGFnZSwKIAkJCQkgICBpbm9kZS0+aV9z Yi0+c19ibG9ja3NpemUsIDApOwogCQlpZiAocmV0ICE9IGlub2RlLT5pX3NiLT5zX2Jsb2Nr c2l6ZSkgewpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9wYWdlLWlvLmMgYi9mcy9leHQ0L3BhZ2Ut aW8uYwppbmRleCA4NmJiNjBiYS4uZTM2ZGVjNCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdl LWlvLmMKKysrIGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTM1NCwxMCArMzU0LDExIEBAIHZv aWQgZXh0NF9pb19zdWJtaXQoc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbykKIAlzdHJ1Y3Qg YmlvICpiaW8gPSBpby0+aW9fYmlvOwogCiAJaWYgKGJpbykgewotCQlpbnQgaW9fb3AgPSBp by0+aW9fd2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwgPwotCQkJICAgIFdSSVRFX1NZ TkMgOiBXUklURTsKKwkJaW50IGlvX29wX2ZsYWdzID0gaW8tPmlvX3diYy0+c3luY19tb2Rl ID09IFdCX1NZTkNfQUxMID8gV1JJVEVfU1lOQyA6IDA7CisKIAkJYmlvX2dldChpby0+aW9f YmlvKTsKLQkJaW8tPmlvX2Jpby0+YmlfcncgfD0gaW9fb3A7CisJCWlvLT5pb19iaW8tPmJp X29wID0gUkVRX09QX1dSSVRFOworCQlpby0+aW9fYmlvLT5iaV9ydyB8PSBpb19vcF9mbGFn czsKIAkJc3VibWl0X2Jpbyhpby0+aW9fYmlvKTsKIAkJYmlvX3B1dChpby0+aW9fYmlvKTsK IAl9CmRpZmYgLS1naXQgYS9mcy9leHQ0L3JlYWRwYWdlLmMgYi9mcy9leHQ0L3JlYWRwYWdl LmMKaW5kZXggNzcyZTQwYi4uZmIzNjQzNCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9yZWFkcGFn ZS5jCisrKyBiL2ZzL2V4dDQvcmVhZHBhZ2UuYwpAQCAtMjk0LDcgKzI5NCw3IEBAIGludCBl eHQ0X21wYWdlX3JlYWRwYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAkJ CWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBibG9ja3NbMF0gPDwgKGJsa2JpdHMgLSA5KTsK IAkJCWJpby0+YmlfZW5kX2lvID0gbXBhZ2VfZW5kX2lvOwogCQkJYmlvLT5iaV9wcml2YXRl ID0gY3R4OwotCQkJYmlvLT5iaV9ydyB8PSBSRUFEOworCQkJYmlvLT5iaV9vcCA9IFJFUV9P UF9SRUFEOwogCQl9CiAKIAkJbGVuZ3RoID0gZmlyc3RfaG9sZSA8PCBibGtiaXRzOwpkaWZm IC0tZ2l0IGEvZnMvamZzL2pmc19sb2dtZ3IuYyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmMKaW5k ZXggN2E5NWIzMS4uZjNiNjZhMSAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc19sb2dtZ3IuYwor KysgYi9mcy9qZnMvamZzX2xvZ21nci5jCkBAIC0yMDA1LDYgKzIwMDUsNyBAQCBzdGF0aWMg aW50IGxibVJlYWQoc3RydWN0IGpmc19sb2cgKiBsb2csIGludCBwbiwgc3RydWN0IGxidWYg KiogYnBwKQogCiAJYmlvLT5iaV9lbmRfaW8gPSBsYm1JT0RvbmU7CiAJYmlvLT5iaV9wcml2 YXRlID0gYnA7CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOwogCWJpby0+YmlfcncgfD0g UkVBRF9TWU5DOwogCS8qY2hlY2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRp c2FibGVkKi8KIAlpZiAobG9nLT5ub19pbnRlZ3JpdHkpIHsKQEAgLTIxNDksNiArMjE1MCw3 IEBAIHN0YXRpYyB2b2lkIGxibVN0YXJ0SU8oc3RydWN0IGxidWYgKiBicCkKIAogCWJpby0+ YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOworCWJpby0+ Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJYmlvLT5iaV9ydyB8PSBXUklURV9TWU5DOwogCiAJ LyogY2hlY2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRpc2FibGVkICovCmRp ZmYgLS1naXQgYS9mcy9qZnMvamZzX21ldGFwYWdlLmMgYi9mcy9qZnMvamZzX21ldGFwYWdl LmMKaW5kZXggYjViNzZhNS4uMTE1ZDk5ZSAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc19tZXRh cGFnZS5jCisrKyBiL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuYwpAQCAtNDM0LDcgKzQzNCw3IEBA IHN0YXRpYyBpbnQgbWV0YXBhZ2Vfd3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1 Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9 IHBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQliaW8tPmJpX2VuZF9pbyA9 IG1ldGFwYWdlX3dyaXRlX2VuZF9pbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gcGFnZTsKLQkJ YmlvLT5iaV9ydyB8PSBXUklURTsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAog CQkvKiBEb24ndCBjYWxsIGJpb19hZGRfcGFnZSB5ZXQsIHdlIG1heSBhZGQgdG8gdGhpcyB2 ZWMgKi8KIAkJYmlvX29mZnNldCA9IG9mZnNldDsKQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0 aWMgaW50IG1ldGFwYWdlX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IHBhZ2Ug KnBhZ2UpCiAJCQkJcGJsb2NrIDw8IChpbm9kZS0+aV9ibGtiaXRzIC0gOSk7CiAJCQliaW8t PmJpX2VuZF9pbyA9IG1ldGFwYWdlX3JlYWRfZW5kX2lvOwogCQkJYmlvLT5iaV9wcml2YXRl ID0gcGFnZTsKLQkJCWJpby0+YmlfcncgfD0gUkVBRDsKKwkJCWJpby0+Ymlfb3AgPSBSRVFf T1BfUkVBRDsKIAkJCWxlbiA9IHhsZW4gPDwgaW5vZGUtPmlfYmxrYml0czsKIAkJCW9mZnNl dCA9IGJsb2NrX29mZnNldCA8PCBpbm9kZS0+aV9ibGtiaXRzOwogCQkJaWYgKGJpb19hZGRf cGFnZShiaW8sIHBhZ2UsIGxlbiwgb2Zmc2V0KSA8IGxlbikKZGlmZiAtLWdpdCBhL2ZzL2xv Z2ZzL2Rldl9iZGV2LmMgYi9mcy9sb2dmcy9kZXZfYmRldi5jCmluZGV4IDYyM2RkM2UuLjEz MGI3ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2xvZ2ZzL2Rldl9iZGV2LmMKKysrIGIvZnMvbG9nZnMv ZGV2X2JkZXYuYwpAQCAtMTQsNyArMTQsNyBAQAogCiAjZGVmaW5lIFBBR0VfT0ZTKG9mcykg KChvZnMpICYgKFBBR0VfU0laRS0xKSkKIAotc3RhdGljIGludCBzeW5jX3JlcXVlc3Qoc3Ry dWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykKK3N0 YXRpYyBpbnQgc3luY19yZXF1ZXN0KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiZGV2LCBpbnQgb3ApCiB7CiAJc3RydWN0IGJpbyBiaW87CiAJc3RydWN0IGJp b192ZWMgYmlvX3ZlYzsKQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGludCBzeW5jX3JlcXVl c3Qoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBy dykKIAliaW8uYmlfYmRldiA9IGJkZXY7CiAJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFn ZS0+aW5kZXggKiAoUEFHRV9TSVpFID4+IDkpOwogCWJpby5iaV9pdGVyLmJpX3NpemUgPSBQ QUdFX1NJWkU7Ci0JYmlvLmJpX3J3IHw9IHJ3OworCWJpby5iaV9vcCA9IG9wOwogCiAJcmV0 dXJuIHN1Ym1pdF9iaW9fd2FpdCgmYmlvKTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj IGludCBfX2JkZXZfd3JpdGVzZWcoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTY0IG9mcywg cGdvZmZfdCBpbmRleCwKIAkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBvZnMgPj4gOTsK IAkJCWJpby0+YmlfcHJpdmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSB3cml0ZXNl Z19lbmRfaW87Ci0JCQliaW8tPmJpX3J3IHw9IFdSSVRFOworCQkJYmlvLT5iaV9vcCA9IFJF UV9PUF9XUklURTsKIAkJCWF0b21pY19pbmMoJnN1cGVyLT5zX3BlbmRpbmdfd3JpdGVzKTsK IAkJCXN1Ym1pdF9iaW8oYmlvKTsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBpbnQg X19iZGV2X3dyaXRlc2VnKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2Zm X3QgaW5kZXgsCiAJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IG9mcyA+PiA5OwogCWJpby0+ YmlfcHJpdmF0ZSA9IHNiOwogCWJpby0+YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOwot CWJpby0+YmlfcncgfD0gV1JJVEU7CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAlh dG9taWNfaW5jKCZzdXBlci0+c19wZW5kaW5nX3dyaXRlcyk7CiAJc3VibWl0X2JpbyhiaW8p OwogCXJldHVybiAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAkJCWJp by0+YmlfaXRlci5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9 IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87Ci0JCQliaW8tPmJpX3J3 IHw9IFdSSVRFOworCQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJCWF0b21pY19p bmMoJnN1cGVyLT5zX3BlbmRpbmdfd3JpdGVzKTsKIAkJCXN1Ym1pdF9iaW8oYmlvKTsKIApA QCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgdTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yID0gb2ZzID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRf aW8gPSBlcmFzZV9lbmRfaW87Ci0JYmlvLT5iaV9ydyB8PSBXUklURTsKKwliaW8tPmJpX29w ID0gUkVRX09QX1dSSVRFOwogCWF0b21pY19pbmMoJnN1cGVyLT5zX3BlbmRpbmdfd3JpdGVz KTsKIAlzdWJtaXRfYmlvKGJpbyk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9mcy9uZnMv YmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuYyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xh eW91dC5jCmluZGV4IGJiOGQ2MjkuLjM4MzI5MDkgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9ibG9j a2xheW91dC9ibG9ja2xheW91dC5jCisrKyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xh eW91dC5jCkBAIC0xNzUsNyArMTc1LDcgQEAgcmV0cnk6CiAJCQkJZGlza19hZGRyID4+IFNF Q1RPUl9TSElGVCwgZW5kX2lvLCBwYXIpOwogCQlpZiAoIWJpbykKIAkJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwotCQliaW8tPmJpX3J3IHw9IHJ3OworCQliaW8tPmJpX29wID0gcnc7 CiAJfQogCWlmIChiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCAqbGVuLCBvZmZzZXQpIDwgKmxl bikgewogCQliaW8gPSBibF9zdWJtaXRfYmlvKGJpbyk7CmRpZmYgLS1naXQgYS9tbS9wYWdl X2lvLmMgYi9tbS9wYWdlX2lvLmMKaW5kZXggODQxMGNkYi4uZTQ4Yjg0YyAxMDA2NDQKLS0t IGEvbW0vcGFnZV9pby5jCisrKyBiL21tL3BhZ2VfaW8uYwpAQCAtMzExLDcgKzMxMSw3IEBA IGludCBfX3N3YXBfd3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGVi YWNrX2NvbnRyb2wgKndiYywKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CiAJfQot CWJpby0+YmlfcncgfD0gV1JJVEU7CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAlp ZiAod2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwpCiAJCWJpby0+YmlfcncgfD0gUkVR X1NZTkM7CiAJY291bnRfdm1fZXZlbnQoUFNXUE9VVCk7CkBAIC0zNTksNyArMzU5LDcgQEAg aW50IHN3YXBfcmVhZHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCiAJCXJldCA9IC1FTk9NRU07 CiAJCWdvdG8gb3V0OwogCX0KLQliaW8tPmJpX3J3IHw9IFJFQUQ7CisJYmlvLT5iaV9vcCA9 IFJFUV9PUF9SRUFEOwogCWNvdW50X3ZtX2V2ZW50KFBTV1BJTik7CiAJc3VibWl0X2Jpbyhi aW8pOwogb3V0OgotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwNS1mcy1o YXZlLXN1Ym1pdF9iaC11c2Vycy1wYXNzLWluLW9wLWFuZC1mbGFncy1zZXBhcmF0LnBhdGNo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEA MDAwMDAxMDEyNTEAMTI2MzIxNTQyMzAAMDIzNzE3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAEZyb20gN2Y2ZTBmYTAyNGNjY2M3YTM1MjBjMTI0Y2M2Y2U5NWZhMzZmMmQ4 ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlz dGlAcmVkaGF0LmNvbT4KRGF0ZTogVHVlLCA4IERlYyAyMDE1IDE0OjMxOjA0IC0wNjAwClN1 YmplY3Q6IFtQQVRDSCAwNS8zMF0gZnM6IGhhdmUgc3VibWl0X2JoIHVzZXJzIHBhc3MgaW4g b3AgYW5kIGZsYWdzCiBzZXBhcmF0ZWx5CgpUaGlzIGhhcyBzdWJtaXRfYmggdXNlcnMgcGFz cyBpbiB0aGUgb3BlcmF0aW9uIGFuZCBmbGFncyBzZXBhcmF0ZWx5LApzbyB3ZSBjYW4gc2V0 dXAgdGhlIGJpby0+Ymlfb3AgYW5kIGJpby1iaV9ydyBmbGFncy4KClNpZ25lZC1vZmYtYnk6 IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9tZC9i aXRtYXAuYyAgICAgICAgIHwgIDQgKystLQogZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMg IHwgMjQgKysrKysrKysrLS0tLS0tLS0tLQogZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5Lmgg IHwgIDIgKy0KIGZzL2J0cmZzL2Rpc2staW8uYyAgICAgICAgICB8ICA0ICsrLS0KIGZzL2J1 ZmZlci5jICAgICAgICAgICAgICAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogZnMvZXh0NC9iYWxsb2MuYyAgICAgICAgICAgIHwgIDIg Ky0KIGZzL2V4dDQvaWFsbG9jLmMgICAgICAgICAgICB8ICAyICstCiBmcy9leHQ0L2lub2Rl LmMgICAgICAgICAgICAgfCAgMiArLQogZnMvZXh0NC9tbXAuYyAgICAgICAgICAgICAgIHwg IDQgKystLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2ZhdC9t aXNjLmMgICAgICAgICAgICAgICB8ICAyICstCiBmcy9nZnMyL2JtYXAuYyAgICAgICAgICAg ICAgfCAgMiArLQogZnMvZ2ZzMi9kaXIuYyAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2dm czIvbWV0YV9pby5jICAgICAgICAgICB8ICA4ICsrKy0tLS0KIGZzL2piZDIvY29tbWl0LmMg ICAgICAgICAgICB8ICA2ICsrLS0tCiBmcy9qYmQyL2pvdXJuYWwuYyAgICAgICAgICAgfCAg OCArKystLS0tCiBmcy9uaWxmczIvYnRub2RlLmMgICAgICAgICAgfCAgNiArKy0tLQogZnMv bmlsZnMyL2J0bm9kZS5oICAgICAgICAgIHwgIDIgKy0KIGZzL25pbGZzMi9idHJlZS5jICAg ICAgICAgICB8ICA2ICsrKy0tCiBmcy9uaWxmczIvZ2Npbm9kZS5jICAgICAgICAgfCAgNSAr Ky0tCiBmcy9uaWxmczIvbWR0LmMgICAgICAgICAgICAgfCAxMSArKysrKy0tLS0KIGZzL25p bGZzMi9zdXBlci5jICAgICAgICAgICB8ICA0ICsrLS0KIGZzL250ZnMvYW9wcy5jICAgICAg ICAgICAgICB8ICA2ICsrLS0tCiBmcy9udGZzL2NvbXByZXNzLmMgICAgICAgICAgfCAgMiAr LQogZnMvbnRmcy9maWxlLmMgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL250ZnMvbG9nZmls ZS5jICAgICAgICAgICB8ICAyICstCiBmcy9udGZzL21mdC5jICAgICAgICAgICAgICAgfCAg NCArKy0tCiBmcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jICAgfCAgOCArKystLS0tCiBmcy9y ZWlzZXJmcy9pbm9kZS5jICAgICAgICAgfCAgNCArKy0tCiBmcy9yZWlzZXJmcy9qb3VybmFs LmMgICAgICAgfCAxMiArKysrKystLS0tCiBmcy91ZnMvdXRpbC5jICAgICAgICAgICAgICAg fCAgMiArLQogaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oIHwgIDkgKysrKy0tLS0KIDMy IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iaXRtYXAuYyBiL2RyaXZlcnMvbWQvYml0bWFwLmMK aW5kZXggNGYyMmU5MS4uMTM4MTFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iaXRtYXAu YworKysgYi9kcml2ZXJzL21kL2JpdG1hcC5jCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGlj IHZvaWQgd3JpdGVfcGFnZShzdHJ1Y3QgYml0bWFwICpiaXRtYXAsIHN0cnVjdCBwYWdlICpw YWdlLCBpbnQgd2FpdCkKIAkJCWF0b21pY19pbmMoJmJpdG1hcC0+cGVuZGluZ193cml0ZXMp OwogCQkJc2V0X2J1ZmZlcl9sb2NrZWQoYmgpOwogCQkJc2V0X2J1ZmZlcl9tYXBwZWQoYmgp OwotCQkJc3VibWl0X2JoKFdSSVRFIHwgUkVRX1NZTkMsIGJoKTsKKwkJCXN1Ym1pdF9iaChS RVFfT1BfV1JJVEUsIFJFUV9TWU5DLCBiaCk7CiAJCQliaCA9IGJoLT5iX3RoaXNfcGFnZTsK IAkJfQogCkBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCByZWFkX3BhZ2Uoc3RydWN0 IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgsCiAJCQlhdG9taWNfaW5jKCZiaXRt YXAtPnBlbmRpbmdfd3JpdGVzKTsKIAkJCXNldF9idWZmZXJfbG9ja2VkKGJoKTsKIAkJCXNl dF9idWZmZXJfbWFwcGVkKGJoKTsKLQkJCXN1Ym1pdF9iaChSRUFELCBiaCk7CisJCQlzdWJt aXRfYmgoUkVRX09QX1JFQUQsIDAsIGJoKTsKIAkJfQogCQlibG9jaysrOwogCQliaCA9IGJo LT5iX3RoaXNfcGFnZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5j IGIvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMKaW5kZXggNzcxNzA0My4uNGQ1NDU5MyAx MDA2NDQKLS0tIGEvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMKKysrIGIvZnMvYnRyZnMv Y2hlY2staW50ZWdyaXR5LmMKQEAgLTI4OTgsMTIgKzI4OTgsMTIgQEAgc3RhdGljIHN0cnVj dCBidHJmc2ljX2Rldl9zdGF0ZSAqYnRyZnNpY19kZXZfc3RhdGVfbG9va3VwKAogCXJldHVy biBkczsKIH0KIAotaW50IGJ0cmZzaWNfc3VibWl0X2JoKGludCBydywgc3RydWN0IGJ1ZmZl cl9oZWFkICpiaCkKK2ludCBidHJmc2ljX3N1Ym1pdF9iaChpbnQgb3AsIGludCBvcF9mbGFn cywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKIHsKIAlzdHJ1Y3QgYnRyZnNpY19kZXZfc3Rh dGUgKmRldl9zdGF0ZTsKIAogCWlmICghYnRyZnNpY19pc19pbml0aWFsaXplZCkKLQkJcmV0 dXJuIHN1Ym1pdF9iaChydywgYmgpOworCQlyZXR1cm4gc3VibWl0X2JoKG9wLCBvcF9mbGFn cywgYmgpOwogCiAJbXV0ZXhfbG9jaygmYnRyZnNpY19tdXRleCk7CiAJLyogc2luY2UgYnRy ZnNpY19zdWJtaXRfYmgoKSBtaWdodCBhbHNvIGJlIGNhbGxlZCBiZWZvcmUKQEAgLTI5MTIs MjYgKzI5MTIsMjYgQEAgaW50IGJ0cmZzaWNfc3VibWl0X2JoKGludCBydywgc3RydWN0IGJ1 ZmZlcl9oZWFkICpiaCkKIAogCS8qIE9ubHkgY2FsbGVkIHRvIHdyaXRlIHRoZSBzdXBlcmJs b2NrIChpbmNsLiBGTFVTSC9GVUEpICovCiAJaWYgKE5VTEwgIT0gZGV2X3N0YXRlICYmCi0J ICAgIChydyAmIFdSSVRFKSAmJiBiaC0+Yl9zaXplID4gMCkgeworCSAgICAob3AgPT0gUkVR X09QX1dSSVRFKSAmJiBiaC0+Yl9zaXplID4gMCkgewogCQl1NjQgZGV2X2J5dGVucjsKIAog CQlkZXZfYnl0ZW5yID0gNDA5NiAqIGJoLT5iX2Jsb2NrbnI7CiAJCWlmIChkZXZfc3RhdGUt PnN0YXRlLT5wcmludF9tYXNrICYKIAkJICAgIEJUUkZTSUNfUFJJTlRfTUFTS19TVUJNSVRf QklPX0JIKQogCQkJcHJpbnRrKEtFUk5fSU5GTwotCQkJICAgICAgICJzdWJtaXRfYmgocnc9 MHgleCwgYmxvY2tucj0lbGx1IChieXRlbnIgJWxsdSksIgotCQkJICAgICAgICIgc2l6ZT0l enUsIGRhdGE9JXAsIGJkZXY9JXApXG4iLAotCQkJICAgICAgIHJ3LCAodW5zaWduZWQgbG9u ZyBsb25nKWJoLT5iX2Jsb2NrbnIsCisJCQkgICAgICAgInN1Ym1pdF9iaChvcD0weCV4LDB4 JXgsIGJsb2NrbnI9JWxsdSAiCisJCQkgICAgICAgIihieXRlbnIgJWxsdSksIHNpemU9JXp1 LCBkYXRhPSVwLCBiZGV2PSVwKVxuIiwKKwkJCSAgICAgICBvcCwgb3BfZmxhZ3MsICh1bnNp Z25lZCBsb25nIGxvbmcpYmgtPmJfYmxvY2tuciwKIAkJCSAgICAgICBkZXZfYnl0ZW5yLCBi aC0+Yl9zaXplLCBiaC0+Yl9kYXRhLCBiaC0+Yl9iZGV2KTsKIAkJYnRyZnNpY19wcm9jZXNz X3dyaXR0ZW5fYmxvY2soZGV2X3N0YXRlLCBkZXZfYnl0ZW5yLAogCQkJCQkgICAgICAmYmgt PmJfZGF0YSwgMSwgTlVMTCwKLQkJCQkJICAgICAgTlVMTCwgYmgsIHJ3KTsKLQl9IGVsc2Ug aWYgKE5VTEwgIT0gZGV2X3N0YXRlICYmIChydyAmIFJFUV9GTFVTSCkpIHsKKwkJCQkJICAg ICAgTlVMTCwgYmgsIG9wIHwgb3BfZmxhZ3MpOworCX0gZWxzZSBpZiAoTlVMTCAhPSBkZXZf c3RhdGUgJiYgKG9wX2ZsYWdzICYgUkVRX0ZMVVNIKSkgewogCQlpZiAoZGV2X3N0YXRlLT5z dGF0ZS0+cHJpbnRfbWFzayAmCiAJCSAgICBCVFJGU0lDX1BSSU5UX01BU0tfU1VCTUlUX0JJ T19CSCkKIAkJCXByaW50ayhLRVJOX0lORk8KLQkJCSAgICAgICAic3VibWl0X2JoKHJ3PTB4 JXggRkxVU0gsIGJkZXY9JXApXG4iLAotCQkJICAgICAgIHJ3LCBiaC0+Yl9iZGV2KTsKKwkJ CSAgICAgICAic3VibWl0X2JoKG9wPTB4JXgsMHgleCBGTFVTSCwgYmRldj0lcClcbiIsCisJ CQkgICAgICAgb3AsIG9wX2ZsYWdzLCBiaC0+Yl9iZGV2KTsKIAkJaWYgKCFkZXZfc3RhdGUt PmR1bW15X2Jsb2NrX2Zvcl9iaW9fYmhfZmx1c2guaXNfaW9kb25lKSB7CiAJCQlpZiAoKGRl dl9zdGF0ZS0+c3RhdGUtPnByaW50X21hc2sgJgogCQkJICAgICAoQlRSRlNJQ19QUklOVF9N QVNLX1NVQk1JVF9CSU9fQkggfApAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgaW50IGJ0cmZzaWNf c3VibWl0X2JoKGludCBydywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKIAkJCWJsb2NrLT5u ZXZlcl93cml0dGVuID0gMDsKIAkJCWJsb2NrLT5pb2RvbmVfd19lcnJvciA9IDA7CiAJCQli bG9jay0+Zmx1c2hfZ2VuID0gZGV2X3N0YXRlLT5sYXN0X2ZsdXNoX2dlbiArIDE7Ci0JCQli bG9jay0+c3VibWl0X2Jpb19iaF9ydyA9IHJ3OworCQkJYmxvY2stPnN1Ym1pdF9iaW9fYmhf cncgPSBvcF9mbGFnczsKIAkJCWJsb2NrLT5vcmlnX2Jpb19iaF9wcml2YXRlID0gYmgtPmJf cHJpdmF0ZTsKIAkJCWJsb2NrLT5vcmlnX2Jpb19iaF9lbmRfaW8uYmggPSBiaC0+Yl9lbmRf aW87CiAJCQlibG9jay0+bmV4dF9pbl9zYW1lX2JpbyA9IE5VTEw7CkBAIC0yOTU4LDcgKzI5 NTgsNyBAQCBpbnQgYnRyZnNpY19zdWJtaXRfYmgoaW50IHJ3LCBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoKQogCQl9CiAJfQogCW11dGV4X3VubG9jaygmYnRyZnNpY19tdXRleCk7Ci0JcmV0 dXJuIHN1Ym1pdF9iaChydywgYmgpOworCXJldHVybiBzdWJtaXRfYmgob3AsIG9wX2ZsYWdz LCBiaCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRfYmlvKHN0cnVjdCBi aW8gKmJpbykKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5oIGIvZnMv YnRyZnMvY2hlY2staW50ZWdyaXR5LmgKaW5kZXggYzA0ZTI0OS4uZjc4ZGZmMSAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmgKKysrIGIvZnMvYnRyZnMvY2hlY2st aW50ZWdyaXR5LmgKQEAgLTIwLDcgKzIwLDcgQEAKICNkZWZpbmUgX19CVFJGU19DSEVDS19J TlRFR1JJVFlfXwogCiAjaWZkZWYgQ09ORklHX0JUUkZTX0ZTX0NIRUNLX0lOVEVHUklUWQot aW50IGJ0cmZzaWNfc3VibWl0X2JoKGludCBydywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7 CitpbnQgYnRyZnNpY19zdWJtaXRfYmgoaW50IG9wLCBpbnQgb3BfZmxhZ3MsIHN0cnVjdCBi dWZmZXJfaGVhZCAqYmgpOwogdm9pZCBidHJmc2ljX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAq YmlvKTsKIGludCBidHJmc2ljX3N1Ym1pdF9iaW9fd2FpdChzdHJ1Y3QgYmlvICpiaW8pOwog I2Vsc2UKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2Rpc2staW8uYyBiL2ZzL2J0cmZzL2Rpc2st aW8uYwppbmRleCA1M2NhNzE1Li4yM2VmNDEyIDEwMDY0NAotLS0gYS9mcy9idHJmcy9kaXNr LWlvLmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC0zMzUwLDkgKzMzNTAsOSBAQCBz dGF0aWMgaW50IHdyaXRlX2Rldl9zdXBlcnMoc3RydWN0IGJ0cmZzX2RldmljZSAqZGV2aWNl LAogCQkgKiB0byBnbyBkb3duIGxhenkuCiAJCSAqLwogCQlpZiAoaSA9PSAwKQotCQkJcmV0 ID0gYnRyZnNpY19zdWJtaXRfYmgoV1JJVEVfRlVBLCBiaCk7CisJCQlyZXQgPSBidHJmc2lj X3N1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIFdSSVRFX0ZVQSwgYmgpOwogCQllbHNlCi0JCQly ZXQgPSBidHJmc2ljX3N1Ym1pdF9iaChXUklURV9TWU5DLCBiaCk7CisJCQlyZXQgPSBidHJm c2ljX3N1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMsIGJoKTsKIAkJaWYgKHJl dCkKIAkJCWVycm9ycysrOwogCX0KZGlmZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVm ZmVyLmMKaW5kZXggNjNkMGFlZC4uNzBlZDMzZSAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMK KysrIGIvZnMvYnVmZmVyLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDx0cmFjZS9l dmVudHMvYmxvY2suaD4KIAogc3RhdGljIGludCBmc3luY19idWZmZXJzX2xpc3Qoc3Bpbmxv Y2tfdCAqbG9jaywgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7Ci1zdGF0aWMgaW50IHN1Ym1p dF9iaF93YmMoaW50IHJ3LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAorc3RhdGljIGludCBz dWJtaXRfYmhfd2JjKGludCBvcCwgaW50IG9wX2ZsYWdzLCBzdHJ1Y3QgYnVmZmVyX2hlYWQg KmJoLAogCQkJIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzLAogCQkJIHN0cnVjdCB3cml0ZWJh Y2tfY29udHJvbCAqd2JjKTsKIApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgc3RhdGljIHN0cnVj dCBidWZmZXJfaGVhZCAqX19icmVhZF9zbG93KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCiAJ fSBlbHNlIHsKIAkJZ2V0X2JoKGJoKTsKIAkJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl9y ZWFkX3N5bmM7Ci0JCXN1Ym1pdF9iaChSRUFELCBiaCk7CisJCXN1Ym1pdF9iaChSRVFfT1Bf UkVBRCwgMCwgYmgpOwogCQl3YWl0X29uX2J1ZmZlcihiaCk7CiAJCWlmIChidWZmZXJfdXB0 b2RhdGUoYmgpKQogCQkJcmV0dXJuIGJoOwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGlj IGludCBfX2Jsb2NrX3dyaXRlX2Z1bGxfcGFnZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgcGFnZSAqcGFnZSwKIAlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCAqaGVhZDsKIAl1bnNp Z25lZCBpbnQgYmxvY2tzaXplLCBiYml0czsKIAlpbnQgbnJfdW5kZXJ3YXkgPSAwOwotCWlu dCB3cml0ZV9vcCA9ICh3YmMtPnN5bmNfbW9kZSA9PSBXQl9TWU5DX0FMTCA/IFdSSVRFX1NZ TkMgOiBXUklURSk7CisJaW50IHdyaXRlX2ZsYWdzID0gKHdiYy0+c3luY19tb2RlID09IFdC X1NZTkNfQUxMID8gV1JJVEVfU1lOQzogMCk7CiAKIAloZWFkID0gY3JlYXRlX3BhZ2VfYnVm ZmVycyhwYWdlLCBpbm9kZSwKIAkJCQkJKDEgPDwgQkhfRGlydHkpfCgxIDw8IEJIX1VwdG9k YXRlKSk7CkBAIC0xNzk3LDcgKzE3OTcsNyBAQCBzdGF0aWMgaW50IF9fYmxvY2tfd3JpdGVf ZnVsbF9wYWdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBwYWdlICpwYWdlLAogCWRv IHsKIAkJc3RydWN0IGJ1ZmZlcl9oZWFkICpuZXh0ID0gYmgtPmJfdGhpc19wYWdlOwogCQlp ZiAoYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSkgewotCQkJc3VibWl0X2JoX3diYyh3cml0ZV9v cCwgYmgsIDAsIHdiYyk7CisJCQlzdWJtaXRfYmhfd2JjKFJFUV9PUF9XUklURSwgd3JpdGVf ZmxhZ3MsIGJoLCAwLCB3YmMpOwogCQkJbnJfdW5kZXJ3YXkrKzsKIAkJfQogCQliaCA9IG5l eHQ7CkBAIC0xODUxLDcgKzE4NTEsNyBAQCByZWNvdmVyOgogCQlzdHJ1Y3QgYnVmZmVyX2hl YWQgKm5leHQgPSBiaC0+Yl90aGlzX3BhZ2U7CiAJCWlmIChidWZmZXJfYXN5bmNfd3JpdGUo YmgpKSB7CiAJCQljbGVhcl9idWZmZXJfZGlydHkoYmgpOwotCQkJc3VibWl0X2JoX3diYyh3 cml0ZV9vcCwgYmgsIDAsIHdiYyk7CisJCQlzdWJtaXRfYmhfd2JjKFJFUV9PUF9XUklURSwg d3JpdGVfZmxhZ3MsIGJoLCAwLCB3YmMpOwogCQkJbnJfdW5kZXJ3YXkrKzsKIAkJfQogCQli aCA9IG5leHQ7CkBAIC0yMjU5LDcgKzIyNTksNyBAQCBpbnQgYmxvY2tfcmVhZF9mdWxsX3Bh Z2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIGdldF9ibG9ja190ICpnZXRfYmxvY2spCiAJCWlmIChi dWZmZXJfdXB0b2RhdGUoYmgpKQogCQkJZW5kX2J1ZmZlcl9hc3luY19yZWFkKGJoLCAxKTsK IAkJZWxzZQotCQkJc3VibWl0X2JoKFJFQUQsIGJoKTsKKwkJCXN1Ym1pdF9iaChSRVFfT1Bf UkVBRCwgMCwgYmgpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTI1OTMsNyArMjU5Myw3IEBA IGludCBub2JoX3dyaXRlX2JlZ2luKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAog CQlpZiAoYmxvY2tfc3RhcnQgPCBmcm9tIHx8IGJsb2NrX2VuZCA+IHRvKSB7CiAJCQlsb2Nr X2J1ZmZlcihiaCk7CiAJCQliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3JlYWRfbm9iaDsK LQkJCXN1Ym1pdF9iaChSRUFELCBiaCk7CisJCQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIDAs IGJoKTsKIAkJCW5yX3JlYWRzKys7CiAJCX0KIAl9CkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBz dGF0aWMgdm9pZCBlbmRfYmlvX2JoX2lvX3N5bmMoc3RydWN0IGJpbyAqYmlvKQogICogZXJy b3JzLCB0aGlzIG9ubHkgaGFuZGxlcyB0aGUgIndlIG5lZWQgdG8gYmUgYWJsZSB0bwogICog ZG8gSU8gYXQgdGhlIGZpbmFsIHNlY3RvciIgY2FzZS4KICAqLwotdm9pZCBndWFyZF9iaW9f ZW9kKGludCBydywgc3RydWN0IGJpbyAqYmlvKQordm9pZCBndWFyZF9iaW9fZW9kKGludCBv cCwgc3RydWN0IGJpbyAqYmlvKQogewogCXNlY3Rvcl90IG1heHNlY3RvcjsKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9ICZiaW8tPmJpX2lvX3ZlY1tiaW8tPmJpX3ZjbnQgLSAxXTsKQEAg LTI5OTAsMTMgKzI5OTAsMTMgQEAgdm9pZCBndWFyZF9iaW9fZW9kKGludCBydywgc3RydWN0 IGJpbyAqYmlvKQogCWJ2ZWMtPmJ2X2xlbiAtPSB0cnVuY2F0ZWRfYnl0ZXM7CiAKIAkvKiAu LmFuZCBjbGVhciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgZm9yIHJlYWRzICovCi0JaWYgKChy dyAmIFJXX01BU0spID09IFJFQUQpIHsKKwlpZiAob3AgPT0gUkVRX09QX1JFQUQpIHsKIAkJ emVyb191c2VyKGJ2ZWMtPmJ2X3BhZ2UsIGJ2ZWMtPmJ2X29mZnNldCArIGJ2ZWMtPmJ2X2xl biwKIAkJCQl0cnVuY2F0ZWRfYnl0ZXMpOwogCX0KIH0KIAotc3RhdGljIGludCBzdWJtaXRf Ymhfd2JjKGludCBydywgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwKK3N0YXRpYyBpbnQgc3Vi bWl0X2JoX3diYyhpbnQgb3AsIGludCBvcF9mbGFncywgc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCwKIAkJCSB1bnNpZ25lZCBsb25nIGJpb19mbGFncywgc3RydWN0IHdyaXRlYmFja19jb250 cm9sICp3YmMpCiB7CiAJc3RydWN0IGJpbyAqYmlvOwpAQCAtMzAxMCw3ICszMDEwLDcgQEAg c3RhdGljIGludCBzdWJtaXRfYmhfd2JjKGludCBydywgc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCwKIAkvKgogCSAqIE9ubHkgY2xlYXIgb3V0IGEgd3JpdGUgZXJyb3Igd2hlbiByZXdyaXRp bmcKIAkgKi8KLQlpZiAodGVzdF9zZXRfYnVmZmVyX3JlcShiaCkgJiYgKHJ3ICYgV1JJVEUp KQorCWlmICh0ZXN0X3NldF9idWZmZXJfcmVxKGJoKSAmJiAob3AgPT0gUkVRX09QX1dSSVRF KSkKIAkJY2xlYXJfYnVmZmVyX3dyaXRlX2lvX2Vycm9yKGJoKTsKIAogCS8qCkBAIC0zMDMz LDI5ICszMDMzLDMxIEBAIHN0YXRpYyBpbnQgc3VibWl0X2JoX3diYyhpbnQgcncsIHN0cnVj dCBidWZmZXJfaGVhZCAqYmgsCiAJYmlvLT5iaV9lbmRfaW8gPSBlbmRfYmlvX2JoX2lvX3N5 bmM7CiAJYmlvLT5iaV9wcml2YXRlID0gYmg7CiAJYmlvLT5iaV9mbGFncyB8PSBiaW9fZmxh Z3M7CisJYmlvLT5iaV9vcCA9IG9wOwogCiAJLyogVGFrZSBjYXJlIG9mIGJoJ3MgdGhhdCBz dHJhZGRsZSB0aGUgZW5kIG9mIHRoZSBkZXZpY2UgKi8KLQlndWFyZF9iaW9fZW9kKHJ3LCBi aW8pOworCWd1YXJkX2Jpb19lb2Qob3AsIGJpbyk7CiAKIAlpZiAoYnVmZmVyX21ldGEoYmgp KQotCQlydyB8PSBSRVFfTUVUQTsKKwkJb3BfZmxhZ3MgfD0gUkVRX01FVEE7CiAJaWYgKGJ1 ZmZlcl9wcmlvKGJoKSkKLQkJcncgfD0gUkVRX1BSSU87Ci0JYmlvLT5iaV9ydyB8PSBydzsK KwkJb3BfZmxhZ3MgfD0gUkVRX1BSSU87CisJYmlvLT5iaV9ydyB8PSBvcF9mbGFnczsKIAog CXN1Ym1pdF9iaW8oYmlvKTsKIAlyZXR1cm4gMDsKIH0KIAotaW50IF9zdWJtaXRfYmgoaW50 IHJ3LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCB1bnNpZ25lZCBsb25nIGJpb19mbGFncykK K2ludCBfc3VibWl0X2JoKGludCBvcCwgaW50IG9wX2ZsYWdzLCBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoLAorCSAgICAgICB1bnNpZ25lZCBsb25nIGJpb19mbGFncykKIHsKLQlyZXR1cm4g c3VibWl0X2JoX3diYyhydywgYmgsIGJpb19mbGFncywgTlVMTCk7CisJcmV0dXJuIHN1Ym1p dF9iaF93YmMob3AsIG9wX2ZsYWdzLCBiaCwgYmlvX2ZsYWdzLCBOVUxMKTsKIH0KIEVYUE9S VF9TWU1CT0xfR1BMKF9zdWJtaXRfYmgpOwogCi1pbnQgc3VibWl0X2JoKGludCBydywgc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaCkKK2ludCBzdWJtaXRfYmgoaW50IG9wLCBpbnQgb3BfZmxh Z3MsICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogewotCXJldHVybiBzdWJtaXRfYmhfd2Jj KHJ3LCBiaCwgMCwgTlVMTCk7CisJcmV0dXJuIHN1Ym1pdF9iaF93YmMob3AsIG9wX2ZsYWdz LCBiaCwgMCwgTlVMTCk7CiB9CiBFWFBPUlRfU1lNQk9MKHN1Ym1pdF9iaCk7CiAKQEAgLTMw OTcsMTQgKzMwOTksMTQgQEAgdm9pZCBsbF9yd19ibG9jayhpbnQgcncsIGludCBuciwgc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaHNbXSkKIAkJCWlmICh0ZXN0X2NsZWFyX2J1ZmZlcl9kaXJ0 eShiaCkpIHsKIAkJCQliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3dyaXRlX3N5bmM7CiAJ CQkJZ2V0X2JoKGJoKTsKLQkJCQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwkJCQlzdWJtaXRf YmgocncsIDAsIGJoKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCWlm ICghYnVmZmVyX3VwdG9kYXRlKGJoKSkgewogCQkJCWJoLT5iX2VuZF9pbyA9IGVuZF9idWZm ZXJfcmVhZF9zeW5jOwogCQkJCWdldF9iaChiaCk7Ci0JCQkJc3VibWl0X2JoKHJ3LCBiaCk7 CisJCQkJc3VibWl0X2JoKHJ3LCAwLCBiaCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0K QEAgLTMxMTMsNyArMzExNSw3IEBAIHZvaWQgbGxfcndfYmxvY2soaW50IHJ3LCBpbnQgbnIs IHN0cnVjdCBidWZmZXJfaGVhZCAqYmhzW10pCiB9CiBFWFBPUlRfU1lNQk9MKGxsX3J3X2Js b2NrKTsKIAotdm9pZCB3cml0ZV9kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCwgaW50IHJ3KQordm9pZCB3cml0ZV9kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFk ICpiaCwgaW50IG9wX2ZsYWdzKQogewogCWxvY2tfYnVmZmVyKGJoKTsKIAlpZiAoIXRlc3Rf Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKSkgewpAQCAtMzEyMiw3ICszMTI0LDcgQEAgdm9pZCB3 cml0ZV9kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHJ3KQogCX0K IAliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3dyaXRlX3N5bmM7CiAJZ2V0X2JoKGJoKTsK LQlzdWJtaXRfYmgocncsIGJoKTsKKwlzdWJtaXRfYmgoUkVRX09QX1dSSVRFLCBvcF9mbGFn cywgYmgpOwogfQogRVhQT1JUX1NZTUJPTCh3cml0ZV9kaXJ0eV9idWZmZXIpOwogCkBAIC0z MTMxLDcgKzMxMzMsNyBAQCBFWFBPUlRfU1lNQk9MKHdyaXRlX2RpcnR5X2J1ZmZlcik7CiAg KiBhbmQgdGhlbiBzdGFydCBuZXcgSS9PIGFuZCB0aGVuIHdhaXQgdXBvbiBpdC4gIFRoZSBj YWxsZXIgbXVzdCBoYXZlIGEgcmVmIG9uCiAgKiB0aGUgYnVmZmVyX2hlYWQuCiAgKi8KLWlu dCBfX3N5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBydykK K2ludCBfX3N5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBv cCwgaW50IG9wX2ZsYWdzKQogewogCWludCByZXQgPSAwOwogCkBAIC0zMTQwLDcgKzMxNDIs NyBAQCBpbnQgX19zeW5jX2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBp bnQgcncpCiAJaWYgKHRlc3RfY2xlYXJfYnVmZmVyX2RpcnR5KGJoKSkgewogCQlnZXRfYmgo YmgpOwogCQliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3dyaXRlX3N5bmM7Ci0JCXJldCA9 IHN1Ym1pdF9iaChydywgYmgpOworCQlyZXQgPSBzdWJtaXRfYmgob3AsIG9wX2ZsYWdzLCBi aCk7CiAJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJaWYgKCFyZXQgJiYgIWJ1ZmZlcl91cHRv ZGF0ZShiaCkpCiAJCQlyZXQgPSAtRUlPOwpAQCAtMzE1Myw3ICszMTU1LDcgQEAgRVhQT1JU X1NZTUJPTChfX3N5bmNfZGlydHlfYnVmZmVyKTsKIAogaW50IHN5bmNfZGlydHlfYnVmZmVy KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCiB7Ci0JcmV0dXJuIF9fc3luY19kaXJ0eV9idWZm ZXIoYmgsIFdSSVRFX1NZTkMpOworCXJldHVybiBfX3N5bmNfZGlydHlfYnVmZmVyKGJoLCBS RVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMpOwogfQogRVhQT1JUX1NZTUJPTChzeW5jX2RpcnR5 X2J1ZmZlcik7CiAKQEAgLTM0MDMsNyArMzQwNSw3IEBAIGludCBiaF9zdWJtaXRfcmVhZChz dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCiAJZ2V0X2JoKGJoKTsKIAliaC0+Yl9lbmRfaW8g PSBlbmRfYnVmZmVyX3JlYWRfc3luYzsKLQlzdWJtaXRfYmgoUkVBRCwgYmgpOworCXN1Ym1p dF9iaChSRVFfT1BfUkVBRCwgMCwgYmgpOwogCXdhaXRfb25fYnVmZmVyKGJoKTsKIAlpZiAo YnVmZmVyX3VwdG9kYXRlKGJoKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9mcy9leHQ0 L2JhbGxvYy5jIGIvZnMvZXh0NC9iYWxsb2MuYwppbmRleCBlYzA2NjhhLi5iMDNiZmQ4IDEw MDY0NAotLS0gYS9mcy9leHQ0L2JhbGxvYy5jCisrKyBiL2ZzL2V4dDQvYmFsbG9jLmMKQEAg LTQ2OSw3ICs0NjksNyBAQCBleHQ0X3JlYWRfYmxvY2tfYml0bWFwX25vd2FpdChzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiLCBleHQ0X2dyb3VwX3QgYmxvY2tfZ3JvdXApCiAJdHJhY2VfZXh0 NF9yZWFkX2Jsb2NrX2JpdG1hcF9sb2FkKHNiLCBibG9ja19ncm91cCk7CiAJYmgtPmJfZW5k X2lvID0gZXh0NF9lbmRfYml0bWFwX3JlYWQ7CiAJZ2V0X2JoKGJoKTsKLQlzdWJtaXRfYmgo UkVBRCB8IFJFUV9NRVRBIHwgUkVRX1BSSU8sIGJoKTsKKwlzdWJtaXRfYmgoUkVRX09QX1JF QUQsIFJFUV9NRVRBIHwgUkVRX1BSSU8sIGJoKTsKIAlyZXR1cm4gYmg7CiB2ZXJpZnk6CiAJ ZXJyID0gZXh0NF92YWxpZGF0ZV9ibG9ja19iaXRtYXAoc2IsIGRlc2MsIGJsb2NrX2dyb3Vw LCBiaCk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lhbGxvYy5jIGIvZnMvZXh0NC9pYWxsb2Mu YwppbmRleCAxYjgwMjRkLi5mMWZiZWQ1IDEwMDY0NAotLS0gYS9mcy9leHQ0L2lhbGxvYy5j CisrKyBiL2ZzL2V4dDQvaWFsbG9jLmMKQEAgLTIxMiw3ICsyMTIsNyBAQCBleHQ0X3JlYWRf aW5vZGVfYml0bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGV4dDRfZ3JvdXBfdCBibG9j a19ncm91cCkKIAl0cmFjZV9leHQ0X2xvYWRfaW5vZGVfYml0bWFwKHNiLCBibG9ja19ncm91 cCk7CiAJYmgtPmJfZW5kX2lvID0gZXh0NF9lbmRfYml0bWFwX3JlYWQ7CiAJZ2V0X2JoKGJo KTsKLQlzdWJtaXRfYmgoUkVBRCB8IFJFUV9NRVRBIHwgUkVRX1BSSU8sIGJoKTsKKwlzdWJt aXRfYmgoUkVRX09QX1JFQUQsIFJFUV9NRVRBIHwgUkVRX1BSSU8sIGJoKTsKIAl3YWl0X29u X2J1ZmZlcihiaCk7CiAJaWYgKCFidWZmZXJfdXB0b2RhdGUoYmgpKSB7CiAJCXB1dF9iaChi aCk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5k ZXggZWE0MzNhNy4uMDJhYmUwYSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCisrKyBi L2ZzL2V4dDQvaW5vZGUuYwpAQCAtMzk3NCw3ICszOTc0LDcgQEAgbWFrZV9pbzoKIAkJdHJh Y2VfZXh0NF9sb2FkX2lub2RlKGlub2RlKTsKIAkJZ2V0X2JoKGJoKTsKIAkJYmgtPmJfZW5k X2lvID0gZW5kX2J1ZmZlcl9yZWFkX3N5bmM7Ci0JCXN1Ym1pdF9iaChSRUFEIHwgUkVRX01F VEEgfCBSRVFfUFJJTywgYmgpOworCQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIFJFUV9NRVRB IHwgUkVRX1BSSU8sIGJoKTsKIAkJd2FpdF9vbl9idWZmZXIoYmgpOwogCQlpZiAoIWJ1ZmZl cl91cHRvZGF0ZShiaCkpIHsKIAkJCUVYVDRfRVJST1JfSU5PREVfQkxPQ0soaW5vZGUsIGJs b2NrLApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9tbXAuYyBiL2ZzL2V4dDQvbW1wLmMKaW5kZXgg MGE1MTJhYS4uYmQ5MGFiZiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tbXAuYworKysgYi9mcy9l eHQ0L21tcC5jCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfbW1wX2Jsb2Nr KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCiAJbG9j a19idWZmZXIoYmgpOwogCWJoLT5iX2VuZF9pbyA9IGVuZF9idWZmZXJfd3JpdGVfc3luYzsK IAlnZXRfYmgoYmgpOwotCXN1Ym1pdF9iaChXUklURV9TWU5DIHwgUkVRX01FVEEgfCBSRVFf UFJJTywgYmgpOworCXN1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMgfCBSRVFf TUVUQSB8IFJFUV9QUklPLCBiaCk7CiAJd2FpdF9vbl9idWZmZXIoYmgpOwogCXNiX2VuZF93 cml0ZShzYik7CiAJaWYgKHVubGlrZWx5KCFidWZmZXJfdXB0b2RhdGUoYmgpKSkKQEAgLTg4 LDcgKzg4LDcgQEAgc3RhdGljIGludCByZWFkX21tcF9ibG9jayhzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiaCwKIAlnZXRfYmgoKmJoKTsKIAlsb2Nr X2J1ZmZlcigqYmgpOwogCSgqYmgpLT5iX2VuZF9pbyA9IGVuZF9idWZmZXJfcmVhZF9zeW5j OwotCXN1Ym1pdF9iaChSRUFEX1NZTkMgfCBSRVFfTUVUQSB8IFJFUV9QUklPLCAqYmgpOwor CXN1Ym1pdF9iaChSRVFfT1BfUkVBRCwgUkVBRF9TWU5DIHwgUkVRX01FVEEgfCBSRVFfUFJJ TywgKmJoKTsKIAl3YWl0X29uX2J1ZmZlcigqYmgpOwogCWlmICghYnVmZmVyX3VwdG9kYXRl KCpiaCkpIHsKIAkJYnJlbHNlKCpiaCk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMg Yi9mcy9leHQ0L3N1cGVyLmMKaW5kZXggYzlhYjY3ZC4uZmRjNGRhOSAxMDA2NDQKLS0tIGEv ZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNDMzMCw3ICs0MzMw LDcgQEAgc3RhdGljIGludCBleHQ0X2NvbW1pdF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCBpbnQgc3luYykKIAlleHQ0X3N1cGVyYmxvY2tfY3N1bV9zZXQoc2IpOwogCW1hcmtf YnVmZmVyX2RpcnR5KHNiaCk7CiAJaWYgKHN5bmMpIHsKLQkJZXJyb3IgPSBfX3N5bmNfZGly dHlfYnVmZmVyKHNiaCwKKwkJZXJyb3IgPSBfX3N5bmNfZGlydHlfYnVmZmVyKHNiaCwgUkVR X09QX1dSSVRFLAogCQkJdGVzdF9vcHQoc2IsIEJBUlJJRVIpID8gV1JJVEVfRlVBIDogV1JJ VEVfU1lOQyk7CiAJCWlmIChlcnJvcikKIAkJCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBh L2ZzL2ZhdC9taXNjLmMgYi9mcy9mYXQvbWlzYy5jCmluZGV4IGM0NTg5ZTkuLjhhODY5ODEg MTAwNjQ0Ci0tLSBhL2ZzL2ZhdC9taXNjLmMKKysrIGIvZnMvZmF0L21pc2MuYwpAQCAtMjY3 LDcgKzI2Nyw3IEBAIGludCBmYXRfc3luY19iaHMoc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmhz LCBpbnQgbnJfYmhzKQogCWludCBpLCBlcnIgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IG5y X2JoczsgaSsrKQotCQl3cml0ZV9kaXJ0eV9idWZmZXIoYmhzW2ldLCBXUklURSk7CisJCXdy aXRlX2RpcnR5X2J1ZmZlcihiaHNbaV0sIDApOwogCiAJZm9yIChpID0gMDsgaSA8IG5yX2Jo czsgaSsrKSB7CiAJCXdhaXRfb25fYnVmZmVyKGJoc1tpXSk7CmRpZmYgLS1naXQgYS9mcy9n ZnMyL2JtYXAuYyBiL2ZzL2dmczIvYm1hcC5jCmluZGV4IDYxMjk2ZWMuLjk2NzE1NGMgMTAw NjQ0Ci0tLSBhL2ZzL2dmczIvYm1hcC5jCisrKyBiL2ZzL2dmczIvYm1hcC5jCkBAIC0yODUs NyArMjg1LDcgQEAgc3RhdGljIHZvaWQgZ2ZzMl9tZXRhcGF0aF9yYShzdHJ1Y3QgZ2ZzMl9n bG9jayAqZ2wsCiAJCWlmICh0cnlsb2NrX2J1ZmZlcihyYWJoKSkgewogCQkJaWYgKCFidWZm ZXJfdXB0b2RhdGUocmFiaCkpIHsKIAkJCQlyYWJoLT5iX2VuZF9pbyA9IGVuZF9idWZmZXJf cmVhZF9zeW5jOwotCQkJCXN1Ym1pdF9iaChSRUFEQSB8IFJFUV9NRVRBLCByYWJoKTsKKwkJ CQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIFJFQURBIHwgUkVRX01FVEEsIHJhYmgpOwogCQkJ CWNvbnRpbnVlOwogCQkJfQogCQkJdW5sb2NrX2J1ZmZlcihyYWJoKTsKZGlmZiAtLWdpdCBh L2ZzL2dmczIvZGlyLmMgYi9mcy9nZnMyL2Rpci5jCmluZGV4IGFkOGE1YjcuLmQxNmY1NTYg MTAwNjQ0Ci0tLSBhL2ZzL2dmczIvZGlyLmMKKysrIGIvZnMvZ2ZzMi9kaXIuYwpAQCAtMTQy Myw3ICsxNDIzLDcgQEAgc3RhdGljIHZvaWQgZ2ZzMl9kaXJfcmVhZGFoZWFkKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHVuc2lnbmVkIGhzaXplLCB1MzIgaW5kZXgsCiAJCQkJY29udGludWU7 CiAJCQl9CiAJCQliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3JlYWRfc3luYzsKLQkJCXN1 Ym1pdF9iaChSRUFEQSB8IFJFUV9NRVRBLCBiaCk7CisJCQlzdWJtaXRfYmgoUkVRX09QX1JF QUQsIFJFQURBIHwgUkVRX01FVEEsIGJoKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWJyZWxz ZShiaCk7CmRpZmYgLS1naXQgYS9mcy9nZnMyL21ldGFfaW8uYyBiL2ZzL2dmczIvbWV0YV9p by5jCmluZGV4IDBlMWQ0YmUuLmZmNDgzYmMgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvbWV0YV9p by5jCisrKyBiL2ZzL2dmczIvbWV0YV9pby5jCkBAIC0zNyw4ICszNyw4IEBAIHN0YXRpYyBp bnQgZ2ZzMl9hc3BhY2Vfd3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3Jp dGViYWNrX2NvbnRyb2wgKndiCiB7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgKmhlYWQ7 CiAJaW50IG5yX3VuZGVyd2F5ID0gMDsKLQlpbnQgd3JpdGVfb3AgPSBSRVFfTUVUQSB8IFJF UV9QUklPIHwKLQkJKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMID8gV1JJVEVfU1lO QyA6IFdSSVRFKTsKKwlpbnQgd3JpdGVfZmxhZ3MgPSBSRVFfTUVUQSB8IFJFUV9QUklPIHwK KwkJKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMID8gV1JJVEVfU1lOQyA6IDApOwog CiAJQlVHX09OKCFQYWdlTG9ja2VkKHBhZ2UpKTsKIAlCVUdfT04oIXBhZ2VfaGFzX2J1ZmZl cnMocGFnZSkpOwpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgaW50IGdmczJfYXNwYWNlX3dy aXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3 YgogCWRvIHsKIAkJc3RydWN0IGJ1ZmZlcl9oZWFkICpuZXh0ID0gYmgtPmJfdGhpc19wYWdl OwogCQlpZiAoYnVmZmVyX2FzeW5jX3dyaXRlKGJoKSkgewotCQkJc3VibWl0X2JoKHdyaXRl X29wLCBiaCk7CisJCQlzdWJtaXRfYmgoUkVRX09QX1dSSVRFLCB3cml0ZV9mbGFncywgYmgp OwogCQkJbnJfdW5kZXJ3YXkrKzsKIAkJfQogCQliaCA9IG5leHQ7CkBAIC0yMTcsNyArMjE3 LDcgQEAgaW50IGdmczJfbWV0YV9yZWFkKHN0cnVjdCBnZnMyX2dsb2NrICpnbCwgdTY0IGJs a25vLCBpbnQgZmxhZ3MsCiAJfQogCWJoLT5iX2VuZF9pbyA9IGVuZF9idWZmZXJfcmVhZF9z eW5jOwogCWdldF9iaChiaCk7Ci0Jc3VibWl0X2JoKFJFQURfU1lOQyB8IFJFUV9NRVRBIHwg UkVRX1BSSU8sIGJoKTsKKwlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIFJFQURfU1lOQyB8IFJF UV9NRVRBIHwgUkVRX1BSSU8sIGJoKTsKIAlpZiAoIShmbGFncyAmIERJT19XQUlUKSkKIAkJ cmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2Nv bW1pdC5jCmluZGV4IDM2MzQ1ZmUuLjczOTBlM2EgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvY29t bWl0LmMKKysrIGIvZnMvamJkMi9jb21taXQuYwpAQCAtMTU3LDkgKzE1Nyw5IEBAIHN0YXRp YyBpbnQgam91cm5hbF9zdWJtaXRfY29tbWl0X3JlY29yZChqb3VybmFsX3QgKmpvdXJuYWws CiAKIAlpZiAoam91cm5hbC0+al9mbGFncyAmIEpCRDJfQkFSUklFUiAmJgogCSAgICAhamJk Ml9oYXNfZmVhdHVyZV9hc3luY19jb21taXQoam91cm5hbCkpCi0JCXJldCA9IHN1Ym1pdF9i aChXUklURV9TWU5DIHwgV1JJVEVfRkxVU0hfRlVBLCBiaCk7CisJCXJldCA9IHN1Ym1pdF9i aChSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMgfCBXUklURV9GTFVTSF9GVUEsIGJoKTsKIAll bHNlCi0JCXJldCA9IHN1Ym1pdF9iaChXUklURV9TWU5DLCBiaCk7CisJCXJldCA9IHN1Ym1p dF9iaChSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMsIGJoKTsKIAogCSpjYmggPSBiaDsKIAly ZXR1cm4gcmV0OwpAQCAtNzM3LDcgKzczNyw3IEBAIHN0YXJ0X2pvdXJuYWxfaW86CiAJCQkJ Y2xlYXJfYnVmZmVyX2RpcnR5KGJoKTsKIAkJCQlzZXRfYnVmZmVyX3VwdG9kYXRlKGJoKTsK IAkJCQliaC0+Yl9lbmRfaW8gPSBqb3VybmFsX2VuZF9idWZmZXJfaW9fc3luYzsKLQkJCQlz dWJtaXRfYmgoV1JJVEVfU1lOQywgYmgpOworCQkJCXN1Ym1pdF9iaChSRVFfT1BfV1JJVEUs IFdSSVRFX1NZTkMsIGJoKTsKIAkJCX0KIAkJCWNvbmRfcmVzY2hlZCgpOwogCQkJc3RhdHMu cnVuLnJzX2Jsb2Nrc19sb2dnZWQgKz0gYnVmczsKZGlmZiAtLWdpdCBhL2ZzL2piZDIvam91 cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggODFlNjIyNi4uM2I3ZGIwYiAxMDA2 NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9qb3VybmFsLmMKQEAg LTEzMjMsMTUgKzEzMjMsMTUgQEAgc3RhdGljIGludCBqb3VybmFsX3Jlc2V0KGpvdXJuYWxf dCAqam91cm5hbCkKIAlyZXR1cm4gamJkMl9qb3VybmFsX3N0YXJ0X3RocmVhZChqb3VybmFs KTsKIH0KIAotc3RhdGljIGludCBqYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbF90ICpq b3VybmFsLCBpbnQgd3JpdGVfb3ApCitzdGF0aWMgaW50IGpiZDJfd3JpdGVfc3VwZXJibG9j ayhqb3VybmFsX3QgKmpvdXJuYWwsIGludCB3cml0ZV9mbGFncykKIHsKIAlzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoID0gam91cm5hbC0+al9zYl9idWZmZXI7CiAJam91cm5hbF9zdXBlcmJs b2NrX3QgKnNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOwogCWludCByZXQ7CiAKLQl0cmFj ZV9qYmQyX3dyaXRlX3N1cGVyYmxvY2soam91cm5hbCwgd3JpdGVfb3ApOworCXRyYWNlX2pi ZDJfd3JpdGVfc3VwZXJibG9jayhqb3VybmFsLCB3cml0ZV9mbGFncyk7CiAJaWYgKCEoam91 cm5hbC0+al9mbGFncyAmIEpCRDJfQkFSUklFUikpCi0JCXdyaXRlX29wICY9IH4oUkVRX0ZV QSB8IFJFUV9GTFVTSCk7CisJCXdyaXRlX2ZsYWdzICY9IH4oUkVRX0ZVQSB8IFJFUV9GTFVT SCk7CiAJbG9ja19idWZmZXIoYmgpOwogCWlmIChidWZmZXJfd3JpdGVfaW9fZXJyb3IoYmgp KSB7CiAJCS8qCkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBzdGF0aWMgaW50IGpiZDJfd3JpdGVf c3VwZXJibG9jayhqb3VybmFsX3QgKmpvdXJuYWwsIGludCB3cml0ZV9vcCkKIAlqYmQyX3N1 cGVyYmxvY2tfY3N1bV9zZXQoam91cm5hbCwgc2IpOwogCWdldF9iaChiaCk7CiAJYmgtPmJf ZW5kX2lvID0gZW5kX2J1ZmZlcl93cml0ZV9zeW5jOwotCXJldCA9IHN1Ym1pdF9iaCh3cml0 ZV9vcCwgYmgpOworCXJldCA9IHN1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIHdyaXRlX2ZsYWdz LCBiaCk7CiAJd2FpdF9vbl9idWZmZXIoYmgpOwogCWlmIChidWZmZXJfd3JpdGVfaW9fZXJy b3IoYmgpKSB7CiAJCWNsZWFyX2J1ZmZlcl93cml0ZV9pb19lcnJvcihiaCk7CmRpZmYgLS1n aXQgYS9mcy9uaWxmczIvYnRub2RlLmMgYi9mcy9uaWxmczIvYnRub2RlLmMKaW5kZXggYTM1 YWUzNS4uMDdmZTg3NCAxMDA2NDQKLS0tIGEvZnMvbmlsZnMyL2J0bm9kZS5jCisrKyBiL2Zz L25pbGZzMi9idG5vZGUuYwpAQCAtNjcsNyArNjcsNyBAQCBuaWxmc19idG5vZGVfY3JlYXRl X2Jsb2NrKHN0cnVjdCBhZGRyZXNzX3NwYWNlICpidG5jLCBfX3U2NCBibG9ja25yKQogfQog CiBpbnQgbmlsZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq YnRuYywgX191NjQgYmxvY2tuciwKLQkJCSAgICAgIHNlY3Rvcl90IHBibG9ja25yLCBpbnQg bW9kZSwKKwkJCSAgICAgIHNlY3Rvcl90IHBibG9ja25yLCBpbnQgbW9kZSwgaW50IG1vZGVf ZmxhZ3MsCiAJCQkgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipwYmgsIHNlY3Rvcl90ICpz dWJtaXRfcHRyKQogewogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CkBAIC0xMDAsNyArMTAw LDcgQEAgaW50IG5pbGZzX2J0bm9kZV9zdWJtaXRfYmxvY2soc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKmJ0bmMsIF9fdTY0IGJsb2NrbnIsCiAJCX0KIAl9CiAKLQlpZiAobW9kZSA9PSBSRUFE QSkgeworCWlmIChtb2RlX2ZsYWdzICYgUkVRX1JBSEVBRCkgewogCQlpZiAocGJsb2NrbnIg IT0gKnN1Ym1pdF9wdHIgKyAxIHx8ICF0cnlsb2NrX2J1ZmZlcihiaCkpIHsKIAkJCWVyciA9 IC1FQlVTWTsgLyogaW50ZXJuYWwgY29kZSAqLwogCQkJYnJlbHNlKGJoKTsKQEAgLTExOSw3 ICsxMTksNyBAQCBpbnQgbmlsZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqYnRuYywgX191NjQgYmxvY2tuciwKIAliaC0+Yl9ibG9ja25yID0gcGJsb2Nr bnI7IC8qIHNldCBibG9jayBhZGRyZXNzIGZvciByZWFkICovCiAJYmgtPmJfZW5kX2lvID0g ZW5kX2J1ZmZlcl9yZWFkX3N5bmM7CiAJZ2V0X2JoKGJoKTsKLQlzdWJtaXRfYmgobW9kZSwg YmgpOworCXN1Ym1pdF9iaChtb2RlLCBtb2RlX2ZsYWdzLCBiaCk7CiAJYmgtPmJfYmxvY2tu ciA9IGJsb2NrbnI7IC8qIHNldCBiYWNrIHRvIHRoZSBnaXZlbiBibG9jayBhZGRyZXNzICov CiAJKnN1Ym1pdF9wdHIgPSBwYmxvY2tucjsKIAllcnIgPSAwOwpkaWZmIC0tZ2l0IGEvZnMv bmlsZnMyL2J0bm9kZS5oIGIvZnMvbmlsZnMyL2J0bm9kZS5oCmluZGV4IGQ4NzZiNTYuLjNm OTMxOTcgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9idG5vZGUuaAorKysgYi9mcy9uaWxmczIv YnRub2RlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBuaWxmc19idG5vZGVfY2FjaGVfY2xl YXIoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKm5pbGZz X2J0bm9kZV9jcmVhdGVfYmxvY2soc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmJ0bmMsCiAJCQkJ CSAgICAgIF9fdTY0IGJsb2NrbnIpOwogaW50IG5pbGZzX2J0bm9kZV9zdWJtaXRfYmxvY2so c3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgX191NjQsIHNlY3Rvcl90LCBpbnQsCi0JCQkgICAg ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiosIHNlY3Rvcl90ICopOworCQkJICAgICAgaW50LCBz dHJ1Y3QgYnVmZmVyX2hlYWQgKiosIHNlY3Rvcl90ICopOwogdm9pZCBuaWxmc19idG5vZGVf ZGVsZXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKIGludCBuaWxmc19idG5vZGVfcHJlcGFy ZV9jaGFuZ2Vfa2V5KHN0cnVjdCBhZGRyZXNzX3NwYWNlICosCiAJCQkJICAgIHN0cnVjdCBu aWxmc19idG5vZGVfY2hrZXlfY3R4dCAqKTsKZGlmZiAtLWdpdCBhL2ZzL25pbGZzMi9idHJl ZS5jIGIvZnMvbmlsZnMyL2J0cmVlLmMKaW5kZXggM2EzODIxYi4uNWQ2YTJjNiAxMDA2NDQK LS0tIGEvZnMvbmlsZnMyL2J0cmVlLmMKKysrIGIvZnMvbmlsZnMyL2J0cmVlLmMKQEAgLTQ4 MCw3ICs0ODAsOCBAQCBzdGF0aWMgaW50IF9fbmlsZnNfYnRyZWVfZ2V0X2Jsb2NrKGNvbnN0 IHN0cnVjdCBuaWxmc19ibWFwICpidHJlZSwgX191NjQgcHRyLAogCXNlY3Rvcl90IHN1Ym1p dF9wdHIgPSAwOwogCWludCByZXQ7CiAKLQlyZXQgPSBuaWxmc19idG5vZGVfc3VibWl0X2Js b2NrKGJ0bmMsIHB0ciwgMCwgUkVBRCwgJmJoLCAmc3VibWl0X3B0cik7CisJcmV0ID0gbmls ZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhidG5jLCBwdHIsIDAsIFJFUV9PUF9SRUFELCAwLCAm YmgsCisJCQkJCSZzdWJtaXRfcHRyKTsKIAlpZiAocmV0KSB7CiAJCWlmIChyZXQgIT0gLUVF WElTVCkKIAkJCXJldHVybiByZXQ7CkBAIC00OTYsNyArNDk3LDggQEAgc3RhdGljIGludCBf X25pbGZzX2J0cmVlX2dldF9ibG9jayhjb25zdCBzdHJ1Y3QgbmlsZnNfYm1hcCAqYnRyZWUs IF9fdTY0IHB0ciwKIAkJICAgICBuID4gMCAmJiBpIDwgcmEtPm5jbWF4OyBuLS0sIGkrKykg ewogCQkJcHRyMiA9IG5pbGZzX2J0cmVlX25vZGVfZ2V0X3B0cihyYS0+bm9kZSwgaSwgcmEt Pm5jbWF4KTsKIAotCQkJcmV0ID0gbmlsZnNfYnRub2RlX3N1Ym1pdF9ibG9jayhidG5jLCBw dHIyLCAwLCBSRUFEQSwKKwkJCXJldCA9IG5pbGZzX2J0bm9kZV9zdWJtaXRfYmxvY2soYnRu YywgcHRyMiwgMCwKKwkJCQkJCQlSRVFfT1BfUkVBRCwgUkVRX1JBSEVBRCwKIAkJCQkJCQkm cmFfYmgsICZzdWJtaXRfcHRyKTsKIAkJCWlmIChsaWtlbHkoIXJldCB8fCByZXQgPT0gLUVF WElTVCkpCiAJCQkJYnJlbHNlKHJhX2JoKTsKZGlmZiAtLWdpdCBhL2ZzL25pbGZzMi9nY2lu b2RlLmMgYi9mcy9uaWxmczIvZ2Npbm9kZS5jCmluZGV4IDc0OGNhMjMuLjFmMThmZmMgMTAw NjQ0Ci0tLSBhL2ZzL25pbGZzMi9nY2lub2RlLmMKKysrIGIvZnMvbmlsZnMyL2djaW5vZGUu YwpAQCAtMTA2LDcgKzEwNiw3IEBAIGludCBuaWxmc19nY2NhY2hlX3N1Ym1pdF9yZWFkX2Rh dGEoc3RydWN0IGlub2RlICppbm9kZSwgc2VjdG9yX3QgYmxrb2ZmLAogCWJoLT5iX2Jsb2Nr bnIgPSBwYm47CiAJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl9yZWFkX3N5bmM7CiAJZ2V0 X2JoKGJoKTsKLQlzdWJtaXRfYmgoUkVBRCwgYmgpOworCXN1Ym1pdF9iaChSRVFfT1BfUkVB RCwgMCwgYmgpOwogCWlmICh2Ym4pCiAJCWJoLT5iX2Jsb2NrbnIgPSB2Ym47CiAgb3V0OgpA QCAtMTQzLDcgKzE0Myw4IEBAIGludCBuaWxmc19nY2NhY2hlX3N1Ym1pdF9yZWFkX25vZGUo c3RydWN0IGlub2RlICppbm9kZSwgc2VjdG9yX3QgcGJuLAogCWludCByZXQ7CiAKIAlyZXQg PSBuaWxmc19idG5vZGVfc3VibWl0X2Jsb2NrKCZOSUxGU19JKGlub2RlKS0+aV9idG5vZGVf Y2FjaGUsCi0JCQkJCXZibiA/IDogcGJuLCBwYm4sIFJFQUQsIG91dF9iaCwgJnBibik7CisJ CQkJCXZibiA/IDogcGJuLCBwYm4sIFJFUV9PUF9SRUFELCAwLAorCQkJCQlvdXRfYmgsICZw Ym4pOwogCWlmIChyZXQgPT0gLUVFWElTVCkgLyogaW50ZXJuYWwgY29kZSAoY2FjaGUgaGl0 KSAqLwogCQlyZXQgPSAwOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9uaWxmczIv bWR0LmMgYi9mcy9uaWxmczIvbWR0LmMKaW5kZXggMTEyNWY0MC4uOTJlNjI3ZCAxMDA2NDQK LS0tIGEvZnMvbmlsZnMyL21kdC5jCisrKyBiL2ZzL25pbGZzMi9tZHQuYwpAQCAtMTI0LDcg KzEyNCw3IEBAIHN0YXRpYyBpbnQgbmlsZnNfbWR0X2NyZWF0ZV9ibG9jayhzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGJsb2NrLAogCiBzdGF0aWMgaW50CiBuaWxmc19t ZHRfc3VibWl0X2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYmxr b2ZmLAotCQkgICAgICAgaW50IG1vZGUsIHN0cnVjdCBidWZmZXJfaGVhZCAqKm91dF9iaCkK KwkJICAgICAgIGludCBtb2RlLCBpbnQgbW9kZV9mbGFncywgc3RydWN0IGJ1ZmZlcl9oZWFk ICoqb3V0X2JoKQogewogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CiAJX191NjQgYmxrbnVt ID0gMDsKQEAgLTEzOCw3ICsxMzgsNyBAQCBuaWxmc19tZHRfc3VibWl0X2Jsb2NrKHN0cnVj dCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgYmxrb2ZmLAogCWlmIChidWZmZXJfdXB0 b2RhdGUoYmgpKQogCQlnb3RvIG91dDsKIAotCWlmIChtb2RlID09IFJFQURBKSB7CisJaWYg KG1vZGVfZmxhZ3MgJiBSRVFfUkFIRUFEKSB7CiAJCWlmICghdHJ5bG9ja19idWZmZXIoYmgp KSB7CiAJCQlyZXQgPSAtRUJVU1k7CiAJCQlnb3RvIGZhaWxlZF9iaDsKQEAgLTE2MCw3ICsx NjAsNyBAQCBuaWxmc19tZHRfc3VibWl0X2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVu c2lnbmVkIGxvbmcgYmxrb2ZmLAogCiAJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl9yZWFk X3N5bmM7CiAJZ2V0X2JoKGJoKTsKLQlzdWJtaXRfYmgobW9kZSwgYmgpOworCXN1Ym1pdF9i aChtb2RlLCBtb2RlX2ZsYWdzLCBiaCk7CiAJcmV0ID0gMDsKIAogCXRyYWNlX25pbGZzMl9t ZHRfc3VibWl0X2Jsb2NrKGlub2RlLCBpbm9kZS0+aV9pbm8sIGJsa29mZiwgbW9kZSk7CkBA IC0xODQsNyArMTg0LDcgQEAgc3RhdGljIGludCBuaWxmc19tZHRfcmVhZF9ibG9jayhzdHJ1 Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIGJsb2NrLAogCWludCBpLCBucl9yYV9i bG9ja3MgPSBOSUxGU19NRFRfTUFYX1JBX0JMT0NLUzsKIAlpbnQgZXJyOwogCi0JZXJyID0g bmlsZnNfbWR0X3N1Ym1pdF9ibG9jayhpbm9kZSwgYmxvY2ssIFJFQUQsICZmaXJzdF9iaCk7 CisJZXJyID0gbmlsZnNfbWR0X3N1Ym1pdF9ibG9jayhpbm9kZSwgYmxvY2ssIFJFUV9PUF9S RUFELCAwLCAmZmlyc3RfYmgpOwogCWlmIChlcnIgPT0gLUVFWElTVCkgLyogaW50ZXJuYWwg Y29kZSAqLwogCQlnb3RvIG91dDsKIApAQCAtMTk0LDcgKzE5NCw4IEBAIHN0YXRpYyBpbnQg bmlsZnNfbWR0X3JlYWRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9u ZyBibG9jaywKIAlpZiAocmVhZGFoZWFkKSB7CiAJCWJsa29mZiA9IGJsb2NrICsgMTsKIAkJ Zm9yIChpID0gMDsgaSA8IG5yX3JhX2Jsb2NrczsgaSsrLCBibGtvZmYrKykgewotCQkJZXJy ID0gbmlsZnNfbWR0X3N1Ym1pdF9ibG9jayhpbm9kZSwgYmxrb2ZmLCBSRUFEQSwgJmJoKTsK KwkJCWVyciA9IG5pbGZzX21kdF9zdWJtaXRfYmxvY2soaW5vZGUsIGJsa29mZiwgUkVRX09Q X1JFQUQsCisJCQkJCQkgICAgIFJFUV9SQUhFQUQsICZiaCk7CiAJCQlpZiAobGlrZWx5KCFl cnIgfHwgZXJyID09IC1FRVhJU1QpKQogCQkJCWJyZWxzZShiaCk7CiAJCQllbHNlIGlmIChl cnIgIT0gLUVCVVNZKQpkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3N1cGVyLmMgYi9mcy9uaWxm czIvc3VwZXIuYwppbmRleCAzNTQwMTNlLi4wOGQ1YjJkIDEwMDY0NAotLS0gYS9mcy9uaWxm czIvc3VwZXIuYworKysgYi9mcy9uaWxmczIvc3VwZXIuYwpAQCAtMTk1LDggKzE5NSw4IEBA IHN0YXRpYyBpbnQgbmlsZnNfc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBp bnQgZmxhZykKICByZXRyeToKIAlzZXRfYnVmZmVyX2RpcnR5KG5pbGZzLT5uc19zYmhbMF0p OwogCWlmIChuaWxmc190ZXN0X29wdChuaWxmcywgQkFSUklFUikpIHsKLQkJZXJyID0gX19z eW5jX2RpcnR5X2J1ZmZlcihuaWxmcy0+bnNfc2JoWzBdLAotCQkJCQkgIFdSSVRFX1NZTkMg fCBXUklURV9GTFVTSF9GVUEpOworCQllcnIgPSBfX3N5bmNfZGlydHlfYnVmZmVyKG5pbGZz LT5uc19zYmhbMF0sIFJFUV9PUF9XUklURSwKKwkJCQlXUklURV9TWU5DIHwgV1JJVEVfRkxV U0hfRlVBKTsKIAl9IGVsc2UgewogCQllcnIgPSBzeW5jX2RpcnR5X2J1ZmZlcihuaWxmcy0+ bnNfc2JoWzBdKTsKIAl9CmRpZmYgLS1naXQgYS9mcy9udGZzL2FvcHMuYyBiL2ZzL250ZnMv YW9wcy5jCmluZGV4IDc1MjFlMTEuLjU3YzY0YmQgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvYW9w cy5jCisrKyBiL2ZzL250ZnMvYW9wcy5jCkBAIC0zNjIsNyArMzYyLDcgQEAgaGFuZGxlX3pi bG9jazoKIAkJZm9yIChpID0gMDsgaSA8IG5yOyBpKyspIHsKIAkJCXRiaCA9IGFycltpXTsK IAkJCWlmIChsaWtlbHkoIWJ1ZmZlcl91cHRvZGF0ZSh0YmgpKSkKLQkJCQlzdWJtaXRfYmgo UkVBRCwgdGJoKTsKKwkJCQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIDAsIHRiaCk7CiAJCQll bHNlCiAJCQkJbnRmc19lbmRfYnVmZmVyX2FzeW5jX3JlYWQodGJoLCAxKTsKIAkJfQpAQCAt ODc3LDcgKzg3Nyw3IEBAIGxvY2tfcmV0cnlfcmVtYXA6CiAJZG8gewogCQlzdHJ1Y3QgYnVm ZmVyX2hlYWQgKm5leHQgPSBiaC0+Yl90aGlzX3BhZ2U7CiAJCWlmIChidWZmZXJfYXN5bmNf d3JpdGUoYmgpKSB7Ci0JCQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwkJCXN1Ym1pdF9iaChS RVFfT1BfV1JJVEUsIDAsIGJoKTsKIAkJCW5lZWRfZW5kX3dyaXRlYmFjayA9IGZhbHNlOwog CQl9CiAJCWJoID0gbmV4dDsKQEAgLTEyMDIsNyArMTIwMiw3IEBAIGxvY2tfcmV0cnlfcmVt YXA6CiAJCUJVR19PTighYnVmZmVyX21hcHBlZCh0YmgpKTsKIAkJZ2V0X2JoKHRiaCk7CiAJ CXRiaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3dyaXRlX3N5bmM7Ci0JCXN1Ym1pdF9iaChX UklURSwgdGJoKTsKKwkJc3VibWl0X2JoKFJFUV9PUF9XUklURSwgMCwgdGJoKTsKIAl9CiAJ LyogU3luY2hyb25pemUgdGhlIG1mdCBtaXJyb3Igbm93IGlmIG5vdCBAc3luYy4gKi8KIAlp ZiAoaXNfbWZ0ICYmICFzeW5jKQpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9jb21wcmVzcy5jIGIv ZnMvbnRmcy9jb21wcmVzcy5jCmluZGV4IGY4MjQ5OGMuLjFmZDQ4MmMgMTAwNjQ0Ci0tLSBh L2ZzL250ZnMvY29tcHJlc3MuYworKysgYi9mcy9udGZzL2NvbXByZXNzLmMKQEAgLTY3NCw3 ICs2NzQsNyBAQCBsb2NrX3JldHJ5X3JlbWFwOgogCQl9CiAJCWdldF9iaCh0YmgpOwogCQl0 YmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl9yZWFkX3N5bmM7Ci0JCXN1Ym1pdF9iaChSRUFE LCB0YmgpOworCQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIDAsIHRiaCk7CiAJfQogCiAJLyog V2FpdCBmb3IgaW8gY29tcGxldGlvbiBvbiBhbGwgYnVmZmVyIGhlYWRzLiAqLwpkaWZmIC0t Z2l0IGEvZnMvbnRmcy9maWxlLmMgYi9mcy9udGZzL2ZpbGUuYwppbmRleCA5ZDM4M2U1Li4w M2ExYTMyIDEwMDY0NAotLS0gYS9mcy9udGZzL2ZpbGUuYworKysgYi9mcy9udGZzL2ZpbGUu YwpAQCAtNTUzLDcgKzU1Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG50ZnNfc3VibWl0X2Jo X2Zvcl9yZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCiAJbG9ja19idWZmZXIoYmgpOwog CWdldF9iaChiaCk7CiAJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl9yZWFkX3N5bmM7Ci0J cmV0dXJuIHN1Ym1pdF9iaChSRUFELCBiaCk7CisJcmV0dXJuIHN1Ym1pdF9iaChSRVFfT1Bf UkVBRCwgMCwgYmgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbG9nZmlsZS5j IGIvZnMvbnRmcy9sb2dmaWxlLmMKaW5kZXggYzcxZGUyOS4uMWM5NWM0MSAxMDA2NDQKLS0t IGEvZnMvbnRmcy9sb2dmaWxlLmMKKysrIGIvZnMvbnRmcy9sb2dmaWxlLmMKQEAgLTgyMSw3 ICs4MjEsNyBAQCBtYXBfdmNuOgogCQkJICogY29tcGxldGVkIGlnbm9yZSBlcnJvcnMgYWZ0 ZXJ3YXJkcyBhcyB3ZSBjYW4gYXNzdW1lCiAJCQkgKiB0aGF0IGlmIG9uZSBidWZmZXIgd29y a2VkIGFsbCBvZiB0aGVtIHdpbGwgd29yay4KIAkJCSAqLwotCQkJc3VibWl0X2JoKFdSSVRF LCBiaCk7CisJCQlzdWJtaXRfYmgoUkVRX09QX1dSSVRFLCAwLCBiaCk7CiAJCQlpZiAoc2hv dWxkX3dhaXQpIHsKIAkJCQlzaG91bGRfd2FpdCA9IGZhbHNlOwogCQkJCXdhaXRfb25fYnVm ZmVyKGJoKTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbWZ0LmMgYi9mcy9udGZzL21mdC5jCmlu ZGV4IDMwMTRhMzYuLjM4YzZmN2EgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvbWZ0LmMKKysrIGIv ZnMvbnRmcy9tZnQuYwpAQCAtNTkyLDcgKzU5Miw3IEBAIGludCBudGZzX3N5bmNfbWZ0X21p cnJvcihudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCB1bnNpZ25lZCBsb25nIG1mdF9ubywKIAkJ CWNsZWFyX2J1ZmZlcl9kaXJ0eSh0YmgpOwogCQkJZ2V0X2JoKHRiaCk7CiAJCQl0YmgtPmJf ZW5kX2lvID0gZW5kX2J1ZmZlcl93cml0ZV9zeW5jOwotCQkJc3VibWl0X2JoKFdSSVRFLCB0 YmgpOworCQkJc3VibWl0X2JoKFJFUV9PUF9XUklURSwgMCwgdGJoKTsKIAkJfQogCQkvKiBX YWl0IG9uIGkvbyBjb21wbGV0aW9uIG9mIGJ1ZmZlcnMuICovCiAJCWZvciAoaV9iaHMgPSAw OyBpX2JocyA8IG5yX2JoczsgaV9iaHMrKykgewpAQCAtNzg1LDcgKzc4NSw3IEBAIGludCB3 cml0ZV9tZnRfcmVjb3JkX25vbG9jayhudGZzX2lub2RlICpuaSwgTUZUX1JFQ09SRCAqbSwg aW50IHN5bmMpCiAJCWNsZWFyX2J1ZmZlcl9kaXJ0eSh0YmgpOwogCQlnZXRfYmgodGJoKTsK IAkJdGJoLT5iX2VuZF9pbyA9IGVuZF9idWZmZXJfd3JpdGVfc3luYzsKLQkJc3VibWl0X2Jo KFdSSVRFLCB0YmgpOworCQlzdWJtaXRfYmgoUkVRX09QX1dSSVRFLCAwLCB0YmgpOwogCX0K IAkvKiBTeW5jaHJvbml6ZSB0aGUgbWZ0IG1pcnJvciBub3cgaWYgbm90IEBzeW5jLiAqLwog CWlmICghc3luYyAmJiBuaS0+bWZ0X25vIDwgdm9sLT5tZnRtaXJyX3NpemUpCmRpZmYgLS1n aXQgYS9mcy9vY2ZzMi9idWZmZXJfaGVhZF9pby5jIGIvZnMvb2NmczIvYnVmZmVyX2hlYWRf aW8uYwppbmRleCBmZTUwZGVkLi5mYjc3NWM5IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9idWZm ZXJfaGVhZF9pby5jCisrKyBiL2ZzL29jZnMyL2J1ZmZlcl9oZWFkX2lvLmMKQEAgLTc5LDcg Kzc5LDcgQEAgaW50IG9jZnMyX3dyaXRlX2Jsb2NrKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3Ni LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAogCiAJZ2V0X2JoKGJoKTsgLyogZm9yIGVuZF9i dWZmZXJfd3JpdGVfc3luYygpICovCiAJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl93cml0 ZV9zeW5jOwotCXN1Ym1pdF9iaChXUklURSwgYmgpOworCXN1Ym1pdF9iaChSRVFfT1BfV1JJ VEUsIDAsIGJoKTsKIAogCXdhaXRfb25fYnVmZmVyKGJoKTsKIApAQCAtMTQ5LDcgKzE0OSw3 IEBAIGludCBvY2ZzMl9yZWFkX2Jsb2Nrc19zeW5jKHN0cnVjdCBvY2ZzMl9zdXBlciAqb3Ni LCB1NjQgYmxvY2ssCiAJCWNsZWFyX2J1ZmZlcl91cHRvZGF0ZShiaCk7CiAJCWdldF9iaChi aCk7IC8qIGZvciBlbmRfYnVmZmVyX3JlYWRfc3luYygpICovCiAJCWJoLT5iX2VuZF9pbyA9 IGVuZF9idWZmZXJfcmVhZF9zeW5jOwotCQlzdWJtaXRfYmgoUkVBRCwgYmgpOworCQlzdWJt aXRfYmgoUkVRX09QX1JFQUQsIDAsIGJoKTsKIAl9CiAKIAlmb3IgKGkgPSBucjsgaSA+IDA7 IGktLSkgewpAQCAtMzA1LDcgKzMwNSw3IEBAIGludCBvY2ZzMl9yZWFkX2Jsb2NrcyhzdHJ1 Y3Qgb2NmczJfY2FjaGluZ19pbmZvICpjaSwgdTY0IGJsb2NrLCBpbnQgbnIsCiAJCQlpZiAo dmFsaWRhdGUpCiAJCQkJc2V0X2J1ZmZlcl9uZWVkc192YWxpZGF0ZShiaCk7CiAJCQliaC0+ Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3JlYWRfc3luYzsKLQkJCXN1Ym1pdF9iaChSRUFELCBi aCk7CisJCQlzdWJtaXRfYmgoUkVRX09QX1JFQUQsIDAsIGJoKTsKIAkJCWNvbnRpbnVlOwog CQl9CiAJfQpAQCAtNDE5LDcgKzQxOSw3IEBAIGludCBvY2ZzMl93cml0ZV9zdXBlcl9vcl9i YWNrdXAoc3RydWN0IG9jZnMyX3N1cGVyICpvc2IsCiAJZ2V0X2JoKGJoKTsgLyogZm9yIGVu ZF9idWZmZXJfd3JpdGVfc3luYygpICovCiAJYmgtPmJfZW5kX2lvID0gZW5kX2J1ZmZlcl93 cml0ZV9zeW5jOwogCW9jZnMyX2NvbXB1dGVfbWV0YV9lY2Mob3NiLT5zYiwgYmgtPmJfZGF0 YSwgJmRpLT5pX2NoZWNrKTsKLQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwlzdWJtaXRfYmgo UkVRX09QX1dSSVRFLCAwLCBiaCk7CiAKIAl3YWl0X29uX2J1ZmZlcihiaCk7CiAKZGlmZiAt LWdpdCBhL2ZzL3JlaXNlcmZzL2lub2RlLmMgYi9mcy9yZWlzZXJmcy9pbm9kZS5jCmluZGV4 IDNkOGU3ZTYuLmY0OTFlZjQgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL2lub2RlLmMKKysr IGIvZnMvcmVpc2VyZnMvaW5vZGUuYwpAQCAtMjY2Nyw3ICsyNjY3LDcgQEAgc3RhdGljIGlu dCByZWlzZXJmc193cml0ZV9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsCiAJZG8gewog CQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKm5leHQgPSBiaC0+Yl90aGlzX3BhZ2U7CiAJCWlmIChi dWZmZXJfYXN5bmNfd3JpdGUoYmgpKSB7Ci0JCQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwkJ CXN1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIDAsIGJoKTsKIAkJCW5yKys7CiAJCX0KIAkJcHV0 X2JoKGJoKTsKQEAgLTI3MjcsNyArMjcyNyw3IEBAIGZhaWw6CiAJCXN0cnVjdCBidWZmZXJf aGVhZCAqbmV4dCA9IGJoLT5iX3RoaXNfcGFnZTsKIAkJaWYgKGJ1ZmZlcl9hc3luY193cml0 ZShiaCkpIHsKIAkJCWNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7Ci0JCQlzdWJtaXRfYmgoV1JJ VEUsIGJoKTsKKwkJCXN1Ym1pdF9iaChSRVFfT1BfV1JJVEUsIDAsIGJoKTsKIAkJCW5yKys7 CiAJCX0KIAkJcHV0X2JoKGJoKTsKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL2pvdXJuYWwu YyBiL2ZzL3JlaXNlcmZzL2pvdXJuYWwuYwppbmRleCA5ZDY0ODZkLi5kZjY5NTgxIDEwMDY0 NAotLS0gYS9mcy9yZWlzZXJmcy9qb3VybmFsLmMKKysrIGIvZnMvcmVpc2VyZnMvam91cm5h bC5jCkBAIC02NTQsNyArNjU0LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0X2xvZ2dlZF9idWZm ZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKIAkJQlVHKCk7CiAJaWYgKCFidWZmZXJfdXB0 b2RhdGUoYmgpKQogCQlCVUcoKTsKLQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwlzdWJtaXRf YmgoUkVRX09QX1dSSVRFLCAwLCBiaCk7CiB9CiAKIHN0YXRpYyB2b2lkIHN1Ym1pdF9vcmRl cmVkX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQpAQCAtNjY0LDcgKzY2NCw3IEBA IHN0YXRpYyB2b2lkIHN1Ym1pdF9vcmRlcmVkX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQg KmJoKQogCWNsZWFyX2J1ZmZlcl9kaXJ0eShiaCk7CiAJaWYgKCFidWZmZXJfdXB0b2RhdGUo YmgpKQogCQlCVUcoKTsKLQlzdWJtaXRfYmgoV1JJVEUsIGJoKTsKKwlzdWJtaXRfYmgoUkVR X09QX1dSSVRFLCAwLCBiaCk7CiB9CiAKICNkZWZpbmUgQ0hVTktfU0laRSAzMgpAQCAtMTEx Myw3ICsxMTEzLDggQEAgc3RhdGljIGludCBmbHVzaF9jb21taXRfbGlzdChzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnMsCiAJCW1hcmtfYnVmZmVyX2RpcnR5KGpsLT5qX2NvbW1pdF9iaCkgOwog CQlkZXB0aCA9IHJlaXNlcmZzX3dyaXRlX3VubG9ja19uZXN0ZWQocyk7CiAJCWlmIChyZWlz ZXJmc19iYXJyaWVyX2ZsdXNoKHMpKQotCQkJX19zeW5jX2RpcnR5X2J1ZmZlcihqbC0+al9j b21taXRfYmgsIFdSSVRFX0ZMVVNIX0ZVQSk7CisJCQlfX3N5bmNfZGlydHlfYnVmZmVyKGps LT5qX2NvbW1pdF9iaCwgUkVRX09QX1dSSVRFLAorCQkJCQkgICAgV1JJVEVfRkxVU0hfRlVB KTsKIAkJZWxzZQogCQkJc3luY19kaXJ0eV9idWZmZXIoamwtPmpfY29tbWl0X2JoKTsKIAkJ cmVpc2VyZnNfd3JpdGVfbG9ja19uZXN0ZWQocywgZGVwdGgpOwpAQCAtMTI3MSw3ICsxMjcy LDggQEAgc3RhdGljIGludCBfdXBkYXRlX2pvdXJuYWxfaGVhZGVyX2Jsb2NrKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsCiAJCWRlcHRoID0gcmVpc2VyZnNfd3JpdGVfdW5sb2NrX25lc3Rl ZChzYik7CiAKIAkJaWYgKHJlaXNlcmZzX2JhcnJpZXJfZmx1c2goc2IpKQotCQkJX19zeW5j X2RpcnR5X2J1ZmZlcihqb3VybmFsLT5qX2hlYWRlcl9iaCwgV1JJVEVfRkxVU0hfRlVBKTsK KwkJCV9fc3luY19kaXJ0eV9idWZmZXIoam91cm5hbC0+al9oZWFkZXJfYmgsIFJFUV9PUF9X UklURSwKKwkJCQkJICAgIFdSSVRFX0ZMVVNIX0ZVQSk7CiAJCWVsc2UKIAkJCXN5bmNfZGly dHlfYnVmZmVyKGpvdXJuYWwtPmpfaGVhZGVyX2JoKTsKIApAQCAtMjI3MSw3ICsyMjczLDcg QEAgYWJvcnRfcmVwbGF5OgogCS8qIGZsdXNoIG91dCB0aGUgcmVhbCBibG9ja3MgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZ2V0X2Rlc2NfdHJhbnNfbGVuKGRlc2MpOyBpKyspIHsKIAkJc2V0 X2J1ZmZlcl9kaXJ0eShyZWFsX2Jsb2Nrc1tpXSk7Ci0JCXdyaXRlX2RpcnR5X2J1ZmZlcihy ZWFsX2Jsb2Nrc1tpXSwgV1JJVEUpOworCQl3cml0ZV9kaXJ0eV9idWZmZXIocmVhbF9ibG9j a3NbaV0sIDApOwogCX0KIAlmb3IgKGkgPSAwOyBpIDwgZ2V0X2Rlc2NfdHJhbnNfbGVuKGRl c2MpOyBpKyspIHsKIAkJd2FpdF9vbl9idWZmZXIocmVhbF9ibG9ja3NbaV0pOwpkaWZmIC0t Z2l0IGEvZnMvdWZzL3V0aWwuYyBiL2ZzL3Vmcy91dGlsLmMKaW5kZXggYjZjMmY5NC4uNWY2 OGIxYSAxMDA2NDQKLS0tIGEvZnMvdWZzL3V0aWwuYworKysgYi9mcy91ZnMvdXRpbC5jCkBA IC0xMTgsNyArMTE4LDcgQEAgdm9pZCB1Ymhfc3luY19ibG9jayhzdHJ1Y3QgdWZzX2J1ZmZl cl9oZWFkICp1YmgpCiAJCXVuc2lnbmVkIGk7CiAKIAkJZm9yIChpID0gMDsgaSA8IHViaC0+ Y291bnQ7IGkrKykKLQkJCXdyaXRlX2RpcnR5X2J1ZmZlcih1YmgtPmJoW2ldLCBXUklURSk7 CisJCQl3cml0ZV9kaXJ0eV9idWZmZXIodWJoLT5iaFtpXSwgMCk7CiAKIAkJZm9yIChpID0g MDsgaSA8IHViaC0+Y291bnQ7IGkrKykKIAkJCXdhaXRfb25fYnVmZmVyKHViaC0+YmhbaV0p OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idWZmZXJfaGVhZC5oIGIvaW5jbHVkZS9s aW51eC9idWZmZXJfaGVhZC5oCmluZGV4IDg5ZDlhYTkuLmZlMmY4NjggMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2J1ZmZl cl9oZWFkLmgKQEAgLTE4OSwxMCArMTg5LDExIEBAIHZvaWQgdW5sb2NrX2J1ZmZlcihzdHJ1 Y3QgYnVmZmVyX2hlYWQgKmJoKTsKIHZvaWQgX19sb2NrX2J1ZmZlcihzdHJ1Y3QgYnVmZmVy X2hlYWQgKmJoKTsKIHZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJf aGVhZCAqIGJoW10pOwogaW50IHN5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgpOwotaW50IF9fc3luY19kaXJ0eV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCwgaW50IHJ3KTsKLXZvaWQgd3JpdGVfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgsIGludCBydyk7Ci1pbnQgX3N1Ym1pdF9iaChpbnQgcncsIHN0cnVjdCBidWZmZXJf aGVhZCAqYmgsIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKTsKLWludCBzdWJtaXRfYmgoaW50 LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CitpbnQgX19zeW5jX2RpcnR5X2J1ZmZlcihzdHJ1 Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgb3AsIGludCBvcF9mbGFncyk7Cit2b2lkIHdyaXRl X2RpcnR5X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgb3BfZmxhZ3MpOwor aW50IF9zdWJtaXRfYmgoaW50IG9wLCBpbnQgb3BfZmxhZ3MsIHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgsCisJICAgICAgIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKTsKK2ludCBzdWJtaXRf YmgoaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKIHZvaWQgd3JpdGVfYm91bmRh cnlfYmxvY2soc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKIAkJCXNlY3Rvcl90IGJibG9j aywgdW5zaWduZWQgYmxvY2tzaXplKTsKIGludCBiaF91cHRvZGF0ZV9vcl9sb2NrKHN0cnVj dCBidWZmZXJfaGVhZCAqYmgpOwotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJl cS1vcC8wMDA2LWZzLWhhdmUtbGxfcndfYmxvY2stdXNlcnMtcGFzcy1pbi1vcC1hbmQtZmxh Z3Mtc2VwYXIucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAw MDE3NTEAMDAwMTc1MQAwMDAwMDAzNjQzMQAxMjYzMjE1NDIzMAAwMjM3MTcAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbSBjMGI0ZjBmMWZiMWIzOWIyOTZhZjEyN2M3 M2U5YzM3MzQ4OWEyMzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENo cmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgpEYXRlOiBUdWUsIDggRGVjIDIwMTUgMTQ6 MTE6MDggLTA2MDAKU3ViamVjdDogW1BBVENIIDA2LzMwXSBmczogaGF2ZSBsbF9yd19ibG9j ayB1c2VycyBwYXNzIGluIG9wIGFuZCBmbGFncwogc2VwYXJhdGVseQoKVGhpcyBoYXMgbGxf cndfYmxvY2sgdXNlcnMgcGFzcyBpbiB0aGUgb3BlcmF0aW9uIGFuZCBmbGFncyBzZXBhcmF0 ZWx5LApzbyB3ZSBjYW4gc2V0dXAgdGhlIGJpby0+Ymlfb3AgYW5kIGJpby1iaV9ydyBmbGFn cy4KClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+ Ci0tLQogZnMvYnVmZmVyLmMgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKy0tLS0t LS0tLQogZnMvZXh0NC9pbm9kZS5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCiBmcy9leHQ0 L25hbWVpLmMgICAgICAgICAgICAgfCAgMiArLQogZnMvZXh0NC9zdXBlci5jICAgICAgICAg ICAgIHwgIDIgKy0KIGZzL2dmczIvYm1hcC5jICAgICAgICAgICAgICB8ICAyICstCiBmcy9n ZnMyL21ldGFfaW8uYyAgICAgICAgICAgfCAgNCArKy0tCiBmcy9nZnMyL3F1b3RhLmMgICAg ICAgICAgICAgfCAgMiArLQogZnMvaXNvZnMvY29tcHJlc3MuYyAgICAgICAgIHwgIDIgKy0K IGZzL2piZDIvam91cm5hbC5jICAgICAgICAgICB8ICAyICstCiBmcy9qYmQyL3JlY292ZXJ5 LmMgICAgICAgICAgfCAgNCArKy0tCiBmcy9vY2ZzMi9hb3BzLmMgICAgICAgICAgICAgfCAg MiArLQogZnMvb2NmczIvc3VwZXIuYyAgICAgICAgICAgIHwgIDIgKy0KIGZzL3JlaXNlcmZz L2pvdXJuYWwuYyAgICAgICB8ICA4ICsrKystLS0tCiBmcy9yZWlzZXJmcy9zdHJlZS5jICAg ICAgICAgfCAgNCArKy0tCiBmcy9yZWlzZXJmcy9zdXBlci5jICAgICAgICAgfCAgMiArLQog ZnMvc3F1YXNoZnMvYmxvY2suYyAgICAgICAgIHwgIDQgKystLQogZnMvdWRmL2Rpci5jICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3VkZi9kaXJlY3RvcnkuYyAgICAgICAgICB8ICAy ICstCiBmcy91ZGYvaW5vZGUuYyAgICAgICAgICAgICAgfCAgMiArLQogZnMvdWZzL2JhbGxv Yy5jICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaCB8 ICAyICstCiAyMSBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idWZmZXIuYyBiL2ZzL2J1ZmZlci5jCmluZGV4IDcw ZWQzM2UuLmQxOGUyMDggMTAwNjQ0Ci0tLSBhL2ZzL2J1ZmZlci5jCisrKyBiL2ZzL2J1ZmZl ci5jCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCB3cml0ZV9ib3VuZGFyeV9ibG9jayhzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmggPSBfX2Zp bmRfZ2V0X2Jsb2NrKGJkZXYsIGJibG9jayArIDEsIGJsb2Nrc2l6ZSk7CiAJaWYgKGJoKSB7 CiAJCWlmIChidWZmZXJfZGlydHkoYmgpKQotCQkJbGxfcndfYmxvY2soV1JJVEUsIDEsICZi aCk7CisJCQlsbF9yd19ibG9jayhSRVFfT1BfV1JJVEUsIDAsIDEsICZiaCk7CiAJCXB1dF9i aChiaCk7CiAJfQogfQpAQCAtMTQwNiw3ICsxNDA2LDcgQEAgdm9pZCBfX2JyZWFkYWhlYWQo c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3QgYmxvY2ssIHVuc2lnbmVkIHNp emUpCiB7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA9IF9fZ2V0YmxrKGJkZXYsIGJsb2Nr LCBzaXplKTsKIAlpZiAobGlrZWx5KGJoKSkgewotCQlsbF9yd19ibG9jayhSRUFEQSwgMSwg JmJoKTsKKwkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIFJFQURBLCAxLCAmYmgpOwogCQli cmVsc2UoYmgpOwogCX0KIH0KQEAgLTE5NjYsNyArMTk2Niw3IEBAIGludCBfX2Jsb2NrX3dy aXRlX2JlZ2luKHN0cnVjdCBwYWdlICpwYWdlLCBsb2ZmX3QgcG9zLCB1bnNpZ25lZCBsZW4s CiAJCWlmICghYnVmZmVyX3VwdG9kYXRlKGJoKSAmJiAhYnVmZmVyX2RlbGF5KGJoKSAmJgog CQkgICAgIWJ1ZmZlcl91bndyaXR0ZW4oYmgpICYmCiAJCSAgICAgKGJsb2NrX3N0YXJ0IDwg ZnJvbSB8fCBibG9ja19lbmQgPiB0bykpIHsKLQkJCWxsX3J3X2Jsb2NrKFJFQUQsIDEsICZi aCk7CisJCQlsbF9yd19ibG9jayhSRVFfT1BfUkVBRCwgMCwgMSwgJmJoKTsKIAkJCSp3YWl0 X2JoKys9Ymg7CiAJCX0KIAl9CkBAIC0yODYzLDcgKzI4NjMsNyBAQCBpbnQgYmxvY2tfdHJ1 bmNhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAogCWlmICghYnVm ZmVyX3VwdG9kYXRlKGJoKSAmJiAhYnVmZmVyX2RlbGF5KGJoKSAmJiAhYnVmZmVyX3Vud3Jp dHRlbihiaCkpIHsKIAkJZXJyID0gLUVJTzsKLQkJbGxfcndfYmxvY2soUkVBRCwgMSwgJmJo KTsKKwkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIDAsIDEsICZiaCk7CiAJCXdhaXRfb25f YnVmZmVyKGJoKTsKIAkJLyogVWhodWguIFJlYWQgZXJyb3IuIENvbXBsYWluIGFuZCBwdW50 LiAqLwogCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpCkBAIC0zMDYzLDcgKzMwNjMsOCBA QCBFWFBPUlRfU1lNQk9MKHN1Ym1pdF9iaCk7CiAKIC8qKgogICogbGxfcndfYmxvY2s6IGxv dy1sZXZlbCBhY2Nlc3MgdG8gYmxvY2sgZGV2aWNlcyAoREVQUkVDQVRFRCkKLSAqIEBydzog d2hldGhlciB0byAlUkVBRCBvciAlV1JJVEUgb3IgbWF5YmUgJVJFQURBIChyZWFkYWhlYWQp CisgKiBAb3A6IHdoZXRoZXIgdG8gJVJFQUQgb3IgJVdSSVRFCisgKiBvcF9mbGFnczogcnFf ZmxhZ19iaXRzIG9yICVSRUFEQSAocmVhZGFoZWFkKQogICogQG5yOiBudW1iZXIgb2YgJnN0 cnVjdCBidWZmZXJfaGVhZHMgaW4gdGhlIGFycmF5CiAgKiBAYmhzOiBhcnJheSBvZiBwb2lu dGVycyB0byAmc3RydWN0IGJ1ZmZlcl9oZWFkCiAgKgpAQCAtMzA4Niw3ICszMDg3LDcgQEAg RVhQT1JUX1NZTUJPTChzdWJtaXRfYmgpOwogICogQWxsIG9mIHRoZSBidWZmZXJzIG11c3Qg YmUgZm9yIHRoZSBzYW1lIGRldmljZSwgYW5kIG11c3QgYWxzbyBiZSBhCiAgKiBtdWx0aXBs ZSBvZiB0aGUgY3VycmVudCBhcHByb3ZlZCBzaXplIGZvciB0aGUgZGV2aWNlLgogICovCi12 b2lkIGxsX3J3X2Jsb2NrKGludCBydywgaW50IG5yLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo c1tdKQordm9pZCBsbF9yd19ibG9jayhpbnQgb3AsIGludCBvcF9mbGFncywgIGludCBuciwg c3RydWN0IGJ1ZmZlcl9oZWFkICpiaHNbXSkKIHsKIAlpbnQgaTsKIApAQCAtMzA5NSwxOCAr MzA5NiwxOCBAQCB2b2lkIGxsX3J3X2Jsb2NrKGludCBydywgaW50IG5yLCBzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoc1tdKQogCiAJCWlmICghdHJ5bG9ja19idWZmZXIoYmgpKQogCQkJY29u dGludWU7Ci0JCWlmIChydyA9PSBXUklURSkgeworCQlpZiAob3AgPT0gV1JJVEUpIHsKIAkJ CWlmICh0ZXN0X2NsZWFyX2J1ZmZlcl9kaXJ0eShiaCkpIHsKIAkJCQliaC0+Yl9lbmRfaW8g PSBlbmRfYnVmZmVyX3dyaXRlX3N5bmM7CiAJCQkJZ2V0X2JoKGJoKTsKLQkJCQlzdWJtaXRf YmgocncsIDAsIGJoKTsKKwkJCQlzdWJtaXRfYmgob3AsIG9wX2ZsYWdzLCBiaCk7CiAJCQkJ Y29udGludWU7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShi aCkpIHsKIAkJCQliaC0+Yl9lbmRfaW8gPSBlbmRfYnVmZmVyX3JlYWRfc3luYzsKIAkJCQln ZXRfYmgoYmgpOwotCQkJCXN1Ym1pdF9iaChydywgMCwgYmgpOworCQkJCXN1Ym1pdF9iaChv cCwgb3BfZmxhZ3MsIGJoKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IDAyYWJlMGEuLjA2 NTEwYmYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYworKysgYi9mcy9leHQ0L2lub2Rl LmMKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfYnJlYWQo aGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJcmV0dXJuIGJoOwog CWlmICghYmggfHwgYnVmZmVyX3VwdG9kYXRlKGJoKSkKIAkJcmV0dXJuIGJoOwotCWxsX3J3 X2Jsb2NrKFJFQUQgfCBSRVFfTUVUQSB8IFJFUV9QUklPLCAxLCAmYmgpOworCWxsX3J3X2Js b2NrKFJFUV9PUF9SRUFELCBSRVFfTUVUQSB8IFJFUV9QUklPLCAxLCAmYmgpOwogCXdhaXRf b25fYnVmZmVyKGJoKTsKIAlpZiAoYnVmZmVyX3VwdG9kYXRlKGJoKSkKIAkJcmV0dXJuIGJo OwpAQCAtOTQ4LDcgKzk0OCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9ibG9ja193cml0ZV9iZWdp bihzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9mZl90IHBvcywgdW5zaWduZWQgbGVuLAogCQlpZiAo IWJ1ZmZlcl91cHRvZGF0ZShiaCkgJiYgIWJ1ZmZlcl9kZWxheShiaCkgJiYKIAkJICAgICFi dWZmZXJfdW53cml0dGVuKGJoKSAmJgogCQkgICAgKGJsb2NrX3N0YXJ0IDwgZnJvbSB8fCBi bG9ja19lbmQgPiB0bykpIHsKLQkJCWxsX3J3X2Jsb2NrKFJFQUQsIDEsICZiaCk7CisJCQls bF9yd19ibG9jayhSRVFfT1BfUkVBRCwgMCwgMSwgJmJoKTsKIAkJCSp3YWl0X2JoKysgPSBi aDsKIAkJCWRlY3J5cHQgPSBleHQ0X2VuY3J5cHRlZF9pbm9kZShpbm9kZSkgJiYKIAkJCQlT X0lTUkVHKGlub2RlLT5pX21vZGUpOwpAQCAtMzQyNSw3ICszNDI1LDcgQEAgc3RhdGljIGlu dCBfX2V4dDRfYmxvY2tfemVyb19wYWdlX3JhbmdlKGhhbmRsZV90ICpoYW5kbGUsCiAKIAlp ZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsKIAkJZXJyID0gLUVJTzsKLQkJbGxfcndfYmxv Y2soUkVBRCwgMSwgJmJoKTsKKwkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIDAsIDEsICZi aCk7CiAJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJLyogVWhodWguIFJlYWQgZXJyb3IuIENv bXBsYWluIGFuZCBwdW50LiAqLwogCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpCmRpZmYg LS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9mcy9leHQ0L25hbWVpLmMKaW5kZXggYTk2OWFi My4uOWI4ZmFhZCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9uYW1laS5jCisrKyBiL2ZzL2V4dDQv bmFtZWkuYwpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgcmVzdGFydDoKIAkJCQl9CiAJCQkJYmhf dXNlW3JhX21heF0gPSBiaDsKIAkJCQlpZiAoYmgpCi0JCQkJCWxsX3J3X2Jsb2NrKFJFQUQg fCBSRVFfTUVUQSB8IFJFUV9QUklPLAorCQkJCQlsbF9yd19ibG9jayhSRVFfT1BfUkVBRCwg UkVRX01FVEEgfCBSRVFfUFJJTywKIAkJCQkJCSAgICAxLCAmYmgpOwogCQkJfQogCQl9CmRp ZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmMKaW5kZXggZmRj NGRhOS4uNjY2M2QwNiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4 dDQvc3VwZXIuYwpAQCAtNDE2MSw3ICs0MTYxLDcgQEAgc3RhdGljIGpvdXJuYWxfdCAqZXh0 NF9nZXRfZGV2X2pvdXJuYWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAkJZ290byBvdXRf YmRldjsKIAl9CiAJam91cm5hbC0+al9wcml2YXRlID0gc2I7Ci0JbGxfcndfYmxvY2soUkVB RCB8IFJFUV9NRVRBIHwgUkVRX1BSSU8sIDEsICZqb3VybmFsLT5qX3NiX2J1ZmZlcik7CisJ bGxfcndfYmxvY2soUkVRX09QX1JFQUQsIFJFUV9NRVRBIHwgUkVRX1BSSU8sIDEsICZqb3Vy bmFsLT5qX3NiX2J1ZmZlcik7CiAJd2FpdF9vbl9idWZmZXIoam91cm5hbC0+al9zYl9idWZm ZXIpOwogCWlmICghYnVmZmVyX3VwdG9kYXRlKGpvdXJuYWwtPmpfc2JfYnVmZmVyKSkgewog CQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsICJJL08gZXJyb3Igb24gam91cm5hbCBkZXZpY2Ui KTsKZGlmZiAtLWdpdCBhL2ZzL2dmczIvYm1hcC5jIGIvZnMvZ2ZzMi9ibWFwLmMKaW5kZXgg OTY3MTU0Yy4uMWEyMjk1MiAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9ibWFwLmMKKysrIGIvZnMv Z2ZzMi9ibWFwLmMKQEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgaW50IGdmczJfYmxvY2tf dHJ1bmNhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IGZy b20pCiAKIAlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsKIAkJZXJyID0gLUVJTzsKLQkJ bGxfcndfYmxvY2soUkVBRCwgMSwgJmJoKTsKKwkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQs IDAsIDEsICZiaCk7CiAJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJLyogVWhodWguIFJlYWQg ZXJyb3IuIENvbXBsYWluIGFuZCBwdW50LiAqLwogCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShi aCkpCmRpZmYgLS1naXQgYS9mcy9nZnMyL21ldGFfaW8uYyBiL2ZzL2dmczIvbWV0YV9pby5j CmluZGV4IGZmNDgzYmMuLjc5NWFmMzAgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvbWV0YV9pby5j CisrKyBiL2ZzL2dmczIvbWV0YV9pby5jCkBAIC0zNzksNyArMzc5LDcgQEAgc3RydWN0IGJ1 ZmZlcl9oZWFkICpnZnMyX21ldGFfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1NjQgZGJs b2NrLCB1MzIgZXh0bGVuKQogCWlmIChidWZmZXJfdXB0b2RhdGUoZmlyc3RfYmgpKQogCQln b3RvIG91dDsKIAlpZiAoIWJ1ZmZlcl9sb2NrZWQoZmlyc3RfYmgpKQotCQlsbF9yd19ibG9j ayhSRUFEX1NZTkMgfCBSRVFfTUVUQSwgMSwgJmZpcnN0X2JoKTsKKwkJbGxfcndfYmxvY2so UkVRX09QX1JFQUQsIFJFQURfU1lOQyB8IFJFUV9NRVRBLCAxLCAmZmlyc3RfYmgpOwogCiAJ ZGJsb2NrKys7CiAJZXh0bGVuLS07CkBAIC0zODgsNyArMzg4LDcgQEAgc3RydWN0IGJ1ZmZl cl9oZWFkICpnZnMyX21ldGFfcmEoc3RydWN0IGdmczJfZ2xvY2sgKmdsLCB1NjQgZGJsb2Nr LCB1MzIgZXh0bGVuKQogCQliaCA9IGdmczJfZ2V0YnVmKGdsLCBkYmxvY2ssIENSRUFURSk7 CiAKIAkJaWYgKCFidWZmZXJfdXB0b2RhdGUoYmgpICYmICFidWZmZXJfbG9ja2VkKGJoKSkK LQkJCWxsX3J3X2Jsb2NrKFJFQURBIHwgUkVRX01FVEEsIDEsICZiaCk7CisJCQlsbF9yd19i bG9jayhSRVFfT1BfUkVBRCwgUkVBREEgfCBSRVFfTUVUQSwgMSwgJmJoKTsKIAkJYnJlbHNl KGJoKTsKIAkJZGJsb2NrKys7CiAJCWV4dGxlbi0tOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9x dW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jCmluZGV4IDNhMzEyMjYuLjg0MWYxNWEgMTAwNjQ0 Ci0tLSBhL2ZzL2dmczIvcXVvdGEuYworKysgYi9mcy9nZnMyL3F1b3RhLmMKQEAgLTY5Nyw3 ICs2OTcsNyBAQCBzdGF0aWMgaW50IGdmczJfd3JpdGVfYnVmX3RvX3BhZ2Uoc3RydWN0IGdm czJfaW5vZGUgKmlwLCB1bnNpZ25lZCBsb25nIGluZGV4LAogCQlpZiAoUGFnZVVwdG9kYXRl KHBhZ2UpKQogCQkJc2V0X2J1ZmZlcl91cHRvZGF0ZShiaCk7CiAJCWlmICghYnVmZmVyX3Vw dG9kYXRlKGJoKSkgewotCQkJbGxfcndfYmxvY2soUkVBRCB8IFJFUV9NRVRBLCAxLCAmYmgp OworCQkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIFJFUV9NRVRBLCAxLCAmYmgpOwogCQkJ d2FpdF9vbl9idWZmZXIoYmgpOwogCQkJaWYgKCFidWZmZXJfdXB0b2RhdGUoYmgpKQogCQkJ CWdvdG8gdW5sb2NrX291dDsKZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2NvbXByZXNzLmMgYi9m cy9pc29mcy9jb21wcmVzcy5jCmluZGV4IGYzMTFiZjAuLmY5YjVmYzggMTAwNjQ0Ci0tLSBh L2ZzL2lzb2ZzL2NvbXByZXNzLmMKKysrIGIvZnMvaXNvZnMvY29tcHJlc3MuYwpAQCAtODEs NyArODEsNyBAQCBzdGF0aWMgbG9mZl90IHppc29mc191bmNvbXByZXNzX2Jsb2NrKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBibG9ja19zdGFydCwKIAlibG9ja251bSA9IGJsb2Nr X3N0YXJ0ID4+IGJ1ZnNoaWZ0OwogCW1lbXNldChiaHMsIDAsIChuZWVkYmxvY2tzICsgMSkg KiBzaXplb2Yoc3RydWN0IGJ1ZmZlcl9oZWFkICopKTsKIAloYXZlYmxvY2tzID0gaXNvZnNf Z2V0X2Jsb2Nrcyhpbm9kZSwgYmxvY2tudW0sIGJocywgbmVlZGJsb2Nrcyk7Ci0JbGxfcndf YmxvY2soUkVBRCwgaGF2ZWJsb2NrcywgYmhzKTsKKwlsbF9yd19ibG9jayhSRVFfT1BfUkVB RCwgMCwgaGF2ZWJsb2NrcywgYmhzKTsKIAogCWN1cmJoID0gMDsKIAljdXJwYWdlID0gMDsK ZGlmZiAtLWdpdCBhL2ZzL2piZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5k ZXggM2I3ZGIwYi4uNzEwNGQ3NiAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysr IGIvZnMvamJkMi9qb3VybmFsLmMKQEAgLTE0NzQsNyArMTQ3NCw3IEBAIHN0YXRpYyBpbnQg am91cm5hbF9nZXRfc3VwZXJibG9jayhqb3VybmFsX3QgKmpvdXJuYWwpCiAKIAlKX0FTU0VS VChiaCAhPSBOVUxMKTsKIAlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsKLQkJbGxfcndf YmxvY2soUkVBRCwgMSwgJmJoKTsKKwkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIDAsIDEs ICZiaCk7CiAJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJaWYgKCFidWZmZXJfdXB0b2RhdGUo YmgpKSB7CiAJCQlwcmludGsoS0VSTl9FUlIKZGlmZiAtLWdpdCBhL2ZzL2piZDIvcmVjb3Zl cnkuYyBiL2ZzL2piZDIvcmVjb3ZlcnkuYwppbmRleCA3ZjI3N2U0Li44ZDY2ZWE5IDEwMDY0 NAotLS0gYS9mcy9qYmQyL3JlY292ZXJ5LmMKKysrIGIvZnMvamJkMi9yZWNvdmVyeS5jCkBA IC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGludCBkb19yZWFkYWhlYWQoam91cm5hbF90ICpq b3VybmFsLCB1bnNpZ25lZCBpbnQgc3RhcnQpCiAJCWlmICghYnVmZmVyX3VwdG9kYXRlKGJo KSAmJiAhYnVmZmVyX2xvY2tlZChiaCkpIHsKIAkJCWJ1ZnNbbmJ1ZnMrK10gPSBiaDsKIAkJ CWlmIChuYnVmcyA9PSBNQVhCVUYpIHsKLQkJCQlsbF9yd19ibG9jayhSRUFELCBuYnVmcywg YnVmcyk7CisJCQkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQsIDAsIG5idWZzLCBidWZzKTsK IAkJCQlqb3VybmFsX2JyZWxzZV9hcnJheShidWZzLCBuYnVmcyk7CiAJCQkJbmJ1ZnMgPSAw OwogCQkJfQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbnQgZG9fcmVhZGFoZWFkKGpv dXJuYWxfdCAqam91cm5hbCwgdW5zaWduZWQgaW50IHN0YXJ0KQogCX0KIAogCWlmIChuYnVm cykKLQkJbGxfcndfYmxvY2soUkVBRCwgbmJ1ZnMsIGJ1ZnMpOworCQlsbF9yd19ibG9jayhS RVFfT1BfUkVBRCwgMCwgbmJ1ZnMsIGJ1ZnMpOwogCWVyciA9IDA7CiAKIGZhaWxlZDoKZGlm ZiAtLWdpdCBhL2ZzL29jZnMyL2FvcHMuYyBiL2ZzL29jZnMyL2FvcHMuYwppbmRleCA3ZjYw NDcyLi40MGJjNThhIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9hb3BzLmMKKysrIGIvZnMvb2Nm czIvYW9wcy5jCkBAIC0xMTQzLDcgKzExNDMsNyBAQCBpbnQgb2NmczJfbWFwX3BhZ2VfYmxv Y2tzKHN0cnVjdCBwYWdlICpwYWdlLCB1NjQgKnBfYmxrbm8sCiAJCQkgICAhYnVmZmVyX25l dyhiaCkgJiYKIAkJCSAgIG9jZnMyX3Nob3VsZF9yZWFkX2Jsayhpbm9kZSwgcGFnZSwgYmxv Y2tfc3RhcnQpICYmCiAJCQkgICAoYmxvY2tfc3RhcnQgPCBmcm9tIHx8IGJsb2NrX2VuZCA+ IHRvKSkgewotCQkJbGxfcndfYmxvY2soUkVBRCwgMSwgJmJoKTsKKwkJCWxsX3J3X2Jsb2Nr KFJFUV9PUF9SRUFELCAwLCAxLCAmYmgpOwogCQkJKndhaXRfYmgrKz1iaDsKIAkJfQogCmRp ZmYgLS1naXQgYS9mcy9vY2ZzMi9zdXBlci5jIGIvZnMvb2NmczIvc3VwZXIuYwppbmRleCAy ZGU0YzhhLi5lODYwYjYwIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9zdXBlci5jCisrKyBiL2Zz L29jZnMyL3N1cGVyLmMKQEAgLTE4MzcsNyArMTgzNyw3IEBAIHN0YXRpYyBpbnQgb2NmczJf Z2V0X3NlY3RvcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCWlmICghYnVmZmVyX2RpcnR5 KCpiaCkpCiAJCWNsZWFyX2J1ZmZlcl91cHRvZGF0ZSgqYmgpOwogCXVubG9ja19idWZmZXIo KmJoKTsKLQlsbF9yd19ibG9jayhSRUFELCAxLCBiaCk7CisJbGxfcndfYmxvY2soUkVRX09Q X1JFQUQsIDAsIDEsIGJoKTsKIAl3YWl0X29uX2J1ZmZlcigqYmgpOwogCWlmICghYnVmZmVy X3VwdG9kYXRlKCpiaCkpIHsKIAkJbWxvZ19lcnJubygtRUlPKTsKZGlmZiAtLWdpdCBhL2Zz L3JlaXNlcmZzL2pvdXJuYWwuYyBiL2ZzL3JlaXNlcmZzL2pvdXJuYWwuYwppbmRleCBkZjY5 NTgxLi5mZWZmMzg5IDEwMDY0NAotLS0gYS9mcy9yZWlzZXJmcy9qb3VybmFsLmMKKysrIGIv ZnMvcmVpc2VyZnMvam91cm5hbC5jCkBAIC04NzIsNyArODcyLDcgQEAgbG9vcF9uZXh0Ogog CQkgKi8KIAkJaWYgKGJ1ZmZlcl9kaXJ0eShiaCkgJiYgdW5saWtlbHkoYmgtPmJfcGFnZS0+ bWFwcGluZyA9PSBOVUxMKSkgewogCQkJc3Bpbl91bmxvY2sobG9jayk7Ci0JCQlsbF9yd19i bG9jayhXUklURSwgMSwgJmJoKTsKKwkJCWxsX3J3X2Jsb2NrKFJFUV9PUF9XUklURSwgMCwg MSwgJmJoKTsKIAkJCXNwaW5fbG9jayhsb2NrKTsKIAkJfQogCQlwdXRfYmgoYmgpOwpAQCAt MTA1OSw3ICsxMDU5LDcgQEAgc3RhdGljIGludCBmbHVzaF9jb21taXRfbGlzdChzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnMsCiAJCWlmICh0YmgpIHsKIAkJCWlmIChidWZmZXJfZGlydHkodGJo KSkgewogCQkgICAgICAgICAgICBkZXB0aCA9IHJlaXNlcmZzX3dyaXRlX3VubG9ja19uZXN0 ZWQocyk7Ci0JCQkgICAgbGxfcndfYmxvY2soV1JJVEUsIDEsICZ0YmgpOworCQkJICAgIGxs X3J3X2Jsb2NrKFJFUV9PUF9XUklURSwgMCwgMSwgJnRiaCk7CiAJCQkgICAgcmVpc2VyZnNf d3JpdGVfbG9ja19uZXN0ZWQocywgZGVwdGgpOwogCQkJfQogCQkJcHV0X2JoKHRiaCkgOwpA QCAtMjI0OCw3ICsyMjQ4LDcgQEAgYWJvcnRfcmVwbGF5OgogCQl9CiAJfQogCS8qIHJlYWQg aW4gdGhlIGxvZyBibG9ja3MsIG1lbWNweSB0byB0aGUgY29ycmVzcG9uZGluZyByZWFsIGJs b2NrICovCi0JbGxfcndfYmxvY2soUkVBRCwgZ2V0X2Rlc2NfdHJhbnNfbGVuKGRlc2MpLCBs b2dfYmxvY2tzKTsKKwlsbF9yd19ibG9jayhSRVFfT1BfUkVBRCwgMCwgZ2V0X2Rlc2NfdHJh bnNfbGVuKGRlc2MpLCBsb2dfYmxvY2tzKTsKIAlmb3IgKGkgPSAwOyBpIDwgZ2V0X2Rlc2Nf dHJhbnNfbGVuKGRlc2MpOyBpKyspIHsKIAogCQl3YWl0X29uX2J1ZmZlcihsb2dfYmxvY2tz W2ldKTsKQEAgLTIzNTAsNyArMjM1MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQg KnJlaXNlcmZzX2JyZWFkYShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpkZXYsCiAJCX0gZWxzZQog CQkJYmhsaXN0W2orK10gPSBiaDsKIAl9Ci0JbGxfcndfYmxvY2soUkVBRCwgaiwgYmhsaXN0 KTsKKwlsbF9yd19ibG9jayhSRVFfT1BfUkVBRCwgMCwgaiwgYmhsaXN0KTsKIAlmb3IgKGkg PSAxOyBpIDwgajsgaSsrKQogCQlicmVsc2UoYmhsaXN0W2ldKTsKIAliaCA9IGJobGlzdFsw XTsKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3N0cmVlLmMgYi9mcy9yZWlzZXJmcy9zdHJl ZS5jCmluZGV4IDI0Y2JlMDEuLjVmOWI2ZGYgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3N0 cmVlLmMKKysrIGIvZnMvcmVpc2VyZnMvc3RyZWUuYwpAQCAtNTUxLDcgKzU1MSw3IEBAIHN0 YXRpYyBpbnQgc2VhcmNoX2J5X2tleV9yZWFkYShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsCiAJ CWlmICghYnVmZmVyX3VwdG9kYXRlKGJoW2pdKSkgewogCQkJaWYgKGRlcHRoID09IC0xKQog CQkJCWRlcHRoID0gcmVpc2VyZnNfd3JpdGVfdW5sb2NrX25lc3RlZChzKTsKLQkJCWxsX3J3 X2Jsb2NrKFJFQURBLCAxLCBiaCArIGopOworCQkJbGxfcndfYmxvY2soUkVRX09QX1JFQUQs IFJFQURBLCAxLCBiaCArIGopOwogCQl9CiAJCWJyZWxzZShiaFtqXSk7CiAJfQpAQCAtNjYw LDcgKzY2MCw3IEBAIGludCBzZWFyY2hfYnlfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is IGNvbnN0IHN0cnVjdCBjcHVfa2V5ICprZXksCiAJCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShi aCkgJiYgZGVwdGggPT0gLTEpCiAJCQkJZGVwdGggPSByZWlzZXJmc193cml0ZV91bmxvY2tf bmVzdGVkKHNiKTsKIAotCQkJbGxfcndfYmxvY2soUkVBRCwgMSwgJmJoKTsKKwkJCWxsX3J3 X2Jsb2NrKFJFUV9PUF9SRUFELCAwLCAxLCAmYmgpOwogCQkJd2FpdF9vbl9idWZmZXIoYmgp OwogCiAJCQlpZiAoZGVwdGggIT0gLTEpCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9zdXBl ci5jIGIvZnMvcmVpc2VyZnMvc3VwZXIuYwppbmRleCA0YTYyZmU4Li42OGY1ZjVjIDEwMDY0 NAotLS0gYS9mcy9yZWlzZXJmcy9zdXBlci5jCisrKyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMK QEAgLTE2NTksNyArMTY1OSw3IEBAIHN0YXRpYyBpbnQgcmVhZF9zdXBlcl9ibG9jayhzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCBvZmZzZXQpCiAvKiBhZnRlciBqb3VybmFsIHJlcGxh eSwgcmVyZWFkIGFsbCBiaXRtYXAgYW5kIHN1cGVyIGJsb2NrcyAqLwogc3RhdGljIGludCBy ZXJlYWRfbWV0YV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzKQogewotCWxsX3J3X2Js b2NrKFJFQUQsIDEsICZTQl9CVUZGRVJfV0lUSF9TQihzKSk7CisJbGxfcndfYmxvY2soUkVR X09QX1JFQUQsIDAsIDEsICZTQl9CVUZGRVJfV0lUSF9TQihzKSk7CiAJd2FpdF9vbl9idWZm ZXIoU0JfQlVGRkVSX1dJVEhfU0IocykpOwogCWlmICghYnVmZmVyX3VwdG9kYXRlKFNCX0JV RkZFUl9XSVRIX1NCKHMpKSkgewogCQlyZWlzZXJmc193YXJuaW5nKHMsICJyZWlzZXJmcy0y NTA0IiwgImVycm9yIHJlYWRpbmcgdGhlIHN1cGVyIik7CmRpZmYgLS1naXQgYS9mcy9zcXVh c2hmcy9ibG9jay5jIGIvZnMvc3F1YXNoZnMvYmxvY2suYwppbmRleCAwY2VhOWI5Li41OTM3 NWJlIDEwMDY0NAotLS0gYS9mcy9zcXVhc2hmcy9ibG9jay5jCisrKyBiL2ZzL3NxdWFzaGZz L2Jsb2NrLmMKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnQgc3F1YXNoZnNfcmVhZF9kYXRhKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBpbmRleCwgaW50IGxlbmd0aCwKIAkJCQlnb3Rv IGJsb2NrX3JlbGVhc2U7CiAJCQlieXRlcyArPSBtc2Jsay0+ZGV2Ymxrc2l6ZTsKIAkJfQot CQlsbF9yd19ibG9jayhSRUFELCBiLCBiaCk7CisJCWxsX3J3X2Jsb2NrKFJFUV9PUF9SRUFE LCAwLCBiLCBiaCk7CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogTWV0YWRhdGEgYmxvY2suCkBA IC0xNTYsNyArMTU2LDcgQEAgaW50IHNxdWFzaGZzX3JlYWRfZGF0YShzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCB1NjQgaW5kZXgsIGludCBsZW5ndGgsCiAJCQkJZ290byBibG9ja19yZWxl YXNlOwogCQkJYnl0ZXMgKz0gbXNibGstPmRldmJsa3NpemU7CiAJCX0KLQkJbGxfcndfYmxv Y2soUkVBRCwgYiAtIDEsIGJoICsgMSk7CisJCWxsX3J3X2Jsb2NrKFJFUV9PUF9SRUFELCAw LCBiIC0gMSwgYmggKyAxKTsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CmRp ZmYgLS1naXQgYS9mcy91ZGYvZGlyLmMgYi9mcy91ZGYvZGlyLmMKaW5kZXggNTQxZDljNi4u OTFiOWYwMiAxMDA2NDQKLS0tIGEvZnMvdWRmL2Rpci5jCisrKyBiL2ZzL3VkZi9kaXIuYwpA QCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBpbnQgdWRmX3JlYWRkaXIoc3RydWN0IGZpbGUg KmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQogCQkJCQlicmVsc2UodG1wKTsKIAkJ CX0KIAkJCWlmIChudW0pIHsKLQkJCQlsbF9yd19ibG9jayhSRUFEQSwgbnVtLCBiaGEpOwor CQkJCWxsX3J3X2Jsb2NrKFJFUV9PUF9SRUFELCBSRUFEQSwgbnVtLCBiaGEpOwogCQkJCWZv ciAoaSA9IDA7IGkgPCBudW07IGkrKykKIAkJCQkJYnJlbHNlKGJoYVtpXSk7CiAJCQl9CmRp ZmYgLS1naXQgYS9mcy91ZGYvZGlyZWN0b3J5LmMgYi9mcy91ZGYvZGlyZWN0b3J5LmMKaW5k ZXggYzc2M2ZkYS4uNzFmM2UwYiAxMDA2NDQKLS0tIGEvZnMvdWRmL2RpcmVjdG9yeS5jCisr KyBiL2ZzL3VkZi9kaXJlY3RvcnkuYwpAQCAtODcsNyArODcsNyBAQCBzdHJ1Y3QgZmlsZUlk ZW50RGVzYyAqdWRmX2ZpbGVpZGVudF9yZWFkKHN0cnVjdCBpbm9kZSAqZGlyLCBsb2ZmX3Qg Km5mX3BvcywKIAkJCQkJYnJlbHNlKHRtcCk7CiAJCQl9CiAJCQlpZiAobnVtKSB7Ci0JCQkJ bGxfcndfYmxvY2soUkVBREEsIG51bSwgYmhhKTsKKwkJCQlsbF9yd19ibG9jayhSRVFfT1Bf UkVBRCwgUkVBREEsIG51bSwgYmhhKTsKIAkJCQlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKysp CiAJCQkJCWJyZWxzZShiaGFbaV0pOwogCQkJfQpkaWZmIC0tZ2l0IGEvZnMvdWRmL2lub2Rl LmMgYi9mcy91ZGYvaW5vZGUuYwppbmRleCA4ZDBiM2FkLi4yNDBjMGNjIDEwMDY0NAotLS0g YS9mcy91ZGYvaW5vZGUuYworKysgYi9mcy91ZGYvaW5vZGUuYwpAQCAtMTE5MSw3ICsxMTkx LDcgQEAgc3RydWN0IGJ1ZmZlcl9oZWFkICp1ZGZfYnJlYWQoc3RydWN0IGlub2RlICppbm9k ZSwgaW50IGJsb2NrLAogCWlmIChidWZmZXJfdXB0b2RhdGUoYmgpKQogCQlyZXR1cm4gYmg7 CiAKLQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgpOworCWxsX3J3X2Jsb2NrKFJFUV9PUF9S RUFELCAwLCAxLCAmYmgpOwogCiAJd2FpdF9vbl9idWZmZXIoYmgpOwogCWlmIChidWZmZXJf dXB0b2RhdGUoYmgpKQpkaWZmIC0tZ2l0IGEvZnMvdWZzL2JhbGxvYy5jIGIvZnMvdWZzL2Jh bGxvYy5jCmluZGV4IGRjNWZhZTYuLjI2YTNiYjEgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy9iYWxs b2MuYworKysgYi9mcy91ZnMvYmFsbG9jLmMKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMg dm9pZCB1ZnNfY2hhbmdlX2Jsb2NrbnIoc3RydWN0IGlub2RlICppbm9kZSwgc2VjdG9yX3Qg YmVnLAogCQkJaWYgKCFidWZmZXJfbWFwcGVkKGJoKSkKIAkJCQkJbWFwX2JoKGJoLCBpbm9k ZS0+aV9zYiwgb2xkYiArIHBvcyk7CiAJCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsK LQkJCQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgpOworCQkJCWxsX3J3X2Jsb2NrKFJFUV9P UF9SRUFELCAwLCAxLCAmYmgpOwogCQkJCXdhaXRfb25fYnVmZmVyKGJoKTsKIAkJCQlpZiAo IWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsKIAkJCQkJdWZzX2Vycm9yKGlub2RlLT5pX3NiLCBf X2Z1bmNfXywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaCBiL2lu Y2x1ZGUvbGludXgvYnVmZmVyX2hlYWQuaAppbmRleCBmZTJmODY4Li4xODk2MmFmIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L2J1ZmZlcl9oZWFkLmgKKysrIGIvaW5jbHVkZS9saW51 eC9idWZmZXJfaGVhZC5oCkBAIC0xODcsNyArMTg3LDcgQEAgc3RydWN0IGJ1ZmZlcl9oZWFk ICphbGxvY19idWZmZXJfaGVhZChnZnBfdCBnZnBfZmxhZ3MpOwogdm9pZCBmcmVlX2J1ZmZl cl9oZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKTsKIHZvaWQgdW5sb2NrX2J1ZmZlcihz dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKIHZvaWQgX19sb2NrX2J1ZmZlcihzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoKTsKLXZvaWQgbGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZm ZXJfaGVhZCAqIGJoW10pOwordm9pZCBsbF9yd19ibG9jayhpbnQsIGludCwgaW50LCBzdHJ1 Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKIGludCBzeW5jX2RpcnR5X2J1ZmZlcihzdHJ1Y3Qg YnVmZmVyX2hlYWQgKmJoKTsKIGludCBfX3N5bmNfZGlydHlfYnVmZmVyKHN0cnVjdCBidWZm ZXJfaGVhZCAqYmgsIGludCBvcCwgaW50IG9wX2ZsYWdzKTsKIHZvaWQgd3JpdGVfZGlydHlf YnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBvcF9mbGFncyk7Ci0tIAoxLjgu My4xCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwOS1mMmZzLXNldC1iaV9vcC10by1SRVFf T1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMzM1MjYAMTI2MzIx NTQyMzAAMDE2MjAxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gZTUz MzcyNzEwZjQ0OTBjMDI3YTY1NGE5MmM4MzdiZTJiNWFkNDRhNiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0 ZTogTW9uLCA3IERlYyAyMDE1IDE0OjMzOjUxIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAwOS8z MF0gZjJmczogc2V0IGJpX29wIHRvIFJFUV9PUAoKVGhpcyBwYXRjaCBoYXMgZjJmcyBzZXQg dGhlIGJpbyBiaV9vcCB0byBhIFJFUV9PUCwgYW5kCnJxX2ZsYWdfYml0cyB0byBiaV9ydy4K ClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0t LQogZnMvZjJmcy9jaGVja3BvaW50LmMgICAgICAgIHwgMTAgKysrKysrLS0tLQogZnMvZjJm cy9kYXRhLmMgICAgICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tCiBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgfCAgNSArKystLQogZnMvZjJm cy9nYy5jICAgICAgICAgICAgICAgIHwgIDkgKysrKysrLS0tCiBmcy9mMmZzL2lubGluZS5j ICAgICAgICAgICAgfCAgMyArKy0KIGZzL2YyZnMvbm9kZS5jICAgICAgICAgICAgICB8ICA4 ICsrKysrLS0tCiBmcy9mMmZzL3NlZ21lbnQuYyAgICAgICAgICAgfCAxMCArKysrKysrLS0t CiBmcy9mMmZzL3RyYWNlLmMgICAgICAgICAgICAgfCAgOCArKysrKy0tLQogaW5jbHVkZS90 cmFjZS9ldmVudHMvZjJmcy5oIHwgMzQgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLQogOSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9mcy9mMmZzL2NoZWNrcG9pbnQuYyBiL2ZzL2YyZnMvY2hlY2tw b2ludC5jCmluZGV4IGY2NjFkODAuLmNlNDk4NGQgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvY2hl Y2twb2ludC5jCisrKyBiL2ZzL2YyZnMvY2hlY2twb2ludC5jCkBAIC01NSwxMyArNTUsMTQg QEAgc3RhdGljIHN0cnVjdCBwYWdlICpfX2dldF9tZXRhX3BhZ2Uoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLCBwZ29mZl90IGluZGV4LAogCXN0cnVjdCBmMmZzX2lvX2luZm8gZmlvID0g ewogCQkuc2JpID0gc2JpLAogCQkudHlwZSA9IE1FVEEsCi0JCS5ydyA9IFJFQURfU1lOQyB8 IFJFUV9NRVRBIHwgUkVRX1BSSU8sCisJCS5vcCA9IFJFUV9PUF9SRUFELAorCQkub3BfZmxh Z3MgPSBSRUFEX1NZTkMgfCBSRVFfTUVUQSB8IFJFUV9QUklPLAogCQkuYmxrX2FkZHIgPSBp bmRleCwKIAkJLmVuY3J5cHRlZF9wYWdlID0gTlVMTCwKIAl9OwogCiAJaWYgKHVubGlrZWx5 KCFpc19tZXRhKSkKLQkJZmlvLnJ3ICY9IH5SRVFfTUVUQTsKKwkJZmlvLm9wX2ZsYWdzICY9 IH5SRVFfTUVUQTsKIHJlcGVhdDoKIAlwYWdlID0gZ3JhYl9jYWNoZV9wYWdlKG1hcHBpbmcs IGluZGV4KTsKIAlpZiAoIXBhZ2UpIHsKQEAgLTE0OSwxMiArMTUwLDEzIEBAIGludCByYV9t ZXRhX3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBzdGFydCwgaW50 IG5ycGFnZXMsCiAJc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7CiAJCS5zYmkgPSBzYmks CiAJCS50eXBlID0gTUVUQSwKLQkJLnJ3ID0gc3luYyA/IChSRUFEX1NZTkMgfCBSRVFfTUVU QSB8IFJFUV9QUklPKSA6IFJFQURBLAorCQkub3AgPSBSRVFfT1BfUkVBRCwKKwkJLm9wX2Zs YWdzID0gc3luYyA/IChSRUFEX1NZTkMgfCBSRVFfTUVUQSB8IFJFUV9QUklPKSA6IFJFQURB LAogCQkuZW5jcnlwdGVkX3BhZ2UgPSBOVUxMLAogCX07CiAKIAlpZiAodW5saWtlbHkodHlw ZSA9PSBNRVRBX1BPUikpCi0JCWZpby5ydyAmPSB+UkVRX01FVEE7CisJCWZpby5vcF9mbGFn cyAmPSB+UkVRX01FVEE7CiAKIAlmb3IgKDsgbnJwYWdlcy0tID4gMDsgYmxrbm8rKykgewog CmRpZmYgLS1naXQgYS9mcy9mMmZzL2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4IDFi MmRiYWEuLjJlODAwZTMgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2Yy ZnMvZGF0YS5jCkBAIC0xMDcsMTEgKzEwNywxMiBAQCBzdGF0aWMgdm9pZCBfX3N1Ym1pdF9t ZXJnZWRfYmlvKHN0cnVjdCBmMmZzX2Jpb19pbmZvICppbykKIAlpZiAoIWlvLT5iaW8pCiAJ CXJldHVybjsKIAotCWlmIChpc19yZWFkX2lvKGZpby0+cncpKQorCWlmIChpc19yZWFkX2lv KGZpby0+b3ApKQogCQl0cmFjZV9mMmZzX3N1Ym1pdF9yZWFkX2Jpbyhpby0+c2JpLT5zYiwg ZmlvLCBpby0+YmlvKTsKIAllbHNlCiAJCXRyYWNlX2YyZnNfc3VibWl0X3dyaXRlX2Jpbyhp by0+c2JpLT5zYiwgZmlvLCBpby0+YmlvKTsKLQlpby0+YmlvLT5iaV9ydyB8PSBmaW8tPnJ3 OworCWlvLT5iaW8tPmJpX29wID0gZmlvLT5vcDsKKwlpby0+YmlvLT5iaV9ydyB8PSBmaW8t Pm9wX2ZsYWdzOwogCiAJc3VibWl0X2Jpbyhpby0+YmlvKTsKIAlpby0+YmlvID0gTlVMTDsK QEAgLTEzMCwxMCArMTMxLDEyIEBAIHZvaWQgZjJmc19zdWJtaXRfbWVyZ2VkX2JpbyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksCiAJLyogY2hhbmdlIE1FVEEgdG8gTUVUQV9GTFVTSCBp biB0aGUgY2hlY2twb2ludCBwcm9jZWR1cmUgKi8KIAlpZiAodHlwZSA+PSBNRVRBX0ZMVVNI KSB7CiAJCWlvLT5maW8udHlwZSA9IE1FVEFfRkxVU0g7CisJCWlvLT5maW8ub3AgPSBSRVFf T1BfV1JJVEU7CiAJCWlmICh0ZXN0X29wdChzYmksIE5PQkFSUklFUikpCi0JCQlpby0+Zmlv LnJ3ID0gV1JJVEVfRkxVU0ggfCBSRVFfTUVUQSB8IFJFUV9QUklPOworCQkJaW8tPmZpby5v cF9mbGFncyA9IFdSSVRFX0ZMVVNIIHwgUkVRX01FVEEgfCBSRVFfUFJJTzsKIAkJZWxzZQot CQkJaW8tPmZpby5ydyA9IFdSSVRFX0ZMVVNIX0ZVQSB8IFJFUV9NRVRBIHwgUkVRX1BSSU87 CisJCQlpby0+ZmlvLm9wX2ZsYWdzID0gV1JJVEVfRkxVU0hfRlVBIHwgUkVRX01FVEEgfAor CQkJCQkJCQlSRVFfUFJJTzsKIAl9CiAJX19zdWJtaXRfbWVyZ2VkX2Jpbyhpbyk7CiAJdXBf d3JpdGUoJmlvLT5pb19yd3NlbSk7CkBAIC0xNTIsMTMgKzE1NSwxNCBAQCBpbnQgZjJmc19z dWJtaXRfcGFnZV9iaW8oc3RydWN0IGYyZnNfaW9faW5mbyAqZmlvKQogCWYyZnNfdHJhY2Vf aW9zKGZpbywgMCk7CiAKIAkvKiBBbGxvY2F0ZSBhIG5ldyBiaW8gKi8KLQliaW8gPSBfX2Jp b19hbGxvYyhmaW8tPnNiaSwgZmlvLT5ibGtfYWRkciwgMSwgaXNfcmVhZF9pbyhmaW8tPnJ3 KSk7CisJYmlvID0gX19iaW9fYWxsb2MoZmlvLT5zYmksIGZpby0+YmxrX2FkZHIsIDEsIGlz X3JlYWRfaW8oZmlvLT5vcCkpOwogCiAJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBB R0VfQ0FDSEVfU0laRSwgMCkgPCBQQUdFX0NBQ0hFX1NJWkUpIHsKIAkJYmlvX3B1dChiaW8p OwogCQlyZXR1cm4gLUVGQVVMVDsKIAl9Ci0JYmlvLT5iaV9ydyB8PSBmaW8tPnJ3OworCWJp by0+Ymlfb3AgPSBmaW8tPm9wOworCWJpby0+YmlfcncgfD0gZmlvLT5vcF9mbGFnczsKIAog CXN1Ym1pdF9iaW8oYmlvKTsKIAlyZXR1cm4gMDsKQEAgLTE2OSw3ICsxNzMsNyBAQCB2b2lk IGYyZnNfc3VibWl0X3BhZ2VfbWJpbyhzdHJ1Y3QgZjJmc19pb19pbmZvICpmaW8pCiAJc3Ry dWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gZmlvLT5zYmk7CiAJZW51bSBwYWdlX3R5cGUgYnR5 cGUgPSBQQUdFX1RZUEVfT0ZfQklPKGZpby0+dHlwZSk7CiAJc3RydWN0IGYyZnNfYmlvX2lu Zm8gKmlvOwotCWJvb2wgaXNfcmVhZCA9IGlzX3JlYWRfaW8oZmlvLT5ydyk7CisJYm9vbCBp c19yZWFkID0gaXNfcmVhZF9pbyhmaW8tPm9wKTsKIAlzdHJ1Y3QgcGFnZSAqYmlvX3BhZ2U7 CiAKIAlpbyA9IGlzX3JlYWQgPyAmc2JpLT5yZWFkX2lvIDogJnNiaS0+d3JpdGVfaW9bYnR5 cGVdOwpAQCAtMTgyLDcgKzE4Niw3IEBAIHZvaWQgZjJmc19zdWJtaXRfcGFnZV9tYmlvKHN0 cnVjdCBmMmZzX2lvX2luZm8gKmZpbykKIAkJaW5jX3BhZ2VfY291bnQoc2JpLCBGMkZTX1dS SVRFQkFDSyk7CiAKIAlpZiAoaW8tPmJpbyAmJiAoaW8tPmxhc3RfYmxvY2tfaW5fYmlvICE9 IGZpby0+YmxrX2FkZHIgLSAxIHx8Ci0JCQkJCQlpby0+ZmlvLnJ3ICE9IGZpby0+cncpKQor CQkJCQkJaW8tPmZpby5vcCAhPSBmaW8tPm9wKSkKIAkJX19zdWJtaXRfbWVyZ2VkX2Jpbyhp byk7CiBhbGxvY19uZXc6CiAJaWYgKGlvLT5iaW8gPT0gTlVMTCkgewpAQCAtMjc4LDcgKzI4 Miw3IEBAIGludCBmMmZzX2dldF9ibG9jayhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBn b2ZmX3QgaW5kZXgpCiB9CiAKIHN0cnVjdCBwYWdlICpnZXRfcmVhZF9kYXRhX3BhZ2Uoc3Ry dWN0IGlub2RlICppbm9kZSwgcGdvZmZfdCBpbmRleCwKLQkJCQkJCWludCBydywgYm9vbCBm b3Jfd3JpdGUpCisJCQkJCQlpbnQgb3BfZmxhZ3MsIGJvb2wgZm9yX3dyaXRlKQogewogCXN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gaW5vZGUtPmlfbWFwcGluZzsKIAlzdHJ1 Y3QgZG5vZGVfb2ZfZGF0YSBkbjsKQEAgLTI4OCw3ICsyOTIsOCBAQCBzdHJ1Y3QgcGFnZSAq Z2V0X3JlYWRfZGF0YV9wYWdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHBnb2ZmX3QgaW5kZXgs CiAJc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7CiAJCS5zYmkgPSBGMkZTX0lfU0IoaW5v ZGUpLAogCQkudHlwZSA9IERBVEEsCi0JCS5ydyA9IHJ3LAorCQkub3AgPSBSRVFfT1BfUkVB RCwKKwkJLm9wX2ZsYWdzID0gb3BfZmxhZ3MsCiAJCS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEws CiAJfTsKIApAQCAtOTg1LDcgKzk5MCw3IEBAIHN1Ym1pdF9hbmRfcmVhbGxvYzoKIAkJCWJp by0+YmlfaXRlci5iaV9zZWN0b3IgPSBTRUNUT1JfRlJPTV9CTE9DSyhibG9ja19ucik7CiAJ CQliaW8tPmJpX2VuZF9pbyA9IGYyZnNfcmVhZF9lbmRfaW87CiAJCQliaW8tPmJpX3ByaXZh dGUgPSBjdHg7Ci0JCQliaW8tPmJpX3J3IHw9IFJFQUQ7CisJCQliaW8tPmJpX29wID0gUkVR X09QX1JFQUQ7CiAJCX0KIAogCQlpZiAoYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgYmxvY2tz aXplLCAwKSA8IGJsb2Nrc2l6ZSkKQEAgLTExMTgsNyArMTEyMyw4IEBAIHN0YXRpYyBpbnQg ZjJmc193cml0ZV9kYXRhX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsCiAJc3RydWN0IGYyZnNf aW9faW5mbyBmaW8gPSB7CiAJCS5zYmkgPSBzYmksCiAJCS50eXBlID0gREFUQSwKLQkJLnJ3 ID0gKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMKSA/IFdSSVRFX1NZTkMgOiBXUklU RSwKKwkJLm9wID0gUkVRX09QX1dSSVRFLAorCQkub3BfZmxhZ3MgPSAod2JjLT5zeW5jX21v ZGUgPT0gV0JfU1lOQ19BTEwpID8gV1JJVEVfU1lOQyA6IDAsCiAJCS5wYWdlID0gcGFnZSwK IAkJLmVuY3J5cHRlZF9wYWdlID0gTlVMTCwKIAl9OwpAQCAtMTQ4Myw3ICsxNDg5LDggQEAg cHV0X25leHQ6CiAJCXN0cnVjdCBmMmZzX2lvX2luZm8gZmlvID0gewogCQkJLnNiaSA9IHNi aSwKIAkJCS50eXBlID0gREFUQSwKLQkJCS5ydyA9IFJFQURfU1lOQywKKwkJCS5vcCA9IFJF UV9PUF9SRUFELAorCQkJLm9wX2ZsYWdzID0gUkVBRF9TWU5DLAogCQkJLmJsa19hZGRyID0g ZG4uZGF0YV9ibGthZGRyLAogCQkJLnBhZ2UgPSBwYWdlLAogCQkJLmVuY3J5cHRlZF9wYWdl ID0gTlVMTCwKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgK aW5kZXggOWRiNTUwMC4uYjM3OWE3ZCAxMDA2NDQKLS0tIGEvZnMvZjJmcy9mMmZzLmgKKysr IGIvZnMvZjJmcy9mMmZzLmgKQEAgLTY4MCwxMyArNjgwLDE0IEBAIGVudW0gcGFnZV90eXBl IHsKIHN0cnVjdCBmMmZzX2lvX2luZm8gewogCXN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaTsJ LyogZjJmc19zYl9pbmZvIHBvaW50ZXIgKi8KIAllbnVtIHBhZ2VfdHlwZSB0eXBlOwkvKiBj b250YWlucyBEQVRBL05PREUvTUVUQS9NRVRBX0ZMVVNIICovCi0JaW50IHJ3OwkJCS8qIGNv bnRhaW5zIFIvUlMvVy9XUyB3aXRoIFJFUV9NRVRBL1JFUV9QUklPICovCisJaW50IG9wOwkJ CS8qIGNvbnRhaW5zIFJFUV9PUF8gKi8KKwlpbnQgb3BfZmxhZ3M7CQkvKiBycV9mbGFnX2Jp dHMgKi8KIAlibG9ja190IGJsa19hZGRyOwkvKiBibG9jayBhZGRyZXNzIHRvIGJlIHdyaXR0 ZW4gKi8KIAlzdHJ1Y3QgcGFnZSAqcGFnZTsJLyogcGFnZSB0byBiZSB3cml0dGVuICovCiAJ c3RydWN0IHBhZ2UgKmVuY3J5cHRlZF9wYWdlOwkvKiBlbmNyeXB0ZWQgcGFnZSAqLwogfTsK IAotI2RlZmluZSBpc19yZWFkX2lvKHJ3KQkoKChydykgJiAxKSA9PSBSRUFEKQorI2RlZmlu ZSBpc19yZWFkX2lvKHJ3KQkocncgPT0gUkVBRCkKIHN0cnVjdCBmMmZzX2Jpb19pbmZvIHsK IAlzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmk7CS8qIGYyZnMgc3VwZXJibG9jayAqLwogCXN0 cnVjdCBiaW8gKmJpbzsJCS8qIGJpb3MgdG8gbWVyZ2UgKi8KZGlmZiAtLWdpdCBhL2ZzL2Yy ZnMvZ2MuYyBiL2ZzL2YyZnMvZ2MuYwppbmRleCBmZWRiZjY3Li43MTYzM2I5IDEwMDY0NAot LS0gYS9mcy9mMmZzL2djLmMKKysrIGIvZnMvZjJmcy9nYy5jCkBAIC01NDAsNyArNTQwLDgg QEAgc3RhdGljIHZvaWQgbW92ZV9lbmNyeXB0ZWRfYmxvY2soc3RydWN0IGlub2RlICppbm9k ZSwgYmxvY2tfdCBiaWR4KQogCXN0cnVjdCBmMmZzX2lvX2luZm8gZmlvID0gewogCQkuc2Jp ID0gRjJGU19JX1NCKGlub2RlKSwKIAkJLnR5cGUgPSBEQVRBLAotCQkucncgPSBSRUFEX1NZ TkMsCisJCS5vcCA9IFJFUV9PUF9SRUFELAorCQkub3BfZmxhZ3MgPSBSRUFEX1NZTkMsCiAJ CS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCiAJfTsKIAlzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBk bjsKQEAgLTYwNyw3ICs2MDgsOCBAQCBzdGF0aWMgdm9pZCBtb3ZlX2VuY3J5cHRlZF9ibG9j ayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBibG9ja190IGJpZHgpCiAJZjJmc193YWl0X29uX3Bh Z2Vfd3JpdGViYWNrKGRuLm5vZGVfcGFnZSwgTk9ERSk7CiAJYWxsb2NhdGVfZGF0YV9ibG9j ayhmaW8uc2JpLCBOVUxMLCBmaW8uYmxrX2FkZHIsCiAJCQkJCSZmaW8uYmxrX2FkZHIsICZz dW0sIENVUlNFR19DT0xEX0RBVEEpOwotCWZpby5ydyA9IFdSSVRFX1NZTkM7CisJZmlvLm9w ID0gUkVRX09QX1dSSVRFOworCWZpby5vcF9mbGFncyA9IFdSSVRFX1NZTkM7CiAJZjJmc19z dWJtaXRfcGFnZV9tYmlvKCZmaW8pOwogCiAJZG4uZGF0YV9ibGthZGRyID0gZmlvLmJsa19h ZGRyOwpAQCAtNjQxLDcgKzY0Myw4IEBAIHN0YXRpYyB2b2lkIG1vdmVfZGF0YV9wYWdlKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIGJsb2NrX3QgYmlkeCwgaW50IGdjX3R5cGUpCiAJCXN0cnVj dCBmMmZzX2lvX2luZm8gZmlvID0gewogCQkJLnNiaSA9IEYyRlNfSV9TQihpbm9kZSksCiAJ CQkudHlwZSA9IERBVEEsCi0JCQkucncgPSBXUklURV9TWU5DLAorCQkJLm9wID0gUkVRX09Q X1dSSVRFLAorCQkJLm9wX2ZsYWdzID0gV1JJVEVfU1lOQywKIAkJCS5wYWdlID0gcGFnZSwK IAkJCS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCiAJCX07CmRpZmYgLS1naXQgYS9mcy9mMmZz L2lubGluZS5jIGIvZnMvZjJmcy9pbmxpbmUuYwppbmRleCBiZGE3MTI2Li5kOGM4OWY4IDEw MDY0NAotLS0gYS9mcy9mMmZzL2lubGluZS5jCisrKyBiL2ZzL2YyZnMvaW5saW5lLmMKQEAg LTExMiw3ICsxMTIsOCBAQCBpbnQgZjJmc19jb252ZXJ0X2lubGluZV9wYWdlKHN0cnVjdCBk bm9kZV9vZl9kYXRhICpkbiwgc3RydWN0IHBhZ2UgKnBhZ2UpCiAJc3RydWN0IGYyZnNfaW9f aW5mbyBmaW8gPSB7CiAJCS5zYmkgPSBGMkZTX0lfU0IoZG4tPmlub2RlKSwKIAkJLnR5cGUg PSBEQVRBLAotCQkucncgPSBXUklURV9TWU5DIHwgUkVRX1BSSU8sCisJCS5vcCA9IFJFUV9P UF9XUklURSwKKwkJLm9wX2ZsYWdzID0gV1JJVEVfU1lOQyB8IFJFUV9QUklPLAogCQkucGFn ZSA9IHBhZ2UsCiAJCS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCiAJfTsKZGlmZiAtLWdpdCBh L2ZzL2YyZnMvbm9kZS5jIGIvZnMvZjJmcy9ub2RlLmMKaW5kZXggN2JjYmM2ZS4uMzI4YTI0 ZCAxMDA2NDQKLS0tIGEvZnMvZjJmcy9ub2RlLmMKKysrIGIvZnMvZjJmcy9ub2RlLmMKQEAg LTEwMDEsMTQgKzEwMDEsMTUgQEAgZmFpbDoKICAqIDA6IGYyZnNfcHV0X3BhZ2UocGFnZSwg MCkKICAqIExPQ0tFRF9QQUdFIG9yIGVycm9yOiBmMmZzX3B1dF9wYWdlKHBhZ2UsIDEpCiAg Ki8KLXN0YXRpYyBpbnQgcmVhZF9ub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBy dykKK3N0YXRpYyBpbnQgcmVhZF9ub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBv cF9mbGFncykKIHsKIAlzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX1BfU0IocGFn ZSk7CiAJc3RydWN0IG5vZGVfaW5mbyBuaTsKIAlzdHJ1Y3QgZjJmc19pb19pbmZvIGZpbyA9 IHsKIAkJLnNiaSA9IHNiaSwKIAkJLnR5cGUgPSBOT0RFLAotCQkucncgPSBydywKKwkJLm9w ID0gUkVRX09QX1JFQUQsCisJCS5vcF9mbGFncyA9IG9wX2ZsYWdzLAogCQkucGFnZSA9IHBh Z2UsCiAJCS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCiAJfTsKQEAgLTEzMDUsNyArMTMwNiw4 IEBAIHN0YXRpYyBpbnQgZjJmc193cml0ZV9ub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2Us CiAJc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7CiAJCS5zYmkgPSBzYmksCiAJCS50eXBl ID0gTk9ERSwKLQkJLnJ3ID0gKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMKSA/IFdS SVRFX1NZTkMgOiBXUklURSwKKwkJLm9wID0gUkVRX09QX1dSSVRFLAorCQkub3BfZmxhZ3Mg PSAod2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19BTEwpID8gV1JJVEVfU1lOQyA6IDAsCiAJ CS5wYWdlID0gcGFnZSwKIAkJLmVuY3J5cHRlZF9wYWdlID0gTlVMTCwKIAl9OwpkaWZmIC0t Z2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwppbmRleCA0Nzk2 OGU1Li4wMDJkMjQ2IDEwMDY0NAotLS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysgYi9mcy9m MmZzL3NlZ21lbnQuYwpAQCAtMjIwLDcgKzIyMCw4IEBAIGludCBjb21taXRfaW5tZW1fcGFn ZXMoc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBhYm9ydCkKIAlzdHJ1Y3QgZjJmc19pb19p bmZvIGZpbyA9IHsKIAkJLnNiaSA9IHNiaSwKIAkJLnR5cGUgPSBEQVRBLAotCQkucncgPSBX UklURV9TWU5DIHwgUkVRX1BSSU8sCisJCS5vcCA9IFJFUV9PUF9XUklURSwKKwkJLm9wX2Zs YWdzID0gV1JJVEVfU1lOQyB8IFJFUV9QUklPLAogCQkuZW5jcnlwdGVkX3BhZ2UgPSBOVUxM LAogCX07CiAJaW50IGVyciA9IDA7CkBAIC0zMzQsNiArMzM1LDcgQEAgcmVwZWF0OgogCQlm Y2MtPmRpc3BhdGNoX2xpc3QgPSBsbGlzdF9yZXZlcnNlX29yZGVyKGZjYy0+ZGlzcGF0Y2hf bGlzdCk7CiAKIAkJYmlvLT5iaV9iZGV2ID0gc2JpLT5zYi0+c19iZGV2OworCQliaW8tPmJp X29wID0gUkVRX09QX1dSSVRFOwogCQliaW8tPmJpX3J3IHw9IFdSSVRFX0ZMVVNIOwogCQly ZXQgPSBzdWJtaXRfYmlvX3dhaXQoYmlvKTsKIApAQCAtMzY3LDYgKzM2OSw3IEBAIGludCBm MmZzX2lzc3VlX2ZsdXNoKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKIAkJaW50IHJldDsK IAogCQliaW8tPmJpX2JkZXYgPSBzYmktPnNiLT5zX2JkZXY7CisJCWJpby0+Ymlfb3AgPSBS RVFfT1BfV1JJVEU7CiAJCWJpby0+YmlfcncgfD0gV1JJVEVfRkxVU0g7CiAJCXJldCA9IHN1 Ym1pdF9iaW9fd2FpdChiaW8pOwogCQliaW9fcHV0KGJpbyk7CkBAIC0xMzA2LDE0ICsxMzA5 LDE1IEBAIHZvaWQgd3JpdGVfbWV0YV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwg c3RydWN0IHBhZ2UgKnBhZ2UpCiAJc3RydWN0IGYyZnNfaW9faW5mbyBmaW8gPSB7CiAJCS5z YmkgPSBzYmksCiAJCS50eXBlID0gTUVUQSwKLQkJLnJ3ID0gV1JJVEVfU1lOQyB8IFJFUV9N RVRBIHwgUkVRX1BSSU8sCisJCS5vcCA9IFJFUV9PUF9XUklURSwKKwkJLm9wX2ZsYWdzID0g V1JJVEVfU1lOQyB8IFJFUV9NRVRBIHwgUkVRX1BSSU8sCiAJCS5ibGtfYWRkciA9IHBhZ2Ut PmluZGV4LAogCQkucGFnZSA9IHBhZ2UsCiAJCS5lbmNyeXB0ZWRfcGFnZSA9IE5VTEwsCiAJ fTsKIAogCWlmICh1bmxpa2VseShwYWdlLT5pbmRleCA+PSBNQUlOX0JMS0FERFIoc2JpKSkp Ci0JCWZpby5ydyAmPSB+UkVRX01FVEE7CisJCWZpby5vcF9mbGFncyAmPSB+UkVRX01FVEE7 CiAKIAlzZXRfcGFnZV93cml0ZWJhY2socGFnZSk7CiAJZjJmc19zdWJtaXRfcGFnZV9tYmlv KCZmaW8pOwpkaWZmIC0tZ2l0IGEvZnMvZjJmcy90cmFjZS5jIGIvZnMvZjJmcy90cmFjZS5j CmluZGV4IDE0NWZiNjUuLjViN2VkY2EgMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvdHJhY2UuYwor KysgYi9mcy9mMmZzL3RyYWNlLmMKQEAgLTI1LDExICsyNSwxMiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgX19wcmludF9sYXN0X2lvKHZvaWQpCiAJaWYgKCFsYXN0X2lvLmxlbikKIAkJcmV0 dXJuOwogCi0JdHJhY2VfcHJpbnRrKCIlM3g6JTN4ICU0eCAlLTE2cyAlMnggJTV4ICUxMngg JTR4XG4iLAorCXRyYWNlX3ByaW50aygiJTN4OiUzeCAlNHggJS0xNnMgJTJ4ICU1eCAlNXgg JTEyeCAlNHhcbiIsCiAJCQlsYXN0X2lvLm1ham9yLCBsYXN0X2lvLm1pbm9yLAogCQkJbGFz dF9pby5waWQsICItLS0tLS0tLS0tLS0tLS0tIiwKIAkJCWxhc3RfaW8udHlwZSwKLQkJCWxh c3RfaW8uZmlvLnJ3LCBsYXN0X2lvLmZpby5ibGtfYWRkciwKKwkJCWxhc3RfaW8uZmlvLm9w LCBsYXN0X2lvLmZpby5vcF9mbGFncywKKwkJCWxhc3RfaW8uZmlvLmJsa19hZGRyLAogCQkJ bGFzdF9pby5sZW4pOwogCW1lbXNldCgmbGFzdF9pbywgMCwgc2l6ZW9mKGxhc3RfaW8pKTsK IH0KQEAgLTEwMCw3ICsxMDEsOCBAQCB2b2lkIGYyZnNfdHJhY2VfaW9zKHN0cnVjdCBmMmZz X2lvX2luZm8gKmZpbywgaW50IGZsdXNoKQogCWlmIChsYXN0X2lvLm1ham9yID09IG1ham9y ICYmIGxhc3RfaW8ubWlub3IgPT0gbWlub3IgJiYKIAkJCWxhc3RfaW8ucGlkID09IHBpZCAm JgogCQkJbGFzdF9pby50eXBlID09IF9fZmlsZV90eXBlKGlub2RlLCBwaWQpICYmCi0JCQls YXN0X2lvLmZpby5ydyA9PSBmaW8tPnJ3ICYmCisJCQlsYXN0X2lvLmZpby5vcCA9PSBmaW8t Pm9wICYmCisJCQlsYXN0X2lvLmZpby5vcF9mbGFncyA9PSBmaW8tPm9wX2ZsYWdzICYmCiAJ CQlsYXN0X2lvLmZpby5ibGtfYWRkciArIGxhc3RfaW8ubGVuID09IGZpby0+YmxrX2FkZHIp IHsKIAkJbGFzdF9pby5sZW4rKzsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90 cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oCmluZGV4 IDAwYjRhNjMuLmU2NDEwMmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Yy ZnMuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKQEAgLTU1LDE3ICs1NSwy MSBAQCBUUkFDRV9ERUZJTkVfRU5VTShDUF9ESVNDQVJEKTsKIAkJeyBJUFUsCQkiSU4tUExB Q0UiIH0sCQkJCVwKIAkJeyBPUFUsCQkiT1VULU9GLVBMQUNFIiB9KQogCi0jZGVmaW5lIEYy RlNfQklPX01BU0sodCkJKHQgJiAoUkVBREEgfCBXUklURV9GTFVTSF9GVUEpKQorI2RlZmlu ZSBGMkZTX0JJT19GTEFHX01BU0sodCkJKHQgJiAoUkVBREEgfCBXUklURV9GTFVTSF9GVUEp KQogI2RlZmluZSBGMkZTX0JJT19FWFRSQV9NQVNLKHQpCSh0ICYgKFJFUV9NRVRBIHwgUkVR X1BSSU8pKQogCi0jZGVmaW5lIHNob3dfYmlvX3R5cGUodHlwZSkJc2hvd19iaW9fYmFzZSh0 eXBlKSwgc2hvd19iaW9fZXh0cmEodHlwZSkKKyNkZWZpbmUgc2hvd19iaW9fdHlwZShvcCwg b3BfZmxhZ3MpIHNob3dfYmlvX29wKG9wKSwgCQkJXAorCQkJc2hvd19iaW9fb3BfZmxhZ3Mo b3BfZmxhZ3MpLCBzaG93X2Jpb19leHRyYShvcF9mbGFncykKIAotI2RlZmluZSBzaG93X2Jp b19iYXNlKHR5cGUpCQkJCQkJXAotCV9fcHJpbnRfc3ltYm9saWMoRjJGU19CSU9fTUFTSyh0 eXBlKSwJCQkJXAorI2RlZmluZSBzaG93X2Jpb19vcChvcCkJCQkJCQkJXAorCV9fcHJpbnRf c3ltYm9saWMob3AsCQkJCQkJXAogCQl7IFJFQUQsIAkJIlJFQUQiIH0sCQkJXAorCQl7IFdS SVRFLCAJCSJXUklURSIgfSkKKworI2RlZmluZSBzaG93X2Jpb19vcF9mbGFncyhmbGFncykJ CQkJCVwKKwlfX3ByaW50X3N5bWJvbGljKEYyRlNfQklPX0ZMQUdfTUFTSyhmbGFncyksCQkJ XAogCQl7IFJFQURBLCAJCSJSRUFEQUhFQUQiIH0sCQkJXAogCQl7IFJFQURfU1lOQywgCQki UkVBRF9TWU5DIiB9LAkJCVwKLQkJeyBXUklURSwgCQkiV1JJVEUiIH0sCQkJXAogCQl7IFdS SVRFX1NZTkMsIAkJIldSSVRFX1NZTkMiIH0sCQkJXAogCQl7IFdSSVRFX0ZMVVNILAkJIldS SVRFX0ZMVVNIIiB9LAkJXAogCQl7IFdSSVRFX0ZVQSwgCQkiV1JJVEVfRlVBIiB9LAkJCVwK QEAgLTcyOCw3ICs3MzIsOCBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGYyZnNfX3N1Ym1pdF9w YWdlX2JpbywKIAkJX19maWVsZChpbm9fdCwgaW5vKQogCQlfX2ZpZWxkKHBnb2ZmX3QsIGlu ZGV4KQogCQlfX2ZpZWxkKGJsb2NrX3QsIGJsa2FkZHIpCi0JCV9fZmllbGQoaW50LCBydykK KwkJX19maWVsZChpbnQsIG9wKQorCQlfX2ZpZWxkKGludCwgb3BfZmxhZ3MpCiAJCV9fZmll bGQoaW50LCB0eXBlKQogCSksCiAKQEAgLTczNywxNiArNzQyLDE3IEBAIERFQ0xBUkVfRVZF TlRfQ0xBU1MoZjJmc19fc3VibWl0X3BhZ2VfYmlvLAogCQlfX2VudHJ5LT5pbm8JCT0gcGFn ZS0+bWFwcGluZy0+aG9zdC0+aV9pbm87CiAJCV9fZW50cnktPmluZGV4CQk9IHBhZ2UtPmlu ZGV4OwogCQlfX2VudHJ5LT5ibGthZGRyCT0gZmlvLT5ibGtfYWRkcjsKLQkJX19lbnRyeS0+ cncJCT0gZmlvLT5ydzsKKwkJX19lbnRyeS0+b3AJCT0gZmlvLT5vcDsKKwkJX19lbnRyeS0+ b3BfZmxhZ3MJPSBmaW8tPm9wX2ZsYWdzOwogCQlfX2VudHJ5LT50eXBlCQk9IGZpby0+dHlw ZTsKIAkpLAogCiAJVFBfcHJpbnRrKCJkZXYgPSAoJWQsJWQpLCBpbm8gPSAlbHUsIHBhZ2Vf aW5kZXggPSAweCVseCwgIgotCQkiYmxrYWRkciA9IDB4JWxseCwgcncgPSAlcyVzLCB0eXBl ID0gJXMiLAorCQkiYmxrYWRkciA9IDB4JWxseCwgcncgPSAlcyVzJXMsIHR5cGUgPSAlcyIs CiAJCXNob3dfZGV2X2lubyhfX2VudHJ5KSwKIAkJKHVuc2lnbmVkIGxvbmcpX19lbnRyeS0+ aW5kZXgsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpX19lbnRyeS0+YmxrYWRkciwKLQkJc2hv d19iaW9fdHlwZShfX2VudHJ5LT5ydyksCisJCXNob3dfYmlvX3R5cGUoX19lbnRyeS0+b3As IF9fZW50cnktPm9wX2ZsYWdzKSwKIAkJc2hvd19ibG9ja190eXBlKF9fZW50cnktPnR5cGUp KQogKTsKIApAQCAtNzc3LDcgKzc4Myw4IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19f c3VibWl0X2JpbywKIAogCVRQX1NUUlVDVF9fZW50cnkoCiAJCV9fZmllbGQoZGV2X3QsCWRl dikKLQkJX19maWVsZChpbnQsCXJ3KQorCQlfX2ZpZWxkKGludCwJb3ApCisJCV9fZmllbGQo aW50LAlvcF9mbGFncykKIAkJX19maWVsZChpbnQsCXR5cGUpCiAJCV9fZmllbGQoc2VjdG9y X3QsCXNlY3RvcikKIAkJX19maWVsZCh1bnNpZ25lZCBpbnQsCXNpemUpCkBAIC03ODUsMTUg Kzc5MiwxNiBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGYyZnNfX3N1Ym1pdF9iaW8sCiAKIAlU UF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IHNiLT5zX2RldjsKLQkJX19lbnRy eS0+cncJCT0gZmlvLT5ydzsKKwkJX19lbnRyeS0+b3AJCT0gZmlvLT5vcDsKKwkJX19lbnRy eS0+b3BfZmxhZ3MJPSBmaW8tPm9wX2ZsYWdzOwogCQlfX2VudHJ5LT50eXBlCQk9IGZpby0+ dHlwZTsKIAkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ CV9fZW50cnktPnNpemUJCT0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJKSwKIAotCVRQX3By aW50aygiZGV2ID0gKCVkLCVkKSwgJXMlcywgJXMsIHNlY3RvciA9ICVsbGQsIHNpemUgPSAl dSIsCisJVFBfcHJpbnRrKCJkZXYgPSAoJWQsJWQpLCAlcyVzJXMsICVzLCBzZWN0b3IgPSAl bGxkLCBzaXplID0gJXUiLAogCQlzaG93X2RldihfX2VudHJ5KSwKLQkJc2hvd19iaW9fdHlw ZShfX2VudHJ5LT5ydyksCisJCXNob3dfYmlvX3R5cGUoX19lbnRyeS0+b3AsIF9fZW50cnkt Pm9wX2ZsYWdzKSwKIAkJc2hvd19ibG9ja190eXBlKF9fZW50cnktPnR5cGUpLAogCQkodW5z aWduZWQgbG9uZyBsb25nKV9fZW50cnktPnNlY3RvciwKIAkJX19lbnRyeS0+c2l6ZSkKLS0g CjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wLzAwMTAtZ2ZzMi1zZXQtYmlfb3AtdG8tUkVRX09Q LnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDEwNDA2ADEyNjMyMTU0 MjMwADAxNjE2MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIDFkN2Yx NjBlMGMxYWE4ODFlMDgwYmUzYmU1MTU5N2E3N2NlNzYyOWMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+CkRhdGU6 IE1vbiwgNyBEZWMgMjAxNSAxNDozNToyNyAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMzBd IGdmczI6IHNldCBiaV9vcCB0byBSRVFfT1AKClRoaXMgcGF0Y2ggaGFzIGdmczIgc2V0IHRo ZSBiaW8gYmlfb3AgdG8gYSBSRVFfT1AsIGFuZApycV9mbGFnX2JpdHMgdG8gYmlfcncuCgpT aWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0K IGZzL2dmczIvbG9nLmMgICAgICAgIHwgIDggKysrKy0tLS0KIGZzL2dmczIvbG9wcy5jICAg ICAgIHwgMTIgKysrKysrKy0tLS0tCiBmcy9nZnMyL2xvcHMuaCAgICAgICB8ICAyICstCiBm cy9nZnMyL29wc19mc3R5cGUuYyB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0 aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9sb2cuYyBi L2ZzL2dmczIvbG9nLmMKaW5kZXggNTM2ZTdhNi4uODMyNGFmNSAxMDA2NDQKLS0tIGEvZnMv Z2ZzMi9sb2cuYworKysgYi9mcy9nZnMyL2xvZy5jCkBAIC02NTcsNyArNjU3LDcgQEAgc3Rh dGljIHZvaWQgbG9nX3dyaXRlX2hlYWRlcihzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgdTMyIGZs YWdzKQogCXN0cnVjdCBnZnMyX2xvZ19oZWFkZXIgKmxoOwogCXVuc2lnbmVkIGludCB0YWls OwogCXUzMiBoYXNoOwotCWludCBydyA9IFdSSVRFX0ZMVVNIX0ZVQSB8IFJFUV9NRVRBOwor CWludCBvcF9mbGFncyA9IFdSSVRFX0ZMVVNIX0ZVQSB8IFJFUV9NRVRBOwogCXN0cnVjdCBw YWdlICpwYWdlID0gbWVtcG9vbF9hbGxvYyhnZnMyX3BhZ2VfcG9vbCwgR0ZQX05PSU8pOwog CWVudW0gZ2ZzMl9mcmVlemVfc3RhdGUgc3RhdGUgPSBhdG9taWNfcmVhZCgmc2RwLT5zZF9m cmVlemVfc3RhdGUpOwogCWxoID0gcGFnZV9hZGRyZXNzKHBhZ2UpOwpAQCAtNjgyLDEyICs2 ODIsMTIgQEAgc3RhdGljIHZvaWQgbG9nX3dyaXRlX2hlYWRlcihzdHJ1Y3QgZ2ZzMl9zYmQg KnNkcCwgdTMyIGZsYWdzKQogCWlmICh0ZXN0X2JpdChTREZfTk9CQVJSSUVSUywgJnNkcC0+ c2RfZmxhZ3MpKSB7CiAJCWdmczJfb3JkZXJlZF93YWl0KHNkcCk7CiAJCWxvZ19mbHVzaF93 YWl0KHNkcCk7Ci0JCXJ3ID0gV1JJVEVfU1lOQyB8IFJFUV9NRVRBIHwgUkVRX1BSSU87CisJ CW9wX2ZsYWdzID0gV1JJVEVfU1lOQyB8IFJFUV9NRVRBIHwgUkVRX1BSSU87CiAJfQogCiAJ c2RwLT5zZF9sb2dfaWRsZSA9ICh0YWlsID09IHNkcC0+c2RfbG9nX2ZsdXNoX2hlYWQpOwog CWdmczJfbG9nX3dyaXRlX3BhZ2Uoc2RwLCBwYWdlKTsKLQlnZnMyX2xvZ19mbHVzaF9iaW8o c2RwLCBydyk7CisJZ2ZzMl9sb2dfZmx1c2hfYmlvKHNkcCwgUkVRX09QX1dSSVRFLCBvcF9m bGFncyk7CiAJbG9nX2ZsdXNoX3dhaXQoc2RwKTsKIAogCWlmIChzZHAtPnNkX2xvZ190YWls ICE9IHRhaWwpCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBnZnMyX2xvZ19mbHVzaChzdHJ1 Y3QgZ2ZzMl9zYmQgKnNkcCwgc3RydWN0IGdmczJfZ2xvY2sgKmdsLAogCiAJZ2ZzMl9vcmRl cmVkX3dyaXRlKHNkcCk7CiAJbG9wc19iZWZvcmVfY29tbWl0KHNkcCwgdHIpOwotCWdmczJf bG9nX2ZsdXNoX2JpbyhzZHAsIFdSSVRFKTsKKwlnZnMyX2xvZ19mbHVzaF9iaW8oc2RwLCBS RVFfT1BfV1JJVEUsIDApOwogCiAJaWYgKHNkcC0+c2RfbG9nX2hlYWQgIT0gc2RwLT5zZF9s b2dfZmx1c2hfaGVhZCkgewogCQlsb2dfZmx1c2hfd2FpdChzZHApOwpkaWZmIC0tZ2l0IGEv ZnMvZ2ZzMi9sb3BzLmMgYi9mcy9nZnMyL2xvcHMuYwppbmRleCBhY2M1Y2NiLi4xMTk4MGY2 IDEwMDY0NAotLS0gYS9mcy9nZnMyL2xvcHMuYworKysgYi9mcy9nZnMyL2xvcHMuYwpAQCAt MjMwLDE3ICsyMzAsMTkgQEAgc3RhdGljIHZvaWQgZ2ZzMl9lbmRfbG9nX3dyaXRlKHN0cnVj dCBiaW8gKmJpbykKIC8qKgogICogZ2ZzMl9sb2dfZmx1c2hfYmlvIC0gU3VibWl0IGFueSBw ZW5kaW5nIGxvZyBiaW8KICAqIEBzZHA6IFRoZSBzdXBlcmJsb2NrCi0gKiBAcnc6IFRoZSBy dyBmbGFncworICogQG9wOiBSRVFfT1AKKyAqIEBvcF9mbGFnczogcnFfZmxhZ19iaXRzCiAg KgogICogU3VibWl0IGFueSBwZW5kaW5nIHBhcnQtYnVpbHQgb3IgZnVsbCBiaW8gdG8gdGhl IGJsb2NrIGRldmljZS4gSWYKICAqIHRoZXJlIGlzIG5vIHBlbmRpbmcgYmlvLCB0aGVuIHRo aXMgaXMgYSBuby1vcC4KICAqLwogCi12b2lkIGdmczJfbG9nX2ZsdXNoX2JpbyhzdHJ1Y3Qg Z2ZzMl9zYmQgKnNkcCwgaW50IHJ3KQordm9pZCBnZnMyX2xvZ19mbHVzaF9iaW8oc3RydWN0 IGdmczJfc2JkICpzZHAsIGludCBvcCwgaW50IG9wX2ZsYWdzKQogewogCWlmIChzZHAtPnNk X2xvZ19iaW8pIHsKIAkJYXRvbWljX2luYygmc2RwLT5zZF9sb2dfaW5fZmxpZ2h0KTsKLQkJ c2RwLT5zZF9sb2dfYmlvLT5iaV9ydyB8PSBydzsKKwkJc2RwLT5zZF9sb2dfYmlvLT5iaV9v cCA9IG9wOworCQlzZHAtPnNkX2xvZ19iaW8tPmJpX3J3IHw9IG9wX2ZsYWdzOwogCQlzdWJt aXRfYmlvKHNkcC0+c2RfbG9nX2Jpbyk7CiAJCXNkcC0+c2RfbG9nX2JpbyA9IE5VTEw7CiAJ fQpAQCAtMzAwLDcgKzMwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpnZnMyX2xvZ19nZXRf YmlvKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgYmxrbm8pCiAJCW5ibGsgPj49IHNkcC0+ c2RfZnNiMmJiX3NoaWZ0OwogCQlpZiAoYmxrbm8gPT0gbmJsaykKIAkJCXJldHVybiBiaW87 Ci0JCWdmczJfbG9nX2ZsdXNoX2JpbyhzZHAsIFdSSVRFKTsKKwkJZ2ZzMl9sb2dfZmx1c2hf YmlvKHNkcCwgUkVRX09QX1dSSVRFLCAwKTsKIAl9CiAKIAlyZXR1cm4gZ2ZzMl9sb2dfYWxs b2NfYmlvKHNkcCwgYmxrbm8pOwpAQCAtMzI5LDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGdm czJfbG9nX3dyaXRlKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3QgcGFnZSAqcGFnZSwK IAliaW8gPSBnZnMyX2xvZ19nZXRfYmlvKHNkcCwgYmxrbm8pOwogCXJldCA9IGJpb19hZGRf cGFnZShiaW8sIHBhZ2UsIHNpemUsIG9mZnNldCk7CiAJaWYgKHJldCA9PSAwKSB7Ci0JCWdm czJfbG9nX2ZsdXNoX2JpbyhzZHAsIFdSSVRFKTsKKwkJZ2ZzMl9sb2dfZmx1c2hfYmlvKHNk cCwgUkVRX09QX1dSSVRFLCAwKTsKIAkJYmlvID0gZ2ZzMl9sb2dfYWxsb2NfYmlvKHNkcCwg Ymxrbm8pOwogCQlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBzaXplLCBvZmZzZXQp OwogCQlXQVJOX09OKHJldCA9PSAwKTsKZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9wcy5oIGIv ZnMvZ2ZzMi9sb3BzLmgKaW5kZXggYTY1YTdiYS4uZTUyOWY1MyAxMDA2NDQKLS0tIGEvZnMv Z2ZzMi9sb3BzLmgKKysrIGIvZnMvZ2ZzMi9sb3BzLmgKQEAgLTI3LDcgKzI3LDcgQEAgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBnZnMyX2xvZ19vcGVyYXRpb25zIGdmczJfZGF0YWJ1Zl9sb3Bz OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGdmczJfbG9nX29wZXJhdGlvbnMgKmdmczJfbG9n X29wc1tdOwogZXh0ZXJuIHZvaWQgZ2ZzMl9sb2dfd3JpdGVfcGFnZShzdHJ1Y3QgZ2ZzMl9z YmQgKnNkcCwgc3RydWN0IHBhZ2UgKnBhZ2UpOwotZXh0ZXJuIHZvaWQgZ2ZzMl9sb2dfZmx1 c2hfYmlvKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgcncpOworZXh0ZXJuIHZvaWQgZ2Zz Ml9sb2dfZmx1c2hfYmlvKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBpbnQgb3AsIGludCBvcF9m bGFncyk7CiBleHRlcm4gdm9pZCBnZnMyX3BpbihzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJ1 Zl9saW1pdChzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCkKZGlmZiAtLWdpdCBhL2ZzL2dmczIvb3Bz X2ZzdHlwZS5jIGIvZnMvZ2ZzMi9vcHNfZnN0eXBlLmMKaW5kZXggZGZhYzM5NS4uZTM1NTc3 YiAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9vcHNfZnN0eXBlLmMKKysrIGIvZnMvZ2ZzMi9vcHNf ZnN0eXBlLmMKQEAgLTI0Niw2ICsyNDYsNyBAQCBzdGF0aWMgaW50IGdmczJfcmVhZF9zdXBl cihzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2lsZW50KQog CiAJYmlvLT5iaV9lbmRfaW8gPSBlbmRfYmlvX2lvX3BhZ2U7CiAJYmlvLT5iaV9wcml2YXRl ID0gcGFnZTsKKwliaW8tPmJpX29wID0gUkVRX09QX1JFQUQ7CiAJYmlvLT5iaV9ydyB8PSBS RUFEX1NZTkMgfCBSRVFfTUVUQTsKIAlzdWJtaXRfYmlvKGJpbyk7CiAJd2FpdF9vbl9wYWdl X2xvY2tlZChwYWdlKTsKLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAByZXEtb3AvMDAxMS14ZnMtc2V0LWJpX29wLXRvLVJFUV9PUC5wYXRjaAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMDU0NzYAMTI2MzIxNTQyMzAAMDE2MTM1 ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gODE5YWVjYmM3ZjgzYzlj NjFjZmJiMGNlOTExMDFlZWJmNzZiZjgxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogTW9uLCA3IERl YyAyMDE1IDE0OjM4OjUzIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAxMS8zMF0geGZzOiBzZXQg Ymlfb3AgdG8gUkVRX09QCgpUaGlzIHBhdGNoIGhhcyB4ZnMgc2V0IHRoZSBiaW8gYmlfb3Ag dG8gYSBSRVFfT1AsIGFuZApycV9mbGFnX2JpdHMgdG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5 OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGZzL3hmcy94ZnNf YW9wcy5jIHwgIDQgKysrLQogZnMveGZzL3hmc19idWYuYyAgfCAyNyArKysrKysrKysrKysr KystLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19hb3BzLmMgYi9mcy94ZnMv eGZzX2FvcHMuYwppbmRleCBhMTA1MmQyLi45YTQ1YjQzIDEwMDY0NAotLS0gYS9mcy94ZnMv eGZzX2FvcHMuYworKysgYi9mcy94ZnMveGZzX2FvcHMuYwpAQCAtMzgyLDcgKzM4Miw5IEBA IHhmc19zdWJtaXRfaW9lbmRfYmlvKAogCWF0b21pY19pbmMoJmlvZW5kLT5pb19yZW1haW5p bmcpOwogCWJpby0+YmlfcHJpdmF0ZSA9IGlvZW5kOwogCWJpby0+YmlfZW5kX2lvID0geGZz X2VuZF9iaW87Ci0JYmlvLT5iaV9ydyB8PSAod2JjLT5zeW5jX21vZGUgPT0gV0JfU1lOQ19B TEwgPyBXUklURV9TWU5DIDogV1JJVEUpOworCWJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7 CisJYmlvLT5iaV9ydyB8PSBXQl9TWU5DX0FMTCA/IFdSSVRFX1NZTkMgOiAwOworCiAJc3Vi bWl0X2JpbyhiaW8pOwogfQogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2J1Zi5jIGIvZnMv eGZzL3hmc19idWYuYwppbmRleCBiN2RhNzhmLi45ZTFiMzRmIDEwMDY0NAotLS0gYS9mcy94 ZnMveGZzX2J1Zi5jCisrKyBiL2ZzL3hmcy94ZnNfYnVmLmMKQEAgLTExMjQsNyArMTEyNCw4 IEBAIHhmc19idWZfaW9hcHBseV9tYXAoCiAJaW50CQltYXAsCiAJaW50CQkqYnVmX29mZnNl dCwKIAlpbnQJCSpjb3VudCwKLQlpbnQJCXJ3KQorCWludAkJb3AsCisJaW50CQlvcF9mbGFn cykKIHsKIAlpbnQJCXBhZ2VfaW5kZXg7CiAJaW50CQl0b3RhbF9ucl9wYWdlcyA9IGJwLT5i X3BhZ2VfY291bnQ7CkBAIC0xMTYzLDcgKzExNjQsOCBAQCBuZXh0X2NodW5rOgogCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9lbmRfaW8gPSB4ZnNfYnVm X2Jpb19lbmRfaW87CiAJYmlvLT5iaV9wcml2YXRlID0gYnA7Ci0JYmlvLT5iaV9ydyB8PSBy dzsKKwliaW8tPmJpX29wID0gb3A7CisJYmlvLT5iaV9ydyB8PSBvcF9mbGFnczsKIAogCWZv ciAoOyBzaXplICYmIG5yX3BhZ2VzOyBucl9wYWdlcy0tLCBwYWdlX2luZGV4KyspIHsKIAkJ aW50CXJieXRlcywgbmJ5dGVzID0gUEFHRV9TSVpFIC0gb2Zmc2V0OwpAQCAtMTIwNyw3ICsx MjA5LDggQEAgX3hmc19idWZfaW9hcHBseSgKIAlzdHJ1Y3QgeGZzX2J1ZgkqYnApCiB7CiAJ c3RydWN0IGJsa19wbHVnCXBsdWc7Ci0JaW50CQlydzsKKwlpbnQJCW9wOworCWludAkJb3Bf ZmxhZ3MgPSAwOwogCWludAkJb2Zmc2V0OwogCWludAkJc2l6ZTsKIAlpbnQJCWk7CkBAIC0x MjI2LDE0ICsxMjI5LDEzIEBAIF94ZnNfYnVmX2lvYXBwbHkoCiAJCWJwLT5iX2lvZW5kX3dx ID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudC0+bV9idWZfd29ya3F1ZXVlOwogCiAJaWYgKGJw LT5iX2ZsYWdzICYgWEJGX1dSSVRFKSB7CisJCW9wID0gUkVRX09QX1dSSVRFOwogCQlpZiAo YnAtPmJfZmxhZ3MgJiBYQkZfU1lOQ0lPKQotCQkJcncgPSBXUklURV9TWU5DOwotCQllbHNl Ci0JCQlydyA9IFdSSVRFOworCQkJb3BfZmxhZ3MgPSBXUklURV9TWU5DOwogCQlpZiAoYnAt PmJfZmxhZ3MgJiBYQkZfRlVBKQotCQkJcncgfD0gUkVRX0ZVQTsKKwkJCW9wX2ZsYWdzIHw9 IFJFUV9GVUE7CiAJCWlmIChicC0+Yl9mbGFncyAmIFhCRl9GTFVTSCkKLQkJCXJ3IHw9IFJF UV9GTFVTSDsKKwkJCW9wX2ZsYWdzIHw9IFJFUV9GTFVTSDsKIAogCQkvKgogCQkgKiBSdW4g dGhlIHdyaXRlIHZlcmlmaWVyIGNhbGxiYWNrIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cy4gSWYK QEAgLTEyNjMsMTMgKzEyNjUsMTQgQEAgX3hmc19idWZfaW9hcHBseSgKIAkJCX0KIAkJfQog CX0gZWxzZSBpZiAoYnAtPmJfZmxhZ3MgJiBYQkZfUkVBRF9BSEVBRCkgewotCQlydyA9IFJF QURBOworCQlvcCA9IFJFUV9PUF9SRUFEOworCQlvcF9mbGFncyA9IFJFUV9SQUhFQUQ7CiAJ fSBlbHNlIHsKLQkJcncgPSBSRUFEOworCQlvcCA9IFJFUV9PUF9SRUFEOwogCX0KIAogCS8q IHdlIG9ubHkgdXNlIHRoZSBidWZmZXIgY2FjaGUgZm9yIG1ldGEtZGF0YSAqLwotCXJ3IHw9 IFJFUV9NRVRBOworCW9wX2ZsYWdzIHw9IFJFUV9NRVRBOwogCiAJLyoKIAkgKiBXYWxrIGFs bCB0aGUgdmVjdG9ycyBpc3N1aW5nIElPIG9uIHRoZW0uIFNldCB1cCB0aGUgaW5pdGlhbCBv ZmZzZXQKQEAgLTEyODEsNyArMTI4NCw3IEBAIF94ZnNfYnVmX2lvYXBwbHkoCiAJc2l6ZSA9 IEJCVE9CKGJwLT5iX2lvX2xlbmd0aCk7CiAJYmxrX3N0YXJ0X3BsdWcoJnBsdWcpOwogCWZv ciAoaSA9IDA7IGkgPCBicC0+Yl9tYXBfY291bnQ7IGkrKykgewotCQl4ZnNfYnVmX2lvYXBw bHlfbWFwKGJwLCBpLCAmb2Zmc2V0LCAmc2l6ZSwgcncpOworCQl4ZnNfYnVmX2lvYXBwbHlf bWFwKGJwLCBpLCAmb2Zmc2V0LCAmc2l6ZSwgb3AsIG9wX2ZsYWdzKTsKIAkJaWYgKGJwLT5i X2Vycm9yKQogCQkJYnJlYWs7CiAJCWlmIChzaXplIDw9IDApCi0tIAoxLjguMy4xCgoAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDEyLWhmc3BsdXMtc2V0LWJp X29wLXRvLVJFUV9PUC5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAwMDAxMDI0 NwAxMjYzMjE1NDIzMAAwMTcwMTIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RnJvbSBhMGU3MGFlODA4ZjY4ZDcwYTU2ZmUyNDNlNzUxMDM4NWFkMjNlM2ZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQu Y29tPgpEYXRlOiBGcmksIDQgRGVjIDIwMTUgMDU6MzM6MDkgLTA2MDAKU3ViamVjdDogW1BB VENIIDEyLzMwXSBoZnNwbHVzOiBzZXQgYmlfb3AgdG8gUkVRX09QCgpUaGlzIHBhdGNoIGhh cyBoZnNwbHVzIHNldCB0aGUgYmlvIGJpX29wIHRvIGEgUkVRX09QLCBhbmQKcnFfZmxhZ19i aXRzIHRvIGJpX3J3LgoKU2lnbmVkLW9mZi1ieTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlA cmVkaGF0LmNvbT4KLS0tCiBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCB8ICAyICstCiBmcy9o ZnNwbHVzL3BhcnRfdGJsLmMgICB8ICA1ICsrKy0tCiBmcy9oZnNwbHVzL3N1cGVyLmMgICAg ICB8ICA2ICsrKystLQogZnMvaGZzcGx1cy93cmFwcGVyLmMgICAgfCAxNSArKysrKysrKyst LS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmggYi9mcy9oZnNwbHVz L2hmc3BsdXNfZnMuaAppbmRleCBmOTFhMWZhLi44MDE1NGFhIDEwMDY0NAotLS0gYS9mcy9o ZnNwbHVzL2hmc3BsdXNfZnMuaAorKysgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaApAQCAt NTI1LDcgKzUyNSw3IEBAIGludCBoZnNwbHVzX2NvbXBhcmVfZGVudHJ5KGNvbnN0IHN0cnVj dCBkZW50cnkgKnBhcmVudCwKIAogLyogd3JhcHBlci5jICovCiBpbnQgaGZzcGx1c19zdWJt aXRfYmlvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHNlY3Rvcl90IHNlY3Rvciwgdm9pZCAq YnVmLAotCQkgICAgICAgdm9pZCAqKmRhdGEsIGludCBydyk7CisJCSAgICAgICB2b2lkICoq ZGF0YSwgaW50IG9wLCBpbnQgb3BfZmxhZ3MpOwogaW50IGhmc3BsdXNfcmVhZF93cmFwcGVy KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogCiAvKiB0aW1lIG1hY3JvcyAqLwpkaWZmIC0t Z2l0IGEvZnMvaGZzcGx1cy9wYXJ0X3RibC5jIGIvZnMvaGZzcGx1cy9wYXJ0X3RibC5jCmlu ZGV4IGViMzU1ZDguLjYzMTY0ZWIgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvcGFydF90Ymwu YworKysgYi9mcy9oZnNwbHVzL3BhcnRfdGJsLmMKQEAgLTExMiw3ICsxMTIsOCBAQCBzdGF0 aWMgaW50IGhmc19wYXJzZV9uZXdfcG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lk ICpidWYsCiAJCWlmICgodTggKilwbSAtICh1OCAqKWJ1ZiA+PSBidWZfc2l6ZSkgewogCQkJ cmVzID0gaGZzcGx1c19zdWJtaXRfYmlvKHNiLAogCQkJCQkJICpwYXJ0X3N0YXJ0ICsgSEZT X1BNQVBfQkxLICsgaSwKLQkJCQkJCSBidWYsICh2b2lkICoqKSZwbSwgUkVBRCk7CisJCQkJ CQkgYnVmLCAodm9pZCAqKikmcG0sIFJFUV9PUF9SRUFELAorCQkJCQkJIDApOwogCQkJaWYg KHJlcykKIAkJCQlyZXR1cm4gcmVzOwogCQl9CkBAIC0xMzYsNyArMTM3LDcgQEAgaW50IGhm c19wYXJ0X2ZpbmQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAkJcmV0dXJuIC1FTk9NRU07 CiAKIAlyZXMgPSBoZnNwbHVzX3N1Ym1pdF9iaW8oc2IsICpwYXJ0X3N0YXJ0ICsgSEZTX1BN QVBfQkxLLAotCQkJCSBidWYsICZkYXRhLCBSRUFEKTsKKwkJCQkgYnVmLCAmZGF0YSwgUkVR X09QX1JFQUQsIDApOwogCWlmIChyZXMpCiAJCWdvdG8gb3V0OwogCmRpZmYgLS1naXQgYS9m cy9oZnNwbHVzL3N1cGVyLmMgYi9mcy9oZnNwbHVzL3N1cGVyLmMKaW5kZXggNzMwMmQ5Ni4u ZjllYTZhYSAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy9zdXBlci5jCisrKyBiL2ZzL2hmc3Bs dXMvc3VwZXIuYwpAQCAtMjE5LDcgKzIxOSw4IEBAIHN0YXRpYyBpbnQgaGZzcGx1c19zeW5j X2ZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KQogCiAJZXJyb3IyID0gaGZz cGx1c19zdWJtaXRfYmlvKHNiLAogCQkJCSAgIHNiaS0+cGFydF9zdGFydCArIEhGU1BMVVNf Vk9MSEVBRF9TRUNUT1IsCi0JCQkJICAgc2JpLT5zX3ZoZHJfYnVmLCBOVUxMLCBXUklURV9T WU5DKTsKKwkJCQkgICBzYmktPnNfdmhkcl9idWYsIE5VTEwsIFJFUV9PUF9XUklURSwKKwkJ CQkgICBXUklURV9TWU5DKTsKIAlpZiAoIWVycm9yKQogCQllcnJvciA9IGVycm9yMjsKIAlp ZiAoIXdyaXRlX2JhY2t1cCkKQEAgLTIyNyw3ICsyMjgsOCBAQCBzdGF0aWMgaW50IGhmc3Bs dXNfc3luY19mcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdCkKIAogCWVycm9y MiA9IGhmc3BsdXNfc3VibWl0X2JpbyhzYiwKIAkJCQkgIHNiaS0+cGFydF9zdGFydCArIHNi aS0+c2VjdF9jb3VudCAtIDIsCi0JCQkJICBzYmktPnNfYmFja3VwX3ZoZHJfYnVmLCBOVUxM LCBXUklURV9TWU5DKTsKKwkJCQkgIHNiaS0+c19iYWNrdXBfdmhkcl9idWYsIE5VTEwsIFJF UV9PUF9XUklURSwKKwkJCQkgIFdSSVRFX1NZTkMpOwogCWlmICghZXJyb3IpCiAJCWVycm9y MiA9IGVycm9yOwogb3V0OgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy93cmFwcGVyLmMgYi9m cy9oZnNwbHVzL3dyYXBwZXIuYwppbmRleCA3ZTYwNWI1Li5hNWQ0ZTY3IDEwMDY0NAotLS0g YS9mcy9oZnNwbHVzL3dyYXBwZXIuYworKysgYi9mcy9oZnNwbHVzL3dyYXBwZXIuYwpAQCAt MzAsNyArMzAsOCBAQCBzdHJ1Y3QgaGZzcGx1c193ZCB7CiAgKiBAc2VjdG9yOiBibG9jayB0 byByZWFkIG9yIHdyaXRlLCBmb3IgYmxvY2tzIG9mIEhGU1BMVVNfU0VDVE9SX1NJWkUgYnl0 ZXMKICAqIEBidWY6IGJ1ZmZlciBmb3IgSS9PCiAgKiBAZGF0YTogb3V0cHV0IHBvaW50ZXIg Zm9yIGxvY2F0aW9uIG9mIHJlcXVlc3RlZCBkYXRhCi0gKiBAcnc6IGRpcmVjdGlvbiBvZiBJ L08KKyAqIEBvcDogZGlyZWN0aW9uIG9mIEkvTworICogQG9wX2ZsYWdzOiByZXF1ZXN0IG9w IGZsYWdzCiAgKgogICogVGhlIHVuaXQgb2YgSS9PIGlzIGhmc3BsdXNfbWluX2lvX3NpemUo c2IpLCB3aGljaCBtYXkgYmUgYmlnZ2VyIHRoYW4KICAqIEhGU1BMVVNfU0VDVE9SX1NJWkUs IGFuZCBAYnVmIG11c3QgYmUgc2l6ZWQgYWNjb3JkaW5nbHkuIE9uIHJlYWRzCkBAIC00NCw3 ICs0NSw3IEBAIHN0cnVjdCBoZnNwbHVzX3dkIHsKICAqIHdpbGwgd29yayBjb3JyZWN0bHku CiAgKi8KIGludCBoZnNwbHVzX3N1Ym1pdF9iaW8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg c2VjdG9yX3Qgc2VjdG9yLAotCQl2b2lkICpidWYsIHZvaWQgKipkYXRhLCBpbnQgcncpCisJ CSAgICAgICB2b2lkICpidWYsIHZvaWQgKipkYXRhLCBpbnQgb3AsIGludCBvcF9mbGFncykK IHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJaW50IHJldCA9IDA7CkBAIC02NSw5ICs2NiwxMCBA QCBpbnQgaGZzcGx1c19zdWJtaXRfYmlvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHNlY3Rv cl90IHNlY3RvciwKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PSU8sIDEpOwogCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsK LQliaW8tPmJpX3J3IHw9IHJ3OworCWJpby0+Ymlfb3AgPSBvcDsKKwliaW8tPmJpX3J3IHw9 IG9wX2ZsYWdzOwogCi0JaWYgKCEocncgJiBXUklURSkgJiYgZGF0YSkKKwlpZiAoIShvcCA9 PSBXUklURSkgJiYgZGF0YSkKIAkJKmRhdGEgPSAodTggKilidWYgKyBvZmZzZXQ7CiAKIAl3 aGlsZSAoaW9fc2l6ZSA+IDApIHsKQEAgLTE4Miw3ICsxODQsNyBAQCBpbnQgaGZzcGx1c19y ZWFkX3dyYXBwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIHJlcmVhZDoKIAllcnJvciA9 IGhmc3BsdXNfc3VibWl0X2JpbyhzYiwgcGFydF9zdGFydCArIEhGU1BMVVNfVk9MSEVBRF9T RUNUT1IsCiAJCQkJICAgc2JpLT5zX3ZoZHJfYnVmLCAodm9pZCAqKikmc2JpLT5zX3ZoZHIs Ci0JCQkJICAgUkVBRCk7CisJCQkJICAgUkVRX09QX1JFQUQsIDApOwogCWlmIChlcnJvcikK IAkJZ290byBvdXRfZnJlZV9iYWNrdXBfdmhkcjsKIApAQCAtMjE0LDcgKzIxNiw4IEBAIHJl cmVhZDoKIAogCWVycm9yID0gaGZzcGx1c19zdWJtaXRfYmlvKHNiLCBwYXJ0X3N0YXJ0ICsg cGFydF9zaXplIC0gMiwKIAkJCQkgICBzYmktPnNfYmFja3VwX3ZoZHJfYnVmLAotCQkJCSAg ICh2b2lkICoqKSZzYmktPnNfYmFja3VwX3ZoZHIsIFJFQUQpOworCQkJCSAgICh2b2lkICoq KSZzYmktPnNfYmFja3VwX3ZoZHIsIFJFUV9PUF9SRUFELAorCQkJCSAgIDApOwogCWlmIChl cnJvcikKIAkJZ290byBvdXRfZnJlZV9iYWNrdXBfdmhkcjsKIAotLSAKMS44LjMuMQoKAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wLzAwMTMtbXBhZ2Utc2V0LWJpX29wLXRvLVJFUV9P UC5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDExNjcwADEyNjMyMTU0 MjMwADAxNjQyMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIDg2MDE1 MGIwMjQxYWNhODQ1NDc5MmMyNmIyNzY0Y2Q1ZDNkYzgxYTkgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+CkRhdGU6 IEZyaSwgNCBEZWMgMjAxNSAwNTozMzo1OCAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMzBd IG1wYWdlOiBzZXQgYmlfb3AgdG8gUkVRX09QCgpUaGlzIHBhdGNoIGhhcyB0aGUgbXBhZ2Uu YyBjb2RlIHNldCB0aGUgYmlvIGJpX29wIHRvIGEgUkVRX09QLCBhbmQKcnFfZmxhZ19iaXRz IHRvIGJpX3J3LgoKU2lnbmVkLW9mZi1ieTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVk aGF0LmNvbT4KLS0tCiBmcy9tcGFnZS5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAy MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9tcGFnZS5jIGIvZnMvbXBhZ2UuYwpp bmRleCA5ZmVjNjdmLi4zZjdkMjIxIDEwMDY0NAotLS0gYS9mcy9tcGFnZS5jCisrKyBiL2Zz L21wYWdlLmMKQEAgLTU1LDExICs1NSwxMiBAQCBzdGF0aWMgdm9pZCBtcGFnZV9lbmRfaW8o c3RydWN0IGJpbyAqYmlvKQogCWJpb19wdXQoYmlvKTsKIH0KIAotc3RhdGljIHN0cnVjdCBi aW8gKm1wYWdlX2Jpb19zdWJtaXQoaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8pCitzdGF0aWMg c3RydWN0IGJpbyAqbXBhZ2VfYmlvX3N1Ym1pdChpbnQgb3AsIGludCBvcF9mbGFncywgc3Ry dWN0IGJpbyAqYmlvKQogewogCWJpby0+YmlfZW5kX2lvID0gbXBhZ2VfZW5kX2lvOwotCWJp by0+YmlfcncgfD0gcnc7Ci0JZ3VhcmRfYmlvX2VvZChydywgYmlvKTsKKwliaW8tPmJpX29w ID0gb3A7CisJYmlvLT5iaV9ydyB8PSBvcF9mbGFnczsKKwlndWFyZF9iaW9fZW9kKG9wLCBi aW8pOwogCXN1Ym1pdF9iaW8oYmlvKTsKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTI2OSw3ICsy NzAsNyBAQCBkb19tcGFnZV9yZWFkcGFnZShzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBwYWdl ICpwYWdlLCB1bnNpZ25lZCBucl9wYWdlcywKIAkgKiBUaGlzIHBhZ2Ugd2lsbCBnbyB0byBC SU8uICBEbyB3ZSBuZWVkIHRvIHNlbmQgdGhpcyBCSU8gb2ZmIGZpcnN0PwogCSAqLwogCWlm IChiaW8gJiYgKCpsYXN0X2Jsb2NrX2luX2JpbyAhPSBibG9ja3NbMF0gLSAxKSkKLQkJYmlv ID0gbXBhZ2VfYmlvX3N1Ym1pdChSRUFELCBiaW8pOworCQliaW8gPSBtcGFnZV9iaW9fc3Vi bWl0KFJFUV9PUF9SRUFELCAwLCBiaW8pOwogCiBhbGxvY19uZXc6CiAJaWYgKGJpbyA9PSBO VUxMKSB7CkBAIC0yODYsNyArMjg3LDcgQEAgYWxsb2NfbmV3OgogCiAJbGVuZ3RoID0gZmly c3RfaG9sZSA8PCBibGtiaXRzOwogCWlmIChiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsZW5n dGgsIDApIDwgbGVuZ3RoKSB7Ci0JCWJpbyA9IG1wYWdlX2Jpb19zdWJtaXQoUkVBRCwgYmlv KTsKKwkJYmlvID0gbXBhZ2VfYmlvX3N1Ym1pdChSRVFfT1BfUkVBRCwgMCwgYmlvKTsKIAkJ Z290byBhbGxvY19uZXc7CiAJfQogCkBAIC0yOTQsNyArMjk1LDcgQEAgYWxsb2NfbmV3Ogog CW5ibG9ja3MgPSBtYXBfYmgtPmJfc2l6ZSA+PiBibGtiaXRzOwogCWlmICgoYnVmZmVyX2Jv dW5kYXJ5KG1hcF9iaCkgJiYgcmVsYXRpdmVfYmxvY2sgPT0gbmJsb2NrcykgfHwKIAkgICAg KGZpcnN0X2hvbGUgIT0gYmxvY2tzX3Blcl9wYWdlKSkKLQkJYmlvID0gbXBhZ2VfYmlvX3N1 Ym1pdChSRUFELCBiaW8pOworCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KFJFUV9PUF9SRUFE LCAwLCBiaW8pOwogCWVsc2UKIAkJKmxhc3RfYmxvY2tfaW5fYmlvID0gYmxvY2tzW2Jsb2Nr c19wZXJfcGFnZSAtIDFdOwogb3V0OgpAQCAtMzAyLDcgKzMwMyw3IEBAIG91dDoKIAogY29u ZnVzZWQ6CiAJaWYgKGJpbykKLQkJYmlvID0gbXBhZ2VfYmlvX3N1Ym1pdChSRUFELCBiaW8p OworCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KFJFUV9PUF9SRUFELCAwLCBiaW8pOwogCWlm ICghUGFnZVVwdG9kYXRlKHBhZ2UpKQogCSAgICAgICAgYmxvY2tfcmVhZF9mdWxsX3BhZ2Uo cGFnZSwgZ2V0X2Jsb2NrKTsKIAllbHNlCkBAIC0zODQsNyArMzg1LDcgQEAgbXBhZ2VfcmVh ZHBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzdHJ1Y3QgbGlzdF9oZWFk ICpwYWdlcywKIAl9CiAJQlVHX09OKCFsaXN0X2VtcHR5KHBhZ2VzKSk7CiAJaWYgKGJpbykK LQkJbXBhZ2VfYmlvX3N1Ym1pdChSRUFELCBiaW8pOworCQltcGFnZV9iaW9fc3VibWl0KFJF UV9PUF9SRUFELCAwLCBiaW8pOwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChtcGFn ZV9yZWFkcGFnZXMpOwpAQCAtNDA1LDcgKzQwNiw3IEBAIGludCBtcGFnZV9yZWFkcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSwgZ2V0X2Jsb2NrX3QgZ2V0X2Jsb2NrKQogCWJpbyA9IGRvX21w YWdlX3JlYWRwYWdlKGJpbywgcGFnZSwgMSwgJmxhc3RfYmxvY2tfaW5fYmlvLAogCQkJJm1h cF9iaCwgJmZpcnN0X2xvZ2ljYWxfYmxvY2ssIGdldF9ibG9jaywgZ2ZwKTsKIAlpZiAoYmlv KQotCQltcGFnZV9iaW9fc3VibWl0KFJFQUQsIGJpbyk7CisJCW1wYWdlX2Jpb19zdWJtaXQo UkVRX09QX1JFQUQsIDAsIGJpbyk7CiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKG1w YWdlX3JlYWRwYWdlKTsKQEAgLTQ4Niw3ICs0ODcsNyBAQCBzdGF0aWMgaW50IF9fbXBhZ2Vf d3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wg KndiYywKIAlzdHJ1Y3QgYnVmZmVyX2hlYWQgbWFwX2JoOwogCWxvZmZfdCBpX3NpemUgPSBp X3NpemVfcmVhZChpbm9kZSk7CiAJaW50IHJldCA9IDA7Ci0JaW50IHdyID0gKHdiYy0+c3lu Y19tb2RlID09IFdCX1NZTkNfQUxMID8gIFdSSVRFX1NZTkMgOiBXUklURSk7CisJaW50IG9w X2ZsYWdzID0gKHdiYy0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMID8gIFdSSVRFX1NZTkMg OiAwKTsKIAogCWlmIChwYWdlX2hhc19idWZmZXJzKHBhZ2UpKSB7CiAJCXN0cnVjdCBidWZm ZXJfaGVhZCAqaGVhZCA9IHBhZ2VfYnVmZmVycyhwYWdlKTsKQEAgLTU5NSw3ICs1OTYsNyBA QCBwYWdlX2lzX21hcHBlZDoKIAkgKiBUaGlzIHBhZ2Ugd2lsbCBnbyB0byBCSU8uICBEbyB3 ZSBuZWVkIHRvIHNlbmQgdGhpcyBCSU8gb2ZmIGZpcnN0PwogCSAqLwogCWlmIChiaW8gJiYg bXBkLT5sYXN0X2Jsb2NrX2luX2JpbyAhPSBibG9ja3NbMF0gLSAxKQotCQliaW8gPSBtcGFn ZV9iaW9fc3VibWl0KHdyLCBiaW8pOworCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KFJFUV9P UF9XUklURSwgb3BfZmxhZ3MsIGJpbyk7CiAKIGFsbG9jX25ldzoKIAlpZiAoYmlvID09IE5V TEwpIHsKQEAgLTYyMiw3ICs2MjMsNyBAQCBhbGxvY19uZXc6CiAJd2JjX2FjY291bnRfaW8o d2JjLCBwYWdlLCBQQUdFX1NJWkUpOwogCWxlbmd0aCA9IGZpcnN0X3VubWFwcGVkIDw8IGJs a2JpdHM7CiAJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGxlbmd0aCwgMCkgPCBsZW5n dGgpIHsKLQkJYmlvID0gbXBhZ2VfYmlvX3N1Ym1pdCh3ciwgYmlvKTsKKwkJYmlvID0gbXBh Z2VfYmlvX3N1Ym1pdChSRVFfT1BfV1JJVEUsIG9wX2ZsYWdzLCBiaW8pOwogCQlnb3RvIGFs bG9jX25ldzsKIAl9CiAKQEAgLTYzMiw3ICs2MzMsNyBAQCBhbGxvY19uZXc6CiAJc2V0X3Bh Z2Vfd3JpdGViYWNrKHBhZ2UpOwogCXVubG9ja19wYWdlKHBhZ2UpOwogCWlmIChib3VuZGFy eSB8fCAoZmlyc3RfdW5tYXBwZWQgIT0gYmxvY2tzX3Blcl9wYWdlKSkgewotCQliaW8gPSBt cGFnZV9iaW9fc3VibWl0KHdyLCBiaW8pOworCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KFJF UV9PUF9XUklURSwgb3BfZmxhZ3MsIGJpbyk7CiAJCWlmIChib3VuZGFyeV9ibG9jaykgewog CQkJd3JpdGVfYm91bmRhcnlfYmxvY2soYm91bmRhcnlfYmRldiwKIAkJCQkJYm91bmRhcnlf YmxvY2ssIDEgPDwgYmxrYml0cyk7CkBAIC02NDQsNyArNjQ1LDcgQEAgYWxsb2NfbmV3Ogog CiBjb25mdXNlZDoKIAlpZiAoYmlvKQotCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KHdyLCBi aW8pOworCQliaW8gPSBtcGFnZV9iaW9fc3VibWl0KFJFUV9PUF9XUklURSwgb3BfZmxhZ3Ms IGJpbyk7CiAKIAlpZiAobXBkLT51c2Vfd3JpdGVwYWdlKSB7CiAJCXJldCA9IG1hcHBpbmct PmFfb3BzLT53cml0ZXBhZ2UocGFnZSwgd2JjKTsKQEAgLTcwMSw5ICs3MDIsOSBAQCBtcGFn ZV93cml0ZXBhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCiAJCXJldCA9 IHdyaXRlX2NhY2hlX3BhZ2VzKG1hcHBpbmcsIHdiYywgX19tcGFnZV93cml0ZXBhZ2UsICZt cGQpOwogCQlpZiAobXBkLmJpbykgewotCQkJaW50IHdyID0gKHdiYy0+c3luY19tb2RlID09 IFdCX1NZTkNfQUxMID8KLQkJCQkgIFdSSVRFX1NZTkMgOiBXUklURSk7Ci0JCQltcGFnZV9i aW9fc3VibWl0KHdyLCBtcGQuYmlvKTsKKwkJCWludCBvcF9mbGFncyA9ICh3YmMtPnN5bmNf bW9kZSA9PSBXQl9TWU5DX0FMTCA/CisJCQkJICBXUklURV9TWU5DIDogMCk7CisJCQltcGFn ZV9iaW9fc3VibWl0KFJFUV9PUF9XUklURSwgb3BfZmxhZ3MsIG1wZC5iaW8pOwogCQl9CiAJ fQogCWJsa19maW5pc2hfcGx1ZygmcGx1Zyk7CkBAIC03MjIsOSArNzIzLDkgQEAgaW50IG1w YWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgZ2V0X2Jsb2NrX3QgZ2V0X2Jsb2Nr LAogCX07CiAJaW50IHJldCA9IF9fbXBhZ2Vfd3JpdGVwYWdlKHBhZ2UsIHdiYywgJm1wZCk7 CiAJaWYgKG1wZC5iaW8pIHsKLQkJaW50IHdyID0gKHdiYy0+c3luY19tb2RlID09IFdCX1NZ TkNfQUxMID8KLQkJCSAgV1JJVEVfU1lOQyA6IFdSSVRFKTsKLQkJbXBhZ2VfYmlvX3N1Ym1p dCh3ciwgbXBkLmJpbyk7CisJCWludCBvcF9mbGFncyA9ICh3YmMtPnN5bmNfbW9kZSA9PSBX Ql9TWU5DX0FMTCA/CisJCQkgIFdSSVRFX1NZTkMgOiAwKTsKKwkJbXBhZ2VfYmlvX3N1Ym1p dChSRVFfT1BfV1JJVEUsIG9wX2ZsYWdzLCBtcGQuYmlvKTsKIAl9CiAJcmV0dXJuIHJldDsK IH0KLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDE0LW5pbGZzLXNl dC1iaV9vcC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAw MDAwNDcxNwAxMjYzMjE1NDIzMAAwMTY0NTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAARnJvbSBkYTAzY2VhZDg1M2Y4ZTM5NGY2ZDMyOTNjN2Y3Mjk2Nzk5NjljYWNkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUBy ZWRoYXQuY29tPgpEYXRlOiBGcmksIDQgRGVjIDIwMTUgMDU6MzQ6NDMgLTA2MDAKU3ViamVj dDogW1BBVENIIDE0LzMwXSBuaWxmczogc2V0IGJpX29wIHRvIFJFUV9PUAoKVGhpcyBwYXRj aCBoYXMgbmlsZnMgc2V0IHRoZSBiaW8gYmlfb3AgdG8gYSBSRVFfT1AsIGFuZApycV9mbGFn X2JpdHMgdG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0 aUByZWRoYXQuY29tPgotLS0KIGZzL25pbGZzMi9zZWdidWYuYyB8IDE2ICsrKysrKysrLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3NlZ2J1Zi5jIGIvZnMvbmlsZnMyL3NlZ2J1Zi5j CmluZGV4IDQyOGVjZTguLjM4NDJiZTUgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9zZWdidWYu YworKysgYi9mcy9uaWxmczIvc2VnYnVmLmMKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMg dm9pZCBuaWxmc19lbmRfYmlvX3dyaXRlKHN0cnVjdCBiaW8gKmJpbykKIH0KIAogc3RhdGlj IGludCBuaWxmc19zZWdidWZfc3VibWl0X2JpbyhzdHJ1Y3QgbmlsZnNfc2VnbWVudF9idWZm ZXIgKnNlZ2J1ZiwKLQkJCQkgICBzdHJ1Y3QgbmlsZnNfd3JpdGVfaW5mbyAqd2ksIGludCBt b2RlKQorCQkJCSAgIHN0cnVjdCBuaWxmc193cml0ZV9pbmZvICp3aSwgaW50IG1vZGUsIGlu dCBtb2RlX2ZsYWdzKQogewogCXN0cnVjdCBiaW8gKmJpbyA9IHdpLT5iaW87CiAJaW50IGVy cjsKQEAgLTM2OCw3ICszNjgsOCBAQCBzdGF0aWMgaW50IG5pbGZzX3NlZ2J1Zl9zdWJtaXRf YmlvKHN0cnVjdCBuaWxmc19zZWdtZW50X2J1ZmZlciAqc2VnYnVmLAogCiAJYmlvLT5iaV9l bmRfaW8gPSBuaWxmc19lbmRfYmlvX3dyaXRlOwogCWJpby0+YmlfcHJpdmF0ZSA9IHNlZ2J1 ZjsKLQliaW8tPmJpX3J3IHw9IG1vZGU7CisJYmlvLT5iaV9vcCA9IG1vZGU7CisJYmlvLT5i aV9ydyB8PSBtb2RlX2ZsYWdzOwogCXN1Ym1pdF9iaW8oYmlvKTsKIAlzZWdidWYtPnNiX25i aW8rKzsKIApAQCAtNDQyLDcgKzQ0Myw3IEBAIHN0YXRpYyBpbnQgbmlsZnNfc2VnYnVmX3N1 Ym1pdF9iaChzdHJ1Y3QgbmlsZnNfc2VnbWVudF9idWZmZXIgKnNlZ2J1ZiwKIAkJcmV0dXJu IDA7CiAJfQogCS8qIGJpbyBpcyBGVUxMICovCi0JZXJyID0gbmlsZnNfc2VnYnVmX3N1Ym1p dF9iaW8oc2VnYnVmLCB3aSwgbW9kZSk7CisJZXJyID0gbmlsZnNfc2VnYnVmX3N1Ym1pdF9i aW8oc2VnYnVmLCB3aSwgbW9kZSwgMCk7CiAJLyogbmV2ZXIgc3VibWl0IGN1cnJlbnQgYmgg Ki8KIAlpZiAobGlrZWx5KCFlcnIpKQogCQlnb3RvIHJlcGVhdDsKQEAgLTQ2NiwxOSArNDY3 LDE5IEBAIHN0YXRpYyBpbnQgbmlsZnNfc2VnYnVmX3dyaXRlKHN0cnVjdCBuaWxmc19zZWdt ZW50X2J1ZmZlciAqc2VnYnVmLAogewogCXN0cnVjdCBuaWxmc193cml0ZV9pbmZvIHdpOwog CXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7Ci0JaW50IHJlcyA9IDAsIHJ3ID0gV1JJVEU7CisJ aW50IHJlcyA9IDA7CiAKIAl3aS5uaWxmcyA9IG5pbGZzOwogCW5pbGZzX3NlZ2J1Zl9wcmVw YXJlX3dyaXRlKHNlZ2J1ZiwgJndpKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoYmgsICZz ZWdidWYtPnNiX3NlZ3N1bV9idWZmZXJzLCBiX2Fzc29jX2J1ZmZlcnMpIHsKLQkJcmVzID0g bmlsZnNfc2VnYnVmX3N1Ym1pdF9iaChzZWdidWYsICZ3aSwgYmgsIHJ3KTsKKwkJcmVzID0g bmlsZnNfc2VnYnVmX3N1Ym1pdF9iaChzZWdidWYsICZ3aSwgYmgsIFJFUV9PUF9XUklURSk7 CiAJCWlmICh1bmxpa2VseShyZXMpKQogCQkJZ290byBmYWlsZWRfYmlvOwogCX0KIAogCWxp c3RfZm9yX2VhY2hfZW50cnkoYmgsICZzZWdidWYtPnNiX3BheWxvYWRfYnVmZmVycywgYl9h c3NvY19idWZmZXJzKSB7Ci0JCXJlcyA9IG5pbGZzX3NlZ2J1Zl9zdWJtaXRfYmgoc2VnYnVm LCAmd2ksIGJoLCBydyk7CisJCXJlcyA9IG5pbGZzX3NlZ2J1Zl9zdWJtaXRfYmgoc2VnYnVm LCAmd2ksIGJoLCBSRVFfT1BfV1JJVEUpOwogCQlpZiAodW5saWtlbHkocmVzKSkKIAkJCWdv dG8gZmFpbGVkX2JpbzsKIAl9CkBAIC00ODgsOCArNDg5LDcgQEAgc3RhdGljIGludCBuaWxm c19zZWdidWZfd3JpdGUoc3RydWN0IG5pbGZzX3NlZ21lbnRfYnVmZmVyICpzZWdidWYsCiAJ CSAqIExhc3QgQklPIGlzIGFsd2F5cyBzZW50IHRocm91Z2ggdGhlIGZvbGxvd2luZwogCQkg KiBzdWJtaXNzaW9uLgogCQkgKi8KLQkJcncgfD0gUkVRX1NZTkM7Ci0JCXJlcyA9IG5pbGZz X3NlZ2J1Zl9zdWJtaXRfYmlvKHNlZ2J1ZiwgJndpLCBydyk7CisJCXJlcyA9IG5pbGZzX3Nl Z2J1Zl9zdWJtaXRfYmlvKHNlZ2J1ZiwgJndpLCBSRVFfT1BfV1JJVEUsIFJFUV9TWU5DKTsK IAl9CiAKICBmYWlsZWRfYmlvOgotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDE1LW9jZnMyLXNldC1iaV9v cC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAwMDAwMzYx NQAxMjYzMjE1NDIzMAAwMTYzNDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RnJvbSA4YjMxNmRhN2IyNzYyNDk5Njc1MmM0NDkxNGI0MDRiMTRkYzA2NzEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQu Y29tPgpEYXRlOiBGcmksIDQgRGVjIDIwMTUgMDU6MzU6MTIgLTA2MDAKU3ViamVjdDogW1BB VENIIDE1LzMwXSBvY2ZzMjogc2V0IGJpX29wIHRvIFJFUV9PUAoKVGhpcyBwYXRjaCBoYXMg b2NmczIgc2V0IHRoZSBiaW8gYmlfb3AgdG8gYSBSRVFfT1AsIGFuZApycV9mbGFnX2JpdHMg dG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRo YXQuY29tPgotLS0KIGZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgfCAxMCArKysrKyst LS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgYi9mcy9vY2ZzMi9j bHVzdGVyL2hlYXJ0YmVhdC5jCmluZGV4IGRmNGNkZWYuLjZmMTI3MjEgMTAwNjQ0Ci0tLSBh L2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKKysrIGIvZnMvb2NmczIvY2x1c3Rlci9o ZWFydGJlYXQuYwpAQCAtMzkxLDcgKzM5MSw4IEBAIHN0YXRpYyB2b2lkIG8yaGJfYmlvX2Vu ZF9pbyhzdHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgc3RydWN0IGJpbyAqbzJoYl9zZXR1cF9v bmVfYmlvKHN0cnVjdCBvMmhiX3JlZ2lvbiAqcmVnLAogCQkJCSAgICAgIHN0cnVjdCBvMmhi X2Jpb193YWl0X2N0eHQgKndjLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCAqY3VycmVudF9z bG90LAotCQkJCSAgICAgIHVuc2lnbmVkIGludCBtYXhfc2xvdHMsIGludCBydykKKwkJCQkg ICAgICB1bnNpZ25lZCBpbnQgbWF4X3Nsb3RzLCBpbnQgb3AsCisJCQkJICAgICAgaW50IG9w X2ZsYWdzKQogewogCWludCBsZW4sIGN1cnJlbnRfcGFnZTsKIAl1bnNpZ25lZCBpbnQgdmVj X2xlbiwgdmVjX3N0YXJ0OwpAQCAtNDE3LDcgKzQxOCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYmlv ICpvMmhiX3NldHVwX29uZV9iaW8oc3RydWN0IG8yaGJfcmVnaW9uICpyZWcsCiAJYmlvLT5i aV9iZGV2ID0gcmVnLT5ocl9iZGV2OwogCWJpby0+YmlfcHJpdmF0ZSA9IHdjOwogCWJpby0+ YmlfZW5kX2lvID0gbzJoYl9iaW9fZW5kX2lvOwotCWJpby0+YmlfcncgfD0gcnc7CisJYmlv LT5iaV9vcCA9IG9wOworCWJpby0+YmlfcncgfD0gb3BfZmxhZ3M7CiAKIAl2ZWNfc3RhcnQg PSAoY3MgPDwgYml0cykgJSBQQUdFX0NBQ0hFX1NJWkU7CiAJd2hpbGUoY3MgPCBtYXhfc2xv dHMpIHsKQEAgLTQ1NCw3ICs0NTYsNyBAQCBzdGF0aWMgaW50IG8yaGJfcmVhZF9zbG90cyhz dHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAogCXdoaWxlKGN1cnJlbnRfc2xvdCA8IG1heF9z bG90cykgewogCQliaW8gPSBvMmhiX3NldHVwX29uZV9iaW8ocmVnLCAmd2MsICZjdXJyZW50 X3Nsb3QsIG1heF9zbG90cywKLQkJCQkJIFJFQUQpOworCQkJCQkgUkVRX09QX1JFQUQsIDAp OwogCQlpZiAoSVNfRVJSKGJpbykpIHsKIAkJCXN0YXR1cyA9IFBUUl9FUlIoYmlvKTsKIAkJ CW1sb2dfZXJybm8oc3RhdHVzKTsKQEAgLTQ4Niw3ICs0ODgsNyBAQCBzdGF0aWMgaW50IG8y aGJfaXNzdWVfbm9kZV93cml0ZShzdHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAogCXNsb3Qg PSBvMm5tX3RoaXNfbm9kZSgpOwogCi0JYmlvID0gbzJoYl9zZXR1cF9vbmVfYmlvKHJlZywg d3JpdGVfd2MsICZzbG90LCBzbG90KzEsIFdSSVRFX1NZTkMpOworCWJpbyA9IG8yaGJfc2V0 dXBfb25lX2JpbyhyZWcsIHdyaXRlX3djLCAmc2xvdCwgc2xvdCsxLCBSRVFfT1BfV1JJVEUs IFdSSVRFX1NZTkMpOwogCWlmIChJU19FUlIoYmlvKSkgewogCQlzdGF0dXMgPSBQVFJfRVJS KGJpbyk7CiAJCW1sb2dfZXJybm8oc3RhdHVzKTsKLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEt b3AvMDAxNi1wbS1zZXQtYmlfb3AtdG8tUkVRX09QLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAx NzUxADAwMDE3NTEAMDAwMDAwMTA3MDIAMTI2MzIxNTQyMzAAMDE1NzQyACAwAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gMmJjN2RkNjdmZDAzYzI2MTkxNjQ3ZjA3OWJj NDMzYjAzZjA4NWI4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJp c3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogRnJpLCA0IERlYyAyMDE1IDA1OjM1 OjM0IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAxNi8zMF0gcG06IHNldCBiaV9vcCB0byBSRVFf T1AKClRoaXMgcGF0Y2ggaGFzIHRoZSBwbSBzd2FwIGNvZGUgc2V0IHRoZSBiaW8gYmlfb3Ag dG8gYSBSRVFfT1AsIGFuZApycV9mbGFnX2JpdHMgdG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5 OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGtlcm5lbC9wb3dl ci9zd2FwLmMgfCAzMSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEva2VybmVsL3Bvd2VyL3N3YXAuYyBiL2tlcm5lbC9wb3dlci9zd2FwLmMKaW5kZXggNjQ5 ZGZjNy4uMTk3MDc2YiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL3N3YXAuYworKysgYi9r ZXJuZWwvcG93ZXIvc3dhcC5jCkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgaGli X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pCiAJYmlvX3B1dChiaW8pOwogfQogCi1zdGF0aWMg aW50IGhpYl9zdWJtaXRfaW8oaW50IHJ3LCBwZ29mZl90IHBhZ2Vfb2ZmLCB2b2lkICphZGRy LAorc3RhdGljIGludCBoaWJfc3VibWl0X2lvKGludCBvcCwgaW50IG9wX2ZsYWdzLCBwZ29m Zl90IHBhZ2Vfb2ZmLCB2b2lkICphZGRyLAogCQlzdHJ1Y3QgaGliX2Jpb19iYXRjaCAqaGIp CiB7CiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSB2aXJ0X3RvX3BhZ2UoYWRkcik7CkBAIC0yNjAs NyArMjYwLDggQEAgc3RhdGljIGludCBoaWJfc3VibWl0X2lvKGludCBydywgcGdvZmZfdCBw YWdlX29mZiwgdm9pZCAqYWRkciwKIAliaW8gPSBiaW9fYWxsb2MoX19HRlBfUkVDTEFJTSB8 IF9fR0ZQX0hJR0gsIDEpOwogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBwYWdlX29mZiAq IChQQUdFX1NJWkUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0gaGliX3Jlc3VtZV9iZGV2Owot CWJpby0+YmlfcncgfD0gcnc7CisJYmlvLT5iaV9vcCA9IG9wOworCWJpby0+YmlfcncgfD0g b3BfZmxhZ3M7CiAKIAlpZiAoYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9TSVpFLCAw KSA8IFBBR0VfU0laRSkgewogCQlwcmludGsoS0VSTl9FUlIgIlBNOiBBZGRpbmcgcGFnZSB0 byBiaW8gZmFpbGVkIGF0ICVsbHVcbiIsCkBAIC0yOTYsNyArMjk3LDggQEAgc3RhdGljIGlu dCBtYXJrX3N3YXBmaWxlcyhzdHJ1Y3Qgc3dhcF9tYXBfaGFuZGxlICpoYW5kbGUsIHVuc2ln bmVkIGludCBmbGFncykKIHsKIAlpbnQgZXJyb3I7CiAKLQloaWJfc3VibWl0X2lvKFJFQURf U1lOQywgc3dzdXNwX3Jlc3VtZV9ibG9jaywgc3dzdXNwX2hlYWRlciwgTlVMTCk7CisJaGli X3N1Ym1pdF9pbyhSRVFfT1BfUkVBRCwgUkVBRF9TWU5DLCBzd3N1c3BfcmVzdW1lX2Jsb2Nr LAorCQkgICAgICBzd3N1c3BfaGVhZGVyLCBOVUxMKTsKIAlpZiAoIW1lbWNtcCgiU1dBUC1T UEFDRSIsc3dzdXNwX2hlYWRlci0+c2lnLCAxMCkgfHwKIAkgICAgIW1lbWNtcCgiU1dBUFNQ QUNFMiIsc3dzdXNwX2hlYWRlci0+c2lnLCAxMCkpIHsKIAkJbWVtY3B5KHN3c3VzcF9oZWFk ZXItPm9yaWdfc2lnLHN3c3VzcF9oZWFkZXItPnNpZywgMTApOwpAQCAtMzA1LDggKzMwNyw4 IEBAIHN0YXRpYyBpbnQgbWFya19zd2FwZmlsZXMoc3RydWN0IHN3YXBfbWFwX2hhbmRsZSAq aGFuZGxlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCXN3c3VzcF9oZWFkZXItPmZsYWdzID0g ZmxhZ3M7CiAJCWlmIChmbGFncyAmIFNGX0NSQzMyX01PREUpCiAJCQlzd3N1c3BfaGVhZGVy LT5jcmMzMiA9IGhhbmRsZS0+Y3JjMzI7Ci0JCWVycm9yID0gaGliX3N1Ym1pdF9pbyhXUklU RV9TWU5DLCBzd3N1c3BfcmVzdW1lX2Jsb2NrLAotCQkJCQlzd3N1c3BfaGVhZGVyLCBOVUxM KTsKKwkJZXJyb3IgPSBoaWJfc3VibWl0X2lvKFJFUV9PUF9XUklURSwgV1JJVEVfU1lOQywK KwkJCQkgICAgICBzd3N1c3BfcmVzdW1lX2Jsb2NrLCBzd3N1c3BfaGVhZGVyLCBOVUxMKTsK IAl9IGVsc2UgewogCQlwcmludGsoS0VSTl9FUlIgIlBNOiBTd2FwIGhlYWRlciBub3QgZm91 bmQhXG4iKTsKIAkJZXJyb3IgPSAtRU5PREVWOwpAQCAtMzc5LDcgKzM4MSw3IEBAIHN0YXRp YyBpbnQgd3JpdGVfcGFnZSh2b2lkICpidWYsIHNlY3Rvcl90IG9mZnNldCwgc3RydWN0IGhp Yl9iaW9fYmF0Y2ggKmhiKQogCX0gZWxzZSB7CiAJCXNyYyA9IGJ1ZjsKIAl9Ci0JcmV0dXJu IGhpYl9zdWJtaXRfaW8oV1JJVEVfU1lOQywgb2Zmc2V0LCBzcmMsIGhiKTsKKwlyZXR1cm4g aGliX3N1Ym1pdF9pbyhSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMsIG9mZnNldCwgc3JjLCBo Yik7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2Vfc3dhcF93cml0ZXIoc3RydWN0IHN3YXBf bWFwX2hhbmRsZSAqaGFuZGxlKQpAQCAtOTgyLDcgKzk4NCw4IEBAIHN0YXRpYyBpbnQgZ2V0 X3N3YXBfcmVhZGVyKHN0cnVjdCBzd2FwX21hcF9oYW5kbGUgKmhhbmRsZSwKIAkJCXJldHVy biAtRU5PTUVNOwogCQl9CiAKLQkJZXJyb3IgPSBoaWJfc3VibWl0X2lvKFJFQURfU1lOQywg b2Zmc2V0LCB0bXAtPm1hcCwgTlVMTCk7CisJCWVycm9yID0gaGliX3N1Ym1pdF9pbyhSRVFf T1BfUkVBRCwgUkVBRF9TWU5DLCBvZmZzZXQsCisJCQkJICAgICAgdG1wLT5tYXAsIE5VTEwp OwogCQlpZiAoZXJyb3IpIHsKIAkJCXJlbGVhc2Vfc3dhcF9yZWFkZXIoaGFuZGxlKTsKIAkJ CXJldHVybiBlcnJvcjsKQEAgLTEwMDYsNyArMTAwOSw3IEBAIHN0YXRpYyBpbnQgc3dhcF9y ZWFkX3BhZ2Uoc3RydWN0IHN3YXBfbWFwX2hhbmRsZSAqaGFuZGxlLCB2b2lkICpidWYsCiAJ b2Zmc2V0ID0gaGFuZGxlLT5jdXItPmVudHJpZXNbaGFuZGxlLT5rXTsKIAlpZiAoIW9mZnNl dCkKIAkJcmV0dXJuIC1FRkFVTFQ7Ci0JZXJyb3IgPSBoaWJfc3VibWl0X2lvKFJFQURfU1lO Qywgb2Zmc2V0LCBidWYsIGhiKTsKKwllcnJvciA9IGhpYl9zdWJtaXRfaW8oUkVRX09QX1JF QUQsIFJFQURfU1lOQywgb2Zmc2V0LCBidWYsIGhiKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVy biBlcnJvcjsKIAlpZiAoKytoYW5kbGUtPmsgPj0gTUFQX1BBR0VfRU5UUklFUykgewpAQCAt MTUwOCw3ICsxNTExLDggQEAgaW50IHN3c3VzcF9jaGVjayh2b2lkKQogCWlmICghSVNfRVJS KGhpYl9yZXN1bWVfYmRldikpIHsKIAkJc2V0X2Jsb2Nrc2l6ZShoaWJfcmVzdW1lX2JkZXYs IFBBR0VfU0laRSk7CiAJCWNsZWFyX3BhZ2Uoc3dzdXNwX2hlYWRlcik7Ci0JCWVycm9yID0g aGliX3N1Ym1pdF9pbyhSRUFEX1NZTkMsIHN3c3VzcF9yZXN1bWVfYmxvY2ssCisJCWVycm9y ID0gaGliX3N1Ym1pdF9pbyhSRVFfT1BfUkVBRCwgUkVBRF9TWU5DLAorCQkJCQlzd3N1c3Bf cmVzdW1lX2Jsb2NrLAogCQkJCQlzd3N1c3BfaGVhZGVyLCBOVUxMKTsKIAkJaWYgKGVycm9y KQogCQkJZ290byBwdXQ7CkBAIC0xNTE2LDcgKzE1MjAsOCBAQCBpbnQgc3dzdXNwX2NoZWNr KHZvaWQpCiAJCWlmICghbWVtY21wKEhJQkVSTkFURV9TSUcsIHN3c3VzcF9oZWFkZXItPnNp ZywgMTApKSB7CiAJCQltZW1jcHkoc3dzdXNwX2hlYWRlci0+c2lnLCBzd3N1c3BfaGVhZGVy LT5vcmlnX3NpZywgMTApOwogCQkJLyogUmVzZXQgc3dhcCBzaWduYXR1cmUgbm93ICovCi0J CQllcnJvciA9IGhpYl9zdWJtaXRfaW8oV1JJVEVfU1lOQywgc3dzdXNwX3Jlc3VtZV9ibG9j aywKKwkJCWVycm9yID0gaGliX3N1Ym1pdF9pbyhSRVFfT1BfV1JJVEUsIFdSSVRFX1NZTkMs CisJCQkJCQlzd3N1c3BfcmVzdW1lX2Jsb2NrLAogCQkJCQkJc3dzdXNwX2hlYWRlciwgTlVM TCk7CiAJCX0gZWxzZSB7CiAJCQllcnJvciA9IC1FSU5WQUw7CkBAIC0xNTYwLDEwICsxNTY1 LDEyIEBAIGludCBzd3N1c3BfdW5tYXJrKHZvaWQpCiB7CiAJaW50IGVycm9yOwogCi0JaGli X3N1Ym1pdF9pbyhSRUFEX1NZTkMsIHN3c3VzcF9yZXN1bWVfYmxvY2ssIHN3c3VzcF9oZWFk ZXIsIE5VTEwpOworCWhpYl9zdWJtaXRfaW8oUkVRX09QX1JFQUQsIFJFQURfU1lOQywgc3dz dXNwX3Jlc3VtZV9ibG9jaywKKwkJICAgICAgc3dzdXNwX2hlYWRlciwgTlVMTCk7CiAJaWYg KCFtZW1jbXAoSElCRVJOQVRFX1NJRyxzd3N1c3BfaGVhZGVyLT5zaWcsIDEwKSkgewogCQlt ZW1jcHkoc3dzdXNwX2hlYWRlci0+c2lnLHN3c3VzcF9oZWFkZXItPm9yaWdfc2lnLCAxMCk7 Ci0JCWVycm9yID0gaGliX3N1Ym1pdF9pbyhXUklURV9TWU5DLCBzd3N1c3BfcmVzdW1lX2Js b2NrLAorCQllcnJvciA9IGhpYl9zdWJtaXRfaW8oUkVRX09QX1dSSVRFLCBXUklURV9TWU5D LAorCQkJCQlzd3N1c3BfcmVzdW1lX2Jsb2NrLAogCQkJCQlzd3N1c3BfaGVhZGVyLCBOVUxM KTsKIAl9IGVsc2UgewogCQlwcmludGsoS0VSTl9FUlIgIlBNOiBDYW5ub3QgZmluZCBzd3N1 c3Agc2lnbmF0dXJlIVxuIik7Ci0tIAoxLjguMy4xCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDE3LWRt LXNldC1iaV9vcC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1 MQAwMDAwMDA0MzcwNQAxMjYzMjE1NDIzMAAwMTU3NDAAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAARnJvbSBjYzg3MzNjY2FiYWI5MTI5MzdhNjg5MzdkMWI1OWM5MmY3NzUy MTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hy aXN0aUByZWRoYXQuY29tPgpEYXRlOiBNb24sIDcgRGVjIDIwMTUgMTU6NDE6MTggLTA2MDAK U3ViamVjdDogW1BBVENIIDE3LzMwXSBkbTogc2V0IGJpX29wIHRvIFJFUV9PUAoKVGhpcyBw YXRjaCBoYXMgZG0gc2V0IHRoZSBiaW8gYmlfb3AgdG8gYSBSRVFfT1AsIGFuZCBycV9mbGFn X2JpdHMKdG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0 aUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvbWQvZG0tYnVmaW8uYyAgICAgICAgICAgfCAg OCArKystLS0KIGRyaXZlcnMvbWQvZG0tY3J5cHQuYyAgICAgICAgICAgfCAgMSArCiBkcml2 ZXJzL21kL2RtLWlvLmMgICAgICAgICAgICAgIHwgNTcgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvZG0ta2NvcHlkLmMgICAgICAgICAg fCAyNSArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jICAg ICAgfCAgNiArKy0tLQogZHJpdmVycy9tZC9kbS1sb2cuYyAgICAgICAgICAgICB8ICA1ICsr LS0KIGRyaXZlcnMvbWQvZG0tcmFpZDEuYyAgICAgICAgICAgfCAxMSArKysrKy0tLQogZHJp dmVycy9tZC9kbS1zbmFwLXBlcnNpc3RlbnQuYyB8IDI0ICsrKysrKysrKy0tLS0tLS0tCiBk cml2ZXJzL21kL2RtLXRoaW4uYyAgICAgICAgICAgIHwgIDcgKystLS0KIGRyaXZlcnMvbWQv ZG0uYyAgICAgICAgICAgICAgICAgfCAgMSArCiBpbmNsdWRlL2xpbnV4L2RtLWlvLmggICAg ICAgICAgIHwgIDMgKystCiAxMSBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2 NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMgYi9k cml2ZXJzL21kL2RtLWJ1ZmlvLmMKaW5kZXggMTIzNDE3MS4uZjIxNzZhMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9tZC9kbS1idWZpby5jCisrKyBiL2RyaXZlcnMvbWQvZG0tYnVmaW8uYwpA QCAtNTU0LDcgKzU1NCw4IEBAIHN0YXRpYyB2b2lkIHVzZV9kbWlvKHN0cnVjdCBkbV9idWZm ZXIgKmIsIGludCBydywgc2VjdG9yX3QgYmxvY2ssCiB7CiAJaW50IHI7CiAJc3RydWN0IGRt X2lvX3JlcXVlc3QgaW9fcmVxID0gewotCQkuYmlfcncgPSBydywKKwkJLmJpX29wID0gcncs CisJCS5iaV9vcF9mbGFncyA9IDAsCiAJCS5ub3RpZnkuZm4gPSBkbWlvX2NvbXBsZXRlLAog CQkubm90aWZ5LmNvbnRleHQgPSBiLAogCQkuY2xpZW50ID0gYi0+Yy0+ZG1faW8sCkBAIC02 MTQsNyArNjE1LDcgQEAgc3RhdGljIHZvaWQgdXNlX2lubGluZV9iaW8oc3RydWN0IGRtX2J1 ZmZlciAqYiwgaW50IHJ3LCBzZWN0b3JfdCBibG9jaywKIAkgKiB0aGUgZG1fYnVmZmVyJ3Mg aW5saW5lIGJpbyBpcyBsb2NhbCB0byBidWZpby4KIAkgKi8KIAliLT5iaW8uYmlfcHJpdmF0 ZSA9IGVuZF9pbzsKLQliLT5iaW8uYmlfcncgfD0gcnc7CisJYi0+YmlvLmJpX29wID0gcnc7 CiAKIAkvKgogCSAqIFdlIGFzc3VtZSB0aGF0IGlmIGxlbiA+PSBQQUdFX1NJWkUgcHRyIGlz IHBhZ2UtYWxpZ25lZC4KQEAgLTEzMDMsNyArMTMwNCw4IEBAIEVYUE9SVF9TWU1CT0xfR1BM KGRtX2J1ZmlvX3dyaXRlX2RpcnR5X2J1ZmZlcnMpOwogaW50IGRtX2J1ZmlvX2lzc3VlX2Zs dXNoKHN0cnVjdCBkbV9idWZpb19jbGllbnQgKmMpCiB7CiAJc3RydWN0IGRtX2lvX3JlcXVl c3QgaW9fcmVxID0gewotCQkuYmlfcncgPSBXUklURV9GTFVTSCwKKwkJLmJpX29wID0gUkVR X09QX1dSSVRFLAorCQkuYmlfb3BfZmxhZ3MgPSBXUklURV9GTFVTSCwKIAkJLm1lbS50eXBl ID0gRE1fSU9fS01FTSwKIAkJLm1lbS5wdHIuYWRkciA9IE5VTEwsCiAJCS5jbGllbnQgPSBj LT5kbV9pbywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYyBiL2RyaXZlcnMv bWQvZG0tY3J5cHQuYwppbmRleCAzMTQ3YzhkLi5mNDY2ZmVjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2RtLWNyeXB0LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCkBAIC0xMTMz LDYgKzExMzMsNyBAQCBzdGF0aWMgdm9pZCBjbG9uZV9pbml0KHN0cnVjdCBkbV9jcnlwdF9p byAqaW8sIHN0cnVjdCBiaW8gKmNsb25lKQogCWNsb25lLT5iaV9wcml2YXRlID0gaW87CiAJ Y2xvbmUtPmJpX2VuZF9pbyAgPSBjcnlwdF9lbmRpbzsKIAljbG9uZS0+YmlfYmRldiAgICA9 IGNjLT5kZXYtPmJkZXY7CisJY2xvbmUtPmJpX29wICAgICAgPSBpby0+YmFzZV9iaW8tPmJp X29wOwogCWNsb25lLT5iaV9ydyAgICAgID0gaW8tPmJhc2VfYmlvLT5iaV9ydzsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1pby5jIGIvZHJpdmVycy9tZC9kbS1pby5jCmlu ZGV4IDE5NzUzMjYuLjQ1NDk3ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0taW8uYwor KysgYi9kcml2ZXJzL21kL2RtLWlvLmMKQEAgLTI3OCw4ICsyNzgsOSBAQCBzdGF0aWMgdm9p ZCBrbV9kcF9pbml0KHN0cnVjdCBkcGFnZXMgKmRwLCB2b2lkICpkYXRhKQogLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICogSU8gcm91dGluZXMgdGhhdCBhY2NlcHQgYSBsaXN0IG9mIHBhZ2VzLgogICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLwotc3RhdGljIHZvaWQgZG9fcmVnaW9uKGludCBydywgdW5zaWduZWQgcmVn aW9uLCBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwKLQkJICAgICAgc3RydWN0IGRwYWdl cyAqZHAsIHN0cnVjdCBpbyAqaW8pCitzdGF0aWMgdm9pZCBkb19yZWdpb24oaW50IG9wLCBp bnQgb3BfZmxhZ3MsIHVuc2lnbmVkIHJlZ2lvbiwKKwkJICAgICAgc3RydWN0IGRtX2lvX3Jl Z2lvbiAqd2hlcmUsIHN0cnVjdCBkcGFnZXMgKmRwLAorCQkgICAgICBzdHJ1Y3QgaW8gKmlv KQogewogCXN0cnVjdCBiaW8gKmJpbzsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKQEAgLTI5NSwy NCArMjk2LDI1IEBAIHN0YXRpYyB2b2lkIGRvX3JlZ2lvbihpbnQgcncsIHVuc2lnbmVkIHJl Z2lvbiwgc3RydWN0IGRtX2lvX3JlZ2lvbiAqd2hlcmUsCiAJLyoKIAkgKiBSZWplY3QgdW5z dXBwb3J0ZWQgZGlzY2FyZCBhbmQgd3JpdGUgc2FtZSByZXF1ZXN0cy4KIAkgKi8KLQlpZiAo cncgJiBSRVFfRElTQ0FSRCkKKwlpZiAob3AgPT0gUkVRX09QX0RJU0NBUkQpCiAJCXNwZWNp YWxfY21kX21heF9zZWN0b3JzID0gcS0+bGltaXRzLm1heF9kaXNjYXJkX3NlY3RvcnM7Ci0J ZWxzZSBpZiAocncgJiBSRVFfV1JJVEVfU0FNRSkKKwllbHNlIGlmIChvcCA9PSBSRVFfT1Bf V1JJVEVfU0FNRSkKIAkJc3BlY2lhbF9jbWRfbWF4X3NlY3RvcnMgPSBxLT5saW1pdHMubWF4 X3dyaXRlX3NhbWVfc2VjdG9yczsKLQlpZiAoKHJ3ICYgKFJFUV9ESVNDQVJEIHwgUkVRX1dS SVRFX1NBTUUpKSAmJiBzcGVjaWFsX2NtZF9tYXhfc2VjdG9ycyA9PSAwKSB7CisJaWYgKChv cCA9PSBSRVFfT1BfRElTQ0FSRCB8fCBvcCA9PSBSRVFfT1BfV1JJVEVfU0FNRSkgJiYKKwkg ICAgc3BlY2lhbF9jbWRfbWF4X3NlY3RvcnMgPT0gMCkgewogCQlkZWNfY291bnQoaW8sIHJl Z2lvbiwgLUVPUE5PVFNVUFApOwogCQlyZXR1cm47CiAJfQogCiAJLyoKLQkgKiB3aGVyZS0+ Y291bnQgbWF5IGJlIHplcm8gaWYgcncgaG9sZHMgYSBmbHVzaCBhbmQgd2UgbmVlZCB0bwor CSAqIHdoZXJlLT5jb3VudCBtYXkgYmUgemVybyBpZiBvcCBob2xkcyBhIGZsdXNoIGFuZCB3 ZSBuZWVkIHRvCiAJICogc2VuZCBhIHplcm8tc2l6ZWQgZmx1c2guCiAJICovCiAJZG8gewog CQkvKgogCQkgKiBBbGxvY2F0ZSBhIHN1aXRhYmx5IHNpemVkLWJpby4KIAkJICovCi0JCWlm ICgocncgJiBSRVFfRElTQ0FSRCkgfHwgKHJ3ICYgUkVRX1dSSVRFX1NBTUUpKQorCQlpZiAo KG9wID09IFJFUV9PUF9ESVNDQVJEKSB8fCAob3AgPT0gUkVRX09QX1dSSVRFX1NBTUUpKQog CQkJbnVtX2J2ZWNzID0gMTsKIAkJZWxzZQogCQkJbnVtX2J2ZWNzID0gbWluX3QoaW50LCBC SU9fTUFYX1BBR0VTLApAQCAtMzIyLDE0ICszMjQsMTUgQEAgc3RhdGljIHZvaWQgZG9fcmVn aW9uKGludCBydywgdW5zaWduZWQgcmVnaW9uLCBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVy ZSwKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHdoZXJlLT5zZWN0b3IgKyAod2hlcmUt PmNvdW50IC0gcmVtYWluaW5nKTsKIAkJYmlvLT5iaV9iZGV2ID0gd2hlcmUtPmJkZXY7CiAJ CWJpby0+YmlfZW5kX2lvID0gZW5kaW87Ci0JCWJpby0+YmlfcncgfD0gcnc7CisJCWJpby0+ Ymlfb3AgPSBvcDsKKwkJYmlvLT5iaV9ydyB8PSBvcF9mbGFnczsKIAkJc3RvcmVfaW9fYW5k X3JlZ2lvbl9pbl9iaW8oYmlvLCBpbywgcmVnaW9uKTsKIAotCQlpZiAocncgJiBSRVFfRElT Q0FSRCkgeworCQlpZiAob3AgPT0gUkVRX09QX0RJU0NBUkQpIHsKIAkJCW51bV9zZWN0b3Jz ID0gbWluX3Qoc2VjdG9yX3QsIHNwZWNpYWxfY21kX21heF9zZWN0b3JzLCByZW1haW5pbmcp OwogCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBudW1fc2VjdG9ycyA8PCBTRUNUT1JfU0hJ RlQ7CiAJCQlyZW1haW5pbmcgLT0gbnVtX3NlY3RvcnM7Ci0JCX0gZWxzZSBpZiAocncgJiBS RVFfV1JJVEVfU0FNRSkgeworCQl9IGVsc2UgaWYgKG9wID09IFJFUV9PUF9XUklURV9TQU1F KSB7CiAJCQkvKgogCQkJICogV1JJVEUgU0FNRSBvbmx5IHVzZXMgYSBzaW5nbGUgcGFnZS4K IAkJCSAqLwpAQCAtMzYwLDcgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIGRvX3JlZ2lvbihpbnQg cncsIHVuc2lnbmVkIHJlZ2lvbiwgc3RydWN0IGRtX2lvX3JlZ2lvbiAqd2hlcmUsCiAJfSB3 aGlsZSAocmVtYWluaW5nKTsKIH0KIAotc3RhdGljIHZvaWQgZGlzcGF0Y2hfaW8oaW50IHJ3 LCB1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsCitzdGF0aWMgdm9pZCBkaXNwYXRjaF9pbyhp bnQgb3AsIGludCBvcF9mbGFncywgdW5zaWduZWQgaW50IG51bV9yZWdpb25zLAogCQkJc3Ry dWN0IGRtX2lvX3JlZ2lvbiAqd2hlcmUsIHN0cnVjdCBkcGFnZXMgKmRwLAogCQkJc3RydWN0 IGlvICppbywgaW50IHN5bmMpCiB7CkBAIC0zNzAsNyArMzczLDcgQEAgc3RhdGljIHZvaWQg ZGlzcGF0Y2hfaW8oaW50IHJ3LCB1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsCiAJQlVHX09O KG51bV9yZWdpb25zID4gRE1fSU9fTUFYX1JFR0lPTlMpOwogCiAJaWYgKHN5bmMpCi0JCXJ3 IHw9IFJFUV9TWU5DOworCQlvcF9mbGFncyB8PSBSRVFfU1lOQzsKIAogCS8qCiAJICogRm9y IG11bHRpcGxlIHJlZ2lvbnMgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIHJld2luZApAQCAt Mzc4LDggKzM4MSw4IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoX2lvKGludCBydywgdW5zaWdu ZWQgaW50IG51bV9yZWdpb25zLAogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fcmVnaW9u czsgaSsrKSB7CiAJCSpkcCA9IG9sZF9wYWdlczsKLQkJaWYgKHdoZXJlW2ldLmNvdW50IHx8 IChydyAmIFJFUV9GTFVTSCkpCi0JCQlkb19yZWdpb24ocncsIGksIHdoZXJlICsgaSwgZHAs IGlvKTsKKwkJaWYgKHdoZXJlW2ldLmNvdW50IHx8IChvcF9mbGFncyAmIFJFUV9GTFVTSCkp CisJCQlkb19yZWdpb24ob3AsIG9wX2ZsYWdzLCBpLCB3aGVyZSArIGksIGRwLCBpbyk7CiAJ fQogCiAJLyoKQEAgLTQwMywxMyArNDA2LDEzIEBAIHN0YXRpYyB2b2lkIHN5bmNfaW9fY29t cGxldGUodW5zaWduZWQgbG9uZyBlcnJvciwgdm9pZCAqY29udGV4dCkKIH0KIAogc3RhdGlj IGludCBzeW5jX2lvKHN0cnVjdCBkbV9pb19jbGllbnQgKmNsaWVudCwgdW5zaWduZWQgaW50 IG51bV9yZWdpb25zLAotCQkgICBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwgaW50IHJ3 LCBzdHJ1Y3QgZHBhZ2VzICpkcCwKLQkJICAgdW5zaWduZWQgbG9uZyAqZXJyb3JfYml0cykK KwkJICAgc3RydWN0IGRtX2lvX3JlZ2lvbiAqd2hlcmUsIGludCBvcCwgaW50IG9wX2ZsYWdz LAorCQkgICBzdHJ1Y3QgZHBhZ2VzICpkcCwgdW5zaWduZWQgbG9uZyAqZXJyb3JfYml0cykK IHsKIAlzdHJ1Y3QgaW8gKmlvOwogCXN0cnVjdCBzeW5jX2lvIHNpbzsKIAotCWlmIChudW1f cmVnaW9ucyA+IDEgJiYgKHJ3ICYgUldfTUFTSykgIT0gV1JJVEUpIHsKKwlpZiAobnVtX3Jl Z2lvbnMgPiAxICYmICFvcF9pc193cml0ZShvcCkpIHsKIAkJV0FSTl9PTigxKTsKIAkJcmV0 dXJuIC1FSU87CiAJfQpAQCAtNDI2LDcgKzQyOSw3IEBAIHN0YXRpYyBpbnQgc3luY19pbyhz dHJ1Y3QgZG1faW9fY2xpZW50ICpjbGllbnQsIHVuc2lnbmVkIGludCBudW1fcmVnaW9ucywK IAlpby0+dm1hX2ludmFsaWRhdGVfYWRkcmVzcyA9IGRwLT52bWFfaW52YWxpZGF0ZV9hZGRy ZXNzOwogCWlvLT52bWFfaW52YWxpZGF0ZV9zaXplID0gZHAtPnZtYV9pbnZhbGlkYXRlX3Np emU7CiAKLQlkaXNwYXRjaF9pbyhydywgbnVtX3JlZ2lvbnMsIHdoZXJlLCBkcCwgaW8sIDEp OworCWRpc3BhdGNoX2lvKG9wLCBvcF9mbGFncywgbnVtX3JlZ2lvbnMsIHdoZXJlLCBkcCwg aW8sIDEpOwogCiAJd2FpdF9mb3JfY29tcGxldGlvbl9pbygmc2lvLndhaXQpOwogCkBAIC00 MzcsMTIgKzQ0MCwxMiBAQCBzdGF0aWMgaW50IHN5bmNfaW8oc3RydWN0IGRtX2lvX2NsaWVu dCAqY2xpZW50LCB1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsCiB9CiAKIHN0YXRpYyBpbnQg YXN5bmNfaW8oc3RydWN0IGRtX2lvX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBpbnQgbnVt X3JlZ2lvbnMsCi0JCSAgICBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwgaW50IHJ3LCBz dHJ1Y3QgZHBhZ2VzICpkcCwKLQkJICAgIGlvX25vdGlmeV9mbiBmbiwgdm9pZCAqY29udGV4 dCkKKwkJICAgIHN0cnVjdCBkbV9pb19yZWdpb24gKndoZXJlLCBpbnQgb3AsIGludCBvcF9m bGFncywKKwkJICAgIHN0cnVjdCBkcGFnZXMgKmRwLCBpb19ub3RpZnlfZm4gZm4sIHZvaWQg KmNvbnRleHQpCiB7CiAJc3RydWN0IGlvICppbzsKIAotCWlmIChudW1fcmVnaW9ucyA+IDEg JiYgKHJ3ICYgUldfTUFTSykgIT0gV1JJVEUpIHsKKwlpZiAobnVtX3JlZ2lvbnMgPiAxICYm ICFvcF9pc193cml0ZShvcCkpIHsKIAkJV0FSTl9PTigxKTsKIAkJZm4oMSwgY29udGV4dCk7 CiAJCXJldHVybiAtRUlPOwpAQCAtNDU4LDcgKzQ2MSw3IEBAIHN0YXRpYyBpbnQgYXN5bmNf aW8oc3RydWN0IGRtX2lvX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBpbnQgbnVtX3JlZ2lv bnMsCiAJaW8tPnZtYV9pbnZhbGlkYXRlX2FkZHJlc3MgPSBkcC0+dm1hX2ludmFsaWRhdGVf YWRkcmVzczsKIAlpby0+dm1hX2ludmFsaWRhdGVfc2l6ZSA9IGRwLT52bWFfaW52YWxpZGF0 ZV9zaXplOwogCi0JZGlzcGF0Y2hfaW8ocncsIG51bV9yZWdpb25zLCB3aGVyZSwgZHAsIGlv LCAwKTsKKwlkaXNwYXRjaF9pbyhvcCwgb3BfZmxhZ3MsIG51bV9yZWdpb25zLCB3aGVyZSwg ZHAsIGlvLCAwKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDgxLDcgKzQ4NCw3IEBAIHN0YXRp YyBpbnQgZHBfaW5pdChzdHJ1Y3QgZG1faW9fcmVxdWVzdCAqaW9fcmVxLCBzdHJ1Y3QgZHBh Z2VzICpkcCwKIAogCWNhc2UgRE1fSU9fVk1BOgogCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5n ZShpb19yZXEtPm1lbS5wdHIudm1hLCBzaXplKTsKLQkJaWYgKChpb19yZXEtPmJpX3J3ICYg UldfTUFTSykgPT0gUkVBRCkgeworCQlpZiAoaW9fcmVxLT5iaV9vcCA9PSBSRVFfT1BfUkVB RCkgewogCQkJZHAtPnZtYV9pbnZhbGlkYXRlX2FkZHJlc3MgPSBpb19yZXEtPm1lbS5wdHIu dm1hOwogCQkJZHAtPnZtYV9pbnZhbGlkYXRlX3NpemUgPSBzaXplOwogCQl9CkBAIC01MTks MTAgKzUyMiwxMiBAQCBpbnQgZG1faW8oc3RydWN0IGRtX2lvX3JlcXVlc3QgKmlvX3JlcSwg dW5zaWduZWQgbnVtX3JlZ2lvbnMsCiAKIAlpZiAoIWlvX3JlcS0+bm90aWZ5LmZuKQogCQly ZXR1cm4gc3luY19pbyhpb19yZXEtPmNsaWVudCwgbnVtX3JlZ2lvbnMsIHdoZXJlLAotCQkJ ICAgICAgIGlvX3JlcS0+YmlfcncsICZkcCwgc3luY19lcnJvcl9iaXRzKTsKKwkJCSAgICAg ICBpb19yZXEtPmJpX29wLCBpb19yZXEtPmJpX29wX2ZsYWdzLCAmZHAsCisJCQkgICAgICAg c3luY19lcnJvcl9iaXRzKTsKIAotCXJldHVybiBhc3luY19pbyhpb19yZXEtPmNsaWVudCwg bnVtX3JlZ2lvbnMsIHdoZXJlLCBpb19yZXEtPmJpX3J3LAotCQkJJmRwLCBpb19yZXEtPm5v dGlmeS5mbiwgaW9fcmVxLT5ub3RpZnkuY29udGV4dCk7CisJcmV0dXJuIGFzeW5jX2lvKGlv X3JlcS0+Y2xpZW50LCBudW1fcmVnaW9ucywgd2hlcmUsIGlvX3JlcS0+Ymlfb3AsCisJCQlp b19yZXEtPmJpX29wX2ZsYWdzLCAmZHAsIGlvX3JlcS0+bm90aWZ5LmZuLAorCQkJaW9fcmVx LT5ub3RpZnkuY29udGV4dCk7CiB9CiBFWFBPUlRfU1lNQk9MKGRtX2lvKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9kbS1rY29weWQuYyBiL2RyaXZlcnMvbWQvZG0ta2NvcHlkLmMK aW5kZXggMTQ1MmVkOS4uNDE4MmJjN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0ta2Nv cHlkLmMKKysrIGIvZHJpdmVycy9tZC9kbS1rY29weWQuYwpAQCAtNDY1LDEwICs0NjUsMTAg QEAgc3RhdGljIHZvaWQgY29tcGxldGVfaW8odW5zaWduZWQgbG9uZyBlcnJvciwgdm9pZCAq Y29udGV4dCkKIAlpb19qb2JfZmluaXNoKGtjLT50aHJvdHRsZSk7CiAKIAlpZiAoZXJyb3Ip IHsKLQkJaWYgKGpvYi0+cncgJiBXUklURSkKLQkJCWpvYi0+d3JpdGVfZXJyIHw9IGVycm9y OwotCQllbHNlCisJCWlmIChqb2ItPnJ3ID09IFJFQUQpCiAJCQlqb2ItPnJlYWRfZXJyID0g MTsKKwkJZWxzZQorCQkJam9iLT53cml0ZV9lcnIgfD0gZXJyb3I7CiAKIAkJaWYgKCF0ZXN0 X2JpdChETV9LQ09QWURfSUdOT1JFX0VSUk9SLCAmam9iLT5mbGFncykpIHsKIAkJCXB1c2go JmtjLT5jb21wbGV0ZV9qb2JzLCBqb2IpOwpAQCAtNDc3LDEzICs0NzcsMTEgQEAgc3RhdGlj IHZvaWQgY29tcGxldGVfaW8odW5zaWduZWQgbG9uZyBlcnJvciwgdm9pZCAqY29udGV4dCkK IAkJfQogCX0KIAotCWlmIChqb2ItPnJ3ICYgV1JJVEUpCi0JCXB1c2goJmtjLT5jb21wbGV0 ZV9qb2JzLCBqb2IpOwotCi0JZWxzZSB7CisJaWYgKGpvYi0+cncgPT0gUkVBRCkgewogCQlq b2ItPnJ3ID0gV1JJVEU7CiAJCXB1c2goJmtjLT5pb19qb2JzLCBqb2IpOwotCX0KKwl9IGVs c2UKKwkJcHVzaCgma2MtPmNvbXBsZXRlX2pvYnMsIGpvYik7CiAKIAl3YWtlKGtjKTsKIH0K QEAgLTQ5Niw3ICs0OTQsOCBAQCBzdGF0aWMgaW50IHJ1bl9pb19qb2Ioc3RydWN0IGtjb3B5 ZF9qb2IgKmpvYikKIHsKIAlpbnQgcjsKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEg PSB7Ci0JCS5iaV9ydyA9IGpvYi0+cncsCisJCS5iaV9vcCA9IGpvYi0+cncsCisJCS5iaV9v cF9mbGFncyA9IDAsCiAJCS5tZW0udHlwZSA9IERNX0lPX1BBR0VfTElTVCwKIAkJLm1lbS5w dHIucGwgPSBqb2ItPnBhZ2VzLAogCQkubWVtLm9mZnNldCA9IDAsCkBAIC01NTAsMTAgKzU0 OSwxMCBAQCBzdGF0aWMgaW50IHByb2Nlc3Nfam9icyhzdHJ1Y3QgbGlzdF9oZWFkICpqb2Jz LCBzdHJ1Y3QgZG1fa2NvcHlkX2NsaWVudCAqa2MsCiAKIAkJaWYgKHIgPCAwKSB7CiAJCQkv KiBlcnJvciB0aGlzIHJvZ3VlIGpvYiAqLwotCQkJaWYgKGpvYi0+cncgJiBXUklURSkKLQkJ CQlqb2ItPndyaXRlX2VyciA9ICh1bnNpZ25lZCBsb25nKSAtMUw7Ci0JCQllbHNlCisJCQlp ZiAoam9iLT5ydyA9PSBSRUFEKQogCQkJCWpvYi0+cmVhZF9lcnIgPSAxOworCQkJZWxzZQor CQkJCWpvYi0+d3JpdGVfZXJyID0gKHVuc2lnbmVkIGxvbmcpIC0xTDsKIAkJCXB1c2goJmtj LT5jb21wbGV0ZV9qb2JzLCBqb2IpOwogCQkJYnJlYWs7CiAJCX0KQEAgLTczNCw3ICs3MzMs NyBAQCBpbnQgZG1fa2NvcHlkX2NvcHkoc3RydWN0IGRtX2tjb3B5ZF9jbGllbnQgKmtjLCBz dHJ1Y3QgZG1faW9fcmVnaW9uICpmcm9tLAogCQkvKgogCQkgKiBVc2UgV1JJVEUgU0FNRSB0 byBvcHRpbWl6ZSB6ZXJvaW5nIGlmIGFsbCBkZXN0cyBzdXBwb3J0IGl0LgogCQkgKi8KLQkJ am9iLT5ydyA9IFdSSVRFIHwgUkVRX1dSSVRFX1NBTUU7CisJCWpvYi0+cncgPSBSRVFfT1Bf V1JJVEVfU0FNRTsKIAkJZm9yIChpID0gMDsgaSA8IGpvYi0+bnVtX2Rlc3RzOyBpKyspCiAJ CQlpZiAoIWJkZXZfd3JpdGVfc2FtZShqb2ItPmRlc3RzW2ldLmJkZXYpKSB7CiAJCQkJam9i LT5ydyA9IFdSSVRFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMg Yi9kcml2ZXJzL21kL2RtLWxvZy13cml0ZXMuYwppbmRleCAyMTc2MGUzLi5mNjNiYmY0IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWxvZy13cml0ZXMuYworKysgYi9kcml2ZXJzL21k L2RtLWxvZy13cml0ZXMuYwpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVf bWV0YWRhdGEoc3RydWN0IGxvZ193cml0ZXNfYyAqbGMsIHZvaWQgKmVudHJ5LAogCWJpby0+ YmlfYmRldiA9IGxjLT5sb2dkZXYtPmJkZXY7CiAJYmlvLT5iaV9lbmRfaW8gPSBsb2dfZW5k X2lvOwogCWJpby0+YmlfcHJpdmF0ZSA9IGxjOwotCWJpby0+YmlfcncgfD0gV1JJVEU7CisJ YmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAogCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9L RVJORUwpOwogCWlmICghcGFnZSkgewpAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRpYyBpbnQg bG9nX29uZV9ibG9jayhzdHJ1Y3QgbG9nX3dyaXRlc19jICpsYywKIAliaW8tPmJpX2JkZXYg PSBsYy0+bG9nZGV2LT5iZGV2OwogCWJpby0+YmlfZW5kX2lvID0gbG9nX2VuZF9pbzsKIAli aW8tPmJpX3ByaXZhdGUgPSBsYzsKLQliaW8tPmJpX3J3IHw9IFdSSVRFOworCWJpby0+Ymlf b3AgPSBSRVFfT1BfV1JJVEU7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYmxvY2stPnZlY19jbnQ7 IGkrKykgewogCQkvKgpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRpYyBpbnQgbG9nX29uZV9i bG9jayhzdHJ1Y3QgbG9nX3dyaXRlc19jICpsYywKIAkJCWJpby0+YmlfYmRldiA9IGxjLT5s b2dkZXYtPmJkZXY7CiAJCQliaW8tPmJpX2VuZF9pbyA9IGxvZ19lbmRfaW87CiAJCQliaW8t PmJpX3ByaXZhdGUgPSBsYzsKLQkJCWJpby0+YmlfcncgfD0gV1JJVEU7CisJCQliaW8tPmJp X29wID0gUkVRX09QX1dSSVRFOwogCiAJCQlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBibG9j ay0+dmVjc1tpXS5idl9wYWdlLAogCQkJCQkgICBibG9jay0+dmVjc1tpXS5idl9sZW4sIDAp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1sb2cuYyBiL2RyaXZlcnMvbWQvZG0tbG9n LmMKaW5kZXggNjI3ZDE5MS4uNGNhMmQxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1s b2cuYworKysgYi9kcml2ZXJzL21kL2RtLWxvZy5jCkBAIC0yOTMsNyArMjkzLDcgQEAgc3Rh dGljIHZvaWQgaGVhZGVyX2Zyb21fZGlzayhzdHJ1Y3QgbG9nX2hlYWRlcl9jb3JlICpjb3Jl LCBzdHJ1Y3QgbG9nX2hlYWRlcl9kaXMKIAogc3RhdGljIGludCByd19oZWFkZXIoc3RydWN0 IGxvZ19jICpsYywgaW50IHJ3KQogewotCWxjLT5pb19yZXEuYmlfcncgPSBydzsKKwlsYy0+ aW9fcmVxLmJpX29wID0gcnc7CiAKIAlyZXR1cm4gZG1faW8oJmxjLT5pb19yZXEsIDEsICZs Yy0+aGVhZGVyX2xvY2F0aW9uLCBOVUxMKTsKIH0KQEAgLTMwNiw3ICszMDYsOCBAQCBzdGF0 aWMgaW50IGZsdXNoX2hlYWRlcihzdHJ1Y3QgbG9nX2MgKmxjKQogCQkuY291bnQgPSAwLAog CX07CiAKLQlsYy0+aW9fcmVxLmJpX3J3ID0gV1JJVEVfRkxVU0g7CisJbGMtPmlvX3JlcS5i aV9vcCA9IFJFUV9PUF9XUklURTsKKwlsYy0+aW9fcmVxLmJpX29wX2ZsYWdzID0gV1JJVEVf RkxVU0g7CiAKIAlyZXR1cm4gZG1faW8oJmxjLT5pb19yZXEsIDEsICZudWxsX2xvY2F0aW9u LCBOVUxMKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcmFpZDEuYyBiL2RyaXZl cnMvbWQvZG0tcmFpZDEuYwppbmRleCBmMmEzNjNhLi42YjYxYjYyIDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLXJhaWQxLmMKKysrIGIvZHJpdmVycy9tZC9kbS1yYWlkMS5jCkBAIC0y NjAsNyArMjYwLDggQEAgc3RhdGljIGludCBtaXJyb3JfZmx1c2goc3RydWN0IGRtX3Rhcmdl dCAqdGkpCiAJc3RydWN0IGRtX2lvX3JlZ2lvbiBpb1ttcy0+bnJfbWlycm9yc107CiAJc3Ry dWN0IG1pcnJvciAqbTsKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEgPSB7Ci0JCS5i aV9ydyA9IFdSSVRFX0ZMVVNILAorCQkuYmlfb3AgPSBSRVFfT1BfV1JJVEUsCisJCS5iaV9v cF9mbGFncyA9IFdSSVRFX0ZMVVNILAogCQkubWVtLnR5cGUgPSBETV9JT19LTUVNLAogCQku bWVtLnB0ci5hZGRyID0gTlVMTCwKIAkJLmNsaWVudCA9IG1zLT5pb19jbGllbnQsCkBAIC01 NDEsNyArNTQyLDggQEAgc3RhdGljIHZvaWQgcmVhZF9hc3luY19iaW8oc3RydWN0IG1pcnJv ciAqbSwgc3RydWN0IGJpbyAqYmlvKQogewogCXN0cnVjdCBkbV9pb19yZWdpb24gaW87CiAJ c3RydWN0IGRtX2lvX3JlcXVlc3QgaW9fcmVxID0gewotCQkuYmlfcncgPSBSRUFELAorCQku Ymlfb3AgPSBSRVFfT1BfUkVBRCwKKwkJLmJpX29wX2ZsYWdzID0gMCwKIAkJLm1lbS50eXBl ID0gRE1fSU9fQklPLAogCQkubWVtLnB0ci5iaW8gPSBiaW8sCiAJCS5ub3RpZnkuZm4gPSBy ZWFkX2NhbGxiYWNrLApAQCAtNjU0LDcgKzY1Niw4IEBAIHN0YXRpYyB2b2lkIGRvX3dyaXRl KHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBkbV9p b19yZWdpb24gaW9bbXMtPm5yX21pcnJvcnNdLCAqZGVzdCA9IGlvOwogCXN0cnVjdCBtaXJy b3IgKm07CiAJc3RydWN0IGRtX2lvX3JlcXVlc3QgaW9fcmVxID0gewotCQkuYmlfcncgPSBX UklURSB8IChiaW8tPmJpX3J3ICYgV1JJVEVfRkxVU0hfRlVBKSwKKwkJLmJpX29wID0gUkVR X09QX1dSSVRFLAorCQkuYmlfb3BfZmxhZ3MgPSBiaW8tPmJpX3J3ICYgV1JJVEVfRkxVU0hf RlVBLAogCQkubWVtLnR5cGUgPSBETV9JT19CSU8sCiAJCS5tZW0ucHRyLmJpbyA9IGJpbywK IAkJLm5vdGlmeS5mbiA9IHdyaXRlX2NhbGxiYWNrLApAQCAtNjYzLDcgKzY2Niw3IEBAIHN0 YXRpYyB2b2lkIGRvX3dyaXRlKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpbyAq YmlvKQogCX07CiAKIAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJEKSB7Ci0JCWlvX3Jl cS5iaV9ydyB8PSBSRVFfRElTQ0FSRDsKKwkJaW9fcmVxLmJpX29wID0gUkVRX09QX0RJU0NB UkQ7CiAJCWlvX3JlcS5tZW0udHlwZSA9IERNX0lPX0tNRU07CiAJCWlvX3JlcS5tZW0ucHRy LmFkZHIgPSBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tc25hcC1wZXJz aXN0ZW50LmMgYi9kcml2ZXJzL21kL2RtLXNuYXAtcGVyc2lzdGVudC5jCmluZGV4IDMxNjRi OGIuLjkxZDQ4MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tc25hcC1wZXJzaXN0ZW50 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1zbmFwLXBlcnNpc3RlbnQuYwpAQCAtMjI2LDggKzIy Niw4IEBAIHN0YXRpYyB2b2lkIGRvX21ldGFkYXRhKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKIC8qCiAgKiBSZWFkIG9yIHdyaXRlIGEgY2h1bmsgYWxpZ25lZCBhbmQgc2l6ZWQgYmxv Y2sgb2YgZGF0YSBmcm9tIGEgZGV2aWNlLgogICovCi1zdGF0aWMgaW50IGNodW5rX2lvKHN0 cnVjdCBwc3RvcmUgKnBzLCB2b2lkICphcmVhLCBjaHVua190IGNodW5rLCBpbnQgcncsCi0J CSAgICBpbnQgbWV0YWRhdGEpCitzdGF0aWMgaW50IGNodW5rX2lvKHN0cnVjdCBwc3RvcmUg KnBzLCB2b2lkICphcmVhLCBjaHVua190IGNodW5rLCBpbnQgb3AsCisJCSAgICBpbnQgb3Bf ZmxhZ3MsIGludCBtZXRhZGF0YSkKIHsKIAlzdHJ1Y3QgZG1faW9fcmVnaW9uIHdoZXJlID0g ewogCQkuYmRldiA9IGRtX3NuYXBfY293KHBzLT5zdG9yZS0+c25hcCktPmJkZXYsCkBAIC0y MzUsNyArMjM1LDggQEAgc3RhdGljIGludCBjaHVua19pbyhzdHJ1Y3QgcHN0b3JlICpwcywg dm9pZCAqYXJlYSwgY2h1bmtfdCBjaHVuaywgaW50IHJ3LAogCQkuY291bnQgPSBwcy0+c3Rv cmUtPmNodW5rX3NpemUsCiAJfTsKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEgPSB7 Ci0JCS5iaV9ydyA9IHJ3LAorCQkuYmlfb3AgPSBvcCwKKwkJLmJpX29wX2ZsYWdzID0gb3Bf ZmxhZ3MsCiAJCS5tZW0udHlwZSA9IERNX0lPX1ZNQSwKIAkJLm1lbS5wdHIudm1hID0gYXJl YSwKIAkJLmNsaWVudCA9IHBzLT5pb19jbGllbnQsCkBAIC0yODEsMTQgKzI4MiwxNCBAQCBz dGF0aWMgdm9pZCBza2lwX21ldGFkYXRhKHN0cnVjdCBwc3RvcmUgKnBzKQogICogUmVhZCBv ciB3cml0ZSBhIG1ldGFkYXRhIGFyZWEuICBSZW1lbWJlcmluZyB0byBza2lwIHRoZSBmaXJz dAogICogY2h1bmsgd2hpY2ggaG9sZHMgdGhlIGhlYWRlci4KICAqLwotc3RhdGljIGludCBh cmVhX2lvKHN0cnVjdCBwc3RvcmUgKnBzLCBpbnQgcncpCitzdGF0aWMgaW50IGFyZWFfaW8o c3RydWN0IHBzdG9yZSAqcHMsIGludCBvcCwgaW50IG9wX2ZsYWdzKQogewogCWludCByOwog CWNodW5rX3QgY2h1bms7CiAKIAljaHVuayA9IGFyZWFfbG9jYXRpb24ocHMsIHBzLT5jdXJy ZW50X2FyZWEpOwogCi0JciA9IGNodW5rX2lvKHBzLCBwcy0+YXJlYSwgY2h1bmssIHJ3LCAw KTsKKwlyID0gY2h1bmtfaW8ocHMsIHBzLT5hcmVhLCBjaHVuaywgb3AsIG9wX2ZsYWdzLCAw KTsKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKQEAgLTMwMiw3ICszMDMsOCBAQCBzdGF0aWMg dm9pZCB6ZXJvX21lbW9yeV9hcmVhKHN0cnVjdCBwc3RvcmUgKnBzKQogCiBzdGF0aWMgaW50 IHplcm9fZGlza19hcmVhKHN0cnVjdCBwc3RvcmUgKnBzLCBjaHVua190IGFyZWEpCiB7Ci0J cmV0dXJuIGNodW5rX2lvKHBzLCBwcy0+emVyb19hcmVhLCBhcmVhX2xvY2F0aW9uKHBzLCBh cmVhKSwgV1JJVEUsIDApOworCXJldHVybiBjaHVua19pbyhwcywgcHMtPnplcm9fYXJlYSwg YXJlYV9sb2NhdGlvbihwcywgYXJlYSksCisJCQlSRVFfT1BfV1JJVEUsIDAsIDApOwogfQog CiBzdGF0aWMgaW50IHJlYWRfaGVhZGVyKHN0cnVjdCBwc3RvcmUgKnBzLCBpbnQgKm5ld19z bmFwc2hvdCkKQEAgLTMzNCw3ICszMzYsNyBAQCBzdGF0aWMgaW50IHJlYWRfaGVhZGVyKHN0 cnVjdCBwc3RvcmUgKnBzLCBpbnQgKm5ld19zbmFwc2hvdCkKIAlpZiAocikKIAkJcmV0dXJu IHI7CiAKLQlyID0gY2h1bmtfaW8ocHMsIHBzLT5oZWFkZXJfYXJlYSwgMCwgUkVBRCwgMSk7 CisJciA9IGNodW5rX2lvKHBzLCBwcy0+aGVhZGVyX2FyZWEsIDAsIFJFUV9PUF9SRUFELCAw LCAxKTsKIAlpZiAocikKIAkJZ290byBiYWQ7CiAKQEAgLTM5NSw3ICszOTcsNyBAQCBzdGF0 aWMgaW50IHdyaXRlX2hlYWRlcihzdHJ1Y3QgcHN0b3JlICpwcykKIAlkaC0+dmVyc2lvbiA9 IGNwdV90b19sZTMyKHBzLT52ZXJzaW9uKTsKIAlkaC0+Y2h1bmtfc2l6ZSA9IGNwdV90b19s ZTMyKHBzLT5zdG9yZS0+Y2h1bmtfc2l6ZSk7CiAKLQlyZXR1cm4gY2h1bmtfaW8ocHMsIHBz LT5oZWFkZXJfYXJlYSwgMCwgV1JJVEUsIDEpOworCXJldHVybiBjaHVua19pbyhwcywgcHMt PmhlYWRlcl9hcmVhLCAwLCBSRVFfT1BfV1JJVEUsIDAsIDEpOwogfQogCiAvKgpAQCAtNzM2 LDcgKzczOCw3IEBAIHN0YXRpYyB2b2lkIHBlcnNpc3RlbnRfY29tbWl0X2V4Y2VwdGlvbihz dHJ1Y3QgZG1fZXhjZXB0aW9uX3N0b3JlICpzdG9yZSwKIAkvKgogCSAqIENvbW1pdCBleGNl cHRpb25zIHRvIGRpc2suCiAJICovCi0JaWYgKHBzLT52YWxpZCAmJiBhcmVhX2lvKHBzLCBX UklURV9GTFVTSF9GVUEpKQorCWlmIChwcy0+dmFsaWQgJiYgYXJlYV9pbyhwcywgUkVRX09Q X1dSSVRFLCBXUklURV9GTFVTSF9GVUEpKQogCQlwcy0+dmFsaWQgPSAwOwogCiAJLyoKQEAg LTc3Niw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IHBlcnNpc3RlbnRfcHJlcGFyZV9tZXJnZShz dHJ1Y3QgZG1fZXhjZXB0aW9uX3N0b3JlICpzdG9yZSwKIAkJCXJldHVybiAwOwogCiAJCXBz LT5jdXJyZW50X2FyZWEtLTsKLQkJciA9IGFyZWFfaW8ocHMsIFJFQUQpOworCQlyID0gYXJl YV9pbyhwcywgUkVRX09QX1JFQUQsIDApOwogCQlpZiAociA8IDApCiAJCQlyZXR1cm4gcjsK IAkJcHMtPmN1cnJlbnRfY29tbWl0dGVkID0gcHMtPmV4Y2VwdGlvbnNfcGVyX2FyZWE7CkBA IC04MTMsNyArODE1LDcgQEAgc3RhdGljIGludCBwZXJzaXN0ZW50X2NvbW1pdF9tZXJnZShz dHJ1Y3QgZG1fZXhjZXB0aW9uX3N0b3JlICpzdG9yZSwKIAlmb3IgKGkgPSAwOyBpIDwgbnJf bWVyZ2VkOyBpKyspCiAJCWNsZWFyX2V4Y2VwdGlvbihwcywgcHMtPmN1cnJlbnRfY29tbWl0 dGVkIC0gMSAtIGkpOwogCi0JciA9IGFyZWFfaW8ocHMsIFdSSVRFX0ZMVVNIX0ZVQSk7CisJ ciA9IGFyZWFfaW8ocHMsIFJFUV9PUF9XUklURSwgV1JJVEVfRkxVU0hfRlVBKTsKIAlpZiAo ciA8IDApCiAJCXJldHVybiByOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXRoaW4u YyBiL2RyaXZlcnMvbWQvZG0tdGhpbi5jCmluZGV4IDRkYjVhZmMuLjdhNzJiNzYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jCisrKyBiL2RyaXZlcnMvbWQvZG0tdGhpbi5j CkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIGludCBfX2Jsa2Rldl9pc3N1ZV9kaXNjYXJk X2FzeW5jKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3QKIAkJCQkJ c3RydWN0IGJpbyAqcGFyZW50X2JpbykKIHsKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9 IGJkZXZfZ2V0X3F1ZXVlKGJkZXYpOwotCWludCB0eXBlID0gUkVRX1dSSVRFIHwgUkVRX0RJ U0NBUkQ7CisJaW50IG9wX2ZsYWdzID0gMDsKIAlzdHJ1Y3QgYmlvICpiaW87CiAKIAlpZiAo IXEgfHwgIW5yX3NlY3RzKQpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyBpbnQgX19ibGtk ZXZfaXNzdWVfZGlzY2FyZF9hc3luYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0 b3JfdCBzZWN0CiAJaWYgKGZsYWdzICYgQkxLREVWX0RJU0NBUkRfU0VDVVJFKSB7CiAJCWlm ICghYmxrX3F1ZXVlX3NlY2Rpc2NhcmQocSkpCiAJCQlyZXR1cm4gLUVPUE5PVFNVUFA7Ci0J CXR5cGUgfD0gUkVRX1NFQ1VSRTsKKwkJb3BfZmxhZ3MgfD0gUkVRX1NFQ1VSRTsKIAl9CiAK IAkvKgpAQCAtMzY1LDcgKzM2NSw4IEBAIHN0YXRpYyBpbnQgX19ibGtkZXZfaXNzdWVfZGlz Y2FyZF9hc3luYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0CiAJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAliaW8tPmJpX2JkZXYgPSBiZGV2 OwogCWJpby0+YmlfaXRlci5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKLQliaW8tPmJpX3J3 IHw9IHR5cGU7CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9ESVNDQVJEOworCWJpby0+Ymlfcncg fD0gb3BfZmxhZ3M7CiAKIAlzdWJtaXRfYmlvKGJpbyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRleCA1ZGY0MDQ4Li4xNzc3YzljIDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC0y MzU4LDYgKzIzNTgsNyBAQCBzdGF0aWMgc3RydWN0IG1hcHBlZF9kZXZpY2UgKmFsbG9jX2Rl dihpbnQgbWlub3IpCiAKIAliaW9faW5pdCgmbWQtPmZsdXNoX2Jpbyk7CiAJbWQtPmZsdXNo X2Jpby5iaV9iZGV2ID0gbWQtPmJkZXY7CisJbWQtPmZsdXNoX2Jpby5iaV9vcCA9IFJFUV9P UF9XUklURTsKIAltZC0+Zmx1c2hfYmlvLmJpX3J3ID0gV1JJVEVfRkxVU0g7CiAKIAlkbV9z dGF0c19pbml0KCZtZC0+c3RhdHMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbS1p by5oIGIvaW5jbHVkZS9saW51eC9kbS1pby5oCmluZGV4IGE2OGNiZTUuLmI5MWIwMjMgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZG0taW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Rt LWlvLmgKQEAgLTU3LDcgKzU3LDggQEAgc3RydWN0IGRtX2lvX25vdGlmeSB7CiAgKi8KIHN0 cnVjdCBkbV9pb19jbGllbnQ7CiBzdHJ1Y3QgZG1faW9fcmVxdWVzdCB7Ci0JaW50IGJpX3J3 OwkJCS8qIFJFQUR8V1JJVEUgLSBub3QgUkVBREEgKi8KKwlpbnQgYmlfb3A7CQkJLyogUkVR X09QICovCisJaW50IGJpX29wX2ZsYWdzOwkJLyogcnFfZmxhZ19iaXRzICovCiAJc3RydWN0 IGRtX2lvX21lbW9yeSBtZW07CS8qIE1lbW9yeSB0byB1c2UgZm9yIGlvICovCiAJc3RydWN0 IGRtX2lvX25vdGlmeSBub3RpZnk7CS8qIFN5bmNocm9ub3VzIGlmIG5vdGlmeS5mbiBpcyBO VUxMICovCiAJc3RydWN0IGRtX2lvX2NsaWVudCAqY2xpZW50OwkvKiBDbGllbnQgbWVtb3J5 IGhhbmRsZXIgKi8KLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wLzAwMTgtZG0tcGFzcy1kbS1z dGF0cy1kYXRhLWRpci1pbnN0ZWFkLW9mLWJpX3J3LnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDA3 MTU3ADEyNjMyMTU0MjMwADAyMTczMAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABGcm9tIDM1ZGVhMWI0MDlkMzkyMzRiYmVkYzJkYWI1YWI3OTc2NjNmYWZkNzEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhh dC5jb20+CkRhdGU6IFNhdCwgNSBEZWMgMjAxNSAyMDoyNDowNiAtMDYwMApTdWJqZWN0OiBb UEFUQ0ggMTgvMzBdIGRtOiBwYXNzIGRtIHN0YXRzIGRhdGEgZGlyIGluc3RlYWQgb2YgYmlf cncKCkl0IGxvb2tzIGxpa2UgZG0gc3RhdHMgcHJpbWFyaWx5IGNhcmVzIGFib3V0IHRoZSBk YXRhIGRpcmVjdGlvbgooUkVBRCB2cyBXUklURSkgYW5kIGRvZXMgbm90IG5lZWQgdGhlIGJp by9yZXF1ZXN0IGZsYWdzCmFuZCBpbiB0aGUgZnV0dXJlIG9wZXJhdGlvbiB2YWx1ZS4gUkVR X0RJU0NBUkQgaXMgYWx3YXlzIHNldCB3aXRoClJFUV9XUklURSwgc28gdGhlIGNoZWNrIGZv ciBlaXRoZXIgb25lIGluIGRtX3N0YXRzX2FjY291bnRfaW8KaXMgbm90IG5lZWRlZC4KClRo aXMgcGF0Y2ggaGFzIGl0IHVzZSB0aGUgYmlvIGFuZCByZXF1ZXN0IGRhdGFfZGlyIGhlbHBl cnMKaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlIGJpX3J3L2NtZF9mbGFncyBkaXJlY3RseS4g VGhpcyBtYWtlcwp0aGUgbmV4dCBwYXRjaGVzIHRoYXQgcmVtb3ZlIHRoZSBvcGVyYXRpb24g ZnJvbSB0aGUgY21kX2ZsYWdzCmFuZCBiaV9ydyBjbGVhbmVyIHNpbmNlIHdlIGRvIG5vdCBo YXZlIHRvIGNoZWNrIGZvciBtdWx0aXBsZQpvcGVyYXRpb25zLgoKU2lnbmVkLW9mZi1ieTog TWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL21kL2Rt LXN0YXRzLmMgfCA2ICsrKy0tLQogZHJpdmVycy9tZC9kbS5jICAgICAgIHwgOCArKysrLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1zdGF0cy5jIGIvZHJpdmVycy9tZC9kbS1zdGF0 cy5jCmluZGV4IDgyODk4MDQuLjk2YjVjMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0t c3RhdHMuYworKysgYi9kcml2ZXJzL21kL2RtLXN0YXRzLmMKQEAgLTUxOCw3ICs1MTgsNyBA QCBzdGF0aWMgdm9pZCBkbV9zdGF0X2Zvcl9lbnRyeShzdHJ1Y3QgZG1fc3RhdCAqcywgc2l6 ZV90IGVudHJ5LAogCQkJICAgICAgc3RydWN0IGRtX3N0YXRzX2F1eCAqc3RhdHNfYXV4LCBi b29sIGVuZCwKIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgZHVyYXRpb25famlmZmllcykKIHsK LQl1bnNpZ25lZCBsb25nIGlkeCA9IGJpX3J3ICYgUkVRX1dSSVRFOworCXVuc2lnbmVkIGxv bmcgaWR4ID0gYmlfcnc7CiAJc3RydWN0IGRtX3N0YXRfc2hhcmVkICpzaGFyZWQgPSAmcy0+ c3RhdF9zaGFyZWRbZW50cnldOwogCXN0cnVjdCBkbV9zdGF0X3BlcmNwdSAqcDsKIApAQCAt NjQ1LDggKzY0NSw4IEBAIHZvaWQgZG1fc3RhdHNfYWNjb3VudF9pbyhzdHJ1Y3QgZG1fc3Rh dHMgKnN0YXRzLCB1bnNpZ25lZCBsb25nIGJpX3J3LAogCQlsYXN0ID0gcmF3X2NwdV9wdHIo c3RhdHMtPmxhc3QpOwogCQlzdGF0c19hdXgtPm1lcmdlZCA9CiAJCQkoYmlfc2VjdG9yID09 IChBQ0NFU1NfT05DRShsYXN0LT5sYXN0X3NlY3RvcikgJiYKLQkJCQkgICAgICAgKChiaV9y dyAmIChSRVFfV1JJVEUgfCBSRVFfRElTQ0FSRCkpID09Ci0JCQkJCShBQ0NFU1NfT05DRShs YXN0LT5sYXN0X3J3KSAmIChSRVFfV1JJVEUgfCBSRVFfRElTQ0FSRCkpKQorCQkJCSAgICAg ICAoKGJpX3J3ID09IFdSSVRFKSA9PQorCQkJCQkoQUNDRVNTX09OQ0UobGFzdC0+bGFzdF9y dykgPT0gV1JJVEUpKQogCQkJCSAgICAgICApKTsKIAkJQUNDRVNTX09OQ0UobGFzdC0+bGFz dF9zZWN0b3IpID0gZW5kX3NlY3RvcjsKIAkJQUNDRVNTX09OQ0UobGFzdC0+bGFzdF9ydykg PSBiaV9ydzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0u YwppbmRleCAxNzc3YzljLi41ZGJkYWU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMK KysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC02ODYsNyArNjg2LDcgQEAgc3RhdGljIHZvaWQg c3RhcnRfaW9fYWNjdChzdHJ1Y3QgZG1faW8gKmlvKQogCQlhdG9taWNfaW5jX3JldHVybigm bWQtPnBlbmRpbmdbcnddKSk7CiAKIAlpZiAodW5saWtlbHkoZG1fc3RhdHNfdXNlZCgmbWQt PnN0YXRzKSkpCi0JCWRtX3N0YXRzX2FjY291bnRfaW8oJm1kLT5zdGF0cywgYmlvLT5iaV9y dywgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJZG1fc3RhdHNfYWNjb3VudF9pbygmbWQt PnN0YXRzLCBiaW9fZGF0YV9kaXIoYmlvKSwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJ CQkgICAgYmlvX3NlY3RvcnMoYmlvKSwgZmFsc2UsIDAsICZpby0+c3RhdHNfYXV4KTsKIH0K IApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIGVuZF9pb19hY2N0KHN0cnVjdCBk bV9pbyAqaW8pCiAJZ2VuZXJpY19lbmRfaW9fYWNjdChydywgJmRtX2Rpc2sobWQpLT5wYXJ0 MCwgaW8tPnN0YXJ0X3RpbWUpOwogCiAJaWYgKHVubGlrZWx5KGRtX3N0YXRzX3VzZWQoJm1k LT5zdGF0cykpKQotCQlkbV9zdGF0c19hY2NvdW50X2lvKCZtZC0+c3RhdHMsIGJpby0+Ymlf cncsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCWRtX3N0YXRzX2FjY291bnRfaW8oJm1k LT5zdGF0cywgYmlvX2RhdGFfZGlyKGJpbyksIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJ CQkJICAgIGJpb19zZWN0b3JzKGJpbyksIHRydWUsIGR1cmF0aW9uLCAmaW8tPnN0YXRzX2F1 eCk7CiAKIAkvKgpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgc3RhdGljIHZvaWQgcnFfZW5kX3N0 YXRzKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCwgc3RydWN0IHJlcXVlc3QgKm9yaWcpCiAJ aWYgKHVubGlrZWx5KGRtX3N0YXRzX3VzZWQoJm1kLT5zdGF0cykpKSB7CiAJCXN0cnVjdCBk bV9ycV90YXJnZXRfaW8gKnRpbyA9IHRpb19mcm9tX3JlcXVlc3Qob3JpZyk7CiAJCXRpby0+ ZHVyYXRpb25famlmZmllcyA9IGppZmZpZXMgLSB0aW8tPmR1cmF0aW9uX2ppZmZpZXM7Ci0J CWRtX3N0YXRzX2FjY291bnRfaW8oJm1kLT5zdGF0cywgb3JpZy0+Y21kX2ZsYWdzLCBibGtf cnFfcG9zKG9yaWcpLAorCQlkbV9zdGF0c19hY2NvdW50X2lvKCZtZC0+c3RhdHMsIHJxX2Rh dGFfZGlyKG9yaWcpLCBibGtfcnFfcG9zKG9yaWcpLAogCQkJCSAgICB0aW8tPm5fc2VjdG9y cywgdHJ1ZSwgdGlvLT5kdXJhdGlvbl9qaWZmaWVzLAogCQkJCSAgICAmdGlvLT5zdGF0c19h dXgpOwogCX0KQEAgLTIwMTcsNyArMjAxNyw3IEBAIHN0YXRpYyB2b2lkIGRtX3N0YXJ0X3Jl cXVlc3Qoc3RydWN0IG1hcHBlZF9kZXZpY2UgKm1kLCBzdHJ1Y3QgcmVxdWVzdCAqb3JpZykK IAkJc3RydWN0IGRtX3JxX3RhcmdldF9pbyAqdGlvID0gdGlvX2Zyb21fcmVxdWVzdChvcmln KTsKIAkJdGlvLT5kdXJhdGlvbl9qaWZmaWVzID0gamlmZmllczsKIAkJdGlvLT5uX3NlY3Rv cnMgPSBibGtfcnFfc2VjdG9ycyhvcmlnKTsKLQkJZG1fc3RhdHNfYWNjb3VudF9pbygmbWQt PnN0YXRzLCBvcmlnLT5jbWRfZmxhZ3MsIGJsa19ycV9wb3Mob3JpZyksCisJCWRtX3N0YXRz X2FjY291bnRfaW8oJm1kLT5zdGF0cywgcnFfZGF0YV9kaXIob3JpZyksIGJsa19ycV9wb3Mo b3JpZyksCiAJCQkJICAgIHRpby0+bl9zZWN0b3JzLCBmYWxzZSwgMCwgJnRpby0+c3RhdHNf YXV4KTsKIAl9CiAKLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9w LzAwMTktYmNhY2hlLXNldC1iaV9vcC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1 MQAwMDAxNzUxADAwMDAwMDIxMzE2ADEyNjMyMTU0MjMwADAxNjU0MQAgMAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIGMwOGIxYzAyZmY2NDE5MTA2NGY1NWUyMzhiMDcx ZGFiYjNkZDU5YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0 aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+CkRhdGU6IE1vbiwgNyBEZWMgMjAxNSAxNDoxNjoz OSAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMTkvMzBdIGJjYWNoZTogc2V0IGJpX29wIHRvIFJF UV9PUAoKVGhpcyBwYXRjaCBoYXMgYmNhY2hlIHNldCB0aGUgYmlvIGJpX29wIHRvIGEgUkVR X09QLCBhbmQgcnFfZmxhZ19iaXRzCnRvIGJpX3J3LgoKU2lnbmVkLW9mZi1ieTogTWlrZSBD aHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL21kL2JjYWNoZS9i dHJlZS5jICAgICB8ICAyICsrCiBkcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jICAgICB8ICAy ICsrCiBkcml2ZXJzL21kL2JjYWNoZS9qb3VybmFsLmMgICB8ICA3ICsrKystLS0KIGRyaXZl cnMvbWQvYmNhY2hlL21vdmluZ2djLmMgIHwgIDIgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL3Jl cXVlc3QuYyAgIHwgIDMgKystCiBkcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jICAgICB8IDI2 ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL2JjYWNoZS93cml0ZWJh Y2suYyB8ICA0ICsrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMTgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvYnRyZWUuYyBi L2RyaXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMKaW5kZXggODMzOTJmOC4uM2JlNWIwNSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvYnRyZWUuYworKysgYi9kcml2ZXJzL21kL2Jj YWNoZS9idHJlZS5jCkBAIC0yOTUsNiArMjk1LDcgQEAgc3RhdGljIHZvaWQgYmNoX2J0cmVl X25vZGVfcmVhZChzdHJ1Y3QgYnRyZWUgKmIpCiAJY2xvc3VyZV9pbml0X3N0YWNrKCZjbCk7 CiAKIAliaW8gPSBiY2hfYmJpb19hbGxvYyhiLT5jKTsKKwliaW8tPmJpX29wCT0gUkVRX09Q X1JFQUQ7CiAJYmlvLT5iaV9ydwk9IFJFUV9NRVRBfFJFQURfU1lOQzsKIAliaW8tPmJpX2l0 ZXIuYmlfc2l6ZSA9IEtFWV9TSVpFKCZiLT5rZXkpIDw8IDk7CiAJYmlvLT5iaV9lbmRfaW8J PSBidHJlZV9ub2RlX3JlYWRfZW5kaW87CkBAIC0zOTcsNiArMzk4LDcgQEAgc3RhdGljIHZv aWQgZG9fYnRyZWVfbm9kZV93cml0ZShzdHJ1Y3QgYnRyZWUgKmIpCiAKIAliLT5iaW8tPmJp X2VuZF9pbwk9IGJ0cmVlX25vZGVfd3JpdGVfZW5kaW87CiAJYi0+YmlvLT5iaV9wcml2YXRl CT0gY2w7CisJYi0+YmlvLT5iaV9vcAkJPSBSRVFfT1BfV1JJVEU7CiAJYi0+YmlvLT5iaV9y dwkJPSBSRVFfTUVUQXxXUklURV9TWU5DfFJFUV9GVUE7CiAJYi0+YmlvLT5iaV9pdGVyLmJp X3NpemUJPSByb3VuZHVwKHNldF9ieXRlcyhpKSwgYmxvY2tfYnl0ZXMoYi0+YykpOwogCWJj aF9iaW9fbWFwKGItPmJpbywgaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNoZS9k ZWJ1Zy5jIGIvZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYwppbmRleCBkYjY4NTYyLi40YzQ4 NzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jCisrKyBiL2RyaXZl cnMvbWQvYmNhY2hlL2RlYnVnLmMKQEAgLTUyLDYgKzUyLDcgQEAgdm9pZCBiY2hfYnRyZWVf dmVyaWZ5KHN0cnVjdCBidHJlZSAqYikKIAliaW8tPmJpX2JkZXYJCT0gUFRSX0NBQ0hFKGIt PmMsICZiLT5rZXksIDApLT5iZGV2OwogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBQVFJf T0ZGU0VUKCZiLT5rZXksIDApOwogCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZX1NJWkUo JnYtPmtleSkgPDwgOTsKKwliaW8tPmJpX29wCQk9IFJFUV9PUF9SRUFEOwogCWJpby0+Ymlf cncJCXw9IFJFUV9NRVRBfFJFQURfU1lOQzsKIAliY2hfYmlvX21hcChiaW8sIHNvcnRlZCk7 CiAKQEAgLTExNCw2ICsxMTUsNyBAQCB2b2lkIGJjaF9kYXRhX3ZlcmlmeShzdHJ1Y3QgY2Fj aGVkX2RldiAqZGMsIHN0cnVjdCBiaW8gKmJpbykKIAljaGVjayA9IGJpb19jbG9uZShiaW8s IEdGUF9OT0lPKTsKIAlpZiAoIWNoZWNrKQogCQlyZXR1cm47CisJY2hlY2stPmJpX29wID0g UkVRX09QX1JFQUQ7CiAJY2hlY2stPmJpX3J3IHw9IFJFQURfU1lOQzsKIAogCWlmIChiaW9f YWxsb2NfcGFnZXMoY2hlY2ssIEdGUF9OT0lPKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQv YmNhY2hlL2pvdXJuYWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYwppbmRleCBh ZjNmOWY3Li42OGZhMGYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9qb3VybmFs LmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jCkBAIC01NCw3ICs1NCw3IEBA IHJlcmVhZDoJCWxlZnQgPSBjYS0+c2IuYnVja2V0X3NpemUgLSBvZmZzZXQ7CiAJCWJpb19y ZXNldChiaW8pOwogCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gYnVja2V0ICsgb2Zmc2V0 OwogCQliaW8tPmJpX2JkZXYJPSBjYS0+YmRldjsKLQkJYmlvLT5iaV9ydwk9IFJFQUQ7CisJ CWJpby0+Ymlfb3AJPSBSRVFfT1BfUkVBRDsKIAkJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBs ZW4gPDwgOTsKIAogCQliaW8tPmJpX2VuZF9pbwk9IGpvdXJuYWxfcmVhZF9lbmRpbzsKQEAg LTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgdm9pZCBkb19qb3VybmFsX2Rpc2NhcmQoc3RydWN0 IGNhY2hlICpjYSkKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcgk9IGJ1Y2tldF90b19zZWN0 b3IoY2EtPnNldCwKIAkJCQkJCWNhLT5zYi5kW2phLT5kaXNjYXJkX2lkeF0pOwogCQliaW8t PmJpX2JkZXYJCT0gY2EtPmJkZXY7Ci0JCWJpby0+YmlfcncJCT0gUkVRX1dSSVRFfFJFUV9E SVNDQVJEOworCQliaW8tPmJpX29wCQk9IFJFUV9PUF9ESVNDQVJEOwogCQliaW8tPmJpX21h eF92ZWNzCT0gMTsKIAkJYmlvLT5iaV9pb192ZWMJCT0gYmlvLT5iaV9pbmxpbmVfdmVjczsK IAkJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBidWNrZXRfYnl0ZXMoY2EpOwpAQCAtNjI2LDcg KzYyNiw4IEBAIHN0YXRpYyB2b2lkIGpvdXJuYWxfd3JpdGVfdW5sb2NrZWQoc3RydWN0IGNs b3N1cmUgKmNsKQogCQliaW9fcmVzZXQoYmlvKTsKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cgk9IFBUUl9PRkZTRVQoaywgaSk7CiAJCWJpby0+YmlfYmRldgk9IGNhLT5iZGV2OwotCQli aW8tPmJpX3J3CT0gUkVRX1dSSVRFfFJFUV9TWU5DfFJFUV9NRVRBfFJFUV9GTFVTSHxSRVFf RlVBOworCQliaW8tPmJpX29wCT0gUkVRX09QX1dSSVRFOworCQliaW8tPmJpX3J3CT0gUkVR X1NZTkN8UkVRX01FVEF8UkVRX0ZMVVNIfFJFUV9GVUE7CiAJCWJpby0+YmlfaXRlci5iaV9z aXplID0gc2VjdG9ycyA8PCA5OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gam91cm5hbF93cml0 ZV9lbmRpbzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL21vdmluZ2djLmMgYi9k cml2ZXJzL21kL2JjYWNoZS9tb3ZpbmdnYy5jCmluZGV4IGI5MjlmYzkuLmYzMzg2MGEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL21vdmluZ2djLmMKKysrIGIvZHJpdmVycy9t ZC9iY2FjaGUvbW92aW5nZ2MuYwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIHJl YWRfbW92aW5nKHN0cnVjdCBjYWNoZV9zZXQgKmMpCiAJCW1vdmluZ19pbml0KGlvKTsKIAkJ YmlvID0gJmlvLT5iaW8uYmlvOwogCi0JCWJpby0+YmlfcncJPSBSRUFEOworCQliaW8tPmJp X29wCT0gUkVRX09QX1JFQUQ7CiAJCWJpby0+YmlfZW5kX2lvCT0gcmVhZF9tb3ZpbmdfZW5k aW87CiAKIAkJaWYgKGJpb19hbGxvY19wYWdlcyhiaW8sIEdGUF9LRVJORUwpKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jIGIvZHJpdmVycy9tZC9iY2FjaGUv cmVxdWVzdC5jCmluZGV4IDA5ZmQxYWQuLmMzNWNmY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvYmNhY2hlL3JlcXVlc3QuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMK QEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgdm9pZCBiY2hfZGF0YV9pbnNlcnRfc3RhcnQo c3RydWN0IGNsb3N1cmUgKmNsKQogCQl0cmFjZV9iY2FjaGVfY2FjaGVfaW5zZXJ0KGspOwog CQliY2hfa2V5bGlzdF9wdXNoKCZvcC0+aW5zZXJ0X2tleXMpOwogCi0JCW4tPmJpX3J3IHw9 IFJFUV9XUklURTsKKwkJbi0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCWJjaF9zdWJtaXRf YmJpbyhuLCBvcC0+YywgaywgMCk7CiAJfSB3aGlsZSAobiAhPSBiaW8pOwogCkBAIC05MjUs NiArOTI1LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rldl93cml0ZShzdHJ1Y3QgY2FjaGVk X2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJCQlzdHJ1Y3QgYmlvICpmbHVzaCA9IGJp b19hbGxvY19iaW9zZXQoR0ZQX05PSU8sIDAsCiAJCQkJCQkJICAgICBkYy0+ZGlzay5iaW9f c3BsaXQpOwogCisJCQlmbHVzaC0+Ymlfb3AJPSBSRVFfT1BfV1JJVEU7CiAJCQlmbHVzaC0+ YmlfcncJPSBXUklURV9GTFVTSDsKIAkJCWZsdXNoLT5iaV9iZGV2CT0gYmlvLT5iaV9iZGV2 OwogCQkJZmx1c2gtPmJpX2VuZF9pbyA9IHJlcXVlc3RfZW5kaW87CmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2JjYWNoZS9zdXBlci5jIGIvZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYwpp bmRleCA4Y2QyMTk2Li5lMmY2ODZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9z dXBlci5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKQEAgLTIxMiw3ICsyMTIs OCBAQCBzdGF0aWMgdm9pZCBfX3dyaXRlX3N1cGVyKHN0cnVjdCBjYWNoZV9zYiAqc2IsIHN0 cnVjdCBiaW8gKmJpbykKIAl1bnNpZ25lZCBpOwogCiAJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cgk9IFNCX1NFQ1RPUjsKLQliaW8tPmJpX3J3CQk9IFJFUV9XUklURXxSRVFfU1lOQ3xSRVFf TUVUQTsKKwliaW8tPmJpX29wCQk9IFJFUV9PUF9XUklURTsKKwliaW8tPmJpX3J3CQk9IFJF UV9TWU5DfFJFUV9NRVRBOwogCWJpby0+YmlfaXRlci5iaV9zaXplCT0gU0JfU0laRTsKIAli Y2hfYmlvX21hcChiaW8sIE5VTEwpOwogCkBAIC0zMzMsNyArMzM0LDcgQEAgc3RhdGljIHZv aWQgdXVpZF9pb191bmxvY2soc3RydWN0IGNsb3N1cmUgKmNsKQogCXVwKCZjLT51dWlkX3dy aXRlX211dGV4KTsKIH0KIAotc3RhdGljIHZvaWQgdXVpZF9pbyhzdHJ1Y3QgY2FjaGVfc2V0 ICpjLCB1bnNpZ25lZCBsb25nIHJ3LAorc3RhdGljIHZvaWQgdXVpZF9pbyhzdHJ1Y3QgY2Fj aGVfc2V0ICpjLCBpbnQgb3AsIHVuc2lnbmVkIGxvbmcgb3BfZmxhZ3MsCiAJCSAgICBzdHJ1 Y3QgYmtleSAqaywgc3RydWN0IGNsb3N1cmUgKnBhcmVudCkKIHsKIAlzdHJ1Y3QgY2xvc3Vy ZSAqY2wgPSAmYy0+dXVpZF93cml0ZTsKQEAgLTM0OCw3ICszNDksOCBAQCBzdGF0aWMgdm9p ZCB1dWlkX2lvKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHVuc2lnbmVkIGxvbmcgcncsCiAJZm9y IChpID0gMDsgaSA8IEtFWV9QVFJTKGspOyBpKyspIHsKIAkJc3RydWN0IGJpbyAqYmlvID0g YmNoX2JiaW9fYWxsb2MoYyk7CiAKLQkJYmlvLT5iaV9ydwk9IFJFUV9TWU5DfFJFUV9NRVRB fHJ3OworCQliaW8tPmJpX29wCT0gb3A7CisJCWJpby0+YmlfcncJPSBSRVFfU1lOQ3xSRVFf TUVUQXxvcF9mbGFnczsKIAkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRShrKSA8 PCA5OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gdXVpZF9lbmRpbzsKQEAgLTM1NywxMiArMzU5 LDEyIEBAIHN0YXRpYyB2b2lkIHV1aWRfaW8oc3RydWN0IGNhY2hlX3NldCAqYywgdW5zaWdu ZWQgbG9uZyBydywKIAogCQliY2hfc3VibWl0X2JiaW8oYmlvLCBjLCBrLCBpKTsKIAotCQlp ZiAoIShydyAmIFdSSVRFKSkKKwkJaWYgKG9wICE9IFJFUV9PUF9XUklURSkKIAkJCWJyZWFr OwogCX0KIAogCWJjaF9leHRlbnRfdG9fdGV4dChidWYsIHNpemVvZihidWYpLCBrKTsKLQlw cl9kZWJ1ZygiJXMgVVVJRHMgYXQgJXMiLCBydyAmIFJFUV9XUklURSA/ICJ3cm90ZSIgOiAi cmVhZCIsIGJ1Zik7CisJcHJfZGVidWcoIiVzIFVVSURzIGF0ICVzIiwgb3AgPT0gUkVRX09Q X1dSSVRFID8gIndyb3RlIiA6ICJyZWFkIiwgYnVmKTsKIAogCWZvciAodSA9IGMtPnV1aWRz OyB1IDwgYy0+dXVpZHMgKyBjLT5ucl91dWlkczsgdSsrKQogCQlpZiAoIWJjaF9pc196ZXJv KHUtPnV1aWQsIDE2KSkKQEAgLTM4MSw3ICszODMsNyBAQCBzdGF0aWMgY2hhciAqdXVpZF9y ZWFkKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHN0cnVjdCBqc2V0ICpqLCBzdHJ1Y3QgY2xvc3Vy ZSAqY2wpCiAJCXJldHVybiAiYmFkIHV1aWQgcG9pbnRlciI7CiAKIAlia2V5X2NvcHkoJmMt PnV1aWRfYnVja2V0LCBrKTsKLQl1dWlkX2lvKGMsIFJFQURfU1lOQywgaywgY2wpOworCXV1 aWRfaW8oYywgUkVRX09QX1JFQUQsIFJFQURfU1lOQywgaywgY2wpOwogCiAJaWYgKGotPnZl cnNpb24gPCBCQ0FDSEVfSlNFVF9WRVJTSU9OX1VVSUR2MSkgewogCQlzdHJ1Y3QgdXVpZF9l bnRyeV92MAkqdTAgPSAodm9pZCAqKSBjLT51dWlkczsKQEAgLTQyNiw3ICs0MjgsNyBAQCBz dGF0aWMgaW50IF9fdXVpZF93cml0ZShzdHJ1Y3QgY2FjaGVfc2V0ICpjKQogCQlyZXR1cm4g MTsKIAogCVNFVF9LRVlfU0laRSgmay5rZXksIGMtPnNiLmJ1Y2tldF9zaXplKTsKLQl1dWlk X2lvKGMsIFJFUV9XUklURSwgJmsua2V5LCAmY2wpOworCXV1aWRfaW8oYywgUkVRX09QX1dS SVRFLCAwLCAmay5rZXksICZjbCk7CiAJY2xvc3VyZV9zeW5jKCZjbCk7CiAKIAlia2V5X2Nv cHkoJmMtPnV1aWRfYnVja2V0LCAmay5rZXkpOwpAQCAtNDk4LDcgKzUwMCw4IEBAIHN0YXRp YyB2b2lkIHByaW9fZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogCWNsb3N1cmVfcHV0KCZjYS0+ cHJpbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW9faW8oc3RydWN0IGNhY2hlICpjYSwgdWlu dDY0X3QgYnVja2V0LCB1bnNpZ25lZCBsb25nIHJ3KQorc3RhdGljIHZvaWQgcHJpb19pbyhz dHJ1Y3QgY2FjaGUgKmNhLCB1aW50NjRfdCBidWNrZXQsIGludCBvcCwKKwkJICAgIHVuc2ln bmVkIGxvbmcgb3BfZmxhZ3MpCiB7CiAJc3RydWN0IGNsb3N1cmUgKmNsID0gJmNhLT5wcmlv OwogCXN0cnVjdCBiaW8gKmJpbyA9IGJjaF9iYmlvX2FsbG9jKGNhLT5zZXQpOwpAQCAtNTA3 LDcgKzUxMCw4IEBAIHN0YXRpYyB2b2lkIHByaW9faW8oc3RydWN0IGNhY2hlICpjYSwgdWlu dDY0X3QgYnVja2V0LCB1bnNpZ25lZCBsb25nIHJ3KQogCiAJYmlvLT5iaV9pdGVyLmJpX3Nl Y3Rvcgk9IGJ1Y2tldCAqIGNhLT5zYi5idWNrZXRfc2l6ZTsKIAliaW8tPmJpX2JkZXYJCT0g Y2EtPmJkZXY7Ci0JYmlvLT5iaV9ydwkJPSBSRVFfU1lOQ3xSRVFfTUVUQXxydzsKKwliaW8t PmJpX29wCQk9IG9wOworCWJpby0+YmlfcncJCT0gUkVRX1NZTkN8UkVRX01FVEF8b3BfZmxh Z3M7CiAJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBidWNrZXRfYnl0ZXMoY2EpOwogCiAJYmlv LT5iaV9lbmRfaW8JPSBwcmlvX2VuZGlvOwpAQCAtNTU3LDcgKzU2MSw3IEBAIHZvaWQgYmNo X3ByaW9fd3JpdGUoc3RydWN0IGNhY2hlICpjYSkKIAkJQlVHX09OKGJ1Y2tldCA9PSAtMSk7 CiAKIAkJbXV0ZXhfdW5sb2NrKCZjYS0+c2V0LT5idWNrZXRfbG9jayk7Ci0JCXByaW9faW8o Y2EsIGJ1Y2tldCwgUkVRX1dSSVRFKTsKKwkJcHJpb19pbyhjYSwgYnVja2V0LCBSRVFfT1Bf V1JJVEUsIDApOwogCQltdXRleF9sb2NrKCZjYS0+c2V0LT5idWNrZXRfbG9jayk7CiAKIAkJ Y2EtPnByaW9fYnVja2V0c1tpXSA9IGJ1Y2tldDsKQEAgLTU5OSw3ICs2MDMsNyBAQCBzdGF0 aWMgdm9pZCBwcmlvX3JlYWQoc3RydWN0IGNhY2hlICpjYSwgdWludDY0X3QgYnVja2V0KQog CQkJY2EtPnByaW9fbGFzdF9idWNrZXRzW2J1Y2tldF9ucl0gPSBidWNrZXQ7CiAJCQlidWNr ZXRfbnIrKzsKIAotCQkJcHJpb19pbyhjYSwgYnVja2V0LCBSRUFEX1NZTkMpOworCQkJcHJp b19pbyhjYSwgYnVja2V0LCBSRVFfT1BfUkVBRCwgUkVBRF9TWU5DKTsKIAogCQkJaWYgKHAt PmNzdW0gIT0gYmNoX2NyYzY0KCZwLT5tYWdpYywgYnVja2V0X2J5dGVzKGNhKSAtIDgpKQog CQkJCXByX3dhcm4oImJhZCBjc3VtIHJlYWRpbmcgcHJpb3JpdGllcyIpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMgYi9kcml2ZXJzL21kL2JjYWNoZS93 cml0ZWJhY2suYwppbmRleCBiMjNmODhkLi42YzI4ZmU2IDEwMDY0NAotLS0gYS9kcml2ZXJz L21kL2JjYWNoZS93cml0ZWJhY2suYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS93cml0ZWJh Y2suYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2RpcnR5KHN0cnVj dCBjbG9zdXJlICpjbCkKIAlzdHJ1Y3Qga2V5YnVmX2tleSAqdyA9IGlvLT5iaW8uYmlfcHJp dmF0ZTsKIAogCWRpcnR5X2luaXQodyk7Ci0JaW8tPmJpby5iaV9ydwkJPSBXUklURTsKKwlp by0+YmlvLmJpX29wCQk9IFJFUV9PUF9XUklURTsKIAlpby0+YmlvLmJpX2l0ZXIuYmlfc2Vj dG9yID0gS0VZX1NUQVJUKCZ3LT5rZXkpOwogCWlvLT5iaW8uYmlfYmRldgkJPSBpby0+ZGMt PmJkZXY7CiAJaW8tPmJpby5iaV9lbmRfaW8JPSBkaXJ0eV9lbmRpbzsKQEAgLTI1Niw3ICsy NTYsNyBAQCBzdGF0aWMgdm9pZCByZWFkX2RpcnR5KHN0cnVjdCBjYWNoZWRfZGV2ICpkYykK IAkJaW8tPmJpby5iaV9pdGVyLmJpX3NlY3RvciA9IFBUUl9PRkZTRVQoJnctPmtleSwgMCk7 CiAJCWlvLT5iaW8uYmlfYmRldgkJPSBQVFJfQ0FDSEUoZGMtPmRpc2suYywKIAkJCQkJCSAg ICAmdy0+a2V5LCAwKS0+YmRldjsKLQkJaW8tPmJpby5iaV9ydwkJPSBSRUFEOworCQlpby0+ YmlvLmJpX29wCQk9IFJFUV9PUF9SRUFEOwogCQlpby0+YmlvLmJpX2VuZF9pbwk9IHJlYWRf ZGlydHlfZW5kaW87CiAKIAkJaWYgKGJpb19hbGxvY19wYWdlcygmaW8tPmJpbywgR0ZQX0tF Uk5FTCkpCi0tIAoxLjguMy4xCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAByZXEtb3AvMDAyMC1kcmJkLXNldC1iaV9vcC10by1SRVFfT1AucGF0Y2gAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2 NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMzA0MjcAMTI2MzIxNTQyMzAAMDE2MjQyACAwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5j AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gN2RlNTg3Y2NhODE4NjQ2MDM5Zjhm ZDdiODNlZTMyZWNlZGY3NmRiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlr ZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogVHVlLCA4IERlYyAyMDE1 IDIwOjEzOjA3IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAyMC8zMF0gZHJiZDogc2V0IGJpX29w IHRvIFJFUV9PUAoKVGhpcyBwYXRjaCBoYXMgZHJiZCBzZXQgdGhlIGJpbyBiaV9vcCB0byBh IFJFUV9PUCwgYW5kIHJxX2ZsYWdfYml0cwp0byBiaV9ydy4KClNpZ25lZC1vZmYtYnk6IE1p a2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ibG9jay9k cmJkL2RyYmRfYWN0bG9nLmMgICB8IDI5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYyAgIHwgIDYgKysrLS0tCiBkcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCAgICAgIHwgIDQgKystLQogZHJpdmVycy9ibG9j ay9kcmJkL2RyYmRfbWFpbi5jICAgICB8ICA1ICsrKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQv ZHJiZF9yZWNlaXZlci5jIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMgICB8ICAzICsrLQogNiBm aWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYyBiL2RyaXZlcnMvYmxv Y2svZHJiZC9kcmJkX2FjdGxvZy5jCmluZGV4IDYwNjllMTUuLjJmYTg1MzQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2FjdGxvZy5jCisrKyBiL2RyaXZlcnMvYmxv Y2svZHJiZC9kcmJkX2FjdGxvZy5jCkBAIC0xMzcsMTkgKzEzNywxOSBAQCB2b2lkIHdhaXRf dW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmlj ZSwgc3RydWN0IGRyYmRfYgogCiBzdGF0aWMgaW50IF9kcmJkX21kX3N5bmNfcGFnZV9pbyhz dHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKIAkJCQkgc3RydWN0IGRyYmRfYmFja2luZ19k ZXYgKmJkZXYsCi0JCQkJIHNlY3Rvcl90IHNlY3RvciwgaW50IHJ3KQorCQkJCSBzZWN0b3Jf dCBzZWN0b3IsIGludCBvcCkKIHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJLyogd2UgZG8gYWxs IG91ciBtZXRhIGRhdGEgSU8gaW4gYWxpZ25lZCA0ayBibG9ja3MuICovCiAJY29uc3QgaW50 IHNpemUgPSA0MDk2OwotCWludCBlcnI7CisJaW50IGVyciwgb3BfZmxhZ3MgPSAwOwogCiAJ ZGV2aWNlLT5tZF9pby5kb25lID0gMDsKIAlkZXZpY2UtPm1kX2lvLmVycm9yID0gLUVOT0RF VjsKIAotCWlmICgocncgJiBXUklURSkgJiYgIXRlc3RfYml0KE1EX05PX0ZVQSwgJmRldmlj ZS0+ZmxhZ3MpKQotCQlydyB8PSBSRVFfRlVBIHwgUkVRX0ZMVVNIOwotCXJ3IHw9IFJFUV9T WU5DIHwgUkVRX05PSURMRTsKKwlpZiAoKG9wID09IFJFUV9PUF9XUklURSkgJiYgIXRlc3Rf Yml0KE1EX05PX0ZVQSwgJmRldmljZS0+ZmxhZ3MpKQorCQlvcF9mbGFncyB8PSBSRVFfRlVB IHwgUkVRX0ZMVVNIOworCW9wX2ZsYWdzIHw9IFJFUV9TWU5DIHwgUkVRX05PSURMRTsKIAog CWJpbyA9IGJpb19hbGxvY19kcmJkKEdGUF9OT0lPKTsKIAliaW8tPmJpX2JkZXYgPSBiZGV2 LT5tZF9iZGV2OwpAQCAtMTU5LDkgKzE1OSwxMCBAQCBzdGF0aWMgaW50IF9kcmJkX21kX3N5 bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKIAkJZ290byBvdXQ7CiAJ YmlvLT5iaV9wcml2YXRlID0gZGV2aWNlOwogCWJpby0+YmlfZW5kX2lvID0gZHJiZF9tZF9l bmRpbzsKLQliaW8tPmJpX3J3ID0gcnc7CisJYmlvLT5iaV9vcCA9IG9wOworCWJpby0+Ymlf cncgPSBvcF9mbGFnczsKIAotCWlmICghKHJ3ICYgV1JJVEUpICYmIGRldmljZS0+c3RhdGUu ZGlzayA9PSBEX0RJU0tMRVNTICYmIGRldmljZS0+bGRldiA9PSBOVUxMKQorCWlmIChvcCAh PSBSRVFfT1BfV1JJVEUgJiYgZGV2aWNlLT5zdGF0ZS5kaXNrID09IERfRElTS0xFU1MgJiYg ZGV2aWNlLT5sZGV2ID09IE5VTEwpCiAJCS8qIHNwZWNpYWwgY2FzZSwgZHJiZF9tZF9yZWFk KCkgZHVyaW5nIGRyYmRfYWRtX2F0dGFjaCgpOiBubyBnZXRfbGRldiAqLwogCQk7CiAJZWxz ZSBpZiAoIWdldF9sZGV2X2lmX3N0YXRlKGRldmljZSwgRF9BVFRBQ0hJTkcpKSB7CkBAIC0x NzQsNyArMTc1LDcgQEAgc3RhdGljIGludCBfZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0 IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJYmlvX2dldChiaW8pOyAvKiBvbmUgYmlvX3B1dCgp IGlzIGluIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgKi8KIAlhdG9taWNfaW5jKCZkZXZpY2Ut Pm1kX2lvLmluX3VzZSk7IC8qIGRyYmRfbWRfcHV0X2J1ZmZlcigpIGlzIGluIHRoZSBjb21w bGV0aW9uIGhhbmRsZXIgKi8KIAlkZXZpY2UtPm1kX2lvLnN1Ym1pdF9qaWYgPSBqaWZmaWVz OwotCWlmIChkcmJkX2luc2VydF9mYXVsdChkZXZpY2UsIChydyAmIFdSSVRFKSA/IERSQkRf RkFVTFRfTURfV1IgOiBEUkJEX0ZBVUxUX01EX1JEKSkKKwlpZiAoZHJiZF9pbnNlcnRfZmF1 bHQoZGV2aWNlLCAob3AgPT0gUkVRX09QX1dSSVRFKSA/IERSQkRfRkFVTFRfTURfV1IgOiBE UkJEX0ZBVUxUX01EX1JEKSkKIAkJYmlvX2lvX2Vycm9yKGJpbyk7CiAJZWxzZQogCQlzdWJt aXRfYmlvKGJpbyk7CkBAIC0xODgsNyArMTg5LDcgQEAgc3RhdGljIGludCBfZHJiZF9tZF9z eW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiB9CiAKIGludCBkcmJk X21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKmJkZXYsCi0JCQkgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgcncpCisJ CQkgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgb3ApCiB7CiAJaW50IGVycjsKIAlEX0FTU0VSVChk ZXZpY2UsIGF0b21pY19yZWFkKCZkZXZpY2UtPm1kX2lvLmluX3VzZSkgPT0gMSk7CkBAIC0x OTcsMTkgKzE5OCwyMSBAQCBpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRf ZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZAogCiAJZHluYW1p Y19kcmJkX2RiZyhkZXZpY2UsICJtZXRhX2RhdGEgaW86ICVzIFslZF06JXMoLCVsbHVzLCVz KSAlcFNcbiIsCiAJICAgICBjdXJyZW50LT5jb21tLCBjdXJyZW50LT5waWQsIF9fZnVuY19f LAotCSAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylzZWN0b3IsIChydyAmIFdSSVRFKSA/ICJX UklURSIgOiAiUkVBRCIsCisJICAgICAodW5zaWduZWQgbG9uZyBsb25nKXNlY3RvciwgKG9w ID09IFJFUV9PUF9XUklURSkgPyAiV1JJVEUiIDogIlJFQUQiLAogCSAgICAgKHZvaWQqKV9S RVRfSVBfICk7CiAKIAlpZiAoc2VjdG9yIDwgZHJiZF9tZF9maXJzdF9zZWN0b3IoYmRldikg fHwKIAkgICAgc2VjdG9yICsgNyA+IGRyYmRfbWRfbGFzdF9zZWN0b3IoYmRldikpCiAJCWRy YmRfYWxlcnQoZGV2aWNlLCAiJXMgWyVkXTolcygsJWxsdXMsJXMpIG91dCBvZiByYW5nZSBt ZCBhY2Nlc3MhXG4iLAogCQkgICAgIGN1cnJlbnQtPmNvbW0sIGN1cnJlbnQtPnBpZCwgX19m dW5jX18sCi0JCSAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylzZWN0b3IsIChydyAmIFdSSVRF KSA/ICJXUklURSIgOiAiUkVBRCIpOworCQkgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc2Vj dG9yLAorCQkgICAgIChvcCA9PSBSRVFfT1BfV1JJVEUpID8gIldSSVRFIiA6ICJSRUFEIik7 CiAKLQllcnIgPSBfZHJiZF9tZF9zeW5jX3BhZ2VfaW8oZGV2aWNlLCBiZGV2LCBzZWN0b3Is IHJ3KTsKKwllcnIgPSBfZHJiZF9tZF9zeW5jX3BhZ2VfaW8oZGV2aWNlLCBiZGV2LCBzZWN0 b3IsIG9wKTsKIAlpZiAoZXJyKSB7CiAJCWRyYmRfZXJyKGRldmljZSwgImRyYmRfbWRfc3lu Y19wYWdlX2lvKCwlbGx1cywlcykgZmFpbGVkIHdpdGggZXJyb3IgJWRcbiIsCi0JCSAgICAo dW5zaWduZWQgbG9uZyBsb25nKXNlY3RvciwgKHJ3ICYgV1JJVEUpID8gIldSSVRFIiA6ICJS RUFEIiwgZXJyKTsKKwkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc2VjdG9yLAorCQkgICAg KG9wID09IFJFUV9PUF9XUklURSkgPyAiV1JJVEUiIDogIlJFQUQiLCBlcnIpOwogCX0KIAly ZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0 bWFwLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwppbmRleCA1NDQ1NGQ0 Li40ODI0MDY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAu YworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwpAQCAtOTkyLDcgKzk5 Miw3IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlv X2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvCiAJc3RydWN0IGRyYmRfYml0bWFw ICpiID0gZGV2aWNlLT5iaXRtYXA7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdW5zaWduZWQg aW50IGxlbjsKLQl1bnNpZ25lZCBpbnQgcncgPSAoY3R4LT5mbGFncyAmIEJNX0FJT19SRUFE KSA/IFJFQUQgOiBXUklURTsKKwl1bnNpZ25lZCBpbnQgb3AgPSAoY3R4LT5mbGFncyAmIEJN X0FJT19SRUFEKSA/IFJFUV9PUF9SRUFEIDogUkVRX09QX1dSSVRFOwogCiAJc2VjdG9yX3Qg b25fZGlza19zZWN0b3IgPQogCQlkZXZpY2UtPmxkZXYtPm1kLm1kX29mZnNldCArIGRldmlj ZS0+bGRldi0+bWQuYm1fb2Zmc2V0OwpAQCAtMTAyMyw5ICsxMDIzLDkgQEAgc3RhdGljIHZv aWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBw YWdlX25yKSBfX211c3RfaG8KIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsZW4sIDApOwog CWJpby0+YmlfcHJpdmF0ZSA9IGN0eDsKIAliaW8tPmJpX2VuZF9pbyA9IGRyYmRfYm1fZW5k aW87Ci0JYmlvLT5iaV9ydyB8PSBydzsKKwliaW8tPmJpX29wID0gb3A7CiAKLQlpZiAoZHJi ZF9pbnNlcnRfZmF1bHQoZGV2aWNlLCAocncgJiBXUklURSkgPyBEUkJEX0ZBVUxUX01EX1dS IDogRFJCRF9GQVVMVF9NRF9SRCkpIHsKKwlpZiAoZHJiZF9pbnNlcnRfZmF1bHQoZGV2aWNl LCAob3AgPT0gUkVRX09QX1dSSVRFKSA/IERSQkRfRkFVTFRfTURfV1IgOiBEUkJEX0ZBVUxU X01EX1JEKSkgewogCQliaW9faW9fZXJyb3IoYmlvKTsKIAl9IGVsc2UgewogCQlzdWJtaXRf YmlvKGJpbyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBi L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCmluZGV4IGI2ODQ0ZmUuLjhhNzc4ZjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCisrKyBiL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCkBAIC0xNTEwLDcgKzE1MTAsNyBAQCBleHRlcm4g aW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsK IGV4dGVybiB2b2lkICpkcmJkX21kX2dldF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpk ZXZpY2UsIGNvbnN0IGNoYXIgKmludGVudCk7CiBleHRlcm4gdm9pZCBkcmJkX21kX3B1dF9i dWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogZXh0ZXJuIGludCBkcmJkX21k X3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRy YmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwgaW50IHJ3KTsKKwkJc3Ry dWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwgaW50IG9wKTsK IGV4dGVybiB2b2lkIGRyYmRfb3Zfb3V0X29mX3N5bmNfZm91bmQoc3RydWN0IGRyYmRfZGV2 aWNlICosIHNlY3Rvcl90LCBpbnQpOwogZXh0ZXJuIHZvaWQgd2FpdF91bnRpbF9kb25lX29y X2ZvcmNlX2RldGFjaGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCQlzdHJ1Y3Qg ZHJiZF9iYWNraW5nX2RldiAqYmRldiwgdW5zaWduZWQgaW50ICpkb25lKTsKQEAgLTE1NjAs NyArMTU2MCw3IEBAIGV4dGVybiBib29sIGRyYmRfcnNfc2hvdWxkX3Nsb3dfZG93bihzdHJ1 Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yCiAJCWJvb2wgdGhyb3R0 bGVfaWZfYXBwX2lzX3dhaXRpbmcpOwogZXh0ZXJuIGludCBkcmJkX3N1Ym1pdF9wZWVyX3Jl cXVlc3Qoc3RydWN0IGRyYmRfZGV2aWNlICosCiAJCQkJICAgIHN0cnVjdCBkcmJkX3BlZXJf cmVxdWVzdCAqLCBjb25zdCB1bnNpZ25lZCwKLQkJCQkgICAgY29uc3QgaW50KTsKKwkJCQkg ICAgY29uc3QgdW5zaWduZWQsIGNvbnN0IGludCk7CiBleHRlcm4gaW50IGRyYmRfZnJlZV9w ZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7CiBl eHRlcm4gc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpkcmJkX2FsbG9jX3BlZXJfcmVxKHN0 cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHU2NCwKIAkJCQkJCSAgICAgc2VjdG9yX3QsIHVu c2lnbmVkIGludCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4u YyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwppbmRleCA1YjQzZGZiLi5mNjYy NmU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKKysrIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCkBAIC0zMDYxLDcgKzMwNjEsNyBAQCB2 b2lkIGRyYmRfbWRfd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHZvaWQgKmIp CiAJRF9BU1NFUlQoZGV2aWNlLCBkcmJkX21kX3NzKGRldmljZS0+bGRldikgPT0gZGV2aWNl LT5sZGV2LT5tZC5tZF9vZmZzZXQpOwogCXNlY3RvciA9IGRldmljZS0+bGRldi0+bWQubWRf b2Zmc2V0OwogCi0JaWYgKGRyYmRfbWRfc3luY19wYWdlX2lvKGRldmljZSwgZGV2aWNlLT5s ZGV2LCBzZWN0b3IsIFdSSVRFKSkgeworCWlmIChkcmJkX21kX3N5bmNfcGFnZV9pbyhkZXZp Y2UsIGRldmljZS0+bGRldiwgc2VjdG9yLCBSRVFfT1BfV1JJVEUpKSB7CiAJCS8qIHRoaXMg d2FzIGEgdHJ5IGFueXdheXMgLi4uICovCiAJCWRyYmRfZXJyKGRldmljZSwgIm1ldGEgZGF0 YSB1cGRhdGUgZmFpbGVkIVxuIik7CiAJCWRyYmRfY2hrX2lvX2Vycm9yKGRldmljZSwgMSwg RFJCRF9NRVRBX0lPX0VSUk9SKTsKQEAgLTMyNjMsNyArMzI2Myw4IEBAIGludCBkcmJkX21k X3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdf ZGV2ICpiZGV2KQogCSAqIEFmZmVjdHMgdGhlIHBhcmFub2lhIG91dC1vZi1yYW5nZSBhY2Nl c3MgY2hlY2sgaW4gZHJiZF9tZF9zeW5jX3BhZ2VfaW8oKS4gKi8KIAliZGV2LT5tZC5tZF9z aXplX3NlY3QgPSA4OwogCi0JaWYgKGRyYmRfbWRfc3luY19wYWdlX2lvKGRldmljZSwgYmRl diwgYmRldi0+bWQubWRfb2Zmc2V0LCBSRUFEKSkgeworCWlmIChkcmJkX21kX3N5bmNfcGFn ZV9pbyhkZXZpY2UsIGJkZXYsIGJkZXYtPm1kLm1kX29mZnNldCwKKwkJCQkgUkVRX09QX1JF QUQpKSB7CiAJCS8qIE5PVEU6IGNhbid0IGRvIG5vcm1hbCBlcnJvciBwcm9jZXNzaW5nIGhl cmUgYXMgdGhpcyBpcwogCQkgICBjYWxsZWQgQkVGT1JFIGRpc2sgaXMgYXR0YWNoZWQgKi8K IAkJZHJiZF9lcnIoZGV2aWNlLCAiRXJyb3Igd2hpbGUgcmVhZGluZyBtZXRhZGF0YS5cbiIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2Ry aXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggMTk1N2ZlOC4uODgwZGUw ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCkBAIC0xMzk4LDcgKzEzOTgs OCBAQCB2b2lkIGRyYmRfYnVtcF93cml0ZV9vcmRlcmluZyhzdHJ1Y3QgZHJiZF9yZXNvdXJj ZSAqcmVzb3VyY2UsIHN0cnVjdCBkcmJkX2JhY2tpbgogLyogVE9ETyBhbGxvY2F0ZSBmcm9t IG91ciBvd24gYmlvX3NldC4gKi8KIGludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3Ry dWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJCQkgICAgIHN0cnVjdCBkcmJkX3BlZXJfcmVx dWVzdCAqcGVlcl9yZXEsCi0JCQkgICAgIGNvbnN0IHVuc2lnbmVkIHJ3LCBjb25zdCBpbnQg ZmF1bHRfdHlwZSkKKwkJCSAgICAgY29uc3QgdW5zaWduZWQgb3AsIGNvbnN0IHVuc2lnbmVk IG9wX2ZsYWdzLAorCQkJICAgICBjb25zdCBpbnQgZmF1bHRfdHlwZSkKIHsKIAlzdHJ1Y3Qg YmlvICpiaW9zID0gTlVMTDsKIAlzdHJ1Y3QgYmlvICpiaW87CkBAIC0xNDUwLDcgKzE0NTEs OCBAQCBuZXh0X2JpbzoKIAkvKiA+IHBlZXJfcmVxLT5pLnNlY3RvciwgdW5sZXNzIHRoaXMg aXMgdGhlIGZpcnN0IGJpbyAqLwogCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7 CiAJYmlvLT5iaV9iZGV2ID0gZGV2aWNlLT5sZGV2LT5iYWNraW5nX2JkZXY7Ci0JYmlvLT5i aV9ydyA9IHJ3OworCWJpby0+Ymlfb3AgPSBvcDsKKwliaW8tPmJpX3J3ID0gb3BfZmxhZ3M7 CiAJYmlvLT5iaV9wcml2YXRlID0gcGVlcl9yZXE7CiAJYmlvLT5iaV9lbmRfaW8gPSBkcmJk X3BlZXJfcmVxdWVzdF9lbmRpbzsKIApAQCAtMTQ1OCw3ICsxNDYwLDcgQEAgbmV4dF9iaW86 CiAJYmlvcyA9IGJpbzsKIAkrK25fYmlvczsKIAotCWlmIChydyAmIFJFUV9ESVNDQVJEKSB7 CisJaWYgKG9wID09IFJFUV9PUF9ESVNDQVJEKSB7CiAJCWJpby0+YmlfaXRlci5iaV9zaXpl ID0gZGF0YV9zaXplOwogCQlnb3RvIHN1Ym1pdDsKIAl9CkBAIC0xODMwLDcgKzE4MzIsOCBA QCBzdGF0aWMgaW50IHJlY3ZfcmVzeW5jX3JlYWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2Ug KnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0bwogCXNwaW5fdW5sb2NrX2lycSgmZGV2aWNl LT5yZXNvdXJjZS0+cmVxX2xvY2spOwogCiAJYXRvbWljX2FkZChwaS0+c2l6ZSA+PiA5LCAm ZGV2aWNlLT5yc19zZWN0X2V2KTsKLQlpZiAoZHJiZF9zdWJtaXRfcGVlcl9yZXF1ZXN0KGRl dmljZSwgcGVlcl9yZXEsIFdSSVRFLCBEUkJEX0ZBVUxUX1JTX1dSKSA9PSAwKQorCWlmIChk cmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3QoZGV2aWNlLCBwZWVyX3JlcSwgUkVRX09QX1dSSVRF LCAwLAorCQkJCSAgICAgRFJCRF9GQVVMVF9SU19XUikgPT0gMCkKIAkJcmV0dXJuIDA7CiAK IAkvKiBkb24ndCBjYXJlIGZvciB0aGUgcmVhc29uIGhlcmUgKi8KQEAgLTIxNTIsMTIgKzIx NTUsMTkgQEAgc3RhdGljIGludCB3YWl0X2Zvcl9hbmRfdXBkYXRlX3BlZXJfc2VxKHN0cnVj dCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgY28KIC8qIHNlZSBhbHNvIGJpb19m bGFnc190b193aXJlKCkKICAqIERSQkRfUkVRXyosIGJlY2F1c2Ugd2UgbmVlZCB0byBzZW1h bnRpY2FsbHkgbWFwIHRoZSBmbGFncyB0byBkYXRhIHBhY2tldAogICogZmxhZ3MgYW5kIGJh Y2suIFdlIG1heSByZXBsaWNhdGUgdG8gb3RoZXIga2VybmVsIHZlcnNpb25zLiAqLwotc3Rh dGljIHVuc2lnbmVkIGxvbmcgd2lyZV9mbGFnc190b19iaW8odTMyIGRwZikKK3N0YXRpYyB1 bnNpZ25lZCBsb25nIHdpcmVfZmxhZ3NfdG9fYmlvX2ZsYWdzKHUzMiBkcGYpCiB7CiAJcmV0 dXJuICAoZHBmICYgRFBfUldfU1lOQyA/IFJFUV9TWU5DIDogMCkgfAogCQkoZHBmICYgRFBf RlVBID8gUkVRX0ZVQSA6IDApIHwKLQkJKGRwZiAmIERQX0ZMVVNIID8gUkVRX0ZMVVNIIDog MCkgfAotCQkoZHBmICYgRFBfRElTQ0FSRCA/IFJFUV9ESVNDQVJEIDogMCk7CisJCShkcGYg JiBEUF9GTFVTSCA/IFJFUV9GTFVTSCA6IDApOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9u ZyB3aXJlX2ZsYWdzX3RvX2Jpb19vcCh1MzIgZHBmKQoreworCWlmIChkcGYgJiBEUF9ESVND QVJEKQorCQlyZXR1cm4gUkVRX09QX0RJU0NBUkQ7CisJZWxzZQorCQlyZXR1cm4gUkVRX09Q X1dSSVRFOwogfQogCiBzdGF0aWMgdm9pZCBmYWlsX3Bvc3Rwb25lZF9yZXF1ZXN0cyhzdHJ1 Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yLApAQCAtMjMwMyw3ICsy MzEzLDcgQEAgc3RhdGljIGludCByZWNlaXZlX0RhdGEoc3RydWN0IGRyYmRfY29ubmVjdGlv biAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldF9pbmZvICoKIAlzdHJ1Y3QgZHJiZF9wZWVy X3JlcXVlc3QgKnBlZXJfcmVxOwogCXN0cnVjdCBwX2RhdGEgKnAgPSBwaS0+ZGF0YTsKIAl1 MzIgcGVlcl9zZXEgPSBiZTMyX3RvX2NwdShwLT5zZXFfbnVtKTsKLQlpbnQgcncgPSBXUklU RTsKKwlpbnQgb3AsIG9wX2ZsYWdzOwogCXUzMiBkcF9mbGFnczsKIAlpbnQgZXJyLCB0cDsK IApAQCAtMjM0MiwxNCArMjM1MiwxNSBAQCBzdGF0aWMgaW50IHJlY2VpdmVfRGF0YShzdHJ1 Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0X2luZm8gKgog CXBlZXJfcmVxLT5mbGFncyB8PSBFRV9BUFBMSUNBVElPTjsKIAogCWRwX2ZsYWdzID0gYmUz Ml90b19jcHUocC0+ZHBfZmxhZ3MpOwotCXJ3IHw9IHdpcmVfZmxhZ3NfdG9fYmlvKGRwX2Zs YWdzKTsKKwlvcCA9IHdpcmVfZmxhZ3NfdG9fYmlvX29wKGRwX2ZsYWdzKTsKKwlvcF9mbGFn cyA9IHdpcmVfZmxhZ3NfdG9fYmlvX2ZsYWdzKGRwX2ZsYWdzKTsKIAlpZiAocGktPmNtZCA9 PSBQX1RSSU0pIHsKIAkJc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBiZGV2X2dldF9xdWV1 ZShkZXZpY2UtPmxkZXYtPmJhY2tpbmdfYmRldik7CiAJCXBlZXJfcmVxLT5mbGFncyB8PSBF RV9JU19UUklNOwogCQlpZiAoIWJsa19xdWV1ZV9kaXNjYXJkKHEpKQogCQkJcGVlcl9yZXEt PmZsYWdzIHw9IEVFX0lTX1RSSU1fVVNFX1pFUk9PVVQ7CiAJCURfQVNTRVJUKHBlZXJfZGV2 aWNlLCBwZWVyX3JlcS0+aS5zaXplID4gMCk7Ci0JCURfQVNTRVJUKHBlZXJfZGV2aWNlLCBy dyAmIFJFUV9ESVNDQVJEKTsKKwkJRF9BU1NFUlQocGVlcl9kZXZpY2UsIG9wID09IFJFUV9P UF9ESVNDQVJEKTsKIAkJRF9BU1NFUlQocGVlcl9kZXZpY2UsIHBlZXJfcmVxLT5wYWdlcyA9 PSBOVUxMKTsKIAl9IGVsc2UgaWYgKHBlZXJfcmVxLT5wYWdlcyA9PSBOVUxMKSB7CiAJCURf QVNTRVJUKGRldmljZSwgcGVlcl9yZXEtPmkuc2l6ZSA9PSAwKTsKQEAgLTI0MzMsNyArMjQ0 NCw4IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9EYXRhKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24g KmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXRfaW5mbyAqCiAJCXBlZXJfcmVxLT5mbGFncyB8 PSBFRV9DQUxMX0FMX0NPTVBMRVRFX0lPOwogCX0KIAotCWVyciA9IGRyYmRfc3VibWl0X3Bl ZXJfcmVxdWVzdChkZXZpY2UsIHBlZXJfcmVxLCBydywgRFJCRF9GQVVMVF9EVF9XUik7CisJ ZXJyID0gZHJiZF9zdWJtaXRfcGVlcl9yZXF1ZXN0KGRldmljZSwgcGVlcl9yZXEsIG9wLCBv cF9mbGFncywKKwkJCQkgICAgICAgRFJCRF9GQVVMVF9EVF9XUik7CiAJaWYgKCFlcnIpCiAJ CXJldHVybiAwOwogCkBAIC0yNzIzLDcgKzI3MzUsOCBAQCBzdWJtaXRfZm9yX3Jlc3luYzoK IHN1Ym1pdDoKIAl1cGRhdGVfcmVjZWl2ZXJfdGltaW5nX2RldGFpbHMoY29ubmVjdGlvbiwg ZHJiZF9zdWJtaXRfcGVlcl9yZXF1ZXN0KTsKIAlpbmNfdW5hY2tlZChkZXZpY2UpOwotCWlm IChkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3QoZGV2aWNlLCBwZWVyX3JlcSwgUkVBRCwgZmF1 bHRfdHlwZSkgPT0gMCkKKwlpZiAoZHJiZF9zdWJtaXRfcGVlcl9yZXF1ZXN0KGRldmljZSwg cGVlcl9yZXEsIFJFUV9PUF9SRUFELCAwLAorCQkJCSAgICAgZmF1bHRfdHlwZSkgPT0gMCkK IAkJcmV0dXJuIDA7CiAKIAkvKiBkb24ndCBjYXJlIGZvciB0aGUgcmVhc29uIGhlcmUgKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jIGIvZHJpdmVy cy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMKaW5kZXggZWZmNzE2Yy4uZjkyZjUzMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMKKysrIGIvZHJpdmVy cy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMKQEAgLTM5Miw3ICszOTIsOCBAQCBzdGF0aWMg aW50IHJlYWRfZm9yX2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNl LCBzZWN0b3JfdCBzZWN0b3IsCiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZpY2UtPnJlc291cmNl LT5yZXFfbG9jayk7CiAKIAlhdG9taWNfYWRkKHNpemUgPj4gOSwgJmRldmljZS0+cnNfc2Vj dF9ldik7Ci0JaWYgKGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChkZXZpY2UsIHBlZXJfcmVx LCBSRUFELCBEUkJEX0ZBVUxUX1JTX1JEKSA9PSAwKQorCWlmIChkcmJkX3N1Ym1pdF9wZWVy X3JlcXVlc3QoZGV2aWNlLCBwZWVyX3JlcSwgUkVRX09QX1JFQUQsIDAsCisJCQkJICAgICBE UkJEX0ZBVUxUX1JTX1JEKSA9PSAwKQogCQlyZXR1cm4gMDsKIAogCS8qIElmIGl0IGZhaWxl ZCBiZWNhdXNlIG9mIEVOT01FTSwgcmV0cnkgc2hvdWxkIGhlbHAuICBJZiBpdCBmYWlsZWQK LS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wLzAwMjEtbWQtcmFpZC1zZXQt Ymlfb3AtdG8tUkVRX09QLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDYx NjYxADEyNjMyMTU0MjMwADAxNjY1MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABGcm9tIGIyMGM0MTk4Yzg2YTVmZTNkYWYwYWFmY2FiNzZmODExOGVjMzY1ZDAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhh dC5jb20+CkRhdGU6IFR1ZSwgOCBEZWMgMjAxNSAxMzoyNTowMCAtMDYwMApTdWJqZWN0OiBb UEFUQ0ggMjEvMzBdIG1kL3JhaWQ6IHNldCBiaV9vcCB0byBSRVFfT1AKClRoaXMgcGF0Y2gg aGFzIG1kL3JhaWQgc2V0IHRoZSBiaW8gYmlfb3AgdG8gYSBSRVFfT1AsIGFuZApycV9mbGFn X2JpdHMgdG8gYmlfcncuCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0 aUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvbWQvYml0bWFwLmMgICAgICB8ICAyICstCiBk cml2ZXJzL21kL2RtLXJhaWQuYyAgICAgfCAgNSArKystLQogZHJpdmVycy9tZC9tZC5jICAg ICAgICAgIHwgMTEgKysrKysrKy0tLS0KIGRyaXZlcnMvbWQvbWQuaCAgICAgICAgICB8ICAz ICsrLQogZHJpdmVycy9tZC9yYWlkMS5jICAgICAgIHwgMzQgKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvbWQvcmFpZDEwLmMgICAgICB8IDUwICsrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9tZC9y YWlkNS1jYWNoZS5jIHwgMjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL21k L3JhaWQ1LmMgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA3NyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JpdG1hcC5jIGIvZHJpdmVy cy9tZC9iaXRtYXAuYwppbmRleCAxMzgxMWZjLi4xODQ1OGYyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2JpdG1hcC5jCisrKyBiL2RyaXZlcnMvbWQvYml0bWFwLmMKQEAgLTE2MCw3ICsx NjAsNyBAQCBzdGF0aWMgaW50IHJlYWRfc2JfcGFnZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBs b2ZmX3Qgb2Zmc2V0LAogCiAJCWlmIChzeW5jX3BhZ2VfaW8ocmRldiwgdGFyZ2V0LAogCQkJ CSByb3VuZHVwKHNpemUsIGJkZXZfbG9naWNhbF9ibG9ja19zaXplKHJkZXYtPmJkZXYpKSwK LQkJCQkgcGFnZSwgUkVBRCwgdHJ1ZSkpIHsKKwkJCQkgcGFnZSwgUkVRX09QX1JFQUQsIDAs IHRydWUpKSB7CiAJCQlwYWdlLT5pbmRleCA9IGluZGV4OwogCQkJcmV0dXJuIDA7CiAJCX0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcmFpZC5jIGIvZHJpdmVycy9tZC9kbS1yYWlk LmMKaW5kZXggYTA5MDEyMS4uNDNhNzQ5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1y YWlkLmMKKysrIGIvZHJpdmVycy9tZC9kbS1yYWlkLmMKQEAgLTc5Miw3ICs3OTIsNyBAQCBz dGF0aWMgaW50IHJlYWRfZGlza19zYihzdHJ1Y3QgbWRfcmRldiAqcmRldiwgaW50IHNpemUp CiAJaWYgKHJkZXYtPnNiX2xvYWRlZCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoIXN5bmNfcGFn ZV9pbyhyZGV2LCAwLCBzaXplLCByZGV2LT5zYl9wYWdlLCBSRUFELCAxKSkgeworCWlmICgh c3luY19wYWdlX2lvKHJkZXYsIDAsIHNpemUsIHJkZXYtPnNiX3BhZ2UsIFJFUV9PUF9SRUFE LCAwLCAxKSkgewogCQlETUVSUigiRmFpbGVkIHRvIHJlYWQgc3VwZXJibG9jayBvZiBkZXZp Y2UgYXQgcG9zaXRpb24gJWQiLAogCQkgICAgICByZGV2LT5yYWlkX2Rpc2spOwogCQltZF9l cnJvcihyZGV2LT5tZGRldiwgcmRldik7CkBAIC0xNjQ2LDcgKzE2NDYsOCBAQCBzdGF0aWMg dm9pZCBhdHRlbXB0X3Jlc3RvcmVfb2ZfZmF1bHR5X2RldmljZXMoc3RydWN0IHJhaWRfc2V0 ICpycykKIAlmb3IgKGkgPSAwOyBpIDwgcnMtPm1kLnJhaWRfZGlza3M7IGkrKykgewogCQly ID0gJnJzLT5kZXZbaV0ucmRldjsKIAkJaWYgKHRlc3RfYml0KEZhdWx0eSwgJnItPmZsYWdz KSAmJiByLT5zYl9wYWdlICYmCi0JCSAgICBzeW5jX3BhZ2VfaW8ociwgMCwgci0+c2Jfc2l6 ZSwgci0+c2JfcGFnZSwgUkVBRCwgMSkpIHsKKwkJICAgIHN5bmNfcGFnZV9pbyhyLCAwLCBy LT5zYl9zaXplLCByLT5zYl9wYWdlLCBSRVFfT1BfUkVBRCwgMCwKKwkJCQkgMSkpIHsKIAkJ CURNSU5GTygiRmF1bHR5ICVzIGRldmljZSAjJWQgaGFzIHJlYWRhYmxlIHN1cGVyIGJsb2Nr LiIKIAkJCSAgICAgICAiICBBdHRlbXB0aW5nIHRvIHJldml2ZSBpdC4iLAogCQkJICAgICAg IHJzLT5yYWlkX3R5cGUtPm5hbWUsIGkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5j IGIvZHJpdmVycy9tZC9tZC5jCmluZGV4IGM5NDAzZDUuLjI4YTNkNmUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTM5OSw2ICszOTks NyBAQCBzdGF0aWMgdm9pZCBzdWJtaXRfZmx1c2hlcyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndz KQogCQkJYmktPmJpX2VuZF9pbyA9IG1kX2VuZF9mbHVzaDsKIAkJCWJpLT5iaV9wcml2YXRl ID0gcmRldjsKIAkJCWJpLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKKwkJCWJpLT5iaV9vcCA9 IFJFUV9PUF9XUklURTsKIAkJCWJpLT5iaV9ydyB8PSBXUklURV9GTFVTSDsKIAkJCWF0b21p Y19pbmMoJm1kZGV2LT5mbHVzaF9wZW5kaW5nKTsKIAkJCXN1Ym1pdF9iaW8oYmkpOwpAQCAt NzQ2LDYgKzc0Nyw3IEBAIHZvaWQgbWRfc3VwZXJfd3JpdGUoc3RydWN0IG1kZGV2ICptZGRl diwgc3RydWN0IG1kX3JkZXYgKnJkZXYsCiAJYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgc2l6 ZSwgMCk7CiAJYmlvLT5iaV9wcml2YXRlID0gcmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IHN1 cGVyX3dyaXR0ZW47CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAliaW8tPmJpX3J3 IHw9IFdSSVRFX0ZMVVNIX0ZVQTsKIAogCWF0b21pY19pbmMoJm1kZGV2LT5wZW5kaW5nX3dy aXRlcyk7CkBAIC03NTksMTQgKzc2MSwxNSBAQCB2b2lkIG1kX3N1cGVyX3dhaXQoc3RydWN0 IG1kZGV2ICptZGRldikKIH0KIAogaW50IHN5bmNfcGFnZV9pbyhzdHJ1Y3QgbWRfcmRldiAq cmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSwKLQkJIHN0cnVjdCBwYWdlICpwYWdl LCBpbnQgcncsIGJvb2wgbWV0YWRhdGFfb3ApCisJCSBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50 IG9wLCBpbnQgb3BfZmxhZ3MsIGJvb2wgbWV0YWRhdGFfb3ApCiB7CiAJc3RydWN0IGJpbyAq YmlvID0gYmlvX2FsbG9jX21kZGV2KEdGUF9OT0lPLCAxLCByZGV2LT5tZGRldik7CiAJaW50 IHJldDsKIAogCWJpby0+YmlfYmRldiA9IChtZXRhZGF0YV9vcCAmJiByZGV2LT5tZXRhX2Jk ZXYpID8KIAkJcmRldi0+bWV0YV9iZGV2IDogcmRldi0+YmRldjsKLQliaW8tPmJpX3J3IHw9 IHJ3OworCWJpby0+Ymlfb3AgPSBvcDsKKwliaW8tPmJpX3J3IHw9IG9wX2ZsYWdzOwogCWlm IChtZXRhZGF0YV9vcCkKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArIHJk ZXYtPnNiX3N0YXJ0OwogCWVsc2UgaWYgKHJkZXYtPm1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9u ICE9IE1heFNlY3RvciAmJgpAQCAtNzkyLDcgKzc5NSw3IEBAIHN0YXRpYyBpbnQgcmVhZF9k aXNrX3NiKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBpbnQgc2l6ZSkKIAlpZiAocmRldi0+c2Jf bG9hZGVkKQogCQlyZXR1cm4gMDsKIAotCWlmICghc3luY19wYWdlX2lvKHJkZXYsIDAsIHNp emUsIHJkZXYtPnNiX3BhZ2UsIFJFQUQsIHRydWUpKQorCWlmICghc3luY19wYWdlX2lvKHJk ZXYsIDAsIHNpemUsIHJkZXYtPnNiX3BhZ2UsIFJFUV9PUF9SRUFELCAwLCB0cnVlKSkKIAkJ Z290byBmYWlsOwogCXJkZXYtPnNiX2xvYWRlZCA9IDE7CiAJcmV0dXJuIDA7CkBAIC0xNDc4 LDcgKzE0ODEsNyBAQCBzdGF0aWMgaW50IHN1cGVyXzFfbG9hZChzdHJ1Y3QgbWRfcmRldiAq cmRldiwgc3RydWN0IG1kX3JkZXYgKnJlZmRldiwgaW50IG1pbm9yXwogCQkJcmV0dXJuIC1F SU5WQUw7CiAJCWJiX3NlY3RvciA9IChsb25nIGxvbmcpb2Zmc2V0OwogCQlpZiAoIXN5bmNf cGFnZV9pbyhyZGV2LCBiYl9zZWN0b3IsIHNlY3RvcnMgPDwgOSwKLQkJCQkgIHJkZXYtPmJi X3BhZ2UsIFJFQUQsIHRydWUpKQorCQkJCSAgcmRldi0+YmJfcGFnZSwgUkVRX09QX1JFQUQs IDAsIHRydWUpKQogCQkJcmV0dXJuIC1FSU87CiAJCWJicCA9ICh1NjQgKilwYWdlX2FkZHJl c3MocmRldi0+YmJfcGFnZSk7CiAJCXJkZXYtPmJhZGJsb2Nrcy5zaGlmdCA9IHNiLT5iYmxv Z19zaGlmdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuaCBiL2RyaXZlcnMvbWQvbWQu aAppbmRleCAyYmVhNTFlLi5hMjc3ZTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL21kLmgK KysrIGIvZHJpdmVycy9tZC9tZC5oCkBAIC02NDUsNyArNjQ1LDggQEAgZXh0ZXJuIHZvaWQg bWRfc3VwZXJfd3JpdGUoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IG1kX3JkZXYgKnJk ZXYsCiAJCQkgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLCBzdHJ1Y3QgcGFnZSAqcGFn ZSk7CiBleHRlcm4gdm9pZCBtZF9zdXBlcl93YWl0KHN0cnVjdCBtZGRldiAqbWRkZXYpOwog ZXh0ZXJuIGludCBzeW5jX3BhZ2VfaW8oc3RydWN0IG1kX3JkZXYgKnJkZXYsIHNlY3Rvcl90 IHNlY3RvciwgaW50IHNpemUsCi0JCQlzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJ3LCBib29s IG1ldGFkYXRhX29wKTsKKwkJCXN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb3AsIGludCBvcF9m bGFncywKKwkJCWJvb2wgbWV0YWRhdGFfb3ApOwogZXh0ZXJuIHZvaWQgbWRfZG9fc3luYyhz dHJ1Y3QgbWRfdGhyZWFkICp0aHJlYWQpOwogZXh0ZXJuIHZvaWQgbWRfbmV3X2V2ZW50KHN0 cnVjdCBtZGRldiAqbWRkZXYpOwogZXh0ZXJuIGludCBtZF9hbGxvd193cml0ZShzdHJ1Y3Qg bWRkZXYgKm1kZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZl cnMvbWQvcmFpZDEuYwppbmRleCAwMWU2ZTc0Li4yYTQyZGFhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL3JhaWQxLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC03NTksNyArNzU5 LDcgQEAgc3RhdGljIHZvaWQgZmx1c2hfcGVuZGluZ193cml0ZXMoc3RydWN0IHIxY29uZiAq Y29uZikKIAkJd2hpbGUgKGJpbykgeyAvKiBzdWJtaXQgcGVuZGluZyB3cml0ZXMgKi8KIAkJ CXN0cnVjdCBiaW8gKm5leHQgPSBiaW8tPmJpX25leHQ7CiAJCQliaW8tPmJpX25leHQgPSBO VUxMOwotCQkJaWYgKHVubGlrZWx5KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpICYmCisJ CQlpZiAodW5saWtlbHkoKGJpby0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpICYmCiAJCQkg ICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXZfZ2V0X3F1ZXVlKGJpby0+YmlfYmRldikpKSkK IAkJCQkvKiBKdXN0IGlnbm9yZSBpdCAqLwogCQkJCWJpb19lbmRpbyhiaW8pOwpAQCAtMTAz Myw3ICsxMDMzLDcgQEAgc3RhdGljIHZvaWQgcmFpZDFfdW5wbHVnKHN0cnVjdCBibGtfcGx1 Z19jYiAqY2IsIGJvb2wgZnJvbV9zY2hlZHVsZSkKIAl3aGlsZSAoYmlvKSB7IC8qIHN1Ym1p dCBwZW5kaW5nIHdyaXRlcyAqLwogCQlzdHJ1Y3QgYmlvICpuZXh0ID0gYmlvLT5iaV9uZXh0 OwogCQliaW8tPmJpX25leHQgPSBOVUxMOwotCQlpZiAodW5saWtlbHkoKGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkgJiYKKwkJaWYgKHVubGlrZWx5KChiaW8tPmJpX29wID09IFJFUV9P UF9ESVNDQVJEKSAmJgogCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJkKGJkZXZfZ2V0X3F1ZXVl KGJpby0+YmlfYmRldikpKSkKIAkJCS8qIEp1c3QgaWdub3JlIGl0ICovCiAJCQliaW9fZW5k aW8oYmlvKTsKQEAgLTEwNTMsMTIgKzEwNTMsMTEgQEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1 ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJaW50IGksIGRp c2tzOwogCXN0cnVjdCBiaXRtYXAgKmJpdG1hcDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwor CWNvbnN0IGludCBvcCA9IGJpby0+Ymlfb3A7CiAJY29uc3QgaW50IHJ3ID0gYmlvX2RhdGFf ZGlyKGJpbyk7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBkb19zeW5jID0gKGJpby0+Ymlfcncg JiBSRVFfU1lOQyk7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBkb19mbHVzaF9mdWEgPSAoYmlv LT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRlVBKSk7Ci0JY29uc3QgdW5zaWduZWQgbG9u ZyBkb19kaXNjYXJkID0gKGJpby0+YmlfcncKLQkJCQkJICAmIChSRVFfRElTQ0FSRCB8IFJF UV9TRUNVUkUpKTsKLQljb25zdCB1bnNpZ25lZCBsb25nIGRvX3NhbWUgPSAoYmlvLT5iaV9y dyAmIFJFUV9XUklURV9TQU1FKTsKKwljb25zdCB1bnNpZ25lZCBsb25nIGRvX3NlYyA9IChi aW8tPmJpX3J3ICYgUkVRX1NFQ1VSRSk7CiAJc3RydWN0IG1kX3JkZXYgKmJsb2NrZWRfcmRl djsKIAlzdHJ1Y3QgYmxrX3BsdWdfY2IgKmNiOwogCXN0cnVjdCByYWlkMV9wbHVnX2NiICpw bHVnID0gTlVMTDsKQEAgLTExNjYsNyArMTE2NSw4IEBAIHJlYWRfYWdhaW46CiAJCQltaXJy b3ItPnJkZXYtPmRhdGFfb2Zmc2V0OwogCQlyZWFkX2Jpby0+YmlfYmRldiA9IG1pcnJvci0+ cmRldi0+YmRldjsKIAkJcmVhZF9iaW8tPmJpX2VuZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3Jl cXVlc3Q7Ci0JCXJlYWRfYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19zeW5jOworCQlyZWFkX2Jp by0+Ymlfb3AgPSBvcDsKKwkJcmVhZF9iaW8tPmJpX3J3ID0gZG9fc3luYzsKIAkJcmVhZF9i aW8tPmJpX3ByaXZhdGUgPSByMV9iaW87CiAKIAkJaWYgKG1heF9zZWN0b3JzIDwgcjFfYmlv LT5zZWN0b3JzKSB7CkBAIC0xMzc2LDggKzEzNzYsOSBAQCByZWFkX2FnYWluOgogCQkJCSAg IGNvbmYtPm1pcnJvcnNbaV0ucmRldi0+ZGF0YV9vZmZzZXQpOwogCQltYmlvLT5iaV9iZGV2 ID0gY29uZi0+bWlycm9yc1tpXS5yZGV2LT5iZGV2OwogCQltYmlvLT5iaV9lbmRfaW8JPSBy YWlkMV9lbmRfd3JpdGVfcmVxdWVzdDsKKwkJbWJpby0+Ymlfb3AgPSBvcDsKIAkJbWJpby0+ YmlfcncgPQotCQkJV1JJVEUgfCBkb19mbHVzaF9mdWEgfCBkb19zeW5jIHwgZG9fZGlzY2Fy ZCB8IGRvX3NhbWU7CisJCQlkb19mbHVzaF9mdWEgfCBkb19zeW5jIHwgZG9fc2VjOwogCQlt YmlvLT5iaV9wcml2YXRlID0gcjFfYmlvOwogCiAJCWF0b21pY19pbmMoJnIxX2Jpby0+cmVt YWluaW5nKTsKQEAgLTE3NzEsNyArMTc3Miw3IEBAIHN0YXRpYyB2b2lkIGVuZF9zeW5jX3dy aXRlKHN0cnVjdCBiaW8gKmJpbykKIHN0YXRpYyBpbnQgcjFfc3luY19wYWdlX2lvKHN0cnVj dCBtZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJCQkgICAgaW50IHNlY3RvcnMs IHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgcncpCiB7Ci0JaWYgKHN5bmNfcGFnZV9pbyhyZGV2 LCBzZWN0b3IsIHNlY3RvcnMgPDwgOSwgcGFnZSwgcncsIGZhbHNlKSkKKwlpZiAoc3luY19w YWdlX2lvKHJkZXYsIHNlY3Rvciwgc2VjdG9ycyA8PCA5LCBwYWdlLCBydywgMCwgZmFsc2Up KQogCQkvKiBzdWNjZXNzICovCiAJCXJldHVybiAxOwogCWlmIChydyA9PSBXUklURSkgewpA QCAtMTgyNSw3ICsxODI2LDcgQEAgc3RhdGljIGludCBmaXhfc3luY19yZWFkX2Vycm9yKHN0 cnVjdCByMWJpbyAqcjFfYmlvKQogCQkJCXJkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXY7 CiAJCQkJaWYgKHN5bmNfcGFnZV9pbyhyZGV2LCBzZWN0LCBzPDw5LAogCQkJCQkJIGJpby0+ YmlfaW9fdmVjW2lkeF0uYnZfcGFnZSwKLQkJCQkJCSBSRUFELCBmYWxzZSkpIHsKKwkJCQkJ CSBSRVFfT1BfUkVBRCwgMCwgZmFsc2UpKSB7CiAJCQkJCXN1Y2Nlc3MgPSAxOwogCQkJCQli cmVhazsKIAkJCQl9CkBAIC0yMDMwLDcgKzIwMzEsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX3Jl cXVlc3Rfd3JpdGUoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IHIxYmlvICpyMV9iaW8p CiAJCSAgICAgICF0ZXN0X2JpdChNRF9SRUNPVkVSWV9TWU5DLCAmbWRkZXYtPnJlY292ZXJ5 KSkpKQogCQkJY29udGludWU7CiAKLQkJd2Jpby0+YmlfcncgPSBXUklURTsKKwkJd2Jpby0+ Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCXdiaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3dy aXRlOwogCQlhdG9taWNfaW5jKCZyMV9iaW8tPnJlbWFpbmluZyk7CiAJCW1kX3N5bmNfYWNj dChjb25mLT5taXJyb3JzW2ldLnJkZXYtPmJkZXYsIGJpb19zZWN0b3JzKHdiaW8pKTsKQEAg LTIwOTAsNyArMjA5MSw3IEBAIHN0YXRpYyB2b2lkIGZpeF9yZWFkX2Vycm9yKHN0cnVjdCBy MWNvbmYgKmNvbmYsIGludCByZWFkX2Rpc2ssCiAJCQkgICAgaXNfYmFkYmxvY2socmRldiwg c2VjdCwgcywKIAkJCQkJJmZpcnN0X2JhZCwgJmJhZF9zZWN0b3JzKSA9PSAwICYmCiAJCQkg ICAgc3luY19wYWdlX2lvKHJkZXYsIHNlY3QsIHM8PDksCi0JCQkJCSBjb25mLT50bXBwYWdl LCBSRUFELCBmYWxzZSkpCisJCQkJCSBjb25mLT50bXBwYWdlLCBSRVFfT1BfUkVBRCwgMCwg ZmFsc2UpKQogCQkJCXN1Y2Nlc3MgPSAxOwogCQkJZWxzZSB7CiAJCQkJZCsrOwpAQCAtMjIw MSw3ICsyMjAyLDcgQEAgc3RhdGljIGludCBuYXJyb3dfd3JpdGVfZXJyb3Ioc3RydWN0IHIx YmlvICpyMV9iaW8sIGludCBpKQogCQkJd2JpbyA9IGJpb19jbG9uZV9tZGRldihyMV9iaW8t Pm1hc3Rlcl9iaW8sIEdGUF9OT0lPLCBtZGRldik7CiAJCX0KIAotCQl3YmlvLT5iaV9ydyA9 IFdSSVRFOworCQl3YmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJd2Jpby0+YmlfaXRl ci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvcjsKIAkJd2Jpby0+YmlfaXRlci5iaV9zaXpl ID0gcjFfYmlvLT5zZWN0b3JzIDw8IDk7CiAKQEAgLTIzNDMsNyArMjM0NCw4IEBAIHJlYWRf bW9yZToKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2VjdG9yICsgcmRl di0+ZGF0YV9vZmZzZXQ7CiAJCWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCWJpby0+ YmlfZW5kX2lvID0gcmFpZDFfZW5kX3JlYWRfcmVxdWVzdDsKLQkJYmlvLT5iaV9ydyA9IFJF QUQgfCBkb19zeW5jOworCQliaW8tPmJpX29wID0gUkVRX09QX1JFQUQ7CisJCWJpby0+Ymlf cncgPSBkb19zeW5jOwogCQliaW8tPmJpX3ByaXZhdGUgPSByMV9iaW87CiAJCWlmIChtYXhf c2VjdG9ycyA8IHIxX2Jpby0+c2VjdG9ycykgewogCQkJLyogRHJhdCAtIGhhdmUgdG8gc3Bs aXQgdGhpcyB1cCBtb3JlICovCkBAIC0yNTY4LDcgKzI1NzAsNyBAQCBzdGF0aWMgc2VjdG9y X3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9u ciwgaW50ICpza2lwcAogCQkJaWYgKGkgPCBjb25mLT5yYWlkX2Rpc2tzKQogCQkJCXN0aWxs X2RlZ3JhZGVkID0gMTsKIAkJfSBlbHNlIGlmICghdGVzdF9iaXQoSW5fc3luYywgJnJkZXYt PmZsYWdzKSkgewotCQkJYmlvLT5iaV9ydyA9IFdSSVRFOworCQkJYmlvLT5iaV9vcCA9IFJF UV9PUF9XUklURTsKIAkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5bmNfd3JpdGU7CiAJCQl3 cml0ZV90YXJnZXRzICsrOwogCQl9IGVsc2UgewpAQCAtMjU5NSw3ICsyNTk3LDcgQEAgc3Rh dGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsIGludCAqc2tpcHAKIAkJCQkJaWYgKGRpc2sgPCAwKQogCQkJCQkJZGlz ayA9IGk7CiAJCQkJfQotCQkJCWJpby0+YmlfcncgPSBSRUFEOworCQkJCWJpby0+Ymlfb3Ag PSBSRVFfT1BfUkVBRDsKIAkJCQliaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3JlYWQ7CiAJ CQkJcmVhZF90YXJnZXRzKys7CiAJCQl9IGVsc2UgaWYgKCF0ZXN0X2JpdChXcml0ZUVycm9y U2VlbiwgJnJkZXYtPmZsYWdzKSAmJgpAQCAtMjYwNyw3ICsyNjA5LDcgQEAgc3RhdGljIHNl Y3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0 b3JfbnIsIGludCAqc2tpcHAKIAkJCQkgKiBpZiB3ZSBhcmUgZG9pbmcgcmVzeW5jIG9yIHJl cGFpci4gT3RoZXJ3aXNlLCBsZWF2ZQogCQkJCSAqIHRoaXMgZGV2aWNlIGFsb25lIGZvciB0 aGlzIHN5bmMgcmVxdWVzdC4KIAkJCQkgKi8KLQkJCQliaW8tPmJpX3J3ID0gV1JJVEU7CisJ CQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJCQliaW8tPmJpX2VuZF9pbyA9IGVu ZF9zeW5jX3dyaXRlOwogCQkJCXdyaXRlX3RhcmdldHMrKzsKIAkJCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IDU1YWU5 NDguLjM2ZDg2ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJp dmVycy9tZC9yYWlkMTAuYwpAQCAtODY1LDcgKzg2NSw3IEBAIHN0YXRpYyB2b2lkIGZsdXNo X3BlbmRpbmdfd3JpdGVzKHN0cnVjdCByMTBjb25mICpjb25mKQogCQl3aGlsZSAoYmlvKSB7 IC8qIHN1Ym1pdCBwZW5kaW5nIHdyaXRlcyAqLwogCQkJc3RydWN0IGJpbyAqbmV4dCA9IGJp by0+YmlfbmV4dDsKIAkJCWJpby0+YmlfbmV4dCA9IE5VTEw7Ci0JCQlpZiAodW5saWtlbHko KGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgJiYKKwkJCWlmICh1bmxpa2VseSgoYmlvLT5i aV9vcCA9PSAgUkVRX09QX0RJU0NBUkQpICYmCiAJCQkgICAgIWJsa19xdWV1ZV9kaXNjYXJk KGJkZXZfZ2V0X3F1ZXVlKGJpby0+YmlfYmRldikpKSkKIAkJCQkvKiBKdXN0IGlnbm9yZSBp dCAqLwogCQkJCWJpb19lbmRpbyhiaW8pOwpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgc3RhdGlj IHZvaWQgcmFpZDEwX3VucGx1ZyhzdHJ1Y3QgYmxrX3BsdWdfY2IgKmNiLCBib29sIGZyb21f c2NoZWR1bGUpCiAJd2hpbGUgKGJpbykgeyAvKiBzdWJtaXQgcGVuZGluZyB3cml0ZXMgKi8K IAkJc3RydWN0IGJpbyAqbmV4dCA9IGJpby0+YmlfbmV4dDsKIAkJYmlvLT5iaV9uZXh0ID0g TlVMTDsKLQkJaWYgKHVubGlrZWx5KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpICYmCisJ CWlmICh1bmxpa2VseSgoYmlvLT5iaV9vcCA9PSAgUkVRX09QX0RJU0NBUkQpICYmCiAJCSAg ICAhYmxrX3F1ZXVlX2Rpc2NhcmQoYmRldl9nZXRfcXVldWUoYmlvLT5iaV9iZGV2KSkpKQog CQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhiaW8pOwpAQCAtMTA1OCwx MiArMTA1OCwxMSBAQCBzdGF0aWMgdm9pZCBfX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJc3RydWN0IHIxMGJpbyAqcjEwX2JpbzsKIAlz dHJ1Y3QgYmlvICpyZWFkX2JpbzsKIAlpbnQgaTsKKwljb25zdCBpbnQgb3AgPSBiaW8tPmJp X29wOwogCWNvbnN0IGludCBydyA9IGJpb19kYXRhX2RpcihiaW8pOwogCWNvbnN0IHVuc2ln bmVkIGxvbmcgZG9fc3luYyA9IChiaW8tPmJpX3J3ICYgUkVRX1NZTkMpOwogCWNvbnN0IHVu c2lnbmVkIGxvbmcgZG9fZnVhID0gKGJpby0+YmlfcncgJiBSRVFfRlVBKTsKLQljb25zdCB1 bnNpZ25lZCBsb25nIGRvX2Rpc2NhcmQgPSAoYmlvLT5iaV9ydwotCQkJCQkgICYgKFJFUV9E SVNDQVJEIHwgUkVRX1NFQ1VSRSkpOwotCWNvbnN0IHVuc2lnbmVkIGxvbmcgZG9fc2FtZSA9 IChiaW8tPmJpX3J3ICYgUkVRX1dSSVRFX1NBTUUpOworCWNvbnN0IHVuc2lnbmVkIGxvbmcg ZG9fc2VjID0gKGJpby0+YmlfcncgJiBSRVFfU0VDVVJFKTsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXN0cnVjdCBtZF9yZGV2ICpibG9ja2VkX3JkZXY7CiAJc3RydWN0IGJsa19wbHVn X2NiICpjYjsKQEAgLTExNTYsNyArMTE1NSw4IEBAIHJlYWRfYWdhaW46CiAJCQljaG9vc2Vf ZGF0YV9vZmZzZXQocjEwX2JpbywgcmRldik7CiAJCXJlYWRfYmlvLT5iaV9iZGV2ID0gcmRl di0+YmRldjsKIAkJcmVhZF9iaW8tPmJpX2VuZF9pbyA9IHJhaWQxMF9lbmRfcmVhZF9yZXF1 ZXN0OwotCQlyZWFkX2Jpby0+YmlfcncgPSBSRUFEIHwgZG9fc3luYzsKKwkJcmVhZF9iaW8t PmJpX29wID0gb3A7CisJCXJlYWRfYmlvLT5iaV9ydyA9IGRvX3N5bmM7CiAJCXJlYWRfYmlv LT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAogCQlpZiAobWF4X3NlY3RvcnMgPCByMTBfYmlv LT5zZWN0b3JzKSB7CkBAIC0xMzYzLDggKzEzNjMsOSBAQCByZXRyeV93cml0ZToKIAkJCQkJ CQkgICAgICByZGV2KSk7CiAJCQltYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCW1i aW8tPmJpX2VuZF9pbwk9IHJhaWQxMF9lbmRfd3JpdGVfcmVxdWVzdDsKKwkJCW1iaW8tPmJp X29wID0gb3A7CiAJCQltYmlvLT5iaV9ydyA9Ci0JCQkJV1JJVEUgfCBkb19zeW5jIHwgZG9f ZnVhIHwgZG9fZGlzY2FyZCB8IGRvX3NhbWU7CisJCQkJZG9fc3luYyB8IGRvX2Z1YSB8IGRv X3NlYzsKIAkJCW1iaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCiAJCQlhdG9taWNfaW5j KCZyMTBfYmlvLT5yZW1haW5pbmcpOwpAQCAtMTQwNiw4ICsxNDA3LDkgQEAgcmV0cnlfd3Jp dGU6CiAJCQkJCQkgICByMTBfYmlvLCByZGV2KSk7CiAJCQltYmlvLT5iaV9iZGV2ID0gcmRl di0+YmRldjsKIAkJCW1iaW8tPmJpX2VuZF9pbwk9IHJhaWQxMF9lbmRfd3JpdGVfcmVxdWVz dDsKKwkJCW1iaW8tPmJpX29wID0gb3A7CiAJCQltYmlvLT5iaV9ydyA9Ci0JCQkJV1JJVEUg fCBkb19zeW5jIHwgZG9fZnVhIHwgZG9fZGlzY2FyZCB8IGRvX3NhbWU7CisJCQkJZG9fc3lu YyB8IGRvX2Z1YSB8IGRvX3NlYzsKIAkJCW1iaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwog CiAJCQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwpAQCAtMTk5MCw3ICsxOTky LDcgQEAgc3RhdGljIHZvaWQgc3luY19yZXF1ZXN0X3dyaXRlKHN0cnVjdCBtZGRldiAqbWRk ZXYsIHN0cnVjdCByMTBiaW8gKnIxMF9iaW8pCiAKIAkJdGJpby0+YmlfdmNudCA9IHZjbnQ7 CiAJCXRiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHIxMF9iaW8tPnNlY3RvcnMgPDwgOTsKLQkJ dGJpby0+YmlfcncgPSBXUklURTsKKwkJdGJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJ CXRiaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCQl0YmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciA9IHIxMF9iaW8tPmRldnNbaV0uYWRkcjsKIAkJdGJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfd3JpdGU7CkBAIC0yMDc2LDcgKzIwNzgsNyBAQCBzdGF0aWMgdm9pZCBmaXhfcmVjb3Zl cnlfcmVhZF9lcnJvcihzdHJ1Y3QgcjEwYmlvICpyMTBfYmlvKQogCQkJCSAgYWRkciwKIAkJ CQkgIHMgPDwgOSwKIAkJCQkgIGJpby0+YmlfaW9fdmVjW2lkeF0uYnZfcGFnZSwKLQkJCQkg IFJFQUQsIGZhbHNlKTsKKwkJCQkgIFJFUV9PUF9SRUFELCAwLCBmYWxzZSk7CiAJCWlmIChv aykgewogCQkJcmRldiA9IGNvbmYtPm1pcnJvcnNbZHddLnJkZXY7CiAJCQlhZGRyID0gcjEw X2Jpby0+ZGV2c1sxXS5hZGRyICsgc2VjdDsKQEAgLTIwODQsNyArMjA4Niw3IEBAIHN0YXRp YyB2b2lkIGZpeF9yZWNvdmVyeV9yZWFkX2Vycm9yKHN0cnVjdCByMTBiaW8gKnIxMF9iaW8p CiAJCQkJCSAgYWRkciwKIAkJCQkJICBzIDw8IDksCiAJCQkJCSAgYmlvLT5iaV9pb192ZWNb aWR4XS5idl9wYWdlLAotCQkJCQkgIFdSSVRFLCBmYWxzZSk7CisJCQkJCSAgUkVRX09QX1dS SVRFLCAwLCBmYWxzZSk7CiAJCQlpZiAoIW9rKSB7CiAJCQkJc2V0X2JpdChXcml0ZUVycm9y U2VlbiwgJnJkZXYtPmZsYWdzKTsKIAkJCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQoV2FudFJl cGxhY2VtZW50LApAQCAtMjIxMSw3ICsyMjEzLDcgQEAgc3RhdGljIGludCByMTBfc3luY19w YWdlX2lvKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJaWYgKGlz X2JhZGJsb2NrKHJkZXYsIHNlY3Rvciwgc2VjdG9ycywgJmZpcnN0X2JhZCwgJmJhZF9zZWN0 b3JzKQogCSAgICAmJiAocncgPT0gUkVBRCB8fCB0ZXN0X2JpdChXcml0ZUVycm9yU2Vlbiwg JnJkZXYtPmZsYWdzKSkpCiAJCXJldHVybiAtMTsKLQlpZiAoc3luY19wYWdlX2lvKHJkZXYs IHNlY3Rvciwgc2VjdG9ycyA8PCA5LCBwYWdlLCBydywgZmFsc2UpKQorCWlmIChzeW5jX3Bh Z2VfaW8ocmRldiwgc2VjdG9yLCBzZWN0b3JzIDw8IDksIHBhZ2UsIHJ3LCAwLCBmYWxzZSkp CiAJCS8qIHN1Y2Nlc3MgKi8KIAkJcmV0dXJuIDE7CiAJaWYgKHJ3ID09IFdSSVRFKSB7CkBA IC0yMjk3LDcgKzIyOTksOCBAQCBzdGF0aWMgdm9pZCBmaXhfcmVhZF9lcnJvcihzdHJ1Y3Qg cjEwY29uZiAqY29uZiwgc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IHIxMAogCQkJCQkJ ICAgICAgIHIxMF9iaW8tPmRldnNbc2xdLmFkZHIgKwogCQkJCQkJICAgICAgIHNlY3QsCiAJ CQkJCQkgICAgICAgczw8OSwKLQkJCQkJCSAgICAgICBjb25mLT50bXBwYWdlLCBSRUFELCBm YWxzZSk7CisJCQkJCQkgICAgICAgY29uZi0+dG1wcGFnZSwKKwkJCQkJCSAgICAgICBSRVFf T1BfUkVBRCwgMCwgZmFsc2UpOwogCQkJCXJkZXZfZGVjX3BlbmRpbmcocmRldiwgbWRkZXYp OwogCQkJCXJjdV9yZWFkX2xvY2soKTsKIAkJCQlpZiAoc3VjY2VzcykKQEAgLTI0NzIsNyAr MjQ3NSw3IEBAIHN0YXRpYyBpbnQgbmFycm93X3dyaXRlX2Vycm9yKHN0cnVjdCByMTBiaW8g KnIxMF9iaW8sIGludCBpKQogCQkJCSAgIGNob29zZV9kYXRhX29mZnNldChyMTBfYmlvLCBy ZGV2KSArCiAJCQkJICAgKHNlY3RvciAtIHIxMF9iaW8tPnNlY3RvcikpOwogCQl3YmlvLT5i aV9iZGV2ID0gcmRldi0+YmRldjsKLQkJd2Jpby0+YmlfcncgfD0gV1JJVEU7CisJCXdiaW8t PmJpX29wID0gUkVRX09QX1dSSVRFOwogCiAJCWlmIChzdWJtaXRfYmlvX3dhaXQod2Jpbykg PCAwKQogCQkJLyogRmFpbHVyZSEgKi8KQEAgLTI1NDgsNyArMjU1MSw4IEBAIHJlYWRfbW9y ZToKIAliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzbG90XS5hZGRy CiAJCSsgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8sIHJkZXYpOwogCWJpby0+YmlfYmRl diA9IHJkZXYtPmJkZXY7Ci0JYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19zeW5jOworCWJpby0+ Ymlfb3AgPSBSRVFfT1BfUkVBRDsKKwliaW8tPmJpX3J3ID0gZG9fc3luYzsKIAliaW8tPmJp X3ByaXZhdGUgPSByMTBfYmlvOwogCWJpby0+YmlfZW5kX2lvID0gcmFpZDEwX2VuZF9yZWFk X3JlcXVlc3Q7CiAJaWYgKG1heF9zZWN0b3JzIDwgcjEwX2Jpby0+c2VjdG9ycykgewpAQCAt MzAzNSw3ICszMDM5LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3Qg bWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJYmlvbGlzdCA9IGJpbzsK IAkJCQliaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCQkJCWJpby0+YmlfZW5kX2lvID0g ZW5kX3N5bmNfcmVhZDsKLQkJCQliaW8tPmJpX3J3ID0gUkVBRDsKKwkJCQliaW8tPmJpX29w ID0gUkVRX09QX1JFQUQ7CiAJCQkJZnJvbV9hZGRyID0gcjEwX2Jpby0+ZGV2c1tqXS5hZGRy OwogCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmcm9tX2FkZHIgKwogCQkJCQlyZGV2 LT5kYXRhX29mZnNldDsKQEAgLTMwNjEsNyArMzA2NSw3IEBAIHN0YXRpYyBzZWN0b3JfdCBz eW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAog CQkJCQliaW9saXN0ID0gYmlvOwogCQkJCQliaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwog CQkJCQliaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwotCQkJCQliaW8tPmJpX3J3 ID0gV1JJVEU7CisJCQkJCWJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCQkJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSB0b19hZGRyCiAJCQkJCQkrIHJkZXYtPmRhdGFfb2Zmc2V0 OwogCQkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwpAQCAtMzA5MCw3ICszMDk0LDcg QEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBz ZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJYmlvbGlzdCA9IGJpbzsKIAkJCQliaW8tPmJpX3By aXZhdGUgPSByMTBfYmlvOwogCQkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5bmNfd3JpdGU7 Ci0JCQkJYmlvLT5iaV9ydyA9IFdSSVRFOworCQkJCWJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJ VEU7CiAJCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHRvX2FkZHIgKwogCQkJCQlyZGV2 LT5kYXRhX29mZnNldDsKIAkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwpAQCAtMzIx MCw3ICszMjE0LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRk ZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQliaW9saXN0ID0gYmlvOwogCQkJ YmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfcmVhZDsKLQkJCWJpby0+YmlfcncgPSBSRUFEOworCQkJYmlvLT5iaV9vcCA9IFJFUV9P UF9SRUFEOwogCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJCQkJY29u Zi0+bWlycm9yc1tkXS5yZGV2LT5kYXRhX29mZnNldDsKIAkJCWJpby0+YmlfYmRldiA9IGNv bmYtPm1pcnJvcnNbZF0ucmRldi0+YmRldjsKQEAgLTMyMzIsNyArMzIzNiw3IEBAIHN0YXRp YyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qg c2VjdG9yX25yLAogCQkJYmlvbGlzdCA9IGJpbzsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHIx MF9iaW87CiAJCQliaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwotCQkJYmlvLT5i aV9ydyA9IFdSSVRFOworCQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3IgKwogCQkJCWNvbmYtPm1pcnJvcnNbZF0ucmVw bGFjZW1lbnQtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bWlycm9y c1tkXS5yZXBsYWNlbWVudC0+YmRldjsKQEAgLTQzMTUsNyArNDMxOSw3IEBAIHJlYWRfbW9y ZToKIAkJCSAgICAgICArIHJkZXYtPmRhdGFfb2Zmc2V0KTsKIAlyZWFkX2Jpby0+YmlfcHJp dmF0ZSA9IHIxMF9iaW87CiAJcmVhZF9iaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3JlYWQ7 Ci0JcmVhZF9iaW8tPmJpX3J3ID0gUkVBRDsKKwlyZWFkX2Jpby0+Ymlfb3AgPSBSRVFfT1Bf UkVBRDsKIAlyZWFkX2Jpby0+YmlfZmxhZ3MgJj0gKH4wVUwgPDwgQklPX1JFU0VUX0JJVFMp OwogCXJlYWRfYmlvLT5iaV9lcnJvciA9IDA7CiAJcmVhZF9iaW8tPmJpX3ZjbnQgPSAwOwpA QCAtNDM0OSw3ICs0MzUzLDcgQEAgcmVhZF9tb3JlOgogCQkJcmRldjItPm5ld19kYXRhX29m ZnNldDsKIAkJYi0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCWItPmJpX2VuZF9pbyA9IGVu ZF9yZXNoYXBlX3dyaXRlOwotCQliLT5iaV9ydyA9IFdSSVRFOworCQliLT5iaV9vcCA9IFJF UV9PUF9XUklURTsKIAkJYi0+YmlfbmV4dCA9IGJsaXN0OwogCQlibGlzdCA9IGI7CiAJfQpA QCAtNDUxNyw3ICs0NTIxLDcgQEAgc3RhdGljIGludCBoYW5kbGVfcmVzaGFwZV9yZWFkX2Vy cm9yKHN0cnVjdCBtZGRldiAqbWRkZXYsCiAJCQkJCSAgICAgICBhZGRyLAogCQkJCQkgICAg ICAgcyA8PCA5LAogCQkJCQkgICAgICAgYnZlY1tpZHhdLmJ2X3BhZ2UsCi0JCQkJCSAgICAg ICBSRUFELCBmYWxzZSk7CisJCQkJCSAgICAgICBSRVFfT1BfUkVBRCwgMCwgZmFsc2UpOwog CQkJaWYgKHN1Y2Nlc3MpCiAJCQkJYnJlYWs7CiAJCWZhaWxlZDoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvcmFpZDUtY2FjaGUuYyBiL2RyaXZlcnMvbWQvcmFpZDUtY2FjaGUuYwppbmRl eCA2ODRjOTExLi42MTFhM2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQ1LWNhY2hl LmMKKysrIGIvZHJpdmVycy9tZC9yYWlkNS1jYWNoZS5jCkBAIC0yNTcsNyArMjU3LDcgQEAg c3RhdGljIHN0cnVjdCBiaW8gKnI1bF9iaW9fYWxsb2Moc3RydWN0IHI1bF9sb2cgKmxvZykK IHsKIAlzdHJ1Y3QgYmlvICpiaW8gPSBiaW9fa21hbGxvYyhHRlBfTk9JTyB8IF9fR0ZQX05P RkFJTCwgQklPX01BWF9QQUdFUyk7CiAKLQliaW8tPmJpX3J3ID0gV1JJVEU7CisJYmlvLT5i aV9vcCA9IFJFUV9PUF9XUklURTsKIAliaW8tPmJpX2JkZXYgPSBsb2ctPnJkZXYtPmJkZXY7 CiAJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGxvZy0+cmRldi0+ZGF0YV9vZmZzZXQgKyBs b2ctPmxvZ19zdGFydDsKIApAQCAtNjQ2LDYgKzY0Niw3IEBAIHZvaWQgcjVsX2ZsdXNoX3N0 cmlwZV90b19yYWlkKHN0cnVjdCByNWxfbG9nICpsb2cpCiAJYmlvX3Jlc2V0KCZsb2ctPmZs dXNoX2Jpbyk7CiAJbG9nLT5mbHVzaF9iaW8uYmlfYmRldiA9IGxvZy0+cmRldi0+YmRldjsK IAlsb2ctPmZsdXNoX2Jpby5iaV9lbmRfaW8gPSByNWxfbG9nX2ZsdXNoX2VuZGlvOworCWxv Zy0+Zmx1c2hfYmlvLmJpX29wID0gUkVRX09QX1dSSVRFOwogCWxvZy0+Zmx1c2hfYmlvLmJp X3J3IHw9IFdSSVRFX0ZMVVNIOwogCXN1Ym1pdF9iaW8oJmxvZy0+Zmx1c2hfYmlvKTsKIH0K QEAgLTgyNyw3ICs4MjgsOCBAQCBzdGF0aWMgaW50IHI1bF9yZWFkX21ldGFfYmxvY2soc3Ry dWN0IHI1bF9sb2cgKmxvZywKIAlzdHJ1Y3QgcjVsX21ldGFfYmxvY2sgKm1iOwogCXUzMiBj cmMsIHN0b3JlZF9jcmM7CiAKLQlpZiAoIXN5bmNfcGFnZV9pbyhsb2ctPnJkZXYsIGN0eC0+ cG9zLCBQQUdFX1NJWkUsIHBhZ2UsIFJFQUQsIGZhbHNlKSkKKwlpZiAoIXN5bmNfcGFnZV9p byhsb2ctPnJkZXYsIGN0eC0+cG9zLCBQQUdFX1NJWkUsIHBhZ2UsIFJFUV9PUF9SRUFELCAw LAorCQkJICBmYWxzZSkpCiAJCXJldHVybiAtRUlPOwogCiAJbWIgPSBwYWdlX2FkZHJlc3Mo cGFnZSk7CkBAIC04NzIsNyArODc0LDggQEAgc3RhdGljIGludCByNWxfcmVjb3ZlcnlfZmx1 c2hfb25lX3N0cmlwZShzdHJ1Y3QgcjVsX2xvZyAqbG9nLAogCQkJCQkgICAgICZkaXNrX2lu ZGV4LCBzaCk7CiAKIAkJCXN5bmNfcGFnZV9pbyhsb2ctPnJkZXYsICpsb2dfb2Zmc2V0LCBQ QUdFX1NJWkUsCi0JCQkJICAgICBzaC0+ZGV2W2Rpc2tfaW5kZXhdLnBhZ2UsIFJFQUQsIGZh bHNlKTsKKwkJCQkgICAgIHNoLT5kZXZbZGlza19pbmRleF0ucGFnZSwgUkVRX09QX1JFQUQs IDAsCisJCQkJICAgICBmYWxzZSk7CiAJCQlzaC0+ZGV2W2Rpc2tfaW5kZXhdLmxvZ19jaGVj a3N1bSA9CiAJCQkJbGUzMl90b19jcHUocGF5bG9hZC0+Y2hlY2tzdW1bMF0pOwogCQkJc2V0 X2JpdChSNV9XYW50d3JpdGUsICZzaC0+ZGV2W2Rpc2tfaW5kZXhdLmZsYWdzKTsKQEAgLTg4 MCw3ICs4ODMsOCBAQCBzdGF0aWMgaW50IHI1bF9yZWNvdmVyeV9mbHVzaF9vbmVfc3RyaXBl KHN0cnVjdCByNWxfbG9nICpsb2csCiAJCX0gZWxzZSB7CiAJCQlkaXNrX2luZGV4ID0gc2gt PnBkX2lkeDsKIAkJCXN5bmNfcGFnZV9pbyhsb2ctPnJkZXYsICpsb2dfb2Zmc2V0LCBQQUdF X1NJWkUsCi0JCQkJICAgICBzaC0+ZGV2W2Rpc2tfaW5kZXhdLnBhZ2UsIFJFQUQsIGZhbHNl KTsKKwkJCQkgICAgIHNoLT5kZXZbZGlza19pbmRleF0ucGFnZSwgUkVRX09QX1JFQUQsIDAs CisJCQkJICAgICBmYWxzZSk7CiAJCQlzaC0+ZGV2W2Rpc2tfaW5kZXhdLmxvZ19jaGVja3N1 bSA9CiAJCQkJbGUzMl90b19jcHUocGF5bG9hZC0+Y2hlY2tzdW1bMF0pOwogCQkJc2V0X2Jp dChSNV9XYW50d3JpdGUsICZzaC0+ZGV2W2Rpc2tfaW5kZXhdLmZsYWdzKTsKQEAgLTg5MCw3 ICs4OTQsNyBAQCBzdGF0aWMgaW50IHI1bF9yZWNvdmVyeV9mbHVzaF9vbmVfc3RyaXBlKHN0 cnVjdCByNWxfbG9nICpsb2csCiAJCQkJc3luY19wYWdlX2lvKGxvZy0+cmRldiwKIAkJCQkJ ICAgICByNWxfcmluZ19hZGQobG9nLCAqbG9nX29mZnNldCwgQkxPQ0tfU0VDVE9SUyksCiAJ CQkJCSAgICAgUEFHRV9TSVpFLCBzaC0+ZGV2W2Rpc2tfaW5kZXhdLnBhZ2UsCi0JCQkJCSAg ICAgUkVBRCwgZmFsc2UpOworCQkJCQkgICAgIFJFUV9PUF9SRUFELCAwLCBmYWxzZSk7CiAJ CQkJc2gtPmRldltkaXNrX2luZGV4XS5sb2dfY2hlY2tzdW0gPQogCQkJCQlsZTMyX3RvX2Nw dShwYXlsb2FkLT5jaGVja3N1bVsxXSk7CiAJCQkJc2V0X2JpdChSNV9XYW50d3JpdGUsCkBA IC05MzIsMTEgKzkzNiwxMyBAQCBzdGF0aWMgaW50IHI1bF9yZWNvdmVyeV9mbHVzaF9vbmVf c3RyaXBlKHN0cnVjdCByNWxfbG9nICpsb2csCiAJCXJkZXYgPSByY3VfZGVyZWZlcmVuY2Uo Y29uZi0+ZGlza3NbZGlza19pbmRleF0ucmRldik7CiAJCWlmIChyZGV2KQogCQkJc3luY19w YWdlX2lvKHJkZXYsIHN0cmlwZV9zZWN0LCBQQUdFX1NJWkUsCi0JCQkJICAgICBzaC0+ZGV2 W2Rpc2tfaW5kZXhdLnBhZ2UsIFdSSVRFLCBmYWxzZSk7CisJCQkJICAgICBzaC0+ZGV2W2Rp c2tfaW5kZXhdLnBhZ2UsIFJFUV9PUF9XUklURSwgMCwKKwkJCQkgICAgIGZhbHNlKTsKIAkJ cnJkZXYgPSByY3VfZGVyZWZlcmVuY2UoY29uZi0+ZGlza3NbZGlza19pbmRleF0ucmVwbGFj ZW1lbnQpOwogCQlpZiAocnJkZXYpCiAJCQlzeW5jX3BhZ2VfaW8ocnJkZXYsIHN0cmlwZV9z ZWN0LCBQQUdFX1NJWkUsCi0JCQkJICAgICBzaC0+ZGV2W2Rpc2tfaW5kZXhdLnBhZ2UsIFdS SVRFLCBmYWxzZSk7CisJCQkJICAgICBzaC0+ZGV2W2Rpc2tfaW5kZXhdLnBhZ2UsIFJFUV9P UF9XUklURSwgMCwKKwkJCQkgICAgIGZhbHNlKTsKIAl9CiAJcmFpZDVfcmVsZWFzZV9zdHJp cGUoc2gpOwogCXJldHVybiAwOwpAQCAtMTAwOCw3ICsxMDE0LDggQEAgc3RhdGljIGludCBy NWxfbG9nX3dyaXRlX2VtcHR5X21ldGFfYmxvY2soc3RydWN0IHI1bF9sb2cgKmxvZywgc2Vj dG9yX3QgcG9zLAogCWNyYyA9IGNyYzMyY19sZShsb2ctPnV1aWRfY2hlY2tzdW0sIG1iLCBQ QUdFX1NJWkUpOwogCW1iLT5jaGVja3N1bSA9IGNwdV90b19sZTMyKGNyYyk7CiAKLQlpZiAo IXN5bmNfcGFnZV9pbyhsb2ctPnJkZXYsIHBvcywgUEFHRV9TSVpFLCBwYWdlLCBXUklURV9G VUEsIGZhbHNlKSkgeworCWlmICghc3luY19wYWdlX2lvKGxvZy0+cmRldiwgcG9zLCBQQUdF X1NJWkUsIHBhZ2UsIFJFUV9PUF9XUklURSwKKwkJCSAgV1JJVEVfRlVBLCBmYWxzZSkpIHsK IAkJX19mcmVlX3BhZ2UocGFnZSk7CiAJCXJldHVybiAtRUlPOwogCX0KQEAgLTEwODMsNyAr MTA5MCw3IEBAIHN0YXRpYyBpbnQgcjVsX2xvYWRfbG9nKHN0cnVjdCByNWxfbG9nICpsb2cp CiAJaWYgKCFwYWdlKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWlmICghc3luY19wYWdlX2lv KHJkZXYsIGNwLCBQQUdFX1NJWkUsIHBhZ2UsIFJFQUQsIGZhbHNlKSkgeworCWlmICghc3lu Y19wYWdlX2lvKHJkZXYsIGNwLCBQQUdFX1NJWkUsIHBhZ2UsIFJFUV9PUF9SRUFELCAwLCBm YWxzZSkpIHsKIAkJcmV0ID0gLUVJTzsKIAkJZ290byBpb2VycjsKIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL3JhaWQ1LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMKaW5kZXggNzA0ZWY3 Zi4uYmYwZTAxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkNS5jCisrKyBiL2RyaXZl cnMvbWQvcmFpZDUuYwpAQCAtODE3LDcgKzgxNyw4IEBAIHN0YXRpYyB2b2lkIHN0cmlwZV9h ZGRfdG9fYmF0Y2hfbGlzdChzdHJ1Y3QgcjVjb25mICpjb25mLCBzdHJ1Y3Qgc3RyaXBlX2hl YWQgKnNoCiAJZGRfaWR4ID0gMDsKIAl3aGlsZSAoZGRfaWR4ID09IHNoLT5wZF9pZHggfHwg ZGRfaWR4ID09IHNoLT5xZF9pZHgpCiAJCWRkX2lkeCsrOwotCWlmIChoZWFkLT5kZXZbZGRf aWR4XS50b3dyaXRlLT5iaV9ydyAhPSBzaC0+ZGV2W2RkX2lkeF0udG93cml0ZS0+Ymlfcncp CisJaWYgKGhlYWQtPmRldltkZF9pZHhdLnRvd3JpdGUtPmJpX3J3ICE9IHNoLT5kZXZbZGRf aWR4XS50b3dyaXRlLT5iaV9ydyB8fAorCSAgICBoZWFkLT5kZXZbZGRfaWR4XS50b3dyaXRl LT5iaV9vcCAhPSBzaC0+ZGV2W2RkX2lkeF0udG93cml0ZS0+Ymlfb3ApCiAJCWdvdG8gdW5s b2NrX291dDsKIAogCWlmIChoZWFkLT5iYXRjaF9oZWFkKSB7CkBAIC05MDIsMjkgKzkwMywz MiBAQCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0 cnVjdCBzdHJpcGVfaGVhZF9zdGF0ZSAqcykKIAlpZiAocjVsX3dyaXRlX3N0cmlwZShjb25m LT5sb2csIHNoKSA9PSAwKQogCQlyZXR1cm47CiAJZm9yIChpID0gZGlza3M7IGktLTsgKSB7 Ci0JCWludCBydzsKKwkJaW50IG9wOworCQlpbnQgb3BfZmxhZ3MgPSAwOwogCQlpbnQgcmVw bGFjZV9vbmx5ID0gMDsKIAkJc3RydWN0IGJpbyAqYmksICpyYmk7CiAJCXN0cnVjdCBtZF9y ZGV2ICpyZGV2LCAqcnJkZXYgPSBOVUxMOwogCiAJCXNoID0gaGVhZF9zaDsKIAkJaWYgKHRl c3RfYW5kX2NsZWFyX2JpdChSNV9XYW50d3JpdGUsICZzaC0+ZGV2W2ldLmZsYWdzKSkgewot CQkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChSNV9XYW50RlVBLCAmc2gtPmRldltpXS5mbGFn cykpCi0JCQkJcncgPSBXUklURV9GVUE7Ci0JCQllbHNlCi0JCQkJcncgPSBXUklURTsKKwkJ CWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVfV2FudEZVQSwgJnNoLT5kZXZbaV0uZmxhZ3Mp KSB7CisJCQkJb3AgPSBSRVFfT1BfV1JJVEU7CisJCQkJb3BfZmxhZ3MgPSBXUklURV9GVUE7 CisJCQl9IGVsc2UgeworCQkJCW9wID0gUkVRX09QX1dSSVRFOworCQkJfQogCQkJaWYgKHRl c3RfYml0KFI1X0Rpc2NhcmQsICZzaC0+ZGV2W2ldLmZsYWdzKSkKLQkJCQlydyB8PSBSRVFf RElTQ0FSRDsKKwkJCQlvcCA9IFJFUV9PUF9ESVNDQVJEOwogCQl9IGVsc2UgaWYgKHRlc3Rf YW5kX2NsZWFyX2JpdChSNV9XYW50cmVhZCwgJnNoLT5kZXZbaV0uZmxhZ3MpKQotCQkJcncg PSBSRUFEOworCQkJb3AgPSBSRVFfT1BfUkVBRDsKIAkJZWxzZSBpZiAodGVzdF9hbmRfY2xl YXJfYml0KFI1X1dhbnRSZXBsYWNlLAogCQkJCQkgICAgJnNoLT5kZXZbaV0uZmxhZ3MpKSB7 Ci0JCQlydyA9IFdSSVRFOworCQkJb3AgPSBSRVFfT1BfV1JJVEU7CiAJCQlyZXBsYWNlX29u bHkgPSAxOwogCQl9IGVsc2UKIAkJCWNvbnRpbnVlOwogCQlpZiAodGVzdF9hbmRfY2xlYXJf Yml0KFI1X1N5bmNJTywgJnNoLT5kZXZbaV0uZmxhZ3MpKQotCQkJcncgfD0gUkVRX1NZTkM7 CisJCQlvcF9mbGFncyB8PSBSRVFfU1lOQzsKIAogYWdhaW46CiAJCWJpID0gJnNoLT5kZXZb aV0ucmVxOwpAQCAtOTM4LDcgKzk0Miw3IEBAIGFnYWluOgogCQkJcmRldiA9IHJyZGV2Owog CQkJcnJkZXYgPSBOVUxMOwogCQl9Ci0JCWlmIChydyAmIFdSSVRFKSB7CisJCWlmIChvcF9p c193cml0ZShvcCkpIHsKIAkJCWlmIChyZXBsYWNlX29ubHkpCiAJCQkJcmRldiA9IE5VTEw7 CiAJCQlpZiAocmRldiA9PSBycmRldikKQEAgLTk2NCw3ICs5NjgsNyBAQCBhZ2FpbjoKIAkJ ICogbmVlZCB0byBjaGVjayBmb3Igd3JpdGVzLiAgV2UgbmV2ZXIgYWNjZXB0IHdyaXRlIGVy cm9ycwogCQkgKiBvbiB0aGUgcmVwbGFjZW1lbnQsIHNvIHdlIGRvbid0IHRvIGNoZWNrIHJy ZGV2LgogCQkgKi8KLQkJd2hpbGUgKChydyAmIFdSSVRFKSAmJiByZGV2ICYmCisJCXdoaWxl IChvcF9pc193cml0ZShvcCkgJiYgcmRldiAmJgogCQkgICAgICAgdGVzdF9iaXQoV3JpdGVF cnJvclNlZW4sICZyZGV2LT5mbGFncykpIHsKIAkJCXNlY3Rvcl90IGZpcnN0X2JhZDsKIAkJ CWludCBiYWRfc2VjdG9yczsKQEAgLTEwMDYsOCArMTAxMCw5IEBAIGFnYWluOgogCiAJCQli aW9fcmVzZXQoYmkpOwogCQkJYmktPmJpX2JkZXYgPSByZGV2LT5iZGV2OwotCQkJYmktPmJp X3J3ID0gcnc7Ci0JCQliaS0+YmlfZW5kX2lvID0gKHJ3ICYgV1JJVEUpCisJCQliaS0+Ymlf b3AgPSBvcDsKKwkJCWJpLT5iaV9ydyA9IG9wX2ZsYWdzOworCQkJYmktPmJpX2VuZF9pbyA9 IG9wX2lzX3dyaXRlKG9wKQogCQkJCT8gcmFpZDVfZW5kX3dyaXRlX3JlcXVlc3QKIAkJCQk6 IHJhaWQ1X2VuZF9yZWFkX3JlcXVlc3Q7CiAJCQliaS0+YmlfcHJpdmF0ZSA9IHNoOwpAQCAt MTAzOCw3ICsxMDQzLDcgQEAgYWdhaW46CiAJCQkgKiBJZiB0aGlzIGlzIGRpc2NhcmQgcmVx dWVzdCwgc2V0IGJpX3ZjbnQgMC4gV2UgZG9uJ3QKIAkJCSAqIHdhbnQgdG8gY29uZnVzZSBT Q1NJIGJlY2F1c2UgU0NTSSB3aWxsIHJlcGxhY2UgcGF5bG9hZAogCQkJICovCi0JCQlpZiAo cncgJiBSRVFfRElTQ0FSRCkKKwkJCWlmIChvcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJCQli aS0+YmlfdmNudCA9IDA7CiAJCQlpZiAocnJkZXYpCiAJCQkJc2V0X2JpdChSNV9ET1VCTEVf TE9DS0VELCAmc2gtPmRldltpXS5mbGFncyk7CkBAIC0xMDU4LDggKzEwNjMsOSBAQCBhZ2Fp bjoKIAogCQkJYmlvX3Jlc2V0KHJiaSk7CiAJCQlyYmktPmJpX2JkZXYgPSBycmRldi0+YmRl djsKLQkJCXJiaS0+YmlfcncgPSBydzsKLQkJCUJVR19PTighKHJ3ICYgV1JJVEUpKTsKKwkJ CXJiaS0+Ymlfb3AgPSBvcDsKKwkJCXJiaS0+YmlfcncgPSBvcF9mbGFnczsKKwkJCUJVR19P Tighb3BfaXNfd3JpdGUob3ApKTsKIAkJCXJiaS0+YmlfZW5kX2lvID0gcmFpZDVfZW5kX3dy aXRlX3JlcXVlc3Q7CiAJCQlyYmktPmJpX3ByaXZhdGUgPSBzaDsKIApAQCAtMTA4Nyw3ICsx MDkzLDcgQEAgYWdhaW46CiAJCQkgKiBJZiB0aGlzIGlzIGRpc2NhcmQgcmVxdWVzdCwgc2V0 IGJpX3ZjbnQgMC4gV2UgZG9uJ3QKIAkJCSAqIHdhbnQgdG8gY29uZnVzZSBTQ1NJIGJlY2F1 c2UgU0NTSSB3aWxsIHJlcGxhY2UgcGF5bG9hZAogCQkJICovCi0JCQlpZiAocncgJiBSRVFf RElTQ0FSRCkKKwkJCWlmIChvcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJCQlyYmktPmJpX3Zj bnQgPSAwOwogCQkJaWYgKGNvbmYtPm1kZGV2LT5nZW5kaXNrKQogCQkJCXRyYWNlX2Jsb2Nr X2Jpb19yZW1hcChiZGV2X2dldF9xdWV1ZShyYmktPmJpX2JkZXYpLApAQCAtMTA5Niw3ICsx MTAyLDcgQEAgYWdhaW46CiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyYmkpOwogCQl9CiAJ CWlmICghcmRldiAmJiAhcnJkZXYpIHsKLQkJCWlmIChydyAmIFdSSVRFKQorCQkJaWYgKG9w X2lzX3dyaXRlKG9wKSkKIAkJCQlzZXRfYml0KFNUUklQRV9ERUdSQURFRCwgJnNoLT5zdGF0 ZSk7CiAJCQlwcl9kZWJ1Zygic2tpcCBvcCAlbGQgb24gZGlzYyAlZCBmb3Igc2VjdG9yICVs bHVcbiIsCiAJCQkJYmktPmJpX3J3LCBpLCAodW5zaWduZWQgbG9uZyBsb25nKXNoLT5zZWN0 b3IpOwpAQCAtMTYzNCw3ICsxNjQwLDcgQEAgYWdhaW46CiAJCQkJCXNldF9iaXQoUjVfV2Fu dEZVQSwgJmRldi0+ZmxhZ3MpOwogCQkJCWlmICh3YmktPmJpX3J3ICYgUkVRX1NZTkMpCiAJ CQkJCXNldF9iaXQoUjVfU3luY0lPLCAmZGV2LT5mbGFncyk7Ci0JCQkJaWYgKHdiaS0+Ymlf cncgJiBSRVFfRElTQ0FSRCkKKwkJCQlpZiAod2JpLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FS RCkKIAkJCQkJc2V0X2JpdChSNV9EaXNjYXJkLCAmZGV2LT5mbGFncyk7CiAJCQkJZWxzZSB7 CiAJCQkJCXR4ID0gYXN5bmNfY29weV9kYXRhKDEsIHdiaSwgJmRldi0+cGFnZSwKQEAgLTUx NzUsNyArNTE4MSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpCiAJCQlyZXR1cm47CiAJfQogCi0JaWYgKHVubGlr ZWx5KGJpLT5iaV9ydyAmIFJFUV9ESVNDQVJEKSkgeworCWlmICh1bmxpa2VseShiaS0+Ymlf b3AgPT0gUkVRX09QX0RJU0NBUkQpKSB7CiAJCW1ha2VfZGlzY2FyZF9yZXF1ZXN0KG1kZGV2 LCBiaSk7CiAJCXJldHVybjsKIAl9Ci0tIAoxLjguMy4xCgoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAcmVxLW9wLzAwMjIteGVuLXNldC1iaV9vcC10by1SRVFfT1AucGF0Y2gAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDA2NjQAMDAwMTc1MQAwMDAxNzUxADAwMDAwMDEwNTIyADEyNjMyMTU0MjMwADAxNjExNQAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIDMyOTZiZDRkNzFkYWFkN2Ey ODM0NjBiZDExNTMyY2E0ODJlMGM0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+CkRhdGU6IFdlZCwgMiBEZWMg MjAxNSAwMjo0NTowOCAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMjIvMzBdIHhlbjogc2V0IGJp X29wIHRvIFJFUV9PUAoKVGhpcyBwYXRjaCBoYXMgeGVuIHNldCB0aGUgYmlvIGJpX29wIHRv IGEgUkVRX09QLCBhbmQgcnFfZmxhZ19iaXRzCnRvIGJpX3J3LgoKU2lnbmVkLW9mZi1ieTog TWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2Jsb2Nr L3hlbi1ibGtiYWNrL2Jsa2JhY2suYyB8IDI5ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMgYi9k cml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYwppbmRleCBkYThkYjM3Li5mOTkz ZDkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYwor KysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYwpAQCAtNDg4LDcgKzQ4 OCw3IEBAIHN0YXRpYyBpbnQgeGVuX3ZiZF90cmFuc2xhdGUoc3RydWN0IHBoeXNfcmVxICpy ZXEsIHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAogCXN0cnVjdCB4ZW5fdmJkICp2YmQgPSAm YmxraWYtPnZiZDsKIAlpbnQgcmMgPSAtRUFDQ0VTOwogCi0JaWYgKChvcGVyYXRpb24gIT0g UkVBRCkgJiYgdmJkLT5yZWFkb25seSkKKwlpZiAoKG9wZXJhdGlvbiAhPSBSRVFfT1BfUkVB RCkgJiYgdmJkLT5yZWFkb25seSkKIAkJZ290byBvdXQ7CiAKIAlpZiAobGlrZWx5KHJlcS0+ bnJfc2VjdHMpKSB7CkBAIC05OTAsNyArOTkwLDcgQEAgc3RhdGljIGludCBkaXNwYXRjaF9k aXNjYXJkX2lvKHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAogCXByZXEuc2VjdG9yX251bWJl ciA9IHJlcS0+dS5kaXNjYXJkLnNlY3Rvcl9udW1iZXI7CiAJcHJlcS5ucl9zZWN0cyAgICAg ID0gcmVxLT51LmRpc2NhcmQubnJfc2VjdG9yczsKIAotCWVyciA9IHhlbl92YmRfdHJhbnNs YXRlKCZwcmVxLCBibGtpZiwgV1JJVEUpOworCWVyciA9IHhlbl92YmRfdHJhbnNsYXRlKCZw cmVxLCBibGtpZiwgUkVRX09QX1dSSVRFKTsKIAlpZiAoZXJyKSB7CiAJCXByX3dhcm4oImFj Y2VzcyBkZW5pZWQ6IERJU0NBUkQgWyVsbHUtPiVsbHVdIG9uIGRldj0lMDR4XG4iLAogCQkJ cHJlcS5zZWN0b3JfbnVtYmVyLApAQCAtMTIwMyw2ICsxMjAzLDcgQEAgc3RhdGljIGludCBk aXNwYXRjaF9yd19ibG9ja19pbyhzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwKIAlzdHJ1Y3Qg YmlvICoqYmlvbGlzdCA9IHBlbmRpbmdfcmVxLT5iaW9saXN0OwogCWludCBpLCBuYmlvID0g MDsKIAlpbnQgb3BlcmF0aW9uOworCWludCBvcGVyYXRpb25fZmxhZ3MgPSAwOwogCXN0cnVj dCBibGtfcGx1ZyBwbHVnOwogCWJvb2wgZHJhaW4gPSBmYWxzZTsKIAlzdHJ1Y3QgZ3JhbnRf cGFnZSAqKnBhZ2VzID0gcGVuZGluZ19yZXEtPnNlZ21lbnRzOwpAQCAtMTIyMSwxNyArMTIy MiwxOSBAQCBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Jsb2NrX2lvKHN0cnVjdCB4ZW5fYmxr aWYgKmJsa2lmLAogCXN3aXRjaCAocmVxX29wZXJhdGlvbikgewogCWNhc2UgQkxLSUZfT1Bf UkVBRDoKIAkJYmxraWYtPnN0X3JkX3JlcSsrOwotCQlvcGVyYXRpb24gPSBSRUFEOworCQlv cGVyYXRpb24gPSBSRVFfT1BfUkVBRDsKIAkJYnJlYWs7CiAJY2FzZSBCTEtJRl9PUF9XUklU RToKIAkJYmxraWYtPnN0X3dyX3JlcSsrOwotCQlvcGVyYXRpb24gPSBXUklURV9PRElSRUNU OworCQlvcGVyYXRpb24gPSBSRVFfT1BfV1JJVEU7CisJCW9wZXJhdGlvbl9mbGFncyA9IFdS SVRFX09ESVJFQ1Q7CiAJCWJyZWFrOwogCWNhc2UgQkxLSUZfT1BfV1JJVEVfQkFSUklFUjoK IAkJZHJhaW4gPSB0cnVlOwogCWNhc2UgQkxLSUZfT1BfRkxVU0hfRElTS0NBQ0hFOgogCQli bGtpZi0+c3RfZl9yZXErKzsKLQkJb3BlcmF0aW9uID0gV1JJVEVfRkxVU0g7CisJCW9wZXJh dGlvbiA9IFJFUV9PUF9XUklURTsKKwkJb3BlcmF0aW9uX2ZsYWdzID0gV1JJVEVfRkxVU0g7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCW9wZXJhdGlvbiA9IDA7IC8qIG1ha2UgZ2NjIGhh cHB5ICovCkBAIC0xMjQzLDcgKzEyNDYsNyBAQCBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Js b2NrX2lvKHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAogCW5zZWcgPSByZXEtPm9wZXJhdGlv biA9PSBCTEtJRl9PUF9JTkRJUkVDVCA/CiAJICAgICAgIHJlcS0+dS5pbmRpcmVjdC5ucl9z ZWdtZW50cyA6IHJlcS0+dS5ydy5ucl9zZWdtZW50czsKIAotCWlmICh1bmxpa2VseShuc2Vn ID09IDAgJiYgb3BlcmF0aW9uICE9IFdSSVRFX0ZMVVNIKSB8fAorCWlmICh1bmxpa2VseShu c2VnID09IDAgJiYgb3BlcmF0aW9uX2ZsYWdzICE9IFdSSVRFX0ZMVVNIKSB8fAogCSAgICB1 bmxpa2VseSgocmVxLT5vcGVyYXRpb24gIT0gQkxLSUZfT1BfSU5ESVJFQ1QpICYmCiAJCSAg ICAgKG5zZWcgPiBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpKSB8fAogCSAgICB1 bmxpa2VseSgocmVxLT5vcGVyYXRpb24gPT0gQkxLSUZfT1BfSU5ESVJFQ1QpICYmCkBAIC0x Mjg0LDcgKzEyODcsNyBAQCBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Jsb2NrX2lvKHN0cnVj dCB4ZW5fYmxraWYgKmJsa2lmLAogCiAJaWYgKHhlbl92YmRfdHJhbnNsYXRlKCZwcmVxLCBi bGtpZiwgb3BlcmF0aW9uKSAhPSAwKSB7CiAJCXByX2RlYnVnKCJhY2Nlc3MgZGVuaWVkOiAl cyBvZiBbJWxsdSwlbGx1XSBvbiBkZXY9JTA0eFxuIiwKLQkJCSBvcGVyYXRpb24gPT0gUkVB RCA/ICJyZWFkIiA6ICJ3cml0ZSIsCisJCQkgb3BlcmF0aW9uID09IFJFUV9PUF9SRUFEID8g InJlYWQiIDogIndyaXRlIiwKIAkJCSBwcmVxLnNlY3Rvcl9udW1iZXIsCiAJCQkgcHJlcS5z ZWN0b3JfbnVtYmVyICsgcHJlcS5ucl9zZWN0cywKIAkJCSBibGtpZi0+dmJkLnBkZXZpY2Up OwpAQCAtMTM0Myw3ICsxMzQ2LDggQEAgc3RhdGljIGludCBkaXNwYXRjaF9yd19ibG9ja19p byhzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHBlbmRp bmdfcmVxOwogCQkJYmlvLT5iaV9lbmRfaW8gID0gZW5kX2Jsb2NrX2lvX29wOwogCQkJYmlv LT5iaV9pdGVyLmJpX3NlY3RvciAgPSBwcmVxLnNlY3Rvcl9udW1iZXI7Ci0JCQliaW8tPmJp X3J3CXw9IG9wZXJhdGlvbjsKKwkJCWJpby0+Ymlfb3AJPSBvcGVyYXRpb247CisJCQliaW8t PmJpX3J3CXw9IG9wZXJhdGlvbl9mbGFnczsKIAkJfQogCiAJCXByZXEuc2VjdG9yX251bWJl ciArPSBzZWdbaV0ubnNlYzsKQEAgLTEzNTEsNyArMTM1NSw3IEBAIHN0YXRpYyBpbnQgZGlz cGF0Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCiAKIAkvKiBUaGlz IHdpbGwgYmUgaGl0IGlmIHRoZSBvcGVyYXRpb24gd2FzIGEgZmx1c2ggb3IgZGlzY2FyZC4g Ki8KIAlpZiAoIWJpbykgewotCQlCVUdfT04ob3BlcmF0aW9uICE9IFdSSVRFX0ZMVVNIKTsK KwkJQlVHX09OKG9wZXJhdGlvbl9mbGFncyAhPSBXUklURV9GTFVTSCk7CiAKIAkJYmlvID0g YmlvX2FsbG9jKEdGUF9LRVJORUwsIDApOwogCQlpZiAodW5saWtlbHkoYmlvID09IE5VTEwp KQpAQCAtMTM2MSw3ICsxMzY1LDggQEAgc3RhdGljIGludCBkaXNwYXRjaF9yd19ibG9ja19p byhzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwKIAkJYmlvLT5iaV9iZGV2ICAgID0gcHJlcS5i ZGV2OwogCQliaW8tPmJpX3ByaXZhdGUgPSBwZW5kaW5nX3JlcTsKIAkJYmlvLT5iaV9lbmRf aW8gID0gZW5kX2Jsb2NrX2lvX29wOwotCQliaW8tPmJpX3J3CXw9IG9wZXJhdGlvbjsKKwkJ YmlvLT5iaV9vcAk9IG9wZXJhdGlvbjsKKwkJYmlvLT5iaV9ydwl8PSBvcGVyYXRpb25fZmxh Z3M7CiAJfQogCiAJYXRvbWljX3NldCgmcGVuZGluZ19yZXEtPnBlbmRjbnQsIG5iaW8pOwpA QCAtMTM3Myw5ICsxMzc4LDkgQEAgc3RhdGljIGludCBkaXNwYXRjaF9yd19ibG9ja19pbyhz dHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwKIAkvKiBMZXQgdGhlIEkvT3MgZ28uLiAqLwogCWJs a19maW5pc2hfcGx1ZygmcGx1Zyk7CiAKLQlpZiAob3BlcmF0aW9uID09IFJFQUQpCisJaWYg KG9wZXJhdGlvbiA9PSBSRVFfT1BfUkVBRCkKIAkJYmxraWYtPnN0X3JkX3NlY3QgKz0gcHJl cS5ucl9zZWN0czsKLQllbHNlIGlmIChvcGVyYXRpb24gJiBXUklURSkKKwllbHNlIGlmIChv cGVyYXRpb24gPT0gUkVRX09QX1dSSVRFKQogCQlibGtpZi0+c3Rfd3Jfc2VjdCArPSBwcmVx Lm5yX3NlY3RzOwogCiAJcmV0dXJuIDA7Ci0tIAoxLjguMy4xCgoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEt b3AvMDAyMy10YXJnZXQtc2V0LWJpX29wLXRvLVJFUV9PUC5wYXRjaAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAx NzUxADAwMDE3NTEAMDAwMDAwMDc1MTMAMTI2MzIxNTQyMzAAMDE2NjIwACAwAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gMjY0NDQxOTRmNzUxNTU3ODhlYTU2YTg0M2E1 MjM5OWZlMTRhMmViZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJp c3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogTW9uLCA3IERlYyAyMDE1IDE0OjI4 OjU2IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAyMy8zMF0gdGFyZ2V0OiBzZXQgYmlfb3AgdG8g UkVRX09QCgpUaGlzIHBhdGNoIGhhcyB0aGUgdGFyZ2V0IG1vZHVsZXMgc2V0IHRoZSBiaW8g Ymlfb3AgdG8gYSBSRVFfT1AsIGFuZApycV9mbGFnX2JpdHMgdG8gYmlfcncuCgpTaWduZWQt b2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGRyaXZl cnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9jay5jIHwgMzggKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHNjc2ku YyAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAxNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxv Y2suYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9jay5jCmluZGV4IGEzYjFj MjcuLjc1OGQxMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2li bG9jay5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9jay5jCkBAIC0z MjgsNyArMzI4LDggQEAgc3RhdGljIHZvaWQgaWJsb2NrX2Jpb19kb25lKHN0cnVjdCBiaW8g KmJpbykKIH0KIAogc3RhdGljIHN0cnVjdCBiaW8gKgotaWJsb2NrX2dldF9iaW8oc3RydWN0 IHNlX2NtZCAqY21kLCBzZWN0b3JfdCBsYmEsIHUzMiBzZ19udW0sIGludCBydykKK2libG9j a19nZXRfYmlvKHN0cnVjdCBzZV9jbWQgKmNtZCwgc2VjdG9yX3QgbGJhLCB1MzIgc2dfbnVt LCBpbnQgb3AsCisJICAgICAgIGludCBvcF9mbGFncykKIHsKIAlzdHJ1Y3QgaWJsb2NrX2Rl diAqaWJfZGV2ID0gSUJMT0NLX0RFVihjbWQtPnNlX2Rldik7CiAJc3RydWN0IGJpbyAqYmlv OwpAQCAtMzUwLDcgKzM1MSw4IEBAIGlibG9ja19nZXRfYmlvKHN0cnVjdCBzZV9jbWQgKmNt ZCwgc2VjdG9yX3QgbGJhLCB1MzIgc2dfbnVtLCBpbnQgcncpCiAJYmlvLT5iaV9wcml2YXRl ID0gY21kOwogCWJpby0+YmlfZW5kX2lvID0gJmlibG9ja19iaW9fZG9uZTsKIAliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gbGJhOwotCWJpby0+YmlfcncgfD0gcnc7CisJYmlvLT5iaV9v cCA9IG9wOworCWJpby0+YmlfcncgfD0gb3BfZmxhZ3M7CiAKIAlyZXR1cm4gYmlvOwogfQpA QCAtNDU2LDcgKzQ1OCw3IEBAIGlibG9ja19leGVjdXRlX3dyaXRlX3NhbWUoc3RydWN0IHNl X2NtZCAqY21kKQogCQlnb3RvIGZhaWw7CiAJY21kLT5wcml2ID0gaWJyOwogCi0JYmlvID0g aWJsb2NrX2dldF9iaW8oY21kLCBibG9ja19sYmEsIDEsIFdSSVRFKTsKKwliaW8gPSBpYmxv Y2tfZ2V0X2JpbyhjbWQsIGJsb2NrX2xiYSwgMSwgUkVRX09QX1dSSVRFLCAwKTsKIAlpZiAo IWJpbykKIAkJZ290byBmYWlsX2ZyZWVfaWJyOwogCkBAIC00NjksNyArNDcxLDggQEAgaWJs b2NrX2V4ZWN1dGVfd3JpdGVfc2FtZShzdHJ1Y3Qgc2VfY21kICpjbWQpCiAJCXdoaWxlIChi aW9fYWRkX3BhZ2UoYmlvLCBzZ19wYWdlKHNnKSwgc2ctPmxlbmd0aCwgc2ctPm9mZnNldCkK IAkJCQkhPSBzZy0+bGVuZ3RoKSB7CiAKLQkJCWJpbyA9IGlibG9ja19nZXRfYmlvKGNtZCwg YmxvY2tfbGJhLCAxLCBXUklURSk7CisJCQliaW8gPSBpYmxvY2tfZ2V0X2JpbyhjbWQsIGJs b2NrX2xiYSwgMSwgUkVRX09QX1dSSVRFLAorCQkJCQkgICAgIDApOwogCQkJaWYgKCFiaW8p CiAJCQkJZ290byBmYWlsX3B1dF9iaW9zOwogCkBAIC02NTUsNyArNjU4LDggQEAgaWJsb2Nr X2V4ZWN1dGVfcncoc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn bCwgdTMyIHNnbF9uZW50cywKIAl1MzIgc2dfbnVtID0gc2dsX25lbnRzOwogCXNlY3Rvcl90 IGJsb2NrX2xiYTsKIAl1bnNpZ25lZCBiaW9fY250OwotCWludCBydyA9IDA7CisJaW50IG9w X2ZsYWdzID0gMDsKKwlpbnQgb3AgPSAwOwogCWludCBpOwogCiAJaWYgKGRhdGFfZGlyZWN0 aW9uID09IERNQV9UT19ERVZJQ0UpIHsKQEAgLTY2NiwxNyArNjcwLDIwIEBAIGlibG9ja19l eGVjdXRlX3J3KHN0cnVjdCBzZV9jbWQgKmNtZCwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2ws IHUzMiBzZ2xfbmVudHMsCiAJCSAqIGlzIG5vdCBlbmFibGVkLCBvciBpZiBpbml0aWF0b3Ig c2V0IHRoZSBGb3JjZSBVbml0IEFjY2VzcyBiaXQuCiAJCSAqLwogCQlpZiAocS0+Zmx1c2hf ZmxhZ3MgJiBSRVFfRlVBKSB7Ci0JCQlpZiAoY21kLT5zZV9jbWRfZmxhZ3MgJiBTQ0ZfRlVB KQotCQkJCXJ3ID0gV1JJVEVfRlVBOwotCQkJZWxzZSBpZiAoIShxLT5mbHVzaF9mbGFncyAm IFJFUV9GTFVTSCkpCi0JCQkJcncgPSBXUklURV9GVUE7Ci0JCQllbHNlCi0JCQkJcncgPSBX UklURTsKKwkJCWlmIChjbWQtPnNlX2NtZF9mbGFncyAmIFNDRl9GVUEpIHsKKwkJCQlvcCA9 IFJFUV9PUF9XUklURTsKKwkJCQlvcF9mbGFncyA9IFdSSVRFX0ZVQTsKKwkJCX0gZWxzZSBp ZiAoIShxLT5mbHVzaF9mbGFncyAmIFJFUV9GTFVTSCkpIHsKKwkJCQlvcCA9IFJFUV9PUF9X UklURTsKKwkJCQlvcF9mbGFncyA9IFdSSVRFX0ZVQTsKKwkJCX0gZWxzZSB7CisJCQkJb3Ag PSBSRVFfT1BfV1JJVEU7CisJCQl9CiAJCX0gZWxzZSB7Ci0JCQlydyA9IFdSSVRFOworCQkJ b3AgPSBSRVFfT1BfV1JJVEU7CiAJCX0KIAl9IGVsc2UgewotCQlydyA9IFJFQUQ7CisJCW9w ID0gUkVRX09QX1JFQUQ7CiAJfQogCiAJLyoKQEAgLTcwOCw3ICs3MTUsNyBAQCBpYmxvY2tf ZXhlY3V0ZV9ydyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2ds LCB1MzIgc2dsX25lbnRzLAogCQlyZXR1cm4gMDsKIAl9CiAKLQliaW8gPSBpYmxvY2tfZ2V0 X2JpbyhjbWQsIGJsb2NrX2xiYSwgc2dsX25lbnRzLCBydyk7CisJYmlvID0gaWJsb2NrX2dl dF9iaW8oY21kLCBibG9ja19sYmEsIHNnbF9uZW50cywgb3AsIG9wX2ZsYWdzKTsKIAlpZiAo IWJpbykKIAkJZ290byBmYWlsX2ZyZWVfaWJyOwogCkBAIC03MzIsNyArNzM5LDggQEAgaWJs b2NrX2V4ZWN1dGVfcncoc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnbCwgdTMyIHNnbF9uZW50cywKIAkJCQliaW9fY250ID0gMDsKIAkJCX0KIAotCQkJYmlv ID0gaWJsb2NrX2dldF9iaW8oY21kLCBibG9ja19sYmEsIHNnX251bSwgcncpOworCQkJYmlv ID0gaWJsb2NrX2dldF9iaW8oY21kLCBibG9ja19sYmEsIHNnX251bSwgb3AsCisJCQkJCSAg ICAgb3BfZmxhZ3MpOwogCQkJaWYgKCFiaW8pCiAJCQkJZ290byBmYWlsX3B1dF9iaW9zOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wc2NzaS5jIGIvZHJp dmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHNjc2kuYwppbmRleCBkZTE4NzkwLi4yY2Y5MTVj IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wc2NzaS5jCisrKyBi L2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3BzY3NpLmMKQEAgLTkyMiw3ICs5MjIsNyBA QCBwc2NzaV9tYXBfc2coc3RydWN0IHNlX2NtZCAqY21kLCBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnbCwgdTMyIHNnbF9uZW50cywKIAkJCQkJZ290byBmYWlsOwogCiAJCQkJaWYgKHJ3KQot CQkJCQliaW8tPmJpX3J3IHw9IFJFUV9XUklURTsKKwkJCQkJYmlvLT5iaV9vcCA9IFJFUV9P UF9XUklURTsKIAogCQkJCXByX2RlYnVnKCJQU0NTSTogQWxsb2NhdGVkIGJpbzogJXAsIgog CQkJCQkiIGRpcjogJXMgbnJfdmVjczogJWRcbiIsIGJpbywKLS0gCjEuOC4zLjEKCgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAByZXEtb3AvMDAyNS1kcml2ZXJzLXNldC1yZXF1ZXN0LW9wLXRwLVJF UV9PUC5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAwMzAxMDUAMTI2MzIxNTQyMzAA MDIwMDIwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gNjRjZDZiNjcz YWI0Njg1MDY4YjI3YjdjMmQ0MzlhNzY2MmQzN2YzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogV2Vk LCA5IERlYyAyMDE1IDAxOjMxOjUzIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAyNS8zMF0gZHJp dmVyczogc2V0IHJlcXVlc3Qgb3AgdHAgUkVRX09QCgpUaGlzIHBhdGNoIGhhcyB0aGUgYmxv Y2sgZHJpdmVyIHVzZSB0aGUgcmVxdWVzdC0+b3AgZm9yIFJFUV9PUApvcGVyYXRpb25zIGFu ZCBjbWRfZmxhZ3MgZm9yIHJxX2ZsYWdfYml0cy4KClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hy aXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ibG9jay9sb29wLmMg ICAgICAgICAgICAgIHwgIDYgKysrLS0tCiBkcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAz Mnh4LmMgfCAgMiArLQogZHJpdmVycy9ibG9jay9uYmQuYyAgICAgICAgICAgICAgIHwgIDIg Ky0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L2Jsb2NrL3NrZF9tYWluLmMgICAgICAgICAgfCAxMSArKysrLS0tLS0tLQogZHJpdmVycy9i bG9jay94ZW4tYmxrZnJvbnQuYyAgICAgIHwgIDggKysrKystLS0KIGRyaXZlcnMvbWQvZG0u YyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMg ICAgICAgICAgfCAgNyArKystLS0tCiBkcml2ZXJzL21tYy9jYXJkL3F1ZXVlLmMgICAgICAg ICAgfCAgNiArKy0tLS0KIGRyaXZlcnMvbW1jL2NhcmQvcXVldWUuaCAgICAgICAgICB8ICA1 ICsrKystCiBkcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jICAgICAgICAgfCAgMiArLQogZHJp dmVycy9udm1lL2hvc3QvcGNpLmMgICAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9zY3Np L3NkLmMgICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLQog MTMgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3Au YwppbmRleCA4M2ZjMTI3Li5lNjU5ZWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xv b3AuYworKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0 YXRpYyBpbnQgZG9fcmVxX2ZpbGViYWNrZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3Ry dWN0IHJlcXVlc3QgKnJxKQogCWlmIChycV9kYXRhX2RpcihycSkgPT0gV1JJVEUpIHsKIAkJ aWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfRkxVU0gpCiAJCQlyZXQgPSBsb19yZXFfZmx1c2go bG8sIHJxKTsKLQkJZWxzZSBpZiAocnEtPmNtZF9mbGFncyAmIFJFUV9ESVNDQVJEKQorCQll bHNlIGlmIChycS0+b3AgPT0gUkVRX09QX0RJU0NBUkQpCiAJCQlyZXQgPSBsb19kaXNjYXJk KGxvLCBycSwgcG9zKTsKIAkJZWxzZSBpZiAobG8tPnRyYW5zZmVyKQogCQkJcmV0ID0gbG9f d3JpdGVfdHJhbnNmZXIobG8sIHJxLCBwb3MpOwpAQCAtMTY1Myw4ICsxNjUzLDggQEAgc3Rh dGljIGludCBsb29wX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LAogCWlm IChsby0+bG9fc3RhdGUgIT0gTG9fYm91bmQpCiAJCXJldHVybiAtRUlPOwogCi0JaWYgKGxv LT51c2VfZGlvICYmICEoY21kLT5ycS0+Y21kX2ZsYWdzICYgKFJFUV9GTFVTSCB8Ci0JCQkJ CVJFUV9ESVNDQVJEKSkpCisJaWYgKGxvLT51c2VfZGlvICYmICghKGNtZC0+cnEtPmNtZF9m bGFncyAmIFJFUV9GTFVTSCkgfHwKKwkgICAgIGNtZC0+cnEtPm9wID09IFJFUV9PUF9ESVND QVJEKSkKIAkJY21kLT51c2VfYWlvID0gdHJ1ZTsKIAllbHNlCiAJCWNtZC0+dXNlX2FpbyA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5j IGIvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jCmluZGV4IDEwYmQ4ZDAuLjIx NWE2OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwor KysgYi9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKQEAgLTM2NzcsNyArMzY3 Nyw3IEBAIHN0YXRpYyBpbnQgbXRpcF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX2h3 X2N0eCAqaGN0eCwgc3RydWN0IHJlcXVlc3QgKnJxKQogCQkJcmV0dXJuIC1FTlhJTzsKIAl9 CiAKLQlpZiAocnEtPmNtZF9mbGFncyAmIFJFUV9ESVNDQVJEKSB7CisJaWYgKHJxLT5vcCA9 PSBSRVFfT1BfRElTQ0FSRCkgewogCQlpbnQgZXJyOwogCiAJCWVyciA9IG10aXBfc2VuZF90 cmltKGRkLCBibGtfcnFfcG9zKHJxKSwgYmxrX3JxX3NlY3RvcnMocnEpKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IDkz YjNmOTkuLjhlOGY3ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmMKKysrIGIv ZHJpdmVycy9ibG9jay9uYmQuYwpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBpbnQgbmJk X3NlbmRfcmVxKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCByZXF1ZXN0ICpyZXEp CiAKIAlpZiAocmVxLT5jbWRfdHlwZSA9PSBSRVFfVFlQRV9EUlZfUFJJVikKIAkJdHlwZSA9 IE5CRF9DTURfRElTQzsKLQllbHNlIGlmIChyZXEtPmNtZF9mbGFncyAmIFJFUV9ESVNDQVJE KQorCWVsc2UgaWYgKHJlcS0+b3AgPT0gUkVRX09QX0RJU0NBUkQpCiAJCXR5cGUgPSBOQkRf Q01EX1RSSU07CiAJZWxzZSBpZiAocmVxLT5jbWRfZmxhZ3MgJiBSRVFfRkxVU0gpCiAJCXR5 cGUgPSBOQkRfQ01EX0ZMVVNIOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yYmQuYyBi L2RyaXZlcnMvYmxvY2svcmJkLmMKaW5kZXggNGU0ODM4ZC4uNWFlYTk1OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBAIC0z MzczLDcgKzMzNzMsNyBAQCBzdGF0aWMgdm9pZCByYmRfcXVldWVfd29ya2ZuKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKIAkJZ290byBlcnI7CiAJfQogCi0JaWYgKHJxLT5jbWRfZmxh Z3MgJiBSRVFfRElTQ0FSRCkKKwlpZiAocnEtPm9wID09IFJFUV9PUF9ESVNDQVJEKQogCQlv cF90eXBlID0gT0JKX09QX0RJU0NBUkQ7CiAJZWxzZSBpZiAocnFfZGF0YV9kaXIocnEpID09 IFdSSVRFKQogCQlvcF90eXBlID0gT0JKX09QX1dSSVRFOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ibG9jay9za2RfbWFpbi5jIGIvZHJpdmVycy9ibG9jay9za2RfbWFpbi5jCmluZGV4IDU4 NmY5MTYuLmY4OWEwYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svc2tkX21haW4uYwor KysgYi9kcml2ZXJzL2Jsb2NrL3NrZF9tYWluLmMKQEAgLTU3Niw3ICs1NzYsNiBAQCBzdGF0 aWMgdm9pZCBza2RfcmVxdWVzdF9mbihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIAlzdHJ1 Y3QgcmVxdWVzdCAqcmVxID0gTlVMTDsKIAlzdHJ1Y3Qgc2tkX3Njc2lfcmVxdWVzdCAqc2Nz aV9yZXE7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7Ci0JdW5zaWduZWQgbG9uZyBpb19mbGFnczsK IAlpbnQgZXJyb3I7CiAJdTMyIGxiYTsKIAl1MzIgY291bnQ7CkBAIC02MjQsMTIgKzYyMywx MSBAQCBzdGF0aWMgdm9pZCBza2RfcmVxdWVzdF9mbihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSkKIAkJbGJhID0gKHUzMilibGtfcnFfcG9zKHJlcSk7CiAJCWNvdW50ID0gYmxrX3JxX3Nl Y3RvcnMocmVxKTsKIAkJZGF0YV9kaXIgPSBycV9kYXRhX2RpcihyZXEpOwotCQlpb19mbGFn cyA9IHJlcS0+Y21kX2ZsYWdzOwogCi0JCWlmIChpb19mbGFncyAmIFJFUV9GTFVTSCkKKwkJ aWYgKHJlcS0+Y21kX2ZsYWdzICYgUkVRX0ZMVVNIKQogCQkJZmx1c2grKzsKIAotCQlpZiAo aW9fZmxhZ3MgJiBSRVFfRlVBKQorCQlpZiAocmVxLT5jbWRfZmxhZ3MgJiBSRVFfRlVBKQog CQkJZnVhKys7CiAKIAkJcHJfZGVidWcoIiVzOiVzOiVkIG5ldyByZXE9JXAgbGJhPSV1KDB4 JXgpICIKQEAgLTczNSw3ICs3MzMsNyBAQCBzdGF0aWMgdm9pZCBza2RfcmVxdWVzdF9mbihz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIAkJZWxzZQogCQkJc2tyZXEtPnNnX2RhdGFfZGly ID0gU0tEX0RBVEFfRElSX0hPU1RfVE9fQ0FSRDsKIAotCQlpZiAoaW9fZmxhZ3MgJiBSRVFf RElTQ0FSRCkgeworCQlpZiAocmVxLT5vcCA9PSBSRVFfT1BfRElTQ0FSRCkgewogCQkJcGFn ZSA9IGFsbG9jX3BhZ2UoR0ZQX0FUT01JQyB8IF9fR0ZQX1pFUk8pOwogCQkJaWYgKCFwYWdl KSB7CiAJCQkJcHJfZXJyKCJyZXF1ZXN0X2ZuOlBhZ2UgYWxsb2NhdGlvbiBmYWlsZWQuXG4i KTsKQEAgLTg1Miw5ICs4NTAsOCBAQCBzdGF0aWMgdm9pZCBza2RfZW5kX3JlcXVlc3Qoc3Ry dWN0IHNrZF9kZXZpY2UgKnNrZGV2LAogCQkJICAgIHN0cnVjdCBza2RfcmVxdWVzdF9jb250 ZXh0ICpza3JlcSwgaW50IGVycm9yKQogewogCXN0cnVjdCByZXF1ZXN0ICpyZXEgPSBza3Jl cS0+cmVxOwotCXVuc2lnbmVkIGludCBpb19mbGFncyA9IHJlcS0+Y21kX2ZsYWdzOwogCi0J aWYgKChpb19mbGFncyAmIFJFUV9ESVNDQVJEKSAmJgorCWlmICgocmVxLT5vcCA9PSBSRVFf T1BfRElTQ0FSRCkgJiYKIAkJKHNrcmVxLT5kaXNjYXJkX3BhZ2UgPT0gMSkpIHsKIAkJcHJf ZGVidWcoIiVzOiVzOiVkLCBmcmVlIHRoZSBwYWdlISIsCiAJCQkgc2tkZXYtPm5hbWUsIF9f ZnVuY19fLCBfX0xJTkVfXyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtm cm9udC5jIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwppbmRleCA4MTQ0NGZjLi5k NGFhNDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCisrKyBi L2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKQEAgLTcxOCw3ICs3MTgsOCBAQCBzdGF0 aWMgaW50IGJsa2lmX3F1ZXVlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSkKIAlpZiAo dW5saWtlbHkoaW5mby0+Y29ubmVjdGVkICE9IEJMS0lGX1NUQVRFX0NPTk5FQ1RFRCkpCiAJ CXJldHVybiAxOwogCi0JaWYgKHVubGlrZWx5KHJlcS0+Y21kX2ZsYWdzICYgKFJFUV9ESVND QVJEIHwgUkVRX1NFQ1VSRSkpKQorCWlmICh1bmxpa2VseShyZXEtPm9wID09IFJFUV9PUF9E SVNDQVJEIHx8CisJCSAgICAgcmVxLT5jbWRfZmxhZ3MgJiBSRVFfU0VDVVJFKSkKIAkJcmV0 dXJuIGJsa2lmX3F1ZXVlX2Rpc2NhcmRfcmVxKHJlcSk7CiAJZWxzZQogCQlyZXR1cm4gYmxr aWZfcXVldWVfcndfcmVxKHJlcSk7CkBAIC0xNjkxLDggKzE2OTIsOSBAQCBzdGF0aWMgaW50 IGJsa2lmX3JlY292ZXIoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJCS8qCiAJCSAq IEdldCB0aGUgYmlvcyBpbiB0aGUgcmVxdWVzdCBzbyB3ZSBjYW4gcmUtcXVldWUgdGhlbS4K IAkJICovCi0JCWlmIChjb3B5W2ldLnJlcXVlc3QtPmNtZF9mbGFncyAmCi0JCSAgICAoUkVR X0ZMVVNIIHwgUkVRX0ZVQSB8IFJFUV9ESVNDQVJEIHwgUkVRX1NFQ1VSRSkpIHsKKwkJaWYg KGNvcHlbaV0ucmVxdWVzdC0+Y21kX2ZsYWdzICYgUkVRX0ZMVVNIIHx8CisJCSAgICBjb3B5 W2ldLnJlcXVlc3QtPm9wID09IFJFUV9PUF9ESVNDQVJEIHx8CisJCSAgICBjb3B5W2ldLnJl cXVlc3QtPmNtZF9mbGFncyAmIChSRVFfRlVBIHwgUkVRX1NFQ1VSRSkpIHsKIAkJCS8qCiAJ CQkgKiBGbHVzaCBvcGVyYXRpb25zIGRvbid0IGNvbnRhaW4gYmlvcywgc28KIAkJCSAqIHdl IG5lZWQgdG8gcmVxdWV1ZSB0aGUgd2hvbGUgcmVxdWVzdApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9kbS5jIGIvZHJpdmVycy9tZC9kbS5jCmluZGV4IDVkYmRhZTcuLjdhODUwMTcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0uYworKysgYi9kcml2ZXJzL21kL2RtLmMKQEAgLTEy NzYsNyArMTI3Niw3IEBAIHN0YXRpYyB2b2lkIGRtX2RvbmUoc3RydWN0IHJlcXVlc3QgKmNs b25lLCBpbnQgZXJyb3IsIGJvb2wgbWFwcGVkKQogCQkJciA9IHJxX2VuZF9pbyh0aW8tPnRp LCBjbG9uZSwgZXJyb3IsICZ0aW8tPmluZm8pOwogCX0KIAotCWlmICh1bmxpa2VseShyID09 IC1FUkVNT1RFSU8gJiYgKGNsb25lLT5jbWRfZmxhZ3MgJiBSRVFfV1JJVEVfU0FNRSkgJiYK KwlpZiAodW5saWtlbHkociA9PSAtRVJFTU9URUlPICYmIChjbG9uZS0+b3AgPT0gUkVRX09Q X1dSSVRFX1NBTUUpICYmCiAJCSAgICAgIWNsb25lLT5xLT5saW1pdHMubWF4X3dyaXRlX3Nh bWVfc2VjdG9ycykpCiAJCWRpc2FibGVfd3JpdGVfc2FtZSh0aW8tPm1kKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9tbWMvY2FyZC9ibG9jay5jIGIvZHJpdmVycy9tbWMvY2FyZC9ibG9j ay5jCmluZGV4IGQ4NDg2MTYuLmRhNmZiODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2Nh cmQvYmxvY2suYworKysgYi9kcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMKQEAgLTE2OTUsOCAr MTY5NSw3IEBAIHN0YXRpYyB1OCBtbWNfYmxrX3ByZXBfcGFja2VkX2xpc3Qoc3RydWN0IG1t Y19xdWV1ZSAqbXEsIHN0cnVjdCByZXF1ZXN0ICpyZXEpCiAJCSAgICAhSVNfQUxJR05FRChi bGtfcnFfc2VjdG9ycyhuZXh0KSwgOCkpCiAJCQlicmVhazsKIAotCQlpZiAobmV4dC0+Y21k X2ZsYWdzICYgUkVRX0RJU0NBUkQgfHwKLQkJICAgIG5leHQtPmNtZF9mbGFncyAmIFJFUV9G TFVTSCkKKwkJaWYgKG5leHQtPm9wID09IFJFUV9PUF9ESVNDQVJEIHx8IG5leHQtPmNtZF9m bGFncyAmIFJFUV9GTFVTSCkKIAkJCWJyZWFrOwogCiAJCWlmIChycV9kYXRhX2RpcihjdXIp ICE9IHJxX2RhdGFfZGlyKG5leHQpKQpAQCAtMjEzNyw3ICsyMTM2LDcgQEAgc3RhdGljIGlu dCBtbWNfYmxrX2lzc3VlX3JxKHN0cnVjdCBtbWNfcXVldWUgKm1xLCBzdHJ1Y3QgcmVxdWVz dCAqcmVxKQogCX0KIAogCW1xLT5mbGFncyAmPSB+TU1DX1FVRVVFX05FV19SRVFVRVNUOwot CWlmIChjbWRfZmxhZ3MgJiBSRVFfRElTQ0FSRCkgeworCWlmIChyZXEgJiYgcmVxLT5vcCA9 PSBSRVFfT1BfRElTQ0FSRCkgewogCQkvKiBjb21wbGV0ZSBvbmdvaW5nIGFzeW5jIHRyYW5z ZmVyIGJlZm9yZSBpc3N1aW5nIGRpc2NhcmQgKi8KIAkJaWYgKGNhcmQtPmhvc3QtPmFyZXEp CiAJCQltbWNfYmxrX2lzc3VlX3J3X3JxKG1xLCBOVUxMKTsKQEAgLTIxNjEsNyArMjE2MCw3 IEBAIHN0YXRpYyBpbnQgbW1jX2Jsa19pc3N1ZV9ycShzdHJ1Y3QgbW1jX3F1ZXVlICptcSwg c3RydWN0IHJlcXVlc3QgKnJlcSkKIAogb3V0OgogCWlmICgoIXJlcSAmJiAhKG1xLT5mbGFn cyAmIE1NQ19RVUVVRV9ORVdfUkVRVUVTVCkpIHx8Ci0JICAgICAoY21kX2ZsYWdzICYgTU1D X1JFUV9TUEVDSUFMX01BU0spKQorCSAgICBtbWNfcmVxX2lzX3NwZWNpYWwocmVxKSkKIAkJ LyoKIAkJICogUmVsZWFzZSBob3N0IHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgcmVxdWVzdHMK IAkJICogYW5kIGFmdGVyIHNwZWNpYWwgcmVxdWVzdChkaXNjYXJkLCBmbHVzaCkgaXMgZG9u ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NhcmQvcXVldWUuYyBiL2RyaXZlcnMvbW1j L2NhcmQvcXVldWUuYwppbmRleCA2ZjQzMjNjLi45ZmI4ZDIxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21tYy9jYXJkL3F1ZXVlLmMKKysrIGIvZHJpdmVycy9tbWMvY2FyZC9xdWV1ZS5jCkBA IC0zMyw3ICszMyw3IEBAIHN0YXRpYyBpbnQgbW1jX3ByZXBfcmVxdWVzdChzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJlcSkKIAkvKgogCSAqIFdlIG9ubHkg bGlrZSBub3JtYWwgYmxvY2sgcmVxdWVzdHMgYW5kIGRpc2NhcmRzLgogCSAqLwotCWlmIChy ZXEtPmNtZF90eXBlICE9IFJFUV9UWVBFX0ZTICYmICEocmVxLT5jbWRfZmxhZ3MgJiBSRVFf RElTQ0FSRCkpIHsKKwlpZiAocmVxLT5jbWRfdHlwZSAhPSBSRVFfVFlQRV9GUyAmJiByZXEt Pm9wICE9IFJFUV9PUF9ESVNDQVJEKSB7CiAJCWJsa19kdW1wX3JxX2ZsYWdzKHJlcSwgIk1N QyBiYWQgcmVxdWVzdCIpOwogCQlyZXR1cm4gQkxLUFJFUF9LSUxMOwogCX0KQEAgLTU2LDcg KzU2LDYgQEAgc3RhdGljIGludCBtbWNfcXVldWVfdGhyZWFkKHZvaWQgKmQpCiAJZG93bigm bXEtPnRocmVhZF9zZW0pOwogCWRvIHsKIAkJc3RydWN0IHJlcXVlc3QgKnJlcSA9IE5VTEw7 Ci0JCXVuc2lnbmVkIGludCBjbWRfZmxhZ3MgPSAwOwogCiAJCXNwaW5fbG9ja19pcnEocS0+ cXVldWVfbG9jayk7CiAJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7 CkBAIC02Niw3ICs2NSw2IEBAIHN0YXRpYyBpbnQgbW1jX3F1ZXVlX3RocmVhZCh2b2lkICpk KQogCiAJCWlmIChyZXEgfHwgbXEtPm1xcnFfcHJldi0+cmVxKSB7CiAJCQlzZXRfY3VycmVu dF9zdGF0ZShUQVNLX1JVTk5JTkcpOwotCQkJY21kX2ZsYWdzID0gcmVxID8gcmVxLT5jbWRf ZmxhZ3MgOiAwOwogCQkJbXEtPmlzc3VlX2ZuKG1xLCByZXEpOwogCQkJY29uZF9yZXNjaGVk KCk7CiAJCQlpZiAobXEtPmZsYWdzICYgTU1DX1FVRVVFX05FV19SRVFVRVNUKSB7CkBAIC04 MSw3ICs3OSw3IEBAIHN0YXRpYyBpbnQgbW1jX3F1ZXVlX3RocmVhZCh2b2lkICpkKQogCQkJ ICogaGFzIGJlZW4gZmluaXNoZWQuIERvIG5vdCBhc3NpZ24gaXQgdG8gcHJldmlvdXMKIAkJ CSAqIHJlcXVlc3QuCiAJCQkgKi8KLQkJCWlmIChjbWRfZmxhZ3MgJiBNTUNfUkVRX1NQRUNJ QUxfTUFTSykKKwkJCWlmIChtbWNfcmVxX2lzX3NwZWNpYWwocmVxKSkKIAkJCQltcS0+bXFy cV9jdXItPnJlcSA9IE5VTEw7CiAKIAkJCW1xLT5tcXJxX3ByZXYtPmJycS5tcnEuZGF0YSA9 IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL3F1ZXVlLmggYi9kcml2ZXJz L21tYy9jYXJkL3F1ZXVlLmgKaW5kZXggMzZjZGRhYi4uZjE2NmU1YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tbWMvY2FyZC9xdWV1ZS5oCisrKyBiL2RyaXZlcnMvbW1jL2NhcmQvcXVldWUu aApAQCAtMSw3ICsxLDEwIEBACiAjaWZuZGVmIE1NQ19RVUVVRV9ICiAjZGVmaW5lIE1NQ19R VUVVRV9ICiAKLSNkZWZpbmUgTU1DX1JFUV9TUEVDSUFMX01BU0sJKFJFUV9ESVNDQVJEIHwg UkVRX0ZMVVNIKQorc3RhdGljIGlubGluZSBib29sIG1tY19yZXFfaXNfc3BlY2lhbChzdHJ1 Y3QgcmVxdWVzdCAqcmVxKQoreworCXJldHVybiByZXEgJiYgKHJlcS0+Y21kX2ZsYWdzICYg UkVRX0ZMVVNIIHx8IHJlcS0+b3AgPT0gUkVRX09QX0RJU0NBUkQpOworfQogCiBzdHJ1Y3Qg cmVxdWVzdDsKIHN0cnVjdCB0YXNrX3N0cnVjdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRk L210ZF9ibGtkZXZzLmMgYi9kcml2ZXJzL210ZC9tdGRfYmxrZGV2cy5jCmluZGV4IGY0NzAx MTguLmIyZTBiY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMKKysr IGIvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMg aW50IGRvX2Jsa3RyYW5zX3JlcXVlc3Qoc3RydWN0IG10ZF9ibGt0cmFuc19vcHMgKnRyLAog CSAgICBnZXRfY2FwYWNpdHkocmVxLT5ycV9kaXNrKSkKIAkJcmV0dXJuIC1FSU87CiAKLQlp ZiAocmVxLT5jbWRfZmxhZ3MgJiBSRVFfRElTQ0FSRCkKKwlpZiAocmVxLT5vcCA9PSBSRVFf T1BfRElTQ0FSRCkKIAkJcmV0dXJuIHRyLT5kaXNjYXJkKGRldiwgYmxvY2ssIG5zZWN0KTsK IAogCWlmIChycV9kYXRhX2RpcihyZXEpID09IFJFQUQpIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbnZtZS9ob3N0L3BjaS5jIGIvZHJpdmVycy9udm1lL2hvc3QvcGNpLmMKaW5kZXggYTY0 ZDBiYS4uMzBhMzNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvcGNpLmMKKysr IGIvZHJpdmVycy9udm1lL2hvc3QvcGNpLmMKQEAgLTQ4OCw3ICs0ODgsNyBAQCBfX252bWVf YWxsb2NfaW9kKHVuc2lnbmVkIG5zZWcsIHVuc2lnbmVkIGJ5dGVzLCBzdHJ1Y3QgbnZtZV9k ZXYgKmRldiwKIHN0YXRpYyBzdHJ1Y3QgbnZtZV9pb2QgKm52bWVfYWxsb2NfaW9kKHN0cnVj dCByZXF1ZXN0ICpycSwgc3RydWN0IG52bWVfZGV2ICpkZXYsCiAJCQkgICAgICAgICAgICAg ICBnZnBfdCBnZnApCiB7Ci0JdW5zaWduZWQgc2l6ZSA9ICEocnEtPmNtZF9mbGFncyAmIFJF UV9ESVNDQVJEKSA/IGJsa19ycV9ieXRlcyhycSkgOgorCXVuc2lnbmVkIHNpemUgPSAocnEt Pm9wICE9IFJFUV9PUF9ESVNDQVJEKSA/IGJsa19ycV9ieXRlcyhycSkgOgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBu dm1lX2RzbV9yYW5nZSk7CiAJc3RydWN0IG52bWVfaW9kICppb2Q7CiAKQEAgLTg1MCw3ICs4 NTAsNyBAQCBzdGF0aWMgaW50IG52bWVfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHgg KmhjdHgsCiAJaWYgKCFpb2QpCiAJCXJldHVybiBCTEtfTVFfUlFfUVVFVUVfQlVTWTsKIAot CWlmIChyZXEtPmNtZF9mbGFncyAmIFJFUV9ESVNDQVJEKSB7CisJaWYgKHJlcS0+b3AgPT0g UkVRX09QX0RJU0NBUkQpIHsKIAkJcmV0ID0gbnZtZV9zZXR1cF9kaXNjYXJkKG52bWVxLCBu cywgaW9kLCAmY21uZCk7CiAJfSBlbHNlIHsKIAkJaWYgKHJlcS0+Y21kX3R5cGUgPT0gUkVR X1RZUEVfRFJWX1BSSVYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2QuYyBiL2RyaXZl cnMvc2NzaS9zZC5jCmluZGV4IDU0NTE5ODAuLmVmZGRhNWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc2NzaS9zZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9zZC5jCkBAIC05OTksNyArOTk5LDgg QEAgc3RhdGljIGludCBzZF9zZXR1cF9yZWFkX3dyaXRlX2NtbmQoc3RydWN0IHNjc2lfY21u ZCAqU0NwbnQpCiAJfSBlbHNlIGlmIChycV9kYXRhX2RpcihycSkgPT0gUkVBRCkgewogCQlT Q3BudC0+Y21uZFswXSA9IFJFQURfNjsKIAl9IGVsc2UgewotCQlzY21kX3ByaW50ayhLRVJO X0VSUiwgU0NwbnQsICJVbmtub3duIGNvbW1hbmQgJWxseFxuIiwgKHVuc2lnbmVkIGxvbmcg bG9uZykgcnEtPmNtZF9mbGFncyk7CisJCXNjbWRfcHJpbnRrKEtFUk5fRVJSLCBTQ3BudCwg IlVua25vd24gY29tbWFuZCAlZCwlbGx4XG4iLCBycS0+b3AsCisJCQkgICAgKHVuc2lnbmVk IGxvbmcgbG9uZykgcnEtPmNtZF9mbGFncyk7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMTEy NCwyMSArMTEyNSwyNyBAQCBzdGF0aWMgaW50IHNkX2luaXRfY29tbWFuZChzdHJ1Y3Qgc2Nz aV9jbW5kICpjbWQpCiB7CiAJc3RydWN0IHJlcXVlc3QgKnJxID0gY21kLT5yZXF1ZXN0Owog Ci0JaWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfRElTQ0FSRCkKKwlzd2l0Y2ggKHJxLT5vcCkg eworCWNhc2UgUkVRX09QX0RJU0NBUkQ6CiAJCXJldHVybiBzZF9zZXR1cF9kaXNjYXJkX2Nt bmQoY21kKTsKLQllbHNlIGlmIChycS0+Y21kX2ZsYWdzICYgUkVRX1dSSVRFX1NBTUUpCisJ Y2FzZSBSRVFfT1BfV1JJVEVfU0FNRToKIAkJcmV0dXJuIHNkX3NldHVwX3dyaXRlX3NhbWVf Y21uZChjbWQpOwotCWVsc2UgaWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfRkxVU0gpCi0JCXJl dHVybiBzZF9zZXR1cF9mbHVzaF9jbW5kKGNtZCk7Ci0JZWxzZQotCQlyZXR1cm4gc2Rfc2V0 dXBfcmVhZF93cml0ZV9jbW5kKGNtZCk7CisJY2FzZSBSRVFfT1BfUkVBRDoKKwljYXNlIFJF UV9PUF9XUklURToKKwkJaWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfRkxVU0gpCisJCQlyZXR1 cm4gc2Rfc2V0dXBfZmx1c2hfY21uZChjbWQpOworCQllbHNlCisJCQlyZXR1cm4gc2Rfc2V0 dXBfcmVhZF93cml0ZV9jbW5kKGNtZCk7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQogfQog CiBzdGF0aWMgdm9pZCBzZF91bmluaXRfY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICpTQ3Bu dCkKIHsKIAlzdHJ1Y3QgcmVxdWVzdCAqcnEgPSBTQ3BudC0+cmVxdWVzdDsKIAotCWlmIChy cS0+Y21kX2ZsYWdzICYgUkVRX0RJU0NBUkQpCisJaWYgKHJxLT5vcCA9PSBSRVFfT1BfRElT Q0FSRCkKIAkJX19mcmVlX3BhZ2UocnEtPmNvbXBsZXRpb25fZGF0YSk7CiAKIAlpZiAoU0Nw bnQtPmNtbmQgIT0gcnEtPmNtZCkgewpAQCAtMTc1NSw3ICsxNzYyLDcgQEAgc3RhdGljIGlu dCBzZF9kb25lKHN0cnVjdCBzY3NpX2NtbmQgKlNDcG50KQogCXVuc2lnbmVkIGNoYXIgb3Ag PSBTQ3BudC0+Y21uZFswXTsKIAl1bnNpZ25lZCBjaGFyIHVubWFwID0gU0NwbnQtPmNtbmRb MV0gJiA4OwogCi0JaWYgKHJlcS0+Y21kX2ZsYWdzICYgUkVRX0RJU0NBUkQgfHwgcmVxLT5j bWRfZmxhZ3MgJiBSRVFfV1JJVEVfU0FNRSkgeworCWlmIChyZXEtPm9wID09IFJFUV9PUF9E SVNDQVJEIHx8IHJlcS0+b3AgPT0gUkVRX09QX1dSSVRFX1NBTUUpIHsKIAkJaWYgKCFyZXN1 bHQpIHsKIAkJCWdvb2RfYnl0ZXMgPSBibGtfcnFfYnl0ZXMocmVxKTsKIAkJCXNjc2lfc2V0 X3Jlc2lkKFNDcG50LCAwKTsKLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wLzAwMjYt YmxrdHJhY2UtZ2V0LW9wLWZyb20tcmVxLW9wLWJpby1iaV9vcC5wYXRjaAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAx NzUxADAwMDAwMDMwMzUyADEyNjMyMTU0MjMwADAyMDc2NwAgMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABGcm9tIGFhMTFiM2JjM2JhY2RmYzY2Nzg4NjAyNDY3Zjg3YmQ0MGE3 YWZlNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pa2UgQ2hyaXN0aWUgPG1j aHJpc3RpQHJlZGhhdC5jb20+CkRhdGU6IFR1ZSwgOCBEZWMgMjAxNSAyMzozMjo1MiAtMDYw MApTdWJqZWN0OiBbUEFUQ0ggMjYvMzBdIGJsa3RyYWNlOiBnZXQgb3AgZnJvbSByZXEtPm9w L2Jpby0+Ymlfb3AKClRoZSBiaW8gYW5kIHJlcXVlc3Qgc3RydWN0IG5vdyBzdG9yZSB0aGUg b3BlcmF0aW9uIGluCmJpby0+Ymlfb3AvcmVxdWVzdC0+b3AuIFRoaXMgcGF0Y2ggaGFzIGJs a3RyYWNlIG5vdApjaGVjayBiaV9ydy9jbWRfZmxhZ3MuCgpTaWduZWQtb2ZmLWJ5OiBNaWtl IENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGluY2x1ZGUvbGludXgvYmxr dHJhY2VfYXBpLmggIHwgIDIgKy0KIGluY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5oIHwg MTIgKysrKysrLS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCAgfCAzMSArKysr KysrKysrKysrKysrKy0tLS0tLS0tLQoga2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMgICAgICAg fCA1MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiA0IGZp bGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvYmxrdHJhY2VfYXBpLmggYi9pbmNsdWRlL2xpbnV4L2Js a3RyYWNlX2FwaS5oCmluZGV4IGFmYzEzNDMuLmVlMjViYTQgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvYmxrdHJhY2VfYXBpLmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGt0cmFjZV9h cGkuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGJsa19jbWRfYnVm X2xlbihzdHJ1Y3QgcmVxdWVzdCAqcnEpCiB9CiAKIGV4dGVybiB2b2lkIGJsa19kdW1wX2Nt ZChjaGFyICpidWYsIHN0cnVjdCByZXF1ZXN0ICpycSk7Ci1leHRlcm4gdm9pZCBibGtfZmls bF9yd2JzKGNoYXIgKnJ3YnMsIHUzMiBydywgaW50IGJ5dGVzKTsKK2V4dGVybiB2b2lkIGJs a19maWxsX3J3YnMoY2hhciAqcndicywgaW50IG9wLCB1MzIgcncsIGludCBieXRlcyk7CiAK ICNlbmRpZiAvKiBDT05GSUdfRVZFTlRfVFJBQ0lORyAmJiBDT05GSUdfQkxPQ0sgKi8KIApk aWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmNhY2hlLmggYi9pbmNsdWRlL3Ry YWNlL2V2ZW50cy9iY2FjaGUuaAppbmRleCA5ODFhY2Y3Li44YWJlNTY0IDEwMDY0NAotLS0g YS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9iY2FjaGUuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2 ZW50cy9iY2FjaGUuaApAQCAtMjcsNyArMjcsOCBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJj YWNoZV9yZXF1ZXN0LAogCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvcjsKIAkJX19lbnRyeS0+b3JpZ19zZWN0b3IJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y IC0gMTY7CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9zaXplID4+ IDk7Ci0JCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5i aV9pdGVyLmJpX3NpemUpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+ Ymlfb3AsIGJpby0+YmlfcncsCisJCQkgICAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJ KSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMgJWxsdSArICV1IChmcm9tICVkLCVkIEAgJWxs dSkiLApAQCAtMTAxLDcgKzEwMiw4IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmNhY2hlX2Jp bywKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2VudHJ5 LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0+bnJfc2Vj dG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhfX2Vu dHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CisJCWJsa19m aWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKKwkJCSAg ICAgIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkpLAogCiAJVFBfcHJpbnRrKCIlZCwlZCAg JXMgJWxsdSArICV1IiwKQEAgLTEzNiw3ICsxMzgsOCBAQCBUUkFDRV9FVkVOVChiY2FjaGVf cmVhZCwKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2Vu dHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0+bnJf c2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhf X2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CisJCWJs a19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKKwkJ CSAgICAgIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJX19lbnRyeS0+Y2FjaGVfaGl0ID0g aGl0OwogCQlfX2VudHJ5LT5ieXBhc3MgPSBieXBhc3M7CiAJKSwKQEAgLTE2Nyw3ICsxNzAs OCBAQCBUUkFDRV9FVkVOVChiY2FjaGVfd3JpdGUsCiAJCV9fZW50cnktPmlub2RlCQk9IGlu b2RlOwogCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJ X19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKLQkJYmxr X2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlf c2l6ZSk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9vcCwgYmlv LT5iaV9ydywKKwkJCSAgICAgIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJX19lbnRyeS0+ d3JpdGViYWNrID0gd3JpdGViYWNrOwogCQlfX2VudHJ5LT5ieXBhc3MgPSBieXBhc3M7CiAJ KSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmggYi9pbmNsdWRl L3RyYWNlL2V2ZW50cy9ibG9jay5oCmluZGV4IGU4YTVlY2EuLjQ0MTZkY2QgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmgKKysrIGIvaW5jbHVkZS90cmFjZS9l dmVudHMvYmxvY2suaApAQCAtODQsNyArODQsOCBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJs b2NrX3JxX3dpdGhfZXJyb3IsCiAJCQkJCTAgOiBibGtfcnFfc2VjdG9ycyhycSk7CiAJCV9f ZW50cnktPmVycm9ycyAgICA9IHJxLT5lcnJvcnM7CiAKLQkJYmxrX2ZpbGxfcndicyhfX2Vu dHJ5LT5yd2JzLCBycS0+Y21kX2ZsYWdzLCBibGtfcnFfYnl0ZXMocnEpKTsKKwkJYmxrX2Zp bGxfcndicyhfX2VudHJ5LT5yd2JzLCBycS0+b3AsIHJxLT5jbWRfZmxhZ3MsCisJCQkgICAg ICBibGtfcnFfYnl0ZXMocnEpKTsKIAkJYmxrX2R1bXBfY21kKF9fZ2V0X3N0cihjbWQpLCBy cSk7CiAJKSwKIApAQCAtMTYyLDcgKzE2Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3JxX2Nv bXBsZXRlLAogCQlfX2VudHJ5LT5ucl9zZWN0b3IgPSBucl9ieXRlcyA+PiA5OwogCQlfX2Vu dHJ5LT5lcnJvcnMgICAgPSBycS0+ZXJyb3JzOwogCi0JCWJsa19maWxsX3J3YnMoX19lbnRy eS0+cndicywgcnEtPmNtZF9mbGFncywgbnJfYnl0ZXMpOworCQlibGtfZmlsbF9yd2JzKF9f ZW50cnktPnJ3YnMsIHJxLT5vcCwgcnEtPmNtZF9mbGFncywgbnJfYnl0ZXMpOwogCQlibGtf ZHVtcF9jbWQoX19nZXRfc3RyKGNtZCksIHJxKTsKIAkpLAogCkBAIC0xOTgsNyArMTk5LDgg QEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19ycSwKIAkJX19lbnRyeS0+Ynl0ZXMgICAg ID0gKHJxLT5jbWRfdHlwZSA9PSBSRVFfVFlQRV9CTE9DS19QQykgPwogCQkJCQlibGtfcnFf Ynl0ZXMocnEpIDogMDsKIAotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIHJxLT5j bWRfZmxhZ3MsIGJsa19ycV9ieXRlcyhycSkpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnkt PnJ3YnMsIHJxLT5vcCwgcnEtPmNtZF9mbGFncywKKwkJCSAgICAgIGJsa19ycV9ieXRlcyhy cSkpOwogCQlibGtfZHVtcF9jbWQoX19nZXRfc3RyKGNtZCksIHJxKTsKIAkJbWVtY3B5KF9f ZW50cnktPmNvbW0sIGN1cnJlbnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCkBAIC0y NzIsNyArMjc0LDggQEAgVFJBQ0VfRVZFTlQoYmxvY2tfYmlvX2JvdW5jZSwKIAkJCQkJICBi aW8tPmJpX2JkZXYtPmJkX2RldiA6IDA7CiAJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhi aW8pOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+ YmlfaXRlci5iaV9zaXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8t PmJpX29wLCBiaW8tPmJpX3J3LAorCQkJICAgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVudC0+Y29tbSwgVEFTS19DT01NX0xFTik7 CiAJKSwKIApAQCAtMzEwLDcgKzMxMyw4IEBAIFRSQUNFX0VWRU5UKGJsb2NrX2Jpb19jb21w bGV0ZSwKIAkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ CV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7CiAJCV9fZW50cnktPmVy cm9yCQk9IGVycm9yOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlf cncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5y d2JzLCBiaW8tPmJpX29wLCBiaW8tPmJpX3J3LAorCQkJICAgICAgYmlvLT5iaV9pdGVyLmJp X3NpemUpOwogCSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSBbJWRdIiwK QEAgLTMzNyw3ICszNDEsOCBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX2Jpb19tZXJn ZSwKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2VudHJ5 LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0+bnJfc2Vj dG9yCT0gYmlvX3NlY3RvcnMoYmlvKTsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2Jz LCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CisJCWJsa19maWxsX3J3YnMo X19lbnRyeS0+cndicywgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKKwkJCSAgICAgIGJpby0+ YmlfaXRlci5iaV9zaXplKTsKIAkJbWVtY3B5KF9fZW50cnktPmNvbW0sIGN1cnJlbnQtPmNv bW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCiAKQEAgLTQwNCw3ICs0MDksOCBAQCBUUkFDRV9F VkVOVChibG9ja19iaW9fcXVldWUsCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJpX2JkZXYt PmJkX2RldjsKIAkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUp OworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlfb3AsIGJpby0+Ymlf cncsCisJCQkgICAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCW1lbWNweShfX2VudHJ5 LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCkBAIC00MzIs NyArNDM4LDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19nZXRfcnEsCiAJCV9fZW50 cnktPmRldgkJPSBiaW8gPyBiaW8tPmJpX2JkZXYtPmJkX2RldiA6IDA7CiAJCV9fZW50cnkt PnNlY3RvcgkJPSBiaW8gPyBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDogMDsKIAkJX19lbnRy eS0+bnJfc2VjdG9yCT0gYmlvID8gYmlvX3NlY3RvcnMoYmlvKSA6IDA7Ci0JCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBi aW8gPyBiaW8tPmJpX29wIDogMCwKIAkJCSAgICAgIGJpbyA/IGJpby0+YmlfcncgOiAwLCBf X2VudHJ5LT5ucl9zZWN0b3IpOwogCQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVudC0+ Y29tbSwgVEFTS19DT01NX0xFTik7CiAgICAgICAgICksCkBAIC01NjcsNyArNTczLDggQEAg VFJBQ0VfRVZFTlQoYmxvY2tfc3BsaXQsCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJpX2Jk ZXYtPmJkX2RldjsKIAkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0 b3I7CiAJCV9fZW50cnktPm5ld19zZWN0b3IJPSBuZXdfc2VjdG9yOwotCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsK KwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX29wLCBiaW8tPmJpX3J3 LAorCQkJICAgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCQltZW1jcHkoX19lbnRyeS0+ Y29tbSwgY3VycmVudC0+Y29tbSwgVEFTS19DT01NX0xFTik7CiAJKSwKIApAQCAtNjEwLDcg KzYxNyw4IEBAIFRSQUNFX0VWRU5UKGJsb2NrX2Jpb19yZW1hcCwKIAkJX19lbnRyeS0+bnJf c2VjdG9yCT0gYmlvX3NlY3RvcnMoYmlvKTsKIAkJX19lbnRyeS0+b2xkX2Rldgk9IGRldjsK IAkJX19lbnRyeS0+b2xkX3NlY3Rvcgk9IGZyb207Ci0JCWJsa19maWxsX3J3YnMoX19lbnRy eS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOworCQlibGtfZmls bF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlfb3AsIGJpby0+YmlfcncsCisJCQkgICAg ICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJKSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMg JWxsdSArICV1IDwtICglZCwlZCkgJWxsdSIsCkBAIC02NTYsNyArNjY0LDggQEAgVFJBQ0Vf RVZFTlQoYmxvY2tfcnFfcmVtYXAsCiAJCV9fZW50cnktPm9sZF9kZXYJPSBkZXY7CiAJCV9f ZW50cnktPm9sZF9zZWN0b3IJPSBmcm9tOwogCQlfX2VudHJ5LT5ucl9iaW9zCT0gYmxrX3Jx X2NvdW50X2Jpb3MocnEpOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIHJxLT5j bWRfZmxhZ3MsIGJsa19ycV9ieXRlcyhycSkpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnkt PnJ3YnMsIHJxLT5vcCwgcnEtPmNtZF9mbGFncywKKwkJCSAgICAgIGJsa19ycV9ieXRlcyhy cSkpOwogCSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSA8LSAoJWQsJWQp ICVsbHUgJXUiLApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMgYi9rZXJu ZWwvdHJhY2UvYmxrdHJhY2UuYwppbmRleCBhOTkwODI0Li5lYTE3MmNmIDEwMDY0NAotLS0g YS9rZXJuZWwvdHJhY2UvYmxrdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvYmxrdHJhY2Uu YwpAQCAtMTk5LDcgKzE5OSw4IEBAIHN0YXRpYyBjb25zdCB1MzIgZGRpcl9hY3RbMl0gPSB7 IEJMS19UQ19BQ1QoQkxLX1RDX1JFQUQpLAogICogYmxrX2lvX3RyYWNlIHN0cnVjdHVyZSBh bmQgcGxhY2VzIGl0IGluIGEgcGVyLWNwdSBzdWJidWZmZXIuCiAgKi8KIHN0YXRpYyB2b2lk IF9fYmxrX2FkZF90cmFjZShzdHJ1Y3QgYmxrX3RyYWNlICpidCwgc2VjdG9yX3Qgc2VjdG9y LCBpbnQgYnl0ZXMsCi0JCSAgICAgaW50IHJ3LCB1MzIgd2hhdCwgaW50IGVycm9yLCBpbnQg cGR1X2xlbiwgdm9pZCAqcGR1X2RhdGEpCisJCSAgICAgaW50IG9wLCBpbnQgb3BfZmxhZ3Ms IHUzMiB3aGF0LCBpbnQgZXJyb3IsIGludCBwZHVfbGVuLAorCQkgICAgIHZvaWQgKnBkdV9k YXRhKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDsKIAlzdHJ1Y3Qg cmluZ19idWZmZXJfZXZlbnQgKmV2ZW50ID0gTlVMTDsKQEAgLTIxNCwxMyArMjE1LDE0IEBA IHN0YXRpYyB2b2lkIF9fYmxrX2FkZF90cmFjZShzdHJ1Y3QgYmxrX3RyYWNlICpidCwgc2Vj dG9yX3Qgc2VjdG9yLCBpbnQgYnl0ZXMsCiAJaWYgKHVubGlrZWx5KGJ0LT50cmFjZV9zdGF0 ZSAhPSBCbGt0cmFjZV9ydW5uaW5nICYmICFibGtfdHJhY2VyKSkKIAkJcmV0dXJuOwogCi0J d2hhdCB8PSBkZGlyX2FjdFtydyAmIFdSSVRFXTsKLQl3aGF0IHw9IE1BU0tfVENfQklUKHJ3 LCBTWU5DKTsKLQl3aGF0IHw9IE1BU0tfVENfQklUKHJ3LCBSQUhFQUQpOwotCXdoYXQgfD0g TUFTS19UQ19CSVQocncsIE1FVEEpOwotCXdoYXQgfD0gTUFTS19UQ19CSVQocncsIERJU0NB UkQpOwotCXdoYXQgfD0gTUFTS19UQ19CSVQocncsIEZMVVNIKTsKLQl3aGF0IHw9IE1BU0tf VENfQklUKHJ3LCBGVUEpOworCXdoYXQgfD0gZGRpcl9hY3Rbb3BfaXNfd3JpdGUob3ApID8g V1JJVEUgOiBSRUFEXTsKKwl3aGF0IHw9IE1BU0tfVENfQklUKG9wX2ZsYWdzLCBTWU5DKTsK Kwl3aGF0IHw9IE1BU0tfVENfQklUKG9wX2ZsYWdzLCBSQUhFQUQpOworCXdoYXQgfD0gTUFT S19UQ19CSVQob3BfZmxhZ3MsIE1FVEEpOworCXdoYXQgfD0gTUFTS19UQ19CSVQob3BfZmxh Z3MsIEZMVVNIKTsKKwl3aGF0IHw9IE1BU0tfVENfQklUKG9wX2ZsYWdzLCBGVUEpOworCWlm IChvcCA9PSBSRVFfT1BfRElTQ0FSRCkKKwkJd2hhdCB8PSBCTEtfVENfQUNUKEJMS19UQ19E SVNDQVJEKTsKIAogCXBpZCA9IHRzay0+cGlkOwogCWlmIChhY3RfbG9nX2NoZWNrKGJ0LCB3 aGF0LCBzZWN0b3IsIHBpZCkpCkBAIC03MTQsMTEgKzcxNiwxMSBAQCBzdGF0aWMgdm9pZCBi bGtfYWRkX3RyYWNlX3JxKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVz dCAqcnEsCiAKIAlpZiAocnEtPmNtZF90eXBlID09IFJFUV9UWVBFX0JMT0NLX1BDKSB7CiAJ CXdoYXQgfD0gQkxLX1RDX0FDVChCTEtfVENfUEMpOwotCQlfX2Jsa19hZGRfdHJhY2UoYnQs IDAsIG5yX2J5dGVzLCBycS0+Y21kX2ZsYWdzLAorCQlfX2Jsa19hZGRfdHJhY2UoYnQsIDAs IG5yX2J5dGVzLCBycS0+b3AsIHJxLT5jbWRfZmxhZ3MsCiAJCQkJd2hhdCwgcnEtPmVycm9y cywgcnEtPmNtZF9sZW4sIHJxLT5jbWQpOwogCX0gZWxzZSAgewogCQl3aGF0IHw9IEJMS19U Q19BQ1QoQkxLX1RDX0ZTKTsKLQkJX19ibGtfYWRkX3RyYWNlKGJ0LCBibGtfcnFfcG9zKHJx KSwgbnJfYnl0ZXMsCisJCV9fYmxrX2FkZF90cmFjZShidCwgYmxrX3JxX3BvcyhycSksIG5y X2J5dGVzLCBycS0+b3AsCiAJCQkJcnEtPmNtZF9mbGFncywgd2hhdCwgcnEtPmVycm9ycywg MCwgTlVMTCk7CiAJfQogfQpAQCAtNzc2LDcgKzc3OCw3IEBAIHN0YXRpYyB2b2lkIGJsa19h ZGRfdHJhY2VfYmlvKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8s CiAJCXJldHVybjsKIAogCV9fYmxrX2FkZF90cmFjZShidCwgYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCi0JCQliaW8tPmJpX3J3LCB3aGF0LCBlcnJv ciwgMCwgTlVMTCk7CisJCQliaW8tPmJpX29wLCBiaW8tPmJpX3J3LCB3aGF0LCBlcnJvciwg MCwgTlVMTCk7CiB9CiAKIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfYmlvX2JvdW5jZSh2 b2lkICppZ25vcmUsCkBAIC04MjQsNyArODI2LDggQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90 cmFjZV9nZXRycSh2b2lkICppZ25vcmUsCiAJCXN0cnVjdCBibGtfdHJhY2UgKmJ0ID0gcS0+ YmxrX3RyYWNlOwogCiAJCWlmIChidCkKLQkJCV9fYmxrX2FkZF90cmFjZShidCwgMCwgMCwg cncsIEJMS19UQV9HRVRSUSwgMCwgMCwgTlVMTCk7CisJCQlfX2Jsa19hZGRfdHJhY2UoYnQs IDAsIDAsIHJ3LCAwLCBCTEtfVEFfR0VUUlEsIDAsIDAsCisJCQkJCU5VTEwpOwogCX0KIH0K IApAQCAtODM5LDcgKzg0Miw3IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2Vfc2xlZXBy cSh2b2lkICppZ25vcmUsCiAJCXN0cnVjdCBibGtfdHJhY2UgKmJ0ID0gcS0+YmxrX3RyYWNl OwogCiAJCWlmIChidCkKLQkJCV9fYmxrX2FkZF90cmFjZShidCwgMCwgMCwgcncsIEJMS19U QV9TTEVFUFJRLAorCQkJX19ibGtfYWRkX3RyYWNlKGJ0LCAwLCAwLCBydywgMCwgQkxLX1RB X1NMRUVQUlEsCiAJCQkJCTAsIDAsIE5VTEwpOwogCX0KIH0KQEAgLTg0OSw3ICs4NTIsNyBA QCBzdGF0aWMgdm9pZCBibGtfYWRkX3RyYWNlX3BsdWcodm9pZCAqaWdub3JlLCBzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSkKIAlzdHJ1Y3QgYmxrX3RyYWNlICpidCA9IHEtPmJsa190cmFj ZTsKIAogCWlmIChidCkKLQkJX19ibGtfYWRkX3RyYWNlKGJ0LCAwLCAwLCAwLCBCTEtfVEFf UExVRywgMCwgMCwgTlVMTCk7CisJCV9fYmxrX2FkZF90cmFjZShidCwgMCwgMCwgMCwgMCwg QkxLX1RBX1BMVUcsIDAsIDAsIE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBibGtfYWRkX3Ry YWNlX3VucGx1Zyh2b2lkICppZ25vcmUsIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLApAQCAt ODY2LDcgKzg2OSw3IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfdW5wbHVnKHZvaWQg Kmlnbm9yZSwgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJCWVsc2UKIAkJCXdoYXQgPSBC TEtfVEFfVU5QTFVHX1RJTUVSOwogCi0JCV9fYmxrX2FkZF90cmFjZShidCwgMCwgMCwgMCwg d2hhdCwgMCwgc2l6ZW9mKHJwZHUpLCAmcnBkdSk7CisJCV9fYmxrX2FkZF90cmFjZShidCwg MCwgMCwgMCwgMCwgd2hhdCwgMCwgc2l6ZW9mKHJwZHUpLCAmcnBkdSk7CiAJfQogfQogCkBA IC04ODAsOCArODgzLDkgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFjZV9zcGxpdCh2b2lk ICppZ25vcmUsCiAJCV9fYmU2NCBycGR1ID0gY3B1X3RvX2JlNjQocGR1KTsKIAogCQlfX2Js a19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCi0JCQkJYmlvLT5iaV9p dGVyLmJpX3NpemUsIGJpby0+YmlfcncsIEJMS19UQV9TUExJVCwKLQkJCQliaW8tPmJpX2Vy cm9yLCBzaXplb2YocnBkdSksICZycGR1KTsKKwkJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSwg YmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKKwkJCQlCTEtfVEFfU1BMSVQsIGJpby0+YmlfZXJy b3IsIHNpemVvZihycGR1KSwKKwkJCQkmcnBkdSk7CiAJfQogfQogCkBAIC05MTMsNyArOTE3 LDcgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFjZV9iaW9fcmVtYXAodm9pZCAqaWdub3Jl LAogCXIuc2VjdG9yX2Zyb20gPSBjcHVfdG9fYmU2NChmcm9tKTsKIAogCV9fYmxrX2FkZF90 cmFjZShidCwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvLT5iaV9pdGVyLmJpX3NpemUs Ci0JCQliaW8tPmJpX3J3LCBCTEtfVEFfUkVNQVAsIGJpby0+YmlfZXJyb3IsCisJCQliaW8t PmJpX29wLCBiaW8tPmJpX3J3LCBCTEtfVEFfUkVNQVAsIGJpby0+YmlfZXJyb3IsCiAJCQlz aXplb2YociksICZyKTsKIH0KIApAQCAtOTQ2LDcgKzk1MCw3IEBAIHN0YXRpYyB2b2lkIGJs a19hZGRfdHJhY2VfcnFfcmVtYXAodm9pZCAqaWdub3JlLAogCXIuc2VjdG9yX2Zyb20gPSBj cHVfdG9fYmU2NChmcm9tKTsKIAogCV9fYmxrX2FkZF90cmFjZShidCwgYmxrX3JxX3Bvcyhy cSksIGJsa19ycV9ieXRlcyhycSksCi0JCQlycV9kYXRhX2RpcihycSksIEJMS19UQV9SRU1B UCwgISFycS0+ZXJyb3JzLAorCQkJcnFfZGF0YV9kaXIocnEpLCAwLCBCTEtfVEFfUkVNQVAs ICEhcnEtPmVycm9ycywKIAkJCXNpemVvZihyKSwgJnIpOwogfQogCkBAIC05NzEsMTAgKzk3 NSwxMCBAQCB2b2lkIGJsa19hZGRfZHJpdmVyX2RhdGEoc3RydWN0IHJlcXVlc3RfcXVldWUg KnEsCiAJCXJldHVybjsKIAogCWlmIChycS0+Y21kX3R5cGUgPT0gUkVRX1RZUEVfQkxPQ0tf UEMpCi0JCV9fYmxrX2FkZF90cmFjZShidCwgMCwgYmxrX3JxX2J5dGVzKHJxKSwgMCwKKwkJ X19ibGtfYWRkX3RyYWNlKGJ0LCAwLCBibGtfcnFfYnl0ZXMocnEpLCAwLCAwLAogCQkJCUJM S19UQV9EUlZfREFUQSwgcnEtPmVycm9ycywgbGVuLCBkYXRhKTsKIAllbHNlCi0JCV9fYmxr X2FkZF90cmFjZShidCwgYmxrX3JxX3BvcyhycSksIGJsa19ycV9ieXRlcyhycSksIDAsCisJ CV9fYmxrX2FkZF90cmFjZShidCwgYmxrX3JxX3BvcyhycSksIGJsa19ycV9ieXRlcyhycSks IDAsIDAsCiAJCQkJQkxLX1RBX0RSVl9EQVRBLCBycS0+ZXJyb3JzLCBsZW4sIGRhdGEpOwog fQogRVhQT1JUX1NZTUJPTF9HUEwoYmxrX2FkZF9kcml2ZXJfZGF0YSk7CkBAIC0xNzczLDE2 ICsxNzc3LDE2IEBAIHZvaWQgYmxrX2R1bXBfY21kKGNoYXIgKmJ1Ziwgc3RydWN0IHJlcXVl c3QgKnJxKQogCX0KIH0KIAotdm9pZCBibGtfZmlsbF9yd2JzKGNoYXIgKnJ3YnMsIHUzMiBy dywgaW50IGJ5dGVzKQordm9pZCBibGtfZmlsbF9yd2JzKGNoYXIgKnJ3YnMsIGludCBvcCwg dTMyIHJ3LCBpbnQgYnl0ZXMpCiB7CiAJaW50IGkgPSAwOwogCiAJaWYgKHJ3ICYgUkVRX0ZM VVNIKQogCQlyd2JzW2krK10gPSAnRic7CiAKLQlpZiAocncgJiBXUklURSkKKwlpZiAob3Ag PT0gUkVRX09QX1dSSVRFKQogCQlyd2JzW2krK10gPSAnVyc7Ci0JZWxzZSBpZiAocncgJiBS RVFfRElTQ0FSRCkKKwllbHNlIGlmIChvcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJcndic1tp KytdID0gJ0QnOwogCWVsc2UgaWYgKGJ5dGVzKQogCQlyd2JzW2krK10gPSAnUic7Ci0tIAox LjguMy4xCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDI3LWlkZS1jZC1kby1ub3Qtc2V0LVJFUV9XUklU RS1vbi1yZXF1ZXN0cy5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAwMDAwMTcxNgAxMjYzMjE1NDIz MAAwMjEwMTEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1uYwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbSBhZTZlNmUz Yzg3YmVkNmZlODVlZDMyNTBjNGIxODFlZmUzYTg1YjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgpEYXRlOiBU dWUsIDMgTm92IDIwMTUgMDE6NDU6MDEgLTA2MDAKU3ViamVjdDogW1BBVENIIDI3LzMwXSBp ZGUgY2Q6IGRvIG5vdCBzZXQgUkVRX1dSSVRFIG9uIHJlcXVlc3RzLgoKVGhlIGJsb2NrIGxh eWVyIHdpbGwgc2V0IHRoZSBjb3JyZWN0IFJFQUQvV1JJVEUgb3BlcmF0aW9uIGZsYWdzL2Zp ZWxkcwp3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCwgc28gdGhlcmUgaXMgbm90IG5lZWQgZm9y IGRyaXZlcnMgdG8gc2V0IHRoZQpSRVFfV1JJVEUgZmxhZy4KClNpZ25lZC1vZmYtYnk6IE1p a2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9pZGUvaWRl LWNkX2lvY3RsLmMgfCAzIC0tLQogMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWNkX2lvY3RsLmMgYi9kcml2ZXJzL2lkZS9p ZGUtY2RfaW9jdGwuYwppbmRleCA0NzQxNzNlLi41ODg3YTdhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2lkZS9pZGUtY2RfaW9jdGwuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtY2RfaW9jdGwu YwpAQCAtNDU5LDkgKzQ1OSw2IEBAIGludCBpZGVfY2Ryb21fcGFja2V0KHN0cnVjdCBjZHJv bV9kZXZpY2VfaW5mbyAqY2RpLAogCSAgIGxheWVyLiB0aGUgcGFja2V0IG11c3QgYmUgY29t cGxldGUsIGFzIHdlIGRvIG5vdAogCSAgIHRvdWNoIGl0IGF0IGFsbC4gKi8KIAotCWlmIChj Z2MtPmRhdGFfZGlyZWN0aW9uID09IENHQ19EQVRBX1dSSVRFKQotCQlmbGFncyB8PSBSRVFf V1JJVEU7Ci0KIAlpZiAoY2djLT5zZW5zZSkKIAkJbWVtc2V0KGNnYy0+c2Vuc2UsIDAsIHNp emVvZihzdHJ1Y3QgcmVxdWVzdF9zZW5zZSkpOwogCi0tIAoxLjguMy4xCgoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDI5LWJs b2NrLWZzLXJlbW92ZS1vbGQtUkVRLWRlZmluaXRpb25zLnBhdGNoAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1 MQAwMDAwMDAxMjQ3NgAxMjYzMjE1NDIzMAAwMjA1MjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAARnJvbSA0MWEyN2YxODBjZjlmNWViMTg4Y2FkMzEwMGNjOGE1NjA4NDU3 YzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hy aXN0aUByZWRoYXQuY29tPgpEYXRlOiBXZWQsIDkgRGVjIDIwMTUgMDE6NDY6MjUgLTA2MDAK U3ViamVjdDogW1BBVENIIDI5LzMwXSBibG9jaywgZnM6IHJlbW92ZSBvbGQgUkVRIGRlZmlu aXRpb25zLgoKV2Ugbm8gbG9uZ2VyIHVzZSBSRVFfV1JJVEUuIFJFUV9XUklURV9TQU1FIGFu ZCBSRVFfRElTQ0FSRCwKc28gdGhpcyBwYXRjaCByZW1vdmVzIHRoZW0uCgpTaWduZWQtb2Zm LWJ5OiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGluY2x1ZGUv bGludXgvYmxrX3R5cGVzLmggICB8IDE5ICsrKysrLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUv bGludXgvZnMuaCAgICAgICAgICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0tLQogaW5jbHVk ZS90cmFjZS9ldmVudHMvZjJmcy5oIHwgIDEgLQogMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNl cnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCA0ZjIyZDVj Li40NmZlMDRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCisrKyBi L2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTE1MSw3ICsxNTEsNiBAQCBzdHJ1Y3Qg YmlvIHsKICAqLwogZW51bSBycV9mbGFnX2JpdHMgewogCS8qIGNvbW1vbiBmbGFncyAqLwot CV9fUkVRX1dSSVRFLAkJLyogbm90IHNldCwgcmVhZC4gc2V0LCB3cml0ZSAqLwogCV9fUkVR X0ZBSUxGQVNUX0RFViwJLyogbm8gZHJpdmVyIHJldHJpZXMgb2YgZGV2aWNlIGVycm9ycyAq LwogCV9fUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVCwgLyogbm8gZHJpdmVyIHJldHJpZXMgb2Yg dHJhbnNwb3J0IGVycm9ycyAqLwogCV9fUkVRX0ZBSUxGQVNUX0RSSVZFUiwJLyogbm8gZHJp dmVyIHJldHJpZXMgb2YgZHJpdmVyIGVycm9ycyAqLwpAQCAtMTU5LDkgKzE1OCw3IEBAIGVu dW0gcnFfZmxhZ19iaXRzIHsKIAlfX1JFUV9TWU5DLAkJLyogcmVxdWVzdCBpcyBzeW5jIChz eW5jIHdyaXRlIG9yIHJlYWQpICovCiAJX19SRVFfTUVUQSwJCS8qIG1ldGFkYXRhIGlvIHJl cXVlc3QgKi8KIAlfX1JFUV9QUklPLAkJLyogYm9vc3QgcHJpb3JpdHkgaW4gY2ZxICovCi0J X19SRVFfRElTQ0FSRCwJCS8qIHJlcXVlc3QgdG8gZGlzY2FyZCBzZWN0b3JzICovCiAJX19S RVFfU0VDVVJFLAkJLyogc2VjdXJlIGRpc2NhcmQgKHVzZWQgd2l0aCBfX1JFUV9ESVNDQVJE KSAqLwotCV9fUkVRX1dSSVRFX1NBTUUsCS8qIHdyaXRlIHNhbWUgYmxvY2sgbWFueSB0aW1l cyAqLwogCiAJX19SRVFfTk9JRExFLAkJLyogZG9uJ3QgYW50aWNpcGF0ZSBtb3JlIElPIGFm dGVyIHRoaXMgb25lICovCiAJX19SRVFfSU5URUdSSVRZLAkvKiBJL08gaW5jbHVkZXMgYmxv Y2sgaW50ZWdyaXR5IHBheWxvYWQgKi8KQEAgLTE5OCwyOCArMTk1LDIyIEBAIGVudW0gcnFf ZmxhZ19iaXRzIHsKIAlfX1JFUV9OUl9CSVRTLAkJLyogc3RvcHMgaGVyZSAqLwogfTsKIAot I2RlZmluZSBSRVFfV1JJVEUJCSgxVUxMIDw8IF9fUkVRX1dSSVRFKQogI2RlZmluZSBSRVFf RkFJTEZBU1RfREVWCSgxVUxMIDw8IF9fUkVRX0ZBSUxGQVNUX0RFVikKICNkZWZpbmUgUkVR X0ZBSUxGQVNUX1RSQU5TUE9SVAkoMVVMTCA8PCBfX1JFUV9GQUlMRkFTVF9UUkFOU1BPUlQp CiAjZGVmaW5lIFJFUV9GQUlMRkFTVF9EUklWRVIJKDFVTEwgPDwgX19SRVFfRkFJTEZBU1Rf RFJJVkVSKQogI2RlZmluZSBSRVFfU1lOQwkJKDFVTEwgPDwgX19SRVFfU1lOQykKICNkZWZp bmUgUkVRX01FVEEJCSgxVUxMIDw8IF9fUkVRX01FVEEpCiAjZGVmaW5lIFJFUV9QUklPCQko MVVMTCA8PCBfX1JFUV9QUklPKQotI2RlZmluZSBSRVFfRElTQ0FSRAkJKDFVTEwgPDwgX19S RVFfRElTQ0FSRCkKLSNkZWZpbmUgUkVRX1dSSVRFX1NBTUUJCSgxVUxMIDw8IF9fUkVRX1dS SVRFX1NBTUUpCiAjZGVmaW5lIFJFUV9OT0lETEUJCSgxVUxMIDw8IF9fUkVRX05PSURMRSkK ICNkZWZpbmUgUkVRX0lOVEVHUklUWQkJKDFVTEwgPDwgX19SRVFfSU5URUdSSVRZKQogCiAj ZGVmaW5lIFJFUV9GQUlMRkFTVF9NQVNLIFwKIAkoUkVRX0ZBSUxGQVNUX0RFViB8IFJFUV9G QUlMRkFTVF9UUkFOU1BPUlQgfCBSRVFfRkFJTEZBU1RfRFJJVkVSKQogI2RlZmluZSBSRVFf Q09NTU9OX01BU0sgXAotCShSRVFfV1JJVEUgfCBSRVFfRkFJTEZBU1RfTUFTSyB8IFJFUV9T WU5DIHwgUkVRX01FVEEgfCBSRVFfUFJJTyB8IFwKLQkgUkVRX0RJU0NBUkQgfCBSRVFfV1JJ VEVfU0FNRSB8IFJFUV9OT0lETEUgfCBSRVFfRkxVU0ggfCBSRVFfRlVBIHwgXAotCSBSRVFf U0VDVVJFIHwgUkVRX0lOVEVHUklUWSkKKwkoUkVRX0ZBSUxGQVNUX01BU0sgfCBSRVFfU1lO QyB8IFJFUV9NRVRBIHwgUkVRX1BSSU8gfCBSRVFfTk9JRExFIHwgXAorCSBSRVFfRkxVU0gg fCBSRVFfRlVBIHwgUkVRX1NFQ1VSRSB8IFJFUV9JTlRFR1JJVFkpCiAjZGVmaW5lIFJFUV9D TE9ORV9NQVNLCQlSRVFfQ09NTU9OX01BU0sKIAotI2RlZmluZSBCSU9fTk9fQURWQU5DRV9J VEVSX01BU0sJKFJFUV9ESVNDQVJEfFJFUV9XUklURV9TQU1FKQotCiAvKiBUaGlzIG1hc2sg aXMgdXNlZCBmb3IgYm90aCBiaW8gYW5kIHJlcXVlc3QgbWVyZ2UgY2hlY2tpbmcgKi8KICNk ZWZpbmUgUkVRX05PTUVSR0VfRkxBR1MgXAogCShSRVFfTk9NRVJHRSB8IFJFUV9TVEFSVEVE IHwgUkVRX1NPRlRCQVJSSUVSIHwgUkVRX0ZMVVNIIHwgUkVRX0ZVQSB8IFJFUV9GTFVTSF9T RVEpCkBAIC0yNTIsOSArMjQzLDkgQEAgZW51bSBycV9mbGFnX2JpdHMgewogCiBlbnVtIHJl cV9vcCB7CiAJUkVRX09QX1JFQUQsCi0JUkVRX09QX1dSSVRFCQk9IFJFUV9XUklURSwKLQlS RVFfT1BfRElTQ0FSRAkJPSBSRVFfRElTQ0FSRCwKLQlSRVFfT1BfV1JJVEVfU0FNRQk9IFJF UV9XUklURV9TQU1FLAorCVJFUV9PUF9XUklURSwKKwlSRVFfT1BfRElTQ0FSRCwJCS8qIHJl cXVlc3QgdG8gZGlzY2FyZCBzZWN0b3JzICovCisJUkVRX09QX1dSSVRFX1NBTUUsCS8qIHdy aXRlIHNhbWUgYmxvY2sgbWFueSB0aW1lcyAqLwogfTsKIAogdHlwZWRlZiB1bnNpZ25lZCBp bnQgYmxrX3FjX3Q7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRl L2xpbnV4L2ZzLmgKaW5kZXggZjBiY2NlZC4uZWViNWJiZSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMTUwLDkgKzE1MCwx MCBAQCB0eXBlZGVmIHZvaWQgKGRheF9pb2RvbmVfdCkoc3RydWN0IGJ1ZmZlcl9oZWFkICpi aF9tYXAsIGludCB1cHRvZGF0ZSk7CiAjZGVmaW5lIENIRUNLX0lPVkVDX09OTFkgLTEKIAog LyoKLSAqIFRoZSBiZWxvdyBhcmUgdGhlIHZhcmlvdXMgcmVhZCBhbmQgd3JpdGUgdHlwZXMg dGhhdCB3ZSBzdXBwb3J0LiBTb21lIG9mCisgKiBUaGUgYmVsb3cgYXJlIHRoZSB2YXJpb3Vz IHJlYWQgYW5kIHdyaXRlIGZsYWdzIHRoYXQgd2Ugc3VwcG9ydC4gU29tZSBvZgogICogdGhl bSBpbmNsdWRlIGJlaGF2aW9yYWwgbW9kaWZpZXJzIHRoYXQgc2VuZCBpbmZvcm1hdGlvbiBk b3duIHRvIHRoZQotICogYmxvY2sgbGF5ZXIgYW5kIElPIHNjaGVkdWxlci4gVGVybWlub2xv Z3k6CisgKiBibG9jayBsYXllciBhbmQgSU8gc2NoZWR1bGVyLiBUaGV5IHNob3VsZCBiZSB1 c2VkIGFsb25nIHdpdGggYSByZXFfb3AuCisgKiBUZXJtaW5vbG9neToKICAqCiAgKglUaGUg YmxvY2sgbGF5ZXIgdXNlcyBkZXZpY2UgcGx1Z2dpbmcgdG8gZGVmZXIgSU8gYSBsaXR0bGUg Yml0LCBpbgogICoJdGhlIGhvcGUgdGhhdCB3ZSB3aWxsIHNlZSBtb3JlIElPIHZlcnkgc2hv cnRseS4gVGhpcyBpbmNyZWFzZXMKQEAgLTE5MSwxOSArMTkyLDE5IEBAIHR5cGVkZWYgdm9p ZCAoZGF4X2lvZG9uZV90KShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoX21hcCwgaW50IHVwdG9k YXRlKTsKICAqCQkJbm9uLXZvbGF0aWxlIG1lZGlhIG9uIGNvbXBsZXRpb24uCiAgKgogICov Ci0jZGVmaW5lIFJXX01BU0sJCQlSRVFfV1JJVEUKKyNkZWZpbmUgUldfTUFTSwkJCVJFUV9P UF9XUklURQogI2RlZmluZSBSV0FfTUFTSwkJUkVRX1JBSEVBRAogCi0jZGVmaW5lIFJFQUQJ CQkwCisjZGVmaW5lIFJFQUQJCQlSRVFfT1BfUkVBRAogI2RlZmluZSBXUklURQkJCVJXX01B U0sKICNkZWZpbmUgUkVBREEJCQlSV0FfTUFTSwogCi0jZGVmaW5lIFJFQURfU1lOQwkJKFJF QUQgfCBSRVFfU1lOQykKLSNkZWZpbmUgV1JJVEVfU1lOQwkJKFdSSVRFIHwgUkVRX1NZTkMg fCBSRVFfTk9JRExFKQotI2RlZmluZSBXUklURV9PRElSRUNUCQkoV1JJVEUgfCBSRVFfU1lO QykKLSNkZWZpbmUgV1JJVEVfRkxVU0gJCShXUklURSB8IFJFUV9TWU5DIHwgUkVRX05PSURM RSB8IFJFUV9GTFVTSCkKLSNkZWZpbmUgV1JJVEVfRlVBCQkoV1JJVEUgfCBSRVFfU1lOQyB8 IFJFUV9OT0lETEUgfCBSRVFfRlVBKQotI2RlZmluZSBXUklURV9GTFVTSF9GVUEJCShXUklU RSB8IFJFUV9TWU5DIHwgUkVRX05PSURMRSB8IFJFUV9GTFVTSCB8IFJFUV9GVUEpCisjZGVm aW5lIFJFQURfU1lOQwkJUkVRX1NZTkMKKyNkZWZpbmUgV1JJVEVfU1lOQwkJKFJFUV9TWU5D IHwgUkVRX05PSURMRSkKKyNkZWZpbmUgV1JJVEVfT0RJUkVDVAkJUkVRX1NZTkMKKyNkZWZp bmUgV1JJVEVfRkxVU0gJCShSRVFfU1lOQyB8IFJFUV9OT0lETEUgfCBSRVFfRkxVU0gpCisj ZGVmaW5lIFdSSVRFX0ZVQQkJKFJFUV9TWU5DIHwgUkVRX05PSURMRSB8IFJFUV9GVUEpCisj ZGVmaW5lIFdSSVRFX0ZMVVNIX0ZVQQkJKFJFUV9TWU5DIHwgUkVRX05PSURMRSB8IFJFUV9G TFVTSCB8IFJFUV9GVUEpCiAKIC8qCiAgKiBBdHRyaWJ1dGUgZmxhZ3MuICBUaGVzZSBzaG91 bGQgYmUgb3ItZWQgdG9nZXRoZXIgdG8gZmlndXJlIG91dCB3aGF0CmRpZmYgLS1naXQgYS9p bmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZz LmgKaW5kZXggZTY0MTAyZi4uODk1MzFlNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9l dmVudHMvZjJmcy5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaApAQCAtMzEs NyArMzEsNiBAQCBUUkFDRV9ERUZJTkVfRU5VTShCR19HQyk7CiBUUkFDRV9ERUZJTkVfRU5V TShMRlMpOwogVFJBQ0VfREVGSU5FX0VOVU0oU1NSKTsKIFRSQUNFX0RFRklORV9FTlVNKF9f UkVRX1JBSEVBRCk7Ci1UUkFDRV9ERUZJTkVfRU5VTShfX1JFUV9XUklURSk7CiBUUkFDRV9E RUZJTkVfRU5VTShfX1JFUV9TWU5DKTsKIFRSQUNFX0RFRklORV9FTlVNKF9fUkVRX05PSURM RSk7CiBUUkFDRV9ERUZJTkVfRU5VTShfX1JFUV9GTFVTSCk7Ci0tIAoxLjguMy4xCgoAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8wMDMwLWJsb2NrLXNocmluay1i aV9ydy1hbmQtYmlfb3AucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEAMDAwMTc1MQAwMDAwMDAxNDUz NAAxMjYzMjE1NDIzMAAwMTczMjMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RnJvbSA5YmFkMTYzODhlM2Y5OGZmMThmNzYzYjFjYmRiOGE0YzY2ZTEzYTUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQu Y29tPgpEYXRlOiBXZWQsIDkgRGVjIDIwMTUgMDI6MDQ6NTkgLTA2MDAKU3ViamVjdDogW1BB VENIIDMwLzMwXSBibG9jazogc2hyaW5rIGJpX3J3IGFuZCBiaV9vcAoKVGhlcmUgaXMgbm8g bmVlZCBmb3IgYmlfb3Avb3AgYW5kIGJpX3J3IHRvIGJlIHNvIGxhcmdlCm5vdywgc28gdGhp cyBwYXRjaCBzaHJpbmtzIHRoZW0uCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxt Y2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGJsb2NrL2Jsay1jb3JlLmMgICAgICAgICAgIHwg IDIgKy0KIGRyaXZlcnMvbWQvZG0tZmxha2V5LmMgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQv cmFpZDUuYyAgICAgICAgIHwgIDYgKysrLS0tCiBmcy9idHJmcy9jaGVjay1pbnRlZ3JpdHku YyB8ICA0ICsrLS0KIGZzL2J0cmZzL2lub2RlLmMgICAgICAgICAgIHwgIDIgKy0KIGluY2x1 ZGUvbGludXgvYmlvLmggICAgICAgIHwgMTMgKystLS0tLS0tLS0tLQogaW5jbHVkZS9saW51 eC9ibGtfdHlwZXMuaCAgfCAxMSArKystLS0tLS0tLQogaW5jbHVkZS9saW51eC9ibGtkZXYu aCAgICAgfCAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxr LWNvcmUuYwppbmRleCAxNjE0MTAyLi5iZDkyNDZkIDEwMDY0NAotLS0gYS9ibG9jay9ibGst Y29yZS5jCisrKyBiL2Jsb2NrL2Jsay1jb3JlLmMKQEAgLTE4MzAsNyArMTgzMCw3IEBAIHN0 YXRpYyB2b2lkIGhhbmRsZV9iYWRfc2VjdG9yKHN0cnVjdCBiaW8gKmJpbykKIAljaGFyIGJb QkRFVk5BTUVfU0laRV07CiAKIAlwcmludGsoS0VSTl9JTkZPICJhdHRlbXB0IHRvIGFjY2Vz cyBiZXlvbmQgZW5kIG9mIGRldmljZVxuIik7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiJXM6IHJ3 PSVkLCVsZCwgd2FudD0lTHUsIGxpbWl0PSVMdVxuIiwKKwlwcmludGsoS0VSTl9JTkZPICIl czogcnc9JWQsJXUsIHdhbnQ9JUx1LCBsaW1pdD0lTHVcbiIsCiAJCQliZGV2bmFtZShiaW8t PmJpX2JkZXYsIGIpLAogCQkJYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKIAkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvX2VuZF9zZWN0b3IoYmlvKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvZG0tZmxha2V5LmMgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCmluZGV4IDA5ZTJhZmMu LmI4MzEyMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJp dmVycy9tZC9kbS1mbGFrZXkuYwpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyB2b2lkIGNv cnJ1cHRfYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgZmxha2V5X2MgKmZjKQog CQlkYXRhW2ZjLT5jb3JydXB0X2Jpb19ieXRlIC0gMV0gPSBmYy0+Y29ycnVwdF9iaW9fdmFs dWU7CiAKIAkJRE1ERUJVRygiQ29ycnVwdGluZyBkYXRhIGJpbz0lcCBieSB3cml0aW5nICV1 IHRvIGJ5dGUgJXUgIgotCQkJIihydz0lYyBiaV9ydz0lbHUgYmlfc2VjdG9yPSVsbHUgY3Vy X2J5dGVzPSV1KVxuIiwKKwkJCSIocnc9JWMgYmlfcnc9JXUgYmlfc2VjdG9yPSVsbHUgY3Vy X2J5dGVzPSV1KVxuIiwKIAkJCWJpbywgZmMtPmNvcnJ1cHRfYmlvX3ZhbHVlLCBmYy0+Y29y cnVwdF9iaW9fYnl0ZSwKIAkJCShiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgPyAndycg OiAncicsIGJpby0+YmlfcncsCiAJCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRl ci5iaV9zZWN0b3IsIGJpb19ieXRlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQ1 LmMgYi9kcml2ZXJzL21kL3JhaWQ1LmMKaW5kZXggYmYwZTAxZC4uZDczZTY2MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9tZC9yYWlkNS5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDUuYwpAQCAt MTAxNyw3ICsxMDE3LDcgQEAgYWdhaW46CiAJCQkJOiByYWlkNV9lbmRfcmVhZF9yZXF1ZXN0 OwogCQkJYmktPmJpX3ByaXZhdGUgPSBzaDsKIAotCQkJcHJfZGVidWcoIiVzOiBmb3IgJWxs dSBzY2hlZHVsZSBvcCAlbGQgb24gZGlzYyAlZFxuIiwKKwkJCXByX2RlYnVnKCIlczogZm9y ICVsbHUgc2NoZWR1bGUgb3AgJWQgb24gZGlzYyAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgKHVu c2lnbmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yLAogCQkJCWJpLT5iaV9ydywgaSk7CiAJCQlh dG9taWNfaW5jKCZzaC0+Y291bnQpOwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYWdhaW46CiAJ CQlyYmktPmJpX2VuZF9pbyA9IHJhaWQ1X2VuZF93cml0ZV9yZXF1ZXN0OwogCQkJcmJpLT5i aV9wcml2YXRlID0gc2g7CiAKLQkJCXByX2RlYnVnKCIlczogZm9yICVsbHUgc2NoZWR1bGUg b3AgJWxkIG9uICIKKwkJCXByX2RlYnVnKCIlczogZm9yICVsbHUgc2NoZWR1bGUgb3AgJWQg b24gIgogCQkJCSAicmVwbGFjZW1lbnQgZGlzYyAlZFxuIiwKIAkJCQlfX2Z1bmNfXywgKHVu c2lnbmVkIGxvbmcgbG9uZylzaC0+c2VjdG9yLAogCQkJCXJiaS0+YmlfcncsIGkpOwpAQCAt MTEwNCw3ICsxMTA0LDcgQEAgYWdhaW46CiAJCWlmICghcmRldiAmJiAhcnJkZXYpIHsKIAkJ CWlmIChvcF9pc193cml0ZShvcCkpCiAJCQkJc2V0X2JpdChTVFJJUEVfREVHUkFERUQsICZz aC0+c3RhdGUpOwotCQkJcHJfZGVidWcoInNraXAgb3AgJWxkIG9uIGRpc2MgJWQgZm9yIHNl Y3RvciAlbGx1XG4iLAorCQkJcHJfZGVidWcoInNraXAgb3AgJWQgb24gZGlzYyAlZCBmb3Ig c2VjdG9yICVsbHVcbiIsCiAJCQkJYmktPmJpX3J3LCBpLCAodW5zaWduZWQgbG9uZyBsb25n KXNoLT5zZWN0b3IpOwogCQkJY2xlYXJfYml0KFI1X0xPQ0tFRCwgJnNoLT5kZXZbaV0uZmxh Z3MpOwogCQkJc2V0X2JpdChTVFJJUEVfSEFORExFLCAmc2gtPnN0YXRlKTsKZGlmZiAtLWdp dCBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jIGIvZnMvYnRyZnMvY2hlY2staW50ZWdy aXR5LmMKaW5kZXggMTM4Zjc0YS4uOWRlN2YxNSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvY2hl Y2staW50ZWdyaXR5LmMKKysrIGIvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMKQEAgLTI5 ODUsNyArMjk4NSw3IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRfYmlvKHN0cnVj dCBiaW8gKmJpbykKIAkJaWYgKGRldl9zdGF0ZS0+c3RhdGUtPnByaW50X21hc2sgJgogCQkg ICAgQlRSRlNJQ19QUklOVF9NQVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmludGsoS0VSTl9J TkZPCi0JCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9JWQsMHglbHgsIGJpX3ZjbnQ9JXUsIgor CQkJICAgICAgICJzdWJtaXRfYmlvKHJ3PSVkLDB4JXgsIGJpX3ZjbnQ9JXUsIgogCQkJICAg ICAgICIgYmlfc2VjdG9yPSVsbHUgKGJ5dGVuciAlbGx1KSwgYmlfYmRldj0lcClcbiIsCiAJ CQkgICAgICAgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywgYmlvLT5iaV92Y250LAogCQkJICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKQEAgLTMw MjgsNyArMzAyOCw3IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRfYmlvKHN0cnVj dCBiaW8gKmJpbykKIAkJaWYgKGRldl9zdGF0ZS0+c3RhdGUtPnByaW50X21hc2sgJgogCQkg ICAgQlRSRlNJQ19QUklOVF9NQVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmludGsoS0VSTl9J TkZPCi0JCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9JWQsMHglbHggRkxVU0gsIGJkZXY9JXAp XG4iLAorCQkJICAgICAgICJzdWJtaXRfYmlvKHJ3PSVkLDB4JXggRkxVU0gsIGJkZXY9JXAp XG4iLAogCQkJICAgICAgIGJpby0+Ymlfb3AsIGJpby0+YmlfcncsIGJpby0+YmlfYmRldik7 CiAJCWlmICghZGV2X3N0YXRlLT5kdW1teV9ibG9ja19mb3JfYmlvX2JoX2ZsdXNoLmlzX2lv ZG9uZSkgewogCQkJaWYgKChkZXZfc3RhdGUtPnN0YXRlLT5wcmludF9tYXNrICYKZGlmZiAt LWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IDE3Yzcw OTQuLmYxNDVkZDYgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKKysrIGIvZnMvYnRy ZnMvaW5vZGUuYwpAQCAtODA3NCw3ICs4MDc0LDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfZW5k X2Rpb19iaW8oc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKGVycikKIAkJYnRyZnNfd2FybihC VFJGU19JKGRpcC0+aW5vZGUpLT5yb290LT5mc19pbmZvLAotCQkJICAgImRpcmVjdCBJTyBm YWlsZWQgaW5vICVsbHUgcncgJWQsJWx1IHNlY3RvciAlI0x4IGxlbiAldSBlcnIgbm8gJWQi LAorCQkJICAgImRpcmVjdCBJTyBmYWlsZWQgaW5vICVsbHUgcncgJWQsJXUgc2VjdG9yICUj THggbGVuICV1IGVyciBubyAlZCIsCiAJCQkgICBidHJmc19pbm8oZGlwLT5pbm9kZSksIGJp by0+Ymlfb3AsIGJpby0+YmlfcncsCiAJCQkgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+ YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwgZXJyKTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmlvLmggYi9pbmNsdWRlL2xpbnV4L2Jpby5o CmluZGV4IDFlNGIzYjUuLmM5MWFmYzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmlv LmgKKysrIGIvaW5jbHVkZS9saW51eC9iaW8uaApAQCAtNDQsMTggKzQ0LDkgQEAKICNkZWZp bmUgQklPX01BWF9TSVpFCQkoQklPX01BWF9QQUdFUyA8PCBQQUdFX0NBQ0hFX1NISUZUKQog I2RlZmluZSBCSU9fTUFYX1NFQ1RPUlMJCShCSU9fTUFYX1NJWkUgPj4gOSkKIAotLyoKLSAq IHVwcGVyIDE2IGJpdHMgb2YgYmlfcncgZGVmaW5lIHRoZSBpbyBwcmlvcml0eSBvZiB0aGlz IGJpbwotICovCi0jZGVmaW5lIEJJT19QUklPX1NISUZUCSg4ICogc2l6ZW9mKHVuc2lnbmVk IGxvbmcpIC0gSU9QUklPX0JJVFMpCi0jZGVmaW5lIGJpb19wcmlvKGJpbykJKChiaW8pLT5i aV9ydyA+PiBCSU9fUFJJT19TSElGVCkKKyNkZWZpbmUgYmlvX3ByaW8oYmlvKQkJKGJpbykt PmJpX2lvcHJpbwogI2RlZmluZSBiaW9fcHJpb192YWxpZChiaW8pCWlvcHJpb192YWxpZChi aW9fcHJpbyhiaW8pKQotCi0jZGVmaW5lIGJpb19zZXRfcHJpbyhiaW8sIHByaW8pCQlkbyB7 CQkJXAotCVdBUk5fT04ocHJpbyA+PSAoMSA8PCBJT1BSSU9fQklUUykpOwkJCVwKLQkoYmlv KS0+YmlfcncgJj0gKCgxVUwgPDwgQklPX1BSSU9fU0hJRlQpIC0gMSk7CQlcCi0JKGJpbykt PmJpX3J3IHw9ICgodW5zaWduZWQgbG9uZykgKHByaW8pIDw8IEJJT19QUklPX1NISUZUKTsJ XAotfSB3aGlsZSAoMCkKKyNkZWZpbmUgYmlvX3NldF9wcmlvKGJpbywgcHJpbykJKChiaW8p LT5iaV9pb3ByaW8gPSBwcmlvKQogCiAvKgogICogdmFyaW91cyBtZW1iZXIgYWNjZXNzLCBu b3RlIHRoYXQgYmlvX2RhdGEgc2hvdWxkIG9mIGNvdXJzZSBub3QgYmUgdXNlZApkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5 cGVzLmgKaW5kZXggNDZmZTA0ZS4uODJmOWI5NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9ibGtfdHlwZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCkBAIC00OCwx NCArNDgsOSBAQCBzdHJ1Y3QgYmlvIHsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlCSpiaV9iZGV2 OwogCXVuc2lnbmVkIGludAkJYmlfZmxhZ3M7CS8qIHN0YXR1cywgY29tbWFuZCwgZXRjICov CiAJaW50CQkJYmlfZXJyb3I7Ci0JdW5zaWduZWQgbG9uZwkJYmlfcnc7CQkvKiBib3R0b20g Yml0cyBycV9mbGFnc19iaXRzCi0JCQkJCQkgKiB0b3AgYml0cyBwcmlvcml0eQotCQkJCQkJ ICovCi0JLyoKLQkgKiB0aGlzIHdpbGwgYmUgYSB1OCBpbiB0aGUgbmV4dCBwYXRjaGVzIGFu ZCBiaV9ydyBjYW4gYmUgc2hydW5rIHRvCi0JICogYSB1MzIuIEZvciBjb21wYXQgaW4gdGhl c2UgdHJhbnNpc3Rpb25hbCBwYXRjaGVzIG9wIGlzIGEgaW50IGhlcmUuCi0JICovCi0JaW50 CQkJYmlfb3A7CQkvKiBSRVFfT1AgKi8KKwl1bnNpZ25lZCBpbnQJCWJpX3J3OwkJLyogcnFf ZmxhZ19iaXRzICovCisJdW5zaWduZWQgc2hvcnQJCWJpX2lvcHJpbzsKKwl1OAkJCWJpX29w OwkJLyogUkVRX09QICovCiAKIAogCXN0cnVjdCBidmVjX2l0ZXIJYmlfaXRlcjsKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o CmluZGV4IDg1OGYxZmMuLjE2NTkyYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmxr ZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApAQCAtOTUsNyArOTUsNyBAQCBz dHJ1Y3QgcmVxdWVzdCB7CiAJc3RydWN0IHJlcXVlc3RfcXVldWUgKnE7CiAJc3RydWN0IGJs a19tcV9jdHggKm1xX2N0eDsKIAotCWludCBvcDsKKwl1OCBvcDsKIAl1NjQgY21kX2ZsYWdz OwogCXVuc2lnbmVkIGNtZF90eXBlOwogCXVuc2lnbmVkIGxvbmcgYXRvbWljX2ZsYWdzOwot LSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwOC1idHJmcy1zZXQtYmlfb3AtdG8tUkVRX09QLnBh dGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAxNDUxNjYAMTI2MzIxNTQyNTMA MDE2NDcxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gYzk3YjBhMTZm ZmZhZTM2ZmRhM2U2YWJiMTdmNGU3YjgzOTU5ODI1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogV2Vk LCA5IERlYyAyMDE1IDE5OjM3OjA3IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAwOC8zMF0gYnRy ZnM6IHNldCBiaV9vcCB0byBSRVFfT1AKClRoaXMgcGF0Y2ggaGFzIGJ0cmZzIHNldCB0aGUg YmlvIGJpX29wIHRvIGEgUkVRX09QLCBhbmQKcnFfZmxhZ19iaXRzIHRvIGJpX3J3LgoKU2ln bmVkLW9mZi1ieTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVkaGF0LmNvbT4KLS0tCiBm cy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYyB8IDQxICsrKysrKysrKysrLS0tLS0tLS0tLS0K IGZzL2J0cmZzL2NvbXByZXNzaW9uLmMgICAgIHwgMTMgKysrKy0tLQogZnMvYnRyZnMvZGlz ay1pby5jICAgICAgICAgfCAzNyArKysrKysrKystLS0tLS0tLS0tLQogZnMvYnRyZnMvZGlz ay1pby5oICAgICAgICAgfCAgMiArLQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyAgICAgfCAg MiArLQogZnMvYnRyZnMvZXh0ZW50X2lvLmMgICAgICAgfCA4NiArKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uaCAg ICAgICB8ICA2ICsrLS0KIGZzL2J0cmZzL2lub2RlLmMgICAgICAgICAgIHwgNjIgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiBmcy9idHJmcy9yYWlkNTYuYyAgICAgICAg ICB8IDEwICsrKy0tLQogZnMvYnRyZnMvc2NydWIuYyAgICAgICAgICAgfCAgOSArKy0tLQog ZnMvYnRyZnMvdm9sdW1lcy5jICAgICAgICAgfCA3OSArKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0KIGZzL2J0cmZzL3ZvbHVtZXMuaCAgICAgICAgIHwgIDYg KystLQogMTIgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDE3NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYyBiL2ZzL2J0 cmZzL2NoZWNrLWludGVncml0eS5jCmluZGV4IDRkNTQ1OTMuLjEzOGY3NGEgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jCisrKyBiL2ZzL2J0cmZzL2NoZWNrLWlu dGVncml0eS5jCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RydWN0IGJ0cmZzaWNfYmxvY2sgewog CQliaW9fZW5kX2lvX3QgKmJpbzsKIAkJYmhfZW5kX2lvX3QgKmJoOwogCX0gb3JpZ19iaW9f YmhfZW5kX2lvOwotCWludCBzdWJtaXRfYmlvX2JoX3J3OworCWludCBzdWJtaXRfYmlvX2Jo X29wX2ZsYWdzOwogCXU2NCBmbHVzaF9nZW47IC8qIG9ubHkgdmFsaWQgaWYgIW5ldmVyX3dy aXR0ZW4gKi8KIH07CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgdm9pZCBidHJmc2lj X3Byb2Nlc3Nfd3JpdHRlbl9ibG9jayhzdHJ1Y3QgYnRyZnNpY19kZXZfc3RhdGUgKmRldl9z dGF0ZSwKIAkJCQkJICB1bnNpZ25lZCBpbnQgbnVtX3BhZ2VzLAogCQkJCQkgIHN0cnVjdCBi aW8gKmJpbywgaW50ICpiaW9faXNfcGF0Y2hlZCwKIAkJCQkJICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoLAotCQkJCQkgIGludCBzdWJtaXRfYmlvX2JoX3J3KTsKKwkJCQkJICBpbnQgc3Vi bWl0X2Jpb19iaF9vcF9mbGFncyk7CiBzdGF0aWMgaW50IGJ0cmZzaWNfcHJvY2Vzc193cml0 dGVuX3N1cGVyYmxvY2soCiAJCXN0cnVjdCBidHJmc2ljX3N0YXRlICpzdGF0ZSwKIAkJc3Ry dWN0IGJ0cmZzaWNfYmxvY2sgKmNvbnN0IGJsb2NrLApAQCAtNDE4LDcgKzQxOCw3IEBAIHN0 YXRpYyB2b2lkIGJ0cmZzaWNfYmxvY2tfaW5pdChzdHJ1Y3QgYnRyZnNpY19ibG9jayAqYikK IAlJTklUX0xJU1RfSEVBRCgmYi0+YWxsX2Jsb2Nrc19ub2RlKTsKIAlJTklUX0xJU1RfSEVB RCgmYi0+cmVmX3RvX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZiLT5yZWZfZnJvbV9saXN0 KTsKLQliLT5zdWJtaXRfYmlvX2JoX3J3ID0gMDsKKwliLT5zdWJtaXRfYmlvX2JoX29wX2Zs YWdzID0gMDsKIAliLT5mbHVzaF9nZW4gPSAwOwogfQogCkBAIC0xNjgzLDcgKzE2ODMsNyBA QCBzdGF0aWMgaW50IGJ0cmZzaWNfcmVhZF9ibG9jayhzdHJ1Y3QgYnRyZnNpY19zdGF0ZSAq c3RhdGUsCiAJCX0KIAkJYmlvLT5iaV9iZGV2ID0gYmxvY2tfY3R4LT5kZXYtPmJkZXY7CiAJ CWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBkZXZfYnl0ZW5yID4+IDk7Ci0JCWJpby0+Ymlf cncgfD0gUkVBRDsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOwogCiAJCWZvciAoaiA9 IGk7IGogPCBudW1fcGFnZXM7IGorKykgewogCQkJcmV0ID0gYmlvX2FkZF9wYWdlKGJpbywg YmxvY2tfY3R4LT5wYWdldltqXSwKQEAgLTE4MjEsNyArMTgyMSw3IEBAIHN0YXRpYyB2b2lk IGJ0cmZzaWNfcHJvY2Vzc193cml0dGVuX2Jsb2NrKHN0cnVjdCBidHJmc2ljX2Rldl9zdGF0 ZSAqZGV2X3N0YXRlLAogCQkJCQkgIHVuc2lnbmVkIGludCBudW1fcGFnZXMsCiAJCQkJCSAg c3RydWN0IGJpbyAqYmlvLCBpbnQgKmJpb19pc19wYXRjaGVkLAogCQkJCQkgIHN0cnVjdCBi dWZmZXJfaGVhZCAqYmgsCi0JCQkJCSAgaW50IHN1Ym1pdF9iaW9fYmhfcncpCisJCQkJCSAg aW50IHN1Ym1pdF9iaW9fYmhfb3BfZmxhZ3MpCiB7CiAJaW50IGlzX21ldGFkYXRhOwogCXN0 cnVjdCBidHJmc2ljX2Jsb2NrICpibG9jazsKQEAgLTIwMzksNyArMjAzOSw3IEBAIGFnYWlu OgogCQl9CiAKIAkJYmxvY2stPmZsdXNoX2dlbiA9IGRldl9zdGF0ZS0+bGFzdF9mbHVzaF9n ZW4gKyAxOwotCQlibG9jay0+c3VibWl0X2Jpb19iaF9ydyA9IHN1Ym1pdF9iaW9fYmhfcnc7 CisJCWJsb2NrLT5zdWJtaXRfYmlvX2JoX29wX2ZsYWdzID0gc3VibWl0X2Jpb19iaF9vcF9m bGFnczsKIAkJaWYgKGlzX21ldGFkYXRhKSB7CiAJCQlibG9jay0+bG9naWNhbF9ieXRlbnIg PSBieXRlbnI7CiAJCQlibG9jay0+aXNfbWV0YWRhdGEgPSAxOwpAQCAtMjE0Miw3ICsyMTQy LDcgQEAgYWdhaW46CiAJCWJsb2NrLT5pb2RvbmVfd19lcnJvciA9IDA7CiAJCWJsb2NrLT5t aXJyb3JfbnVtID0gMDsJLyogdW5rbm93biAqLwogCQlibG9jay0+Zmx1c2hfZ2VuID0gZGV2 X3N0YXRlLT5sYXN0X2ZsdXNoX2dlbiArIDE7Ci0JCWJsb2NrLT5zdWJtaXRfYmlvX2JoX3J3 ID0gc3VibWl0X2Jpb19iaF9ydzsKKwkJYmxvY2stPnN1Ym1pdF9iaW9fYmhfb3BfZmxhZ3Mg PSBzdWJtaXRfYmlvX2JoX29wX2ZsYWdzOwogCQlpZiAoTlVMTCAhPSBiaW8pIHsKIAkJCWJs b2NrLT5pc19pb2RvbmUgPSAwOwogCQkJQlVHX09OKE5VTEwgPT0gYmlvX2lzX3BhdGNoZWQp OwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgc3RhdGljIHZvaWQgYnRyZnNpY19iaW9fZW5kX2lv KHN0cnVjdCBiaW8gKmJwKQogCQkJICAgICAgIGJsb2NrLT5kZXZfYnl0ZW5yLCBibG9jay0+ bWlycm9yX251bSk7CiAJCW5leHRfYmxvY2sgPSBibG9jay0+bmV4dF9pbl9zYW1lX2JpbzsK IAkJYmxvY2stPmlvZG9uZV93X2Vycm9yID0gaW9kb25lX3dfZXJyb3I7Ci0JCWlmIChibG9j ay0+c3VibWl0X2Jpb19iaF9ydyAmIFJFUV9GTFVTSCkgeworCQlpZiAoYmxvY2stPnN1Ym1p dF9iaW9fYmhfb3BfZmxhZ3MgJiBSRVFfRkxVU0gpIHsKIAkJCWRldl9zdGF0ZS0+bGFzdF9m bHVzaF9nZW4rKzsKIAkJCWlmICgoZGV2X3N0YXRlLT5zdGF0ZS0+cHJpbnRfbWFzayAmCiAJ CQkgICAgIEJUUkZTSUNfUFJJTlRfTUFTS19FTkRfSU9fQklPX0JIKSkKQEAgLTIyNDYsNyAr MjI0Niw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzaWNfYmlvX2VuZF9pbyhzdHJ1Y3QgYmlvICpi cCkKIAkJCQkgICAgICAgZGV2X3N0YXRlLT5uYW1lLAogCQkJCSAgICAgICBkZXZfc3RhdGUt Pmxhc3RfZmx1c2hfZ2VuKTsKIAkJfQotCQlpZiAoYmxvY2stPnN1Ym1pdF9iaW9fYmhfcncg JiBSRVFfRlVBKQorCQlpZiAoYmxvY2stPnN1Ym1pdF9iaW9fYmhfb3BfZmxhZ3MgJiBSRVFf RlVBKQogCQkJYmxvY2stPmZsdXNoX2dlbiA9IDA7IC8qIEZVQSBjb21wbGV0ZWQgbWVhbnMg YmxvY2sgaXMKIAkJCQkJICAgICAgICogb24gZGlzayAqLwogCQlibG9jay0+aXNfaW9kb25l ID0gMTsgLyogZm9yIEZMVVNILCB0aGlzIHJlbGVhc2VzIHRoZSBibG9jayAqLwpAQCAtMjI3 Myw3ICsyMjczLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNpY19iaF9lbmRfaW8oc3RydWN0IGJ1 ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKQogCQkgICAgICAgYmxvY2stPmRldl9ieXRl bnIsIGJsb2NrLT5taXJyb3JfbnVtKTsKIAogCWJsb2NrLT5pb2RvbmVfd19lcnJvciA9IGlv ZG9uZV93X2Vycm9yOwotCWlmIChibG9jay0+c3VibWl0X2Jpb19iaF9ydyAmIFJFUV9GTFVT SCkgeworCWlmIChibG9jay0+c3VibWl0X2Jpb19iaF9vcF9mbGFncyAmIFJFUV9GTFVTSCkg ewogCQlkZXZfc3RhdGUtPmxhc3RfZmx1c2hfZ2VuKys7CiAJCWlmICgoZGV2X3N0YXRlLT5z dGF0ZS0+cHJpbnRfbWFzayAmCiAJCSAgICAgQlRSRlNJQ19QUklOVF9NQVNLX0VORF9JT19C SU9fQkgpKQpAQCAtMjI4MSw3ICsyMjgxLDcgQEAgc3RhdGljIHZvaWQgYnRyZnNpY19iaF9l bmRfaW8oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKQogCQkJICAgICAg ICJiaF9lbmRfaW8oKSBuZXcgJXMgZmx1c2hfZ2VuPSVsbHVcbiIsCiAJCQkgICAgICAgZGV2 X3N0YXRlLT5uYW1lLCBkZXZfc3RhdGUtPmxhc3RfZmx1c2hfZ2VuKTsKIAl9Ci0JaWYgKGJs b2NrLT5zdWJtaXRfYmlvX2JoX3J3ICYgUkVRX0ZVQSkKKwlpZiAoYmxvY2stPnN1Ym1pdF9i aW9fYmhfb3BfZmxhZ3MgJiBSRVFfRlVBKQogCQlibG9jay0+Zmx1c2hfZ2VuID0gMDsgLyog RlVBIGNvbXBsZXRlZCBtZWFucyBibG9jayBpcyBvbiBkaXNrICovCiAKIAliaC0+Yl9wcml2 YXRlID0gYmxvY2stPm9yaWdfYmlvX2JoX3ByaXZhdGU7CkBAIC0yOTQ5LDcgKzI5NDksNyBA QCBpbnQgYnRyZnNpY19zdWJtaXRfYmgoaW50IG9wLCBpbnQgb3BfZmxhZ3MsIHN0cnVjdCBi dWZmZXJfaGVhZCAqYmgpCiAJCQlibG9jay0+bmV2ZXJfd3JpdHRlbiA9IDA7CiAJCQlibG9j ay0+aW9kb25lX3dfZXJyb3IgPSAwOwogCQkJYmxvY2stPmZsdXNoX2dlbiA9IGRldl9zdGF0 ZS0+bGFzdF9mbHVzaF9nZW4gKyAxOwotCQkJYmxvY2stPnN1Ym1pdF9iaW9fYmhfcncgPSBv cF9mbGFnczsKKwkJCWJsb2NrLT5zdWJtaXRfYmlvX2JoX29wX2ZsYWdzID0gb3BfZmxhZ3M7 CiAJCQlibG9jay0+b3JpZ19iaW9fYmhfcHJpdmF0ZSA9IGJoLT5iX3ByaXZhdGU7CiAJCQli bG9jay0+b3JpZ19iaW9fYmhfZW5kX2lvLmJoID0gYmgtPmJfZW5kX2lvOwogCQkJYmxvY2st Pm5leHRfaW5fc2FtZV9iaW8gPSBOVUxMOwpAQCAtMjk2NCw3ICsyOTY0LDYgQEAgaW50IGJ0 cmZzaWNfc3VibWl0X2JoKGludCBvcCwgaW50IG9wX2ZsYWdzLCBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoKQogc3RhdGljIHZvaWQgX19idHJmc2ljX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAq YmlvKQogewogCXN0cnVjdCBidHJmc2ljX2Rldl9zdGF0ZSAqZGV2X3N0YXRlOwotCWludCBy dyA9IGJpby0+Ymlfcnc7CiAKIAlpZiAoIWJ0cmZzaWNfaXNfaW5pdGlhbGl6ZWQpCiAJCXJl dHVybjsKQEAgLTI5NzQsNyArMjk3Myw3IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJt aXRfYmlvKHN0cnVjdCBiaW8gKmJpbykKIAkgKiBidHJmc2ljX21vdW50KCksIHRoaXMgbWln aHQgcmV0dXJuIE5VTEwgKi8KIAlkZXZfc3RhdGUgPSBidHJmc2ljX2Rldl9zdGF0ZV9sb29r dXAoYmlvLT5iaV9iZGV2KTsKIAlpZiAoTlVMTCAhPSBkZXZfc3RhdGUgJiYKLQkgICAgKHJ3 ICYgV1JJVEUpICYmIE5VTEwgIT0gYmlvLT5iaV9pb192ZWMpIHsKKwkgICAgKGJpby0+Ymlf b3AgPT0gUkVRX09QX1dSSVRFKSAmJiBOVUxMICE9IGJpby0+YmlfaW9fdmVjKSB7CiAJCXVu c2lnbmVkIGludCBpOwogCQl1NjQgZGV2X2J5dGVucjsKIAkJdTY0IGN1cl9ieXRlbnI7CkBA IC0yOTg2LDkgKzI5ODUsOSBAQCBzdGF0aWMgdm9pZCBfX2J0cmZzaWNfc3VibWl0X2Jpbyhz dHJ1Y3QgYmlvICpiaW8pCiAJCWlmIChkZXZfc3RhdGUtPnN0YXRlLT5wcmludF9tYXNrICYK IAkJICAgIEJUUkZTSUNfUFJJTlRfTUFTS19TVUJNSVRfQklPX0JIKQogCQkJcHJpbnRrKEtF Uk5fSU5GTwotCQkJICAgICAgICJzdWJtaXRfYmlvKHJ3PTB4JXgsIGJpX3ZjbnQ9JXUsIgor CQkJICAgICAgICJzdWJtaXRfYmlvKHJ3PSVkLDB4JWx4LCBiaV92Y250PSV1LCIKIAkJCSAg ICAgICAiIGJpX3NlY3Rvcj0lbGx1IChieXRlbnIgJWxsdSksIGJpX2JkZXY9JXApXG4iLAot CQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsCisJCQkgICAgICAgYmlvLT5iaV9vcCwgYmlv LT5iaV9ydywgYmlvLT5iaV92Y250LAogCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcp YmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCSAgICAgICBkZXZfYnl0ZW5yLCBiaW8tPmJp X2JkZXYpOwogCkBAIC0zMDE5LDE4ICszMDE4LDE4IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNp Y19zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbykKIAkJYnRyZnNpY19wcm9jZXNzX3dyaXR0 ZW5fYmxvY2soZGV2X3N0YXRlLCBkZXZfYnl0ZW5yLAogCQkJCQkgICAgICBtYXBwZWRfZGF0 YXYsIGJpby0+YmlfdmNudCwKIAkJCQkJICAgICAgYmlvLCAmYmlvX2lzX3BhdGNoZWQsCi0J CQkJCSAgICAgIE5VTEwsIHJ3KTsKKwkJCQkJICAgICAgTlVMTCwgYmlvLT5iaV9ydyk7CiAJ CXdoaWxlIChpID4gMCkgewogCQkJaS0tOwogCQkJa3VubWFwKGJpby0+YmlfaW9fdmVjW2ld LmJ2X3BhZ2UpOwogCQl9CiAJCWtmcmVlKG1hcHBlZF9kYXRhdik7Ci0JfSBlbHNlIGlmIChO VUxMICE9IGRldl9zdGF0ZSAmJiAocncgJiBSRVFfRkxVU0gpKSB7CisJfSBlbHNlIGlmIChO VUxMICE9IGRldl9zdGF0ZSAmJiAoYmlvLT5iaV9ydyAmIFJFUV9GTFVTSCkpIHsKIAkJaWYg KGRldl9zdGF0ZS0+c3RhdGUtPnByaW50X21hc2sgJgogCQkgICAgQlRSRlNJQ19QUklOVF9N QVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmludGsoS0VSTl9JTkZPCi0JCQkgICAgICAgInN1 Ym1pdF9iaW8ocnc9MHgleCBGTFVTSCwgYmRldj0lcClcbiIsCi0JCQkgICAgICAgcncsIGJp by0+YmlfYmRldik7CisJCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9JWQsMHglbHggRkxVU0gs IGJkZXY9JXApXG4iLAorCQkJICAgICAgIGJpby0+Ymlfb3AsIGJpby0+YmlfcncsIGJpby0+ YmlfYmRldik7CiAJCWlmICghZGV2X3N0YXRlLT5kdW1teV9ibG9ja19mb3JfYmlvX2JoX2Zs dXNoLmlzX2lvZG9uZSkgewogCQkJaWYgKChkZXZfc3RhdGUtPnN0YXRlLT5wcmludF9tYXNr ICYKIAkJCSAgICAgKEJUUkZTSUNfUFJJTlRfTUFTS19TVUJNSVRfQklPX0JIIHwKQEAgLTMw NDgsNyArMzA0Nyw3IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRfYmlvKHN0cnVj dCBiaW8gKmJpbykKIAkJCWJsb2NrLT5uZXZlcl93cml0dGVuID0gMDsKIAkJCWJsb2NrLT5p b2RvbmVfd19lcnJvciA9IDA7CiAJCQlibG9jay0+Zmx1c2hfZ2VuID0gZGV2X3N0YXRlLT5s YXN0X2ZsdXNoX2dlbiArIDE7Ci0JCQlibG9jay0+c3VibWl0X2Jpb19iaF9ydyA9IHJ3Owor CQkJYmxvY2stPnN1Ym1pdF9iaW9fYmhfb3BfZmxhZ3MgPSBiaW8tPmJpX3J3OwogCQkJYmxv Y2stPm9yaWdfYmlvX2JoX3ByaXZhdGUgPSBiaW8tPmJpX3ByaXZhdGU7CiAJCQlibG9jay0+ b3JpZ19iaW9fYmhfZW5kX2lvLmJpbyA9IGJpby0+YmlfZW5kX2lvOwogCQkJYmxvY2stPm5l eHRfaW5fc2FtZV9iaW8gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY29tcHJlc3Np b24uYyBiL2ZzL2J0cmZzL2NvbXByZXNzaW9uLmMKaW5kZXggYzQ3M2M0Mi4uMzExMmNjMyAx MDA2NDQKLS0tIGEvZnMvYnRyZnMvY29tcHJlc3Npb24uYworKysgYi9mcy9idHJmcy9jb21w cmVzc2lvbi5jCkBAIC0zNjMsNiArMzYzLDcgQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVz c2VkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwKIAkJa2ZyZWUoY2Ip OwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsK IAliaW8tPmJpX3ByaXZhdGUgPSBjYjsKIAliaW8tPmJpX2VuZF9pbyA9IGVuZF9jb21wcmVz c2VkX2Jpb193cml0ZTsKIAlhdG9taWNfaW5jKCZjYi0+cGVuZGluZ19iaW9zKTsKQEAgLTQw MSwxMyArNDAyLDE0IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJlc3NlZF93cml0ZShzdHJ1 Y3QgaW5vZGUgKmlub2RlLCB1NjQgc3RhcnQsCiAJCQkJQlVHX09OKHJldCk7IC8qIC1FTk9N RU0gKi8KIAkJCX0KIAotCQkJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290LCBXUklURSwgYmlv LCAwLCAxKTsKKwkJCXJldCA9IGJ0cmZzX21hcF9iaW8ocm9vdCwgYmlvLCAwLCAxKTsKIAkJ CUJVR19PTihyZXQpOyAvKiAtRU5PTUVNICovCiAKIAkJCWJpb19wdXQoYmlvKTsKIAogCQkJ YmlvID0gY29tcHJlc3NlZF9iaW9fYWxsb2MoYmRldiwgZmlyc3RfYnl0ZSwgR0ZQX05PRlMp OwogCQkJQlVHX09OKCFiaW8pOworCQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJ CWJpby0+YmlfcHJpdmF0ZSA9IGNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfY29tcHJl c3NlZF9iaW9fd3JpdGU7CiAJCQliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBQQUdFX0NBQ0hF X1NJWkUsIDApOwpAQCAtNDMxLDcgKzQzMyw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJl c3NlZF93cml0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgc3RhcnQsCiAJCUJVR19PTihy ZXQpOyAvKiAtRU5PTUVNICovCiAJfQogCi0JcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290LCBX UklURSwgYmlvLCAwLCAxKTsKKwlyZXQgPSBidHJmc19tYXBfYmlvKHJvb3QsIGJpbywgMCwg MSk7CiAJQlVHX09OKHJldCk7IC8qIC1FTk9NRU0gKi8KIAogCWJpb19wdXQoYmlvKTsKQEAg LTY1MCw2ICs2NTIsNyBAQCBpbnQgYnRyZnNfc3VibWl0X2NvbXByZXNzZWRfcmVhZChzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYmlvICpiaW8sCiAJY29tcF9iaW8gPSBjb21wcmVz c2VkX2Jpb19hbGxvYyhiZGV2LCBjdXJfZGlza19ieXRlLCBHRlBfTk9GUyk7CiAJaWYgKCFj b21wX2JpbykKIAkJZ290byBmYWlsMjsKKwljb21wX2Jpby0+Ymlfb3AgPSBSRVFfT1BfUkVB RDsKIAljb21wX2Jpby0+YmlfcHJpdmF0ZSA9IGNiOwogCWNvbXBfYmlvLT5iaV9lbmRfaW8g PSBlbmRfY29tcHJlc3NlZF9iaW9fcmVhZDsKIAlhdG9taWNfaW5jKCZjYi0+cGVuZGluZ19i aW9zKTsKQEAgLTY5MSw4ICs2OTQsNyBAQCBpbnQgYnRyZnNfc3VibWl0X2NvbXByZXNzZWRf cmVhZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQlzdW1zICs9 IERJVl9ST1VORF9VUChjb21wX2Jpby0+YmlfaXRlci5iaV9zaXplLAogCQkJCQkgICAgIHJv b3QtPnNlY3RvcnNpemUpOwogCi0JCQlyZXQgPSBidHJmc19tYXBfYmlvKHJvb3QsIFJFQUQs IGNvbXBfYmlvLAotCQkJCQkgICAgbWlycm9yX251bSwgMCk7CisJCQlyZXQgPSBidHJmc19t YXBfYmlvKHJvb3QsIGNvbXBfYmlvLCBtaXJyb3JfbnVtLCAwKTsKIAkJCWlmIChyZXQpIHsK IAkJCQliaW8tPmJpX2Vycm9yID0gcmV0OwogCQkJCWJpb19lbmRpbyhjb21wX2Jpbyk7CkBA IC03MDMsNiArNzA1LDcgQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJpbyAqYmlvLAogCQkJY29tcF9iaW8gPSBjb21w cmVzc2VkX2Jpb19hbGxvYyhiZGV2LCBjdXJfZGlza19ieXRlLAogCQkJCQkJCUdGUF9OT0ZT KTsKIAkJCUJVR19PTighY29tcF9iaW8pOworCQkJY29tcF9iaW8tPmJpX29wID0gUkVRX09Q X1JFQUQ7CiAJCQljb21wX2Jpby0+YmlfcHJpdmF0ZSA9IGNiOwogCQkJY29tcF9iaW8tPmJp X2VuZF9pbyA9IGVuZF9jb21wcmVzc2VkX2Jpb19yZWFkOwogCkBAIC03MjEsNyArNzI0LDcg QEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQoc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGJpbyAqYmlvLAogCQlCVUdfT04ocmV0KTsgLyogLUVOT01FTSAqLwogCX0K IAotCXJldCA9IGJ0cmZzX21hcF9iaW8ocm9vdCwgUkVBRCwgY29tcF9iaW8sIG1pcnJvcl9u dW0sIDApOworCXJldCA9IGJ0cmZzX21hcF9iaW8ocm9vdCwgY29tcF9iaW8sIG1pcnJvcl9u dW0sIDApOwogCWlmIChyZXQpIHsKIAkJYmlvLT5iaV9lcnJvciA9IHJldDsKIAkJYmlvX2Vu ZGlvKGNvbXBfYmlvKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2Rpc2staW8uYyBiL2ZzL2J0 cmZzL2Rpc2staW8uYwppbmRleCAyM2VmNDEyLi45ZmQzYjEyIDEwMDY0NAotLS0gYS9mcy9i dHJmcy9kaXNrLWlvLmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC0xMTgsNyArMTE4 LDYgQEAgc3RydWN0IGFzeW5jX3N1Ym1pdF9iaW8gewogCXN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKIAlleHRlbnRfc3VibWl0X2Jpb19ob29rX3QgKnN1Ym1pdF9iaW9fc3RhcnQ7CiAJZXh0 ZW50X3N1Ym1pdF9iaW9faG9va190ICpzdWJtaXRfYmlvX2RvbmU7Ci0JaW50IHJ3OwogCWlu dCBtaXJyb3JfbnVtOwogCXVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzOwogCS8qCkBAIC03MTIs NyArNzExLDcgQEAgc3RhdGljIHZvaWQgZW5kX3dvcmtxdWV1ZV9iaW8oc3RydWN0IGJpbyAq YmlvKQogCWZzX2luZm8gPSBlbmRfaW9fd3EtPmluZm87CiAJZW5kX2lvX3dxLT5lcnJvciA9 IGJpby0+YmlfZXJyb3I7CiAKLQlpZiAoYmlvLT5iaV9ydyAmIFJFUV9XUklURSkgeworCWlm IChiaW8tPmJpX29wID09IFJFUV9PUF9XUklURSkgewogCQlpZiAoZW5kX2lvX3dxLT5tZXRh ZGF0YSA9PSBCVFJGU19XUV9FTkRJT19NRVRBREFUQSkgewogCQkJd3EgPSBmc19pbmZvLT5l bmRpb19tZXRhX3dyaXRlX3dvcmtlcnM7CiAJCQlmdW5jID0gYnRyZnNfZW5kaW9fbWV0YV93 cml0ZV9oZWxwZXI7CkBAIC03ODIsNyArNzgxLDcgQEAgc3RhdGljIHZvaWQgcnVuX29uZV9h c3luY19zdGFydChzdHJ1Y3QgYnRyZnNfd29yayAqd29yaykKIAlpbnQgcmV0OwogCiAJYXN5 bmMgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0ICBhc3luY19zdWJtaXRfYmlvLCB3b3Jr KTsKLQlyZXQgPSBhc3luYy0+c3VibWl0X2Jpb19zdGFydChhc3luYy0+aW5vZGUsIGFzeW5j LT5ydywgYXN5bmMtPmJpbywKKwlyZXQgPSBhc3luYy0+c3VibWl0X2Jpb19zdGFydChhc3lu Yy0+aW5vZGUsIGFzeW5jLT5iaW8sCiAJCQkJICAgICAgYXN5bmMtPm1pcnJvcl9udW0sIGFz eW5jLT5iaW9fZmxhZ3MsCiAJCQkJICAgICAgYXN5bmMtPmJpb19vZmZzZXQpOwogCWlmIChy ZXQpCkBAIC04MTUsOSArODE0LDggQEAgc3RhdGljIHZvaWQgcnVuX29uZV9hc3luY19kb25l KHN0cnVjdCBidHJmc193b3JrICp3b3JrKQogCQlyZXR1cm47CiAJfQogCi0JYXN5bmMtPnN1 Ym1pdF9iaW9fZG9uZShhc3luYy0+aW5vZGUsIGFzeW5jLT5ydywgYXN5bmMtPmJpbywKLQkJ CSAgICAgICBhc3luYy0+bWlycm9yX251bSwgYXN5bmMtPmJpb19mbGFncywKLQkJCSAgICAg ICBhc3luYy0+YmlvX29mZnNldCk7CisJYXN5bmMtPnN1Ym1pdF9iaW9fZG9uZShhc3luYy0+ aW5vZGUsIGFzeW5jLT5iaW8sIGFzeW5jLT5taXJyb3JfbnVtLAorCQkJICAgICAgIGFzeW5j LT5iaW9fZmxhZ3MsIGFzeW5jLT5iaW9fb2Zmc2V0KTsKIH0KIAogc3RhdGljIHZvaWQgcnVu X29uZV9hc3luY19mcmVlKHN0cnVjdCBidHJmc193b3JrICp3b3JrKQpAQCAtODI5LDcgKzgy Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1bl9vbmVfYXN5bmNfZnJlZShzdHJ1Y3QgYnRyZnNfd29y ayAqd29yaykKIH0KIAogaW50IGJ0cmZzX3dxX3N1Ym1pdF9iaW8oc3RydWN0IGJ0cmZzX2Zz X2luZm8gKmZzX2luZm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCi0JCQlpbnQgcncsIHN0cnVj dCBiaW8gKmJpbywgaW50IG1pcnJvcl9udW0sCisJCQlzdHJ1Y3QgYmlvICpiaW8sIGludCBt aXJyb3JfbnVtLAogCQkJdW5zaWduZWQgbG9uZyBiaW9fZmxhZ3MsCiAJCQl1NjQgYmlvX29m ZnNldCwKIAkJCWV4dGVudF9zdWJtaXRfYmlvX2hvb2tfdCAqc3VibWl0X2Jpb19zdGFydCwK QEAgLTg0Miw3ICs4NDAsNiBAQCBpbnQgYnRyZnNfd3Ffc3VibWl0X2JpbyhzdHJ1Y3QgYnRy ZnNfZnNfaW5mbyAqZnNfaW5mbywgc3RydWN0IGlub2RlICppbm9kZSwKIAkJcmV0dXJuIC1F Tk9NRU07CiAKIAlhc3luYy0+aW5vZGUgPSBpbm9kZTsKLQlhc3luYy0+cncgPSBydzsKIAlh c3luYy0+YmlvID0gYmlvOwogCWFzeW5jLT5taXJyb3JfbnVtID0gbWlycm9yX251bTsKIAlh c3luYy0+c3VibWl0X2Jpb19zdGFydCA9IHN1Ym1pdF9iaW9fc3RhcnQ7CkBAIC04NTgsNyAr ODU1LDcgQEAgaW50IGJ0cmZzX3dxX3N1Ym1pdF9iaW8oc3RydWN0IGJ0cmZzX2ZzX2luZm8g KmZzX2luZm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAKIAlhdG9taWNfaW5jKCZmc19pbmZv LT5ucl9hc3luY19zdWJtaXRzKTsKIAotCWlmIChydyAmIFJFUV9TWU5DKQorCWlmIChiaW8t PmJpX3J3ICYgUkVRX1NZTkMpCiAJCWJ0cmZzX3NldF93b3JrX2hpZ2hfcHJpb3JpdHkoJmFz eW5jLT53b3JrKTsKIAogCWJ0cmZzX3F1ZXVlX3dvcmsoZnNfaW5mby0+d29ya2VycywgJmFz eW5jLT53b3JrKTsKQEAgLTg4OCw5ICs4ODUsOCBAQCBzdGF0aWMgaW50IGJ0cmVlX2NzdW1f b25lX2JpbyhzdHJ1Y3QgYmlvICpiaW8pCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlu dCBfX2J0cmVlX3N1Ym1pdF9iaW9fc3RhcnQoc3RydWN0IGlub2RlICppbm9kZSwgaW50IHJ3 LAotCQkJCSAgICBzdHJ1Y3QgYmlvICpiaW8sIGludCBtaXJyb3JfbnVtLAotCQkJCSAgICB1 bnNpZ25lZCBsb25nIGJpb19mbGFncywKK3N0YXRpYyBpbnQgX19idHJlZV9zdWJtaXRfYmlv X3N0YXJ0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKKwkJCQkgICAg aW50IG1pcnJvcl9udW0sIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzLAogCQkJCSAgICB1NjQg YmlvX29mZnNldCkKIHsKIAkvKgpAQCAtOTAwLDcgKzg5Niw3IEBAIHN0YXRpYyBpbnQgX19i dHJlZV9zdWJtaXRfYmlvX3N0YXJ0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBydywKIAly ZXR1cm4gYnRyZWVfY3N1bV9vbmVfYmlvKGJpbyk7CiB9CiAKLXN0YXRpYyBpbnQgX19idHJl ZV9zdWJtaXRfYmlvX2RvbmUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IHJ3LCBzdHJ1Y3Qg YmlvICpiaW8sCitzdGF0aWMgaW50IF9fYnRyZWVfc3VibWl0X2Jpb19kb25lKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJCQkgaW50IG1pcnJvcl9udW0sIHVu c2lnbmVkIGxvbmcgYmlvX2ZsYWdzLAogCQkJCSB1NjQgYmlvX29mZnNldCkKIHsKQEAgLTkx MCw3ICs5MDYsNyBAQCBzdGF0aWMgaW50IF9fYnRyZWVfc3VibWl0X2Jpb19kb25lKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCBydywgc3RydWN0IGJpbyAqYmlvLAogCSAqIHdoZW4gd2Un cmUgY2FsbGVkIGZvciBhIHdyaXRlLCB3ZSdyZSBhbHJlYWR5IGluIHRoZSBhc3luYwogCSAq IHN1Ym1pc3Npb24gY29udGV4dC4gIEp1c3QganVtcCBpbnRvIGJ0cmZzX21hcF9iaW8KIAkg Ki8KLQlyZXQgPSBidHJmc19tYXBfYmlvKEJUUkZTX0koaW5vZGUpLT5yb290LCBydywgYmlv LCBtaXJyb3JfbnVtLCAxKTsKKwlyZXQgPSBidHJmc19tYXBfYmlvKEJUUkZTX0koaW5vZGUp LT5yb290LCBiaW8sIG1pcnJvcl9udW0sIDEpOwogCWlmIChyZXQpIHsKIAkJYmlvLT5iaV9l cnJvciA9IHJldDsKIAkJYmlvX2VuZGlvKGJpbyk7CkBAIC05MjksMTQgKzkyNSwxNCBAQCBz dGF0aWMgaW50IGNoZWNrX2FzeW5jX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGxvbmcgYmlvX2ZsYWdzKQogCXJldHVybiAxOwogfQogCi1zdGF0aWMgaW50IGJ0cmVl X3N1Ym1pdF9iaW9faG9vayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsIHN0cnVjdCBi aW8gKmJpbywKK3N0YXRpYyBpbnQgYnRyZWVfc3VibWl0X2Jpb19ob29rKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJCQkgaW50IG1pcnJvcl9udW0sIHVuc2ln bmVkIGxvbmcgYmlvX2ZsYWdzLAogCQkJCSB1NjQgYmlvX29mZnNldCkKIHsKIAlpbnQgYXN5 bmMgPSBjaGVja19hc3luY193cml0ZShpbm9kZSwgYmlvX2ZsYWdzKTsKIAlpbnQgcmV0Owog Ci0JaWYgKCEocncgJiBSRVFfV1JJVEUpKSB7CisJaWYgKGJpby0+Ymlfb3AgIT0gUkVRX09Q X1dSSVRFKSB7CiAJCS8qCiAJCSAqIGNhbGxlZCBmb3IgYSByZWFkLCBkbyB0aGUgc2V0dXAg c28gdGhhdCBjaGVja3N1bSB2YWxpZGF0aW9uCiAJCSAqIGNhbiBoYXBwZW4gaW4gdGhlIGFz eW5jIGtlcm5lbCB0aHJlYWRzCkBAIC05NDUsMjEgKzk0MSwxOSBAQCBzdGF0aWMgaW50IGJ0 cmVlX3N1Ym1pdF9iaW9faG9vayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsIHN0cnVj dCBiaW8gKmJpbywKIAkJCQkJICBiaW8sIEJUUkZTX1dRX0VORElPX01FVEFEQVRBKTsKIAkJ aWYgKHJldCkKIAkJCWdvdG8gb3V0X3dfZXJyb3I7Ci0JCXJldCA9IGJ0cmZzX21hcF9iaW8o QlRSRlNfSShpbm9kZSktPnJvb3QsIHJ3LCBiaW8sCi0JCQkJICAgIG1pcnJvcl9udW0sIDAp OworCQlyZXQgPSBidHJmc19tYXBfYmlvKEJUUkZTX0koaW5vZGUpLT5yb290LCBiaW8sIG1p cnJvcl9udW0sIDApOwogCX0gZWxzZSBpZiAoIWFzeW5jKSB7CiAJCXJldCA9IGJ0cmVlX2Nz dW1fb25lX2JpbyhiaW8pOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfd19lcnJvcjsKLQkJ cmV0ID0gYnRyZnNfbWFwX2JpbyhCVFJGU19JKGlub2RlKS0+cm9vdCwgcncsIGJpbywKLQkJ CQkgICAgbWlycm9yX251bSwgMCk7CisJCXJldCA9IGJ0cmZzX21hcF9iaW8oQlRSRlNfSShp bm9kZSktPnJvb3QsIGJpbywgbWlycm9yX251bSwgMCk7CiAJfSBlbHNlIHsKIAkJLyoKIAkJ ICoga3RocmVhZCBoZWxwZXJzIGFyZSB1c2VkIHRvIHN1Ym1pdCB3cml0ZXMgc28gdGhhdAog CQkgKiBjaGVja3N1bW1pbmcgY2FuIGhhcHBlbiBpbiBwYXJhbGxlbCBhY3Jvc3MgYWxsIENQ VXMKIAkJICovCiAJCXJldCA9IGJ0cmZzX3dxX3N1Ym1pdF9iaW8oQlRSRlNfSShpbm9kZSkt PnJvb3QtPmZzX2luZm8sCi0JCQkJCSAgaW5vZGUsIHJ3LCBiaW8sIG1pcnJvcl9udW0sIDAs CisJCQkJCSAgaW5vZGUsIGJpbywgbWlycm9yX251bSwgMCwKIAkJCQkJICBiaW9fb2Zmc2V0 LAogCQkJCQkgIF9fYnRyZWVfc3VibWl0X2Jpb19zdGFydCwKIAkJCQkJICBfX2J0cmVlX3N1 Ym1pdF9iaW9fZG9uZSk7CkBAIC0zNDE2LDYgKzM0MTAsNyBAQCBzdGF0aWMgaW50IHdyaXRl X2Rldl9mbHVzaChzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2UsIGludCB3YWl0KQogCiAJ YmlvLT5iaV9lbmRfaW8gPSBidHJmc19lbmRfZW1wdHlfYmFycmllcjsKIAliaW8tPmJpX2Jk ZXYgPSBkZXZpY2UtPmJkZXY7CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAliaW8t PmJpX3J3IHw9IFdSSVRFX0ZMVVNIOwogCWluaXRfY29tcGxldGlvbigmZGV2aWNlLT5mbHVz aF93YWl0KTsKIAliaW8tPmJpX3ByaXZhdGUgPSAmZGV2aWNlLT5mbHVzaF93YWl0OwpkaWZm IC0tZ2l0IGEvZnMvYnRyZnMvZGlzay1pby5oIGIvZnMvYnRyZnMvZGlzay1pby5oCmluZGV4 IGFkZWIzMTguLjJlZTdhMzUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Rpc2staW8uaAorKysg Yi9mcy9idHJmcy9kaXNrLWlvLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIGJ0cmZzX2Nz dW1fZmluYWwodTMyIGNyYywgY2hhciAqcmVzdWx0KTsKIGludCBidHJmc19iaW9fd3FfZW5k X2lvKHN0cnVjdCBidHJmc19mc19pbmZvICppbmZvLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQll bnVtIGJ0cmZzX3dxX2VuZGlvX3R5cGUgbWV0YWRhdGEpOwogaW50IGJ0cmZzX3dxX3N1Ym1p dF9iaW8oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHN0cnVjdCBpbm9kZSAqaW5v ZGUsCi0JCQlpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywgaW50IG1pcnJvcl9udW0sCisJCQlz dHJ1Y3QgYmlvICpiaW8sIGludCBtaXJyb3JfbnVtLAogCQkJdW5zaWduZWQgbG9uZyBiaW9f ZmxhZ3MsIHU2NCBiaW9fb2Zmc2V0LAogCQkJZXh0ZW50X3N1Ym1pdF9iaW9faG9va190ICpz dWJtaXRfYmlvX3N0YXJ0LAogCQkJZXh0ZW50X3N1Ym1pdF9iaW9faG9va190ICpzdWJtaXRf YmlvX2RvbmUpOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0 cmZzL2V4dGVudC10cmVlLmMKaW5kZXggYWNmM2VkMS4uZjk4NTQ5YiAxMDA2NDQKLS0tIGEv ZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5jCkBA IC0yMDI3LDcgKzIwMjcsNyBAQCBpbnQgYnRyZnNfZGlzY2FyZF9leHRlbnQoc3RydWN0IGJ0 cmZzX3Jvb3QgKnJvb3QsIHU2NCBieXRlbnIsCiAKIAogCS8qIFRlbGwgdGhlIGJsb2NrIGRl dmljZShzKSB0aGF0IHRoZSBzZWN0b3JzIGNhbiBiZSBkaXNjYXJkZWQgKi8KLQlyZXQgPSBi dHJmc19tYXBfYmxvY2socm9vdC0+ZnNfaW5mbywgUkVRX0RJU0NBUkQsCisJcmV0ID0gYnRy ZnNfbWFwX2Jsb2NrKHJvb3QtPmZzX2luZm8sIFJFUV9PUF9ESVNDQVJELAogCQkJICAgICAg Ynl0ZW5yLCAmbnVtX2J5dGVzLCAmYmJpbywgMCk7CiAJLyogRXJyb3IgY29uZGl0aW9uIGlz IC1FTk9NRU0gKi8KIAlpZiAoIXJldCkgewpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50 X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCA0NGQ4NzYyLi4yNGU1Yjg1IDEw MDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfaW8uYworKysgYi9mcy9idHJmcy9leHRlbnRf aW8uYwpAQCAtMjQ3NCw3ICsyNDc0LDcgQEAgc3RhdGljIGludCBiaW9fcmVhZHBhZ2VfZXJy b3Ioc3RydWN0IGJpbyAqZmFpbGVkX2JpbywgdTY0IHBoeV9vZmZzZXQsCiAJaW50IHJlYWRf bW9kZTsKIAlpbnQgcmV0OwogCi0JQlVHX09OKGZhaWxlZF9iaW8tPmJpX3J3ICYgUkVRX1dS SVRFKTsKKwlCVUdfT04oZmFpbGVkX2Jpby0+Ymlfb3AgPT0gUkVRX09QX1dSSVRFKTsKIAog CXJldCA9IGJ0cmZzX2dldF9pb19mYWlsdXJlX3JlY29yZChpbm9kZSwgc3RhcnQsIGVuZCwg JmZhaWxyZWMpOwogCWlmIChyZXQpCkBAIC0yNTAwLDEyICsyNTAwLDEzIEBAIHN0YXRpYyBp bnQgYmlvX3JlYWRwYWdlX2Vycm9yKHN0cnVjdCBiaW8gKmZhaWxlZF9iaW8sIHU2NCBwaHlf b2Zmc2V0LAogCQlmcmVlX2lvX2ZhaWx1cmUoaW5vZGUsIGZhaWxyZWMpOwogCQlyZXR1cm4g LUVJTzsKIAl9CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOworCWJpby0+YmlfcncgfD0g cmVhZF9tb2RlOwogCiAJcHJfZGVidWcoIlJlcGFpciBSZWFkIEVycm9yOiBzdWJtaXR0aW5n IG5ldyByZWFkWyUjeF0gdG8gdGhpc19taXJyb3I9JWQsIGluX3ZhbGlkYXRpb249JWRcbiIs CiAJCSByZWFkX21vZGUsIGZhaWxyZWMtPnRoaXNfbWlycm9yLCBmYWlscmVjLT5pbl92YWxp ZGF0aW9uKTsKIAotCXJldCA9IHRyZWUtPm9wcy0+c3VibWl0X2Jpb19ob29rKGlub2RlLCBy ZWFkX21vZGUsIGJpbywKLQkJCQkJIGZhaWxyZWMtPnRoaXNfbWlycm9yLAorCXJldCA9IHRy ZWUtPm9wcy0+c3VibWl0X2Jpb19ob29rKGlub2RlLCBiaW8sIGZhaWxyZWMtPnRoaXNfbWly cm9yLAogCQkJCQkgZmFpbHJlYy0+YmlvX2ZsYWdzLCAwKTsKIAlpZiAocmV0KSB7CiAJCWZy ZWVfaW9fZmFpbHVyZShpbm9kZSwgZmFpbHJlYyk7CkBAIC0yODE0LDggKzI4MTUsOCBAQCBz dHJ1Y3QgYmlvICpidHJmc19pb19iaW9fYWxsb2MoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVk IGludCBucl9pb3ZlY3MpCiB9CiAKIAotc3RhdGljIGludCBfX211c3RfY2hlY2sgc3VibWl0 X29uZV9iaW8oaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCi0JCQkJICAgICAgIGludCBtaXJy b3JfbnVtLCB1bnNpZ25lZCBsb25nIGJpb19mbGFncykKK3N0YXRpYyBpbnQgX19tdXN0X2No ZWNrIHN1Ym1pdF9vbmVfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IG1pcnJvcl9udW0sCisJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKQogewogCWludCByZXQgPSAwOwog CXN0cnVjdCBiaW9fdmVjICpidmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJpX3ZjbnQg LSAxOwpAQCAtMjgyNiwxMSArMjgyNywxMCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBz dWJtaXRfb25lX2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywKIAlzdGFydCA9IHBhZ2Vf b2Zmc2V0KHBhZ2UpICsgYnZlYy0+YnZfb2Zmc2V0OwogCiAJYmlvLT5iaV9wcml2YXRlID0g TlVMTDsKLQliaW8tPmJpX3J3IHw9IHJ3OwogCWJpb19nZXQoYmlvKTsKIAogCWlmICh0cmVl LT5vcHMgJiYgdHJlZS0+b3BzLT5zdWJtaXRfYmlvX2hvb2spCi0JCXJldCA9IHRyZWUtPm9w cy0+c3VibWl0X2Jpb19ob29rKHBhZ2UtPm1hcHBpbmctPmhvc3QsIHJ3LCBiaW8sCisJCXJl dCA9IHRyZWUtPm9wcy0+c3VibWl0X2Jpb19ob29rKHBhZ2UtPm1hcHBpbmctPmhvc3QsIGJp bywKIAkJCQkJICAgbWlycm9yX251bSwgYmlvX2ZsYWdzLCBzdGFydCk7CiAJZWxzZQogCQli dHJmc2ljX3N1Ym1pdF9iaW8oYmlvKTsKQEAgLTI4NTIsNyArMjg1Miw3IEBAIHN0YXRpYyBp bnQgbWVyZ2VfYmlvKGludCBydywgc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLCBzdHJ1 Y3QgcGFnZSAqcGFnZSwKIAogfQogCi1zdGF0aWMgaW50IHN1Ym1pdF9leHRlbnRfcGFnZShp bnQgcncsIHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKK3N0YXRpYyBpbnQgc3VibWl0 X2V4dGVudF9wYWdlKGludCBvcCwgaW50IG9wX2ZsYWdzLCBzdHJ1Y3QgZXh0ZW50X2lvX3Ry ZWUgKnRyZWUsCiAJCQkgICAgICBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYywKIAkJ CSAgICAgIHN0cnVjdCBwYWdlICpwYWdlLCBzZWN0b3JfdCBzZWN0b3IsCiAJCQkgICAgICBz aXplX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCkBAIC0yODgwLDEwICsyODgwLDkg QEAgc3RhdGljIGludCBzdWJtaXRfZXh0ZW50X3BhZ2UoaW50IHJ3LCBzdHJ1Y3QgZXh0ZW50 X2lvX3RyZWUgKnRyZWUsCiAKIAkJaWYgKHByZXZfYmlvX2ZsYWdzICE9IGJpb19mbGFncyB8 fCAhY29udGlnIHx8CiAJCSAgICBmb3JjZV9iaW9fc3VibWl0IHx8Ci0JCSAgICBtZXJnZV9i aW8ocncsIHRyZWUsIHBhZ2UsIG9mZnNldCwgcGFnZV9zaXplLCBiaW8sIGJpb19mbGFncykg fHwKKwkJICAgIG1lcmdlX2JpbyhvcCwgdHJlZSwgcGFnZSwgb2Zmc2V0LCBwYWdlX3NpemUs IGJpbywgYmlvX2ZsYWdzKSB8fAogCQkgICAgYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgcGFn ZV9zaXplLCBvZmZzZXQpIDwgcGFnZV9zaXplKSB7Ci0JCQlyZXQgPSBzdWJtaXRfb25lX2Jp byhydywgYmlvLCBtaXJyb3JfbnVtLAotCQkJCQkgICAgIHByZXZfYmlvX2ZsYWdzKTsKKwkJ CXJldCA9IHN1Ym1pdF9vbmVfYmlvKGJpbywgbWlycm9yX251bSwgcHJldl9iaW9fZmxhZ3Mp OwogCQkJaWYgKHJldCA8IDApIHsKIAkJCQkqYmlvX3JldCA9IE5VTEw7CiAJCQkJcmV0dXJu IHJldDsKQEAgLTI5MDQsNiArMjkwMyw4IEBAIHN0YXRpYyBpbnQgc3VibWl0X2V4dGVudF9w YWdlKGludCBydywgc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCWJpb19hZGRfcGFn ZShiaW8sIHBhZ2UsIHBhZ2Vfc2l6ZSwgb2Zmc2V0KTsKIAliaW8tPmJpX2VuZF9pbyA9IGVu ZF9pb19mdW5jOwogCWJpby0+YmlfcHJpdmF0ZSA9IHRyZWU7CisJYmlvLT5iaV9vcCA9IG9w OworCWJpby0+YmlfcncgfD0gb3BfZmxhZ3M7CiAJaWYgKHdiYykgewogCQl3YmNfaW5pdF9i aW8od2JjLCBiaW8pOwogCQl3YmNfYWNjb3VudF9pbyh3YmMsIHBhZ2UsIHBhZ2Vfc2l6ZSk7 CkBAIC0yOTEyLDcgKzI5MTMsNyBAQCBzdGF0aWMgaW50IHN1Ym1pdF9leHRlbnRfcGFnZShp bnQgcncsIHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAlpZiAoYmlvX3JldCkKIAkJ KmJpb19yZXQgPSBiaW87CiAJZWxzZQotCQlyZXQgPSBzdWJtaXRfb25lX2JpbyhydywgYmlv LCBtaXJyb3JfbnVtLCBiaW9fZmxhZ3MpOworCQlyZXQgPSBzdWJtaXRfb25lX2JpbyhiaW8s IG1pcnJvcl9udW0sIGJpb19mbGFncyk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMjk3Niw3 ICsyOTc3LDcgQEAgc3RhdGljIGludCBfX2RvX3JlYWRwYWdlKHN0cnVjdCBleHRlbnRfaW9f dHJlZSAqdHJlZSwKIAkJCSBnZXRfZXh0ZW50X3QgKmdldF9leHRlbnQsCiAJCQkgc3RydWN0 IGV4dGVudF9tYXAgKiplbV9jYWNoZWQsCiAJCQkgc3RydWN0IGJpbyAqKmJpbywgaW50IG1p cnJvcl9udW0sCi0JCQkgdW5zaWduZWQgbG9uZyAqYmlvX2ZsYWdzLCBpbnQgcncsCisJCQkg dW5zaWduZWQgbG9uZyAqYmlvX2ZsYWdzLCBpbnQgcmVhZF9mbGFncywKIAkJCSB1NjQgKnBy ZXZfZW1fc3RhcnQpCiB7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IHBhZ2UtPm1hcHBpbmct Pmhvc3Q7CkBAIC0zMTY3LDggKzMxNjgsOCBAQCBzdGF0aWMgaW50IF9fZG9fcmVhZHBhZ2Uo c3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCQl9CiAKIAkJcG5yIC09IHBhZ2UtPmlu ZGV4OwotCQlyZXQgPSBzdWJtaXRfZXh0ZW50X3BhZ2UocncsIHRyZWUsIE5VTEwsIHBhZ2Us Ci0JCQkJCSBzZWN0b3IsIGRpc2tfaW9fc2l6ZSwgcGdfb2Zmc2V0LAorCQlyZXQgPSBzdWJt aXRfZXh0ZW50X3BhZ2UoUkVRX09QX1JFQUQsIHJlYWRfZmxhZ3MsIHRyZWUsIE5VTEwsCisJ CQkJCSBwYWdlLCBzZWN0b3IsIGRpc2tfaW9fc2l6ZSwgcGdfb2Zmc2V0LAogCQkJCQkgYmRl diwgYmlvLCBwbnIsCiAJCQkJCSBlbmRfYmlvX2V4dGVudF9yZWFkcGFnZSwgbWlycm9yX251 bSwKIAkJCQkJICpiaW9fZmxhZ3MsCkBAIC0zMjAwLDcgKzMyMDEsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgX19kb19jb250aWd1b3VzX3JlYWRwYWdlcyhzdHJ1Y3QgZXh0ZW50X2lvX3Ry ZWUgKnRyZWUsCiAJCQkJCSAgICAgZ2V0X2V4dGVudF90ICpnZXRfZXh0ZW50LAogCQkJCQkg ICAgIHN0cnVjdCBleHRlbnRfbWFwICoqZW1fY2FjaGVkLAogCQkJCQkgICAgIHN0cnVjdCBi aW8gKipiaW8sIGludCBtaXJyb3JfbnVtLAotCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgKmJp b19mbGFncywgaW50IHJ3LAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgKmJpb19mbGFncywK IAkJCQkJICAgICB1NjQgKnByZXZfZW1fc3RhcnQpCiB7CiAJc3RydWN0IGlub2RlICppbm9k ZTsKQEAgLTMyMjEsNyArMzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RvX2NvbnRp Z3VvdXNfcmVhZHBhZ2VzKHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAogCWZvciAo aW5kZXggPSAwOyBpbmRleCA8IG5yX3BhZ2VzOyBpbmRleCsrKSB7CiAJCV9fZG9fcmVhZHBh Z2UodHJlZSwgcGFnZXNbaW5kZXhdLCBnZXRfZXh0ZW50LCBlbV9jYWNoZWQsIGJpbywKLQkJ CSAgICAgIG1pcnJvcl9udW0sIGJpb19mbGFncywgcncsIHByZXZfZW1fc3RhcnQpOworCQkJ ICAgICAgbWlycm9yX251bSwgYmlvX2ZsYWdzLCAwLCBwcmV2X2VtX3N0YXJ0KTsKIAkJcGFn ZV9jYWNoZV9yZWxlYXNlKHBhZ2VzW2luZGV4XSk7CiAJfQogfQpAQCAtMzIzMSw3ICszMjMy LDcgQEAgc3RhdGljIHZvaWQgX19leHRlbnRfcmVhZHBhZ2VzKHN0cnVjdCBleHRlbnRfaW9f dHJlZSAqdHJlZSwKIAkJCSAgICAgICBpbnQgbnJfcGFnZXMsIGdldF9leHRlbnRfdCAqZ2V0 X2V4dGVudCwKIAkJCSAgICAgICBzdHJ1Y3QgZXh0ZW50X21hcCAqKmVtX2NhY2hlZCwKIAkJ CSAgICAgICBzdHJ1Y3QgYmlvICoqYmlvLCBpbnQgbWlycm9yX251bSwKLQkJCSAgICAgICB1 bnNpZ25lZCBsb25nICpiaW9fZmxhZ3MsIGludCBydywKKwkJCSAgICAgICB1bnNpZ25lZCBs b25nICpiaW9fZmxhZ3MsCiAJCQkgICAgICAgdTY0ICpwcmV2X2VtX3N0YXJ0KQogewogCXU2 NCBzdGFydCA9IDA7CkBAIC0zMjUzLDcgKzMyNTQsNyBAQCBzdGF0aWMgdm9pZCBfX2V4dGVu dF9yZWFkcGFnZXMoc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCQkJCQkJICBpbmRl eCAtIGZpcnN0X2luZGV4LCBzdGFydCwKIAkJCQkJCSAgZW5kLCBnZXRfZXh0ZW50LCBlbV9j YWNoZWQsCiAJCQkJCQkgIGJpbywgbWlycm9yX251bSwgYmlvX2ZsYWdzLAotCQkJCQkJICBy dywgcHJldl9lbV9zdGFydCk7CisJCQkJCQkgIHByZXZfZW1fc3RhcnQpOwogCQkJc3RhcnQg PSBwYWdlX3N0YXJ0OwogCQkJZW5kID0gc3RhcnQgKyBQQUdFX0NBQ0hFX1NJWkUgLSAxOwog CQkJZmlyc3RfaW5kZXggPSBpbmRleDsKQEAgLTMyNjQsNyArMzI2NSw3IEBAIHN0YXRpYyB2 b2lkIF9fZXh0ZW50X3JlYWRwYWdlcyhzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKnRyZWUsCiAJ CV9fZG9fY29udGlndW91c19yZWFkcGFnZXModHJlZSwgJnBhZ2VzW2ZpcnN0X2luZGV4XSwK IAkJCQkJICBpbmRleCAtIGZpcnN0X2luZGV4LCBzdGFydCwKIAkJCQkJICBlbmQsIGdldF9l eHRlbnQsIGVtX2NhY2hlZCwgYmlvLAotCQkJCQkgIG1pcnJvcl9udW0sIGJpb19mbGFncywg cncsCisJCQkJCSAgbWlycm9yX251bSwgYmlvX2ZsYWdzLAogCQkJCQkgIHByZXZfZW1fc3Rh cnQpOwogfQogCkBAIC0zMjcyLDcgKzMyNzMsNyBAQCBzdGF0aWMgaW50IF9fZXh0ZW50X3Jl YWRfZnVsbF9wYWdlKHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAkJCQkgICBzdHJ1 Y3QgcGFnZSAqcGFnZSwKIAkJCQkgICBnZXRfZXh0ZW50X3QgKmdldF9leHRlbnQsCiAJCQkJ ICAgc3RydWN0IGJpbyAqKmJpbywgaW50IG1pcnJvcl9udW0sCi0JCQkJICAgdW5zaWduZWQg bG9uZyAqYmlvX2ZsYWdzLCBpbnQgcncpCisJCQkJICAgdW5zaWduZWQgbG9uZyAqYmlvX2Zs YWdzLCBpbnQgcmVhZF9mbGFncykKIHsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcGFnZS0+ bWFwcGluZy0+aG9zdDsKIAlzdHJ1Y3QgYnRyZnNfb3JkZXJlZF9leHRlbnQgKm9yZGVyZWQ7 CkBAIC0zMjkxLDcgKzMyOTIsNyBAQCBzdGF0aWMgaW50IF9fZXh0ZW50X3JlYWRfZnVsbF9w YWdlKHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAl9CiAKIAlyZXQgPSBfX2RvX3Jl YWRwYWdlKHRyZWUsIHBhZ2UsIGdldF9leHRlbnQsIE5VTEwsIGJpbywgbWlycm9yX251bSwK LQkJCSAgICBiaW9fZmxhZ3MsIHJ3LCBOVUxMKTsKKwkJCSAgICBiaW9fZmxhZ3MsIHJlYWRf ZmxhZ3MsIE5VTEwpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTMzMDMsOSArMzMwNCw5IEBA IGludCBleHRlbnRfcmVhZF9mdWxsX3BhZ2Uoc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVl LCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAlpbnQgcmV0OwogCiAJcmV0ID0gX19leHRlbnRfcmVh ZF9mdWxsX3BhZ2UodHJlZSwgcGFnZSwgZ2V0X2V4dGVudCwgJmJpbywgbWlycm9yX251bSwK LQkJCQkgICAgICAmYmlvX2ZsYWdzLCBSRUFEKTsKKwkJCQkgICAgICAmYmlvX2ZsYWdzLCAw KTsKIAlpZiAoYmlvKQotCQlyZXQgPSBzdWJtaXRfb25lX2JpbyhSRUFELCBiaW8sIG1pcnJv cl9udW0sIGJpb19mbGFncyk7CisJCXJldCA9IHN1Ym1pdF9vbmVfYmlvKGJpbywgbWlycm9y X251bSwgYmlvX2ZsYWdzKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zMzE3LDkgKzMzMTgs OSBAQCBpbnQgZXh0ZW50X3JlYWRfZnVsbF9wYWdlX25vbG9jayhzdHJ1Y3QgZXh0ZW50X2lv X3RyZWUgKnRyZWUsIHN0cnVjdCBwYWdlICpwYWdlLAogCWludCByZXQ7CiAKIAlyZXQgPSBf X2RvX3JlYWRwYWdlKHRyZWUsIHBhZ2UsIGdldF9leHRlbnQsIE5VTEwsICZiaW8sIG1pcnJv cl9udW0sCi0JCQkgICAgJmJpb19mbGFncywgUkVBRCwgTlVMTCk7CisJCQkgICAgJmJpb19m bGFncywgMCwgTlVMTCk7CiAJaWYgKGJpbykKLQkJcmV0ID0gc3VibWl0X29uZV9iaW8oUkVB RCwgYmlvLCBtaXJyb3JfbnVtLCBiaW9fZmxhZ3MpOworCQlyZXQgPSBzdWJtaXRfb25lX2Jp byhiaW8sIG1pcnJvcl9udW0sIGJpb19mbGFncyk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAt MzU2Niw3ICszNTY3LDggQEAgc3RhdGljIG5vaW5saW5lX2Zvcl9zdGFjayBpbnQgX19leHRl bnRfd3JpdGVwYWdlX2lvKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkJICAgICAgIHBhZ2Ut PmluZGV4LCBjdXIsIGVuZCk7CiAJCQl9CiAKLQkJCXJldCA9IHN1Ym1pdF9leHRlbnRfcGFn ZSh3cml0ZV9mbGFncywgdHJlZSwgd2JjLCBwYWdlLAorCQkJcmV0ID0gc3VibWl0X2V4dGVu dF9wYWdlKFJFUV9PUF9XUklURSwgd3JpdGVfZmxhZ3MsCisJCQkJCQkgdHJlZSwgd2JjLCBw YWdlLAogCQkJCQkJIHNlY3RvciwgaW9zaXplLCBwZ19vZmZzZXQsCiAJCQkJCQkgYmRldiwg JmVwZC0+YmlvLCBtYXhfbnIsCiAJCQkJCQkgZW5kX2Jpb19leHRlbnRfd3JpdGVwYWdlLApA QCAtMzYwNiwxMyArMzYwOCwxMSBAQCBzdGF0aWMgaW50IF9fZXh0ZW50X3dyaXRlcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMsCiAJc2l6 ZV90IHBnX29mZnNldCA9IDA7CiAJbG9mZl90IGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2Rl KTsKIAl1bnNpZ25lZCBsb25nIGVuZF9pbmRleCA9IGlfc2l6ZSA+PiBQQUdFX0NBQ0hFX1NI SUZUOwotCWludCB3cml0ZV9mbGFnczsKKwlpbnQgd3JpdGVfZmxhZ3MgPSAwOwogCXVuc2ln bmVkIGxvbmcgbnJfd3JpdHRlbiA9IDA7CiAKIAlpZiAod2JjLT5zeW5jX21vZGUgPT0gV0Jf U1lOQ19BTEwpCiAJCXdyaXRlX2ZsYWdzID0gV1JJVEVfU1lOQzsKLQllbHNlCi0JCXdyaXRl X2ZsYWdzID0gV1JJVEU7CiAKIAl0cmFjZV9fX2V4dGVudF93cml0ZXBhZ2UocGFnZSwgaW5v ZGUsIHdiYyk7CiAKQEAgLTM4NTYsNyArMzg1Niw3IEBAIHN0YXRpYyBub2lubGluZV9mb3Jf c3RhY2sgaW50IHdyaXRlX29uZV9lYihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAJdTY0 IG9mZnNldCA9IGViLT5zdGFydDsKIAl1bnNpZ25lZCBsb25nIGksIG51bV9wYWdlczsKIAl1 bnNpZ25lZCBsb25nIGJpb19mbGFncyA9IDA7Ci0JaW50IHJ3ID0gKGVwZC0+c3luY19pbyA/ IFdSSVRFX1NZTkMgOiBXUklURSkgfCBSRVFfTUVUQTsKKwlpbnQgd3JpdGVfZmxhZ3MgPSAo ZXBkLT5zeW5jX2lvID8gV1JJVEVfU1lOQyA6IDApIHwgUkVRX01FVEE7CiAJaW50IHJldCA9 IDA7CiAKIAljbGVhcl9iaXQoRVhURU5UX0JVRkZFUl9XUklURV9FUlIsICZlYi0+YmZsYWdz KTsKQEAgLTM4NzAsOSArMzg3MCwxMCBAQCBzdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGlu dCB3cml0ZV9vbmVfZWIoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAogCiAJCWNsZWFyX3Bh Z2VfZGlydHlfZm9yX2lvKHApOwogCQlzZXRfcGFnZV93cml0ZWJhY2socCk7Ci0JCXJldCA9 IHN1Ym1pdF9leHRlbnRfcGFnZShydywgdHJlZSwgd2JjLCBwLCBvZmZzZXQgPj4gOSwKLQkJ CQkJIFBBR0VfQ0FDSEVfU0laRSwgMCwgYmRldiwgJmVwZC0+YmlvLAotCQkJCQkgLTEsIGVu ZF9iaW9fZXh0ZW50X2J1ZmZlcl93cml0ZXBhZ2UsCisJCXJldCA9IHN1Ym1pdF9leHRlbnRf cGFnZShSRVFfT1BfV1JJVEUsIHdyaXRlX2ZsYWdzLCB0cmVlLCB3YmMsCisJCQkJCSBwLCBv ZmZzZXQgPj4gOSwgUEFHRV9DQUNIRV9TSVpFLCAwLAorCQkJCQkgYmRldiwgJmVwZC0+Ymlv LCAtMSwKKwkJCQkJIGVuZF9iaW9fZXh0ZW50X2J1ZmZlcl93cml0ZXBhZ2UsCiAJCQkJCSAw LCBlcGQtPmJpb19mbGFncywgYmlvX2ZsYWdzLCBmYWxzZSk7CiAJCWVwZC0+YmlvX2ZsYWdz ID0gYmlvX2ZsYWdzOwogCQlpZiAocmV0KSB7CkBAIC00MTYxLDEzICs0MTYyLDEzIEBAIHJl dHJ5Ogogc3RhdGljIHZvaWQgZmx1c2hfZXBkX3dyaXRlX2JpbyhzdHJ1Y3QgZXh0ZW50X3Bh Z2VfZGF0YSAqZXBkKQogewogCWlmIChlcGQtPmJpbykgewotCQlpbnQgcncgPSBXUklURTsK IAkJaW50IHJldDsKIAorCQllcGQtPmJpby0+Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCWlm IChlcGQtPnN5bmNfaW8pCi0JCQlydyA9IFdSSVRFX1NZTkM7CisJCQllcGQtPmJpby0+Ymlf cncgPSBXUklURV9TWU5DOwogCi0JCXJldCA9IHN1Ym1pdF9vbmVfYmlvKHJ3LCBlcGQtPmJp bywgMCwgZXBkLT5iaW9fZmxhZ3MpOworCQlyZXQgPSBzdWJtaXRfb25lX2JpbyhlcGQtPmJp bywgMCwgZXBkLT5iaW9fZmxhZ3MpOwogCQlCVUdfT04ocmV0IDwgMCk7IC8qIC1FTk9NRU0g Ki8KIAkJZXBkLT5iaW8gPSBOVUxMOwogCX0KQEAgLTQyOTQsMTkgKzQyOTUsMTkgQEAgaW50 IGV4dGVudF9yZWFkcGFnZXMoc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCQlpZiAo bnIgPCBBUlJBWV9TSVpFKHBhZ2Vwb29sKSkKIAkJCWNvbnRpbnVlOwogCQlfX2V4dGVudF9y ZWFkcGFnZXModHJlZSwgcGFnZXBvb2wsIG5yLCBnZXRfZXh0ZW50LCAmZW1fY2FjaGVkLAot CQkJCSAgICZiaW8sIDAsICZiaW9fZmxhZ3MsIFJFQUQsICZwcmV2X2VtX3N0YXJ0KTsKKwkJ CQkgICAmYmlvLCAwLCAmYmlvX2ZsYWdzLCAmcHJldl9lbV9zdGFydCk7CiAJCW5yID0gMDsK IAl9CiAJaWYgKG5yKQogCQlfX2V4dGVudF9yZWFkcGFnZXModHJlZSwgcGFnZXBvb2wsIG5y LCBnZXRfZXh0ZW50LCAmZW1fY2FjaGVkLAotCQkJCSAgICZiaW8sIDAsICZiaW9fZmxhZ3Ms IFJFQUQsICZwcmV2X2VtX3N0YXJ0KTsKKwkJCQkgICAmYmlvLCAwLCAmYmlvX2ZsYWdzLCAm cHJldl9lbV9zdGFydCk7CiAKIAlpZiAoZW1fY2FjaGVkKQogCQlmcmVlX2V4dGVudF9tYXAo ZW1fY2FjaGVkKTsKIAogCUJVR19PTighbGlzdF9lbXB0eShwYWdlcykpOwogCWlmIChiaW8p Ci0JCXJldHVybiBzdWJtaXRfb25lX2JpbyhSRUFELCBiaW8sIDAsIGJpb19mbGFncyk7CisJ CXJldHVybiBzdWJtaXRfb25lX2JpbyhiaW8sIDAsIGJpb19mbGFncyk7CiAJcmV0dXJuIDA7 CiB9CiAKQEAgLTUzMjIsNyArNTMyMyw3IEBAIGludCByZWFkX2V4dGVudF9idWZmZXJfcGFn ZXMoc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCQkJZXJyID0gX19leHRlbnRfcmVh ZF9mdWxsX3BhZ2UodHJlZSwgcGFnZSwKIAkJCQkJCSAgICAgIGdldF9leHRlbnQsICZiaW8s CiAJCQkJCQkgICAgICBtaXJyb3JfbnVtLCAmYmlvX2ZsYWdzLAotCQkJCQkJICAgICAgUkVB RCB8IFJFUV9NRVRBKTsKKwkJCQkJCSAgICAgIFJFUV9NRVRBKTsKIAkJCWlmIChlcnIpCiAJ CQkJcmV0ID0gZXJyOwogCQl9IGVsc2UgewpAQCAtNTMzMSw4ICs1MzMyLDcgQEAgaW50IHJl YWRfZXh0ZW50X2J1ZmZlcl9wYWdlcyhzdHJ1Y3QgZXh0ZW50X2lvX3RyZWUgKnRyZWUsCiAJ fQogCiAJaWYgKGJpbykgewotCQllcnIgPSBzdWJtaXRfb25lX2JpbyhSRUFEIHwgUkVRX01F VEEsIGJpbywgbWlycm9yX251bSwKLQkJCQkgICAgIGJpb19mbGFncyk7CisJCWVyciA9IHN1 Ym1pdF9vbmVfYmlvKGJpbywgbWlycm9yX251bSwgYmlvX2ZsYWdzKTsKIAkJaWYgKGVycikK IAkJCXJldHVybiBlcnI7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50X2lvLmgg Yi9mcy9idHJmcy9leHRlbnRfaW8uaAppbmRleCBmNGMxYWUxLi43MWI2Y2RlIDEwMDY0NAot LS0gYS9mcy9idHJmcy9leHRlbnRfaW8uaAorKysgYi9mcy9idHJmcy9leHRlbnRfaW8uaApA QCAtNjMsOSArNjMsOSBAQCBzdHJ1Y3QgZXh0ZW50X3N0YXRlOwogc3RydWN0IGJ0cmZzX3Jv b3Q7CiBzdHJ1Y3QgYnRyZnNfaW9fYmlvOwogCi10eXBlZGVmCWludCAoZXh0ZW50X3N1Ym1p dF9iaW9faG9va190KShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsCi0JCQkJICAgICAg IHN0cnVjdCBiaW8gKmJpbywgaW50IG1pcnJvcl9udW0sCi0JCQkJICAgICAgIHVuc2lnbmVk IGxvbmcgYmlvX2ZsYWdzLCB1NjQgYmlvX29mZnNldCk7Cit0eXBlZGVmCWludCAoZXh0ZW50 X3N1Ym1pdF9iaW9faG9va190KShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYmlvICpi aW8sCisJCQkJICAgICAgIGludCBtaXJyb3JfbnVtLCB1bnNpZ25lZCBsb25nIGJpb19mbGFn cywKKwkJCQkgICAgICAgdTY0IGJpb19vZmZzZXQpOwogc3RydWN0IGV4dGVudF9pb19vcHMg ewogCWludCAoKmZpbGxfZGVsYWxsb2MpKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBw YWdlICpsb2NrZWRfcGFnZSwKIAkJCSAgICAgdTY0IHN0YXJ0LCB1NjQgZW5kLCBpbnQgKnBh Z2Vfc3RhcnRlZCwKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9p bm9kZS5jCmluZGV4IDJiMWYxYTUuLjE3YzcwOTQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lu b2RlLmMKKysrIGIvZnMvYnRyZnMvaW5vZGUuYwpAQCAtMTgzMyw5ICsxODMzLDggQEAgaW50 IGJ0cmZzX21lcmdlX2Jpb19ob29rKGludCBydywgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2ln bmVkIGxvbmcgb2Zmc2V0LAogICogQXQgSU8gY29tcGxldGlvbiB0aW1lIHRoZSBjdW1zIGF0 dGFjaGVkIG9uIHRoZSBvcmRlcmVkIGV4dGVudCByZWNvcmQKICAqIGFyZSBpbnNlcnRlZCBp bnRvIHRoZSBidHJlZQogICovCi1zdGF0aWMgaW50IF9fYnRyZnNfc3VibWl0X2Jpb19zdGFy dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsCi0JCQkJICAgIHN0cnVjdCBiaW8gKmJp bywgaW50IG1pcnJvcl9udW0sCi0JCQkJICAgIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzLAor c3RhdGljIGludCBfX2J0cmZzX3N1Ym1pdF9iaW9fc3RhcnQoc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGJpbyAqYmlvLCAKKwkJCQkgICAgaW50IG1pcnJvcl9udW0sIHVuc2lnbmVk IGxvbmcgYmlvX2ZsYWdzLAogCQkJCSAgICB1NjQgYmlvX29mZnNldCkKIHsKIAlzdHJ1Y3Qg YnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLT5yb290OwpAQCAtMTg1NCwxNCAr MTg1MywxNCBAQCBzdGF0aWMgaW50IF9fYnRyZnNfc3VibWl0X2Jpb19zdGFydChzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBpbnQgcncsCiAgKiBBdCBJTyBjb21wbGV0aW9uIHRpbWUgdGhlIGN1 bXMgYXR0YWNoZWQgb24gdGhlIG9yZGVyZWQgZXh0ZW50IHJlY29yZAogICogYXJlIGluc2Vy dGVkIGludG8gdGhlIGJ0cmVlCiAgKi8KLXN0YXRpYyBpbnQgX19idHJmc19zdWJtaXRfYmlv X2RvbmUoc3RydWN0IGlub2RlICppbm9kZSwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCitz dGF0aWMgaW50IF9fYnRyZnNfc3VibWl0X2Jpb19kb25lKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBiaW8gKmJpbywKIAkJCSAgaW50IG1pcnJvcl9udW0sIHVuc2lnbmVkIGxvbmcg YmlvX2ZsYWdzLAogCQkJICB1NjQgYmlvX29mZnNldCkKIHsKIAlzdHJ1Y3QgYnRyZnNfcm9v dCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLT5yb290OwogCWludCByZXQ7CiAKLQlyZXQgPSBi dHJmc19tYXBfYmlvKHJvb3QsIHJ3LCBiaW8sIG1pcnJvcl9udW0sIDEpOworCXJldCA9IGJ0 cmZzX21hcF9iaW8ocm9vdCwgYmlvLCBtaXJyb3JfbnVtLCAxKTsKIAlpZiAocmV0KSB7CiAJ CWJpby0+YmlfZXJyb3IgPSByZXQ7CiAJCWJpb19lbmRpbyhiaW8pOwpAQCAtMTg3Myw3ICsx ODcyLDcgQEAgc3RhdGljIGludCBfX2J0cmZzX3N1Ym1pdF9iaW9fZG9uZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywKICAqIGV4dGVudF9pby5jIHN1 Ym1pc3Npb24gaG9vay4gVGhpcyBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgY3N1bSBjYWxj dWxhdGlvbgogICogb24gd3JpdGUsIG9yIHJlYWRpbmcgdGhlIGNzdW1zIGZyb20gdGhlIHRy ZWUgYmVmb3JlIGEgcmVhZAogICovCi1zdGF0aWMgaW50IGJ0cmZzX3N1Ym1pdF9iaW9faG9v ayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywKK3N0YXRp YyBpbnQgYnRyZnNfc3VibWl0X2Jpb19ob29rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBiaW8gKmJpbywKIAkJCSAgaW50IG1pcnJvcl9udW0sIHVuc2lnbmVkIGxvbmcgYmlvX2Zs YWdzLAogCQkJICB1NjQgYmlvX29mZnNldCkKIHsKQEAgLTE4ODgsNyArMTg4Nyw3IEBAIHN0 YXRpYyBpbnQgYnRyZnNfc3VibWl0X2Jpb19ob29rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGlu dCBydywgc3RydWN0IGJpbyAqYmlvLAogCWlmIChidHJmc19pc19mcmVlX3NwYWNlX2lub2Rl KGlub2RlKSkKIAkJbWV0YWRhdGEgPSBCVFJGU19XUV9FTkRJT19GUkVFX1NQQUNFOwogCi0J aWYgKCEocncgJiBSRVFfV1JJVEUpKSB7CisJaWYgKGJpby0+Ymlfb3AgIT0gUkVRX09QX1dS SVRFKSB7CiAJCXJldCA9IGJ0cmZzX2Jpb193cV9lbmRfaW8ocm9vdC0+ZnNfaW5mbywgYmlv LCBtZXRhZGF0YSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKQEAgLTE5MTAsNyArMTkw OSw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2Jpb19ob29rKHN0cnVjdCBpbm9kZSAq aW5vZGUsIGludCBydywgc3RydWN0IGJpbyAqYmlvLAogCQkJZ290byBtYXBpdDsKIAkJLyog d2UncmUgZG9pbmcgYSB3cml0ZSwgZG8gdGhlIGFzeW5jIGNoZWNrc3VtbWluZyAqLwogCQly ZXQgPSBidHJmc193cV9zdWJtaXRfYmlvKEJUUkZTX0koaW5vZGUpLT5yb290LT5mc19pbmZv LAotCQkJCSAgIGlub2RlLCBydywgYmlvLCBtaXJyb3JfbnVtLAorCQkJCSAgIGlub2RlLCBi aW8sIG1pcnJvcl9udW0sCiAJCQkJICAgYmlvX2ZsYWdzLCBiaW9fb2Zmc2V0LAogCQkJCSAg IF9fYnRyZnNfc3VibWl0X2Jpb19zdGFydCwKIAkJCQkgICBfX2J0cmZzX3N1Ym1pdF9iaW9f ZG9uZSk7CkBAIC0xOTIyLDcgKzE5MjEsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX3N1Ym1pdF9i aW9faG9vayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywK IAl9CiAKIG1hcGl0OgotCXJldCA9IGJ0cmZzX21hcF9iaW8ocm9vdCwgcncsIGJpbywgbWly cm9yX251bSwgMCk7CisJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290LCBiaW8sIG1pcnJvcl9u dW0sIDApOwogCiBvdXQ6CiAJaWYgKHJldCA8IDApIHsKQEAgLTc3MzAsMTIgKzc3MjksMTIg QEAgZXJyOgogfQogCiBzdGF0aWMgaW5saW5lIGludCBzdWJtaXRfZGlvX3JlcGFpcl9iaW8o c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJpbyAqYmlvLAotCQkJCQlpbnQgcncsIGlu dCBtaXJyb3JfbnVtKQorCQkJCQlpbnQgbWlycm9yX251bSkKIHsKIAlzdHJ1Y3QgYnRyZnNf cm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLT5yb290OwogCWludCByZXQ7CiAKLQlCVUdf T04ocncgJiBSRVFfV1JJVEUpOworCUJVR19PTihiaW8tPmJpX29wID09IFJFUV9PUF9XUklU RSk7CiAKIAliaW9fZ2V0KGJpbyk7CiAKQEAgLTc3NDQsNyArNzc0Myw3IEBAIHN0YXRpYyBp bmxpbmUgaW50IHN1Ym1pdF9kaW9fcmVwYWlyX2JpbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgYmlvICpiaW8sCiAJaWYgKHJldCkKIAkJZ290byBlcnI7CiAKLQlyZXQgPSBidHJm c19tYXBfYmlvKHJvb3QsIHJ3LCBiaW8sIG1pcnJvcl9udW0sIDApOworCXJldCA9IGJ0cmZz X21hcF9iaW8ocm9vdCwgYmlvLCBtaXJyb3JfbnVtLCAwKTsKIGVycjoKIAliaW9fcHV0KGJp byk7CiAJcmV0dXJuIHJldDsKQEAgLTc3OTUsNyArNzc5NCw3IEBAIHN0YXRpYyBpbnQgZGlv X3JlYWRfZXJyb3Ioc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJpbyAqZmFpbGVkX2Jp bywKIAlpbnQgcmVhZF9tb2RlOwogCWludCByZXQ7CiAKLQlCVUdfT04oZmFpbGVkX2Jpby0+ YmlfcncgJiBSRVFfV1JJVEUpOworCUJVR19PTihmYWlsZWRfYmlvLT5iaV9vcCA9PSBSRVFf T1BfV1JJVEUpOwogCiAJcmV0ID0gYnRyZnNfZ2V0X2lvX2ZhaWx1cmVfcmVjb3JkKGlub2Rl LCBzdGFydCwgZW5kLCAmZmFpbHJlYyk7CiAJaWYgKHJldCkKQEAgLTc4MjEsMTMgKzc4MjAs MTQgQEAgc3RhdGljIGludCBkaW9fcmVhZF9lcnJvcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgYmlvICpmYWlsZWRfYmlvLAogCQlmcmVlX2lvX2ZhaWx1cmUoaW5vZGUsIGZhaWxy ZWMpOwogCQlyZXR1cm4gLUVJTzsKIAl9CisJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOwor CWJpby0+YmlfcncgfD0gcmVhZF9tb2RlOwogCiAJYnRyZnNfZGVidWcoQlRSRlNfSShpbm9k ZSktPnJvb3QtPmZzX2luZm8sCiAJCSAgICAiUmVwYWlyIERJTyBSZWFkIEVycm9yOiBzdWJt aXR0aW5nIG5ldyBkaW8gcmVhZFslI3hdIHRvIHRoaXNfbWlycm9yPSVkLCBpbl92YWxpZGF0 aW9uPSVkXG4iLAogCQkgICAgcmVhZF9tb2RlLCBmYWlscmVjLT50aGlzX21pcnJvciwgZmFp bHJlYy0+aW5fdmFsaWRhdGlvbik7CiAKLQlyZXQgPSBzdWJtaXRfZGlvX3JlcGFpcl9iaW8o aW5vZGUsIGJpbywgcmVhZF9tb2RlLAotCQkJCSAgICBmYWlscmVjLT50aGlzX21pcnJvcik7 CisJcmV0ID0gc3VibWl0X2Rpb19yZXBhaXJfYmlvKGlub2RlLCBiaW8sIGZhaWxyZWMtPnRo aXNfbWlycm9yKTsKIAlpZiAocmV0KSB7CiAJCWZyZWVfaW9fZmFpbHVyZShpbm9kZSwgZmFp bHJlYyk7CiAJCWJpb19wdXQoYmlvKTsKQEAgLTgwNTYsNyArODA1Niw3IEBAIG91dF90ZXN0 OgogCWJpb19wdXQoYmlvKTsKIH0KIAotc3RhdGljIGludCBfX2J0cmZzX3N1Ym1pdF9iaW9f c3RhcnRfZGlyZWN0X2lvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBydywKK3N0YXRpYyBp bnQgX19idHJmc19zdWJtaXRfYmlvX3N0YXJ0X2RpcmVjdF9pbyhzdHJ1Y3QgaW5vZGUgKmlu b2RlLAogCQkJCSAgICBzdHJ1Y3QgYmlvICpiaW8sIGludCBtaXJyb3JfbnVtLAogCQkJCSAg ICB1bnNpZ25lZCBsb25nIGJpb19mbGFncywgdTY0IG9mZnNldCkKIHsKQEAgLTgwNzQsOCAr ODA3NCw4IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX2VuZF9kaW9fYmlvKHN0cnVjdCBiaW8gKmJp bykKIAogCWlmIChlcnIpCiAJCWJ0cmZzX3dhcm4oQlRSRlNfSShkaXAtPmlub2RlKS0+cm9v dC0+ZnNfaW5mbywKLQkJCSAgICJkaXJlY3QgSU8gZmFpbGVkIGlubyAlbGx1IHJ3ICVsdSBz ZWN0b3IgJSNMeCBsZW4gJXUgZXJyIG5vICVkIiwKLQkJCSAgIGJ0cmZzX2lubyhkaXAtPmlu b2RlKSwgYmlvLT5iaV9ydywKKwkJCSAgICJkaXJlY3QgSU8gZmFpbGVkIGlubyAlbGx1IHJ3 ICVkLCVsdSBzZWN0b3IgJSNMeCBsZW4gJXUgZXJyIG5vICVkIiwKKwkJCSAgIGJ0cmZzX2lu byhkaXAtPmlub2RlKSwgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKIAkJCSAgICh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCSAgIGJpby0+YmlfaXRl ci5iaV9zaXplLCBlcnIpOwogCkBAIC04MTQ5LDExICs4MTQ5LDExIEBAIHN0YXRpYyBpbmxp bmUgaW50IGJ0cmZzX2xvb2t1cF9hbmRfYmluZF9kaW9fY3N1bShzdHJ1Y3QgYnRyZnNfcm9v dCAqcm9vdCwKIH0KIAogc3RhdGljIGlubGluZSBpbnQgX19idHJmc19zdWJtaXRfZGlvX2Jp byhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCi0JCQkJCSBpbnQgcncs IHU2NCBmaWxlX29mZnNldCwgaW50IHNraXBfc3VtLAorCQkJCQkgdTY0IGZpbGVfb2Zmc2V0 LCBpbnQgc2tpcF9zdW0sCiAJCQkJCSBpbnQgYXN5bmNfc3VibWl0KQogewogCXN0cnVjdCBi dHJmc19kaW9fcHJpdmF0ZSAqZGlwID0gYmlvLT5iaV9wcml2YXRlOwotCWludCB3cml0ZSA9 IHJ3ICYgUkVRX1dSSVRFOworCWJvb2wgd3JpdGUgPSBiaW8tPmJpX29wID09IFJFUV9PUF9X UklURTsKIAlzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCA9IEJUUkZTX0koaW5vZGUpLT5yb290 OwogCWludCByZXQ7CiAKQEAgLTgxNzQsOCArODE3NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50 IF9fYnRyZnNfc3VibWl0X2Rpb19iaW8oc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogCiAJaWYgKHdyaXRlICYmIGFzeW5jX3N1Ym1pdCkgewogCQlyZXQgPSBidHJm c193cV9zdWJtaXRfYmlvKHJvb3QtPmZzX2luZm8sCi0JCQkJICAgaW5vZGUsIHJ3LCBiaW8s IDAsIDAsCi0JCQkJICAgZmlsZV9vZmZzZXQsCisJCQkJICAgaW5vZGUsIGJpbywgMCwgMCwg ZmlsZV9vZmZzZXQsCiAJCQkJICAgX19idHJmc19zdWJtaXRfYmlvX3N0YXJ0X2RpcmVjdF9p bywKIAkJCQkgICBfX2J0cmZzX3N1Ym1pdF9iaW9fZG9uZSk7CiAJCWdvdG8gZXJyOwpAQCAt ODE5NCwxMyArODE5MywxMyBAQCBzdGF0aWMgaW5saW5lIGludCBfX2J0cmZzX3N1Ym1pdF9k aW9fYmlvKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCWdvdG8g ZXJyOwogCX0KIG1hcDoKLQlyZXQgPSBidHJmc19tYXBfYmlvKHJvb3QsIHJ3LCBiaW8sIDAs IGFzeW5jX3N1Ym1pdCk7CisJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290LCBiaW8sIDAsIGFz eW5jX3N1Ym1pdCk7CiBlcnI6CiAJYmlvX3B1dChiaW8pOwogCXJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2RpcmVjdF9ob29rKGludCBydywgc3RydWN0IGJ0 cmZzX2Rpb19wcml2YXRlICpkaXAsCitzdGF0aWMgaW50IGJ0cmZzX3N1Ym1pdF9kaXJlY3Rf aG9vayhzdHJ1Y3QgYnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAkJCQkgICAgaW50IHNraXBf c3VtKQogewogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkaXAtPmlub2RlOwpAQCAtODIxNyw3 ICs4MjE2LDcgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3 LCBzdHJ1Y3QgYnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAlpbnQgYXN5bmNfc3VibWl0ID0g MDsKIAogCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+YmlfaXRlci5iaV9zaXplOwotCXJldCA9 IGJ0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBydywgc3RhcnRfc2VjdG9yIDw8IDks CisJcmV0ID0gYnRyZnNfbWFwX2Jsb2NrKHJvb3QtPmZzX2luZm8sIG9yaWdfYmlvLT5iaV9v cCwgc3RhcnRfc2VjdG9yIDw8IDksCiAJCQkgICAgICAmbWFwX2xlbmd0aCwgTlVMTCwgMCk7 CiAJaWYgKHJldCkKIAkJcmV0dXJuIC1FSU87CkBAIC04MjM4LDYgKzgyMzcsOCBAQCBzdGF0 aWMgaW50IGJ0cmZzX3N1Ym1pdF9kaXJlY3RfaG9vayhpbnQgcncsIHN0cnVjdCBidHJmc19k aW9fcHJpdmF0ZSAqZGlwLAogCWlmICghYmlvKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWJp by0+Ymlfb3AgPSBvcmlnX2Jpby0+Ymlfb3A7CisJYmlvLT5iaV9ydyA9IG9yaWdfYmlvLT5i aV9ydzsKIAliaW8tPmJpX3ByaXZhdGUgPSBkaXA7CiAJYmlvLT5iaV9lbmRfaW8gPSBidHJm c19lbmRfZGlvX2JpbzsKIAlidHJmc19pb19iaW8oYmlvKS0+bG9naWNhbCA9IGZpbGVfb2Zm c2V0OwpAQCAtODI1NCw3ICs4MjU1LDcgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGly ZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3QgYnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAkJCSAq IGJlZm9yZSB3ZSdyZSBkb25lIHNldHRpbmcgaXQgdXAKIAkJCSAqLwogCQkJYXRvbWljX2lu YygmZGlwLT5wZW5kaW5nX2Jpb3MpOwotCQkJcmV0ID0gX19idHJmc19zdWJtaXRfZGlvX2Jp byhiaW8sIGlub2RlLCBydywKKwkJCXJldCA9IF9fYnRyZnNfc3VibWl0X2Rpb19iaW8oYmlv LCBpbm9kZSwgCiAJCQkJCQkgICAgIGZpbGVfb2Zmc2V0LCBza2lwX3N1bSwKIAkJCQkJCSAg ICAgYXN5bmNfc3VibWl0KTsKIAkJCWlmIChyZXQpIHsKQEAgLTgyNzMsMTIgKzgyNzQsMTQg QEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3Qg YnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAkJCQkJCSAgc3RhcnRfc2VjdG9yLCBHRlBfTk9G Uyk7CiAJCQlpZiAoIWJpbykKIAkJCQlnb3RvIG91dF9lcnI7CisJCQliaW8tPmJpX29wID0g b3JpZ19iaW8tPmJpX29wOworCQkJYmlvLT5iaV9ydyA9IG9yaWdfYmlvLT5iaV9ydzsKIAkJ CWJpby0+YmlfcHJpdmF0ZSA9IGRpcDsKIAkJCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5k X2Rpb19iaW87CiAJCQlidHJmc19pb19iaW8oYmlvKS0+bG9naWNhbCA9IGZpbGVfb2Zmc2V0 OwogCiAJCQltYXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKLQkJCXJl dCA9IGJ0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBydywKKwkJCXJldCA9IGJ0cmZz X21hcF9ibG9jayhyb290LT5mc19pbmZvLCBvcmlnX2Jpby0+Ymlfb3AsCiAJCQkJCSAgICAg IHN0YXJ0X3NlY3RvciA8PCA5LAogCQkJCQkgICAgICAmbWFwX2xlbmd0aCwgTlVMTCwgMCk7 CiAJCQlpZiAocmV0KSB7CkBAIC04MjkzLDcgKzgyOTYsNyBAQCBzdGF0aWMgaW50IGJ0cmZz X3N1Ym1pdF9kaXJlY3RfaG9vayhpbnQgcncsIHN0cnVjdCBidHJmc19kaW9fcHJpdmF0ZSAq ZGlwLAogCX0KIAogc3VibWl0OgotCXJldCA9IF9fYnRyZnNfc3VibWl0X2Rpb19iaW8oYmlv LCBpbm9kZSwgcncsIGZpbGVfb2Zmc2V0LCBza2lwX3N1bSwKKwlyZXQgPSBfX2J0cmZzX3N1 Ym1pdF9kaW9fYmlvKGJpbywgaW5vZGUsIGZpbGVfb2Zmc2V0LCBza2lwX3N1bSwKIAkJCQkg ICAgIGFzeW5jX3N1Ym1pdCk7CiAJaWYgKCFyZXQpCiAJCXJldHVybiAwOwpAQCAtODM1Niw4 ICs4MzU5LDcgQEAgc3RhdGljIHZvaWQgYnRyZnNfc3VibWl0X2RpcmVjdChzdHJ1Y3QgYmlv ICpkaW9fYmlvLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQlkaXAtPnN1YmlvX2VuZGlvID0g YnRyZnNfc3ViaW9fZW5kaW9fcmVhZDsKIAl9CiAKLQlyZXQgPSBidHJmc19zdWJtaXRfZGly ZWN0X2hvb2soZGlvX2Jpby0+Ymlfb3AgfCBkaW9fYmlvLT5iaV9ydywgZGlwLAotCQkJCSAg ICAgICBza2lwX3N1bSk7CisJcmV0ID0gYnRyZnNfc3VibWl0X2RpcmVjdF9ob29rKGRpcCwg c2tpcF9zdW0pOwogCWlmICghcmV0KQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2ZzL2J0 cmZzL3JhaWQ1Ni5jIGIvZnMvYnRyZnMvcmFpZDU2LmMKaW5kZXggNTMyY2ViMC4uNTRlNDk0 MSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvcmFpZDU2LmMKKysrIGIvZnMvYnRyZnMvcmFpZDU2 LmMKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHdyaXRlX2RhdGE6CiAKIAkJYmlvLT5iaV9wcml2 YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRfaW8gPSByYWlkX3dyaXRlX2VuZF9pbzsKLQkJ YmlvLT5iaV9ydyB8PSBXUklURTsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAog CQlzdWJtaXRfYmlvKGJpbyk7CiAJfQpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgc3RhdGljIGlu dCByYWlkNTZfcm13X3N0cmlwZShzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8pCiAKIAkJ YmlvLT5iaV9wcml2YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRfaW8gPSByYWlkX3Jtd19l bmRfaW87Ci0JCWJpby0+YmlfcncgfD0gUkVBRDsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9S RUFEOwogCiAJCWJ0cmZzX2Jpb193cV9lbmRfaW8ocmJpby0+ZnNfaW5mbywgYmlvLAogCQkJ CSAgICBCVFJGU19XUV9FTkRJT19SQUlENTYpOwpAQCAtMjEwNiw3ICsyMTA2LDcgQEAgc3Rh dGljIGludCBfX3JhaWQ1Nl9wYXJpdHlfcmVjb3ZlcihzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8g KnJiaW8pCiAKIAkJYmlvLT5iaV9wcml2YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRfaW8g PSByYWlkX3JlY292ZXJfZW5kX2lvOwotCQliaW8tPmJpX3J3IHw9IFJFQUQ7CisJCWJpby0+ Ymlfb3AgPSBSRVFfT1BfUkVBRDsKIAogCQlidHJmc19iaW9fd3FfZW5kX2lvKHJiaW8tPmZz X2luZm8sIGJpbywKIAkJCQkgICAgQlRSRlNfV1FfRU5ESU9fUkFJRDU2KTsKQEAgLTI0Njks NyArMjQ2OSw3IEBAIHN1Ym1pdF93cml0ZToKIAogCQliaW8tPmJpX3ByaXZhdGUgPSByYmlv OwogCQliaW8tPmJpX2VuZF9pbyA9IHJhaWRfd3JpdGVfcGFyaXR5X2VuZF9pbzsKLQkJYmlv LT5iaV9ydyB8PSBXUklURTsKKwkJYmlvLT5iaV9vcCA9IFJFUV9PUF9XUklURTsKIAkJc3Vi bWl0X2JpbyhiaW8pOwogCX0KIAlyZXR1cm47CkBAIC0yNjQ3LDcgKzI2NDcsNyBAQCBzdGF0 aWMgdm9pZCByYWlkNTZfcGFyaXR5X3NjcnViX3N0cmlwZShzdHJ1Y3QgYnRyZnNfcmFpZF9i aW8gKnJiaW8pCiAKIAkJYmlvLT5iaV9wcml2YXRlID0gcmJpbzsKIAkJYmlvLT5iaV9lbmRf aW8gPSByYWlkNTZfcGFyaXR5X3NjcnViX2VuZF9pbzsKLQkJYmlvLT5iaV9ydyB8PSBSRUFE OworCQliaW8tPmJpX29wID0gUkVRX09QX1JFQUQ7CiAKIAkJYnRyZnNfYmlvX3dxX2VuZF9p byhyYmlvLT5mc19pbmZvLCBiaW8sCiAJCQkJICAgIEJUUkZTX1dRX0VORElPX1JBSUQ1Nik7 CmRpZmYgLS1naXQgYS9mcy9idHJmcy9zY3J1Yi5jIGIvZnMvYnRyZnMvc2NydWIuYwppbmRl eCA4ODY3NWRiLi43MzAxYzA3IDEwMDY0NAotLS0gYS9mcy9idHJmcy9zY3J1Yi5jCisrKyBi L2ZzL2J0cmZzL3NjcnViLmMKQEAgLTE1MDQsNyArMTUwNCw3IEBAIHN0YXRpYyB2b2lkIHNj cnViX3JlY2hlY2tfYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJCQkJ c2Jsb2NrLT5ub19pb19lcnJvcl9zZWVuID0gMDsKIAkJfSBlbHNlIHsKIAkJCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSBwYWdlLT5waHlzaWNhbCA+PiA5OwotCQkJYmlvLT5iaV9ydyB8 PSBSRUFEOworCQkJYmlvLT5iaV9vcCA9IFJFUV9PUF9SRUFEOwogCiAJCQlpZiAoYnRyZnNp Y19zdWJtaXRfYmlvX3dhaXQoYmlvKSkKIAkJCQlzYmxvY2stPm5vX2lvX2Vycm9yX3NlZW4g PSAwOwpAQCAtMTU4Niw3ICsxNTg2LDcgQEAgc3RhdGljIGludCBzY3J1Yl9yZXBhaXJfcGFn ZV9mcm9tX2dvb2RfY29weShzdHJ1Y3Qgc2NydWJfYmxvY2sgKnNibG9ja19iYWQsCiAJCQly ZXR1cm4gLUVJTzsKIAkJYmlvLT5iaV9iZGV2ID0gcGFnZV9iYWQtPmRldi0+YmRldjsKIAkJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+PiA5OwotCQli aW8tPmJpX3J3IHw9IFdSSVRFOworCQliaW8tPmJpX29wID0gUkVRX09QX1dSSVRFOwogCiAJ CXJldCA9IGJpb19hZGRfcGFnZShiaW8sIHBhZ2VfZ29vZC0+cGFnZSwgUEFHRV9TSVpFLCAw KTsKIAkJaWYgKFBBR0VfU0laRSAhPSByZXQpIHsKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGFn YWluOgogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX3dyX2Jpb19lbmRfaW87CiAJCWJpby0+ YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9 IHNiaW8tPnBoeXNpY2FsID4+IDk7Ci0JCWJpby0+YmlfcncgfD0gV1JJVEU7CisJCWJpby0+ Ymlfb3AgPSBSRVFfT1BfV1JJVEU7CiAJCXNiaW8tPmVyciA9IDA7CiAJfSBlbHNlIGlmIChz YmlvLT5waHlzaWNhbCArIHNiaW8tPnBhZ2VfY291bnQgKiBQQUdFX1NJWkUgIT0KIAkJICAg c3BhZ2UtPnBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFjZSB8fApAQCAtMjA5MSw3ICsyMDkxLDcg QEAgYWdhaW46CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfYmlvX2VuZF9pbzsKIAkJYmlv LT5iaV9iZGV2ID0gc2Jpby0+ZGV2LT5iZGV2OwogCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID0gc2Jpby0+cGh5c2ljYWwgPj4gOTsKLQkJYmlvLT5iaV9ydyB8PSBSRUFEOworCQliaW8t PmJpX29wID0gUkVRX09QX1JFQUQ7CiAJCXNiaW8tPmVyciA9IDA7CiAJfSBlbHNlIGlmIChz YmlvLT5waHlzaWNhbCArIHNiaW8tPnBhZ2VfY291bnQgKiBQQUdFX1NJWkUgIT0KIAkJICAg c3BhZ2UtPnBoeXNpY2FsIHx8CkBAIC00MzQ0LDYgKzQzNDQsNyBAQCBzdGF0aWMgaW50IHdy aXRlX3BhZ2Vfbm9jb3coc3RydWN0IHNjcnViX2N0eCAqc2N0eCwKIAliaW8tPmJpX2l0ZXIu Ymlfc2l6ZSA9IDA7CiAJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBoeXNpY2FsX2Zvcl9k ZXZfcmVwbGFjZSA+PiA5OwogCWJpby0+YmlfYmRldiA9IGRldi0+YmRldjsKKwliaW8tPmJp X29wID0gUkVRX09QX1dSSVRFOwogCWJpby0+YmlfcncgfD0gV1JJVEVfU1lOQzsKIAogCXJl dCA9IGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfQ0FDSEVfU0laRSwgMCk7CmRpZmYg LS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMKaW5kZXgg ZDE5ZWI4MS4uNDViYTA0OCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBi L2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAtNTIwNiw3ICs1MjA2LDcgQEAgdm9pZCBidHJmc19w dXRfYmJpbyhzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvKQogCQlrZnJlZShiYmlvKTsKIH0KIAot c3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNf aW5mbywgaW50IHJ3LAorc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRy ZnNfZnNfaW5mbyAqZnNfaW5mbywgaW50IG9wLAogCQkJICAgICB1NjQgbG9naWNhbCwgdTY0 ICpsZW5ndGgsCiAJCQkgICAgIHN0cnVjdCBidHJmc19iaW8gKipiYmlvX3JldCwKIAkJCSAg ICAgaW50IG1pcnJvcl9udW0sIGludCBuZWVkX3JhaWRfbWFwKQpAQCAtNTI4NCw3ICs1Mjg0 LDcgQEAgc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5m byAqZnNfaW5mbywgaW50IHJ3LAogCQlyYWlkNTZfZnVsbF9zdHJpcGVfc3RhcnQgKj0gZnVs bF9zdHJpcGVfbGVuOwogCX0KIAotCWlmIChydyAmIFJFUV9ESVNDQVJEKSB7CisJaWYgKG9w ID09IFJFUV9PUF9ESVNDQVJEKSB7CiAJCS8qIHdlIGRvbid0IGRpc2NhcmQgcmFpZDU2IHll dCAqLwogCQlpZiAobWFwLT50eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDU2X01BU0sp IHsKIAkJCXJldCA9IC1FT1BOT1RTVVBQOwpAQCAtNTI5Nyw3ICs1Mjk3LDcgQEAgc3RhdGlj IGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywg aW50IHJ3LAogCQkgICBGb3Igb3RoZXIgUkFJRCB0eXBlcyBhbmQgZm9yIFJBSURbNTZdIHJl YWRzLCBqdXN0IGFsbG93IGEgc2luZ2xlCiAJCSAgIHN0cmlwZSAob24gYSBzaW5nbGUgZGlz aykuICovCiAJCWlmICgobWFwLT50eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDU2X01B U0spICYmCi0JCSAgICAocncgJiBSRVFfV1JJVEUpKSB7CisJCSAgICAob3AgPT0gUkVRX09Q X1dSSVRFKSkgewogCQkJbWF4X2xlbiA9IHN0cmlwZV9sZW4gKiBucl9kYXRhX3N0cmlwZXMo bWFwKSAtCiAJCQkJKG9mZnNldCAtIHJhaWQ1Nl9mdWxsX3N0cmlwZV9zdGFydCk7CiAJCX0g ZWxzZSB7CkBAIC01MzIwLDggKzUzMjAsOCBAQCBzdGF0aWMgaW50IF9fYnRyZnNfbWFwX2Js b2NrKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCBpbnQgcncsCiAJCWJ0cmZzX2Rl dl9yZXBsYWNlX3VubG9jayhkZXZfcmVwbGFjZSk7CiAKIAlpZiAoZGV2X3JlcGxhY2VfaXNf b25nb2luZyAmJiBtaXJyb3JfbnVtID09IG1hcC0+bnVtX3N0cmlwZXMgKyAxICYmCi0JICAg ICEocncgJiAoUkVRX1dSSVRFIHwgUkVRX0RJU0NBUkQgfCBSRVFfR0VUX1JFQURfTUlSUk9S UykpICYmCi0JICAgIGRldl9yZXBsYWNlLT50Z3RkZXYgIT0gTlVMTCkgeworCSAgICBvcCAh PSBSRVFfT1BfV1JJVEUgJiYgb3AgIT0gUkVRX09QX0RJU0NBUkQgJiYKKwkgICAgb3AgIT0g UkVRX0dFVF9SRUFEX01JUlJPUlMgJiYgZGV2X3JlcGxhY2UtPnRndGRldiAhPSBOVUxMKSB7 CiAJCS8qCiAJCSAqIGluIGRldi1yZXBsYWNlIGNhc2UsIGZvciByZXBhaXIgY2FzZSAodGhh dCdzIHRoZSBvbmx5CiAJCSAqIGNhc2Ugd2hlcmUgdGhlIG1pcnJvciBpcyBzZWxlY3RlZCBl eHBsaWNpdGx5IHdoZW4KQEAgLTU0MTAsMTUgKzU0MTAsMTcgQEAgc3RhdGljIGludCBfX2J0 cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgaW50IHJ3LAog CQkJICAgIChvZmZzZXQgKyAqbGVuZ3RoKTsKIAogCWlmIChtYXAtPnR5cGUgJiBCVFJGU19C TE9DS19HUk9VUF9SQUlEMCkgewotCQlpZiAocncgJiBSRVFfRElTQ0FSRCkKKwkJaWYgKG9w ID09IFJFUV9PUF9ESVNDQVJEKQogCQkJbnVtX3N0cmlwZXMgPSBtaW5fdCh1NjQsIG1hcC0+ bnVtX3N0cmlwZXMsCiAJCQkJCSAgICBzdHJpcGVfbnJfZW5kIC0gc3RyaXBlX25yX29yaWcp OwogCQlzdHJpcGVfbnIgPSBkaXZfdTY0X3JlbShzdHJpcGVfbnIsIG1hcC0+bnVtX3N0cmlw ZXMsCiAJCQkJJnN0cmlwZV9pbmRleCk7Ci0JCWlmICghKHJ3ICYgKFJFUV9XUklURSB8IFJF UV9ESVNDQVJEIHwgUkVRX0dFVF9SRUFEX01JUlJPUlMpKSkKKwkJaWYgKG9wICE9IFJFUV9P UF9XUklURSAmJiBvcCAhPSBSRVFfT1BfRElTQ0FSRCAmJgorCQkgICAgb3AgIT0gUkVRX0dF VF9SRUFEX01JUlJPUlMpCiAJCQltaXJyb3JfbnVtID0gMTsKIAl9IGVsc2UgaWYgKG1hcC0+ dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQxKSB7Ci0JCWlmIChydyAmIChSRVFfV1JJ VEUgfCBSRVFfRElTQ0FSRCB8IFJFUV9HRVRfUkVBRF9NSVJST1JTKSkKKwkJaWYgKG9wID09 IFJFUV9PUF9XUklURSB8fCBvcCA9PSBSRVFfT1BfRElTQ0FSRCB8fAorCQkgICAgb3AgPT0g UkVRX0dFVF9SRUFEX01JUlJPUlMpCiAJCQludW1fc3RyaXBlcyA9IG1hcC0+bnVtX3N0cmlw ZXM7CiAJCWVsc2UgaWYgKG1pcnJvcl9udW0pCiAJCQlzdHJpcGVfaW5kZXggPSBtaXJyb3Jf bnVtIC0gMTsKQEAgLTU0MzEsNyArNTQzMyw4IEBAIHN0YXRpYyBpbnQgX19idHJmc19tYXBf YmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBydywKIAkJfQogCiAJ fSBlbHNlIGlmIChtYXAtPnR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9EVVApIHsKLQkJaWYg KHJ3ICYgKFJFUV9XUklURSB8IFJFUV9ESVNDQVJEIHwgUkVRX0dFVF9SRUFEX01JUlJPUlMp KSB7CisJCWlmIChvcCA9PSBSRVFfT1BfV1JJVEUgfHwgUkVRX09QX0RJU0NBUkQgfHwKKwkJ ICAgIG9wID09IFJFUV9HRVRfUkVBRF9NSVJST1JTKSB7CiAJCQludW1fc3RyaXBlcyA9IG1h cC0+bnVtX3N0cmlwZXM7CiAJCX0gZWxzZSBpZiAobWlycm9yX251bSkgewogCQkJc3RyaXBl X2luZGV4ID0gbWlycm9yX251bSAtIDE7CkBAIC01NDQ1LDkgKzU0NDgsOSBAQCBzdGF0aWMg aW50IF9fYnRyZnNfbWFwX2Jsb2NrKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCBp bnQgcncsCiAJCXN0cmlwZV9uciA9IGRpdl91NjRfcmVtKHN0cmlwZV9uciwgZmFjdG9yLCAm c3RyaXBlX2luZGV4KTsKIAkJc3RyaXBlX2luZGV4ICo9IG1hcC0+c3ViX3N0cmlwZXM7CiAK LQkJaWYgKHJ3ICYgKFJFUV9XUklURSB8IFJFUV9HRVRfUkVBRF9NSVJST1JTKSkKKwkJaWYg KG9wID09IFJFUV9PUF9XUklURSB8fCBvcCA9PSBSRVFfR0VUX1JFQURfTUlSUk9SUykKIAkJ CW51bV9zdHJpcGVzID0gbWFwLT5zdWJfc3RyaXBlczsKLQkJZWxzZSBpZiAocncgJiBSRVFf RElTQ0FSRCkKKwkJZWxzZSBpZiAob3AgPT0gUkVRX09QX0RJU0NBUkQpCiAJCQludW1fc3Ry aXBlcyA9IG1pbl90KHU2NCwgbWFwLT5zdWJfc3RyaXBlcyAqCiAJCQkJCSAgICAoc3RyaXBl X25yX2VuZCAtIHN0cmlwZV9ucl9vcmlnKSwKIAkJCQkJICAgIG1hcC0+bnVtX3N0cmlwZXMp OwpAQCAtNTQ2NSw3ICs1NDY4LDcgQEAgc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhz dHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgaW50IHJ3LAogCiAJfSBlbHNlIGlmICht YXAtPnR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9SQUlENTZfTUFTSykgewogCQlpZiAobmVl ZF9yYWlkX21hcCAmJgotCQkgICAgKChydyAmIChSRVFfV1JJVEUgfCBSRVFfR0VUX1JFQURf TUlSUk9SUykpIHx8CisJCSAgICAob3AgPT0gUkVRX09QX1dSSVRFIHx8IG9wID09IFJFUV9H RVRfUkVBRF9NSVJST1JTIHx8CiAJCSAgICAgbWlycm9yX251bSA+IDEpKSB7CiAJCQkvKiBw dXNoIHN0cmlwZV9uciBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgZnVsbCBzdHJpcGUgKi8K IAkJCXN0cmlwZV9uciA9IGRpdl91NjQocmFpZDU2X2Z1bGxfc3RyaXBlX3N0YXJ0LApAQCAt NTQ5Myw4ICs1NDk2LDggQEAgc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3Qg YnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgaW50IHJ3LAogCQkJLyogV2UgZGlzdHJpYnV0ZSB0 aGUgcGFyaXR5IGJsb2NrcyBhY3Jvc3Mgc3RyaXBlcyAqLwogCQkJZGl2X3U2NF9yZW0oc3Ry aXBlX25yICsgc3RyaXBlX2luZGV4LCBtYXAtPm51bV9zdHJpcGVzLAogCQkJCQkmc3RyaXBl X2luZGV4KTsKLQkJCWlmICghKHJ3ICYgKFJFUV9XUklURSB8IFJFUV9ESVNDQVJEIHwKLQkJ CQkgICAgUkVRX0dFVF9SRUFEX01JUlJPUlMpKSAmJiBtaXJyb3JfbnVtIDw9IDEpCisJCQlp ZiAoKG9wICE9IFJFUV9PUF9XUklURSAmJiBvcCAhPSBSRVFfT1BfRElTQ0FSRCAmJgorCQkJ ICAgIG9wICE9IFJFUV9HRVRfUkVBRF9NSVJST1JTKSAmJiBtaXJyb3JfbnVtIDw9IDEpCiAJ CQkJbWlycm9yX251bSA9IDE7CiAJCX0KIAl9IGVsc2UgewpAQCAtNTUxMSw5ICs1NTE0LDkg QEAgc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAq ZnNfaW5mbywgaW50IHJ3LAogCiAJbnVtX2FsbG9jX3N0cmlwZXMgPSBudW1fc3RyaXBlczsK IAlpZiAoZGV2X3JlcGxhY2VfaXNfb25nb2luZykgewotCQlpZiAocncgJiAoUkVRX1dSSVRF IHwgUkVRX0RJU0NBUkQpKQorCQlpZiAob3AgPT0gUkVRX09QX1dSSVRFIHx8IG9wID09IFJF UV9PUF9ESVNDQVJEKQogCQkJbnVtX2FsbG9jX3N0cmlwZXMgPDw9IDE7Ci0JCWlmIChydyAm IFJFUV9HRVRfUkVBRF9NSVJST1JTKQorCQlpZiAob3AgPT0gUkVRX0dFVF9SRUFEX01JUlJP UlMpCiAJCQludW1fYWxsb2Nfc3RyaXBlcysrOwogCQl0Z3RkZXZfaW5kZXhlcyA9IG51bV9z dHJpcGVzOwogCX0KQEAgLTU1MjgsNyArNTUzMSw4IEBAIHN0YXRpYyBpbnQgX19idHJmc19t YXBfYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBydywKIAogCS8q IGJ1aWxkIHJhaWRfbWFwICovCiAJaWYgKG1hcC0+dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQ X1JBSUQ1Nl9NQVNLICYmCi0JICAgIG5lZWRfcmFpZF9tYXAgJiYgKChydyAmIChSRVFfV1JJ VEUgfCBSRVFfR0VUX1JFQURfTUlSUk9SUykpIHx8CisJICAgIG5lZWRfcmFpZF9tYXAgJiYK KwkgICAgKChvcCA9PSBSRVFfT1BfV1JJVEUgfHwgb3AgPT0gUkVRX0dFVF9SRUFEX01JUlJP UlMpIHx8CiAJICAgIG1pcnJvcl9udW0gPiAxKSkgewogCQl1NjQgdG1wOwogCQl1bnNpZ25l ZCByb3Q7CkBAIC01NTUzLDcgKzU1NTcsNyBAQCBzdGF0aWMgaW50IF9fYnRyZnNfbWFwX2Js b2NrKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCBpbnQgcncsCiAJCQkJUkFJRDZf UV9TVFJJUEU7CiAJfQogCi0JaWYgKHJ3ICYgUkVRX0RJU0NBUkQpIHsKKwlpZiAob3AgPT0g UkVRX09QX0RJU0NBUkQpIHsKIAkJdTMyIGZhY3RvciA9IDA7CiAJCXUzMiBzdWJfc3RyaXBl cyA9IDA7CiAJCXU2NCBzdHJpcGVzX3Blcl9kZXYgPSAwOwpAQCAtNTYzMywxNCArNTYzNywx NSBAQCBzdGF0aWMgaW50IF9fYnRyZnNfbWFwX2Jsb2NrKHN0cnVjdCBidHJmc19mc19pbmZv ICpmc19pbmZvLCBpbnQgcncsCiAJCX0KIAl9CiAKLQlpZiAocncgJiAoUkVRX1dSSVRFIHwg UkVRX0dFVF9SRUFEX01JUlJPUlMpKQorCWlmIChvcCA9PSBSRVFfT1BfV1JJVEUgfHwgb3Ag PT0gUkVRX0dFVF9SRUFEX01JUlJPUlMpCiAJCW1heF9lcnJvcnMgPSBidHJmc19jaHVua19t YXhfZXJyb3JzKG1hcCk7CiAKIAlpZiAoYmJpby0+cmFpZF9tYXApCiAJCXNvcnRfcGFyaXR5 X3N0cmlwZXMoYmJpbywgbnVtX3N0cmlwZXMpOwogCiAJdGd0ZGV2X2luZGV4ZXMgPSAwOwot CWlmIChkZXZfcmVwbGFjZV9pc19vbmdvaW5nICYmIChydyAmIChSRVFfV1JJVEUgfCBSRVFf RElTQ0FSRCkpICYmCisJaWYgKGRldl9yZXBsYWNlX2lzX29uZ29pbmcgJiYKKwkgICAob3Ag PT0gUkVRX09QX1dSSVRFIHx8IG9wID09IFJFUV9PUF9ESVNDQVJEKSAmJgogCSAgICBkZXZf cmVwbGFjZS0+dGd0ZGV2ICE9IE5VTEwpIHsKIAkJaW50IGluZGV4X3doZXJlX3RvX2FkZDsK IAkJdTY0IHNyY2Rldl9kZXZpZCA9IGRldl9yZXBsYWNlLT5zcmNkZXYtPmRldmlkOwpAQCAt NTY3NSw3ICs1NjgwLDcgQEAgc3RhdGljIGludCBfX2J0cmZzX21hcF9ibG9jayhzdHJ1Y3Qg YnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgaW50IHJ3LAogCQkJfQogCQl9CiAJCW51bV9zdHJp cGVzID0gaW5kZXhfd2hlcmVfdG9fYWRkOwotCX0gZWxzZSBpZiAoZGV2X3JlcGxhY2VfaXNf b25nb2luZyAmJiAocncgJiBSRVFfR0VUX1JFQURfTUlSUk9SUykgJiYKKwl9IGVsc2UgaWYg KGRldl9yZXBsYWNlX2lzX29uZ29pbmcgJiYgKG9wID09IFJFUV9HRVRfUkVBRF9NSVJST1JT KSAmJgogCQkgICBkZXZfcmVwbGFjZS0+dGd0ZGV2ICE9IE5VTEwpIHsKIAkJdTY0IHNyY2Rl dl9kZXZpZCA9IGRldl9yZXBsYWNlLT5zcmNkZXYtPmRldmlkOwogCQlpbnQgaW5kZXhfc3Jj ZGV2ID0gMDsKQEAgLTU3NDgsMjEgKzU3NTMsMjEgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9 CiAKLWludCBidHJmc19tYXBfYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8s IGludCBydywKK2ludCBidHJmc19tYXBfYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sIGludCBvcCwKIAkJICAgICAgdTY0IGxvZ2ljYWwsIHU2NCAqbGVuZ3RoLAogCQkg ICAgICBzdHJ1Y3QgYnRyZnNfYmlvICoqYmJpb19yZXQsIGludCBtaXJyb3JfbnVtKQogewot CXJldHVybiBfX2J0cmZzX21hcF9ibG9jayhmc19pbmZvLCBydywgbG9naWNhbCwgbGVuZ3Ro LCBiYmlvX3JldCwKKwlyZXR1cm4gX19idHJmc19tYXBfYmxvY2soZnNfaW5mbywgb3AsIGxv Z2ljYWwsIGxlbmd0aCwgYmJpb19yZXQsCiAJCQkJIG1pcnJvcl9udW0sIDApOwogfQogCiAv KiBGb3IgU2NydWIvcmVwbGFjZSAqLwotaW50IGJ0cmZzX21hcF9zYmxvY2soc3RydWN0IGJ0 cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBydywKK2ludCBidHJmc19tYXBfc2Jsb2NrKHN0 cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCBpbnQgb3AsCiAJCSAgICAgdTY0IGxvZ2lj YWwsIHU2NCAqbGVuZ3RoLAogCQkgICAgIHN0cnVjdCBidHJmc19iaW8gKipiYmlvX3JldCwg aW50IG1pcnJvcl9udW0sCiAJCSAgICAgaW50IG5lZWRfcmFpZF9tYXApCiB7Ci0JcmV0dXJu IF9fYnRyZnNfbWFwX2Jsb2NrKGZzX2luZm8sIHJ3LCBsb2dpY2FsLCBsZW5ndGgsIGJiaW9f cmV0LAorCXJldHVybiBfX2J0cmZzX21hcF9ibG9jayhmc19pbmZvLCBvcCwgbG9naWNhbCwg bGVuZ3RoLCBiYmlvX3JldCwKIAkJCQkgbWlycm9yX251bSwgbmVlZF9yYWlkX21hcCk7CiB9 CiAKQEAgLTU4NzYsNyArNTg4MSw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX2VuZF9iaW8oc3Ry dWN0IGJpbyAqYmlvKQogCQkJQlVHX09OKHN0cmlwZV9pbmRleCA+PSBiYmlvLT5udW1fc3Ry aXBlcyk7CiAJCQlkZXYgPSBiYmlvLT5zdHJpcGVzW3N0cmlwZV9pbmRleF0uZGV2OwogCQkJ aWYgKGRldi0+YmRldikgewotCQkJCWlmIChiaW8tPmJpX3J3ICYgV1JJVEUpCisJCQkJaWYg KGJpby0+Ymlfb3AgPT0gUkVRX09QX1dSSVRFKQogCQkJCQlidHJmc19kZXZfc3RhdF9pbmMo ZGV2LAogCQkJCQkJQlRSRlNfREVWX1NUQVRfV1JJVEVfRVJSUyk7CiAJCQkJZWxzZQpAQCAt NTk0MSw3ICs1OTQ2LDcgQEAgc3RhdGljIG5vaW5saW5lIHZvaWQgYnRyZnNfc2NoZWR1bGVf YmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCX0KIAogCS8qIGRvbid0IGJvdGhlciB3 aXRoIGFkZGl0aW9uYWwgYXN5bmMgc3RlcHMgZm9yIHJlYWRzLCByaWdodCBub3cgKi8KLQlp ZiAoIShiaW8tPmJpX3J3ICYgUkVRX1dSSVRFKSkgeworCWlmIChiaW8tPmJpX29wID09IFJF UV9PUF9SRUFEKSB7CiAJCWJpb19nZXQoYmlvKTsKIAkJYnRyZnNpY19zdWJtaXRfYmlvKGJp byk7CiAJCWJpb19wdXQoYmlvKTsKQEAgLTU5ODIsNyArNTk4Nyw3IEBAIHN0YXRpYyBub2lu bGluZSB2b2lkIGJ0cmZzX3NjaGVkdWxlX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwK IAogc3RhdGljIHZvaWQgc3VibWl0X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsIHN0cnVjdCBidHJmc19iaW8gKmJiaW8sCiAJCQkgICAgICBzdHJ1Y3QgYmlvICpiaW8s IHU2NCBwaHlzaWNhbCwgaW50IGRldl9uciwKLQkJCSAgICAgIGludCBydywgaW50IGFzeW5j KQorCQkJICAgICAgaW50IGFzeW5jKQogewogCXN0cnVjdCBidHJmc19kZXZpY2UgKmRldiA9 IGJiaW8tPnN0cmlwZXNbZGV2X25yXS5kZXY7CiAKQEAgLTU5OTAsMTUgKzU5OTUsMTQgQEAg c3RhdGljIHZvaWQgc3VibWl0X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs IHN0cnVjdCBidHJmc19iaW8gKmJiaW8sCiAJYnRyZnNfaW9fYmlvKGJpbyktPnN0cmlwZV9p bmRleCA9IGRldl9ucjsKIAliaW8tPmJpX2VuZF9pbyA9IGJ0cmZzX2VuZF9iaW87CiAJYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7Ci0JYmlvLT5iaV9ydyB8PSBy dzsKICNpZmRlZiBERUJVRwogCXsKIAkJc3RydWN0IHJjdV9zdHJpbmcgKm5hbWU7CiAKIAkJ cmN1X3JlYWRfbG9jaygpOwogCQluYW1lID0gcmN1X2RlcmVmZXJlbmNlKGRldi0+bmFtZSk7 Ci0JCXByX2RlYnVnKCJidHJmc19tYXBfYmlvOiBydyAlZCwgc2VjdG9yPSVsbHUsIGRldj0l bHUgIgotCQkJICIoJXMgaWQgJWxsdSksIHNpemU9JXVcbiIsIHJ3LAorCQlwcl9kZWJ1Zygi YnRyZnNfbWFwX2JpbzogcncgJWQgMHgleCwgc2VjdG9yPSVsbHUsIGRldj0lbHUgIgorCQkJ ICIoJXMgaWQgJWxsdSksIHNpemU9JXVcbiIsIGJpby0+Ymlfb3AsIGJpby0+YmlfcncsCiAJ CQkgKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCAodV9sb25nKWRldi0+YmRldi0+YmRf ZGV2LAogCQkJIG5hbWUtPnN0ciwgZGV2LT5kZXZpZCwgYmlvLT5iaV9pdGVyLmJpX3NpemUp OwogCQlyY3VfcmVhZF91bmxvY2soKTsKQEAgLTYwMjgsNyArNjAzMiw3IEBAIHN0YXRpYyB2 b2lkIGJiaW9fZXJyb3Ioc3RydWN0IGJ0cmZzX2JpbyAqYmJpbywgc3RydWN0IGJpbyAqYmlv LCB1NjQgbG9naWNhbCkKIAl9CiB9CiAKLWludCBidHJmc19tYXBfYmlvKHN0cnVjdCBidHJm c19yb290ICpyb290LCBpbnQgcncsIHN0cnVjdCBiaW8gKmJpbywKK2ludCBidHJmc19tYXBf YmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LHN0cnVjdCBiaW8gKmJpbywKIAkJICBpbnQg bWlycm9yX251bSwgaW50IGFzeW5jX3N1Ym1pdCkKIHsKIAlzdHJ1Y3QgYnRyZnNfZGV2aWNl ICpkZXY7CkBAIC02MDQ1LDggKzYwNDksOCBAQCBpbnQgYnRyZnNfbWFwX2JpbyhzdHJ1Y3Qg YnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiAJbWFwX2xlbmd0 aCA9IGxlbmd0aDsKIAogCWJ0cmZzX2Jpb19jb3VudGVyX2luY19ibG9ja2VkKHJvb3QtPmZz X2luZm8pOwotCXJldCA9IF9fYnRyZnNfbWFwX2Jsb2NrKHJvb3QtPmZzX2luZm8sIHJ3LCBs b2dpY2FsLCAmbWFwX2xlbmd0aCwgJmJiaW8sCi0JCQkgICAgICBtaXJyb3JfbnVtLCAxKTsK KwlyZXQgPSBfX2J0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBiaW8tPmJpX29wLCBs b2dpY2FsLAorCQkJCSZtYXBfbGVuZ3RoLCAmYmJpbywgbWlycm9yX251bSwgMSk7CiAJaWYg KHJldCkgewogCQlidHJmc19iaW9fY291bnRlcl9kZWMocm9vdC0+ZnNfaW5mbyk7CiAJCXJl dHVybiByZXQ7CkBAIC02MDYyLDcgKzYwNjYsNyBAQCBpbnQgYnRyZnNfbWFwX2JpbyhzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKGJi aW8tPnJhaWRfbWFwKSB7CiAJCS8qIEluIHRoaXMgY2FzZSwgbWFwX2xlbmd0aCBoYXMgYmVl biBzZXQgdG8gdGhlIGxlbmd0aCBvZgogCQkgICBhIHNpbmdsZSBzdHJpcGU7IG5vdCB0aGUg d2hvbGUgd3JpdGUgKi8KLQkJaWYgKHJ3ICYgV1JJVEUpIHsKKwkJaWYgKGJpby0+Ymlfb3Ag PT0gUkVRX09QX1dSSVRFKSB7CiAJCQlyZXQgPSByYWlkNTZfcGFyaXR5X3dyaXRlKHJvb3Qs IGJpbywgYmJpbywgbWFwX2xlbmd0aCk7CiAJCX0gZWxzZSB7CiAJCQlyZXQgPSByYWlkNTZf cGFyaXR5X3JlY292ZXIocm9vdCwgYmlvLCBiYmlvLCBtYXBfbGVuZ3RoLApAQCAtNjA4MSw3 ICs2MDg1LDggQEAgaW50IGJ0cmZzX21hcF9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs IGludCBydywgc3RydWN0IGJpbyAqYmlvLAogCiAJZm9yIChkZXZfbnIgPSAwOyBkZXZfbnIg PCB0b3RhbF9kZXZzOyBkZXZfbnIrKykgewogCQlkZXYgPSBiYmlvLT5zdHJpcGVzW2Rldl9u cl0uZGV2OwotCQlpZiAoIWRldiB8fCAhZGV2LT5iZGV2IHx8IChydyAmIFdSSVRFICYmICFk ZXYtPndyaXRlYWJsZSkpIHsKKwkJaWYgKCFkZXYgfHwgIWRldi0+YmRldiB8fAorCQkgICAg KGJpby0+Ymlfb3AgPT0gUkVRX09QX1dSSVRFICYmICFkZXYtPndyaXRlYWJsZSkpIHsKIAkJ CWJiaW9fZXJyb3IoYmJpbywgZmlyc3RfYmlvLCBsb2dpY2FsKTsKIAkJCWNvbnRpbnVlOwog CQl9CkBAIC02MDkzLDcgKzYwOTgsNyBAQCBpbnQgYnRyZnNfbWFwX2JpbyhzdHJ1Y3QgYnRy ZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQliaW8gPSBmaXJz dF9iaW87CiAKIAkJc3VibWl0X3N0cmlwZV9iaW8ocm9vdCwgYmJpbywgYmlvLAotCQkJCSAg YmJpby0+c3RyaXBlc1tkZXZfbnJdLnBoeXNpY2FsLCBkZXZfbnIsIHJ3LAorCQkJCSAgYmJp by0+c3RyaXBlc1tkZXZfbnJdLnBoeXNpY2FsLCBkZXZfbnIsCiAJCQkJICBhc3luY19zdWJt aXQpOwogCX0KIAlidHJmc19iaW9fY291bnRlcl9kZWMocm9vdC0+ZnNfaW5mbyk7CmRpZmYg LS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmggYi9mcy9idHJmcy92b2x1bWVzLmgKaW5kZXgg ZWM1NzEyMy4uZjhiODRkYSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5oCisrKyBi L2ZzL2J0cmZzL3ZvbHVtZXMuaApAQCAtNDIxLDEwICs0MjEsMTAgQEAgaW50IGJ0cmZzX2Fj Y291bnRfZGV2X2V4dGVudHNfc2l6ZShzdHJ1Y3QgYnRyZnNfZGV2aWNlICpkZXZpY2UsIHU2 NCBzdGFydCwKIAkJCQkgICB1NjQgZW5kLCB1NjQgKmxlbmd0aCk7CiB2b2lkIGJ0cmZzX2dl dF9iYmlvKHN0cnVjdCBidHJmc19iaW8gKmJiaW8pOwogdm9pZCBidHJmc19wdXRfYmJpbyhz dHJ1Y3QgYnRyZnNfYmlvICpiYmlvKTsKLWludCBidHJmc19tYXBfYmxvY2soc3RydWN0IGJ0 cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBydywKK2ludCBidHJmc19tYXBfYmxvY2soc3Ry dWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIGludCBvcCwKIAkJICAgIHU2NCBsb2dpY2Fs LCB1NjQgKmxlbmd0aCwKIAkJICAgIHN0cnVjdCBidHJmc19iaW8gKipiYmlvX3JldCwgaW50 IG1pcnJvcl9udW0pOwotaW50IGJ0cmZzX21hcF9zYmxvY2soc3RydWN0IGJ0cmZzX2ZzX2lu Zm8gKmZzX2luZm8sIGludCBydywKK2ludCBidHJmc19tYXBfc2Jsb2NrKHN0cnVjdCBidHJm c19mc19pbmZvICpmc19pbmZvLCBpbnQgb3AsCiAJCSAgICAgdTY0IGxvZ2ljYWwsIHU2NCAq bGVuZ3RoLAogCQkgICAgIHN0cnVjdCBidHJmc19iaW8gKipiYmlvX3JldCwgaW50IG1pcnJv cl9udW0sCiAJCSAgICAgaW50IG5lZWRfcmFpZF9tYXApOwpAQCAtNDM3LDcgKzQzNyw3IEBA IGludCBidHJmc19hbGxvY19jaHVuayhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFu cywKIAkJICAgICAgc3RydWN0IGJ0cmZzX3Jvb3QgKmV4dGVudF9yb290LCB1NjQgdHlwZSk7 CiB2b2lkIGJ0cmZzX21hcHBpbmdfaW5pdChzdHJ1Y3QgYnRyZnNfbWFwcGluZ190cmVlICp0 cmVlKTsKIHZvaWQgYnRyZnNfbWFwcGluZ190cmVlX2ZyZWUoc3RydWN0IGJ0cmZzX21hcHBp bmdfdHJlZSAqdHJlZSk7Ci1pbnQgYnRyZnNfbWFwX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCitpbnQgYnRyZnNfbWFwX2JpbyhzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJpbyAqYmlvLAogCQkgIGludCBtaXJyb3Jf bnVtLCBpbnQgYXN5bmNfc3VibWl0KTsKIGludCBidHJmc19vcGVuX2RldmljZXMoc3RydWN0 IGJ0cmZzX2ZzX2RldmljZXMgKmZzX2RldmljZXMsCiAJCSAgICAgICBmbW9kZV90IGZsYWdz LCB2b2lkICpob2xkZXIpOwotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJlcS1vcC8w MDA3LWRpcmVjdC1pby1zZXQtYmlfb3AtdG8tUkVRX09QLnBhdGNoAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjY0ADAwMDE3NTEA MDAwMTc1MQAwMDAwMDAxNDQ1MgAxMjYzMjQwMjY1NwAwMTcyMjQAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABtbmMAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAG1uYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAARnJvbSBiNzMyNTUyN2ZhZGIyY2NmOWI5NGY0MWRmMmY3MDM5 OTM4MTVlYzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIENocmlzdGll IDxtY2hyaXN0aUByZWRoYXQuY29tPgpEYXRlOiBXZWQsIDIgRGVjIDIwMTUgMDE6NDg6NTIg LTA2MDAKU3ViamVjdDogW1BBVENIIDA3LzMwXSBkaXJlY3QtaW86IHNldCBiaV9vcCB0byBS RVFfT1AKClRoaXMgcGF0Y2ggaGFzIHRoZSBkaW8gY29kZSBzZXQgdGhlIGJpbyBiaV9vcCB0 byBhIFJFUV9PUC4KCkl0IGFsc28gYmVnaW5zIHRvIGNvbnZlcnQgYnRyZnMncyBkaW9fc3Vi bWl0X3QgcmVsYXRlZCBjb2RlLgpUaGUgYnRyZnNfc3VibWl0X2RpcmVjdCBjaGFuZ2Ugd2hl cmUgSSBPUiB0aGUgb3AgYW5kIGZsYWcKYmFjayB0b2dldGhlciBpcyBvbmx5IHRlbXBvcmFy eS4gVGhlIG5leHQgcGF0Y2ggd2lsbCBjb21wbGV0ZWx5CmNvbnZlcnQgYWxsIHRoZSBidHJm cyBjb2RlIHBhdGhzLgoKClNpZ25lZC1vZmYtYnk6IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3Rp QHJlZGhhdC5jb20+Ci0tLQogZnMvYnRyZnMvaW5vZGUuYyAgIHwgIDkgKysrKystLS0tCiBm cy9kaXJlY3QtaW8uYyAgICAgfCAzNSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogaW5jbHVkZS9saW51eC9mcy5oIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjcg aW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMv aW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggOTk0NDkwZC4uMmIxZjFhNSAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJmcy9pbm9kZS5jCkBAIC04 MzEzLDE0ICs4MzEzLDE0IEBAIG91dF9lcnI6CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2 b2lkIGJ0cmZzX3N1Ym1pdF9kaXJlY3QoaW50IHJ3LCBzdHJ1Y3QgYmlvICpkaW9fYmlvLAot CQkJCXN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBmaWxlX29mZnNldCkKK3N0YXRpYyB2 b2lkIGJ0cmZzX3N1Ym1pdF9kaXJlY3Qoc3RydWN0IGJpbyAqZGlvX2Jpbywgc3RydWN0IGlu b2RlICppbm9kZSwKKwkJCQlsb2ZmX3QgZmlsZV9vZmZzZXQpCiB7CiAJc3RydWN0IGJ0cmZz X2Rpb19wcml2YXRlICpkaXAgPSBOVUxMOwogCXN0cnVjdCBiaW8gKmlvX2JpbyA9IE5VTEw7 CiAJc3RydWN0IGJ0cmZzX2lvX2JpbyAqYnRyZnNfYmlvOwogCWludCBza2lwX3N1bTsKLQlp bnQgd3JpdGUgPSBydyAmIFJFUV9XUklURTsKKwlib29sIHdyaXRlID0gb3BfaXNfd3JpdGUo ZGlvX2Jpby0+Ymlfb3ApOwogCWludCByZXQgPSAwOwogCiAJc2tpcF9zdW0gPSBCVFJGU19J KGlub2RlKS0+ZmxhZ3MgJiBCVFJGU19JTk9ERV9OT0RBVEFTVU07CkBAIC04MzU2LDcgKzgz NTYsOCBAQCBzdGF0aWMgdm9pZCBidHJmc19zdWJtaXRfZGlyZWN0KGludCBydywgc3RydWN0 IGJpbyAqZGlvX2JpbywKIAkJZGlwLT5zdWJpb19lbmRpbyA9IGJ0cmZzX3N1YmlvX2VuZGlv X3JlYWQ7CiAJfQogCi0JcmV0ID0gYnRyZnNfc3VibWl0X2RpcmVjdF9ob29rKHJ3LCBkaXAs IHNraXBfc3VtKTsKKwlyZXQgPSBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soZGlvX2Jpby0+ Ymlfb3AgfCBkaW9fYmlvLT5iaV9ydywgZGlwLAorCQkJCSAgICAgICBza2lwX3N1bSk7CiAJ aWYgKCFyZXQpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMgYi9m cy9kaXJlY3QtaW8uYwppbmRleCBlNWVlMDNiLi41ZWY5MTM4IDEwMDY0NAotLS0gYS9mcy9k aXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3QtaW8uYwpAQCAtMTA4LDcgKzEwOCw4IEBAIHN0 cnVjdCBkaW9fc3VibWl0IHsKIC8qIGRpb19zdGF0ZSBjb21tdW5pY2F0ZWQgYmV0d2VlbiBz dWJtaXNzaW9uIHBhdGggYW5kIGVuZF9pbyAqLwogc3RydWN0IGRpbyB7CiAJaW50IGZsYWdz OwkJCS8qIGRvZXNuJ3QgY2hhbmdlICovCi0JaW50IHJ3OworCWludCBvcDsKKwlpbnQgb3Bf ZmxhZ3M7CiAJYmxrX3FjX3QgYmlvX2Nvb2tpZTsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi aW9fYmRldjsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlOwpAQCAtMTYzLDcgKzE2NCw3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IGRpb19yZWZpbGxfcGFnZXMoc3RydWN0IGRpbyAqZGlvLCBzdHJ1 Y3QgZGlvX3N1Ym1pdCAqc2RpbykKIAlyZXQgPSBpb3ZfaXRlcl9nZXRfcGFnZXMoc2Rpby0+ aXRlciwgZGlvLT5wYWdlcywgTE9OR19NQVgsIERJT19QQUdFUywKIAkJCQkmc2Rpby0+ZnJv bSk7CiAKLQlpZiAocmV0IDwgMCAmJiBzZGlvLT5ibG9ja3NfYXZhaWxhYmxlICYmIChkaW8t PnJ3ICYgV1JJVEUpKSB7CisJaWYgKHJldCA8IDAgJiYgc2Rpby0+YmxvY2tzX2F2YWlsYWJs ZSAmJiAoZGlvLT5vcCA9PSBSRVFfT1BfV1JJVEUpKSB7CiAJCXN0cnVjdCBwYWdlICpwYWdl ID0gWkVST19QQUdFKDApOwogCQkvKgogCQkgKiBBIG1lbW9yeSBmYXVsdCwgYnV0IHRoZSBm aWxlc3lzdGVtIGhhcyBzb21lIG91dHN0YW5kaW5nCkBAIC0yNDIsNyArMjQzLDggQEAgc3Rh dGljIHNzaXplX3QgZGlvX2NvbXBsZXRlKHN0cnVjdCBkaW8gKmRpbywgbG9mZl90IG9mZnNl dCwgc3NpemVfdCByZXQsCiAJCXRyYW5zZmVycmVkID0gZGlvLT5yZXN1bHQ7CiAKIAkJLyog Q2hlY2sgZm9yIHNob3J0IHJlYWQgY2FzZSAqLwotCQlpZiAoKGRpby0+cncgPT0gUkVBRCkg JiYgKChvZmZzZXQgKyB0cmFuc2ZlcnJlZCkgPiBkaW8tPmlfc2l6ZSkpCisJCWlmICgoZGlv LT5vcCA9PSBSRVFfT1BfUkVBRCkgJiYKKwkJICAgICgob2Zmc2V0ICsgdHJhbnNmZXJyZWQp ID4gZGlvLT5pX3NpemUpKQogCQkJdHJhbnNmZXJyZWQgPSBkaW8tPmlfc2l6ZSAtIG9mZnNl dDsKIAl9CiAKQEAgLTI2MCw3ICsyNjIsNyBAQCBzdGF0aWMgc3NpemVfdCBkaW9fY29tcGxl dGUoc3RydWN0IGRpbyAqZGlvLCBsb2ZmX3Qgb2Zmc2V0LCBzc2l6ZV90IHJldCwKIAkJaW5v ZGVfZGlvX2VuZChkaW8tPmlub2RlKTsKIAogCWlmIChpc19hc3luYykgewotCQlpZiAoZGlv LT5ydyAmIFdSSVRFKSB7CisJCWlmIChkaW8tPm9wID09IFJFUV9PUF9XUklURSkgewogCQkJ aW50IGVycjsKIAogCQkJZXJyID0gZ2VuZXJpY193cml0ZV9zeW5jKGRpby0+aW9jYi0+a2lf ZmlscCwgb2Zmc2V0LApAQCAtMzY5LDcgKzM3MSw4IEBAIGRpb19iaW9fYWxsb2Moc3RydWN0 IGRpbyAqZGlvLCBzdHJ1Y3QgZGlvX3N1Ym1pdCAqc2RpbywKIAogCWJpby0+YmlfYmRldiA9 IGJkZXY7CiAJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGZpcnN0X3NlY3RvcjsKLQliaW8t PmJpX3J3IHw9IGRpby0+cnc7CisJYmlvLT5iaV9vcCA9IGRpby0+b3A7CisJYmlvLT5iaV9y dyB8PSBkaW8tPm9wX2ZsYWdzOwogCWlmIChkaW8tPmlzX2FzeW5jKQogCQliaW8tPmJpX2Vu ZF9pbyA9IGRpb19iaW9fZW5kX2FpbzsKIAllbHNlCkBAIC0zOTcsMTQgKzQwMCwxMyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgZGlvX2Jpb19zdWJtaXQoc3RydWN0IGRpbyAqZGlvLCBzdHJ1 Y3QgZGlvX3N1Ym1pdCAqc2RpbykKIAlkaW8tPnJlZmNvdW50Kys7CiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGlvLT5iaW9fbG9jaywgZmxhZ3MpOwogCi0JaWYgKGRpby0+aXNfYXN5 bmMgJiYgZGlvLT5ydyA9PSBSRUFEICYmIGRpby0+c2hvdWxkX2RpcnR5KQorCWlmIChkaW8t PmlzX2FzeW5jICYmIGRpby0+b3AgPT0gUkVRX09QX1JFQUQgJiYgZGlvLT5zaG91bGRfZGly dHkpCiAJCWJpb19zZXRfcGFnZXNfZGlydHkoYmlvKTsKIAogCWRpby0+YmlvX2JkZXYgPSBi aW8tPmJpX2JkZXY7CiAKIAlpZiAoc2Rpby0+c3VibWl0X2lvKSB7Ci0JCXNkaW8tPnN1Ym1p dF9pbyhkaW8tPnJ3LCBiaW8sIGRpby0+aW5vZGUsCi0JCQkgICAgICAgc2Rpby0+bG9naWNh bF9vZmZzZXRfaW5fYmlvKTsKKwkJc2Rpby0+c3VibWl0X2lvKGJpbywgZGlvLT5pbm9kZSwg c2Rpby0+bG9naWNhbF9vZmZzZXRfaW5fYmlvKTsKIAkJZGlvLT5iaW9fY29va2llID0gQkxL X1FDX1RfTk9ORTsKIAl9IGVsc2UKIAkJZGlvLT5iaW9fY29va2llID0gc3VibWl0X2Jpbyhi aW8pOwpAQCAtNDcyLDE0ICs0NzQsMTQgQEAgc3RhdGljIGludCBkaW9fYmlvX2NvbXBsZXRl KHN0cnVjdCBkaW8gKmRpbywgc3RydWN0IGJpbyAqYmlvKQogCWlmIChiaW8tPmJpX2Vycm9y KQogCQlkaW8tPmlvX2Vycm9yID0gLUVJTzsKIAotCWlmIChkaW8tPmlzX2FzeW5jICYmIGRp by0+cncgPT0gUkVBRCAmJiBkaW8tPnNob3VsZF9kaXJ0eSkgeworCWlmIChkaW8tPmlzX2Fz eW5jICYmIGRpby0+b3AgPT0gUkVRX09QX1JFQUQgJiYgZGlvLT5zaG91bGRfZGlydHkpIHsK IAkJYmlvX2NoZWNrX3BhZ2VzX2RpcnR5KGJpbyk7CS8qIHRyYW5zZmVycyBvd25lcnNoaXAg Ki8KIAkJZXJyID0gYmlvLT5iaV9lcnJvcjsKIAl9IGVsc2UgewogCQliaW9fZm9yX2VhY2hf c2VnbWVudF9hbGwoYnZlYywgYmlvLCBpKSB7CiAJCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJ2 ZWMtPmJ2X3BhZ2U7CiAKLQkJCWlmIChkaW8tPnJ3ID09IFJFQUQgJiYgIVBhZ2VDb21wb3Vu ZChwYWdlKSAmJgorCQkJaWYgKGRpby0+b3AgPT0gUkVRX09QX1JFQUQgJiYgIVBhZ2VDb21w b3VuZChwYWdlKSAmJgogCQkJCQlkaW8tPnNob3VsZF9kaXJ0eSkKIAkJCQlzZXRfcGFnZV9k aXJ0eV9sb2NrKHBhZ2UpOwogCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwpAQCAtNjMy LDcgKzYzNCw3IEBAIHN0YXRpYyBpbnQgZ2V0X21vcmVfYmxvY2tzKHN0cnVjdCBkaW8gKmRp bywgc3RydWN0IGRpb19zdWJtaXQgKnNkaW8sCiAJCSAqIHdoaWNoIG1heSBkZWNpZGUgdG8g aGFuZGxlIGl0IG9yIGFsc28gcmV0dXJuIGFuIHVubWFwcGVkCiAJCSAqIGJ1ZmZlciBoZWFk LgogCQkgKi8KLQkJY3JlYXRlID0gZGlvLT5ydyAmIFdSSVRFOworCQljcmVhdGUgPSBkaW8t Pm9wID09IFJFUV9PUF9XUklURTsKIAkJaWYgKGRpby0+ZmxhZ3MgJiBESU9fU0tJUF9IT0xF UykgewogCQkJaWYgKHNkaW8tPmJsb2NrX2luX2ZpbGUgPCAoaV9zaXplX3JlYWQoZGlvLT5p bm9kZSkgPj4KIAkJCQkJCQlzZGlvLT5ibGtiaXRzKSkKQEAgLTc4Miw3ICs3ODQsNyBAQCBz dWJtaXRfcGFnZV9zZWN0aW9uKHN0cnVjdCBkaW8gKmRpbywgc3RydWN0IGRpb19zdWJtaXQg KnNkaW8sIHN0cnVjdCBwYWdlICpwYWdlLAogewogCWludCByZXQgPSAwOwogCi0JaWYgKGRp by0+cncgJiBXUklURSkgeworCWlmIChkaW8tPm9wID09IFJFUV9PUF9XUklURSkgewogCQkv KgogCQkgKiBSZWFkIGFjY291bnRpbmcgaXMgcGVyZm9ybWVkIGluIHN1Ym1pdF9iaW8oKQog CQkgKi8KQEAgLTk4Miw3ICs5ODQsNyBAQCBkb19ob2xlczoKIAkJCQlsb2ZmX3QgaV9zaXpl X2FsaWduZWQ7CiAKIAkJCQkvKiBBS1BNOiBlYXJnaCwgLUVOT1RCTEsgaXMgYSBoYWNrICov Ci0JCQkJaWYgKGRpby0+cncgJiBXUklURSkgeworCQkJCWlmIChkaW8tPm9wID09IFJFUV9P UF9XUklURSkgewogCQkJCQlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CiAJCQkJCXJldHVy biAtRU5PVEJMSzsKIAkJCQl9CkBAIC0xMTg1LDcgKzExODcsMTIgQEAgZG9fYmxvY2tkZXZf ZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJ ZGlvLT5pc19hc3luYyA9IHRydWU7CiAKIAlkaW8tPmlub2RlID0gaW5vZGU7Ci0JZGlvLT5y dyA9IGlvdl9pdGVyX3J3KGl0ZXIpID09IFdSSVRFID8gV1JJVEVfT0RJUkVDVCA6IFJFQUQ7 CisJaWYgKGlvdl9pdGVyX3J3KGl0ZXIpID09IFdSSVRFKSB7CisJCWRpby0+b3AgPSBSRVFf T1BfV1JJVEU7CisJCWRpby0+b3BfZmxhZ3MgPSBXUklURV9PRElSRUNUOworCX0gZWxzZSB7 CisJCWRpby0+b3AgPSBSRVFfT1BfUkVBRDsKKwl9CiAKIAkvKgogCSAqIEZvciBBSU8gT18o RClTWU5DIHdyaXRlcyB3ZSBuZWVkIHRvIGRlZmVyIGNvbXBsZXRpb25zIHRvIGEgd29ya3F1 ZXVlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2Zz LmgKaW5kZXggNmE1MTYwMy4uZWVmZDI1MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9m cy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjY5Nyw3ICsyNjk3LDcgQEAgZXh0 ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0 IGZpbGUgKiBmaWxwKTsKIGV4dGVybiBpbnQgbm9uc2Vla2FibGVfb3BlbihzdHJ1Y3QgaW5v ZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKIAogI2lmZGVmIENPTkZJR19CTE9D SwotdHlwZWRlZiB2b2lkIChkaW9fc3VibWl0X3QpKGludCBydywgc3RydWN0IGJpbyAqYmlv LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAordHlwZWRlZiB2b2lkIChkaW9fc3VibWl0X3QpKHN0 cnVjdCBiaW8gKmJpbywgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCSAgICBsb2ZmX3QgZmls ZV9vZmZzZXQpOwogCiBlbnVtIHsKLS0gCjEuOC4zLjEKCgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAyOC1ibG9jay1mcy1k cml2ZXItZG8tbm90LXRlc3QtYmlfcnctZm9yLVJFUV9PUHMucGF0Y2gAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAw NjQ0MjMAMTI2MzI0MTI0MDEAMDIyMjUzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAEZyb20gYWYxMWQ4NzljN2EzMTUyYWI5ZTZiNmI5NWQxOGVkNzBiMDdjYWVkNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVk aGF0LmNvbT4KRGF0ZTogV2VkLCA5IERlYyAyMDE1IDAxOjQ1OjE2IC0wNjAwClN1YmplY3Q6 IFtQQVRDSCAyOC8zMF0gYmxvY2svZnMvZHJpdmVyOiBkbyBub3QgdGVzdCBiaV9ydyBmb3Ig UkVRX09QcwoKV2Ugbm8gbG9uZ2VyIHVzZSB0aGUgYmlvLT5iaV9ydyBmaWVsZCBmb3IgUkVR X09QczogUkVRX1dSSVRFLApSRVFfRElTQ0FSRCwgUkVRX1dSSVRFX1NBTUUsIHNvIHRoaXMg cGF0Y2ggc3RvcHMgY2hlY2tpbmcKZm9yIHRoZW0gaW4gYmlfcncgYW5kIGFsc28gcmVtb3Zl cyB0aGUgY29tcGF0IGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBNaWtlIENocmlzdGllIDxtY2hy aXN0aUByZWRoYXQuY29tPgotLS0KIGJsb2NrL2Jpby5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNiArKystLS0KIGJsb2NrL2Jsay1jb3JlLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAzMSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYmxv Y2svYmxrLW1lcmdlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrLS0t LS0tCiBkcml2ZXJzL2Jsb2NrL2JyZC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyAgICAgICAgICAgICAgfCAxNCAr KysrKystLS0tLS0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuYyAgICAgICAg ICAgIHwgIDQgKystLQogZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jICAgICAgICAgICAgICAg ICAgICB8ICAyICstCiBkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyAgICAgICAgICAg ICAgIHwgIDIgKy0KIGRyaXZlcnMvbGlnaHRudm0vcnJwYy5jICAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jICAgICAgICAgICAgICAg ICB8IDEwICsrKysrLS0tLS0KIGRyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMgICAgICAg ICAgICAgICAgfCAgOSArKysrKy0tLS0KIGRyaXZlcnMvbWQvZG0tY3J5cHQuYyAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1sb2ctd3JpdGVzLmMgICAg ICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL21kL2RtLXJhaWQxLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGRyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2gu YyAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBkcml2ZXJzL21kL2RtLXN0cmlwZS5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9tZC9kbS10aGluLmMgICAg ICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrLS0tLS0tCiBkcml2ZXJzL21kL2Rt LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiBkcml2ZXJzL21k L2xpbmVhci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQv cmFpZDAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9zdGFn aW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvbGxvb3AuYyB8ICA4ICsrKystLS0tCiBpbmNsdWRl L2xpbnV4L2Jpby5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrLS0t LS0KIGluY2x1ZGUvbGludXgvZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNSAr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogMjMgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9u cygrKSwgMTAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jpby5jIGIvYmxv Y2svYmlvLmMKaW5kZXggM2I4ZTk3MC4uY2EwYzUyZCAxMDA2NDQKLS0tIGEvYmxvY2svYmlv LmMKKysrIGIvYmxvY2svYmlvLmMKQEAgLTY2OSwxMCArNjY5LDEwIEBAIHN0cnVjdCBiaW8g KmJpb19jbG9uZV9iaW9zZXQoc3RydWN0IGJpbyAqYmlvX3NyYywgZ2ZwX3QgZ2ZwX21hc2ss CiAJYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcgk9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2VjdG9y OwogCWJpby0+YmlfaXRlci5iaV9zaXplCT0gYmlvX3NyYy0+YmlfaXRlci5iaV9zaXplOwog Ci0JaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkKKwlpZiAoYmlvLT5iaV9vcCA9PSBS RVFfT1BfRElTQ0FSRCkKIAkJZ290byBpbnRlZ3JpdHlfY2xvbmU7CiAKLQlpZiAoYmlvLT5i aV9ydyAmIFJFUV9XUklURV9TQU1FKSB7CisJaWYgKGJpby0+Ymlfb3AgPT0gUkVRX09QX1dS SVRFX1NBTUUpIHsKIAkJYmlvLT5iaV9pb192ZWNbYmlvLT5iaV92Y250KytdID0gYmlvX3Ny Yy0+YmlfaW9fdmVjWzBdOwogCQlnb3RvIGludGVncml0eV9jbG9uZTsKIAl9CkBAIC0xNzky LDcgKzE3OTIsNyBAQCBzdHJ1Y3QgYmlvICpiaW9fc3BsaXQoc3RydWN0IGJpbyAqYmlvLCBp bnQgc2VjdG9ycywKIAkgKiBEaXNjYXJkcyBuZWVkIGEgbXV0YWJsZSBiaW9fdmVjIHRvIGFj Y29tbW9kYXRlIHRoZSBwYXlsb2FkCiAJICogcmVxdWlyZWQgYnkgdGhlIERTTSBUUklNIGFu ZCBVTk1BUCBjb21tYW5kcy4KIAkgKi8KLQlpZiAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJE KQorCWlmIChiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJEKQogCQlzcGxpdCA9IGJpb19j bG9uZV9iaW9zZXQoYmlvLCBnZnAsIGJzKTsKIAllbHNlCiAJCXNwbGl0ID0gYmlvX2Nsb25l X2Zhc3QoYmlvLCBnZnAsIGJzKTsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jb3JlLmMgYi9i bG9jay9ibGstY29yZS5jCmluZGV4IGY5ZGU1ZmEuLjE2MTQxMDIgMTAwNjQ0Ci0tLSBhL2Js b2NrL2Jsay1jb3JlLmMKKysrIGIvYmxvY2svYmxrLWNvcmUuYwpAQCAtMTY4MCw4ICsxNjgw LDcgQEAgdm9pZCBpbml0X3JlcXVlc3RfZnJvbV9iaW8oc3RydWN0IHJlcXVlc3QgKnJlcSwg c3RydWN0IGJpbyAqYmlvKQogewogCXJlcS0+Y21kX3R5cGUgPSBSRVFfVFlQRV9GUzsKIAot CS8qIHRtcCBjb21wYXQuIEFsbG93IHVzZXJzIHRvIHNldCBiaV9vcCBvciBiaV9ydyAqLwot CXJlcS0+Y21kX2ZsYWdzIHw9IChiaW8tPmJpX3J3IHwgYmlvLT5iaV9vcCkgJiBSRVFfQ09N TU9OX01BU0s7CisJcmVxLT5jbWRfZmxhZ3MgfD0gYmlvLT5iaV9ydyAmIFJFUV9DT01NT05f TUFTSzsKIAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9SQUhFQUQpCiAJCXJlcS0+Y21kX2ZsYWdz IHw9IFJFUV9GQUlMRkFTVF9NQVNLOwogCkBAIC0xODMxLDkgKzE4MzAsOSBAQCBzdGF0aWMg dm9pZCBoYW5kbGVfYmFkX3NlY3RvcihzdHJ1Y3QgYmlvICpiaW8pCiAJY2hhciBiW0JERVZO QU1FX1NJWkVdOwogCiAJcHJpbnRrKEtFUk5fSU5GTyAiYXR0ZW1wdCB0byBhY2Nlc3MgYmV5 b25kIGVuZCBvZiBkZXZpY2VcbiIpOwotCXByaW50ayhLRVJOX0lORk8gIiVzOiBydz0lbGQs IHdhbnQ9JUx1LCBsaW1pdD0lTHVcbiIsCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IHJ3PSVk LCVsZCwgd2FudD0lTHUsIGxpbWl0PSVMdVxuIiwKIAkJCWJkZXZuYW1lKGJpby0+YmlfYmRl diwgYiksCi0JCQliaW8tPmJpX3J3LAorCQkJYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKIAkJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvX2VuZF9zZWN0b3IoYmlvKSwKIAkJCShsb25nIGxv bmcpKGlfc2l6ZV9yZWFkKGJpby0+YmlfYmRldi0+YmRfaW5vZGUpID4+IDkpKTsKIH0KQEAg LTE5NTQsMTQgKzE5NTMsMTQgQEAgZ2VuZXJpY19tYWtlX3JlcXVlc3RfY2hlY2tzKHN0cnVj dCBiaW8gKmJpbykKIAkJfQogCX0KIAotCWlmICgoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJE KSAmJgorCWlmICgoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkgJiYKIAkgICAgKCFi bGtfcXVldWVfZGlzY2FyZChxKSB8fAogCSAgICAgKChiaW8tPmJpX3J3ICYgUkVRX1NFQ1VS RSkgJiYgIWJsa19xdWV1ZV9zZWNkaXNjYXJkKHEpKSkpIHsKIAkJZXJyID0gLUVPUE5PVFNV UFA7CiAJCWdvdG8gZW5kX2lvOwogCX0KIAotCWlmIChiaW8tPmJpX3J3ICYgUkVRX1dSSVRF X1NBTUUgJiYgIWJkZXZfd3JpdGVfc2FtZShiaW8tPmJpX2JkZXYpKSB7CisJaWYgKGJpby0+ Ymlfb3AgPT0gUkVRX09QX1dSSVRFX1NBTUUgJiYgIWJkZXZfd3JpdGVfc2FtZShiaW8tPmJp X2JkZXYpKSB7CiAJCWVyciA9IC1FT1BOT1RTVVBQOwogCQlnb3RvIGVuZF9pbzsKIAl9CkBA IC0yMDE1LDEyICsyMDE0LDYgQEAgYmxrX3FjX3QgZ2VuZXJpY19tYWtlX3JlcXVlc3Qoc3Ry dWN0IGJpbyAqYmlvKQogCXN0cnVjdCBiaW9fbGlzdCBiaW9fbGlzdF9vbl9zdGFjazsKIAli bGtfcWNfdCByZXQgPSBCTEtfUUNfVF9OT05FOwogCi0JLyogdG1wIGNvbXBhdC4gQWxsb3cg dXNlcnMgdG8gc2V0IGVpdGhlciBvbmUgb3IgYm90aC4KLQkgKiBUaGlzIHdpbGwgYmUgcmVt b3ZlZCB3aGVuIHdlIGhhdmUgY29udmVydGVkCi0JICogZXZlcnlvbmUgaW4gdGhlIG5leHQg cGF0Y2hlcy4KLQkgKi8KLQliaW8tPmJpX3J3IHw9IGJpby0+Ymlfb3A7Ci0KIAlpZiAoIWdl bmVyaWNfbWFrZV9yZXF1ZXN0X2NoZWNrcyhiaW8pKQogCQlnb3RvIG91dDsKIApAQCAtMjA5 MCwxMiArMjA4Myw2IEBAIEVYUE9SVF9TWU1CT0woZ2VuZXJpY19tYWtlX3JlcXVlc3QpOwog ICovCiBibGtfcWNfdCBzdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbykKIHsKLQkvKiB0bXAg Y29tcGF0LiBBbGxvdyB1c2VycyB0byBzZXQgZWl0aGVyIG9uZSBvciBib3RoLgotCSAqIFRo aXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gd2UgaGF2ZSBjb252ZXJ0ZWQKLQkgKiBldmVyeW9u ZSBpbiB0aGUgbmV4dCBwYXRjaGVzLgotCSAqLwotCWJpby0+YmlfcncgfD0gYmlvLT5iaV9v cDsKLQogCS8qCiAJICogSWYgaXQncyBhIHJlZ3VsYXIgcmVhZC93cml0ZSBvciBhIGJhcnJp ZXIgd2l0aCBkYXRhIGF0dGFjaGVkLAogCSAqIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBhY2Nv dW50aW5nIHN0dWZmIGJlZm9yZSBzdWJtaXNzaW9uLgpAQCAtMjEwMywxMiArMjA5MCwxMiBA QCBibGtfcWNfdCBzdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoYmlvX2hhc19k YXRhKGJpbykpIHsKIAkJdW5zaWduZWQgaW50IGNvdW50OwogCi0JCWlmICh1bmxpa2VseShi aW8tPmJpX3J3ICYgUkVRX1dSSVRFX1NBTUUpKQorCQlpZiAodW5saWtlbHkoYmlvLT5iaV9v cCA9PSBSRVFfT1BfV1JJVEVfU0FNRSkpCiAJCQljb3VudCA9IGJkZXZfbG9naWNhbF9ibG9j a19zaXplKGJpby0+YmlfYmRldikgPj4gOTsKIAkJZWxzZQogCQkJY291bnQgPSBiaW9fc2Vj dG9ycyhiaW8pOwogCi0JCWlmIChiaW8tPmJpX3J3ICYgV1JJVEUpIHsKKwkJaWYgKG9wX2lz X3dyaXRlKGJpby0+Ymlfb3ApKSB7CiAJCQljb3VudF92bV9ldmVudHMoUEdQR09VVCwgY291 bnQpOwogCQl9IGVsc2UgewogCQkJdGFza19pb19hY2NvdW50X3JlYWQoYmlvLT5iaV9pdGVy LmJpX3NpemUpOwpAQCAtMjExOSw3ICsyMTA2LDcgQEAgYmxrX3FjX3Qgc3VibWl0X2Jpbyhz dHJ1Y3QgYmlvICpiaW8pCiAJCQljaGFyIGJbQkRFVk5BTUVfU0laRV07CiAJCQlwcmludGso S0VSTl9ERUJVRyAiJXMoJWQpOiAlcyBibG9jayAlTHUgb24gJXMgKCV1IHNlY3RvcnMpXG4i LAogCQkJY3VycmVudC0+Y29tbSwgdGFza19waWRfbnIoY3VycmVudCksCi0JCQkJKGJpby0+ YmlfcncgJiBXUklURSkgPyAiV1JJVEUiIDogIlJFQUQiLAorCQkJCW9wX2lzX3dyaXRlKGJp by0+Ymlfb3ApID8gIldSSVRFIiA6ICJSRUFEIiwKIAkJCQkodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJYmRldm5hbWUoYmlvLT5iaV9iZGV2LCBi KSwKIAkJCQljb3VudCk7CkBAIC0yOTc0LDggKzI5NjEsNiBAQCBFWFBPUlRfU1lNQk9MX0dQ TChfX2Jsa19lbmRfcmVxdWVzdF9lcnIpOwogdm9pZCBibGtfcnFfYmlvX3ByZXAoc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAkJICAgICBzdHJ1Y3Qg YmlvICpiaW8pCiB7Ci0JLyogdG1wIGNvbXBhdC4gQWxsb3cgdXNlcnMgdG8gc2V0IGJpX29w IG9yIGJpX3J3ICovCi0JcnEtPmNtZF9mbGFncyB8PSBiaW9fZGF0YV9kaXIoYmlvKTsKIAly cS0+b3AgPSBiaW8tPmJpX29wOwogCiAJaWYgKGJpb19oYXNfZGF0YShiaW8pKQpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuYwppbmRleCBiY2Ix NGVhLi4wY2ZjNTFjIDEwMDY0NAotLS0gYS9ibG9jay9ibGstbWVyZ2UuYworKysgYi9ibG9j ay9ibGstbWVyZ2UuYwpAQCAtMTQ0LDkgKzE0NCw5IEBAIHZvaWQgYmxrX3F1ZXVlX3NwbGl0 KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICoqYmlvLAogCXN0cnVjdCBi aW8gKnNwbGl0LCAqcmVzOwogCXVuc2lnbmVkIG5zZWdzOwogCi0JaWYgKCgqYmlvKS0+Ymlf cncgJiBSRVFfRElTQ0FSRCkKKwlpZiAoKCpiaW8pLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FS RCkKIAkJc3BsaXQgPSBibGtfYmlvX2Rpc2NhcmRfc3BsaXQocSwgKmJpbywgYnMsICZuc2Vn cyk7Ci0JZWxzZSBpZiAoKCpiaW8pLT5iaV9ydyAmIFJFUV9XUklURV9TQU1FKQorCWVsc2Ug aWYgKCgqYmlvKS0+Ymlfb3AgPT0gUkVRX09QX1dSSVRFX1NBTUUpCiAJCXNwbGl0ID0gYmxr X2Jpb193cml0ZV9zYW1lX3NwbGl0KHEsICpiaW8sIGJzLCAmbnNlZ3MpOwogCWVsc2UKIAkJ c3BsaXQgPSBibGtfYmlvX3NlZ21lbnRfc3BsaXQocSwgKmJpbywgcS0+YmlvX3NwbGl0LCAm bnNlZ3MpOwpAQCAtMTg1LDEwICsxODUsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBfX2Js a19yZWNhbGNfcnFfc2VnbWVudHMoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJICogVGhp cyBzaG91bGQgcHJvYmFibHkgYmUgcmV0dXJuaW5nIDAsIGJ1dCBibGtfYWRkX3JlcXVlc3Rf cGF5bG9hZCgpCiAJICogKENocmlzdG9waCEhISEpCiAJICovCi0JaWYgKGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJ cmV0dXJuIDE7CiAKLQlpZiAoYmlvLT5iaV9ydyAmIFJFUV9XUklURV9TQU1FKQorCWlmIChi aW8tPmJpX29wID09IFJFUV9PUF9XUklURV9TQU1FKQogCQlyZXR1cm4gMTsKIAogCWZiaW8g PSBiaW87CkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGludCBfX2Jsa19iaW9zX21hcF9z ZyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvLAogCW5zZWdzID0g MDsKIAljbHVzdGVyID0gYmxrX3F1ZXVlX2NsdXN0ZXIocSk7CiAKLQlpZiAoYmlvLT5iaV9y dyAmIFJFUV9ESVNDQVJEKSB7CisJaWYgKGJpby0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQp IHsKIAkJLyoKIAkJICogVGhpcyBpcyBhIGhhY2sgLSBkcml2ZXJzIHNob3VsZCBiZSBuZWl0 aGVyIG1vZGlmeWluZyB0aGUKIAkJICogYmlvdmVjLCBub3IgcmVseWluZyBvbiBiaV92Y250 IC0gYnV0IGJlY2F1c2Ugb2YKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgaW50IF9fYmxr X2Jpb3NfbWFwX3NnKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8s CiAJCXJldHVybiAwOwogCX0KIAotCWlmIChiaW8tPmJpX3J3ICYgUkVRX1dSSVRFX1NBTUUp IHsKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfV1JJVEVfU0FNRSkgewogc2luZ2xlX3Nl Z21lbnQ6CiAJCSpzZyA9IHNnbGlzdDsKIAkJYnZlYyA9IGJpb19pb3ZlYyhiaW8pOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ibG9jay9icmQuYyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKaW5k ZXggYTU4ODBmNC4uM2I4OGE2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9icmQuYwor KysgYi9kcml2ZXJzL2Jsb2NrL2JyZC5jCkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIGJs a19xY190IGJyZF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVj dCBiaW8gKmJpbykKIAlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+IGdldF9jYXBhY2l0eShi ZGV2LT5iZF9kaXNrKSkKIAkJZ290byBpb19lcnJvcjsKIAotCWlmICh1bmxpa2VseShiaW8t PmJpX3J3ICYgUkVRX0RJU0NBUkQpKSB7CisJaWYgKHVubGlrZWx5KGJpby0+Ymlfb3AgPT0g UkVRX09QX0RJU0NBUkQpKSB7CiAJCWlmIChzZWN0b3IgJiAoKFBBR0VfU0laRSA+PiBTRUNU T1JfU0hJRlQpIC0gMSkgfHwKIAkJICAgIGJpby0+YmlfaXRlci5iaV9zaXplICYgUEFHRV9N QVNLKQogCQkJZ290byBpb19lcnJvcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJi ZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwppbmRleCBm NjYyNmU1Li5kZjJjZTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9t YWluLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCkBAIC0xNjAzLDE1 ICsxNjAzLDE1IEBAIHN0YXRpYyBpbnQgX2RyYmRfc2VuZF96Y19lZShzdHJ1Y3QgZHJiZF9w ZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB1MzIg YmlvX2ZsYWdzX3RvX3dpcmUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwg dW5zaWduZWQgbG9uZyBiaV9ydykKK3N0YXRpYyB1MzIgYmlvX2ZsYWdzX3RvX3dpcmUoc3Ry dWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IGJpbyAqYmlvKQogewog CWlmIChjb25uZWN0aW9uLT5hZ3JlZWRfcHJvX3ZlcnNpb24gPj0gOTUpCi0JCXJldHVybiAg KGJpX3J3ICYgUkVRX1NZTkMgPyBEUF9SV19TWU5DIDogMCkgfAotCQkJKGJpX3J3ICYgUkVR X0ZVQSA/IERQX0ZVQSA6IDApIHwKLQkJCShiaV9ydyAmIFJFUV9GTFVTSCA/IERQX0ZMVVNI IDogMCkgfAotCQkJKGJpX3J3ICYgUkVRX0RJU0NBUkQgPyBEUF9ESVNDQVJEIDogMCk7CisJ CXJldHVybiAgKGJpby0+YmlfcncgJiBSRVFfU1lOQyA/IERQX1JXX1NZTkMgOiAwKSB8CisJ CQkoYmlvLT5iaV9ydyAmIFJFUV9GVUEgPyBEUF9GVUEgOiAwKSB8CisJCQkoYmlvLT5iaV9y dyAmIFJFUV9GTFVTSCA/IERQX0ZMVVNIIDogMCkgfAorCQkJKGJpby0+Ymlfb3AgPT0gUkVR X09QX0RJU0NBUkQgPyBEUF9ESVNDQVJEIDogMCk7CiAJZWxzZQotCQlyZXR1cm4gYmlfcncg JiBSRVFfU1lOQyA/IERQX1JXX1NZTkMgOiAwOworCQlyZXR1cm4gYmlvLT5iaV9ydyAmIFJF UV9TWU5DID8gRFBfUldfU1lOQyA6IDA7CiB9CiAKIC8qIFVzZWQgdG8gc2VuZCB3cml0ZSBv ciBUUklNIGFrYSBSRVFfRElTQ0FSRCByZXF1ZXN0cwpAQCAtMTYzNiw3ICsxNjM2LDcgQEAg aW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2 aWNlLCBzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICoKIAlwLT5zZWN0b3IgPSBjcHVfdG9fYmU2NChy ZXEtPmkuc2VjdG9yKTsKIAlwLT5ibG9ja19pZCA9ICh1bnNpZ25lZCBsb25nKXJlcTsKIAlw LT5zZXFfbnVtID0gY3B1X3RvX2JlMzIoYXRvbWljX2luY19yZXR1cm4oJmRldmljZS0+cGFj a2V0X3NlcSkpOwotCWRwX2ZsYWdzID0gYmlvX2ZsYWdzX3RvX3dpcmUocGVlcl9kZXZpY2Ut PmNvbm5lY3Rpb24sIHJlcS0+bWFzdGVyX2Jpby0+YmlfcncpOworCWRwX2ZsYWdzID0gYmlv X2ZsYWdzX3RvX3dpcmUocGVlcl9kZXZpY2UtPmNvbm5lY3Rpb24sIHJlcS0+bWFzdGVyX2Jp byk7CiAJaWYgKGRldmljZS0+c3RhdGUuY29ubiA+PSBDX1NZTkNfU09VUkNFICYmCiAJICAg IGRldmljZS0+c3RhdGUuY29ubiA8PSBDX1BBVVNFRF9TWU5DX1QpCiAJCWRwX2ZsYWdzIHw9 IERQX01BWV9TRVRfSU5fU1lOQzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9k cmJkX3dvcmtlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMKaW5kZXgg ZjkyZjUzMy4uNDMzNWYyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf d29ya2VyLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMKQEAgLTE3 NCw3ICsxNzQsNyBAQCB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8g KmJpbykKIAlzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxID0gYmlvLT5iaV9w cml2YXRlOwogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9yZXEtPnBlZXJf ZGV2aWNlLT5kZXZpY2U7CiAJaW50IGlzX3dyaXRlID0gYmlvX2RhdGFfZGlyKGJpbykgPT0g V1JJVEU7Ci0JaW50IGlzX2Rpc2NhcmQgPSAhIShiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQp OworCWludCBpc19kaXNjYXJkID0gISEoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCk7 CiAKIAlpZiAoYmlvLT5iaV9lcnJvciAmJiBfX3JhdGVsaW1pdCgmZHJiZF9yYXRlbGltaXRf c3RhdGUpKQogCQlkcmJkX3dhcm4oZGV2aWNlLCAiJXM6IGVycm9yPSVkIHM9JWxsdXNcbiIs CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBkcmJkX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJp byAqYmlvKQogCiAJLyogdG8gYXZvaWQgcmVjdXJzaW9uIGluIF9fcmVxX21vZCAqLwogCWlm ICh1bmxpa2VseShiaW8tPmJpX2Vycm9yKSkgewotCQlpZiAoYmlvLT5iaV9ydyAmIFJFUV9E SVNDQVJEKQorCQlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJCXdoYXQg PSAoYmlvLT5iaV9lcnJvciA9PSAtRU9QTk9UU1VQUCkKIAkJCQk/IERJU0NBUkRfQ09NUExF VEVEX05PVFNVUFAKIAkJCQk6IERJU0NBUkRfQ09NUExFVEVEX1dJVEhfRVJST1I7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMgYi9kcml2ZXJzL2Jsb2NrL3JzeHgv ZG1hLmMKaW5kZXggY2Y4Y2QyOS4uZGZjMTg5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9j ay9yc3h4L2RtYS5jCisrKyBiL2RyaXZlcnMvYmxvY2svcnN4eC9kbWEuYwpAQCAtNzA1LDcg KzcwNSw3IEBAIGludCByc3h4X2RtYV9xdWV1ZV9iaW8oc3RydWN0IHJzeHhfY2FyZGluZm8g KmNhcmQsCiAJCWRtYV9jbnRbaV0gPSAwOwogCX0KIAotCWlmIChiaW8tPmJpX3J3ICYgUkVR X0RJU0NBUkQpIHsKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkgewogCQli dl9sZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQl3aGlsZSAoYnZfbGVuID4gMCkg ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJz L2Jsb2NrL3pyYW0venJhbV9kcnYuYwppbmRleCA0NzkxNWQ3Li44ZDE0Y2VhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYworKysgYi9kcml2ZXJzL2Jsb2Nr L3pyYW0venJhbV9kcnYuYwpAQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyB2b2lkIF9fenJh bV9tYWtlX3JlcXVlc3Qoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbykKIAlv ZmZzZXQgPSAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmCiAJCSAgKFNFQ1RPUlNfUEVSX1BB R0UgLSAxKSkgPDwgU0VDVE9SX1NISUZUOwogCi0JaWYgKHVubGlrZWx5KGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkpIHsKKwlpZiAodW5saWtlbHkoYmlvLT5iaV9vcCA9PSBSRVFfT1Bf RElTQ0FSRCkpIHsKIAkJenJhbV9iaW9fZGlzY2FyZCh6cmFtLCBpbmRleCwgb2Zmc2V0LCBi aW8pOwogCQliaW9fZW5kaW8oYmlvKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9saWdodG52bS9ycnBjLmMgYi9kcml2ZXJzL2xpZ2h0bnZtL3JycGMuYwppbmRleCAxYjFm ZmRjLi45MWRkNjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xpZ2h0bnZtL3JycGMuYworKysg Yi9kcml2ZXJzL2xpZ2h0bnZtL3JycGMuYwpAQCAtODM5LDcgKzgzOSw3IEBAIHN0YXRpYyBi bGtfcWNfdCBycnBjX21ha2VfcnEoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBi aW8gKmJpbykKIAlzdHJ1Y3QgbnZtX3JxICpycWQ7CiAJaW50IGVycjsKIAotCWlmIChiaW8t PmJpX3J3ICYgUkVRX0RJU0NBUkQpIHsKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElT Q0FSRCkgewogCQlycnBjX2Rpc2NhcmQocnJwYywgYmlvKTsKIAkJcmV0dXJuIEJMS19RQ19U X05PTkU7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jIGIv ZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCmluZGV4IGMzNWNmY2QuLmYzYzNlODQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYworKysgYi9kcml2ZXJzL21k L2JjYWNoZS9yZXF1ZXN0LmMKQEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgYm9vbCBjaGVj a19zaG91bGRfYnlwYXNzKHN0cnVjdCBjYWNoZWRfZGV2ICpkYywgc3RydWN0IGJpbyAqYmlv KQogCiAJaWYgKHRlc3RfYml0KEJDQUNIRV9ERVZfREVUQUNISU5HLCAmZGMtPmRpc2suZmxh Z3MpIHx8CiAJICAgIGMtPmdjX3N0YXRzLmluX3VzZSA+IENVVE9GRl9DQUNIRV9BREQgfHwK LQkgICAgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkpCisJICAgIChiaW8tPmJpX29wID09 IFJFUV9PUF9ESVNDQVJEKSkKIAkJZ290byBza2lwOwogCiAJaWYgKG1vZGUgPT0gQ0FDSEVf TU9ERV9OT05FIHx8CkBAIC04OTksNyArODk5LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVkX2Rl dl93cml0ZShzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJICog QnV0IGNoZWNrX292ZXJsYXBwaW5nIGRyb3BzIGRpcnR5IGtleXMgZm9yIHdoaWNoIGlvIGhh c24ndCBzdGFydGVkLAogCSAqIHNvIHdlIHN0aWxsIHdhbnQgdG8gY2FsbCBpdC4KIAkgKi8K LQlpZiAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJEKQorCWlmIChiaW8tPmJpX29wID09IFJF UV9PUF9ESVNDQVJEKQogCQlzLT5pb3AuYnlwYXNzID0gdHJ1ZTsKIAogCWlmIChzaG91bGRf d3JpdGViYWNrKGRjLCBzLT5vcmlnX2JpbywKQEAgLTkxMyw3ICs5MTMsNyBAQCBzdGF0aWMg dm9pZCBjYWNoZWRfZGV2X3dyaXRlKHN0cnVjdCBjYWNoZWRfZGV2ICpkYywgc3RydWN0IHNl YXJjaCAqcykKIAkJcy0+aW9wLmJpbyA9IHMtPm9yaWdfYmlvOwogCQliaW9fZ2V0KHMtPmlv cC5iaW8pOwogCi0JCWlmICghKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgfHwKKwkJaWYg KCEoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkgfHwKIAkJICAgIGJsa19xdWV1ZV9k aXNjYXJkKGJkZXZfZ2V0X3F1ZXVlKGRjLT5iZGV2KSkpCiAJCQljbG9zdXJlX2Jpb19zdWJt aXQoYmlvLCBjbCk7CiAJfSBlbHNlIGlmIChzLT5pb3Aud3JpdGViYWNrKSB7CkBAIC05OTMs NyArOTkzLDcgQEAgc3RhdGljIGJsa19xY190IGNhY2hlZF9kZXZfbWFrZV9yZXF1ZXN0KHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAogCQkJCWNhY2hlZF9kZXZfcmVhZChkYywgcyk7CiAJ CX0KIAl9IGVsc2UgewotCQlpZiAoKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgJiYKKwkJ aWYgKChiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJEKSAmJgogCQkgICAgIWJsa19xdWV1 ZV9kaXNjYXJkKGJkZXZfZ2V0X3F1ZXVlKGRjLT5iZGV2KSkpCiAJCQliaW9fZW5kaW8oYmlv KTsKIAkJZWxzZQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIGJsa19xY190IGZsYXNo X2Rldl9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJCQkJCSZLRVko ZC0+aWQsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsIDApLAogCQkJCQkmS0VZKGQtPmlkLCBi aW9fZW5kX3NlY3RvcihiaW8pLCAwKSk7CiAKLQkJcy0+aW9wLmJ5cGFzcwkJPSAoYmlvLT5i aV9ydyAmIFJFUV9ESVNDQVJEKSAhPSAwOworCQlzLT5pb3AuYnlwYXNzCQk9IChiaW8tPmJp X29wID09IFJFUV9PUF9ESVNDQVJEKSAhPSAwOwogCQlzLT5pb3Aud3JpdGViYWNrCT0gdHJ1 ZTsKIAkJcy0+aW9wLmJpbwkJPSBiaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0t Y2FjaGUtdGFyZ2V0LmMgYi9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jCmluZGV4IDJm ZDRjODIuLjAzNDU0MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0 LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYwpAQCAtNzkxLDcgKzc5MSw4 IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2lmX3RpY2tfYmlvX25lZWRlZChzdHJ1Y3QgY2FjaGUg KmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmY2FjaGUt PmxvY2ssIGZsYWdzKTsKIAlpZiAoY2FjaGUtPm5lZWRfdGlja19iaW8gJiYKLQkgICAgIShi aW8tPmJpX3J3ICYgKFJFUV9GVUEgfCBSRVFfRkxVU0ggfCBSRVFfRElTQ0FSRCkpKSB7CisJ ICAgICEoYmlvLT5iaV9ydyAmIChSRVFfRlVBIHwgUkVRX0ZMVVNIKSkgJiYKKwkgICAgYmlv LT5iaV9vcCAhPSBSRVFfT1BfRElTQ0FSRCkgewogCQlwYi0+dGljayA9IHRydWU7CiAJCWNh Y2hlLT5uZWVkX3RpY2tfYmlvID0gZmFsc2U7CiAJfQpAQCAtODU0LDcgKzg1NSw3IEBAIHN0 YXRpYyB2b2lkIGluY19kcyhzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8s CiBzdGF0aWMgYm9vbCBhY2NvdW50YWJsZV9iaW8oc3RydWN0IGNhY2hlICpjYWNoZSwgc3Ry dWN0IGJpbyAqYmlvKQogewogCXJldHVybiAoKGJpby0+YmlfYmRldiA9PSBjYWNoZS0+b3Jp Z2luX2Rldi0+YmRldikgJiYKLQkJIShiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpKTsKKwkJ YmlvLT5iaV9vcCAhPSBSRVFfT1BfRElTQ0FSRCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFjY291 bnRlZF9iZWdpbihzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCkBAIC0x MDY1LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBkZWNfaW9fbWlncmF0aW9ucyhzdHJ1Y3Qg Y2FjaGUgKmNhY2hlKQogCiBzdGF0aWMgYm9vbCBkaXNjYXJkX29yX2ZsdXNoKHN0cnVjdCBi aW8gKmJpbykKIHsKLQlyZXR1cm4gYmlvLT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRlVB IHwgUkVRX0RJU0NBUkQpOworCXJldHVybiBiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJE IHx8IGJpby0+YmlfcncgJiAoUkVRX0ZMVVNIIHwgUkVRX0ZVQSk7CiB9CiAKIHN0YXRpYyB2 b2lkIF9fY2VsbF9kZWZlcihzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgZG1fYmlvX3By aXNvbl9jZWxsICpjZWxsKQpAQCAtMTk3OCw3ICsxOTc5LDcgQEAgc3RhdGljIHZvaWQgcHJv Y2Vzc19kZWZlcnJlZF9iaW9zKHN0cnVjdCBjYWNoZSAqY2FjaGUpCiAKIAkJaWYgKGJpby0+ YmlfcncgJiBSRVFfRkxVU0gpCiAJCQlwcm9jZXNzX2ZsdXNoX2JpbyhjYWNoZSwgYmlvKTsK LQkJZWxzZSBpZiAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJEKQorCQllbHNlIGlmIChiaW8t PmJpX29wID09IFJFUV9PUF9ESVNDQVJEKQogCQkJcHJvY2Vzc19kaXNjYXJkX2JpbyhjYWNo ZSwgJnN0cnVjdHMsIGJpbyk7CiAJCWVsc2UKIAkJCXByb2Nlc3NfYmlvKGNhY2hlLCAmc3Ry dWN0cywgYmlvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYyBiL2RyaXZl cnMvbWQvZG0tY3J5cHQuYwppbmRleCBmNDY2ZmVjLi5iN2NiZDM5IDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLWNyeXB0LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCkBAIC0x OTEzLDcgKzE5MTMsNyBAQCBzdGF0aWMgaW50IGNyeXB0X21hcChzdHJ1Y3QgZG1fdGFyZ2V0 ICp0aSwgc3RydWN0IGJpbyAqYmlvKQogCSAqIC0gZm9yIFJFUV9GTFVTSCBkZXZpY2UtbWFw cGVyIGNvcmUgZW5zdXJlcyB0aGF0IG5vIElPIGlzIGluLWZsaWdodAogCSAqIC0gZm9yIFJF UV9ESVNDQVJEIGNhbGxlciBtdXN0IHVzZSBmbHVzaCBpZiBJTyBvcmRlcmluZyBtYXR0ZXJz CiAJICovCi0JaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiAoUkVRX0ZMVVNIIHwgUkVRX0RJ U0NBUkQpKSkgeworCWlmICh1bmxpa2VseShiaW8tPmJpX3J3ICYgUkVRX0ZMVVNIIHx8IGJp by0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpKSB7CiAJCWJpby0+YmlfYmRldiA9IGNjLT5k ZXYtPmJkZXY7CiAJCWlmIChiaW9fc2VjdG9ycyhiaW8pKQogCQkJYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA9IGNjLT5zdGFydCArCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLWxvZy13 cml0ZXMuYyBiL2RyaXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jCmluZGV4IGY2M2JiZjQuLjgx M2JiNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jCisrKyBiL2Ry aXZlcnMvbWQvZG0tbG9nLXdyaXRlcy5jCkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGlu dCBsb2dfd3JpdGVzX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3RydWN0IGJpbyAqYmlv KQogCWludCBpID0gMDsKIAlib29sIGZsdXNoX2JpbyA9IChiaW8tPmJpX3J3ICYgUkVRX0ZM VVNIKTsKIAlib29sIGZ1YV9iaW8gPSAoYmlvLT5iaV9ydyAmIFJFUV9GVUEpOwotCWJvb2wg ZGlzY2FyZF9iaW8gPSAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJEKTsKKwlib29sIGRpc2Nh cmRfYmlvID0gKGJpby0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpOwogCiAJcGItPmJsb2Nr ID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1yYWlkMS5jIGIvZHJpdmVy cy9tZC9kbS1yYWlkMS5jCmluZGV4IDZiNjFiNjIuLjU0Y2MwYzcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbWQvZG0tcmFpZDEuYworKysgYi9kcml2ZXJzL21kL2RtLXJhaWQxLmMKQEAgLTYy Niw3ICs2MjYsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9jYWxsYmFjayh1bnNpZ25lZCBsb25n IGVycm9yLCB2b2lkICpjb250ZXh0KQogCSAqIElmIHRoZSBiaW8gaXMgZGlzY2FyZCwgcmV0 dXJuIGFuIGVycm9yLCBidXQgZG8gbm90CiAJICogZGVncmFkZSB0aGUgYXJyYXkuCiAJICov Ci0JaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgeworCWlmIChiaW8tPmJpX29wID09 IFJFUV9PUF9ESVNDQVJEKSB7CiAJCWJpby0+YmlfZXJyb3IgPSAtRU9QTk9UU1VQUDsKIAkJ YmlvX2VuZGlvKGJpbyk7CiAJCXJldHVybjsKQEAgLTY2NSw3ICs2NjUsNyBAQCBzdGF0aWMg dm9pZCBkb193cml0ZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBiaW8gKmJpbykK IAkJLmNsaWVudCA9IG1zLT5pb19jbGllbnQsCiAJfTsKIAotCWlmIChiaW8tPmJpX3J3ICYg UkVRX0RJU0NBUkQpIHsKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkgewog CQlpb19yZXEuYmlfb3AgPSBSRVFfT1BfRElTQ0FSRDsKIAkJaW9fcmVxLm1lbS50eXBlID0g RE1fSU9fS01FTTsKIAkJaW9fcmVxLm1lbS5wdHIuYWRkciA9IE5VTEw7CkBAIC03MDUsNyAr NzA1LDcgQEAgc3RhdGljIHZvaWQgZG9fd3JpdGVzKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywg c3RydWN0IGJpb19saXN0ICp3cml0ZXMpCiAKIAl3aGlsZSAoKGJpbyA9IGJpb19saXN0X3Bv cCh3cml0ZXMpKSkgewogCQlpZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpIHx8Ci0JCSAg ICAoYmlvLT5iaV9ydyAmIFJFUV9ESVNDQVJEKSkgeworCQkgICAgKGJpby0+Ymlfb3AgPT0g UkVRX09QX0RJU0NBUkQpKSB7CiAJCQliaW9fbGlzdF9hZGQoJnN5bmMsIGJpbyk7CiAJCQlj b250aW51ZTsKIAkJfQpAQCAtMTI1Myw3ICsxMjUzLDcgQEAgc3RhdGljIGludCBtaXJyb3Jf ZW5kX2lvKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJv cikKIAkgKiBXZSBuZWVkIHRvIGRlYyBwZW5kaW5nIGlmIHRoaXMgd2FzIGEgd3JpdGUuCiAJ ICovCiAJaWYgKHJ3ID09IFdSSVRFKSB7Ci0JCWlmICghKGJpby0+YmlfcncgJiAoUkVRX0ZM VVNIIHwgUkVRX0RJU0NBUkQpKSkKKwkJaWYgKCEoYmlvLT5iaV9ydyAmIFJFUV9GTFVTSCkg JiYgYmlvLT5iaV9vcCAhPSBSRVFfT1BfRElTQ0FSRCkKIAkJCWRtX3JoX2RlYyhtcy0+cmgs IGJpb19yZWNvcmQtPndyaXRlX3JlZ2lvbik7CiAJCXJldHVybiBlcnJvcjsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMgYi9kcml2ZXJzL21kL2RtLXJl Z2lvbi1oYXNoLmMKaW5kZXggNzRjYjdiOS4uY2U0YWY1NyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9tZC9kbS1yZWdpb24taGFzaC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2gu YwpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgZG1fcmhfbWFya19ub3N5bmMoc3RydWN0IGRt X3JlZ2lvbl9oYXNoICpyaCwgc3RydWN0IGJpbyAqYmlvKQogCQlyZXR1cm47CiAJfQogCi0J aWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFf T1BfRElTQ0FSRCkKIAkJcmV0dXJuOwogCiAJLyogV2UgbXVzdCBpbmZvcm0gdGhlIGxvZyB0 aGF0IHRoZSBzeW5jIGNvdW50IGhhcyBjaGFuZ2VkLiAqLwpAQCAtNTI2LDcgKzUyNiw3IEBA IHZvaWQgZG1fcmhfaW5jX3BlbmRpbmcoc3RydWN0IGRtX3JlZ2lvbl9oYXNoICpyaCwgc3Ry dWN0IGJpb19saXN0ICpiaW9zKQogCXN0cnVjdCBiaW8gKmJpbzsKIAogCWZvciAoYmlvID0g Ymlvcy0+aGVhZDsgYmlvOyBiaW8gPSBiaW8tPmJpX25leHQpIHsKLQkJaWYgKGJpby0+Ymlf cncgJiAoUkVRX0ZMVVNIIHwgUkVRX0RJU0NBUkQpKQorCQlpZiAoYmlvLT5iaV9ydyAmIFJF UV9GTFVTSCB8fCBiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJEKQogCQkJY29udGludWU7 CiAJCXJoX2luYyhyaCwgZG1fcmhfYmlvX3RvX3JlZ2lvbihyaCwgYmlvKSk7CiAJfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1zdHJpcGUuYyBiL2RyaXZlcnMvbWQvZG0tc3RyaXBl LmMKaW5kZXggNzk3ZGRiOS4uMTJiMTYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1z dHJpcGUuYworKysgYi9kcml2ZXJzL21kL2RtLXN0cmlwZS5jCkBAIC0yOTIsOCArMjkyLDgg QEAgc3RhdGljIGludCBzdHJpcGVfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3Qg YmlvICpiaW8pCiAJCWJpby0+YmlfYmRldiA9IHNjLT5zdHJpcGVbdGFyZ2V0X2Jpb19ucl0u ZGV2LT5iZGV2OwogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQotCWlmICh1bmxp a2VseShiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpIHx8Ci0JICAgIHVubGlrZWx5KGJpby0+ YmlfcncgJiBSRVFfV1JJVEVfU0FNRSkpIHsKKwlpZiAodW5saWtlbHkoYmlvLT5iaV9vcCA9 PSBSRVFfT1BfRElTQ0FSRCkgfHwKKwkgICAgdW5saWtlbHkoYmlvLT5iaV9vcCA9PSBSRVFf T1BfV1JJVEVfU0FNRSkpIHsKIAkJdGFyZ2V0X2Jpb19uciA9IGRtX2Jpb19nZXRfdGFyZ2V0 X2Jpb19ucihiaW8pOwogCQlCVUdfT04odGFyZ2V0X2Jpb19uciA+PSBzYy0+c3RyaXBlcyk7 CiAJCXJldHVybiBzdHJpcGVfbWFwX3JhbmdlKHNjLCBiaW8sIHRhcmdldF9iaW9fbnIpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10aGluLmMgYi9kcml2ZXJzL21kL2RtLXRoaW4u YwppbmRleCA3YTcyYjc2Li4zYWUxMWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXRo aW4uYworKysgYi9kcml2ZXJzL21kL2RtLXRoaW4uYwpAQCAtNzA1LDcgKzcwNSw3IEBAIHN0 YXRpYyB2b2lkIGluY19hbGxfaW9fZW50cnkoc3RydWN0IHBvb2wgKnBvb2wsIHN0cnVjdCBi aW8gKmJpbykKIHsKIAlzdHJ1Y3QgZG1fdGhpbl9lbmRpb19ob29rICpoOwogCi0JaWYgKGJp by0+YmlfcncgJiBSRVFfRElTQ0FSRCkKKwlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElT Q0FSRCkKIAkJcmV0dXJuOwogCiAJaCA9IGRtX3Blcl9iaW9fZGF0YShiaW8sIHNpemVvZihz dHJ1Y3QgZG1fdGhpbl9lbmRpb19ob29rKSk7CkBAIC04NjgsNyArODY4LDggQEAgc3RhdGlj IHZvaWQgX19pbmNfcmVtYXBfYW5kX2lzc3VlX2NlbGwodm9pZCAqY29udGV4dCwKIAlzdHJ1 Y3QgYmlvICpiaW87CiAKIAl3aGlsZSAoKGJpbyA9IGJpb19saXN0X3BvcCgmY2VsbC0+Ymlv cykpKSB7Ci0JCWlmIChiaW8tPmJpX3J3ICYgKFJFUV9ESVNDQVJEIHwgUkVRX0ZMVVNIIHwg UkVRX0ZVQSkpCisJCWlmIChiaW8tPmJpX3J3ICYgKFJFUV9GTFVTSCB8IFJFUV9GVUEpIHx8 CisJCSAgICBiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJEKQogCQkJYmlvX2xpc3RfYWRk KCZpbmZvLT5kZWZlcl9iaW9zLCBiaW8pOwogCQllbHNlIHsKIAkJCWluY19hbGxfaW9fZW50 cnkoaW5mby0+dGMtPnBvb2wsIGJpbyk7CkBAIC0xNjQ2LDcgKzE2NDcsOCBAQCBzdGF0aWMg dm9pZCBfX3JlbWFwX2FuZF9pc3N1ZV9zaGFyZWRfY2VsbCh2b2lkICpjb250ZXh0LAogCiAJ d2hpbGUgKChiaW8gPSBiaW9fbGlzdF9wb3AoJmNlbGwtPmJpb3MpKSkgewogCQlpZiAoKGJp b19kYXRhX2RpcihiaW8pID09IFdSSVRFKSB8fAotCQkgICAgKGJpby0+YmlfcncgJiAoUkVR X0RJU0NBUkQgfCBSRVFfRkxVU0ggfCBSRVFfRlVBKSkpCisJCSAgICAoYmlvLT5iaV9ydyAm IChSRVFfRkxVU0ggfCBSRVFfRlVBKSB8fAorCQkgICAgIGJpby0+Ymlfb3AgPT0gUkVRX09Q X0RJU0NBUkQpKQogCQkJYmlvX2xpc3RfYWRkKCZpbmZvLT5kZWZlcl9iaW9zLCBiaW8pOwog CQllbHNlIHsKIAkJCXN0cnVjdCBkbV90aGluX2VuZGlvX2hvb2sgKmggPSBkbV9wZXJfYmlv X2RhdGEoYmlvLCBzaXplb2Yoc3RydWN0IGRtX3RoaW5fZW5kaW9faG9vaykpOzsKQEAgLTIw MzUsNyArMjAzNyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfdGhpbl9kZWZlcnJlZF9iaW9z KHN0cnVjdCB0aGluX2MgKnRjKQogCQkJYnJlYWs7CiAJCX0KIAotCQlpZiAoYmlvLT5iaV9y dyAmIFJFUV9ESVNDQVJEKQorCQlpZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkK IAkJCXBvb2wtPnByb2Nlc3NfZGlzY2FyZCh0YywgYmlvKTsKIAkJZWxzZQogCQkJcG9vbC0+ cHJvY2Vzc19iaW8odGMsIGJpbyk7CkBAIC0yMTIyLDcgKzIxMjQsNyBAQCBzdGF0aWMgdm9p ZCBwcm9jZXNzX3RoaW5fZGVmZXJyZWRfY2VsbHMoc3RydWN0IHRoaW5fYyAqdGMpCiAJCQkJ cmV0dXJuOwogCQkJfQogCi0JCQlpZiAoY2VsbC0+aG9sZGVyLT5iaV9ydyAmIFJFUV9ESVND QVJEKQorCQkJaWYgKGNlbGwtPmhvbGRlci0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpCiAJ CQkJcG9vbC0+cHJvY2Vzc19kaXNjYXJkX2NlbGwodGMsIGNlbGwpOwogCQkJZWxzZQogCQkJ CXBvb2wtPnByb2Nlc3NfY2VsbCh0YywgY2VsbCk7CkBAIC0yNTU4LDcgKzI1NjAsOCBAQCBz dGF0aWMgaW50IHRoaW5fYmlvX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3RydWN0IGJp byAqYmlvKQogCQlyZXR1cm4gRE1fTUFQSU9fU1VCTUlUVEVEOwogCX0KIAotCWlmIChiaW8t PmJpX3J3ICYgKFJFUV9ESVNDQVJEIHwgUkVRX0ZMVVNIIHwgUkVRX0ZVQSkpIHsKKwlpZiAo YmlvLT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRlVBKSB8fAorCSAgICBiaW8tPmJpX29w ID09IFJFUV9PUF9ESVNDQVJEKSB7CiAJCXRoaW5fZGVmZXJfYmlvX3dpdGhfdGhyb3R0bGUo dGMsIGJpbyk7CiAJCXJldHVybiBETV9NQVBJT19TVUJNSVRURUQ7CiAJfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9kbS5jIGIvZHJpdmVycy9tZC9kbS5jCmluZGV4IDdhODUwMTcuLjdj NmUzODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0uYworKysgYi9kcml2ZXJzL21kL2Rt LmMKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHN0YXRpYyB2b2lkIGNsb25lX2VuZGlvKHN0cnVj dCBiaW8gKmJpbykKIAkJfQogCX0KIAotCWlmICh1bmxpa2VseShyID09IC1FUkVNT1RFSU8g JiYgKGJpby0+YmlfcncgJiBSRVFfV1JJVEVfU0FNRSkgJiYKKwlpZiAodW5saWtlbHkociA9 PSAtRVJFTU9URUlPICYmIChiaW8tPmJpX29wID09IFJFUV9PUF9XUklURV9TQU1FKSAmJgog CQkgICAgICFiZGV2X2dldF9xdWV1ZShiaW8tPmJpX2JkZXYpLT5saW1pdHMubWF4X3dyaXRl X3NhbWVfc2VjdG9ycykpCiAJCWRpc2FibGVfd3JpdGVfc2FtZShtZCk7CiAKQEAgLTE2ODgs OSArMTY4OCw5IEBAIHN0YXRpYyBpbnQgX19zcGxpdF9hbmRfcHJvY2Vzc19ub25fZmx1c2go c3RydWN0IGNsb25lX2luZm8gKmNpKQogCXN0cnVjdCBkbV90YXJnZXQgKnRpOwogCXVuc2ln bmVkIGxlbjsKIAotCWlmICh1bmxpa2VseShiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpKQor CWlmICh1bmxpa2VseShiaW8tPmJpX29wID09IFJFUV9PUF9ESVNDQVJEKSkKIAkJcmV0dXJu IF9fc2VuZF9kaXNjYXJkKGNpKTsKLQllbHNlIGlmICh1bmxpa2VseShiaW8tPmJpX3J3ICYg UkVRX1dSSVRFX1NBTUUpKQorCWVsc2UgaWYgKHVubGlrZWx5KGJpby0+Ymlfb3AgPT0gUkVR X09QX1dSSVRFX1NBTUUpKQogCQlyZXR1cm4gX19zZW5kX3dyaXRlX3NhbWUoY2kpOwogCiAJ dGkgPSBkbV90YWJsZV9maW5kX3RhcmdldChjaS0+bWFwLCBjaS0+c2VjdG9yKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWQvbGluZWFyLmMgYi9kcml2ZXJzL21kL2xpbmVhci5jCmluZGV4 IGI3ZmU3ZTkuLmFhZDgyYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbGluZWFyLmMKKysr IGIvZHJpdmVycy9tZC9saW5lYXIuYwpAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRpYyB2b2lk IGxpbmVhcl9tYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAq YmlvKQogCQlzcGxpdC0+YmlfaXRlci5iaV9zZWN0b3IgPSBzcGxpdC0+YmlfaXRlci5iaV9z ZWN0b3IgLQogCQkJc3RhcnRfc2VjdG9yICsgZGF0YV9vZmZzZXQ7CiAKLQkJaWYgKHVubGlr ZWx5KChzcGxpdC0+YmlfcncgJiBSRVFfRElTQ0FSRCkgJiYKKwkJaWYgKHVubGlrZWx5KChz cGxpdC0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpICYmCiAJCQkgIWJsa19xdWV1ZV9kaXNj YXJkKGJkZXZfZ2V0X3F1ZXVlKHNwbGl0LT5iaV9iZGV2KSkpKSB7CiAJCQkvKiBKdXN0IGln bm9yZSBpdCAqLwogCQkJYmlvX2VuZGlvKHNwbGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvcmFpZDAuYyBiL2RyaXZlcnMvbWQvcmFpZDAuYwppbmRleCBmOGU1ZGIwLi5mMzhiZTFm IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlk MC5jCkBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIHZvaWQgcmFpZDBfbWFrZV9yZXF1ZXN0 KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpbykKIAkJc3BsaXQtPmJpX2l0 ZXIuYmlfc2VjdG9yID0gc2VjdG9yICsgem9uZS0+ZGV2X3N0YXJ0ICsKIAkJCXRtcF9kZXYt PmRhdGFfb2Zmc2V0OwogCi0JCWlmICh1bmxpa2VseSgoc3BsaXQtPmJpX3J3ICYgUkVRX0RJ U0NBUkQpICYmCisJCWlmICh1bmxpa2VseSgoc3BsaXQtPmJpX29wID09IFJFUV9PUF9ESVND QVJEKSAmJgogCQkJICFibGtfcXVldWVfZGlzY2FyZChiZGV2X2dldF9xdWV1ZShzcGxpdC0+ YmlfYmRldikpKSkgewogCQkJLyogSnVzdCBpZ25vcmUgaXQgKi8KIAkJCWJpb19lbmRpbyhz cGxpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sbGl0 ZS9sbG9vcC5jIGIvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvbGxvb3Au YwppbmRleCBmZWQ1MGQ1Li4zNjRjZDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcv bHVzdHJlL2x1c3RyZS9sbGl0ZS9sbG9vcC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9sdXN0 cmUvbHVzdHJlL2xsaXRlL2xsb29wLmMKQEAgLTIxMiw5ICsyMTIsOSBAQCBzdGF0aWMgaW50 IGRvX2Jpb19sdXN0cmViYWNrZWQoc3RydWN0IGxsb29wX2RldmljZSAqbG8sIHN0cnVjdCBi aW8gKmhlYWQpCiAJaW8tPmNpX2xvY2tyZXEgPSBDSUxSX05FVkVSOwogCiAJTEFTU0VSVCho ZWFkICE9IE5VTEwpOwotCXJ3ID0gaGVhZC0+Ymlfcnc7CisJcncgPSBiaW9fZGF0YV9kaXIo aGVhZCk7CiAJZm9yIChiaW8gPSBoZWFkOyBiaW8gIT0gTlVMTDsgYmlvID0gYmlvLT5iaV9u ZXh0KSB7Ci0JCUxBU1NFUlQocncgPT0gYmlvLT5iaV9ydyk7CisJCUxBU1NFUlQocncgPT0g YmlvX2RhdGFfZGlyKGJpbykpOwogCiAJCW9mZnNldCA9IChwZ29mZl90KShiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yIDw8IDkpICsgbG8tPmxvX29mZnNldDsKIAkJYmlvX2Zvcl9lYWNoX3Nl Z21lbnQoYnZlYywgYmlvLCBpdGVyKSB7CkBAIC0zMDUsOSArMzA1LDkgQEAgc3RhdGljIHVu c2lnbmVkIGludCBsb29wX2dldF9iaW8oc3RydWN0IGxsb29wX2RldmljZSAqbG8sIHN0cnVj dCBiaW8gKipyZXEpCiAJLyogVE9ETzogbmVlZCB0byBzcGxpdCB0aGUgYmlvLCB0b28gYmFk LiAqLwogCUxBU1NFUlQoZmlyc3QtPmJpX3ZjbnQgPD0gTExPT1BfTUFYX1NFR01FTlRTKTsK IAotCXJ3ID0gZmlyc3QtPmJpX3J3OworCXJ3ID0gYmlvX2RhdGFfZGlyKGZpcnN0KTsKIAli aW8gPSAmbG8tPmxvX2JpbzsKLQl3aGlsZSAoKmJpbyAmJiAoKmJpbyktPmJpX3J3ID09IHJ3 KSB7CisJd2hpbGUgKCpiaW8gJiYgYmlvX2RhdGFfZGlyKCpiaW8pID09IHJ3KSB7CiAJCUNE RUJVRyhEX0lORk8sICJiaW8gc2VjdG9yICVsbHUgc2l6ZSAldSBjb3VudCAldSB2Y250JXUg XG4iLAogCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykoKmJpbyktPmJpX2l0ZXIuYmlf c2VjdG9yLAogCQkgICAgICAgKCpiaW8pLT5iaV9pdGVyLmJpX3NpemUsCmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2Jpby5oIGIvaW5jbHVkZS9saW51eC9iaW8uaAppbmRleCA5ZjBl MmNmLi4xZTRiM2I1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jpby5oCisrKyBiL2lu Y2x1ZGUvbGludXgvYmlvLmgKQEAgLTEwNiwxOCArMTA2LDIzIEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBiaW9faGFzX2RhdGEoc3RydWN0IGJpbyAqYmlvKQogewogCWlmIChiaW8gJiYKIAkg ICAgYmlvLT5iaV9pdGVyLmJpX3NpemUgJiYKLQkgICAgIShiaW8tPmJpX3J3ICYgUkVRX0RJ U0NBUkQpKQorCSAgICAhKGJpby0+Ymlfb3AgPT0gUkVRX09QX0RJU0NBUkQpKQogCQlyZXR1 cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGJp b19ub19hZHZhbmNlX2l0ZXIoc3RydWN0IGJpbyAqYmlvKQoreworCXJldHVybiBiaW8tPmJp X29wID09IFJFUV9PUF9ESVNDQVJEIHx8IGJpby0+Ymlfb3AgPT0gUkVRX09QX1dSSVRFX1NB TUU7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9faXNfcncoc3RydWN0IGJpbyAqYmlv KQogewogCWlmICghYmlvX2hhc19kYXRhKGJpbykpCiAJCXJldHVybiBmYWxzZTsKIAotCWlm IChiaW8tPmJpX3J3ICYgQklPX05PX0FEVkFOQ0VfSVRFUl9NQVNLKQorCWlmIChiaW9fbm9f YWR2YW5jZV9pdGVyKGJpbykpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiB0cnVlOwpA QCAtMjI1LDcgKzIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fYWR2YW5jZV9pdGVy KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJ2ZWNfaXRlciAqaXRlciwKIHsKIAlpdGVyLT5i aV9zZWN0b3IgKz0gYnl0ZXMgPj4gOTsKIAotCWlmIChiaW8tPmJpX3J3ICYgQklPX05PX0FE VkFOQ0VfSVRFUl9NQVNLKQorCWlmIChiaW9fbm9fYWR2YW5jZV9pdGVyKGJpbykpCiAJCWl0 ZXItPmJpX3NpemUgLT0gYnl0ZXM7CiAJZWxzZQogCQlidmVjX2l0ZXJfYWR2YW5jZShiaW8t PmJpX2lvX3ZlYywgaXRlciwgYnl0ZXMpOwpAQCAtMjUzLDEwICsyNTgsMTAgQEAgc3RhdGlj IGlubGluZSB1bnNpZ25lZCBiaW9fc2VnbWVudHMoc3RydWN0IGJpbyAqYmlvKQogCSAqIGRp ZmZlcmVudGx5OgogCSAqLwogCi0JaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkKKwlp ZiAoYmlvLT5iaV9vcCA9PSBSRVFfT1BfRElTQ0FSRCkKIAkJcmV0dXJuIDE7CiAKLQlpZiAo YmlvLT5iaV9ydyAmIFJFUV9XUklURV9TQU1FKQorCWlmIChiaW8tPmJpX29wID09IFJFUV9P UF9XUklURV9TQU1FKQogCQlyZXR1cm4gMTsKIAogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2 LCBiaW8sIGl0ZXIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRl L2xpbnV4L2ZzLmgKaW5kZXggZWVmZDI1Mi4uZjBiY2NlZCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMjM4OCwzMyArMjM4 OCwyNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgb3BfaXNfd3JpdGUoaW50IG9wKQogfQogCiAv KgotICogcmV0dXJuIFJFQUQsIFJFQURBLCBvciBXUklURQorICogcmV0dXJuIGRhdGEgZGly ZWN0aW9uLCBSRUFEIG9yIFdSSVRFCiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGJpb19ydyhz dHJ1Y3QgYmlvICpiaW8pCitzdGF0aWMgaW5saW5lIGludCBiaW9fZGF0YV9kaXIoc3RydWN0 IGJpbyAqYmlvKQogewotCS8qCi0JICogdG1wIGNwbXBhdC4gQWxsb3cgdXNlcnMgdG8gc2V0 IGVpdGhlciBvcCBvciBydywgdW50aWwKLQkgKiBhbGwgY29kZSBpcyBjb252ZXJ0ZWQgaW4g dGhlIG5leHQgcGF0Y2hlcy4KLQkgKi8KIAlpZiAob3BfaXNfd3JpdGUoYmlvLT5iaV9vcCkp CiAJCXJldHVybiBXUklURTsKLQotCXJldHVybiBiaW8tPmJpX3J3ICYgKFJXX01BU0sgfCBS V0FfTUFTSyk7CisJcmV0dXJuIFJFQUQ7CiB9CiAKIC8qCi0gKiByZXR1cm4gZGF0YSBkaXJl Y3Rpb24sIFJFQUQgb3IgV1JJVEUKKyAqIHJldHVybiBSRUFELCBSRUFEQSwgb3IgV1JJVEUK ICAqLwotc3RhdGljIGlubGluZSBpbnQgYmlvX2RhdGFfZGlyKHN0cnVjdCBiaW8gKmJpbykK K3N0YXRpYyBpbmxpbmUgaW50IGJpb19ydyhzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JLyoKLQkg KiB0bXAgY3BtcGF0LiBBbGxvdyB1c2VycyB0byBzZXQgZWl0aGVyIG9wIG9yIHJ3LCB1bnRp bAotCSAqIGFsbCBjb2RlIGlzIGNvbnZlcnRlZCBpbiB0aGUgbmV4dCBwYXRjaGVzLgotCSAq LwotCWlmIChvcF9pc193cml0ZShiaW8tPmJpX29wKSkKLQkJcmV0dXJuIFdSSVRFOworCWlm IChiaW8tPmJpX3J3ICYgUldBX01BU0spCisJCXJldHVybiBSRUFEQTsKIAotCXJldHVybiBi aW8tPmJpX3J3ICYgMTsKKwlyZXR1cm4gYmlvX2RhdGFfZGlyKGJpbyk7CiB9CiAKIGV4dGVy biB2b2lkIGNoZWNrX2Rpc2tfc2l6ZV9jaGFuZ2Uoc3RydWN0IGdlbmRpc2sgKmRpc2ssCi0t IAoxLjguMy4xCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAwMy1ibG9jay1mcy1k cml2ZXJzLXVzZS1iaW8tcnFfZGF0YV9kaXItaGVscGVycy5wYXRjaAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAwMDE3NTEAMDAwMDAw MTU1NzIAMTI2MzI0MTE2NjQAMDIyNDQ1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAEZyb20gZDAxMjkyZmNmYjk5Mzk0YWZjYjFlMGQ5ZDQ3MjY5MTE4ZGZkMGVmOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8bWNocmlzdGlAcmVk aGF0LmNvbT4KRGF0ZTogVHVlLCA4IERlYyAyMDE1IDEyOjQ1OjIzIC0wNjAwClN1YmplY3Q6 IFtQQVRDSCAwMy8zMF0gYmxvY2svZnMvZHJpdmVyczogdXNlIGJpby9ycV9kYXRhX2RpciBo ZWxwZXJzCgpXZSBjYW4gaGF2ZSBtdWx0aXBsZSBjb21tYW5kcywgbGlrZSBkaXNjYXJkIGFu ZCB3cml0ZSBzYW1lLAp0aGF0IG1vZHVsZXMgd2FudCB0byB0cmVhdCBsaWtlIHdyaXRlcy4g V2l0aCB0aGUgb3BlcmF0aW9uCnBhdGNoZXMgaW4gdGhpcyBzZXQsIHdlIHdpbGwgbm90IGJl IHNldHRpbmcgdGhlIFJFUV9XUklURQpmbGFnIGFueW1vcmUuIFRvIGRldGVybWluZSBpZiBh IGJpby9yZXF1ZXN0IHNob3VsZCBiZSB0cmVhdGVkCmxpa2UgYSB3cml0ZSwgd2UganVzdCB1 c2UgKl9kYXRhX2RpciBoZWxwZXJzIGZvciBub3cuCgpyd19pc19zeW5jIHN0aWxsIGNoZWNr cyBmb3IgUkVRX1dSSVRFLiBUaGlzIHdpbGwgYmUgbW9kaWZpZWQgaW4KbGF0ZXIgcGF0Y2hl cyB3aXRoIHRoZSBjb3JlIGJsb2NrIGxheWVyIHJlcXVlc3QgY29kZS4KCk5vdGU6IEkgZGlk IG5vdCBjb252ZXJ0IGV2ZXJ5dGhpbmcgdG8gb3BfaXNfd3JpdGUvb3BfaXNfcmVhZCBhbmQK YW5kIGFkZCBkbWFfZGF0YV9kaXJlY3Rpb24gaGVscGVycyBpbiB0aGlzIHNldCBsaWtlIHdh cyBzdWdnZXN0ZWQKb24gdGhlIGxpc3QuIEl0IHdhcyBnZXR0aW5nIHRvbyBsYXJnZSBhbHJl YWR5LCBzbyBJIHdhcyBob3BpbmcgdG8KZG8gdGhhdCBhbm90aGVyIGRheS4KClNpZ25lZC1v ZmYtYnk6IE1pa2UgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+Ci0tLQogYmxvY2sv YmxrLW1lcmdlLmMgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2F0YS9saWJhdGEt c2NzaS5jICAgICAgICB8IDIgKy0KIGRyaXZlcnMvYmxvY2svbG9vcC5jICAgICAgICAgICAg IHwgNiArKystLS0KIGRyaXZlcnMvYmxvY2svcmJkLmMgICAgICAgICAgICAgIHwgMiArLQog ZHJpdmVycy9ibG9jay91bWVtLmMgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2lkZS9p ZGUtZmxvcHB5LmMgICAgICAgICB8IDIgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL2lvLmMgICAg ICAgICAgIHwgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jICAgICAgfCA2ICsr Ky0tLQogZHJpdmVycy9zY3NpL29zZC9vc2RfaW5pdGlhdG9yLmMgfCA0ICsrLS0KIDkgZmls ZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuYwppbmRleCAwZTU2 NDNhLi41ZWQ3Yjk2IDEwMDY0NAotLS0gYS9ibG9jay9ibGstbWVyZ2UuYworKysgYi9ibG9j ay9ibGstbWVyZ2UuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIGludCBibGtfcnFfbWFwX3NnKHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJfQogCiAJaWYg KHEtPmRtYV9kcmFpbl9zaXplICYmIHEtPmRtYV9kcmFpbl9uZWVkZWQocnEpKSB7Ci0JCWlm IChycS0+Y21kX2ZsYWdzICYgUkVRX1dSSVRFKQorCQlpZiAocnFfZGF0YV9kaXIocnEpID09 IFdSSVRFKQogCQkJbWVtc2V0KHEtPmRtYV9kcmFpbl9idWZmZXIsIDAsIHEtPmRtYV9kcmFp bl9zaXplKTsKIAogCQlzZ191bm1hcmtfZW5kKHNnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv YXRhL2xpYmF0YS1zY3NpLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCmluZGV4IDdl OTU5ZjkuLjA0MWRhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMK KysrIGIvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYwpAQCAtMTEyNSw3ICsxMTI1LDcgQEAg c3RhdGljIGludCBhdGFwaV9kcmFpbl9uZWVkZWQoc3RydWN0IHJlcXVlc3QgKnJxKQogCWlm IChsaWtlbHkocnEtPmNtZF90eXBlICE9IFJFUV9UWVBFX0JMT0NLX1BDKSkKIAkJcmV0dXJu IDA7CiAKLQlpZiAoIWJsa19ycV9ieXRlcyhycSkgfHwgKHJxLT5jbWRfZmxhZ3MgJiBSRVFf V1JJVEUpKQorCWlmICghYmxrX3JxX2J5dGVzKHJxKSB8fCBycV9kYXRhX2RpcihycSkgPT0g V1JJVEUpCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIGF0YXBpX2NtZF90eXBlKHJxLT5jbWRb MF0pID09IEFUQVBJX01JU0M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYyBi L2RyaXZlcnMvYmxvY2svbG9vcC5jCmluZGV4IDQyM2Y0Y2EuLjgzZmMxMjcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBA IC00NDcsNyArNDQ3LDcgQEAgc3RhdGljIGludCBsb19yZXFfZmx1c2goc3RydWN0IGxvb3Bf ZGV2aWNlICpsbywgc3RydWN0IHJlcXVlc3QgKnJxKQogCiBzdGF0aWMgaW5saW5lIHZvaWQg aGFuZGxlX3BhcnRpYWxfcmVhZChzdHJ1Y3QgbG9vcF9jbWQgKmNtZCwgbG9uZyBieXRlcykK IHsKLQlpZiAoYnl0ZXMgPCAwIHx8IChjbWQtPnJxLT5jbWRfZmxhZ3MgJiBSRVFfV1JJVEUp KQorCWlmIChieXRlcyA8IDAgfHwgKHJxX2RhdGFfZGlyKGNtZC0+cnEpID09IFdSSVRFKSkK IAkJcmV0dXJuOwogCiAJaWYgKHVubGlrZWx5KGJ5dGVzIDwgYmxrX3JxX2J5dGVzKGNtZC0+ cnEpKSkgewpAQCAtNTM1LDcgKzUzNSw3IEBAIHN0YXRpYyBpbnQgZG9fcmVxX2ZpbGViYWNr ZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IHJlcXVlc3QgKnJxKQogCiAJcG9z ID0gKChsb2ZmX3QpIGJsa19ycV9wb3MocnEpIDw8IDkpICsgbG8tPmxvX29mZnNldDsKIAot CWlmIChycS0+Y21kX2ZsYWdzICYgUkVRX1dSSVRFKSB7CisJaWYgKHJxX2RhdGFfZGlyKHJx KSA9PSBXUklURSkgewogCQlpZiAocnEtPmNtZF9mbGFncyAmIFJFUV9GTFVTSCkKIAkJCXJl dCA9IGxvX3JlcV9mbHVzaChsbywgcnEpOwogCQllbHNlIGlmIChycS0+Y21kX2ZsYWdzICYg UkVRX0RJU0NBUkQpCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBzdGF0aWMgaW50IGxvb3BfcXVl dWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsCiAKIHN0YXRpYyB2b2lkIGxvb3Bf aGFuZGxlX2NtZChzdHJ1Y3QgbG9vcF9jbWQgKmNtZCkKIHsKLQljb25zdCBib29sIHdyaXRl ID0gY21kLT5ycS0+Y21kX2ZsYWdzICYgUkVRX1dSSVRFOworCWNvbnN0IGJvb2wgd3JpdGUg PSBycV9kYXRhX2RpcihjbWQtPnJxKTsKIAlzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvID0gY21k LT5ycS0+cS0+cXVldWVkYXRhOwogCWludCByZXQgPSAwOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL3JiZC5jIGIvZHJpdmVycy9ibG9jay9yYmQuYwppbmRleCAyMzU3MDhjLi40 ZTQ4MzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JiZC5jCisrKyBiL2RyaXZlcnMv YmxvY2svcmJkLmMKQEAgLTMzNzUsNyArMzM3NSw3IEBAIHN0YXRpYyB2b2lkIHJiZF9xdWV1 ZV93b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJaWYgKHJxLT5jbWRfZmxh Z3MgJiBSRVFfRElTQ0FSRCkKIAkJb3BfdHlwZSA9IE9CSl9PUF9ESVNDQVJEOwotCWVsc2Ug aWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfV1JJVEUpCisJZWxzZSBpZiAocnFfZGF0YV9kaXIo cnEpID09IFdSSVRFKQogCQlvcF90eXBlID0gT0JKX09QX1dSSVRFOwogCWVsc2UKIAkJb3Bf dHlwZSA9IE9CSl9PUF9SRUFEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91bWVtLmMg Yi9kcml2ZXJzL2Jsb2NrL3VtZW0uYwppbmRleCA3OTM5YjlmLi4xZjYwNzgxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jsb2NrL3VtZW0uYworKysgYi9kcml2ZXJzL2Jsb2NrL3VtZW0uYwpA QCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGFnZSh1bnNpZ25lZCBs b25nIGRhdGEpCiAJCQkJbGUzMl90b19jcHUoZGVzYy0+bG9jYWxfYWRkcik+PjksCiAJCQkJ bGUzMl90b19jcHUoZGVzYy0+dHJhbnNmZXJfc2l6ZSkpOwogCQkJZHVtcF9kbWFzdGF0KGNh cmQsIGNvbnRyb2wpOwotCQl9IGVsc2UgaWYgKChiaW8tPmJpX3J3ICYgUkVRX1dSSVRFKSAm JgorCQl9IGVsc2UgaWYgKGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFICYmCiAJCQkgICBs ZTMyX3RvX2NwdShkZXNjLT5sb2NhbF9hZGRyKSA+PiA5ID09CiAJCQkJY2FyZC0+aW5pdF9z aXplKSB7CiAJCQljYXJkLT5pbml0X3NpemUgKz0gbGUzMl90b19jcHUoZGVzYy0+dHJhbnNm ZXJfc2l6ZSkgPj4gOTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYyBi L2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYwppbmRleCAyZmI1MzUwLi5mMDc5ZDhkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMKKysrIGIvZHJpdmVycy9pZGUvaWRl LWZsb3BweS5jCkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIHZvaWQgaWRlZmxvcHB5X2Ny ZWF0ZV9yd19jbWQoaWRlX2RyaXZlX3QgKmRyaXZlLAogCW1lbWNweShycS0+Y21kLCBwYy0+ YywgMTIpOwogCiAJcGMtPnJxID0gcnE7Ci0JaWYgKHJxLT5jbWRfZmxhZ3MgJiBSRVFfV1JJ VEUpCisJaWYgKGNtZCA9PSBXUklURSkKIAkJcGMtPmZsYWdzIHw9IFBDX0ZMQUdfV1JJVElO RzsKIAogCXBjLT5mbGFncyB8PSBQQ19GTEFHX0RNQV9PSzsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvYmNhY2hlL2lvLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9pby5jCmluZGV4IDg2YTBi YjguLmZiYzg5NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL2lvLmMKKysrIGIv ZHJpdmVycy9tZC9iY2FjaGUvaW8uYwpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgYmNoX2Ji aW9fY291bnRfaW9fZXJyb3JzKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHN0cnVjdCBiaW8gKmJp bywKIAlzdHJ1Y3QgYmJpbyAqYiA9IGNvbnRhaW5lcl9vZihiaW8sIHN0cnVjdCBiYmlvLCBi aW8pOwogCXN0cnVjdCBjYWNoZSAqY2EgPSBQVFJfQ0FDSEUoYywgJmItPmtleSwgMCk7CiAK LQl1bnNpZ25lZCB0aHJlc2hvbGQgPSBiaW8tPmJpX3J3ICYgUkVRX1dSSVRFCisJdW5zaWdu ZWQgdGhyZXNob2xkID0gYmlvX2RhdGFfZGlyKGJpbykgPT0gV1JJVEUKIAkJPyBjLT5jb25n ZXN0ZWRfd3JpdGVfdGhyZXNob2xkX3VzCiAJCTogYy0+Y29uZ2VzdGVkX3JlYWRfdGhyZXNo b2xkX3VzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMgYi9k cml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMKaW5kZXggMjVmYTg0NC4uMDlmZDFhZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQv YmNhY2hlL3JlcXVlc3QuYwpAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyBib29sIGNoZWNr X3Nob3VsZF9ieXBhc3Moc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8p CiAKIAlpZiAobW9kZSA9PSBDQUNIRV9NT0RFX05PTkUgfHwKIAkgICAgKG1vZGUgPT0gQ0FD SEVfTU9ERV9XUklURUFST1VORCAmJgotCSAgICAgKGJpby0+YmlfcncgJiBSRVFfV1JJVEUp KSkKKwkgICAgIGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSkKIAkJZ290byBza2lwOwog CiAJaWYgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiAoYy0+c2IuYmxvY2tfc2l6ZSAtIDEp IHx8CkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfc2hvdWxkX2J5cGFz cyhzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBiaW8gKmJpbykKIAogCWlmICghY29u Z2VzdGVkICYmCiAJICAgIG1vZGUgPT0gQ0FDSEVfTU9ERV9XUklURUJBQ0sgJiYKLQkgICAg KGJpby0+YmlfcncgJiBSRVFfV1JJVEUpICYmCisJICAgIGJpb19kYXRhX2RpcihiaW8pID09 IFdSSVRFICYmCiAJICAgIChiaW8tPmJpX3J3ICYgUkVRX1NZTkMpKQogCQlnb3RvIHJlc2Nh bGU7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzZWFyY2gg KnNlYXJjaF9hbGxvYyhzdHJ1Y3QgYmlvICpiaW8sCiAJcy0+Y2FjaGVfbWlzcwkJPSBOVUxM OwogCXMtPmQJCQk9IGQ7CiAJcy0+cmVjb3ZlcmFibGUJCT0gMTsKLQlzLT53cml0ZQkJPSAo YmlvLT5iaV9ydyAmIFJFUV9XUklURSkgIT0gMDsKKwlzLT53cml0ZQkJPSBiaW9fZGF0YV9k aXIoYmlvKSA9PSBXUklURTsKIAlzLT5yZWFkX2RpcnR5X2RhdGEJPSAwOwogCXMtPnN0YXJ0 X3RpbWUJCT0gamlmZmllczsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL29zZC9vc2Rf aW5pdGlhdG9yLmMgYi9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3IuYwppbmRleCAw Y2NjZDYwLi42ZDQ1ODI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0 aWF0b3IuYworKysgYi9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3IuYwpAQCAtODI3 LDcgKzgyNyw3IEBAIHZvaWQgb3NkX3JlcV93cml0ZShzdHJ1Y3Qgb3NkX3JlcXVlc3QgKm9y LAogewogCV9vc2RfcmVxX2VuY29kZV9jb21tb24ob3IsIE9TRF9BQ1RfV1JJVEUsIG9iaiwg b2Zmc2V0LCBsZW4pOwogCVdBUk5fT04ob3ItPm91dC5iaW8gfHwgb3ItPm91dC50b3RhbF9i eXRlcyk7Ci0JV0FSTl9PTigwID09IChiaW8tPmJpX3J3ICYgUkVRX1dSSVRFKSk7CisJV0FS Tl9PTihiaW9fZGF0YV9kaXIoYmlvKSA9PSBSRUFEKTsKIAlvci0+b3V0LmJpbyA9IGJpbzsK IAlvci0+b3V0LnRvdGFsX2J5dGVzID0gbGVuOwogfQpAQCAtODc4LDcgKzg3OCw3IEBAIHZv aWQgb3NkX3JlcV9yZWFkKHN0cnVjdCBvc2RfcmVxdWVzdCAqb3IsCiB7CiAJX29zZF9yZXFf ZW5jb2RlX2NvbW1vbihvciwgT1NEX0FDVF9SRUFELCBvYmosIG9mZnNldCwgbGVuKTsKIAlX QVJOX09OKG9yLT5pbi5iaW8gfHwgb3ItPmluLnRvdGFsX2J5dGVzKTsKLQlXQVJOX09OKGJp by0+YmlfcncgJiBSRVFfV1JJVEUpOworCVdBUk5fT04oYmlvX2RhdGFfZGlyKGJpbykgPT0g V1JJVEUpOwogCW9yLT5pbi5iaW8gPSBiaW87CiAJb3ItPmluLnRvdGFsX2J5dGVzID0gbGVu OwogfQotLSAKMS44LjMuMQoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByZXEtb3AvMDAy NC1ibG9jay1zZXQtb3AtdG8tUkVRX09QLnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY2NAAwMDAxNzUxADAw MDE3NTEAMDAwMDAwNjY2MzAAMTI2MzI0MTIyMTcAMDE1NzYyACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbW5jAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABtbmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAEZyb20gNzgzYmQ3ZTg4ZDg1MjBjNmMwZTBlMWExYTg3YWFiMWNk MjE5MjhhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBDaHJpc3RpZSA8 bWNocmlzdGlAcmVkaGF0LmNvbT4KRGF0ZTogVHVlLCA4IERlYyAyMDE1IDIxOjU5OjQwIC0w NjAwClN1YmplY3Q6IFtQQVRDSCAyNC8zMF0gYmxvY2s6IHNldCBvcCB0byBSRVFfT1AKClRo aXMgcGF0Y2ggY29udmVydHMgdGhlIHJlcXVlc3QgcmVsYXRlZCBibG9jayBsYXllciBjb2Rl IHRvIHNldApyZXF1ZXN0LT5vcCB0byBhIFJFUV9PUCBhbmQgY21kX2ZsYWdzIHRvIHJxX2Zs YWdfYml0cy4KClRoZXJlIGlzIHNvbWUgdG1wIGNvbXBhdCBjb2RlIHdoZW4gc2V0dGluZyB1 cCBjbWRfZmxhZ3Mgc28gaXQKc3RpbGwgY2FycmllcyBib3RoIHRoZSBvcCBhbmQgZmxhZ3Mu IEl0IHdpbGwgYmUgcmVtb3ZlZCBpbgppbiBsYXRlciBwYXRjaGVzIGluIHRoaXMgc2V0IHdo ZW4gSSBoYXZlIGNvbnZlcnRlZCBhbGwgZHJpdmVycy4KCgpTaWduZWQtb2ZmLWJ5OiBNaWtl IENocmlzdGllIDxtY2hyaXN0aUByZWRoYXQuY29tPgotLS0KIGJsb2NrL2Jsay1jb3JlLmMg ICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLQogYmxvY2svYmxrLWZsdXNoLmMgICAgICAgICAgfCAgMSArCiBibG9jay9ibGst bWVyZ2UuYyAgICAgICAgICB8IDEwICsrKystLS0tCiBibG9jay9ibGstbXEuYyAgICAgICAg ICAgICB8IDM4ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBibG9jay9jZnEtaW9z Y2hlZC5jICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KIGJsb2NrL2VsZXZhdG9yLmMgICAgICAgICAgIHwgIDggKysrLS0tLQogaW5jbHVk ZS9saW51eC9ibGstY2dyb3VwLmggfCAxMyArKysrKy0tLS0tCiBpbmNsdWRlL2xpbnV4L2Js a2Rldi5oICAgICB8IDI4ICsrKysrKysrKysrLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgv ZWxldmF0b3IuaCAgIHwgIDQgKystLQogOSBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9u cygrKSwgOTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBi L2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggNjQ4OTRlMC4uZjlkZTVmYSAxMDA2NDQKLS0tIGEv YmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9ibGstY29yZS5jCkBAIC05MzUsMTAgKzkz NSwxMCBAQCBzdGF0aWMgdm9pZCBfX2ZyZWVkX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfbGlz dCAqcmwsIGludCBzeW5jKQogICogQSByZXF1ZXN0IGhhcyBqdXN0IGJlZW4gcmVsZWFzZWQu ICBBY2NvdW50IGZvciBpdCwgdXBkYXRlIHRoZSBmdWxsIGFuZAogICogY29uZ2VzdGlvbiBz dGF0dXMsIHdha2UgdXAgYW55IHdhaXRlcnMuICAgQ2FsbGVkIHVuZGVyIHEtPnF1ZXVlX2xv Y2suCiAgKi8KLXN0YXRpYyB2b2lkIGZyZWVkX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfbGlz dCAqcmwsIHVuc2lnbmVkIGludCBmbGFncykKK3N0YXRpYyB2b2lkIGZyZWVkX3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfbGlzdCAqcmwsIGludCBvcCwgdW5zaWduZWQgaW50IGZsYWdzKQog ewogCXN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gcmwtPnE7Ci0JaW50IHN5bmMgPSByd19p c19zeW5jKGZsYWdzKTsKKwlpbnQgc3luYyA9IHJ3X2lzX3N5bmMob3AsIGZsYWdzKTsKIAog CXEtPm5yX3Jxc1tzeW5jXS0tOwogCXJsLT5jb3VudFtzeW5jXS0tOwpAQCAtMTAzMCw3ICsx MDMwLDggQEAgc3RhdGljIHN0cnVjdCBpb19jb250ZXh0ICpycV9pb2Moc3RydWN0IGJpbyAq YmlvKQogLyoqCiAgKiBfX2dldF9yZXF1ZXN0IC0gZ2V0IGEgZnJlZSByZXF1ZXN0CiAgKiBA cmw6IHJlcXVlc3QgbGlzdCB0byBhbGxvY2F0ZSBmcm9tCi0gKiBAcndfZmxhZ3M6IFJXIGFu ZCBTWU5DIGZsYWdzCisgKiBAb3A6IFJFUV9PUF9SRUFEL1JFUV9PUF9XUklURQorICogQG9w X2ZsYWdzOiBycV9mbGFnX2JpdHMKICAqIEBiaW86IGJpbyB0byBhbGxvY2F0ZSByZXF1ZXN0 IGZvciAoY2FuIGJlICVOVUxMKQogICogQGdmcF9tYXNrOiBhbGxvY2F0aW9uIG1hc2sKICAq CkBAIC0xMDQxLDIxICsxMDQyLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgaW9fY29udGV4dCAqcnFf aW9jKHN0cnVjdCBiaW8gKmJpbykKICAqIFJldHVybnMgRVJSX1BUUiBvbiBmYWlsdXJlLCB3 aXRoIEBxLT5xdWV1ZV9sb2NrIGhlbGQuCiAgKiBSZXR1cm5zIHJlcXVlc3QgcG9pbnRlciBv biBzdWNjZXNzLCB3aXRoIEBxLT5xdWV1ZV9sb2NrICpub3QgaGVsZCouCiAgKi8KLXN0YXRp YyBzdHJ1Y3QgcmVxdWVzdCAqX19nZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9saXN0ICpy bCwgaW50IHJ3X2ZsYWdzLAotCQkJCSAgICAgc3RydWN0IGJpbyAqYmlvLCBnZnBfdCBnZnBf bWFzaykKK3N0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqX19nZXRfcmVxdWVzdChzdHJ1Y3QgcmVx dWVzdF9saXN0ICpybCwgaW50IG9wLAorCQkJCSAgICAgaW50IG9wX2ZsYWdzLCBzdHJ1Y3Qg YmlvICpiaW8sCisJCQkJICAgICBnZnBfdCBnZnBfbWFzaykKIHsKIAlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IHJsLT5xOwogCXN0cnVjdCByZXF1ZXN0ICpycTsKIAlzdHJ1Y3QgZWxl dmF0b3JfdHlwZSAqZXQgPSBxLT5lbGV2YXRvci0+dHlwZTsKIAlzdHJ1Y3QgaW9fY29udGV4 dCAqaW9jID0gcnFfaW9jKGJpbyk7CiAJc3RydWN0IGlvX2NxICppY3EgPSBOVUxMOwotCWNv bnN0IGJvb2wgaXNfc3luYyA9IHJ3X2lzX3N5bmMocndfZmxhZ3MpICE9IDA7CisJY29uc3Qg Ym9vbCBpc19zeW5jID0gcndfaXNfc3luYyhvcCwgb3BfZmxhZ3MpICE9IDA7CiAJaW50IG1h eV9xdWV1ZTsKIAogCWlmICh1bmxpa2VseShibGtfcXVldWVfZHlpbmcocSkpKQogCQlyZXR1 cm4gRVJSX1BUUigtRU5PREVWKTsKIAotCW1heV9xdWV1ZSA9IGVsdl9tYXlfcXVldWUocSwg cndfZmxhZ3MpOworCW1heV9xdWV1ZSA9IGVsdl9tYXlfcXVldWUocSwgb3AsIG9wX2ZsYWdz KTsKIAlpZiAobWF5X3F1ZXVlID09IEVMVl9NUVVFVUVfTk8pCiAJCWdvdG8gcnFfc3RhcnZl ZDsKIApAQCAtMTA5OSw3ICsxMTAxLDcgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0ICpfX2dl dF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X2xpc3QgKnJsLCBpbnQgcndfZmxhZ3MsCiAKIAkv KgogCSAqIERlY2lkZSB3aGV0aGVyIHRoZSBuZXcgcmVxdWVzdCB3aWxsIGJlIG1hbmFnZWQg YnkgZWxldmF0b3IuICBJZgotCSAqIHNvLCBtYXJrIEByd19mbGFncyBhbmQgaW5jcmVtZW50 IGVsdnByaXYuICBOb24temVybyBlbHZwcml2IHdpbGwKKwkgKiBzbywgbWFyayBAb3BfZmxh Z3MgYW5kIGluY3JlbWVudCBlbHZwcml2LiAgTm9uLXplcm8gZWx2cHJpdiB3aWxsCiAJICog cHJldmVudCB0aGUgY3VycmVudCBlbGV2YXRvciBmcm9tIGJlaW5nIGRlc3Ryb3llZCB1bnRp bCB0aGUgbmV3CiAJICogcmVxdWVzdCBpcyBmcmVlZC4gIFRoaXMgZ3VhcmFudGVlcyBpY3En cyB3b24ndCBiZSBkZXN0cm95ZWQgYW5kCiAJICogbWFrZXMgY3JlYXRpbmcgbmV3IG9uZXMg c2FmZS4KQEAgLTExMDgsMTQgKzExMTAsMTQgQEAgc3RhdGljIHN0cnVjdCByZXF1ZXN0ICpf X2dldF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X2xpc3QgKnJsLCBpbnQgcndfZmxhZ3MsCiAJ ICogaXQgd2lsbCBiZSBjcmVhdGVkIGFmdGVyIHJlbGVhc2luZyBxdWV1ZV9sb2NrLgogCSAq LwogCWlmIChibGtfcnFfc2hvdWxkX2luaXRfZWxldmF0b3IoYmlvKSAmJiAhYmxrX3F1ZXVl X2J5cGFzcyhxKSkgewotCQlyd19mbGFncyB8PSBSRVFfRUxWUFJJVjsKKwkJb3BfZmxhZ3Mg fD0gUkVRX0VMVlBSSVY7CiAJCXEtPm5yX3Jxc19lbHZwcml2Kys7CiAJCWlmIChldC0+aWNx X2NhY2hlICYmIGlvYykKIAkJCWljcSA9IGlvY19sb29rdXBfaWNxKGlvYywgcSk7CiAJfQog CiAJaWYgKGJsa19xdWV1ZV9pb19zdGF0KHEpKQotCQlyd19mbGFncyB8PSBSRVFfSU9fU1RB VDsKKwkJb3BfZmxhZ3MgfD0gUkVRX0lPX1NUQVQ7CiAJc3Bpbl91bmxvY2tfaXJxKHEtPnF1 ZXVlX2xvY2spOwogCiAJLyogYWxsb2NhdGUgYW5kIGluaXQgcmVxdWVzdCAqLwpAQCAtMTEy NSwxMCArMTEyNywxMiBAQCBzdGF0aWMgc3RydWN0IHJlcXVlc3QgKl9fZ2V0X3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfbGlzdCAqcmwsIGludCByd19mbGFncywKIAogCWJsa19ycV9pbml0 KHEsIHJxKTsKIAlibGtfcnFfc2V0X3JsKHJxLCBybCk7Ci0JcnEtPmNtZF9mbGFncyA9IHJ3 X2ZsYWdzIHwgUkVRX0FMTE9DRUQ7CisJLyogdG1wIGNvbXBhdCAtIGFsbG93IHVzZXJzIHRv IGNoZWNrIGVpdGhlciBvbmUgZm9yIHRoZSBvcCAqLworCXJxLT5jbWRfZmxhZ3MgPSBvcCB8 IG9wX2ZsYWdzIHwgUkVRX0FMTE9DRUQ7CisJcnEtPm9wID0gb3A7CiAKIAkvKiBpbml0IGVs dnByaXYgKi8KLQlpZiAocndfZmxhZ3MgJiBSRVFfRUxWUFJJVikgeworCWlmIChvcF9mbGFn cyAmIFJFUV9FTFZQUklWKSB7CiAJCWlmICh1bmxpa2VseShldC0+aWNxX2NhY2hlICYmICFp Y3EpKSB7CiAJCQlpZiAoaW9jKQogCQkJCWljcSA9IGlvY19jcmVhdGVfaWNxKGlvYywgcSwg Z2ZwX21hc2spOwpAQCAtMTE1NCw3ICsxMTU4LDcgQEAgb3V0OgogCWlmIChpb2NfYmF0Y2hp bmcocSwgaW9jKSkKIAkJaW9jLT5ucl9iYXRjaF9yZXF1ZXN0cy0tOwogCi0JdHJhY2VfYmxv Y2tfZ2V0cnEocSwgYmlvLCByd19mbGFncyAmIDEpOworCXRyYWNlX2Jsb2NrX2dldHJxKHEs IGJpbywgb3ApOwogCXJldHVybiBycTsKIAogZmFpbF9lbHZwcml2OgpAQCAtMTE4NCw3ICsx MTg4LDcgQEAgZmFpbF9hbGxvYzoKIAkgKiBxdWV1ZSwgYnV0IHRoaXMgaXMgcHJldHR5IHJh cmUuCiAJICovCiAJc3Bpbl9sb2NrX2lycShxLT5xdWV1ZV9sb2NrKTsKLQlmcmVlZF9yZXF1 ZXN0KHJsLCByd19mbGFncyk7CisJZnJlZWRfcmVxdWVzdChybCwgb3AsIG9wX2ZsYWdzKTsK IAogCS8qCiAJICogaW4gdGhlIHZlcnkgdW5saWtlbHkgZXZlbnQgdGhhdCBhbGxvY2F0aW9u IGZhaWxlZCBhbmQgbm8KQEAgLTEyMDIsNyArMTIwNiw4IEBAIHJxX3N0YXJ2ZWQ6CiAvKioK ICAqIGdldF9yZXF1ZXN0IC0gZ2V0IGEgZnJlZSByZXF1ZXN0CiAgKiBAcTogcmVxdWVzdF9x dWV1ZSB0byBhbGxvY2F0ZSByZXF1ZXN0IGZyb20KLSAqIEByd19mbGFnczogUlcgYW5kIFNZ TkMgZmxhZ3MKKyAqIG9wOiBSRVFfT1BfUkVBRC9SRVFfT1BfV1JJVEUKKyAqIEBvcF9mbGFn czogcnFfZmxhZ19iaXRzCiAgKiBAYmlvOiBiaW8gdG8gYWxsb2NhdGUgcmVxdWVzdCBmb3Ig KGNhbiBiZSAlTlVMTCkKICAqIEBnZnBfbWFzazogYWxsb2NhdGlvbiBtYXNrCiAgKgpAQCAt MTIxMywxNyArMTIxOCwxOCBAQCBycV9zdGFydmVkOgogICogUmV0dXJucyBFUlJfUFRSIG9u IGZhaWx1cmUsIHdpdGggQHEtPnF1ZXVlX2xvY2sgaGVsZC4KICAqIFJldHVybnMgcmVxdWVz dCBwb2ludGVyIG9uIHN1Y2Nlc3MsIHdpdGggQHEtPnF1ZXVlX2xvY2sgKm5vdCBoZWxkKi4K ICAqLwotc3RhdGljIHN0cnVjdCByZXF1ZXN0ICpnZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSwgaW50IHJ3X2ZsYWdzLAotCQkJCSAgIHN0cnVjdCBiaW8gKmJpbywgZ2Zw X3QgZ2ZwX21hc2spCitzdGF0aWMgc3RydWN0IHJlcXVlc3QgKmdldF9yZXF1ZXN0KHN0cnVj dCByZXF1ZXN0X3F1ZXVlICpxLCBpbnQgb3AsCisJCQkJICAgaW50IG9wX2ZsYWdzLCBzdHJ1 Y3QgYmlvICpiaW8sCisJCQkJICAgZ2ZwX3QgZ2ZwX21hc2spCiB7Ci0JY29uc3QgYm9vbCBp c19zeW5jID0gcndfaXNfc3luYyhyd19mbGFncykgIT0gMDsKKwljb25zdCBib29sIGlzX3N5 bmMgPSByd19pc19zeW5jKG9wLCBvcF9mbGFncykgIT0gMDsKIAlERUZJTkVfV0FJVCh3YWl0 KTsKIAlzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybDsKIAlzdHJ1Y3QgcmVxdWVzdCAqcnE7CiAK IAlybCA9IGJsa19nZXRfcmwocSwgYmlvKTsJLyogdHJhbnNmZXJyZWQgdG8gQHJxIG9uIHN1 Y2Nlc3MgKi8KIHJldHJ5OgotCXJxID0gX19nZXRfcmVxdWVzdChybCwgcndfZmxhZ3MsIGJp bywgZ2ZwX21hc2spOworCXJxID0gX19nZXRfcmVxdWVzdChybCwgb3AsIG9wX2ZsYWdzLCBi aW8sIGdmcF9tYXNrKTsKIAlpZiAoIUlTX0VSUihycSkpCiAJCXJldHVybiBycTsKIApAQCAt MTIzNiw3ICsxMjQyLDcgQEAgcmV0cnk6CiAJcHJlcGFyZV90b193YWl0X2V4Y2x1c2l2ZSgm cmwtPndhaXRbaXNfc3luY10sICZ3YWl0LAogCQkJCSAgVEFTS19VTklOVEVSUlVQVElCTEUp OwogCi0JdHJhY2VfYmxvY2tfc2xlZXBycShxLCBiaW8sIHJ3X2ZsYWdzICYgMSk7CisJdHJh Y2VfYmxvY2tfc2xlZXBycShxLCBiaW8sIG9wKTsKIAogCXNwaW5fdW5sb2NrX2lycShxLT5x dWV1ZV9sb2NrKTsKIAlpb19zY2hlZHVsZSgpOwpAQCAtMTI2NSw3ICsxMjcxLDcgQEAgc3Rh dGljIHN0cnVjdCByZXF1ZXN0ICpibGtfb2xkX2dldF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBpbnQgcncsCiAJY3JlYXRlX2lvX2NvbnRleHQoZ2ZwX21hc2ssIHEtPm5v ZGUpOwogCiAJc3Bpbl9sb2NrX2lycShxLT5xdWV1ZV9sb2NrKTsKLQlycSA9IGdldF9yZXF1 ZXN0KHEsIHJ3LCBOVUxMLCBnZnBfbWFzayk7CisJcnEgPSBnZXRfcmVxdWVzdChxLCBydywg MCwgTlVMTCwgZ2ZwX21hc2spOwogCWlmIChJU19FUlIocnEpKQogCQlzcGluX3VubG9ja19p cnEocS0+cXVldWVfbG9jayk7CiAJLyogcS0+cXVldWVfbG9jayBpcyB1bmxvY2tlZCBhdCB0 aGlzIHBvaW50ICovCkBAIC0xNDY3LDEzICsxNDczLDE0IEBAIHZvaWQgX19ibGtfcHV0X3Jl cXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpyZXEpCiAJ ICovCiAJaWYgKHJlcS0+Y21kX2ZsYWdzICYgUkVRX0FMTE9DRUQpIHsKIAkJdW5zaWduZWQg aW50IGZsYWdzID0gcmVxLT5jbWRfZmxhZ3M7CisJCWludCBvcCA9IHJlcS0+b3A7CiAJCXN0 cnVjdCByZXF1ZXN0X2xpc3QgKnJsID0gYmxrX3JxX3JsKHJlcSk7CiAKIAkJQlVHX09OKCFs aXN0X2VtcHR5KCZyZXEtPnF1ZXVlbGlzdCkpOwogCQlCVUdfT04oRUxWX09OX0hBU0gocmVx KSk7CiAKIAkJYmxrX2ZyZWVfcmVxdWVzdChybCwgcmVxKTsKLQkJZnJlZWRfcmVxdWVzdChy bCwgZmxhZ3MpOworCQlmcmVlZF9yZXF1ZXN0KHJsLCBvcCwgZmxhZ3MpOwogCQlibGtfcHV0 X3JsKHJsKTsKIAl9CiB9CkBAIC0xNjg4LDcgKzE2OTUsNyBAQCBzdGF0aWMgYmxrX3FjX3Qg YmxrX3F1ZXVlX2JpbyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlv KQogewogCWNvbnN0IGJvb2wgc3luYyA9ICEhKGJpby0+YmlfcncgJiBSRVFfU1lOQyk7CiAJ c3RydWN0IGJsa19wbHVnICpwbHVnOwotCWludCBlbF9yZXQsIHJ3X2ZsYWdzLCB3aGVyZSA9 IEVMRVZBVE9SX0lOU0VSVF9TT1JUOworCWludCBlbF9yZXQsIHJ3X2ZsYWdzID0gMCwgd2hl cmUgPSBFTEVWQVRPUl9JTlNFUlRfU09SVDsKIAlzdHJ1Y3QgcmVxdWVzdCAqcmVxOwogCXVu c2lnbmVkIGludCByZXF1ZXN0X2NvdW50ID0gMDsKIApAQCAtMTc0OCw3ICsxNzU1LDYgQEAg Z2V0X3JxOgogCSAqIGJ1dCB3ZSBuZWVkIHRvIHNldCBpdCBlYXJsaWVyIHRvIGV4cG9zZSB0 aGUgc3luYyBmbGFnIHRvIHRoZQogCSAqIHJxIGFsbG9jYXRvciBhbmQgaW8gc2NoZWR1bGVy cy4KIAkgKi8KLQlyd19mbGFncyA9IGJpb19kYXRhX2RpcihiaW8pOwogCWlmIChzeW5jKQog CQlyd19mbGFncyB8PSBSRVFfU1lOQzsKIApAQCAtMTc1Niw3ICsxNzYyLDcgQEAgZ2V0X3Jx OgogCSAqIEdyYWIgYSBmcmVlIHJlcXVlc3QuIFRoaXMgaXMgbWlnaHQgc2xlZXAgYnV0IGNh biBub3QgZmFpbC4KIAkgKiBSZXR1cm5zIHdpdGggdGhlIHF1ZXVlIHVubG9ja2VkLgogCSAq LwotCXJlcSA9IGdldF9yZXF1ZXN0KHEsIHJ3X2ZsYWdzLCBiaW8sIEdGUF9OT0lPKTsKKwly ZXEgPSBnZXRfcmVxdWVzdChxLCBiaW9fZGF0YV9kaXIoYmlvKSwgcndfZmxhZ3MsIGJpbywg R0ZQX05PSU8pOwogCWlmIChJU19FUlIocmVxKSkgewogCQliaW8tPmJpX2Vycm9yID0gUFRS X0VSUihyZXEpOwogCQliaW9fZW5kaW8oYmlvKTsKQEAgLTIxNTAsNyArMjE1Niw3IEBAIGlu dCBibGtfcnFfY2hlY2tfbGltaXRzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3Qg cmVxdWVzdCAqcnEpCiAJaWYgKCFycV9tZXJnZWFibGUocnEpKQogCQlyZXR1cm4gMDsKIAot CWlmIChibGtfcnFfc2VjdG9ycyhycSkgPiBibGtfcXVldWVfZ2V0X21heF9zZWN0b3JzKHEs IHJxLT5jbWRfZmxhZ3MpKSB7CisJaWYgKGJsa19ycV9zZWN0b3JzKHJxKSA+IGJsa19xdWV1 ZV9nZXRfbWF4X3NlY3RvcnMocSwgcnEtPm9wKSkgewogCQlwcmludGsoS0VSTl9FUlIgIiVz OiBvdmVyIG1heCBzaXplIGxpbWl0LlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVJTzsK IAl9CkBAIC0yOTcwLDYgKzI5NzYsNyBAQCB2b2lkIGJsa19ycV9iaW9fcHJlcChzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxLAogewogCS8qIHRtcCBjb21w YXQuIEFsbG93IHVzZXJzIHRvIHNldCBiaV9vcCBvciBiaV9ydyAqLwogCXJxLT5jbWRfZmxh Z3MgfD0gYmlvX2RhdGFfZGlyKGJpbyk7CisJcnEtPm9wID0gYmlvLT5iaV9vcDsKIAogCWlm IChiaW9faGFzX2RhdGEoYmlvKSkKIAkJcnEtPm5yX3BoeXNfc2VnbWVudHMgPSBiaW9fcGh5 c19zZWdtZW50cyhxLCBiaW8pOwpAQCAtMzA1NCw2ICszMDYxLDcgQEAgRVhQT1JUX1NZTUJP TF9HUEwoYmxrX3JxX3VucHJlcF9jbG9uZSk7CiBzdGF0aWMgdm9pZCBfX2Jsa19ycV9wcmVw X2Nsb25lKHN0cnVjdCByZXF1ZXN0ICpkc3QsIHN0cnVjdCByZXF1ZXN0ICpzcmMpCiB7CiAJ ZHN0LT5jcHUgPSBzcmMtPmNwdTsKKwlkc3QtPm9wID0gc3JjLT5vcDsKIAlkc3QtPmNtZF9m bGFncyB8PSAoc3JjLT5jbWRfZmxhZ3MgJiBSRVFfQ0xPTkVfTUFTSykgfCBSRVFfTk9NRVJH RTsKIAlkc3QtPmNtZF90eXBlID0gc3JjLT5jbWRfdHlwZTsKIAlkc3QtPl9fc2VjdG9yID0g YmxrX3JxX3BvcyhzcmMpOwpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWZsdXNoLmMgYi9ibG9j ay9ibGstZmx1c2guYwppbmRleCAzODZmNTdhLi5iNGViMGU4IDEwMDY0NAotLS0gYS9ibG9j ay9ibGstZmx1c2guYworKysgYi9ibG9jay9ibGstZmx1c2guYwpAQCAtMzMwLDYgKzMzMCw3 IEBAIHN0YXRpYyBib29sIGJsa19raWNrX2ZsdXNoKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmxrX2ZsdXNoX3F1ZXVlICpmcSkKIAogCWZsdXNoX3JxLT5jbWRfdHlwZSA9 IFJFUV9UWVBFX0ZTOwogCWZsdXNoX3JxLT5jbWRfZmxhZ3MgPSBXUklURV9GTFVTSCB8IFJF UV9GTFVTSF9TRVE7CisJZmx1c2hfcnEtPm9wID0gUkVRX09QX1dSSVRFOwogCWZsdXNoX3Jx LT5ycV9kaXNrID0gZmlyc3RfcnEtPnJxX2Rpc2s7CiAJZmx1c2hfcnEtPmVuZF9pbyA9IGZs dXNoX2VuZF9pbzsKIApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9i bGstbWVyZ2UuYwppbmRleCA1ZWQ3Yjk2Li5iY2IxNGVhIDEwMDY0NAotLS0gYS9ibG9jay9i bGstbWVyZ2UuYworKysgYi9ibG9jay9ibGstbWVyZ2UuYwpAQCAtNjI1LDcgKzYyNSw4IEBA IHN0YXRpYyBpbnQgYXR0ZW1wdF9tZXJnZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3Ry dWN0IHJlcXVlc3QgKnJlcSwKIAlpZiAoIXJxX21lcmdlYWJsZShyZXEpIHx8ICFycV9tZXJn ZWFibGUobmV4dCkpCiAJCXJldHVybiAwOwogCi0JaWYgKCFibGtfY2hlY2tfbWVyZ2VfZmxh Z3MocmVxLT5jbWRfZmxhZ3MsIG5leHQtPmNtZF9mbGFncykpCisJaWYgKCFibGtfY2hlY2tf bWVyZ2VfZmxhZ3MocmVxLT5jbWRfZmxhZ3MsIHJlcS0+b3AsIG5leHQtPmNtZF9mbGFncywK KwkJCQkgICBuZXh0LT5vcCkpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTYzOSw3ICs2NDAs NyBAQCBzdGF0aWMgaW50IGF0dGVtcHRfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEs IHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAJICAgIHx8IHJlcV9ub19zcGVjaWFsX21lcmdlKG5l eHQpKQogCQlyZXR1cm4gMDsKIAotCWlmIChyZXEtPmNtZF9mbGFncyAmIFJFUV9XUklURV9T QU1FICYmCisJaWYgKHJlcS0+b3AgPT0gUkVRX09QX1dSSVRFX1NBTUUgJiYKIAkgICAgIWJs a193cml0ZV9zYW1lX21lcmdlYWJsZShyZXEtPmJpbywgbmV4dC0+YmlvKSkKIAkJcmV0dXJu IDA7CiAKQEAgLTcyNyw3ICs3MjgsOCBAQCBib29sIGJsa19ycV9tZXJnZV9vayhzdHJ1Y3Qg cmVxdWVzdCAqcnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoIXJxX21lcmdlYWJsZShycSkg fHwgIWJpb19tZXJnZWFibGUoYmlvKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKCFibGtf Y2hlY2tfbWVyZ2VfZmxhZ3MocnEtPmNtZF9mbGFncywgYmlvLT5iaV9ydykpCisJaWYgKCFi bGtfY2hlY2tfbWVyZ2VfZmxhZ3MocnEtPmNtZF9mbGFncywgcnEtPm9wLCBiaW8tPmJpX3J3 LAorCQkJCSAgIGJpby0+Ymlfb3ApKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBkaWZmZXJl bnQgZGF0YSBkaXJlY3Rpb24gb3IgYWxyZWFkeSBzdGFydGVkLCBkb24ndCBtZXJnZSAqLwpA QCAtNzQzLDcgKzc0NSw3IEBAIGJvb2wgYmxrX3JxX21lcmdlX29rKHN0cnVjdCByZXF1ZXN0 ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBtdXN0IGJl IHVzaW5nIHRoZSBzYW1lIGJ1ZmZlciAqLwotCWlmIChycS0+Y21kX2ZsYWdzICYgUkVRX1dS SVRFX1NBTUUgJiYKKwlpZiAocnEtPm9wID09IFJFUV9PUF9XUklURV9TQU1FICYmCiAJICAg ICFibGtfd3JpdGVfc2FtZV9tZXJnZWFibGUocnEtPmJpbywgYmlvKSkKIAkJcmV0dXJuIGZh bHNlOwogCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEuYyBiL2Jsb2NrL2Jsay1tcS5jCmlu ZGV4IDY4ODlkNzEuLjQ2YWE0NTEgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tcS5jCisrKyBi L2Jsb2NrL2Jsay1tcS5jCkBAIC0xNTksMTYgKzE1OSwxOSBAQCBib29sIGJsa19tcV9jYW5f cXVldWUoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgpCiBFWFBPUlRfU1lNQk9MKGJsa19t cV9jYW5fcXVldWUpOwogCiBzdGF0aWMgdm9pZCBibGtfbXFfcnFfY3R4X2luaXQoc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBibGtfbXFfY3R4ICpjdHgsCi0JCQkgICAgICAg c3RydWN0IHJlcXVlc3QgKnJxLCB1bnNpZ25lZCBpbnQgcndfZmxhZ3MpCisJCQkgICAgICAg c3RydWN0IHJlcXVlc3QgKnJxLCBpbnQgb3AsCisJCQkgICAgICAgdW5zaWduZWQgaW50IG9w X2ZsYWdzKQogewogCWlmIChibGtfcXVldWVfaW9fc3RhdChxKSkKLQkJcndfZmxhZ3MgfD0g UkVRX0lPX1NUQVQ7CisJCW9wX2ZsYWdzIHw9IFJFUV9JT19TVEFUOwogCiAJSU5JVF9MSVNU X0hFQUQoJnJxLT5xdWV1ZWxpc3QpOwogCS8qIGNzZC9yZXF1ZXVlX3dvcmsvZmlmb190aW1l IGlzIGluaXRpYWxpemVkIGJlZm9yZSB1c2UgKi8KIAlycS0+cSA9IHE7CiAJcnEtPm1xX2N0 eCA9IGN0eDsKLQlycS0+Y21kX2ZsYWdzIHw9IHJ3X2ZsYWdzOworCXJxLT5vcCA9IG9wOwor CS8qIHRtcCBjb21wYXQgLSBhbGxvdyB1c2VycyB0byBjaGVjayBlaXRoZXIgb25lIGZvciB0 aGUgb3AgKi8KKwlycS0+Y21kX2ZsYWdzIHw9IG9wIHwgb3BfZmxhZ3M7CiAJLyogZG8gbm90 IHRvdWNoIGF0b21pYyBmbGFncywgaXQgbmVlZHMgYXRvbWljIG9wcyBhZ2FpbnN0IHRoZSB0 aW1lciAqLwogCXJxLT5jcHUgPSAtMTsKIAlJTklUX0hMSVNUX05PREUoJnJxLT5oYXNoKTsK QEAgLTIwMywxMSArMjA2LDExIEBAIHN0YXRpYyB2b2lkIGJsa19tcV9ycV9jdHhfaW5pdChz dHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJsa19tcV9jdHggKmN0eCwKIAlycS0+ ZW5kX2lvX2RhdGEgPSBOVUxMOwogCXJxLT5uZXh0X3JxID0gTlVMTDsKIAotCWN0eC0+cnFf ZGlzcGF0Y2hlZFtyd19pc19zeW5jKHJ3X2ZsYWdzKV0rKzsKKwljdHgtPnJxX2Rpc3BhdGNo ZWRbcndfaXNfc3luYyhvcCwgb3BfZmxhZ3MpXSsrOwogfQogCiBzdGF0aWMgc3RydWN0IHJl cXVlc3QgKgotX19ibGtfbXFfYWxsb2NfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX2FsbG9jX2Rh dGEgKmRhdGEsIGludCBydykKK19fYmxrX21xX2FsbG9jX3JlcXVlc3Qoc3RydWN0IGJsa19t cV9hbGxvY19kYXRhICpkYXRhLCBpbnQgb3AsIGludCBvcF9mbGFncykKIHsKIAlzdHJ1Y3Qg cmVxdWVzdCAqcnE7CiAJdW5zaWduZWQgaW50IHRhZzsKQEAgLTIyMiw3ICsyMjUsNyBAQCBf X2Jsa19tcV9hbGxvY19yZXF1ZXN0KHN0cnVjdCBibGtfbXFfYWxsb2NfZGF0YSAqZGF0YSwg aW50IHJ3KQogCQl9CiAKIAkJcnEtPnRhZyA9IHRhZzsKLQkJYmxrX21xX3JxX2N0eF9pbml0 KGRhdGEtPnEsIGRhdGEtPmN0eCwgcnEsIHJ3KTsKKwkJYmxrX21xX3JxX2N0eF9pbml0KGRh dGEtPnEsIGRhdGEtPmN0eCwgcnEsIG9wLCBvcF9mbGFncyk7CiAJCXJldHVybiBycTsKIAl9 CiAKQEAgLTI0Niw3ICsyNDksNyBAQCBzdHJ1Y3QgcmVxdWVzdCAqYmxrX21xX2FsbG9jX3Jl cXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIGludCBydywKIAloY3R4ID0gcS0+bXFf b3BzLT5tYXBfcXVldWUocSwgY3R4LT5jcHUpOwogCWJsa19tcV9zZXRfYWxsb2NfZGF0YSgm YWxsb2NfZGF0YSwgcSwgZmxhZ3MsIGN0eCwgaGN0eCk7CiAKLQlycSA9IF9fYmxrX21xX2Fs bG9jX3JlcXVlc3QoJmFsbG9jX2RhdGEsIHJ3KTsKKwlycSA9IF9fYmxrX21xX2FsbG9jX3Jl cXVlc3QoJmFsbG9jX2RhdGEsIHJ3LCAwKTsKIAlpZiAoIXJxICYmICEoZmxhZ3MgJiBCTEtf TVFfUkVRX05PV0FJVCkpIHsKIAkJX19ibGtfbXFfcnVuX2h3X3F1ZXVlKGhjdHgpOwogCQli bGtfbXFfcHV0X2N0eChjdHgpOwpAQCAtMjU0LDcgKzI1Nyw3IEBAIHN0cnVjdCByZXF1ZXN0 ICpibGtfbXFfYWxsb2NfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50IHJ3 LAogCQljdHggPSBibGtfbXFfZ2V0X2N0eChxKTsKIAkJaGN0eCA9IHEtPm1xX29wcy0+bWFw X3F1ZXVlKHEsIGN0eC0+Y3B1KTsKIAkJYmxrX21xX3NldF9hbGxvY19kYXRhKCZhbGxvY19k YXRhLCBxLCBmbGFncywgY3R4LCBoY3R4KTsKLQkJcnEgPSAgX19ibGtfbXFfYWxsb2NfcmVx dWVzdCgmYWxsb2NfZGF0YSwgcncpOworCQlycSA9ICBfX2Jsa19tcV9hbGxvY19yZXF1ZXN0 KCZhbGxvY19kYXRhLCBydywgMCk7CiAJCWN0eCA9IGFsbG9jX2RhdGEuY3R4OwogCX0KIAli bGtfbXFfcHV0X2N0eChjdHgpOwpAQCAtMTE2MiwyOCArMTE2NSwyOSBAQCBzdGF0aWMgc3Ry dWN0IHJlcXVlc3QgKmJsa19tcV9tYXBfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSwKIAlzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eDsKIAlzdHJ1Y3QgYmxrX21xX2N0eCAq Y3R4OwogCXN0cnVjdCByZXF1ZXN0ICpycTsKLQlpbnQgcncgPSBiaW9fZGF0YV9kaXIoYmlv KTsKKwlpbnQgb3AgPSBiaW9fZGF0YV9kaXIoYmlvKTsKKwlpbnQgb3BfZmxhZ3MgPSAwOwog CXN0cnVjdCBibGtfbXFfYWxsb2NfZGF0YSBhbGxvY19kYXRhOwogCiAJYmxrX3F1ZXVlX2Vu dGVyX2xpdmUocSk7CiAJY3R4ID0gYmxrX21xX2dldF9jdHgocSk7CiAJaGN0eCA9IHEtPm1x X29wcy0+bWFwX3F1ZXVlKHEsIGN0eC0+Y3B1KTsKIAotCWlmIChyd19pc19zeW5jKGJpby0+ YmlfcncpKQotCQlydyB8PSBSRVFfU1lOQzsKKwlpZiAocndfaXNfc3luYyhiaW8tPmJpX29w LCBiaW8tPmJpX3J3KSkKKwkJb3BfZmxhZ3MgfD0gUkVRX1NZTkM7CiAKLQl0cmFjZV9ibG9j a19nZXRycShxLCBiaW8sIHJ3KTsKKwl0cmFjZV9ibG9ja19nZXRycShxLCBiaW8sIG9wKTsK IAlibGtfbXFfc2V0X2FsbG9jX2RhdGEoJmFsbG9jX2RhdGEsIHEsIEJMS19NUV9SRVFfTk9X QUlULCBjdHgsIGhjdHgpOwotCXJxID0gX19ibGtfbXFfYWxsb2NfcmVxdWVzdCgmYWxsb2Nf ZGF0YSwgcncpOworCXJxID0gX19ibGtfbXFfYWxsb2NfcmVxdWVzdCgmYWxsb2NfZGF0YSwg b3AsIG9wX2ZsYWdzKTsKIAlpZiAodW5saWtlbHkoIXJxKSkgewogCQlfX2Jsa19tcV9ydW5f aHdfcXVldWUoaGN0eCk7CiAJCWJsa19tcV9wdXRfY3R4KGN0eCk7Ci0JCXRyYWNlX2Jsb2Nr X3NsZWVwcnEocSwgYmlvLCBydyk7CisJCXRyYWNlX2Jsb2NrX3NsZWVwcnEocSwgYmlvLCBv cCk7CiAKIAkJY3R4ID0gYmxrX21xX2dldF9jdHgocSk7CiAJCWhjdHggPSBxLT5tcV9vcHMt Pm1hcF9xdWV1ZShxLCBjdHgtPmNwdSk7CiAJCWJsa19tcV9zZXRfYWxsb2NfZGF0YSgmYWxs b2NfZGF0YSwgcSwgMCwgY3R4LCBoY3R4KTsKLQkJcnEgPSBfX2Jsa19tcV9hbGxvY19yZXF1 ZXN0KCZhbGxvY19kYXRhLCBydyk7CisJCXJxID0gX19ibGtfbXFfYWxsb2NfcmVxdWVzdCgm YWxsb2NfZGF0YSwgb3AsIG9wX2ZsYWdzKTsKIAkJY3R4ID0gYWxsb2NfZGF0YS5jdHg7CiAJ CWhjdHggPSBhbGxvY19kYXRhLmhjdHg7CiAJfQpAQCAtMTIzNyw3ICsxMjQxLDcgQEAgc3Rh dGljIGludCBibGtfbXFfZGlyZWN0X2lzc3VlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJx LCBibGtfcWNfdCAqY29va2llKQogICovCiBzdGF0aWMgYmxrX3FjX3QgYmxrX21xX21ha2Vf cmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogewot CWNvbnN0IGludCBpc19zeW5jID0gcndfaXNfc3luYyhiaW8tPmJpX3J3KTsKKwljb25zdCBp bnQgaXNfc3luYyA9IHJ3X2lzX3N5bmMoYmlvLT5iaV9vcCwgYmlvLT5iaV9ydyk7CiAJY29u c3QgaW50IGlzX2ZsdXNoX2Z1YSA9IGJpby0+YmlfcncgJiAoUkVRX0ZMVVNIIHwgUkVRX0ZV QSk7CiAJc3RydWN0IGJsa19tYXBfY3R4IGRhdGE7CiAJc3RydWN0IHJlcXVlc3QgKnJxOwpA QCAtMTMzNCw3ICsxMzM4LDcgQEAgZG9uZToKICAqLwogc3RhdGljIGJsa19xY190IGJsa19z cV9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJp bykKIHsKLQljb25zdCBpbnQgaXNfc3luYyA9IHJ3X2lzX3N5bmMoYmlvLT5iaV9ydyk7CisJ Y29uc3QgaW50IGlzX3N5bmMgPSByd19pc19zeW5jKGJpby0+Ymlfb3AsIGJpby0+Ymlfcncp OwogCWNvbnN0IGludCBpc19mbHVzaF9mdWEgPSBiaW8tPmJpX3J3ICYgKFJFUV9GTFVTSCB8 IFJFUV9GVUEpOwogCXN0cnVjdCBibGtfcGx1ZyAqcGx1ZzsKIAl1bnNpZ25lZCBpbnQgcmVx dWVzdF9jb3VudCA9IDA7CmRpZmYgLS1naXQgYS9ibG9jay9jZnEtaW9zY2hlZC5jIGIvYmxv Y2svY2ZxLWlvc2NoZWQuYwppbmRleCAxZjkwOTNlLi5kMzAwYWExIDEwMDY0NAotLS0gYS9i bG9jay9jZnEtaW9zY2hlZC5jCisrKyBiL2Jsb2NrL2NmcS1pb3NjaGVkLmMKQEAgLTY2MCw5 ICs2NjAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGNmcWdfcHV0KHN0cnVjdCBjZnFfZ3Jv dXAgKmNmcWcpCiB9IHdoaWxlICgwKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2ZxZ19zdGF0 c191cGRhdGVfaW9fYWRkKHN0cnVjdCBjZnFfZ3JvdXAgKmNmcWcsCi0JCQkJCSAgICBzdHJ1 Y3QgY2ZxX2dyb3VwICpjdXJyX2NmcWcsIGludCBydykKKwkJCQkJICAgIHN0cnVjdCBjZnFf Z3JvdXAgKmN1cnJfY2ZxZywgaW50IG9wLAorCQkJCQkgICAgaW50IG9wX2ZsYWdzKQogewot CWJsa2dfcndzdGF0X2FkZCgmY2ZxZy0+c3RhdHMucXVldWVkLCBydywgMSk7CisJYmxrZ19y d3N0YXRfYWRkKCZjZnFnLT5zdGF0cy5xdWV1ZWQsIG9wLCBvcF9mbGFncywgMSk7CiAJY2Zx Z19zdGF0c19lbmRfZW1wdHlfdGltZSgmY2ZxZy0+c3RhdHMpOwogCWNmcWdfc3RhdHNfc2V0 X3N0YXJ0X2dyb3VwX3dhaXRfdGltZShjZnFnLCBjdXJyX2NmcWcpOwogfQpAQCAtNjc2LDI2 ICs2NzcsMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX3RpbWVz bGljZV91c2VkKHN0cnVjdCBjZnFfZ3JvdXAgKmNmcWcsCiAjZW5kaWYKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lvX3JlbW92ZShzdHJ1Y3QgY2ZxX2dy b3VwICpjZnFnLCBpbnQgcncpCitzdGF0aWMgaW5saW5lIHZvaWQgY2ZxZ19zdGF0c191cGRh dGVfaW9fcmVtb3ZlKHN0cnVjdCBjZnFfZ3JvdXAgKmNmcWcsIGludCBvcCwKKwkJCQkJICAg ICAgIGludCBvcF9mbGFncykKIHsKLQlibGtnX3J3c3RhdF9hZGQoJmNmcWctPnN0YXRzLnF1 ZXVlZCwgcncsIC0xKTsKKwlibGtnX3J3c3RhdF9hZGQoJmNmcWctPnN0YXRzLnF1ZXVlZCwg b3AsIG9wX2ZsYWdzLCAtMSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBjZnFnX3N0YXRz X3VwZGF0ZV9pb19tZXJnZWQoc3RydWN0IGNmcV9ncm91cCAqY2ZxZywgaW50IHJ3KQorc3Rh dGljIGlubGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lvX21lcmdlZChzdHJ1Y3QgY2Zx X2dyb3VwICpjZnFnLCBpbnQgb3AsCisJCQkJCSAgICAgICBpbnQgb3BfZmxhZ3MpCiB7Ci0J YmxrZ19yd3N0YXRfYWRkKCZjZnFnLT5zdGF0cy5tZXJnZWQsIHJ3LCAxKTsKKwlibGtnX3J3 c3RhdF9hZGQoJmNmcWctPnN0YXRzLm1lcmdlZCwgb3AsIG9wX2ZsYWdzLCAxKTsKIH0KIAog c3RhdGljIGlubGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2NvbXBsZXRpb24oc3RydWN0 IGNmcV9ncm91cCAqY2ZxZywKLQkJCXVpbnQ2NF90IHN0YXJ0X3RpbWUsIHVpbnQ2NF90IGlv X3N0YXJ0X3RpbWUsIGludCBydykKKwkJCXVpbnQ2NF90IHN0YXJ0X3RpbWUsIHVpbnQ2NF90 IGlvX3N0YXJ0X3RpbWUsIGludCBvcCwKKwkJCWludCBvcF9mbGFncykKIHsKIAlzdHJ1Y3Qg Y2ZxZ19zdGF0cyAqc3RhdHMgPSAmY2ZxZy0+c3RhdHM7CiAJdW5zaWduZWQgbG9uZyBsb25n IG5vdyA9IHNjaGVkX2Nsb2NrKCk7CiAKIAlpZiAodGltZV9hZnRlcjY0KG5vdywgaW9fc3Rh cnRfdGltZSkpCi0JCWJsa2dfcndzdGF0X2FkZCgmc3RhdHMtPnNlcnZpY2VfdGltZSwgcncs IG5vdyAtIGlvX3N0YXJ0X3RpbWUpOworCQlibGtnX3J3c3RhdF9hZGQoJnN0YXRzLT5zZXJ2 aWNlX3RpbWUsIG9wLCBvcF9mbGFncywKKwkJCQlub3cgLSBpb19zdGFydF90aW1lKTsKIAlp ZiAodGltZV9hZnRlcjY0KGlvX3N0YXJ0X3RpbWUsIHN0YXJ0X3RpbWUpKQotCQlibGtnX3J3 c3RhdF9hZGQoJnN0YXRzLT53YWl0X3RpbWUsIHJ3LAorCQlibGtnX3J3c3RhdF9hZGQoJnN0 YXRzLT53YWl0X3RpbWUsIG9wLCBvcF9mbGFncywKIAkJCQlpb19zdGFydF90aW1lIC0gc3Rh cnRfdGltZSk7CiB9CiAKQEAgLTc2OSwxMyArNzc0LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBjZnFnX3B1dChzdHJ1Y3QgY2ZxX2dyb3VwICpjZnFnKSB7IH0KICNkZWZpbmUgY2ZxX2xv Z19jZnFnKGNmcWQsIGNmcWcsIGZtdCwgYXJncy4uLikJCWRvIHt9IHdoaWxlICgwKQogCiBz dGF0aWMgaW5saW5lIHZvaWQgY2ZxZ19zdGF0c191cGRhdGVfaW9fYWRkKHN0cnVjdCBjZnFf Z3JvdXAgKmNmcWcsCi0JCQlzdHJ1Y3QgY2ZxX2dyb3VwICpjdXJyX2NmcWcsIGludCBydykg eyB9CisJCQlzdHJ1Y3QgY2ZxX2dyb3VwICpjdXJyX2NmcWcsIGludCBvcCwgaW50IG9wX2Zs YWdzKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBjZnFnX3N0YXRzX3VwZGF0ZV90aW1lc2xp Y2VfdXNlZChzdHJ1Y3QgY2ZxX2dyb3VwICpjZnFnLAogCQkJdW5zaWduZWQgbG9uZyB0aW1l LCB1bnNpZ25lZCBsb25nIHVuYWNjb3VudGVkX3RpbWUpIHsgfQotc3RhdGljIGlubGluZSB2 b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lvX3JlbW92ZShzdHJ1Y3QgY2ZxX2dyb3VwICpjZnFn LCBpbnQgcncpIHsgfQotc3RhdGljIGlubGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lv X21lcmdlZChzdHJ1Y3QgY2ZxX2dyb3VwICpjZnFnLCBpbnQgcncpIHsgfQorc3RhdGljIGlu bGluZSB2b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lvX3JlbW92ZShzdHJ1Y3QgY2ZxX2dyb3Vw ICpjZnFnLCBpbnQgb3AsCisJCQlpbnQgb3BfZmxhZ3MpIHsgfQorc3RhdGljIGlubGluZSB2 b2lkIGNmcWdfc3RhdHNfdXBkYXRlX2lvX21lcmdlZChzdHJ1Y3QgY2ZxX2dyb3VwICpjZnFn LCBpbnQgb3AsCisJCQlpbnQgb3BfZmxhZ3MpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGNm cWdfc3RhdHNfdXBkYXRlX2NvbXBsZXRpb24oc3RydWN0IGNmcV9ncm91cCAqY2ZxZywKLQkJ CXVpbnQ2NF90IHN0YXJ0X3RpbWUsIHVpbnQ2NF90IGlvX3N0YXJ0X3RpbWUsIGludCBydykg eyB9CisJCQl1aW50NjRfdCBzdGFydF90aW1lLCB1aW50NjRfdCBpb19zdGFydF90aW1lLCBp bnQgb3AsCisJCQlpbnQgb3BfZmxhZ3MpIHsgfQogCiAjZW5kaWYJLyogQ09ORklHX0NGUV9H Uk9VUF9JT1NDSEVEICovCiAKQEAgLTI0NDksMTAgKzI0NTcsMTAgQEAgc3RhdGljIHZvaWQg Y2ZxX3JlcG9zaXRpb25fcnFfcmIoc3RydWN0IGNmcV9xdWV1ZSAqY2ZxcSwgc3RydWN0IHJl cXVlc3QgKnJxKQogewogCWVsdl9yYl9kZWwoJmNmcXEtPnNvcnRfbGlzdCwgcnEpOwogCWNm cXEtPnF1ZXVlZFtycV9pc19zeW5jKHJxKV0tLTsKLQljZnFnX3N0YXRzX3VwZGF0ZV9pb19y ZW1vdmUoUlFfQ0ZRRyhycSksIHJxLT5jbWRfZmxhZ3MpOworCWNmcWdfc3RhdHNfdXBkYXRl X2lvX3JlbW92ZShSUV9DRlFHKHJxKSwgcnEtPm9wLCBycS0+Y21kX2ZsYWdzKTsKIAljZnFf YWRkX3JxX3JiKHJxKTsKIAljZnFnX3N0YXRzX3VwZGF0ZV9pb19hZGQoUlFfQ0ZRRyhycSks IGNmcXEtPmNmcWQtPnNlcnZpbmdfZ3JvdXAsCi0JCQkJIHJxLT5jbWRfZmxhZ3MpOworCQkJ CSBycS0+b3AsIHJxLT5jbWRfZmxhZ3MpOwogfQogCiBzdGF0aWMgc3RydWN0IHJlcXVlc3Qg KgpAQCAtMjUwNSw3ICsyNTEzLDcgQEAgc3RhdGljIHZvaWQgY2ZxX3JlbW92ZV9yZXF1ZXN0 KHN0cnVjdCByZXF1ZXN0ICpycSkKIAljZnFfZGVsX3JxX3JiKHJxKTsKIAogCWNmcXEtPmNm cWQtPnJxX3F1ZXVlZC0tOwotCWNmcWdfc3RhdHNfdXBkYXRlX2lvX3JlbW92ZShSUV9DRlFH KHJxKSwgcnEtPmNtZF9mbGFncyk7CisJY2ZxZ19zdGF0c191cGRhdGVfaW9fcmVtb3ZlKFJR X0NGUUcocnEpLCBycS0+b3AsIHJxLT5jbWRfZmxhZ3MpOwogCWlmIChycS0+Y21kX2ZsYWdz ICYgUkVRX1BSSU8pIHsKIAkJV0FSTl9PTighY2ZxcS0+cHJpb19wZW5kaW5nKTsKIAkJY2Zx cS0+cHJpb19wZW5kaW5nLS07CkBAIC0yNTQwLDcgKzI1NDgsNyBAQCBzdGF0aWMgdm9pZCBj ZnFfbWVyZ2VkX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1 ZXN0ICpyZXEsCiBzdGF0aWMgdm9pZCBjZnFfYmlvX21lcmdlZChzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJlcSwKIAkJCQlzdHJ1Y3QgYmlvICpiaW8pCiB7 Ci0JY2ZxZ19zdGF0c191cGRhdGVfaW9fbWVyZ2VkKFJRX0NGUUcocmVxKSwgYmlvLT5iaV9y dyk7CisJY2ZxZ19zdGF0c191cGRhdGVfaW9fbWVyZ2VkKFJRX0NGUUcocmVxKSwgYmlvLT5i aV9vcCwgYmlvLT5iaV9ydyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTYzLDcgKzI1NzEs NyBAQCBjZnFfbWVyZ2VkX3JlcXVlc3RzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1 Y3QgcmVxdWVzdCAqcnEsCiAJaWYgKGNmcXEtPm5leHRfcnEgPT0gbmV4dCkKIAkJY2ZxcS0+ bmV4dF9ycSA9IHJxOwogCWNmcV9yZW1vdmVfcmVxdWVzdChuZXh0KTsKLQljZnFnX3N0YXRz X3VwZGF0ZV9pb19tZXJnZWQoUlFfQ0ZRRyhycSksIG5leHQtPmNtZF9mbGFncyk7CisJY2Zx Z19zdGF0c191cGRhdGVfaW9fbWVyZ2VkKFJRX0NGUUcocnEpLCBuZXh0LT5vcCwgbmV4dC0+ Y21kX2ZsYWdzKTsKIAogCWNmcXEgPSBSUV9DRlFRKG5leHQpOwogCS8qCkBAIC00MDg1LDcg KzQwOTMsNyBAQCBzdGF0aWMgdm9pZCBjZnFfaW5zZXJ0X3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSkKIAlycS0+Zmlmb190aW1lID0gamlm ZmllcyArIGNmcWQtPmNmcV9maWZvX2V4cGlyZVtycV9pc19zeW5jKHJxKV07CiAJbGlzdF9h ZGRfdGFpbCgmcnEtPnF1ZXVlbGlzdCwgJmNmcXEtPmZpZm8pOwogCWNmcV9hZGRfcnFfcmIo cnEpOwotCWNmcWdfc3RhdHNfdXBkYXRlX2lvX2FkZChSUV9DRlFHKHJxKSwgY2ZxZC0+c2Vy dmluZ19ncm91cCwKKwljZnFnX3N0YXRzX3VwZGF0ZV9pb19hZGQoUlFfQ0ZRRyhycSksIGNm cWQtPnNlcnZpbmdfZ3JvdXAsIHJxLT5vcCwKIAkJCQkgcnEtPmNtZF9mbGFncyk7CiAJY2Zx X3JxX2VucXVldWVkKGNmcWQsIGNmcXEsIHJxKTsKIH0KQEAgLTQxODMsNyArNDE5MSw4IEBA IHN0YXRpYyB2b2lkIGNmcV9jb21wbGV0ZWRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxKQogCWNmcXEtPmRpc3BhdGNoZWQtLTsKIAkoUlFf Q0ZRRyhycSkpLT5kaXNwYXRjaGVkLS07CiAJY2ZxZ19zdGF0c191cGRhdGVfY29tcGxldGlv bihjZnFxLT5jZnFnLCBycV9zdGFydF90aW1lX25zKHJxKSwKLQkJCQkgICAgIHJxX2lvX3N0 YXJ0X3RpbWVfbnMocnEpLCBycS0+Y21kX2ZsYWdzKTsKKwkJCQkgICAgIHJxX2lvX3N0YXJ0 X3RpbWVfbnMocnEpLCBycS0+b3AsCisJCQkJICAgICBycS0+Y21kX2ZsYWdzKTsKIAogCWNm cWQtPnJxX2luX2ZsaWdodFtjZnFfY2ZxcV9zeW5jKGNmcXEpXS0tOwogCkBAIC00MjYyLDcg KzQyNzEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX2NmcV9tYXlfcXVldWUoc3RydWN0IGNm cV9xdWV1ZSAqY2ZxcSkKIAlyZXR1cm4gRUxWX01RVUVVRV9NQVk7CiB9CiAKLXN0YXRpYyBp bnQgY2ZxX21heV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50IHJ3KQorc3Rh dGljIGludCBjZnFfbWF5X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBpbnQgb3As IGludCBvcF9mbGFncykKIHsKIAlzdHJ1Y3QgY2ZxX2RhdGEgKmNmcWQgPSBxLT5lbGV2YXRv ci0+ZWxldmF0b3JfZGF0YTsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7 CkBAIC00Mjc5LDcgKzQyODgsNyBAQCBzdGF0aWMgaW50IGNmcV9tYXlfcXVldWUoc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEsIGludCBydykKIAlpZiAoIWNpYykKIAkJcmV0dXJuIEVMVl9N UVVFVUVfTUFZOwogCi0JY2ZxcSA9IGNpY190b19jZnFxKGNpYywgcndfaXNfc3luYyhydykp OworCWNmcXEgPSBjaWNfdG9fY2ZxcShjaWMsIHJ3X2lzX3N5bmMob3AsIG9wX2ZsYWdzKSk7 CiAJaWYgKGNmcXEpIHsKIAkJY2ZxX2luaXRfcHJpb19kYXRhKGNmcXEsIGNpYyk7CiAKZGlm ZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jCmluZGV4IGMz NTU1YzkuLmY2Mjc5Y2EgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2VsZXZhdG9yLmMKKysrIGIvYmxv Y2svZWxldmF0b3IuYwpAQCAtMzY2LDggKzM2Niw4IEBAIHZvaWQgZWx2X2Rpc3BhdGNoX3Nv cnQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSkKIAlsaXN0 X2Zvcl9lYWNoX3ByZXYoZW50cnksICZxLT5xdWV1ZV9oZWFkKSB7CiAJCXN0cnVjdCByZXF1 ZXN0ICpwb3MgPSBsaXN0X2VudHJ5X3JxKGVudHJ5KTsKIAotCQlpZiAoKHJxLT5jbWRfZmxh Z3MgJiBSRVFfRElTQ0FSRCkgIT0KLQkJICAgIChwb3MtPmNtZF9mbGFncyAmIFJFUV9ESVND QVJEKSkKKwkJaWYgKChycS0+b3AgPT0gUkVRX09QX0RJU0NBUkQpICE9CisJCSAgICAocG9z LT5vcCA9PSBSRVFfT1BfRElTQ0FSRCkpCiAJCQlicmVhazsKIAkJaWYgKHJxX2RhdGFfZGly KHJxKSAhPSBycV9kYXRhX2Rpcihwb3MpKQogCQkJYnJlYWs7CkBAIC03MTcsMTIgKzcxNywx MiBAQCB2b2lkIGVsdl9wdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3Ry dWN0IHJlcXVlc3QgKnJxKQogCQllLT50eXBlLT5vcHMuZWxldmF0b3JfcHV0X3JlcV9mbihy cSk7CiB9CiAKLWludCBlbHZfbWF5X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBp bnQgcncpCitpbnQgZWx2X21heV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50 IG9wLCBpbnQgb3BfZmxhZ3MpCiB7CiAJc3RydWN0IGVsZXZhdG9yX3F1ZXVlICplID0gcS0+ ZWxldmF0b3I7CiAKIAlpZiAoZS0+dHlwZS0+b3BzLmVsZXZhdG9yX21heV9xdWV1ZV9mbikK LQkJcmV0dXJuIGUtPnR5cGUtPm9wcy5lbGV2YXRvcl9tYXlfcXVldWVfZm4ocSwgcncpOwor CQlyZXR1cm4gZS0+dHlwZS0+b3BzLmVsZXZhdG9yX21heV9xdWV1ZV9mbihxLCBvcCwgb3Bf ZmxhZ3MpOwogCiAJcmV0dXJuIEVMVl9NUVVFVUVfTUFZOwogfQpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9ibGstY2dyb3VwLmggYi9pbmNsdWRlL2xpbnV4L2Jsay1jZ3JvdXAuaApp bmRleCBjMDJlNjY5Li45MDcxZmViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsay1j Z3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jsay1jZ3JvdXAuaApAQCAtNTkwLDI1ICs1 OTAsMjYgQEAgc3RhdGljIGlubGluZSB2b2lkIGJsa2dfcndzdGF0X2V4aXQoc3RydWN0IGJs a2dfcndzdGF0ICpyd3N0YXQpCiAvKioKICAqIGJsa2dfcndzdGF0X2FkZCAtIGFkZCBhIHZh bHVlIHRvIGEgYmxrZ19yd3N0YXQKICAqIEByd3N0YXQ6IHRhcmdldCBibGtnX3J3c3RhdAot ICogQHJ3OiBtYXNrIG9mIFJFUV97V1JJVEV8U1lOQ30KKyAqIEBvcDogUkVRX09QCisgKiBA b3BfZmxhZ3M6IHJxX2ZsYWdfYml0cwogICogQHZhbDogdmFsdWUgdG8gYWRkCiAgKgogICog QWRkIEB2YWwgdG8gQHJ3c3RhdC4gIFRoZSBjb3VudGVycyBhcmUgY2hvc2VuIGFjY29yZGlu ZyB0byBAcncuICBUaGUKICAqIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3Igc3luY2hyb25p emluZyBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQg YmxrZ19yd3N0YXRfYWRkKHN0cnVjdCBibGtnX3J3c3RhdCAqcndzdGF0LAotCQkJCSAgIGlu dCBydywgdWludDY0X3QgdmFsKQorCQkJCSAgIGludCBvcCwgaW50IG9wX2ZsYWdzLCB1aW50 NjRfdCB2YWwpCiB7CiAJc3RydWN0IHBlcmNwdV9jb3VudGVyICpjbnQ7CiAKLQlpZiAocncg JiBSRVFfV1JJVEUpCisJaWYgKG9wX2lzX3dyaXRlKG9wKSkKIAkJY250ID0gJnJ3c3RhdC0+ Y3B1X2NudFtCTEtHX1JXU1RBVF9XUklURV07CiAJZWxzZQogCQljbnQgPSAmcndzdGF0LT5j cHVfY250W0JMS0dfUldTVEFUX1JFQURdOwogCiAJX19wZXJjcHVfY291bnRlcl9hZGQoY250 LCB2YWwsIEJMS0dfU1RBVF9DUFVfQkFUQ0gpOwogCi0JaWYgKHJ3ICYgUkVRX1NZTkMpCisJ aWYgKG9wX2ZsYWdzICYgUkVRX1NZTkMpCiAJCWNudCA9ICZyd3N0YXQtPmNwdV9jbnRbQkxL R19SV1NUQVRfU1lOQ107CiAJZWxzZQogCQljbnQgPSAmcndzdGF0LT5jcHVfY250W0JMS0df UldTVEFUX0FTWU5DXTsKQEAgLTcxMyw5ICs3MTQsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg YmxrY2dfYmlvX2lzc3VlX2NoZWNrKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAogCiAJaWYg KCF0aHJvdGwpIHsKIAkJYmxrZyA9IGJsa2cgPzogcS0+cm9vdF9ibGtnOwotCQlibGtnX3J3 c3RhdF9hZGQoJmJsa2ctPnN0YXRfYnl0ZXMsIGJpby0+YmlfcncsCisJCWJsa2dfcndzdGF0 X2FkZCgmYmxrZy0+c3RhdF9ieXRlcywgYmlvLT5iaV9vcCwgYmlvLT5iaV9ydywKIAkJCQli aW8tPmJpX2l0ZXIuYmlfc2l6ZSk7Ci0JCWJsa2dfcndzdGF0X2FkZCgmYmxrZy0+c3RhdF9p b3MsIGJpby0+YmlfcncsIDEpOworCQlibGtnX3J3c3RhdF9hZGQoJmJsa2ctPnN0YXRfaW9z LCBiaW8tPmJpX29wLCBiaW8tPmJpX3J3LCAxKTsKIAl9CiAKIAlyY3VfcmVhZF91bmxvY2so KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmxrZGV2LmggYi9pbmNsdWRlL2xpbnV4 L2Jsa2Rldi5oCmluZGV4IDZmZDM2ZjguLjg1OGYxZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvYmxrZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9ibGtkZXYuaApAQCAtNTkzLDcg KzU5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZV9mbGFnX2NsZWFyKHVuc2lnbmVk IGludCBmbGFnLCBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSkKIAogI2RlZmluZSBsaXN0X2Vu dHJ5X3JxKHB0cikJbGlzdF9lbnRyeSgocHRyKSwgc3RydWN0IHJlcXVlc3QsIHF1ZXVlbGlz dCkKIAotI2RlZmluZSBycV9kYXRhX2RpcihycSkJCSgoaW50KSgocnEpLT5jbWRfZmxhZ3Mg JiAxKSkKKyNkZWZpbmUgcnFfZGF0YV9kaXIocnEpCQkob3BfaXNfd3JpdGUocnEtPm9wKSA/ IFdSSVRFIDogUkVBRCkKIAogLyoKICAqIERyaXZlciBjYW4gaGFuZGxlIHN0cnVjdCByZXF1 ZXN0LCBpZiBpdCBlaXRoZXIgaGFzIGFuIG9sZCBzdHlsZQpAQCAtNjEyLDE0ICs2MTIsMTQg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYmxrX3F1ZXVlX2NsdXN0ZXIoc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEpCiAvKgogICogV2UgcmVnYXJkIGEgcmVxdWVzdCBhcyBzeW5j LCBpZiBlaXRoZXIgYSByZWFkIG9yIGEgc3luYyB3cml0ZQogICovCi1zdGF0aWMgaW5saW5l IGJvb2wgcndfaXNfc3luYyh1bnNpZ25lZCBpbnQgcndfZmxhZ3MpCitzdGF0aWMgaW5saW5l IGJvb2wgcndfaXNfc3luYyhpbnQgb3AsIHVuc2lnbmVkIGludCByd19mbGFncykKIHsKLQly ZXR1cm4gIShyd19mbGFncyAmIFJFUV9XUklURSkgfHwgKHJ3X2ZsYWdzICYgUkVRX1NZTkMp OworCXJldHVybiBvcCA9PSBSRVFfT1BfUkVBRCB8fCAocndfZmxhZ3MgJiBSRVFfU1lOQyk7 CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBycV9pc19zeW5jKHN0cnVjdCByZXF1ZXN0ICpy cSkKIHsKLQlyZXR1cm4gcndfaXNfc3luYyhycS0+Y21kX2ZsYWdzKTsKKwlyZXR1cm4gcndf aXNfc3luYyhycS0+b3AsIHJxLT5jbWRfZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv b2wgYmxrX3JsX2Z1bGwoc3RydWN0IHJlcXVlc3RfbGlzdCAqcmwsIGJvb2wgc3luYykKQEAg LTY1NCwxNiArNjU0LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBycV9tZXJnZWFibGUoc3Ry dWN0IHJlcXVlc3QgKnJxKQogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGJv b2wgYmxrX2NoZWNrX21lcmdlX2ZsYWdzKHVuc2lnbmVkIGludCBmbGFnczEsCi0JCQkJCSB1 bnNpZ25lZCBpbnQgZmxhZ3MyKQorc3RhdGljIGlubGluZSBib29sIGJsa19jaGVja19tZXJn ZV9mbGFncyh1bnNpZ25lZCBpbnQgZmxhZ3MxLCB1bnNpZ25lZCBpbnQgb3AxLAorCQkJCQkg dW5zaWduZWQgaW50IGZsYWdzMiwgdW5zaWduZWQgaW50IG9wMikKIHsKLQlpZiAoKGZsYWdz MSAmIFJFUV9ESVNDQVJEKSAhPSAoZmxhZ3MyICYgUkVRX0RJU0NBUkQpKQorCWlmICgob3Ax ID09IFJFUV9PUF9ESVNDQVJEKSAhPSAob3AyID09IFJFUV9PUF9ESVNDQVJEKSkKIAkJcmV0 dXJuIGZhbHNlOwogCiAJaWYgKChmbGFnczEgJiBSRVFfU0VDVVJFKSAhPSAoZmxhZ3MyICYg UkVRX1NFQ1VSRSkpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmICgoZmxhZ3MxICYgUkVRX1dS SVRFX1NBTUUpICE9IChmbGFnczIgJiBSRVFfV1JJVEVfU0FNRSkpCisJaWYgKChvcDEgPT0g UkVRX09QX1dSSVRFX1NBTUUpICE9IChvcDIgPT0gUkVRX09QX1dSSVRFX1NBTUUpKQogCQly ZXR1cm4gZmFsc2U7CiAKIAlyZXR1cm4gdHJ1ZTsKQEAgLTg2MSwxMiArODYxLDEyIEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJsa19ycV9jdXJfc2VjdG9ycyhjb25zdCBzdHJ1 Y3QgcmVxdWVzdCAqcnEpCiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGJsa19x dWV1ZV9nZXRfbWF4X3NlY3RvcnMoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCi0JCQkJCQkg ICAgIHVuc2lnbmVkIGludCBjbWRfZmxhZ3MpCisJCQkJCQkgICAgIGludCBvcCkKIHsKLQlp ZiAodW5saWtlbHkoY21kX2ZsYWdzICYgUkVRX0RJU0NBUkQpKQorCWlmICh1bmxpa2VseShv cCA9PSBSRVFfT1BfRElTQ0FSRCkpCiAJCXJldHVybiBtaW4ocS0+bGltaXRzLm1heF9kaXNj YXJkX3NlY3RvcnMsIFVJTlRfTUFYID4+IDkpOwogCi0JaWYgKHVubGlrZWx5KGNtZF9mbGFn cyAmIFJFUV9XUklURV9TQU1FKSkKKwlpZiAodW5saWtlbHkob3AgPT0gUkVRX09QX1dSSVRF X1NBTUUpKQogCQlyZXR1cm4gcS0+bGltaXRzLm1heF93cml0ZV9zYW1lX3NlY3RvcnM7CiAK IAlyZXR1cm4gcS0+bGltaXRzLm1heF9zZWN0b3JzOwpAQCAtODkzLDExICs4OTMsMTEgQEAg c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYmxrX3JxX2dldF9tYXhfc2VjdG9ycyhzdHJ1 Y3QgcmVxdWVzdCAqcnEpCiAJaWYgKHVubGlrZWx5KHJxLT5jbWRfdHlwZSA9PSBSRVFfVFlQ RV9CTE9DS19QQykpCiAJCXJldHVybiBxLT5saW1pdHMubWF4X2h3X3NlY3RvcnM7CiAKLQlp ZiAoIXEtPmxpbWl0cy5jaHVua19zZWN0b3JzIHx8IChycS0+Y21kX2ZsYWdzICYgUkVRX0RJ U0NBUkQpKQotCQlyZXR1cm4gYmxrX3F1ZXVlX2dldF9tYXhfc2VjdG9ycyhxLCBycS0+Y21k X2ZsYWdzKTsKKwlpZiAoIXEtPmxpbWl0cy5jaHVua19zZWN0b3JzIHx8IChycS0+b3AgPT0g UkVRX09QX0RJU0NBUkQpKQorCQlyZXR1cm4gYmxrX3F1ZXVlX2dldF9tYXhfc2VjdG9ycyhx LCBycS0+b3ApOwogCiAJcmV0dXJuIG1pbihibGtfbWF4X3NpemVfb2Zmc2V0KHEsIGJsa19y cV9wb3MocnEpKSwKLQkJCWJsa19xdWV1ZV9nZXRfbWF4X3NlY3RvcnMocSwgcnEtPmNtZF9m bGFncykpOworCQkJYmxrX3F1ZXVlX2dldF9tYXhfc2VjdG9ycyhxLCBycS0+b3ApKTsKIH0K IAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYmxrX3JxX2NvdW50X2Jpb3Moc3RydWN0 IHJlcXVlc3QgKnJxKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9lbGV2YXRvci5oIGIv aW5jbHVkZS9saW51eC9lbGV2YXRvci5oCmluZGV4IDYzOGIzMjQuLjk1M2QyODYgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvZWxldmF0b3IuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Vs ZXZhdG9yLmgKQEAgLTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBpbnQgKGVsZXZhdG9yX2Rpc3Bh dGNoX2ZuKSAoc3RydWN0IHJlcXVlc3RfcXVldWUgKiwgaW50KTsKIHR5cGVkZWYgdm9pZCAo ZWxldmF0b3JfYWRkX3JlcV9mbikgKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICosIHN0cnVjdCBy ZXF1ZXN0ICopOwogdHlwZWRlZiBzdHJ1Y3QgcmVxdWVzdCAqKGVsZXZhdG9yX3JlcXVlc3Rf bGlzdF9mbikgKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICosIHN0cnVjdCByZXF1ZXN0ICopOwog dHlwZWRlZiB2b2lkIChlbGV2YXRvcl9jb21wbGV0ZWRfcmVxX2ZuKSAoc3RydWN0IHJlcXVl c3RfcXVldWUgKiwgc3RydWN0IHJlcXVlc3QgKik7Ci10eXBlZGVmIGludCAoZWxldmF0b3Jf bWF5X3F1ZXVlX2ZuKSAoc3RydWN0IHJlcXVlc3RfcXVldWUgKiwgaW50KTsKK3R5cGVkZWYg aW50IChlbGV2YXRvcl9tYXlfcXVldWVfZm4pIChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqLCBp bnQsIGludCk7CiAKIHR5cGVkZWYgdm9pZCAoZWxldmF0b3JfaW5pdF9pY3FfZm4pIChzdHJ1 Y3QgaW9fY3EgKik7CiB0eXBlZGVmIHZvaWQgKGVsZXZhdG9yX2V4aXRfaWNxX2ZuKSAoc3Ry dWN0IGlvX2NxICopOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGV4dGVybiBzdHJ1Y3QgcmVxdWVz dCAqZWx2X2Zvcm1lcl9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICosIHN0cnVjdCBy ZXF1ZXN0CiBleHRlcm4gc3RydWN0IHJlcXVlc3QgKmVsdl9sYXR0ZXJfcmVxdWVzdChzdHJ1 Y3QgcmVxdWVzdF9xdWV1ZSAqLCBzdHJ1Y3QgcmVxdWVzdCAqKTsKIGV4dGVybiBpbnQgZWx2 X3JlZ2lzdGVyX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKIGV4dGVybiB2b2lk IGVsdl91bnJlZ2lzdGVyX3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKTsKLWV4dGVy biBpbnQgZWx2X21heV9xdWV1ZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqLCBpbnQpOworZXh0 ZXJuIGludCBlbHZfbWF5X3F1ZXVlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICosIGludCwgaW50 KTsKIGV4dGVybiB2b2lkIGVsdl9jb21wbGV0ZWRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqLCBzdHJ1Y3QgcmVxdWVzdCAqKTsKIGV4dGVybiBpbnQgZWx2X3NldF9yZXF1ZXN0 KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJCQkgICBz dHJ1Y3QgYmlvICpiaW8sIGdmcF90IGdmcF9tYXNrKTsKLS0gCjEuOC4zLjEKCgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcmVxLW9wL1JFQURN RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NjQAMDAwMTc1MQAwMDAx NzUxADAwMDAwMDAwNTI0ADEyNjMyNDI1MTIxADAxMTI2MAAgMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG1uYwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAbW5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABQYXRjaGVzIG1hZGUgYWdhaW5zdCBKZW5zJ3MgbGludXgtYmxvY2sg dHJlZToKaHR0cHM6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQvYXhi b2UvbGludXgtYmxvY2suZ2l0LwoKZm9yLW5leHQgYnJhbmNoLiBMYXN0IGNvbW1pdCB3YXM6 Cgpjb21taXQgNGM5Mzc3MmUxNGYwYjIwZjM4NDYyYzM5NTMzNmE2ZjVjOGM3NzI3ZApNZXJn ZTogZTFiOThjMCA4YzBiMzkxCkF1dGhvcjogSmVucyBBeGJvZSA8YXhib2VAZmIuY29tPgpE YXRlOiAgIFdlZCBEZWMgOSAxMDo1NzoyMSAyMDE1IC0wNzAwCgogICAgTWVyZ2UgYnJhbmNo ICdmb3ItNC41L252bWUnIGludG8gZm9yLW5leHQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --------------070407060702040704040304--