From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 3/9] xen_disk: remove open-coded use of libxengnttab Date: Thu, 17 May 2018 16:35:52 +0100 Message-ID: <1526571358-26685-4-git-send-email-paul.durrant@citrix.com> References: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fJKwt-0001s4-QD for xen-devel@lists.xenproject.org; Thu, 17 May 2018 15:36:11 +0000 In-Reply-To: <1526571358-26685-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Kevin Wolf , Paul Durrant , Stefano Stabellini , Max Reitz List-Id: xen-devel@lists.xenproject.org Tm93IHRoYXQgaGVscGVycyBhcmUgcHJlc2VudCBpbiB4ZW5fYmFja2VuZCwgdGhpcyBwYXRjaCBy ZW1vdmVzIG9wZW4tY29kZWQKY2FsbHMgdG8gbGlieGVuZ250dGFiIGZyb20gdGhlIHhlbl9kaXNr IGNvZGUuCgpUaGlzIHBhdGNoIGFsc28gZml4ZXMgb25lIHdoaXRzcGFjZSBlcnJvciBpbiB0aGUg YXNzaWdubWVudCBvZiB0aGUKWGVuRGV2T3BzIGluaXRpYWxpc2UgbWV0aG9kLgoKU2lnbmVkLW9m Zi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEFu dGhvbnkgUGVyYXJkIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgotLS0KQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEtldmluIFdvbGYgPGt3b2xm QHJlZGhhdC5jb20+CkNjOiBNYXggUmVpdHogPG1yZWl0ekByZWRoYXQuY29tPgoKdjI6CiAtIE5l dyBpbiB2MgotLS0KIGh3L2Jsb2NrL3hlbl9kaXNrLmMgfCAxMjIgKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMyIGlu c2VydGlvbnMoKyksIDkwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2h3L2Jsb2NrL3hlbl9k aXNrLmMgYi9ody9ibG9jay94ZW5fZGlzay5jCmluZGV4IDc4YmZiNDEuLmQzYmU0NWEgMTAwNjQ0 Ci0tLSBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMKKysrIGIvaHcvYmxvY2sveGVuX2Rpc2suYwpAQCAt NjgsNyArNjgsNiBAQCBzdHJ1Y3QgaW9yZXEgewogICAgIHVpbnQ4X3QgICAgICAgICAgICAgbWFw cGVkOwogCiAgICAgLyogZ3JhbnQgbWFwcGluZyAqLwotICAgIHVpbnQzMl90ICAgICAgICAgICAg ZG9taWRzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAgICAgdWludDMyX3QgICAg ICAgICAgICByZWZzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07CiAgICAgaW50ICAg ICAgICAgICAgICAgICBwcm90OwogICAgIHZvaWQgICAgICAgICAgICAgICAgKnBhZ2VbQkxLSUZf TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKQEAgLTE0Miw3ICsxNDEsNiBAQCBzdGF0aWMgdm9p ZCBpb3JlcV9yZXNldChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgIGlvcmVxLT5wcmVzeW5jID0g MDsKICAgICBpb3JlcS0+bWFwcGVkID0gMDsKIAotICAgIG1lbXNldChpb3JlcS0+ZG9taWRzLCAw LCBzaXplb2YoaW9yZXEtPmRvbWlkcykpOwogICAgIG1lbXNldChpb3JlcS0+cmVmcywgMCwgc2l6 ZW9mKGlvcmVxLT5yZWZzKSk7CiAgICAgaW9yZXEtPnByb3QgPSAwOwogICAgIG1lbXNldChpb3Jl cS0+cGFnZSwgMCwgc2l6ZW9mKGlvcmVxLT5wYWdlKSk7CkBAIC0xNjgsMTYgKzE2NiwxMiBAQCBz dGF0aWMgZ2ludCBpbnRfY21wKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBiLCBncG9p bnRlciB1c2VyX2RhdGEpCiBzdGF0aWMgdm9pZCBkZXN0cm95X2dyYW50KGdwb2ludGVyIHBnbnQp CiB7CiAgICAgUGVyc2lzdGVudEdyYW50ICpncmFudCA9IHBnbnQ7Ci0gICAgeGVuZ250dGFiX2hh bmRsZSAqZ250ID0gZ3JhbnQtPmJsa2Rldi0+eGVuZGV2LmdudHRhYmRldjsKKyAgICBzdHJ1Y3Qg WGVuQmxrRGV2ICpibGtkZXYgPSBncmFudC0+YmxrZGV2OworICAgIHN0cnVjdCBYZW5EZXZpY2Ug KnhlbmRldiA9ICZibGtkZXYtPnhlbmRldjsKIAotICAgIGlmICh4ZW5nbnR0YWJfdW5tYXAoZ250 LCBncmFudC0+cGFnZSwgMSkgIT0gMCkgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKCZncmFudC0+ YmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgInhlbmdudHRhYl91bm1h cCBmYWlsZWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7 Ci0gICAgfQorICAgIHhlbl9iZV91bm1hcF9ncmFudF9yZWYoeGVuZGV2LCBncmFudC0+cGFnZSk7 CiAgICAgZ3JhbnQtPmJsa2Rldi0+cGVyc2lzdGVudF9nbnRfY291bnQtLTsKLSAgICB4ZW5fcHZf cHJpbnRmKCZncmFudC0+YmxrZGV2LT54ZW5kZXYsIDMsCi0gICAgICAgICAgICAgICAgICAidW5t YXBwZWQgZ3JhbnQgJXBcbiIsIGdyYW50LT5wYWdlKTsKKyAgICB4ZW5fcHZfcHJpbnRmKHhlbmRl diwgMywgInVubWFwcGVkIGdyYW50ICVwXG4iLCBncmFudC0+cGFnZSk7CiAgICAgZ19mcmVlKGdy YW50KTsKIH0KIApAQCAtMTg1LDE1ICsxNzksMTAgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX3BlcnNp c3RlbnRfcmVnaW9uKGdwb2ludGVyIGRhdGEsIGdwb2ludGVyIGRldikKIHsKICAgICBQZXJzaXN0 ZW50UmVnaW9uICpyZWdpb24gPSBkYXRhOwogICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9 IGRldjsKLSAgICB4ZW5nbnR0YWJfaGFuZGxlICpnbnQgPSBibGtkZXYtPnhlbmRldi5nbnR0YWJk ZXY7CisgICAgc3RydWN0IFhlbkRldmljZSAqeGVuZGV2ID0gJmJsa2Rldi0+eGVuZGV2OwogCi0g ICAgaWYgKHhlbmdudHRhYl91bm1hcChnbnQsIHJlZ2lvbi0+YWRkciwgcmVnaW9uLT5udW0pICE9 IDApIHsKLSAgICAgICAgeGVuX3B2X3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAg ICAgICAgICAgICAgICAgInhlbmdudHRhYl91bm1hcCByZWdpb24gJXAgZmFpbGVkOiAlc1xuIiwK LSAgICAgICAgICAgICAgICAgICAgICByZWdpb24tPmFkZHIsIHN0cmVycm9yKGVycm5vKSk7Ci0g ICAgfQotICAgIHhlbl9wdl9wcmludGYoJmJsa2Rldi0+eGVuZGV2LCAzLAotICAgICAgICAgICAg ICAgICAgInVubWFwcGVkIGdyYW50IHJlZ2lvbiAlcCB3aXRoICVkIHBhZ2VzXG4iLAorICAgIHhl bl9iZV91bm1hcF9ncmFudF9yZWZzKHhlbmRldiwgcmVnaW9uLT5hZGRyLCByZWdpb24tPm51bSk7 CisgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDMsICJ1bm1hcHBlZCBncmFudCByZWdpb24gJXAg d2l0aCAlZCBwYWdlc1xuIiwKICAgICAgICAgICAgICAgICAgIHJlZ2lvbi0+YWRkciwgcmVnaW9u LT5udW0pOwogICAgIGdfZnJlZShyZWdpb24pOwogfQpAQCAtMzA0LDcgKzI5Myw2IEBAIHN0YXRp YyBpbnQgaW9yZXFfcGFyc2Uoc3RydWN0IGlvcmVxICppb3JlcSkKICAgICAgICAgICAgIGdvdG8g ZXJyOwogICAgICAgICB9CiAKLSAgICAgICAgaW9yZXEtPmRvbWlkc1tpXSA9IGJsa2Rldi0+eGVu ZGV2LmRvbTsKICAgICAgICAgaW9yZXEtPnJlZnNbaV0gICA9IGlvcmVxLT5yZXEuc2VnW2ldLmdy ZWY7CiAKICAgICAgICAgbWVtID0gaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCAqIGJsa2Rl di0+ZmlsZV9ibGs7CkBAIC0zMjQsNyArMzEyLDggQEAgZXJyOgogCiBzdGF0aWMgdm9pZCBpb3Jl cV91bm1hcChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogewotICAgIHhlbmdudHRhYl9oYW5kbGUgKmdu dCA9IGlvcmVxLT5ibGtkZXYtPnhlbmRldi5nbnR0YWJkZXY7CisgICAgc3RydWN0IFhlbkJsa0Rl diAqYmxrZGV2ID0gaW9yZXEtPmJsa2RldjsKKyAgICBzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYg PSAmYmxrZGV2LT54ZW5kZXY7CiAgICAgaW50IGk7CiAKICAgICBpZiAoaW9yZXEtPm51bV91bm1h cCA9PSAwIHx8IGlvcmVxLT5tYXBwZWQgPT0gMCkgewpAQCAtMzM0LDExICszMjMsNyBAQCBzdGF0 aWMgdm9pZCBpb3JlcV91bm1hcChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgICAgICBpZiAoIWlv cmVxLT5wYWdlcykgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlm ICh4ZW5nbnR0YWJfdW5tYXAoZ250LCBpb3JlcS0+cGFnZXMsIGlvcmVxLT5udW1fdW5tYXApICE9 IDApIHsKLSAgICAgICAgICAgIHhlbl9wdl9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwg MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInhlbmdudHRhYl91bm1hcCBmYWlsZWQ6ICVz XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAg ICB9CisgICAgICAgIHhlbl9iZV91bm1hcF9ncmFudF9yZWZzKHhlbmRldiwgaW9yZXEtPnBhZ2Vz LCBpb3JlcS0+bnVtX3VubWFwKTsKICAgICAgICAgaW9yZXEtPmJsa2Rldi0+Y250X21hcCAtPSBp b3JlcS0+bnVtX3VubWFwOwogICAgICAgICBpb3JlcS0+cGFnZXMgPSBOVUxMOwogICAgIH0gZWxz ZSB7CkBAIC0zNDYsMTEgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGlvcmVxX3VubWFwKHN0cnVjdCBp b3JlcSAqaW9yZXEpCiAgICAgICAgICAgICBpZiAoIWlvcmVxLT5wYWdlW2ldKSB7CiAgICAgICAg ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoeGVuZ250 dGFiX3VubWFwKGdudCwgaW9yZXEtPnBhZ2VbaV0sIDEpICE9IDApIHsKLSAgICAgICAgICAgICAg ICB4ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDAsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAieGVuZ250dGFiX3VubWFwIGZhaWxlZDogJXNcbiIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgfQor ICAgICAgICAgICAgeGVuX2JlX3VubWFwX2dyYW50X3JlZih4ZW5kZXYsIGlvcmVxLT5wYWdlW2ld KTsKICAgICAgICAgICAgIGlvcmVxLT5ibGtkZXYtPmNudF9tYXAtLTsKICAgICAgICAgICAgIGlv cmVxLT5wYWdlW2ldID0gTlVMTDsKICAgICAgICAgfQpAQCAtMzYwLDE0ICszNDEsMTQgQEAgc3Rh dGljIHZvaWQgaW9yZXFfdW5tYXAoc3RydWN0IGlvcmVxICppb3JlcSkKIAogc3RhdGljIGludCBp b3JlcV9tYXAoc3RydWN0IGlvcmVxICppb3JlcSkKIHsKLSAgICB4ZW5nbnR0YWJfaGFuZGxlICpn bnQgPSBpb3JlcS0+YmxrZGV2LT54ZW5kZXYuZ250dGFiZGV2OwotICAgIHVpbnQzMl90IGRvbWlk c1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOworICAgIHN0cnVjdCBYZW5CbGtEZXYg KmJsa2RldiA9IGlvcmVxLT5ibGtkZXY7CisgICAgc3RydWN0IFhlbkRldmljZSAqeGVuZGV2ID0g JmJsa2Rldi0+eGVuZGV2OwogICAgIHVpbnQzMl90IHJlZnNbQkxLSUZfTUFYX1NFR01FTlRTX1BF Ul9SRVFVRVNUXTsKICAgICB2b2lkICpwYWdlW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVT VF07CiAgICAgaW50IGksIGosIG5ld19tYXBzID0gMDsKICAgICBQZXJzaXN0ZW50R3JhbnQgKmdy YW50OwogICAgIFBlcnNpc3RlbnRSZWdpb24gKnJlZ2lvbjsKLSAgICAvKiBkb21pZHMgYW5kIHJl ZnMgdmFyaWFibGVzIHdpbGwgY29udGFpbiB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5CisgICAg LyogcmVmcyB2YXJpYWJsZSB3aWxsIGNvbnRhaW4gdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeQog ICAgICAqIHRvIG1hcCB0aGUgZ3JhbnRzIHRoYXQgYXJlIG5lZWRlZCB0byBmdWxmaWxsIHRoaXMg cmVxdWVzdC4KICAgICAgKgogICAgICAqIEFmdGVyIG1hcHBpbmcgdGhlIG5lZWRlZCBncmFudHMs IHRoZSBwYWdlIGFycmF5IHdpbGwgY29udGFpbiB0aGUKQEAgLTM5Miw3ICszNzMsNiBAQCBzdGF0 aWMgaW50IGlvcmVxX21hcChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgICAgICAgICAgICAgICAg ICAvKiBBZGQgdGhlIGdyYW50IHRvIHRoZSBsaXN0IG9mIGdyYW50cyB0aGF0CiAgICAgICAgICAg ICAgICAgICAgICAqIHNob3VsZCBiZSBtYXBwZWQKICAgICAgICAgICAgICAgICAgICAgICovCi0g ICAgICAgICAgICAgICAgICAgIGRvbWlkc1tuZXdfbWFwc10gPSBpb3JlcS0+ZG9taWRzW2ldOwog ICAgICAgICAgICAgICAgICAgICByZWZzW25ld19tYXBzXSA9IGlvcmVxLT5yZWZzW2ldOwogICAg ICAgICAgICAgICAgICAgICBwYWdlW2ldID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgbmV3 X21hcHMrKzsKQEAgLTQwNSwxNCArMzg1LDEzIEBAIHN0YXRpYyBpbnQgaW9yZXFfbWFwKHN0cnVj dCBpb3JlcSAqaW9yZXEpCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogQWxsIGdyYW50cyBpbiB0 aGUgcmVxdWVzdCBzaG91bGQgYmUgbWFwcGVkICovCiAgICAgICAgIG1lbWNweShyZWZzLCBpb3Jl cS0+cmVmcywgc2l6ZW9mKHJlZnMpKTsKLSAgICAgICAgbWVtY3B5KGRvbWlkcywgaW9yZXEtPmRv bWlkcywgc2l6ZW9mKGRvbWlkcykpOwogICAgICAgICBtZW1zZXQocGFnZSwgMCwgc2l6ZW9mKHBh Z2UpKTsKICAgICAgICAgbmV3X21hcHMgPSBpb3JlcS0+di5uaW92OwogICAgIH0KIAogICAgIGlm IChiYXRjaF9tYXBzICYmIG5ld19tYXBzKSB7Ci0gICAgICAgIGlvcmVxLT5wYWdlcyA9IHhlbmdu dHRhYl9tYXBfZ3JhbnRfcmVmcwotICAgICAgICAgICAgKGdudCwgbmV3X21hcHMsIGRvbWlkcywg cmVmcywgaW9yZXEtPnByb3QpOworICAgICAgICBpb3JlcS0+cGFnZXMgPSB4ZW5fYmVfbWFwX2dy YW50X3JlZnMoeGVuZGV2LCByZWZzLCBuZXdfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvcmVxLT5wcm90KTsKICAgICAgICAgaWYgKGlvcmVxLT5w YWdlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKCZpb3JlcS0+YmxrZGV2 LT54ZW5kZXYsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBtYXAgJWQgZ3Jh bnQgcmVmcyAoJXMsICVkIG1hcHMpXG4iLApAQCAtNDI3LDggKzQwNiw4IEBAIHN0YXRpYyBpbnQg aW9yZXFfbWFwKHN0cnVjdCBpb3JlcSAqaW9yZXEpCiAgICAgICAgIGlvcmVxLT5ibGtkZXYtPmNu dF9tYXAgKz0gbmV3X21hcHM7CiAgICAgfSBlbHNlIGlmIChuZXdfbWFwcykgIHsKICAgICAgICAg Zm9yIChpID0gMDsgaSA8IG5ld19tYXBzOyBpKyspIHsKLSAgICAgICAgICAgIGlvcmVxLT5wYWdl W2ldID0geGVuZ250dGFiX21hcF9ncmFudF9yZWYKLSAgICAgICAgICAgICAgICAoZ250LCBkb21p ZHNbaV0sIHJlZnNbaV0sIGlvcmVxLT5wcm90KTsKKyAgICAgICAgICAgIGlvcmVxLT5wYWdlW2ld ID0geGVuX2JlX21hcF9ncmFudF9yZWYoeGVuZGV2LCByZWZzW2ldLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3JlcS0+cHJvdCk7CiAgICAgICAg ICAgICBpZiAoaW9yZXEtPnBhZ2VbaV0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHhlbl9w dl9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJjYW4ndCBtYXAgZ3JhbnQgcmVmICVkICglcywgJWQgbWFwcylcbiIsCkBAIC01 MjcsMTAgKzUwNiwxMiBAQCBzdGF0aWMgaW50IGlvcmVxX2luaXRfY29weV9idWZmZXJzKHN0cnVj dCBpb3JlcSAqaW9yZXEpCiAKIHN0YXRpYyBpbnQgaW9yZXFfZ3JhbnRfY29weShzdHJ1Y3QgaW9y ZXEgKmlvcmVxKQogewotICAgIHhlbmdudHRhYl9oYW5kbGUgKmdudCA9IGlvcmVxLT5ibGtkZXYt PnhlbmRldi5nbnR0YWJkZXY7Ci0gICAgeGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90IHNl Z3NbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKKyAgICBzdHJ1Y3QgWGVuQmxrRGV2 ICpibGtkZXYgPSBpb3JlcS0+YmxrZGV2OworICAgIHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldiA9 ICZibGtkZXYtPnhlbmRldjsKKyAgICBYZW5HcmFudENvcHlTZWdtZW50IHNlZ3NbQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKICAgICBpbnQgaSwgY291bnQsIHJjOwogICAgIGludDY0 X3QgZmlsZV9ibGsgPSBpb3JlcS0+YmxrZGV2LT5maWxlX2JsazsKKyAgICBib29sIHRvX2RvbWFp biA9IChpb3JlcS0+cmVxLm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9SRUFEKTsKIAogICAgIGlmIChp b3JlcS0+di5uaW92ID09IDApIHsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MzksMTYgKzUyMCwx MiBAQCBzdGF0aWMgaW50IGlvcmVxX2dyYW50X2NvcHkoc3RydWN0IGlvcmVxICppb3JlcSkKICAg ICBjb3VudCA9IGlvcmVxLT52Lm5pb3Y7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr KykgewotICAgICAgICBpZiAoaW9yZXEtPnJlcS5vcGVyYXRpb24gPT0gQkxLSUZfT1BfUkVBRCkg ewotICAgICAgICAgICAgc2Vnc1tpXS5mbGFncyA9IEdOVENPUFlfZGVzdF9ncmVmOworICAgICAg ICBpZiAodG9fZG9tYWluKSB7CiAgICAgICAgICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5yZWYg PSBpb3JlcS0+cmVmc1tpXTsKLSAgICAgICAgICAgIHNlZ3NbaV0uZGVzdC5mb3JlaWduLmRvbWlk ID0gaW9yZXEtPmRvbWlkc1tpXTsKICAgICAgICAgICAgIHNlZ3NbaV0uZGVzdC5mb3JlaWduLm9m ZnNldCA9IGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKiBmaWxlX2JsazsKICAgICAgICAg ICAgIHNlZ3NbaV0uc291cmNlLnZpcnQgPSBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7CiAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZWdzW2ldLmZsYWdzID0gR05UQ09QWV9zb3VyY2Vf Z3JlZjsKICAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVpZ24ucmVmID0gaW9yZXEtPnJl ZnNbaV07Ci0gICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLmRvbWlkID0gaW9yZXEt PmRvbWlkc1tpXTsKICAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVpZ24ub2Zmc2V0ID0g aW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCAqIGZpbGVfYmxrOwogICAgICAgICAgICAgc2Vn c1tpXS5kZXN0LnZpcnQgPSBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2U7CiAgICAgICAgIH0KQEAg LTU1Niw3ICs1MzMsNyBAQCBzdGF0aWMgaW50IGlvcmVxX2dyYW50X2NvcHkoc3RydWN0IGlvcmVx ICppb3JlcSkKICAgICAgICAgICAgICAgICAgICAgICAgLSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJz dF9zZWN0ICsgMSkgKiBmaWxlX2JsazsKICAgICB9CiAKLSAgICByYyA9IHhlbmdudHRhYl9ncmFu dF9jb3B5KGdudCwgY291bnQsIHNlZ3MpOworICAgIHJjID0geGVuX2JlX2NvcHlfZ3JhbnRfcmVm cyh4ZW5kZXYsIHRvX2RvbWFpbiwgc2VncywgY291bnQpOwogCiAgICAgaWYgKHJjKSB7CiAgICAg ICAgIHhlbl9wdl9wcmludGYoJmlvcmVxLT5ibGtkZXYtPnhlbmRldiwgMCwKQEAgLTU2NSwxNiAr NTQyLDYgQEAgc3RhdGljIGludCBpb3JlcV9ncmFudF9jb3B5KHN0cnVjdCBpb3JlcSAqaW9yZXEp CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewotICAgICAgICBpZiAoc2Vnc1tpXS5zdGF0dXMgIT0gR05UU1Rfb2theSkgewotICAg ICAgICAgICAgeGVuX3B2X3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGNvcHkgZGF0YSAlZCBmb3IgZ3JlZiAlZCwg ZG9taWQgJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ3NbaV0uc3RhdHVzLCBp b3JlcS0+cmVmc1tpXSwgaW9yZXEtPmRvbWlkc1tpXSk7Ci0gICAgICAgICAgICBpb3JlcS0+YWlv X2Vycm9ycysrOwotICAgICAgICAgICAgcmMgPSAtMTsKLSAgICAgICAgfQotICAgIH0KLQogICAg IHJldHVybiByYzsKIH0KIApAQCAtMTA2Nyw3ICsxMDM0LDYgQEAgc3RhdGljIGludCBibGtfY29u bmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgaW50IG9yZGVyLCByaW5nX3JlZjsK ICAgICB1bnNpZ25lZCBpbnQgcmluZ19zaXplLCBtYXhfZ3JhbnRzOwogICAgIHVuc2lnbmVkIGlu dCBpOwotICAgIHVpbnQzMl90ICpkb21pZHM7CiAKICAgICB0cmFjZV94ZW5fZGlza19jb25uZWN0 KHhlbmRldi0+bmFtZSk7CiAKQEAgLTEyMjksMzEgKzExOTUsMTEgQEAgc3RhdGljIGludCBibGtf Y29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgLyogQWRkIG9uIHRoZSBudW1i ZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAqLwogICAgIG1heF9ncmFudHMgKz0gYmxrZGV2 LT5ucl9yaW5nX3JlZjsKIAotICAgIGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiA9IHhlbmdudHRh Yl9vcGVuKE5VTEwsIDApOwotICAgIGlmIChibGtkZXYtPnhlbmRldi5nbnR0YWJkZXYgPT0gTlVM TCkgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgInhlbmdudHRhYl9vcGVuIGZh aWxlZDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSAg ICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoeGVuZ250dGFiX3NldF9tYXhfZ3JhbnRz KGJsa2Rldi0+eGVuZGV2LmdudHRhYmRldiwgbWF4X2dyYW50cykpIHsKLSAgICAgICAgeGVuX3B2 X3ByaW50Zih4ZW5kZXYsIDAsICJ4ZW5nbnR0YWJfc2V0X21heF9ncmFudHMgZmFpbGVkOiAlc1xu IiwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICByZXR1 cm4gLTE7Ci0gICAgfQotCi0gICAgZG9taWRzID0gZ19uZXcwKHVpbnQzMl90LCBibGtkZXYtPm5y X3JpbmdfcmVmKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgYmxrZGV2LT5ucl9yaW5nX3JlZjsgaSsr KSB7Ci0gICAgICAgIGRvbWlkc1tpXSA9IGJsa2Rldi0+eGVuZGV2LmRvbTsKLSAgICB9Ci0KLSAg ICBibGtkZXYtPnNyaW5nID0geGVuZ250dGFiX21hcF9ncmFudF9yZWZzKGJsa2Rldi0+eGVuZGV2 LmdudHRhYmRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJsa2Rldi0+bnJfcmluZ19yZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb21pZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBibGtkZXYtPnJpbmdfcmVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0KLSAgICBnX2ZyZWUoZG9t aWRzKTsKKyAgICB4ZW5fYmVfc2V0X21heF9ncmFudF9yZWZzKHhlbmRldiwgbWF4X2dyYW50cyk7 CiAKKyAgICBibGtkZXYtPnNyaW5nID0geGVuX2JlX21hcF9ncmFudF9yZWZzKHhlbmRldiwgYmxr ZGV2LT5yaW5nX3JlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJsa2Rldi0+bnJfcmluZ19yZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKICAgICBpZiAoIWJsa2Rldi0+c3Jpbmcp IHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTEzMjYsOCArMTI3Miw4IEBAIHN0YXRp YyB2b2lkIGJsa19kaXNjb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKICAgICBhaW9f Y29udGV4dF9yZWxlYXNlKGJsa2Rldi0+Y3R4KTsKIAogICAgIGlmIChibGtkZXYtPnNyaW5nKSB7 Ci0gICAgICAgIHhlbmdudHRhYl91bm1hcChibGtkZXYtPnhlbmRldi5nbnR0YWJkZXYsIGJsa2Rl di0+c3JpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPm5yX3JpbmdfcmVmKTsK KyAgICAgICAgeGVuX2JlX3VubWFwX2dyYW50X3JlZnMoeGVuZGV2LCBibGtkZXYtPnNyaW5nLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPm5yX3JpbmdfcmVmKTsKICAg ICAgICAgYmxrZGV2LT5jbnRfbWFwLS07CiAgICAgICAgIGJsa2Rldi0+c3JpbmcgPSBOVUxMOwog ICAgIH0KQEAgLTEzNTEsMTEgKzEyOTcsNiBAQCBzdGF0aWMgdm9pZCBibGtfZGlzY29ubmVjdChz dHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiAgICAgICAgIH0KICAgICAgICAgYmxrZGV2LT5mZWF0 dXJlX3BlcnNpc3RlbnQgPSBmYWxzZTsKICAgICB9Ci0KLSAgICBpZiAoYmxrZGV2LT54ZW5kZXYu Z250dGFiZGV2KSB7Ci0gICAgICAgIHhlbmdudHRhYl9jbG9zZShibGtkZXYtPnhlbmRldi5nbnR0 YWJkZXYpOwotICAgICAgICBibGtkZXYtPnhlbmRldi5nbnR0YWJkZXYgPSBOVUxMOwotICAgIH0K IH0KIAogc3RhdGljIGludCBibGtfZnJlZShzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCkBAIC0x MzkyLDEwICsxMzMzLDExIEBAIHN0YXRpYyB2b2lkIGJsa19ldmVudChzdHJ1Y3QgWGVuRGV2aWNl ICp4ZW5kZXYpCiB9CiAKIHN0cnVjdCBYZW5EZXZPcHMgeGVuX2Jsa2Rldl9vcHMgPSB7CisgICAg LmZsYWdzICAgICAgPSBERVZPUFNfRkxBR19ORUVEX0dOVERFViwKICAgICAuc2l6ZSAgICAgICA9 IHNpemVvZihzdHJ1Y3QgWGVuQmxrRGV2KSwKICAgICAuYWxsb2MgICAgICA9IGJsa19hbGxvYywK ICAgICAuaW5pdCAgICAgICA9IGJsa19pbml0LAotICAgIC5pbml0aWFsaXNlICAgID0gYmxrX2Nv bm5lY3QsCisgICAgLmluaXRpYWxpc2UgPSBibGtfY29ubmVjdCwKICAgICAuZGlzY29ubmVjdCA9 IGJsa19kaXNjb25uZWN0LAogICAgIC5ldmVudCAgICAgID0gYmxrX2V2ZW50LAogICAgIC5mcmVl ICAgICAgID0gYmxrX2ZyZWUsCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=