From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH-for-4.9 v1 2/8] dm_op: convert HVMOP_*ioreq_server* Date: Fri, 18 Nov 2016 17:13:58 +0000 Message-ID: <1479489244-2201-3-git-send-email-paul.durrant@citrix.com> References: <1479489244-2201-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 mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c7n4y-00058L-Na for xen-devel@lists.xenproject.org; Fri, 18 Nov 2016 17:36:01 +0000 In-Reply-To: <1479489244-2201-1-git-send-email-paul.durrant@citrix.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 Cc: Wei Liu , Daniel De Graaf , Paul Durrant , Ian Jackson , Andrew Cooper List-Id: xen-devel@lists.xenproject.org Tk9URTogVGhlIGRlZmluaXRpb25zIG9mIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV8qLCBIVk1PUF9J T19SQU5HRV8qIGFuZAogICAgICBIVk1PUF9QQ0lfU0JERiBoYXZlIHRvIHBlcnNpc3QgZm9yIG5l dyBpbnRlcmZhY2UgdmVyc2lvbnMgYXMKICAgICAgdGhleSBhcmUgYWxyZWFkeSBpbiB1c2UgYnkg Y2FsbGVycyBvZiB0aGUgbGlieGMgaW50ZXJmYWNlLgoKU3VnZ2VzdGVkLWJ5OiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5k dXJyYW50QGNpdHJpeC5jb20+Ci0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0 cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogRGFuaWVsIERlIEdyYWFmIDxkZ2Rl Z3JhQHR5Y2hvLm5zYS5nb3Y+Ci0tLQogdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgICAg fCAyMDQgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYv aHZtL2RtLmMgICAgICAgICAgICB8ICA1NSArKysrKysrKysrCiB4ZW4vYXJjaC94ODYvaHZtL2h2 bS5jICAgICAgICAgICB8IDIyMSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgIHwgIDQyICsrKystLS0tCiB4ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCB8ICAgMyArLQogeGVuL2luY2x1ZGUvcHVibGlj L2h2bS9kbV9vcC5oICAgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oICB8ICA0MCArKysrLS0tCiB4ZW4vaW5jbHVkZS94c20v ZHVtbXkuaCAgICAgICAgICB8ICAgNiAtLQogeGVuL2luY2x1ZGUveHNtL3hzbS5oICAgICAgICAg ICAgfCAgIDYgLS0KIHhlbi94c20vZHVtbXkuYyAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHhl bi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgIHwgICA2IC0tCiAxMSBmaWxlcyBjaGFuZ2Vk LCAzNDAgaW5zZXJ0aW9ucygrKSwgNDAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhjL3hjX2RvbWFpbi5jIGIvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKaW5kZXggMjk2Yjg1 Mi4uMWNiZTQ5ZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKKysrIGIvdG9v bHMvbGlieGMveGNfZG9tYWluLmMKQEAgLTE0MTcsMjQgKzE0MTcsMjIgQEAgaW50IHhjX2h2bV9j cmVhdGVfaW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBoYW5kbGVfYnVmaW9yZXEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW9zZXJ2aWRfdCAqaWQpCiB7Ci0gICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVS KHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90LCBhcmcpOworICAgIHN0cnVjdCB4ZW5fZG1f b3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyICpkYXRhOwog ICAgIGludCByYzsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBh cmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVy biAtMTsKKyAgICBvcC5vcCA9IERNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0g Jm9wLnUuY3JlYXRlX2lvcmVxX3NlcnZlcjsKIAotICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAg ICBhcmctPmhhbmRsZV9idWZpb3JlcSA9IGhhbmRsZV9idWZpb3JlcTsKKyAgICBkYXRhLT5oYW5k bGVfYnVmaW9yZXEgPSBoYW5kbGVfYnVmaW9yZXE7CiAKLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+ eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF9jcmVh dGVfaW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19B UkcoYXJnKSk7CisgICAgcmMgPSBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihv cCkpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CiAKLSAgICAqaWQgPSBhcmct PmlkOworICAgICppZCA9IGRhdGEtPmlkOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVl KHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIDA7CiB9CiAKIGludCB4Y19o dm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKHhjX2ludGVyZmFjZSAqeGNoLApAQCAtMTQ0NCw4NCAr MTQ0Miw2NSBAQCBpbnQgeGNfaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyh4Y19pbnRlcmZhY2Ug KnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCAqYnVmaW9y ZXFfcGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCAq YnVmaW9yZXFfcG9ydCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9n ZXRfaW9yZXFfc2VydmVyX2luZm9fdCwgYXJnKTsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOwor ICAgIHN0cnVjdCB4ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvICpkYXRhOwogICAgIGlu dCByYzsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBhcmcsIHNp emVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAtMTsK KyAgICBvcC5vcCA9IERNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOworICAgIGRhdGEgPSAmb3Au dS5nZXRfaW9yZXFfc2VydmVyX2luZm87CiAKLSAgICBhcmctPmRvbWlkID0gZG9taWQ7Ci0gICAg YXJnLT5pZCA9IGlkOworICAgIGRhdGEtPmlkID0gaWQ7CiAKLSAgICByYyA9IHhlbmNhbGwyKHhj aC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF9n ZXRfaW9yZXFfc2VydmVyX2luZm8sCi0gICAgICAgICAgICAgICAgICBIWVBFUkNBTExfQlVGRkVS X0FTX0FSRyhhcmcpKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIGRvbmU7Cisg ICAgcmMgPSBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOworICAgIGlm ICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CiAKICAgICBpZiAoIGlvcmVxX3BmbiApCi0gICAg ICAgICppb3JlcV9wZm4gPSBhcmctPmlvcmVxX3BmbjsKKyAgICAgICAgKmlvcmVxX3BmbiA9IGRh dGEtPmlvcmVxX3BmbjsKIAogICAgIGlmICggYnVmaW9yZXFfcGZuICkKLSAgICAgICAgKmJ1Zmlv cmVxX3BmbiA9IGFyZy0+YnVmaW9yZXFfcGZuOworICAgICAgICAqYnVmaW9yZXFfcGZuID0gZGF0 YS0+YnVmaW9yZXFfcGZuOwogCiAgICAgaWYgKCBidWZpb3JlcV9wb3J0ICkKLSAgICAgICAgKmJ1 ZmlvcmVxX3BvcnQgPSBhcmctPmJ1ZmlvcmVxX3BvcnQ7CisgICAgICAgICpidWZpb3JlcV9wb3J0 ID0gZGF0YS0+YnVmaW9yZXFfcG9ydDsKIAotZG9uZToKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVy X2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsKIH0KIAogaW50 IHhjX2h2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLCBk b21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv c2VydmlkX3QgaWQsIGludCBpc19tbWlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCiB7Ci0gICAgREVDTEFSRV9I WVBFUkNBTExfQlVGRkVSKHhlbl9odm1faW9fcmFuZ2VfdCwgYXJnKTsKLSAgICBpbnQgcmM7Cisg ICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZl cl9yYW5nZSAqZGF0YTsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNo LCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJl dHVybiAtMTsKLQotICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0g ICAgYXJnLT50eXBlID0gaXNfbW1pbyA/IEhWTU9QX0lPX1JBTkdFX01FTU9SWSA6IEhWTU9QX0lP X1JBTkdFX1BPUlQ7Ci0gICAgYXJnLT5zdGFydCA9IHN0YXJ0OwotICAgIGFyZy0+ZW5kID0gZW5k OworICAgIG9wLm9wID0gRE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOworICAgIGRh dGEgPSAmb3AudS5tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOwogCi0gICAgcmMgPSB4ZW5j YWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAg SFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgIEhZ UEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0 YS0+dHlwZSA9IGlzX21taW8gPyBETU9QX0lPX1JBTkdFX01FTU9SWSA6IERNT1BfSU9fUkFOR0Vf UE9SVDsKKyAgICBkYXRhLT5zdGFydCA9IHN0YXJ0OworICAgIGRhdGEtPmVuZCA9IGVuZDsKIAot ICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOwor ICAgIHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQog CiBpbnQgeGNfaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKHhjX2ludGVyZmFj ZSAqeGNoLCBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpb3NlcnZpZF90IGlkLCBpbnQgaXNfbW1pbywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkK IHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcp OwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5f ZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRhOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxs X2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBO VUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG9wLm9wID0gRE1PUF91bm1hcF9pb19yYW5n ZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUudW5tYXBfaW9fcmFuZ2VfZnJv bV9pb3JlcV9zZXJ2ZXI7CiAKLSAgICBhcmctPmRvbWlkID0gZG9taWQ7Ci0gICAgYXJnLT5pZCA9 IGlkOwotICAgIGFyZy0+dHlwZSA9IGlzX21taW8gPyBIVk1PUF9JT19SQU5HRV9NRU1PUlkgOiBI Vk1PUF9JT19SQU5HRV9QT1JUOwotICAgIGFyZy0+c3RhcnQgPSBzdGFydDsKLSAgICBhcmctPmVu ZCA9IGVuZDsKLQotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2 bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFf c2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7 CisgICAgZGF0YS0+aWQgPSBpZDsKKyAgICBkYXRhLT50eXBlID0gaXNfbW1pbyA/IERNT1BfSU9f UkFOR0VfTUVNT1JZIDogRE1PUF9JT19SQU5HRV9QT1JUOworICAgIGRhdGEtPnN0YXJ0ID0gc3Rh cnQ7CisgICAgZGF0YS0+ZW5kID0gZW5kOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVl KHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGRvX2RtX29wKHhjaCwgZG9t aWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAKIGludCB4Y19odm1fbWFwX3BjaWRldl90b19p b3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCkBAIC0xNTI5LDM3 ICsxNTA4LDMwIEBAIGludCB4Y19odm1fbWFwX3BjaWRldl90b19pb3JlcV9zZXJ2ZXIoeGNfaW50 ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldmljZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmdW5jdGlvbikKIHsKLSAgICBERUNMQVJFX0hZ UEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcpOwotICAgIGludCByYzsKKyAg ICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVy X3JhbmdlICpkYXRhOwogCiAgICAgaWYgKGRldmljZSA+IDB4MWYgfHwgZnVuY3Rpb24gPiAweDcp IHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAK LSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYXJnLCBzaXplb2YoKmFy ZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICByZXR1cm4gLTE7CisgICAgb3Au b3AgPSBETU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI7CisgICAgZGF0YSA9ICZvcC51 Lm1hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI7CiAKLSAgICBhcmctPmRvbWlkID0gZG9taWQ7 Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IEhWTU9QX0lPX1JBTkdFX1BDSTsK KyAgICBkYXRhLT5pZCA9IGlkOworICAgIGRhdGEtPnR5cGUgPSBETU9QX0lPX1JBTkdFX1BDSTsK IAogICAgIC8qCiAgICAgICogVGhlIHVuZGVybHlpbmcgaHlwZXJjYWxsIHdpbGwgZGVhbCB3aXRo IHJhbmdlcyBvZiBQQ0kgU0JERgogICAgICAqIGJ1dCwgZm9yIHNpbXBsaWNpdHksIHRoZSBBUEkg b25seSB1c2VzIHNpbmdsZXRvbnMuCiAgICAgICovCi0gICAgYXJnLT5zdGFydCA9IGFyZy0+ZW5k ID0gSFZNT1BfUENJX1NCREYoKHVpbnQ2NF90KXNlZ21lbnQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWJ1cywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClmdW5jdGlvbik7Ci0KLSAg ICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAg ICAgICAgICAgICBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyLAotICAgICAgICAg ICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+c3RhcnQg PSBkYXRhLT5lbmQgPSBETU9QX1BDSV9TQkRGKCh1aW50NjRfdClzZWdtZW50LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpYnVzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZnVu Y3Rpb24pOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYXJnKTsKLSAgICBy ZXR1cm4gcmM7CisgICAgcmV0dXJuIGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9m KG9wKSk7CiB9CiAKIGludCB4Y19odm1fdW5tYXBfcGNpZGV2X2Zyb21faW9yZXFfc2VydmVyKHhj X2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLApAQCAtMTU2Nyw1NCArMTUzOSw0NSBAQCBp bnQgeGNfaHZtX3VubWFwX3BjaWRldl9mcm9tX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhj aCwgZG9taWRfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZnVuY3Rpb24pCiB7Ci0gICAgREVDTEFSRV9IWVBF UkNBTExfQlVGRkVSKHhlbl9odm1faW9fcmFuZ2VfdCwgYXJnKTsKLSAgICBpbnQgcmM7CisgICAg c3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9y YW5nZSAqZGF0YTsKIAogICAgIGlmIChkZXZpY2UgPiAweDFmIHx8IGZ1bmN0aW9uID4gMHg3KSB7 CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0g ICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcp KTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG9wLm9w ID0gRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9w LnUudW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI7CiAKLSAgICBhcmctPmRvbWlkID0g ZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IEhWTU9QX0lPX1JBTkdF X1BDSTsKLSAgICBhcmctPnN0YXJ0ID0gYXJnLT5lbmQgPSBIVk1PUF9QQ0lfU0JERigodWludDY0 X3Qpc2VnbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dWludDY0X3QpYnVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1aW50NjRfdClkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKLQotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2Fs bCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3VubWFwX2lv X3JhbmdlX2Zyb21faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JV RkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+aWQgPSBpZDsKKyAgICBkYXRhLT50eXBlID0g RE1PUF9JT19SQU5HRV9QQ0k7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBh cmcpOwotICAgIHJldHVybiByYzsKKyAgICAvKgorICAgICAqIFRoZSB1bmRlcmx5aW5nIGh5cGVy Y2FsbCB3aWxsIGRlYWwgd2l0aCByYW5nZXMgb2YgUENJIFNCREYKKyAgICAgKiBidXQsIGZvciBz aW1wbGljaXR5LCB0aGUgQVBJIG9ubHkgdXNlcyBzaW5nbGV0b25zLgorICAgICAqLworICAgIGRh dGEtPnN0YXJ0ID0gZGF0YS0+ZW5kID0gRE1PUF9QQ0lfU0JERigodWludDY0X3Qpc2VnbWVudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWJ1 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90 KWRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVp bnQ2NF90KWZ1bmN0aW9uKTsKKworICAgIHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAm b3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHhj X2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90 IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90IGlkKQog ewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2Vy dmVyX3QsIGFyZyk7Ci0gICAgaW50IHJjOwotCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZl cl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkK LSAgICAgICAgcmV0dXJuIC0xOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0 IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciAqZGF0YTsKIAotICAgIGFyZy0+ZG9taWQg PSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7CisgICAgb3Aub3AgPSBETU9QX2Rlc3Ryb3lfaW9y ZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS5kZXN0cm95X2lvcmVxX3NlcnZlcjsKIAotICAg IHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAg ICAgICAgICAgIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAg SFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+aWQgPSBpZDsKIAotICAg IHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAg IHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBp bnQgeGNfaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoeGNfaW50ZXJmYWNlICp4Y2gsCkBAIC0x NjIyLDIzICsxNTg1LDE2IEBAIGludCB4Y19odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSh4Y19p bnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZp ZF90IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmFibGVkKQog ewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJf c3RhdGVfdCwgYXJnKTsKLSAgICBpbnQgcmM7CisgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAg ICBzdHJ1Y3QgeGVuX2RtX29wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgKmRhdGE7CiAKLSAgICBh cmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYXJnLCBzaXplb2YoKmFyZykpOwot ICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICByZXR1cm4gLTE7CisgICAgb3Aub3AgPSBE TU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7CisgICAgZGF0YSA9ICZvcC51LnNldF9pb3JlcV9z ZXJ2ZXJfc3RhdGU7CiAKLSAgICBhcmctPmRvbWlkID0gZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlk OwotICAgIGFyZy0+ZW5hYmxlZCA9ICEhZW5hYmxlZDsKKyAgICBkYXRhLT5pZCA9IGlkOworICAg IGRhdGEtPmVuYWJsZWQgPSAhIWVuYWJsZWQ7CiAKLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNh bGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF9zZXRfaW9y ZXFfc2VydmVyX3N0YXRlLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19B UkcoYXJnKSk7Ci0KLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAg IHJldHVybiByYzsKKyAgICByZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXpl b2Yob3ApKTsKIH0KIAogaW50IHhjX2RvbWFpbl9zZXRkZWJ1Z2dpbmcoeGNfaW50ZXJmYWNlICp4 Y2gsCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYvaHZt L2RtLmMKaW5kZXggYmE3YjhmNi4uYzcxOGE3NiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9kbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpAQCAtMTAyLDYgKzEwMiw2MSBAQCBs b25nIGRvX2RtX29wKGRvbWlkX3QgZG9taWQsCiAKICAgICBzd2l0Y2ggKCBvcC5vcCApCiAgICAg eworICAgIGNhc2UgRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgc3Ry dWN0IGRvbWFpbiAqY3Vycl9kID0gY3VycmVudC0+ZG9tYWluOworICAgICAgICBzdHJ1Y3QgeGVu X2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgKmRhdGEgPQorICAgICAgICAgICAgJm9wLnUuY3Jl YXRlX2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVy KGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGEtPmhhbmRsZV9idWZpb3JlcSwgJmRhdGEtPmlkKTsKKyAgICAgICAgYnJlYWs7 CisgICAgfQorICAgIGNhc2UgRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86CisgICAgeworICAg ICAgICBzdHJ1Y3QgeGVuX2RtX29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyAqZGF0YSA9CisgICAg ICAgICAgICAmb3AudS5nZXRfaW9yZXFfc2VydmVyX2luZm87CisKKyAgICAgICAgcmMgPSBodm1f Z2V0X2lvcmVxX3NlcnZlcl9pbmZvKGQsIGRhdGEtPmlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmRhdGEtPmlvcmVxX3BmbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkYXRhLT5idWZpb3JlcV9wZm4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZGF0YS0+YnVmaW9yZXFfcG9ydCk7CisgICAgICAgIGJy ZWFrOworICAgIH0KKyAgICBjYXNlIERNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjoK KyAgICB7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRh ID0KKyAgICAgICAgICAgICZvcC51Lm1hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI7CisKKyAg ICAgICAgcmMgPSBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihkLCBkYXRhLT5pZCwg ZGF0YS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhLT5zdGFydCwgZGF0YS0+ZW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh c2UgRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjoKKyAgICB7CisgICAgICAg IHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRhID0KKyAgICAgICAgICAg ICZvcC51LnVubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworCisgICAgICAgIHJjID0g aHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkLCBkYXRhLT50 eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhLT5zdGFydCwgZGF0YS0+ZW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug RE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgorICAgIHsKKyAgICAgICAgc3RydWN0IHhlbl9k bV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlICpkYXRhID0KKyAgICAgICAgICAgICZvcC51LnNl dF9pb3JlcV9zZXJ2ZXJfc3RhdGU7CisKKyAgICAgICAgcmMgPSBodm1fc2V0X2lvcmVxX3NlcnZl cl9zdGF0ZShkLCBkYXRhLT5pZCwgISFkYXRhLT5lbmFibGVkKTsKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorICAgIGNhc2UgRE1PUF9kZXN0cm95X2lvcmVxX3NlcnZlcjoKKyAgICB7CisgICAgICAg IHN0cnVjdCB4ZW5fZG1fb3BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIgKmRhdGEgPQorICAgICAgICAg ICAgJm9wLnUuZGVzdHJveV9pb3JlcV9zZXJ2ZXI7CisKKyAgICAgICAgcmMgPSBodm1fZGVzdHJv eV9pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg ZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpp bmRleCAyNWMzMmU2Li5iMmE3NzcyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQ3ODksMTk1ICs0Nzg5LDYgQEAgc3Rh dGljIGludCBodm1vcF9mbHVzaF90bGJfYWxsKHZvaWQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgaHZtb3BfY3JlYXRlX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KSB1b3ApCi17Ci0gICAgc3RydWN0 IGRvbWFpbiAqY3Vycl9kID0gY3VycmVudC0+ZG9tYWluOwotICAgIHhlbl9odm1fY3JlYXRlX2lv cmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4gKmQ7Ci0gICAgaW50IHJjOwotCi0g ICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKLSAgICAgICAgcmV0dXJuIC1F RkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQob3AuZG9taWQs ICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICByYyA9 IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCi0gICAgICAgIGdvdG8gb3V0 OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fRE1fUFJJViwgZCwgSFZNT1Bf Y3JlYXRlX2lvcmVxX3NlcnZlcik7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgZ290byBv dXQ7Ci0KLSAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKGQsIGN1cnJfZC0+ZG9tYWlu X2lkLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AuaGFuZGxlX2J1Zmlv cmVxLCAmb3AuaWQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0g ICAgcmMgPSBjb3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQgOiAwOwotICAgIAot IG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0 YXRpYyBpbnQgaHZtb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKAotICAgIFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0oeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCkgdW9wKQotewotICAgIHhl bl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsK LSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQot ICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFp bl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVy biByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkK LSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9E TV9QUklWLCBkLCBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pOwotICAgIGlmICggcmMgIT0g MCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fZ2V0X2lvcmVxX3NlcnZlcl9p bmZvKGQsIG9wLmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3AuaW9y ZXFfcGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3AuYnVmaW9yZXFf cGZuLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wLmJ1ZmlvcmVxX3Bv cnQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBj b3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQgOiAwOwotICAgIAotIG91dDoKLSAg ICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQg aHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewotICAgIHhlbl9odm1faW9fcmFuZ2Vf dCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAgIGlmICggY29w eV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZBVUxUOwotCi0g ICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Ci0gICAg aWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAtRUlOVkFMOwot ICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJj ID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX21hcF9pb19yYW5n ZV90b19pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0 OwotCi0gICAgcmMgPSBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihkLCBvcC5pZCwg b3AudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLnN0 YXJ0LCBvcC5lbmQpOwotCi0gb3V0OgotICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwotICAgIHJl dHVybiByYzsKLX0KLQotc3RhdGljIGludCBodm1vcF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVx X3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1faW9fcmFuZ2VfdCkg dW9wKQotewotICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpk OwotICAgIGludCByYzsKLQotICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSAp Ci0gICAgICAgIHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9t YWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0 dXJuIHJjOwotCi0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkg KQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNN X0RNX1BSSVYsIGQsIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKTsKLSAg ICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gaHZtX3VubWFw X2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKGQsIG9wLmlkLCBvcC50eXBlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLnN0YXJ0LCBvcC5lbmQpOwot ICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19 Ci0KLXN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSgKLSAgICBYRU5fR1VF U1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSB1b3ApCi17 Ci0gICAgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Qgb3A7Ci0gICAgc3RydWN0IGRv bWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVv cCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0gcmN1X2xvY2tfcmVt b3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAg ICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFpc19odm1fZG9t YWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9odm1faW9yZXFfc2Vy dmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKTsKLSAgICBp ZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gaHZtX3NldF9pb3Jl cV9zZXJ2ZXJfc3RhdGUoZCwgb3AuaWQsICEhb3AuZW5hYmxlZCk7Ci0KLSBvdXQ6Ci0gICAgcmN1 X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgaW50IGh2bW9w X2Rlc3Ryb3lfaW9yZXFfc2VydmVyKAotICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2 bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KSB1b3ApCi17Ci0gICAgeGVuX2h2bV9kZXN0cm95X2lv cmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4gKmQ7Ci0gICAgaW50IHJjOwotCi0g ICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKLSAgICAgICAgcmV0dXJuIC1F RkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5fYnlfaWQob3AuZG9taWQs ICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICByYyA9 IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCi0gICAgICAgIGdvdG8gb3V0 OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fRE1fUFJJViwgZCwgSFZNT1Bf ZGVzdHJveV9pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8g b3V0OwotCi0gICAgcmMgPSBodm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQpOwotCi0g b3V0OgotICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0KLQogc3Rh dGljIGludCBodm1vcF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0b3IoCiAgICAgWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh4ZW5faHZtX2V2dGNobl91cGNhbGxfdmVjdG9yX3QpIHVvcCkKIHsKQEAgLTUz MjQsNyArNTEzNSw3IEBAIHN0YXRpYyBpbnQgaHZtb3BfZ2V0X3BhcmFtKAogICAgICAgICAvKiBN YXkgbmVlZCB0byBjcmVhdGUgc2VydmVyLiAqLwogICAgICAgICBkb21pZCA9IGQtPmFyY2guaHZt X2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX0RNX0RPTUFJTl07CiAgICAgICAgIHJjID0gaHZtX2Ny ZWF0ZV9pb3JlcV9zZXJ2ZXIoZCwgZG9taWQsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSFZNX0lPUkVRU1JWX0JVRklPUkVRX0xFR0FDWSwgTlVMTCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1PUF9CVUZJT1JFUV9MRUdBQ1ksIE5VTEwp OwogICAgICAgICBpZiAoIHJjICE9IDAgJiYgcmMgIT0gLUVFWElTVCApCiAgICAgICAgICAgICBn b3RvIG91dDsKICAgICB9CkBAIC01Njg3LDM2ICs1NDk4LDYgQEAgbG9uZyBkb19odm1fb3AodW5z aWduZWQgbG9uZyBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgc3Rh cnRfaXRlciA9IG9wICYgfm1hc2s7CiAgICAgc3dpdGNoICggb3AgJj0gbWFzayApCiAgICAgewot ICAgIGNhc2UgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcjoKLSAgICAgICAgcmMgPSBodm1vcF9j cmVhdGVfaW9yZXFfc2VydmVyKAotICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4 ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdCkpOwotICAgICAgICBicmVhazsKLSAgICAKLSAg ICBjYXNlIEhWTU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbzoKLSAgICAgICAgcmMgPSBodm1vcF9n ZXRfaW9yZXFfc2VydmVyX2luZm8oCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcs IHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg Ci0gICAgY2FzZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOgotICAgICAgICBy YyA9IGh2bW9wX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBndWVz dF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1faW9fcmFuZ2VfdCkpOwotICAgICAgICBicmVhazsK LSAgICAKLSAgICBjYXNlIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOgot ICAgICAgICByYyA9IGh2bW9wX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKAotICAg ICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2lvX3JhbmdlX3QpKTsKLSAg ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6Ci0g ICAgICAgIHJjID0gaHZtb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSgKLSAgICAgICAgICAgIGd1 ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3QpKTsK LSAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgY2FzZSBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZl cjoKLSAgICAgICAgcmMgPSBodm1vcF9kZXN0cm95X2lvcmVxX3NlcnZlcigKLSAgICAgICAgICAg IGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KSk7 Ci0gICAgICAgIGJyZWFrOwotICAgIAogICAgIGNhc2UgSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxf dmVjdG9yOgogICAgICAgICByYyA9IGh2bW9wX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3RvcigKICAg ICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9ldnRjaG5fdXBjYWxsX3Zl Y3Rvcl90KSk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJj aC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZDIyNDVlMi4uYzExZTdhMCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAt NTEzLDkgKzUxMyw5IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5nZXNl dHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgICAgIGNoYXIgKm5hbWU7CiAKICAg ICAgICAgcmMgPSBhc3ByaW50ZigmbmFtZSwgImlvcmVxX3NlcnZlciAlZCAlcyIsIHMtPmlkLAot ICAgICAgICAgICAgICAgICAgICAgIChpID09IEhWTU9QX0lPX1JBTkdFX1BPUlQpID8gInBvcnQi IDoKLSAgICAgICAgICAgICAgICAgICAgICAoaSA9PSBIVk1PUF9JT19SQU5HRV9NRU1PUlkpID8g Im1lbW9yeSIgOgotICAgICAgICAgICAgICAgICAgICAgIChpID09IEhWTU9QX0lPX1JBTkdFX1BD SSkgPyAicGNpIiA6CisgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gRE1PUF9JT19SQU5HRV9Q T1JUKSA/ICJwb3J0IiA6CisgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gRE1PUF9JT19SQU5H RV9NRU1PUlkpID8gIm1lbW9yeSIgOgorICAgICAgICAgICAgICAgICAgICAgIChpID09IERNT1Bf SU9fUkFOR0VfUENJKSA/ICJwY2kiIDoKICAgICAgICAgICAgICAgICAgICAgICAiIik7CiAgICAg ICAgIGlmICggcmMgKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtNjE3LDExICs2MTcsMTEg QEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsCiAgICAgaWYgKCByYyApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIGlmICggYnVm aW9yZXFfaGFuZGxpbmcgPT0gSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQyApCisgICAgaWYg KCBidWZpb3JlcV9oYW5kbGluZyA9PSBETU9QX0JVRklPUkVRX0FUT01JQyApCiAgICAgICAgIHMt PmJ1ZmlvcmVxX2F0b21pYyA9IDE7CiAKICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfc2V0dXBf cGFnZXMoCi0gICAgICAgICAgICAgcywgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcgIT0g SFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRik7CisgICAgICAgICAgICAgcywgaXNfZGVmYXVsdCwg YnVmaW9yZXFfaGFuZGxpbmcgIT0gRE1PUF9CVUZJT1JFUV9PRkYpOwogICAgIGlmICggcmMgKQog ICAgICAgICBnb3RvIGZhaWxfbWFwOwogCkBAIC02ODYsNyArNjg2LDcgQEAgaW50IGh2bV9jcmVh dGVfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGRvbWlkX3QgZG9taWQsCiAgICAgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CiAgICAgaW50IHJjOwogCi0gICAgaWYgKCBidWZpb3Jl cV9oYW5kbGluZyA+IEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9BVE9NSUMgKQorICAgIGlmICggYnVm aW9yZXFfaGFuZGxpbmcgPiBETU9QX0JVRklPUkVRX0FUT01JQyApCiAgICAgICAgIHJldHVybiAt RUlOVkFMOwogCiAgICAgcmMgPSAtRU5PTUVNOwpAQCAtODMzLDkgKzgzMyw5IEBAIGludCBodm1f bWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90 IGlkLAogCiAgICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAgICAgIGNhc2UgSFZNT1Bf SU9fUkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QQ0k6Cisg ICAgICAgICAgICBjYXNlIERNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICAgICAgICAgIGNhc2UgRE1P UF9JT19SQU5HRV9NRU1PUlk6CisgICAgICAgICAgICBjYXNlIERNT1BfSU9fUkFOR0VfUENJOgog ICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKICAgICAgICAgICAgICAgICBicmVh azsKIApAQCAtODg1LDkgKzg4NSw5IEBAIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3Jl cV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKIAogICAgICAgICAgICAg c3dpdGNoICggdHlwZSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIEhWTU9QX0lP X1JBTkdFX1BPUlQ6Ci0gICAgICAgICAgICBjYXNlIEhWTU9QX0lPX1JBTkdFX01FTU9SWToKLSAg ICAgICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUENJOgorICAgICAgICAgICAgY2FzZSBETU9Q X0lPX1JBTkdFX1BPUlQ6CisgICAgICAgICAgICBjYXNlIERNT1BfSU9fUkFOR0VfTUVNT1JZOgor ICAgICAgICAgICAgY2FzZSBETU9QX0lPX1JBTkdFX1BDSToKICAgICAgICAgICAgICAgICByID0g cy0+cmFuZ2VbdHlwZV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTExMjgsMTIgKzEx MjgsMTIgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVy KHN0cnVjdCBkb21haW4gKmQsCiAKICAgICAgICAgLyogUENJIGNvbmZpZyBkYXRhIGN5Y2xlICov CiAKLSAgICAgICAgc2JkZiA9IEhWTU9QX1BDSV9TQkRGKDAsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQ0lfQlVTKENGOF9CREYoY2Y4KSksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQQ0lfU0xPVChDRjhfQkRGKGNmOCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7CisgICAgICAgIHNiZGYgPSBETU9QX1BDSV9T QkRGKDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9CVVMoQ0Y4X0JERihjZjgp KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1QoQ0Y4X0JERihjZjgpKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7CiAK LSAgICAgICAgdHlwZSA9IEhWTU9QX0lPX1JBTkdFX1BDSTsKKyAgICAgICAgdHlwZSA9IERNT1Bf SU9fUkFOR0VfUENJOwogICAgICAgICBhZGRyID0gKCh1aW50NjRfdClzYmRmIDw8IDMyKSB8CiAg ICAgICAgICAgICAgICBDRjhfQUREUl9MTyhjZjgpIHwKICAgICAgICAgICAgICAgIChwLT5hZGRy ICYgMyk7CkBAIC0xMTUyLDcgKzExNTIsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZt X3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICBlbHNlCiAgICAgewog ICAgICAgICB0eXBlID0gKHAtPnR5cGUgPT0gSU9SRVFfVFlQRV9QSU8pID8KLSAgICAgICAgICAg ICAgICBIVk1PUF9JT19SQU5HRV9QT1JUIDogSFZNT1BfSU9fUkFOR0VfTUVNT1JZOworICAgICAg ICAgICAgICAgIERNT1BfSU9fUkFOR0VfUE9SVCA6IERNT1BfSU9fUkFOR0VfTUVNT1JZOwogICAg ICAgICBhZGRyID0gcC0+YWRkcjsKICAgICB9CiAKQEAgLTExNzQsMTkgKzExNzQsMTkgQEAgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21h aW4gKmQsCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwogCi0gICAg ICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICAgICAgY2FzZSBETU9QX0lPX1JBTkdF X1BPUlQ6CiAgICAgICAgICAgICBlbmQgPSBhZGRyICsgcC0+c2l6ZSAtIDE7CiAgICAgICAgICAg ICBpZiAoIHJhbmdlc2V0X2NvbnRhaW5zX3JhbmdlKHIsIGFkZHIsIGVuZCkgKQogICAgICAgICAg ICAgICAgIHJldHVybiBzOwogCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVk1P UF9JT19SQU5HRV9NRU1PUlk6CisgICAgICAgIGNhc2UgRE1PUF9JT19SQU5HRV9NRU1PUlk6CiAg ICAgICAgICAgICBlbmQgPSBhZGRyICsgKHAtPnNpemUgKiBwLT5jb3VudCkgLSAxOwogICAgICAg ICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19yYW5nZShyLCBhZGRyLCBlbmQpICkKICAgICAg ICAgICAgICAgICByZXR1cm4gczsKIAogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug SFZNT1BfSU9fUkFOR0VfUENJOgorICAgICAgICBjYXNlIERNT1BfSU9fUkFOR0VfUENJOgogICAg ICAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19zaW5nbGV0b24ociwgYWRkciA+PiAzMikg KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHAtPnR5cGUgPSBJT1JFUV9UWVBFX1BD SV9DT05GSUc7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCmluZGV4IGYzNGQ3ODQuLjg5NGMwMWQg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8 cHVibGljL2h2bS9wYXJhbXMuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL3NhdmUuaD4KICNpbmNs dWRlIDxwdWJsaWMvaHZtL2h2bV9vcC5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4K IAogc3RydWN0IGh2bV9pb3JlcV9wYWdlIHsKICAgICB1bnNpZ25lZCBsb25nIGdtZm47CkBAIC00 Nyw3ICs0OCw3IEBAIHN0cnVjdCBodm1faW9yZXFfdmNwdSB7CiAgICAgYm9vbF90ICAgICAgICAg ICBwZW5kaW5nOwogfTsKIAotI2RlZmluZSBOUl9JT19SQU5HRV9UWVBFUyAoSFZNT1BfSU9fUkFO R0VfUENJICsgMSkKKyNkZWZpbmUgTlJfSU9fUkFOR0VfVFlQRVMgKERNT1BfSU9fUkFOR0VfUENJ ICsgMSkKICNkZWZpbmUgTUFYX05SX0lPX1JBTkdFUyAgMjU2CiAKIHN0cnVjdCBodm1faW9yZXFf c2VydmVyIHsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaCBiL3hl bi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAppbmRleCAzZWIzN2Q2Li5kYzFkMmFkIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKKysrIGIveGVuL2luY2x1ZGUv cHVibGljL2h2bS9kbV9vcC5oCkBAIC0yNywxMSArMjcsMTY4IEBACiAjaWYgZGVmaW5lZChfX1hF Tl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCiAKICNpbmNsdWRlICIuLi94ZW4uaCIKKyNp bmNsdWRlICIuLi9ldmVudF9jaGFubmVsLmgiCiAKICNkZWZpbmUgRE1PUF9pbnZhbGlkIDAKIAor LyoKKyAqIElPUkVRIFNlcnZlcnMKKyAqCisgKiBUaGUgaW50ZXJmYWNlIGJldHdlZW4gYW4gSS9P IGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxsZWQgYW4gSU9SRVEgU2VydmVyLgorICogQSBkb21haW4g c3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2FjeScgSU9SRVEgU2VydmVyIHdoaWNoIGlzIGluc3RhbnRp YXRlZCBpZgorICogcGFyYW1ldGVyLi4uCisgKgorICogSFZNX1BBUkFNX0lPUkVRX1BGTiBpcyBy ZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgc3luY2hyb25vdXMKKyAqIGlvcmVx IHN0cnVjdHVyZXMpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklPUkVRX1BGTiBpcyByZWFkICh0 byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcpLCBv ci4uLgorICogSFZNX1BBUkFNX0JVRklPUkVRX0VWVENITiBpcyByZWFkICh0byBnZXQgdGhlIGV2 ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNlcworICogdG8gcmVxdWVzdCBidWZmZXJlZCBJL08gZW11 bGF0aW9uKS4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGh5cGVyY2FsbHMgZmFjaWxpdGF0ZSB0aGUg Y3JlYXRpb24gb2YgSU9SRVEgU2VydmVycyBmb3IKKyAqICdzZWNvbmRhcnknIGVtdWxhdG9ycyB3 aGljaCBhcmUgaW52b2tlZCB0byBpbXBsZW1lbnQgcG9ydCBJL08sIG1lbW9yeSwgb3IKKyAqIFBD SSBjb25maWcgc3BhY2UgcmFuZ2VzIHdoaWNoIHRoZXkgZXhwbGljaXRseSByZWdpc3Rlci4KKyAq LworCit0eXBlZGVmIHVpbnQxNl90IGlvc2VydmlkX3Q7CisKKy8qCisgKiBETU9QX2NyZWF0ZV9p b3JlcV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3IElPUkVRIFNlcnZlciBmb3IgYSBzZWNvbmRh cnkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0b3Igc2VydmljaW5nIGRvbWFp biA8ZG9taWQ+LgorICoKKyAqIFRoZSA8aWQ+IGhhbmRlZCBiYWNrIGlzIHVuaXF1ZSBmb3IgPGRv bWlkPi4gSWYgPGhhbmRsZV9idWZpb3JlcT4gaXMgemVybworICogdGhlIGJ1ZmZlcmVkIGlvcmVx IHJpbmcgd2lsbCBub3QgYmUgYWxsb2NhdGVkIGFuZCBoZW5jZSBhbGwgZW11bGF0aW9uCisgKiBy ZXF1ZXN0ZXMgdG8gdGhpcyBzZXJ2ZXIgd2lsbCBiZSBzeW5jaHJvbm91cy4KKyAqLworI2RlZmlu ZSBETU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgMQorCitzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9p b3JlcV9zZXJ2ZXIgeworICAgIC8qIElOIC0gc2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQg aW9yZXFzICovCisgICAgdWludDhfdCBoYW5kbGVfYnVmaW9yZXE7CisjZGVmaW5lIERNT1BfQlVG SU9SRVFfT0ZGICAgIDAKKyNkZWZpbmUgRE1PUF9CVUZJT1JFUV9MRUdBQ1kgMQorLyoKKyAqIFVz ZSB0aGlzIHdoZW4gcmVhZF9wb2ludGVyIGdldHMgdXBkYXRlZCBhdG9taWNhbGx5IGFuZAorICog dGhlIHBvaW50ZXIgcGFpciBnZXRzIHJlYWQgYXRvbWljYWxseToKKyAqLworI2RlZmluZSBETU9Q X0JVRklPUkVRX0FUT01JQyAyCisgICAgdWludDhfdCBfX3BhZFszXTsKKyAgICAvKiBPVVQgLSBz ZXJ2ZXIgaWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOworfTsKKworLyoKKyAqIERNT1BfZ2V0X2lv cmVxX3NlcnZlcl9pbmZvOiBHZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gYWNj ZXNzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9SRVEgU2VydmVyIDxpZD4uCisg KgorICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3Ry dWN0dXJlcyBhbmQgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBY ZW4gdXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCisgKiBob3N0ZWQgaW4gZG9t YWluIDxkb21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KKyAqIHJl c3BlY3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcg YnVmZmVyZWQKKyAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJp bmQgdG8gZXZlbnQgY2hhbm5lbAorICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhl bS4gKFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgorICogc3luY2hyb25vdXMgZW11bGF0aW9u IHJlcXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKKyAqIHN0cnVjdHVy ZXMgaW4gPGlvcmVxX3Bmbj4pLgorICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxp bmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCisgKiB2YWx1ZXMgaGFuZGVk IGJhY2sgaW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUg MC4KKyAqLworI2RlZmluZSBETU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyAyCisKK3N0cnVjdCB4 ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIHsKKyAgICAvKiBJTiAtIHNlcnZlciBpZCAq LworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgdWludDE2X3QgX19wYWQ7CisgICAgLyogT1VUIC0g YnVmZmVyZWQgaW9yZXEgcG9ydCAqLworICAgIGV2dGNobl9wb3J0X3QgYnVmaW9yZXFfcG9ydDsK KyAgICAvKiBPVVQgLSBzeW5jIGlvcmVxIHBmbiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3QgaW9y ZXFfcGZuOworICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBmbiAqLworICAgIHVpbnQ2NF9h bGlnbmVkX3QgYnVmaW9yZXFfcGZuOworfTsKKworLyoKKyAqIERNT1BfbWFwX2lvX3JhbmdlX3Rv X2lvcmVxX3NlcnZlcjogUmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIGRvbWFpbgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZG9taWQ+IGZvciBlbXVsYXRpb24gYnkgdGhl IGNsaWVudAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBJT1JFUSBT ZXJ2ZXIgPGlkPgorICogRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjogRGVy ZWdpc3RlciBhbiBJL08gcmFuZ2Ugb2YgPGRvbWlkPgorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPgorICoK KyAqIFRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBJL08gdGhhdCBjYW4gYmUgZW11bGF0ZWQ6IHBv cnQgSS9PLCBtZW1vcnkKKyAqIGFjY2Vzc2VzIGFuZCBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2Vz LiBUaGUgPHR5cGU+IGZpZWxkIGRlbm90ZXMgd2hpY2gKKyAqIHR5cGUgb2YgcmFuZ2UqIHRoZSA8 c3RhcnQ+IGFuZCA8ZW5kPiAoaW5jbHVzaXZlKSBmaWVsZHMgYXJlIHNwZWNpZnlpbmcuCisgKiBQ Q0kgY29uZmlnIHNwYWNlIHJhbmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHNlZ21lbnQvYnVzL2Rldmlj ZS9mdW5jdGlvbgorICogdmFsdWVzIHdoaWNoIHNob3VsZCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBI Vk1PUF9QQ0lfU0JERiBoZWxwZXIgbWFjcm8KKyAqIGJlbG93LgorICoKKyAqIE5PVEU6IHVubGVz cyBhbiBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBw ZWQKKyAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8g dGhhdCBlbXVsYXRvci4KKyAqLworI2RlZmluZSBETU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9z ZXJ2ZXIgMworI2RlZmluZSBETU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDQK Kworc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgeworICAgIC8qIElOIC0gc2Vy dmVyIGlkICovCisgICAgaW9zZXJ2aWRfdCBpZDsKKyAgICB1aW50MTZfdCBfX3BhZDsKKyAgICAv KiBJTiAtIHR5cGUgb2YgcmFuZ2UgKi8KKyAgICB1aW50MzJfdCB0eXBlOworIyBkZWZpbmUgRE1P UF9JT19SQU5HRV9QT1JUICAgMCAvKiBJL08gcG9ydCByYW5nZSAqLworIyBkZWZpbmUgRE1PUF9J T19SQU5HRV9NRU1PUlkgMSAvKiBNTUlPIHJhbmdlICovCisjIGRlZmluZSBETU9QX0lPX1JBTkdF X1BDSSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLworICAgIC8qIElO IC0gaW5jbHVzaXZlIHN0YXJ0IGFuZCBlbmQgb2YgcmFuZ2UgKi8KKyAgICB1aW50NjRfYWxpZ25l ZF90IHN0YXJ0LCBlbmQ7Cit9OworCisjZGVmaW5lIERNT1BfUENJX1NCREYocyxiLGQsZikgXAor CSgoKChzKSAmIDB4ZmZmZikgPDwgMTYpIHwgIFwKKwkgKCgoYikgJiAweGZmKSA8PCA4KSB8ICAg ICBcCisJICgoKGQpICYgMHgxZikgPDwgMykgfCAgICAgXAorCSAoKGYpICYgMHgwNykpCisKKy8q CisgKiBETU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJ T1JFUSBTZXJ2ZXIgPGlkPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNp bmcgZG9tYWluIDxkb21pZD4uCisgKgorICogVGhlIElPUkVRIFNlcnZlciB3aWxsIG5vdCBiZSBw YXNzZWQgYW55IGVtdWxhdGlvbiByZXF1ZXN0cyB1bnRpbCBpdCBpcworICogaW4gdGhlIGVuYWJs ZWQgc3RhdGUuCisgKiBOb3RlIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBpb3JlcV9wZm4gYW5k IGJ1ZmlvcmVxX2ZuIChzZWUKKyAqIERNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKSBhcmUgbm90 IG1lYW5pbmdmdWwgdW50aWwgdGhlIElPUkVRIFNlcnZlcgorICogaXMgaW4gdGhlIGVuYWJsZWQg c3RhdGUuCisgKi8KKyNkZWZpbmUgRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDUKKworc3Ry dWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKKyAgICAvKiBJTiAtIHNlcnZl ciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgdWludDE2X3QgX19wYWQ7CisgICAgLyog SU4gLSBlbmFibGVkPyAqLworICAgIHVpbnQ4X3QgZW5hYmxlZDsKK307CisKKy8qCisgKiBETU9Q X2Rlc3Ryb3lfaW9yZXFfc2VydmVyOiBEZXN0cm95IHRoZSBJT1JFUSBTZXJ2ZXIgPGlkPiBzZXJ2 aWNpbmcgZG9tYWluCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZG9taWQ+LgorICoK KyAqIEFueSByZWdpc3RlcmVkIEkvTyByYW5nZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlcmVn aXN0ZXJlZC4KKyAqLworI2RlZmluZSBETU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDYKKworc3Ry dWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciB7CisgICAgLyogSU4gLSBzZXJ2ZXIg aWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOworfTsKKwogc3RydWN0IHhlbl9kbV9vcCB7CiAgICAg dWludDMyX3Qgb3A7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0 ZV9pb3JlcV9zZXJ2ZXIgY3JlYXRlX2lvcmVxX3NlcnZlcjsKKyAgICAgICAgc3RydWN0IHhlbl9k bV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOworICAgICAg ICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSBtYXBfaW9fcmFuZ2VfdG9faW9y ZXFfc2VydmVyOworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSB1 bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICAgICAgc3RydWN0IHhlbl9kbV9v cF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHNldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7CisgICAgICAg IHN0cnVjdCB4ZW5fZG1fb3BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIgZGVzdHJveV9pb3JlcV9zZXJ2 ZXI7CisgICAgfSB1OwogfTsKIAogc3RydWN0IHhlbl9kbV9vcF9idWYgewpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v aHZtX29wLmgKaW5kZXggYjNlNDVjZi4uY2Y1ZTU5YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv cHVibGljL2h2bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5o CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiLi4veGVuLmgiCiAjaW5jbHVkZSAiLi4vdHJh Y2UuaCIKICNpbmNsdWRlICIuLi9ldmVudF9jaGFubmVsLmgiCisjaW5jbHVkZSAiZG1fb3AuaCIK IAogLyogR2V0L3NldCBzdWJjb21tYW5kczogZXh0cmEgYXJndW1lbnQgPT0gcG9pbnRlciB0byB4 ZW5faHZtX3BhcmFtIHN0cnVjdC4gKi8KICNkZWZpbmUgSFZNT1Bfc2V0X3BhcmFtICAgICAgICAg ICAwCkBAIC0yNDIsNiArMjQzLDggQEAgc3RydWN0IHhlbl9odm1faW5qZWN0X21zaSB7CiB0eXBl ZGVmIHN0cnVjdCB4ZW5faHZtX2luamVjdF9tc2kgeGVuX2h2bV9pbmplY3RfbXNpX3Q7CiBERUZJ TkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2luamVjdF9tc2lfdCk7CiAKKyNpZiBfX1hFTl9J TlRFUkZBQ0VfVkVSU0lPTl9fIDwgMHgwMDA0MDkwMAorCiAvKgogICogSU9SRVEgU2VydmVycwog ICoKQEAgLTI3NCwxMyArMjc3LDYgQEAgdHlwZWRlZiB1aW50MTZfdCBpb3NlcnZpZF90OwogI2Rl ZmluZSBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyIDE3CiBzdHJ1Y3QgeGVuX2h2bV9jcmVhdGVf aW9yZXFfc2VydmVyIHsKICAgICBkb21pZF90IGRvbWlkOyAgICAgICAgICAgLyogSU4gLSBkb21h aW4gdG8gYmUgc2VydmljZWQgKi8KLSNkZWZpbmUgSFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRiAg ICAwCi0jZGVmaW5lIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9MRUdBQ1kgMQotLyoKLSAqIFVzZSB0 aGlzIHdoZW4gcmVhZF9wb2ludGVyIGdldHMgdXBkYXRlZCBhdG9taWNhbGx5IGFuZAotICogdGhl IHBvaW50ZXIgcGFpciBnZXRzIHJlYWQgYXRvbWljYWxseToKLSAqLwotI2RlZmluZSBIVk1fSU9S RVFTUlZfQlVGSU9SRVFfQVRPTUlDIDIKICAgICB1aW50OF90IGhhbmRsZV9idWZpb3JlcTsgLyog SU4gLSBzaG91bGQgc2VydmVyIGhhbmRsZSBidWZmZXJlZCBpb3JlcXMgKi8KICAgICBpb3NlcnZp ZF90IGlkOyAgICAgICAgICAgLyogT1VUIC0gc2VydmVyIGlkICovCiB9OwpAQCAtMzM2LDIwICsz MzIsMTEgQEAgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgewogICAgIGRvbWlkX3QgZG9taWQ7ICAg ICAgICAgICAgICAgLyogSU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KICAgICBpb3NlcnZp ZF90IGlkOyAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCiAgICAgdWludDMyX3Qg dHlwZTsgICAgICAgICAgICAgICAvKiBJTiAtIHR5cGUgb2YgcmFuZ2UgKi8KLSMgZGVmaW5lIEhW TU9QX0lPX1JBTkdFX1BPUlQgICAwIC8qIEkvTyBwb3J0IHJhbmdlICovCi0jIGRlZmluZSBIVk1P UF9JT19SQU5HRV9NRU1PUlkgMSAvKiBNTUlPIHJhbmdlICovCi0jIGRlZmluZSBIVk1PUF9JT19S QU5HRV9QQ0kgICAgMiAvKiBQQ0kgc2VnbWVudC9idXMvZGV2L2Z1bmMgcmFuZ2UgKi8KICAgICB1 aW50NjRfYWxpZ25lZF90IHN0YXJ0LCBlbmQ7IC8qIElOIC0gaW5jbHVzaXZlIHN0YXJ0IGFuZCBl bmQgb2YgcmFuZ2UgKi8KIH07CiB0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2lvX3JhbmdlIHhlbl9o dm1faW9fcmFuZ2VfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1faW9fcmFuZ2Vf dCk7CiAKLSNkZWZpbmUgSFZNT1BfUENJX1NCREYocyxiLGQsZikgICAgICAgICAgICAgICAgIFwK LQkoKCgocykgJiAweGZmZmYpIDw8IDE2KSB8ICAgICAgICAgICAgICAgICAgIFwKLQkgKCgoYikg JiAweGZmKSA8PCA4KSB8ICAgICAgICAgICAgICAgICAgICAgIFwKLQkgKCgoZCkgJiAweDFmKSA8 PCAzKSB8ICAgICAgICAgICAgICAgICAgICAgIFwKLQkgKChmKSAmIDB4MDcpKQotCiAvKgogICog SFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXI6IERlc3Ryb3kgdGhlIElPUkVRIFNlcnZlciA8aWQ+ IHNlcnZpY2luZyBkb21haW4KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZG9taWQ+ LgpAQCAtMzgzLDYgKzM3MCwyNyBAQCBzdHJ1Y3QgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0 YXRlIHsKIHR5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB4ZW5f aHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KTsKIAorI2VuZGlmIC8qIF9fWEVOX0lOVEVS RkFDRV9WRVJTSU9OX18gPCAweDAwMDQwOTAwICovCisKKy8qCisgKiBEZWZpbml0aW9ucyByZWxh dGluZyB0byBIVk1PUC9ETU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIuCisgKi8KKworI2RlZmluZSBI Vk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGICAgIERNT1BfQlVGSU9SRVFfT0ZGCisjZGVmaW5lIEhW TV9JT1JFUVNSVl9CVUZJT1JFUV9MRUdBQ1kgRE1PUF9CVUZJT1JFUV9MRUdBQ1kKKyNkZWZpbmUg SFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQyBETU9QX0JVRklPUkVRX0FUT01JQworCisvKgor ICogRGVmaW5pdGlvbnMgcmVsYXRpbmcgdG8gSFZNT1AvRE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9y ZXFfc2VydmVyIGFuZAorICogSFZNT1AvRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3Nl cnZlcgorICovCisKKyNkZWZpbmUgSFZNT1BfSU9fUkFOR0VfUE9SVCAgIERNT1BfSU9fUkFOR0Vf UE9SVAorI2RlZmluZSBIVk1PUF9JT19SQU5HRV9NRU1PUlkgRE1PUF9JT19SQU5HRV9NRU1PUlkK KyNkZWZpbmUgSFZNT1BfSU9fUkFOR0VfUENJICAgIERNT1BfSU9fUkFOR0VfUENJCisKKyNkZWZp bmUgSFZNT1BfUENJX1NCREYgICAgICAgIERNT1BfUENJX1NCREYKKwogI2VuZGlmIC8qIGRlZmlu ZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLwogCiAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv eHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCA3MTEzMThlLi5iN2Qz MTczIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAorKysgYi94ZW4vaW5jbHVk ZS94c20vZHVtbXkuaApAQCAtNjM0LDEyICs2MzQsNiBAQCBzdGF0aWMgWFNNX0lOTElORSBpbnQg eHNtX2h2bV9pbmplY3RfbXNpKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkKQogICAg IHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOwog fQogCi1zdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RFRkFV TFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIGludCBvcCkKLXsKLSAgICBYU01fQVNTRVJUX0FDVElP TihYU01fRE1fUFJJVik7Ci0gICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihhY3Rpb24sIGN1 cnJlbnQtPmRvbWFpbiwgZCk7Ci19Ci0KIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fbWVtX3No YXJpbmdfb3AoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkb21haW4g KmNkLCBpbnQgb3ApCiB7CiAgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0RNX1BSSVYpOwpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCmlu ZGV4IGM5NGMxYTIuLjBiY2RlMzkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94c20uaAor KysgYi94ZW4vaW5jbHVkZS94c20veHNtLmgKQEAgLTE2Niw3ICsxNjYsNiBAQCBzdHJ1Y3QgeHNt X29wZXJhdGlvbnMgewogICAgIGludCAoKmh2bV9zZXRfaXNhX2lycV9sZXZlbCkgKHN0cnVjdCBk b21haW4gKmQpOwogICAgIGludCAoKmh2bV9zZXRfcGNpX2xpbmtfcm91dGUpIChzdHJ1Y3QgZG9t YWluICpkKTsKICAgICBpbnQgKCpodm1faW5qZWN0X21zaSkgKHN0cnVjdCBkb21haW4gKmQpOwot ICAgIGludCAoKmh2bV9pb3JlcV9zZXJ2ZXIpIChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApOwog ICAgIGludCAoKm1lbV9zaGFyaW5nX29wKSAoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFp biAqY2QsIGludCBvcCk7CiAgICAgaW50ICgqYXBpYykgKHN0cnVjdCBkb21haW4gKmQsIGludCBj bWQpOwogICAgIGludCAoKm1lbXR5cGUpICh1aW50MzJfdCBhY2Nlc3MpOwpAQCAtNjU2LDExICs2 NTUsNiBAQCBzdGF0aWMgaW5saW5lIGludCB4c21faHZtX2luamVjdF9tc2kgKHhzbV9kZWZhdWx0 X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiB4c21fb3BzLT5odm1faW5qZWN0 X21zaShkKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIgKHhz bV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApCi17Ci0gICAgcmV0dXJu IHhzbV9vcHMtPmh2bV9pb3JlcV9zZXJ2ZXIoZCwgb3ApOwotfQotCiBzdGF0aWMgaW5saW5lIGlu dCB4c21fbWVtX3NoYXJpbmdfb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9wKQogewogICAgIHJldHVybiB4c21fb3BzLT5tZW1f c2hhcmluZ19vcChkLCBjZCwgb3ApOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9kdW1teS5jIGIveGVu L3hzbS9kdW1teS5jCmluZGV4IGEwODJiMjguLmQ1NDRlYzEgMTAwNjQ0Ci0tLSBhL3hlbi94c20v ZHVtbXkuYworKysgYi94ZW4veHNtL2R1bW15LmMKQEAgLTE0OSw3ICsxNDksNiBAQCB2b2lkIF9f aW5pdCB4c21fZml4dXBfb3BzIChzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgKm9wcykKICAgICBzZXRf dG9fZHVtbXlfaWZfbnVsbChvcHMsIGh2bV9zZXRfaXNhX2lycV9sZXZlbCk7CiAgICAgc2V0X3Rv X2R1bW15X2lmX251bGwob3BzLCBodm1fc2V0X3BjaV9saW5rX3JvdXRlKTsKICAgICBzZXRfdG9f ZHVtbXlfaWZfbnVsbChvcHMsIGh2bV9pbmplY3RfbXNpKTsKLSAgICBzZXRfdG9fZHVtbXlfaWZf bnVsbChvcHMsIGh2bV9pb3JlcV9zZXJ2ZXIpOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9w cywgbWVtX3NoYXJpbmdfb3ApOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgYXBpYyk7 CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBtYWNoaW5lX21lbW9yeV9tYXApOwpkaWZm IC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmlu ZGV4IGQyNGJjMDEuLmQ2MGM5NmQgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYwor KysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAgLTE1MjIsMTEgKzE1MjIsNiBAQCBzdGF0aWMg aW50IGZsYXNrX2h2bV9pbmplY3RfbXNpKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIGN1 cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xBU1NfSFZNLCBIVk1fX1NFTkRfSVJRKTsKIH0KIAotc3Rh dGljIGludCBmbGFza19odm1faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGludCBvcCkK LXsKLSAgICByZXR1cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19IVk0sIEhWTV9fSFZN Q1RMKTsKLX0KLQogc3RhdGljIGludCBmbGFza19tZW1fc2hhcmluZ19vcChzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9wKQogewogICAgIGludCByYyA9IGN1cnJlbnRf aGFzX3Blcm0oY2QsIFNFQ0NMQVNTX0hWTSwgSFZNX19NRU1fU0hBUklORyk7CkBAIC0xODA1LDcg KzE4MDAsNiBAQCBzdGF0aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29wcyA9IHsKICAg ICAuaHZtX3NldF9pc2FfaXJxX2xldmVsID0gZmxhc2tfaHZtX3NldF9pc2FfaXJxX2xldmVsLAog ICAgIC5odm1fc2V0X3BjaV9saW5rX3JvdXRlID0gZmxhc2tfaHZtX3NldF9wY2lfbGlua19yb3V0 ZSwKICAgICAuaHZtX2luamVjdF9tc2kgPSBmbGFza19odm1faW5qZWN0X21zaSwKLSAgICAuaHZt X2lvcmVxX3NlcnZlciA9IGZsYXNrX2h2bV9pb3JlcV9zZXJ2ZXIsCiAgICAgLm1lbV9zaGFyaW5n X29wID0gZmxhc2tfbWVtX3NoYXJpbmdfb3AsCiAgICAgLmFwaWMgPSBmbGFza19hcGljLAogICAg IC5tYWNoaW5lX21lbW9yeV9tYXAgPSBmbGFza19tYWNoaW5lX21lbW9yeV9tYXAsCi0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=