From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: [PATCH 2/3] qemu-xen-dir/hw/block/xen_disk: Replace grant map by grant copy. Date: Fri, 27 May 2016 14:53:57 +0200 Message-ID: <1464353638-14435-3-git-send-email-paulinaszubarczyk@gmail.com> References: <1464353638-14435-1-git-send-email-paulinaszubarczyk@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b6HIK-0002YN-9X for xen-devel@lists.xenproject.org; Fri, 27 May 2016 12:55:16 +0000 Received: by mail-lf0-f67.google.com with SMTP id w16so6327453lfd.0 for ; Fri, 27 May 2016 05:55:14 -0700 (PDT) In-Reply-To: <1464353638-14435-1-git-send-email-paulinaszubarczyk@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, roger.pau@citrix.com Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, Paulina Szubarczyk , ian.jackson@eu.citrix.com, P.Gawkowski@ii.pw.edu.pl, anthony.perard@citrix.com List-Id: xen-devel@lists.xenproject.org R3JhbnQgY29weSBvcGVyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHR3byBwaGFzZXMgZGlmZmVyZW50 IGZvcgoncmVhZCcgYW5kICd3cml0ZScgb3BlcmF0aW9uLgoKRm9yIGEgJ3JlYWQnIG9wZXJhdGlv biB0aGUgZmxvdyBpcyBhcyBmb2xsb3c6CjEuIGFsbG9jYXRlIGxvY2FsIGJ1ZmZlcnMgZm9yIGFs bCB0aGUgc2VnbWVudHMgY29udGFpbmVkIGluCiAgIGEgcmVxdWVzdC4KMi4gZmlsbCB0aGUgcmVx dWVzdCBpbyB2ZWN0b3JzIHdpdGggdGhlIGJ1ZmZlcnMnIGFkZHJlc3NlcwozLiBpbnZva2UgcmVh ZCBvcGVyYXRpb24gYnkgcWVtdSBkZXZpY2UKNC4gaW4gdGhlIGNvbXBsZXRpdGlvbiBjYWxsIGdy YW50IGNvcHkKNS4gZnJlZSB0aGUgYnVmZmVycwoKRnVuY3Rpb24gJ2lvcmVxX3JlYWRfaW5pdCcg aW1wbGVtZW50cyAxLiBhbmQgMi4gc3RlcC4gSXQgaXMgY2FsbGVkCmluc3RlYWQgb2YgJ2lvcmVx X21hcCcgaW4gJ2lvcmVxX3J1bmlvX3FlbXVfYWlvJy4gVGhlbiB0aGUgZnVuY3Rpb24KJ2lvcmVx X3J1bmlvX3FlbXVfYWlvJyBjb250aW51ZXMgd2l0aG91dGggY2hhbmdlcyBwZXJmb3JtaW5nIHN0 ZXAgMy4KU3RlcHMgNC4gYW5kIDUuIGFyZSBjYWxsZWQgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9u CidxZW11X2Fpb19jb21wbGV0ZScuIFRoZSBpb3JlcV9yZWFkJyBmdW5jdGlvbiBpcyBpbXBsZW1l bnRlZCBmb3IKc3RlcCA0IHdoaWNoIGNhbGxzIHRoZSBuZXcgZnVuY3Rpb24gJ3hjX2dudHRhYl9j b3B5X2dyYW50JyBwcmVzZW50ZWQKaW4gdGhlIG90aGVyIHBhcnQgb2YgdGhlIHBhdGNoLgoKRm9y IGEgJ3dyaXRlJyBvcGVyYXRpb24gc3RlcHMgNC4gaGFwcGVucyBiZWZvcmUgc3RlcCAyLi4gRmly c3QgZGF0YQphcmUgY29waWVkIGZyb20gY2FsbGluZyBndWVzdCBkb21haW5zIGFuZCB0aGVuIHFl bXUgb3BlcmF0ZXMgb24gdGhlbS4KRm9yIHRoYXQgc3RlcCAnaW9yZXFfd3JpdGUnIGZ1bmN0aW9u IGlzIGFkZGVkLgoKVGhlIGZ1bmN0aW9uIGZvciBncmFudCBtYXAgb3BlcmF0aW9uIGFyZSByZW1v dmVkLgotLS0KIGh3L2Jsb2NrL3hlbl9kaXNrLmMgfCA0MTkgKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3MCBpbnNl cnRpb25zKCspLCAyNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaHcvYmxvY2sveGVuX2Rp c2suYyBiL2h3L2Jsb2NrL3hlbl9kaXNrLmMKaW5kZXggMzdlMTRkMS4uM2U1ZWVmZCAxMDA2NDQK LS0tIGEvaHcvYmxvY2sveGVuX2Rpc2suYworKysgYi9ody9ibG9jay94ZW5fZGlzay5jCkBAIC03 OSwxMyArNzksMTIgQEAgc3RydWN0IGlvcmVxIHsKICAgICBpbnQgICAgICAgICAgICAgICAgIHBv c3RzeW5jOwogICAgIHVpbnQ4X3QgICAgICAgICAgICAgbWFwcGVkOwogCi0gICAgLyogZ3JhbnQg bWFwcGluZyAqLwotICAgIHVpbnQzMl90ICAgICAgICAgICAgZG9taWRzW0JMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVF07CisgICAgLyogZ3JhbnQgY29weSAqLworICAgIHVpbnQxNl90ICAg ICAgICAgICAgZG9taWRzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAgICAgdWlu dDMyX3QgICAgICAgICAgICByZWZzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAg ICAgaW50ICAgICAgICAgICAgICAgICBwcm90OwogICAgIHZvaWQgICAgICAgICAgICAgICAgKnBh Z2VbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKICAgICB2b2lkICAgICAgICAgICAg ICAgICpwYWdlczsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG51bV91bm1hcDsKIAogICAgIC8q IGFpbyBzdGF0dXMgKi8KICAgICBpbnQgICAgICAgICAgICAgICAgIGFpb19pbmZsaWdodDsKQEAg LTEyMywxMyArMTIyLDggQEAgc3RydWN0IFhlbkJsa0RldiB7CiAgICAgaW50ICAgICAgICAgICAg ICAgICByZXF1ZXN0c19pbmZsaWdodDsKICAgICBpbnQgICAgICAgICAgICAgICAgIHJlcXVlc3Rz X2ZpbmlzaGVkOwogCi0gICAgLyogUGVyc2lzdGVudCBncmFudHMgZXh0ZW5zaW9uICovCisgICAg LyogKi8KICAgICBnYm9vbGVhbiAgICAgICAgICAgIGZlYXR1cmVfZGlzY2FyZDsKLSAgICBnYm9v bGVhbiAgICAgICAgICAgIGZlYXR1cmVfcGVyc2lzdGVudDsKLSAgICBHVHJlZSAgICAgICAgICAg ICAgICpwZXJzaXN0ZW50X2dudHM7Ci0gICAgR1NMaXN0ICAgICAgICAgICAgICAqcGVyc2lzdGVu dF9yZWdpb25zOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgcGVyc2lzdGVudF9nbnRfY291bnQ7 Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICBtYXhfZ3JhbnRzOwogCiAgICAgLyogcWVtdSBibG9j ayBkcml2ZXIgKi8KICAgICBEcml2ZUluZm8gICAgICAgICAgICpkaW5mbzsKQEAgLTE2NCw0NiAr MTU4LDYgQEAgc3RhdGljIHZvaWQgaW9yZXFfcmVzZXQoc3RydWN0IGlvcmVxICppb3JlcSkKICAg ICBxZW11X2lvdmVjX3Jlc2V0KCZpb3JlcS0+dik7CiB9CiAKLXN0YXRpYyBnaW50IGludF9jbXAo Z2NvbnN0cG9pbnRlciBhLCBnY29uc3Rwb2ludGVyIGIsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsK LSAgICB1aW50IHVhID0gR1BPSU5URVJfVE9fVUlOVChhKTsKLSAgICB1aW50IHViID0gR1BPSU5U RVJfVE9fVUlOVChiKTsKLSAgICByZXR1cm4gKHVhID4gdWIpIC0gKHVhIDwgdWIpOwotfQotCi1z dGF0aWMgdm9pZCBkZXN0cm95X2dyYW50KGdwb2ludGVyIHBnbnQpCi17Ci0gICAgUGVyc2lzdGVu dEdyYW50ICpncmFudCA9IHBnbnQ7Ci0gICAgWGVuR250dGFiIGdudCA9IGdyYW50LT5ibGtkZXYt PnhlbmRldi5nbnR0YWJkZXY7Ci0KLSAgICBpZiAoeGNfZ250dGFiX211bm1hcChnbnQsIGdyYW50 LT5wYWdlLCAxKSAhPSAwKSB7Ci0gICAgICAgIHhlbl9iZV9wcmludGYoJmdyYW50LT5ibGtkZXYt PnhlbmRldiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAieGNfZ250dGFiX211bm1hcCBmYWls ZWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAg fQotICAgIGdyYW50LT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50LS07Ci0gICAgeGVuX2Jl X3ByaW50ZigmZ3JhbnQtPmJsa2Rldi0+eGVuZGV2LCAzLAotICAgICAgICAgICAgICAgICAgInVu bWFwcGVkIGdyYW50ICVwXG4iLCBncmFudC0+cGFnZSk7Ci0gICAgZ19mcmVlKGdyYW50KTsKLX0K LQotc3RhdGljIHZvaWQgcmVtb3ZlX3BlcnNpc3RlbnRfcmVnaW9uKGdwb2ludGVyIGRhdGEsIGdw b2ludGVyIGRldikKLXsKLSAgICBQZXJzaXN0ZW50UmVnaW9uICpyZWdpb24gPSBkYXRhOwotICAg IHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGRldjsKLSAgICBYZW5HbnR0YWIgZ250ID0gYmxr ZGV2LT54ZW5kZXYuZ250dGFiZGV2OwotCi0gICAgaWYgKHhjX2dudHRhYl9tdW5tYXAoZ250LCBy ZWdpb24tPmFkZHIsIHJlZ2lvbi0+bnVtKSAhPSAwKSB7Ci0gICAgICAgIHhlbl9iZV9wcmludGYo JmJsa2Rldi0+eGVuZGV2LCAwLAotICAgICAgICAgICAgICAgICAgICAgICJ4Y19nbnR0YWJfbXVu bWFwIHJlZ2lvbiAlcCBmYWlsZWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgIHJlZ2lv bi0+YWRkciwgc3RyZXJyb3IoZXJybm8pKTsKLSAgICB9Ci0gICAgeGVuX2JlX3ByaW50ZigmYmxr ZGV2LT54ZW5kZXYsIDMsCi0gICAgICAgICAgICAgICAgICAidW5tYXBwZWQgZ3JhbnQgcmVnaW9u ICVwIHdpdGggJWQgcGFnZXNcbiIsCi0gICAgICAgICAgICAgICAgICByZWdpb24tPmFkZHIsIHJl Z2lvbi0+bnVtKTsKLSAgICBnX2ZyZWUocmVnaW9uKTsKLX0KLQogc3RhdGljIHN0cnVjdCBpb3Jl cSAqaW9yZXFfc3RhcnQoc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2KQogewogICAgIHN0cnVjdCBp b3JlcSAqaW9yZXEgPSBOVUxMOwpAQCAtMzE0LDcgKzI2OCw5IEBAIHN0YXRpYyBpbnQgaW9yZXFf cGFyc2Uoc3RydWN0IGlvcmVxICppb3JlcSkKICAgICAgICAgaW9yZXEtPnJlZnNbaV0gICA9IGlv cmVxLT5yZXEuc2VnW2ldLmdyZWY7CiAKICAgICAgICAgbWVtID0gaW9yZXEtPnJlcS5zZWdbaV0u Zmlyc3Rfc2VjdCAqIGJsa2Rldi0+ZmlsZV9ibGs7Ci0gICAgICAgIGxlbiA9IChpb3JlcS0+cmVx LnNlZ1tpXS5sYXN0X3NlY3QgLSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICsgMSkgKiBi bGtkZXYtPmZpbGVfYmxrOworICAgICAgICBsZW4gPSAoaW9yZXEtPnJlcS5zZWdbaV0ubGFzdF9z ZWN0IC0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCArIDEpIAorICAgICAgICAgICAgICAq IGJsa2Rldi0+ZmlsZV9ibGs7CisKICAgICAgICAgcWVtdV9pb3ZlY19hZGQoJmlvcmVxLT52LCAo dm9pZCopbWVtLCBsZW4pOwogICAgIH0KICAgICBpZiAoaW9yZXEtPnN0YXJ0ICsgaW9yZXEtPnYu c2l6ZSA+IGJsa2Rldi0+ZmlsZV9zaXplKSB7CkBAIC0zMjgsMTc1ICsyODQsMTUxIEBAIGVycjoK ICAgICByZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyB2b2lkIGlvcmVxX3VubWFwKHN0cnVjdCBpb3Jl cSAqaW9yZXEpCitzdGF0aWMgdm9pZCogZ2V0X2J1ZmZlcih2b2lkKSB7CisgICAgdm9pZCAqYnVm OworCisgICAgYnVmID0gbW1hcChOVUxMLCAxIDw8IFhDX1BBR0VfU0hJRlQsIFBST1RfUkVBRCB8 IFBST1RfV1JJVEUsIAorICAgICAgICAgICAgICAgTUFQX1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMs IC0xLCAwKTsKKworICAgIGlmICh1bmxpa2VseShidWYgPT0gTUFQX0ZBSUxFRCkpCisgICAgICAg IHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGJ1ZjsKK30KKworc3RhdGljIGludCBmcmVlX2J1 ZmZlcih2b2lkKiBidWYpIHsKKyAgICByZXR1cm4gbXVubWFwKGJ1ZiwgMSA8PCBYQ19QQUdFX1NI SUZUKTsKK30KKworc3RhdGljIGludCBmcmVlX2J1ZmZlcnModm9pZCoqIHBhZ2UsIGludCBjb3Vu dCkgCit7CisgICAgaW50IGksIHIgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBp KyspIHsgCisgICAgICAgIAorICAgICAgICBpZihmcmVlX2J1ZmZlcihwYWdlW2ldKSkgCisgICAg ICAgICAgICByID0gMTsKKyAgICAgICAgCisgICAgICAgIHBhZ2VbaV0gPSBOVUxMOworICAgIH0K KworICAgIHJldHVybiByOworfQorCitzdGF0aWMgaW50IGlvcmVxX3dyaXRlKHN0cnVjdCBpb3Jl cSAqaW9yZXEpIAogewogICAgIFhlbkdudHRhYiBnbnQgPSBpb3JlcS0+YmxrZGV2LT54ZW5kZXYu Z250dGFiZGV2OwotICAgIGludCBpOworICAgIHVpbnQxNl90IGRvbWlkc1tCTEtJRl9NQVhfU0VH TUVOVFNfUEVSX1JFUVVFU1RdOworICAgIHVpbnQzMl90IHJlZnNbQkxLSUZfTUFYX1NFR01FTlRT X1BFUl9SRVFVRVNUXTsKKyAgICB1aW50MzJfdCBvZmZzZXRbQkxLSUZfTUFYX1NFR01FTlRTX1BF Ul9SRVFVRVNUXTsKKyAgICB1aW50MzJfdCBsZW5bQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFV RVNUXTsKKyAgICB2b2lkICpwYWdlc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwor ICAgIGludCBpLCBjb3VudCA9IDAsIHJjLCByOworICAgIC8qIENvcHkgdGhlIGRhdGEgZm9yIHdy aXRlIG9wZXJhdGlvbiBmcm9tIGd1ZXN0IGdyYW50IHBhZ2VzIGFkZHJlc3NlZCBieSAKKyAgICAg KiBkb21pZHMsIHJlZnMsIG9mZnNldCwgbGVuIHRvIGxvY2FsIGJ1ZmZlcnMuCisgICAgICogCisg ICAgICogQnVmZmVyZXMgYXJlIHRoZW4gbWFwcGVkIHRvIHRoZSBwZW5kaW5nIHJlcXVlc3QgZm9y IGZ1cnRoZXIgCisgICAgICogY29tcGxldGl0aW9uLgorICAgICAqLwogCi0gICAgaWYgKGlvcmVx LT5udW1fdW5tYXAgPT0gMCB8fCBpb3JlcS0+bWFwcGVkID09IDApIHsKLSAgICAgICAgcmV0dXJu OworICAgIGlmIChpb3JlcS0+di5uaW92ID09IDApIHsKKyAgICAgICAgciA9IDA7IGdvdG8gb3V0 OwogICAgIH0KLSAgICBpZiAoYmF0Y2hfbWFwcykgewotICAgICAgICBpZiAoIWlvcmVxLT5wYWdl cykgewotICAgICAgICAgICAgcmV0dXJuOworCisgICAgY291bnQgPSBpb3JlcS0+di5uaW92Owor ICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIGRvbWlkc1tpXSA9IGlv cmVxLT5kb21pZHNbaV07CisgICAgICAgIHJlZnNbaV0gICA9IGlvcmVxLT5yZWZzW2ldOworICAg ICAgICBvZmZzZXRbaV0gPSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICogaW9yZXEtPmJs a2Rldi0+ZmlsZV9ibGs7CisgICAgICAgIGxlbltpXSA9IChpb3JlcS0+cmVxLnNlZ1tpXS5sYXN0 X3NlY3QgLSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICsgMSkgCisgICAgICAgICAgICAg ICAgICAqIGlvcmVxLT5ibGtkZXYtPmZpbGVfYmxrOworICAgICAgICBwYWdlc1tpXSAgPSBnZXRf YnVmZmVyKCk7CisKKyAgICAgICAgaWYoIXBhZ2VzW2ldKSB7CisgICAgICAgICAgICB4ZW5fYmVf cHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAiZmFpbGVkIHRvIGFsbG9jIHBhZ2UsIGVycm5vICVkIFxuIiwgZXJybm8pOworICAgICAg ICAgICAgciA9IDE7IGdvdG8gb3V0OwogICAgICAgICB9Ci0gICAgICAgIGlmICh4Y19nbnR0YWJf bXVubWFwKGdudCwgaW9yZXEtPnBhZ2VzLCBpb3JlcS0+bnVtX3VubWFwKSAhPSAwKSB7Ci0gICAg ICAgICAgICB4ZW5fYmVfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsICJ4Y19nbnR0 YWJfbXVubWFwIGZhaWxlZDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVy cm9yKGVycm5vKSk7CisgICAgfQorICAgIHJjID0geGNfZ250dGFiX2NvcHlfZ3JhbnQoZ250LCBj b3VudCwgZG9taWRzLCByZWZzLCBwYWdlcywgb2Zmc2V0LCBsZW4sIDEpOworCisgICAgaWYocmMp IHsKKyAgICAgICAgeGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLCAKKyAg ICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGNvcHkgZGF0YSBmb3Igd3JpdGUgJWQgXG4i LCByYyk7CisKKyAgICAgICAgaWYoZnJlZV9idWZmZXJzKGlvcmVxLT5wYWdlLCBpb3JlcS0+di5u aW92KSkgeworICAgICAgICAgICAgeGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2 LCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBmcmVlIHBhZ2UsIGVy cm5vICVkIFxuIiwgZXJybm8pOwogICAgICAgICB9Ci0gICAgICAgIGlvcmVxLT5ibGtkZXYtPmNu dF9tYXAgLT0gaW9yZXEtPm51bV91bm1hcDsKLSAgICAgICAgaW9yZXEtPnBhZ2VzID0gTlVMTDsK LSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPm51bV91bm1hcDsg aSsrKSB7Ci0gICAgICAgICAgICBpZiAoIWlvcmVxLT5wYWdlW2ldKSB7Ci0gICAgICAgICAgICAg ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoeGNfZ250dGFiX211 bm1hcChnbnQsIGlvcmVxLT5wYWdlW2ldLCAxKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgeGVu X2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLCAieGNfZ250dGFiX211bm1hcCBm YWlsZWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJy bm8pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPmNudF9tYXAt LTsKLSAgICAgICAgICAgIGlvcmVxLT5wYWdlW2ldID0gTlVMTDsKKyAgICAgICAgciA9IDE7IGdv dG8gb3V0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92OyBpKysp IHsKKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBwYWdlc1tpXTsKKyAgICAgICAgaW9yZXEtPnYu aW92W2ldLmlvdl9iYXNlICs9ICh1aW50cHRyX3QpcGFnZXNbaV07CisgICAgfQorCisgICAgciA9 IDA7CitvdXQ6CisgICAgcmV0dXJuIHI7Cit9CisKK3N0YXRpYyBpbnQgaW9yZXFfcmVhZF9pbml0 KHN0cnVjdCBpb3JlcSAqaW9yZXEpIAoreworICAgIGludCBpOworCisgICAgaWYgKGlvcmVxLT52 Lm5pb3YgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAw OyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7CisgICAgICAgIGlvcmVxLT5wYWdlW2ldID0gZ2V0 X2J1ZmZlcigpOworICAgICAgICBpZighaW9yZXEtPnBhZ2VbaV0pIHsKKyAgICAgICAgICAgIHJl dHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2UgKz0g KHVpbnRwdHJfdClpb3JlcS0+cGFnZVtpXTsKICAgICB9Ci0gICAgaW9yZXEtPm1hcHBlZCA9IDA7 CisKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpb3JlcV9tYXAoc3RydWN0IGlvcmVx ICppb3JlcSkKKworc3RhdGljIGludCBpb3JlcV9yZWFkKHN0cnVjdCBpb3JlcSAqaW9yZXEpIAog ewogICAgIFhlbkdudHRhYiBnbnQgPSBpb3JlcS0+YmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2Owot ICAgIHVpbnQzMl90IGRvbWlkc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOworICAg IHVpbnQxNl90IGRvbWlkc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwogICAgIHVp bnQzMl90IHJlZnNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKLSAgICB2b2lkICpw YWdlW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Ci0gICAgaW50IGksIGosIG5ld19t YXBzID0gMDsKLSAgICBQZXJzaXN0ZW50R3JhbnQgKmdyYW50OwotICAgIFBlcnNpc3RlbnRSZWdp b24gKnJlZ2lvbjsKLSAgICAvKiBkb21pZHMgYW5kIHJlZnMgdmFyaWFibGVzIHdpbGwgY29udGFp biB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5Ci0gICAgICogdG8gbWFwIHRoZSBncmFudHMgdGhh dCBhcmUgbmVlZGVkIHRvIGZ1bGZpbGwgdGhpcyByZXF1ZXN0LgotICAgICAqCi0gICAgICogQWZ0 ZXIgbWFwcGluZyB0aGUgbmVlZGVkIGdyYW50cywgdGhlIHBhZ2UgYXJyYXkgd2lsbCBjb250YWlu IHRoZQotICAgICAqIG1lbW9yeSBhZGRyZXNzIG9mIGVhY2ggZ3JhbnRlZCBwYWdlIGluIHRoZSBv cmRlciBzcGVjaWZpZWQgaW4gaW9yZXEKLSAgICAgKiAoZGlzcmVnYXJkaW5nIGlmIGl0J3MgYSBw ZXJzaXN0ZW50IGdyYW50IG9yIG5vdCkuCisgICAgdWludDMyX3Qgb2Zmc2V0W0JMS0lGX01BWF9T RUdNRU5UU19QRVJfUkVRVUVTVF07CisgICAgdWludDMyX3QgbGVuW0JMS0lGX01BWF9TRUdNRU5U U19QRVJfUkVRVUVTVF07CisgICAgdm9pZCAqcGFnZXNbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9S RVFVRVNUXTsKKyAgICBpbnQgaSwgY291bnQgPSAwLCByYzsKKworICAgIC8qIENvcHkgdGhlIGRh dGEgZnJvbSBsb2NhbCBidWZmZXJzIHRvIGd1ZXN0IGdyYW50IHBhZ2VzIGFkZHJlc3NlZCBieSAK KyAgICAgKiBkb21pZHMsIHJlZnMsIG9mZnNldCBvbiB0aGUgY29tcGxldGl0aW9uIG9mIHJlYWQg b3BlcmF0aW9uLgogICAgICAqLwogCi0gICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCB8fCBpb3Jl cS0+bWFwcGVkID09IDEpIHsKKyAgICBpZiAoaW9yZXEtPnYubmlvdiA9PSAwKSB7CiAgICAgICAg IHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9wZXJzaXN0 ZW50KSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBpb3JlcS0+di5uaW92OyBpKyspIHsKLSAg ICAgICAgICAgIGdyYW50ID0gZ190cmVlX2xvb2t1cChpb3JlcS0+YmxrZGV2LT5wZXJzaXN0ZW50 X2dudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVUlOVF9UT19QT0lO VEVSKGlvcmVxLT5yZWZzW2ldKSk7Ci0KLSAgICAgICAgICAgIGlmIChncmFudCAhPSBOVUxMKSB7 Ci0gICAgICAgICAgICAgICAgcGFnZVtpXSA9IGdyYW50LT5wYWdlOwotICAgICAgICAgICAgICAg IHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ1c2luZyBwZXJzaXN0ZW50LWdyYW50ICUiIFBSSXUzMiAiXG4iLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEtPnJlZnNbaV0pOwotICAgICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQWRkIHRoZSBncmFudCB0byB0aGUg bGlzdCBvZiBncmFudHMgdGhhdAotICAgICAgICAgICAgICAgICAgICAgKiBzaG91bGQgYmUgbWFw cGVkCi0gICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBkb21pZHNb bmV3X21hcHNdID0gaW9yZXEtPmRvbWlkc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgcmVmc1tu ZXdfbWFwc10gPSBpb3JlcS0+cmVmc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgcGFnZVtpXSA9 IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIG5ld19tYXBzKys7Ci0gICAgICAgICAgICB9Ci0g ICAgICAgIH0KLSAgICAgICAgLyogU2V0IHRoZSBwcm90ZWN0aW9uIHRvIFJXLCBzaW5jZSBncmFu dHMgbWF5IGJlIHJldXNlZCBsYXRlcgotICAgICAgICAgKiB3aXRoIGEgZGlmZmVyZW50IHByb3Rl Y3Rpb24gdGhhbiB0aGUgb25lIG5lZWRlZCBmb3IgdGhpcyByZXF1ZXN0Ci0gICAgICAgICAqLwot ICAgICAgICBpb3JlcS0+cHJvdCA9IFBST1RfV1JJVEUgfCBQUk9UX1JFQUQ7Ci0gICAgfSBlbHNl IHsKLSAgICAgICAgLyogQWxsIGdyYW50cyBpbiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgbWFwcGVk ICovCi0gICAgICAgIG1lbWNweShyZWZzLCBpb3JlcS0+cmVmcywgc2l6ZW9mKHJlZnMpKTsKLSAg ICAgICAgbWVtY3B5KGRvbWlkcywgaW9yZXEtPmRvbWlkcywgc2l6ZW9mKGRvbWlkcykpOwotICAg ICAgICBtZW1zZXQocGFnZSwgMCwgc2l6ZW9mKHBhZ2UpKTsKLSAgICAgICAgbmV3X21hcHMgPSBp b3JlcS0+di5uaW92OwotICAgIH0KIAotICAgIGlmIChiYXRjaF9tYXBzICYmIG5ld19tYXBzKSB7 Ci0gICAgICAgIGlvcmVxLT5wYWdlcyA9IHhjX2dudHRhYl9tYXBfZ3JhbnRfcmVmcwotICAgICAg ICAgICAgKGdudCwgbmV3X21hcHMsIGRvbWlkcywgcmVmcywgaW9yZXEtPnByb3QpOwotICAgICAg ICBpZiAoaW9yZXEtPnBhZ2VzID09IE5VTEwpIHsKLSAgICAgICAgICAgIHhlbl9iZV9wcmludGYo JmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNh bid0IG1hcCAlZCBncmFudCByZWZzICglcywgJWQgbWFwcylcbiIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIG5ld19tYXBzLCBzdHJlcnJvcihlcnJubyksIGlvcmVxLT5ibGtkZXYtPmNudF9t YXApOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9 IDAsIGogPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocGFn ZVtpXSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcGFnZVtpXSA9IGlvcmVxLT5wYWdlcyAr IChqKyspICogWENfUEFHRV9TSVpFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg IGlvcmVxLT5ibGtkZXYtPmNudF9tYXAgKz0gbmV3X21hcHM7Ci0gICAgfSBlbHNlIGlmIChuZXdf bWFwcykgIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5ld19tYXBzOyBpKyspIHsKLSAgICAg ICAgICAgIGlvcmVxLT5wYWdlW2ldID0geGNfZ250dGFiX21hcF9ncmFudF9yZWYKLSAgICAgICAg ICAgICAgICAoZ250LCBkb21pZHNbaV0sIHJlZnNbaV0sIGlvcmVxLT5wcm90KTsKLSAgICAgICAg ICAgIGlmIChpb3JlcS0+cGFnZVtpXSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgeGVuX2Jl X3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImNhbid0IG1hcCBncmFudCByZWYgJWQgKCVzLCAlZCBtYXBzKVxuIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnNbaV0sIHN0cmVycm9yKGVycm5vKSwgaW9yZXEt PmJsa2Rldi0+Y250X21hcCk7Ci0gICAgICAgICAgICAgICAgaW9yZXEtPm1hcHBlZCA9IDE7Ci0g ICAgICAgICAgICAgICAgaW9yZXFfdW5tYXAoaW9yZXEpOwotICAgICAgICAgICAgICAgIHJldHVy biAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPmNudF9tYXAr KzsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGlvcmVxLT52Lm5p b3Y7IGkrKykgewotICAgICAgICAgICAgaWYgKHBhZ2VbaV0gPT0gTlVMTCkgewotICAgICAgICAg ICAgICAgIHBhZ2VbaV0gPSBpb3JlcS0+cGFnZVtqKytdOwotICAgICAgICAgICAgfQotICAgICAg ICB9CisgICAgY291bnQgPSBpb3JlcS0+di5uaW92OworICAgIGZvciAoaSA9IDA7IGkgPCBjb3Vu dDsgaSsrKSB7CisgICAgICAgIGRvbWlkc1tpXSA9IGlvcmVxLT5kb21pZHNbaV07CisgICAgICAg IHJlZnNbaV0gICA9IGlvcmVxLT5yZWZzW2ldOworICAgICAgICBvZmZzZXRbaV0gPSBpb3JlcS0+ cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICogaW9yZXEtPmJsa2Rldi0+ZmlsZV9ibGs7CisgICAgICAg IGxlbltpXSA9IChpb3JlcS0+cmVxLnNlZ1tpXS5sYXN0X3NlY3QgLSBpb3JlcS0+cmVxLnNlZ1tp XS5maXJzdF9zZWN0ICsgMSkgCisgICAgICAgICAgICAgICAgICogaW9yZXEtPmJsa2Rldi0+Zmls ZV9ibGs7CisgICAgICAgIHBhZ2VzW2ldICAgPSBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7CiAg ICAgfQotICAgIGlmIChpb3JlcS0+YmxrZGV2LT5mZWF0dXJlX3BlcnNpc3RlbnQgJiYgbmV3X21h cHMgIT0gMCAmJgotICAgICAgICAoIWJhdGNoX21hcHMgfHwgKGlvcmVxLT5ibGtkZXYtPnBlcnNp c3RlbnRfZ250X2NvdW50ICsgbmV3X21hcHMgPD0KLSAgICAgICAgaW9yZXEtPmJsa2Rldi0+bWF4 X2dyYW50cykpKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIElmIHdlIGFyZSB1c2luZyBwZXJz aXN0ZW50IGdyYW50cyBhbmQgYmF0Y2ggbWFwcGluZ3Mgb25seQotICAgICAgICAgKiBhZGQgdGhl IG5ldyBtYXBzIHRvIHRoZSBsaXN0IG9mIHBlcnNpc3RlbnQgZ3JhbnRzIGlmIHRoZSB3aG9sZQot ICAgICAgICAgKiBhcmVhIGNhbiBiZSBwZXJzaXN0ZW50bHkgbWFwcGVkLgotICAgICAgICAgKi8K LSAgICAgICAgaWYgKGJhdGNoX21hcHMpIHsKLSAgICAgICAgICAgIHJlZ2lvbiA9IGdfbWFsbG9j MChzaXplb2YoKnJlZ2lvbikpOwotICAgICAgICAgICAgcmVnaW9uLT5hZGRyID0gaW9yZXEtPnBh Z2VzOwotICAgICAgICAgICAgcmVnaW9uLT5udW0gPSBuZXdfbWFwczsKLSAgICAgICAgICAgIGlv cmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucyA9IGdfc2xpc3RfYXBwZW5kKAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3JlcS0+YmxrZGV2LT5wZXJz aXN0ZW50X3JlZ2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlZ2lvbik7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKChpb3JlcS0+YmxrZGV2LT5w ZXJzaXN0ZW50X2dudF9jb3VudCA8IGlvcmVxLT5ibGtkZXYtPm1heF9ncmFudHMpCi0gICAgICAg ICAgICAgICYmIG5ld19tYXBzKSB7Ci0gICAgICAgICAgICAvKiBHbyB0aHJvdWdoIHRoZSBsaXN0 IG9mIG5ld2x5IG1hcHBlZCBncmFudHMgYW5kIGFkZCBhcyBtYW55Ci0gICAgICAgICAgICAgKiBh cyBwb3NzaWJsZSB0byB0aGUgbGlzdCBvZiBwZXJzaXN0ZW50bHkgbWFwcGVkIGdyYW50cy4KLSAg ICAgICAgICAgICAqCi0gICAgICAgICAgICAgKiBTaW5jZSB3ZSBzdGFydCBhdCB0aGUgZW5kIG9m IGlvcmVxLT5wYWdlKHMpLCB3ZSBvbmx5IG5lZWQKLSAgICAgICAgICAgICAqIHRvIGRlY3JlYXNl IG5ld19tYXBzIHRvIHByZXZlbnQgdGhpcyBncmFudGVkIHBhZ2VzIGZyb20KLSAgICAgICAgICAg ICAqIGJlaW5nIHVubWFwcGVkIGluIGlvcmVxX3VubWFwLgotICAgICAgICAgICAgICovCi0gICAg ICAgICAgICBncmFudCA9IGdfbWFsbG9jMChzaXplb2YoKmdyYW50KSk7Ci0gICAgICAgICAgICBu ZXdfbWFwcy0tOwotICAgICAgICAgICAgaWYgKGJhdGNoX21hcHMpIHsKLSAgICAgICAgICAgICAg ICBncmFudC0+cGFnZSA9IGlvcmVxLT5wYWdlcyArIChuZXdfbWFwcykgKiBYQ19QQUdFX1NJWkU7 Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGdyYW50LT5wYWdlID0gaW9y ZXEtPnBhZ2VbbmV3X21hcHNdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ3JhbnQtPmJs a2RldiA9IGlvcmVxLT5ibGtkZXY7Ci0gICAgICAgICAgICB4ZW5fYmVfcHJpbnRmKCZpb3JlcS0+ YmxrZGV2LT54ZW5kZXYsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgZ3Jh bnQgJSIgUFJJdTMyICIgcGFnZTogJXBcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJl ZnNbbmV3X21hcHNdLCBncmFudC0+cGFnZSk7Ci0gICAgICAgICAgICBnX3RyZWVfaW5zZXJ0KGlv cmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg R1VJTlRfVE9fUE9JTlRFUihyZWZzW25ld19tYXBzXSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIGdyYW50KTsKLSAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPnBlcnNpc3RlbnRfZ250X2Nv dW50Kys7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KCFiYXRjaF9tYXBzIHx8IG5ld19tYXBz ID09IDApOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnYubmlvdjsgaSsrKSB7 Ci0gICAgICAgIGlvcmVxLT52LmlvdltpXS5pb3ZfYmFzZSArPSAodWludHB0cl90KXBhZ2VbaV07 CisKKyAgICByYyA9IHhjX2dudHRhYl9jb3B5X2dyYW50KGdudCwgY291bnQsIGRvbWlkcywgcmVm cywgcGFnZXMsIG9mZnNldCwgbGVuLCAwKTsKKyAgICAKKyAgICBpZihyYykgeworICAgICAgICB4 ZW5fYmVfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsIAorICAgICAgICAgICAgICAg ICAgICAgICJmYWlsZWQgdG8gY29weSBkYXRhIHRvIGd1ZXN0ICVkIFxuIiwgcmMpOworICAgICAg ICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlvcmVxLT5tYXBwZWQgPSAxOwotICAgIGlvcmVxLT5u dW1fdW5tYXAgPSBuZXdfbWFwczsKKwogICAgIHJldHVybiAwOwogfQogCkBAIC01MjksNyArNDYx LDIzIEBAIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2NvbXBsZXRlKHZvaWQgKm9wYXF1ZSwgaW50IHJl dCkKICAgICB9CiAKICAgICBpb3JlcS0+c3RhdHVzID0gaW9yZXEtPmFpb19lcnJvcnMgPyBCTEtJ Rl9SU1BfRVJST1IgOiBCTEtJRl9SU1BfT0tBWTsKLSAgICBpb3JlcV91bm1hcChpb3JlcSk7Cisg ICAgCisgICAgc3dpdGNoKGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7CisgICAgY2FzZSBCTEtJRl9P UF9SRUFEOiAKKyAgICAgICAgaWYoaW9yZXFfcmVhZChpb3JlcSkpIHsKKyAgICAgICAgICAgIHhl bl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICJmYWlsZWQgdG8gY29weSByZWFkIGRhdGEgdG8gZ3Vlc3RcbiIpOworICAgICAg ICB9CisgICAgY2FzZSBCTEtJRl9PUF9XUklURToKKyAgICAgICAgaWYoZnJlZV9idWZmZXJzKGlv cmVxLT5wYWdlLCBpb3JlcS0+di5uaW92KSkgeworICAgICAgICAgICAgeGVuX2JlX3ByaW50Zigm aW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZh aWxlZCB0byBmcmVlIHBhZ2UsIGVycm5vICVkIFxuIiwgZXJybm8pOworICAgICAgICB9CisgICAg ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGlv cmVxX2ZpbmlzaChpb3JlcSk7CiAgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikgewog ICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6CkBAIC01NTEsOCArNDk5LDI1IEBAIHN0YXRpYyBpbnQg aW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKIHsKICAgICBzdHJ1Y3Qg WGVuQmxrRGV2ICpibGtkZXYgPSBpb3JlcS0+YmxrZGV2OwogCi0gICAgaWYgKGlvcmVxLT5yZXEu bnJfc2VnbWVudHMgJiYgaW9yZXFfbWFwKGlvcmVxKSA9PSAtMSkgewotICAgICAgICBnb3RvIGVy cl9ub19tYXA7CisgICAgc3dpdGNoIChpb3JlcS0+cmVxLm9wZXJhdGlvbikgeworICAgIGNhc2Ug QkxLSUZfT1BfUkVBRDoKKyAgICAgICAgaWYgKGlvcmVxX3JlYWRfaW5pdChpb3JlcSkpIHsKKyAg ICAgICAgICAgIHhlbl9iZV9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBidWZmZXJzIGZvciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcHkgZGF0YSB0byBndWVzdCAlZCBcbiIsIGVy cm5vKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgICAgICBicmVh azsKKyAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgorICAgIGNhc2UgQkxLSUZfT1BfRkxVU0hfRElT S0NBQ0hFOgorICAgICAgICBpZiAoaW9yZXFfd3JpdGUoaW9yZXEpKSB7CisgICAgICAgICAgICB4 ZW5fYmVfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsIAorICAgICAgICAgICAgICAg ICAgICAgICAgICAiZmFpbGVkIHRvIHdyaXRlIGRhdGEgZnJvbSBndWVzdFxuIik7CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpb3JlcS0+YWlvX2luZmxpZ2h0Kys7CkBAIC01 OTQsMTYgKzU1OSwxNCBAQCBzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVfYWlvKHN0cnVjdCBp b3JlcSAqaW9yZXEpCiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qIHVua25vd24gb3Bl cmF0aW9uIChzaG91bGRuJ3QgaGFwcGVuIC0tIHBhcnNlIGNhdGNoZXMgdGhpcykgKi8KLSAgICAg ICAgZ290byBlcnI7CisgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAogICAgIHFlbXVfYWlvX2Nv bXBsZXRlKGlvcmVxLCAwKTsKIAogICAgIHJldHVybiAwOwogCi1lcnI6Ci0gICAgaW9yZXFfdW5t YXAoaW9yZXEpOwotZXJyX25vX21hcDoKK291dDoKICAgICBpb3JlcV9maW5pc2goaW9yZXEpOwog ICAgIGlvcmVxLT5zdGF0dXMgPSBCTEtJRl9SU1BfRVJST1I7CiAgICAgcmV0dXJuIC0xOwpAQCAt NzY0LDExICs3MjcsNiBAQCBzdGF0aWMgdm9pZCBibGtfYWxsb2Moc3RydWN0IFhlbkRldmljZSAq eGVuZGV2KQogICAgIGlmICh4ZW5fbW9kZSAhPSBYRU5fRU1VTEFURSkgewogICAgICAgICBiYXRj aF9tYXBzID0gMTsKICAgICB9Ci0gICAgaWYgKHhjX2dudHRhYl9zZXRfbWF4X2dyYW50cyh4ZW5k ZXYtPmdudHRhYmRldiwKLSAgICAgICAgICAgIE1BWF9HUkFOVFMobWF4X3JlcXVlc3RzLCBCTEtJ Rl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpKSA8IDApIHsKLSAgICAgICAgeGVuX2JlX3ByaW50 Zih4ZW5kZXYsIDAsICJ4Y19nbnR0YWJfc2V0X21heF9ncmFudHMgZmFpbGVkOiAlc1xuIiwKLSAg ICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgIH0KIH0KIAogc3RhdGlj IHZvaWQgYmxrX3BhcnNlX2Rpc2NhcmQoc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2KQpAQCAtODgw LDcgKzgzOCw3IEBAIG91dF9lcnJvcjoKIHN0YXRpYyBpbnQgYmxrX2Nvbm5lY3Qoc3RydWN0IFhl bkRldmljZSAqeGVuZGV2KQogewogICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGNvbnRh aW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5CbGtEZXYsIHhlbmRldik7Ci0gICAgaW50IHBlcnMs IGluZGV4LCBxZmxhZ3M7CisgICAgaW50IGluZGV4LCBxZmxhZ3M7CiAgICAgYm9vbCByZWFkb25s eSA9IHRydWU7CiAKICAgICAvKiByZWFkLW9ubHkgPyAqLwpAQCAtOTU4LDExICs5MTYsNiBAQCBz dGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmJsa2Rldi0+eGVuZGV2LnJlbW90ZV9wb3J0KSA9PSAtMSkg ewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmICh4ZW5zdG9yZV9yZWFkX2ZlX2lu dCgmYmxrZGV2LT54ZW5kZXYsICJmZWF0dXJlLXBlcnNpc3RlbnQiLCAmcGVycykpIHsKLSAgICAg ICAgYmxrZGV2LT5mZWF0dXJlX3BlcnNpc3RlbnQgPSBGQUxTRTsKLSAgICB9IGVsc2UgewotICAg ICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9ICEhcGVyczsKLSAgICB9CiAKICAgICBi bGtkZXYtPnByb3RvY29sID0gQkxLSUZfUFJPVE9DT0xfTkFUSVZFOwogICAgIGlmIChibGtkZXYt PnhlbmRldi5wcm90b2NvbCkgewpAQCAtMTAwNiwxOCArOTU5LDYgQEAgc3RhdGljIGludCBibGtf Y29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgfQogICAgIH0KIAotICAgIGlm IChibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCkgewotICAgICAgICAvKiBJbml0IHBlcnNpc3Rl bnQgZ3JhbnRzICovCi0gICAgICAgIGJsa2Rldi0+bWF4X2dyYW50cyA9IG1heF9yZXF1ZXN0cyAq IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVDsKLSAgICAgICAgYmxrZGV2LT5wZXJzaXN0 ZW50X2dudHMgPSBnX3RyZWVfbmV3X2Z1bGwoKEdDb21wYXJlRGF0YUZ1bmMpaW50X2NtcCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF9tYXBzID8K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHRGVzdHJveU5v dGlmeSlnX2ZyZWUgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEdEZXN0cm95Tm90aWZ5KWRlc3Ryb3lfZ3JhbnQpOwotICAgICAgICBibGtkZXYtPnBlcnNp c3RlbnRfcmVnaW9ucyA9IE5VTEw7Ci0gICAgICAgIGJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291 bnQgPSAwOwotICAgIH0KLQogICAgIHhlbl9iZV9iaW5kX2V2dGNobigmYmxrZGV2LT54ZW5kZXYp OwogCiAgICAgeGVuX2JlX3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDEsICJvazogcHJvdG8gJXMs IHJpbmctcmVmICVkLCAiCkBAIC0xMDQzLDI2ICs5ODQsNiBAQCBzdGF0aWMgdm9pZCBibGtfZGlz Y29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgICAgIGJsa2Rldi0+Y250X21h cC0tOwogICAgICAgICBibGtkZXYtPnNyaW5nID0gTlVMTDsKICAgICB9Ci0KLSAgICAvKgotICAg ICAqIFVubWFwIHBlcnNpc3RlbnQgZ3JhbnRzIGJlZm9yZSBzd2l0Y2hpbmcgdG8gdGhlIGNsb3Nl ZCBzdGF0ZQotICAgICAqIHNvIHRoZSBmcm9udGVuZCBjYW4gZnJlZSB0aGVtLgotICAgICAqCi0g ICAgICogSW4gdGhlICFiYXRjaF9tYXBzIGNhc2UgZ190cmVlX2Rlc3Ryb3kgd2lsbCB0YWtlIGNh cmUgb2YgdW5tYXBwaW5nCi0gICAgICogdGhlIGdyYW50LCBidXQgaW4gdGhlIGJhdGNoX21hcHMg Y2FzZSB3ZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBldmVyeQotICAgICAqIHJlZ2lvbiBpbiBwZXJz aXN0ZW50X3JlZ2lvbnMgYW5kIHVubWFwIGl0LgotICAgICAqLwotICAgIGlmIChibGtkZXYtPmZl YXR1cmVfcGVyc2lzdGVudCkgewotICAgICAgICBnX3RyZWVfZGVzdHJveShibGtkZXYtPnBlcnNp c3RlbnRfZ250cyk7Ci0gICAgICAgIGFzc2VydChiYXRjaF9tYXBzIHx8IGJsa2Rldi0+cGVyc2lz dGVudF9nbnRfY291bnQgPT0gMCk7Ci0gICAgICAgIGlmIChiYXRjaF9tYXBzKSB7Ci0gICAgICAg ICAgICBibGtkZXYtPnBlcnNpc3RlbnRfZ250X2NvdW50ID0gMDsKLSAgICAgICAgICAgIGdfc2xp c3RfZm9yZWFjaChibGtkZXYtPnBlcnNpc3RlbnRfcmVnaW9ucywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoR0Z1bmMpcmVtb3ZlX3BlcnNpc3RlbnRfcmVnaW9uLCBibGtkZXYpOwotICAg ICAgICAgICAgZ19zbGlzdF9mcmVlKGJsa2Rldi0+cGVyc2lzdGVudF9yZWdpb25zKTsKLSAgICAg ICAgfQotICAgICAgICBibGtkZXYtPmZlYXR1cmVfcGVyc2lzdGVudCA9IGZhbHNlOwotICAgIH0K IH0KIAogc3RhdGljIGludCBibGtfZnJlZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCi0tIAox LjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==