From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 3/4] drm/i915: Store a pointer to intel_context in i915_request Date: Thu, 17 May 2018 22:26:32 +0100 Message-ID: <20180517212633.24934-3-chris@chris-wilson.co.uk> References: <20180517212633.24934-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 146016EBBC for ; Thu, 17 May 2018 21:26:56 +0000 (UTC) In-Reply-To: <20180517212633.24934-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: yan.y.zhao@intel.com List-Id: intel-gfx@lists.freedesktop.org VG8gZWFzZSB0aGUgZnJlcXVlbnQgYW5kIHVnbHkgcG9pbnRlciBkYW5jZSBvZgomcmVxdWVzdC0+ Z2VtX2NvbnRleHQtPmVuZ2luZVtyZXF1ZXN0LT5lbmdpbmUtPmlkXSBkdXJpbmcgcmVxdWVzdApz dWJtaXNzaW9uLCBzdG9yZSB0aGF0IHBvaW50ZXIgYXMgcmVxdWVzdC0+aHdfY29udGV4dC4gT25l IG1ham9yCmFkdmFudGFnZSB0aGF0IHdlIHdpbGwgZXhwbG9pdCBsYXRlciBpcyB0aGF0IHRoaXMg ZGVjb3VwbGVzIHRoZSBsb2dpY2FsCmNvbnRleHQgc3RhdGUgZnJvbSB0aGUgZW5naW5lIGl0c2Vs Zi4KCnYyOiBTZXQgbW9ja19jb250ZXh0LT5vcHMgc28gd2UgZG9uJ3QgY3Jhc2ggYW5kIGJ1cm4g aW4gc2VsZnRlc3RzLgogICAgQ2xlYW51cHMgZnJvbSBUdnJ0a28uCgpTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L21taW9fY29udGV4dC5jICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv bW1pb19jb250ZXh0LmggICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9z Y2hlZHVsZXIuYyAgICAgICAgICB8IDE0MSArKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaCAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAgMTcgKystCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmggICAgICAgfCAgMjEgKystCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAyNSArKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAgMzQgKystLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgNTQgKysrKy0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAxMjUgKysrKysrKysrLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgICAgICAgICAgIHwgICA3IC0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8IDEwMCArKysrKysr Ky0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgICAgfCAg IDkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8ICAg NyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYyAgfCAgNDEg KysrLS0KIDIwIGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCAyOTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jCmluZGV4IDBmOTQ5NTU0 ZDExOC4uNzA4MTcwZTYxNjI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv bW1pb19jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4 dC5jCkBAIC00NDYsOSArNDQ2LDkgQEAgc3RhdGljIHZvaWQgc3dpdGNoX21vY3Moc3RydWN0IGlu dGVsX3ZncHUgKnByZSwgc3RydWN0IGludGVsX3ZncHUgKm5leHQsCiAKICNkZWZpbmUgQ1RYX0NP TlRFWFRfQ09OVFJPTF9WQUwJMHgwMwogCi1ib29sIGlzX2luaGliaXRfY29udGV4dChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LCBpbnQgcmluZ19pZCkKK2Jvb2wgaXNfaW5oaWJpdF9jb250 ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQl1MzIgKnJlZ19zdGF0ZSA9IGN0eC0+ X19lbmdpbmVbcmluZ19pZF0ubHJjX3JlZ19zdGF0ZTsKKwljb25zdCB1MzIgKnJlZ19zdGF0ZSA9 IGNlLT5scmNfcmVnX3N0YXRlOwogCXUzMiBpbmhpYml0X21hc2sgPQogCQlfTUFTS0VEX0JJVF9F TkFCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQpOwogCkBAIC01MDEsNyAr NTAxLDcgQEAgc3RhdGljIHZvaWQgc3dpdGNoX21taW8oc3RydWN0IGludGVsX3ZncHUgKnByZSwK IAkJCSAqIGl0c2VsZi4KIAkJCSAqLwogCQkJaWYgKG1taW8tPmluX2NvbnRleHQgJiYKLQkJCSAg ICAhaXNfaW5oaWJpdF9jb250ZXh0KHMtPnNoYWRvd19jdHgsIHJpbmdfaWQpKQorCQkJICAgICFp c19pbmhpYml0X2NvbnRleHQoJnMtPnNoYWRvd19jdHgtPl9fZW5naW5lW3JpbmdfaWRdKSkKIAkJ CQljb250aW51ZTsKIAogCQkJaWYgKG1taW8tPm1hc2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv bW1pb19jb250ZXh0LmgKaW5kZXggMDQzOWViODA1N2E4Li41YzNiOWZmOWY5NmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvbW1pb19jb250ZXh0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBp bnRlbF9ndnRfc3dpdGNoX21taW8oc3RydWN0IGludGVsX3ZncHUgKnByZSwKIAogdm9pZCBpbnRl bF9ndnRfaW5pdF9lbmdpbmVfbW1pb19jb250ZXh0KHN0cnVjdCBpbnRlbF9ndnQgKmd2dCk7CiAK LWJvb2wgaXNfaW5oaWJpdF9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIGlu dCByaW5nX2lkKTsKK2Jvb2wgaXNfaW5oaWJpdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSk7CiAKIGludCBpbnRlbF92Z3B1X3Jlc3RvcmVfaW5oaWJpdF9jb250ZXh0KHN0cnVjdCBp bnRlbF92Z3B1ICp2Z3B1LAogCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXEpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCmluZGV4IDE3ZjlmOGQ3ZTE0OC4uZTE3NjAw MzBkZGExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCkBAIC01NCwxMSArNTQs OCBAQCBzdGF0aWMgdm9pZCBzZXRfY29udGV4dF9wZHBfcm9vdF9wb2ludGVyKAogCiBzdGF0aWMg dm9pZCB1cGRhdGVfc2hhZG93X3BkcHMoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmts b2FkKQogewotCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7Ci0JaW50 IHJpbmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq c2hhZG93X2N0eCA9IHZncHUtPnN1Ym1pc3Npb24uc2hhZG93X2N0eDsKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Ci0JCXNoYWRvd19jdHgtPl9fZW5naW5lW3JpbmdfaWRd LnN0YXRlLT5vYmo7CisJCXdvcmtsb2FkLT5yZXEtPmh3X2NvbnRleHQtPnN0YXRlLT5vYmo7CiAJ c3RydWN0IGV4ZWNsaXN0X3JpbmdfY29udGV4dCAqc2hhZG93X3JpbmdfY29udGV4dDsKIAlzdHJ1 Y3QgcGFnZSAqcGFnZTsKIApAQCAtMTI4LDkgKzEyNSw4IEBAIHN0YXRpYyBpbnQgcG9wdWxhdGVf c2hhZG93X2NvbnRleHQoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQogCXN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7CiAJc3RydWN0IGludGVsX2d2 dCAqZ3Z0ID0gdmdwdS0+Z3Z0OwogCWludCByaW5nX2lkID0gd29ya2xvYWQtPnJpbmdfaWQ7Ci0J c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnNoYWRvd19jdHggPSB2Z3B1LT5zdWJtaXNzaW9uLnNo YWRvd19jdHg7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPQotCQlzaGFk b3dfY3R4LT5fX2VuZ2luZVtyaW5nX2lkXS5zdGF0ZS0+b2JqOworCQl3b3JrbG9hZC0+cmVxLT5o d19jb250ZXh0LT5zdGF0ZS0+b2JqOwogCXN0cnVjdCBleGVjbGlzdF9yaW5nX2NvbnRleHQgKnNo YWRvd19yaW5nX2NvbnRleHQ7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdm9pZCAqZHN0OwpAQCAt MjgwLDEwICsyNzYsOCBAQCBzdGF0aWMgaW50IHNoYWRvd19jb250ZXh0X3N0YXR1c19jaGFuZ2Uo c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAlyZXR1cm4gTk9USUZZX09LOwogfQogCi1zdGF0 aWMgdm9pZCBzaGFkb3dfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAotCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMg dm9pZCBzaGFkb3dfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCiB7Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChj dHgsIGVuZ2luZSk7CiAJdTY0IGRlc2MgPSAwOwogCiAJZGVzYyA9IGNlLT5scmNfZGVzYzsKQEAg LTI5Miw3ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBzaGFkb3dfY29udGV4dF9kZXNjcmlwdG9yX3Vw ZGF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCSAqIGxpa2UgR0VOOF9DVFhfKiBj YWNoZWQgaW4gZGVzY190ZW1wbGF0ZQogCSAqLwogCWRlc2MgJj0gVTY0X01BWCA8PCAxMjsKLQlk ZXNjIHw9IGN0eC0+ZGVzY190ZW1wbGF0ZSAmICgoMVVMTCA8PCAxMikgLSAxKTsKKwlkZXNjIHw9 IGNlLT5nZW1fY29udGV4dC0+ZGVzY190ZW1wbGF0ZSAmICgoMVVMTCA8PCAxMikgLSAxKTsKIAog CWNlLT5scmNfZGVzYyA9IGRlc2M7CiB9CkBAIC0zMDAsMTIgKzI5NCwxMSBAQCBzdGF0aWMgdm9p ZCBzaGFkb3dfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAogc3RhdGljIGludCBjb3B5X3dvcmtsb2FkX3RvX3JpbmdfYnVmZmVyKHN0cnVjdCBp bnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdw dSA9IHdvcmtsb2FkLT52Z3B1OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcSA9IHdvcmtsb2Fk LT5yZXE7CiAJdm9pZCAqc2hhZG93X3JpbmdfYnVmZmVyX3ZhOwogCXUzMiAqY3M7Ci0Jc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxID0gd29ya2xvYWQtPnJlcTsKIAotCWlmIChJU19LQUJZTEFLRShy ZXEtPmk5MTUpICYmCi0JICAgIGlzX2luaGliaXRfY29udGV4dChyZXEtPmdlbV9jb250ZXh0LCBy ZXEtPmVuZ2luZS0+aWQpKQorCWlmIChJU19LQUJZTEFLRShyZXEtPmk5MTUpICYmIGlzX2luaGli aXRfY29udGV4dChyZXEtPmh3X2NvbnRleHQpKQogCQlpbnRlbF92Z3B1X3Jlc3RvcmVfaW5oaWJp dF9jb250ZXh0KHZncHUsIHJlcSk7CiAKIAkvKiBhbGxvY2F0ZSBzaGFkb3cgcmluZyBidWZmZXIg Ki8KQEAgLTM1Myw2MCArMzQ2LDU2IEBAIGludCBpbnRlbF9ndnRfc2Nhbl9hbmRfc2hhZG93X3dv cmtsb2FkKHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIAlzdHJ1Y3QgaW50 ZWxfdmdwdV9zdWJtaXNzaW9uICpzID0gJnZncHUtPnN1Ym1pc3Npb247CiAJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKnNoYWRvd19jdHggPSBzLT5zaGFkb3dfY3R4OwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHZncHUtPmd2dC0+ZGV2X3ByaXY7Ci0JaW50IHJpbmdfaWQg PSB3b3JrbG9hZC0+cmluZ19pZDsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBk ZXZfcHJpdi0+ZW5naW5lW3JpbmdfaWRdOwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbd29ya2xvYWQt PnJpbmdfaWRdOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKIAlpbnQgcmV0OwogCiAJbG9j a2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKHdv cmtsb2FkLT5zaGFkb3dlZCkKKwlpZiAod29ya2xvYWQtPnJlcSkKIAkJcmV0dXJuIDA7CiAKKwkv KiBwaW4gc2hhZG93IGNvbnRleHQgYnkgZ3Z0IGV2ZW4gdGhlIHNoYWRvdyBjb250ZXh0IHdpbGwg YmUgcGlubmVkCisJICogd2hlbiBpOTE1IGFsbG9jIHJlcXVlc3QuIFRoYXQgaXMgYmVjYXVzZSBn dnQgd2lsbCB1cGRhdGUgdGhlIGd1ZXN0CisJICogY29udGV4dCBmcm9tIHNoYWRvdyBjb250ZXh0 IHdoZW4gd29ya2xvYWQgaXMgY29tcGxldGVkLCBhbmQgYXQgdGhhdAorCSAqIG1vbWVudCwgaTkx NSBtYXkgYWxyZWFkeSB1bnBpbmVkIHRoZSBzaGFkb3cgY29udGV4dCB0byBtYWtlIHRoZQorCSAq IHNoYWRvd19jdHggcGFnZXMgaW52YWxpZC4gU28gZ3Z0IG5lZWQgdG8gcGluIGl0c2VsZi4gQWZ0 ZXIgdXBkYXRlCisJICogdGhlIGd1ZXN0IGNvbnRleHQsIGd2dCBjYW4gdW5waW4gdGhlIHNoYWRv d19jdHggc2FmZWx5LgorCSAqLworCWNlID0gaW50ZWxfY29udGV4dF9waW4oc2hhZG93X2N0eCwg ZW5naW5lKTsKKwlpZiAoSVNfRVJSKGNlKSkgeworCQlndnRfdmdwdV9lcnIoImZhaWwgdG8gcGlu IHNoYWRvdyBjb250ZXh0XG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2UpOworCX0KKwogCXNoYWRv d19jdHgtPmRlc2NfdGVtcGxhdGUgJj0gfigweDMgPDwgR0VOOF9DVFhfQUREUkVTU0lOR19NT0RF X1NISUZUKTsKIAlzaGFkb3dfY3R4LT5kZXNjX3RlbXBsYXRlIHw9IHdvcmtsb2FkLT5jdHhfZGVz Yy5hZGRyZXNzaW5nX21vZGUgPDwKIAkJCQkgICAgR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFX1NI SUZUOwogCi0JaWYgKCF0ZXN0X2FuZF9zZXRfYml0KHJpbmdfaWQsIHMtPnNoYWRvd19jdHhfZGVz Y191cGRhdGVkKSkKLQkJc2hhZG93X2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc2hhZG93X2N0 eCwKLQkJCQkJZGV2X3ByaXYtPmVuZ2luZVtyaW5nX2lkXSk7CisJaWYgKCF0ZXN0X2FuZF9zZXRf Yml0KHdvcmtsb2FkLT5yaW5nX2lkLCBzLT5zaGFkb3dfY3R4X2Rlc2NfdXBkYXRlZCkpCisJCXNo YWRvd19jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGNlKTsKIAogCXJldCA9IGludGVsX2d2dF9z Y2FuX2FuZF9zaGFkb3dfcmluZ2J1ZmZlcih3b3JrbG9hZCk7CiAJaWYgKHJldCkKLQkJZ290byBl cnJfc2NhbjsKKwkJZ290byBlcnJfdW5waW47CiAKIAlpZiAoKHdvcmtsb2FkLT5yaW5nX2lkID09 IFJDUykgJiYKIAkgICAgKHdvcmtsb2FkLT53YV9jdHguaW5kaXJlY3RfY3R4LnNpemUgIT0gMCkp IHsKIAkJcmV0ID0gaW50ZWxfZ3Z0X3NjYW5fYW5kX3NoYWRvd193YV9jdHgoJndvcmtsb2FkLT53 YV9jdHgpOwogCQlpZiAocmV0KQotCQkJZ290byBlcnJfc2NhbjsKLQl9Ci0KLQkvKiBwaW4gc2hh ZG93IGNvbnRleHQgYnkgZ3Z0IGV2ZW4gdGhlIHNoYWRvdyBjb250ZXh0IHdpbGwgYmUgcGlubmVk Ci0JICogd2hlbiBpOTE1IGFsbG9jIHJlcXVlc3QuIFRoYXQgaXMgYmVjYXVzZSBndnQgd2lsbCB1 cGRhdGUgdGhlIGd1ZXN0Ci0JICogY29udGV4dCBmcm9tIHNoYWRvdyBjb250ZXh0IHdoZW4gd29y a2xvYWQgaXMgY29tcGxldGVkLCBhbmQgYXQgdGhhdAotCSAqIG1vbWVudCwgaTkxNSBtYXkgYWxy ZWFkeSB1bnBpbmVkIHRoZSBzaGFkb3cgY29udGV4dCB0byBtYWtlIHRoZQotCSAqIHNoYWRvd19j dHggcGFnZXMgaW52YWxpZC4gU28gZ3Z0IG5lZWQgdG8gcGluIGl0c2VsZi4gQWZ0ZXIgdXBkYXRl Ci0JICogdGhlIGd1ZXN0IGNvbnRleHQsIGd2dCBjYW4gdW5waW4gdGhlIHNoYWRvd19jdHggc2Fm ZWx5LgotCSAqLwotCXJpbmcgPSBpbnRlbF9jb250ZXh0X3BpbihzaGFkb3dfY3R4LCBlbmdpbmUp OwotCWlmIChJU19FUlIocmluZykpIHsKLQkJcmV0ID0gUFRSX0VSUihyaW5nKTsKLQkJZ3Z0X3Zn cHVfZXJyKCJmYWlsIHRvIHBpbiBzaGFkb3cgY29udGV4dFxuIik7Ci0JCWdvdG8gZXJyX3NoYWRv dzsKKwkJCWdvdG8gZXJyX3NoYWRvdzsKIAl9CiAKIAlyZXQgPSBwb3B1bGF0ZV9zaGFkb3dfY29u dGV4dCh3b3JrbG9hZCk7CiAJaWYgKHJldCkKLQkJZ290byBlcnJfdW5waW47Ci0Jd29ya2xvYWQt PnNoYWRvd2VkID0gdHJ1ZTsKKwkJZ290byBlcnJfc2hhZG93OworCiAJcmV0dXJuIDA7CiAKLWVy cl91bnBpbjoKLQlpbnRlbF9jb250ZXh0X3VucGluKHNoYWRvd19jdHgsIGVuZ2luZSk7CiBlcnJf c2hhZG93OgogCXJlbGVhc2Vfc2hhZG93X3dhX2N0eCgmd29ya2xvYWQtPndhX2N0eCk7Ci1lcnJf c2NhbjoKK2Vycl91bnBpbjoKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAlyZXR1cm4gcmV0 OwogfQogCkBAIC00MTQsNyArNDAzLDYgQEAgc3RhdGljIGludCBpbnRlbF9ndnRfZ2VuZXJhdGVf cmVxdWVzdChzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCiB7CiAJaW50IHJp bmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB3b3JrbG9hZC0+dmdwdS0+Z3Z0LT5kZXZfcHJpdjsKLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW3JpbmdfaWRdOwogCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwogCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7 CiAJc3RydWN0IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ2Z3B1LT5zdWJtaXNzaW9uOwpA QCAtNDM3LDcgKzQyNSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ3Z0X2dlbmVyYXRlX3JlcXVlc3Qo c3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQogCXJldHVybiAwOwogCiBlcnJf dW5waW46Ci0JaW50ZWxfY29udGV4dF91bnBpbihzaGFkb3dfY3R4LCBlbmdpbmUpOwogCXJlbGVh c2Vfc2hhZG93X3dhX2N0eCgmd29ya2xvYWQtPndhX2N0eCk7CiAJcmV0dXJuIHJldDsKIH0KQEAg LTUxNywyMSArNTA0LDEzIEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9zaGFkb3dfYmF0Y2hfYnVmZmVy KHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIAlyZXR1cm4gcmV0OwogfQog Ci1zdGF0aWMgaW50IHVwZGF0ZV93YV9jdHhfMl9zaGFkb3dfY3R4KHN0cnVjdCBpbnRlbF9zaGFk b3dfd2FfY3R4ICp3YV9jdHgpCitzdGF0aWMgdm9pZCB1cGRhdGVfd2FfY3R4XzJfc2hhZG93X2N0 eChzdHJ1Y3QgaW50ZWxfc2hhZG93X3dhX2N0eCAqd2FfY3R4KQogewotCXN0cnVjdCBpbnRlbF92 Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCA9IGNvbnRhaW5lcl9vZih3YV9jdHgsCi0JCQkJCXN0cnVj dCBpbnRlbF92Z3B1X3dvcmtsb2FkLAotCQkJCQl3YV9jdHgpOwotCWludCByaW5nX2lkID0gd29y a2xvYWQtPnJpbmdfaWQ7Ci0Jc3RydWN0IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ3b3Jr bG9hZC0+dmdwdS0+c3VibWlzc2lvbjsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc2hhZG93 X2N0eCA9IHMtPnNoYWRvd19jdHg7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v YmogPQotCQlzaGFkb3dfY3R4LT5fX2VuZ2luZVtyaW5nX2lkXS5zdGF0ZS0+b2JqOwotCXN0cnVj dCBleGVjbGlzdF9yaW5nX2NvbnRleHQgKnNoYWRvd19yaW5nX2NvbnRleHQ7Ci0Jc3RydWN0IHBh Z2UgKnBhZ2U7Ci0KLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIExS Q19TVEFURV9QTik7Ci0Jc2hhZG93X3JpbmdfY29udGV4dCA9IGttYXBfYXRvbWljKHBhZ2UpOwor CXN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCA9CisJCWNvbnRhaW5lcl9vZih3 YV9jdHgsIHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkLCB3YV9jdHgpOworCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxID0gd29ya2xvYWQtPnJlcTsKKwlzdHJ1Y3QgZXhlY2xpc3RfcmluZ19jb250 ZXh0ICpzaGFkb3dfcmluZ19jb250ZXh0ID0KKwkJKHN0cnVjdCBleGVjbGlzdF9yaW5nX2NvbnRl eHQgKilycS0+aHdfY29udGV4dC0+bHJjX3JlZ19zdGF0ZTsKIAogCXNoYWRvd19yaW5nX2NvbnRl eHQtPmJiX3Blcl9jdHhfcHRyLnZhbCA9CiAJCShzaGFkb3dfcmluZ19jb250ZXh0LT5iYl9wZXJf Y3R4X3B0ci52YWwgJgpAQCAtNTM5LDkgKzUxOCw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3dhX2N0 eF8yX3NoYWRvd19jdHgoc3RydWN0IGludGVsX3NoYWRvd193YV9jdHggKndhX2N0eCkKIAlzaGFk b3dfcmluZ19jb250ZXh0LT5yY3NfaW5kaXJlY3RfY3R4LnZhbCA9CiAJCShzaGFkb3dfcmluZ19j b250ZXh0LT5yY3NfaW5kaXJlY3RfY3R4LnZhbCAmCiAJCSh+SU5ESVJFQ1RfQ1RYX0FERFJfTUFT SykpIHwgd2FfY3R4LT5pbmRpcmVjdF9jdHguc2hhZG93X2dtYTsKLQotCWt1bm1hcF9hdG9taWMo c2hhZG93X3JpbmdfY29udGV4dCk7Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgcHJlcGFy ZV9zaGFkb3dfd2FfY3R4KHN0cnVjdCBpbnRlbF9zaGFkb3dfd2FfY3R4ICp3YV9jdHgpCkBAIC02 NzAsMTIgKzY0Niw5IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV93b3JrbG9hZChzdHJ1Y3QgaW50ZWxf dmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCiBzdGF0aWMgaW50IGRpc3BhdGNoX3dvcmtsb2FkKHN0 cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSA9IHdvcmtsb2FkLT52Z3B1OwotCXN0cnVjdCBpbnRlbF92Z3B1X3N1Ym1pc3Npb24g KnMgPSAmdmdwdS0+c3VibWlzc2lvbjsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc2hhZG93 X2N0eCA9IHMtPnNoYWRvd19jdHg7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKIAlpbnQgcmluZ19pZCA9IHdvcmtsb2FkLT5yaW5nX2lk OwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbcmlu Z19pZF07Ci0JaW50IHJldCA9IDA7CisJaW50IHJldDsKIAogCWd2dF9kYmdfc2NoZWQoInJpbmcg aWQgJWQgcHJlcGFyZSB0byBkaXNwYXRjaCB3b3JrbG9hZCAlcFxuIiwKIAkJcmluZ19pZCwgd29y a2xvYWQpOwpAQCAtNjg3LDEwICs2NjAsNiBAQCBzdGF0aWMgaW50IGRpc3BhdGNoX3dvcmtsb2Fk KHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKIAkJZ290byBvdXQ7CiAKIAly ZXQgPSBwcmVwYXJlX3dvcmtsb2FkKHdvcmtsb2FkKTsKLQlpZiAocmV0KSB7Ci0JCWludGVsX2Nv bnRleHRfdW5waW4oc2hhZG93X2N0eCwgZW5naW5lKTsKLQkJZ290byBvdXQ7Ci0JfQogCiBvdXQ6 CiAJaWYgKHJldCkKQEAgLTc2NSwyNyArNzM0LDIzIEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfdmdw dV93b3JrbG9hZCAqcGlja19uZXh0X3dvcmtsb2FkKAogCiBzdGF0aWMgdm9pZCB1cGRhdGVfZ3Vl c3RfY29udGV4dChzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCiB7CisJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEgPSB3b3JrbG9hZC0+cmVxOwogCXN0cnVjdCBpbnRlbF92Z3B1 ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7CiAJc3RydWN0IGludGVsX2d2dCAqZ3Z0ID0gdmdwdS0+ Z3Z0OwotCXN0cnVjdCBpbnRlbF92Z3B1X3N1Ym1pc3Npb24gKnMgPSAmdmdwdS0+c3VibWlzc2lv bjsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc2hhZG93X2N0eCA9IHMtPnNoYWRvd19jdHg7 Ci0JaW50IHJpbmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqY3R4X29iaiA9Ci0JCXNoYWRvd19jdHgtPl9fZW5naW5lW3JpbmdfaWRdLnN0YXRl LT5vYmo7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBycS0+aHdfY29u dGV4dC0+c3RhdGUtPm9iajsKIAlzdHJ1Y3QgZXhlY2xpc3RfcmluZ19jb250ZXh0ICpzaGFkb3df cmluZ19jb250ZXh0OwogCXN0cnVjdCBwYWdlICpwYWdlOwogCXZvaWQgKnNyYzsKIAl1bnNpZ25l ZCBsb25nIGNvbnRleHRfZ3BhLCBjb250ZXh0X3BhZ2VfbnVtOwogCWludCBpOwogCi0JZ3Z0X2Ri Z19zY2hlZCgicmluZyBpZCAlZCB3b3JrbG9hZCBscmNhICV4XG4iLCByaW5nX2lkLAotCQkJd29y a2xvYWQtPmN0eF9kZXNjLmxyY2EpOwotCi0JY29udGV4dF9wYWdlX251bSA9IGd2dC0+ZGV2X3By aXYtPmVuZ2luZVtyaW5nX2lkXS0+Y29udGV4dF9zaXplOworCWd2dF9kYmdfc2NoZWQoInJpbmcg aWQgJWQgd29ya2xvYWQgbHJjYSAleFxuIiwgcnEtPmVuZ2luZS0+aWQsCisJCSAgICAgIHdvcmts b2FkLT5jdHhfZGVzYy5scmNhKTsKIAorCWNvbnRleHRfcGFnZV9udW0gPSBycS0+ZW5naW5lLT5j b250ZXh0X3NpemU7CiAJY29udGV4dF9wYWdlX251bSA9IGNvbnRleHRfcGFnZV9udW0gPj4gUEFH RV9TSElGVDsKIAotCWlmIChJU19CUk9BRFdFTEwoZ3Z0LT5kZXZfcHJpdikgJiYgcmluZ19pZCA9 PSBSQ1MpCisJaWYgKElTX0JST0FEV0VMTChndnQtPmRldl9wcml2KSAmJiBycS0+ZW5naW5lLT5p ZCA9PSBSQ1MpCiAJCWNvbnRleHRfcGFnZV9udW0gPSAxOTsKIAogCWkgPSAyOwpAQCAtODU4LDYg KzgyMyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQoc3RydWN0IGlu dGVsX2d2dCAqZ3Z0LCBpbnQgcmluZ19pZCkKIAkJc2NoZWR1bGVyLT5jdXJyZW50X3dvcmtsb2Fk W3JpbmdfaWRdOwogCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7CiAJ c3RydWN0IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ2Z3B1LT5zdWJtaXNzaW9uOworCXN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCWludCBldmVudDsKIAogCW11dGV4X2xvY2soJmd2dC0+ bG9jayk7CkBAIC04NjYsMTEgKzgzMiw4IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRf d29ya2xvYWQoc3RydWN0IGludGVsX2d2dCAqZ3Z0LCBpbnQgcmluZ19pZCkKIAkgKiBzd2l0Y2gg dG8gbWFrZSBzdXJlIHJlcXVlc3QgaXMgY29tcGxldGVkLgogCSAqIEZvciB0aGUgd29ya2xvYWQg dy9vIHJlcXVlc3QsIGRpcmVjdGx5IGNvbXBsZXRlIHRoZSB3b3JrbG9hZC4KIAkgKi8KLQlpZiAo d29ya2xvYWQtPnJlcSkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQot CQkJd29ya2xvYWQtPnZncHUtPmd2dC0+ZGV2X3ByaXY7Ci0JCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9Ci0JCQlkZXZfcHJpdi0+ZW5naW5lW3dvcmtsb2FkLT5yaW5nX2lkXTsKKwly cSA9IGZldGNoX2FuZF96ZXJvKCZ3b3JrbG9hZC0+cmVxKTsKKwlpZiAocnEpIHsKIAkJd2FpdF9l dmVudCh3b3JrbG9hZC0+c2hhZG93X2N0eF9zdGF0dXNfd3EsCiAJCQkgICAhYXRvbWljX3JlYWQo Jndvcmtsb2FkLT5zaGFkb3dfY3R4X2FjdGl2ZSkpOwogCkBAIC04ODYsOCArODQ5LDYgQEAgc3Rh dGljIHZvaWQgY29tcGxldGVfY3VycmVudF93b3JrbG9hZChzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQs IGludCByaW5nX2lkKQogCQkJCXdvcmtsb2FkLT5zdGF0dXMgPSAwOwogCQl9CiAKLQkJaTkxNV9y ZXF1ZXN0X3B1dChmZXRjaF9hbmRfemVybygmd29ya2xvYWQtPnJlcSkpOwotCiAJCWlmICghd29y a2xvYWQtPnN0YXR1cyAmJiAhKHZncHUtPnJlc2V0dGluZ19lbmcgJgogCQkJCQkgICBFTkdJTkVf TUFTSyhyaW5nX2lkKSkpIHsKIAkJCXVwZGF0ZV9ndWVzdF9jb250ZXh0KHdvcmtsb2FkKTsKQEAg LTg5NiwxMCArODU3LDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQo c3RydWN0IGludGVsX2d2dCAqZ3Z0LCBpbnQgcmluZ19pZCkKIAkJCQkJIElOVEVMX0dWVF9FVkVO VF9NQVgpCiAJCQkJaW50ZWxfdmdwdV90cmlnZ2VyX3ZpcnR1YWxfZXZlbnQodmdwdSwgZXZlbnQp OwogCQl9Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwogCQkv KiB1bnBpbiBzaGFkb3cgY3R4IGFzIHRoZSBzaGFkb3dfY3R4IHVwZGF0ZSBpcyBkb25lICovCi0J CWludGVsX2NvbnRleHRfdW5waW4ocy0+c2hhZG93X2N0eCwgZW5naW5lKTsKLQkJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJCW11dGV4X2xvY2soJnJxLT5pOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKwkJaW50ZWxfY29udGV4dF91bnBpbihycS0+aHdfY29udGV4 dCk7CisJCW11dGV4X3VubG9jaygmcnEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJCWk5 MTVfcmVxdWVzdF9wdXQocnEpOwogCX0KIAogCWd2dF9kYmdfc2NoZWQoInJpbmcgaWQgJWQgY29t cGxldGUgd29ya2xvYWQgJXAgc3RhdHVzICVkXG4iLApAQCAtMTI3MCw3ICsxMjM0LDYgQEAgYWxs b2Nfd29ya2xvYWQoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCiAJYXRvbWljX3NldCgmd29ya2xv YWQtPnNoYWRvd19jdHhfYWN0aXZlLCAwKTsKIAogCXdvcmtsb2FkLT5zdGF0dXMgPSAtRUlOUFJP R1JFU1M7Ci0Jd29ya2xvYWQtPnNoYWRvd2VkID0gZmFsc2U7CiAJd29ya2xvYWQtPnZncHUgPSB2 Z3B1OwogCiAJcmV0dXJuIHdvcmtsb2FkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5o CmluZGV4IDZjNjQ0NzgyMTkzZS4uMjFlZGRhYjRhOWNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3NjaGVkdWxlci5oCkBAIC04Myw3ICs4Myw2IEBAIHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2Fk IHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXE7CiAJLyogaWYgdGhpcyB3b3JrbG9hZCBoYXMg YmVlbiBkaXNwYXRjaGVkIHRvIGk5MTU/ICovCiAJYm9vbCBkaXNwYXRjaGVkOwotCWJvb2wgc2hh ZG93ZWQ7CiAJaW50IHN0YXR1czsKIAogCXN0cnVjdCBpbnRlbF92Z3B1X21tICpzaGFkb3dfbW07 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAzNGMxMjVlMmQ5MGMuLmUzM2MzODBiNDNlMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xOTUwLDYgKzE5NTAsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7CiAJCQkgKi8KIAkJCXN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpleGNs dXNpdmVfc3RyZWFtOwogCisJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqcGlubmVkX2N0eDsKIAkJ CXUzMiBzcGVjaWZpY19jdHhfaWQ7CiAKIAkJCXN0cnVjdCBocnRpbWVyIHBvbGxfY2hlY2tfdGlt ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBhMjBmOGRiNTcyOWQuLjAzODc0YjUwYWRh OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0zMTgxLDE0ICszMTgxLDE0IEBAIHZvaWQg aTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWk5MTVf cmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRl dl9wcml2LCBpZCkgewotCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCQlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2U7CiAKIAkJaTkxNV9nZW1fcmVzZXRfZW5naW5lKGVuZ2luZSwKIAkJ CQkgICAgICBlbmdpbmUtPmhhbmdjaGVjay5hY3RpdmVfcmVxdWVzdCwKIAkJCQkgICAgICBzdGFs bGVkX21hc2sgJiBFTkdJTkVfTUFTSyhpZCkpOwotCQljdHggPSBmZXRjaF9hbmRfemVybygmZW5n aW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCk7Ci0JCWlmIChjdHgpCi0JCQlpbnRlbF9jb250ZXh0 X3VucGluKGN0eCwgZW5naW5lKTsKKwkJY2UgPSBmZXRjaF9hbmRfemVybygmZW5naW5lLT5sYXN0 X3JldGlyZWRfY29udGV4dCk7CisJCWlmIChjZSkKKwkJCWludGVsX2NvbnRleHRfdW5waW4oY2Up OwogCiAJCS8qCiAJCSAqIE9zdGVuc2liaWx5LCB3ZSBhbHdheXMgd2FudCBhIGNvbnRleHQgbG9h ZGVkIGZvciBwb3dlcnNhdmluZywKQEAgLTQ4OTcsMTMgKzQ4OTcsMTMgQEAgdm9pZCBfX2k5MTVf Z2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAogc3RhdGljIHZvaWQgYXNzZXJ0X2tlcm5lbF9jb250ZXh0X2lzX2N1cnJlbnQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmtlcm5lbF9jb250ZXh0ID0gaTkxNS0+a2VybmVsX2NvbnRleHQ7CisJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmtjdHggPSBpOTE1LT5rZXJuZWxfY29udGV4dDsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlmb3JfZWFj aF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewogCQlHRU1fQlVHX09OKF9faTkxNV9nZW1fYWN0 aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KSk7Ci0JCUdFTV9CVUdfT04o ZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCAhPSBrZXJuZWxfY29udGV4dCk7CisJCUdFTV9C VUdfT04oZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dC0+Z2VtX2NvbnRleHQgIT0ga2N0eCk7 CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggOWU3 MGY0ZGZhNzAzLi5iNjliMThlZjgxMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKQEAgLTEyNywxNCArMTI3LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY29udGV4 dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJZm9yIChuID0gMDsgbiA8IEFS UkFZX1NJWkUoY3R4LT5fX2VuZ2luZSk7IG4rKykgewogCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UgPSAmY3R4LT5fX2VuZ2luZVtuXTsKIAotCQlpZiAoIWNlLT5zdGF0ZSkKLQkJCWNvbnRpbnVl OwotCi0JCVdBUk5fT04oY2UtPnBpbl9jb3VudCk7Ci0JCWlmIChjZS0+cmluZykKLQkJCWludGVs X3JpbmdfZnJlZShjZS0+cmluZyk7Ci0KLQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV91bmxl c3NfYWN0aXZlKGNlLT5zdGF0ZS0+b2JqKTsKKwkJaWYgKGNlLT5vcHMpCisJCQljZS0+b3BzLT5k ZXN0cm95KGNlKTsKIAl9CiAKIAlrZnJlZShjdHgtPm5hbWUpOwpAQCAtMjY2LDYgKzI2MCw3IEBA IF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkgICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQogewogCXN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJdW5zaWduZWQgaW50IG47CiAJaW50IHJldDsKIAog CWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKQEAgLTI4Myw2ICsyNzgs MTIgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJY3R4LT5pOTE1ID0gZGV2X3ByaXY7CiAJY3R4LT5zY2hlZC5wcmlvcml0eSA9IEk5MTVf UFJJT1JJVFlfTk9STUFMOwogCisJZm9yIChuID0gMDsgbiA8IEFSUkFZX1NJWkUoY3R4LT5fX2Vu Z2luZSk7IG4rKykgeworCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSAmY3R4LT5fX2VuZ2lu ZVtuXTsKKworCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7CisJfQorCiAJSU5JVF9SQURJWF9UUkVF KCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5o YW5kbGVzX2xpc3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5k ZXggYWNlM2IxMjljMTg5Li43NDlhNGZmNTY2ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKQEAgLTQ1LDYgKzQ1LDExIEBAIHN0cnVjdCBpbnRlbF9yaW5nOwogCiAj ZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAogCitzdHJ1Y3QgaW50ZWxfY29udGV4dF9v cHMgeworCXZvaWQgKCp1bnBpbikoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKKwl2b2lkICgq ZGVzdHJveSkoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKK307CisKIC8qKgogICogc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgLSBjbGllbnQgc3RhdGUKICAqCkBAIC0xNDQsMTEgKzE0OSwxNCBA QCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAKIAkvKiogZW5naW5lOiBwZXItZW5naW5lIGxv Z2ljYWwgSFcgc3RhdGUgKi8KIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCB7CisJCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsKIAkJc3RydWN0IGk5MTVfdm1hICpzdGF0ZTsKIAkJ c3RydWN0IGludGVsX3JpbmcgKnJpbmc7CiAJCXUzMiAqbHJjX3JlZ19zdGF0ZTsKIAkJdTY0IGxy Y19kZXNjOwogCQlpbnQgcGluX2NvdW50OworCisJCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0 X29wcyAqb3BzOwogCX0gX19lbmdpbmVbSTkxNV9OVU1fRU5HSU5FU107CiAKIAkvKiogcmluZ19z aXplOiBzaXplIGZvciBhbGxvY2F0aW5nIHRoZSBwZXItZW5naW5lIHJpbmcgYnVmZmVyICovCkBA IC0yNjMsMjUgKzI3MSwyMiBAQCB0b19pbnRlbF9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsCiAJcmV0dXJuICZjdHgtPl9fZW5naW5lW2VuZ2luZS0+aWRdOwogfQogCi1zdGF0 aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9yaW5nICoKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVs X2NvbnRleHQgKgogaW50ZWxfY29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXJldHVybiBlbmdpbmUtPmNv bnRleHRfcGluKGVuZ2luZSwgY3R4KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIF9faW50ZWxf Y29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCQkgICAgICAgY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIGlubGluZSB2b2lkIF9f aW50ZWxfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewotCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwotCiAJR0VN X0JVR19PTighY2UtPnBpbl9jb3VudCk7CiAJY2UtPnBpbl9jb3VudCsrOwogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF91bnBpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAotCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up CiB7Ci0JZW5naW5lLT5jb250ZXh0X3VucGluKGVuZ2luZSwgY3R4KTsKKwlHRU1fQlVHX09OKCFj ZS0+b3BzKTsKKwljZS0+b3BzLT51bnBpbihjZSk7CiB9CiAKIC8qIGk5MTVfZ2VtX2NvbnRleHQu YyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggN2NjN2QzYmM3MzFi Li4xNDU4MjNmMGI0OGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAt MTQ4NSw4ICsxNDg1LDcgQEAgc3RhdGljIHZvaWQgZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgaTkx NV9ncHVfc3RhdGUgKmVycm9yKQogCiAJCQllZS0+Y3R4ID0KIAkJCQlpOTE1X2Vycm9yX29iamVj dF9jcmVhdGUoaTkxNSwKLQkJCQkJCQkgdG9faW50ZWxfY29udGV4dChjdHgsCi0JCQkJCQkJCQkg IGVuZ2luZSktPnN0YXRlKTsKKwkJCQkJCQkgcmVxdWVzdC0+aHdfY29udGV4dC0+c3RhdGUpOwog CiAJCQllcnJvci0+c2ltdWxhdGVkIHw9CiAJCQkJaTkxNV9nZW1fY29udGV4dF9ub19lcnJvcl9j YXB0dXJlKGN0eCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDAxOWJkMmQwNzNhZC4u NGYwZWI4NGIzYzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMTIyMSw3ICsxMjIx LDcgQEAgc3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtKQogCQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBzdHJl YW0tPmN0eC0+aHdfaWQ7CiAJfSBlbHNlIHsKIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwotCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsK KwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwogCQlpbnQgcmV0OwogCiAJCXJldCA9IGk5MTVf bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZfcHJpdi0+ZHJtKTsKQEAgLTEyMzQsMTkgKzEy MzQsMTkgQEAgc3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogCQkgKgogCQkgKiBOQjogaW1wbGllZCBSQ1MgZW5naW5lLi4uCiAJ CSAqLwotCQlyaW5nID0gaW50ZWxfY29udGV4dF9waW4oc3RyZWFtLT5jdHgsIGVuZ2luZSk7CisJ CWNlID0gaW50ZWxfY29udGV4dF9waW4oc3RyZWFtLT5jdHgsIGVuZ2luZSk7CiAJCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAoSVNfRVJSKHJpbmcpKQot CQkJcmV0dXJuIFBUUl9FUlIocmluZyk7CisJCWlmIChJU19FUlIoY2UpKQorCQkJcmV0dXJuIFBU Ul9FUlIoY2UpOwogCisJCWRldl9wcml2LT5wZXJmLm9hLnBpbm5lZF9jdHggPSBjZTsKIAogCQkv KgogCQkgKiBFeHBsaWNpdGx5IHRyYWNrIHRoZSBJRCAoaW5zdGVhZCBvZiBjYWxsaW5nCiAJCSAq IGk5MTVfZ2d0dF9vZmZzZXQoKSBvbiB0aGUgZmx5KSBjb25zaWRlcmluZyB0aGUgZGlmZmVyZW5j ZQogCQkgKiB3aXRoIGdlbjgrIGFuZCBleGVjbGlzdHMKIAkJICovCi0JCWRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCA9Ci0JCQlpOTE1X2dndHRfb2Zmc2V0KHRvX2ludGVsX2NvbnRl eHQoc3RyZWFtLT5jdHgsIGVuZ2luZSktPnN0YXRlKTsKKwkJZGV2X3ByaXYtPnBlcmYub2Euc3Bl Y2lmaWNfY3R4X2lkID0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpOwogCX0KIAogCXJldHVy biAwOwpAQCAtMTI2MiwxNyArMTI2MiwxNCBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4 X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiBzdGF0aWMgdm9pZCBvYV9wdXRf cmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlOwogCi0JaWYgKEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2 X3ByaXYpKSB7Ci0JCWRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURf Q1RYX0lEOwotCX0gZWxzZSB7Ci0JCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGRl dl9wcml2LT5lbmdpbmVbUkNTXTsKKwlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQg PSBJTlZBTElEX0NUWF9JRDsKIAorCWNlID0gZmV0Y2hfYW5kX3plcm8oJmRldl9wcml2LT5wZXJm Lm9hLnBpbm5lZF9jdHgpOworCWlmIChjZSkgewogCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJt LnN0cnVjdF9tdXRleCk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0g SU5WQUxJRF9DVFhfSUQ7Ci0JCWludGVsX2NvbnRleHRfdW5waW4oc3RyZWFtLT5jdHgsIGVuZ2lu ZSk7Ci0KKwkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJCW11dGV4X3VubG9jaygmZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCX0KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMKaW5kZXggZmU4ODEwYTZhMzM5Li5mYzQ5OWJjYmQxMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCkBAIC0zODMsOCArMzgzLDggQEAgc3RhdGljIHZvaWQgX19yZXRpcmVfZW5n aW5lX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCSAqIHRoZSBzdWJz ZXF1ZW50IHJlcXVlc3QuCiAJICovCiAJaWYgKGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQp Ci0JCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCwgZW5n aW5lKTsKLQllbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0ID0gcnEtPmdlbV9jb250ZXh0Owor CQlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpOworCWVu Z2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQgPSBycS0+aHdfY29udGV4dDsKIH0KIAogc3RhdGlj IHZvaWQgX19yZXRpcmVfZW5naW5lX3VwdG8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LApAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVxdWVzdF9yZXRpcmUoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAogCS8qIFJldGlyZW1lbnQgZGVjYXlzIHRoZSBi YW4gc2NvcmUgYXMgaXQgaXMgYSBzaWduIG9mIGN0eCBwcm9ncmVzcyAqLwogCWF0b21pY19kZWNf aWZfcG9zaXRpdmUoJnJlcXVlc3QtPmdlbV9jb250ZXh0LT5iYW5fc2NvcmUpOwotCWludGVsX2Nv bnRleHRfdW5waW4ocmVxdWVzdC0+Z2VtX2NvbnRleHQsIHJlcXVlc3QtPmVuZ2luZSk7CisJaW50 ZWxfY29udGV4dF91bnBpbihyZXF1ZXN0LT5od19jb250ZXh0KTsKIAogCV9fcmV0aXJlX2VuZ2lu ZV91cHRvKHJlcXVlc3QtPmVuZ2luZSwgcmVxdWVzdCk7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBp OTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZW5naW5lLT5pOTE1OwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwotCXN0cnVjdCBpbnRl bF9yaW5nICpyaW5nOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKIAlpbnQgcmV0OwogCiAJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC02ODEsMjIg KzY4MSwyMSBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCSAqIEdHVFQgc3BhY2UsIHNvIGRv IHRoaXMgZmlyc3QgYmVmb3JlIHdlIHJlc2VydmUgYSBzZXFubyBmb3IKIAkgKiBvdXJzZWx2ZXMu CiAJICovCi0JcmluZyA9IGludGVsX2NvbnRleHRfcGluKGN0eCwgZW5naW5lKTsKLQlpZiAoSVNf RVJSKHJpbmcpKQotCQlyZXR1cm4gRVJSX0NBU1QocmluZyk7Ci0JR0VNX0JVR19PTighcmluZyk7 CisJY2UgPSBpbnRlbF9jb250ZXh0X3BpbihjdHgsIGVuZ2luZSk7CisJaWYgKElTX0VSUihjZSkp CisJCXJldHVybiBFUlJfQ0FTVChjZSk7CiAKIAlyZXQgPSByZXNlcnZlX2d0KGk5MTUpOwogCWlm IChyZXQpCiAJCWdvdG8gZXJyX3VucGluOwogCi0JcmV0ID0gaW50ZWxfcmluZ193YWl0X2Zvcl9z cGFjZShyaW5nLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFVRVNUKTsKKwlyZXQgPSBpbnRlbF9yaW5n X3dhaXRfZm9yX3NwYWNlKGNlLT5yaW5nLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFVRVNUKTsKIAlp ZiAocmV0KQogCQlnb3RvIGVycl91bnJlc2VydmU7CiAKIAkvKiBNb3ZlIG91ciBvbGRlc3QgcmVx dWVzdCB0byB0aGUgc2xhYi1jYWNoZSAoaWYgbm90IGluIHVzZSEpICovCi0JcnEgPSBsaXN0X2Zp cnN0X2VudHJ5KCZyaW5nLT5yZXF1ZXN0X2xpc3QsIHR5cGVvZigqcnEpLCByaW5nX2xpbmspOwot CWlmICghbGlzdF9pc19sYXN0KCZycS0+cmluZ19saW5rLCAmcmluZy0+cmVxdWVzdF9saXN0KSAm JgorCXJxID0gbGlzdF9maXJzdF9lbnRyeSgmY2UtPnJpbmctPnJlcXVlc3RfbGlzdCwgdHlwZW9m KCpycSksIHJpbmdfbGluayk7CisJaWYgKCFsaXN0X2lzX2xhc3QoJnJxLT5yaW5nX2xpbmssICZj ZS0+cmluZy0+cmVxdWVzdF9saXN0KSAmJgogCSAgICBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJx KSkKIAkJaTkxNV9yZXF1ZXN0X3JldGlyZShycSk7CiAKQEAgLTc2MSw4ICs3NjAsOSBAQCBpOTE1 X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQogCXJxLT5pOTE1ID0gaTkxNTsKIAlycS0+ZW5naW5lID0gZW5n aW5lOwogCXJxLT5nZW1fY29udGV4dCA9IGN0eDsKLQlycS0+cmluZyA9IHJpbmc7Ci0JcnEtPnRp bWVsaW5lID0gcmluZy0+dGltZWxpbmU7CisJcnEtPmh3X2NvbnRleHQgPSBjZTsKKwlycS0+cmlu ZyA9IGNlLT5yaW5nOworCXJxLT50aW1lbGluZSA9IGNlLT5yaW5nLT50aW1lbGluZTsKIAlHRU1f QlVHX09OKHJxLT50aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7CiAKIAlzcGluX2xvY2tf aW5pdCgmcnEtPmxvY2spOwpAQCAtODE0LDE0ICs4MTQsMTQgQEAgaTkxNV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCkKIAkJZ290byBlcnJfdW53aW5kOwogCiAJLyogS2VlcCBhIHNlY29uZCBwaW4gZm9yIHRo ZSBkdWFsIHJldGlyZW1lbnQgYWxvbmcgZW5naW5lIGFuZCByaW5nICovCi0JX19pbnRlbF9jb250 ZXh0X3BpbihycS0+Z2VtX2NvbnRleHQsIGVuZ2luZSk7CisJX19pbnRlbF9jb250ZXh0X3Bpbihj ZSk7CiAKIAkvKiBDaGVjayB0aGF0IHdlIGRpZG4ndCBpbnRlcnJ1cHQgb3Vyc2VsdmVzIHdpdGgg YSBuZXcgcmVxdWVzdCAqLwogCUdFTV9CVUdfT04ocnEtPnRpbWVsaW5lLT5zZXFubyAhPSBycS0+ ZmVuY2Uuc2Vxbm8pOwogCXJldHVybiBycTsKIAogZXJyX3Vud2luZDoKLQlycS0+cmluZy0+ZW1p dCA9IHJxLT5oZWFkOworCWNlLT5yaW5nLT5lbWl0ID0gcnEtPmhlYWQ7CiAKIAkvKiBNYWtlIHN1 cmUgd2UgZGlkbid0IGFkZCBvdXJzZWx2ZXMgdG8gZXh0ZXJuYWwgc3RhdGUgYmVmb3JlIGZyZWVp bmcgKi8KIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+YWN0aXZlX2xpc3QpKTsKQEAgLTgz Miw3ICs4MzIsNyBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogZXJyX3VucmVzZXJ2ZToKIAl1 bnJlc2VydmVfZ3QoaTkxNSk7CiBlcnJfdW5waW46Ci0JaW50ZWxfY29udGV4dF91bnBpbihjdHgs IGVuZ2luZSk7CisJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJcmV0dXJuIEVSUl9QVFIocmV0 KTsKIH0KIApAQCAtMTAxOCw4ICsxMDE4LDggQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X29iamVjdChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0bywKIHZvaWQgX19pOTE1X3JlcXVlc3RfYWRkKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogewogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CiAJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5l ID0gcmVxdWVzdC0+dGltZWxpbmU7CisJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nOwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXY7CiAJdTMyICpjczsKIAlpbnQgZXJy OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCBkZGRlY2Q5ZmZkMGMuLjFiYmJi N2E5ZmEwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKQEAgLTk1LDYgKzk1LDcg QEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7CiAJICovCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmdlbV9jb250ZXh0OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqaHdfY29udGV4dDsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKIAlz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7CiAJc3RydWN0IGludGVsX3NpZ25hbF9ub2Rl IHNpZ25hbGluZzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggOWU2 MThhYWI2NTY4Li4yNmY5ZjhhYWI5NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV9jcy5jCkBAIC02NDUsNiArNjQ1LDEyIEBAIHN0YXRpYyBpbnQgaW5pdF9waHlzX3N0YXR1c19w YWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gMDsKIH0KIAorc3Rh dGljIHZvaWQgX19pbnRlbF9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaW50ZWxfY29u dGV4dF91bnBpbih0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKSk7Cit9CisKIC8qKgogICog aW50ZWxfZW5naW5lc19pbml0X2NvbW1vbiAtIGluaXRpYWxpemUgY2VuZ2luZSBzdGF0ZSB3aGlj aCBtaWdodCByZXF1aXJlIGh3IGFjY2VzcwogICogQGVuZ2luZTogRW5naW5lIHRvIGluaXRpYWxp emUuCkBAIC02NTgsNyArNjY0LDggQEAgc3RhdGljIGludCBpbml0X3BoeXNfc3RhdHVzX3BhZ2Uo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogICovCiBpbnQgaW50ZWxfZW5naW5lX2lu aXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+ aTkxNTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CiAJaW50IHJldDsKIAogCWVuZ2luZS0+ c2V0X2RlZmF1bHRfc3VibWlzc2lvbihlbmdpbmUpOwpAQCAtNjcwLDE4ICs2NzcsMTggQEAgaW50 IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAJICogYmUgYXZhaWxhYmxlLiBUbyBhdm9pZCB0aGlzIHdlIGFsd2F5cyBwaW4gdGhlIGRlZmF1 bHQKIAkgKiBjb250ZXh0LgogCSAqLwotCXJpbmcgPSBpbnRlbF9jb250ZXh0X3BpbihlbmdpbmUt Pmk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpOwotCWlmIChJU19FUlIocmluZykpCi0JCXJl dHVybiBQVFJfRVJSKHJpbmcpOworCWNlID0gaW50ZWxfY29udGV4dF9waW4oaTkxNS0+a2VybmVs X2NvbnRleHQsIGVuZ2luZSk7CisJaWYgKElTX0VSUihjZSkpCisJCXJldHVybiBQVFJfRVJSKGNl KTsKIAogCS8qCiAJICogU2ltaWxhcmx5IHRoZSBwcmVlbXB0IGNvbnRleHQgbXVzdCBhbHdheXMg YmUgYXZhaWxhYmxlIHNvIHRoYXQKIAkgKiB3ZSBjYW4gaW50ZXJydXB0IHRoZSBlbmdpbmUgYXQg YW55IHRpbWUuCiAJICovCi0JaWYgKGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250ZXh0KSB7Ci0J CXJpbmcgPSBpbnRlbF9jb250ZXh0X3BpbihlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCwg ZW5naW5lKTsKLQkJaWYgKElTX0VSUihyaW5nKSkgewotCQkJcmV0ID0gUFRSX0VSUihyaW5nKTsK KwlpZiAoaTkxNS0+cHJlZW1wdF9jb250ZXh0KSB7CisJCWNlID0gaW50ZWxfY29udGV4dF9waW4o aTkxNS0+cHJlZW1wdF9jb250ZXh0LCBlbmdpbmUpOworCQlpZiAoSVNfRVJSKGNlKSkgeworCQkJ cmV0ID0gUFRSX0VSUihjZSk7CiAJCQlnb3RvIGVycl91bnBpbl9rZXJuZWw7CiAJCX0KIAl9CkBA IC02OTAsNyArNjk3LDcgQEAgaW50IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfdW5waW5fcHJlZW1w dDsKIAotCWlmIChIV1NfTkVFRFNfUEhZU0lDQUwoZW5naW5lLT5pOTE1KSkKKwlpZiAoSFdTX05F RURTX1BIWVNJQ0FMKGk5MTUpKQogCQlyZXQgPSBpbml0X3BoeXNfc3RhdHVzX3BhZ2UoZW5naW5l KTsKIAllbHNlCiAJCXJldCA9IGluaXRfc3RhdHVzX3BhZ2UoZW5naW5lKTsKQEAgLTcwMiwxMCAr NzA5LDExIEBAIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogZXJyX2JyZWFkY3J1bWJzOgogCWludGVsX2VuZ2luZV9maW5pX2JyZWFk Y3J1bWJzKGVuZ2luZSk7CiBlcnJfdW5waW5fcHJlZW1wdDoKLQlpZiAoZW5naW5lLT5pOTE1LT5w cmVlbXB0X2NvbnRleHQpCi0JCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5pOTE1LT5wcmVl bXB0X2NvbnRleHQsIGVuZ2luZSk7CisJaWYgKGk5MTUtPnByZWVtcHRfY29udGV4dCkKKwkJX19p bnRlbF9jb250ZXh0X3VucGluKGk5MTUtPnByZWVtcHRfY29udGV4dCwgZW5naW5lKTsKKwogZXJy X3VucGluX2tlcm5lbDoKLQlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+aTkxNS0+a2VybmVs X2NvbnRleHQsIGVuZ2luZSk7CisJX19pbnRlbF9jb250ZXh0X3VucGluKGk5MTUtPmtlcm5lbF9j b250ZXh0LCBlbmdpbmUpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTcxOCw2ICs3MjYsOCBAQCBp bnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKICAqLwogdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5n aW5lLT5pOTE1OworCiAJaW50ZWxfZW5naW5lX2NsZWFudXBfc2NyYXRjaChlbmdpbmUpOwogCiAJ aWYgKEhXU19ORUVEU19QSFlTSUNBTChlbmdpbmUtPmk5MTUpKQpAQCAtNzMyLDkgKzc0Miw5IEBA IHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAlpZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKQogCQlpOTE1X2dlbV9vYmplY3Rf cHV0KGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7CiAKLQlpZiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0 X2NvbnRleHQpCi0JCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5pOTE1LT5wcmVlbXB0X2Nv bnRleHQsIGVuZ2luZSk7Ci0JaW50ZWxfY29udGV4dF91bnBpbihlbmdpbmUtPmk5MTUtPmtlcm5l bF9jb250ZXh0LCBlbmdpbmUpOworCWlmIChpOTE1LT5wcmVlbXB0X2NvbnRleHQpCisJCV9faW50 ZWxfY29udGV4dF91bnBpbihpOTE1LT5wcmVlbXB0X2NvbnRleHQsIGVuZ2luZSk7CisJX19pbnRl bF9jb250ZXh0X3VucGluKGk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpOwogCiAJaTkxNV90 aW1lbGluZV9maW5pKCZlbmdpbmUtPnRpbWVsaW5lKTsKIH0KQEAgLTEwMDcsOCArMTAxNyw4IEBA IGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAgKi8KIGJvb2wgaW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChjb25zdCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JY29uc3Qgc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKiBjb25zdCBrZXJuZWxfY29udGV4dCA9Ci0JCWVuZ2luZS0+aTkxNS0+a2VybmVs X2NvbnRleHQ7CisJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmtlcm5lbF9jb250ZXh0ID0K KwkJdG9faW50ZWxfY29udGV4dChlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUp OwogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5n aW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTEwMjAsNyArMTAzMCw3IEBAIGJvb2wg aW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJICovCiAJcnEgPSBfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZlbmdpbmUt PnRpbWVsaW5lLmxhc3RfcmVxdWVzdCk7CiAJaWYgKHJxKQotCQlyZXR1cm4gcnEtPmdlbV9jb250 ZXh0ID09IGtlcm5lbF9jb250ZXh0OworCQlyZXR1cm4gcnEtPmh3X2NvbnRleHQgPT0ga2VybmVs X2NvbnRleHQ7CiAJZWxzZQogCQlyZXR1cm4gZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCA9 PSBrZXJuZWxfY29udGV4dDsKIH0KQEAgLTExMDcsMTYgKzExMTcsMTYgQEAgdm9pZCBpbnRlbF9l bmdpbmVzX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKICAqLwogdm9pZCBp bnRlbF9lbmdpbmVfbG9zdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZTsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CiAKIAllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dCA9IE5VTEw7CiAJZW5naW5l LT5sZWdhY3lfYWN0aXZlX3BwZ3R0ID0gTlVMTDsKIAotCWN0eCA9IGZldGNoX2FuZF96ZXJvKCZl bmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKLQlpZiAoY3R4KQotCQlpbnRlbF9jb250ZXh0 X3VucGluKGN0eCwgZW5naW5lKTsKKwljZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3Rf cmV0aXJlZF9jb250ZXh0KTsKKwlpZiAoY2UpCisJCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwog fQogCiBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKaW5kZXggYTQzMmExOTNmM2M0Li4xMzMzNjdhMTc4NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNTEzLDkgKzUxMyw3IEBAIHN0YXRpYyB2 b2lkIGd1Y19hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQogewogCXN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPmV4 ZWNidWZfY2xpZW50OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdp bmU7Ci0JdTMyIGN0eF9kZXNjID0KLQkJbG93ZXJfMzJfYml0cyhpbnRlbF9scl9jb250ZXh0X2Rl c2NyaXB0b3IocnEtPmdlbV9jb250ZXh0LAotCQkJCQkJCSAgZW5naW5lKSk7CisJdTMyIGN0eF9k ZXNjID0gbG93ZXJfMzJfYml0cyhycS0+aHdfY29udGV4dC0+bHJjX2Rlc2MpOwogCXUzMiByaW5n X3RhaWwgPSBpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCkgLyBzaXplb2Yo dTY0KTsKIAogCXNwaW5fbG9jaygmY2xpZW50LT53cV9sb2NrKTsKQEAgLTU1Myw4ICs1NTEsOCBA QCBzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKIAkJCQkJICAgICBwcmVlbXB0X3dvcmtbZW5naW5lLT5pZF0pOwogCXN0cnVjdCBpbnRl bF9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPnByZWVtcHRfY2xpZW50OwogCXN0cnVjdCBndWNf c3RhZ2VfZGVzYyAqc3RhZ2VfZGVzYyA9IF9fZ2V0X3N0YWdlX2Rlc2MoY2xpZW50KTsKLQl1MzIg Y3R4X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihjbGll bnQtPm93bmVyLAotCQkJCQkJCQkgZW5naW5lKSk7CisJdTMyIGN0eF9kZXNjID0gbG93ZXJfMzJf Yml0cyh0b19pbnRlbF9jb250ZXh0KGNsaWVudC0+b3duZXIsCisJCQkJCQkgICAgICBlbmdpbmUp LT5scmNfZGVzYyk7CiAJdTMyIGRhdGFbN107CiAKIAkvKgpAQCAtNzI2LDcgKzcyNCw3IEBAIHN0 YXRpYyBib29sIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuOwogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShycSwgcm4sICZwLT5yZXF1ZXN0cywgc2NoZWQubGluaykgewotCQkJaWYgKGxhc3QgJiYg cnEtPmdlbV9jb250ZXh0ICE9IGxhc3QtPmdlbV9jb250ZXh0KSB7CisJCQlpZiAobGFzdCAmJiBy cS0+aHdfY29udGV4dCAhPSBsYXN0LT5od19jb250ZXh0KSB7CiAJCQkJaWYgKHBvcnQgPT0gbGFz dF9wb3J0KSB7CiAJCQkJCV9fbGlzdF9kZWxfbWFueSgmcC0+cmVxdWVzdHMsCiAJCQkJCQkJJnJx LT5zY2hlZC5saW5rKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggODEzZjExNGE3Yzkz Li44OWEzYTMxNzIxZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xNjQsNyArMTY0 LDggQEAKICNkZWZpbmUgV0FfVEFJTF9CWVRFUyAoc2l6ZW9mKHUzMikgKiBXQV9UQUlMX0RXT1JE UykKIAogc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAotCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKKwkJCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkJ ICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5p dF9yZWdfc3RhdGUodTMyICpyZWdfc3RhdGUsCiAJCQkJICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAogCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLApAQCAt MTg5LDEyICsxOTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo bGFzdCkpOwogfQogCi0vKioKLSAqIGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUo KSAtIGNhbGN1bGF0ZSAmIGNhY2hlIHRoZSBkZXNjcmlwdG9yCi0gKiAJCQkJCSAgZGVzY3JpcHRv ciBmb3IgYSBwaW5uZWQgY29udGV4dAotICogQGN0eDogQ29udGV4dCB0byB3b3JrIG9uCi0gKiBA ZW5naW5lOiBFbmdpbmUgdGhlIGRlc2NyaXB0b3Igd2lsbCBiZSB1c2VkIHdpdGgKLSAqCisvKgog ICogVGhlIGNvbnRleHQgZGVzY3JpcHRvciBlbmNvZGVzIHZhcmlvdXMgYXR0cmlidXRlcyBvZiBh IGNvbnRleHQsCiAgKiBpbmNsdWRpbmcgaXRzIEdUVCBhZGRyZXNzIGFuZCBzb21lIGZsYWdzLiBC ZWNhdXNlIGl0J3MgZmFpcmx5CiAgKiBleHBlbnNpdmUgdG8gY2FsY3VsYXRlLCB3ZSdsbCBqdXN0 IGRvIGl0IG9uY2UgYW5kIGNhY2hlIHRoZSByZXN1bHQsCkBAIC0yMjIsOSArMjE4LDkgQEAgc3Rh dGljIGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAgKi8KIHN0YXRpYyB2b2lkCiBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Jf dXBkYXRlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCi0JCQkJICAgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQorCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKKwkJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0Jc3RydWN0IGludGVsX2Nv bnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CiAJdTY0IGRlc2M7CiAK IAlCVUlMRF9CVUdfT04oTUFYX0NPTlRFWFRfSFdfSUQgPiAoQklUKEdFTjhfQ1RYX0lEX1dJRFRI KSkpOwpAQCAtNDE4LDggKzQxNCw3IEBAIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgdTMyICpyZWdfc3RhdGUpCiAKIHN0YXRpYyB1NjQg ZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewotCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9Ci0JCXRvX2ludGVsX2NvbnRleHQocnEtPmdlbV9jb250 ZXh0LCBycS0+ZW5naW5lKTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+aHdfY29u dGV4dDsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQogCQlycS0+Z2VtX2NvbnRleHQt PnBwZ3R0ID86IHJxLT5pOTE1LT5tbS5hbGlhc2luZ19wcGd0dDsKIAl1MzIgKnJlZ19zdGF0ZSA9 IGNlLT5scmNfcmVnX3N0YXRlOwpAQCAtNDk2LDE0ICs0OTEsMTQgQEAgc3RhdGljIHZvaWQgZXhl Y2xpc3RzX3N1Ym1pdF9wb3J0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZXhl Y2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwog fQogCi1zdGF0aWMgYm9vbCBjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjb25zdCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQorc3RhdGljIGJvb2wgY3R4X3NpbmdsZV9wb3J0X3N1Ym1p c3Npb24oY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewogCXJldHVybiAoSVNfRU5B QkxFRChDT05GSUdfRFJNX0k5MTVfR1ZUKSAmJgotCQlpOTE1X2dlbV9jb250ZXh0X2ZvcmNlX3Np bmdsZV9zdWJtaXNzaW9uKGN0eCkpOworCQlpOTE1X2dlbV9jb250ZXh0X2ZvcmNlX3NpbmdsZV9z dWJtaXNzaW9uKGNlLT5nZW1fY29udGV4dCkpOwogfQogCi1zdGF0aWMgYm9vbCBjYW5fbWVyZ2Vf Y3R4KGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpwcmV2LAotCQkJICBjb25zdCBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqbmV4dCkKK3N0YXRpYyBib29sIGNhbl9tZXJnZV9jdHgoY29u c3Qgc3RydWN0IGludGVsX2NvbnRleHQgKnByZXYsCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j b250ZXh0ICpuZXh0KQogewogCWlmIChwcmV2ICE9IG5leHQpCiAJCXJldHVybiBmYWxzZTsKQEAg LTY4MCw4ICs2NzUsOCBAQCBzdGF0aWMgYm9vbCBfX2V4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCSAqIHNlY29uZCByZXF1ZXN0LCBhbmQgc28gd2Ug bmV2ZXIgbmVlZCB0byB0ZWxsIHRoZQogCQkJICogaGFyZHdhcmUgYWJvdXQgdGhlIGZpcnN0Lgog CQkJICovCi0JCQlpZiAobGFzdCAmJiAhY2FuX21lcmdlX2N0eChycS0+Z2VtX2NvbnRleHQsCi0J CQkJCQkgICBsYXN0LT5nZW1fY29udGV4dCkpIHsKKwkJCWlmIChsYXN0ICYmCisJCQkgICAgIWNh bl9tZXJnZV9jdHgocnEtPmh3X2NvbnRleHQsIGxhc3QtPmh3X2NvbnRleHQpKSB7CiAJCQkJLyoK IAkJCQkgKiBJZiB3ZSBhcmUgb24gdGhlIHNlY29uZCBwb3J0IGFuZCBjYW5ub3QKIAkJCQkgKiBj b21iaW5lIHRoaXMgcmVxdWVzdCB3aXRoIHRoZSBsYXN0LCB0aGVuIHdlCkBAIC03MDAsMTQgKzY5 NSwxNCBAQCBzdGF0aWMgYm9vbCBfX2V4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkJCQkgKiB0aGUgc2FtZSBjb250ZXh0IChldmVuIHRob3VnaCBhIGRp ZmZlcmVudAogCQkJCSAqIHJlcXVlc3QpIHRvIHRoZSBzZWNvbmQgcG9ydC4KIAkJCQkgKi8KLQkJ CQlpZiAoY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24obGFzdC0+Z2VtX2NvbnRleHQpIHx8Ci0J CQkJICAgIGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKHJxLT5nZW1fY29udGV4dCkpIHsKKwkJ CQlpZiAoY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24obGFzdC0+aHdfY29udGV4dCkgfHwKKwkJ CQkgICAgY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24ocnEtPmh3X2NvbnRleHQpKSB7CiAJCQkJ CV9fbGlzdF9kZWxfbWFueSgmcC0+cmVxdWVzdHMsCiAJCQkJCQkJJnJxLT5zY2hlZC5saW5rKTsK IAkJCQkJZ290byBkb25lOwogCQkJCX0KIAotCQkJCUdFTV9CVUdfT04obGFzdC0+Z2VtX2NvbnRl eHQgPT0gcnEtPmdlbV9jb250ZXh0KTsKKwkJCQlHRU1fQlVHX09OKGxhc3QtPmh3X2NvbnRleHQg PT0gcnEtPmh3X2NvbnRleHQpOwogCiAJCQkJaWYgKHN1Ym1pdCkKIAkJCQkJcG9ydF9hc3NpZ24o cG9ydCwgbGFzdCk7CkBAIC0xMzM4LDYgKzEzMzMsMzcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCiAJc3Bpbl91bmxvY2tfaXJx KCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29u dGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlHRU1fQlVHX09OKCFj ZS0+c3RhdGUpOworCUdFTV9CVUdfT04oY2UtPnBpbl9jb3VudCk7CisKKwlpbnRlbF9yaW5nX2Zy ZWUoY2UtPnJpbmcpOworCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5sZXNzX2FjdGl2ZShj ZS0+c3RhdGUtPm9iaik7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX2NvbnRleHRfdW5w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCWludGVsX3JpbmdfdW5waW4oY2UtPnJp bmcpOworCisJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsKKwlpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKKwlpOTE1X3ZtYV91bnBpbihjZS0+c3RhdGUpOwor CisJaTkxNV9nZW1fY29udGV4dF9wdXQoY2UtPmdlbV9jb250ZXh0KTsKK30KKworc3RhdGljIHZv aWQgZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorewor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5nZW1fY29udGV4dC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJR0VNX0JVR19PTihjZS0+cGluX2NvdW50ID09IDApOworCisJaWYgKC0tY2UtPnBp bl9jb3VudCkKKwkJcmV0dXJuOworCisJX19leGVjbGlzdHNfY29udGV4dF91bnBpbihjZSk7Cit9 CisKIHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAl1bnNpZ25lZCBpbnQgZmxhZ3M7CkBAIC0xMzYx LDIxICsxMzg3LDE1IEBAIHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAlyZXR1cm4gaTkxNV92bWFfcGlu KHZtYSwgMCwgR0VOOF9MUl9DT05URVhUX0FMSUdOLCBmbGFncyk7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgaW50ZWxfcmluZyAqCi1leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAotCQkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQorc3Rh dGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKK19fZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCisJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0Jc3RydWN0IGludGVsX2NvbnRl eHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CiAJdm9pZCAqdmFkZHI7CiAJ aW50IHJldDsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Ci0KLQlpZiAobGlrZWx5KGNlLT5waW5fY291bnQrKykpCi0JCWdvdG8gb3V0OwotCUdF TV9CVUdfT04oIWNlLT5waW5fY291bnQpOyAvKiBubyBvdmVyZmxvdyBwbGVhc2UhICovCi0KLQly ZXQgPSBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhjdHgsIGVuZ2luZSk7CisJcmV0 ID0gZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2MoY3R4LCBlbmdpbmUsIGNlKTsKIAlp ZiAocmV0KQogCQlnb3RvIGVycjsKIAlHRU1fQlVHX09OKCFjZS0+c3RhdGUpOwpAQCAtMTM5NCw3 ICsxNDE0LDcgQEAgZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKIAlpZiAocmV0KQogCQlnb3RvIHVucGluX21hcDsKIAotCWludGVsX2xyX2NvbnRl eHRfZGVzY3JpcHRvcl91cGRhdGUoY3R4LCBlbmdpbmUpOworCWludGVsX2xyX2NvbnRleHRfZGVz Y3JpcHRvcl91cGRhdGUoY3R4LCBlbmdpbmUsIGNlKTsKIAogCWNlLT5scmNfcmVnX3N0YXRlID0g dmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CiAJY2UtPmxyY19yZWdfc3RhdGVbQ1RY X1JJTkdfQlVGRkVSX1NUQVJUKzFdID0KQEAgLTE0MDMsOCArMTQyMyw3IEBAIGV4ZWNsaXN0c19j b250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAljZS0+c3RhdGUt Pm9iai0+cGluX2dsb2JhbCsrOwogCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7Ci1vdXQ6Ci0J cmV0dXJuIGNlLT5yaW5nOworCXJldHVybiBjZTsKIAogdW5waW5fbWFwOgogCWk5MTVfZ2VtX29i amVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwpAQCAtMTQxNSwzMyArMTQzNCwzMyBAQCBl eGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXJl dHVybiBFUlJfUFRSKHJldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3Vu cGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCQkgICAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCkKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMg ZXhlY2xpc3RzX2NvbnRleHRfb3BzID0geworCS51bnBpbiA9IGV4ZWNsaXN0c19jb250ZXh0X3Vu cGluLAorCS5kZXN0cm95ID0gZXhlY2xpc3RzX2NvbnRleHRfZGVzdHJveSwKK307CisKK3N0YXRp YyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitleGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4KQogewogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4 LCBlbmdpbmUpOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKLQlHRU1fQlVHX09OKGNlLT5waW5fY291bnQgPT0gMCk7CiAKLQlpZiAoLS1jZS0+ cGluX2NvdW50KQotCQlyZXR1cm47Ci0KLQlpbnRlbF9yaW5nX3VucGluKGNlLT5yaW5nKTsKKwlp ZiAobGlrZWx5KGNlLT5waW5fY291bnQrKykpCisJCXJldHVybiBjZTsKKwlHRU1fQlVHX09OKCFj ZS0+cGluX2NvdW50KTsgLyogbm8gb3ZlcmZsb3cgcGxlYXNlISAqLwogCi0JY2UtPnN0YXRlLT5v YmotPnBpbl9nbG9iYWwtLTsKLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+ b2JqKTsKLQlpOTE1X3ZtYV91bnBpbihjZS0+c3RhdGUpOworCWNlLT5vcHMgPSAmZXhlY2xpc3Rz X2NvbnRleHRfb3BzOwogCi0JaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKKwlyZXR1cm4gX19l eGVjbGlzdHNfY29udGV4dF9waW4oZW5naW5lLCBjdHgsIGNlKTsKIH0KIAogc3RhdGljIGludCBl eGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogewot CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9Ci0JCXRvX2ludGVsX2NvbnRleHQocmVxdWVzdC0+ Z2VtX2NvbnRleHQsIHJlcXVlc3QtPmVuZ2luZSk7CiAJaW50IHJldDsKIAotCUdFTV9CVUdfT04o IWNlLT5waW5fY291bnQpOworCUdFTV9CVUdfT04oIXJlcXVlc3QtPmh3X2NvbnRleHQtPnBpbl9j b3VudCk7CiAKIAkvKiBGbHVzaCBlbm91Z2ggc3BhY2UgdG8gcmVkdWNlIHRoZSBsaWtlbGlob29k IG9mIHdhaXRpbmcgYWZ0ZXIKIAkgKiB3ZSBzdGFydCBidWlsZGluZyB0aGUgcmVxdWVzdCAtIGlu IHdoaWNoIGNhc2Ugd2Ugd2lsbCBqdXN0CkBAIC0xOTU1LDcgKzE5NzQsNyBAQCBzdGF0aWMgdm9p ZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCSAqIGZ1 dHVyZSByZXF1ZXN0IHdpbGwgYmUgYWZ0ZXIgdXNlcnNwYWNlIGhhcyBoYWQgdGhlIG9wcG9ydHVu aXR5CiAJICogdG8gcmVjcmVhdGUgaXRzIG93biBzdGF0ZS4KIAkgKi8KLQlyZWdzID0gdG9faW50 ZWxfY29udGV4dChyZXF1ZXN0LT5nZW1fY29udGV4dCwgZW5naW5lKS0+bHJjX3JlZ19zdGF0ZTsK KwlyZWdzID0gcmVxdWVzdC0+aHdfY29udGV4dC0+bHJjX3JlZ19zdGF0ZTsKIAlpZiAoZW5naW5l LT5kZWZhdWx0X3N0YXRlKSB7CiAJCXZvaWQgKmRlZmF1bHRzOwogCkBAIC0yMzI2LDggKzIzNDUs NiBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCWVuZ2luZS0+cmVzZXQuZmluaXNoID0gZXhlY2xpc3RzX3Jlc2V0X2ZpbmlzaDsK IAogCWVuZ2luZS0+Y29udGV4dF9waW4gPSBleGVjbGlzdHNfY29udGV4dF9waW47Ci0JZW5naW5l LT5jb250ZXh0X3VucGluID0gZXhlY2xpc3RzX2NvbnRleHRfdW5waW47Ci0KIAllbmdpbmUtPnJl cXVlc3RfYWxsb2MgPSBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYzsKIAogCWVuZ2luZS0+ZW1pdF9m bHVzaCA9IGdlbjhfZW1pdF9mbHVzaDsKQEAgLTI1NjIsNyArMjU3OSw3IEBAIHN0YXRpYyB2b2lk IGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCA9IGN0eC0+cHBndHQgPzogZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0OwogCXUzMiBi YXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7Ci0JYm9vbCByY3MgPSBlbmdpbmUtPmlkID09IFJDUzsK Kwlib29sIHJjcyA9IGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTOwogCiAJLyogQSBjb250 ZXh0IGlzIGFjdHVhbGx5IGEgYmlnIGJhdGNoIGJ1ZmZlciB3aXRoIHNldmVyYWwKIAkgKiBNSV9M T0FEX1JFR0lTVEVSX0lNTSBjb21tYW5kcyBmb2xsb3dlZCBieSAocmVnLCB2YWx1ZSkgcGFpcnMu IFRoZQpAQCAtMjcwOSwxMCArMjcyNiwxMCBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCiB9CiAKIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRf ZGVmZXJyZWRfYWxsb2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCQkJICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKKwkJCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKKwkJCQkJICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKIAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKIAl1aW50MzJfdCBjb250ZXh0X3NpemU7CiAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDRlYzdkOGRkMTNjOC4uMTU5MzE5NGU5MzBj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtMTA0LDExICsxMDQsNCBAQCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dDsKIAogdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90Ci1p bnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK LQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JcmV0dXJuIHRvX2lu dGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpLT5scmNfZGVzYzsKLX0KLQogI2VuZGlmIC8qIF9JTlRF TF9MUkNfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCA1 MzcwMzAxMmVjNzUuLjBjMGM5ZjUzMWU0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwpAQCAtNTcxLDggKzU3MSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3Jpbmcoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCSAqLwogCWlmIChyZXF1ZXN0KSB7CiAJCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5MTU7Ci0JCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9Ci0JCQl0b19pbnRlbF9jb250ZXh0KHJlcXVlc3QtPmdlbV9j b250ZXh0LCBlbmdpbmUpOworCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSByZXF1ZXN0LT5o d19jb250ZXh0OwogCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7CiAKIAkJaWYgKGNlLT5z dGF0ZSkgewpAQCAtMTE4Niw3ICsxMTg1LDMxIEBAIGludGVsX3JpbmdfZnJlZShzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZykKIAlrZnJlZShyaW5nKTsKIH0KIAotc3RhdGljIGludCBjb250ZXh0X3Bp bihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCitzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2NvbnRl eHRfZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJR0VNX0JVR19PTihjZS0+ cGluX2NvdW50KTsKKworCWlmIChjZS0+c3RhdGUpCisJCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVh c2VfdW5sZXNzX2FjdGl2ZShjZS0+c3RhdGUtPm9iaik7Cit9CisKK3N0YXRpYyB2b2lkIGludGVs X3JpbmdfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmY2UtPmdlbV9jb250ZXh0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK KwlHRU1fQlVHX09OKGNlLT5waW5fY291bnQgPT0gMCk7CisKKwlpZiAoLS1jZS0+cGluX2NvdW50 KQorCQlyZXR1cm47CisKKwlpZiAoY2UtPnN0YXRlKSB7CisJCWNlLT5zdGF0ZS0+b2JqLT5waW5f Z2xvYmFsLS07CisJCWk5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7CisJfQorCisJaTkxNV9nZW1f Y29udGV4dF9wdXQoY2UtPmdlbV9jb250ZXh0KTsKK30KKworc3RhdGljIGludCBfX2NvbnRleHRf cGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9 IGNlLT5zdGF0ZTsKIAlpbnQgcmV0OwpAQCAtMTI3NSwyNSArMTI5OCwxOSBAQCBhbGxvY19jb250 ZXh0X3ZtYShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIEVSUl9QVFIo ZXJyKTsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9yaW5nICoKLWludGVsX3JpbmdfY29udGV4 dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkgICAgICAgc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitfX3Jp bmdfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up CiB7Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVu Z2luZSk7Ci0JaW50IHJldDsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Ci0KLQlpZiAobGlrZWx5KGNlLT5waW5fY291bnQrKykpCi0JCWdvdG8g b3V0OwotCUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOyAvKiBubyBvdmVyZmxvdyBwbGVhc2Uh ICovCisJaW50IGVycjsKIAogCWlmICghY2UtPnN0YXRlICYmIGVuZ2luZS0+Y29udGV4dF9zaXpl KSB7CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCiAJCXZtYSA9IGFsbG9jX2NvbnRleHRfdm1h KGVuZ2luZSk7CiAJCWlmIChJU19FUlIodm1hKSkgewotCQkJcmV0ID0gUFRSX0VSUih2bWEpOwor CQkJZXJyID0gUFRSX0VSUih2bWEpOwogCQkJZ290byBlcnI7CiAJCX0KIApAQCAtMTMwMSw4ICsx MzE4LDggQEAgaW50ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJfQogCiAJaWYgKGNlLT5zdGF0ZSkgewotCQlyZXQgPSBjb250ZXh0X3BpbihjZSk7 Ci0JCWlmIChyZXQpCisJCWVyciA9IF9fY29udGV4dF9waW4oY2UpOworCQlpZiAoZXJyKQogCQkJ Z290byBlcnI7CiAKIAkJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwrKzsKQEAgLTEzMTAsMzIg KzEzMjcsMzcgQEAgaW50ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAKIAlpOTE1X2dlbV9jb250ZXh0X2dldChjdHgpOwogCi1vdXQ6CiAJLyogT25l IHJpbmdidWZmZXIgdG8gcnVsZSB0aGVtIGFsbCAqLwotCXJldHVybiBlbmdpbmUtPmJ1ZmZlcjsK KwlHRU1fQlVHX09OKCFlbmdpbmUtPmJ1ZmZlcik7CisJY2UtPnJpbmcgPSBlbmdpbmUtPmJ1ZmZl cjsKKworCXJldHVybiBjZTsKIAogZXJyOgogCWNlLT5waW5fY291bnQgPSAwOwotCXJldHVybiBF UlJfUFRSKHJldCk7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAotc3RhdGljIHZvaWQgaW50 ZWxfcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJ CQkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCitzdGF0aWMgY29uc3Qgc3RydWN0 IGludGVsX2NvbnRleHRfb3BzIHJpbmdfY29udGV4dF9vcHMgPSB7CisJLnVucGluID0gaW50ZWxf cmluZ19jb250ZXh0X3VucGluLAorCS5kZXN0cm95ID0gaW50ZWxfcmluZ19jb250ZXh0X2Rlc3Ry b3ksCit9OworCitzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgoraW50ZWxfcmluZ19jb250 ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgICAgICBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQogewogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRv X2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlHRU1fQlVHX09OKGNlLT5waW5fY291bnQgPT0g MCk7CiAKLQlpZiAoLS1jZS0+cGluX2NvdW50KQotCQlyZXR1cm47CisJaWYgKGxpa2VseShjZS0+ cGluX2NvdW50KyspKQorCQlyZXR1cm4gY2U7CisJR0VNX0JVR19PTighY2UtPnBpbl9jb3VudCk7 IC8qIG5vIG92ZXJmbG93IHBsZWFzZSEgKi8KIAotCWlmIChjZS0+c3RhdGUpIHsKLQkJY2UtPnN0 YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsKLQkJaTkxNV92bWFfdW5waW4oY2UtPnN0YXRlKTsKLQl9 CisJY2UtPm9wcyA9ICZyaW5nX2NvbnRleHRfb3BzOwogCi0JaTkxNV9nZW1fY29udGV4dF9wdXQo Y3R4KTsKKwlyZXR1cm4gX19yaW5nX2NvbnRleHRfcGluKGVuZ2luZSwgY3R4LCBjZSk7CiB9CiAK IHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCkBAIC0xMzQ2LDEwICsxMzY4LDYgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3Jp bmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWludGVsX2VuZ2lu ZV9zZXR1cF9jb21tb24oZW5naW5lKTsKIAotCWVyciA9IGludGVsX2VuZ2luZV9pbml0X2NvbW1v bihlbmdpbmUpOwotCWlmIChlcnIpCi0JCWdvdG8gZXJyOwotCiAJdGltZWxpbmUgPSBpOTE1X3Rp bWVsaW5lX2NyZWF0ZShlbmdpbmUtPmk5MTUsIGVuZ2luZS0+bmFtZSk7CiAJaWYgKElTX0VSUih0 aW1lbGluZSkpIHsKIAkJZXJyID0gUFRSX0VSUih0aW1lbGluZSk7CkBAIC0xMzcxLDggKzEzODks MTQgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlHRU1fQlVHX09OKGVuZ2luZS0+YnVmZmVyKTsKIAllbmdpbmUtPmJ1 ZmZlciA9IHJpbmc7CiAKKwllcnIgPSBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oZW5naW5lKTsK KwlpZiAoZXJyKQorCQlnb3RvIGVycl91bnBpbjsKKwogCXJldHVybiAwOwogCitlcnJfdW5waW46 CisJaW50ZWxfcmluZ191bnBpbihyaW5nKTsKIGVycl9yaW5nOgogCWludGVsX3JpbmdfZnJlZShy aW5nKTsKIGVycjoKQEAgLTE0NTgsNyArMTQ4Miw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3Nl dF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCiAKIAkqY3MrKyA9 IE1JX05PT1A7CiAJKmNzKysgPSBNSV9TRVRfQ09OVEVYVDsKLQkqY3MrKyA9IGk5MTVfZ2d0dF9v ZmZzZXQodG9faW50ZWxfY29udGV4dChycS0+Z2VtX2NvbnRleHQsIGVuZ2luZSktPnN0YXRlKSB8 IGZsYWdzOworCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChycS0+aHdfY29udGV4dC0+c3RhdGUp IHwgZmxhZ3M7CiAJLyoKIAkgKiB3L2E6IE1JX1NFVF9DT05URVhUIG11c3QgYWx3YXlzIGJlIGZv bGxvd2VkIGJ5IE1JX05PT1AKIAkgKiBXYU1pU2V0Q29udGV4dF9IYW5nOnNuYixpdmIsdmx2CkBA IC0xNTQ5LDcgKzE1NzMsNyBAQCBzdGF0aWMgaW50IHN3aXRjaF9jb250ZXh0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQogCQlod19mbGFncyA9IE1JX0ZPUkNFX1JFU1RPUkU7CiAJfQogCi0JaWYg KHRvX2ludGVsX2NvbnRleHQodG9fY3R4LCBlbmdpbmUpLT5zdGF0ZSAmJgorCWlmIChycS0+aHdf Y29udGV4dC0+c3RhdGUgJiYKIAkgICAgKHRvX2N0eCAhPSBmcm9tX2N0eCB8fCBod19mbGFncyAm IE1JX0ZPUkNFX1JFU1RPUkUpKSB7CiAJCUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1MpOwog CkBAIC0xNTk3LDcgKzE2MjEsNyBAQCBzdGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxvYyhzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCWludCByZXQ7CiAKLQlHRU1fQlVHX09OKCF0 b19pbnRlbF9jb250ZXh0KHJlcXVlc3QtPmdlbV9jb250ZXh0LCByZXF1ZXN0LT5lbmdpbmUpLT5w aW5fY291bnQpOworCUdFTV9CVUdfT04oIXJlcXVlc3QtPmh3X2NvbnRleHQtPnBpbl9jb3VudCk7 CiAKIAkvKiBGbHVzaCBlbm91Z2ggc3BhY2UgdG8gcmVkdWNlIHRoZSBsaWtlbGlob29kIG9mIHdh aXRpbmcgYWZ0ZXIKIAkgKiB3ZSBzdGFydCBidWlsZGluZyB0aGUgcmVxdWVzdCAtIGluIHdoaWNo IGNhc2Ugd2Ugd2lsbCBqdXN0CkBAIC0yMDI4LDggKzIwNTIsNiBAQCBzdGF0aWMgdm9pZCBpbnRl bF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAllbmdpbmUtPnJlc2V0LmZpbmlzaCA9IHJlc2V0X2ZpbmlzaDsKIAogCWVuZ2luZS0+Y29udGV4 dF9waW4gPSBpbnRlbF9yaW5nX2NvbnRleHRfcGluOwotCWVuZ2luZS0+Y29udGV4dF91bnBpbiA9 IGludGVsX3JpbmdfY29udGV4dF91bnBpbjsKLQogCWVuZ2luZS0+cmVxdWVzdF9hbGxvYyA9IHJp bmdfcmVxdWVzdF9hbGxvYzsKIAogCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iID0gaTl4eF9lbWl0 X2JyZWFkY3J1bWI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXgg MmIxNjE4NWUzNmM0Li4yMGM0ZTEzZWZjMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKQEAgLTQzNiwxMCArNDM2LDkgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7 CiAKIAl2b2lkCQkoKnNldF9kZWZhdWx0X3N1Ym1pc3Npb24pKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7CiAKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqKCpjb250ZXh0X3Bpbikoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCQkgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpOwotCXZvaWQJCSgqY29udGV4dF91bnBpbikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAotCQkJCQkgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7CisJc3RydWN0IGlu dGVsX2NvbnRleHQgKigqY29udGV4dF9waW4pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKKwkJCQkJICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsKKwogCWludAkJKCpy ZXF1ZXN0X2FsbG9jKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CiAJaW50CQkoKmluaXRfY29u dGV4dCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCkBAIC01NTUsNyArNTU0LDcgQEAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyB7CiAJICogdG8gdGhlIGtlcm5lbCBjb250ZXh0IGFuZCB0cmFz aCBpdCBhcyB0aGUgc2F2ZSBtYXkgbm90IGhhcHBlbgogCSAqIGJlZm9yZSB0aGUgaGFyZHdhcmUg aXMgcG93ZXJlZCBkb3duLgogCSAqLwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpsYXN0X3Jl dGlyZWRfY29udGV4dDsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbGFzdF9yZXRpcmVkX2NvbnRl eHQ7CiAKIAkvKiBXZSB0cmFjayB0aGUgY3VycmVudCBNSV9TRVRfQ09OVEVYVCBpbiBvcmRlciB0 byBlbGltaW5hdGUKIAkgKiByZWR1ZGFudCBjb250ZXh0IHN3aXRjaGVzLiBUaGlzIHByZXN1bWVz IHRoYXQgcmVxdWVzdHMgYXJlIG5vdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfY29udGV4dC5jCmluZGV4IDUwMWJlY2M0N2MwYy4uODkwNGYxY2U2NGUzIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCkBAIC0zMCw2ICsz MCw3IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkgICAg IGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwl1 bnNpZ25lZCBpbnQgbjsKIAlpbnQgcmV0OwogCiAJY3R4ID0ga3phbGxvYyhzaXplb2YoKmN0eCks IEdGUF9LRVJORUwpOwpAQCAtNDMsNiArNDQsMTIgQEAgbW9ja19jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwg R0ZQX0tFUk5FTCk7CiAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKIAorCWZv ciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0eC0+X19lbmdpbmUpOyBuKyspIHsKKwkJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlID0gJmN0eC0+X19lbmdpbmVbbl07CisKKwkJY2UtPmdlbV9jb250 ZXh0ID0gY3R4OworCX0KKwogCXJldCA9IGlkYV9zaW1wbGVfZ2V0KCZpOTE1LT5jb250ZXh0cy5o d19pZGEsCiAJCQkgICAgIDAsIE1BWF9DT05URVhUX0hXX0lELCBHRlBfS0VSTkVMKTsKIAlpZiAo cmV0IDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMK aW5kZXggMjZiZjI5ZDk3MDA3Li4zM2VkZGZjMWY4Y2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCkBAIC03MiwyNSArNzIsMzcgQEAgc3RhdGljIHZv aWQgaHdfZGVsYXlfY29tcGxldGUoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJc3Bpbl91bmxvY2so JmVuZ2luZS0+aHdfbG9jayk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfcmluZyAqCi1tb2Nr X2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCitzdGF0aWMgdm9pZCBtb2NrX2NvbnRleHRfdW5waW4oc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQogewotCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRv X2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCWlmICgtLWNlLT5waW5fY291bnQpCisJCXJl dHVybjsKIAotCWlmICghY2UtPnBpbl9jb3VudCsrKQotCQlpOTE1X2dlbV9jb250ZXh0X2dldChj dHgpOworCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGNlLT5nZW1fY29udGV4dCk7Cit9CiAKLQlyZXR1 cm4gZW5naW5lLT5idWZmZXI7CitzdGF0aWMgdm9pZCBtb2NrX2NvbnRleHRfZGVzdHJveShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJR0VNX0JVR19PTihjZS0+cGluX2NvdW50KTsKIH0K IAotc3RhdGljIHZvaWQgbW9ja19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKLQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQorc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyBtb2NrX2NvbnRleHRfb3BzID0geworCS51 bnBpbiA9IG1vY2tfY29udGV4dF91bnBpbiwKKwkuZGVzdHJveSA9IG1vY2tfY29udGV4dF9kZXN0 cm95LAorfTsKKworc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKK21vY2tfY29udGV4dF9w aW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCkKIHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0b19pbnRlbF9jb250 ZXh0KGN0eCwgZW5naW5lKTsKIAotCWlmICghLS1jZS0+cGluX2NvdW50KQotCQlpOTE1X2dlbV9j b250ZXh0X3B1dChjdHgpOworCWlmICghY2UtPnBpbl9jb3VudCsrKSB7CisJCWk5MTVfZ2VtX2Nv bnRleHRfZ2V0KGN0eCk7CisJCWNlLT5yaW5nID0gZW5naW5lLT5idWZmZXI7CisJCWNlLT5vcHMg PSAmbW9ja19jb250ZXh0X29wczsKKwl9CisKKwlyZXR1cm4gY2U7CiB9CiAKIHN0YXRpYyBpbnQg bW9ja19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCkBAIC0xODUs NyArMTk3LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJZW5naW5lLT5iYXNlLnN0YXR1c19wYWdlLnBhZ2VfYWRk ciA9ICh2b2lkICopKGVuZ2luZSArIDEpOwogCiAJZW5naW5lLT5iYXNlLmNvbnRleHRfcGluID0g bW9ja19jb250ZXh0X3BpbjsKLQllbmdpbmUtPmJhc2UuY29udGV4dF91bnBpbiA9IG1vY2tfY29u dGV4dF91bnBpbjsKIAllbmdpbmUtPmJhc2UucmVxdWVzdF9hbGxvYyA9IG1vY2tfcmVxdWVzdF9h bGxvYzsKIAllbmdpbmUtPmJhc2UuZW1pdF9mbHVzaCA9IG1vY2tfZW1pdF9mbHVzaDsKIAllbmdp bmUtPmJhc2UuZW1pdF9icmVhZGNydW1iID0gbW9ja19lbWl0X2JyZWFkY3J1bWI7CkBAIC0yMzgs MTEgKzI0OSwxMyBAQCB2b2lkIG1vY2tfZW5naW5lX2ZyZWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBtb2NrX2VuZ2luZSAqbW9jayA9CiAJCWNvbnRhaW5lcl9v ZihlbmdpbmUsIHR5cGVvZigqbW9jayksIGJhc2UpOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZTsKIAogCUdFTV9CVUdfT04odGltZXJfcGVuZGluZygmbW9jay0+aHdfZGVsYXkpKTsKIAotCWlm IChlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KQotCQlpbnRlbF9jb250ZXh0X3VucGluKGVu Z2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQsIGVuZ2luZSk7CisJY2UgPSBmZXRjaF9hbmRfemVy bygmZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCk7CisJaWYgKGNlKQorCQlpbnRlbF9jb250 ZXh0X3VucGluKGNlKTsKIAogCW1vY2tfcmluZ19mcmVlKGVuZ2luZS0+YnVmZmVyKTsKIAotLSAK Mi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK