From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 34/45] drm/i915: Move GEM object domain management from struct_mutex to local Date: Thu, 25 Apr 2019 10:19:53 +0100 Message-ID: <20190425092004.9995-34-chris@chris-wilson.co.uk> References: <20190425092004.9995-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 7E7D889258 for ; Thu, 25 Apr 2019 09:38:12 +0000 (UTC) In-Reply-To: <20190425092004.9995-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 List-Id: intel-gfx@lists.freedesktop.org VXNlIHRoZSBwZXItb2JqZWN0IGxvY2FsIGxvY2sgdG8gY29udHJvbCB0aGUgY2FjaGUgZG9tYWlu IG9mIHRoZQppbmRpdmlkdWFsIEdFTSBvYmplY3RzLCBub3Qgc3RydWN0X211dGV4LiBUaGlzIGlz IGEgaHVnZSBsZWFwIGZvcndhcmQKZm9yIHVzIGluIHRlcm1zIG9mIG9iamVjdC1sZXZlbCBzeW5j aHJvbmlzYXRpb247IGV4ZWNidWZmZXJzIGFyZQpjb29yZGluYXRlZCB1c2luZyB0aGUgd3dfbXV0 ZXggYW5kIHByZWFkL3B3cml0ZSBpcyBmaW5hbGx5IGZ1bGx5CnNlcmlhbGlzZWQgYWdhaW4uCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2 aWV3ZWQtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsZmx1c2guYyAgIHwgICA0ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmMgICAgfCAgMTAgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAgICB8ICA3MCArKysrKy0tLS0tCiAu Li4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAxMjMgKysrKysr KysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZmVuY2UuYyAg ICAgfCAgOTcgKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9vYmplY3QuYyAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0LmggICAgfCAgMTQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9w bS5jICAgICAgICB8ICAgNyArLQogLi4uL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2Vf cGFnZXMuYyAgIHwgIDEyICstCiAuLi4vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVy ZW5jeS5jICAgfCAgMTIgKysKIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyB8ICAyMCArKysKIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21t YW4uYyAgICB8ICAgNiArCiAuLi4vZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9waHlz LmMgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVj ay5jICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAg ICAgfCAgIDIgKwogLi4uL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jICAg IHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMgICAgICAgICB8 ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgICAgICAgfCAg IDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgICB8ICAy MyArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAx MjIgKysrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j ICAgICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAg ICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAg ICAgICAgIHwgIDEyICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAg ICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jICAgICAg ICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAg ICAgfCAgMjUgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYyAgICAgICAg ICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0 LmMgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMg IHwgICAyICsKIDMxIGZpbGVzIGNoYW5nZWQsIDQ0NCBpbnNlcnRpb25zKCspLCAxODAgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2ZlbmNlLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDhlNzBkNTk3MjE5NS4uZTMwNjIy MjI5ODEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtOTMsNiArOTMsNyBAQCBnZW0teSArPSBc CiAJZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5vIFwKIAlnZW0vaTkxNV9nZW1fZG9tYWluLm8gXAogCWdl bS9pOTE1X2dlbV9leGVjYnVmZmVyLm8gXAorCWdlbS9pOTE1X2dlbV9mZW5jZS5vIFwKIAlnZW0v aTkxNV9nZW1faW50ZXJuYWwubyBcCiAJZ2VtL2k5MTVfZ2VtX29iamVjdC5vIFwKIAlnZW0vaTkx NV9nZW1fbW1hbi5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jbGZsdXNoLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY2xmbHVz aC5jCmluZGV4IDA5M2JmZmY1NWE5Ni4uZWZhYjQ3MjUwNTg4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY2xmbHVzaC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jbGZsdXNoLmMKQEAgLTk2LDYgKzk2LDggQEAgYm9vbCBpOTE1 X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogewog CXN0cnVjdCBjbGZsdXNoICpjbGZsdXNoOwogCisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CisK IAkvKgogCSAqIFN0b2xlbiBtZW1vcnkgaXMgYWx3YXlzIGNvaGVyZW50IHdpdGggdGhlIEdQVSBh cyBpdCBpcyBleHBsaWNpdGx5CiAJICogbWFya2VkIGFzIHdjIGJ5IHRoZSBzeXN0ZW0sIG9yIHRo ZSBzeXN0ZW0gaXMgY2FjaGUtY29oZXJlbnQuCkBAIC0xNDUsOSArMTQ3LDcgQEAgYm9vbCBpOTE1 X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJ CQkJdHJ1ZSwgSTkxNV9GRU5DRV9USU1FT1VULAogCQkJCQkJSTkxNV9GRU5DRV9HRlApOwogCi0J CXJlc2VydmF0aW9uX29iamVjdF9sb2NrKG9iai0+cmVzdiwgTlVMTCk7CiAJCXJlc2VydmF0aW9u X29iamVjdF9hZGRfZXhjbF9mZW5jZShvYmotPnJlc3YsICZjbGZsdXNoLT5kbWEpOwotCQlyZXNl cnZhdGlvbl9vYmplY3RfdW5sb2NrKG9iai0+cmVzdik7CiAKIAkJaTkxNV9zd19mZW5jZV9jb21t aXQoJmNsZmx1c2gtPndhaXQpOwogCX0gZWxzZSBpZiAob2JqLT5tbS5wYWdlcykgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1Zi5jCmluZGV4IDRlN2VmZTE1OTUzMS4u NTA5ODFlYTUxM2YwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1 Zi5jCkBAIC0xNTIsNyArMTUyLDYgQEAgc3RhdGljIGludCBpOTE1X2dlbV9kbWFidWZfbW1hcChz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoKIHN0YXRpYyBp bnQgaTkxNV9nZW1fYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlib29sIHdyaXRlID0gKGRpcmVjdGlvbiA9PSBETUFf QklESVJFQ1RJT05BTCB8fCBkaXJlY3Rpb24gPT0gRE1BX1RPX0RFVklDRSk7CiAJaW50IGVycjsK IApAQCAtMTYwLDEyICsxNTksMTIgQEAgc3RhdGljIGludCBpOTE1X2dlbV9iZWdpbl9jcHVfYWNj ZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBlbnVtIGRtYV9kYXRhX2RpcmUKIAlpZiAoZXJy KQogCQlyZXR1cm4gZXJyOwogCi0JZXJyID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUo ZGV2KTsKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CiAJ aWYgKGVycikKIAkJZ290byBvdXQ7CiAKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2Nw dV9kb21haW4ob2JqLCB3cml0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCiBvdXQ6CiAJaTkxNV9nZW1fb2JqZWN0 X3VucGluX3BhZ2VzKG9iaik7CkBAIC0xNzUsMTkgKzE3NCwxOCBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIGVudW0gZG1hX2Rh dGFfZGlyZQogc3RhdGljIGludCBpOTE1X2dlbV9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1ZiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQogewogCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKIAlpbnQgZXJyOwogCiAJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChlcnIpCiAJCXJldHVybiBl cnI7CiAKLQllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOworCWVyciA9 IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2JqKTsKIAlpZiAoZXJyKQogCQln b3RvIG91dDsKIAogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmos IGZhbHNlKTsKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9v YmplY3RfdW5sb2NrKG9iaik7CiAKIG91dDoKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo b2JqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21h aW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwppbmRleCA1 ZTE0MjlmOGU5MTAuLjRjODRiYjkxMWQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9kb21haW4uYwpAQCAtMzEsOSArMzEsOSBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF9m bHVzaF9pZl9kaXNwbGF5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaWYgKCFS RUFEX09OQ0Uob2JqLT5waW5fZ2xvYmFsKSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwog CV9faTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2Zvcl9kaXNwbGF5KG9iaik7Ci0JbXV0ZXhfdW5sb2Nr KCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2so b2JqKTsKIH0KIAogLyoqCkBAIC00OSwxMSArNDksMTAgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90 b193Y19kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB3cml0ZSkK IHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KTsKKwlhc3NlcnRfb2JqZWN0X2hlbGQob2JqKTsKIAogCXJldCA9IGk5MTVfZ2Vt X29iamVjdF93YWl0KG9iaiwKIAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJ ICAgSTkxNV9XQUlUX0xPQ0tFRCB8CiAJCQkJICAgKHdyaXRlID8gSTkxNV9XQUlUX0FMTCA6IDAp LAogCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAlpZiAocmV0KQpAQCAtMTExLDExICsx MTAsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCiB7CiAJaW50IHJldDsKIAotCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJYXNzZXJ0X29iamVj dF9oZWxkKG9iaik7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCiAJCQkJICAg STkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAotCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAogCQkJ CSAgICh3cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKIAkJCQkgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7CiAJaWYgKHJldCkKQEAgLTE4MSw3ICsxNzksNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0 X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmot PmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWFzc2VydF9vYmplY3RfaGVsZChvYmopOwogCiAJ aWYgKG9iai0+Y2FjaGVfbGV2ZWwgPT0gY2FjaGVfbGV2ZWwpCiAJCXJldHVybiAwOwpAQCAtMjMw LDcgKzIyOCw2IEBAIGludCBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAqLwogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf d2FpdChvYmosCiAJCQkJCSAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKLQkJCQkJICAgSTkx NV9XQUlUX0xPQ0tFRCB8CiAJCQkJCSAgIEk5MTVfV0FJVF9BTEwsCiAJCQkJCSAgIE1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKIAkJaWYgKHJldCkKQEAgLTM3NCwxMiArMzcxLDE2IEBAIGludCBpOTE1 X2dlbV9zZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVy cnVwdGlibGUoZGV2KTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIGxldmVsKTsKLQltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRp YmxlKG9iaik7CisJaWYgKHJldCA9PSAwKSB7CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRf Y2FjaGVfbGV2ZWwob2JqLCBsZXZlbCk7CisJCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsK Kwl9CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogb3V0OgogCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKQEAgLTQwMSw3ICs0MDIsNyBAQCBpOTE1X2dlbV9vYmpl Y3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlhc3NlcnRfb2JqZWN0X2hlbGQob2Jq KTsKIAogCS8qIE1hcmsgdGhlIGdsb2JhbCBwaW4gZWFybHkgc28gdGhhdCB3ZSBhY2NvdW50IGZv ciB0aGUKIAkgKiBkaXNwbGF5IGNvaGVyZW5jeSB3aGlsc3Qgc2V0dGluZyB1cCB0aGUgY2FjaGUg ZG9tYWlucy4KQEAgLTQ4NiwxNiArNDg3LDE4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVj dF9idW1wX2luYWN0aXZlX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHZv aWQKIGk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGk5MTVf dm1hICp2bWEpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2Jq OworCisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAKLQlpZiAoV0FSTl9PTih2bWEtPm9iai0+ cGluX2dsb2JhbCA9PSAwKSkKKwlpZiAoV0FSTl9PTihvYmotPnBpbl9nbG9iYWwgPT0gMCkpCiAJ CXJldHVybjsKIAotCWlmICgtLXZtYS0+b2JqLT5waW5fZ2xvYmFsID09IDApCisJaWYgKC0tb2Jq LT5waW5fZ2xvYmFsID09IDApCiAJCXZtYS0+ZGlzcGxheV9hbGlnbm1lbnQgPSBJOTE1X0dUVF9N SU5fQUxJR05NRU5UOwogCiAJLyogQnVtcCB0aGUgTFJVIHRvIHRyeSBhbmQgYXZvaWQgcHJlbWF0 dXJlIGV2aWN0aW9uIHdoaWxzdCBmbGlwcGluZyAgKi8KLQlpOTE1X2dlbV9vYmplY3RfYnVtcF9p bmFjdGl2ZV9nZ3R0KHZtYS0+b2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfYnVtcF9pbmFjdGl2ZV9n Z3R0KG9iaik7CiAKIAlpOTE1X3ZtYV91bnBpbih2bWEpOwogfQpAQCAtNTEzLDExICs1MTYsMTAg QEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCiB7CiAJaW50IHJldDsKIAotCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJYXNzZXJ0X29iamVjdF9oZWxk KG9iaik7CiAKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCiAJCQkJICAgSTkxNV9X QUlUX0lOVEVSUlVQVElCTEUgfAotCQkJCSAgIEk5MTVfV0FJVF9MT0NLRUQgfAogCQkJCSAgICh3 cml0ZSA/IEk5MTVfV0FJVF9BTEwgOiAwKSwKIAkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7 CiAJaWYgKHJldCkKQEAgLTYzOSw3ICs2NDEsNyBAQCBpOTE1X2dlbV9zZXRfZG9tYWluX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKGVycikKIAkJZ290byBv dXQ7CiAKLQllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOworCWVyciA9 IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2JqKTsKIAlpZiAoZXJyKQogCQln b3RvIG91dF91bnBpbjsKIApAQCAtNjUzLDcgKzY1NSw3IEBAIGk5MTVfZ2VtX3NldF9kb21haW5f aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkvKiBBbmQgYnVtcCB0 aGUgTFJVIGZvciB0aGlzIGFjY2VzcyAqLwogCWk5MTVfZ2VtX29iamVjdF9idW1wX2luYWN0aXZl X2dndHQob2JqKTsKIAotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVf Z2VtX29iamVjdF91bmxvY2sob2JqKTsKIAogCWlmICh3cml0ZV9kb21haW4gIT0gMCkKIAkJaW50 ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLApAQCAtNjc2LDIyICs2NzgsMjMgQEAgaW50IGk5MTVf Z2VtX29iamVjdF9wcmVwYXJlX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KTsKLQogCSpuZWVkc19jbGZsdXNoID0gMDsKIAlpZiAoIWk5MTVfZ2VtX29iamVj dF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKwogCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwKLQkJCQkgICBJOTE1X1dB SVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkgICBJOTE1 X1dBSVRfSU5URVJSVVBUSUJMRSwKIAkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CiAJaWYg KHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJfdW5sb2NrOwogCiAJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJCWdv dG8gZXJyX3VubG9jazsKIAogCWlmIChvYmotPmNhY2hlX2NvaGVyZW50ICYgSTkxNV9CT19DQUNI RV9DT0hFUkVOVF9GT1JfUkVBRCB8fAogCSAgICAhc3RhdGljX2NwdV9oYXMoWDg2X0ZFQVRVUkVf Q0xGTFVTSCkpIHsKQEAgLTcxOSw2ICs3MjIsOCBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBh cmVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCiBlcnJfdW5waW46CiAJ aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CitlcnJfdW5sb2NrOgorCWk5MTVfZ2Vt X29iamVjdF91bmxvY2sob2JqKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03MjcsMjMgKzczMiwy NCBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKIHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQogCSpuZWVkc19jbGZsdXNoID0gMDsKIAlpZiAo IWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkKIAkJcmV0dXJuIC1FTk9ERVY7 CiAKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKwogCXJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwK IAkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJICAgSTkxNV9XQUlUX0xPQ0tF RCB8CiAJCQkJICAgSTkxNV9XQUlUX0FMTCwKIAkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7 CiAJaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZ290byBlcnJfdW5sb2NrOwogCiAJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJCWdvdG8gZXJyX3VubG9jazsKIAogCWlmIChvYmotPmNhY2hlX2NvaGVyZW50ICYgSTkxNV9C T19DQUNIRV9DT0hFUkVOVF9GT1JfV1JJVEUgfHwKIAkgICAgIXN0YXRpY19jcHVfaGFzKFg4Nl9G RUFUVVJFX0NMRkxVU0gpKSB7CkBAIC03ODAsNSArNzg2LDcgQEAgaW50IGk5MTVfZ2VtX29iamVj dF9wcmVwYXJlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAKIGVycl91 bnBpbjoKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKK2Vycl91bmxvY2s6CisJ aTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBhMjc2MTAyOWYw YzMuLjA4MGY2OTM1ODIyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCkBAIC0xMDc2LDcgKzEwNzYsOSBAQCBzdGF0aWMgdm9pZCAqcmVsb2Nf aW9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJaWYgKHVzZV9jcHVfcmVs b2MoY2FjaGUsIG9iaikpCiAJCQlyZXR1cm4gTlVMTDsKIAorCQlpOTE1X2dlbV9vYmplY3RfbG9j ayhvYmopOwogCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0 cnVlKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCQlpZiAoZXJyKQogCQkJcmV0 dXJuIEVSUl9QVFIoZXJyKTsKIApAQCAtMTE2NSw2ICsxMTY3LDI2IEBAIHN0YXRpYyB2b2lkIGNs Zmx1c2hfd3JpdGUzMih1MzIgKmFkZHIsIHUzMiB2YWx1ZSwgdW5zaWduZWQgaW50IGZsdXNoZXMp CiAJCSphZGRyID0gdmFsdWU7CiB9CiAKK3N0YXRpYyBpbnQgcmVsb2NfbW92ZV90b19ncHUoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKKwlpbnQgZXJyOworCisJaTkxNV92 bWFfbG9jayh2bWEpOworCisJaWYgKG9iai0+Y2FjaGVfZGlydHkgJiB+b2JqLT5jYWNoZV9jb2hl cmVudCkKKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCAwKTsKKwlvYmotPndyaXRlX2Rv bWFpbiA9IDA7CisKKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfb2JqZWN0KHJxLCB2bWEtPm9i aiwgdHJ1ZSk7CisJaWYgKGVyciA9PSAwKQorCQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2 ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsK KworCXJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBpbnQgX19yZWxvY19ncHVfYWxsb2Moc3RydWN0 IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCQkgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJ ICAgICB1bnNpZ25lZCBpbnQgbGVuKQpAQCAtMTE3NiwxNSArMTE5OCw2IEBAIHN0YXRpYyBpbnQg X19yZWxvY19ncHVfYWxsb2Moc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJdTMyICpjbWQ7 CiAJaW50IGVycjsKIAotCWlmIChEQkdfRk9SQ0VfUkVMT0MgPT0gRk9SQ0VfR1BVX1JFTE9DKSB7 Ci0JCW9iaiA9IHZtYS0+b2JqOwotCQlpZiAob2JqLT5jYWNoZV9kaXJ0eSAmIH5vYmotPmNhY2hl X2NvaGVyZW50KQotCQkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCAwKTsKLQkJb2JqLT53 cml0ZV9kb21haW4gPSAwOwotCX0KLQotCUdFTV9CVUdfT04odm1hLT5vYmotPndyaXRlX2RvbWFp biAmIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwotCiAJb2JqID0gaTkxNV9nZW1fYmF0Y2hfcG9vbF9n ZXQoJmViLT5lbmdpbmUtPmJhdGNoX3Bvb2wsIFBBR0VfU0laRSk7CiAJaWYgKElTX0VSUihvYmop KQogCQlyZXR1cm4gUFRSX0VSUihvYmopOwpAQCAtMTIxMyw3ICsxMjI2LDcgQEAgc3RhdGljIGlu dCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJZ290byBl cnJfdW5waW47CiAJfQogCi0JZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X29iamVjdChycSwgdm1h LT5vYmosIHRydWUpOworCWVyciA9IHJlbG9jX21vdmVfdG9fZ3B1KHJxLCB2bWEpOwogCWlmIChl cnIpCiAJCWdvdG8gZXJyX3JlcXVlc3Q7CiAKQEAgLTEyMjEsMTQgKzEyMzQsMTIgQEAgc3RhdGlj IGludCBfX3JlbG9jX2dwdV9hbGxvYyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJCQkJ YmF0Y2gtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwKIAkJCQkJY2FjaGUtPmdlbiA+IDUgPyAwIDog STkxNV9ESVNQQVRDSF9TRUNVUkUpOwogCWlmIChlcnIpCi0JCWdvdG8gZXJyX3JlcXVlc3Q7CisJ CWdvdG8gc2tpcF9yZXF1ZXN0OwogCisJaTkxNV92bWFfbG9jayhiYXRjaCk7CiAJR0VNX0JVR19P TighcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KGJhdGNoLT5yZXN2LCB0cnVl KSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJxLCAwKTsKLQlpZiAo ZXJyKQotCQlnb3RvIHNraXBfcmVxdWVzdDsKLQotCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0 aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2soYmF0Y2gp OwogCWlmIChlcnIpCiAJCWdvdG8gc2tpcF9yZXF1ZXN0OwogCkBAIC0xODM3LDI0ICsxODQ4LDU5 IEBAIHN0YXRpYyBpbnQgZWJfcmVsb2NhdGUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiBz dGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQogewog CWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGViLT5idWZmZXJfY291bnQ7CisJc3RydWN0IHd3 X2FjcXVpcmVfY3R4IGFjcXVpcmU7CiAJdW5zaWduZWQgaW50IGk7Ci0JaW50IGVycjsKKwlpbnQg ZXJyID0gMDsKKworCXd3X2FjcXVpcmVfaW5pdCgmYWNxdWlyZSwgJnJlc2VydmF0aW9uX3d3X2Ns YXNzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hID0gZWItPnZtYVtpXTsKKworCQllcnIgPSB3d19tdXRleF9sb2NrX2ludGVycnVwdGli bGUoJnZtYS0+cmVzdi0+bG9jaywgJmFjcXVpcmUpOworCQlpZiAoIWVycikKKwkJCWNvbnRpbnVl OworCisJCUdFTV9CVUdfT04oZXJyID09IC1FQUxSRUFEWSk7IC8qIE5vIGR1cGxpY2F0ZSB2bWEg Ki8KKworCQlpZiAoZXJyID09IC1FREVBRExLKSB7CisJCQlHRU1fQlVHX09OKGkgPT0gMCk7CisJ CQlkbyB7CisJCQkJaW50IGogPSBpIC0gMTsKKworCQkJCXd3X211dGV4X3VubG9jaygmZWItPnZt YVtqXS0+cmVzdi0+bG9jayk7CisKKwkJCQlzd2FwKGViLT5mbGFnc1tpXSwgZWItPmZsYWdzW2pd KTsKKwkJCQlzd2FwKGViLT52bWFbaV0sICBlYi0+dm1hW2pdKTsKKwkJCQllYi0+dm1hW2ldLT5l eGVjX2ZsYWdzID0gJmViLT5mbGFnc1tpXTsKKwkJCX0gd2hpbGUgKC0taSk7CisJCQlHRU1fQlVH X09OKHZtYSAhPSBlYi0+dm1hWzBdKTsKKwkJCXZtYS0+ZXhlY19mbGFncyA9ICZlYi0+ZmxhZ3Nb MF07CisKKwkJCWVyciA9IHd3X211dGV4X2xvY2tfc2xvd19pbnRlcnJ1cHRpYmxlKCZ2bWEtPnJl c3YtPmxvY2ssCisJCQkJCQkJICAgICAgICZhY3F1aXJlKTsKKwkJfQorCQlpZiAoZXJyKQorCQkJ YnJlYWs7CisJfQorCXd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7CisKKwl3aGlsZSAoaS0tKSB7 CiAJCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKIAkJc3RydWN0IGk5MTVfdm1h ICp2bWEgPSBlYi0+dm1hW2ldOwogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g dm1hLT5vYmo7CiAKKwkJYXNzZXJ0X3ZtYV9oZWxkKHZtYSk7CisKIAkJaWYgKGZsYWdzICYgRVhF Q19PQkpFQ1RfQ0FQVFVSRSkgewogCQkJc3RydWN0IGk5MTVfY2FwdHVyZV9saXN0ICpjYXB0dXJl OwogCiAJCQljYXB0dXJlID0ga21hbGxvYyhzaXplb2YoKmNhcHR1cmUpLCBHRlBfS0VSTkVMKTsK LQkJCWlmICh1bmxpa2VseSghY2FwdHVyZSkpCi0JCQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkJCWNh cHR1cmUtPm5leHQgPSBlYi0+cmVxdWVzdC0+Y2FwdHVyZV9saXN0OwotCQkJY2FwdHVyZS0+dm1h ID0gZWItPnZtYVtpXTsKLQkJCWViLT5yZXF1ZXN0LT5jYXB0dXJlX2xpc3QgPSBjYXB0dXJlOwor CQkJaWYgKGNhcHR1cmUpIHsKKwkJCQljYXB0dXJlLT5uZXh0ID0gZWItPnJlcXVlc3QtPmNhcHR1 cmVfbGlzdDsKKwkJCQljYXB0dXJlLT52bWEgPSB2bWE7CisJCQkJZWItPnJlcXVlc3QtPmNhcHR1 cmVfbGlzdCA9IGNhcHR1cmU7CisJCQl9CiAJCX0KIAogCQkvKgpAQCAtMTg3NCwyNCArMTkyMCwx NSBAQCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmVi KQogCQkJCWZsYWdzICY9IH5FWEVDX09CSkVDVF9BU1lOQzsKIAkJfQogCi0JCWlmIChmbGFncyAm IEVYRUNfT0JKRUNUX0FTWU5DKQotCQkJY29udGludWU7Ci0KLQkJZXJyID0gaTkxNV9yZXF1ZXN0 X2F3YWl0X29iamVjdAotCQkJKGViLT5yZXF1ZXN0LCBvYmosIGZsYWdzICYgRVhFQ19PQkpFQ1Rf V1JJVEUpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CisJCWlmIChlcnIgPT0gMCAm JiAhKGZsYWdzICYgRVhFQ19PQkpFQ1RfQVNZTkMpKSB7CisJCQllcnIgPSBpOTE1X3JlcXVlc3Rf YXdhaXRfb2JqZWN0CisJCQkJKGViLT5yZXF1ZXN0LCBvYmosIGZsYWdzICYgRVhFQ19PQkpFQ1Rf V1JJVEUpOworCQl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQl1bnNpZ25l ZCBpbnQgZmxhZ3MgPSBlYi0+ZmxhZ3NbaV07Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZWIt PnZtYVtpXTsKKwkJaWYgKGVyciA9PSAwKQorCQkJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3Rp dmUodm1hLCBlYi0+cmVxdWVzdCwgZmxhZ3MpOwogCi0JCWVyciA9IGk5MTVfdm1hX21vdmVfdG9f YWN0aXZlKHZtYSwgZWItPnJlcXVlc3QsIGZsYWdzKTsKLQkJaWYgKHVubGlrZWx5KGVycikpIHsK LQkJCWk5MTVfcmVxdWVzdF9za2lwKGViLT5yZXF1ZXN0LCBlcnIpOwotCQkJcmV0dXJuIGVycjsK LQkJfQorCQlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAogCQlfX2ViX3VucmVzZXJ2ZV92bWEodm1h LCBmbGFncyk7CiAJCXZtYS0+ZXhlY19mbGFncyA9IE5VTEw7CkBAIC0xODk5LDEyICsxOTM2LDIw IEBAIHN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIp CiAJCWlmICh1bmxpa2VseShmbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1JFRikpCiAJCQlpOTE1 X3ZtYV9wdXQodm1hKTsKIAl9CisJd3dfYWNxdWlyZV9maW5pKCZhY3F1aXJlKTsKKworCWlmICh1 bmxpa2VseShlcnIpKQorCQlnb3RvIGVycl9za2lwOworCiAJZWItPmV4ZWMgPSBOVUxMOwogCiAJ LyogVW5jb25kaXRpb25hbGx5IGZsdXNoIGFueSBjaGlwc2V0IGNhY2hlcyAoZm9yIHN0cmVhbWlu ZyB3cml0ZXMpLiAqLwogCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goZWItPmk5MTUpOwotCiAJcmV0 dXJuIDA7CisKK2Vycl9za2lwOgorCWk5MTVfcmVxdWVzdF9za2lwKGViLT5yZXF1ZXN0LCBlcnIp OworCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVfZ2VtX2NoZWNrX2V4ZWNidWZm ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlYykKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2ZlbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5hYTJlZmRjNTdjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fZmVuY2UuYwpAQCAtMCwwICsxLDk3IEBACisvKgorICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdC5oIgorCisjaW5j bHVkZSAiLi4vaTkxNV9kcnYuaCIKKworc3RydWN0IHN0dWJfZmVuY2UgeworCXN0cnVjdCBkbWFf ZmVuY2UgZG1hOworCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIGNoYWluOworfTsKKworc3RhdGljIGlu dCBfX2k5MTVfc3dfZmVuY2VfY2FsbAorc3R1Yl9ub3RpZnkoc3RydWN0IGk5MTVfc3dfZmVuY2Ug KmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKQoreworCXN0cnVjdCBzdHVi X2ZlbmNlICpzdHViID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBjaGFpbik7 CisKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBGRU5DRV9DT01QTEVURToKKwkJZG1hX2ZlbmNl X3NpZ25hbCgmc3R1Yi0+ZG1hKTsKKwkJYnJlYWs7CisKKwljYXNlIEZFTkNFX0ZSRUU6CisJCWRt YV9mZW5jZV9wdXQoJnN0dWItPmRtYSk7CisJCWJyZWFrOworCX0KKworCXJldHVybiBOT1RJRllf RE9ORTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnN0dWJfZHJpdmVyX25hbWUoc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuIERSSVZFUl9OQU1FOworfQorCitzdGF0aWMgY29u c3QgY2hhciAqc3R1Yl90aW1lbGluZV9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQorewor CXJldHVybiAib2JqZWN0IjsKK30KKworc3RhdGljIHZvaWQgc3R1Yl9yZWxlYXNlKHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBzdHViX2ZlbmNlICpzdHViID0gY29udGFpbmVy X29mKGZlbmNlLCB0eXBlb2YoKnN0dWIpLCBkbWEpOworCisJaTkxNV9zd19mZW5jZV9maW5pKCZz dHViLT5jaGFpbik7CisKKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2YodHlwZW9mKCpzdHViKSwgZG1h KSk7CisJZG1hX2ZlbmNlX2ZyZWUoJnN0dWItPmRtYSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZG1hX2ZlbmNlX29wcyBzdHViX2ZlbmNlX29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0g c3R1Yl9kcml2ZXJfbmFtZSwKKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBzdHViX3RpbWVsaW5lX25h bWUsCisJLnJlbGVhc2UgPSBzdHViX3JlbGVhc2UsCit9OworCitzdHJ1Y3QgZG1hX2ZlbmNlICoK K2k5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCit7CisJc3RydWN0IHN0dWJfZmVuY2UgKnN0dWI7CisKKwlhc3NlcnRfb2JqZWN0X2hlbGQo b2JqKTsKKworCXN0dWIgPSBrbWFsbG9jKHNpemVvZigqc3R1YiksIEdGUF9LRVJORUwpOworCWlm ICghc3R1YikKKwkJcmV0dXJuIE5VTEw7CisKKwlpOTE1X3N3X2ZlbmNlX2luaXQoJnN0dWItPmNo YWluLCBzdHViX25vdGlmeSk7CisJZG1hX2ZlbmNlX2luaXQoJnN0dWItPmRtYSwgJnN0dWJfZmVu Y2Vfb3BzLCAmc3R1Yi0+Y2hhaW4ud2FpdC5sb2NrLAorCQkgICAgICAgdG9faTkxNShvYmotPmJh c2UuZGV2KS0+bW0udW5vcmRlcmVkX3RpbWVsaW5lLAorCQkgICAgICAgMCk7CisKKwlpZiAoaTkx NV9zd19mZW5jZV9hd2FpdF9yZXNlcnZhdGlvbigmc3R1Yi0+Y2hhaW4sCisJCQkJCSAgICBvYmot PnJlc3YsIE5VTEwsCisJCQkJCSAgICB0cnVlLCBJOTE1X0ZFTkNFX1RJTUVPVVQsCisJCQkJCSAg ICBJOTE1X0ZFTkNFX0dGUCkgPCAwKQorCQlnb3RvIGVycjsKKworCXJlc2VydmF0aW9uX29iamVj dF9hZGRfZXhjbF9mZW5jZShvYmotPnJlc3YsICZzdHViLT5kbWEpOworCisJcmV0dXJuICZzdHVi LT5kbWE7CisKK2VycjoKKwlzdHViX3JlbGVhc2UoJnN0dWItPmRtYSk7CisJcmV0dXJuIE5VTEw7 Cit9CisKK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAorCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3Ry dWN0IHN0dWJfZmVuY2UgKnN0dWIgPSBjb250YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqc3R1Yiks IGRtYSk7CisKKwlpOTE1X3N3X2ZlbmNlX2NvbW1pdCgmc3R1Yi0+Y2hhaW4pOworfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCmluZGV4IDA0OTI4YWU0MTVlYi4u ZGY3OWUyZWVhZDYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVj dC5jCkBAIC0zNzksNiArMzc5LDggQEAgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX3dyaXRlX2RvbWFp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CiAJc3RydWN0IGk5MTVfdm1h ICp2bWE7CiAKKwlhc3NlcnRfb2JqZWN0X2hlbGQob2JqKTsKKwogCWlmICghKG9iai0+d3JpdGVf ZG9tYWluICYgZmx1c2hfZG9tYWlucykpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCmluZGV4IDk4MDU4N2U0MjBlNi4uNTA5ZDE0NWQ4MDhh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCkBAIC05OSwx NiArOTksMjkgQEAgaTkxNV9nZW1fb2JqZWN0X3B1dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogCV9fZHJtX2dlbV9vYmplY3RfcHV0KCZvYmotPmJhc2UpOwogfQogCisjZGVmaW5l IGFzc2VydF9vYmplY3RfaGVsZChvYmopIHJlc2VydmF0aW9uX29iamVjdF9hc3NlcnRfaGVsZCgo b2JqKS0+cmVzdikKKwogc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF9sb2NrKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJcmVzZXJ2YXRpb25fb2JqZWN0X2xv Y2sob2JqLT5yZXN2LCBOVUxMKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQKK2k5MTVfZ2VtX29i amVjdF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK K3sKKwlyZXR1cm4gcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmotPnJl c3YsIE5VTEwpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VubG9j ayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXJlc2VydmF0aW9uX29iamVj dF91bmxvY2sob2JqLT5yZXN2KTsKIH0KIAorc3RydWN0IGRtYV9mZW5jZSAqCitpOTE1X2dlbV9v YmplY3RfbG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQg aTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAorCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOworCiBzdGF0aWMgaW5saW5lIHZv aWQKIGk5MTVfZ2VtX29iamVjdF9zZXRfcmVhZG9ubHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKQEAgLTM2Nyw2ICszODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIGk5MTVf Z2VtX29iamVjdF9maW5pc2hfYWNjZXNzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiB7CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CisJaTkxNV9nZW1fb2JqZWN0 X3VubG9jayhvYmopOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwppbmRleCAwNTJjYWZkOTYyMjMu LjdlMzUxMTc3M2ZjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKQEAg LTIwOSwxMiArMjA5LDEzIEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQogCSAqIG1hY2hpbmUgaW4gYW4gdW51c2FibGUgY29uZGl0aW9u LgogCSAqLwogCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJZm9yIChw aGFzZSA9IHBoYXNlczsgKnBoYXNlOyBwaGFzZSsrKSB7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnko b2JqLCAqcGhhc2UsIG1tLmxpbmspCisJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAqcGhhc2Us IG1tLmxpbmspIHsKKwkJCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJCQlXQVJOX09OKGk5 MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKSk7CisJCQlpOTE1X2dl bV9vYmplY3RfdW5sb2NrKG9iaik7CisJCX0KIAl9Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKIAogCWludGVsX3VjX3Nhbml0aXplKGk5MTUpOwogCWk5MTVfZ2VtX3Nh bml0aXplKGk5MTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0 ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1 Z2VfcGFnZXMuYwppbmRleCA4OGNhNGVkNDMwZWUuLjVhODljYmFiM2IyZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKQEAgLTk1OSwxMCAr OTU5LDYgQEAgc3RhdGljIGludCBncHVfd3JpdGUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAKIAlH RU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpOwogCi0JZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHZtYS0+b2JqLCB0cnVlKTsKLQlp ZiAoZXJyKQotCQlyZXR1cm4gZXJyOwotCiAJYmF0Y2ggPSBncHVfd3JpdGVfZHcodm1hLCBkd29y ZCAqIHNpemVvZih1MzIpLCB2YWx1ZSk7CiAJaWYgKElTX0VSUihiYXRjaCkpCiAJCXJldHVybiBQ VFJfRVJSKGJhdGNoKTsKQEAgLTk3MywxMyArOTY5LDE5IEBAIHN0YXRpYyBpbnQgZ3B1X3dyaXRl KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQlnb3RvIGVycl9iYXRjaDsKIAl9CiAKKwlpOTE1X3Zt YV9sb2NrKGJhdGNoKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEs IDApOworCWk5MTVfdm1hX3VubG9jayhiYXRjaCk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVx dWVzdDsKIAogCWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZShiYXRjaC0+b2Jq KTsKIAotCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNU X1dSSVRFKTsKKwlpOTE1X3ZtYV9sb2NrKHZtYSk7CisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKHZtYS0+b2JqLCBmYWxzZSk7CisJaWYgKGVyciA9PSAwKQorCQllcnIg PSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJ aTkxNV92bWFfdW5sb2NrKHZtYSk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVxdWVzdDsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b2hlcmVuY3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1f Y29oZXJlbmN5LmMKaW5kZXggYjY2MTNjYWE2ZjQ1Li4yMmZlNGI2ZmQ1MDYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVu Y3kuYwpAQCAtNzgsNyArNzgsOSBAQCBzdGF0aWMgaW50IGd0dF9zZXQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAl1MzIgX19pb21lbSAqbWFwOwogCWludCBlcnI7CiAKKwlpOTE1 X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbihvYmosIHRydWUpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAo ZXJyKQogCQlyZXR1cm4gZXJyOwogCkBAIC0xMDUsNyArMTA3LDkgQEAgc3RhdGljIGludCBndHRf Z2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJdTMyIF9faW9tZW0gKm1hcDsK IAlpbnQgZXJyOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1fb2JqZWN0 X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTEzMSw3ICsxMzUs OSBAQCBzdGF0aWMgaW50IHdjX3NldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CXUzMiAqbWFwOwogCWludCBlcnI7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVy ciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fd2NfZG9tYWluKG9iaiwgdHJ1ZSk7CisJaTkxNV9n ZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTE1 Miw3ICsxNTgsOSBAQCBzdGF0aWMgaW50IHdjX2dldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAogCXUzMiAqbWFwOwogCWludCBlcnI7CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhv YmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fd2NfZG9tYWluKG9iaiwgZmFsc2Up OworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJy OwogCkBAIC0xNzYsNyArMTg0LDkgQEAgc3RhdGljIGludCBncHVfc2V0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJdTMyICpjczsKIAlpbnQgZXJyOwogCisJaTkxNV9nZW1fb2Jq ZWN0X2xvY2sob2JqKTsKIAllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4o b2JqLCB0cnVlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAJaWYgKGVycikKIAkJ cmV0dXJuIGVycjsKIApAQCAtMjE1LDcgKzIyNSw5IEBAIHN0YXRpYyBpbnQgZ3B1X3NldChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCX0KIAlpbnRlbF9yaW5nX2FkdmFuY2UocnEs IGNzKTsKIAorCWk5MTVfdm1hX2xvY2sodm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaTkxNV92bWFfdW5sb2NrKHZtYSk7 CiAJaTkxNV92bWFfdW5waW4odm1hKTsKIAogCWk5MTVfcmVxdWVzdF9hZGQocnEpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YwppbmRleCAzOWJlMzBiOWVmN2IuLjczYTQ0OGYwZjNmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTIwOSw3 ICsyMDksOSBAQCBncHVfZmlsbF9kdyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTY0IG9mZnNldCwg dW5zaWduZWQgbG9uZyBjb3VudCwgdTMyIHZhbHVlKQogCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9t YXAob2JqKTsKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CiAKKwlpOTE1X2dlbV9v YmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihvYmosIGZhbHNlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7CiAJaWYgKGVycikK IAkJZ290byBlcnI7CiAKQEAgLTI2MSw3ICsyNjMsOSBAQCBzdGF0aWMgaW50IGdwdV9maWxsKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJaWYgKElTX0VSUih2bWEpKQogCQlyZXR1 cm4gUFRSX0VSUih2bWEpOwogCisJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAllcnIgPSBp OTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaTkxNV9nZW1f b2JqZWN0X3VubG9jayhvYmopOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTMwMiwx MSArMzA2LDE1IEBAIHN0YXRpYyBpbnQgZ3B1X2ZpbGwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9yZXF1ZXN0OwogCisJaTkxNV92bWFfbG9j ayhiYXRjaCk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJxLCAwKTsK KwlpOTE1X3ZtYV91bmxvY2soYmF0Y2gpOwogCWlmIChlcnIpCiAJCWdvdG8gc2tpcF9yZXF1ZXN0 OwogCisJaTkxNV92bWFfbG9jayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAlp ZiAoZXJyKQogCQlnb3RvIHNraXBfcmVxdWVzdDsKIApAQCAtNzU0LDcgKzc2Miw5IEBAIGVtaXRf cnBjc19xdWVyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCWlmIChJU19FUlIo dm1hKSkKIAkJcmV0dXJuIFBUUl9FUlIodm1hKTsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9i aik7CiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2Up OworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJy OwogCkBAIC03ODAsMTEgKzc5MCwxNSBAQCBlbWl0X3JwY3NfcXVlcnkoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9yZXF1ZXN0OwogCisJaTkx NV92bWFfbG9jayhiYXRjaCk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gs IHJxLCAwKTsKKwlpOTE1X3ZtYV91bmxvY2soYmF0Y2gpOwogCWlmIChlcnIpCiAJCWdvdG8gc2tp cF9yZXF1ZXN0OwogCisJaTkxNV92bWFfbG9jayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVf dG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2so dm1hKTsKIAlpZiAoZXJyKQogCQlnb3RvIHNraXBfcmVxdWVzdDsKIApAQCAtMTM0NSw3ICsxMzU5 LDkgQEAgc3RhdGljIGludCB3cml0ZV90b19zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVxdWVzdDsKIAorCWk5MTVfdm1hX2xvY2so dm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCAwKTsKKwlpOTE1 X3ZtYV91bmxvY2sodm1hKTsKIAlpZiAoZXJyKQogCQlnb3RvIHNraXBfcmVxdWVzdDsKIApAQCAt MTQ0MCw3ICsxNDU2LDkgQEAgc3RhdGljIGludCByZWFkX2Zyb21fc2NyYXRjaChzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogCWlmIChlcnIpCiAJCWdvdG8gZXJyX3JlcXVlc3Q7CiAKKwlp OTE1X3ZtYV9sb2NrKHZtYSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBy cSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWk5MTVfdm1hX3VubG9jayh2bWEpOwogCWlmIChlcnIp CiAJCWdvdG8gc2tpcF9yZXF1ZXN0OwogCkBAIC0xNDQ5LDcgKzE0NjcsOSBAQCBzdGF0aWMgaW50 IHJlYWRfZnJvbV9zY3JhdGNoKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAKIAlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJZXJyID0g aTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgZmFsc2UpOworCWk5MTVfZ2Vt X29iamVjdF91bmxvY2sob2JqKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycjsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwppbmRleCBi M2VlNGVlMDhiMTguLjIyNmFiZjUxNmEyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKQEAgLTExMCw3ICsxMTAsOSBAQCBzdGF0 aWMgaW50IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCQlHRU1fQlVHX09OKHZpZXcucGFydGlhbC5zaXplID4gbnJlYWwpOwogCQljb25kX3Jl c2NoZWQoKTsKIAorCQlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCQllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKTsKKwkJaTkxNV9nZW1fb2JqZWN0 X3VubG9jayhvYmopOwogCQlpZiAoZXJyKSB7CiAJCQlwcl9lcnIoIkZhaWxlZCB0byBmbHVzaCB0 byBHVFQgd3JpdGUgZG9tYWluOyBlcnI9JWRcbiIsCiAJCQkgICAgICAgZXJyKTsKQEAgLTE0Miw3 ICsxNDQsOSBAQCBzdGF0aWMgaW50IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCQlpZiAob2Zmc2V0ID49IG9iai0+YmFzZS5zaXplKQogCQkJ Y29udGludWU7CiAKKwkJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAkJaTkxNV9nZW1fb2Jq ZWN0X2ZsdXNoX3dyaXRlX2RvbWFpbihvYmosIH5JOTE1X0dFTV9ET01BSU5fQ1BVKTsKKwkJaTkx NV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCiAJCXAgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2Uob2JqLCBvZmZzZXQgPj4gUEFHRV9TSElGVCk7CiAJCWNwdSA9IGttYXAocCkgKyBvZmZzZXRf aW5fcGFnZShvZmZzZXQpOwpAQCAtMzQ0LDcgKzM0OCw5IEBAIHN0YXRpYyBpbnQgbWFrZV9vYmpf YnVzeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQlyZXR1cm4gUFRSX0VSUihy cSk7CiAJfQogCisJaTkxNV92bWFfbG9jayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9f YWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1h KTsKIAogCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jCmluZGV4IGI3NmI1MDNiMzk5OS4uOGVj ZjhkN2JkMDgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX3BoeXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX3BoeXMuYwpAQCAtNDYsOSArNDYsOSBAQCBzdGF0aWMgaW50IG1vY2tfcGh5c19v YmplY3Qodm9pZCAqYXJnKQogCX0KIAogCS8qIE1ha2UgdGhlIG9iamVjdCBkaXJ0eSBzbyB0aGF0 IHB1dF9wYWdlcyBtdXN0IGRvIGNvcHkgYmFjayB0aGUgZGF0YSAqLwotCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7Ci0JbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2Nr KG9iaik7CiAJaWYgKGVycikgewogCQlwcl9lcnIoImk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbiBmYWlsZWQgd2l0aCBlcnI9JWRcbiIsCiAJCSAgICAgICBlcnIpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwppbmRleCA0YjQ1ODliOTI1MjEu LjQ1NzQ1ZTM2YjVmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfaGFuZ2NoZWNrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFu Z2NoZWNrLmMKQEAgLTExNSw3ICsxMTUsOSBAQCBzdGF0aWMgaW50IG1vdmVfdG9fYWN0aXZlKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLAogewogCWludCBlcnI7CiAKKwlpOTE1X3ZtYV9sb2NrKHZtYSk7 CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwgZmxhZ3MpOworCWk5MTVf dm1hX3VubG9jayh2bWEpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTEyOTgsNyAr MTMwMCw5IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCQl9CiAJfQogCisJaTkxNV92bWFfbG9jayhhcmcudm1hKTsKIAll cnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShhcmcudm1hLCBycSwgZmxhZ3MpOworCWk5MTVf dm1hX3VubG9jayhhcmcudm1hKTsKIAogCWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX05FRURTX0ZF TkNFKQogCQlpOTE1X3ZtYV91bnBpbl9mZW5jZShhcmcudm1hKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfbHJjLmMKaW5kZXggZmIzMmIyNjVhNDllLi45MTQzYzNlZGEyZWMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCkBAIC0xMDk5LDExICsxMDk5LDEzIEBA IHN0YXRpYyBpbnQgc21va2Vfc3VibWl0KHN0cnVjdCBwcmVlbXB0X3Ntb2tlICpzbW9rZSwKIAl9 CiAKIAlpZiAodm1hKSB7CisJCWk5MTVfdm1hX2xvY2sodm1hKTsKIAkJZXJyID0gcnEtPmVuZ2lu ZS0+ZW1pdF9iYl9zdGFydChycSwKIAkJCQkJCXZtYS0+bm9kZS5zdGFydCwKIAkJCQkJCVBBR0Vf U0laRSwgMCk7CiAJCWlmICghZXJyKQogCQkJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUo dm1hLCBycSwgMCk7CisJCWk5MTVfdm1hX3VubG9jayh2bWEpOwogCX0KIAogCWk5MTVfcmVxdWVz dF9hZGQocnEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf d29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91 bmRzLmMKaW5kZXggNDBiNmRmOTExZDhkLi5kNGJhNTI5NmIyYzggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYwpAQCAtMTExLDcgKzExMSw5IEBA IHJlYWRfbm9ucHJpdnMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCQlnb3RvIGVycl9waW47CiAJfQogCisJaTkxNV92bWFfbG9j ayh2bWEpOwogCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JK RUNUX1dSSVRFKTsKKwlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVy cl9yZXE7CiAKQEAgLTE4OCw4ICsxOTAsMTAgQEAgc3RhdGljIGludCBjaGVja193aGl0ZWxpc3Qo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJcmV0dXJuIFBUUl9FUlIocmVzdWx0cyk7 CiAKIAllcnIgPSAwOworCWk5MTVfZ2VtX29iamVjdF9sb2NrKHJlc3VsdHMpOwogCWlndF93ZWRn ZV9vbl90aW1lb3V0KCZ3ZWRnZSwgY3R4LT5pOTE1LCBIWiAvIDUpIC8qIGEgc2FmZXR5IG5ldCEg Ki8KIAkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHJlc3VsdHMsIGZh bHNlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHJlc3VsdHMpOwogCWlmIChpOTE1X3Rlcm1p bmFsbHlfd2VkZ2VkKGN0eC0+aTkxNSkpCiAJCWVyciA9IC1FSU87CiAJaWYgKGVycikKQEAgLTM2 MCw3ICszNjQsOSBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpjcmVhdGVfYmF0Y2goc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9vYmo7CiAKKwlp OTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9f d2NfZG9tYWluKG9iaiwgdHJ1ZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwogCWlm IChlcnIpCiAJCWdvdG8gZXJyX29iajsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2Vy LmMKaW5kZXggMWVlODgxODI1ZTM4Li5mNmQxNTY4Mzg2OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2NtZF9wYXJzZXIuYwpAQCAtMjg0MCw3ICsyODQwLDkgQEAgc3RhdGljIGludCBzaGFkb3df aW5kaXJlY3RfY3R4KHN0cnVjdCBpbnRlbF9zaGFkb3dfd2FfY3R4ICp3YV9jdHgpCiAJCWdvdG8g cHV0X29iajsKIAl9CiAKKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwogCXJldCA9IGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpOTE1X2dlbV9vYmpl Y3RfdW5sb2NrKG9iaik7CiAJaWYgKHJldCkgewogCQlndnRfdmdwdV9lcnIoImZhaWxlZCB0byBz ZXQgc2hhZG93IGluZGlyZWN0IGN0eCB0byBDUFVcbiIpOwogCQlnb3RvIHVubWFwX3NyYzsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwppbmRleCBjOWQzYjUyZDc3NmYuLjlmNmMxMTk5 ODNkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwpAQCAtNDkyLDE4ICs0OTIs MTggQEAgc3RhdGljIGludCBwcmVwYXJlX3NoYWRvd19iYXRjaF9idWZmZXIoc3RydWN0IGludGVs X3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQogCQkJfQogCiAJCQlyZXQgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4oYmItPm9iaiwKLQkJCQkJZmFsc2UpOworCQkJCQkJCQlmYWxz ZSk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gZXJyOwogCi0JCQlpOTE1X2dlbV9vYmplY3RfZmlu aXNoX2FjY2VzcyhiYi0+b2JqKTsKLQkJCWJiLT5hY2Nlc3NpbmcgPSBmYWxzZTsKLQogCQkJcmV0 ID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmItPnZtYSwKIAkJCQkJCSAgICAgIHdvcmtsb2Fk LT5yZXEsCiAJCQkJCQkgICAgICAwKTsKIAkJCWlmIChyZXQpCiAJCQkJZ290byBlcnI7CisKKwkJ CWk5MTVfZ2VtX29iamVjdF9maW5pc2hfYWNjZXNzKGJiLT5vYmopOworCQkJYmItPmFjY2Vzc2lu ZyA9IGZhbHNlOwogCQl9CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Nt ZF9wYXJzZXIuYwppbmRleCBjODkzYmQ0ZWIyYzguLmEyOGJjZDJkN2MwOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKQEAgLTEwNTgsMTkgKzEwNTgsMjAgQEAgc3RhdGlj IHUzMiAqY29weV9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZHN0X29iaiwKIAl2 b2lkICpkc3QsICpzcmM7CiAJaW50IHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wcmVw YXJlX3JlYWQoc3JjX29iaiwgJnNyY19uZWVkc19jbGZsdXNoKTsKKwlyZXQgPSBpOTE1X2dlbV9v YmplY3RfcHJlcGFyZV93cml0ZShkc3Rfb2JqLCAmZHN0X25lZWRzX2NsZmx1c2gpOwogCWlmIChy ZXQpCiAJCXJldHVybiBFUlJfUFRSKHJldCk7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHJl cGFyZV93cml0ZShkc3Rfb2JqLCAmZHN0X25lZWRzX2NsZmx1c2gpOwotCWlmIChyZXQpIHsKLQkJ ZHN0ID0gRVJSX1BUUihyZXQpOwotCQlnb3RvIHVucGluX3NyYzsKLQl9Ci0KIAlkc3QgPSBpOTE1 X2dlbV9vYmplY3RfcGluX21hcChkc3Rfb2JqLCBJOTE1X01BUF9GT1JDRV9XQik7CisJaTkxNV9n ZW1fb2JqZWN0X2ZpbmlzaF9hY2Nlc3MoZHN0X29iaik7CiAJaWYgKElTX0VSUihkc3QpKQotCQln b3RvIHVucGluX2RzdDsKKwkJcmV0dXJuIGRzdDsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9w cmVwYXJlX3JlYWQoc3JjX29iaiwgJnNyY19uZWVkc19jbGZsdXNoKTsKKwlpZiAocmV0KSB7CisJ CWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZHN0X29iaik7CisJCXJldHVybiBFUlJfUFRSKHJl dCk7CisJfQogCiAJc3JjID0gRVJSX1BUUigtRU5PREVWKTsKIAlpZiAoc3JjX25lZWRzX2NsZmx1 c2ggJiYKQEAgLTExMTYsMTMgKzExMTcsMTEgQEAgc3RhdGljIHUzMiAqY29weV9iYXRjaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZHN0X29iaiwKIAkJfQogCX0KIAorCWk5MTVfZ2VtX29i amVjdF9maW5pc2hfYWNjZXNzKHNyY19vYmopOworCiAJLyogZHN0X29iaiBpcyByZXR1cm5lZCB3 aXRoIHZtYXAgcGlubmVkICovCiAJKm5lZWRzX2NsZmx1c2hfYWZ0ZXIgPSBkc3RfbmVlZHNfY2xm bHVzaCAmIENMRkxVU0hfQUZURVI7CiAKLXVucGluX2RzdDoKLQlpOTE1X2dlbV9vYmplY3RfZmlu aXNoX2FjY2Vzcyhkc3Rfb2JqKTsKLXVucGluX3NyYzoKLQlpOTE1X2dlbV9vYmplY3RfZmluaXNo X2FjY2VzcyhzcmNfb2JqKTsKIAlyZXR1cm4gZHN0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwppbmRleCA3ZmExMjM2Njc3YjkuLjMyZmRjMTk3N2FmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCkBAIC0xMDMsMTkgKzEwMywxMCBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3VuYmluZChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwog CUxJU1RfSEVBRChzdGlsbF9pbl9saXN0KTsKLQlpbnQgcmV0OworCWludCByZXQgPSAwOwogCiAJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAotCS8q IENsb3NlZCB2bWEgYXJlIHJlbW92ZWQgZnJvbSB0aGUgb2JqLT52bWFfbGlzdCAtIGJ1dCB0aGV5 IG1heQotCSAqIHN0aWxsIGhhdmUgYW4gYWN0aXZlIGJpbmRpbmcgb24gdGhlIG9iamVjdC4gVG8g cmVtb3ZlIHRob3NlIHdlCi0JICogbXVzdCB3YWl0IGZvciBhbGwgcmVuZGVyaW5nIHRvIGNvbXBs ZXRlIHRvIHRoZSBvYmplY3QgKGFzIHVuYmluZGluZwotCSAqIG11c3QgYW55d2F5KSwgYW5kIHJl dGlyZSB0aGUgcmVxdWVzdHMuCi0JICovCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19j cHVfZG9tYWluKG9iaiwgZmFsc2UpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KIAlzcGlu X2xvY2soJm9iai0+dm1hLmxvY2spOwogCXdoaWxlICghcmV0ICYmICh2bWEgPSBsaXN0X2ZpcnN0 X2VudHJ5X29yX251bGwoJm9iai0+dm1hLmxpc3QsCiAJCQkJCQkgICAgICAgc3RydWN0IGk5MTVf dm1hLApAQCAtMTM4LDI5ICsxMjksMTcgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uoc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2UsCiAJCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAJCQkgICBs b25nIHRpbWVvdXQpCiB7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0KIAlCVUlMRF9CVUdf T04oSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgIT0gMHgxKTsKIAogCWlmICh0ZXN0X2JpdChETUFf RkVOQ0VfRkxBR19TSUdOQUxFRF9CSVQsICZmZW5jZS0+ZmxhZ3MpKQogCQlyZXR1cm4gdGltZW91 dDsKIAotCWlmICghZG1hX2ZlbmNlX2lzX2k5MTUoZmVuY2UpKQotCQlyZXR1cm4gZG1hX2ZlbmNl X3dhaXRfdGltZW91dChmZW5jZSwKLQkJCQkJICAgICAgZmxhZ3MgJiBJOTE1X1dBSVRfSU5URVJS VVBUSUJMRSwKLQkJCQkJICAgICAgdGltZW91dCk7CisJaWYgKGRtYV9mZW5jZV9pc19pOTE1KGZl bmNlKSkKKwkJcmV0dXJuIGk5MTVfcmVxdWVzdF93YWl0KHRvX3JlcXVlc3QoZmVuY2UpLCBmbGFn cywgdGltZW91dCk7CiAKLQlycSA9IHRvX3JlcXVlc3QoZmVuY2UpOwotCWlmIChpOTE1X3JlcXVl c3RfY29tcGxldGVkKHJxKSkKLQkJZ290byBvdXQ7Ci0KLQl0aW1lb3V0ID0gaTkxNV9yZXF1ZXN0 X3dhaXQocnEsIGZsYWdzLCB0aW1lb3V0KTsKLQotb3V0OgotCWlmIChmbGFncyAmIEk5MTVfV0FJ VF9MT0NLRUQgJiYgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCi0JCWk5MTVfcmVxdWVzdF9y ZXRpcmVfdXB0byhycSk7Ci0KLQlyZXR1cm4gdGltZW91dDsKKwlyZXR1cm4gZG1hX2ZlbmNlX3dh aXRfdGltZW91dChmZW5jZSwKKwkJCQkgICAgICBmbGFncyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFLAorCQkJCSAgICAgIHRpbWVvdXQpOwogfQogCiBzdGF0aWMgbG9uZwpAQCAtNDYzLDIxICs0 NDIsMjIgQEAgc3RhdGljIGludAogaTkxNV9nZW1fc2htZW1fcHJlYWQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ByZWFkICphcmdz KQogewotCWNoYXIgX191c2VyICp1c2VyX2RhdGE7Ci0JdTY0IHJlbWFpbjsKIAl1bnNpZ25lZCBp bnQgbmVlZHNfY2xmbHVzaDsKIAl1bnNpZ25lZCBpbnQgaWR4LCBvZmZzZXQ7CisJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7CisJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKKwl1NjQgcmVtYWluOwog CWludCByZXQ7CiAKLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJm9iai0+YmFzZS5k ZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9wcmVwYXJlX3JlYWQob2JqLCAmbmVlZHNfY2xmbHVzaCk7Ci0JbXV0ZXhf dW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKKwlmZW5jZSA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKG9iaik7CisJaTkx NV9nZW1fb2JqZWN0X2ZpbmlzaF9hY2Nlc3Mob2JqKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4g LUVOT01FTTsKKwogCXJlbWFpbiA9IGFyZ3MtPnNpemU7CiAJdXNlcl9kYXRhID0gdTY0X3RvX3Vz ZXJfcHRyKGFyZ3MtPmRhdGFfcHRyKTsKIAlvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShhcmdzLT5v ZmZzZXQpOwpAQCAtNDk1LDcgKzQ3NSw3IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCW9mZnNldCA9IDA7CiAJfQogCi0JaTkxNV9nZW1f b2JqZWN0X2ZpbmlzaF9hY2Nlc3Mob2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrX2ZlbmNl KG9iaiwgZmVuY2UpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTUzMSw4ICs1MTEsOSBAQCBpOTE1 X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3Qg aTkxNV9nZ3R0ICpnZ3R0ID0gJmk5MTUtPmdndHQ7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 CiAJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7CisJc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKKwlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKIAl1NjQgcmVtYWluLCBvZmZzZXQ7CiAJaW50IHJldDsKIApAQCAtNTYx LDExICs1NDIsMjQgQEAgaTkxNV9nZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJCUdFTV9CVUdfT04oIW5vZGUuYWxsb2NhdGVkKTsKIAl9CiAKLQlyZXQgPSBp OTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJbXV0ZXhfdW5s b2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9s b2NrX2ludGVycnVwdGlibGUob2JqKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bnBpbjsKIAot CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJaTkx NV9nZW1fb2JqZWN0X3VubG9jayhvYmopOworCQlnb3RvIG91dF91bnBpbjsKKwl9CisKKwlmZW5j ZSA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKG9iaik7CisJaTkxNV9nZW1fb2JqZWN0X3Vu bG9jayhvYmopOworCWlmICghZmVuY2UpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRf dW5waW47CisJfQogCiAJdXNlcl9kYXRhID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmRhdGFfcHRy KTsKIAlyZW1haW4gPSBhcmdzLT5zaXplOwpAQCAtNjAzLDggKzU5Nyw5IEBAIGk5MTVfZ2VtX2d0 dF9wcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQlvZmZzZXQgKz0gcGFn ZV9sZW5ndGg7CiAJfQogCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJ aTkxNV9nZW1fb2JqZWN0X3VubG9ja19mZW5jZShvYmosIGZlbmNlKTsKIG91dF91bnBpbjoKKwlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAlpZiAobm9kZS5hbGxvY2F0ZWQp IHsKIAkJd21iKCk7CiAJCWdndHQtPnZtLmNsZWFyX3JhbmdlKCZnZ3R0LT52bSwgbm9kZS5zdGFy dCwgbm9kZS5zaXplKTsKQEAgLTcxNSw2ICs3MTAsNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zh c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpn Z3R0ID0gJmk5MTUtPmdndHQ7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJc3RydWN0IGRy bV9tbV9ub2RlIG5vZGU7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJc3RydWN0IGk5MTVf dm1hICp2bWE7CiAJdTY0IHJlbWFpbiwgb2Zmc2V0OwogCXZvaWQgX191c2VyICp1c2VyX2RhdGE7 CkBAIC03NjIsMTEgKzc1OCwyNCBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJR0VNX0JVR19PTighbm9kZS5hbGxvY2F0ZWQpOwog CX0KIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUp OworCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7CiAJaWYgKHJldCkKIAkJZ290byBv dXRfdW5waW47CiAKLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOworCWlmIChy ZXQpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOworCQlnb3RvIG91dF91bnBpbjsK Kwl9CisKKwlmZW5jZSA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ZlbmNlKG9iaik7CisJaTkxNV9n ZW1fb2JqZWN0X3VubG9jayhvYmopOworCWlmICghZmVuY2UpIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBvdXRfdW5waW47CisJfQogCiAJaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLCBP UklHSU5fQ1BVKTsKIApAQCAtODExLDggKzgyMCw5IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCX0KIAlpbnRlbF9mYl9vYmpfZmx1 c2gob2JqLCBPUklHSU5fQ1BVKTsKIAotCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2tfZmVuY2Uob2JqLCBmZW5jZSk7CiBvdXRfdW5w aW46CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaWYgKG5vZGUuYWxs b2NhdGVkKSB7CiAJCXdtYigpOwogCQlnZ3R0LT52bS5jbGVhcl9yYW5nZSgmZ2d0dC0+dm0sIG5v ZGUuc3RhcnQsIG5vZGUuc2l6ZSk7CkBAIC04NTgsMjMgKzg2OCwyMyBAQCBzdGF0aWMgaW50CiBp OTE1X2dlbV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJ ICAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUgKmFyZ3MpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwotCXZvaWQg X191c2VyICp1c2VyX2RhdGE7Ci0JdTY0IHJlbWFpbjsKIAl1bnNpZ25lZCBpbnQgcGFydGlhbF9j YWNoZWxpbmVfd3JpdGU7CiAJdW5zaWduZWQgaW50IG5lZWRzX2NsZmx1c2g7CiAJdW5zaWduZWQg aW50IG9mZnNldCwgaWR4OworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCXZvaWQgX191c2Vy ICp1c2VyX2RhdGE7CisJdTY0IHJlbWFpbjsKIAlpbnQgcmV0OwogCi0JcmV0ID0gbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OwotCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfd3JpdGUob2JqLCAm bmVlZHNfY2xmbHVzaCk7Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJZmVuY2UgPSBpOTE1X2dlbV9vYmplY3RfbG9j a19mZW5jZShvYmopOworCWk5MTVfZ2VtX29iamVjdF9maW5pc2hfYWNjZXNzKG9iaik7CisJaWYg KCFmZW5jZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKIAkvKiBJZiB3ZSBkb24ndCBvdmVyd3JpdGUg YSBjYWNoZWxpbmUgY29tcGxldGVseSB3ZSBuZWVkIHRvIGJlCiAJICogY2FyZWZ1bCB0byBoYXZl IHVwLXRvLWRhdGUgZGF0YSBieSBmaXJzdCBjbGZsdXNoaW5nLiBEb24ndAogCSAqIG92ZXJjb21w bGljYXRlIHRoaW5ncyBhbmQgZmx1c2ggdGhlIGVudGlyZSBwYXRjaC4KQEAgLTkwMiw3ICs5MTIs OCBAQCBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAl9CiAKIAlpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCBPUklHSU5fQ1BVKTsKLQlpOTE1X2dl bV9vYmplY3RfZmluaXNoX2FjY2VzcyhvYmopOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2tfZmVu Y2Uob2JqLCBmZW5jZSk7CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xNzgxLDcgKzE3OTIsOSBA QCBzdGF0aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCiAJCWlmIChlcnIpCiAJCQlnb3RvIGVycl9hY3RpdmU7CiAKKwkJ aTkxNV9nZW1fb2JqZWN0X2xvY2soc3RhdGUtPm9iaik7CiAJCWVyciA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fY3B1X2RvbWFpbihzdGF0ZS0+b2JqLCBmYWxzZSk7CisJCWk5MTVfZ2VtX29iamVj dF91bmxvY2soc3RhdGUtPm9iaik7CiAJCWlmIChlcnIpCiAJCQlnb3RvIGVycl9hY3RpdmU7CiAK QEAgLTIyMjgsMTIgKzIyNDEsMTMgQEAgaW50IGk5MTVfZ2VtX2ZyZWV6ZV9sYXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogCWk5MTVfZ2VtX3NocmluayhpOTE1LCAtMVVMLCBOVUxM LCBJOTE1X1NIUklOS19VTkJPVU5EKTsKIAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5 MTUpOwogCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJZm9yIChwaGFz ZSA9IHBoYXNlczsgKnBoYXNlOyBwaGFzZSsrKSB7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkob2Jq LCAqcGhhc2UsIG1tLmxpbmspCisJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAqcGhhc2UsIG1t LmxpbmspIHsKKwkJCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7CiAJCQlXQVJOX09OKGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihvYmosIHRydWUpKTsKKwkJCWk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKKwkJfQogCX0KLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CmluZGV4IGQzZWJhNjdkNGJmOS4uNTZiZTRiMDkxYmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwpAQCAtMzUxOSw4ICszNTE5LDExIEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9n dHRfbWFwcGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlXQVJOX09O KGk5MTVfdm1hX2JpbmQodm1hLAogCQkJCSAgICAgIG9iaiA/IG9iai0+Y2FjaGVfbGV2ZWwgOiAw LAogCQkJCSAgICAgIFBJTl9VUERBVEUpKTsKLQkJaWYgKG9iaikKKwkJaWYgKG9iaikgeworCQkJ aTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKIAkJCVdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpKTsKKwkJCWk5MTVfZ2VtX29iamVjdF91bmxvY2so b2JqKTsKKwkJfQogCiBsb2NrOgogCQltdXRleF9sb2NrKCZnZ3R0LT52bS5tdXRleCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCmluZGV4IGYzYjQyYjAy NmZmZi4uNzA2ZWQ3MTQ2OGU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZW5kZXJfc3RhdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZW5kZXJfc3RhdGUuYwpAQCAtMjIyLDcgKzIyMiw5IEBAIGludCBpOTE1X2dlbV9yZW5kZXJfc3Rh dGVfZW1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkJCWdvdG8gZXJyX3VucGluOwogCX0K IAorCWk5MTVfdm1hX2xvY2soc28udm1hKTsKIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2 ZShzby52bWEsIHJxLCAwKTsKKwlpOTE1X3ZtYV91bmxvY2soc28udm1hKTsKIGVycl91bnBpbjoK IAlpOTE1X3ZtYV91bnBpbihzby52bWEpOwogZXJyX3ZtYToKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5j CmluZGV4IGQ0ZDMwOGI2ZDFkOC4uMzYyMGQzOWMwYmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1h LmMKQEAgLTg0NywxMyArODQ3LDE0IEBAIHZvaWQgaTkxNV92bWFfZGVzdHJveShzdHJ1Y3QgaTkx NV92bWEgKnZtYSkKIHsKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKIAotCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwog CUdFTV9CVUdfT04oaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwogCiAJaWYgKGk5MTVfdm1hX2lz X2Nsb3NlZCh2bWEpKQogCQlsaXN0X2RlbCgmdm1hLT5jbG9zZWRfbGluayk7CiAKIAlXQVJOX09O KGk5MTVfdm1hX3VuYmluZCh2bWEpKTsKKwlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2 bWEpKTsKKwogCV9faTkxNV92bWFfZGVzdHJveSh2bWEpOwogfQogCkBAIC05MTUsMTIgKzkxNiwx MCBAQCBzdGF0aWMgdm9pZCBleHBvcnRfZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJICog aGFuZGxlIGFuIGVycm9yIHJpZ2h0IG5vdy4gV29yc3QgY2FzZSBzaG91bGQgYmUgbWlzc2VkCiAJ ICogc3luY2hyb25pc2F0aW9uIGxlYWRpbmcgdG8gcmVuZGVyaW5nIGNvcnJ1cHRpb24uCiAJICov Ci0JcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2socmVzdiwgTlVMTCk7CiAJaWYgKGZsYWdzICYgRVhF Q19PQkpFQ1RfV1JJVEUpCiAJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShyZXN2 LCAmcnEtPmZlbmNlKTsKIAllbHNlIGlmIChyZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFy ZWQocmVzdiwgMSkgPT0gMCkKIAkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2Uo cmVzdiwgJnJxLT5mZW5jZSk7Ci0JcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayhyZXN2KTsKIH0K IAogaW50IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLApAQCAt OTI5LDcgKzkyOCw4IEBAIGludCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7 CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJ YXNzZXJ0X3ZtYV9oZWxkKHZtYSk7CisJYXNzZXJ0X29iamVjdF9oZWxkKG9iaik7CiAJR0VNX0JV R19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAogCS8qCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92bWEuaAppbmRleCA3OTUwZmE5NmVlODYuLjcxYWM3ZWU4NjIwYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYS5oCkBAIC0yOTUsNiArMjk1LDE4IEBAIHZvaWQgaTkxNV92bWFfY2xvc2Uo c3RydWN0IGk5MTVfdm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9yZW9wZW4oc3RydWN0IGk5MTVf dm1hICp2bWEpOwogdm9pZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsK IAorI2RlZmluZSBhc3NlcnRfdm1hX2hlbGQodm1hKSByZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0 X2hlbGQoKHZtYSktPnJlc3YpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3ZtYV9sb2NrKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKHZtYS0+cmVz diwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3ZtYV91bmxvY2soc3RydWN0 IGk5MTVfdm1hICp2bWEpCit7CisJcmVzZXJ2YXRpb25fb2JqZWN0X3VubG9jayh2bWEtPnJlc3Yp OworfQorCiBpbnQgX19pOTE1X3ZtYV9kb19waW4oc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJCSAg ICAgIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxhZ3MpOwogc3RhdGljIGlubGluZSBp bnQgX19tdXN0X2NoZWNrCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNzhj MzU4N2ViYWJmLi41NTMxMmE0ODE1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKQEAgLTIwOTEsNiArMjA5MSw3IEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCSAqIHBpbi91bnBpbi9mZW5jZSBhbmQgbm90IG1vcmUu CiAJICovCiAJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKKwlpOTE1 X2dlbV9vYmplY3RfbG9jayhvYmopOwogCiAJYXRvbWljX2luYygmZGV2X3ByaXYtPmdwdV9lcnJv ci5wZW5kaW5nX2ZiX3Bpbik7CiAKQEAgLTIxNDUsNiArMjE0Niw3IEBAIGludGVsX3Bpbl9hbmRf ZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogZXJyOgogCWF0b21pY19k ZWMoJmRldl9wcml2LT5ncHVfZXJyb3IucGVuZGluZ19mYl9waW4pOwogCisJaTkxNV9nZW1fb2Jq ZWN0X3VubG9jayhvYmopOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVm KTsKIAlyZXR1cm4gdm1hOwogfQpAQCAtMjE1Myw5ICsyMTU1LDEyIEBAIHZvaWQgaW50ZWxfdW5w aW5fZmJfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogewog CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CisJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwogCWlmIChmbGFncyAmIFBMQU5FX0hB U19GRU5DRSkKIAkJaTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKIAlpOTE1X2dlbV9vYmplY3Rf dW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHZtYSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayh2 bWEtPm9iaik7CisKIAlpOTE1X3ZtYV9wdXQodm1hKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvZy5jCmluZGV4IDcxNDY1MjQyNjRkZC4uNjdlYWRjODJjMzk2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCkBAIC0zNDMsOCArMzQzLDYgQEAgc3RhdGljIHZvaWQg Y2FwdHVyZV9sb2dzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiBzdGF0aWMgaW50 IGd1Y19sb2dfbWFwKHN0cnVjdCBpbnRlbF9ndWNfbG9nICpsb2cpCiB7Ci0Jc3RydWN0IGludGVs X2d1YyAqZ3VjID0gbG9nX3RvX2d1Yyhsb2cpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJdm9pZCAqdmFkZHI7CiAJaW50IHJldDsKIApA QCAtMzUzLDkgKzM1MSw5IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19tYXAoc3RydWN0IGludGVsX2d1 Y19sb2cgKmxvZykKIAlpZiAoIWxvZy0+dm1hKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfbG9j ayhsb2ctPnZtYS0+b2JqKTsKIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2RvbWFp bihsb2ctPnZtYS0+b2JqLCB0cnVlKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3Ry dWN0X211dGV4KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKGxvZy0+dm1hLT5vYmopOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwpp bmRleCA4MWEwZGI1MmM1ODguLmYwNWM1NDViNWVmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X292ZXJsYXkuYwpAQCAtNzYzLDggKzc2MywxMCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlf ZG9fcHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCiAJYXRvbWljX2lu YygmZGV2X3ByaXYtPmdwdV9lcnJvci5wZW5kaW5nX2ZiX3Bpbik7CiAKKwlpOTE1X2dlbV9vYmpl Y3RfbG9jayhuZXdfYm8pOwogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9w bGFuZShuZXdfYm8sCiAJCQkJCQkgICAwLCBOVUxMLCBQSU5fTUFQUEFCTEUpOworCWk5MTVfZ2Vt X29iamVjdF91bmxvY2sobmV3X2JvKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0gUFRS X0VSUih2bWEpOwogCQlnb3RvIG91dF9waW5fc2VjdGlvbjsKQEAgLTEzMDMsMTUgKzEzMDUsMjAg QEAgaW50IGludGVsX292ZXJsYXlfYXR0cnNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAogc3RhdGljIGludCBnZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5LCBib29sIHVzZV9waHlzKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCBlcnI7CiAKLQlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbihvdmVybGF5LT5pOTE1LCBQQUdFX1NJWkUpOworCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oaTkxNSwgUEFHRV9TSVpFKTsKIAlpZiAob2JqID09IE5VTEwpCi0JCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwob3ZlcmxheS0+aTkxNSwgUEFHRV9TSVpF KTsKLQlpZiAoSVNfRVJSKG9iaikpCi0JCXJldHVybiBQVFJfRVJSKG9iaik7CisJCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoSVNf RVJSKG9iaikpIHsKKwkJZXJyID0gUFRSX0VSUihvYmopOworCQlnb3RvIGVycl91bmxvY2s7CisJ fQogCiAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwgUElO X01BUFBBQkxFKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKQEAgLTEzMzIsMTAgKzEzMzksMTMgQEAg c3RhdGljIGludCBnZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LCBi b29sIHVzZV9waHlzKQogCX0KIAogCW92ZXJsYXktPnJlZ19ibyA9IG9iajsKKwltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCXJldHVybiAwOwogCiBlcnJfcHV0X2JvOgog CWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKK2Vycl91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0xMzYxLDE4ICsx MzcxLDE2IEBAIHZvaWQgaW50ZWxfb3ZlcmxheV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAKIAlJTklUX0FDVElWRV9SRVFVRVNUKCZvdmVybGF5LT5sYXN0X2ZsaXAp OwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCiAJcmV0ID0g Z2V0X3JlZ2lzdGVycyhvdmVybGF5LCBPVkVSTEFZX05FRURTX1BIWVNJQ0FMKGRldl9wcml2KSk7 CiAJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZTsKIAorCWk5MTVfZ2VtX29iamVjdF9sb2NrKG92 ZXJsYXktPnJlZ19ibyk7CiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG92ZXJsYXktPnJlZ19ibywgdHJ1ZSk7CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvdmVybGF5 LT5yZWdfYm8pOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3JlZ19ibzsKIAotCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCiAJbWVtc2V0X2lvKG92ZXJsYXktPnJl Z3MsIDAsIHNpemVvZihzdHJ1Y3Qgb3ZlcmxheV9yZWdpc3RlcnMpKTsKIAl1cGRhdGVfcG9seXBo YXNlX2ZpbHRlcihvdmVybGF5LT5yZWdzKTsKIAl1cGRhdGVfcmVnX2F0dHJzKG92ZXJsYXksIG92 ZXJsYXktPnJlZ3MpOwpAQCAtMTM4NCw3ICsxMzkyLDYgQEAgdm9pZCBpbnRlbF9vdmVybGF5X3Nl dHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIG91dF9yZWdfYm86CiAJaTkx NV9nZW1fb2JqZWN0X3B1dChvdmVybGF5LT5yZWdfYm8pOwogb3V0X2ZyZWU6Ci0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJa2ZyZWUob3ZlcmxheSk7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCmluZGV4IDMyNTdhMDU0Y2IwYi4uZTAwNDI2NTA3 MjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMKQEAgLTI0NiwxNSArMjQ2LDEzIEBA IGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAkJCSBp bnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLAogCQkJIGludGVsX3VjX2Z3X3N0YXR1 c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1cykpOwogCi0JaW50ZWxfdWNfZndfZ2d0dF9iaW5kKHVj X2Z3KTsKLQogCS8qIENhbGwgY3VzdG9tIGxvYWRlciAqLworCWludGVsX3VjX2Z3X2dndHRfYmlu ZCh1Y19mdyk7CiAJZXJyID0geGZlcih1Y19mdyk7CisJaW50ZWxfdWNfZndfZ2d0dF91bmJpbmQo dWNfZncpOwogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsKIAotCWludGVsX3VjX2Z3X2dndHRfdW5i aW5kKHVjX2Z3KTsKLQogCXVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NV Q0NFU1M7CiAJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgbG9hZCAlc1xuIiwKIAkJCSBpbnRlbF91 Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfcmVxdWVzdC5jCmluZGV4IDY2Yzc5OTY1YmRlOC4uNWM5ZGJjYWEzYTMzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCkBAIC04 NzUsNyArODc1LDkgQEAgc3RhdGljIGludCBsaXZlX2FsbF9lbmdpbmVzKHZvaWQgKmFyZykKIAkJ CWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZShiYXRjaC0+b2JqKTsKIAkJfQog CisJCWk5MTVfdm1hX2xvY2soYmF0Y2gpOwogCQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2 ZShiYXRjaCwgcmVxdWVzdFtpZF0sIDApOworCQlpOTE1X3ZtYV91bmxvY2soYmF0Y2gpOwogCQlH RU1fQlVHX09OKGVycik7CiAKIAkJaTkxNV9yZXF1ZXN0X2dldChyZXF1ZXN0W2lkXSk7CkBAIC05 OTAsNyArOTkyLDkgQEAgc3RhdGljIGludCBsaXZlX3NlcXVlbnRpYWxfZW5naW5lcyh2b2lkICph cmcpCiAJCUdFTV9CVUdfT04oZXJyKTsKIAkJcmVxdWVzdFtpZF0tPmJhdGNoID0gYmF0Y2g7CiAK KwkJaTkxNV92bWFfbG9jayhiYXRjaCk7CiAJCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KGJhdGNoLCByZXF1ZXN0W2lkXSwgMCk7CisJCWk5MTVfdm1hX3VubG9jayhiYXRjaCk7CiAJCUdF TV9CVUdfT04oZXJyKTsKIAogCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2ZV9yZWZlcmVuY2Uo YmF0Y2gtPm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aWd0X3NwaW5uZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5l ci5jCmluZGV4IDQ1Njg4ZTY2OThiNy4uZDg0NWQxZGM3Y2U3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwpAQCAtNzYsNyArNzYsOSBAQCBzdGF0aWMg aW50IG1vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogewogCWludCBlcnI7CiAK KwlpOTE1X3ZtYV9sb2NrKHZtYSk7CiAJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1h LCBycSwgZmxhZ3MpOworCWk5MTVfdm1hX3VubG9jayh2bWEpOwogCWlmIChlcnIpCiAJCXJldHVy biBlcnI7CiAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4