From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 01/73] drm/i915: Unify intel_logical_ring_emit and intel_ring_emit Date: Mon, 1 Aug 2016 10:10:09 +0100 Message-ID: <1470042681-25318-2-git-send-email-chris@chris-wilson.co.uk> References: <1470042681-25318-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-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id D853F6E1CB for ; Mon, 1 Aug 2016 09:11:33 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id i5so25260012wmg.2 for ; Mon, 01 Aug 2016 02:11:33 -0700 (PDT) In-Reply-To: <1470042681-25318-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 b24sIHNvIGp1c3QKdW5pZnkgdGhlIGNvZGUuCgp2MjogQWRkIGJhY2sgYSBmZXcgaW50ZWxfZW5n aW5lX2NzIGxvY2FscwoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5l bkBsaW51eC5pbnRlbC5jb20+Ckxpbms6IGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3BhdGNoL21zZ2lkLzE0Njk0MzI2ODctMjI3NTYtMTEtZ2l0LXNlbmQtZW1haWwtY2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jICAgIHwgIDQ3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYyB8ICA1MyArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAg ICAgfCAgNDggKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAg IHwgIDgwICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAg IHwgMTgzICsrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAg ICAgICAgICAgfCAgMjYgLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyAgICAg ICAgICB8ICAzOCArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAg ICB8ICA1MCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAg fCAzODIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAyNSArLQogMTAgZmlsZXMgY2hhbmdlZCwgNDUwIGlu c2VydGlvbnMoKyksIDQ4MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKaW5kZXggYmQxM2QwODRlMTljLi5hMGUyNGViNWUxNjcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMg aW5saW5lIGludAogbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsIHUzMiBod19mbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSByZXEtPmk5MTU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CiAJdTMy IGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7CiAJY29uc3QgaW50IG51bV9yaW5n cyA9CkBAIC01ODksNjQgKzU5MCw2NCBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQogCiAJLyogV2FQcm9ncmFtTWlBcmJPbk9m ZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2LGhzdyxiZHcsY2h2ICovCiAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNykgewotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9BUkJfT05f T0ZGIHwgTUlfQVJCX0RJU0FCTEUpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09O X09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKIAkJaWYgKG51bV9yaW5ncykgewogCQkJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwogCi0JCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAor CQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJCU1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9y aW5ncykpOwogCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwgZGV2X3ByaXYpIHsKIAkJCQlp ZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKIAkJCQkJY29udGludWU7CiAKLQkJCQlpbnRlbF9yaW5n X2VtaXRfcmVnKGVuZ2luZSwKKwkJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsCiAJCQkJCQkg ICAgUklOR19QU01JX0NUTChzaWduYWxsZXItPm1taW9fYmFzZSkpOwotCQkJCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsCisJCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJCQkJCQlfTUFTS0VEX0JJ VF9FTkFCTEUoR0VONl9QU01JX1NMRUVQX01TR19ESVNBQkxFKSk7CiAJCQl9CiAJCX0KIAl9CiAK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBNSV9TRVRfQ09OVEVYVCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NFVF9D T05URVhUKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJCWk5MTVfZ2VtX29ial9nZ3R0X29m ZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUpIHwKIAkJCWZsYWdzKTsKIAkvKgogCSAq IHcvYTogTUlfU0VUX0NPTlRFWFQgbXVzdCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgTUlfTk9PUAog CSAqIFdhTWlTZXRDb250ZXh0X0hhbmc6c25iLGl2Yix2bHYKIAkgKi8KLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CiAK IAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7CiAJCWlmIChudW1fcmluZ3MpIHsKIAkJ CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKIAkJCWk5MTVfcmVnX3QgbGFzdF9y ZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KIAotCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShu dW1fcmluZ3MpKTsKIAkJCWZvcl9lYWNoX2VuZ2luZShzaWduYWxsZXIsIGRldl9wcml2KSB7CiAJ CQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCiAJCQkJCWNvbnRpbnVlOwogCiAJCQkJbGFzdF9y ZWcgPSBSSU5HX1BTTUlfQ1RMKHNpZ25hbGxlci0+bW1pb19iYXNlKTsKLQkJCQlpbnRlbF9yaW5n X2VtaXRfcmVnKGVuZ2luZSwgbGFzdF9yZWcpOwotCQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUs CisJCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBsYXN0X3JlZyk7CisJCQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCiAJCQkJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEdFTjZfUFNNSV9TTEVFUF9N U0dfRElTQUJMRSkpOwogCQkJfQogCiAJCQkvKiBJbnNlcnQgYSBkZWxheSBiZWZvcmUgdGhlIG5l eHQgc3dpdGNoISAqLwotCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJCWludGVsX3Jpbmdf ZW1pdChyaW5nLAogCQkJCQlNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAogCQkJCQlNSV9TUk1fTFJN X0dMT0JBTF9HVFQpOwotCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIGxhc3RfcmVnKTsK LQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0KTsK LQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQkJaW50ZWxfcmluZ19lbWl0 X3JlZyhyaW5nLCBsYXN0X3JlZyk7CisJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgZW5naW5lLT5z Y3JhdGNoLmd0dF9vZmZzZXQpOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwog CQl9Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5B QkxFKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5B QkxFKTsKIAl9CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2Fk dmFuY2UocmluZyk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjU0LDcgKzY1NSw3IEBAIG1pX3Nl dF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3Mp CiBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBp bnQgc2xpY2UpCiB7CiAJdTMyICpyZW1hcF9pbmZvID0gcmVxLT5pOTE1LT5sM19wYXJpdHkucmVt YXBfaW5mb1tzbGljZV07Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5l bmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJ aW50IGksIHJldDsKIAogCWlmICghcmVtYXBfaW5mbykKQEAgLTY2OSwxMyArNjcwLDEzIEBAIHN0 YXRpYyBpbnQgcmVtYXBfbDMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBz bGljZSkKIAkgKiBoZXJlIGJlY2F1c2Ugbm8gb3RoZXIgY29kZSBzaG91bGQgYWNjZXNzIHRoZXNl IHJlZ2lzdGVycyBvdGhlciB0aGFuCiAJICogYXQgaW5pdGlhbGl6YXRpb24gdGltZS4KIAkgKi8K LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU43X0wzTE9H X1NJWkUvNCkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShH RU43X0wzTE9HX1NJWkUvNCkpOwogCWZvciAoaSA9IDA7IGkgPCBHRU43X0wzTE9HX1NJWkUvNDsg aSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCBHRU43X0wzTE9HKHNsaWNlLCBp KSk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHJlbWFwX2luZm9baV0pOworCQlpbnRlbF9y aW5nX2VtaXRfcmVnKHJpbmcsIEdFTjdfTDNMT0coc2xpY2UsIGkpKTsKKwkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHJlbWFwX2luZm9baV0pOwogCX0KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBN SV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggYWEz NTg2N2YzMDMyLi4yZjlmMGRhYTFiYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKQEAgLTExNzEsMTQgKzExNzEsMTIgQEAgaTkxNV9nZW1fZXhlY2J1ZmZl cl9yZXRpcmVfY29tbWFuZHMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcykK IH0KIAogc3RhdGljIGludAotaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCi0JCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCitp OTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQsIGk7CiAK LQlpZiAoIUlTX0dFTjcoZGV2KSB8fCBlbmdpbmUgIT0gJmRldl9wcml2LT5lbmdpbmVbUkNTXSkg eworCWlmICghSVNfR0VONyhyZXEtPmk5MTUpIHx8IHJlcS0+ZW5naW5lLT5pZCAhPSBSQ1MpIHsK IAkJRFJNX0RFQlVHKCJzb2wgcmVzZXQgaXMgZ2VuNy9yY3Mgb25seVxuIik7CiAJCXJldHVybiAt RUlOVkFMOwogCX0KQEAgLTExODgsMTIgKzExODYsMTIgQEAgaTkxNV9yZXNldF9nZW43X3NvbF9v ZmZzZXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiByZXQ7CiAKIAlmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURfUkVH SVNURVJfSU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIEdFTjdfU09fV1JJ VEVfT0ZGU0VUKGkpKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7CisJCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7CisJCWludGVsX3JpbmdfZW1p dF9yZWcocmluZywgR0VON19TT19XUklURV9PRkZTRVQoaSkpOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7CiAJfQogCi0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMjU2LDkgKzEyNTQsNyBAQCBp OTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJh bXMgKnBhcmFtcywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICph cmdzLAogCQkJICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpCiB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHBhcmFtcy0+ZGV2OwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IHBhcmFtcy0+ZW5naW5lOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwYXJh bXMtPnJlcXVlc3QtPmk5MTU7CiAJdTY0IGV4ZWNfc3RhcnQsIGV4ZWNfbGVuOwogCWludCBpbnN0 cF9tb2RlOwogCXUzMiBpbnN0cF9tYXNrOwpAQCAtMTI3MiwzNCArMTI2OCwzMSBAQCBpOTE1X2dl bV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBh cmFtcywKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JV0FSTihwYXJhbXMtPmN0eC0+cHBn dHQgJiYgcGFyYW1zLT5jdHgtPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmICgxPDxlbmdpbmUtPmlk KSwKLQkgICAgICIlcyBkaWRuJ3QgY2xlYXIgcmVsb2FkXG4iLCBlbmdpbmUtPm5hbWUpOwotCiAJ aW5zdHBfbW9kZSA9IGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0NPTlNUQU5UU19NQVNLOwogCWlu c3RwX21hc2sgPSBJOTE1X0VYRUNfQ09OU1RBTlRTX01BU0s7CiAJc3dpdGNoIChpbnN0cF9tb2Rl KSB7CiAJY2FzZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMOgogCWNhc2UgSTkxNV9F WEVDX0NPTlNUQU5UU19BQlNPTFVURToKIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NV UkZBQ0U6Ci0JCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgZW5naW5lICE9ICZkZXZfcHJpdi0+ZW5n aW5lW1JDU10pIHsKKwkJaWYgKGluc3RwX21vZGUgIT0gMCAmJiBwYXJhbXMtPmVuZ2luZS0+aWQg IT0gUkNTKSB7CiAJCQlEUk1fREVCVUcoIm5vbi0wIHJlbCBjb25zdGFudHMgbW9kZSBvbiBub24t UkNTXG4iKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAKIAkJaWYgKGluc3RwX21vZGUgIT0g ZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Ci0JCQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA0KSB7CisJCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsK IAkJCQlEUk1fREVCVUcoIm5vIHJlbCBjb25zdGFudHMgb24gcHJlLWdlbjRcbiIpOwogCQkJCXJl dHVybiAtRUlOVkFMOwogCQkJfQogCi0JCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA1ICYm CisJCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+IDUgJiYKIAkJCSAgICBpbnN0cF9t b2RlID09IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0UpIHsKIAkJCQlEUk1fREVCVUco InJlbCBzdXJmYWNlIGNvbnN0YW50cyBtb2RlIGludmFsaWQgb24gZ2VuNStcbiIpOwogCQkJCXJl dHVybiAtRUlOVkFMOwogCQkJfQogCiAJCQkvKiBUaGUgSFcgY2hhbmdlZCB0aGUgbWVhbmluZyBv biB0aGlzIGJpdCBvbiBnZW42ICovCi0JCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikK KwkJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpCiAJCQkJaW5zdHBfbWFzayAm PSB+STkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRTsKIAkJfQogCQlicmVhazsKQEAgLTEz MDgsMjMgKzEzMDEsMjUgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBp OTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAot CWlmIChlbmdpbmUgPT0gJmRldl9wcml2LT5lbmdpbmVbUkNTXSAmJgorCWlmIChwYXJhbXMtPmVu Z2luZS0+aWQgPT0gUkNTICYmCiAJICAgIGluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZl X2NvbnN0YW50c19tb2RlKSB7CisJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcGFy YW1zLT5yZXF1ZXN0LT5yaW5nYnVmOworCiAJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocGFyYW1z LT5yZXF1ZXN0LCA0KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAKLQkJaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xP QURfUkVHSVNURVJfSU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIElOU1RQ TSk7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGluc3RwX21hc2sgPDwgMTYgfCBpbnN0cF9t b2RlKTsKLQkJaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9OT09QKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNURVJf SU1NKDEpKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBJTlNUUE0pOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOworCQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CiAKIAkJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2Rl ID0gaW5zdHBfbW9kZTsKIAl9CiAKIAlpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfR0VON19T T0xfUkVTRVQpIHsKLQkJcmV0ID0gaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKGRldiwgcGFy YW1zLT5yZXF1ZXN0KTsKKwkJcmV0ID0gaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHBhcmFt cy0+cmVxdWVzdCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTEzMzYsOSAr MTMzMSw5IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyX3BhcmFtcyAqcGFyYW1zLAogCWlmIChleGVjX2xlbiA9PSAwKQogCQlleGVjX2xlbiA9 IHBhcmFtcy0+YmF0Y2hfb2JqLT5iYXNlLnNpemU7CiAKLQlyZXQgPSBlbmdpbmUtPmRpc3BhdGNo X2V4ZWNidWZmZXIocGFyYW1zLT5yZXF1ZXN0LAotCQkJCQlleGVjX3N0YXJ0LCBleGVjX2xlbiwK LQkJCQkJcGFyYW1zLT5kaXNwYXRjaF9mbGFncyk7CisJcmV0ID0gcGFyYW1zLT5lbmdpbmUtPmRp c3BhdGNoX2V4ZWNidWZmZXIocGFyYW1zLT5yZXF1ZXN0LAorCQkJCQkJICBleGVjX3N0YXJ0LCBl eGVjX2xlbiwKKwkJCQkJCSAgcGFyYW1zLT5kaXNwYXRjaF9mbGFncyk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAzOGU3ZDk5 MmEyMGQuLmIzOGE1MzExZjk5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAg LTY2OSw2ICs2NjksNyBAQCBzdGF0aWMgaW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICB1bnNpZ25lZCBlbnRyeSwKIAkJCSAgZG1hX2FkZHJf dCBhZGRyKQogeworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVm OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwogCWludCBy ZXQ7CiAKQEAgLTY3OCwxMyArNjc5LDEzIEBAIHN0YXRpYyBpbnQgZ2VuOF93cml0ZV9wZHAoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQlp bnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBlbnRy eSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHVwcGVyXzMyX2JpdHMoYWRkcikpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQlpbnRlbF9y aW5nX2VtaXRfcmVnKGVuZ2luZSwgR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBlbnRyeSkpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGxvd2VyXzMyX2JpdHMoYWRkcikpOwotCWludGVsX3Jp bmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lT VEVSX0lNTSgxKSk7CisJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX1VE VyhlbmdpbmUsIGVudHJ5KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMo YWRkcikpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7 CisJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGVu dHJ5KSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMoYWRkcikpOworCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY2MCw2ICsxNjYx LDcgQEAgc3RhdGljIHVpbnQzMl90IGdldF9wZF9vZmZzZXQoc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0KQogc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCwKIAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKKwlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKIAlpbnQgcmV0OwogCkBAIC0xNjcyLDEzICsx Njc0LDEzIEBAIHN0YXRpYyBpbnQgaHN3X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDIpKTsKLQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2lu ZSwgUklOR19QUF9ESVJfRENMVihlbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBQ UF9ESVJfRENMVl8yRyk7Ci0JaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdpbmUsIFJJTkdfUFBfRElS X0JBU0UoZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZ2V0X3BkX29mZnNldChw cGd0dCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgyKSk7CisJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9EQ0xWKGVu Z2luZSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBQUF9ESVJfRENMVl8yRyk7CisJaW50ZWxf cmluZ19lbWl0X3JlZyhyaW5nLCBSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBnZXRfcGRfb2Zmc2V0KHBwZ3R0KSk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwog fQpAQCAtMTY4Niw2ICsxNjg4LDcgQEAgc3RhdGljIGludCBoc3dfbW1fc3dpdGNoKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKIHsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKIAlpbnQgcmV0Owog CkBAIC0xNjk4LDE3ICsxNzAxLDE4IEBAIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKSk7Ci0JaW50ZWxfcmlu Z19lbWl0X3JlZyhlbmdpbmUsIFJJTkdfUFBfRElSX0RDTFYoZW5naW5lKSk7Ci0JaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgUFBfRElSX0RDTFZfMkcpOwotCWludGVsX3JpbmdfZW1pdF9yZWcoZW5n aW5lLCBSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IGdldF9wZF9vZmZzZXQocHBndHQpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09Q KTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0oMikpOworCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklO R19QUF9ESVJfRENMVihlbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgUFBfRElSX0RD TFZfMkcpOworCWludGVsX3JpbmdfZW1pdF9yZWcocmluZywgUklOR19QUF9ESVJfQkFTRShlbmdp bmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgZ2V0X3BkX29mZnNldChwcGd0dCkpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CiAKIAkvKiBYWFg6IFJDUyBpcyB0aGUgb25seSBvbmUgdG8gYXV0byBpbnZhbGlkYXRlIHRoZSBU TEJzPyAqLwogCWlmIChlbmdpbmUtPmlkICE9IFJDUykgewotCQlyZXQgPSBlbmdpbmUtPmZsdXNo KHJlcSwgSTkxNV9HRU1fR1BVX0RPTUFJTlMsIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwkJcmV0 ID0gZW5naW5lLT5mbHVzaChyZXEsCisJCQkJICAgIEk5MTVfR0VNX0dQVV9ET01BSU5TLCBJOTE1 X0dFTV9HUFVfRE9NQUlOUyk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBjNGMxYzg1MzY2ZGUuLjc5MzA1ZjhkYmU1 NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTExMTUsNyArMTExMTUs NyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMy X3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdp bmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXUzMiBm bGlwX21hc2s7CiAJaW50IHJldDsKQEAgLTExMTMxLDEzICsxMTEzMSwxMyBAQCBzdGF0aWMgaW50 IGludGVsX2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlmbGlwX21h c2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7CiAJZWxzZQogCQlmbGlwX21hc2sgPSBNSV9X QUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfV0FJVF9G T1JfRVZFTlQgfCBmbGlwX21hc2spOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1Ap OwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUCB8CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgZmxpcF9tYXNrKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlf RkxJUCB8CiAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCAwKTsgLyogYXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8K KwlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOworCWludGVsX3JpbmdfZW1p dChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOworCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsgLyogYXV4IGRpc3BsYXkgYmFzZSBhZGRyZXNzLCB1bnVzZWQgKi8KIAog CXJldHVybiAwOwogfQpAQCAtMTExNDksNyArMTExNDksNyBAQCBzdGF0aWMgaW50IGludGVsX2dl bjNfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgdWludDMyX3QgZmxhZ3MpCiB7Ci0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXUzMiBmbGlwX21hc2s7CiAJaW50IHJldDsKQEAg LTExMTYyLDEzICsxMTE2MiwxMyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjNfcXVldWVfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9C X0ZMSVA7CiAJZWxzZQogCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0J aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJ VF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09Q KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfRElTUExBWV9GTElQX0k5MTUgfAogCQkJTUlf RElTUExBWV9GTElQX1BMQU5FKGludGVsX2NydGMtPnBsYW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgZmItPnBpdGNoZXNbMF0pOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGludGVs X2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwg TUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zmc2V0KTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExMTgw LDcgKzExMTgwLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJ CQkJIHVpbnQzMl90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5n YnVmOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJ dWludDMyX3QgcGYsIHBpcGVzcmM7CkBAIC0xMTE5NCwxMCArMTExOTQsMTAgQEAgc3RhdGljIGlu dCBpbnRlbF9nZW40X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiBEaXNw bGF5IFJlZ2lzdGVycyAod2hpY2ggZG8gbm90IGNoYW5nZSBhY3Jvc3MgYSBwYWdlLWZsaXApCiAJ ICogc28gd2UgbmVlZCBvbmx5IHJlcHJvZ3JhbSB0aGUgYmFzZSBhZGRyZXNzLgogCSAqLwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUCB8CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8CiAJCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxf Y3J0Yy0+cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSk7 Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLT5ndHRfb2Zm c2V0IHwKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgZmItPnBpdGNoZXNbMF0pOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBpbnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQgfAogCQkJb2Jq LT50aWxpbmdfbW9kZSk7CiAKIAkvKiBYWFggRW5hYmxpbmcgdGhlIHBhbmVsLWZpdHRlciBhY3Jv c3MgcGFnZS1mbGlwIGlzIHNvIGZhcgpAQCAtMTEyMDYsNyArMTEyMDYsNyBAQCBzdGF0aWMgaW50 IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqLwogCXBm ID0gMDsKIAlwaXBlc3JjID0gSTkxNV9SRUFEKFBJUEVTUkMoaW50ZWxfY3J0Yy0+cGlwZSkpICYg MHgwZmZmMGZmZjsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBwZiB8IHBpcGVzcmMpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBwZiB8IHBpcGVzcmMpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0x MTIxOCw3ICsxMTIxOCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAogCQkJCSB1aW50MzJfdCBmbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+ cmluZ2J1ZjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp OwogCXVpbnQzMl90IHBmLCBwaXBlc3JjOwpAQCAtMTEyMjgsMTAgKzExMjI4LDEwIEBAIHN0YXRp YyBpbnQgaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BM QVlfRkxJUCB8CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUCB8CiAJCQlN SV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIGZiLT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9kZSk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIGludGVsX2NydGMtPmZsaXBfd29yay0+Z3R0X29mZnNldCk7 CiAKIAkvKiBDb250cmFyeSB0byB0aGUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24s CiAJICogIkVuYWJsZSBQYW5lbCBGaXR0ZXIiIGRvZXMgbm90IHNlZW0gdG8gYmUgcmVxdWlyZWQg d2hlbiBwYWdlCkBAIC0xMTI0MSw3ICsxMTI0MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNl9x dWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJcGYgPSAwOwogCXBpcGVz cmMgPSBJOTE1X1JFQUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHBmIHwgcGlwZXNyYyk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIHBmIHwgcGlwZXNyYyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTExMjUzLDcgKzExMjUz LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJIHVpbnQz Ml90IGZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5n aW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAl1aW50 MzJfdCBwbGFuZV9iaXQgPSAwOwogCWludCBsZW4sIHJldDsKQEAgLTExMjc0LDcgKzExMjc0LDcg QEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAl9CiAKIAlsZW4gPSA0OwotCWlmIChlbmdpbmUtPmlkID09IFJDUykgeworCWlmIChyZXEt PmVuZ2luZS0+aWQgPT0gUkNTKSB7CiAJCWxlbiArPSA2OwogCQkvKgogCQkgKiBPbiBHZW4gOCwg U1JNIGlzIG5vdyB0YWtpbmcgYW4gZXh0cmEgZHdvcmQgdG8gYWNjb21tb2RhdGUKQEAgLTExMzEy LDMwICsxMTMxMiwzMCBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCSAqIGZvciB0aGUgUkNTIGFsc28gZG9lc24ndCBhcHBlYXIgdG8g ZHJvcCBldmVudHMuIFNldHRpbmcgdGhlIERFUlJNUgogCSAqIHRvIHplcm8gZG9lcyBsZWFkIHRv IGxvY2t1cHMgd2l0aGluIE1JX0RJU1BMQVlfRkxJUC4KIAkgKi8KLQlpZiAoZW5naW5lLT5pZCA9 PSBSQ1MpIHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgREVSUk1SKTsKLQkJaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgfihERVJSTVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8CisJaWYgKHJlcS0+ ZW5naW5lLT5pZCA9PSBSQ1MpIHsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVH SVNURVJfSU1NKDEpKTsKKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBERVJSTVIpOworCQlp bnRlbF9yaW5nX2VtaXQocmluZywgfihERVJSTVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8CiAJCQkJ CSAgREVSUk1SX1BJUEVCX1BSSV9GTElQX0RPTkUgfAogCQkJCQkgIERFUlJNUl9QSVBFQ19QUklf RkxJUF9ET05FKSk7CiAJCWlmIChJU19HRU44KGRldikpCi0JCQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8CisJCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAogCQkJCQkgICAgICBNSV9TUk1fTFJNX0dM T0JBTF9HVFQpOwogCQllbHNlCi0JCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9TVE9SRV9S RUdJU1RFUl9NRU0gfAorCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX1JFR0lTVEVS X01FTSB8CiAJCQkJCSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7Ci0JCWludGVsX3Jpbmdf ZW1pdF9yZWcoZW5naW5lLCBERVJSTVIpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBlbmdp bmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDI1Nik7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmlu ZywgREVSUk1SKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZW5naW5lLT5zY3JhdGNo Lmd0dF9vZmZzZXQgKyAyNTYpOwogCQlpZiAoSVNfR0VOOChkZXYpKSB7Ci0JCQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLCAwKTsKLQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwor CQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X05PT1ApOwogCQl9CiAJfQogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExBWV9G TElQX0k5MTUgfCBwbGFuZV9iaXQpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIChmYi0+cGl0 Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBp bnRlbF9jcnRjLT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOwotCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIChNSV9OT09QKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0RJU1BMQVlfRkxJUF9J OTE1IHwgcGxhbmVfYml0KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgKGZiLT5waXRjaGVzWzBd IHwgb2JqLT50aWxpbmdfbW9kZSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9jcnRj LT5mbGlwX3dvcmstPmd0dF9vZmZzZXQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfTk9P UCkpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDRiNmIz M2YyMTQ0NC4uODgzYWY0NjAxZjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNzcz LDcgKzc3Myw3IEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmID0gcmVxdWVzdC0+cmluZ2J1ZjsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShy aW5nYnVmKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CiAJcmVxdWVzdC0+dGFpbCA9 IHJpbmdidWYtPnRhaWw7CiAKIAkvKgpAQCAtNzgyLDkgKzc4Miw5IEBAIGludGVsX2xvZ2ljYWxf cmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQogCSAqCiAJICogQ2FsbGVyIG11c3QgcmVzZXJ2ZSBXQV9UQUlMX0RXT1JEUyBmb3IgdXMh CiAJICovCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1Ap OworCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZ2J1Zik7CiAKIAkvKiBXZSBrZWVwIHRoZSBwcmV2aW91cyBjb250ZXh0IGFsaXZlIHVu dGlsIHdlIHJldGlyZSB0aGUgZm9sbG93aW5nCiAJICogcmVxdWVzdC4gVGhpcyBlbnN1cmVzIHRo YXQgYW55IHRoZSBjb250ZXh0IG9iamVjdCBpcyBzdGlsbCBwaW5uZWQKQEAgLTg2OCwxMSArODY4 LDExIEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVm ZmVyX3BhcmFtcyAqcGFyYW1zLAogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAotCQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKLQkJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwotCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgSU5TVFBNKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwotCQlpbnRlbF9s b2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs IE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIElOU1RQTSk7CisJCWludGVs X3JpbmdfZW1pdChyaW5nYnVmLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7CisJCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAogCQlkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3Rh bnRzX21vZGUgPSBpbnN0cF9tb2RlOwogCX0KQEAgLTEwNDUsMTQgKzEwNDUsMTQgQEAgc3RhdGlj IGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQp KTsKIAlmb3IgKGkgPSAwOyBpIDwgdy0+Y291bnQ7IGkrKykgewotCQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdF9yZWcocmluZ2J1Ziwgdy0+cmVnW2ldLmFkZHIpOwotCQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCB3LT5yZWdbaV0udmFsdWUpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmdidWYsIHctPnJlZ1tpXS5hZGRyKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHct PnJlZ1tpXS52YWx1ZSk7CiAJfQotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1J X05PT1ApOworCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKIAotCWludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVm KTsKIAogCWVuZ2luZS0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7CiAJcmV0ID0gbG9naWNhbF9y aW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKQEAgLTE1NTUsOCArMTU1NSw4IEBAIHN0YXRpYyBp bnQgZ2VuOV9pbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSByZXEt PmN0eC0+cHBndHQ7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0Jc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7CiAJY29uc3QgaW50 IG51bV9scmlfY21kcyA9IEdFTjhfTEVHQUNZX1BEUEVTICogMjsKIAlpbnQgaSwgcmV0OwogCkBA IC0xNTY0LDIwICsxNTY0LDE4IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRf cGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJ U1RFUl9JTU0obnVtX2xyaV9jbWRzKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURf UkVHSVNURVJfSU1NKG51bV9scmlfY21kcykpOwogCWZvciAoaSA9IEdFTjhfTEVHQUNZX1BEUEVT IC0gMTsgaSA+PSAwOyBpLS0pIHsKIAkJY29uc3QgZG1hX2FkZHJfdCBwZF9kYWRkciA9IGk5MTVf cGFnZV9kaXJfZG1hX2FkZHIocHBndHQsIGkpOwogCi0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 X3JlZyhyaW5nYnVmLAotCQkJCQkgICAgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBpKSk7Ci0J CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHVwcGVyXzMyX2JpdHMocGRfZGFkZHIp KTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsCi0JCQkJCSAgICBHRU44 X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwgbG93ZXJfMzJfYml0cyhwZF9kYWRkcikpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJp bmcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikpOworCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcs IEdFTjhfUklOR19QRFBfTERXKGVuZ2luZSwgaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywg bG93ZXJfMzJfYml0cyhwZF9kYWRkcikpOwogCX0KIAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIE1JX05PT1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1ODUsNyArMTU4Myw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAogCQkJICAgICAgdTY0IG9mZnNldCwgdW5zaWduZWQgZGlzcGF0Y2hfZmxh Z3MpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJYm9vbCBw cGd0dCA9ICEoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSk7CiAJaW50IHJl dDsKIApAQCAtMTYxMiwxNCArMTYxMCwxNCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFy dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJcmV0dXJuIHJldDsKIAogCS8q IEZJWE1FKEJEVyk6IEFkZHJlc3Mgc3BhY2UgYW5kIHNlY3VyaXR5IHNlbGVjdG9ycy4gKi8KLQlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlRfR0VO OCB8Ci0JCQkJKHBwZ3R0PDw4KSB8Ci0JCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRD SF9SUyA/Ci0JCQkJIE1JX0JBVENIX1JFU09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKLQlpbnRlbF9sb2dpY2FsX3Jp bmdfYWR2YW5jZShyaW5nYnVmKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVG RkVSX1NUQVJUX0dFTjggfAorCQkJKHBwZ3R0PDw4KSB8CisJCQkoZGlzcGF0Y2hfZmxhZ3MgJiBJ OTE1X0RJU1BBVENIX1JTID8KKwkJCSBNSV9CQVRDSF9SRVNPVVJDRV9TVFJFQU1FUiA6IDApKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0xNjQyLDkgKzE2NDAsOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJCQkgICB1MzIgaW52YWxpZGF0ZV9k b21haW5zLAogCQkJICAgdTMyIHVudXNlZCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gcmluZ2J1Zi0+ZW5naW5lOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHJlcXVlc3QtPmk5MTU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1 ZXN0LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJpbmctPmVu Z2luZTsKIAl1aW50MzJfdCBjbWQ7CiAJaW50IHJldDsKIApAQCAtMTY2MywxNyArMTY2MCwxNyBA QCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsCiAKIAlpZiAoaW52YWxpZGF0ZV9kb21haW5zICYgSTkxNV9HRU1fR1BVX0RPTUFJ TlMpIHsKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVfVExCOwotCQlpZiAoZW5naW5lID09ICZkZXZf cHJpdi0+ZW5naW5lW1ZDU10pCisJCWlmIChlbmdpbmUtPmlkID09IFZDUykKIAkJCWNtZCB8PSBN SV9JTlZBTElEQVRFX0JTRDsKIAl9CiAKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCBjbWQpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCi0JCQkJSTkxNV9HRU1f SFdTX1NDUkFUQ0hfQUREUiB8Ci0JCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Ci0JaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7IC8qIHVwcGVyIGFkZHIgKi8KLQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsgLyogdmFsdWUgKi8KLQlpbnRlbF9sb2dpY2FsX3Jp bmdfYWR2YW5jZShyaW5nYnVmKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywKKwkJCUk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfAorCQkJTUlf RkxVU0hfRFdfVVNFX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB1cHBlciBh ZGRyICovCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLworCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTY4Miw4ICsxNjc5LDggQEAg c3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwKIAkJCQkgIHUzMiBpbnZhbGlkYXRlX2RvbWFpbnMsCiAJCQkJICB1MzIg Zmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJl cXVlc3QtPnJpbmdidWY7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmluZ2J1 Zi0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxdWVzdC0+cmlu Z2J1ZjsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7 CiAJdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENB Q0hFTElORV9CWVRFUzsKIAlib29sIHZmX2ZsdXNoX3dhID0gZmFsc2UsIGRjX2ZsdXNoX3dhID0g ZmFsc2U7CiAJdTMyIGZsYWdzID0gMDsKQEAgLTE3MzQsNDAgKzE3MzEsNDAgQEAgc3RhdGljIGlu dCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCwKIAkJcmV0dXJuIHJldDsKIAogCWlmICh2Zl9mbHVzaF93YSkgewotCQlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQkJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVf Q09OVFJPTCg2KSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19l bWl0KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwogCX0KIAogCWlmIChk Y19mbHVzaF93YSkgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1Bf UElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgUElQ RV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQkJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09O VFJPTCg2KSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfRENfRkxVU0hf RU5BQkxFKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgMCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwogCX0KIAotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdGWF9P UF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGZs YWdzKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBzY3JhdGNoX2FkZHIpOwot CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIDApOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDAp OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNo X2FkZHIpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgMCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwogCiAJaWYgKGRjX2ZsdXNoX3dhKSB7 Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIEdGWF9PUF9QSVBFX0NPTlRST0wo NikpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBQSVBFX0NPTlRST0xfQ1Nf U1RBTEwpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQkJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIDApOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKKwkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwogCX0KIAotCWludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsK IAogCXJldHVybiAwOwogfQpAQCAtMTc5Niw3ICsxNzkzLDcgQEAgc3RhdGljIHZvaWQgYnh0X2Ff c2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBp bnQgZ2VuOF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQogewotCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxdWVzdC0+cmluZ2J1 ZjsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmdidWY7CiAJ aW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNiArIFdBX1RBSUxf RFdPUkRTKTsKQEAgLTE4MDYsMjEgKzE4MDMsMjAgQEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJLyogdy9hOiBiaXQg NSBuZWVkcyB0byBiZSB6ZXJvIGZvciBNSV9GTFVTSF9EVyBhZGRyZXNzLiAqLwogCUJVSUxEX0JV R19PTihJOTE1X0dFTV9IV1NfSU5ERVhfQUREUiAmICgxIDw8IDUpKTsKIAotCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsCi0JCQkJKE1JX0ZMVVNIX0RXICsgMSkgfCBNSV9GTFVTSF9E V19PUF9TVE9SRURXKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCWlu dGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkgfAotCQkJCU1JX0ZMVVNIX0RX X1VTRV9HVFQpOwotCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwotCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsKLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIChNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsCisJCQlpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdp bmUpIHwKKwkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAw KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIE1JX05PT1ApOwogCXJldHVybiBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3Vi bWl0KHJlcXVlc3QpOwogfQogCiBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7Ci0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0LT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nID0gcmVxdWVzdC0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCA4ICsgV0FfVEFJTF9EV09SRFMpOwpAQCAtMTgzNCwxOSAr MTgzMCwxOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICogbmVlZCBhIHByaW9yIENTX1NUQUxMLCB3 aGljaCBpcyBlbWl0dGVkIGJ5IHRoZSBmbHVzaAogCSAqIGZvbGxvd2luZyB0aGUgYmF0Y2guCiAJ ICovCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJP TCg2KSk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKLQkJCQkoUElQRV9DT05U Uk9MX0dMT0JBTF9HVFRfSVZCIHwKLQkJCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCQkg UElQRV9DT05UUk9MX1FXX1dSSVRFKSk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwKLQkJCQlpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpKTsKLQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXF1ZXN0KSk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1p dChyaW5nLAorCQkJKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8CisJCQkgUElQRV9DT05U Uk9MX0NTX1NUQUxMIHwKKwkJCSBQSVBFX0NPTlRST0xfUVdfV1JJVEUpKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X2dl bV9yZXF1ZXN0X2dldF9zZXFubyhyZXF1ZXN0KSk7CiAJLyogV2UncmUgdGhyYXNoaW5nIG9uZSBk d29yZCBvZiBIV1MuICovCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Ci0J aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfVVNFUl9JTlRFUlJVUFQpOwotCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAlyZXR1cm4gaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChyZXF1ZXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaAppbmRleCAzODI4NzMwMmM1YmEuLmQyNmZiNDQ1NDllNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmgKQEAgLTczLDMyICs3Myw2IEBAIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGludCBpbnRlbF9lbmdpbmVzX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7CiAKIGludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Ci0vKioKLSAqIGludGVsX2xvZ2lj YWxfcmluZ19hZHZhbmNlKCkgLSBhZHZhbmNlIHRoZSByaW5nYnVmZmVyIHRhaWwKLSAqIEByaW5n YnVmOiBSaW5nYnVmZmVyIHRvIGFkdmFuY2UuCi0gKgotICogVGhlIHRhaWwgaXMgb25seSB1cGRh dGVkIGluIG91ciBsb2dpY2FsIHJpbmdidWZmZXIgc3RydWN0LgotICovCi1zdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYpCi17Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2FkdmFuY2UocmluZ2J1Zik7Ci19Ci0K LS8qKgotICogaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoKSAtIHdyaXRlIGEgRFdPUkQgdG8gdGhl IHJpbmdidWZmZXIuCi0gKiBAcmluZ2J1ZjogUmluZ2J1ZmZlciB0byB3cml0ZSB0by4KLSAqIEBk YXRhOiBEV09SRCB0byB3cml0ZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIGludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAotCQkJCQkgICB1 MzIgZGF0YSkKLXsKLQlfX2ludGVsX3JpbmdidWZmZXJfZW1pdChyaW5nYnVmLCBkYXRhKTsKLX0K LXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCi0JCQkJCSAgICAgICBpOTE1X3JlZ190IHJlZykKLXsK LQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBpOTE1X21taW9fcmVnX29mZnNldChy ZWcpKTsKLX0KIAogLyogTG9naWNhbCBSaW5nIENvbnRleHRzICovCiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX21vY3MuYwppbmRleCBiZDQ2OTY4ZDhhMDcuLjMwNTljNTIwMzBiNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX21vY3MuYwpAQCAtMjg4LDE0ICsyODgsMTEgQEAgc3RhdGljIGludCBlbWl0X21v Y3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwK LQkJCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19F TlRSSUVTKSk7CiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgr KykgewotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKLQkJCQkJICAgIG1v Y3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLAotCQkJCQl0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRyb2xfdmFsdWUpOworCQlpbnRl bF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkpOwor CQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxlW2luZGV4XS5jb250cm9sX3Zh bHVlKTsKIAl9CiAKIAkvKgpAQCAtMzA3LDE0ICszMDQsMTIgQEAgc3RhdGljIGludCBlbWl0X21v Y3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiB0 aGF0IHZhbHVlIHRvIGFsbCB0aGUgdXNlZCBlbnRyaWVzLgogCSAqLwogCWZvciAoOyBpbmRleCA8 IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsgaW5kZXgrKykgewotCQlpbnRlbF9sb2dpY2FsX3Jpbmdf ZW1pdF9yZWcocmluZ2J1ZiwKLQkJCQkJICAgIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRleCkp OwotCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAotCQkJCQl0YWJsZS0+dGFibGVb MF0uY29udHJvbF92YWx1ZSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgbW9jc19y ZWdpc3RlcihlbmdpbmUsIGluZGV4KSk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCB0YWJs ZS0+dGFibGVbMF0uY29udHJvbF92YWx1ZSk7CiAJfQogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1 Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2 YW5jZShyaW5nYnVmKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzUyLDE5ICszNDcsMTggQEAgc3Rh dGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwKKwlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwKIAkJCU1JX0xPQURfUkVHSVNU RVJfSU1NKEdFTjlfTlVNX01PQ1NfRU5UUklFUyAvIDIpKTsKIAogCWZvciAoaSA9IDA7IGkgPCB0 YWJsZS0+c2l6ZS8yOyBpKyspIHsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdi dWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwKLQkJCQkJbDNjY19jb21iaW5lKHRhYmxlLCAyKmksIDIqaSsxKSk7CisJCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAyKmksIDIqaSsxKSk7CiAJfQogCiAJaWYgKHRh YmxlLT5zaXplICYgMHgwMSkgewogCQkvKiBPZGQgdGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICov Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUyhp KSk7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGwzY2NfY29tYmluZSh0YWJs ZSwgMippLCAwKSk7CisJCWludGVsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9MTkNGQ01P Q1MoaSkpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAy KmksIDApKTsKIAkJaSsrOwogCX0KIApAQCAtMzc0LDEyICszNjgsMTIgQEAgc3RhdGljIGludCBl bWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkg KiB0aGV5IGFyZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCiAJICovCiAJZm9yICg7IGkgPCBH RU45X05VTV9NT0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKLQkJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXRfcmVnKHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKLQkJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7CisJCWludGVsX3Jpbmdf ZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZ2J1ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7CiAJfQogCi0JaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFu Y2UocmluZ2J1Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOworCWludGVs X3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfb3ZlcmxheS5jCmluZGV4IGMxMGNlMzY4Nzg3ZS4uZWM2M2I2NGZiMjAyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCkBAIC0yMzUsNiArMjM1LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZzsKIAlpbnQgcmV0OwogCiAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwpAQCAtMjUyLDExICsy NTMsMTIgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5 ICpvdmVybGF5KQogCiAJb3ZlcmxheS0+YWN0aXZlID0gdHJ1ZTsKIAotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT04pOwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEUpOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9G TElQKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2Fk dmFuY2UoZW5naW5lKTsKKwlyaW5nID0gcmVxLT5yaW5nYnVmOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09OKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgb3ZlcmxheS0+ZmxpcF9hZGRyIHwgT0ZDX1VQREFURSk7CisJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKKwlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcp OwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwg TlVMTCk7CiB9CkBAIC0yNjgsNiArMjcwLDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2Nv bnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZzsKIAl1MzIgZmxp cF9hZGRyID0gb3ZlcmxheS0+ZmxpcF9hZGRyOwogCXUzMiB0bXA7CiAJaW50IHJldDsKQEAgLTI5 Miw5ICsyOTUsMTAgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBp bnRlbF9vdmVybGF5ICpvdmVybGF5LAogCQlyZXR1cm4gcmV0OwogCX0KIAotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIGZsaXBfYWRkcik7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVu Z2luZSk7CisJcmluZyA9IHJlcS0+cmluZ2J1ZjsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlf T1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGZsaXBfYWRkcik7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJV0FSTl9PTihv dmVybGF5LT5sYXN0X2ZsaXBfcmVxKTsKIAlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb3Zlcmxh eS0+bGFzdF9mbGlwX3JlcSwgcmVxKTsKQEAgLTMzNiw2ICszNDAsNyBAQCBzdGF0aWMgaW50IGlu dGVsX292ZXJsYXlfb2ZmKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZzsK IAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+ZmxpcF9hZGRyOwogCWludCByZXQ7CiAKQEAgLTM1 NywyNCArMzYyLDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXkpCiAJCXJldHVybiByZXQ7CiAJfQogCisJcmluZyA9IHJlcS0+cmlu Z2J1ZjsKIAkvKiB3YWl0IGZvciBvdmVybGF5IHRvIGdvIGlkbGUgKi8KLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBmbGlwX2FkZHIpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs IE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKIAkvKiB0dXJu IG92ZXJsYXkgb2ZmICovCiAJaWYgKElTX0k4MzAoZGV2X3ByaXYpKSB7CiAJCS8qIFdvcmthcm91 bmQ6IERvbid0IGRpc2FibGUgdGhlIG92ZXJsYXkgZnVsbHksIHNpbmNlIG90aGVyd2lzZQogCQkg KiBpdCBkaWVzIG9uIHRoZSBuZXh0IE9WRVJMQVlfT04gY21kLiAqLwotCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9OT09QKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7 Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCX0gZWxzZSB7Ci0JCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGKTsKLQkJaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgZmxpcF9hZGRyKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKKwkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09WRVJMQVlfT0ZGKTsK KwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRkcik7CisJCWludGVsX3JpbmdfZW1pdChy aW5nLAogCQkJCU1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsK IAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwogCiAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJl cSwgaW50ZWxfb3ZlcmxheV9vZmZfdGFpbCk7CiB9CkBAIC00MjAsNiArNDI2LDcgQEAgc3RhdGlj IGludCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSkKIAlpZiAoSTkxNV9SRUFEKElTUikgJiBJOTE1X09WRVJMQVlfUExBTkVfRkxJUF9Q RU5ESU5HX0lOVEVSUlVQVCkgewogCQkvKiBzeW5jaHJvbm91cyBzbG93cGF0aCAqLwogCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwkJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmc7CiAKIAkJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5VTEwpOwog CQlpZiAoSVNfRVJSKHJlcSkpCkBAIC00MzEsMTAgKzQzOCwxMSBAQCBzdGF0aWMgaW50IGludGVs X292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQog CQkJcmV0dXJuIHJldDsKIAkJfQogCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCisJCXJpbmcg PSByZXEtPnJpbmdidWY7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJCU1JX1dBSVRfRk9S X0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAog CQlyZXQgPSBpbnRlbF9vdmVybGF5X2RvX3dhaXRfcmVxdWVzdChvdmVybGF5LCByZXEsCiAJCQkJ CQkgICAgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWRfdGFpbCk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggMTVhY2FmNjE3MzAzLi4xMjY3MDA2OGYwODEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTU4LDcgKzU4LDcg QEAgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZikKIAkJCQkJICAgIHJpbmdidWYtPnRhaWwsIHJpbmdidWYtPnNpemUpOwogfQogCi1z dGF0aWMgdm9pZCBfX2ludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCitzdGF0aWMgdm9pZCBfX2ludGVsX2VuZ2luZV9zdWJtaXQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0g ZW5naW5lLT5idWZmZXI7CiAJcmluZ2J1Zi0+dGFpbCAmPSByaW5nYnVmLT5zaXplIC0gMTsKQEAg LTcwLDcgKzcwLDcgQEAgZ2VuMl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMglpbnZhbGlkYXRlX2RvbWFpbnMsCiAJCSAgICAg ICB1MzIJZmx1c2hfZG9tYWlucykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKIAl1MzIgY21kOwogCWludCByZXQ7CiAKQEAgLTg1LDkgKzg1LDkgQEAgZ2VuMl9yZW5k ZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgY21kKTsKLQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5l KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC05Nyw3ICs5Nyw3IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIJaW52YWxpZGF0ZV9kb21haW5zLAogCQkgICAg ICAgdTMyCWZsdXNoX2RvbWFpbnMpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJp bmdidWY7CiAJdTMyIGNtZDsKIAlpbnQgcmV0OwogCkBAIC0xMjksMjMgKzEyOSwyMCBAQCBnZW40 X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCSAq IGFyZSBmbHVzaGVkIGF0IGFueSBNSV9GTFVTSC4KIAkgKi8KIAotCWNtZCA9IE1JX0ZMVVNIIHwg TUlfTk9fV1JJVEVfRkxVU0g7Ci0JaWYgKChpbnZhbGlkYXRlX2RvbWFpbnN8Zmx1c2hfZG9tYWlu cykgJiBJOTE1X0dFTV9ET01BSU5fUkVOREVSKQotCQljbWQgJj0gfk1JX05PX1dSSVRFX0ZMVVNI OwotCWlmIChpbnZhbGlkYXRlX2RvbWFpbnMgJiBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04p CisJY21kID0gTUlfRkxVU0g7CisJaWYgKGludmFsaWRhdGVfZG9tYWlucykgewogCQljbWQgfD0g TUlfRVhFX0ZMVVNIOwotCi0JaWYgKGludmFsaWRhdGVfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJ Tl9DT01NQU5EICYmCi0JICAgIChJU19HNFgocmVxLT5pOTE1KSB8fCBJU19HRU41KHJlcS0+aTkx NSkpKQotCQljbWQgfD0gTUlfSU5WQUxJREFURV9JU1A7CisJCWlmIChJU19HNFgocmVxLT5pOTE1 KSB8fCBJU19HRU41KHJlcS0+aTkxNSkpCisJCQljbWQgfD0gTUlfSU5WQUxJREFURV9JU1A7CisJ fQogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK KwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE5MCwzNCAr MTg3LDM1IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCiBzdGF0aWMgaW50CiBpbnRlbF9lbWl0X3Bvc3Rfc3luY19ub256ZXJvX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwotCXUzMiBzY3JhdGNoX2FkZHIgPSBlbmdpbmUt PnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CisJdTMyIHNjcmF0Y2hfYWRkciA9CisJ CXJlcS0+ZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwog CWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIEdGWF9PUF9QSVBFX0NP TlRST0woNSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIFBJUEVfQ09OVFJPTF9DU19TVEFM TCB8CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNSkpOworCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAogCQkJUElQRV9DT05U Uk9MX1NUQUxMX0FUX1NDT1JFQk9BUkQpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0 Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsgLyogYWRkcmVzcyAqLwotCWludGVs X3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiBsb3cgZHdvcmQgKi8KLQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCAwKTsgLyogaGlnaCBkd29yZCAqLwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1J X05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBzY3JhdGNoX2FkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOyAvKiBsb3cgZHdvcmQgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7IC8qIGhpZ2ggZHdvcmQgKi8KKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBQSVBF X0NPTlRST0xfUVdfV1JJVEUpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRk ciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsgLyogYWRkcmVzcyAqLwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOwotCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOwor CWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgUElQRV9DT05UUk9MX1FXX1dSSVRFKTsKKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgc2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJl dHVybiAwOwogfQpAQCAtMjI2LDkgKzIyNCwxMCBAQCBzdGF0aWMgaW50CiBnZW42X3JlbmRlcl9y aW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICAgICAgdTMy IGludmFsaWRhdGVfZG9tYWlucywgdTMyIGZsdXNoX2RvbWFpbnMpCiB7Ci0Jc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CisJdTMyIHNjcmF0Y2hfYWRkciA9CisJCXJlcS0+ZW5n aW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCXUzMiBmbGFn cyA9IDA7Ci0JdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsg MiAqIENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJLyogRm9yY2UgU05CIHdvcmthcm91 bmRzIGZvciBQSVBFX0NPTlRST0wgZmx1c2hlcyAqLwpAQCAtMjY2LDExICsyNjUsMTEgQEAgZ2Vu Nl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgR0ZYX09Q X1BJUEVfQ09OVFJPTCg0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmxhZ3MpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRkciB8IFBJUEVfQ09OVFJPTF9HTE9CQUxf R1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uo ZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsYWdzKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywg c2NyYXRjaF9hZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOworCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTI3OCwxOSArMjc3LDIwIEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5nX2NzX3N0 YWxsX3dhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChl bmdpbmUsIFBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Ci0JCQkgICAgICBQSVBFX0NPTlRST0xfU1RB TExfQVRfU0NPUkVCT0FSRCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkpOworCWludGVsX3Jpbmdf ZW1pdChyaW5nLAorCQkJUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKKwkJCVBJUEVfQ09OVFJPTF9T VEFMTF9BVF9TQ09SRUJPQVJEKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVy biAwOwogfQpAQCAtMjk5LDkgKzI5OSwxMCBAQCBzdGF0aWMgaW50CiBnZW43X3JlbmRlcl9yaW5n X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkgICAgICAgdTMyIGlu dmFsaWRhdGVfZG9tYWlucywgdTMyIGZsdXNoX2RvbWFpbnMpCiB7Ci0Jc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcgPSByZXEtPnJpbmdidWY7CisJdTMyIHNjcmF0Y2hfYWRkciA9CisJCXJlcS0+ZW5naW5l LT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCXUzMiBmbGFncyA9 IDA7Ci0JdTMyIHNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAq IENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJLyoKQEAgLTM1MCwxMSArMzUxLDExIEBA IGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIEdG WF9PUF9QSVBFX0NPTlRST0woNCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZsYWdzKTsK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBzY3JhdGNoX2FkZHIpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDQpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmlu ZywgZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBzY3JhdGNoX2FkZHIpOworCWludGVs X3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTM2MywyMCArMzY0LDIwIEBAIHN0YXRpYyBpbnQKIGdlbjhfZW1pdF9waXBl X2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCSAgICAgICB1MzIg ZmxhZ3MsIHUzMiBzY3JhdGNoX2FkZHIpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmdidWY7CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgR0ZY X09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZmxhZ3MpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHNjcmF0Y2hfYWRkcik7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCBmbGFncyk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHNjcmF0Y2hfYWRkcik7CisJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0 dXJuIDA7CiB9CkBAIC0zODUsOCArMzg2LDggQEAgc3RhdGljIGludAogZ2VuOF9yZW5kZXJfcmlu Z19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgICAgIHUzMiBp bnZhbGlkYXRlX2RvbWFpbnMsIHUzMiBmbHVzaF9kb21haW5zKQogewotCXUzMiBmbGFncyA9IDA7 CiAJdTMyIHNjcmF0Y2hfYWRkciA9IHJlcS0+ZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAy ICogQ0FDSEVMSU5FX0JZVEVTOworCXUzMiBmbGFncyA9IDA7CiAJaW50IHJldDsKIAogCWZsYWdz IHw9IFBJUEVfQ09OVFJPTF9DU19TVEFMTDsKQEAgLTY3OSwxNCArNjgwLDE0IEBAIGVycjoKIAog c3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVx LT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7 CiAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKncgPSAmcmVxLT5pOTE1LT53b3JrYXJvdW5kczsK IAlpbnQgcmV0LCBpOwogCiAJaWYgKHctPmNvdW50ID09IDApCiAJCXJldHVybiAwOwogCi0JZW5n aW5lLT5ncHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKKwlyZXEtPmVuZ2luZS0+Z3B1X2NhY2hlc19k aXJ0eSA9IHRydWU7CiAJcmV0ID0gaW50ZWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcSk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKQEAgLTY5NSwxNiArNjk2LDE2IEBAIHN0YXRpYyBpbnQg aW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOworCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9MT0FEX1JFR0lTVEVSX0lNTSh3LT5jb3VudCkpOwogCWZvciAoaSA9IDA7IGkgPCB3LT5j b3VudDsgaSsrKSB7Ci0JCWludGVsX3JpbmdfZW1pdF9yZWcoZW5naW5lLCB3LT5yZWdbaV0uYWRk cik7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHctPnJlZ1tpXS52YWx1ZSk7CisJCWludGVs X3JpbmdfZW1pdF9yZWcocmluZywgdy0+cmVnW2ldLmFkZHIpOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgdy0+cmVnW2ldLnZhbHVlKTsKIAl9Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlf Tk9PUCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCi0JaW50ZWxfcmluZ19h ZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCi0JZW5naW5lLT5n cHVfY2FjaGVzX2RpcnR5ID0gdHJ1ZTsKKwlyZXEtPmVuZ2luZS0+Z3B1X2NhY2hlc19kaXJ0eSA9 IHRydWU7CiAJcmV0ID0gaW50ZWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHJlcSk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKQEAgLTEzMzcsNyArMTMzOCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9y Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKIAkJ CSAgIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKQogewogI2RlZmluZSBNQk9YX1VQREFURV9EV09S RFMgOAotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEt PmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqc2lnbmFsbGVyID0gc2lnbmFsbGVy X3JlcS0+cmluZ2J1ZjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWdu YWxsZXJfcmVxLT5pOTE1OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlcjsKIAllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKQEAgLTEzNTIsMjAgKzEzNTMsMjMgQEAgc3RhdGljIGludCBn ZW44X3Jjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVx LAogCQlyZXR1cm4gcmV0OwogCiAJZm9yX2VhY2hfZW5naW5lX2lkKHdhaXRlciwgZGV2X3ByaXYs IGlkKSB7Ci0JCXU2NCBndHRfb2Zmc2V0ID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUuc2lnbmFsX2dn dHRbaWRdOworCQl1NjQgZ3R0X29mZnNldCA9CisJCQlzaWduYWxsZXJfcmVxLT5lbmdpbmUtPnNl bWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChndHRfb2Zmc2V0ID09IE1JX1NFTUFQSE9S RV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAogCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFs bGVyLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxl ciwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKLQkJCQkJICAgUElQRV9DT05UUk9MX1FX X1dSSVRFIHwKLQkJCQkJICAgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKKwkJaW50ZWxfcmluZ19l bWl0KHNpZ25hbGxlciwKKwkJCQlQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAorCQkJCVBJ UEVfQ09OVFJPTF9RV19XUklURSB8CisJCQkJUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKIAkJaW50 ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgbG93ZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7CiAJCWlu dGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHVwcGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwogCQlp bnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzaWduYWxsZXJfcmVxLT5mZW5jZS5zZXFubyk7CiAJ CWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFs bGVyLCBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQkJICAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3 YWl0ZXItPmh3X2lkKSk7CisJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsCisJCQkJTUlfU0VN QVBIT1JFX1NJR05BTCB8CisJCQkJTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7 CiAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIDApOwogCX0KIApAQCAtMTM3Niw3ICsxMzgw LDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpzaWduYWxsZXJfcmVxLAogCQkJICAgdW5zaWduZWQgaW50IG51bV9kd29yZHMpCiB7CiAj ZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyA2Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2ln bmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwpAQCAtMTM5MSwxOCAr MTM5NSwyMSBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJCXJldHVybiByZXQ7CiAKIAlmb3JfZWFjaF9lbmdp bmVfaWQod2FpdGVyLCBkZXZfcHJpdiwgaWQpIHsKLQkJdTY0IGd0dF9vZmZzZXQgPSBzaWduYWxs ZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CisJCXU2NCBndHRfb2Zmc2V0ID0KKwkJCXNp Z25hbGxlcl9yZXEtPmVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2lkXTsKIAkJaWYgKGd0 dF9vZmZzZXQgPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCkKIAkJCWNvbnRpbnVlOwogCi0J CWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIChNSV9GTFVTSF9EVyArIDEpIHwKLQkJCQkJICAg TUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7Ci0JCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIGxv d2VyXzMyX2JpdHMoZ3R0X29mZnNldCkgfAotCQkJCQkgICBNSV9GTFVTSF9EV19VU0VfR1RUKTsK KwkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwKKwkJCQkoTUlfRkxVU0hfRFcgKyAxKSB8IE1J X0ZMVVNIX0RXX09QX1NUT1JFRFcpOworCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLAorCQkJ CWxvd2VyXzMyX2JpdHMoZ3R0X29mZnNldCkgfAorCQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwog CQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCB1cHBlcl8zMl9iaXRzKGd0dF9vZmZzZXQpKTsK IAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgc2lnbmFsbGVyX3JlcS0+ZmVuY2Uuc2Vxbm8p OwotCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJ CQkJICAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7CisJCWludGVsX3Jpbmdf ZW1pdChzaWduYWxsZXIsCisJCQkJTUlfU0VNQVBIT1JFX1NJR05BTCB8CisJCQkJTUlfU0VNQVBI T1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7CiAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIs IDApOwogCX0KIApAQCAtMTQxMiw3ICsxNDE5LDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWdu YWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAogc3RhdGljIGlu dCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEs CiAJCSAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc2lnbmFsbGVyX3JlcS0+aTkxNTsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICp1c2VsZXNzOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwpA QCAtMTQyOCw3ICsxNDM1LDggQEAgc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJCXJldHVybiByZXQ7CiAKIAlmb3JfZWFj aF9lbmdpbmVfaWQodXNlbGVzcywgZGV2X3ByaXYsIGlkKSB7Ci0JCWk5MTVfcmVnX3QgbWJveF9y ZWcgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5tYm94LnNpZ25hbFtpZF07CisJCWk5MTVfcmVnX3Qg bWJveF9yZWcgPQorCQkJc2lnbmFsbGVyX3JlcS0+ZW5naW5lLT5zZW1hcGhvcmUubWJveC5zaWdu YWxbaWRdOwogCiAJCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKG1ib3hfcmVnKSkgewogCQkJaW50 ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwpAQCAtMTQ1 Niw2ICsxNDY0LDcgQEAgc3RhdGljIGludAogZ2VuNl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKIAlpbnQgcmV0OwogCiAJaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkKQEAgLTE0 NjYsMTIgKzE0NzUsMTEgQEAgZ2VuNl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUs Ci0JCQlJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIHJlcS0+ZmVuY2Uuc2Vxbm8pOwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX1VTRVJfSU5URVJSVVBUKTsKLQlfX2ludGVsX3JpbmdfYWR2YW5jZShl bmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9EV09SRF9JTkRFWCk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09S RF9JTkRFWF9TSElGVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+ZmVuY2Uuc2Vxbm8p OworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7CisJX19pbnRlbF9l bmdpbmVfc3VibWl0KGVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE0ODAsNiArMTQ4OCw3 IEBAIHN0YXRpYyBpbnQKIGdlbjhfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJl cS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVm OwogCWludCByZXQ7CiAKIAlpZiAoZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKQpAQCAtMTQ4OSwx OCArMTQ5OCwxOCBAQCBnZW44X3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkJIFBJUEVfQ09OVFJPTF9D U19TVEFMTCB8Ci0JCQkJIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcS0+ZW5naW5lKSk7Ci0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaTkxNV9nZW1f cmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9Q SVBFX0NPTlRST0woNikpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAoUElQRV9DT05UUk9MX0dM T0JBTF9HVFRfSVZCIHwKKwkJCSAgICAgICBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkJICAg ICAgIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRl bF9od3Nfc2Vxbm9fYWRkcmVzcyhlbmdpbmUpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkp OwogCS8qIFdlJ3JlIHRocmFzaGluZyBvbmUgZHdvcmQgb2YgSFdTLiAqLwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIDApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1VTRVJfSU5URVJS VVBUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlfX2ludGVsX3Jpbmdf YWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKKwlfX2ludGVsX2VuZ2luZV9zdWJtaXQoZW5naW5lKTsKIAogCXJldHVybiAwOwog fQpAQCAtMTUyNCw5ICsxNTMzLDkgQEAgZ2VuOF9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAogCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpz aWduYWxsZXIsCiAJICAgICAgIHUzMiBzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmdidWY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gd2FpdGVyX3JlcS0+aTkxNTsKLQl1NjQgb2Zmc2V0ID0gR0VOOF9XQUlUX09G RlNFVCh3YWl0ZXIsIHNpZ25hbGxlci0+aWQpOworCXU2NCBvZmZzZXQgPSBHRU44X1dBSVRfT0ZG U0VUKHdhaXRlcl9yZXEtPmVuZ2luZSwgc2lnbmFsbGVyLT5pZCk7CiAJc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0OwogCWludCByZXQ7CiAKQEAgLTE1NTgsMTEgKzE1NjcsMTEgQEAgZ2VuNl9y aW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAogCSAgICAg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCiAJICAgICAgIHUzMiBzZXFubykK IHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5lbmdpbmU7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmdidWY7 CiAJdTMyIGR3MSA9IE1JX1NFTUFQSE9SRV9NQk9YIHwKIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFS RSB8CiAJCSAgTUlfU0VNQVBIT1JFX1JFR0lTVEVSOwotCXUzMiB3YWl0X21ib3ggPSBzaWduYWxs ZXItPnNlbWFwaG9yZS5tYm94LndhaXRbd2FpdGVyLT5pZF07CisJdTMyIHdhaXRfbWJveCA9IHNp Z25hbGxlci0+c2VtYXBob3JlLm1ib3gud2FpdFt3YWl0ZXJfcmVxLT5lbmdpbmUtPmlkXTsKIAlp bnQgcmV0OwogCiAJLyogVGhyb3VnaG91dCBhbGwgb2YgdGhlIEdFTSBjb2RlLCBzZXFubyBwYXNz ZWQgaW1wbGllcyBvdXIgY3VycmVudApAQCAtMTY5MiwzNSArMTcwMSwzNCBAQCBic2RfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgICAgICAgdTMyICAgICBp bnZhbGlkYXRlX2RvbWFpbnMsCiAJICAgICAgIHUzMiAgICAgZmx1c2hfZG9tYWlucykKIHsKLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0g aW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9GTFVTSCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJaW50ZWxfcmluZ19l bWl0KHJpbmcsIE1JX0ZMVVNIKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiBp OXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NUT1JFX0RXT1JEX0lOREVYKTsKLQlpbnRlbF9yaW5n X2VtaXQoZW5naW5lLAotCQkJSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lO REVYX1NISUZUKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCByZXEtPmZlbmNlLnNlcW5vKTsK LQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JX19pbnRlbF9y aW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdP UkRfSU5ERVgpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwg TUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEt PmZlbmNlLnNlcW5vKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQp OworCV9faW50ZWxfZW5naW5lX3N1Ym1pdChyZXEtPmVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTE3ODcsMjAgKzE3OTUsMjAgQEAgaTk2NV9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCiAJ CQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSBy ZXEtPnJpbmdidWY7CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAy KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwK KwlpbnRlbF9yaW5nX2VtaXQocmluZywKIAkJCU1JX0JBVENIX0JVRkZFUl9TVEFSVCB8CiAJCQlN SV9CQVRDSF9HVFQgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUg PwogCQkJIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFX0k5NjUpKTsKLQlpbnRlbF9yaW5nX2VtaXQo ZW5naW5lLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3Jp bmdfZW1pdChyaW5nLCBvZmZzZXQpOworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJl dHVybiAwOwogfQpAQCAtMTgxNCw4ICsxODIyLDggQEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVy KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJIHU2NCBvZmZzZXQsIHUzMiBs ZW4sCiAJCQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0JdTMyIGNzX29mZnNldCA9IGVuZ2luZS0+c2Ny YXRjaC5ndHRfb2Zmc2V0OworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOworCXUzMiBjc19vZmZzZXQgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0 OwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CkBAIC0xODIz LDEzICsxODMxLDEzIEBAIGk4MzBfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKIAkJcmV0dXJuIHJldDsKIAogCS8qIEV2aWN0IHRoZSBpbnZhbGlk IFBURSBUTEJzICovCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgQ09MT1JfQkxUX0NNRCB8IEJM VF9XUklURV9SR0JBKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBCTFRfREVQVEhfMzIgfCBC TFRfUk9QX0NPTE9SX0NPUFkgfCA0MDk2KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBJODMw X1RMQl9FTlRSSUVTIDw8IDE2IHwgNCk7IC8qIGxvYWQgZWFjaCBwYWdlICovCi0JaW50ZWxfcmlu Z19lbWl0KGVuZ2luZSwgY3Nfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAweGRl YWRiZWVmKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5n X2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgQ09MT1JfQkxUX0NNRCB8 IEJMVF9XUklURV9SR0JBKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgQkxUX0RFUFRIXzMyIHwg QkxUX1JPUF9DT0xPUl9DT1BZIHwgNDA5Nik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEk4MzBf VExCX0VOVFJJRVMgPDwgMTYgfCA0KTsgLyogbG9hZCBlYWNoIHBhZ2UgKi8KKwlpbnRlbF9yaW5n X2VtaXQocmluZywgY3Nfb2Zmc2V0KTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMHhkZWFkYmVl Zik7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOworCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKIAogCWlmICgoZGlzcGF0Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1BJTk5FRCkg PT0gMCkgewogCQlpZiAobGVuID4gSTgzMF9CQVRDSF9MSU1JVCkKQEAgLTE4NDMsMTcgKzE4NTEs MTcgQEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAogCQkgKiBzdGFibGUgYmF0Y2ggc2NyYXRjaCBibyBhcmVhIChzbyB0aGF0IHRoZSBD UyBuZXZlcgogCQkgKiBzdHVtYmxlcyBvdmVyIGl0cyB0bGIgaW52YWxpZGF0aW9uIGJ1ZykgLi4u CiAJCSAqLwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBTUkNfQ09QWV9CTFRfQ01EIHwgQkxU X1dSSVRFX1JHQkEpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBKTsKKwkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCiAJCQkJQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8IDQwOTYp OwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAx NiB8IDQwOTYpOwotCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjc19vZmZzZXQpOwotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCA0MDk2KTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgb2Zm c2V0KTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERJVl9ST1VORF9VUChsZW4sIDQwOTYpIDw8 IDE2IHwgNDA5Nik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBjc19vZmZzZXQpOworCQlpbnRl bF9yaW5nX2VtaXQocmluZywgNDA5Nik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQp OwogCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0ZMVVNIKTsKLQkJaW50ZWxfcmluZ19l bWl0KGVuZ2luZSwgTUlfTk9PUCk7Ci0JCWludGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfRkxVU0gpOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTk9PUCk7CisJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCQkvKiAuLi4gYW5kIGV4 ZWN1dGUgaXQuICovCiAJCW9mZnNldCA9IGNzX29mZnNldDsKQEAgLTE4NjMsMTAgKzE4NzEsMTAg QEAgaTgzMF9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCBNSV9CQVRDSF9HVFQpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIG9mZnNldCB8IChkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJF ID8KLQkJCQkJICAwIDogTUlfQkFUQ0hfTk9OX1NFQ1VSRSkpOwotCWludGVsX3JpbmdfYWR2YW5j ZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9CQVRDSF9CVUZGRVJfU1RBUlQg fCBNSV9CQVRDSF9HVFQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQgfCAoZGlzcGF0 Y2hfZmxhZ3MgJiBJOTE1X0RJU1BBVENIX1NFQ1VSRSA/CisJCQkJCTAgOiBNSV9CQVRDSF9OT05f U0VDVVJFKSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCiAJcmV0dXJuIDA7CiB9CkBA IC0xODc2LDE3ICsxODg0LDE3IEBAIGk5MTVfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSB1NjQgb2Zmc2V0LCB1MzIgbGVuLAogCQkJIHVu c2lnbmVkIGRpc3BhdGNoX2ZsYWdzKQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IHJlcS0+ZW5naW5lOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOwogCWludCByZXQ7CiAKIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0JB VENIX0JVRkZFUl9TVEFSVCB8IE1JX0JBVENIX0dUVCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgb2Zmc2V0IHwgKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUgPwotCQkJ CQkgIDAgOiBNSV9CQVRDSF9OT05fU0VDVVJFKSk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2lu ZSk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IE1JX0JB VENIX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIG9mZnNldCB8IChkaXNwYXRjaF9mbGFn cyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KKwkJCQkJMCA6IE1JX0JBVENIX05PTl9TRUNVUkUp KTsKKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI0MTgs OCArMjQyNiw5IEBAIGludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCBpbnQgbnVtX2R3b3JkcykKIC8qIEFsaWduIHRoZSByaW5nIHRhaWwgdG8gYSBj YWNoZWxpbmUgYm91bmRhcnkgKi8KIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKLQlpbnQgbnVtX2R3b3JkcyA9IChlbmdpbmUtPmJ1ZmZl ci0+dGFpbCAmIChDQUNIRUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOworCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOworCWludCBudW1fZHdv cmRzID0KKwkJKHJpbmctPnRhaWwgJiAoQ0FDSEVMSU5FX0JZVEVTIC0gMSkpIC8gc2l6ZW9mKHVp bnQzMl90KTsKIAlpbnQgcmV0OwogCiAJaWYgKG51bV9kd29yZHMgPT0gMCkKQEAgLTI0MzEsOSAr MjQ0MCw5IEBAIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKIAkJcmV0dXJuIHJldDsKIAogCXdoaWxlIChudW1fZHdvcmRzLS0p Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CiAKLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9y aW5nX2FkdmFuY2UocmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI1MjQsNyArMjUzMyw3IEBA IHN0YXRpYyB2b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCiBzdGF0aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgICAgICAgdTMyIGludmFsaWRhdGUsIHUzMiBmbHVz aCkKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKIAl1aW50MzJfdCBj bWQ7CiAJaW50IHJldDsKIApAQCAtMjU1MiwxNyArMjU2MSwxNiBAQCBzdGF0aWMgaW50IGdlbjZf YnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJaWYgKGlu dmFsaWRhdGUgJiBJOTE1X0dFTV9HUFVfRE9NQUlOUykKIAkJY21kIHw9IE1JX0lOVkFMSURBVEVf VExCIHwgTUlfSU5WQUxJREFURV9CU0Q7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQp OwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCi0JCQlJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERS IHwgTUlfRkxVU0hfRFdfVVNFX0dUVCk7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7CisJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgfCBNSV9GTFVT SF9EV19VU0VfR1RUKTsKIAlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0gOCkgewotCQlpbnRl bF9yaW5nX2VtaXQoZW5naW5lLCAwKTsgLyogdXBwZXIgYWRkciAqLwotCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCAwKTsgLyogdmFsdWUgKi8KKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOyAv KiB1cHBlciBhZGRyICovCisJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUgKi8K IAl9IGVsc2UgIHsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Ci0JCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIE1JX05PT1ApOworCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKGVu Z2luZSk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCXJldHVybiAwOwogfQogCkBAIC0y NTcxLDggKzI1NzksOCBAQCBnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJ CQkgICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKLQlib29sIHBwZ3R0ID0gVVNFU19QUEdUVChlbmdp bmUtPmRldikgJiYKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1 ZjsKKwlib29sIHBwZ3R0ID0gVVNFU19QUEdUVChyZXEtPmk5MTUpICYmCiAJCQkhKGRpc3BhdGNo X2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpOwogCWludCByZXQ7CiAKQEAgLTI1ODEsMTMg KzI1ODksMTMgQEAgZ2VuOF9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCXJldHVybiByZXQ7CiAKIAkvKiBGSVhNRShCRFcpOiBBZGRy ZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCi0JaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwKKwlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfCAocHBndHQ8PDgpIHwK IAkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwogCQkJIE1JX0JBVENIX1JF U09VUkNFX1NUUkVBTUVSIDogMCkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGxvd2VyXzMy X2JpdHMob2Zmc2V0KSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgdXBwZXJfMzJfYml0cyhv ZmZzZXQpKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5n X2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhv ZmZzZXQpKTsKKwlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsK KwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7CisJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0yNTk3LDIyICsyNjA1LDIyIEBAIGhzd19yaW5nX2Rp c3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkg ICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkgICAgIHVuc2lnbmVkIGRpc3BhdGNoX2ZsYWdz KQogewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOworCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAK IAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCisJaW50ZWxfcmluZ19lbWl0KHJpbmcsCiAJ CQlNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQ QVRDSF9TRUNVUkUgPwogCQkJIDAgOiBNSV9CQVRDSF9QUEdUVF9IU1cgfCBNSV9CQVRDSF9OT05f U0VDVVJFX0hTVykgfAogCQkJKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9SUyA/CiAJ CQkgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7CiAJLyogYml0MC03IGlzIHRoZSBs ZW5ndGggb24gR0VONisgKi8KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBvZmZzZXQpOwotCWlu dGVsX3JpbmdfYWR2YW5jZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQp OworCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjYyMiwy MCArMjYzMCwyMCBAQCBnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW4sCiAJCQkg ICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKIHsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXEtPmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9 IHJlcS0+cmluZ2J1ZjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IDIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LAorCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwKIAkJ CShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFID8KIAkJCSAwIDogTUlfQkFU Q0hfTk9OX1NFQ1VSRV9JOTY1KSk7CiAJLyogYml0MC03IGlzIHRoZSBsZW5ndGggb24gR0VONisg Ki8KLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBvZmZzZXQpOwotCWludGVsX3JpbmdfYWR2YW5j ZShlbmdpbmUpOworCWludGVsX3JpbmdfZW1pdChyaW5nLCBvZmZzZXQpOworCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjY0NSw3ICsyNjUzLDcgQEAgZ2Vu Nl9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCiBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKIAkJCSAgIHUzMiBpbnZhbGlkYXRlLCB1MzIgZmx1c2gpCiB7Ci0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7CiAJdWludDMyX3QgY21kOwogCWludCByZXQ7CiAK QEAgLTI2NzIsMTcgKzI2ODAsMTcgQEAgc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICovCiAJaWYgKGludmFsaWRhdGUgJiBJOTE1 X0dFTV9ET01BSU5fUkVOREVSKQogCQljbWQgfD0gTUlfSU5WQUxJREFURV9UTEI7Ci0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgY21kKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAorCWludGVs X3JpbmdfZW1pdChyaW5nLCBjbWQpOworCWludGVsX3JpbmdfZW1pdChyaW5nLAogCQkJSTkxNV9H RU1fSFdTX1NDUkFUQ0hfQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQpOwogCWlmIChJTlRFTF9H RU4ocmVxLT5pOTE1KSA+PSA4KSB7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiB1 cHBlciBhZGRyICovCi0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIDApOyAvKiB2YWx1ZSAqLwor CQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7IC8qIHVwcGVyIGFkZHIgKi8KKwkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIDApOyAvKiB2YWx1ZSAqLwogCX0gZWxzZSAgewotCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap OwogCX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKKwlpbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAppbmRleCA5YTBhMDI2NTMwMzkuLjRmNGI4ZWE0ZGY4MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtNDU0LDMyICs0NTQsMjEgQEAgaW50IGludGVsX3Jp bmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KTsKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgaW50IG4pOwogaW50IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2Nh Y2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiAKLXN0YXRp YyBpbmxpbmUgdm9pZCBfX2ludGVsX3JpbmdidWZmZXJfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmIsCi0JCQkJCSAgIHUzMiBkYXRhKQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3Jp bmdfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZywgdTMyIGRhdGEpCiB7Ci0JKih1 aW50MzJfdCAqKShyYi0+dmFkZHIgKyByYi0+dGFpbCkgPSBkYXRhOwotCXJiLT50YWlsICs9IDQ7 CisJKih1aW50MzJfdCAqKShyaW5nLT52YWRkciArIHJpbmctPnRhaWwpID0gZGF0YTsKKwlyaW5n LT50YWlsICs9IDQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVsX3JpbmdidWZmZXJf YWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmIpCi17Ci0JcmItPnRhaWwgJj0gcmIt PnNpemUgLSAxOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIGRhdGEpCi17Ci0JX19pbnRlbF9yaW5nYnVm ZmVyX2VtaXQoZW5naW5lLT5idWZmZXIsIGRhdGEpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQg aW50ZWxfcmluZ19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCitzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZywKIAkJCQkgICAgICAgaTkxNV9yZWdfdCByZWcpCiB7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CisJaW50ZWxfcmluZ19lbWl0KHJp bmcsIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg aW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRp YyBpbmxpbmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcpCiB7Ci0JX19pbnRlbF9yaW5nYnVmZmVyX2FkdmFuY2UoZW5naW5lLT5idWZmZXIpOwor CXJpbmctPnRhaWwgJj0gcmluZy0+c2l6ZSAtIDE7CiB9CiAKIGludCBfX2ludGVsX3Jpbmdfc3Bh Y2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7Ci0tIAoyLjguMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==