From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/64] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit Date: Thu, 7 Jul 2016 09:41:31 +0100 Message-ID: <1467880930-23082-25-git-send-email-chris@chris-wilson.co.uk> References: <1467880930-23082-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B9356E75B for ; Thu, 7 Jul 2016 08:42:58 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id n127so1265676wme.0 for ; Thu, 07 Jul 2016 01:42:58 -0700 (PDT) In-Reply-To: <1467880930-23082-1-git-send-email-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 List-Id: intel-gfx@lists.freedesktop.org Qm90aCBwZXJmb3JtIHRoZSBzYW1lIGFjdGlvbnMgd2l0aCBtb3JlIG9yIGxlc3MgaW5kaXJlY3Rp b24sIHNvIGp1c3QKdW5pZnkgdGhlIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMgICAgfCAgNTQgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jIHwgIDUzICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jICAgICAgICB8ICA2MiArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jICAgICAgIHwgIDgwICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgICAgICAgICAgIHwgMTg0ICsrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuaCAgICAgICAgICAgfCAgMjYgLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X21vY3MuYyAgICAgICAgICB8ICAzOCArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYyAgICAgICB8ICA1MCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMgICAgfCAzODcgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAyNSArLQogMTAgZmlsZXMgY2hh bmdlZCwgNDYzIGluc2VydGlvbnMoKyksIDQ5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggODQ3MzI1OTg3MDEzLi5jZGY2NTI4YjA2ODcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTU1Miw3ICs1NTIs NyBAQCBzdGF0aWMgaW5saW5lIGludAogbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJp bmdidWY7CiAJdTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7CiAJY29uc3Qg aW50IG51bV9yaW5ncyA9CiAJCS8qIFVzZSBhbiBleHRlbmRlZCB3L2Egb24gaXZiKyBpZiBzaWdu YWxsaW5nIGZyb20gb3RoZXIgcmluZ3MgKi8KQEAgLTU2Nyw3ICs1NjcsNyBAQCBtaV9zZXRfY29u dGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogCSAq IGl0bGJfYmVmb3JlX2N0eF9zd2l0Y2guCiAJICovCiAJaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7 Ci0JCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVfRE9NQUlOUywgMCk7CisJ CXJldCA9IHJlcS0+ZW5naW5lLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCAwKTsK IAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtNTg5LDY0ICs1ODksNjQgQEAgbWlf c2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFn cykKIAogCS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRNaVNldENvbnRleHQ6aXZiLHZsdixo c3csYmR3LGNodiAqLwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKLQkJaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKKwkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRSk7CiAJCWlm IChudW1fcmluZ3MpIHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAot CQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJ CQlNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShz aWduYWxsZXIsIGRldl9wcml2KSB7Ci0JCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCisJCQkJ aWYgKHNpZ25hbGxlciA9PSByZXEtPmVuZ2luZSkKIAkJCQkJY29udGludWU7CiAKLQkJCQlpbnRl bF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwKKwkJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsCiAJ CQkJCQkgICAgUklOR19QU01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkpOwotCQkJCWludGVs X3JpbmdfZW1pdChlbmdpbmUsCisJCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJCQlfTUFT S0VEX0JJVF9FTkFCTEUoR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKSk7CiAJCQl9CiAJCX0K IAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9TRVRfQ09OVEVYVCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X1NFVF9DT05URVhUKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJCWk5MTVfZ2VtX29ial9n Z3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUpIHwKIAkJCWZsYWdzKTsKIAkv KgogCSAqIHcvYTogTUlfU0VUX0NPTlRFWFQgbXVzdCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgTUlf Tk9PUAogCSAqIFdhTWlTZXRDb250ZXh0X0hhbmc6c25iLGl2Yix2bHYKIAkgKi8KLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7CiAJCWlmIChudW1fcmluZ3Mp IHsKIAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAkJCWk5MTVfcmVnX3Qg bGFzdF9yZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KIAotCQkJaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJCQlNSV9MT0FEX1JFR0lTVEVS X0lNTShudW1fcmluZ3MpKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9wcml2 KSB7Ci0JCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCisJCQkJaWYgKHNpZ25hbGxlciA9PSBy ZXEtPmVuZ2luZSkKIAkJCQkJY29udGludWU7CiAKIAkJCQlsYXN0X3JlZyA9IFJJTkdfUFNNSV9D VEwoc2lnbmFsbGVyLT5tbWlvX2Jhc2UpOwotCQkJCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5l LCBsYXN0X3JlZyk7Ci0JCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJCQlpbnRlbF9yaW5n X2VtaXRfcmVnKHJpbmcsIGxhc3RfcmVnKTsKKwkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJ CQkJCV9NQVNLRURfQklUX0RJU0FCTEUoR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKSk7CiAJ CQl9CiAKIAkJCS8qIEluc2VydCBhIGRlbGF5IGJlZm9yZSB0aGUgbmV4dCBzd2l0Y2ghICovCi0J CQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJ CU1JX1NUT1JFX1JFR0lTVEVSX01FTSB8CiAJCQkJCU1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7Ci0J CQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgbGFzdF9yZWcpOwotCQkJaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQpOwotCQkJaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIGxhc3Rf cmVnKTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRf b2Zmc2V0KTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAkJfQotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRSk7CisJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJMRSk7CiAJfQog Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBtaV9zZXRfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogc3RhdGljIGlu dCByZW1hcF9sMyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHNsaWNlKQog ewogCXUzMiAqcmVtYXBfaW5mbyA9IHJlcS0+aTkxNS0+bDNfcGFyaXR5LnJlbWFwX2luZm9bc2xp Y2VdOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCBpLCByZXQ7 CiAKIAlpZiAoIXJlbWFwX2luZm8pCkBAIC02NjksMTMgKzY2OSwxMyBAQCBzdGF0aWMgaW50IHJl bWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc2xpY2UpCiAJICog aGVyZSBiZWNhdXNlIG5vIG90aGVyIGNvZGUgc2hvdWxkIGFjY2VzcyB0aGVzZSByZWdpc3RlcnMg b3RoZXIgdGhhbgogCSAqIGF0IGluaXRpYWxpemF0aW9uIHRpbWUuCiAJICovCi0JaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VON19MM0xPR19TSVpFLzQpKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VON19MM0xPR19T SVpFLzQpKTsKIAlmb3IgKGkgPSAwOyBpIDwgR0VON19MM0xPR19TSVpFLzQ7IGkrKykgewotCQlp bnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgR0VON19MM0xPRyhzbGljZSwgaSkpOwotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCByZW1hcF9pbmZvW2ldKTsKKwkJaW50ZWxfcmluZ19lbWl0X3Jl ZyhyaW5nLCBHRU43X0wzTE9HKHNsaWNlLCBpKSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBy ZW1hcF9pbmZvW2ldKTsKIAl9Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05P T1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IGRhNTQxZDNjNTJlYi4u OWM5NzYzZmVjOTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCkBAIC0xMTY0LDE0ICsxMTY0LDEyIEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmV0aXJlX2Nv bW1hbmRzKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMpCiB9CiAKIHN0YXRp YyBpbnQKLWk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAotCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQoraTkxNV9yZXNldF9n ZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0LCBpOwogCi0JaWYgKCFJU19H RU43KGRldikgfHwgZW5naW5lICE9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU10pIHsKKwlpZiAoIUlT X0dFTjcocmVxLT5pOTE1KSB8fCByZXEtPmVuZ2luZS0+aWQgIT0gUkNTKSB7CiAJCURSTV9ERUJV Rygic29sIHJlc2V0IGlzIGdlbjcvcmNzIG9ubHlcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CkBAIC0xMTgxLDEyICsxMTc5LDEyIEBAIGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1cm4gcmV0OwogCiAJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgx KSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU43X1NPX1dSSVRFX09GRlNFVChp KSk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IEdFTjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwog CX0KIAotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTI0OSw5ICsxMjQ3LDcgQEAgaTkxNV9nZW1fcmlu Z2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMs CiAJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncywKIAkJCSAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBwYXJhbXMtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBwYXJhbXMt PmVuZ2luZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcGFyYW1zLT5yZXF1ZXN0 LT5pOTE1OwogCXU2NCBleGVjX3N0YXJ0LCBleGVjX2xlbjsKIAlpbnQgaW5zdHBfbW9kZTsKIAl1 MzIgaW5zdHBfbWFzazsKQEAgLTEyNjUsMzQgKzEyNjEsMzEgQEAgaTkxNV9nZW1fcmluZ2J1ZmZl cl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCVdBUk4ocGFyYW1zLT5jdHgtPnBwZ3R0ICYmIHBhcmFt cy0+Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmluZ3MgJiAoMTw8ZW5naW5lLT5pZCksCi0JICAgICAi JXMgZGlkbid0IGNsZWFyIHJlbG9hZFxuIiwgZW5naW5lLT5uYW1lKTsKLQogCWluc3RwX21vZGUg PSBhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19DT05TVEFOVFNfTUFTSzsKIAlpbnN0cF9tYXNrID0g STkxNV9FWEVDX0NPTlNUQU5UU19NQVNLOwogCXN3aXRjaCAoaW5zdHBfbW9kZSkgewogCWNhc2Ug STkxNV9FWEVDX0NPTlNUQU5UU19SRUxfR0VORVJBTDoKIAljYXNlIEk5MTVfRVhFQ19DT05TVEFO VFNfQUJTT0xVVEU6CiAJY2FzZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOgotCQlp ZiAoaW5zdHBfbW9kZSAhPSAwICYmIGVuZ2luZSAhPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKSB7 CisJCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgcGFyYW1zLT5lbmdpbmUtPmlkICE9IFJDUykgewog CQkJRFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1vZGUgb24gbm9uLVJDU1xuIik7CiAJ CQlyZXR1cm4gLUVJTlZBTDsKIAkJfQogCiAJCWlmIChpbnN0cF9tb2RlICE9IGRldl9wcml2LT5y ZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewotCQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg NCkgeworCQkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0KSB7CiAJCQkJRFJNX0RF QlVHKCJubyByZWwgY29uc3RhbnRzIG9uIHByZS1nZW40XG4iKTsKIAkJCQlyZXR1cm4gLUVJTlZB TDsKIAkJCX0KIAotCQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNSAmJgorCQkJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPiA1ICYmCiAJCQkgICAgaW5zdHBfbW9kZSA9PSBJOTE1 X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFKSB7CiAJCQkJRFJNX0RFQlVHKCJyZWwgc3VyZmFj ZSBjb25zdGFudHMgbW9kZSBpbnZhbGlkIG9uIGdlbjUrXG4iKTsKIAkJCQlyZXR1cm4gLUVJTlZB TDsKIAkJCX0KIAogCQkJLyogVGhlIEhXIGNoYW5nZWQgdGhlIG1lYW5pbmcgb24gdGhpcyBiaXQg b24gZ2VuNiAqLwotCQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCisJCQlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KQogCQkJCWluc3RwX21hc2sgJj0gfkk5MTVfRVhF Q19DT05TVEFOVFNfUkVMX1NVUkZBQ0U7CiAJCX0KIAkJYnJlYWs7CkBAIC0xMzAxLDIzICsxMjk0 LDI1IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVm ZmVyX3BhcmFtcyAqcGFyYW1zLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoZW5naW5l ID09ICZkZXZfcHJpdi0+ZW5naW5lW1JDU10gJiYKKwlpZiAocGFyYW1zLT5lbmdpbmUtPmlkID09 IFJDUyAmJgogCSAgICBpbnN0cF9tb2RlICE9IGRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNf bW9kZSkgeworCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHBhcmFtcy0+cmVxdWVz dC0+cmluZ2J1ZjsKKwogCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwg NCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBJTlNUUE0pOwotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7Ci0JCWlu dGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CisJ CWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgSU5TVFBNKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGluc3RwX21hc2sgPDwgMTYgfCBpbnN0cF9tb2RlKTsKKwkJaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOwogCiAJCWRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IGluc3RwX21v ZGU7CiAJfQogCiAJaWYgKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0dFTjdfU09MX1JFU0VUKSB7 Ci0JCXJldCA9IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhkZXYsIHBhcmFtcy0+cmVxdWVz dCk7CisJCXJldCA9IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhwYXJhbXMtPnJlcXVlc3Qp OwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC0xMzI5LDkgKzEzMjQsOSBAQCBp OTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJh bXMgKnBhcmFtcywKIAlpZiAoZXhlY19sZW4gPT0gMCkKIAkJZXhlY19sZW4gPSBwYXJhbXMtPmJh dGNoX29iai0+YmFzZS5zaXplOwogCi0JcmV0ID0gZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVy KHBhcmFtcy0+cmVxdWVzdCwKLQkJCQkJZXhlY19zdGFydCwgZXhlY19sZW4sCi0JCQkJCXBhcmFt cy0+ZGlzcGF0Y2hfZmxhZ3MpOworCXJldCA9IHBhcmFtcy0+ZW5naW5lLT5kaXNwYXRjaF9leGVj YnVmZmVyKHBhcmFtcy0+cmVxdWVzdCwKKwkJCQkJCSAgZXhlY19zdGFydCwgZXhlY19sZW4sCisJ CQkJCQkgIHBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggMzY1ZmU2NTk1MGUxLi4yZGNj MGRhMjcyZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC02NjksNyArNjY5 LDcgQEAgc3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKIAkJCSAgdW5zaWduZWQgZW50cnksCiAJCQkgIGRtYV9hZGRyX3QgYWRkcikKIHsK LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJQlVH X09OKGVudHJ5ID49IDQpOwpAQCAtNjc4LDEzICs2NzgsMTMgQEAgc3RhdGljIGludCBnZW44X3dy aXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkpOwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU44X1JJTkdfUERQX1VEVyhl bmdpbmUsIGVudHJ5KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgdXBwZXJfMzJfYml0cyhh ZGRyKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkp OwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUs IGVudHJ5KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgbG93ZXJfMzJfYml0cyhhZGRyKSk7 Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X0xPQURfUkVHSVNURVJfSU1NKDEpKTsKKwlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhf UklOR19QRFBfVURXKHJlcS0+ZW5naW5lLCBlbnRyeSkpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCB1cHBlcl8zMl9iaXRzKGFkZHIpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSkpOworCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5HX1BE UF9MRFcocmVxLT5lbmdpbmUsIGVudHJ5KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2Vy XzMyX2JpdHMoYWRkcikpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAw OwogfQpAQCAtMTY2MCwxMSArMTY2MCwxMyBAQCBzdGF0aWMgdWludDMyX3QgZ2V0X3BkX29mZnNl dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiBzdGF0aWMgaW50IGhzd19tbV9zd2l0Y2go c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWlu dCByZXQ7CiAKIAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJl Zm9yZSBhIHN3aXRjaCAqLwotCXJldCA9IGVuZ2luZS0+Zmx1c2gocmVxLCBJOTE1X0dFTV9HUFVf RE9NQUlOUywgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOworCXJldCA9IHJlcS0+ZW5naW5lLT5mbHVz aChyZXEsCisJCQkJIEk5MTVfR0VNX0dQVV9ET01BSU5TLAorCQkJCSBJOTE1X0dFTV9HUFVfRE9N QUlOUyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTY3MiwxMyArMTY3NCwxMyBA QCBzdGF0aWMgaW50IGhzd19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9M T0FEX1JFR0lTVEVSX0lNTSgyKSk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIFJJTkdf UFBfRElSX0RDTFYoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgUFBfRElSX0RD TFZfMkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBSSU5HX1BQX0RJUl9CQVNFKGVu Z2luZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGdldF9wZF9vZmZzZXQocHBndHQpKTsK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo ZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikp OworCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfRENMVihyZXEtPmVuZ2lu ZSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBQUF9ESVJfRENMVl8yRyk7CisJaW50ZWxfcmlu Z19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9CQVNFKHJlcS0+ZW5naW5lKSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0xNjg2LDExICsxNjg4LDEzIEBAIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNoKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50IHJl dDsKIAogCS8qIE5COiBUTEJzIG11c3QgYmUgZmx1c2hlZCBhbmQgaW52YWxpZGF0ZWQgYmVmb3Jl IGEgc3dpdGNoICovCi0JcmV0ID0gZW5naW5lLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01B SU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7CisJcmV0ID0gcmVxLT5lbmdpbmUtPmZsdXNoKHJl cSwKKwkJCQkgSTkxNV9HRU1fR1BVX0RPTUFJTlMsCisJCQkJIEk5MTVfR0VNX0dQVV9ET01BSU5T KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xNjk4LDE3ICsxNzAyLDE5IEBAIHN0 YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FE X1JFR0lTVEVSX0lNTSgyKSk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIFJJTkdfUFBf RElSX0RDTFYoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgUFBfRElSX0RDTFZf MkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBSSU5HX1BQX0RJUl9CQVNFKGVuZ2lu ZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5n aW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOwor CWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfRENMVihyZXEtPmVuZ2luZSkp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBQUF9ESVJfRENMVl8yRyk7CisJaW50ZWxfcmluZ19l bWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9CQVNFKHJlcS0+ZW5naW5lKSk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGdldF9wZF9vZmZzZXQocHBndHQpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJLyogWFhYOiBSQ1Mg aXMgdGhlIG9ubHkgb25lIHRvIGF1dG8gaW52YWxpZGF0ZSB0aGUgVExCcz8gKi8KLQlpZiAoZW5n aW5lLT5pZCAhPSBSQ1MpIHsKLQkJcmV0ID0gZW5naW5lLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQ VV9ET01BSU5TLCBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7CisJaWYgKHJlcS0+ZW5naW5lLT5pZCAh PSBSQ1MpIHsKKwkJcmV0ID0gcmVxLT5lbmdpbmUtPmZsdXNoKHJlcSwKKwkJCQkJIEk5MTVfR0VN X0dQVV9ET01BSU5TLAorCQkJCQkgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwogCQlpZiAocmV0KQog CQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXgg YTY3YWY4ZGYyNWFlLi42MWJjMmU5NmUxODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKQEAgLTExMjEwLDcgKzExMjEwLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVl X2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nID0gcmVxLT5yaW5nYnVmOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKIAl1MzIgZmxpcF9tYXNrOwogCWludCByZXQ7CkBAIC0xMTIyNiwx MyArMTEyMjYsMTMgQEAgc3RhdGljIGludCBpbnRlbF9nZW4yX3F1ZXVlX2ZsaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQOwog CWVsc2UKIAkJZmxpcF9tYXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQV9GTElQOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9E SVNQTEFZX0ZMSVAgfAorCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8 IGZsaXBfbWFzayk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5F KGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNo ZXNbMF0pOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+ Z3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIGF1eCBkaXNwbGF5 IGJhc2UgYWRkcmVzcywgdW51c2VkICovCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRj aGVzWzBdKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5n dHRfb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGF1eCBkaXNwbGF5IGJh c2UgYWRkcmVzcywgdW51c2VkICovCiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExMjQ0LDcgKzExMjQ0 LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQz Ml90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAl1MzIg ZmxpcF9tYXNrOwogCWludCByZXQ7CkBAIC0xMTI1NywxMyArMTEyNTcsMTMgQEAgc3RhdGljIGlu dCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZmxpcF9t YXNrID0gTUlfV0FJVF9GT1JfUExBTkVfQl9GTElQOwogCWVsc2UKIAkJZmxpcF9tYXNrID0gTUlf V0FJVF9GT1JfUExBTkVfQV9GTElQOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1dBSVRf Rk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09Q KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJ U1BMQVlfRkxJUF9JOTE1IHwKIAkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5w bGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdKTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBmYi0+cGl0Y2hlc1swXSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZs aXBfd29yay0+Z3R0X29mZnNldCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwog CiAJcmV0dXJuIDA7CiB9CkBAIC0xMTI3NSw3ICsxMTI3NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf Z2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXVpbnQzMl90IHBmLCBwaXBlc3JjOwpAQCAtMTEyODks MTAgKzExMjg5LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJICogRGlzcGxheSBSZWdpc3RlcnMgKHdoaWNoIGRvIG5vdCBjaGFu Z2UgYWNyb3NzIGEgcGFnZS1mbGlwKQogCSAqIHNvIHdlIG5lZWQgb25seSByZXByb2dyYW0gdGhl IGJhc2UgYWRkcmVzcy4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZ X0ZMSVAgfAorCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZX0ZMSVAgfAogCQkJTUlf RElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVs X2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCB8CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZi LT5waXRjaGVzWzBdKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93 b3JrLT5ndHRfb2Zmc2V0IHwKIAkJCW9iai0+dGlsaW5nX21vZGUpOwogCiAJLyogWFhYIEVuYWJs aW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBzbyBmYXIKQEAgLTExMzAx LDcgKzExMzAxLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlwZXNyYyA9IEk5MTVfUkVBRChQSVBF U1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgcGYgfCBwaXBlc3JjKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgcGYgfCBwaXBlc3Jj KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTEzMTMsNyArMTEzMTMsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAl1aW50MzJfdCBwZiwgcGlwZXNyYzsKQEAgLTEx MzIzLDEwICsxMTMyMywxMCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVAgfAorCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9ESVNQTEFZX0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMt PnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0gfCBvYmot PnRpbGluZ19tb2RlKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpbnRlbF9jcnRjLT5mbGlw X3dvcmstPmd0dF9vZmZzZXQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBmYi0+cGl0Y2hlc1sw XSB8IG9iai0+dGlsaW5nX21vZGUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRj LT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwogCiAJLyogQ29udHJhcnkgdG8gdGhlIHN1Z2dlc3Rp b25zIGluIHRoZSBkb2N1bWVudGF0aW9uLAogCSAqICJFbmFibGUgUGFuZWwgRml0dGVyIiBkb2Vz IG5vdCBzZWVtIHRvIGJlIHJlcXVpcmVkIHdoZW4gcGFnZQpAQCAtMTEzMzYsNyArMTEzMzYsNyBA QCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCSAqLwogCXBmID0gMDsKIAlwaXBlc3JjID0gSTkxNV9SRUFEKFBJUEVTUkMoaW50ZWxfY3J0 Yy0+cGlwZSkpICYgMHgwZmZmMGZmZjsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBwZiB8IHBp cGVzcmMpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOwogCiAJcmV0dXJu IDA7CiB9CkBAIC0xMTM0OCw3ICsxMTM0OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1 ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7CiAJdWludDMyX3QgcGxhbmVfYml0ID0gMDsKIAlpbnQgbGVuLCBy ZXQ7CkBAIC0xMTM2OSw3ICsxMTM2OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJfQogCiAJbGVuID0gNDsKLQlpZiAoZW5naW5l LT5pZCA9PSBSQ1MpIHsKKwlpZiAocmVxLT5lbmdpbmUtPmlkID09IFJDUykgewogCQlsZW4gKz0g NjsKIAkJLyoKIAkJICogT24gR2VuIDgsIFNSTSBpcyBub3cgdGFraW5nIGFuIGV4dHJhIGR3b3Jk IHRvIGFjY29tbW9kYXRlCkBAIC0xMTQwNywzMCArMTE0MDcsMzAgQEAgc3RhdGljIGludCBpbnRl bF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiBmb3IgdGhlIFJD UyBhbHNvIGRvZXNuJ3QgYXBwZWFyIHRvIGRyb3AgZXZlbnRzLiBTZXR0aW5nIHRoZSBERVJSTVIK IAkgKiB0byB6ZXJvIGRvZXMgbGVhZCB0byBsb2NrdXBzIHdpdGhpbiBNSV9ESVNQTEFZX0ZMSVAu CiAJICovCi0JaWYgKGVuZ2luZS0+aWQgPT0gUkNTKSB7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdp bmUsIERFUlJNUik7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIH4oREVSUk1SX1BJUEVBX1BS SV9GTElQX0RPTkUgfAorCWlmIChyZXEtPmVuZ2luZS0+aWQgPT0gUkNTKSB7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CisJCWludGVsX3JpbmdfZW1p dF9yZWcocmluZywgREVSUk1SKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIH4oREVSUk1SX1BJ UEVBX1BSSV9GTElQX0RPTkUgfAogCQkJCQkgIERFUlJNUl9QSVBFQl9QUklfRkxJUF9ET05FIHwK IAkJCQkJICBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSkpOwogCQlpZiAoSVNfR0VOOChkZXYp KQotCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjgg fAorCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwK IAkJCQkJICAgICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKIAkJZWxzZQotCQkJaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKKwkJCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAogCQkJCQkgICAgICBNSV9TUk1fTFJNX0dM T0JBTF9HVFQpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgREVSUk1SKTsKLQkJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyNTYpOwor CQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIERFUlJNUik7CisJCWludGVsX3JpbmdfZW1pdChy aW5nLCByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMjU2KTsKIAkJaWYgKElTX0dF TjgoZGV2KSkgewotCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBNSV9OT09QKTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAkJfQogCX0KIAotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwgcGxhbmVfYml0KTsKLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCAoZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGluZ19tb2RlKSk7Ci0J aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0 KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAoTUlfTk9PUCkpOworCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBsYW5lX2JpdCk7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIChmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgKE1JX05PT1ApKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwppbmRleCBlZGQ3YjBmOWJlZjMuLjI3NWIzMmNjZThjMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKQEAgLTc3Niw3ICs3NzYsNyBAQCBpbnRlbF9sb2dpY2FsX3Jpbmdf YWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkK IAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwogCi0JaW50 ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmdidWYpOwogCXJlcXVlc3QtPnRhaWwgPSByaW5nYnVmLT50YWlsOwogCiAJLyoKQEAgLTc4NSw5 ICs3ODUsOSBAQCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkgKgogCSAqIENhbGxlciBtdXN0IHJlc2Vy dmUgV0FfVEFJTF9EV09SRFMgZm9yIHVzIQogCSAqLwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIE1JX05PT1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1J X05PT1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCWludGVsX3Jp bmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf Tk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwogCiAJLyogV2Uga2VlcCB0aGUg cHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUgdGhlIGZvbGxvd2luZwogCSAq IHJlcXVlc3QuIFRoaXMgZW5zdXJlcyB0aGF0IGFueSB0aGUgY29udGV4dCBvYmplY3QgaXMgc3Rp bGwgcGlubmVkCkBAIC04NzEsMTEgKzg3MSwxMSBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1p c3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKIAkJaWYgKHJldCkK IAkJCXJldHVybiByZXQ7CiAKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf Tk9PUCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNU RVJfSU1NKDEpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIElOU1RQ TSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGluc3RwX21hc2sgPDwgMTYg fCBpbnN0cF9tb2RlKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJp bmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nYnVmLCBJTlNUUE0pOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgaW5zdHBfbWFzayA8 PCAxNiB8IGluc3RwX21vZGUpOworCQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CiAKIAkJ ZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0gaW5zdHBfbW9kZTsKIAl9CkBAIC0x MDQ4LDE0ICsxMDQ4LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dvcmthcm91 bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURf UkVHSVNURVJfSU1NKHctPmNvdW50KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xP QURfUkVHSVNURVJfSU1NKHctPmNvdW50KSk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBp KyspIHsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIHctPnJlZ1tpXS5h ZGRyKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVnW2ldLnZhbHVl KTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCB3LT5yZWdbaV0uYWRkcik7CisJCWlu dGVsX3JpbmdfZW1pdChyaW5nYnVmLCB3LT5yZWdbaV0udmFsdWUpOwogCX0KLQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1 ZiwgTUlfTk9PUCk7CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwlp bnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CiAKIAllbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkg PSB0cnVlOwogCXJldCA9IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcSk7CkBAIC0x NTQ1LDggKzE1NDUsNyBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19l bWl0X3BkcHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0ID0gcmVxLT5jdHgtPnBwZ3R0OwotCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwotCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmID0gcmVxLT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nYnVmOwogCWNvbnN0IGludCBudW1fbHJpX2NtZHMgPSBHRU44X0xFR0FDWV9QRFBF UyAqIDI7CiAJaW50IGksIHJldDsKIApAQCAtMTU1NCwyMCArMTU1MywxOCBAQCBzdGF0aWMgaW50 IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3BkcHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21kcykpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsKIAlm b3IgKGkgPSBHRU44X0xFR0FDWV9QRFBFUyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCWNvbnN0IGRt YV9hZGRyX3QgcGRfZGFkZHIgPSBpOTE1X3BhZ2VfZGlyX2RtYV9hZGRyKHBwZ3R0LCBpKTsKIAot CQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKLQkJCQkJICAgIEdFTjhfUklO R19QRFBfVURXKGVuZ2luZSwgaSkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3Jl ZyhyaW5nYnVmLAotCQkJCQkgICAgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBpKSk7Ci0JCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpKTsK KwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX1VEVyhyZXEtPmVuZ2lu ZSwgaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikp OworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdFTjhfUklOR19QRFBfTERXKHJlcS0+ZW5n aW5lLCBpKSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBsb3dlcl8zMl9iaXRzKHBkX2RhZGRy KSk7CiAJfQogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0J aW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwog fQpAQCAtMTU3NSw3ICsxNTcyLDcgQEAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dF9wZHBzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogc3RhdGljIGludCBnZW44 X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgICAg ICB1NjQgb2Zmc2V0LCB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlib29sIHBwZ3R0ID0gIShkaXNwYXRjaF9mbGFn cyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFKTsKIAlpbnQgcmV0OwogCkBAIC0xNjAyLDE0ICsxNTk5 LDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAogCQlyZXR1cm4gcmV0OwogCiAJLyogRklYTUUoQkRXKTogQWRkcmVzcyBz cGFjZSBhbmQgc2VjdXJpdHkgc2VsZWN0b3JzLiAqLwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKLQkJCQkocHBndHQ8PDgpIHwK LQkJCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1JTID8KLQkJCQkgTUlfQkFUQ0hf UkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCB1cHBlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIE1JX05PT1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCB8CisJCQko cHBndHQ8PDgpIHwKKwkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPworCQkJ IE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8z Ml9iaXRzKG9mZnNldCkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2MzIsOSArMTYyOSw4 IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwKIAkJCSAgIHUzMiBpbnZhbGlkYXRlX2RvbWFpbnMsCiAJCQkgICB1MzIgdW51 c2VkKQogewotCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxdWVzdC0+cmlu Z2J1ZjsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByaW5nYnVmLT5lbmdpbmU7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxdWVzdC0+aTkxNTsKKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmdidWY7CisJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmluZy0+ZW5naW5lOwogCXVpbnQzMl90IGNtZDsK IAlpbnQgcmV0OwogCkBAIC0xNjUzLDE3ICsxNjQ5LDE3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0 X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKIAogCWlmIChpbnZh bGlkYXRlX2RvbWFpbnMgJiBJOTE1X0dFTV9HUFVfRE9NQUlOUykgewogCQljbWQgfD0gTUlfSU5W QUxJREFURV9UTEI7Ci0JCWlmIChlbmdpbmUgPT0gJmRldl9wcml2LT5lbmdpbmVbVkNTXSkKKwkJ aWYgKGVuZ2luZS0+aWQgPT0gVkNTKQogCQkJY21kIHw9IE1JX0lOVkFMSURBVEVfQlNEOwogCX0K IAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGNtZCk7Ci0JaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwKLQkJCQlJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwKLQkJ CQlNSV9GTFVTSF9EV19VU0VfR1RUKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCAwKTsgLyogdXBwZXIgYWRkciAqLwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYs IDApOyAvKiB2YWx1ZSAqLwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLAorCQkJ STkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8CisJCQlNSV9GTFVTSF9EV19VU0VfR1RUKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7IC8qIHZhbHVlICovCisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0xNjcyLDggKzE2NjgsOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9m bHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCQkJCSAg dTMyIGludmFsaWRhdGVfZG9tYWlucywKIAkJCQkgIHUzMiBmbHVzaF9kb21haW5zKQogewotCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxdWVzdC0+cmluZ2J1ZjsKLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByaW5nYnVmLT5lbmdpbmU7CisJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKIAl1MzIgc2NyYXRjaF9hZGRyID0g ZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCWJvb2wg dmZfZmx1c2hfd2EgPSBmYWxzZSwgZGNfZmx1c2hfd2EgPSBmYWxzZTsKIAl1MzIgZmxhZ3MgPSAw OwpAQCAtMTcyNCw0MCArMTcyMCw0MCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5k ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCQlyZXR1cm4gcmV0Owog CiAJaWYgKHZmX2ZsdXNoX3dhKSB7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYs IEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCAwKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCAwKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKKwkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWludGVs X3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7CiAJfQogCiAJaWYgKGRjX2ZsdXNoX3dhKSB7Ci0JCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBQSVBFX0NPTlRST0xfRENfRkxVU0hfRU5B QkxFKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLCAwKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7CisJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKKwkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEUpOworCQlpbnRlbF9yaW5n X2VtaXQocmluZywgMCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CiAJfQogCi0JaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0J aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgZmxhZ3MpOwotCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgMCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0J aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFn cyk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7CiAKIAlpZiAoZGNfZmx1c2hfd2EpIHsKLQkJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Ci0JCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCAwKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywg R0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NP TlRST0xfQ1NfU1RBTEwpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7CiAJfQogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uocmlu Z2J1Zik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0x Nzg2LDcgKzE3ODIsNyBAQCBzdGF0aWMgdm9pZCBieHRfYV9zZXFub19iYXJyaWVyKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7Ci0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nID0gcmVxdWVzdC0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCA2ICsgV0FfVEFJTF9EV09SRFMpOwpAQCAtMTc5NiwyMSAr MTc5MiwyMCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkvKiB3L2E6IGJpdCA1IG5lZWRzIHRvIGJlIHplcm8gZm9y IE1JX0ZMVVNIX0RXIGFkZHJlc3MuICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0VNX0hXU19JTkRF WF9BRERSICYgKDEgPDwgNSkpOwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwK LQkJCQkoTUlfRkxVU0hfRFcgKyAxKSB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcpOwotCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCi0JCQkJaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3Mo cmVxdWVzdC0+ZW5naW5lKSB8Ci0JCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Ci0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIE1JX1VTRVJfSU5URVJSVVBUKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgKE1JX0ZMVVNIX0RXICsgMSkg fCBNSV9GTFVTSF9EV19PUF9TVE9SRURXKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywKKwkJCWlu dGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkgfAorCQkJTUlfRkxVU0hfRFdf VVNFX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1pdChy aW5nLCByZXF1ZXN0LT5mZW5jZS5zZXFubyk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VT RVJfSU5URVJSVVBUKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CiAJcmV0dXJu IGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQocmVxdWVzdCk7CiB9CiAKIHN0 YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3RfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJl cXVlc3QtPnJpbmdidWY7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3Qs IDggKyBXQV9UQUlMX0RXT1JEUyk7CkBAIC0xODI0LDE5ICsxODE5LDE4IEBAIHN0YXRpYyBpbnQg Z2VuOF9lbWl0X3JlcXVlc3RfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCkKIAkgKiBuZWVkIGEgcHJpb3IgQ1NfU1RBTEwsIHdoaWNoIGlzIGVtaXR0ZWQgYnkgdGhl IGZsdXNoCiAJICogZm9sbG93aW5nIHRoZSBiYXRjaC4KIAkgKi8KLQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCShQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAot CQkJCSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAotCQkJCSBQSVBFX0NPTlRST0xfUVdfV1JJVEUp KTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCWludGVsX2h3c19zZXFu b19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGk5MTVfZ2VtX3Jl cXVlc3RfZ2V0X3NlcW5vKHJlcXVlc3QpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09Q X1BJUEVfQ09OVFJPTCg2KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsCisJCQkoUElQRV9DT05U Uk9MX0dMT0JBTF9HVFRfSVZCIHwKKwkJCSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkJIFBJ UEVfQ09OVFJPTF9RV19XUklURSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9od3Nf c2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJl cXVlc3QpKTsKIAkvKiBXZSdyZSB0aHJhc2hpbmcgb25lIGR3b3JkIG9mIEhXUy4gKi8KLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX05PT1ApOwogCXJldHVybiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0 KHJlcXVlc3QpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IGExOWRjNDllODlk YS4uNjNkNmE0OWEwZGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtNzAsMzIgKzcw LDYgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwogaW50IGludGVsX2xvZ2ljYWxfcmluZ3NfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIAogaW50IGxvZ2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKLS8qKgotICogaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2UoKSAtIGFkdmFuY2UgdGhlIHJpbmdidWZmZXIgdGFpbAotICogQHJpbmdidWY6IFJpbmdi dWZmZXIgdG8gYWR2YW5jZS4KLSAqCi0gKiBUaGUgdGFpbCBpcyBvbmx5IHVwZGF0ZWQgaW4gb3Vy IGxvZ2ljYWwgcmluZ2J1ZmZlciBzdHJ1Y3QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikK LXsKLQlfX2ludGVsX3JpbmdidWZmZXJfYWR2YW5jZShyaW5nYnVmKTsKLX0KLQotLyoqCi0gKiBp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdCgpIC0gd3JpdGUgYSBEV09SRCB0byB0aGUgcmluZ2J1ZmZl ci4KLSAqIEByaW5nYnVmOiBSaW5nYnVmZmVyIHRvIHdyaXRlIHRvLgotICogQGRhdGE6IERXT1JE IHRvIHdyaXRlLgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCi0JCQkJCSAgIHUzMiBkYXRhKQot ewotCV9faW50ZWxfcmluZ2J1ZmZlcl9lbWl0KHJpbmdidWYsIGRhdGEpOwotfQotc3RhdGljIGlu bGluZSB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiwKLQkJCQkJICAgICAgIGk5MTVfcmVnX3QgcmVnKQotewotCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOwotfQog CiAvKiBMb2dpY2FsIFJpbmcgQ29udGV4dHMgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5j CmluZGV4IDNjMTQ4MmI4ZjJmNC4uMjhjOTk4NDZkY2NkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bW9jcy5jCkBAIC0yNTMsMTQgKzI1MywxMSBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9s X3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCU1JX0xP QURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUykpOworCWludGVsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsK IAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLT5zaXplOyBpbmRleCsrKSB7Ci0JCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLAotCQkJCQkgICAgbW9jc19yZWdpc3Rl cihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCi0J CQkJCXRhYmxlLT50YWJsZVtpbmRleF0uY29udHJvbF92YWx1ZSk7CisJCWludGVsX3JpbmdfZW1p dF9yZWcocmluZ2J1ZiwgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nYnVmLCB0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUpOwogCX0K IAogCS8qCkBAIC0yNzIsMTQgKzI2OSwxMiBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9s X3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAqIHRoYXQgdmFsdWUg dG8gYWxsIHRoZSB1c2VkIGVudHJpZXMuCiAJICovCiAJZm9yICg7IGluZGV4IDwgR0VOOV9OVU1f TU9DU19FTlRSSUVTOyBpbmRleCsrKSB7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhy aW5nYnVmLAotCQkJCQkgICAgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7Ci0JCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCi0JCQkJCXRhYmxlLT50YWJsZVswXS5jb250cm9s X3ZhbHVlKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCBtb2NzX3JlZ2lzdGVyKGVu Z2luZSwgaW5kZXgpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHRhYmxlLT50YWJsZVsw XS5jb250cm9sX3ZhbHVlKTsKIAl9CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdi dWYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zMTcsMTkgKzMxMiwxOCBAQCBzdGF0aWMgaW50IGVt aXRfbW9jc19sM2NjX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LAorCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLAogCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VO OV9OVU1fTU9DU19FTlRSSUVTIC8gMikpOwogCiAJZm9yIChpID0gMDsgaSA8IHRhYmxlLT5zaXpl LzI7IGkrKykgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9M TkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCQls M2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMippKzEpKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nYnVmLCBHRU45X0xOQ0ZDTU9DUyhpKSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBs M2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMippKzEpKTsKIAl9CiAKIAlpZiAodGFibGUtPnNpemUg JiAweDAxKSB7CiAJCS8qIE9kZCB0YWJsZSBzaXplIC0gMSBsZWZ0IG92ZXIgKi8KLQkJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAyKmksIDAp KTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUyhpKSk7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBsM2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMCkpOwog CQlpKys7CiAJfQogCkBAIC0zMzksMTIgKzMzMywxMiBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19s M2NjX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAqIHRoZXkgYXJl IHJlc2VydmVkIGJ5IHRoZSBoYXJkd2FyZS4KIAkgKi8KIAlmb3IgKDsgaSA8IEdFTjlfTlVNX01P Q1NfRU5UUklFUyAvIDI7IGkrKykgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmlu Z2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCBsM2NjX2NvbWJpbmUodGFibGUsIDAsIDApKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nYnVmLCBHRU45X0xOQ0ZDTU9DUyhpKSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBs M2NjX2NvbWJpbmUodGFibGUsIDAsIDApKTsKIAl9CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVm KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZh bmNlKHJpbmdidWYpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVy bGF5LmMKaW5kZXggODY1NGEzMjM3MjJlLi45MjcyMmU2MTQ5NTUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMKQEAgLTIzNSw2ICsyMzUsNyBAQCBzdGF0aWMgaW50IGludGVsX292 ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwogCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nOwogCWludCBy ZXQ7CiAKIAlXQVJOX09OKG92ZXJsYXktPmFjdGl2ZSk7CkBAIC0yNTIsMTEgKzI1MywxMiBAQCBz dGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkp CiAKIAlvdmVybGF5LT5hY3RpdmUgPSB0cnVlOwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg TUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PTik7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdp bmUpOworCXJpbmcgPSByZXEtPnJpbmdidWY7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09W RVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT04pOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvdmVy bGF5LT5mbGlwX2FkZHIgfCBPRkNfVVBEQVRFKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf V0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOworCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1 cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBOVUxMKTsKIH0K QEAgLTI2OCw2ICsyNzAsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfY29udGludWUoc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nOwogCXUzMiBmbGlwX2FkZHIgPSBv dmVybGF5LT5mbGlwX2FkZHI7CiAJdTMyIHRtcDsKIAlpbnQgcmV0OwpAQCAtMjkyLDkgKzI5NSwx MCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXksCiAJCXJldHVybiByZXQ7CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7Ci0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgZmxpcF9hZGRyKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwly aW5nID0gcmVxLT5yaW5nYnVmOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9PVkVSTEFZX0ZM SVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgZmxpcF9h ZGRyKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlXQVJOX09OKG92ZXJsYXktPmxh c3RfZmxpcF9yZXEpOwogCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvdmVybGF5LT5sYXN0X2Zs aXBfcmVxLCByZXEpOwpAQCAtMzM2LDYgKzM0MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3Zlcmxh eV9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwogCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nOwogCXUzMiBmbGlw X2FkZHIgPSBvdmVybGF5LT5mbGlwX2FkZHI7CiAJaW50IHJldDsKIApAQCAtMzU3LDI0ICszNjIs MjUgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSkKIAkJcmV0dXJuIHJldDsKIAl9CiAKKwlyaW5nID0gcmVxLT5yaW5nYnVmOwogCS8q IHdhaXQgZm9yIG92ZXJsYXkgdG8gZ28gaWRsZSAqLwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGZsaXBfYWRkcik7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgZmxpcF9hZGRyKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9G T1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwogCS8qIHR1cm4gb3ZlcmxheSBv ZmYgKi8KIAlpZiAoSVNfSTgzMChkZXZfcHJpdikpIHsKIAkJLyogV29ya2Fyb3VuZDogRG9uJ3Qg ZGlzYWJsZSB0aGUgb3ZlcmxheSBmdWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAJCSAqIGl0IGRpZXMg b24gdGhlIG5leHQgT1ZFUkxBWV9PTiBjbWQuICovCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IE1JX05PT1ApOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQkJaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTk9PUCk7CiAJfSBlbHNlIHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg TUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkYpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBmbGlwX2FkZHIpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkYpOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgZmxpcF9hZGRyKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJ TUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwogCX0KLQlpbnRl bF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAly ZXR1cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBpbnRlbF9v dmVybGF5X29mZl90YWlsKTsKIH0KQEAgLTQyMCw2ICs0MjYsNyBAQCBzdGF0aWMgaW50IGludGVs X292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQog CWlmIChJOTE1X1JFQUQoSVNSKSAmIEk5MTVfT1ZFUkxBWV9QTEFORV9GTElQX1BFTkRJTkdfSU5U RVJSVVBUKSB7CiAJCS8qIHN5bmNocm9ub3VzIHNsb3dwYXRoICovCiAJCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxOworCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZzsKIAog CQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgTlVMTCk7CiAJCWlmIChJU19F UlIocmVxKSkKQEAgLTQzMSwxMCArNDM4LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9y ZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJCQlyZXR1cm4g cmV0OwogCQl9CiAKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJcmluZyA9IHJlcS0+cmlu Z2J1ZjsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJTUlfV0FJVF9GT1JfRVZFTlQgfCBN SV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9O T09QKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9OT09QKTsKKwkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJCXJldCA9IGlu dGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwKIAkJCQkJCSAgICBpbnRl bF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZF90YWlsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwppbmRleCAxZWFmMzY4YmNjZTkuLjYwY2QzNmY2NGM2MSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIGlu dGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQog CQkJCQkgICAgcmluZ2J1Zi0+dGFpbCwgcmluZ2J1Zi0+c2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lk IF9faW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0 YXRpYyB2b2lkIF9faW50ZWxfZW5naW5lX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiB7CiAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBlbmdpbmUtPmJ1 ZmZlcjsKIAlyaW5nYnVmLT50YWlsICY9IHJpbmdidWYtPnNpemUgLSAxOwpAQCAtNzAsNyArNzAs NyBAQCBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCQkgICAgICAgdTMyCWludmFsaWRhdGVfZG9tYWlucywKIAkJICAgICAgIHUzMglmbHVz aF9kb21haW5zKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCXUz MiBjbWQ7CiAJaW50IHJldDsKIApAQCAtODUsOSArODUsOSBAQCBnZW4yX3JlbmRlcl9yaW5nX2Zs dXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTk3LDcgKzk3 LDcgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKIAkJICAgICAgIHUzMglpbnZhbGlkYXRlX2RvbWFpbnMsCiAJCSAgICAgICB1MzIJZmx1 c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVu Z2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAl1 MzIgY21kOwogCWludCByZXQ7CiAKQEAgLTEyOSwyMyArMTI5LDIwIEBAIGdlbjRfcmVuZGVyX3Jp bmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICogYXJlIGZsdXNo ZWQgYXQgYW55IE1JX0ZMVVNILgogCSAqLwogCi0JY21kID0gTUlfRkxVU0ggfCBNSV9OT19XUklU RV9GTFVTSDsKLQlpZiAoKGludmFsaWRhdGVfZG9tYWluc3xmbHVzaF9kb21haW5zKSAmIEk5MTVf R0VNX0RPTUFJTl9SRU5ERVIpCi0JCWNtZCAmPSB+TUlfTk9fV1JJVEVfRkxVU0g7Ci0JaWYgKGlu dmFsaWRhdGVfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTikKKwljbWQgPSBN SV9GTFVTSDsKKwlpZiAoaW52YWxpZGF0ZV9kb21haW5zKSB7CiAJCWNtZCB8PSBNSV9FWEVfRkxV U0g7Ci0KLQlpZiAoaW52YWxpZGF0ZV9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQg JiYKLQkgICAgKElTX0c0WChyZXEtPmk5MTUpIHx8IElTX0dFTjUocmVxLT5pOTE1KSkpCi0JCWNt ZCB8PSBNSV9JTlZBTElEQVRFX0lTUDsKKwkJaWYgKElTX0c0WChyZXEtPmk5MTUpIHx8IElTX0dF TjUocmVxLT5pOTE1KSkKKwkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0lTUDsKKwl9CiAKIAlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGNtZCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg TUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGNtZCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTkwLDM0ICsxODcsMzUgQEAg Z2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK IHN0YXRpYyBpbnQKIGludGVsX2VtaXRfcG9zdF9zeW5jX25vbnplcm9fZmx1c2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gcmVxLT5lbmdpbmU7Ci0JdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5n dHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKKwl1MzIgc2NyYXRjaF9hZGRyID0KKwkJcmVxLT5lbmdp bmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CiAJaW50IHJldDsK IAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgR0ZYX09QX1BJUEVfQ09OVFJPTCg1KSk7 Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg1KSk7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8CiAJCQlQSVBFX0NPTlRST0xfU1RBTExf QVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgc2NyYXRjaF9hZGRyIHwg UElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOyAvKiBhZGRyZXNzICovCi0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgMCk7IC8qIGxvdyBkd29yZCAqLwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDAp OyAvKiBoaWdoIGR3b3JkICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0 Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7IC8qIGxvdyBkd29yZCAqLworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogaGln aCBkd29yZCAqLworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5n X2FkdmFuY2UocmluZyk7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIEdGWF9PUF9Q SVBFX0NPTlRST0woNSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIFBJUEVfQ09OVFJPTF9R V19XUklURSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgc2NyYXRjaF9hZGRyIHwgUElQRV9D T05UUk9MX0dMT0JBTF9HVFQpOyAvKiBhZGRyZXNzICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNSkpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBQSVBFX0NPTlRST0xfUVdfV1JJVEUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3Jh dGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0yMjYsOSArMjI0LDEwIEBAIHN0YXRpYyBpbnQKIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2go c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIgaW52YWxpZGF0 ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9 IHJlcS0+cmluZ2J1ZjsKKwl1MzIgc2NyYXRjaF9hZGRyID0KKwkJcmVxLT5lbmdpbmUtPnNjcmF0 Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CiAJdTMyIGZsYWdzID0gMDsKLQl1 MzIgc2NyYXRjaF9hZGRyID0gZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVM SU5FX0JZVEVTOwogCWludCByZXQ7CiAKIAkvKiBGb3JjZSBTTkIgd29ya2Fyb3VuZHMgZm9yIFBJ UEVfQ09OVFJPTCBmbHVzaGVzICovCkBAIC0yNjYsMTEgKzI2NSwxMSBAQCBnZW42X3JlbmRlcl9y aW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBHRlhfT1BfUElQRV9DT05U Uk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmbGFncyk7Ci0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2Fk ZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjc4LDE5 ICsyNzcsMjAgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfY3Nfc3RhbGxfd2Eoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcg PSByZXEtPnJpbmdidWY7CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx LCA0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgUElQ RV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCSAgICAgIFBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09S RUJPQVJEKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs CisJCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkJUElQRV9DT05UUk9MX1NUQUxMX0FUX1ND T1JFQk9BUkQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0yOTksOSArMjk5LDEwIEBAIHN0YXRpYyBpbnQKIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9k b21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJl cS0+cmluZ2J1ZjsKKwl1MzIgc2NyYXRjaF9hZGRyID0KKwkJcmVxLT5lbmdpbmUtPnNjcmF0Y2gu Z3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CiAJdTMyIGZsYWdzID0gMDsKLQl1MzIg c2NyYXRjaF9hZGRyID0gZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5F X0JZVEVTOwogCWludCByZXQ7CiAKIAkvKgpAQCAtMzUwLDExICszNTEsMTEgQEAgZ2VuN19yZW5k ZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgR0ZYX09QX1BJUEVf Q09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmxhZ3MpOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg MCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpA QCAtMzYzLDIwICszNjQsMjAgQEAgc3RhdGljIGludAogZ2VuOF9lbWl0X3BpcGVfY29udHJvbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMiBmbGFncywgdTMy IHNjcmF0Y2hfYWRkcikKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEt PmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsK IAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBHRlhfT1BfUElQRV9D T05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmbGFncyk7Ci0JaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgc2NyYXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAw KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdz KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTM4NSw4ICszODYsOCBAQCBzdGF0aWMgaW50CiBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICAgICAgdTMyIGludmFsaWRhdGVf ZG9tYWlucywgdTMyIGZsdXNoX2RvbWFpbnMpCiB7Ci0JdTMyIGZsYWdzID0gMDsKIAl1MzIgc2Ny YXRjaF9hZGRyID0gcmVxLT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJ TkVfQllURVM7CisJdTMyIGZsYWdzID0gMDsKIAlpbnQgcmV0OwogCiAJZmxhZ3MgfD0gUElQRV9D T05UUk9MX0NTX1NUQUxMOwpAQCAtNjg0LDE0ICs2ODUsMTQgQEAgZXJyOgogCiBzdGF0aWMgaW50 IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsK KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3Qg aTkxNV93b3JrYXJvdW5kcyAqdyA9ICZyZXEtPmk5MTUtPndvcmthcm91bmRzOwogCWludCByZXQs IGk7CiAKIAlpZiAody0+Y291bnQgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQllbmdpbmUtPmdwdV9j YWNoZXNfZGlydHkgPSB0cnVlOworCXJlcS0+ZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1 ZTsKIAlyZXQgPSBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwpAQCAtNzAwLDE2ICs3MDEsMTYgQEAgc3RhdGljIGludCBpbnRlbF9yaW5n X3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURf UkVHSVNURVJfSU1NKHctPmNvdW50KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURf UkVHSVNURVJfSU1NKHctPmNvdW50KSk7CiAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKysp IHsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIHctPnJlZ1tpXS5hZGRyKTsKLQkJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgdy0+cmVnW2ldLnZhbHVlKTsKKwkJaW50ZWxfcmluZ19lbWl0 X3JlZyhyaW5nLCB3LT5yZWdbaV0uYWRkcik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCB3LT5y ZWdbaV0udmFsdWUpOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5n aW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKLQllbmdpbmUtPmdwdV9jYWNoZXNf ZGlydHkgPSB0cnVlOworCXJlcS0+ZW5naW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKIAly ZXQgPSBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwpAQCAtMTMyNyw3ICsxMzI4LDcgQEAgc3RhdGljIGludCBnZW44X3Jjc19zaWduYWwo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogCQkJICAgdW5zaWdu ZWQgaW50IG51bV9kd29yZHMpCiB7CiAjZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyA4Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOwor CXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5n YnVmOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEt Pmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwpAQCAtMTM0MiwyMCArMTM0MywyMyBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3Np Z25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJCXJldHVy biByZXQ7CiAKIAlmb3JfZWFjaF9lbmdpbmVfaWQod2FpdGVyLCBkZXZfcHJpdiwgaWQpIHsKLQkJ dTY0IGd0dF9vZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CisJ CXU2NCBndHRfb2Zmc2V0ID0KKwkJCXNpZ25hbGxlcl9yZXEtPmVuZ2luZS0+c2VtYXBob3JlLnNp Z25hbF9nZ3R0W2lkXTsKIAkJaWYgKGd0dF9vZmZzZXQgPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5W QUxJRCkKIAkJCWNvbnRpbnVlOwogCiAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIEdGWF9P UF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBQSVBFX0NP TlRST0xfR0xPQkFMX0dUVF9JVkIgfAotCQkJCQkgICBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAot CQkJCQkgICBQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOworCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFs bGVyLAorCQkJCVBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8CisJCQkJUElQRV9DT05UUk9M X1FXX1dSSVRFIHwKKwkJCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOwogCQlpbnRlbF9yaW5nX2Vt aXQoc2lnbmFsbGVyLCBsb3dlcl8zMl9iaXRzKGd0dF9vZmZzZXQpKTsKIAkJaW50ZWxfcmluZ19l bWl0KHNpZ25hbGxlciwgdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7CiAJCWludGVsX3Jpbmdf ZW1pdChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPmZlbmNlLnNlcW5vKTsKIAkJaW50ZWxfcmlu Z19lbWl0KHNpZ25hbGxlciwgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIE1JX1NF TUFQSE9SRV9TSUdOQUwgfAotCQkJCQkgICBNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdf aWQpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwKKwkJCQlNSV9TRU1BUEhPUkVfU0lH TkFMIHwKKwkJCQlNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdfaWQpKTsKIAkJaW50ZWxf cmluZ19lbWl0KHNpZ25hbGxlciwgMCk7CiAJfQogCkBAIC0xMzY2LDcgKzEzNzAsNyBAQCBzdGF0 aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25h bGxlcl9yZXEsCiAJCQkgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKIHsKICNkZWZpbmUgTUJP WF9VUERBVEVfRFdPUkRTIDYKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIgPSBz aWduYWxsZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnNpZ25hbGxl ciA9IHNpZ25hbGxlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gc2lnbmFsbGVyX3JlcS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3 YWl0ZXI7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CkBAIC0xMzgxLDE4ICsxMzg1LDIxIEBA IHN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq c2lnbmFsbGVyX3JlcSwKIAkJcmV0dXJuIHJldDsKIAogCWZvcl9lYWNoX2VuZ2luZV9pZCh3YWl0 ZXIsIGRldl9wcml2LCBpZCkgewotCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlci0+c2VtYXBo b3JlLnNpZ25hbF9nZ3R0W2lkXTsKKwkJdTY0IGd0dF9vZmZzZXQgPQorCQkJc2lnbmFsbGVyX3Jl cS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbaWRdOwogCQlpZiAoZ3R0X29mZnNldCA9 PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQogCQkJY29udGludWU7CiAKLQkJaW50ZWxfcmlu Z19lbWl0KHNpZ25hbGxlciwgKE1JX0ZMVVNIX0RXICsgMSkgfAotCQkJCQkgICBNSV9GTFVTSF9E V19PUF9TVE9SRURXKTsKLQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgbG93ZXJfMzJfYml0 cyhndHRfb2Zmc2V0KSB8Ci0JCQkJCSAgIE1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCQlpbnRlbF9y aW5nX2VtaXQoc2lnbmFsbGVyLAorCQkJCShNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdf T1BfU1RPUkVEVyk7CisJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsCisJCQkJbG93ZXJfMzJf Yml0cyhndHRfb2Zmc2V0KSB8CisJCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7CiAJCWludGVsX3Jp bmdfZW1pdChzaWduYWxsZXIsIHVwcGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwogCQlpbnRlbF9y aW5nX2VtaXQoc2lnbmFsbGVyLCBzaWduYWxsZXJfcmVxLT5mZW5jZS5zZXFubyk7Ci0JCWludGVs X3JpbmdfZW1pdChzaWduYWxsZXIsIE1JX1NFTUFQSE9SRV9TSUdOQUwgfAotCQkJCQkgICBNSV9T RU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdfaWQpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25h bGxlciwKKwkJCQlNSV9TRU1BUEhPUkVfU0lHTkFMIHwKKwkJCQlNSV9TRU1BUEhPUkVfVEFSR0VU KHdhaXRlci0+aHdfaWQpKTsKIAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgMCk7CiAJfQog CkBAIC0xNDAyLDcgKzE0MDksNyBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiBzdGF0aWMgaW50IGdlbjZfc2ln bmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKIAkJICAgICAg IHVuc2lnbmVkIGludCBudW1fZHdvcmRzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNp Z25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWduYWxsZXJfcmVxLT5pOTE1OwogCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnVzZWxlc3M7CiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CkBAIC0xNDE4LDcg KzE0MjUsOCBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqc2lnbmFsbGVyX3JlcSwKIAkJcmV0dXJuIHJldDsKIAogCWZvcl9lYWNoX2VuZ2luZV9p ZCh1c2VsZXNzLCBkZXZfcHJpdiwgaWQpIHsKLQkJaTkxNV9yZWdfdCBtYm94X3JlZyA9IHNpZ25h bGxlci0+c2VtYXBob3JlLm1ib3guc2lnbmFsW2lkXTsKKwkJaTkxNV9yZWdfdCBtYm94X3JlZyA9 CisJCQlzaWduYWxsZXJfcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5tYm94LnNpZ25hbFtpZF07CiAK IAkJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQobWJveF9yZWcpKSB7CiAJCQlpbnRlbF9yaW5nX2Vt aXQoc2lnbmFsbGVyLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CkBAIC0xNDQ1LDIzICsxNDUz LDIyIEBAIHN0YXRpYyBpbnQgZ2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpzaWduYWxsZXJfcmVxLAogc3RhdGljIGludAogZ2VuNl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+ cmluZ2J1ZjsKIAlpbnQgcmV0OwogCi0JaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkKLQkJ cmV0ID0gZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSwgNCk7CisJaWYgKHJlcS0+ZW5naW5l LT5zZW1hcGhvcmUuc2lnbmFsKQorCQlyZXQgPSByZXEtPmVuZ2luZS0+c2VtYXBob3JlLnNpZ25h bChyZXEsIDQpOwogCWVsc2UKIAkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwogCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NU T1JFX0RXT1JEX0lOREVYKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAotCQkJSTkxNV9HRU1f SFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCByZXEtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBN SV9VU0VSX0lOVEVSUlVQVCk7Ci0JX19pbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOworCWludGVsX3JpbmdfZW1p dChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNlLnNlcW5vKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCV9faW50ZWxfZW5naW5lX3N1Ym1pdChy ZXEtPmVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0NzAsNiArMTQ3Nyw3IEBAIHN0YXRp YyBpbnQKIGdlbjhfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5l OworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCBy ZXQ7CiAKIAlpZiAoZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKQpAQCAtMTQ3OSwxOCArMTQ4Nywx OCBAQCBnZW44X3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgKFBJ UEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkJIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8 Ci0JCQkJIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcS0+ZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaTkxNV9nZW1fcmVxdWVzdF9n ZXRfc2Vxbm8ocmVxKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRS T0woNikpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAoUElQRV9DT05UUk9MX0dMT0JBTF9HVFRf SVZCIHwKKwkJCSAgICAgICBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkJICAgICAgIFBJUEVf Q09OVFJPTF9RV19XUklURSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9od3Nfc2Vx bm9fYWRkcmVzcyhlbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkpOwogCS8qIFdl J3JlIHRocmFzaGluZyBvbmUgZHdvcmQgb2YgSFdTLiAqLwotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1VTRVJfSU5URVJSVVBUKTsKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlfX2ludGVsX3JpbmdfYWR2YW5jZShl bmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK KwlfX2ludGVsX2VuZ2luZV9zdWJtaXQoZW5naW5lKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTUx NCw5ICsxNTIyLDkgQEAgZ2VuOF9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICp3YWl0ZXJfcmVxLAogCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIs CiAJICAgICAgIHUzMiBzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXIg PSB3YWl0ZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9 IHdhaXRlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gd2FpdGVyX3JlcS0+aTkxNTsKLQl1NjQgb2Zmc2V0ID0gR0VOOF9XQUlUX09GRlNFVCh3YWl0 ZXIsIHNpZ25hbGxlci0+aWQpOworCXU2NCBvZmZzZXQgPSBHRU44X1dBSVRfT0ZGU0VUKHdhaXRl cl9yZXEtPmVuZ2luZSwgc2lnbmFsbGVyLT5pZCk7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0OwogCWludCByZXQ7CiAKQEAgLTE1NDgsMTEgKzE1NTYsMTEgQEAgZ2VuNl9yaW5nX3N5bmMo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAogCSAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCiAJICAgICAgIHUzMiBzZXFubykKIHsKLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmdidWY7CiAJdTMyIGR3 MSA9IE1JX1NFTUFQSE9SRV9NQk9YIHwKIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8CiAJCSAg TUlfU0VNQVBIT1JFX1JFR0lTVEVSOwotCXUzMiB3YWl0X21ib3ggPSBzaWduYWxsZXItPnNlbWFw aG9yZS5tYm94LndhaXRbd2FpdGVyLT5pZF07CisJdTMyIHdhaXRfbWJveCA9IHNpZ25hbGxlci0+ c2VtYXBob3JlLm1ib3gud2FpdFt3YWl0ZXJfcmVxLT5lbmdpbmUtPmlkXTsKIAlpbnQgcmV0Owog CiAJLyogVGhyb3VnaG91dCBhbGwgb2YgdGhlIEdFTSBjb2RlLCBzZXFubyBwYXNzZWQgaW1wbGll cyBvdXIgY3VycmVudApAQCAtMTY4MiwzNSArMTY5MCwzNCBAQCBic2RfcmluZ19mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgICAgICAgdTMyICAgICBpbnZhbGlkYXRl X2RvbWFpbnMsCiAJICAgICAgIHUzMiAgICAgZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmlu Z19iZWdpbihyZXEsIDIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBNSV9GTFVTSCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX0ZMVVNIKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiBpOXh4X2FkZF9y ZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX1NUT1JFX0RXT1JEX0lOREVYKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLAotCQkJSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZU KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCByZXEtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JX19pbnRlbF9yaW5nX2FkdmFu Y2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdPUkRfSU5ERVgp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVf RFdPUkRfSU5ERVhfU0hJRlQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNlLnNl cW5vKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCV9faW50 ZWxfZW5naW5lX3N1Ym1pdChyZXEtPmVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE3Nzcs MjAgKzE3ODQsMjAgQEAgaTk2NV9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAogCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCiAJCQkgdW5zaWdu ZWQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0g cmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlpbnRlbF9y aW5nX2VtaXQocmluZywKIAkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8CiAJCQlNSV9CQVRDSF9H VFQgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwogCQkJIDAg OiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBv ZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBvZmZzZXQpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwog fQpAQCAtMTgwNCw4ICsxODExLDggQEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkg dW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gcmVxLT5lbmdpbmU7Ci0JdTMyIGNzX29mZnNldCA9IGVuZ2luZS0+c2NyYXRjaC5ndHRf b2Zmc2V0OworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwor CXUzMiBjc19vZmZzZXQgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0OwogCWludCBy ZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CkBAIC0xODEzLDEzICsxODIw LDEzIEBAIGk4MzBfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKIAkJcmV0dXJuIHJldDsKIAogCS8qIEV2aWN0IHRoZSBpbnZhbGlkIFBURSBUTEJz ICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9S R0JBKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBCTFRfREVQVEhfMzIgfCBCTFRfUk9QX0NP TE9SX0NPUFkgfCA0MDk2KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBJODMwX1RMQl9FTlRS SUVTIDw8IDE2IHwgNCk7IC8qIGxvYWQgZWFjaCBwYWdlICovCi0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgY3Nfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAweGRlYWRiZWVmKTsK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo ZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklU RV9SR0JBKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9D T0xPUl9DT1BZIHwgNDA5Nik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEk4MzBfVExCX0VOVFJJ RVMgPDwgMTYgfCA0KTsgLyogbG9hZCBlYWNoIHBhZ2UgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgY3Nfb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMHhkZWFkYmVlZik7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK IAogCWlmICgoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1BJTk5FRCkgPT0gMCkgewog CQlpZiAobGVuID4gSTgzMF9CQVRDSF9MSU1JVCkKQEAgLTE4MzMsMTcgKzE4NDAsMTcgQEAgaTgz MF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CQkgKiBzdGFibGUgYmF0Y2ggc2NyYXRjaCBibyBhcmVhIChzbyB0aGF0IHRoZSBDUyBuZXZlcgog CQkgKiBzdHVtYmxlcyBvdmVyIGl0cyB0bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4uCiAJCSAqLwot CQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JH QkEpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQlpbnRlbF9yaW5nX2VtaXQocmluZywg U1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsCiAJCQkJQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYpOwotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAxNiB8IDQwOTYp OwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjc19vZmZzZXQpOwotCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgb2Zmc2V0KTsKKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIERJVl9ST1VORF9VUChsZW4sIDQwOTYpIDw8IDE2IHwgNDA5 Nik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOworCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgNDA5Nik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOwogCi0JCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0ZMVVNIKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfRkxVU0gpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 CisJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCQkvKiAuLi4gYW5kIGV4ZWN1dGUgaXQu ICovCiAJCW9mZnNldCA9IGNzX29mZnNldDsKQEAgLTE4NTMsMTAgKzE4NjAsMTAgQEAgaTgzMF9k aXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9CQVRD SF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IG9mZnNldCB8IChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KLQkJCQkJ ICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSkpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRD SF9HVFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3Mg JiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCQkJCTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7 CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xODY2LDE3 ICsxODczLDE3IEBAIGk5MTVfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAkJCSB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJIHVuc2lnbmVkIGRp c3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwog CWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0JBVENIX0JVRkZF Ul9TVEFSVCB8IE1JX0JBVENIX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgb2Zmc2V0 IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwotCQkJCQkgIDAgOiBN SV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVCk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCB8IChkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFID8KKwkJCQkJMCA6IE1JX0JBVENIX05PTl9TRUNVUkUpKTsKKwlpbnRl bF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI0MTcsOCArMjQyNCw5 IEBAIGludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LCBpbnQgbnVtX2R3b3JkcykKIC8qIEFsaWduIHRoZSByaW5nIHRhaWwgdG8gYSBjYWNoZWxpbmUg Ym91bmRhcnkgKi8KIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKLQlpbnQgbnVtX2R3b3JkcyA9IChlbmdpbmUtPmJ1ZmZlci0+dGFpbCAm IChDQUNIRUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOworCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOworCWludCBudW1fZHdvcmRzID0KKwkJ KHJpbmctPnRhaWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVpbnQzMl90KTsK IAlpbnQgcmV0OwogCiAJaWYgKG51bV9kd29yZHMgPT0gMCkKQEAgLTI0MzAsOSArMjQzOCw5IEBA IGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKIAkJcmV0dXJuIHJldDsKIAogCXdoaWxlIChudW1fZHdvcmRzLS0pCi0JCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf Tk9PUCk7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI1MjMsNyArMjUzMSw3IEBAIHN0YXRpYyB2 b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiBzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCiAJCQkgICAgICAgdTMyIGludmFsaWRhdGUsIHUzMiBmbHVzaCkKIHsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAl1aW50MzJfdCBjbWQ7CiAJaW50 IHJldDsKIApAQCAtMjU1MSwxNyArMjU1OSwxNiBAQCBzdGF0aWMgaW50IGdlbjZfYnNkX3Jpbmdf Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJaWYgKGludmFsaWRhdGUg JiBJOTE1X0dFTV9HUFVfRE9NQUlOUykKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVfVExCIHwgTUlf SU5WQUxJREFURV9CU0Q7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQpOwotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsCi0JCQlJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlfRkxV U0hfRFdfVVNFX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVTSF9EV19VU0Vf R1RUKTsKIAlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0gOCkgewotCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCAwKTsgLyogdmFsdWUgKi8KKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBh ZGRyICovCisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUgKi8KIAl9IGVsc2Ug IHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9OT09QKTsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCXJldHVybiAwOwogfQogCkBAIC0yNTcwLDggKzI1 NzcsOCBAQCBnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkgICAgICB1 bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSByZXEtPmVuZ2luZTsKLQlib29sIHBwZ3R0ID0gVVNFU19QUEdUVChlbmdpbmUtPmRldikg JiYKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKKwlib29s IHBwZ3R0ID0gVVNFU19QUEdUVChyZXEtPmk5MTUpICYmCiAJCQkhKGRpc3BhdGNoX2ZsYWdzICYg STkxNV9ESVNQQVRDSF9TRUNVUkUpOwogCWludCByZXQ7CiAKQEAgLTI1ODAsMTMgKzI1ODcsMTMg QEAgZ2VuOF9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCiAJCXJldHVybiByZXQ7CiAKIAkvKiBGSVhNRShCRFcpOiBBZGRyZXNzIHNwYWNl IGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlf QkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKIAkJCShkaXNw YXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwogCQkJIE1JX0JBVENIX1JFU09VUkNFX1NU UkVBTUVSIDogMCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGxvd2VyXzMyX2JpdHMob2Zm c2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo ZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0yNTk2LDIyICsyNjAzLDIyIEBAIGhzd19yaW5nX2Rpc3BhdGNoX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgICAgIHU2NCBv ZmZzZXQsIHUzMiBsZW4sCiAJCQkgICAgIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQogewotCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQlNSV9CQVRD SF9CVUZGRVJfU1RBUlQgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNV UkUgPwogCQkJIDAgOiBNSV9CQVRDSF9QUEdUVF9IU1cgfCBNSV9CQVRDSF9OT05fU0VDVVJFX0hT VykgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/CiAJCQkgTUlfQkFU Q0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7CiAJLyogYml0MC03IGlzIHRoZSBsZW5ndGggb24g R0VONisgKi8KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBvZmZzZXQpOwotCWludGVsX3Jpbmdf YWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOworCWludGVs X3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjYyMSwyMCArMjYyOCwy MCBAQCBnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkgICAgICB1bnNp Z25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCWludGVs X3JpbmdfZW1pdChyaW5nLAogCQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKIAkJCShkaXNwYXRj aF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KIAkJCSAwIDogTUlfQkFUQ0hfTk9OX1NF Q1VSRV9JOTY1KSk7CiAJLyogYml0MC03IGlzIHRoZSBsZW5ndGggb24gR0VONisgKi8KLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOworCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjY0NCw3ICsyNjUxLDcgQEAgZ2VuNl9yaW5nX2Rp c3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiBzdGF0 aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK IAkJCSAgIHUzMiBpbnZhbGlkYXRlLCB1MzIgZmx1c2gpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmdidWY7CiAJdWludDMyX3QgY21kOwogCWludCByZXQ7CiAKQEAgLTI2NzEs MTcgKzI2NzgsMTcgQEAgc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICovCiAJaWYgKGludmFsaWRhdGUgJiBJOTE1X0dFTV9ET01B SU5fUkVOREVSKQogCQljbWQgfD0gTUlfSU5WQUxJREFURV9UTEI7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCWludGVsX3JpbmdfZW1p dChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJSTkxNV9HRU1fSFdTX1ND UkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOwogCWlmIChJTlRFTF9HRU4ocmVxLT5p OTE1KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiB1cHBlciBhZGRy ICovCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiB2YWx1ZSAqLworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOyAvKiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCX0KLQlp bnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAK IAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRl eCAzNGQ3OWI4ZmNiN2QuLjRlYWM0YzA2NmMxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaApAQCAtNDUzLDMyICs0NTMsMjEgQEAgaW50IGludGVsX3JpbmdfYWxsb2Nf cmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKIGlu dCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgaW50IG4pOwogaW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2NhY2hlbGluZV9h bGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiAKLXN0YXRpYyBpbmxpbmUg dm9pZCBfX2ludGVsX3JpbmdidWZmZXJfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmIs Ci0JCQkJCSAgIHUzMiBkYXRhKQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdChz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZywgdTMyIGRhdGEpCiB7Ci0JKih1aW50MzJfdCAq KShyYi0+dmFkZHIgKyByYi0+dGFpbCkgPSBkYXRhOwotCXJiLT50YWlsICs9IDQ7CisJKih1aW50 MzJfdCAqKShyaW5nLT52YWRkciArIHJpbmctPnRhaWwpID0gZGF0YTsKKwlyaW5nLT50YWlsICs9 IDQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVsX3JpbmdidWZmZXJfYWR2YW5jZShz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmIpCi17Ci0JcmItPnRhaWwgJj0gcmItPnNpemUgLSAx OwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgdTMyIGRhdGEpCi17Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2VtaXQo ZW5naW5lLT5idWZmZXIsIGRhdGEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmlu Z19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCitzdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfcmluZ19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZywK IAkJCQkgICAgICAgaTkxNV9yZWdfdCByZWcpCiB7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg aTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVf bW1pb19yZWdfb2Zmc2V0KHJlZykpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmlu Z19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyBpbmxpbmUg dm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcpCiB7 Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2FkdmFuY2UoZW5naW5lLT5idWZmZXIpOworCXJpbmctPnRh aWwgJj0gcmluZy0+c2l6ZSAtIDE7CiB9CiAKIGludCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhl YWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7Ci0tIAoyLjguMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==