From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 38/43] drm/i915: Move GEM object domain management from struct_mutex to local Date: Wed, 6 Mar 2019 14:25:12 +0000 Message-ID: <20190306142517.22558-39-chris@chris-wilson.co.uk> References: <20190306142517.22558-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 905386E099 for ; Wed, 6 Mar 2019 14:25:41 +0000 (UTC) In-Reply-To: <20190306142517.22558-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: matthew.auld@intel.com List-Id: intel-gfx@lists.freedesktop.org VXNlIHRoZSBwZXItb2JqZWN0IGxvY2FsIGxvY2sgdG8gY29udHJvbCB0aGUgY2FjaGUgZG9tYWlu IG9mIHRoZQppbmRpdmlkdWFsIEdFTSBvYmplY3RzLCBub3Qgc3RydWN0X211dGV4LiBUaGlzIGlz IGEgaHVnZSBsZWFwIGZvcndhcmQKZm9yIHVzIGluIHRlcm1zIG9mIG9iamVjdC1sZXZlbCBzeW5j aHJvbmlzYXRpb247IGV4ZWNidWZmZXJzIGFyZQpjb29yZGluYXRlZCB1c2luZyB0aGUgd3dfbXV0 ZXggYW5kIHByZWFkL3B3cml0ZSBpcyBmaW5hbGx5IGZ1bGx5CnNlcmlhbGlzZWQgYWdhaW4uCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsZmx1c2guYyAgIHwgICA0ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmMgICAgfCAgMTAgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAgICB8ICA3MCArKysrKy0t LS0tCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAxMjUg KysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9mZW5j ZS5jICAgICB8ICA5OSArKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX21tYW4uYyAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9vYmplY3QuYyAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fb2JqZWN0LmggICAgfCAgMTQgKysKIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9o dWdlX3BhZ2VzLmMgICB8ICAxNCArLQogLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b2hlcmVuY3kuYyAgIHwgIDEyICsrCiAuLi4vZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dl bV9jb250ZXh0LmMgfCAgMjYgKysrKwogLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fbW1hbi5jICAgIHwgICA2ICsKIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2Vt X3BoeXMuYyAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIu YyAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYyAg ICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMg ICAgICAgIHwgIDIzICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICAgICAgICB8IDEyOCArKysrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVuZGVyX3N0YXRlLmMgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGVyZi5jICAgICAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 bWEuYyAgICAgICAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zt YS5oICAgICAgICAgICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyAgICAgICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYyAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2cuYyAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg ICAgICAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku YyAgICAgICAgICB8ICAyNSArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMg ICAgICAgICAgICB8ICAgMiArCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9l dmljdC5jICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Jl cXVlc3QuYyB8ICAgOCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlu bmVyLmMgIHwgICA0ICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hl Y2suYyAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMu YyAgICB8ICAgNCArCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMg ICAgfCAgIDggKysKIDM2IGZpbGVzIGNoYW5nZWQsIDQ4MiBpbnNlcnRpb25zKCspLCAxODkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2ZlbmNlLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDg0ZGZkZjkwZTBlNy4uODlm YjRlYWNhNGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtODAsNiArODAsNyBAQCBpOTE1LXkg Kz0gXAogCSAgZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5vIFwKIAkgIGdlbS9pOTE1X2dlbV9kb21haW4u byBcCiAJICBnZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5vIFwKKwkgIGdlbS9pOTE1X2dlbV9mZW5j ZS5vIFwKIAkgIGdlbS9pOTE1X2dlbV9pbnRlcm5hbC5vIFwKIAkgIGdlbS9pOTE1X2dlbV9vYmpl Y3QubyBcCiAJICBnZW0vaTkxNV9nZW1fbW1hbi5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGZsdXNoLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fY2xmbHVzaC5jCmluZGV4IDA5M2JmZmY1NWE5Ni4uZWZhYjQ3MjUwNTg4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY2xmbHVzaC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGZsdXNoLmMKQEAgLTk2LDYg Kzk2LDggQEAgYm9vbCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAogewogCXN0cnVjdCBjbGZsdXNoICpjbGZsdXNoOwogCisJYXNzZXJ0X29i amVjdF9oZWxkKG9iaik7CisKIAkvKgogCSAqIFN0b2xlbiBtZW1vcnkgaXMgYWx3YXlzIGNvaGVy ZW50IHdpdGggdGhlIEdQVSBhcyBpdCBpcyBleHBsaWNpdGx5CiAJICogbWFya2VkIGFzIHdjIGJ5 IHRoZSBzeXN0ZW0sIG9yIHRoZSBzeXN0ZW0gaXMgY2FjaGUtY29oZXJlbnQuCkBAIC0xNDUsOSAr MTQ3LDcgQEAgYm9vbCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAogCQkJCQkJdHJ1ZSwgSTkxNV9GRU5DRV9USU1FT1VULAogCQkJCQkJSTkx NV9GRU5DRV9HRlApOwogCi0JCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKG9iai0+cmVzdiwgTlVM TCk7CiAJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShvYmotPnJlc3YsICZjbGZs dXNoLT5kbWEpOwotCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKG9iai0+cmVzdik7CiAKIAkJ aTkxNV9zd19mZW5jZV9jb21taXQoJmNsZmx1c2gtPndhaXQpOwogCX0gZWxzZSBpZiAob2JqLT5t bS5wYWdlcykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jCmlu ZGV4IGI1ZDg2Y2ZhZGQ0Ni4uMTU4NWU1NGVmMjZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jCkBAIC0xNTEsNyArMTUxLDYgQEAgc3RhdGljIGludCBpOTE1 X2dlbV9kbWFidWZfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICoKIHN0YXRpYyBpbnQgaTkxNV9nZW1fYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1h X2J1ZiAqZG1hX2J1ZiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQogewogCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsK LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlib29sIHdyaXRlID0g KGRpcmVjdGlvbiA9PSBETUFfQklESVJFQ1RJT05BTCB8fCBkaXJlY3Rpb24gPT0gRE1BX1RPX0RF VklDRSk7CiAJaW50IGVycjsKIApAQCAtMTU5LDEyICsxNTgsMTIgQEAgc3RhdGljIGludCBpOTE1 X2dlbV9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBlbnVtIGRtYV9k YXRhX2RpcmUKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gaTkxNV9tdXRleF9s b2NrX2ludGVycnVwdGlibGUoZGV2KTsKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRl cnJ1cHRpYmxlKG9iaik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKIAllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB3cml0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCiBvdXQ6 CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CkBAIC0xNzQsMTkgKzE3MywxOCBA QCBzdGF0aWMgaW50IGk5MTVfZ2VtX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRt YV9idWYsIGVudW0gZG1hX2RhdGFfZGlyZQogc3RhdGljIGludCBpOTE1X2dlbV9lbmRfY3B1X2Fj Y2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGly ZWN0aW9uKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3Rv X29iaihkbWFfYnVmKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsK IAlpbnQgZXJyOwogCiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlm IChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0 aWJsZShkZXYpOworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2Jq KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAKIG91dDoKIAlpOTE1X2dlbV9v YmplY3RfdW5waW5fcGFnZXMob2JqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9kb21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9kb21haW4uYwppbmRleCBjNTRlOWU3MzIxMmIuLmEwMzQ2YmM0ODNmOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwpAQCAtMzEsOSArMzEsOSBAQCB2b2lk IGk5MTVfZ2VtX29iamVjdF9mbHVzaF9pZl9kaXNwbGF5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiAJaWYgKCFSRUFEX09OQ0Uob2JqLT5waW5fZ2xvYmFsKSkKIAkJcmV0dXJuOwog Ci0JbXV0ZXhfbG9jaygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9v YmplY3RfbG9jayhvYmopOwogCV9faTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2Zvcl9kaXNwbGF5KG9i aik7Ci0JbXV0ZXhfdW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVf Z2VtX29iamVjdF91bmxvY2sob2JqKTsKIH0KIAogLyoqCkBAIC00OSwxMSArNDksMTAgQEAgaTkx NV9nZW1fb2JqZWN0X3NldF90b193Y19kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwgYm9vbCB3cml0ZSkKIHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgm b2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlhc3NlcnRfb2JqZWN0X2hlbGQob2JqKTsK IAogCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKIAkJCQkgICBJOTE1X1dBSVRfSU5U RVJSVVBUSUJMRSB8Ci0JCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8CiAJCQkJICAgKHdyaXRlID8g STkxNV9XQUlUX0FMTCA6IDApLAogCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAlpZiAo cmV0KQpAQCAtMTExLDExICsxMTAsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9t YWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCiB7CiAJaW50 IHJldDsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRl eCk7CisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf d2FpdChvYmosCiAJCQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAotCQkJCSAgIEk5MTVf V0FJVF9MT0NLRUQgfAogCQkJCSAgICh3cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKIAkJCQkg ICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CiAJaWYgKHJldCkKQEAgLTE4MSw3ICsxNzksNyBAQCBp bnQgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQlsb2NrZGVw X2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWFzc2VydF9vYmpl Y3RfaGVsZChvYmopOwogCiAJaWYgKG9iai0+Y2FjaGVfbGV2ZWwgPT0gY2FjaGVfbGV2ZWwpCiAJ CXJldHVybiAwOwpAQCAtMjMwLDcgKzIyOCw2IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2Nh Y2hlX2xldmVsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAqLwogCQlyZXQg PSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCiAJCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFIHwKLQkJCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8CiAJCQkJCSAgIEk5MTVfV0FJVF9BTEws CiAJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAkJaWYgKHJldCkKQEAgLTM3NCwxMiAr MzcxLDE2IEBAIGludCBpOTE1X2dlbV9zZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0gaTkx NV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVy cnVwdGlibGUoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0 OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIGxldmVsKTsK LQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CisJaWYgKHJldCA9PSAwKSB7CisJCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBsZXZlbCk7CisJCWk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKIAogb3V0OgogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKQEAgLTQwMSw3ICs0MDIs NyBAQCBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0J bG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlhc3Nl cnRfb2JqZWN0X2hlbGQob2JqKTsKIAogCS8qIE1hcmsgdGhlIGdsb2JhbCBwaW4gZWFybHkgc28g dGhhdCB3ZSBhY2NvdW50IGZvciB0aGUKIAkgKiBkaXNwbGF5IGNvaGVyZW5jeSB3aGlsc3Qgc2V0 dGluZyB1cCB0aGUgY2FjaGUgZG9tYWlucy4KQEAgLTQ4NiwxNiArNDg3LDE4IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX29iamVjdF9idW1wX2luYWN0aXZlX2dndHQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHZvaWQKIGk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlf cGxhbmUoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1h LT52bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiA9IHZtYS0+b2JqOworCisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAKLQlpZiAo V0FSTl9PTih2bWEtPm9iai0+cGluX2dsb2JhbCA9PSAwKSkKKwlpZiAoV0FSTl9PTihvYmotPnBp bl9nbG9iYWwgPT0gMCkpCiAJCXJldHVybjsKIAotCWlmICgtLXZtYS0+b2JqLT5waW5fZ2xvYmFs ID09IDApCisJaWYgKC0tb2JqLT5waW5fZ2xvYmFsID09IDApCiAJCXZtYS0+ZGlzcGxheV9hbGln bm1lbnQgPSBJOTE1X0dUVF9NSU5fQUxJR05NRU5UOwogCiAJLyogQnVtcCB0aGUgTFJVIHRvIHRy eSBhbmQgYXZvaWQgcHJlbWF0dXJlIGV2aWN0aW9uIHdoaWxzdCBmbGlwcGluZyAgKi8KLQlpOTE1 X2dlbV9vYmplY3RfYnVtcF9pbmFjdGl2ZV9nZ3R0KHZtYS0+b2JqKTsKKwlpOTE1X2dlbV9vYmpl Y3RfYnVtcF9pbmFjdGl2ZV9nZ3R0KG9iaik7CiAKIAlpOTE1X3ZtYV91bnBpbih2bWEpOwogfQpA QCAtNTEzLDExICs1MTYsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCiB7CiAJaW50IHJldDsK IAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJ YXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChv YmosCiAJCQkJICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAotCQkJCSAgIEk5MTVfV0FJVF9M T0NLRUQgfAogCQkJCSAgICh3cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKIAkJCQkgICBNQVhf U0NIRURVTEVfVElNRU9VVCk7CiAJaWYgKHJldCkKQEAgLTYxOSw3ICs2MjEsNyBAQCBpOTE1X2dl bV9zZXRfZG9tYWluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ aWYgKGVycikKIAkJZ290byBvdXQ7CiAKLQllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0 aWJsZShkZXYpOworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2Jq KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dF91bnBpbjsKIApAQCAtNjMzLDcgKzYzNSw3IEBAIGk5 MTVfZ2VtX3NldF9kb21haW5faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkvKiBBbmQgYnVtcCB0aGUgTFJVIGZvciB0aGlzIGFjY2VzcyAqLwogCWk5MTVfZ2VtX29i amVjdF9idW1wX2luYWN0aXZlX2dndHQob2JqKTsKIAotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAogCWlmICh3cml0ZV9k b21haW4gIT0gMCkKIAkJaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLApAQCAtNjU2LDIyICs2 NTgsMjMgQEAgaW50IGk5MTVfZ2VtX29iamVjdF9wcmVwYXJlX3JlYWQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgm b2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQogCSpuZWVkc19jbGZsdXNoID0gMDsKIAlp ZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkKIAkJcmV0dXJuIC1FTk9E RVY7CiAKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9i aiwKLQkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJICAgSTkxNV9XQUlUX0xP Q0tFRCwKKwkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKIAkJCQkgICBNQVhfU0NIRURV TEVfVElNRU9VVCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJfdW5sb2Nr OwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCi0J CXJldHVybiByZXQ7CisJCWdvdG8gZXJyX3VubG9jazsKIAogCWlmIChvYmotPmNhY2hlX2NvaGVy ZW50ICYgSTkxNV9CT19DQUNIRV9DT0hFUkVOVF9GT1JfUkVBRCB8fAogCSAgICAhc3RhdGljX2Nw dV9oYXMoWDg2X0ZFQVRVUkVfQ0xGTFVTSCkpIHsKQEAgLTY5OSw2ICs3MDIsOCBAQCBpbnQgaTkx NV9nZW1fb2JqZWN0X3ByZXBhcmVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCiBlcnJfdW5waW46CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CitlcnJf dW5sb2NrOgorCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlyZXR1cm4gcmV0OwogfQog CkBAIC03MDcsMjMgKzcxMiwyNCBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfd3JpdGUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIHsKIAlpbnQgcmV0OwogCi0JbG9ja2Rl cF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQogCSpuZWVkc19j bGZsdXNoID0gMDsKIAlpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkK IAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1 cHRpYmxlKG9iaik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCXJldCA9IGk5MTVfZ2Vt X29iamVjdF93YWl0KG9iaiwKIAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJ ICAgSTkxNV9XQUlUX0xPQ0tFRCB8CiAJCQkJICAgSTkxNV9XQUlUX0FMTCwKIAkJCQkgICBNQVhf U0NIRURVTEVfVElNRU9VVCk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJf dW5sb2NrOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7CisJCWdvdG8gZXJyX3VubG9jazsKIAogCWlmIChvYmotPmNhY2hl X2NvaGVyZW50ICYgSTkxNV9CT19DQUNIRV9DT0hFUkVOVF9GT1JfV1JJVEUgfHwKIAkgICAgIXN0 YXRpY19jcHVfaGFzKFg4Nl9GRUFUVVJFX0NMRkxVU0gpKSB7CkBAIC03NjAsNSArNzY2LDcgQEAg aW50IGk5MTVfZ2VtX29iamVjdF9wcmVwYXJlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAKIGVycl91bnBpbjoKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2Jq KTsKK2Vycl91bmxvY2s6CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCXJldHVybiBy ZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhl Y2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIu YwppbmRleCA0ZmU1MjhkYzIzZGEuLjU1ODE3ZWU3NTRiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xMDU1LDcgKzEwNTUsOSBAQCBz dGF0aWMgdm9pZCAqcmVsb2NfaW9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IAkJaWYgKHVzZV9jcHVfcmVsb2MoY2FjaGUsIG9iaikpCiAJCQlyZXR1cm4gTlVMTDsKIAorCQlp OTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4ob2JqLCB0cnVlKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwog CQlpZiAoZXJyKQogCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIApAQCAtMTE0NCw2ICsxMTQ2LDI2 IEBAIHN0YXRpYyB2b2lkIGNsZmx1c2hfd3JpdGUzMih1MzIgKmFkZHIsIHUzMiB2YWx1ZSwgdW5z aWduZWQgaW50IGZsdXNoZXMpCiAJCSphZGRyID0gdmFsdWU7CiB9CiAKK3N0YXRpYyBpbnQgcmVs b2NfbW92ZV90b19ncHUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKKwlp bnQgZXJyOworCisJaTkxNV92bWFfbG9jayh2bWEpOworCisJaWYgKG9iai0+Y2FjaGVfZGlydHkg JiB+b2JqLT5jYWNoZV9jb2hlcmVudCkKKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCAw KTsKKwlvYmotPndyaXRlX2RvbWFpbiA9IDA7CisKKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRf b2JqZWN0KHJxLCB2bWEtPm9iaiwgdHJ1ZSk7CisJaWYgKGVyciA9PSAwKQorCQllcnIgPSBpOTE1 X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisKKwlpOTE1 X3ZtYV91bmxvY2sodm1hKTsKKworCXJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBpbnQgX19yZWxv Y19ncHVfYWxsb2Moc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCQkgICAgIHN0cnVjdCBp OTE1X3ZtYSAqdm1hLAogCQkJICAgICB1bnNpZ25lZCBpbnQgbGVuKQpAQCAtMTE1NSwxNSArMTE3 Nyw2IEBAIHN0YXRpYyBpbnQgX19yZWxvY19ncHVfYWxsb2Moc3RydWN0IGk5MTVfZXhlY2J1ZmZl ciAqZWIsCiAJdTMyICpjbWQ7CiAJaW50IGVycjsKIAotCWlmIChEQkdfRk9SQ0VfUkVMT0MgPT0g Rk9SQ0VfR1BVX1JFTE9DKSB7Ci0JCW9iaiA9IHZtYS0+b2JqOwotCQlpZiAob2JqLT5jYWNoZV9k aXJ0eSAmIH5vYmotPmNhY2hlX2NvaGVyZW50KQotCQkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qo b2JqLCAwKTsKLQkJb2JqLT53cml0ZV9kb21haW4gPSAwOwotCX0KLQotCUdFTV9CVUdfT04odm1h LT5vYmotPndyaXRlX2RvbWFpbiAmIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwotCiAJb2JqID0gaTkx NV9nZW1fYmF0Y2hfcG9vbF9nZXQoJmViLT5lbmdpbmUtPmJhdGNoX3Bvb2wsIFBBR0VfU0laRSk7 CiAJaWYgKElTX0VSUihvYmopKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwpAQCAtMTE3Niw3ICsx MTg5LDkgQEAgc3RhdGljIGludCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1Y3QgaTkxNV9leGVjYnVm ZmVyICplYiwKIAlpZiAoSVNfRVJSKGNtZCkpCiAJCXJldHVybiBQVFJfRVJSKGNtZCk7CiAKKwlp OTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f d2NfZG9tYWluKG9iaiwgZmFsc2UpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlp ZiAoZXJyKQogCQlnb3RvIGVycl91bm1hcDsKIApAQCAtMTE5Niw3ICsxMjExLDcgQEAgc3RhdGlj IGludCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJZ290 byBlcnJfdW5waW47CiAJfQogCi0JZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X29iamVjdChycSwg dm1hLT5vYmosIHRydWUpOworCWVyciA9IHJlbG9jX21vdmVfdG9fZ3B1KHJxLCB2bWEpOwogCWlm IChlcnIpCiAJCWdvdG8gZXJyX3JlcXVlc3Q7CiAKQEAgLTEyMDQsMTQgKzEyMTksMTIgQEAgc3Rh dGljIGludCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJ CQkJYmF0Y2gtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwKIAkJCQkJY2FjaGUtPmdlbiA+IDUgPyAw IDogSTkxNV9ESVNQQVRDSF9TRUNVUkUpOwogCWlmIChlcnIpCi0JCWdvdG8gZXJyX3JlcXVlc3Q7 CisJCWdvdG8gc2tpcF9yZXF1ZXN0OwogCisJaTkxNV92bWFfbG9jayhiYXRjaCk7CiAJR0VNX0JV R19PTighcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KGJhdGNoLT5yZXN2LCB0 cnVlKSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJxLCAwKTsKLQlp ZiAoZXJyKQotCQlnb3RvIHNraXBfcmVxdWVzdDsKLQotCWVyciA9IGk5MTVfdm1hX21vdmVfdG9f YWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2soYmF0 Y2gpOwogCWlmIChlcnIpCiAJCWdvdG8gc2tpcF9yZXF1ZXN0OwogCkBAIC0xODIwLDI0ICsxODMz LDU5IEBAIHN0YXRpYyBpbnQgZWJfcmVsb2NhdGUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIp CiBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQog ewogCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGViLT5idWZmZXJfY291bnQ7CisJc3RydWN0 IHd3X2FjcXVpcmVfY3R4IGFjcXVpcmU7CiAJdW5zaWduZWQgaW50IGk7Ci0JaW50IGVycjsKKwlp bnQgZXJyID0gMDsKKworCXd3X2FjcXVpcmVfaW5pdCgmYWNxdWlyZSwgJnJlc2VydmF0aW9uX3d3 X2NsYXNzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hID0gZWItPnZtYVtpXTsKKworCQllcnIgPSB3d19tdXRleF9sb2NrX2ludGVycnVw dGlibGUoJnZtYS0+cmVzdi0+bG9jaywgJmFjcXVpcmUpOworCQlpZiAoIWVycikKKwkJCWNvbnRp bnVlOworCisJCUdFTV9CVUdfT04oZXJyID09IC1FQUxSRUFEWSk7IC8qIE5vIGR1cGxpY2F0ZSB2 bWEgKi8KKworCQlpZiAoZXJyID09IC1FREVBRExLKSB7CisJCQlHRU1fQlVHX09OKGkgPT0gMCk7 CisJCQlkbyB7CisJCQkJaW50IGogPSBpIC0gMTsKKworCQkJCXd3X211dGV4X3VubG9jaygmZWIt PnZtYVtqXS0+cmVzdi0+bG9jayk7CisKKwkJCQlzd2FwKGViLT5mbGFnc1tpXSwgZWItPmZsYWdz W2pdKTsKKwkJCQlzd2FwKGViLT52bWFbaV0sICBlYi0+dm1hW2pdKTsKKwkJCQllYi0+dm1hW2ld LT5leGVjX2ZsYWdzID0gJmViLT5mbGFnc1tpXTsKKwkJCX0gd2hpbGUgKC0taSk7CisJCQlHRU1f QlVHX09OKHZtYSAhPSBlYi0+dm1hWzBdKTsKKwkJCXZtYS0+ZXhlY19mbGFncyA9ICZlYi0+Zmxh Z3NbMF07CisKKwkJCWVyciA9IHd3X211dGV4X2xvY2tfc2xvd19pbnRlcnJ1cHRpYmxlKCZ2bWEt PnJlc3YtPmxvY2ssCisJCQkJCQkJICAgICAgICZhY3F1aXJlKTsKKwkJfQorCQlpZiAoZXJyKQor CQkJYnJlYWs7CisJfQorCXd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7CisKKwl3aGlsZSAoaS0t KSB7CiAJCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKIAkJc3RydWN0IGk5MTVf dm1hICp2bWEgPSBlYi0+dm1hW2ldOwogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gdm1hLT5vYmo7CiAKKwkJYXNzZXJ0X3ZtYV9oZWxkKHZtYSk7CisKIAkJaWYgKGZsYWdzICYg RVhFQ19PQkpFQ1RfQ0FQVFVSRSkgewogCQkJc3RydWN0IGk5MTVfY2FwdHVyZV9saXN0ICpjYXB0 dXJlOwogCiAJCQljYXB0dXJlID0ga21hbGxvYyhzaXplb2YoKmNhcHR1cmUpLCBHRlBfS0VSTkVM KTsKLQkJCWlmICh1bmxpa2VseSghY2FwdHVyZSkpCi0JCQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkJ CWNhcHR1cmUtPm5leHQgPSBlYi0+cmVxdWVzdC0+Y2FwdHVyZV9saXN0OwotCQkJY2FwdHVyZS0+ dm1hID0gZWItPnZtYVtpXTsKLQkJCWViLT5yZXF1ZXN0LT5jYXB0dXJlX2xpc3QgPSBjYXB0dXJl OworCQkJaWYgKGNhcHR1cmUpIHsKKwkJCQljYXB0dXJlLT5uZXh0ID0gZWItPnJlcXVlc3QtPmNh cHR1cmVfbGlzdDsKKwkJCQljYXB0dXJlLT52bWEgPSB2bWE7CisJCQkJZWItPnJlcXVlc3QtPmNh cHR1cmVfbGlzdCA9IGNhcHR1cmU7CisJCQl9CiAJCX0KIAogCQkvKgpAQCAtMTg1NywyNCArMTkw NSwxNSBAQCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIg KmViKQogCQkJCWZsYWdzICY9IH5FWEVDX09CSkVDVF9BU1lOQzsKIAkJfQogCi0JCWlmIChmbGFn cyAmIEVYRUNfT0JKRUNUX0FTWU5DKQotCQkJY29udGludWU7Ci0KLQkJZXJyID0gaTkxNV9yZXF1 ZXN0X2F3YWl0X29iamVjdAotCQkJKGViLT5yZXF1ZXN0LCBvYmosIGZsYWdzICYgRVhFQ19PQkpF Q1RfV1JJVEUpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CisJCWlmIChlcnIgPT0g MCAmJiAhKGZsYWdzICYgRVhFQ19PQkpFQ1RfQVNZTkMpKSB7CisJCQllcnIgPSBpOTE1X3JlcXVl c3RfYXdhaXRfb2JqZWN0CisJCQkJKGViLT5yZXF1ZXN0LCBvYmosIGZsYWdzICYgRVhFQ19PQkpF Q1RfV1JJVEUpOworCQl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQl1bnNp Z25lZCBpbnQgZmxhZ3MgPSBlYi0+ZmxhZ3NbaV07Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0g ZWItPnZtYVtpXTsKKwkJaWYgKGVyciA9PSAwKQorCQkJZXJyID0gaTkxNV92bWFfbW92ZV90b19h Y3RpdmUodm1hLCBlYi0+cmVxdWVzdCwgZmxhZ3MpOwogCi0JCWVyciA9IGk5MTVfdm1hX21vdmVf dG9fYWN0aXZlKHZtYSwgZWItPnJlcXVlc3QsIGZsYWdzKTsKLQkJaWYgKHVubGlrZWx5KGVycikp IHsKLQkJCWk5MTVfcmVxdWVzdF9za2lwKGViLT5yZXF1ZXN0LCBlcnIpOwotCQkJcmV0dXJuIGVy cjsKLQkJfQorCQlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAogCQlfX2ViX3VucmVzZXJ2ZV92bWEo dm1hLCBmbGFncyk7CiAJCXZtYS0+ZXhlY19mbGFncyA9IE5VTEw7CkBAIC0xODgyLDEyICsxOTIx LDIwIEBAIHN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAq ZWIpCiAJCWlmICh1bmxpa2VseShmbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikpCiAJCQlp OTE1X3ZtYV9wdXQodm1hKTsKIAl9CisJd3dfYWNxdWlyZV9maW5pKCZhY3F1aXJlKTsKKworCWlm ICh1bmxpa2VseShlcnIpKQorCQlnb3RvIGVycl9za2lwOworCiAJZWItPmV4ZWMgPSBOVUxMOwog CiAJLyogVW5jb25kaXRpb25hbGx5IGZsdXNoIGFueSBjaGlwc2V0IGNhY2hlcyAoZm9yIHN0cmVh bWluZyB3cml0ZXMpLiAqLwogCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goZWItPmk5MTUpOwotCiAJ cmV0dXJuIDA7CisKK2Vycl9za2lwOgorCWk5MTVfcmVxdWVzdF9za2lwKGViLT5yZXF1ZXN0LCBl cnIpOworCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVfZ2VtX2NoZWNrX2V4ZWNi dWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlYykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4wMjE0MjVmMzBhNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZmVuY2UuYwpAQCAtMCwwICsxLDk5IEBACisvKgorICog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdC5oIgorCisj aW5jbHVkZSAiLi4vaTkxNV9kcnYuaCIKKworc3RhdGljIERFRklORV9TUElOTE9DSyhmZW5jZV9s b2NrKTsKKworc3RydWN0IHN0dWJfZmVuY2UgeworCXN0cnVjdCBkbWFfZmVuY2UgZG1hOworCXN0 cnVjdCBpOTE1X3N3X2ZlbmNlIGNoYWluOworfTsKKworc3RhdGljIGludCBfX2k5MTVfc3dfZmVu Y2VfY2FsbAorc3R1Yl9ub3RpZnkoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLCBlbnVtIGk5 MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKQoreworCXN0cnVjdCBzdHViX2ZlbmNlICpzdHViID0g Y29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBjaGFpbik7CisKKwlzd2l0Y2ggKHN0 YXRlKSB7CisJY2FzZSBGRU5DRV9DT01QTEVURToKKwkJZG1hX2ZlbmNlX3NpZ25hbCgmc3R1Yi0+ ZG1hKTsKKwkJYnJlYWs7CisKKwljYXNlIEZFTkNFX0ZSRUU6CisJCWRtYV9mZW5jZV9wdXQoJnN0 dWItPmRtYSk7CisJCWJyZWFrOworCX0KKworCXJldHVybiBOT1RJRllfRE9ORTsKK30KKworc3Rh dGljIGNvbnN0IGNoYXIgKnN0dWJfZHJpdmVyX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2Up Cit7CisJcmV0dXJuIERSSVZFUl9OQU1FOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqc3R1Yl90 aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXJldHVybiAib2JqZWN0 IjsKK30KKworc3RhdGljIHZvaWQgc3R1Yl9yZWxlYXNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl KQoreworCXN0cnVjdCBzdHViX2ZlbmNlICpzdHViID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBl b2YoKnN0dWIpLCBkbWEpOworCisJaTkxNV9zd19mZW5jZV9maW5pKCZzdHViLT5jaGFpbik7CisK KwlCVUlMRF9CVUdfT04ob2Zmc2V0b2YodHlwZW9mKCpzdHViKSwgZG1hKSk7CisJZG1hX2ZlbmNl X2ZyZWUoJnN0dWItPmRtYSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29w cyBzdHViX2ZlbmNlX29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0gc3R1Yl9kcml2ZXJfbmFt ZSwKKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBzdHViX3RpbWVsaW5lX25hbWUsCisJLnJlbGVhc2Ug PSBzdHViX3JlbGVhc2UsCit9OworCitzdHJ1Y3QgZG1hX2ZlbmNlICoKK2k5MTVfZ2VtX29iamVj dF9sb2NrX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0 IHN0dWJfZmVuY2UgKnN0dWI7CisKKwlhc3NlcnRfb2JqZWN0X2hlbGQob2JqKTsKKworCXN0dWIg PSBrbWFsbG9jKHNpemVvZigqc3R1YiksIEdGUF9LRVJORUwpOworCWlmICghc3R1YikKKwkJcmV0 dXJuIE5VTEw7CisKKwlkbWFfZmVuY2VfaW5pdCgmc3R1Yi0+ZG1hLCAmc3R1Yl9mZW5jZV9vcHMs ICZmZW5jZV9sb2NrLAorCQkgICAgICAgdG9faTkxNShvYmotPmJhc2UuZGV2KS0+bW0udW5vcmRl cmVkX3RpbWVsaW5lLAorCQkgICAgICAgMCk7CisJaTkxNV9zd19mZW5jZV9pbml0KCZzdHViLT5j aGFpbiwgc3R1Yl9ub3RpZnkpOworCisJaWYgKGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRp b24oJnN0dWItPmNoYWluLAorCQkJCQkgICAgb2JqLT5yZXN2LCBOVUxMLAorCQkJCQkgICAgdHJ1 ZSwgSTkxNV9GRU5DRV9USU1FT1VULAorCQkJCQkgICAgSTkxNV9GRU5DRV9HRlApIDwgMCkKKwkJ Z290byBlcnI7CisKKwlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2Uob2JqLT5yZXN2 LCAmc3R1Yi0+ZG1hKTsKKworCXJldHVybiAmc3R1Yi0+ZG1hOworCitlcnI6CisJc3R1Yl9yZWxl YXNlKCZzdHViLT5kbWEpOworCXJldHVybiBOVUxMOworfQorCit2b2lkIGk5MTVfZ2VtX29iamVj dF91bmxvY2tfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgIHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBzdHViX2ZlbmNlICpzdHViID0gY29u dGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBkbWEpOworCisJaTkxNV9zd19mZW5jZV9j b21taXQoJnN0dWItPmNoYWluKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9tbWFuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f bW1hbi5jCmluZGV4IDkyYTJiOWNkODc5Yy4uODNiYWVjYjViYWYwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKQEAgLTMwMCw3ICszMDAsOSBAQCB2bV9mYXVsdF90 IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCQlnb3RvIGVycl91bmxvY2s7 CiAJfQogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB3cml0ZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9j ayhvYmopOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3VucGluOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggYmU1OTUyYWE0YzExLi5lYmVkMTg5OGE2 Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Qu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKQEAgLTM3 OSw2ICszNzksOCBAQCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfd3JpdGVfZG9tYWluKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAor CWFzc2VydF9vYmplY3RfaGVsZChvYmopOworCiAJaWYgKCEob2JqLT53cml0ZV9kb21haW4gJiBm bHVzaF9kb21haW5zKSkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgKaW5kZXggMWM4MjBkZGM1YWI2Li4wODAxNmYxYzk1MDUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKQEAgLTk5LDE2ICs5OSwyOSBA QCBpOTE1X2dlbV9vYmplY3RfcHV0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJ X19kcm1fZ2VtX29iamVjdF9wdXQoJm9iai0+YmFzZSk7CiB9CiAKKyNkZWZpbmUgYXNzZXJ0X29i amVjdF9oZWxkKG9iaikgcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKChvYmopLT5yZXN2 KQorCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2xvY2soc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhvYmotPnJl c3YsIE5VTEwpOwogfQogCitzdGF0aWMgaW5saW5lIGludAoraTkxNV9nZW1fb2JqZWN0X2xvY2tf aW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVy biByZXNlcnZhdGlvbl9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iai0+cmVzdiwgTlVMTCk7 Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhv YmotPnJlc3YpOwogfQogCitzdHJ1Y3QgZG1hX2ZlbmNlICoKK2k5MTVfZ2VtX29iamVjdF9sb2Nr X2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCBpOTE1X2dlbV9v YmplY3RfdW5sb2NrX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJ ICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZAogaTkxNV9n ZW1fb2JqZWN0X3NldF9yZWFkb25seShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog ewpAQCAtMzU4LDYgKzM3MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZAogaTkxNV9nZW1fb2JqZWN0 X2ZpbmlzaF9hY2Nlc3Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlpOTE1 X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9i aik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCmluZGV4IDVkMWQ3 Njk1NzE0NS4uMTg5ZmRiNWFlY2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwpAQCAtODkzLDcgKzg5Myw5IEBAIGdwdV93cml0ZV9kdyhz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IG9mZnNldCwgdTMyIHZhbCkKIAlpZiAoSVNfRVJSKG9i aikpCiAJCXJldHVybiBFUlJfQ0FTVChvYmopOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2Jq KTsKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2RvbWFpbihvYmosIHRydWUpOwor CWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycjsKIApA QCAtOTYxLDEwICs5NjMsNiBAQCBzdGF0aWMgaW50IGdwdV93cml0ZShzdHJ1Y3QgaTkxNV92bWEg KnZtYSwKIAogCUdFTV9CVUdfT04oIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5l KSk7CiAKLQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4odm1hLT5vYmos IHRydWUpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KIAliYXRjaCA9IGdwdV93cml0ZV9k dyh2bWEsIGR3b3JkICogc2l6ZW9mKHUzMiksIHZhbHVlKTsKIAlpZiAoSVNfRVJSKGJhdGNoKSkK IAkJcmV0dXJuIFBUUl9FUlIoYmF0Y2gpOwpAQCAtOTc1LDEzICs5NzMsMTkgQEAgc3RhdGljIGlu dCBncHVfd3JpdGUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJCWdvdG8gZXJyX2JhdGNoOwogCX0K IAorCWk5MTVfdm1hX2xvY2soYmF0Y2gpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KGJhdGNoLCBycSwgMCk7CisJaTkxNV92bWFfdW5sb2NrKGJhdGNoKTsKIAlpZiAoZXJyKQogCQln b3RvIGVycl9yZXF1ZXN0OwogCiAJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNl KGJhdGNoLT5vYmopOwogCi0JZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwg RVhFQ19PQkpFQ1RfV1JJVEUpOworCWk5MTVfdm1hX2xvY2sodm1hKTsKKwllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4odm1hLT5vYmosIGZhbHNlKTsKKwlpZiAoZXJyID09 IDApCisJCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNU X1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9y ZXF1ZXN0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwppbmRleCA0NTU4ZDQ4MjhkNjEuLmFlYmM3OTUwMGNhMSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b2hlcmVuY3kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVf Z2VtX2NvaGVyZW5jeS5jCkBAIC03OCw3ICs3OCw5IEBAIHN0YXRpYyBpbnQgZ3R0X3NldChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXUzMiBfX2lvbWVtICptYXA7CiAJaW50IGVy cjsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhv YmopOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTEwNSw3ICsxMDcsOSBAQCBzdGF0 aWMgaW50IGd0dF9nZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAl1MzIgX19p b21lbSAqbWFwOwogCWludCBlcnI7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVy ciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpOTE1 X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIApAQCAt MTMxLDcgKzEzNSw5IEBAIHN0YXRpYyBpbnQgd2Nfc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJdTMyICptYXA7CiAJaW50IGVycjsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2Nr KG9iaik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b193Y19kb21haW4ob2JqLCB0cnVl KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVy cjsKIApAQCAtMTUyLDcgKzE1OCw5IEBAIHN0YXRpYyBpbnQgd2NfZ2V0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJdTMyICptYXA7CiAJaW50IGVycjsKIAorCWk5MTVfZ2VtX29i amVjdF9sb2NrKG9iaik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b193Y19kb21haW4o b2JqLCBmYWxzZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJ CXJldHVybiBlcnI7CiAKQEAgLTE3Niw3ICsxODQsOSBAQCBzdGF0aWMgaW50IGdwdV9zZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAl1MzIgKmNzOwogCWludCBlcnI7CiAKKwlp OTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f Z3R0X2RvbWFpbihvYmosIHRydWUpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlp ZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCkBAIC0yMTUsNyArMjI1LDkgQEAgc3RhdGljIGludCBn cHVfc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJfQogCWludGVsX3Jpbmdf YWR2YW5jZShycSwgY3MpOwogCisJaTkxNV92bWFfbG9jayh2bWEpOwogCWVyciA9IGk5MTVfdm1h X21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91 bmxvY2sodm1hKTsKIAlpOTE1X3ZtYV91bnBpbih2bWEpOwogCiAJaTkxNV9yZXF1ZXN0X2FkZChy cSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCmluZGV4IGE3YzgxNmUyYTJiYy4uMjE1OTdjZTE0Nzc5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YwpAQCAtMjA1LDcgKzIwNSw5IEBAIGdwdV9maWxsX2R3KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1 NjQgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIGNvdW50LCB1MzIgdmFsdWUpCiAJKmNtZCA9IE1JX0JB VENIX0JVRkZFUl9FTkQ7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCisJaTkx NV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlm IChlcnIpCiAJCWdvdG8gZXJyOwogCkBAIC0yNTcsNyArMjU5LDkgQEAgc3RhdGljIGludCBncHVf ZmlsbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChJU19FUlIodm1hKSkK IAkJcmV0dXJuIFBUUl9FUlIodm1hKTsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJ ZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWk5 MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCkBA IC0yOTgsMTEgKzMwMiwxNSBAQCBzdGF0aWMgaW50IGdwdV9maWxsKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVxdWVzdDsKIAorCWk5MTVf dm1hX2xvY2soYmF0Y2gpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGJhdGNoLCBy cSwgMCk7CisJaTkxNV92bWFfdW5sb2NrKGJhdGNoKTsKIAlpZiAoZXJyKQogCQlnb3RvIHNraXBf cmVxdWVzdDsKIAorCWk5MTVfdm1hX2xvY2sodm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3Rv X2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaTkxNV92bWFfdW5sb2NrKHZt YSk7CiAJaWYgKGVycikKIAkJZ290byBza2lwX3JlcXVlc3Q7CiAKQEAgLTcxNiw3ICs3MjQsOSBA QCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpycGNzX3F1ZXJ5X2JhdGNoKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQogCiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCisJaTkxNV9nZW1f b2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21h aW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIp CiAJCWdvdG8gZXJyOwogCkBAIC03NTQsNyArNzY0LDkgQEAgZW1pdF9ycGNzX3F1ZXJ5KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKElTX0VSUih2bWEpKQogCQlyZXR1cm4g UFRSX0VSUih2bWEpOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1fb2Jq ZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTc3OCwxMSAr NzkwLDE1IEBAIGVtaXRfcnBjc19xdWVyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCWlmIChlcnIpCiAJCWdvdG8gZXJyX3JlcXVlc3Q7CiAKKwlpOTE1X3ZtYV9sb2NrKGJhdGNo KTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDApOworCWk5MTVf dm1hX3VubG9jayhiYXRjaCk7CiAJaWYgKGVycikKIAkJZ290byBza2lwX3JlcXVlc3Q7CiAKKwlp OTE1X3ZtYV9sb2NrKHZtYSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBy cSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWk5MTVfdm1hX3VubG9jayh2bWEpOwogCWlmIChlcnIp CiAJCWdvdG8gc2tpcF9yZXF1ZXN0OwogCkBAIC0xMzE2LDcgKzEzMzIsOSBAQCBzdGF0aWMgaW50 IHdyaXRlX3RvX3NjcmF0Y2goc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkqY21kID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CiAK KwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7 CiAJaWYgKGVycikKIAkJZ290byBlcnI7CiAKQEAgLTEzNDQsNyArMTM2Miw5IEBAIHN0YXRpYyBp bnQgd3JpdGVfdG9fc2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWlmIChl cnIpCiAJCWdvdG8gZXJyX3JlcXVlc3Q7CiAKKwlpOTE1X3ZtYV9sb2NrKHZtYSk7CiAJZXJyID0g aTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwgMCk7CisJaTkxNV92bWFfdW5sb2NrKHZt YSk7CiAJaWYgKGVycikKIAkJZ290byBza2lwX3JlcXVlc3Q7CiAKQEAgLTE0MTQsNyArMTQzNCw5 IEBAIHN0YXRpYyBpbnQgcmVhZF9mcm9tX3NjcmF0Y2goc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIAkqY21kID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKIAlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKG9iaik7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpOTE1X2dlbV9vYmpl Y3RfdW5sb2NrKG9iaik7CiAJaWYgKGVycikKIAkJZ290byBlcnI7CiAKQEAgLTE0NDIsNyArMTQ2 NCw5IEBAIHN0YXRpYyBpbnQgcmVhZF9mcm9tX3NjcmF0Y2goc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9yZXF1ZXN0OwogCisJaTkxNV92bWFfbG9j ayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JK RUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAlpZiAoZXJyKQogCQlnb3RvIHNr aXBfcmVxdWVzdDsKIApAQCAtMTQ1MSw3ICsxNDc1LDkgQEAgc3RhdGljIGludCByZWFkX2Zyb21f c2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCiAJaTkxNV9yZXF1ZXN0X2Fk ZChycSk7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29i amVjdF9zZXRfdG9fY3B1X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5s b2NrKG9iaik7CiAJaWYgKGVycikKIAkJZ290byBlcnI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKaW5kZXggZjBlN2IwZTUxN2Nm Li4wNjJjNmJkZWEzZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxm dGVzdHMvaTkxNV9nZW1fbW1hbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxm dGVzdHMvaTkxNV9nZW1fbW1hbi5jCkBAIC0xMDksNyArMTA5LDkgQEAgc3RhdGljIGludCBjaGVj a19wYXJ0aWFsX21hcHBpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJR0VN X0JVR19PTih2aWV3LnBhcnRpYWwuc2l6ZSA+IG5yZWFsKTsKIAkJY29uZF9yZXNjaGVkKCk7CiAK KwkJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisJCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2Jq KTsKIAkJaWYgKGVycikgewogCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmx1c2ggdG8gR1RUIHdyaXRl IGRvbWFpbjsgZXJyPSVkXG4iLAogCQkJICAgICAgIGVycik7CkBAIC0xNDEsNyArMTQzLDkgQEAg c3RhdGljIGludCBjaGVja19wYXJ0aWFsX21hcHBpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAkJaWYgKG9mZnNldCA+PSBvYmotPmJhc2Uuc2l6ZSkKIAkJCWNvbnRpbnVlOwog CisJCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJCWk5MTVfZ2VtX29iamVjdF9mbHVzaF93 cml0ZV9kb21haW4ob2JqLCB+STkxNV9HRU1fRE9NQUlOX0NQVSk7CisJCWk5MTVfZ2VtX29iamVj dF91bmxvY2sob2JqKTsKIAogCQlwID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgb2Zm c2V0ID4+IFBBR0VfU0hJRlQpOwogCQljcHUgPSBrbWFwKHApICsgb2Zmc2V0X2luX3BhZ2Uob2Zm c2V0KTsKQEAgLTM0Myw3ICszNDcsOSBAQCBzdGF0aWMgaW50IG1ha2Vfb2JqX2J1c3koc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJcmV0dXJuIFBUUl9FUlIocnEpOwogCX0KIAor CWk5MTVfdm1hX2xvY2sodm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEs IHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaTkxNV92bWFfdW5sb2NrKHZtYSk7CiAKIAlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2Vs ZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYwppbmRleCBiNzZiNTAzYjM5OTkuLjhlY2Y4ZDdiZDA4MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9w aHlzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9w aHlzLmMKQEAgLTQ2LDkgKzQ2LDkgQEAgc3RhdGljIGludCBtb2NrX3BoeXNfb2JqZWN0KHZvaWQg KmFyZykKIAl9CiAKIAkvKiBNYWtlIHRoZSBvYmplY3QgZGlydHkgc28gdGhhdCBwdXRfcGFnZXMg bXVzdCBkbyBjb3B5IGJhY2sgdGhlIGRhdGEgKi8KLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwotCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlm IChlcnIpIHsKIAkJcHJfZXJyKCJpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4gZmFp bGVkIHdpdGggZXJyPSVkXG4iLAogCQkgICAgICAgZXJyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Y21kX3BhcnNlci5jCmluZGV4IDdjZDczN2U1MTNhMC4uMjc1NGE2NWFlZGY5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMKQEAgLTI4MTMsNyArMjgxMyw5IEBAIHN0YXRpYyBp bnQgc2hhZG93X2luZGlyZWN0X2N0eChzdHJ1Y3QgaW50ZWxfc2hhZG93X3dhX2N0eCAqd2FfY3R4 KQogCQlnb3RvIHB1dF9vYmo7CiAJfQogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkx NV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlmIChyZXQpIHsKIAkJZ3Z0X3ZncHVfZXJyKCJm YWlsZWQgdG8gc2V0IHNoYWRvdyBpbmRpcmVjdCBjdHggdG8gQ1BVXG4iKTsKIAkJZ290byB1bm1h cF9zcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKaW5kZXggNjJkZDNhNWU4NDEz Li5kNmI5YjhiNDZmMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hl ZHVsZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKQEAgLTUx NywxOCArNTE3LDE4IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9zaGFkb3dfYmF0Y2hfYnVmZmVyKHN0 cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIAkJCX0KIAogCQkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGJiLT5vYmosCi0JCQkJCWZhbHNlKTsKKwkJ CQkJCQkJZmFsc2UpOwogCQkJaWYgKHJldCkKIAkJCQlnb3RvIGVycjsKIAotCQkJaTkxNV9nZW1f b2JqZWN0X2ZpbmlzaF9hY2Nlc3MoYmItPm9iaik7Ci0JCQliYi0+YWNjZXNzaW5nID0gZmFsc2U7 Ci0KIAkJCXJldCA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGJiLT52bWEsCiAJCQkJCQkgICAg ICB3b3JrbG9hZC0+cmVxLAogCQkJCQkJICAgICAgMCk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8g ZXJyOworCisJCQlpOTE1X2dlbV9vYmplY3RfZmluaXNoX2FjY2VzcyhiYi0+b2JqKTsKKwkJCWJi LT5hY2Nlc3NpbmcgPSBmYWxzZTsKIAkJfQogCX0KIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9jbWRfcGFyc2VyLmMKaW5kZXggYWNjNzQ4N2NkODVkLi5hNzEwMjExMzAwY2UgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCkBAIC0xMDU3LDE5ICsxMDU3LDIw IEBAIHN0YXRpYyB1MzIgKmNvcHlfYmF0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRz dF9vYmosCiAJdm9pZCAqZHN0LCAqc3JjOwogCWludCByZXQ7CiAKLQlyZXQgPSBpOTE1X2dlbV9v YmplY3RfcHJlcGFyZV9yZWFkKHNyY19vYmosICZzcmNfbmVlZHNfY2xmbHVzaCk7CisJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfd3JpdGUoZHN0X29iaiwgJmRzdF9uZWVkc19jbGZsdXNo KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCi0JcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3ByZXBhcmVfd3JpdGUoZHN0X29iaiwgJmRzdF9uZWVkc19jbGZsdXNoKTsKLQlpZiAo cmV0KSB7Ci0JCWRzdCA9IEVSUl9QVFIocmV0KTsKLQkJZ290byB1bnBpbl9zcmM7Ci0JfQotCiAJ ZHN0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZHN0X29iaiwgSTkxNV9NQVBfRk9SQ0VfV0Ip OworCWk5MTVfZ2VtX29iamVjdF9maW5pc2hfYWNjZXNzKGRzdF9vYmopOwogCWlmIChJU19FUlIo ZHN0KSkKLQkJZ290byB1bnBpbl9kc3Q7CisJCXJldHVybiBkc3Q7CisKKwlyZXQgPSBpOTE1X2dl bV9vYmplY3RfcHJlcGFyZV9yZWFkKHNyY19vYmosICZzcmNfbmVlZHNfY2xmbHVzaCk7CisJaWYg KHJldCkgeworCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGRzdF9vYmopOworCQlyZXR1cm4g RVJSX1BUUihyZXQpOworCX0KIAogCXNyYyA9IEVSUl9QVFIoLUVOT0RFVik7CiAJaWYgKHNyY19u ZWVkc19jbGZsdXNoICYmCkBAIC0xMTE1LDEzICsxMTE2LDExIEBAIHN0YXRpYyB1MzIgKmNvcHlf YmF0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRzdF9vYmosCiAJCX0KIAl9CiAKKwlp OTE1X2dlbV9vYmplY3RfZmluaXNoX2FjY2VzcyhzcmNfb2JqKTsKKwogCS8qIGRzdF9vYmogaXMg cmV0dXJuZWQgd2l0aCB2bWFwIHBpbm5lZCAqLwogCSpuZWVkc19jbGZsdXNoX2FmdGVyID0gZHN0 X25lZWRzX2NsZmx1c2ggJiBDTEZMVVNIX0FGVEVSOwogCi11bnBpbl9kc3Q6Ci0JaTkxNV9nZW1f b2JqZWN0X2ZpbmlzaF9hY2Nlc3MoZHN0X29iaik7Ci11bnBpbl9zcmM6Ci0JaTkxNV9nZW1fb2Jq ZWN0X2ZpbmlzaF9hY2Nlc3Moc3JjX29iaik7CiAJcmV0dXJuIGRzdDsKIH0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKaW5kZXggYWNlZmYwZWUzOGU1Li4zNTNlNTMzYzQyMTQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtMjAzLDE1ICsyMDMsNiBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3Vu YmluZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAotCS8qIENsb3NlZCB2bWEgYXJl IHJlbW92ZWQgZnJvbSB0aGUgb2JqLT52bWFfbGlzdCAtIGJ1dCB0aGV5IG1heQotCSAqIHN0aWxs IGhhdmUgYW4gYWN0aXZlIGJpbmRpbmcgb24gdGhlIG9iamVjdC4gVG8gcmVtb3ZlIHRob3NlIHdl Ci0JICogbXVzdCB3YWl0IGZvciBhbGwgcmVuZGVyaW5nIHRvIGNvbXBsZXRlIHRvIHRoZSBvYmpl Y3QgKGFzIHVuYmluZGluZwotCSAqIG11c3QgYW55d2F5KSwgYW5kIHJldGlyZSB0aGUgcmVxdWVz dHMuCi0JICovCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwg ZmFsc2UpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KIAlzcGluX2xvY2soJm9iai0+dm1h LmxvY2spOwogCXdoaWxlICghcmV0ICYmICh2bWEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwo Jm9iai0+dm1hLmxpc3QsCiAJCQkJCQkgICAgICAgc3RydWN0IGk5MTVfdm1hLApAQCAtMjM0LDI5 ICsyMjUsMTcgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uoc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UsCiAJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAJCQkgICBsb25nIHRpbWVvdXQpCiB7 Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0KIAlCVUlMRF9CVUdfT04oSTkxNV9XQUlUX0lO VEVSUlVQVElCTEUgIT0gMHgxKTsKIAogCWlmICh0ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19TSUdO QUxFRF9CSVQsICZmZW5jZS0+ZmxhZ3MpKQogCQlyZXR1cm4gdGltZW91dDsKIAotCWlmICghZG1h X2ZlbmNlX2lzX2k5MTUoZmVuY2UpKQotCQlyZXR1cm4gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChm ZW5jZSwKLQkJCQkJICAgICAgZmxhZ3MgJiBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSwKLQkJCQkJ ICAgICAgdGltZW91dCk7Ci0KLQlycSA9IHRvX3JlcXVlc3QoZmVuY2UpOwotCWlmIChpOTE1X3Jl cXVlc3RfY29tcGxldGVkKHJxKSkKLQkJZ290byBvdXQ7Ci0KLQl0aW1lb3V0ID0gaTkxNV9yZXF1 ZXN0X3dhaXQocnEsIGZsYWdzLCB0aW1lb3V0KTsKKwlpZiAoZG1hX2ZlbmNlX2lzX2k5MTUoZmVu Y2UpKQorCQlyZXR1cm4gaTkxNV9yZXF1ZXN0X3dhaXQodG9fcmVxdWVzdChmZW5jZSksIGZsYWdz LCB0aW1lb3V0KTsKIAotb3V0OgotCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NLRUQgJiYgaTkx NV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCi0JCWk5MTVfcmVxdWVzdF9yZXRpcmVfdXB0byhycSk7 Ci0KLQlyZXR1cm4gdGltZW91dDsKKwlyZXR1cm4gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5j ZSwKKwkJCQkgICAgICBmbGFncyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFLAorCQkJCSAgICAg IHRpbWVvdXQpOwogfQogCiBzdGF0aWMgbG9uZwpAQCAtNTU3LDIxICs1MzYsMjIgQEAgc3RhdGlj IGludAogaTkxNV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ByZWFkICphcmdzKQogewotCWNoYXIgX191 c2VyICp1c2VyX2RhdGE7Ci0JdTY0IHJlbWFpbjsKIAl1bnNpZ25lZCBpbnQgbmVlZHNfY2xmbHVz aDsKIAl1bnNpZ25lZCBpbnQgaWR4LCBvZmZzZXQ7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7 CisJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKKwl1NjQgcmVtYWluOwogCWludCByZXQ7CiAKLQly ZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRl eCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9w cmVwYXJlX3JlYWQob2JqLCAmbmVlZHNfY2xmbHVzaCk7Ci0JbXV0ZXhfdW5sb2NrKCZvYmotPmJh c2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlmZW5j ZSA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKG9iaik7CisJaTkxNV9nZW1fb2JqZWN0X2Zp bmlzaF9hY2Nlc3Mob2JqKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4gLUVOT01FTTsKKwogCXJl bWFpbiA9IGFyZ3MtPnNpemU7CiAJdXNlcl9kYXRhID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmRh dGFfcHRyKTsKIAlvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShhcmdzLT5vZmZzZXQpOwpAQCAtNTg5 LDcgKzU2OSw3IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJCW9mZnNldCA9IDA7CiAJfQogCi0JaTkxNV9nZW1fb2JqZWN0X2ZpbmlzaF9h Y2Nlc3Mob2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrX2ZlbmNlKG9iaiwgZmVuY2UpOwog CXJldHVybiByZXQ7CiB9CiAKQEAgLTYyNSw4ICs2MDUsOSBAQCBpOTE1X2dlbV9ndHRfcHJlYWQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 ID0gJmk5MTUtPmdndHQ7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJc3RydWN0IGRybV9t bV9ub2RlIG5vZGU7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7CisJc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2U7CiAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK IAl1NjQgcmVtYWluLCBvZmZzZXQ7CiAJaW50IHJldDsKIApAQCAtNjU1LDExICs2MzYsMjUgQEAg aTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCUdF TV9CVUdfT04oIW5vZGUuYWxsb2NhdGVkKTsKIAl9CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf c2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGli bGUob2JqKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bnBpbjsKIAotCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X3Vu bG9jayhvYmopOworCQlnb3RvIG91dF91bnBpbjsKKwl9CisKKwlmZW5jZSA9IGk5MTVfZ2VtX29i amVjdF9sb2NrX2ZlbmNlKG9iaik7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOworCWlm ICghZmVuY2UpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRfdW5waW47CisJfQorCiAK IAl1c2VyX2RhdGEgPSB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZGF0YV9wdHIpOwogCXJlbWFpbiA9 IGFyZ3MtPnNpemU7CkBAIC02OTcsOCArNjkyLDkgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCW9mZnNldCArPSBwYWdlX2xlbmd0aDsKIAl9 CiAKLQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmpl Y3RfdW5sb2NrX2ZlbmNlKG9iaiwgZmVuY2UpOwogb3V0X3VucGluOgorCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChub2RlLmFsbG9jYXRlZCkgewogCQl3bWIoKTsK IAkJZ2d0dC0+dm0uY2xlYXJfcmFuZ2UoJmdndHQtPnZtLCBub2RlLnN0YXJ0LCBub2RlLnNpemUp OwpAQCAtODA5LDYgKzgwNSw3IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmaTkxNS0+ Z2d0dDsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgbm9k ZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl1 NjQgcmVtYWluLCBvZmZzZXQ7CiAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKQEAgLTg1NiwxMSAr ODUzLDI0IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQlHRU1fQlVHX09OKCFub2RlLmFsbG9jYXRlZCk7CiAJfQogCi0JcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisJbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9s b2NrX2ludGVycnVwdGlibGUob2JqKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bnBpbjsKIAot CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CisJaWYgKHJldCkgeworCQlpOTE1 X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CisJCWdvdG8gb3V0X3VucGluOworCX0KKworCWZlbmNl ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfZmVuY2Uob2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5s b2NrKG9iaik7CisJaWYgKCFmZW5jZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dF91 bnBpbjsKKwl9CiAKIAlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9SSUdJTl9DUFUpOwog CkBAIC05MDUsOCArOTE1LDkgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJfQogCWludGVsX2ZiX29ial9mbHVzaChvYmosIE9SSUdJ Tl9DUFUpOwogCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaTkxNV9n ZW1fb2JqZWN0X3VubG9ja19mZW5jZShvYmosIGZlbmNlKTsKIG91dF91bnBpbjoKKwltdXRleF9s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAlpZiAobm9kZS5hbGxvY2F0ZWQpIHsKIAkJ d21iKCk7CiAJCWdndHQtPnZtLmNsZWFyX3JhbmdlKCZnZ3R0LT52bSwgbm9kZS5zdGFydCwgbm9k ZS5zaXplKTsKQEAgLTk1MiwyMyArOTYzLDIzIEBAIHN0YXRpYyBpbnQKIGk5MTVfZ2VtX3NobWVt X3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgICAgICBjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3B3cml0ZSAqYXJncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Ci0Jdm9pZCBfX3VzZXIgKnVzZXJf ZGF0YTsKLQl1NjQgcmVtYWluOwogCXVuc2lnbmVkIGludCBwYXJ0aWFsX2NhY2hlbGluZV93cml0 ZTsKIAl1bnNpZ25lZCBpbnQgbmVlZHNfY2xmbHVzaDsKIAl1bnNpZ25lZCBpbnQgb2Zmc2V0LCBp ZHg7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CisJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsK Kwl1NjQgcmVtYWluOwogCWludCByZXQ7CiAKLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGli bGUoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0K IAlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHJlcGFyZV93cml0ZShvYmosICZuZWVkc19jbGZsdXNo KTsKLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKKwlmZW5jZSA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKG9iaik7 CisJaTkxNV9nZW1fb2JqZWN0X2ZpbmlzaF9hY2Nlc3Mob2JqKTsKKwlpZiAoIWZlbmNlKQorCQly ZXR1cm4gLUVOT01FTTsKKwogCS8qIElmIHdlIGRvbid0IG92ZXJ3cml0ZSBhIGNhY2hlbGluZSBj b21wbGV0ZWx5IHdlIG5lZWQgdG8gYmUKIAkgKiBjYXJlZnVsIHRvIGhhdmUgdXAtdG8tZGF0ZSBk YXRhIGJ5IGZpcnN0IGNsZmx1c2hpbmcuIERvbid0CiAJICogb3ZlcmNvbXBsaWNhdGUgdGhpbmdz IGFuZCBmbHVzaCB0aGUgZW50aXJlIHBhdGNoLgpAQCAtOTk2LDcgKzEwMDcsOCBAQCBpOTE1X2dl bV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAl9CiAKIAlp bnRlbF9mYl9vYmpfZmx1c2gob2JqLCBPUklHSU5fQ1BVKTsKLQlpOTE1X2dlbV9vYmplY3RfZmlu aXNoX2FjY2VzcyhvYmopOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2tfZmVuY2Uob2JqLCBmZW5j ZSk7CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xODc0LDEyICsxODg2LDEzIEBAIHZvaWQgaTkx NV9nZW1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCSAqIG1h Y2hpbmUgaW4gYW4gdW51c2FibGUgY29uZGl0aW9uLgogCSAqLwogCi0JbXV0ZXhfbG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJZm9yIChwaGFzZSA9IHBoYXNlczsgKnBoYXNlOyBwaGFz ZSsrKSB7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAqcGhhc2UsIG1tLmxpbmspCisJCWxp c3RfZm9yX2VhY2hfZW50cnkob2JqLCAqcGhhc2UsIG1tLmxpbmspIHsKKwkJCWk5MTVfZ2VtX29i amVjdF9sb2NrKG9iaik7CiAJCQlXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2Rv bWFpbihvYmosIGZhbHNlKSk7CisJCQlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CisJCX0K IAl9Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCWludGVsX3Vj X3Nhbml0aXplKGk5MTUpOwogCWk5MTVfZ2VtX3Nhbml0aXplKGk5MTUpOwpAQCAtMjE0MSw3ICsy MTU0LDkgQEAgc3RhdGljIGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlpZiAoZXJyKQogCQkJZ290byBlcnJfYWN0aXZl OwogCisJCWk5MTVfZ2VtX29iamVjdF9sb2NrKHN0YXRlLT5vYmopOwogCQllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4oc3RhdGUtPm9iaiwgZmFsc2UpOworCQlpOTE1X2dl bV9vYmplY3RfdW5sb2NrKHN0YXRlLT5vYmopOwogCQlpZiAoZXJyKQogCQkJZ290byBlcnJfYWN0 aXZlOwogCkBAIC0yNTc0LDEyICsyNTg5LDEzIEBAIGludCBpOTE1X2dlbV9mcmVlemVfbGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFV TCwgTlVMTCwgSTkxNV9TSFJJTktfVU5CT1VORCk7CiAJaTkxNV9nZW1fZHJhaW5fZnJlZWRfb2Jq ZWN0cyhpOTE1KTsKIAotCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWZv ciAocGhhc2UgPSBwaGFzZXM7ICpwaGFzZTsgcGhhc2UrKykgewotCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG9iaiwgKnBoYXNlLCBtbS5saW5rKQorCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgKnBo YXNlLCBtbS5saW5rKSB7CisJCQlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCQkJV0FSTl9P TihpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKSk7CisJCQlpOTE1 X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CisJCX0KIAl9Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwppbmRleCBmY2UyMDEwNzhhMGUuLmZmZmQ0NGQ5ZmVkNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTM1MzUsOCArMzUzNSwxMSBAQCB2b2lkIGk5MTVfZ2VtX3Jl c3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJ V0FSTl9PTihpOTE1X3ZtYV9iaW5kKHZtYSwKIAkJCQkgICAgICBvYmogPyBvYmotPmNhY2hlX2xl dmVsIDogMCwKIAkJCQkgICAgICBQSU5fVVBEQVRFKSk7Ci0JCWlmIChvYmopCisJCWlmIChvYmop IHsKKwkJCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJCQlXQVJOX09OKGk5MTVfZ2VtX29i amVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKSk7CisJCQlpOTE1X2dlbV9vYmplY3Rf dW5sb2NrKG9iaik7CisJCX0KIAogbG9jazoKIAkJbXV0ZXhfbG9jaygmZ2d0dC0+dm0ubXV0ZXgp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRl LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwppbmRleCAw NTZkMmFkOWE2ZDYuLmE2MDhkZGY3NGI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVuZGVyX3N0YXRlLmMKQEAgLTIyMiw3ICsyMjIsOSBAQCBpbnQgaTkxNV9nZW1fcmVu ZGVyX3N0YXRlX2VtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJCQlnb3RvIGVycl91bnBp bjsKIAl9CiAKKwlpOTE1X3ZtYV9sb2NrKHNvLnZtYSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90 b19hY3RpdmUoc28udm1hLCBycSwgMCk7CisJaTkxNV92bWFfdW5sb2NrKHNvLnZtYSk7CiBlcnJf dW5waW46CiAJaTkxNV92bWFfdW5waW4oc28udm1hKTsKIGVycl92bWE6CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGVyZi5jCmluZGV4IDA3NzI2MTY1YzJmOS4uZmM3ZmE0MjM4MDQ2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BlcmYuYwpAQCAtMTUxMiw5ICsxNTEyLDcgQEAgc3RhdGljIGludCBhbGxvY19vYV9i dWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnb3RvIHVubG9jazsK IAl9CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKGJvLCBJOTE1X0NB Q0hFX0xMQyk7Ci0JaWYgKHJldCkKLQkJZ290byBlcnJfdW5yZWY7CisJaTkxNV9nZW1fb2JqZWN0 X3NldF9jYWNoZV9jb2hlcmVuY3koYm8sIEk5MTVfQ0FDSEVfTExDKTsKIAogCS8qIFByZUhTVyBy ZXF1aXJlZCA1MTJLIGFsaWdubWVudCwgSFNXIHJlcXVpcmVzIDE2TSAqLwogCXZtYSA9IGk5MTVf Z2VtX29iamVjdF9nZ3R0X3BpbihibywgTlVMTCwgMCwgU1pfMTZNLCAwKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5jCmluZGV4IDM2NzI2MzkyZTczNy4uNTFhOGQyYjBkN2IzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdm1hLmMKQEAgLTg0NiwxMyArODQ2LDE0IEBAIHZvaWQgaTkxNV92bWFfZGVzdHJveShz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAotCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYWN0aXZl KHZtYSkpOwogCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwogCiAJaWYgKGk5 MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKQogCQlsaXN0X2RlbCgmdm1hLT5jbG9zZWRfbGluayk7CiAK IAlXQVJOX09OKGk5MTVfdm1hX3VuYmluZCh2bWEpKTsKKwlHRU1fQlVHX09OKGk5MTVfdm1hX2lz X2FjdGl2ZSh2bWEpKTsKKwogCV9faTkxNV92bWFfZGVzdHJveSh2bWEpOwogfQogCkBAIC05MTQs MTIgKzkxNSwxMCBAQCBzdGF0aWMgdm9pZCBleHBvcnRfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2 bWEsCiAJICogaGFuZGxlIGFuIGVycm9yIHJpZ2h0IG5vdy4gV29yc3QgY2FzZSBzaG91bGQgYmUg bWlzc2VkCiAJICogc3luY2hyb25pc2F0aW9uIGxlYWRpbmcgdG8gcmVuZGVyaW5nIGNvcnJ1cHRp b24uCiAJICovCi0JcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2socmVzdiwgTlVMTCk7CiAJaWYgKGZs YWdzICYgRVhFQ19PQkpFQ1RfV1JJVEUpCiAJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9m ZW5jZShyZXN2LCAmcnEtPmZlbmNlKTsKIAllbHNlIGlmIChyZXNlcnZhdGlvbl9vYmplY3RfcmVz ZXJ2ZV9zaGFyZWQocmVzdiwgMSkgPT0gMCkKIAkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFy ZWRfZmVuY2UocmVzdiwgJnJxLT5mZW5jZSk7Ci0JcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhy ZXN2KTsKIH0KIAogaW50IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLApAQCAtOTI4LDcgKzkyNyw4IEBAIGludCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1 Y3QgaTkxNV92bWEgKnZtYSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g dm1hLT5vYmo7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJYXNzZXJ0X3ZtYV9oZWxkKHZtYSk7CisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7 CiAJR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAogCS8q CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuaAppbmRleCA3OTUwZmE5NmVlODYuLjcxYWM3ZWU4NjIwYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCkBAIC0yOTUsNiArMjk1LDE4IEBAIHZvaWQgaTkxNV92 bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9yZW9wZW4oc3Ry dWN0IGk5MTVfdm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3Zt YSAqdm1hKTsKIAorI2RlZmluZSBhc3NlcnRfdm1hX2hlbGQodm1hKSByZXNlcnZhdGlvbl9vYmpl Y3RfYXNzZXJ0X2hlbGQoKHZtYSktPnJlc3YpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3Zt YV9sb2NrKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXJlc2VydmF0aW9uX29iamVjdF9sb2Nr KHZtYS0+cmVzdiwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3ZtYV91bmxv Y2soc3RydWN0IGk5MTVfdm1hICp2bWEpCit7CisJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayh2 bWEtPnJlc3YpOworfQorCiBpbnQgX19pOTE1X3ZtYV9kb19waW4oc3RydWN0IGk5MTVfdm1hICp2 bWEsCiAJCSAgICAgIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxhZ3MpOwogc3RhdGlj IGlubGluZSBpbnQgX19tdXN0X2NoZWNrCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK aW5kZXggNmQ4ZDEzNmUxMjM5Li4xZDZjOTVhODA4ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKQEAgLTIwOTMsNiArMjA5Myw3IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJf b2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCSAqIHBpbi91bnBpbi9mZW5jZSBhbmQg bm90IG1vcmUuCiAJICovCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2 KTsKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCiAJYXRvbWljX2luYygmZGV2X3ByaXYt PmdwdV9lcnJvci5wZW5kaW5nX2ZiX3Bpbik7CiAKQEAgLTIxNDcsNiArMjE0OCw3IEBAIGludGVs X3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogZXJyOgog CWF0b21pY19kZWMoJmRldl9wcml2LT5ncHVfZXJyb3IucGVuZGluZ19mYl9waW4pOwogCisJaTkx NV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 LCB3YWtlcmVmKTsKIAlyZXR1cm4gdm1hOwogfQpAQCAtMjE1NSw5ICsyMTU3LDEyIEBAIHZvaWQg aW50ZWxfdW5waW5fZmJfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBsb25nIGZs YWdzKQogewogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwogCWlmIChmbGFncyAm IFBMQU5FX0hBU19GRU5DRSkKIAkJaTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKIAlpOTE1X2dl bV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHZtYSk7CisJaTkxNV9nZW1fb2JqZWN0 X3VubG9jayh2bWEtPm9iaik7CisKIAlpOTE1X3ZtYV9wdXQodm1hKTsKIH0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCAyNmE5OWYyNDliYjcuLjM4MWI1MmEyNmZl MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTUyOSw5ICs1Mjks NyBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwogCX0KIAotCXJldCA9IGk5MTVfZ2VtX29i amVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0xMQyk7Ci0JaWYgKHJldCkKLQkJ Z290byBlcnI7CisJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1 X0NBQ0hFX0xMQyk7CiAKIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZlbmdpbmUtPmk5 MTUtPmdndHQudm0sIE5VTEwpOwogCWlmIChJU19FUlIodm1hKSkgewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvZy5jCmluZGV4IDcxNDY1MjQyNjRkZC4uNjdlYWRjODJjMzk2IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCkBAIC0zNDMsOCArMzQzLDYgQEAgc3RhdGljIHZv aWQgY2FwdHVyZV9sb2dzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiBzdGF0aWMg aW50IGd1Y19sb2dfbWFwKHN0cnVjdCBpbnRlbF9ndWNfbG9nICpsb2cpCiB7Ci0Jc3RydWN0IGlu dGVsX2d1YyAqZ3VjID0gbG9nX3RvX2d1Yyhsb2cpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJdm9pZCAqdmFkZHI7CiAJaW50IHJldDsK IApAQCAtMzUzLDkgKzM1MSw5IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19tYXAoc3RydWN0IGludGVs X2d1Y19sb2cgKmxvZykKIAlpZiAoIWxvZy0+dm1hKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCW11 dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3Rf bG9jayhsb2ctPnZtYS0+b2JqKTsKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2Rv bWFpbihsb2ctPnZtYS0+b2JqLCB0cnVlKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKGxvZy0+dm1hLT5vYmopOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXgg M2ZiMWRjYzM5Mjc3Li4xMDc5M2RmYWM3ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBA IC0xNTA0LDcgKzE1MDQsOSBAQCBzdGF0aWMgaW50IF9fY29udGV4dF9waW4oc3RydWN0IGk5MTVf dm1hICp2bWEpCiAJICogb24gYW4gYWN0aXZlIGNvbnRleHQgKHdoaWNoIGJ5IG5hdHVyZSBpcyBh bHJlYWR5IG9uIHRoZSBHUFUpLgogCSAqLwogCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9H TE9CQUxfQklORCkpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwogCQllcnIg PSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7CisJCWk5 MTVfZ2VtX29iamVjdF91bmxvY2sodm1hLT5vYmopOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVy cjsKIAl9CkBAIC0yOTYwLDcgKzI5NjIsOSBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSwKIAl1MzIgKnJlZ3M7CiAJaW50IHJldDsKIAorCWk5MTVfZ2VtX29i amVjdF9sb2NrKGN0eF9vYmopOwogCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2Rv bWFpbihjdHhfb2JqLCB0cnVlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKGN0eF9vYmopOwog CWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigiQ291bGQgbm90IHNldCB0byBDUFUgZG9t YWluXG4iKTsKIAkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwpp bmRleCBhODgyYjhkNDJiZDkuLjBkMzE2NmI3ZTMzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X292ZXJsYXkuYwpAQCAtNzYyLDggKzc2MiwxMCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlf ZG9fcHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCiAJYXRvbWljX2lu YygmZGV2X3ByaXYtPmdwdV9lcnJvci5wZW5kaW5nX2ZiX3Bpbik7CiAKKwlpOTE1X2dlbV9vYmpl Y3RfbG9jayhuZXdfYm8pOwogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9w bGFuZShuZXdfYm8sCiAJCQkJCQkgICAwLCBOVUxMLCBQSU5fTUFQUEFCTEUpOworCWk5MTVfZ2Vt X29iamVjdF91bmxvY2sobmV3X2JvKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0gUFRS X0VSUih2bWEpOwogCQlnb3RvIG91dF9waW5fc2VjdGlvbjsKQEAgLTEzMDIsMTUgKzEzMDQsMjAg QEAgaW50IGludGVsX292ZXJsYXlfYXR0cnNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAogc3RhdGljIGludCBnZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5LCBib29sIHVzZV9waHlzKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCBlcnI7CiAKLQlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbihvdmVybGF5LT5pOTE1LCBQQUdFX1NJWkUpOworCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oaTkxNSwgUEFHRV9TSVpFKTsKIAlpZiAob2JqID09IE5VTEwpCi0JCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwob3ZlcmxheS0+aTkxNSwgUEFHRV9TSVpF KTsKLQlpZiAoSVNfRVJSKG9iaikpCi0JCXJldHVybiBQVFJfRVJSKG9iaik7CisJCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoSVNf RVJSKG9iaikpIHsKKwkJZXJyID0gUFRSX0VSUihvYmopOworCQlnb3RvIGVycl91bmxvY2s7CisJ fQogCiAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwgUElO X01BUFBBQkxFKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKQEAgLTEzMzEsMTAgKzEzMzgsMTMgQEAg c3RhdGljIGludCBnZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LCBi b29sIHVzZV9waHlzKQogCX0KIAogCW92ZXJsYXktPnJlZ19ibyA9IG9iajsKKwltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCXJldHVybiAwOwogCiBlcnJfcHV0X2JvOgog CWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKK2Vycl91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0xMzYwLDE4ICsx MzcwLDE2IEBAIHZvaWQgaW50ZWxfb3ZlcmxheV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAKIAlJTklUX0FDVElWRV9SRVFVRVNUKCZvdmVybGF5LT5sYXN0X2ZsaXAp OwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCiAJcmV0ID0g Z2V0X3JlZ2lzdGVycyhvdmVybGF5LCBPVkVSTEFZX05FRURTX1BIWVNJQ0FMKGRldl9wcml2KSk7 CiAJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZTsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG92 ZXJsYXktPnJlZ19ibyk7CiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG92ZXJsYXktPnJlZ19ibywgdHJ1ZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvdmVybGF5 LT5yZWdfYm8pOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3JlZ19ibzsKIAotCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCiAJbWVtc2V0X2lvKG92ZXJsYXktPnJl Z3MsIDAsIHNpemVvZihzdHJ1Y3Qgb3ZlcmxheV9yZWdpc3RlcnMpKTsKIAl1cGRhdGVfcG9seXBo YXNlX2ZpbHRlcihvdmVybGF5LT5yZWdzKTsKIAl1cGRhdGVfcmVnX2F0dHJzKG92ZXJsYXksIG92 ZXJsYXktPnJlZ3MpOwpAQCAtMTM4Myw3ICsxMzkxLDYgQEAgdm9pZCBpbnRlbF9vdmVybGF5X3Nl dHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIG91dF9yZWdfYm86CiAJaTkx NV9nZW1fb2JqZWN0X3B1dChvdmVybGF5LT5yZWdfYm8pOwogb3V0X2ZyZWU6Ci0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJa2ZyZWUob3ZlcmxheSk7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCA3NThkNDkzODllMzEu LmFlOWMyODhkMGYyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpA QCAtMTIwNSwxMCArMTIwNSwxMiBAQCBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3Jp bmcgKnJpbmcpCiAJCWZsYWdzIHw9IFBJTl9ISUdIOwogCiAJaWYgKCEodm1hLT5mbGFncyAmIEk5 MTVfVk1BX0dMT0JBTF9CSU5EKSkgeworCQlpOTE1X2dlbV9vYmplY3RfbG9jayh2bWEtPm9iaik7 CiAJCWlmIChmbGFncyAmIFBJTl9NQVBQQUJMRSB8fCBtYXAgPT0gSTkxNV9NQVBfV0MpCiAJCQly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4odm1hLT5vYmosIHRydWUpOwog CQllbHNlCiAJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4odm1hLT5v YmosIHRydWUpOworCQlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHZtYS0+b2JqKTsKIAkJaWYgKHVu bGlrZWx5KHJldCkpCiAJCQlnb3RvIHVucGluX3RpbWVsaW5lOwogCX0KQEAgLTE0MDQsNyArMTQw Niw5IEBAIHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up CiAJICogb24gYW4gYWN0aXZlIGNvbnRleHQgKHdoaWNoIGJ5IG5hdHVyZSBpcyBhbHJlYWR5IG9u IHRoZSBHUFUpLgogCSAqLwogCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklO RCkpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwogCQllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4odm1hLT5vYmosIHRydWUpOworCQlpOTE1X2dlbV9v YmplY3RfdW5sb2NrKHZtYS0+b2JqKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CiAJfQpA QCAtMTQ5MiwxMCArMTQ5Niw4IEBAIGFsbG9jX2NvbnRleHRfdm1hKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkgKiBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgSXZ5IEJyaWRn ZSBkZXZpY2VzIHNpbmNlCiAJICogbGF0ZXIgcGxhdGZvcm1zIGRvbid0IGhhdmUgTDMgY29udHJv bCBiaXRzIGluIHRoZSBQVEUuCiAJICovCi0JaWYgKElTX0lWWUJSSURHRShpOTE1KSkgewotCQkv KiBJZ25vcmUgYW55IGVycm9yLCByZWdhcmQgaXQgYXMgYSBzaW1wbGUgb3B0aW1pc2F0aW9uICov Ci0JCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0wzX0xM Qyk7Ci0JfQorCWlmIChJU19JVllCUklER0UoaTkxNSkpCisJCWk5MTVfZ2VtX29iamVjdF9zZXRf Y2FjaGVfY29oZXJlbmN5KG9iaiwgSTkxNV9DQUNIRV9MM19MTEMpOwogCiAJdm1hID0gaTkxNV92 bWFfaW5zdGFuY2Uob2JqLCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEp KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwppbmRleCBlMzFmYTNhYzg0NWQuLmYwYjli NDJkYTA4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCkBAIC0yMjEsNyArMjIxLDkg QEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCQkJ IGludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogUGlu IG9iamVjdCB3aXRoIGZpcm13YXJlICovCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sodWNfZnctPm9i aik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHVjX2Z3LT5vYmos IGZhbHNlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHVjX2Z3LT5vYmopOwogCWlmIChlcnIp IHsKIAkJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc2V0LWRvbWFpbiBlcnI9JWRcbiIsCiAJCQkJ IGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGVycik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCmluZGV4IDRjNjkwMDQ3MzA2 MC4uNzUzYWU1MzRkZjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fZXZpY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fZXZpY3QuYwpAQCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRpYyBpbnQgaWd0X2V2aWN0 X2Zvcl9jYWNoZV9jb2xvcih2b2lkICphcmcpCiAJCWVyciA9IFBUUl9FUlIob2JqKTsKIAkJZ290 byBjbGVhbnVwOwogCX0KLQlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkx NV9DQUNIRV9MTEMpOworCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfY29oZXJlbmN5KG9iaiwg STkxNV9DQUNIRV9MTEMpOwogCXF1aXJrX2FkZChvYmosICZvYmplY3RzKTsKIAogCXZtYSA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsCkBAIC0yOTEsNyArMjkxLDcg QEAgc3RhdGljIGludCBpZ3RfZXZpY3RfZm9yX2NhY2hlX2NvbG9yKHZvaWQgKmFyZykKIAkJZXJy ID0gUFRSX0VSUihvYmopOwogCQlnb3RvIGNsZWFudXA7CiAJfQotCWk5MTVfZ2VtX29iamVjdF9z ZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0xMQyk7CisJaTkxNV9nZW1fb2JqZWN0X3Nl dF9jYWNoZV9jb2hlcmVuY3kob2JqLCBJOTE1X0NBQ0hFX0xMQyk7CiAJcXVpcmtfYWRkKG9iaiwg Jm9iamVjdHMpOwogCiAJLyogTmVpZ2hib3VyaW5nOyBzYW1lIGNvbG91ciAtIHNob3VsZCBmaXQg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVl c3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwppbmRl eCA3MmQ5ZDIyY2UzMDYuLjExNjJkMzdiYzEwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwpAQCAtNjI0LDcgKzYyNCw5IEBAIHN0YXRpYyBzdHJ1 Y3QgaTkxNV92bWEgKmVtcHR5X2JhdGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQog CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwogCisJaTkxNV9nZW1fb2JqZWN0X2xv Y2sob2JqKTsKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBm YWxzZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCWdvdG8g ZXJyOwogCkBAIC03NzgsNyArNzgwLDkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqcmVjdXJz aXZlX2JhdGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmIChlcnIpCiAJCWdv dG8gZXJyOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX3djX2RvbWFpbihvYmosIHRydWUpOworCWk5MTVfZ2VtX29iamVjdF91bmxv Y2sob2JqKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycjsKIApAQCAtODc4LDcgKzg4Miw5IEBAIHN0 YXRpYyBpbnQgbGl2ZV9hbGxfZW5naW5lcyh2b2lkICphcmcpCiAJCQlpOTE1X2dlbV9vYmplY3Rf c2V0X2FjdGl2ZV9yZWZlcmVuY2UoYmF0Y2gtPm9iaik7CiAJCX0KIAorCQlpOTE1X3ZtYV9sb2Nr KGJhdGNoKTsKIAkJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJlcXVlc3Rb aWRdLCAwKTsKKwkJaTkxNV92bWFfdW5sb2NrKGJhdGNoKTsKIAkJR0VNX0JVR19PTihlcnIpOwog CiAJCWk5MTVfcmVxdWVzdF9nZXQocmVxdWVzdFtpZF0pOwpAQCAtOTkzLDcgKzk5OSw5IEBAIHN0 YXRpYyBpbnQgbGl2ZV9zZXF1ZW50aWFsX2VuZ2luZXModm9pZCAqYXJnKQogCQlHRU1fQlVHX09O KGVycik7CiAJCXJlcXVlc3RbaWRdLT5iYXRjaCA9IGJhdGNoOwogCisJCWk5MTVfdm1hX2xvY2so YmF0Y2gpOwogCQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcmVxdWVzdFtp ZF0sIDApOworCQlpOTE1X3ZtYV91bmxvY2soYmF0Y2gpOwogCQlHRU1fQlVHX09OKGVycik7CiAK IAkJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKGJhdGNoLT5vYmopOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwppbmRleCBkMGI5M2Ez ZmJjNTQuLmQ4MjIwNzJmZThkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2lndF9zcGlubmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2lndF9zcGlubmVyLmMKQEAgLTI5LDcgKzI5LDcgQEAgaW50IGlndF9zcGlubmVyX2luaXQoc3Ry dWN0IGlndF9zcGlubmVyICpzcGluLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJ Z290byBlcnJfaHdzOwogCX0KIAotCWk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwoc3Bp bi0+aHdzLCBJOTE1X0NBQ0hFX0xMQyk7CisJaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9jb2hl cmVuY3koc3Bpbi0+aHdzLCBJOTE1X0NBQ0hFX0xMQyk7CiAJdmFkZHIgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX21hcChzcGluLT5od3MsIEk5MTVfTUFQX1dCKTsKIAlpZiAoSVNfRVJSKHZhZGRyKSkg ewogCQllcnIgPSBQVFJfRVJSKHZhZGRyKTsKQEAgLTc0LDcgKzc0LDkgQEAgc3RhdGljIGludCBt b3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIHsKIAlpbnQgZXJyOwogCisJaTkx NV92bWFfbG9jayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEs IGZsYWdzKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJy OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNr LmMKaW5kZXggNjNhYzEzMGIwMmUxLi5lNGJmNjFiMTE3ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKQEAgLTczLDcgKzczLDcgQEAg c3RhdGljIGludCBoYW5nX2luaXQoc3RydWN0IGhhbmcgKmgsIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogCQlnb3RvIGVycl9od3M7CiAJfQogCi0JaTkxNV9nZW1fb2JqZWN0X3NldF9j YWNoZV9sZXZlbChoLT5od3MsIEk5MTVfQ0FDSEVfTExDKTsKKwlpOTE1X2dlbV9vYmplY3Rfc2V0 X2NhY2hlX2NvaGVyZW5jeShoLT5od3MsIEk5MTVfQ0FDSEVfTExDKTsKIAl2YWRkciA9IGk5MTVf Z2VtX29iamVjdF9waW5fbWFwKGgtPmh3cywgSTkxNV9NQVBfV0IpOwogCWlmIChJU19FUlIodmFk ZHIpKSB7CiAJCWVyciA9IFBUUl9FUlIodmFkZHIpOwpAQCAtMTE0LDcgKzExNCw5IEBAIHN0YXRp YyBpbnQgbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiB7CiAJaW50IGVycjsK IAorCWk5MTVfdm1hX2xvY2sodm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2 bWEsIHJxLCBmbGFncyk7CisJaTkxNV92bWFfdW5sb2NrKHZtYSk7CiAJaWYgKGVycikKIAkJcmV0 dXJuIGVycjsKIApAQCAtMTMxMyw3ICsxMzE1LDkgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9l dmljdF92bWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCX0KIAl9CiAKKwlpOTE1 X3ZtYV9sb2NrKGFyZy52bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGFyZy52 bWEsIHJxLCBmbGFncyk7CisJaTkxNV92bWFfdW5sb2NrKGFyZy52bWEpOwogCiAJaWYgKGZsYWdz ICYgRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0UpCiAJCWk5MTVfdm1hX3VucGluX2ZlbmNlKGFyZy52 bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCmluZGV4IGY1 ZDIzNzFlMTQyMy4uMDQ3NjJmNDBlY2Q5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2ludGVsX2xyYy5jCkBAIC04NTksMTEgKzg1OSwxMyBAQCBzdGF0aWMgaW50IHNtb2tlX3N1 Ym1pdChzdHJ1Y3QgcHJlZW1wdF9zbW9rZSAqc21va2UsCiAJfQogCiAJaWYgKHZtYSkgeworCQlp OTE1X3ZtYV9sb2NrKHZtYSk7CiAJCWVyciA9IHJxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEs CiAJCQkJCQl2bWEtPm5vZGUuc3RhcnQsCiAJCQkJCQlQQUdFX1NJWkUsIDApOwogCQlpZiAoIWVy cikKIAkJCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIDApOworCQlpOTE1 X3ZtYV91bmxvY2sodm1hKTsKIAl9CiAKIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKQEAgLTEwMjIs NyArMTAyNCw5IEBAIHN0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X3Ntb2tlKHZvaWQgKmFyZykKIAlj c1tuXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChz bW9rZS5iYXRjaCk7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhzbW9rZS5iYXRjaCk7CiAJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHNtb2tlLmJhdGNoLCBmYWxzZSk7 CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhzbW9rZS5iYXRjaCk7CiAJaWYgKGVycikKIAkJZ290 byBlcnJfYmF0Y2g7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3dvcmthcm91bmRzLmMKaW5kZXggODAzYTAxYWQ5ZmRjLi5jMDY4ZDY0NTQzZDkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5j CkBAIC0xMTIsNyArMTEyLDkgQEAgcmVhZF9ub25wcml2cyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWdvdG8gZXJyX3BpbjsK IAl9CiAKKwlpOTE1X3ZtYV9sb2NrKHZtYSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3Rp dmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWk5MTVfdm1hX3VubG9jayh2bWEpOwog CWlmIChlcnIpCiAJCWdvdG8gZXJyX3JlcTsKIApAQCAtMTg5LDggKzE5MSwxMCBAQCBzdGF0aWMg aW50IGNoZWNrX3doaXRlbGlzdChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQlyZXR1 cm4gUFRSX0VSUihyZXN1bHRzKTsKIAogCWVyciA9IDA7CisJaTkxNV9nZW1fb2JqZWN0X2xvY2so cmVzdWx0cyk7CiAJaWd0X3dlZGdlX29uX3RpbWVvdXQoJndlZGdlLCBjdHgtPmk5MTUsIEhaIC8g NSkgLyogYSBzYWZldHkgbmV0ISAqLwogCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2Nw dV9kb21haW4ocmVzdWx0cywgZmFsc2UpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2socmVzdWx0 cyk7CiAJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoY3R4LT5pOTE1KSkKIAkJZXJyID0gLUVJ TzsKIAlpZiAoZXJyKQpAQCAtMzcyLDcgKzM3Niw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEg KmNyZWF0ZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJaWYgKGVycikK IAkJZ290byBlcnJfb2JqOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBp OTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1f b2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX29iajsKIApAQCAtNDAz LDcgKzQwOSw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmNyZWF0ZV9iYXRjaChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQogCWlmIChlcnIpCiAJCWdvdG8gZXJyX29iajsKIAorCWk5 MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b193 Y19kb21haW4ob2JqLCB0cnVlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAJaWYg KGVycikKIAkJZ290byBlcnJfb2JqOwogCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==