From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v8 2/8] dm_op: convert HVMOP_*ioreq_server* Date: Tue, 24 Jan 2017 15:27:04 +0000 Message-ID: <1485271630-1860-3-git-send-email-paul.durrant@citrix.com> References: <1485271630-1860-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cW30R-0000a7-HZ for xen-devel@lists.xenproject.org; Tue, 24 Jan 2017 15:27:35 +0000 In-Reply-To: <1485271630-1860-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: Paul Durrant , Ian Jackson List-Id: xen-devel@lists.xenproject.org VGhlIGRlZmluaXRpb25zIG9mIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV8qIGhhdmUgdG8gcGVyc2lz dCBhcyB0aGV5IGFyZQphbHJlYWR5IGluIHVzZSBieSBjYWxsZXJzIG9mIHRoZSBsaWJ4YyBpbnRl cmZhY2UuCgpTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KUmV2aWV3 ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFA dHljaG8ubnNhLmdvdj4KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+Ci0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNv bT4KCnY4OgotIEFkZCBDSEVDSyBtYWNyb3MuCgp2NjoKLSBNb2RpZnkgY29uc3Rfb3AgYXMgYXBw cm9wcmlhdGUuCgp2NDoKLSAjZGVmaW5lIHVpbnQ2NF9hbGlnbmVkX3QgaWYgbmVjZXNzYXJ5IHRv IGhhbmRsZSBjb21wYXQgY29kZSBnZW5lcmF0aW9uLgoKdjM6Ci0gRml4IHBhZCBjaGVjay4KCnYy OgotIEFkZHJlc3NlZCBzZXZlcmFsIGNvbW1lbnRzIGZyb20gSmFuLgotLS0KIHRvb2xzL2xpYnhj L3hjX2RvbWFpbi5jICAgICAgICAgIHwgMjEyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAgICAgIHwgIDk5ICsrKysrKysr KysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgfCAyMTkgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVx LmMgICAgICAgICB8ICAzNiArKystLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4u aCB8ICAgMyArLQogeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oICAgfCAxNTggKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCAg fCAxMzIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAg ICAgICAgIHwgICA1ICsKIHhlbi9pbmNsdWRlL3hzbS9kdW1teS5oICAgICAgICAgIHwgICA2IC0t CiB4ZW4vaW5jbHVkZS94c20veHNtLmggICAgICAgICAgICB8ICAgNiAtLQogeGVuL3hzbS9kdW1t eS5jICAgICAgICAgICAgICAgICAgfCAgIDEgLQogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAg ICAgICAgfCAgIDYgLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCA1MDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tYWluLmMgYi90b29s cy9saWJ4Yy94Y19kb21haW4uYwppbmRleCAyOTZiODUyLi40MTlhODk3IDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Y19kb21haW4uYworKysgYi90b29scy9saWJ4Yy94Y19kb21haW4uYwpAQCAt MTQxNywyNCArMTQxNywyNCBAQCBpbnQgeGNfaHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoeGNfaW50 ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhhbmRsZV9i dWZpb3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90ICppZCkK IHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2Vy dmVyX3QsIGFyZyk7CisgICAgc3RydWN0IHhlbl9kbV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2Rt X29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgKmRhdGE7CiAgICAgaW50IHJjOwogCi0gICAgYXJnID0g eGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBp ZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbXNldCgmb3AsIDAs IHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlkOwotICAgIGFyZy0+aGFuZGxl X2J1ZmlvcmVxID0gaGFuZGxlX2J1ZmlvcmVxOworICAgIG9wLm9wID0gWEVOX0RNT1BfY3JlYXRl X2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUuY3JlYXRlX2lvcmVxX3NlcnZlcjsKIAot ICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAg ICAgICAgICAgICAgIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAg ICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBkYXRhLT5oYW5kbGVfYnVmaW9y ZXEgPSBoYW5kbGVfYnVmaW9yZXE7CisKKyAgICByYyA9IGRvX2RtX29wKHhjaCwgZG9taWQsIDEs ICZvcCwgc2l6ZW9mKG9wKSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKIAot ICAgICppZCA9IGFyZy0+aWQ7CisgICAgKmlkID0gZGF0YS0+aWQ7CiAKLSAgICB4Y19oeXBlcmNh bGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsK IH0KIAogaW50IHhjX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gs CkBAIC0xNDQ0LDg0ICsxNDQ0LDcxIEBAIGludCB4Y19odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZv KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVu X3Bmbl90ICpidWZpb3JlcV9wZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl dnRjaG5fcG9ydF90ICpidWZpb3JlcV9wb3J0KQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JV RkZFUih4ZW5faHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mb190LCBhcmcpOworICAgIHN0cnVjdCB4 ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8g KmRhdGE7CiAgICAgaW50IHJjOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxv Yyh4Y2gsIGFyZywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAg ICAgcmV0dXJuIC0xOworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJn LT5kb21pZCA9IGRvbWlkOwotICAgIGFyZy0+aWQgPSBpZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9Q X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbzsKKyAgICBkYXRhID0gJm9wLnUuZ2V0X2lvcmVxX3NlcnZl cl9pbmZvOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZt X29wLAotICAgICAgICAgICAgICAgICAgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvLAotICAg ICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7Ci0gICAgaWYgKCBy YyAhPSAwICkKLSAgICAgICAgZ290byBkb25lOworICAgIGRhdGEtPmlkID0gaWQ7CisKKyAgICBy YyA9IGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CisgICAgaWYgKCBy YyApCisgICAgICAgIHJldHVybiByYzsKIAogICAgIGlmICggaW9yZXFfcGZuICkKLSAgICAgICAg KmlvcmVxX3BmbiA9IGFyZy0+aW9yZXFfcGZuOworICAgICAgICAqaW9yZXFfcGZuID0gZGF0YS0+ aW9yZXFfcGZuOwogCiAgICAgaWYgKCBidWZpb3JlcV9wZm4gKQotICAgICAgICAqYnVmaW9yZXFf cGZuID0gYXJnLT5idWZpb3JlcV9wZm47CisgICAgICAgICpidWZpb3JlcV9wZm4gPSBkYXRhLT5i dWZpb3JlcV9wZm47CiAKICAgICBpZiAoIGJ1ZmlvcmVxX3BvcnQgKQotICAgICAgICAqYnVmaW9y ZXFfcG9ydCA9IGFyZy0+YnVmaW9yZXFfcG9ydDsKKyAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBk YXRhLT5idWZpb3JlcV9wb3J0OwogCi1kb25lOgotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJl ZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiAwOwogfQogCiBpbnQgeGNf aHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlk X3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2 aWRfdCBpZCwgaW50IGlzX21taW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkKIHsKLSAgICBERUNMQVJFX0hZUEVS Q0FMTF9CVUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBz dHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3Jh bmdlICpkYXRhOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFy Zywgc2l6ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJu IC0xOworICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9 IGRvbWlkOwotICAgIGFyZy0+aWQgPSBpZDsKLSAgICBhcmctPnR5cGUgPSBpc19tbWlvID8gSFZN T1BfSU9fUkFOR0VfTUVNT1JZIDogSFZNT1BfSU9fUkFOR0VfUE9SVDsKLSAgICBhcmctPnN0YXJ0 ID0gc3RhcnQ7Ci0gICAgYXJnLT5lbmQgPSBlbmQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9tYXBf aW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS5tYXBfaW9fcmFuZ2Vf dG9faW9yZXFfc2VydmVyOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVS VklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lv cmVxX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFy ZykpOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IGlzX21taW8gPyBYRU5f RE1PUF9JT19SQU5HRV9NRU1PUlkgOiBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOworICAgIGRhdGEt PnN0YXJ0ID0gc3RhcnQ7CisgICAgZGF0YS0+ZW5kID0gZW5kOwogCi0gICAgeGNfaHlwZXJjYWxs X2J1ZmZlcl9mcmVlKHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIGRvX2Rt X29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAKIGludCB4Y19odm1fdW5t YXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3Qg ZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2Vy dmlkX3QgaWQsIGludCBpc19tbWlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kKQogewotICAgIERFQ0xBUkVf SFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3JhbmdlX3QsIGFyZyk7Ci0gICAgaW50IHJjOwor ICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2 ZXJfcmFuZ2UgKmRhdGE7CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhj aCwgYXJnLCBzaXplb2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICBy ZXR1cm4gLTE7CisgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRv bWlkID0gZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IGlzX21taW8g PyBIVk1PUF9JT19SQU5HRV9NRU1PUlkgOiBIVk1PUF9JT19SQU5HRV9QT1JUOwotICAgIGFyZy0+ c3RhcnQgPSBzdGFydDsKLSAgICBhcmctPmVuZCA9IGVuZDsKKyAgICBvcC5vcCA9IFhFTl9ETU9Q X3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1h cF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHJjID0geGVuY2FsbDIoeGNoLT54 Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3VubWFw X2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxM X0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+aWQgPSBpZDsKKyAgICBkYXRhLT50eXBl ID0gaXNfbW1pbyA/IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWSA6IFhFTl9ETU9QX0lPX1JBTkdF X1BPUlQ7CisgICAgZGF0YS0+c3RhcnQgPSBzdGFydDsKKyAgICBkYXRhLT5lbmQgPSBlbmQ7CiAK LSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsK KyAgICByZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0K IAogaW50IHhjX2h2bV9tYXBfcGNpZGV2X3RvX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhj aCwgZG9taWRfdCBkb21pZCwKQEAgLTE1MjksMzcgKzE1MTYsMzIgQEAgaW50IHhjX2h2bV9tYXBf cGNpZGV2X3RvX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4 X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90 IGZ1bmN0aW9uKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3Jh bmdlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAg c3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2 aWNlID4gMHgxZiB8fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsK ICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZm ZXJfYWxsb2MoeGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCAp Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAot ICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBl ID0gSFZNT1BfSU9fUkFOR0VfUENJOworICAgIG9wLm9wID0gWEVOX0RNT1BfbWFwX2lvX3Jhbmdl X3RvX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVx X3NlcnZlcjsKKworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IFhFTl9ETU9Q X0lPX1JBTkdFX1BDSTsKIAogICAgIC8qCiAgICAgICogVGhlIHVuZGVybHlpbmcgaHlwZXJjYWxs IHdpbGwgZGVhbCB3aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgogICAgICAqIGJ1dCwgZm9yIHNpbXBs aWNpdHksIHRoZSBBUEkgb25seSB1c2VzIHNpbmdsZXRvbnMuCiAgICAgICovCi0gICAgYXJnLT5z dGFydCA9IGFyZy0+ZW5kID0gSFZNT1BfUENJX1NCREYoKHVpbnQ2NF90KXNlZ21lbnQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWJ1cywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClm dW5jdGlvbik7Ci0KLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9o dm1fb3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2Vy dmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7Cisg ICAgZGF0YS0+c3RhcnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JERigodWludDY0X3Qp c2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1aW50NjRfdClidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodWludDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKIAotICAgIHhjX2h5cGVyY2Fs bF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBkb19k bV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX3Vu bWFwX3BjaWRldl9mcm9tX2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBk b21pZCwKQEAgLTE1NjcsNTQgKzE1NDksNDkgQEAgaW50IHhjX2h2bV91bm1hcF9wY2lkZXZfZnJv bV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGJ1cywgdWludDhfdCBk ZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90 IGZ1bmN0aW9uKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUih4ZW5faHZtX2lvX3Jh bmdlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAg c3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGE7CiAKICAgICBpZiAoZGV2 aWNlID4gMHgxZiB8fCBmdW5jdGlvbiA+IDB4NykgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsK ICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZm ZXJfYWxsb2MoeGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCAp Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAot ICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBl ID0gSFZNT1BfSU9fUkFOR0VfUENJOwotICAgIGFyZy0+c3RhcnQgPSBhcmctPmVuZCA9IEhWTU9Q X1BDSV9TQkRGKCh1aW50NjRfdClzZWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh1aW50NjRfdClidXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWRldmljZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZnVuY3Rpb24pOwotCi0gICAgcmMgPSB4 ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAg ICAgSFZNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAg ICAgICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBvcC5vcCA9IFhFTl9ETU9Q X3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOworICAgIGRhdGEgPSAmb3AudS51bm1h cF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJf ZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAg ZGF0YS0+dHlwZSA9IFhFTl9ETU9QX0lPX1JBTkdFX1BDSTsKKworICAgIC8qCisgICAgICogVGhl IHVuZGVybHlpbmcgaHlwZXJjYWxsIHdpbGwgZGVhbCB3aXRoIHJhbmdlcyBvZiBQQ0kgU0JERgor ICAgICAqIGJ1dCwgZm9yIHNpbXBsaWNpdHksIHRoZSBBUEkgb25seSB1c2VzIHNpbmdsZXRvbnMu CisgICAgICovCisgICAgZGF0YS0+c3RhcnQgPSBkYXRhLT5lbmQgPSBYRU5fRE1PUF9QQ0lfU0JE RigodWludDY0X3Qpc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1aW50NjRfdClidXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZGV2aWNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKKworICAg IHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBp bnQgeGNfaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpb3NlcnZpZF90IGlkKQogewotICAgIERFQ0xBUkVfSFlQRVJDQUxM X0JVRkZFUih4ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyX3QsIGFyZyk7Ci0gICAgaW50IHJj OworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95 X2lvcmVxX3NlcnZlciAqZGF0YTsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxs b2MoeGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAg ICAgIHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFy Zy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmlkID0gaWQ7CisgICAgb3Aub3AgPSBYRU5fRE1P UF9kZXN0cm95X2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUuZGVzdHJveV9pb3JlcV9z ZXJ2ZXI7CiAKLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1f b3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZlciwKLSAgICAg ICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRhdGEtPmlk ID0gaWQ7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJl dHVybiByYzsKKyAgICByZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yo b3ApKTsKIH0KIAogaW50IHhjX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHhjX2ludGVyZmFj ZSAqeGNoLApAQCAtMTYyMiwyMyArMTU5OSwxOCBAQCBpbnQgeGNfaHZtX3NldF9pb3JlcV9zZXJ2 ZXJfc3RhdGUoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZW5hYmxlZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9zZXRf aW9yZXFfc2VydmVyX3N0YXRlX3QsIGFyZyk7Ci0gICAgaW50IHJjOworICAgIHN0cnVjdCB4ZW5f ZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlICpk YXRhOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6 ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOwor ICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlk OwotICAgIGFyZy0+aWQgPSBpZDsKLSAgICBhcmctPmVuYWJsZWQgPSAhIWVuYWJsZWQ7CisgICAg b3Aub3AgPSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOworICAgIGRhdGEgPSAmb3Au dS5zZXRfaW9yZXFfc2VydmVyX3N0YXRlOwogCi0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxs LCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAgICAgICAgICAgICAgSFZNT1Bfc2V0X2lvcmVx X3NlcnZlcl9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJH KGFyZykpOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+ZW5hYmxlZCA9ICEhZW5hYmxl ZDsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJu IHJjOworICAgIHJldHVybiBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkp OwogfQogCiBpbnQgeGNfZG9tYWluX3NldGRlYnVnZ2luZyh4Y19pbnRlcmZhY2UgKnhjaCwKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwpp bmRleCA0NjdjYjQxLi43NGIwYTRiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCkBAIC03OCw4ICs3OCwxMDEgQEAgc3RhdGljIGlu dCBkbV9vcChkb21pZF90IGRvbWlkLAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKKyAgICBy YyA9IC1FSU5WQUw7CisgICAgaWYgKCBvcC5wYWQgKQorICAgICAgICBnb3RvIG91dDsKKwogICAg IHN3aXRjaCAoIG9wLm9wICkKICAgICB7CisgICAgY2FzZSBYRU5fRE1PUF9jcmVhdGVfaW9yZXFf c2VydmVyOgorICAgIHsKKyAgICAgICAgc3RydWN0IGRvbWFpbiAqY3Vycl9kID0gY3VycmVudC0+ ZG9tYWluOworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgKmRh dGEgPQorICAgICAgICAgICAgJm9wLnUuY3JlYXRlX2lvcmVxX3NlcnZlcjsKKworICAgICAgICBj b25zdF9vcCA9IGZhbHNlOworCisgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCBk YXRhLT5wYWRbMF0gfHwgZGF0YS0+cGFkWzFdIHx8IGRhdGEtPnBhZFsyXSApCisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKGQsIGN1cnJf ZC0+ZG9tYWluX2lkLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGEtPmhhbmRsZV9idWZpb3JlcSwgJmRhdGEtPmlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgY2FzZSBYRU5fRE1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm86CisgICAgeworICAgICAg ICBzdHJ1Y3QgeGVuX2RtX29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyAqZGF0YSA9CisgICAgICAg ICAgICAmb3AudS5nZXRfaW9yZXFfc2VydmVyX2luZm87CisKKyAgICAgICAgY29uc3Rfb3AgPSBm YWxzZTsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkK KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX2dldF9pb3JlcV9zZXJ2ZXJf aW5mbyhkLCBkYXRhLT5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZkYXRhLT5pb3JlcV9wZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZGF0YS0+YnVmaW9yZXFfcGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmRhdGEtPmJ1ZmlvcmVxX3BvcnQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg ICBjYXNlIFhFTl9ETU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6CisgICAgeworICAg ICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSAqZGF0YSA9Cisg ICAgICAgICAgICAmb3AudS5tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOworCisgICAgICAg IHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCBkYXRhLT5wYWQgKQorICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgcmMgPSBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihkLCBk YXRhLT5pZCwgZGF0YS0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhLT5zdGFydCwgZGF0YS0+ZW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAg fQorCisgICAgY2FzZSBYRU5fRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjoK KyAgICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3Jhbmdl ICpkYXRhID0KKyAgICAgICAgICAgICZvcC51LnVubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2Vy dmVyOworCisgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCBkYXRhLT5wYWQgKQor ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmMgPSBodm1fdW5tYXBfaW9fcmFuZ2VfZnJv bV9pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQsIGRhdGEtPnR5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXJ0LCBkYXRhLT5lbmQp OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFhFTl9ETU9QX3NldF9pb3JlcV9z ZXJ2ZXJfc3RhdGU6CisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX3NldF9p b3JlcV9zZXJ2ZXJfc3RhdGUgKmRhdGEgPQorICAgICAgICAgICAgJm9wLnUuc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZTsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+ cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX3NldF9pb3JlcV9z ZXJ2ZXJfc3RhdGUoZCwgZGF0YS0+aWQsICEhZGF0YS0+ZW5hYmxlZCk7CisgICAgICAgIGJyZWFr OworICAgIH0KKworICAgIGNhc2UgWEVOX0RNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXI6CisgICAg eworICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyICpk YXRhID0KKyAgICAgICAgICAgICZvcC51LmRlc3Ryb3lfaW9yZXFfc2VydmVyOworCisgICAgICAg IHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCBkYXRhLT5wYWQgKQorICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgcmMgPSBodm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQp OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICByYyA9IC1F T1BOT1RTVVBQOwogICAgICAgICBicmVhazsKQEAgLTk2LDYgKzE4OSwxMiBAQCBzdGF0aWMgaW50 IGRtX29wKGRvbWlkX3QgZG9taWQsCiAgICAgcmV0dXJuIHJjOwogfQogCitDSEVDS19kbV9vcF9j cmVhdGVfaW9yZXFfc2VydmVyOworQ0hFQ0tfZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOwor Q0hFQ0tfZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlOworQ0hFQ0tfZG1fb3Bfc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZTsKK0NIRUNLX2RtX29wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyOworCiAjZGVmaW5l IE1BWF9OUl9CVUZTIDEKIAogaW50IGNvbXBhdF9kbV9vcChkb21pZF90IGRvbWlkLApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5k ZXggOTE2Yzg2Ny4uM2JjYWFiOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYwor KysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC00Mzc5LDE5NSArNDM3OSw2IEBAIHN0YXRp YyBpbnQgaHZtb3BfZmx1c2hfdGxiX2FsbCh2b2lkKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50IGh2bW9wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoCi0gICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdCkgdW9wKQotewotICAgIHN0cnVjdCBk b21haW4gKmN1cnJfZCA9IGN1cnJlbnQtPmRvbWFpbjsKLSAgICB4ZW5faHZtX2NyZWF0ZV9pb3Jl cV9zZXJ2ZXJfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAg IGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZB VUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAm ZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAt RUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsK LQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX2Ny ZWF0ZV9pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0 OwotCi0gICAgcmMgPSBodm1fY3JlYXRlX2lvcmVxX3NlcnZlcihkLCBjdXJyX2QtPmRvbWFpbl9p ZCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLmhhbmRsZV9idWZpb3Jl cSwgJm9wLmlkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQotICAg IHJjID0gY29weV90b19ndWVzdCh1b3AsICZvcCwgMSkgPyAtRUZBVUxUIDogMDsKLSAgICAKLSBv dXQ6Ci0gICAgcmN1X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0 aWMgaW50IGh2bW9wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbygKLSAgICBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpIHVvcCkKLXsKLSAgICB4ZW5f aHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mb190IG9wOwotICAgIHN0cnVjdCBkb21haW4gKmQ7Ci0g ICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICkKLSAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9kb21haW5f YnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICByZXR1cm4g cmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCi0g ICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihYU01fRE1f UFJJViwgZCwgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKTsKLSAgICBpZiAoIHJjICE9IDAg KQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5m byhkLCBvcC5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wLmlvcmVx X3BmbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wLmJ1ZmlvcmVxX3Bm biwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcC5idWZpb3JlcV9wb3J0 KTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0gY29w eV90b19ndWVzdCh1b3AsICZvcCwgMSkgPyAtRUZBVUxUIDogMDsKLSAgICAKLSBvdXQ6Ci0gICAg cmN1X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgaW50IGh2 bW9wX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoCi0gICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5faHZtX2lvX3JhbmdlX3QpIHVvcCkKLXsKLSAgICB4ZW5faHZtX2lvX3JhbmdlX3Qg b3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAg IHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlm ICggcmMgIT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAg ICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9 IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9tYXBfaW9fcmFuZ2Vf dG9faW9yZXFfc2VydmVyKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsK LQotICAgIHJjID0gaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQsIG9w LnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5zdGFy dCwgb3AuZW5kKTsKLQotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1 cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9z ZXJ2ZXIoCi0gICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5faHZtX2lvX3JhbmdlX3QpIHVv cCkKLXsKLSAgICB4ZW5faHZtX2lvX3JhbmdlX3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsK LSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQot ICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFp bl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVy biByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkK LSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9E TV9QUklWLCBkLCBIVk1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcik7Ci0gICAg aWYgKCByYyAhPSAwICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IGh2bV91bm1hcF9p b19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcihkLCBvcC5pZCwgb3AudHlwZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5zdGFydCwgb3AuZW5kKTsKLSAg ICAKLSBvdXQ6Ci0gICAgcmN1X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwotfQot Ci1zdGF0aWMgaW50IGh2bW9wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoCi0gICAgWEVOX0dVRVNU X0hBTkRMRV9QQVJBTSh4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCkgdW9wKQotewot ICAgIHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90IG9wOwotICAgIHN0cnVjdCBkb21h aW4gKmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3As IDEpICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90 ZV9kb21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAg ICByZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFp bihkKSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZl cihYU01fRE1fUFJJViwgZCwgSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSk7Ci0gICAgaWYg KCByYyAhPSAwICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IGh2bV9zZXRfaW9yZXFf c2VydmVyX3N0YXRlKGQsIG9wLmlkLCAhIW9wLmVuYWJsZWQpOwotCi0gb3V0OgotICAgIHJjdV91 bmxvY2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIGludCBodm1vcF9k ZXN0cm95X2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1f ZGVzdHJveV9pb3JlcV9zZXJ2ZXJfdCkgdW9wKQotewotICAgIHhlbl9odm1fZGVzdHJveV9pb3Jl cV9zZXJ2ZXJfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAg IGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZB VUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAm ZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAt RUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsK LQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX2Rl c3Ryb3lfaW9yZXFfc2VydmVyKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91 dDsKLQotICAgIHJjID0gaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQsIG9wLmlkKTsKLQotIG91 dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KIHN0YXRp YyBpbnQgaHZtb3Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yKAogICAgIFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0oeGVuX2h2bV9ldnRjaG5fdXBjYWxsX3ZlY3Rvcl90KSB1b3ApCiB7CkBAIC01Mjg0 LDM2ICs1MDk1LDYgQEAgbG9uZyBkb19odm1fb3AodW5zaWduZWQgbG9uZyBvcCwgWEVOX0dVRVNU X0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgc3RhcnRfaXRlciA9IG9wICYgfm1hc2s7CiAg ICAgc3dpdGNoICggb3AgJj0gbWFzayApCiAgICAgewotICAgIGNhc2UgSFZNT1BfY3JlYXRlX2lv cmVxX3NlcnZlcjoKLSAgICAgICAgcmMgPSBodm1vcF9jcmVhdGVfaW9yZXFfc2VydmVyKAotICAg ICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2 ZXJfdCkpOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhWTU9QX2dldF9pb3JlcV9z ZXJ2ZXJfaW5mbzoKLSAgICAgICAgcmMgPSBodm1vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8oCi0g ICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZl cl9pbmZvX3QpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgY2FzZSBIVk1PUF9tYXBfaW9f cmFuZ2VfdG9faW9yZXFfc2VydmVyOgotICAgICAgICByYyA9IGh2bW9wX21hcF9pb19yYW5nZV90 b19pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9o dm1faW9fcmFuZ2VfdCkpOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhWTU9QX3Vu bWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOgotICAgICAgICByYyA9IGh2bW9wX3VubWFw X2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKAotICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nh c3QoYXJnLCB4ZW5faHZtX2lvX3JhbmdlX3QpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl IEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6Ci0gICAgICAgIHJjID0gaHZtb3Bfc2V0X2lv cmVxX3NlcnZlcl9zdGF0ZSgKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVu X2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3QpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgCi0g ICAgY2FzZSBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZlcjoKLSAgICAgICAgcmMgPSBodm1vcF9k ZXN0cm95X2lvcmVxX3NlcnZlcigKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywg eGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIAog ICAgIGNhc2UgSFZNT1Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yOgogICAgICAgICByYyA9IGh2 bW9wX3NldF9ldnRjaG5fdXBjYWxsX3ZlY3RvcigKICAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9j YXN0KGFyZywgeGVuX2h2bV9ldnRjaG5fdXBjYWxsX3ZlY3Rvcl90KSk7CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXgg MjZhMGNiOC4uODk5YmE2NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtNTE0LDkgKzUxNCw5IEBAIHN0YXRpYyBp bnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5nZXNldHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsCiAgICAgICAgIGNoYXIgKm5hbWU7CiAKICAgICAgICAgcmMgPSBhc3ByaW50ZigmbmFt ZSwgImlvcmVxX3NlcnZlciAlZCAlcyIsIHMtPmlkLAotICAgICAgICAgICAgICAgICAgICAgIChp ID09IEhWTU9QX0lPX1JBTkdFX1BPUlQpID8gInBvcnQiIDoKLSAgICAgICAgICAgICAgICAgICAg ICAoaSA9PSBIVk1PUF9JT19SQU5HRV9NRU1PUlkpID8gIm1lbW9yeSIgOgotICAgICAgICAgICAg ICAgICAgICAgIChpID09IEhWTU9QX0lPX1JBTkdFX1BDSSkgPyAicGNpIiA6CisgICAgICAgICAg ICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1BfSU9fUkFOR0VfUE9SVCkgPyAicG9ydCIgOgorICAg ICAgICAgICAgICAgICAgICAgIChpID09IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWSkgPyAibWVt b3J5IiA6CisgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1BfSU9fUkFOR0VfUENJ KSA/ICJwY2kiIDoKICAgICAgICAgICAgICAgICAgICAgICAiIik7CiAgICAgICAgIGlmICggcmMg KQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtODM0LDkgKzgzNCw5IEBAIGludCBodm1fbWFw X2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlk LAogCiAgICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICAgICAgICAgIHsKLSAgICAgICAg ICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9f UkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QQ0k6CisgICAg ICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgICAgICAgICBjYXNlIFhF Tl9ETU9QX0lPX1JBTkdFX01FTU9SWToKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFO R0VfUENJOgogICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKICAgICAgICAgICAg ICAgICBicmVhazsKIApAQCAtODg2LDkgKzg4Niw5IEBAIGludCBodm1fdW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKIAogICAg ICAgICAgICAgc3dpdGNoICggdHlwZSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNl IEhWTU9QX0lPX1JBTkdFX1BPUlQ6Ci0gICAgICAgICAgICBjYXNlIEhWTU9QX0lPX1JBTkdFX01F TU9SWToKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUENJOgorICAgICAgICAgICAg Y2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgorICAgICAgICAgICAgY2FzZSBYRU5fRE1PUF9J T19SQU5HRV9NRU1PUlk6CisgICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BDSToK ICAgICAgICAgICAgICAgICByID0gcy0+cmFuZ2VbdHlwZV07CiAgICAgICAgICAgICAgICAgYnJl YWs7CiAKQEAgLTExMjksMTIgKzExMjksMTIgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2 bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAKICAgICAgICAgLyogUENJ IGNvbmZpZyBkYXRhIGN5Y2xlICovCiAKLSAgICAgICAgc2JkZiA9IEhWTU9QX1BDSV9TQkRGKDAs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQlVTKENGOF9CREYoY2Y4KSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChDRjhfQkRGKGNmOCkpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7CisgICAg ICAgIHNiZGYgPSBYRU5fRE1PUF9QQ0lfU0JERigwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUENJX0JVUyhDRjhfQkRGKGNmOCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUENJX1NMT1QoQ0Y4X0JERihjZjgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBDSV9GVU5DKENGOF9CREYoY2Y4KSkpOwogCi0gICAgICAgIHR5cGUgPSBIVk1P UF9JT19SQU5HRV9QQ0k7CisgICAgICAgIHR5cGUgPSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k7CiAg ICAgICAgIGFkZHIgPSAoKHVpbnQ2NF90KXNiZGYgPDwgMzIpIHwKICAgICAgICAgICAgICAgIENG OF9BRERSX0xPKGNmOCkgfAogICAgICAgICAgICAgICAgKHAtPmFkZHIgJiAzKTsKQEAgLTExNTUs NyArMTE1NSw3IEBAIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVxX3Nl cnZlcihzdHJ1Y3QgZG9tYWluICpkLAogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHR5cGUgPSAo cC0+dHlwZSA9PSBJT1JFUV9UWVBFX1BJTykgPwotICAgICAgICAgICAgICAgIEhWTU9QX0lPX1JB TkdFX1BPUlQgOiBIVk1PUF9JT19SQU5HRV9NRU1PUlk7CisgICAgICAgICAgICAgICAgWEVOX0RN T1BfSU9fUkFOR0VfUE9SVCA6IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWTsKICAgICAgICAgYWRk ciA9IHAtPmFkZHI7CiAgICAgfQogCkBAIC0xMTc3LDE5ICsxMTc3LDE5IEBAIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZDsKIAotICAgICAgICBjYXNl IEhWTU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9S VDoKICAgICAgICAgICAgIGVuZCA9IGFkZHIgKyBwLT5zaXplIC0gMTsKICAgICAgICAgICAgIGlm ICggcmFuZ2VzZXRfY29udGFpbnNfcmFuZ2UociwgYWRkciwgZW5kKSApCiAgICAgICAgICAgICAg ICAgcmV0dXJuIHM7CiAKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhWTU9QX0lP X1JBTkdFX01FTU9SWToKKyAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9NRU1PUlk6CiAg ICAgICAgICAgICBlbmQgPSBhZGRyICsgKHAtPnNpemUgKiBwLT5jb3VudCkgLSAxOwogICAgICAg ICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19yYW5nZShyLCBhZGRyLCBlbmQpICkKICAgICAg ICAgICAgICAgICByZXR1cm4gczsKIAogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug SFZNT1BfSU9fUkFOR0VfUENJOgorICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BDSToK ICAgICAgICAgICAgIGlmICggcmFuZ2VzZXRfY29udGFpbnNfc2luZ2xldG9uKHIsIGFkZHIgPj4g MzIpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBwLT50eXBlID0gSU9SRVFfVFlQ RV9QQ0lfQ09ORklHOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWlu LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAppbmRleCBkNTVkMTgwLi4zNTBm MDEzIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1 ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9zYXZlLmg+CiAj aW5jbHVkZSA8cHVibGljL2h2bS9odm1fb3AuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaHZtL2RtX29w Lmg+CiAKIHN0cnVjdCBodm1faW9yZXFfcGFnZSB7CiAgICAgdW5zaWduZWQgbG9uZyBnbWZuOwpA QCAtNDcsNyArNDgsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3ZjcHUgewogICAgIGJvb2xfdCAgICAg ICAgICAgcGVuZGluZzsKIH07CiAKLSNkZWZpbmUgTlJfSU9fUkFOR0VfVFlQRVMgKEhWTU9QX0lP X1JBTkdFX1BDSSArIDEpCisjZGVmaW5lIE5SX0lPX1JBTkdFX1RZUEVTIChYRU5fRE1PUF9JT19S QU5HRV9QQ0kgKyAxKQogI2RlZmluZSBNQVhfTlJfSU9fUkFOR0VTICAyNTYKIAogc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9v cC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCmluZGV4IDg2MjdhNjQuLmRjZDQw N2IgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAorKysgYi94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKQEAgLTI4LDggKzI4LDE2NiBAQAogCiAjaWYgZGVm aW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCiAKKyNpbmNsdWRlICIuLi9l dmVudF9jaGFubmVsLmgiCisKKyNpZm5kZWYgdWludDY0X2FsaWduZWRfdAorI2RlZmluZSB1aW50 NjRfYWxpZ25lZF90IHVpbnQ2NF90CisjZW5kaWYKKworLyoKKyAqIElPUkVRIFNlcnZlcnMKKyAq CisgKiBUaGUgaW50ZXJmYWNlIGJldHdlZW4gYW4gSS9PIGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxs ZWQgYW4gSU9SRVEgU2VydmVyLgorICogQSBkb21haW4gc3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2Fj eScgSU9SRVEgU2VydmVyIHdoaWNoIGlzIGluc3RhbnRpYXRlZCBpZgorICogcGFyYW1ldGVyLi4u CisgKgorICogSFZNX1BBUkFNX0lPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29u dGFpbmluZyB0aGUgc3luY2hyb25vdXMKKyAqIGlvcmVxIHN0cnVjdHVyZXMpLCBvci4uLgorICog SFZNX1BBUkFNX0JVRklPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmlu ZyB0aGUgYnVmZmVyZWQKKyAqIGlvcmVxIHJpbmcpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklP UkVRX0VWVENITiBpcyByZWFkICh0byBnZXQgdGhlIGV2ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNl cworICogdG8gcmVxdWVzdCBidWZmZXJlZCBJL08gZW11bGF0aW9uKS4KKyAqCisgKiBUaGUgZm9s bG93aW5nIGh5cGVyY2FsbHMgZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2YgSU9SRVEgU2VydmVy cyBmb3IKKyAqICdzZWNvbmRhcnknIGVtdWxhdG9ycyB3aGljaCBhcmUgaW52b2tlZCB0byBpbXBs ZW1lbnQgcG9ydCBJL08sIG1lbW9yeSwgb3IKKyAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIHdo aWNoIHRoZXkgZXhwbGljaXRseSByZWdpc3Rlci4KKyAqLworCit0eXBlZGVmIHVpbnQxNl90IGlv c2VydmlkX3Q7CisKKy8qCisgKiBYRU5fRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOiBJbnN0YW50 aWF0ZSBhIG5ldyBJT1JFUSBTZXJ2ZXIgZm9yIGEKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlY29uZGFyeSBlbXVsYXRvci4KKyAqCisgKiBUaGUgPGlkPiBoYW5kZWQgYmFjayBp cyB1bmlxdWUgZm9yIHRhcmdldCBkb21haW4uIFRoZSB2YWx1ciBvZgorICogPGhhbmRsZV9idWZp b3JlcT4gc2hvdWxkIGJlIG9uZSBvZiBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfKiBkZWZpbmVkIGlu CisgKiBodm1fb3AuaC4gSWYgdGhlIHZhbHVlIGlzIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9PRkYg dGhlbiAgdGhlIGJ1ZmZlcmVkCisgKiBpb3JlcSByaW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBh bmQgaGVuY2UgYWxsIGVtdWxhdGlvbiByZXF1ZXN0cyB0bworICogdGhpcyBzZXJ2ZXIgd2lsbCBi ZSBzeW5jaHJvbm91cy4KKyAqLworI2RlZmluZSBYRU5fRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVy IDEKKworc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyIHsKKyAgICAvKiBJTiAt IHNob3VsZCBzZXJ2ZXIgaGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcyAqLworICAgIHVpbnQ4X3QgaGFu ZGxlX2J1ZmlvcmVxOworICAgIHVpbnQ4X3QgcGFkWzNdOworICAgIC8qIE9VVCAtIHNlcnZlciBp ZCAqLworICAgIGlvc2VydmlkX3QgaWQ7Cit9OworCisvKgorICogWEVOX0RNT1BfZ2V0X2lvcmVx X3NlcnZlcl9pbmZvOiBHZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzIElPUkVRIFNlcnZlciA8aWQ+Lgor ICoKKyAqIFRoZSBlbXVsYXRvciBuZWVkcyB0byBtYXAgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0 cnVjdHVyZXMgYW5kIGJ1ZmZlcmVkCisgKiBpb3JlcSByaW5nIChpZiBpdCBleGlzdHMpIHRoYXQg WGVuIHVzZXMgdG8gcmVxdWVzdCBlbXVsYXRpb24uIFRoZXNlIGFyZQorICogaG9zdGVkIGluIHRo ZSB0YXJnZXQgZG9tYWluJ3MgZ21mbnMgPGlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wZm4+Cisg KiByZXNwZWN0aXZlbHkuIEluIGFkZGl0aW9uLCBpZiB0aGUgSU9SRVEgU2VydmVyIGlzIGhhbmRs aW5nIGJ1ZmZlcmVkCisgKiBlbXVsYXRpb24gcmVxdWVzdHMsIHRoZSBlbXVsYXRvciBuZWVkcyB0 byBiaW5kIHRvIGV2ZW50IGNoYW5uZWwKKyAqIDxidWZpb3JlcV9wb3J0PiB0byBsaXN0ZW4gZm9y IHRoZW0uIChUaGUgZXZlbnQgY2hhbm5lbHMgdXNlZCBmb3IKKyAqIHN5bmNocm9ub3VzIGVtdWxh dGlvbiByZXF1ZXN0cyBhcmUgc3BlY2lmaWVkIGluIHRoZSBwZXItQ1BVIGlvcmVxCisgKiBzdHJ1 Y3R1cmVzIGluIDxpb3JlcV9wZm4+KS4KKyAqIElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhh bmRsaW5nIGJ1ZmZlcmVkIGVtdWxhdGlvbiByZXF1ZXN0cyB0aGVuIHRoZQorICogdmFsdWVzIGhh bmRlZCBiYWNrIGluIDxidWZpb3JlcV9wZm4+IGFuZCA8YnVmaW9yZXFfcG9ydD4gd2lsbCBib3Ro IGJlIDAuCisgKi8KKyNkZWZpbmUgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIDIKKwor c3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8geworICAgIC8qIElOIC0gc2Vy dmVyIGlkICovCisgICAgaW9zZXJ2aWRfdCBpZDsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgLyog T1VUIC0gYnVmZmVyZWQgaW9yZXEgcG9ydCAqLworICAgIGV2dGNobl9wb3J0X3QgYnVmaW9yZXFf cG9ydDsKKyAgICAvKiBPVVQgLSBzeW5jIGlvcmVxIHBmbiAqLworICAgIHVpbnQ2NF9hbGlnbmVk X3QgaW9yZXFfcGZuOworICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBmbiAqLworICAgIHVp bnQ2NF9hbGlnbmVkX3QgYnVmaW9yZXFfcGZuOworfTsKKworLyoKKyAqIFhFTl9ETU9QX21hcF9p b19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBmb3IKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGlvbiBieSB0aGUgY2xp ZW50IG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBT ZXJ2ZXIgPGlkPi4KKyAqIFhFTl9ETU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVy OiBEZXJlZ2lzdGVyIGFuIEkvTyByYW5nZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBmb3IKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24gYnkgdGhlIGNsaWVudCBv ZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPUkVRIFNl cnZlciA8aWQ+LgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBJL08gdGhhdCBjYW4g YmUgZW11bGF0ZWQ6IHBvcnQgSS9PLCBtZW1vcnkKKyAqIGFjY2Vzc2VzIGFuZCBQQ0kgY29uZmln IHNwYWNlIGFjY2Vzc2VzLiBUaGUgPHR5cGU+IGZpZWxkIGRlbm90ZXMgd2hpY2gKKyAqIHR5cGUg b2YgcmFuZ2UqIHRoZSA8c3RhcnQ+IGFuZCA8ZW5kPiAoaW5jbHVzaXZlKSBmaWVsZHMgYXJlIHNw ZWNpZnlpbmcuCisgKiBQQ0kgY29uZmlnIHNwYWNlIHJhbmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHNl Z21lbnQvYnVzL2RldmljZS9mdW5jdGlvbgorICogdmFsdWVzIHdoaWNoIHNob3VsZCBiZSBlbmNv ZGVkIHVzaW5nIHRoZSBETU9QX1BDSV9TQkRGIGhlbHBlciBtYWNybworICogYmVsb3cuCisgKgor ICogTk9URTogdW5sZXNzIGFuIGVtdWxhdGlvbiByZXF1ZXN0IGZhbGxzIGVudGlyZWx5IHdpdGhp biBhIHJhbmdlIG1hcHBlZAorICogYnkgYSBzZWNvbmRhcnkgZW11bGF0b3IsIGl0IHdpbGwgbm90 IGJlIHBhc3NlZCB0byB0aGF0IGVtdWxhdG9yLgorICovCisjZGVmaW5lIFhFTl9ETU9QX21hcF9p b19yYW5nZV90b19pb3JlcV9zZXJ2ZXIgMworI2RlZmluZSBYRU5fRE1PUF91bm1hcF9pb19yYW5n ZV9mcm9tX2lvcmVxX3NlcnZlciA0CisKK3N0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3Jh bmdlIHsKKyAgICAvKiBJTiAtIHNlcnZlciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAg dWludDE2X3QgcGFkOworICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLworICAgIHVpbnQzMl90 IHR5cGU7CisjIGRlZmluZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUICAgMCAvKiBJL08gcG9ydCBy YW5nZSAqLworIyBkZWZpbmUgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZIDEgLyogTU1JTyByYW5n ZSAqLworIyBkZWZpbmUgWEVOX0RNT1BfSU9fUkFOR0VfUENJICAgIDIgLyogUENJIHNlZ21lbnQv YnVzL2Rldi9mdW5jIHJhbmdlICovCisgICAgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVu ZCBvZiByYW5nZSAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc3RhcnQsIGVuZDsKK307CisKKyNk ZWZpbmUgWEVOX0RNT1BfUENJX1NCREYocyxiLGQsZikgXAorCSgoKChzKSAmIDB4ZmZmZikgPDwg MTYpIHwgIFwKKwkgKCgoYikgJiAweGZmKSA8PCA4KSB8ICAgICBcCisJICgoKGQpICYgMHgxZikg PDwgMykgfCAgICAgXAorCSAoKGYpICYgMHgwNykpCisKKy8qCisgKiBYRU5fRE1PUF9zZXRfaW9y ZXFfc2VydmVyX3N0YXRlOiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgSU9SRVEgU2VydmVyIDxpZD4K KyAqCisgKiBUaGUgSU9SRVEgU2VydmVyIHdpbGwgbm90IGJlIHBhc3NlZCBhbnkgZW11bGF0aW9u IHJlcXVlc3RzIHVudGlsIGl0IGlzCisgKiBpbiB0aGUgZW5hYmxlZCBzdGF0ZS4KKyAqIE5vdGUg dGhhdCB0aGUgY29udGVudHMgb2YgdGhlIGlvcmVxX3BmbiBhbmQgYnVmaW9yZXFfZm4gKHNlZQor ICogWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKSBhcmUgbm90IG1lYW5pbmdmdWwgdW50 aWwgdGhlIElPUkVRIFNlcnZlcgorICogaXMgaW4gdGhlIGVuYWJsZWQgc3RhdGUuCisgKi8KKyNk ZWZpbmUgWEVOX0RNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSA1CisKK3N0cnVjdCB4ZW5fZG1f b3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB7CisgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAg ICBpb3NlcnZpZF90IGlkOworICAgIC8qIElOIC0gZW5hYmxlZD8gKi8KKyAgICB1aW50OF90IGVu YWJsZWQ7CisgICAgdWludDhfdCBwYWQ7Cit9OworCisvKgorICogWEVOX0RNT1BfZGVzdHJveV9p b3JlcV9zZXJ2ZXI6IERlc3Ryb3kgdGhlIElPUkVRIFNlcnZlciA8aWQ+LgorICoKKyAqIEFueSBy ZWdpc3RlcmVkIEkvTyByYW5nZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlcmVnaXN0ZXJlZC4K KyAqLworI2RlZmluZSBYRU5fRE1PUF9kZXN0cm95X2lvcmVxX3NlcnZlciA2CisKK3N0cnVjdCB4 ZW5fZG1fb3BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIgeworICAgIC8qIElOIC0gc2VydmVyIGlkICov CisgICAgaW9zZXJ2aWRfdCBpZDsKKyAgICB1aW50MTZfdCBwYWQ7Cit9OworCiBzdHJ1Y3QgeGVu X2RtX29wIHsKICAgICB1aW50MzJfdCBvcDsKKyAgICB1aW50MzJfdCBwYWQ7CisgICAgdW5pb24g eworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgY3JlYXRlX2lv cmVxX3NlcnZlcjsKKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2lu Zm8gZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVx X3NlcnZlcl9yYW5nZSBtYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOworICAgICAgICBzdHJ1 Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSB1bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVx X3NlcnZlcjsKKyAgICAgICAgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRl IHNldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfZGVzdHJv eV9pb3JlcV9zZXJ2ZXIgZGVzdHJveV9pb3JlcV9zZXJ2ZXI7CisgICAgfSB1OwogfTsKIAogI2Vu ZGlmIC8qIF9fWEVOX18gfHwgX19YRU5fVE9PTFNfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgK aW5kZXggYjNlNDVjZi4uNmZjZDg2ZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2 bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCkBAIC0yNDMs MzcgKzI0MywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2luamVjdF9tc2kgeGVuX2h2bV9p bmplY3RfbXNpX3Q7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX2luamVjdF9tc2lf dCk7CiAKIC8qCi0gKiBJT1JFUSBTZXJ2ZXJzCi0gKgotICogVGhlIGludGVyZmFjZSBiZXR3ZWVu IGFuIEkvTyBlbXVsYXRvciBhbiBYZW4gaXMgY2FsbGVkIGFuIElPUkVRIFNlcnZlci4KLSAqIEEg ZG9tYWluIHN1cHBvcnRzIGEgc2luZ2xlICdsZWdhY3knIElPUkVRIFNlcnZlciB3aGljaCBpcyBp bnN0YW50aWF0ZWQgaWYKLSAqIHBhcmFtZXRlci4uLgotICoKLSAqIEhWTV9QQVJBTV9JT1JFUV9Q Rk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcgdGhlIHN5bmNocm9ub3VzCi0g KiBpb3JlcSBzdHJ1Y3R1cmVzKSwgb3IuLi4KLSAqIEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gaXMg cmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5pbmcgdGhlIGJ1ZmZlcmVkCi0gKiBpb3JlcSBy aW5nKSwgb3IuLi4KLSAqIEhWTV9QQVJBTV9CVUZJT1JFUV9FVlRDSE4gaXMgcmVhZCAodG8gZ2V0 IHRoZSBldmVudCBjaGFubmVsIHRoYXQgWGVuIHVzZXMKLSAqIHRvIHJlcXVlc3QgYnVmZmVyZWQg SS9PIGVtdWxhdGlvbikuCi0gKiAKLSAqIFRoZSBmb2xsb3dpbmcgaHlwZXJjYWxscyBmYWNpbGl0 YXRlIHRoZSBjcmVhdGlvbiBvZiBJT1JFUSBTZXJ2ZXJzIGZvcgotICogJ3NlY29uZGFyeScgZW11 bGF0b3JzIHdoaWNoIGFyZSBpbnZva2VkIHRvIGltcGxlbWVudCBwb3J0IEkvTywgbWVtb3J5LCBv cgotICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgd2hpY2ggdGhleSBleHBsaWNpdGx5IHJlZ2lz dGVyLgorICogRGVmaW5pdGlvbnMgcmVsYXRpbmcgdG8gRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVy LiAoRGVmaW5lZCBoZXJlIGZvcgorICogYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpLgogICovCiAK LXR5cGVkZWYgdWludDE2X3QgaW9zZXJ2aWRfdDsKLQotLyoKLSAqIEhWTU9QX2NyZWF0ZV9pb3Jl cV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3IElPUkVRIFNlcnZlciBmb3IgYSBzZWNvbmRhcnkK LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdG9yIHNlcnZpY2luZyBkb21haW4g PGRvbWlkPi4KLSAqCi0gKiBUaGUgPGlkPiBoYW5kZWQgYmFjayBpcyB1bmlxdWUgZm9yIDxkb21p ZD4uIElmIDxoYW5kbGVfYnVmaW9yZXE+IGlzIHplcm8KLSAqIHRoZSBidWZmZXJlZCBpb3JlcSBy aW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBhbmQgaGVuY2UgYWxsIGVtdWxhdGlvbgotICogcmVx dWVzdGVzIHRvIHRoaXMgc2VydmVyIHdpbGwgYmUgc3luY2hyb25vdXMuCi0gKi8KLSNkZWZpbmUg SFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlciAxNwotc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVx X3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgIC8qIElOIC0gZG9tYWluIHRv IGJlIHNlcnZpY2VkICovCiAjZGVmaW5lIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9PRkYgICAgMAog I2RlZmluZSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfTEVHQUNZIDEKIC8qCkBAIC0yODEsMTA3ICsy NTQsNiBAQCBzdHJ1Y3QgeGVuX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyIHsKICAqIHRoZSBwb2lu dGVyIHBhaXIgZ2V0cyByZWFkIGF0b21pY2FsbHk6CiAgKi8KICNkZWZpbmUgSFZNX0lPUkVRU1JW X0JVRklPUkVRX0FUT01JQyAyCi0gICAgdWludDhfdCBoYW5kbGVfYnVmaW9yZXE7IC8qIElOIC0g c2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQgaW9yZXFzICovCi0gICAgaW9zZXJ2aWRfdCBp ZDsgICAgICAgICAgIC8qIE9VVCAtIHNlcnZlciBpZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhl bl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB4ZW5faHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdDsK LURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KTsK LQotLyoKLSAqIEhWTU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbzogR2V0IGFsbCB0aGUgaW5mb3Jt YXRpb24gbmVjZXNzYXJ5IHRvIGFjY2VzcwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJT1JFUSBTZXJ2ZXIgPGlkPi4gCi0gKgotICogVGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0 aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJlcyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJp bmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNlcyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhl c2UgYXJlCi0gKiBob3N0ZWQgaW4gZG9tYWluIDxkb21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBh bmQgPGJ1ZmlvcmVxX3Bmbj4KLSAqIHJlc3BlY3RpdmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJ T1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVyZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0cywg dGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8gZXZlbnQgY2hhbm5lbAotICogPGJ1ZmlvcmVx X3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRoZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgot ICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVlc3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBl ci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVyZXMgaW4gPGlvcmVxX3Bmbj4pLgotICogSWYgdGhlIElP UkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVmZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRo ZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVkIGJhY2sgaW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZp b3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KLSAqLwotI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFf c2VydmVyX2luZm8gMTgKLXN0cnVjdCB4ZW5faHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7Ci0g ICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNl cnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAgICAgICAgICAgICAgIC8qIElOIC0gc2Vy dmVyIGlkICovCi0gICAgZXZ0Y2huX3BvcnRfdCBidWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1 ZmZlcmVkIGlvcmVxIHBvcnQgKi8KLSAgICB1aW50NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAg LyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8KLSAgICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVx X3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9yZXEgcGZuICovCi19OwotdHlwZWRlZiBzdHJ1Y3Qg eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8geGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2lu Zm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9p bmZvX3QpOwotCi0vKgotICogSFZNX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lz dGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4gPGRvbWlkPgotICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBlbXVsYXRpb24gYnkgdGhlIGNsaWVudCBvZiBJT1JFUQotICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+Ci0gKiBIVk1fdW5t YXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9m IDxkb21pZD4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVt dWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElPUkVRCi0gKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+Ci0gKgotICogVGhlcmUgYXJlIHRocmVlIHR5cGVz IG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRlZDogcG9ydCBJL08sIG1lbW9yeSBhY2Nlc3Nlcwot ICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNjZXNzZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3Rl cyB3aGljaCB0eXBlIG9mIHJhbmdlCi0gKiB0aGUgPHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2 ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgotICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJl IHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9kZXZpY2UvZnVuY3Rpb24gdmFsdWVzCi0gKiB3aGlj aCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0aGUgSFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3Jv IGJlbG93LgotICoKLSAqIE5PVEU6IHVubGVzcyBhbiBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBl bnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBwZWQKLSAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9y LCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gdGhhdCBlbXVsYXRvci4KLSAqLwotI2RlZmluZSBI Vk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyIDE5Ci0jZGVmaW5lIEhWTU9QX3VubWFw X2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDIwCi1zdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7 Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBz ZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2 ZXIgaWQgKi8KLSAgICB1aW50MzJfdCB0eXBlOyAgICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBv ZiByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9fUkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQg cmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2Ug Ki8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX1BDSSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9k ZXYvZnVuYyByYW5nZSAqLwotICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4g LSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBvZiByYW5nZSAqLwotfTsKLXR5cGVkZWYgc3RydWN0 IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9pb19yYW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9I QU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsKLQotI2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIs ZCxmKSAgICAgICAgICAgICAgICAgXAotCSgoKChzKSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAg ICAgICAgICAgICAgXAotCSAoKChiKSAmIDB4ZmYpIDw8IDgpIHwgICAgICAgICAgICAgICAgICAg ICAgXAotCSAoKChkKSAmIDB4MWYpIDw8IDMpIHwgICAgICAgICAgICAgICAgICAgICAgXAotCSAo KGYpICYgMHgwNykpCi0KLS8qCi0gKiBIVk1PUF9kZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJv eSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2VydmljaW5nIGRvbWFpbgotICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxkb21pZD4uCi0gKgotICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdl cyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVyZWdpc3RlcmVkLgotICovCi0jZGVmaW5lIEhWTU9Q X2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCi1zdHJ1Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3Nl cnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsgLyogSU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQg Ki8KLSAgICBpb3NlcnZpZF90IGlkOyAvKiBJTiAtIHNlcnZlciBpZCAqLwotfTsKLXR5cGVkZWYg c3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVx X3NlcnZlcl90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVx X3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJs ZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2ZXIgPGlkPiBzZXJ2aWNpbmcKLSAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiA8ZG9taWQ+LgotICoKLSAqIFRoZSBJT1JFUSBT ZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFueSBlbXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQg aXMgaW4gdGhlCi0gKiBlbmFibGVkIHN0YXRlLgotICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBv ZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3JlcV9mbiAoc2VlCi0gKiBIVk1PUF9nZXRfaW9yZXFf c2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmluZ2Z1bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlz IGluCi0gKiB0aGUgZW5hYmxlZCBzdGF0ZS4KLSAqLwotI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFf c2VydmVyX3N0YXRlIDIyCi1zdHJ1Y3QgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsK LSAgICBkb21pZF90IGRvbWlkOyAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0g ICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAtIHNlcnZlciBpZCAqLwotICAgIHVpbnQ4X3QgZW5h YmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLyAgICAKLX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZt X3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Q7 Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVf dCk7CiAKICNlbmRpZiAvKiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNf XykgKi8KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94 bGF0LmxzdAppbmRleCAwMzlhMzljLi42YjQ4MjkwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94 bGF0LmxzdAorKysgYi94ZW4vaW5jbHVkZS94bGF0LmxzdApAQCAtNTcsNiArNTcsMTEgQEAKID8J Z3JhbnRfZW50cnlfdjIJCQlncmFudF90YWJsZS5oCiA/CWdudHRhYl9zd2FwX2dyYW50X3JlZgkJ Z3JhbnRfdGFibGUuaAogIQlkbV9vcF9idWYJCQlodm0vZG1fb3AuaAorPwlkbV9vcF9jcmVhdGVf aW9yZXFfc2VydmVyCWh2bS9kbV9vcC5oCis/CWRtX29wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyCWh2 bS9kbV9vcC5oCis/CWRtX29wX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbwlodm0vZG1fb3AuaAorPwlk bV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UJaHZtL2RtX29wLmgKKz8JZG1fb3Bfc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZQlodm0vZG1fb3AuaAogPwl2Y3B1X2h2bV9jb250ZXh0CQlodm0vaHZtX3ZjcHUu aAogPwl2Y3B1X2h2bV94ODZfMzIJCQlodm0vaHZtX3ZjcHUuaAogPwl2Y3B1X2h2bV94ODZfNjQJ CQlodm0vaHZtX3ZjcHUuaApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL2R1bW15LmggYi94 ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCBiMjA2ZjVhLi45ZjdjMTc0IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAorKysgYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaApA QCAtNjM0LDEyICs2MzQsNiBAQCBzdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2h2bV9pbmplY3Rf bXNpKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiB4c21fZGVm YXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQpOwogfQogCi1zdGF0aWMgWFNN X0lOTElORSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBk b21haW4gKmQsIGludCBvcCkKLXsKLSAgICBYU01fQVNTRVJUX0FDVElPTihYU01fRE1fUFJJVik7 Ci0gICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihhY3Rpb24sIGN1cnJlbnQtPmRvbWFpbiwg ZCk7Ci19Ci0KIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fbWVtX3NoYXJpbmdfb3AoWFNNX0RF RkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkb21haW4gKmNkLCBpbnQgb3ApCiB7 CiAgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0RNX1BSSVYpOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5oCmluZGV4IGUyZDMzNmYuLmI1 ODQ1YTIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94c20uaAorKysgYi94ZW4vaW5jbHVk ZS94c20veHNtLmgKQEAgLTE2Niw3ICsxNjYsNiBAQCBzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgewog ICAgIGludCAoKmh2bV9zZXRfaXNhX2lycV9sZXZlbCkgKHN0cnVjdCBkb21haW4gKmQpOwogICAg IGludCAoKmh2bV9zZXRfcGNpX2xpbmtfcm91dGUpIChzdHJ1Y3QgZG9tYWluICpkKTsKICAgICBp bnQgKCpodm1faW5qZWN0X21zaSkgKHN0cnVjdCBkb21haW4gKmQpOwotICAgIGludCAoKmh2bV9p b3JlcV9zZXJ2ZXIpIChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApOwogICAgIGludCAoKm1lbV9z aGFyaW5nX29wKSAoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFpbiAqY2QsIGludCBvcCk7 CiAgICAgaW50ICgqYXBpYykgKHN0cnVjdCBkb21haW4gKmQsIGludCBjbWQpOwogICAgIGludCAo Km1lbXR5cGUpICh1aW50MzJfdCBhY2Nlc3MpOwpAQCAtNjU2LDExICs2NTUsNiBAQCBzdGF0aWMg aW5saW5lIGludCB4c21faHZtX2luamVjdF9tc2kgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3Qg ZG9tYWluICpkKQogICAgIHJldHVybiB4c21fb3BzLT5odm1faW5qZWN0X21zaShkKTsKIH0KIAot c3RhdGljIGlubGluZSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIgKHhzbV9kZWZhdWx0X3QgZGVm LCBzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApCi17Ci0gICAgcmV0dXJuIHhzbV9vcHMtPmh2bV9p b3JlcV9zZXJ2ZXIoZCwgb3ApOwotfQotCiBzdGF0aWMgaW5saW5lIGludCB4c21fbWVtX3NoYXJp bmdfb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgZG9tYWlu ICpjZCwgaW50IG9wKQogewogICAgIHJldHVybiB4c21fb3BzLT5tZW1fc2hhcmluZ19vcChkLCBj ZCwgb3ApOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9kdW1teS5jIGIveGVuL3hzbS9kdW1teS5jCmlu ZGV4IGEwODJiMjguLmQ1NDRlYzEgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZHVtbXkuYworKysgYi94 ZW4veHNtL2R1bW15LmMKQEAgLTE0OSw3ICsxNDksNiBAQCB2b2lkIF9faW5pdCB4c21fZml4dXBf b3BzIChzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgKm9wcykKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVs bChvcHMsIGh2bV9zZXRfaXNhX2lycV9sZXZlbCk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwo b3BzLCBodm1fc2V0X3BjaV9saW5rX3JvdXRlKTsKICAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChv cHMsIGh2bV9pbmplY3RfbXNpKTsKLSAgICBzZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGh2bV9p b3JlcV9zZXJ2ZXIpOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgbWVtX3NoYXJpbmdf b3ApOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgYXBpYyk7CiAgICAgc2V0X3RvX2R1 bW15X2lmX251bGwob3BzLCBtYWNoaW5lX21lbW9yeV9tYXApOwpkaWZmIC0tZ2l0IGEveGVuL3hz bS9mbGFzay9ob29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDM4M2RkNGYuLjFj ZThhMzYgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2Zs YXNrL2hvb2tzLmMKQEAgLTE1MjUsMTEgKzE1MjUsNiBAQCBzdGF0aWMgaW50IGZsYXNrX2h2bV9p bmplY3RfbXNpKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIGN1cnJlbnRfaGFzX3Blcm0o ZCwgU0VDQ0xBU1NfSFZNLCBIVk1fX1NFTkRfSVJRKTsKIH0KIAotc3RhdGljIGludCBmbGFza19o dm1faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGludCBvcCkKLXsKLSAgICByZXR1cm4g Y3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19IVk0sIEhWTV9fSFZNQ1RMKTsKLX0KLQogc3Rh dGljIGludCBmbGFza19tZW1fc2hhcmluZ19vcChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgZG9t YWluICpjZCwgaW50IG9wKQogewogICAgIGludCByYyA9IGN1cnJlbnRfaGFzX3Blcm0oY2QsIFNF Q0NMQVNTX0hWTSwgSFZNX19NRU1fU0hBUklORyk7CkBAIC0xODA4LDcgKzE4MDMsNiBAQCBzdGF0 aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29wcyA9IHsKICAgICAuaHZtX3NldF9pc2Ff aXJxX2xldmVsID0gZmxhc2tfaHZtX3NldF9pc2FfaXJxX2xldmVsLAogICAgIC5odm1fc2V0X3Bj aV9saW5rX3JvdXRlID0gZmxhc2tfaHZtX3NldF9wY2lfbGlua19yb3V0ZSwKICAgICAuaHZtX2lu amVjdF9tc2kgPSBmbGFza19odm1faW5qZWN0X21zaSwKLSAgICAuaHZtX2lvcmVxX3NlcnZlciA9 IGZsYXNrX2h2bV9pb3JlcV9zZXJ2ZXIsCiAgICAgLm1lbV9zaGFyaW5nX29wID0gZmxhc2tfbWVt X3NoYXJpbmdfb3AsCiAgICAgLmFwaWMgPSBmbGFza19hcGljLAogICAgIC5tYWNoaW5lX21lbW9y eV9tYXAgPSBmbGFza19tYWNoaW5lX21lbW9yeV9tYXAsCi0tIAoyLjEuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=