From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/62] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit Date: Fri, 3 Jun 2016 17:36:50 +0100 Message-ID: <1464971847-15809-26-git-send-email-chris@chris-wilson.co.uk> References: <1464971847-15809-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-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 63D0E6EE31 for ; Fri, 3 Jun 2016 16:38:01 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id n184so619503wmn.1 for ; Fri, 03 Jun 2016 09:38:01 -0700 (PDT) In-Reply-To: <1464971847-15809-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 X2dlbV9jb250ZXh0LmMgICAgfCAgNTQgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYyB8ICA1MyArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgICAgICAgIHwgIDYyICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgICAgICAgfCAgODAgKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICAgIHwgMTYwICsrKysrKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oICAgICAgICAgICB8ICAyNiAtLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbW9jcy5jICAgICAgICAgIHwgIDM4ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jICAgICAgIHwgIDUwICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYyAgICB8IDM2NSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgIDIzICstCiAxMCBmaWxlcyBj aGFuZ2VkLCA0MzkgaW5zZXJ0aW9ucygrKSwgNDcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA3YzExNGY5MGY2MWEuLjQxZTMyNDI2ZDE3 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNTE0LDcgKzUx NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50CiBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+ cmluZ2J1ZjsKIAl1MzIgZmxhZ3MgPSBod19mbGFncyB8IE1JX01NX1NQQUNFX0dUVDsKIAljb25z dCBpbnQgbnVtX3JpbmdzID0KIAkJLyogVXNlIGFuIGV4dGVuZGVkIHcvYSBvbiBpdmIrIGlmIHNp Z25hbGxpbmcgZnJvbSBvdGhlciByaW5ncyAqLwpAQCAtNTI5LDcgKzUyOSw3IEBAIG1pX3NldF9j b250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3MpCiAJ ICogaXRsYl9iZWZvcmVfY3R4X3N3aXRjaC4KIAkgKi8KIAlpZiAoSVNfR0VONihkZXZfcHJpdikp IHsKLQkJcmV0ID0gZW5naW5lLT5mbHVzaChyZXEsIEk5MTVfR0VNX0dQVV9ET01BSU5TLCAwKTsK KwkJcmV0ID0gcmVxLT5lbmdpbmUtPmZsdXNoKHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIDAp OwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC01NTEsNjQgKzU1MSw2NCBAQCBt aV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2Zs YWdzKQogCiAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2 LGhzdyxiZHcsY2h2ICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEUpOworCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKIAkJ aWYgKG51bV9yaW5ncykgewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwog Ci0JCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJ CQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncykpOwogCQkJZm9yX2VhY2hfZW5naW5l KHNpZ25hbGxlciwgZGV2X3ByaXYpIHsKLQkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKKwkJ CQlpZiAoc2lnbmFsbGVyID09IHJlcS0+ZW5naW5lKQogCQkJCQljb250aW51ZTsKIAotCQkJCWlu dGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLAorCQkJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywK IAkJCQkJCSAgICBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1pb19iYXNlKSk7Ci0JCQkJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJCQkJCV9N QVNLRURfQklUX0VOQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpKTsKIAkJCX0KIAkJ fQogCX0KIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX1NFVF9DT05URVhUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAor CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfU0VUX0NPTlRFWFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJaTkxNV9nZW1fb2Jq X2dndHRfb2Zmc2V0KHJlcS0+Y3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSkgfAogCQkJZmxhZ3MpOwog CS8qCiAJICogdy9hOiBNSV9TRVRfQ09OVEVYVCBtdXN0IGFsd2F5cyBiZSBmb2xsb3dlZCBieSBN SV9OT09QCiAJICogV2FNaVNldENvbnRleHRfSGFuZzpzbmIsaXZiLHZsdgogCSAqLwotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKIAkJaWYgKG51bV9yaW5n cykgewogCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCQkJaTkxNV9yZWdf dCBsYXN0X3JlZyA9IHt9OyAvKiBrZWVwIGdjYyBxdWlldCAqLwogCi0JCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLAorCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJCU1JX0xPQURfUkVHSVNU RVJfSU1NKG51bV9yaW5ncykpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwgZGV2X3By aXYpIHsKLQkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKKwkJCQlpZiAoc2lnbmFsbGVyID09 IHJlcS0+ZW5naW5lKQogCQkJCQljb250aW51ZTsKIAogCQkJCWxhc3RfcmVnID0gUklOR19QU01J X0NUTChzaWduYWxsZXItPm1taW9fYmFzZSk7Ci0JCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdp bmUsIGxhc3RfcmVnKTsKLQkJCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQkJCWludGVsX3Jp bmdfZW1pdF9yZWcocmluZywgbGFzdF9yZWcpOworCQkJCWludGVsX3JpbmdfZW1pdChyaW5nLAog CQkJCQkJX01BU0tFRF9CSVRfRElTQUJMRShHRU42X1BTTUlfU0xFRVBfTVNHX0RJU0FCTEUpKTsK IAkJCX0KIAogCQkJLyogSW5zZXJ0IGEgZGVsYXkgYmVmb3JlIHRoZSBuZXh0IHN3aXRjaCEgKi8K LQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCisJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJ CQkJTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKIAkJCQkJTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsK LQkJCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBsYXN0X3JlZyk7Ci0JCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBlbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCk7Ci0JCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBNSV9OT09QKTsKKwkJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgbGFz dF9yZWcpOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZW5naW5lLT5zY3JhdGNoLmd0 dF9vZmZzZXQpOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCQl9Ci0JCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKIAl9 CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjE2LDcgKzYxNiw3IEBAIG1pX3NldF9jb250ZXh0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3MpCiBzdGF0aWMg aW50IHJlbWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc2xpY2Up CiB7CiAJdTMyICpyZW1hcF9pbmZvID0gcmVxLT5pOTE1LT5sM19wYXJpdHkucmVtYXBfaW5mb1tz bGljZV07Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50IGksIHJl dDsKIAogCWlmICghcmVtYXBfaW5mbykKQEAgLTYzMSwxMyArNjMxLDEzIEBAIHN0YXRpYyBpbnQg cmVtYXBfbDMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzbGljZSkKIAkg KiBoZXJlIGJlY2F1c2Ugbm8gb3RoZXIgY29kZSBzaG91bGQgYWNjZXNzIHRoZXNlIHJlZ2lzdGVy cyBvdGhlciB0aGFuCiAJICogYXQgaW5pdGlhbGl6YXRpb24gdGltZS4KIAkgKi8KLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9HX1NJWkUvNCkp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9H X1NJWkUvNCkpOwogCWZvciAoaSA9IDA7IGkgPCBHRU43X0wzTE9HX1NJWkUvNDsgaSsrKSB7Ci0J CWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU43X0wzTE9HKHNsaWNlLCBpKSk7Ci0JCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIHJlbWFwX2luZm9baV0pOworCQlpbnRlbF9yaW5nX2VtaXRf cmVnKHJpbmcsIEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IHJlbWFwX2luZm9baV0pOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf Tk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMTQ3Mjc5ZmMxYjY3 Li45OTY2M2U4NDI5YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMKQEAgLTExMzgsMTQgKzExMzgsMTIgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXRpcmVf Y29tbWFuZHMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcykKIH0KIAogc3Rh dGljIGludAotaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCi0JCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCitpOTE1X3Jlc2V0 X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0LCBpOwogCi0JaWYg KCFJU19HRU43KGRldikgfHwgZW5naW5lICE9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU10pIHsKKwlp ZiAoIUlTX0dFTjcocmVxLT5pOTE1KSB8fCByZXEtPmVuZ2luZS0+aWQgIT0gUkNTKSB7CiAJCURS TV9ERUJVRygic29sIHJlc2V0IGlzIGdlbjcvcmNzIG9ubHlcbiIpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CkBAIC0xMTU1LDEyICsxMTUzLDEyIEBAIGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyZXR1cm4gcmV0OwogCiAJZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKSk7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU43X1NPX1dSSVRFX09G RlNFVChpKSk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOworCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmcsIEdFTjdfU09fV1JJVEVfT0ZGU0VUKGkpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IDApOwogCX0KIAotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTIyMyw5ICsxMjIxLDcgQEAgaTkxNV9n ZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpw YXJhbXMsCiAJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncywK IAkJCSAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzKQogewotCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBwYXJhbXMtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBw YXJhbXMtPmVuZ2luZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHBhcmFt cy0+cmVxdWVzdC0+aTkxNTsKIAl1NjQgZXhlY19zdGFydCwgZXhlY19sZW47CiAJaW50IGluc3Rw X21vZGU7CiAJdTMyIGluc3RwX21hc2s7CkBAIC0xMjM5LDM0ICsxMjM1LDMxIEBAIGk5MTVfZ2Vt X3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFy YW1zLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlXQVJOKHBhcmFtcy0+Y3R4LT5wcGd0 dCAmJiBwYXJhbXMtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzICYgKDE8PGVuZ2luZS0+aWQp LAotCSAgICAgIiVzIGRpZG4ndCBjbGVhciByZWxvYWRcbiIsIGVuZ2luZS0+bmFtZSk7Ci0KIAlp bnN0cF9tb2RlID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQ09OU1RBTlRTX01BU0s7CiAJaW5z dHBfbWFzayA9IEk5MTVfRVhFQ19DT05TVEFOVFNfTUFTSzsKIAlzd2l0Y2ggKGluc3RwX21vZGUp IHsKIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dFTkVSQUw6CiAJY2FzZSBJOTE1X0VY RUNfQ09OU1RBTlRTX0FCU09MVVRFOgogCWNhc2UgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VS RkFDRToKLQkJaWYgKGluc3RwX21vZGUgIT0gMCAmJiBlbmdpbmUgIT0gJmRldl9wcml2LT5lbmdp bmVbUkNTXSkgeworCQlpZiAoaW5zdHBfbW9kZSAhPSAwICYmIHBhcmFtcy0+ZW5naW5lLT5pZCAh PSBSQ1MpIHsKIAkJCURSTV9ERUJVRygibm9uLTAgcmVsIGNvbnN0YW50cyBtb2RlIG9uIG5vbi1S Q1NcbiIpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAogCQlpZiAoaW5zdHBfbW9kZSAhPSBk ZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKLQkJCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDQpIHsKKwkJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNCkgewog CQkJCURSTV9ERUJVRygibm8gcmVsIGNvbnN0YW50cyBvbiBwcmUtZ2VuNFxuIik7CiAJCQkJcmV0 dXJuIC1FSU5WQUw7CiAJCQl9CiAKLQkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDUgJiYK KwkJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID4gNSAmJgogCQkJICAgIGluc3RwX21v ZGUgPT0gSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRSkgewogCQkJCURSTV9ERUJVRygi cmVsIHN1cmZhY2UgY29uc3RhbnRzIG1vZGUgaW52YWxpZCBvbiBnZW41K1xuIik7CiAJCQkJcmV0 dXJuIC1FSU5WQUw7CiAJCQl9CiAKIAkJCS8qIFRoZSBIVyBjaGFuZ2VkIHRoZSBtZWFuaW5nIG9u IHRoaXMgYml0IG9uIGdlbjYgKi8KLQkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQor CQkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKIAkJCQlpbnN0cF9tYXNrICY9 IH5JOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOwogCQl9CiAJCWJyZWFrOwpAQCAtMTI3 NSwyMyArMTI2OCwyNSBAQCBpOTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5 MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0J aWYgKGVuZ2luZSA9PSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdICYmCisJaWYgKHBhcmFtcy0+ZW5n aW5lLT5pZCA9PSBSQ1MgJiYKIAkgICAgaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVf Y29uc3RhbnRzX21vZGUpIHsKKwkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSBwYXJh bXMtPnJlcXVlc3QtPnJpbmdidWY7CisKIAkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihwYXJhbXMt PnJlcXVlc3QsIDQpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAotCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTE9B RF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgSU5TVFBN KTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21v ZGUpOwotCQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIElOU1RQTSk7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7CisJCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKIAogCQlkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUg PSBpbnN0cF9tb2RlOwogCX0KIAogCWlmIChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19HRU43X1NP TF9SRVNFVCkgewotCQlyZXQgPSBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoZGV2LCBwYXJh bXMtPnJlcXVlc3QpOworCQlyZXQgPSBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMocGFyYW1z LT5yZXF1ZXN0KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTMwMyw5ICsx Mjk4LDkgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNi dWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJaWYgKGV4ZWNfbGVuID09IDApCiAJCWV4ZWNfbGVuID0g cGFyYW1zLT5iYXRjaF9vYmotPmJhc2Uuc2l6ZTsKIAotCXJldCA9IGVuZ2luZS0+ZGlzcGF0Y2hf ZXhlY2J1ZmZlcihwYXJhbXMtPnJlcXVlc3QsCi0JCQkJCWV4ZWNfc3RhcnQsIGV4ZWNfbGVuLAot CQkJCQlwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKKwlyZXQgPSBwYXJhbXMtPmVuZ2luZS0+ZGlz cGF0Y2hfZXhlY2J1ZmZlcihwYXJhbXMtPnJlcXVlc3QsCisJCQkJCQkgIGV4ZWNfc3RhcnQsIGV4 ZWNfbGVuLAorCQkJCQkJICBwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDU4NjBmYjcz YzBlMy4uZjczNWQxZWMxODlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAt NjY5LDcgKzY2OSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgIHVuc2lnbmVkIGVudHJ5LAogCQkJICBkbWFfYWRkcl90 IGFkZHIpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50IHJl dDsKIAogCUJVR19PTihlbnRyeSA+PSA0KTsKQEAgLTY3OCwxMyArNjc4LDEzIEBAIHN0YXRpYyBp bnQgZ2VuOF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURf UkVHSVNURVJfSU1NKDEpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgR0VOOF9SSU5H X1BEUF9VRFcoZW5naW5lLCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHVwcGVy XzMyX2JpdHMoYWRkcikpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURfUkVHSVNU RVJfSU1NKDEpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9M RFcoZW5naW5lLCBlbnRyeSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGxvd2VyXzMyX2Jp dHMoYWRkcikpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CisJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nLCBHRU44X1JJTkdfUERQX1VEVyhyZXEtPmVuZ2luZSwgZW50cnkpKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhhZGRyKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKKwlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIEdF TjhfUklOR19QRFBfTERXKHJlcS0+ZW5naW5lLCBlbnRyeSkpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE2NjAsMTEgKzE2NjAsMTMgQEAgc3RhdGljIHVpbnQzMl90IGdl dF9wZF9vZmZzZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogc3RhdGljIGludCBoc3df bW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKIAlpbnQgcmV0OwogCiAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZh bGlkYXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KLQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwgSTkx NV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwlyZXQgPSByZXEtPmVu Z2luZS0+Zmx1c2gocmVxLAorCQkJCSBJOTE1X0dFTV9HUFVfRE9NQUlOUywKKwkJCQkgSTkxNV9H RU1fR1BVX0RPTUFJTlMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTE2NzIsMTMg KzE2NzQsMTMgQEAgc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5n aW5lLCBSSU5HX1BQX0RJUl9EQ0xWKGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IFBQX0RJUl9EQ0xWXzJHKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgUklOR19QUF9E SVJfQkFTRShlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBnZXRfcGRfb2Zmc2V0 KHBwZ3R0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNU RVJfSU1NKDIpKTsKKwlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0RDTFYo cmVxLT5lbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElSX0RDTFZfMkcpOwor CWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfQkFTRShyZXEtPmVuZ2luZSkp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBnZXRfcGRfb2Zmc2V0KHBwZ3R0KSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAog CXJldHVybiAwOwogfQpAQCAtMTY5NywxMSArMTY5OSwxMyBAQCBzdGF0aWMgaW50IHZncHVfbW1f c3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHN0YXRpYyBpbnQgZ2VuN19tbV9z d2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy ZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1 ZjsKIAlpbnQgcmV0OwogCiAJLyogTkI6IFRMQnMgbXVzdCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlk YXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KLQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwgSTkxNV9H RU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwlyZXQgPSByZXEtPmVuZ2lu ZS0+Zmx1c2gocmVxLAorCQkJCSBJOTE1X0dFTV9HUFVfRE9NQUlOUywKKwkJCQkgSTkxNV9HRU1f R1BVX0RPTUFJTlMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTE3MDksMTcgKzE3 MTMsMTkgQEAgc3RhdGljIGludCBnZW43X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDIpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2lu ZSwgUklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBQ UF9ESVJfRENMVl8yRyk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIFJJTkdfUFBfRElS X0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZ2V0X3BkX29mZnNldChw cGd0dCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgyKSk7CisJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9EQ0xWKHJl cS0+ZW5naW5lKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIFBQX0RJUl9EQ0xWXzJHKTsKKwlp bnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIFJJTkdfUFBfRElSX0JBU0UocmVxLT5lbmdpbmUpKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAkv KiBYWFg6IFJDUyBpcyB0aGUgb25seSBvbmUgdG8gYXV0byBpbnZhbGlkYXRlIHRoZSBUTEJzPyAq LwotCWlmIChlbmdpbmUtPmlkICE9IFJDUykgewotCQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwg STkxNV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwlpZiAocmVxLT5l bmdpbmUtPmlkICE9IFJDUykgeworCQlyZXQgPSByZXEtPmVuZ2luZS0+Zmx1c2gocmVxLAorCQkJ CQkgSTkxNV9HRU1fR1BVX0RPTUFJTlMsCisJCQkJCSBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7CiAJ CWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCA4NDlhYmI1NjVkM2QuLjJjYmE5MTIwN2Q3ZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTExNzQsNyArMTExNzQsNyBAQCBzdGF0aWMgaW50IGludGVs X2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXUzMiBmbGlwX21hc2s7CiAJaW50IHJldDsK QEAgLTExMTkwLDEzICsxMTE5MCwxMyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjJfcXVldWVfZmxp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFO RV9CX0ZMSVA7CiAJZWxzZQogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVA7 Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2sp OwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChl bmdpbmUsIE1JX0RJU1BMQVlfRkxJUCB8CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1dBSVRf Rk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8CiAJCQlNSV9ESVNQTEFZ X0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBmYi0+cGl0Y2hlc1swXSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyog YXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgZmItPnBpdGNoZXNbMF0pOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5m bGlwX3dvcmstPmd0dF9vZmZzZXQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogYXV4 IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8KIAogCXJldHVybiAwOwogfQpAQCAtMTEy MDgsNyArMTEyMDgsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjNfcXVldWVfZmxpcChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK IAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJp bmdidWY7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwogCXUzMiBmbGlwX21hc2s7CiAJaW50IHJldDsKQEAgLTExMjIxLDEzICsxMTIyMSwxMyBA QCBzdGF0aWMgaW50IGludGVsX2dlbjNfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7CiAJZWxzZQogCQlmbGlw X21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOwotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUF9J OTE1IHwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21h c2spOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGlu dGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNoZXNb MF0pOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0 X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50 ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExMjM5LDcgKzExMjM5LDcgQEAgc3RhdGlj IGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQzMl90IGZsYWdzKQog ewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXVpbnQzMl90IHBmLCBwaXBl c3JjOwpAQCAtMTEyNTMsMTAgKzExMjUzLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1 ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICogRGlzcGxheSBSZWdpc3RlcnMgKHdo aWNoIGRvIG5vdCBjaGFuZ2UgYWNyb3NzIGEgcGFnZS1mbGlwKQogCSAqIHNvIHdlIG5lZWQgb25s eSByZXByb2dyYW0gdGhlIGJhc2UgYWRkcmVzcy4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBNSV9ESVNQTEFZX0ZMSVAgfAorCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9ESVNQTEFZ X0ZMSVAgfAogCQkJTUlfRElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0J aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCB8CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50 ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0IHwKIAkJCW9iai0+dGlsaW5nX21vZGUpOwog CiAJLyogWFhYIEVuYWJsaW5nIHRoZSBwYW5lbC1maXR0ZXIgYWNyb3NzIHBhZ2UtZmxpcCBpcyBz byBmYXIKQEAgLTExMjY1LDcgKzExMjY1LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVl X2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlwZXNyYyA9 IEk5MTVfUkVBRChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Ci0JaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgcGYgfCBwaXBlc3JjKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTEyNzcsNyArMTEyNzcsNyBA QCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3Qg ZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJdWludDMyX3Qg cGYsIHBpcGVzcmM7CkBAIC0xMTI4NywxMCArMTEyODcsMTAgQEAgc3RhdGljIGludCBpbnRlbF9n ZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExBWV9GTElQIHwKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQIHwKIAkJCU1JX0RJU1BMQVlfRkxJ UF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZi LT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9kZSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGluZ19tb2RlKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKIAogCS8qIENvbnRy YXJ5IHRvIHRoZSBzdWdnZXN0aW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwKIAkgKiAiRW5hYmxl IFBhbmVsIEZpdHRlciIgZG9lcyBub3Qgc2VlbSB0byBiZSByZXF1aXJlZCB3aGVuIHBhZ2UKQEAg LTExMzAwLDcgKzExMzAwLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKi8KIAlwZiA9IDA7CiAJcGlwZXNyYyA9IEk5MTVfUkVB RChQSVBFU1JDKGludGVsX2NydGMtPnBpcGUpKSAmIDB4MGZmZjBmZmY7Ci0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgcGYgfCBwaXBlc3JjKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgcGYgfCBw aXBlc3JjKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTEzMTIsNyArMTEzMTIsNyBAQCBzdGF0aWMg aW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7 Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXVpbnQzMl90IHBsYW5lX2Jp dCA9IDA7CiAJaW50IGxlbiwgcmV0OwpAQCAtMTEzMzMsNyArMTEzMzMsNyBAQCBzdGF0aWMgaW50 IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAogCWxl biA9IDQ7Ci0JaWYgKGVuZ2luZS0+aWQgPT0gUkNTKSB7CisJaWYgKHJlcS0+ZW5naW5lLT5pZCA9 PSBSQ1MpIHsKIAkJbGVuICs9IDY7CiAJCS8qCiAJCSAqIE9uIEdlbiA4LCBTUk0gaXMgbm93IHRh a2luZyBhbiBleHRyYSBkd29yZCB0byBhY2NvbW1vZGF0ZQpAQCAtMTEzNzEsMzAgKzExMzcxLDMw IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJICogZm9yIHRoZSBSQ1MgYWxzbyBkb2Vzbid0IGFwcGVhciB0byBkcm9wIGV2ZW50cy4g U2V0dGluZyB0aGUgREVSUk1SCiAJICogdG8gemVybyBkb2VzIGxlYWQgdG8gbG9ja3VwcyB3aXRo aW4gTUlfRElTUExBWV9GTElQLgogCSAqLwotCWlmIChlbmdpbmUtPmlkID09IFJDUykgewotCQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVs X3JpbmdfZW1pdF9yZWcoZW5naW5lLCBERVJSTVIpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCB+KERFUlJNUl9QSVBFQV9QUklfRkxJUF9ET05FIHwKKwlpZiAocmVxLT5lbmdpbmUtPmlkID09 IFJDUykgeworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkp OworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIERFUlJNUik7CisJCWludGVsX3JpbmdfZW1p dChyaW5nLCB+KERFUlJNUl9QSVBFQV9QUklfRkxJUF9ET05FIHwKIAkJCQkJICBERVJSTVJfUElQ RUJfUFJJX0ZMSVBfRE9ORSB8CiAJCQkJCSAgREVSUk1SX1BJUEVDX1BSSV9GTElQX0RPTkUpKTsK IAkJaWYgKElTX0dFTjgoZGV2KSkKLQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NUT1JF X1JFR0lTVEVSX01FTV9HRU44IHwKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9S RUdJU1RFUl9NRU1fR0VOOCB8CiAJCQkJCSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7CiAJ CWVsc2UKLQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8 CisJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNIHwKIAkJCQkJ ICAgICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdp bmUsIERFUlJNUik7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGVuZ2luZS0+c2NyYXRjaC5n dHRfb2Zmc2V0ICsgMjU2KTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBERVJSTVIpOwor CQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCAr IDI1Nik7CiAJCWlmIChJU19HRU44KGRldikpIHsKLQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IDApOwotCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJCQlpbnRlbF9yaW5n X2VtaXQocmluZywgMCk7CisJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CiAJCX0K IAl9CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9ESVNQTEFZX0ZMSVBfSTkxNSB8IHBs YW5lX2JpdCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgKGZiLT5waXRjaGVzWzBdIHwgb2Jq LT50aWxpbmdfbW9kZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZs aXBfd29yay0+Z3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgKE1JX05PT1Ap KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9i aXQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAoZmItPnBpdGNoZXNbMF0gfCBvYmotPnRpbGlu Z19tb2RlKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+ Z3R0X29mZnNldCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIChNSV9OT09QKSk7CiAKIAlyZXR1 cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggNWVmODEzNDcwNTVjLi4zMDc2 YjYzZjIyOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC03NTEsNyArNzUxLDcgQEAg aW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCiAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBy ZXF1ZXN0LT5yaW5nYnVmOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVl c3QtPmVuZ2luZTsKIAotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAlyZXF1ZXN0LT50YWlsID0gcmluZ2J1Zi0+dGFp bDsKIAogCS8qCkBAIC03NjAsOSArNzYwLDkgQEAgaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Vf YW5kX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICoKIAkg KiBDYWxsZXIgbXVzdCByZXNlcnZlIFdBX1RBSUxfRFdPUkRTIGZvciB1cyEKIAkgKi8KLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShy aW5nYnVmKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsK IAogCS8qIFdlIGtlZXAgdGhlIHByZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJl IHRoZSBmb2xsb3dpbmcKIAkgKiByZXF1ZXN0LiBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgdGhlIGNv bnRleHQgb2JqZWN0IGlzIHN0aWxsIHBpbm5lZApAQCAtODUyLDExICs4NTIsMTEgQEAgaW50IGlu dGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpw YXJhbXMsCiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 X3JlZyhyaW5nYnVmLCBJTlNUUE0pOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19h ZHZhbmNlKHJpbmdidWYpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CisJCWlu dGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgSU5TVFBNKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJp bmdidWYsIGluc3RwX21hc2sgPDwgMTYgfCBpbnN0cF9tb2RlKTsKKwkJaW50ZWxfcmluZ19hZHZh bmNlKHJpbmdidWYpOwogCiAJCWRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IGlu c3RwX21vZGU7CiAJfQpAQCAtMTAyNiwxNCArMTAyNiwxNCBAQCBzdGF0aWMgaW50IGludGVsX2xv Z2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOworCWludGVsX3Jpbmdf ZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOwogCWZvciAoaSA9 IDA7IGkgPCB3LT5jb3VudDsgaSsrKSB7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhy aW5nYnVmLCB3LT5yZWdbaV0uYWRkcik7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdi dWYsIHctPnJlZ1tpXS52YWx1ZSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1Ziwgdy0+ cmVnW2ldLmFkZHIpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVnW2ldLnZhbHVl KTsKIAl9Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwogCiAJZW5naW5l LT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKIAlyZXQgPSBsb2dpY2FsX3JpbmdfZmx1c2hfYWxs X2NhY2hlcyhyZXEpOwpAQCAtMTUwNiw4ICsxNTA2LDcgQEAgc3RhdGljIGludCBnZW45X2luaXRf cmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogc3RhdGljIGludCBp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHJlcS0+Y3R4LT5wcGd0dDsK LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKLQlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKKwlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAljb25zdCBpbnQgbnVtX2xyaV9jbWRz ID0gR0VOOF9MRUdBQ1lfUERQRVMgKiAyOwogCWludCBpLCByZXQ7CiAKQEAgLTE1MTUsMjAgKzE1 MTQsMTggQEAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1f bHJpX2NtZHMpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0o bnVtX2xyaV9jbWRzKSk7CiAJZm9yIChpID0gR0VOOF9MRUdBQ1lfUERQRVMgLSAxOyBpID49IDA7 IGktLSkgewogCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFf YWRkcihwcGd0dCwgaSk7CiAKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYs Ci0JCQkJCSAgICBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikpOwotCQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKLQkJCQkJICAgIEdFTjhfUklOR19QRFBfTERX KGVuZ2luZSwgaSkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBsb3dlcl8z Ml9iaXRzKHBkX2RhZGRyKSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgR0VOOF9SSU5H X1BEUF9VRFcocmVxLT5lbmdpbmUsIGkpKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVy XzMyX2JpdHMocGRfZGFkZHIpKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU44X1JJ TkdfUERQX0xEVyhyZXEtPmVuZ2luZSwgaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93 ZXJfMzJfYml0cyhwZF9kYWRkcikpOwogCX0KIAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIE1JX05PT1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1MzYsNyArMTUzMyw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAogCQkJICAgICAgdTY0IG9mZnNldCwgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3Mp CiB7Ci0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJYm9vbCBwcGd0 dCA9ICEoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSk7CiAJaW50IHJldDsK IApAQCAtMTU2MywxNCArMTU2MCwxNCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJcmV0dXJuIHJldDsKIAogCS8qIEZJ WE1FKEJEVyk6IEFkZHJlc3Mgc3BhY2UgYW5kIHNlY3VyaXR5IHNlbGVjdG9ycy4gKi8KLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VOOCB8 Ci0JCQkJKHBwZ3R0PDw4KSB8Ci0JCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9S UyA/Ci0JCQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3Jpbmdf YWR2YW5jZShyaW5nYnVmKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVS X1NUQVJUX0dFTjggfAorCQkJKHBwZ3R0PDw4KSB8CisJCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1 X0RJU1BBVENIX1JTID8KKwkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0xNTkzLDkgKzE1OTAsOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJCQkgICB1MzIgaW52YWxpZGF0ZV9kb21h aW5zLAogCQkJICAgdTMyIHVudXNlZCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmluZ2J1Zi0+ZW5naW5lOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHJlcXVlc3QtPmk5MTU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJpbmctPmVuZ2lu ZTsKIAl1aW50MzJfdCBjbWQ7CiAJaW50IHJldDsKIApAQCAtMTYxNCwxNyArMTYxMCwxNyBAQCBz dGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QsCiAKIAlpZiAoaW52YWxpZGF0ZV9kb21haW5zICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMp IHsKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVfVExCOwotCQlpZiAoZW5naW5lID09ICZkZXZfcHJp di0+ZW5naW5lW1ZDU10pCisJCWlmIChlbmdpbmUtPmlkID09IFZDUykKIAkJCWNtZCB8PSBNSV9J TlZBTElEQVRFX0JTRDsKIAl9CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBj bWQpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCi0JCQkJSTkxNV9HRU1fSFdT X1NDUkFUQ0hfQUREUiB8Ci0JCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Ci0JaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7IC8qIHVwcGVyIGFkZHIgKi8KLQlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLCAwKTsgLyogdmFsdWUgKi8KLQlpbnRlbF9sb2dpY2FsX3Jpbmdf YWR2YW5jZShyaW5nYnVmKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywKKwkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAorCQkJTUlfRkxV U0hfRFdfVVNFX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBhZGRy ICovCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLworCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYzMyw4ICsxNjI5LDggQEAgc3Rh dGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwKIAkJCQkgIHUzMiBpbnZhbGlkYXRlX2RvbWFpbnMsCiAJCQkJICB1MzIgZmx1 c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcXVl c3QtPnJpbmdidWY7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmluZ2J1Zi0+ ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxdWVzdC0+cmluZ2J1 ZjsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAJ dTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hF TElORV9CWVRFUzsKIAlib29sIHZmX2ZsdXNoX3dhID0gZmFsc2U7CiAJdTMyIGZsYWdzID0gMDsK QEAgLTE2NzIsMjEgKzE2NjgsMjEgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVy KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKIAkJcmV0dXJuIHJldDsKIAog CWlmICh2Zl9mbHVzaF93YSkgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBH RlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOworCQlp bnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwogCX0KIAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdi dWYsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIGZsYWdzKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBzY3JhdGNo X2FkZHIpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAog CXJldHVybiAwOwogfQpAQCAtMTcxNSw3ICsxNzExLDcgQEAgc3RhdGljIHZvaWQgYnh0X2Ffc2Vx bm9fYmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBpbnQg Z2VuOF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQog ewotCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxdWVzdC0+cmluZ2J1ZjsK KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmdidWY7CiAJaW50 IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNiArIFdBX1RBSUxfRFdP UkRTKTsKQEAgLTE3MjUsMjEgKzE3MjEsMjAgQEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJLyogdy9hOiBiaXQgNSBu ZWVkcyB0byBiZSB6ZXJvIGZvciBNSV9GTFVTSF9EVyBhZGRyZXNzLiAqLwogCUJVSUxEX0JVR19P TihJOTE1X0dFTV9IV1NfSU5ERVhfQUREUiAmICgxIDw8IDUpKTsKIAotCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsCi0JCQkJKE1JX0ZMVVNIX0RXICsgMSkgfCBNSV9GTFVTSF9EV19P UF9TVE9SRURXKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCWludGVs X2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkgfAotCQkJCU1JX0ZMVVNIX0RXX1VT RV9HVFQpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IChNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCisJCQlpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUp IHwKKwkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX05PT1ApOwogCXJldHVybiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0 KHJlcXVlc3QpOwogfQogCiBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcmVxdWVzdC0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXF1ZXN0LCA4ICsgV0FfVEFJTF9EV09SRFMpOwpAQCAtMTc1MywxOSArMTc0 OCwxOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICogbmVlZCBhIHByaW9yIENTX1NUQUxMLCB3aGlj aCBpcyBlbWl0dGVkIGJ5IHRoZSBmbHVzaAogCSAqIGZvbGxvd2luZyB0aGUgYmF0Y2guCiAJICov Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2 KSk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKLQkJCQkoUElQRV9DT05UUk9M X0dMT0JBTF9HVFRfSVZCIHwKLQkJCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCQkgUElQ RV9DT05UUk9MX1FXX1dSSVRFKSk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwK LQkJCQlpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpKTsKLQlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXF1ZXN0KSk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1pdChy aW5nLAorCQkJKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8CisJCQkgUElQRV9DT05UUk9M X0NTX1NUQUxMIHwKKwkJCSBQSVBFX0NPTlRST0xfUVdfV1JJVEUpKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSk7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9zZXFubyhyZXF1ZXN0KSk7CiAJLyogV2UncmUgdGhyYXNoaW5nIG9uZSBkd29y ZCBvZiBIV1MuICovCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfVVNFUl9JTlRFUlJVUFQpOwotCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAlyZXR1cm4gaW50ZWxfbG9naWNhbF9yaW5n X2FkdmFuY2VfYW5kX3N1Ym1pdChyZXF1ZXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aAppbmRleCBlOTk4NDgwNjdmYjguLmJhZjkwNTQzODU3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKQEAgLTY1LDMyICs2NSw2IEBAIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXAo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdz X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIGludCBsb2dpY2FsX3JpbmdfZmx1c2hf YWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Ci0vKioKLSAqIGlu dGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKCkgLSBhZHZhbmNlIHRoZSByaW5nYnVmZmVyIHRhaWwK LSAqIEByaW5nYnVmOiBSaW5nYnVmZmVyIHRvIGFkdmFuY2UuCi0gKgotICogVGhlIHRhaWwgaXMg b25seSB1cGRhdGVkIGluIG91ciBsb2dpY2FsIHJpbmdidWZmZXIgc3RydWN0LgotICovCi1zdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYpCi17Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2FkdmFuY2UocmluZ2J1 Zik7Ci19Ci0KLS8qKgotICogaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoKSAtIHdyaXRlIGEgRFdP UkQgdG8gdGhlIHJpbmdidWZmZXIuCi0gKiBAcmluZ2J1ZjogUmluZ2J1ZmZlciB0byB3cml0ZSB0 by4KLSAqIEBkYXRhOiBEV09SRCB0byB3cml0ZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIGlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAot CQkJCQkgICB1MzIgZGF0YSkKLXsKLQlfX2ludGVsX3JpbmdidWZmZXJfZW1pdChyaW5nYnVmLCBk YXRhKTsKLX0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWco c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCi0JCQkJCSAgICAgICBpOTE1X3JlZ190 IHJlZykKLXsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBpOTE1X21taW9fcmVn X29mZnNldChyZWcpKTsKLX0KIAogLyogTG9naWNhbCBSaW5nIENvbnRleHRzICovCiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21vY3MuYwppbmRleCBiNzY1Yzc1ZjNmY2QuLjg1MTNiZjA2ZDRkZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwpAQCAtMjQzLDE0ICsyNDMsMTEgQEAgc3RhdGljIGlu dCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwKLQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMp KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9O VU1fTU9DU19FTlRSSUVTKSk7CiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6 ZTsgaW5kZXgrKykgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKLQkJ CQkJICAgIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOwotCQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLAotCQkJCQl0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUp OworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBp bmRleCkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxlW2luZGV4XS5j b250cm9sX3ZhbHVlKTsKIAl9CiAKIAkvKgpAQCAtMjYyLDE0ICsyNTksMTIgQEAgc3RhdGljIGlu dCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkgKiB0aGF0IHZhbHVlIHRvIGFsbCB0aGUgdXNlZCBlbnRyaWVzLgogCSAqLwogCWZvciAo OyBpbmRleCA8IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsgaW5kZXgrKykgewotCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKLQkJCQkJICAgIG1vY3NfcmVnaXN0ZXIoZW5naW5l LCBpbmRleCkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCQl0YWJs ZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1 ZiwgbW9jc19yZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5n YnVmLCB0YWJsZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7CiAJfQogCi0JaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFu Y2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVs X3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzA3LDE5ICszMDIs MTggQEAgc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwKIAkJCU1JX0xP QURfUkVHSVNURVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDIpKTsKIAogCWZvciAoaSA9 IDA7IGkgPCB0YWJsZS0+c2l6ZS8yOyBpKyspIHsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRf cmVnKHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwKLQkJCQkJbDNjY19jb21iaW5lKHRhYmxlLCAyKmksIDIqaSsxKSk7CisJCWlu dGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOworCQlpbnRlbF9y aW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAyKmksIDIqaSsxKSk7CiAJfQog CiAJaWYgKHRhYmxlLT5zaXplICYgMHgwMSkgewogCQkvKiBPZGQgdGFibGUgc2l6ZSAtIDEgbGVm dCBvdmVyICovCi0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCBHRU45X0xO Q0ZDTU9DUyhpKSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGwzY2NfY29t YmluZSh0YWJsZSwgMippLCAwKSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VO OV9MTkNGQ01PQ1MoaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5l KHRhYmxlLCAyKmksIDApKTsKIAkJaSsrOwogCX0KIApAQCAtMzI5LDEyICszMjMsMTIgQEAgc3Rh dGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKIAkgKiB0aGV5IGFyZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCiAJICovCiAJZm9y ICg7IGkgPCBHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKLQkJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7CisJCWlu dGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOworCQlpbnRlbF9y aW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7CiAJfQogCi0JaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1Ap OworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCmluZGV4IDdmOTFmMThhZDI5ZC4uYmU3OWM0NDk3YWY1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCkBAIC0yMzUsNiArMjM1LDcgQEAg c3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5 KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZzsKIAlpbnQgcmV0OwogCiAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwpAQCAt MjUyLDExICsyNTMsMTIgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRl bF9vdmVybGF5ICpvdmVybGF5KQogCiAJb3ZlcmxheS0+YWN0aXZlID0gdHJ1ZTsKIAotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT04pOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEUpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1Jf T1ZFUkxBWV9GTElQKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRl bF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlyaW5nID0gcmVxLT5yaW5nYnVmOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09OKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9G TElQKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJs YXksIHJlcSwgTlVMTCk7CiB9CkBAIC0yNjgsNiArMjcwLDcgQEAgc3RhdGljIGludCBpbnRlbF9v dmVybGF5X2NvbnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZzsK IAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+ZmxpcF9hZGRyOwogCXUzMiB0bXA7CiAJaW50IHJl dDsKQEAgLTI5Miw5ICsyOTUsMTAgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVl KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCQlyZXR1cm4gcmV0OwogCX0KIAotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElO VUUpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZsaXBfYWRkcik7Ci0JaW50ZWxfcmluZ19h ZHZhbmNlKGVuZ2luZSk7CisJcmluZyA9IHJlcS0+cmluZ2J1ZjsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGZsaXBfYWRkcik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJ V0FSTl9PTihvdmVybGF5LT5sYXN0X2ZsaXBfcmVxKTsKIAlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2ln bigmb3ZlcmxheS0+bGFzdF9mbGlwX3JlcSwgcmVxKTsKQEAgLTMzNiw2ICszNDAsNyBAQCBzdGF0 aWMgaW50IGludGVsX292ZXJsYXlfb2ZmKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZzsKIAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+ZmxpcF9hZGRyOwogCWludCByZXQ7 CiAKQEAgLTM1NywyNCArMzYyLDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJCXJldHVybiByZXQ7CiAJfQogCisJcmluZyA9 IHJlcS0+cmluZ2J1ZjsKIAkvKiB3YWl0IGZvciBvdmVybGF5IHRvIGdvIGlkbGUgKi8KLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVF KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmbGlwX2FkZHIpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05U SU5VRSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsK IAkvKiB0dXJuIG92ZXJsYXkgb2ZmICovCiAJaWYgKElTX0k4MzAoZGV2X3ByaXYpKSB7CiAJCS8q IFdvcmthcm91bmQ6IERvbid0IGRpc2FibGUgdGhlIG92ZXJsYXkgZnVsbHksIHNpbmNlIG90aGVy d2lzZQogCQkgKiBpdCBkaWVzIG9uIHRoZSBuZXh0IE9WRVJMQVlfT04gY21kLiAqLwotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg TUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09Q KTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCX0gZWxzZSB7Ci0JCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGKTsKLQkJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmxpcF9hZGRyKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJM QVlfT0ZGKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLAogCQkJCU1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxB WV9GTElQKTsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92 ZXJsYXksIHJlcSwgaW50ZWxfb3ZlcmxheV9vZmZfdGFpbCk7CiB9CkBAIC00MjAsNiArNDI2LDcg QEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxf b3ZlcmxheSAqb3ZlcmxheSkKIAlpZiAoSTkxNV9SRUFEKElTUikgJiBJOTE1X09WRVJMQVlfUExB TkVfRkxJUF9QRU5ESU5HX0lOVEVSUlVQVCkgewogCQkvKiBzeW5jaHJvbm91cyBzbG93cGF0aCAq LwogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwkJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmc7CiAKIAkJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUs IE5VTEwpOwogCQlpZiAoSVNfRVJSKHJlcSkpCkBAIC00MzEsMTAgKzQzOCwxMSBAQCBzdGF0aWMg aW50IGludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpv dmVybGF5KQogCQkJcmV0dXJuIHJldDsKIAkJfQogCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUs CisJCXJpbmcgPSByZXEtPnJpbmdidWY7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJCU1J X1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKLQkJaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOwor CQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKIAogCQlyZXQgPSBpbnRlbF9vdmVybGF5X2RvX3dhaXRfcmVxdWVzdChvdmVybGF5LCBy ZXEsCiAJCQkJCQkgICAgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWRfdGFpbCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggYzBhMTMyYTc0MmNiLi5hY2U0 NTViMmIyZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTU4 LDcgKzU4LDcgQEAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZikKIAkJCQkJICAgIHJpbmdidWYtPnRhaWwsIHJpbmdidWYtPnNpemUp OwogfQogCi1zdGF0aWMgdm9pZCBfX2ludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCitzdGF0aWMgdm9pZCBfX2ludGVsX2VuZ2luZV9zdWJtaXQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmID0gZW5naW5lLT5idWZmZXI7CiAJcmluZ2J1Zi0+dGFpbCAmPSByaW5nYnVmLT5zaXpl IC0gMTsKQEAgLTcwLDcgKzcwLDcgQEAgZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMglpbnZhbGlkYXRlX2RvbWFpbnMs CiAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9 IHJlcS0+cmluZ2J1ZjsKIAl1MzIgY21kOwogCWludCByZXQ7CiAKQEAgLTg1LDkgKzg1LDkgQEAg Z2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgY21k KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFu Y2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJu IDA7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIJaW52YWxpZGF0ZV9kb21haW5z LAogCQkgICAgICAgdTMyCWZsdXNoX2RvbWFpbnMpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcg PSByZXEtPnJpbmdidWY7CiAJdTMyIGNtZDsKIAlpbnQgcmV0OwogCkBAIC0xMjksMjMgKzEyOSwy MCBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCSAqIGFyZSBmbHVzaGVkIGF0IGFueSBNSV9GTFVTSC4KIAkgKi8KIAotCWNtZCA9IE1J X0ZMVVNIIHwgTUlfTk9fV1JJVEVfRkxVU0g7Ci0JaWYgKChpbnZhbGlkYXRlX2RvbWFpbnN8Zmx1 c2hfZG9tYWlucykgJiBJOTE1X0dFTV9ET01BSU5fUkVOREVSKQotCQljbWQgJj0gfk1JX05PX1dS SVRFX0ZMVVNIOwotCWlmIChpbnZhbGlkYXRlX2RvbWFpbnMgJiBJOTE1X0dFTV9ET01BSU5fSU5T VFJVQ1RJT04pCisJY21kID0gTUlfRkxVU0g7CisJaWYgKGludmFsaWRhdGVfZG9tYWlucykgewog CQljbWQgfD0gTUlfRVhFX0ZMVVNIOwotCi0JaWYgKGludmFsaWRhdGVfZG9tYWlucyAmIEk5MTVf R0VNX0RPTUFJTl9DT01NQU5EICYmCi0JICAgIChJU19HNFgocmVxLT5pOTE1KSB8fCBJU19HRU41 KHJlcS0+aTkxNSkpKQotCQljbWQgfD0gTUlfSU5WQUxJREFURV9JU1A7CisJCWlmIChJU19HNFgo cmVxLT5pOTE1KSB8fCBJU19HRU41KHJlcS0+aTkxNSkpCisJCSAgICBjbWQgfD0gTUlfSU5WQUxJ REFURV9JU1A7CisJfQogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdp bmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTE5MCwzNCArMTg3LDM1IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiBzdGF0aWMgaW50CiBpbnRlbF9lbWl0X3Bvc3Rfc3luY19u b256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwotCXUzMiBzY3JhdGNoX2Fk ZHIgPSBlbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CisJdTMyIHNjcmF0 Y2hfYWRkciA9CisJICAgICAgIAlyZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAq IENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBQ SVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQ RV9DT05UUk9MKDUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgUElQRV9DT05UUk9MX0NTX1NU QUxMIHwKIAkJCVBJUEVfQ09OVFJPTF9TVEFMTF9BVF9TQ09SRUJPQVJEKTsKLQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7IC8q IGFkZHJlc3MgKi8KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyogbG93IGR3b3JkICov Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIGhpZ2ggZHdvcmQgKi8KLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JB TF9HVFQpOyAvKiBhZGRyZXNzICovCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiBsb3cg ZHdvcmQgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIGhpZ2ggZHdvcmQgKi8KKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBHRlhfT1BfUElQRV9DT05UUk9MKDUp KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBQSVBFX0NPTlRST0xfUVdfV1JJVEUpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxf R1RUKTsgLyogYWRkcmVzcyAqLwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOwotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1Ap OwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBH RlhfT1BfUElQRV9DT05UUk9MKDUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgUElQRV9DT05U Uk9MX1FXX1dSSVRFKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyIHwgUElQ RV9DT05UUk9MX0dMT0JBTF9HVFQpOyAvKiBhZGRyZXNzICovCisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC0yMjYsOSArMjI0LDEwIEBAIHN0YXRpYyBpbnQKIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2go c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIgaW52YWxpZGF0 ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9 IHJlcS0+cmluZ2J1ZjsKKwl1MzIgc2NyYXRjaF9hZGRyID0KKwkgICAgICAgCXJlcS0+ZW5naW5l LT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCXUzMiBmbGFncyA9 IDA7Ci0JdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAq IENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJLyogRm9yY2UgU05CIHdvcmthcm91bmRz IGZvciBQSVBFX0NPTlRST0wgZmx1c2hlcyAqLwpAQCAtMjY2LDExICsyNjUsMTEgQEAgZ2VuNl9y ZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgR0ZYX09QX1BJ UEVfQ09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmxhZ3MpOwotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RU KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5n aW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2Ny YXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCAwKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTI3OCwxOSArMjc3LDIwIEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5nX2NzX3N0YWxs X3dhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Ci0JCQkgICAgICBQSVBFX0NPTlRST0xfU1RBTExf QVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOworCWludGVsX3JpbmdfZW1p dChyaW5nLAorCQkJUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKKwkJCVBJUEVfQ09OVFJPTF9TVEFM TF9BVF9TQ09SRUJPQVJEKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAw OwogfQpAQCAtMjk5LDkgKzI5OSwxMCBAQCBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5nX2Zs dXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICAgICAgdTMyIGludmFs aWRhdGVfZG9tYWlucywgdTMyIGZsdXNoX2RvbWFpbnMpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmdidWY7CisJdTMyIHNjcmF0Y2hfYWRkciA9CisJICAgICAgIAlyZXEtPmVu Z2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKIAl1MzIgZmxh Z3MgPSAwOwotCXUzMiBzY3JhdGNoX2FkZHIgPSBlbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCAr IDIgKiBDQUNIRUxJTkVfQllURVM7CiAJaW50IHJldDsKIAogCS8qCkBAIC0zNTAsMTEgKzM1MSwx MSBAQCBnZW43X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmbGFn cyk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgc2NyYXRjaF9hZGRyKTsKLQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGZsYWdzKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0zNjMsMjAgKzM2NCwyMCBAQCBzdGF0aWMgaW50CiBnZW44X2VtaXRf cGlwZV9jb250cm9sKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICAgICAg dTMyIGZsYWdzLCB1MzIgc2NyYXRjaF9hZGRyKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwg Nik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IEdGWF9PUF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZsYWdz KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBzY3JhdGNoX2FkZHIpOwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAog CXJldHVybiAwOwogfQpAQCAtMzg1LDggKzM4Niw4IEBAIHN0YXRpYyBpbnQKIGdlbjhfcmVuZGVy X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1 MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykKIHsKLQl1MzIgZmxhZ3Mg PSAwOwogCXUzMiBzY3JhdGNoX2FkZHIgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0 ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKKwl1MzIgZmxhZ3MgPSAwOwogCWludCByZXQ7CiAKIAlm bGFncyB8PSBQSVBFX0NPTlRST0xfQ1NfU1RBTEw7CkBAIC02NzksMTQgKzY4MCwxNCBAQCBlcnI6 CiAKIHN0YXRpYyBpbnQgaW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5n YnVmOwogCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkxNS0+d29ya2Fyb3Vu ZHM7CiAJaW50IHJldCwgaTsKIAogCWlmICh3LT5jb3VudCA9PSAwKQogCQlyZXR1cm4gMDsKIAot CWVuZ2luZS0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7CisJcmVxLT5lbmdpbmUtPmdwdV9jYWNo ZXNfZGlydHkgPSB0cnVlOwogCXJldCA9IGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhyZXEp OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC02OTUsMTYgKzY5NiwxNiBAQCBzdGF0aWMg aW50IGludGVsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKIAlmb3IgKGkgPSAwOyBpIDwg dy0+Y291bnQ7IGkrKykgewotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgdy0+cmVnW2ld LmFkZHIpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCB3LT5yZWdbaV0udmFsdWUpOworCQlp bnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIHctPnJlZ1tpXS5hZGRyKTsKKwkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHctPnJlZ1tpXS52YWx1ZSk7CiAJfQotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IE1JX05PT1ApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAotCWludGVsX3Jp bmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAotCWVuZ2lu ZS0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7CisJcmVxLT5lbmdpbmUtPmdwdV9jYWNoZXNfZGly dHkgPSB0cnVlOwogCXJldCA9IGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhyZXEpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xMjQxLDcgKzEyNDIsNyBAQCBzdGF0aWMgaW50IGdl bjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEs CiAJCQkgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKIHsKICNkZWZpbmUgTUJPWF9VUERBVEVf RFdPUkRTIDgKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIgPSBzaWduYWxsZXJf cmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25h bGxlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g c2lnbmFsbGVyX3JlcS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXI7CiAJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CkBAIC0xMjU2LDcgKzEyNTcsOCBAQCBzdGF0aWMgaW50 IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9y ZXEsCiAJCXJldHVybiByZXQ7CiAKIAlmb3JfZWFjaF9lbmdpbmVfaWQod2FpdGVyLCBkZXZfcHJp diwgaWQpIHsKLQkJdTY0IGd0dF9vZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxf Z2d0dFtpZF07CisJCXU2NCBndHRfb2Zmc2V0ID0KKwkJICAgICAgIAlzaWduYWxsZXJfcmVxLT5l bmdpbmUtPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChndHRfb2Zmc2V0ID09IE1J X1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIApAQCAtMTI4MCw3ICsxMjgy LDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpzaWduYWxsZXJfcmVxLAogCQkJICAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpCiB7CiAj ZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyA2Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2ln bmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwpAQCAtMTI5NSw3ICsx Mjk3LDggQEAgc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogCQlyZXR1cm4gcmV0OwogCiAJZm9yX2VhY2hfZW5naW5l X2lkKHdhaXRlciwgZGV2X3ByaXYsIGlkKSB7Ci0JCXU2NCBndHRfb2Zmc2V0ID0gc2lnbmFsbGVy LT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbaWRdOworCQl1NjQgZ3R0X29mZnNldCA9CisJCSAgICAg ICAJc2lnbmFsbGVyX3JlcS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbaWRdOwogCQlp ZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQogCQkJY29udGludWU7 CiAKQEAgLTEzMTYsNyArMTMxOSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKIHN0YXRpYyBpbnQgZ2VuNl9z aWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogCQkgICAg ICAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAq c2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqdXNlbGVzczsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKQEAgLTEzMzIs NyArMTMzNSw4IEBAIHN0YXRpYyBpbnQgZ2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogCQlyZXR1cm4gcmV0OwogCiAJZm9yX2VhY2hfZW5naW5l X2lkKHVzZWxlc3MsIGRldl9wcml2LCBpZCkgewotCQlpOTE1X3JlZ190IG1ib3hfcmVnID0gc2ln bmFsbGVyLT5zZW1hcGhvcmUubWJveC5zaWduYWxbaWRdOworCQlpOTE1X3JlZ190IG1ib3hfcmVn ID0KKwkJICAgICAgIAlzaWduYWxsZXJfcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5tYm94LnNpZ25h bFtpZF07CiAKIAkJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQobWJveF9yZWcpKSB7CiAJCQlpbnRl bF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CkBAIC0xMzU5 LDIzICsxMzYzLDIyIEBAIHN0YXRpYyBpbnQgZ2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogc3RhdGljIGludAogZ2VuNl9hZGRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCi0JaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNp Z25hbCkKLQkJcmV0ID0gZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSwgNCk7CisJaWYgKHJl cS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKQorCQlyZXQgPSByZXEtPmVuZ2luZS0+c2VtYXBo b3JlLnNpZ25hbChyZXEsIDQpOwogCWVsc2UKIAkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDQpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX1NUT1JFX0RXT1JEX0lOREVYKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAotCQkJ STkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCByZXEtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JX19pbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5l KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5E RVhfU0hJRlQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNlLnNlcW5vKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCV9faW50ZWxfZW5naW5l X3N1Ym1pdChyZXEtPmVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEzODQsNiArMTM4Nyw3 IEBAIHN0YXRpYyBpbnQKIGdlbjhfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJl cS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVm OwogCWludCByZXQ7CiAKIAlpZiAoZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKQpAQCAtMTM5Mywx OCArMTM5NywxOCBAQCBnZW44X3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkJIFBJUEVfQ09OVFJPTF9D U19TVEFMTCB8Ci0JCQkJIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcS0+ZW5naW5lKSk7Ci0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaTkxNV9nZW1f cmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9Q SVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAoUElQRV9DT05UUk9MX0dM T0JBTF9HVFRfSVZCIHwKKwkJCSAgICAgICBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkJICAg ICAgIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRl bF9od3Nfc2Vxbm9fYWRkcmVzcyhlbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkp OwogCS8qIFdlJ3JlIHRocmFzaGluZyBvbmUgZHdvcmQgb2YgSFdTLiAqLwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1VTRVJfSU5URVJS VVBUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlfX2ludGVsX3Jpbmdf YWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKKwlfX2ludGVsX2VuZ2luZV9zdWJtaXQoZW5naW5lKTsKIAogCXJldHVybiAwOwog fQpAQCAtMTQyOCw3ICsxNDMyLDcgQEAgZ2VuOF9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAogCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpz aWduYWxsZXIsCiAJICAgICAgIHUzMiBzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gd2FpdGVyX3JlcS0+aTkxNTsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQ7CiAJaW50IHJldDsKQEAgLTE0NDIsOSArMTQ0NiwxMSBAQCBnZW44X3Jpbmdfc3luYyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndhaXRlcl9yZXEsCiAJCQkJTUlfU0VNQVBIT1JFX1NB RF9HVEVfU0REKTsKIAlpbnRlbF9yaW5nX2VtaXQod2FpdGVyLCBzZXFubyk7CiAJaW50ZWxfcmlu Z19lbWl0KHdhaXRlciwKLQkJCWxvd2VyXzMyX2JpdHMoR0VOOF9XQUlUX09GRlNFVCh3YWl0ZXIs IHNpZ25hbGxlci0+aWQpKSk7CisJCQlsb3dlcl8zMl9iaXRzKEdFTjhfV0FJVF9PRkZTRVQod2Fp dGVyX3JlcS0+ZW5naW5lLAorCQkJCQkJICAgICAgIHNpZ25hbGxlci0+aWQpKSk7CiAJaW50ZWxf cmluZ19lbWl0KHdhaXRlciwKLQkJCXVwcGVyXzMyX2JpdHMoR0VOOF9XQUlUX09GRlNFVCh3YWl0 ZXIsIHNpZ25hbGxlci0+aWQpKSk7CisJCQl1cHBlcl8zMl9iaXRzKEdFTjhfV0FJVF9PRkZTRVQo d2FpdGVyX3JlcS0+ZW5naW5lLAorCQkJCQkJICAgICAgIHNpZ25hbGxlci0+aWQpKSk7CiAJaW50 ZWxfcmluZ19hZHZhbmNlKHdhaXRlcik7CiAKIAkvKiBXaGVuIHRoZSAhUkNTIGVuZ2luZXMgaWRs ZSB3YWl0aW5nIHVwb24gYSBzZW1hcGhvcmUsIHRoZXkgbG9zZSB0aGVpcgpAQCAtMTQ2MywxMSAr MTQ2OSwxMSBAQCBnZW42X3Jpbmdfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndh aXRlcl9yZXEsCiAJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciwKIAkg ICAgICAgdTMyIHNlcW5vKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlciA9IHdh aXRlcl9yZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqd2FpdGVyID0gd2Fp dGVyX3JlcS0+cmluZ2J1ZjsKIAl1MzIgZHcxID0gTUlfU0VNQVBIT1JFX01CT1ggfAogCQkgIE1J X1NFTUFQSE9SRV9DT01QQVJFIHwKIAkJICBNSV9TRU1BUEhPUkVfUkVHSVNURVI7Ci0JdTMyIHdh aXRfbWJveCA9IHNpZ25hbGxlci0+c2VtYXBob3JlLm1ib3gud2FpdFt3YWl0ZXItPmlkXTsKKwl1 MzIgd2FpdF9tYm94ID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUubWJveC53YWl0W3dhaXRlcl9yZXEt PmVuZ2luZS0+aWRdOwogCWludCByZXQ7CiAKIAkvKiBUaHJvdWdob3V0IGFsbCBvZiB0aGUgR0VN IGNvZGUsIHNlcW5vIHBhc3NlZCBpbXBsaWVzIG91ciBjdXJyZW50CkBAIC0xNTk3LDM1ICsxNjAz LDM0IEBAIGJzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAog CSAgICAgICB1MzIgICAgIGludmFsaWRhdGVfZG9tYWlucywKIAkgICAgICAgdTMyICAgICBmbHVz aF9kb21haW5zKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWlu dCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0ZMVVNIKTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5l KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAJcmV0dXJuIDA7CiB9 CiAKIHN0YXRpYyBpbnQKIGk5eHhfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdp bmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50 IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfU1RPUkVfRFdPUkRfSU5E RVgpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCi0JCSAgICAgICAJSTkxNV9HRU1fSFdTX0lO REVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCByZXEtPmZlbmNlLnNlcW5vKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9VU0VS X0lOVEVSUlVQVCk7Ci0JX19pbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmZlbmNlLnNlcW5vKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCV9faW50ZWxfZW5naW5lX3N1Ym1pdChyZXEtPmVu Z2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2OTIsMjAgKzE2OTcsMjAgQEAgaTk2NV9kaXNw YXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJIHU2 NCBvZmZzZXQsIHUzMiBsZW5ndGgsCiAJCQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50IHJldDsKIAogCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJCU1JX0JB VENIX0JVRkZFUl9TVEFSVCB8CiAJCQlNSV9CQVRDSF9HVFQgfAogCQkJKGRpc3BhdGNoX2ZsYWdz ICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwogCQkJIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5 NjUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2 YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOworCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTcxOSw4ICsxNzI0LDggQEAg aTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAogCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3Mp CiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0JdTMy IGNzX29mZnNldCA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0OworCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOworCXUzMiBjc19vZmZzZXQgPSByZXEtPmVu Z2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0OwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNik7CkBAIC0xNzI4LDEzICsxNzMzLDEzIEBAIGk4MzBfZGlzcGF0Y2hfZXhl Y2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJcmV0dXJuIHJldDsK IAogCS8qIEV2aWN0IHRoZSBpbnZhbGlkIFBURSBUTEJzICovCi0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKLQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCBCTFRfREVQVEhfMzIgfCBCTFRfUk9QX0NPTE9SX0NPUFkgfCA0MDk2KTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBJODMwX1RMQl9FTlRSSUVTIDw8IDE2IHwgNCk7IC8qIGxvYWQg ZWFjaCBwYWdlICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgY3Nfb2Zmc2V0KTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCAweGRlYWRiZWVmKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZIHwgNDA5Nik7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIEk4MzBfVExCX0VOVFJJRVMgPDwgMTYgfCA0KTsgLyogbG9hZCBl YWNoIHBhZ2UgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY3Nfb2Zmc2V0KTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgMHhkZWFkYmVlZik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05P T1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCWlmICgoZGlzcGF0Y2hfZmxhZ3Mg JiBJOTE1X0RJU1BBVENIX1BJTk5FRCkgPT0gMCkgewogCQlpZiAobGVuID4gSTgzMF9CQVRDSF9M SU1JVCkKQEAgLTE3NDgsMTcgKzE3NTMsMTcgQEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgKiBzdGFibGUgYmF0Y2ggc2NyYXRj aCBibyBhcmVhIChzbyB0aGF0IHRoZSBDUyBuZXZlcgogCQkgKiBzdHVtYmxlcyBvdmVyIGl0cyB0 bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4uCiAJCSAqLwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEpOwotCQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLAorCQlpbnRlbF9yaW5nX2VtaXQocmluZywgU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9X UklURV9SR0JBKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJQkxUX0RFUFRIXzMyIHwg QkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBESVZf Uk9VTkRfVVAobGVuLCA0MDk2KSA8PCAxNiB8IDQwOTYpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBjc19vZmZzZXQpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCA0MDk2KTsKLQkJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgb2Zmc2V0KTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERJ Vl9ST1VORF9VUChsZW4sIDQwOTYpIDw8IDE2IHwgNDA5Nik7CisJCWludGVsX3JpbmdfZW1pdChy aW5nLCBjc19vZmZzZXQpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgNDA5Nik7CisJCWludGVs X3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOwogCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1J X0ZMVVNIKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0JCWludGVsX3Jp bmdfYWR2YW5jZShlbmdpbmUpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gpOwor CQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfYWR2YW5jZShy aW5nKTsKIAogCQkvKiAuLi4gYW5kIGV4ZWN1dGUgaXQuICovCiAJCW9mZnNldCA9IGNzX29mZnNl dDsKQEAgLTE3NjgsMTAgKzE3NzMsMTAgQEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRD SF9HVFQpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIG9mZnNldCB8IChkaXNwYXRjaF9mbGFn cyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KLQkJCQkJICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VS RSkpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOworCWludGVsX3JpbmdfZW1p dChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/ CisJCQkJCTAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNzgxLDE3ICsxNzg2LDE3IEBAIGk5MTVfZGlzcGF0 Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSB1NjQg b2Zmc2V0LCB1MzIgbGVuLAogCQkJIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVCk7 Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgb2Zmc2V0IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkx NV9ESVNQQVRDSF9TRUNVUkUgPwotCQkJCQkgIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0J aW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JB VENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IG9mZnNldCB8IChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJCQkJ MCA6IE1JX0JBVENIX05PTl9TRUNVUkUpKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTIzMzAsOCArMjMzNSw5IEBAIGludCBpbnRlbF9yaW5nX2JlZ2lu KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKIC8qIEFs aWduIHRoZSByaW5nIHRhaWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkgKi8KIGludCBpbnRlbF9y aW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsK LQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKLQlpbnQgbnVt X2R3b3JkcyA9IChlbmdpbmUtPmJ1ZmZlci0+dGFpbCAmIChDQUNIRUxJTkVfQllURVMgLSAxKSkg LyBzaXplb2YodWludDMyX3QpOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVx LT5yaW5nYnVmOworCWludCBudW1fZHdvcmRzID0KKwkgICAgICAgCShyaW5nLT50YWlsICYgKENB Q0hFTElORV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7CiAJaW50IHJldDsKIAogCWlm IChudW1fZHdvcmRzID09IDApCkBAIC0yMzQzLDkgKzIzNDksOSBAQCBpbnQgaW50ZWxfcmluZ19j YWNoZWxpbmVfYWxpZ24oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJCXJldHVy biByZXQ7CiAKIAl3aGlsZSAobnVtX2R3b3Jkcy0tKQotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBNSV9OT09QKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCi0JaW50ZWxf cmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0 dXJuIDA7CiB9CkBAIC0yNDIzLDcgKzI0MjksNyBAQCBzdGF0aWMgdm9pZCBnZW42X2JzZF9yaW5n X3dyaXRlX3RhaWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogc3RhdGljIGludCBn ZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJ ICAgICAgIHUzMiBpbnZhbGlkYXRlLCB1MzIgZmx1c2gpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmdidWY7CiAJdWludDMyX3QgY21kOwogCWludCByZXQ7CiAKQEAgLTI0NTEs MTcgKzI0NTcsMTYgQEAgc3RhdGljIGludCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChpbnZhbGlkYXRlICYgSTkxNV9HRU1fR1BVX0RP TUFJTlMpCiAJCWNtZCB8PSBNSV9JTlZBTElEQVRFX1RMQiB8IE1JX0lOVkFMSURBVEVfQlNEOwog Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LAotCQkJSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1 X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlfRkxVU0hfRFdfVVNFX0dUVCk7CiAJaWYgKElOVEVM X0dFTihyZXEtPmk5MTUpID49IDgpIHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8q IHVwcGVyIGFkZHIgKi8KLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIHZhbHVlICov CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdXBwZXIgYWRkciAqLworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7IC8qIHZhbHVlICovCiAJfSBlbHNlICB7Ci0JCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjQ3MCw4ICsyNDc1LDggQEAgZ2VuOF9yaW5n X2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJ CQkgICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJICAgICAgdW5zaWduZWQgZGlzcGF0Y2hf ZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7 Ci0JYm9vbCBwcGd0dCA9IFVTRVNfUFBHVFQoZW5naW5lLT5kZXYpICYmCisJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CisJYm9vbCBwcGd0dCA9IFVTRVNfUFBH VFQocmVxLT5pOTE1KSAmJgogCQkJIShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VD VVJFKTsKIAlpbnQgcmV0OwogCkBAIC0yNDgwLDEzICsyNDg1LDEzIEBAIGdlbjhfcmluZ19kaXNw YXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQlyZXR1 cm4gcmV0OwogCiAJLyogRklYTUUoQkRXKTogQWRkcmVzcyBzcGFjZSBhbmQgc2VjdXJpdHkgc2Vs ZWN0b3JzLiAqLwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0JBVENIX0JVRkZFUl9TVEFS VF9HRU44IHwgKHBwZ3R0PDw4KSB8CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JV RkZFUl9TVEFSVF9HRU44IHwgKHBwZ3R0PDw4KSB8CiAJCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1 X0RJU1BBVENIX1JTID8KIAkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAt MjQ5NiwyMiArMjUwMSwyMiBAQCBoc3dfcmluZ19kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAog CQkJICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXEsIDIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLAorCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwK IAkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KIAkJCSAwIDogTUlf QkFUQ0hfUFBHVFRfSFNXIHwgTUlfQkFUQ0hfTk9OX1NFQ1VSRV9IU1cpIHwKIAkJCShkaXNwYXRj aF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwogCQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVB TUVSIDogMCkpOwogCS8qIGJpdDAtNyBpcyB0aGUgbGVuZ3RoIG9uIEdFTjYrICovCi0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI1MjEsMjAgKzI1MjYsMjAgQEAgZ2VuNl9yaW5nX2Rp c3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkg ICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJICAgICAgdW5zaWduZWQgZGlzcGF0Y2hfZmxh Z3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJaW50IHJldDsK IAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywK IAkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8CiAJCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJ U1BBVENIX1NFQ1VSRSA/CiAJCQkgMCA6IE1JX0JBVENIX05PTl9TRUNVUkVfSTk2NSkpOwogCS8q IGJpdDAtNyBpcyB0aGUgbGVuZ3RoIG9uIEdFTjYrICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTI1NDQsNyArMjU0OSw3IEBAIGdlbjZfcmluZ19kaXNwYXRjaF9leGVjYnVmZmVy KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogc3RhdGljIGludCBnZW42X3Jpbmdf Zmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgICB1MzIgaW52YWxp ZGF0ZSwgdTMyIGZsdXNoKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJl cS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVm OwogCXVpbnQzMl90IGNtZDsKIAlpbnQgcmV0OwogCkBAIC0yNTcxLDE3ICsyNTc2LDE3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAogCSAqLwogCWlmIChpbnZhbGlkYXRlICYgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUikKIAkJY21k IHw9IE1JX0lOVkFMSURBVEVfVExCOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGNtZCk7Ci0J aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywKIAkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9G TFVTSF9EV19VU0VfR1RUKTsKIAlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0gOCkgewotCQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCAwKTsgLyogdmFsdWUgKi8KKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDAp OyAvKiB1cHBlciBhZGRyICovCisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUg Ki8KIAl9IGVsc2UgIHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNl KGVuZ2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggM2NiY2RkNTc1MWFkLi4z YTRlZDk3YjU2M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAg LTQ2MiwyOCArNDYyLDE5IEBAIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7CiAKIGludCBfX211c3RfY2hlY2sg aW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG4p OwogaW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgX19pbnRlbF9yaW5n YnVmZmVyX2VtaXQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJiLAotCQkJCQkgICB1MzIgZGF0 YSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcsIHUzMiBkYXRhKQogewotCSoodWludDMyX3QgKikocmItPnZhZGRyICsgcmIt PnRhaWwpID0gZGF0YTsKLQlyYi0+dGFpbCArPSA0OworCSoodWludDMyX3QgKikocmluZy0+dmFk ZHIgKyByaW5nLT50YWlsKSA9IGRhdGE7CisJcmluZy0+dGFpbCArPSA0OwogfQotc3RhdGljIGlu bGluZSB2b2lkIF9faW50ZWxfcmluZ2J1ZmZlcl9hZHZhbmNlKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyYikKLXsKLQlyYi0+dGFpbCAmPSByYi0+c2l6ZSAtIDE7Ci19Ci1zdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMy IGRhdGEpCi17Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2VtaXQoZW5naW5lLT5idWZmZXIsIGRhdGEp OwotfQotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdF9yZWcoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdF9y ZWcoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcsCiAJCQkJICAgICAgIGk5MTVfcmVnX3Qg cmVnKQogewotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJl ZykpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X21taW9fcmVnX29mZnNldChyZWcpKTsK IH0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZykKIHsKLQlfX2ludGVsX3JpbmdidWZmZXJfYWR2 YW5jZShlbmdpbmUtPmJ1ZmZlcik7CisJcmluZy0+dGFpbCAmPSByaW5nLT5zaXplIC0gMTsKIH0K IGludCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7CiB2 b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmKTsKLS0gCjIuOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK