From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 09/18] xen: remove unnecessary code from dataplane/xen-qdisk.c Date: Wed, 21 Nov 2018 15:12:02 +0000 Message-ID: <20181121151211.15997-10-paul.durrant@citrix.com> References: <20181121151211.15997-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gPUB0-0007Jn-4B for xen-devel@lists.xenproject.org; Wed, 21 Nov 2018 15:12:26 +0000 In-Reply-To: <20181121151211.15997-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-block@nongnu.org, qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Kevin Wolf , Stefano Stabellini , Max Reitz , Paul Durrant , Stefan Hajnoczi , Anthony Perard List-Id: xen-devel@lists.xenproject.org Tm90IGFsbCBvZiB0aGUgY29kZSBkdXBsaWNhdGVkIGZyb20geGVuX2Rpc2suYyBpcyByZXF1aXJl ZCBhcyB0aGUgYmFzaXMgZm9yCnRoZSBuZXcgZGF0YXBsYW5lIGltcGxlbWVudGF0aW9uIHNvIHRo aXMgcGF0Y2ggcmVtb3ZlcyBleHRyYW5lb3VzIGNvZGUsCmFsb25nIHdpdGggdGhlIGxlZ2FjeSAj aW5jbHVkZXMgYW5kIGNhbGxzIHRvIHRoZSBsZWdhY3kgeGVuX3B2X3ByaW50ZigpCmZ1bmN0aW9u LiBFcnJvciBtZXNzYWdlcyBhcmUgY2hhbmdlZCB0byBiZSByZXBvcnRlZCB1c2luZyBlcnJvcl9y ZXBvcnQoKS4KCk5PVEU6IFRoZSBjb2RlIGlzIHN0aWxsIG5vdCB5ZXQgYnVpbHQuIEZ1cnRoZXIg dHJhbnNmb3JtYXRpb25zIHdpbGwgYmUKICAgICAgcmVxdWlyZWQgdG8gbWFrZSBpdCBjb3JyZWN0 bHkgaW50ZXJmYWNlIHRvIHRoZSBuZXcgWGVuQnVzL1hlbkRldmljZQogICAgICBmcmFtZXdvcmsu IFRoZXkgd2lsbCBiZSBkZWxpdmVyZWQgaW4gYSBzdWJzZXF1ZW50IHBhdGNoLgoKU2lnbmVkLW9m Zi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNjOiBTdGVm YW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBBbnRob255IFBlcmFy ZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFu aGFAcmVkaGF0LmNvbT4KQ2M6IEtldmluIFdvbGYgPGt3b2xmQHJlZGhhdC5jb20+CkNjOiBNYXgg UmVpdHogPG1yZWl0ekByZWRoYXQuY29tPgotLS0KIGh3L2Jsb2NrL2RhdGFwbGFuZS94ZW4tcWRp c2suYyB8IDQyMiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9ody9ibG9jay9kYXRhcGxhbmUveGVuLXFkaXNrLmMgYi9ody9ibG9jay9kYXRhcGxhbmUv eGVuLXFkaXNrLmMKaW5kZXggOWZhZTUwNTM0ZS4uOGU0MzY4ZTdhZiAxMDA2NDQKLS0tIGEvaHcv YmxvY2svZGF0YXBsYW5lL3hlbi1xZGlzay5jCisrKyBiL2h3L2Jsb2NrL2RhdGFwbGFuZS94ZW4t cWRpc2suYwpAQCAtMSw0NSArMSwxMCBAQAogLyoKLSAqICB4ZW4gcGFyYXZpcnQgYmxvY2sgZGV2 aWNlIGJhY2tlbmQKKyAqIENvcHlyaWdodCAoYykgQ2l0cml4IFN5c3RlbXMgSW5jLgorICogQWxs IHJpZ2h0cyByZXNlcnZlZC4KICAqCi0gKiAgKGMpIEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRo YXQuY29tPgotICoKLSAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gKiAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdW5kZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgot ICoKLSAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotICog IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0gKgotICogIENvbnRyaWJ1dGlvbnMgYWZ0ZXIgMjAxMi0wMS0xMyBhcmUgbGljZW5z ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotICogIEdOVSBHUEwsIHZlcnNpb24gMiBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogQmFzZWQgb24gb3JpZ2luYWwgY29k ZSAoYykgR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CiAgKi8KIAotI2luY2x1ZGUg InFlbXUvb3NkZXAuaCIKLSNpbmNsdWRlICJxZW11L3VuaXRzLmgiCi0jaW5jbHVkZSA8c3lzL2lv Y3RsLmg+Ci0jaW5jbHVkZSA8c3lzL3Vpby5oPgotCi0jaW5jbHVkZSAiaHcvaHcuaCIKLSNpbmNs dWRlICJody94ZW4veGVuX2JhY2tlbmQuaCIKLSNpbmNsdWRlICJ4ZW5fYmxraWYuaCIKLSNpbmNs dWRlICJzeXNlbXUvYmxvY2tkZXYuaCIKLSNpbmNsdWRlICJzeXNlbXUvaW90aHJlYWQuaCIKLSNp bmNsdWRlICJzeXNlbXUvYmxvY2stYmFja2VuZC5oIgotI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIK LSNpbmNsdWRlICJxYXBpL3FtcC9xZGljdC5oIgotI2luY2x1ZGUgInFhcGkvcW1wL3FzdHJpbmcu aCIKLSNpbmNsdWRlICJ0cmFjZS5oIgotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNkZWZpbmUgQkxPQ0tfU0la RSAgNTEyCi0jZGVmaW5lIElPQ0JfQ09VTlQgIChCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVF U1QgKyAyKQotCiBzdHJ1Y3QgaW9yZXEgewogICAgIGJsa2lmX3JlcXVlc3RfdCAgICAgcmVxOwog ICAgIGludDE2X3QgICAgICAgICAgICAgc3RhdHVzOwpAQCAtMTAxLDggKzY2LDYgQEAgc3RydWN0 IFhlbkJsa0RldiB7CiAgICAgQWlvQ29udGV4dCAgICAgICAgICAqY3R4OwogfTsKIAotLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLwotCiBzdGF0aWMgdm9pZCBpb3JlcV9yZXNldChzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogewog ICAgIG1lbXNldCgmaW9yZXEtPnJlcSwgMCwgc2l6ZW9mKGlvcmVxLT5yZXEpKTsKQEAgLTE4Mywx MSArMTQ2LDYgQEAgc3RhdGljIGludCBpb3JlcV9wYXJzZShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQog ICAgIHNpemVfdCBsZW47CiAgICAgaW50IGk7CiAKLSAgICB4ZW5fcHZfcHJpbnRmKAotICAgICAg ICB4ZW5kZXYsIDMsCi0gICAgICAgICJvcCAlZCwgbnIgJWQsIGhhbmRsZSAlZCwgaWQgJSIgUFJJ ZDY0ICIsIHNlY3RvciAlIiBQUklkNjQgIlxuIiwKLSAgICAgICAgaW9yZXEtPnJlcS5vcGVyYXRp b24sIGlvcmVxLT5yZXEubnJfc2VnbWVudHMsCi0gICAgICAgIGlvcmVxLT5yZXEuaGFuZGxlLCBp b3JlcS0+cmVxLmlkLCBpb3JlcS0+cmVxLnNlY3Rvcl9udW1iZXIpOwogICAgIHN3aXRjaCAoaW9y ZXEtPnJlcS5vcGVyYXRpb24pIHsKICAgICBjYXNlIEJMS0lGX09QX1JFQUQ6CiAgICAgICAgIGJy ZWFrOwpAQCAtMjAyLDI4ICsxNjAsMjcgQEAgc3RhdGljIGludCBpb3JlcV9wYXJzZShzdHJ1Y3Qg aW9yZXEgKmlvcmVxKQogICAgIGNhc2UgQkxLSUZfT1BfRElTQ0FSRDoKICAgICAgICAgcmV0dXJu IDA7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDAsICJlcnJv cjogdW5rbm93biBvcGVyYXRpb24gKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBpb3Jl cS0+cmVxLm9wZXJhdGlvbik7CisgICAgICAgIGVycm9yX3JlcG9ydCgiZXJyb3I6IHVua25vd24g b3BlcmF0aW9uICglZCkiLCBpb3JlcS0+cmVxLm9wZXJhdGlvbik7CiAgICAgICAgIGdvdG8gZXJy OwogICAgIH07CiAKICAgICBpZiAoaW9yZXEtPnJlcS5vcGVyYXRpb24gIT0gQkxLSUZfT1BfUkVB RCAmJiBibGtkZXYtPm1vZGVbMF0gIT0gJ3cnKSB7Ci0gICAgICAgIHhlbl9wdl9wcmludGYoeGVu ZGV2LCAwLCAiZXJyb3I6IHdyaXRlIHJlcSBmb3Igcm8gZGV2aWNlXG4iKTsKKyAgICAgICAgZXJy b3JfcmVwb3J0KCJlcnJvcjogd3JpdGUgcmVxIGZvciBybyBkZXZpY2UiKTsKICAgICAgICAgZ290 byBlcnI7CiAgICAgfQogCiAgICAgaW9yZXEtPnN0YXJ0ID0gaW9yZXEtPnJlcS5zZWN0b3JfbnVt YmVyICogYmxrZGV2LT5maWxlX2JsazsKICAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEtPnJlcS5u cl9zZWdtZW50czsgaSsrKSB7CiAgICAgICAgIGlmIChpID09IEJMS0lGX01BWF9TRUdNRU5UU19Q RVJfUkVRVUVTVCkgewotICAgICAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDAsICJlcnJv cjogbnJfc2VnbWVudHMgdG9vIGJpZ1xuIik7CisgICAgICAgICAgICBlcnJvcl9yZXBvcnQoImVy cm9yOiBucl9zZWdtZW50cyB0b28gYmlnIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAg ICAgfQogICAgICAgICBpZiAoaW9yZXEtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCA+IGlvcmVxLT5y ZXEuc2VnW2ldLmxhc3Rfc2VjdCkgewotICAgICAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYs IDAsICJlcnJvcjogZmlyc3QgPiBsYXN0IHNlY3RvclxuIik7CisgICAgICAgICAgICBlcnJvcl9y ZXBvcnQoImVycm9yOiBmaXJzdCA+IGxhc3Qgc2VjdG9yIik7CiAgICAgICAgICAgICBnb3RvIGVy cjsKICAgICAgICAgfQogICAgICAgICBpZiAoaW9yZXEtPnJlcS5zZWdbaV0ubGFzdF9zZWN0ICog QkxPQ0tfU0laRSA+PSBYQ19QQUdFX1NJWkUpIHsKLSAgICAgICAgICAgIHhlbl9wdl9wcmludGYo eGVuZGV2LCAwLCAiZXJyb3I6IHBhZ2UgY3Jvc3NpbmdcbiIpOworICAgICAgICAgICAgZXJyb3Jf cmVwb3J0KCJlcnJvcjogcGFnZSBjcm9zc2luZyIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAg ICAgICAgIH0KIApAQCAtMjMyLDcgKzE4OSw3IEBAIHN0YXRpYyBpbnQgaW9yZXFfcGFyc2Uoc3Ry dWN0IGlvcmVxICppb3JlcSkKICAgICAgICAgaW9yZXEtPnNpemUgKz0gbGVuOwogICAgIH0KICAg ICBpZiAoaW9yZXEtPnN0YXJ0ICsgaW9yZXEtPnNpemUgPiBibGtkZXYtPmZpbGVfc2l6ZSkgewot ICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgImVycm9yOiBhY2Nlc3MgYmV5b25kIGVu ZCBvZiBmaWxlXG4iKTsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJlcnJvcjogYWNjZXNzIGJleW9u ZCBlbmQgb2YgZmlsZSIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgcmV0dXJuIDA7 CkBAIC0yNzgsOCArMjM1LDcgQEAgc3RhdGljIGludCBpb3JlcV9ncmFudF9jb3B5KHN0cnVjdCBp b3JlcSAqaW9yZXEpCiAgICAgcmMgPSB4ZW5fYmVfY29weV9ncmFudF9yZWZzKHhlbmRldiwgdG9f ZG9tYWluLCBzZWdzLCBjb3VudCk7CiAKICAgICBpZiAocmMpIHsKLSAgICAgICAgeGVuX3B2X3By aW50Zih4ZW5kZXYsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBjb3B5IGRh dGEgJWRcbiIsIHJjKTsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJmYWlsZWQgdG8gY29weSBkYXRh ICVkIiwgcmMpOwogICAgICAgICBpb3JlcS0+YWlvX2Vycm9ycysrOwogICAgICAgICByZXR1cm4g LTE7CiAgICAgfQpAQCAtMjk4LDggKzI1NCw5IEBAIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2NvbXBs ZXRlKHZvaWQgKm9wYXF1ZSwgaW50IHJldCkKICAgICBhaW9fY29udGV4dF9hY3F1aXJlKGJsa2Rl di0+Y3R4KTsKIAogICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICB4ZW5fcHZfcHJpbnRmKHhl bmRldiwgMCwgIiVzIEkvTyBlcnJvclxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBpb3JlcS0+ cmVxLm9wZXJhdGlvbiA9PSBCTEtJRl9PUF9SRUFEID8gInJlYWQiIDogIndyaXRlIik7CisgICAg ICAgIGVycm9yX3JlcG9ydCgiJXMgSS9PIGVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgIGlv cmVxLT5yZXEub3BlcmF0aW9uID09IEJMS0lGX09QX1JFQUQgPworICAgICAgICAgICAgICAgICAg ICAgInJlYWQiIDogIndyaXRlIik7CiAgICAgICAgIGlvcmVxLT5haW9fZXJyb3JzKys7CiAgICAg fQogCkBAIC02MDUsOCArNTYyLDYgQEAgc3RhdGljIHZvaWQgYmxrX2hhbmRsZV9yZXF1ZXN0cyhz dHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCiAgICAgfQogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KIHN0YXRp YyB2b2lkIGJsa19iaCh2b2lkICpvcGFxdWUpCiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxr ZGV2ID0gb3BhcXVlOwpAQCAtNjM0LDM0NiArNTg5LDYgQEAgc3RhdGljIHZvaWQgYmxrX2FsbG9j KHN0cnVjdCBYZW5MZWdhY3lEZXZpY2UgKnhlbmRldikKICAgICBibGtkZXYtPmJoID0gYWlvX2Jo X25ldyhibGtkZXYtPmN0eCwgYmxrX2JoLCBibGtkZXYpOwogfQogCi1zdGF0aWMgdm9pZCBibGtf cGFyc2VfZGlzY2FyZChzdHJ1Y3QgWGVuQmxrRGV2ICpibGtkZXYpCi17Ci0gICAgc3RydWN0IFhl bkxlZ2FjeURldmljZSAqeGVuZGV2ID0gJmJsa2Rldi0+eGVuZGV2OwotICAgIGludCBlbmFibGU7 Ci0KLSAgICBibGtkZXYtPmZlYXR1cmVfZGlzY2FyZCA9IHRydWU7Ci0KLSAgICBpZiAoeGVuc3Rv cmVfcmVhZF9iZV9pbnQoeGVuZGV2LCAiZGlzY2FyZC1lbmFibGUiLCAmZW5hYmxlKSA9PSAwKSB7 Ci0gICAgICAgIGJsa2Rldi0+ZmVhdHVyZV9kaXNjYXJkID0gISFlbmFibGU7Ci0gICAgfQotCi0g ICAgaWYgKGJsa2Rldi0+ZmVhdHVyZV9kaXNjYXJkKSB7Ci0gICAgICAgIHhlbnN0b3JlX3dyaXRl X2JlX2ludCh4ZW5kZXYsICJmZWF0dXJlLWRpc2NhcmQiLCAxKTsKLSAgICB9Ci19Ci0KLXN0YXRp YyBpbnQgYmxrX2luaXQoc3RydWN0IFhlbkxlZ2FjeURldmljZSAqeGVuZGV2KQotewotICAgIHN0 cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5C bGtEZXYsIHhlbmRldik7Ci0gICAgaW50IGluZm8gPSAwOwotICAgIGNoYXIgKmRpcmVjdGlvc2Fm ZSA9IE5VTEw7Ci0KLSAgICB0cmFjZV94ZW5fZGlza19pbml0KHhlbmRldi0+bmFtZSk7Ci0KLSAg ICAvKiByZWFkIHhlbnN0b3JlIGVudHJpZXMgKi8KLSAgICBpZiAoYmxrZGV2LT5wYXJhbXMgPT0g TlVMTCkgewotICAgICAgICBjaGFyICpoID0gTlVMTDsKLSAgICAgICAgYmxrZGV2LT5wYXJhbXMg PSB4ZW5zdG9yZV9yZWFkX2JlX3N0cih4ZW5kZXYsICJwYXJhbXMiKTsKLSAgICAgICAgaWYgKGJs a2Rldi0+cGFyYW1zICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGggPSBzdHJjaHIoYmxrZGV2LT5w YXJhbXMsICc6Jyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGggIT0gTlVMTCkgewotICAgICAg ICAgICAgYmxrZGV2LT5maWxlcHJvdG8gPSBibGtkZXYtPnBhcmFtczsKLSAgICAgICAgICAgIGJs a2Rldi0+ZmlsZW5hbWUgID0gaCArIDE7Ci0gICAgICAgICAgICAqaCA9IDA7Ci0gICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICBibGtkZXYtPmZpbGVwcm90byA9ICI8dW5zZXQ+IjsKLSAgICAg ICAgICAgIGJsa2Rldi0+ZmlsZW5hbWUgID0gYmxrZGV2LT5wYXJhbXM7Ci0gICAgICAgIH0KLSAg ICB9Ci0gICAgaWYgKCFzdHJjbXAoImFpbyIsIGJsa2Rldi0+ZmlsZXByb3RvKSkgewotICAgICAg ICBibGtkZXYtPmZpbGVwcm90byA9ICJyYXciOwotICAgIH0KLSAgICBpZiAoIXN0cmNtcCgidmhk IiwgYmxrZGV2LT5maWxlcHJvdG8pKSB7Ci0gICAgICAgIGJsa2Rldi0+ZmlsZXByb3RvID0gInZw YyI7Ci0gICAgfQotICAgIGlmIChibGtkZXYtPm1vZGUgPT0gTlVMTCkgewotICAgICAgICBibGtk ZXYtPm1vZGUgPSB4ZW5zdG9yZV9yZWFkX2JlX3N0cih4ZW5kZXYsICJtb2RlIik7Ci0gICAgfQot ICAgIGlmIChibGtkZXYtPnR5cGUgPT0gTlVMTCkgewotICAgICAgICBibGtkZXYtPnR5cGUgPSB4 ZW5zdG9yZV9yZWFkX2JlX3N0cih4ZW5kZXYsICJ0eXBlIik7Ci0gICAgfQotICAgIGlmIChibGtk ZXYtPmRldiA9PSBOVUxMKSB7Ci0gICAgICAgIGJsa2Rldi0+ZGV2ID0geGVuc3RvcmVfcmVhZF9i ZV9zdHIoeGVuZGV2LCAiZGV2Iik7Ci0gICAgfQotICAgIGlmIChibGtkZXYtPmRldnR5cGUgPT0g TlVMTCkgewotICAgICAgICBibGtkZXYtPmRldnR5cGUgPSB4ZW5zdG9yZV9yZWFkX2JlX3N0cih4 ZW5kZXYsICJkZXZpY2UtdHlwZSIpOwotICAgIH0KLSAgICBkaXJlY3Rpb3NhZmUgPSB4ZW5zdG9y ZV9yZWFkX2JlX3N0cih4ZW5kZXYsICJkaXJlY3QtaW8tc2FmZSIpOwotICAgIGJsa2Rldi0+ZGly ZWN0aW9zYWZlID0gKGRpcmVjdGlvc2FmZSAmJiBhdG9pKGRpcmVjdGlvc2FmZSkpOwotCi0gICAg LyogZG8gd2UgaGF2ZSBhbGwgd2UgbmVlZD8gKi8KLSAgICBpZiAoYmxrZGV2LT5wYXJhbXMgPT0g TlVMTCB8fAotICAgICAgICBibGtkZXYtPm1vZGUgPT0gTlVMTCAgIHx8Ci0gICAgICAgIGJsa2Rl di0+dHlwZSA9PSBOVUxMICAgfHwKLSAgICAgICAgYmxrZGV2LT5kZXYgPT0gTlVMTCkgewotICAg ICAgICBnb3RvIG91dF9lcnJvcjsKLSAgICB9Ci0KLSAgICAvKiByZWFkLW9ubHkgPyAqLwotICAg IGlmIChzdHJjbXAoYmxrZGV2LT5tb2RlLCAidyIpKSB7Ci0gICAgICAgIGluZm8gIHw9IFZESVNL X1JFQURPTkxZOwotICAgIH0KLQotICAgIC8qIGNkcm9tID8gKi8KLSAgICBpZiAoYmxrZGV2LT5k ZXZ0eXBlICYmICFzdHJjbXAoYmxrZGV2LT5kZXZ0eXBlLCAiY2Ryb20iKSkgewotICAgICAgICBp bmZvICB8PSBWRElTS19DRFJPTTsKLSAgICB9Ci0KLSAgICBibGtkZXYtPmZpbGVfYmxrICA9IEJM T0NLX1NJWkU7Ci0KLSAgICAvKiBmaWxsIGluZm8KLSAgICAgKiBibGtfY29ubmVjdCBzdXBwbGll cyBzZWN0b3Itc2l6ZSBhbmQgc2VjdG9ycwotICAgICAqLwotICAgIHhlbnN0b3JlX3dyaXRlX2Jl X2ludCh4ZW5kZXYsICJmZWF0dXJlLWZsdXNoLWNhY2hlIiwgMSk7Ci0gICAgeGVuc3RvcmVfd3Jp dGVfYmVfaW50KHhlbmRldiwgImluZm8iLCBpbmZvKTsKLQotICAgIHhlbnN0b3JlX3dyaXRlX2Jl X2ludCh4ZW5kZXYsICJtYXgtcmluZy1wYWdlLW9yZGVyIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgTUFYX1JJTkdfUEFHRV9PUkRFUik7Ci0KLSAgICBibGtfcGFyc2VfZGlzY2FyZChibGtk ZXYpOwotCi0gICAgZ19mcmVlKGRpcmVjdGlvc2FmZSk7Ci0gICAgcmV0dXJuIDA7Ci0KLW91dF9l cnJvcjoKLSAgICBnX2ZyZWUoYmxrZGV2LT5wYXJhbXMpOwotICAgIGJsa2Rldi0+cGFyYW1zID0g TlVMTDsKLSAgICBnX2ZyZWUoYmxrZGV2LT5tb2RlKTsKLSAgICBibGtkZXYtPm1vZGUgPSBOVUxM OwotICAgIGdfZnJlZShibGtkZXYtPnR5cGUpOwotICAgIGJsa2Rldi0+dHlwZSA9IE5VTEw7Ci0g ICAgZ19mcmVlKGJsa2Rldi0+ZGV2KTsKLSAgICBibGtkZXYtPmRldiA9IE5VTEw7Ci0gICAgZ19m cmVlKGJsa2Rldi0+ZGV2dHlwZSk7Ci0gICAgYmxrZGV2LT5kZXZ0eXBlID0gTlVMTDsKLSAgICBn X2ZyZWUoZGlyZWN0aW9zYWZlKTsKLSAgICBibGtkZXYtPmRpcmVjdGlvc2FmZSA9IGZhbHNlOwot ICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIGludCBibGtfY29ubmVjdChzdHJ1Y3QgWGVuTGVn YWN5RGV2aWNlICp4ZW5kZXYpCi17Ci0gICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gY29u dGFpbmVyX29mKHhlbmRldiwgc3RydWN0IFhlbkJsa0RldiwgeGVuZGV2KTsKLSAgICBpbnQgaW5k ZXgsIHFmbGFnczsKLSAgICBib29sIHJlYWRvbmx5ID0gdHJ1ZTsKLSAgICBib29sIHdyaXRldGhy b3VnaCA9IHRydWU7Ci0gICAgaW50IG9yZGVyLCByaW5nX3JlZjsKLSAgICB1bnNpZ25lZCBpbnQg cmluZ19zaXplLCBtYXhfZ3JhbnRzOwotICAgIHVuc2lnbmVkIGludCBpOwotCi0gICAgdHJhY2Vf eGVuX2Rpc2tfY29ubmVjdCh4ZW5kZXYtPm5hbWUpOwotCi0gICAgLyogcmVhZC1vbmx5ID8gKi8K LSAgICBpZiAoYmxrZGV2LT5kaXJlY3Rpb3NhZmUpIHsKLSAgICAgICAgcWZsYWdzID0gQkRSVl9P X05PQ0FDSEUgfCBCRFJWX09fTkFUSVZFX0FJTzsKLSAgICB9IGVsc2UgewotICAgICAgICBxZmxh Z3MgPSAwOwotICAgICAgICB3cml0ZXRocm91Z2ggPSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKHN0 cmNtcChibGtkZXYtPm1vZGUsICJ3IikgPT0gMCkgewotICAgICAgICBxZmxhZ3MgfD0gQkRSVl9P X1JEV1I7Ci0gICAgICAgIHJlYWRvbmx5ID0gZmFsc2U7Ci0gICAgfQotICAgIGlmIChibGtkZXYt PmZlYXR1cmVfZGlzY2FyZCkgewotICAgICAgICBxZmxhZ3MgfD0gQkRSVl9PX1VOTUFQOwotICAg IH0KLQotICAgIC8qIGluaXQgcWVtdSBibG9jayBkcml2ZXIgKi8KLSAgICBpbmRleCA9ICh4ZW5k ZXYtPmRldiAtIDIwMiAqIDI1NikgLyAxNjsKLSAgICBibGtkZXYtPmRpbmZvID0gZHJpdmVfZ2V0 KElGX1hFTiwgMCwgaW5kZXgpOwotICAgIGlmICghYmxrZGV2LT5kaW5mbykgewotICAgICAgICBF cnJvciAqbG9jYWxfZXJyID0gTlVMTDsKLSAgICAgICAgUURpY3QgKm9wdGlvbnMgPSBOVUxMOwot Ci0gICAgICAgIGlmIChzdHJjbXAoYmxrZGV2LT5maWxlcHJvdG8sICI8dW5zZXQ+IikpIHsKLSAg ICAgICAgICAgIG9wdGlvbnMgPSBxZGljdF9uZXcoKTsKLSAgICAgICAgICAgIHFkaWN0X3B1dF9z dHIob3B0aW9ucywgImRyaXZlciIsIGJsa2Rldi0+ZmlsZXByb3RvKTsKLSAgICAgICAgfQotCi0g ICAgICAgIC8qIHNldHVwIHZpYSB4ZW5idXMgLT4gY3JlYXRlIG5ldyBibG9jayBkcml2ZXIgaW5z dGFuY2UgKi8KLSAgICAgICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDIsICJjcmVhdGUgbmV3IGJk cnYgKHhlbmJ1cyBzZXR1cClcbiIpOwotICAgICAgICBibGtkZXYtPmJsayA9IGJsa19uZXdfb3Bl bihibGtkZXYtPmZpbGVuYW1lLCBOVUxMLCBvcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBxZmxhZ3MsICZsb2NhbF9lcnIpOwotICAgICAgICBpZiAoIWJsa2Rldi0+ YmxrKSB7Ci0gICAgICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgImVycm9yOiAlc1xu IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfZ2V0X3ByZXR0eShsb2NhbF9lcnIp KTsKLSAgICAgICAgICAgIGVycm9yX2ZyZWUobG9jYWxfZXJyKTsKLSAgICAgICAgICAgIHJldHVy biAtMTsKLSAgICAgICAgfQotICAgICAgICBibGtfc2V0X2VuYWJsZV93cml0ZV9jYWNoZShibGtk ZXYtPmJsaywgIXdyaXRldGhyb3VnaCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogc2V0dXAg dmlhIHFlbXUgY21kbGluZSAtPiBhbHJlYWR5IHNldHVwIGZvciB1cyAqLwotICAgICAgICB4ZW5f cHZfcHJpbnRmKHhlbmRldiwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAiZ2V0IGNvbmZpZ3Vy ZWQgYmRydiAoY21kbGluZSBzZXR1cClcbiIpOwotICAgICAgICBibGtkZXYtPmJsayA9IGJsa19i eV9sZWdhY3lfZGluZm8oYmxrZGV2LT5kaW5mbyk7Ci0gICAgICAgIGlmIChibGtfaXNfcmVhZF9v bmx5KGJsa2Rldi0+YmxrKSAmJiAhcmVhZG9ubHkpIHsKLSAgICAgICAgICAgIHhlbl9wdl9wcmlu dGYoeGVuZGV2LCAwLCAiVW5leHBlY3RlZCByZWFkLW9ubHkgZHJpdmUiKTsKLSAgICAgICAgICAg IGJsa2Rldi0+YmxrID0gTlVMTDsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQot ICAgICAgICAvKiBibGtkZXYtPmJsayBpcyBub3QgY3JlYXRlIGJ5IHVzLCB3ZSBnZXQgYSByZWZl cmVuY2UKLSAgICAgICAgICogc28gd2UgY2FuIGJsa191bnJlZigpIHVuY29uZGl0aW9uYWxseSAq LwotICAgICAgICBibGtfcmVmKGJsa2Rldi0+YmxrKTsKLSAgICB9Ci0gICAgYmxrX2F0dGFjaF9k ZXZfbGVnYWN5KGJsa2Rldi0+YmxrLCBibGtkZXYpOwotICAgIGJsa2Rldi0+ZmlsZV9zaXplID0g YmxrX2dldGxlbmd0aChibGtkZXYtPmJsayk7Ci0gICAgaWYgKGJsa2Rldi0+ZmlsZV9zaXplIDwg MCkgewotICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpicyA9IGJsa19icyhibGtkZXYtPmJsayk7 Ci0gICAgICAgIGNvbnN0IGNoYXIgKmRydl9uYW1lID0gYnMgPyBiZHJ2X2dldF9mb3JtYXRfbmFt ZShicykgOiBOVUxMOwotICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMSwgImJsa19nZXRs ZW5ndGg6ICVkICglcykgfCBkcnYgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgKGludCli bGtkZXYtPmZpbGVfc2l6ZSwgc3RyZXJyb3IoLWJsa2Rldi0+ZmlsZV9zaXplKSwKLSAgICAgICAg ICAgICAgICAgICAgICBkcnZfbmFtZSA/OiAiLSIpOwotICAgICAgICBibGtkZXYtPmZpbGVfc2l6 ZSA9IDA7Ci0gICAgfQotCi0gICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDEsICJ0eXBlIFwiJXNc IiwgZmlsZXByb3RvIFwiJXNcIiwgZmlsZW5hbWUgXCIlc1wiLCIKLSAgICAgICAgICAgICAgICAg ICIgc2l6ZSAlIiBQUklkNjQgIiAoJSIgUFJJZDY0ICIgTUIpXG4iLAotICAgICAgICAgICAgICAg ICAgYmxrZGV2LT50eXBlLCBibGtkZXYtPmZpbGVwcm90bywgYmxrZGV2LT5maWxlbmFtZSwKLSAg ICAgICAgICAgICAgICAgIGJsa2Rldi0+ZmlsZV9zaXplLCBibGtkZXYtPmZpbGVfc2l6ZSAvIE1p Qik7Ci0KLSAgICAvKiBGaWxsIGluIG51bWJlciBvZiBzZWN0b3Igc2l6ZSBhbmQgbnVtYmVyIG9m IHNlY3RvcnMgKi8KLSAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoeGVuZGV2LCAic2VjdG9yLXNp emUiLCBibGtkZXYtPmZpbGVfYmxrKTsKLSAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQ2NCh4ZW5k ZXYsICJzZWN0b3JzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPmZpbGVf c2l6ZSAvIGJsa2Rldi0+ZmlsZV9ibGspOwotCi0gICAgaWYgKHhlbnN0b3JlX3JlYWRfZmVfaW50 KHhlbmRldiwgInJpbmctcGFnZS1vcmRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZvcmRlcikgPT0gLTEpIHsKLSAgICAgICAgYmxrZGV2LT5ucl9yaW5nX3JlZiA9IDE7Ci0KLSAg ICAgICAgaWYgKHhlbnN0b3JlX3JlYWRfZmVfaW50KHhlbmRldiwgInJpbmctcmVmIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyaW5nX3JlZikgPT0gLTEpIHsKLSAgICAgICAg ICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBibGtkZXYtPnJpbmdfcmVmWzBdID0g cmluZ19yZWY7Ci0KLSAgICB9IGVsc2UgaWYgKG9yZGVyID49IDAgJiYgb3JkZXIgPD0gTUFYX1JJ TkdfUEFHRV9PUkRFUikgewotICAgICAgICBibGtkZXYtPm5yX3JpbmdfcmVmID0gMSA8PCBvcmRl cjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYmxrZGV2LT5ucl9yaW5nX3JlZjsgaSsrKSB7 Ci0gICAgICAgICAgICBjaGFyICprZXk7Ci0KLSAgICAgICAgICAgIGtleSA9IGdfc3RyZHVwX3By aW50ZigicmluZy1yZWYldSIsIGkpOwotICAgICAgICAgICAgaWYgKCFrZXkpIHsKLSAgICAgICAg ICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh4ZW5z dG9yZV9yZWFkX2ZlX2ludCh4ZW5kZXYsIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmcmluZ19yZWYpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgZ19mcmVlKGtl eSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAg ICAgYmxrZGV2LT5yaW5nX3JlZltpXSA9IHJpbmdfcmVmOwotCi0gICAgICAgICAgICBnX2ZyZWUo a2V5KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHhlbl9wdl9wcmludGYoeGVu ZGV2LCAwLCAiaW52YWxpZCByaW5nLXBhZ2Utb3JkZXI6ICVkXG4iLAotICAgICAgICAgICAgICAg ICAgICAgIG9yZGVyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmICh4ZW5z dG9yZV9yZWFkX2ZlX2ludCh4ZW5kZXYsICJldmVudC1jaGFubmVsIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnhlbmRldi0+cmVtb3RlX3BvcnQpID09IC0xKSB7Ci0gICAgICAgIHJl dHVybiAtMTsKLSAgICB9Ci0KLSAgICBpZiAoIXhlbmRldi0+cHJvdG9jb2wpIHsKLSAgICAgICAg YmxrZGV2LT5wcm90b2NvbCA9IEJMS0lGX1BST1RPQ09MX05BVElWRTsKLSAgICB9IGVsc2UgaWYg KHN0cmNtcCh4ZW5kZXYtPnByb3RvY29sLCBYRU5fSU9fUFJPVE9fQUJJX05BVElWRSkgPT0gMCkg ewotICAgICAgICBibGtkZXYtPnByb3RvY29sID0gQkxLSUZfUFJPVE9DT0xfTkFUSVZFOwotICAg IH0gZWxzZSBpZiAoc3RyY21wKHhlbmRldi0+cHJvdG9jb2wsIFhFTl9JT19QUk9UT19BQklfWDg2 XzMyKSA9PSAwKSB7Ci0gICAgICAgIGJsa2Rldi0+cHJvdG9jb2wgPSBCTEtJRl9QUk9UT0NPTF9Y ODZfMzI7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoeGVuZGV2LT5wcm90b2NvbCwgWEVOX0lPX1BS T1RPX0FCSV9YODZfNjQpID09IDApIHsKLSAgICAgICAgYmxrZGV2LT5wcm90b2NvbCA9IEJMS0lG X1BST1RPQ09MX1g4Nl82NDsKLSAgICB9IGVsc2UgewotICAgICAgICBibGtkZXYtPnByb3RvY29s ID0gQkxLSUZfUFJPVE9DT0xfTkFUSVZFOwotICAgIH0KLQotICAgIHJpbmdfc2l6ZSA9IFhDX1BB R0VfU0laRSAqIGJsa2Rldi0+bnJfcmluZ19yZWY7Ci0gICAgc3dpdGNoIChibGtkZXYtPnByb3Rv Y29sKSB7Ci0gICAgY2FzZSBCTEtJRl9QUk9UT0NPTF9OQVRJVkU6Ci0gICAgewotICAgICAgICBi bGtkZXYtPm1heF9yZXF1ZXN0cyA9IF9fQ09OU1RfUklOR19TSVpFKGJsa2lmLCByaW5nX3NpemUp OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBCTEtJRl9QUk9UT0NPTF9YODZfMzI6 Ci0gICAgewotICAgICAgICBibGtkZXYtPm1heF9yZXF1ZXN0cyA9IF9fQ09OU1RfUklOR19TSVpF KGJsa2lmX3g4Nl8zMiwgcmluZ19zaXplKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNh c2UgQkxLSUZfUFJPVE9DT0xfWDg2XzY0OgotICAgIHsKLSAgICAgICAgYmxrZGV2LT5tYXhfcmVx dWVzdHMgPSBfX0NPTlNUX1JJTkdfU0laRShibGtpZl94ODZfNjQsIHJpbmdfc2l6ZSk7Ci0gICAg ICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gLTE7Ci0gICAg fQotCi0gICAgLyogQWRkIG9uIHRoZSBudW1iZXIgbmVlZGVkIGZvciB0aGUgcmluZyBwYWdlcyAq LwotICAgIG1heF9ncmFudHMgPSBibGtkZXYtPm5yX3JpbmdfcmVmOwotCi0gICAgeGVuX2JlX3Nl dF9tYXhfZ3JhbnRfcmVmcyh4ZW5kZXYsIG1heF9ncmFudHMpOwotICAgIGJsa2Rldi0+c3Jpbmcg PSB4ZW5fYmVfbWFwX2dyYW50X3JlZnMoeGVuZGV2LCBibGtkZXYtPnJpbmdfcmVmLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrZGV2LT5ucl9yaW5nX3JlZiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBS T1RfV1JJVEUpOwotICAgIGlmICghYmxrZGV2LT5zcmluZykgewotICAgICAgICByZXR1cm4gLTE7 Ci0gICAgfQotCi0gICAgc3dpdGNoIChibGtkZXYtPnByb3RvY29sKSB7Ci0gICAgY2FzZSBCTEtJ Rl9QUk9UT0NPTF9OQVRJVkU6Ci0gICAgewotICAgICAgICBibGtpZl9zcmluZ190ICpzcmluZ19u YXRpdmUgPSBibGtkZXYtPnNyaW5nOwotICAgICAgICBCQUNLX1JJTkdfSU5JVCgmYmxrZGV2LT5y aW5ncy5uYXRpdmUsIHNyaW5nX25hdGl2ZSwgcmluZ19zaXplKTsKLSAgICAgICAgYnJlYWs7Ci0g ICAgfQotICAgIGNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzMyOgotICAgIHsKLSAgICAgICAgYmxr aWZfeDg2XzMyX3NyaW5nX3QgKnNyaW5nX3g4Nl8zMiA9IGJsa2Rldi0+c3Jpbmc7Ci0KLSAgICAg ICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rldi0+cmluZ3MueDg2XzMyX3BhcnQsIHNyaW5nX3g4Nl8z MiwgcmluZ19zaXplKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQkxLSUZfUFJP VE9DT0xfWDg2XzY0OgotICAgIHsKLSAgICAgICAgYmxraWZfeDg2XzY0X3NyaW5nX3QgKnNyaW5n X3g4Nl82NCA9IGJsa2Rldi0+c3Jpbmc7Ci0KLSAgICAgICAgQkFDS19SSU5HX0lOSVQoJmJsa2Rl di0+cmluZ3MueDg2XzY0X3BhcnQsIHNyaW5nX3g4Nl82NCwgcmluZ19zaXplKTsKLSAgICAgICAg YnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIGJsa19zZXRfYWlvX2NvbnRleHQoYmxrZGV2LT5i bGssIGJsa2Rldi0+Y3R4KTsKLQotICAgIHhlbl9iZV9iaW5kX2V2dGNobih4ZW5kZXYpOwotCi0g ICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDEsICJvazogcHJvdG8gJXMsIG5yLXJpbmctcmVmICV1 LCAiCi0gICAgICAgICAgICAgICAgICAicmVtb3RlIHBvcnQgJWQsIGxvY2FsIHBvcnQgJWRcbiIs Ci0gICAgICAgICAgICAgICAgICB4ZW5kZXYtPnByb3RvY29sLCBibGtkZXYtPm5yX3JpbmdfcmVm LAotICAgICAgICAgICAgICAgICAgeGVuZGV2LT5yZW1vdGVfcG9ydCwgeGVuZGV2LT5sb2NhbF9w b3J0KTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgYmxrX2Rpc2Nvbm5lY3Qoc3Ry dWN0IFhlbkxlZ2FjeURldmljZSAqeGVuZGV2KQotewotICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJs a2RldiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIHN0cnVjdCBYZW5CbGtEZXYsIHhlbmRldik7Ci0K LSAgICB0cmFjZV94ZW5fZGlza19kaXNjb25uZWN0KHhlbmRldi0+bmFtZSk7Ci0KLSAgICBhaW9f Y29udGV4dF9hY3F1aXJlKGJsa2Rldi0+Y3R4KTsKLQotICAgIGlmIChibGtkZXYtPmJsaykgewot ICAgICAgICBibGtfc2V0X2Fpb19jb250ZXh0KGJsa2Rldi0+YmxrLCBxZW11X2dldF9haW9fY29u dGV4dCgpKTsKLSAgICAgICAgYmxrX2RldGFjaF9kZXYoYmxrZGV2LT5ibGssIGJsa2Rldik7Ci0g ICAgICAgIGJsa191bnJlZihibGtkZXYtPmJsayk7Ci0gICAgICAgIGJsa2Rldi0+YmxrID0gTlVM TDsKLSAgICB9Ci0gICAgeGVuX3B2X3VuYmluZF9ldnRjaG4oeGVuZGV2KTsKLQotICAgIGFpb19j b250ZXh0X3JlbGVhc2UoYmxrZGV2LT5jdHgpOwotCi0gICAgaWYgKGJsa2Rldi0+c3JpbmcpIHsK LSAgICAgICAgeGVuX2JlX3VubWFwX2dyYW50X3JlZnMoeGVuZGV2LCBibGtkZXYtPnNyaW5nLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGtkZXYtPm5yX3JpbmdfcmVmKTsKLSAg ICAgICAgYmxrZGV2LT5zcmluZyA9IE5VTEw7Ci0gICAgfQotfQotCiBzdGF0aWMgaW50IGJsa19m cmVlKHN0cnVjdCBYZW5MZWdhY3lEZXZpY2UgKnhlbmRldikKIHsKICAgICBzdHJ1Y3QgWGVuQmxr RGV2ICpibGtkZXYgPSBjb250YWluZXJfb2YoeGVuZGV2LCBzdHJ1Y3QgWGVuQmxrRGV2LCB4ZW5k ZXYpOwpAQCAtMTAwNiwxNCArNjIxLDMgQEAgc3RhdGljIHZvaWQgYmxrX2V2ZW50KHN0cnVjdCBY ZW5MZWdhY3lEZXZpY2UgKnhlbmRldikKIAogICAgIHFlbXVfYmhfc2NoZWR1bGUoYmxrZGV2LT5i aCk7CiB9Ci0KLXN0cnVjdCBYZW5EZXZPcHMgeGVuX2Jsa2Rldl9vcHMgPSB7Ci0gICAgLmZsYWdz ICAgICAgPSBERVZPUFNfRkxBR19ORUVEX0dOVERFViwKLSAgICAuc2l6ZSAgICAgICA9IHNpemVv ZihzdHJ1Y3QgWGVuQmxrRGV2KSwKLSAgICAuYWxsb2MgICAgICA9IGJsa19hbGxvYywKLSAgICAu aW5pdCAgICAgICA9IGJsa19pbml0LAotICAgIC5pbml0aWFsaXNlID0gYmxrX2Nvbm5lY3QsCi0g ICAgLmRpc2Nvbm5lY3QgPSBibGtfZGlzY29ubmVjdCwKLSAgICAuZXZlbnQgICAgICA9IGJsa19l dmVudCwKLSAgICAuZnJlZSAgICAgICA9IGJsa19mcmVlLAotfTsKLS0gCjIuMTEuMAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=