From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [PATCH -v2 3/8] drm/exynos: remove struct *_win_data abstraction on planes Date: Thu, 26 Mar 2015 11:10:56 -0300 Message-ID: <1427379061-30621-4-git-send-email-gustavo@padovan.org> References: <1427379061-30621-1-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1427379061-30621-1-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-samsung-soc@vger.kernel.org Cc: Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK c3RydWN0IHtmaW1kLG1peGVyLHZpZGl9X3dpbl9kYXRhIHdhcyBqdXN0IGtlZXBpbmcgdGhlIHNh bWUgZGF0YQphcyBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSB0aHVzIGdldCByaWRlIG9mIGl0IGFu ZCB1c2UgZXh5bm9zX2RybV9wbGFuZQpkaXJlY3RseS4KCkl0IGNoYW5nZXMgaG93IHBsYW5lcyBh cmUgY3JlYXRlZCBhbmQgcmVtb3ZlIC53aW5fbW9kZV9zZXQoKSBjYWxsYmFjawp0aGF0IHdhcyBv bmx5IGZpbGxpbmcgYWxsICpfd2luX2RhdGEgc3RydWN0cy4KClNpZ25lZC1vZmYtYnk6IEd1c3Rh dm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vczdfZHJtX2RlY29uLmMgfCAxNjQgKysrKysrKystLS0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYyAgIHwgICA5 ICstCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jICAgIHwgIDE0IC0tCiBkcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmggICAgfCAgIDUgKy0KIGRyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgICB8IDE4MiArKysrKysrKystLS0tLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmUuYyAgfCAg MjMgKy0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmggIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jICAgfCAxMjMgKysr Ky0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMgICAg ICB8IDIxMiArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwg MjQyIGluc2VydGlvbnMoKyksIDQ5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vczdfZHJtX2RlY29uLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vczdfZHJtX2RlY29uLmMKaW5kZXggNjNmMDJlMi4uMmNiZTMyOCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M3X2RybV9kZWNvbi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zN19kcm1fZGVjb24uYwpAQCAtMjgsNiArMjgsNyBAQAog I2luY2x1ZGUgPHZpZGVvL2V4eW5vczdfZGVjb24uaD4KIAogI2luY2x1ZGUgImV4eW5vc19kcm1f Y3J0Yy5oIgorI2luY2x1ZGUgImV4eW5vc19kcm1fcGxhbmUuaCIKICNpbmNsdWRlICJleHlub3Nf ZHJtX2Rydi5oIgogI2luY2x1ZGUgImV4eW5vc19kcm1fZmJkZXYuaCIKICNpbmNsdWRlICJleHlu b3NfZHJtX2lvbW11LmgiCkBAIC00MSwzMiArNDIsMTYgQEAKIAogI2RlZmluZSBXSU5ET1dTX05S CTIKIAotc3RydWN0IGRlY29uX3dpbl9kYXRhIHsKLQl1bnNpZ25lZCBpbnQJCW92bF94OwotCXVu c2lnbmVkIGludAkJb3ZsX3k7Ci0JdW5zaWduZWQgaW50CQlvZmZzZXRfeDsKLQl1bnNpZ25lZCBp bnQJCW9mZnNldF95OwotCXVuc2lnbmVkIGludAkJb3ZsX3dpZHRoOwotCXVuc2lnbmVkIGludAkJ b3ZsX2hlaWdodDsKLQl1bnNpZ25lZCBpbnQJCWZiX3dpZHRoOwotCXVuc2lnbmVkIGludAkJZmJf aGVpZ2h0OwotCXVuc2lnbmVkIGludAkJYnBwOwotCXVuc2lnbmVkIGludAkJcGl4ZWxfZm9ybWF0 OwotCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwotCWJvb2wJCQllbmFibGVkOwotCWJvb2wJCQlyZXN1 bWU7Ci19OwotCiBzdHJ1Y3QgZGVjb25fY29udGV4dCB7CiAJc3RydWN0IGRldmljZQkJCSpkZXY7 CiAJc3RydWN0IGRybV9kZXZpY2UJCSpkcm1fZGV2OwogCXN0cnVjdCBleHlub3NfZHJtX2NydGMJ CSpjcnRjOworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCQlwbGFuZXNbV0lORE9XU19OUl07CiAJ c3RydWN0IGNsawkJCSpwY2xrOwogCXN0cnVjdCBjbGsJCQkqYWNsazsKIAlzdHJ1Y3QgY2xrCQkJ KmVjbGs7CiAJc3RydWN0IGNsawkJCSp2Y2xrOwogCXZvaWQgX19pb21lbQkJCSpyZWdzOwotCXN0 cnVjdCBkZWNvbl93aW5fZGF0YQkJd2luX2RhdGFbV0lORE9XU19OUl07CiAJdW5zaWduZWQgaW50 CQkJZGVmYXVsdF93aW47CiAJdW5zaWduZWQgbG9uZwkJCWlycV9mbGFnczsKIAlib29sCQkJCWk4 MF9pZjsKQEAgLTI5Niw1OSArMjgxLDE2IEBAIHN0YXRpYyB2b2lkIGRlY29uX2Rpc2FibGVfdmJs YW5rKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBk ZWNvbl93aW5fbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywKLQkJCXN0cnVj dCBleHlub3NfZHJtX3BsYW5lICpwbGFuZSkKLXsKLQlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4 ID0gY3J0Yy0+Y3R4OwotCXN0cnVjdCBkZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Ci0JaW50IHdp biwgcGFkZGluZzsKLQotCWlmICghcGxhbmUpIHsKLQkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxM XG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCXdpbiA9IHBsYW5lLT56cG9zOwotCWlmICh3aW4gPT0g REVGQVVMVF9aUE9TKQotCQl3aW4gPSBjdHgtPmRlZmF1bHRfd2luOwotCi0JaWYgKHdpbiA8IDAg fHwgd2luID49IFdJTkRPV1NfTlIpCi0JCXJldHVybjsKLQotCi0Jd2luX2RhdGEgPSAmY3R4LT53 aW5fZGF0YVt3aW5dOwotCi0JcGFkZGluZyA9IChwbGFuZS0+cGl0Y2ggLyAocGxhbmUtPmJwcCA+ PiAzKSkgLSBwbGFuZS0+ZmJfd2lkdGg7Ci0Jd2luX2RhdGEtPm9mZnNldF94ID0gcGxhbmUtPmZi X3g7Ci0Jd2luX2RhdGEtPm9mZnNldF95ID0gcGxhbmUtPmZiX3k7Ci0Jd2luX2RhdGEtPmZiX3dp ZHRoID0gcGxhbmUtPmZiX3dpZHRoICsgcGFkZGluZzsKLQl3aW5fZGF0YS0+ZmJfaGVpZ2h0ID0g cGxhbmUtPmZiX2hlaWdodDsKLQl3aW5fZGF0YS0+b3ZsX3ggPSBwbGFuZS0+Y3J0Y194OwotCXdp bl9kYXRhLT5vdmxfeSA9IHBsYW5lLT5jcnRjX3k7Ci0Jd2luX2RhdGEtPm92bF93aWR0aCA9IHBs YW5lLT5jcnRjX3dpZHRoOwotCXdpbl9kYXRhLT5vdmxfaGVpZ2h0ID0gcGxhbmUtPmNydGNfaGVp Z2h0OwotCXdpbl9kYXRhLT5kbWFfYWRkciA9IHBsYW5lLT5kbWFfYWRkclswXTsKLQl3aW5fZGF0 YS0+YnBwID0gcGxhbmUtPmJwcDsKLQl3aW5fZGF0YS0+cGl4ZWxfZm9ybWF0ID0gcGxhbmUtPnBp eGVsX2Zvcm1hdDsKLQotCURSTV9ERUJVR19LTVMoIm9mZnNldF94ID0gJWQsIG9mZnNldF95ID0g JWRcbiIsCi0JCQl3aW5fZGF0YS0+b2Zmc2V0X3gsIHdpbl9kYXRhLT5vZmZzZXRfeSk7Ci0JRFJN X0RFQlVHX0tNUygib3ZsX3dpZHRoID0gJWQsIG92bF9oZWlnaHQgPSAlZFxuIiwKLQkJCXdpbl9k YXRhLT5vdmxfd2lkdGgsIHdpbl9kYXRhLT5vdmxfaGVpZ2h0KTsKLQlEUk1fREVCVUdfS01TKCJw YWRkciA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHIpOwotCURS TV9ERUJVR19LTVMoImZiX3dpZHRoID0gJWQsIGNydGNfd2lkdGggPSAlZFxuIiwKLQkJCXBsYW5l LT5mYl93aWR0aCwgcGxhbmUtPmNydGNfd2lkdGgpOwotfQotCiBzdGF0aWMgdm9pZCBkZWNvbl93 aW5fc2V0X3BpeGZtdChzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgd2lu KQogewotCXN0cnVjdCBkZWNvbl93aW5fZGF0YSAqd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3 aW5dOworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5d OwogCXVuc2lnbmVkIGxvbmcgdmFsOworCWludCBwYWRkaW5nOwogCiAJdmFsID0gcmVhZGwoY3R4 LT5yZWdzICsgV0lOQ09OKHdpbikpOwogCXZhbCAmPSB+V0lOQ09OeF9CUFBNT0RFX01BU0s7CiAK LQlzd2l0Y2ggKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQpIHsKKwlzd2l0Y2ggKHBsYW5lLT5waXhl bF9mb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgogCQl2YWwgfD0gV0lOQ09OeF9C UFBNT0RFXzE2QlBQXzU2NTsKIAkJdmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JEOwpAQCAt Mzk3LDcgKzMzOSw3IEBAIHN0YXRpYyB2b2lkIGRlY29uX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBk ZWNvbl9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCB3aW4pCiAJCWJyZWFrOwogCX0KIAotCURS TV9ERUJVR19LTVMoImJwcCA9ICVkXG4iLCB3aW5fZGF0YS0+YnBwKTsKKwlEUk1fREVCVUdfS01T KCJicHAgPSAlZFxuIiwgcGxhbmUtPmJwcCk7CiAKIAkvKgogCSAqIEluIGNhc2Ugb2YgZXh5bm9z LCBzZXR0aW5nIGRtYS1idXJzdCB0byAxNldvcmQgY2F1c2VzIHBlcm1hbmVudApAQCAtNDA3LDcg KzM0OSw4IEBAIHN0YXRpYyB2b2lkIGRlY29uX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBkZWNvbl9j b250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCB3aW4pCiAJICogbW92ZW1lbnQgY2F1c2VzIHVuc3Rh YmxlIERNQSB3aGljaCByZXN1bHRzIGludG8gaW9tbXUgY3Jhc2gvdGVhci4KIAkgKi8KIAotCWlm ICh3aW5fZGF0YS0+ZmJfd2lkdGggPCBNSU5fRkJfV0lEVEhfRk9SXzE2V09SRF9CVVJTVCkgewor CXBhZGRpbmcgPSAocGxhbmUtPnBpdGNoIC8gKHBsYW5lLT5icHAgPj4gMykpIC0gcGxhbmUtPmZi X3dpZHRoOworCWlmIChwbGFuZS0+ZmJfd2lkdGggKyBwYWRkaW5nIDwgTUlOX0ZCX1dJRFRIX0ZP Ul8xNldPUkRfQlVSU1QpIHsKIAkJdmFsICY9IH5XSU5DT054X0JVUlNUTEVOX01BU0s7CiAJCXZh bCB8PSBXSU5DT054X0JVUlNUTEVOXzhXT1JEOwogCX0KQEAgLTQ1Myw4ICszOTYsOCBAQCBzdGF0 aWMgdm9pZCBkZWNvbl93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGlu dCB6cG9zKQogewogCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7CiAJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+YmFzZS5tb2RlOwotCXN0cnVjdCBk ZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7Ci0JaW50IHdpbiA9IHpwb3M7CisJc3RydWN0IGV4eW5v c19kcm1fcGxhbmUgKnBsYW5lOworCWludCBwYWRkaW5nLCB3aW4gPSB6cG9zOwogCXVuc2lnbmVk IGxvbmcgdmFsLCBhbHBoYTsKIAl1bnNpZ25lZCBpbnQgbGFzdF94OwogCXVuc2lnbmVkIGludCBs YXN0X3k7CkBAIC00NjgsMTEgKzQxMSwxMSBAQCBzdGF0aWMgdm9pZCBkZWNvbl93aW5fY29tbWl0 KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogCWlmICh3aW4gPCAwIHx8 IHdpbiA+PSBXSU5ET1dTX05SKQogCQlyZXR1cm47CiAKLQl3aW5fZGF0YSA9ICZjdHgtPndpbl9k YXRhW3dpbl07CisJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKIAogCS8qIElmIHN1c3BlbmRl ZCwgZW5hYmxlIHRoaXMgb24gcmVzdW1lICovCiAJaWYgKGN0eC0+c3VzcGVuZGVkKSB7Ci0JCXdp bl9kYXRhLT5yZXN1bWUgPSB0cnVlOworCQlwbGFuZS0+cmVzdW1lID0gdHJ1ZTsKIAkJcmV0dXJu OwogCX0KIApAQCAtNDkwLDM5ICs0MzMsNDEgQEAgc3RhdGljIHZvaWQgZGVjb25fd2luX2NvbW1p dChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKIAlkZWNvbl9zaGFkb3df cHJvdGVjdF93aW4oY3R4LCB3aW4sIHRydWUpOwogCiAJLyogYnVmZmVyIHN0YXJ0IGFkZHJlc3Mg Ki8KLQl2YWwgPSAodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHI7CisJdmFsID0gKHVu c2lnbmVkIGxvbmcpcGxhbmUtPmRtYV9hZGRyWzBdOwogCXdyaXRlbCh2YWwsIGN0eC0+cmVncyAr IFZJRFdfQlVGX1NUQVJUKHdpbikpOwogCisJcGFkZGluZyA9IChwbGFuZS0+cGl0Y2ggLyAocGxh bmUtPmJwcCA+PiAzKSkgLSBwbGFuZS0+ZmJfd2lkdGg7CisKIAkvKiBidWZmZXIgc2l6ZSAqLwot CXdyaXRlbCh3aW5fZGF0YS0+ZmJfd2lkdGgsIGN0eC0+cmVncyArIFZJRFdfV0hPTEVfWCh3aW4p KTsKLQl3cml0ZWwod2luX2RhdGEtPmZiX2hlaWdodCwgY3R4LT5yZWdzICsgVklEV19XSE9MRV9Z KHdpbikpOworCXdyaXRlbChwbGFuZS0+ZmJfd2lkdGggKyBwYWRkaW5nLCBjdHgtPnJlZ3MgKyBW SURXX1dIT0xFX1god2luKSk7CisJd3JpdGVsKHBsYW5lLT5mYl9oZWlnaHQsIGN0eC0+cmVncyAr IFZJRFdfV0hPTEVfWSh3aW4pKTsKIAogCS8qIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyIHRvIHJlYWQgKi8KLQl3cml0ZWwod2luX2RhdGEtPm9mZnNldF94LCBjdHgtPnJlZ3Mg KyBWSURXX09GRlNFVF9YKHdpbikpOwotCXdyaXRlbCh3aW5fZGF0YS0+b2Zmc2V0X3ksIGN0eC0+ cmVncyArIFZJRFdfT0ZGU0VUX1kod2luKSk7CisJd3JpdGVsKHBsYW5lLT5mYl94LCBjdHgtPnJl Z3MgKyBWSURXX09GRlNFVF9YKHdpbikpOworCXdyaXRlbChwbGFuZS0+ZmJfeSwgY3R4LT5yZWdz ICsgVklEV19PRkZTRVRfWSh3aW4pKTsKIAogCURSTV9ERUJVR19LTVMoInN0YXJ0IGFkZHIgPSAw eCVseFxuIiwKLQkJCSh1bnNpZ25lZCBsb25nKXdpbl9kYXRhLT5kbWFfYWRkcik7CisJCQkodW5z aWduZWQgbG9uZyl2YWwpOwogCURSTV9ERUJVR19LTVMoIm92bF93aWR0aCA9ICVkLCBvdmxfaGVp Z2h0ID0gJWRcbiIsCi0JCQl3aW5fZGF0YS0+b3ZsX3dpZHRoLCB3aW5fZGF0YS0+b3ZsX2hlaWdo dCk7CisJCQlwbGFuZS0+Y3J0Y193aWR0aCwgcGxhbmUtPmNydGNfaGVpZ2h0KTsKIAogCS8qCiAJ ICogT1NEIHBvc2l0aW9uLgogCSAqIEluIGNhc2UgdGhlIHdpbmRvdyBsYXlvdXQgZ29lcyBvZiBM Q0QgbGF5b3V0LCBERUNPTiBmYWlscy4KIAkgKi8KLQlpZiAoKHdpbl9kYXRhLT5vdmxfeCArIHdp bl9kYXRhLT5vdmxfd2lkdGgpID4gbW9kZS0+aGRpc3BsYXkpCi0JCXdpbl9kYXRhLT5vdmxfeCA9 IG1vZGUtPmhkaXNwbGF5IC0gd2luX2RhdGEtPm92bF93aWR0aDsKLQlpZiAoKHdpbl9kYXRhLT5v dmxfeSArIHdpbl9kYXRhLT5vdmxfaGVpZ2h0KSA+IG1vZGUtPnZkaXNwbGF5KQotCQl3aW5fZGF0 YS0+b3ZsX3kgPSBtb2RlLT52ZGlzcGxheSAtIHdpbl9kYXRhLT5vdmxfaGVpZ2h0OworCWlmICgo cGxhbmUtPmNydGNfeCArIHBsYW5lLT5jcnRjX3dpZHRoKSA+IG1vZGUtPmhkaXNwbGF5KQorCQlw bGFuZS0+Y3J0Y194ID0gbW9kZS0+aGRpc3BsYXkgLSBwbGFuZS0+Y3J0Y193aWR0aDsKKwlpZiAo KHBsYW5lLT5jcnRjX3kgKyBwbGFuZS0+Y3J0Y19oZWlnaHQpID4gbW9kZS0+dmRpc3BsYXkpCisJ CXBsYW5lLT5jcnRjX3kgPSBtb2RlLT52ZGlzcGxheSAtIHBsYW5lLT5jcnRjX2hlaWdodDsKIAot CXZhbCA9IFZJRE9TRHhBX1RPUExFRlRfWCh3aW5fZGF0YS0+b3ZsX3gpIHwKLQkJVklET1NEeEFf VE9QTEVGVF9ZKHdpbl9kYXRhLT5vdmxfeSk7CisJdmFsID0gVklET1NEeEFfVE9QTEVGVF9YKHBs YW5lLT5jcnRjX3gpIHwKKwkJVklET1NEeEFfVE9QTEVGVF9ZKHBsYW5lLT5jcnRjX3kpOwogCXdy aXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRE9TRF9BKHdpbikpOwogCi0JbGFzdF94ID0gd2luX2Rh dGEtPm92bF94ICsgd2luX2RhdGEtPm92bF93aWR0aDsKKwlsYXN0X3ggPSBwbGFuZS0+Y3J0Y194 ICsgcGxhbmUtPmNydGNfd2lkdGg7CiAJaWYgKGxhc3RfeCkKIAkJbGFzdF94LS07Ci0JbGFzdF95 ID0gd2luX2RhdGEtPm92bF95ICsgd2luX2RhdGEtPm92bF9oZWlnaHQ7CisJbGFzdF95ID0gcGxh bmUtPmNydGNfeSArIHBsYW5lLT5jcnRjX2hlaWdodDsKIAlpZiAobGFzdF95KQogCQlsYXN0X3kt LTsKIApAQCAtNTMxLDcgKzQ3Niw3IEBAIHN0YXRpYyB2b2lkIGRlY29uX3dpbl9jb21taXQoc3Ry dWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJd3JpdGVsKHZhbCwgY3R4LT5y ZWdzICsgVklET1NEX0Iod2luKSk7CiAKIAlEUk1fREVCVUdfS01TKCJvc2QgcG9zOiB0eCA9ICVk LCB0eSA9ICVkLCBieCA9ICVkLCBieSA9ICVkXG4iLAotCQkJd2luX2RhdGEtPm92bF94LCB3aW5f ZGF0YS0+b3ZsX3ksIGxhc3RfeCwgbGFzdF95KTsKKwkJCXBsYW5lLT5jcnRjX3gsIHBsYW5lLT5j cnRjX3ksIGxhc3RfeCwgbGFzdF95KTsKIAogCS8qIE9TRCBhbHBoYSAqLwogCWFscGhhID0gVklE T1NEeENfQUxQSEEwX1JfRigweDApIHwKQEAgLTU2NSwxMyArNTEwLDEzIEBAIHN0YXRpYyB2b2lk IGRlY29uX3dpbl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3Mp CiAJdmFsIHw9IERFQ09OX1VQREFURV9TVEFOREFMT05FX0Y7CiAJd3JpdGVsKHZhbCwgY3R4LT5y ZWdzICsgREVDT05fVVBEQVRFKTsKIAotCXdpbl9kYXRhLT5lbmFibGVkID0gdHJ1ZTsKKwlwbGFu ZS0+ZW5hYmxlZCA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIGRlY29uX3dpbl9kaXNhYmxlKHN0 cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogewogCXN0cnVjdCBkZWNvbl9j b250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Ci0Jc3RydWN0IGRlY29uX3dpbl9kYXRhICp3aW5fZGF0 YTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJaW50IHdpbiA9IHpwb3M7CiAJ dTMyIHZhbDsKIApAQCAtNTgxLDExICs1MjYsMTEgQEAgc3RhdGljIHZvaWQgZGVjb25fd2luX2Rp c2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJaWYgKHdpbiA8 IDAgfHwgd2luID49IFdJTkRPV1NfTlIpCiAJCXJldHVybjsKIAotCXdpbl9kYXRhID0gJmN0eC0+ d2luX2RhdGFbd2luXTsKKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwogCiAJaWYgKGN0eC0+ c3VzcGVuZGVkKSB7CiAJCS8qIGRvIG5vdCByZXN1bWUgdGhpcyB3aW5kb3cqLwotCQl3aW5fZGF0 YS0+cmVzdW1lID0gZmFsc2U7CisJCXBsYW5lLT5yZXN1bWUgPSBmYWxzZTsKIAkJcmV0dXJuOwog CX0KIApAQCAtNjA0LDQyICs1NDksNDIgQEAgc3RhdGljIHZvaWQgZGVjb25fd2luX2Rpc2FibGUo c3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJdmFsIHw9IERFQ09OX1VQ REFURV9TVEFOREFMT05FX0Y7CiAJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsgREVDT05fVVBEQVRF KTsKIAotCXdpbl9kYXRhLT5lbmFibGVkID0gZmFsc2U7CisJcGxhbmUtPmVuYWJsZWQgPSBmYWxz ZTsKIH0KIAogc3RhdGljIHZvaWQgZGVjb25fd2luZG93X3N1c3BlbmQoc3RydWN0IGRlY29uX2Nv bnRleHQgKmN0eCkKIHsKLQlzdHJ1Y3QgZGVjb25fd2luX2RhdGEgKndpbl9kYXRhOworCXN0cnVj dCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBX SU5ET1dTX05SOyBpKyspIHsKLQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKLQkJd2lu X2RhdGEtPnJlc3VtZSA9IHdpbl9kYXRhLT5lbmFibGVkOwotCQlpZiAod2luX2RhdGEtPmVuYWJs ZWQpCisJCXBsYW5lID0gJmN0eC0+cGxhbmVzW2ldOworCQlwbGFuZS0+cmVzdW1lID0gcGxhbmUt PmVuYWJsZWQ7CisJCWlmIChwbGFuZS0+ZW5hYmxlZCkKIAkJCWRlY29uX3dpbl9kaXNhYmxlKGN0 eC0+Y3J0YywgaSk7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBkZWNvbl93aW5kb3dfcmVzdW1lKHN0 cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgpCiB7Ci0Jc3RydWN0IGRlY29uX3dpbl9kYXRhICp3aW5f ZGF0YTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJaW50IGk7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Ci0JCXdpbl9kYXRhID0gJmN0eC0+d2luX2Rh dGFbaV07Ci0JCXdpbl9kYXRhLT5lbmFibGVkID0gd2luX2RhdGEtPnJlc3VtZTsKLQkJd2luX2Rh dGEtPnJlc3VtZSA9IGZhbHNlOworCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsKKwkJcGxhbmUt PmVuYWJsZWQgPSBwbGFuZS0+cmVzdW1lOworCQlwbGFuZS0+cmVzdW1lID0gZmFsc2U7CiAJfQog fQogCiBzdGF0aWMgdm9pZCBkZWNvbl9hcHBseShzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4KQog ewotCXN0cnVjdCBkZWNvbl93aW5fZGF0YSAqd2luX2RhdGE7CisJc3RydWN0IGV4eW5vc19kcm1f cGxhbmUgKnBsYW5lOwogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkr KykgewotCQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwotCQlpZiAod2luX2RhdGEtPmVu YWJsZWQpCisJCXBsYW5lID0gJmN0eC0+cGxhbmVzW2ldOworCQlpZiAocGxhbmUtPmVuYWJsZWQp CiAJCQlkZWNvbl93aW5fY29tbWl0KGN0eC0+Y3J0YywgaSk7CiAJCWVsc2UKIAkJCWRlY29uX3dp bl9kaXNhYmxlKGN0eC0+Y3J0YywgaSk7CkBAIC03NzksNyArNzI0LDYgQEAgc3RhdGljIHN0cnVj dCBleHlub3NfZHJtX2NydGNfb3BzIGRlY29uX2NydGNfb3BzID0gewogCS5lbmFibGVfdmJsYW5r ID0gZGVjb25fZW5hYmxlX3ZibGFuaywKIAkuZGlzYWJsZV92YmxhbmsgPSBkZWNvbl9kaXNhYmxl X3ZibGFuaywKIAkud2FpdF9mb3JfdmJsYW5rID0gZGVjb25fd2FpdF9mb3JfdmJsYW5rLAotCS53 aW5fbW9kZV9zZXQgPSBkZWNvbl93aW5fbW9kZV9zZXQsCiAJLndpbl9jb21taXQgPSBkZWNvbl93 aW5fY29tbWl0LAogCS53aW5fZGlzYWJsZSA9IGRlY29uX3dpbl9kaXNhYmxlLAogfTsKQEAgLTgx OCw3ICs3NjIsOSBAQCBzdGF0aWMgaW50IGRlY29uX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRlY29uX2NvbnRl eHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1f ZGV2ID0gZGF0YTsKLQlpbnQgcmV0OworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3Nf cGxhbmU7CisJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlOworCWludCB6cG9zLCByZXQ7CiAKIAly ZXQgPSBkZWNvbl9jdHhfaW5pdGlhbGl6ZShjdHgsIGRybV9kZXYpOwogCWlmIChyZXQpIHsKQEAg LTgyNiw4ICs3NzIsMTYgQEAgc3RhdGljIGludCBkZWNvbl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCQlyZXR1cm4gcmV0OwogCX0K IAotCWN0eC0+Y3J0YyA9IGV4eW5vc19kcm1fY3J0Y19jcmVhdGUoZHJtX2RldiwgY3R4LT5waXBl LAotCQkJCQkgICBFWFlOT1NfRElTUExBWV9UWVBFX0xDRCwKKwlmb3IgKHpwb3MgPSAwOyB6cG9z IDwgV0lORE9XU19OUjsgenBvcysrKSB7CisJCXR5cGUgPSAoenBvcyA9PSBjdHgtPmRlZmF1bHRf d2luKSA/IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgOgorCQkJCQkJRFJNX1BMQU5FX1RZUEVfT1ZF UkxBWTsKKwkJZXh5bm9zX3BsYW5lX2luaXQoZHJtX2RldiwgJmN0eC0+cGxhbmVzW3pwb3NdLCAx IDw8IGN0eC0+cGlwZSwKKwkJCQkgIHR5cGUpOworCX0KKworCWV4eW5vc19wbGFuZSA9ICZjdHgt PnBsYW5lc1tjdHgtPmRlZmF1bHRfd2luXTsKKwljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNf Y3JlYXRlKGRybV9kZXYsICZleHlub3NfcGxhbmUtPmJhc2UsCisJCQkJCSAgIGN0eC0+cGlwZSwg RVhZTk9TX0RJU1BMQVlfVFlQRV9MQ0QsCiAJCQkJCSAgICZkZWNvbl9jcnRjX29wcywgY3R4KTsK IAlpZiAoSVNfRVJSKGN0eC0+Y3J0YykpIHsKIAkJZGVjb25fY3R4X3JlbW92ZShjdHgpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYyBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmMKaW5kZXggNDhjY2FiNy4uNDdkZDJi MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5jCkBAIC0yMzksMTMg KzIzOSwxMyBAQCBzdGF0aWMgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGV4eW5vc19jcnRjX2Z1bmNz ID0gewogfTsKIAogc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqZXh5bm9zX2RybV9jcnRjX2NyZWF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKKwkJCQkJICAgICAgIHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCQkJCQkgICAgICAgaW50IHBpcGUsCiAJCQkJCSAgICAgICBlbnVtIGV4eW5v c19kcm1fb3V0cHV0X3R5cGUgdHlwZSwKIAkJCQkJICAgICAgIHN0cnVjdCBleHlub3NfZHJtX2Ny dGNfb3BzICpvcHMsCiAJCQkJCSAgICAgICB2b2lkICpjdHgpCiB7CiAJc3RydWN0IGV4eW5vc19k cm1fY3J0YyAqZXh5bm9zX2NydGM7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CiAJc3RydWN0 IGV4eW5vc19kcm1fcHJpdmF0ZSAqcHJpdmF0ZSA9IGRybV9kZXYtPmRldl9wcml2YXRlOwogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlpbnQgcmV0OwpAQCAtMjYyLDEyICsyNjIsNiBAQCBzdHJ1 Y3QgZXh5bm9zX2RybV9jcnRjICpleHlub3NfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2LAogCWV4eW5vc19jcnRjLT50eXBlID0gdHlwZTsKIAlleHlub3NfY3J0Yy0+ b3BzID0gb3BzOwogCWV4eW5vc19jcnRjLT5jdHggPSBjdHg7Ci0JcGxhbmUgPSBleHlub3NfcGxh bmVfaW5pdChkcm1fZGV2LCAxIDw8IHBpcGUsCi0JCQkJICBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KTsKLQlpZiAoSVNfRVJSKHBsYW5lKSkgewotCQlyZXQgPSBQVFJfRVJSKHBsYW5lKTsKLQkJZ290 byBlcnJfcGxhbmU7Ci0JfQogCiAJY3J0YyA9ICZleHlub3NfY3J0Yy0+YmFzZTsKIApAQCAtMjg0 LDcgKzI3OCw2IEBAIHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmV4eW5vc19kcm1fY3J0Y19jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCiAKIGVycl9jcnRjOgogCXBsYW5lLT5mdW5j cy0+ZGVzdHJveShwbGFuZSk7Ci1lcnJfcGxhbmU6CiAJa2ZyZWUoZXh5bm9zX2NydGMpOwogCXJl dHVybiBFUlJfUFRSKHJldCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Ny dGMuaAppbmRleCA2MjU4YjgwLi5lMWZkMmVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2RybV9jcnRjLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJleHlub3NfZHJtX2Ry di5oIgogCiBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpleHlub3NfZHJtX2NydGNfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAorCQkJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiAJCQkJCSAgICAgICBpbnQgcGlwZSwKIAkJCQkJICAgICAgIGVudW0gZXh5bm9zX2Ry bV9vdXRwdXRfdHlwZSB0eXBlLAogCQkJCQkgICAgICAgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19v cHMgKm9wcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9k cnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwppbmRleCA5MDE2 OGQ3Li5iYjZlN2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCkBA IC01NSw3ICs1NSw2IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RybV9sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CiAJc3RydWN0IGV4eW5vc19kcm1fcHJp dmF0ZSAqcHJpdmF0ZTsKIAlpbnQgcmV0OwotCWludCBucjsKIAogCXByaXZhdGUgPSBremFsbG9j KHNpemVvZihzdHJ1Y3QgZXh5bm9zX2RybV9wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFw cml2YXRlKQpAQCAtODEsMTkgKzgwLDYgQEAgc3RhdGljIGludCBleHlub3NfZHJtX2xvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAogCWV4eW5vc19kcm1f bW9kZV9jb25maWdfaW5pdChkZXYpOwogCi0JZm9yIChuciA9IDA7IG5yIDwgTUFYX1BMQU5FOyBu cisrKSB7Ci0JCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCQl1bnNpZ25lZCBsb25nIHBvc3Np YmxlX2NydGNzID0gKDEgPDwgTUFYX0NSVEMpIC0gMTsKLQotCQlwbGFuZSA9IGV4eW5vc19wbGFu ZV9pbml0KGRldiwgcG9zc2libGVfY3J0Y3MsCi0JCQkJCSAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxB WSk7Ci0JCWlmICghSVNfRVJSKHBsYW5lKSkKLQkJCWNvbnRpbnVlOwotCi0JCXJldCA9IFBUUl9F UlIocGxhbmUpOwotCQlnb3RvIGVycl9tb2RlX2NvbmZpZ19jbGVhbnVwOwotCX0KLQogCS8qIHNl dHVwIHBvc3NpYmxlX2Nsb25lcy4gKi8KIAlleHlub3NfZHJtX2VuY29kZXJfc2V0dXAoZGV2KTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCmluZGV4IDRlOGYwYjAuLjhh MmY5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKQEAgLTc4LDYg Kzc4LDcgQEAgZW51bSBleHlub3NfZHJtX291dHB1dF90eXBlIHsKICAqIEB0cmFuc3BhcmVuY3k6 IHRyYW5zcGFyZW5jeSBvbiBvciBvZmYuCiAgKiBAYWN0aXZhdGVkOiBhY3RpdmF0ZWQgb3Igbm90 LgogICogQGVuYWJsZWQ6IGVuYWJsZWQgb3Igbm90LgorICogQHJlc3VtZTogdG8gcmVzdW1lIG9y IG5vdC4KICAqCiAgKiB0aGlzIHN0cnVjdHVyZSBpcyBjb21tb24gdG8gZXh5bm9zIFNvQyBhbmQg aXRzIGNvbnRlbnRzIHdvdWxkIGJlIGNvcGllZAogICogdG8gaGFyZHdhcmUgc3BlY2lmaWMgb3Zl cmxheSBpbmZvLgpAQCAtMTEyLDYgKzExMyw3IEBAIHN0cnVjdCBleHlub3NfZHJtX3BsYW5lIHsK IAlib29sIHRyYW5zcGFyZW5jeToxOwogCWJvb2wgYWN0aXZhdGVkOjE7CiAJYm9vbCBlbmFibGVk OjE7CisJYm9vbCByZXN1bWU6MTsKIH07CiAKIC8qCkBAIC0xNzIsNyArMTc0LDYgQEAgc3RydWN0 IGV4eW5vc19kcm1fZGlzcGxheSB7CiAgKiBAZGlzYWJsZV92Ymxhbms6IHNwZWNpZmljIGRyaXZl ciBjYWxsYmFjayBmb3IgZGlzYWJsaW5nIHZibGFuayBpbnRlcnJ1cHQuCiAgKiBAd2FpdF9mb3Jf dmJsYW5rOiB3YWl0IGZvciB2YmxhbmsgaW50ZXJydXB0IHRvIG1ha2Ugc3VyZSB0aGF0CiAgKglo YXJkd2FyZSBvdmVybGF5IGlzIHVwZGF0ZWQuCi0gKiBAd2luX21vZGVfc2V0OiBjb3B5IGRybSBv dmVybGF5IGluZm8gdG8gaHcgc3BlY2lmaWMgb3ZlcmxheSBpbmZvLgogICogQHdpbl9jb21taXQ6 IGFwcGx5IGhhcmR3YXJlIHNwZWNpZmljIG92ZXJsYXkgZGF0YSB0byByZWdpc3RlcnMuCiAgKiBA d2luX2Rpc2FibGU6IGRpc2FibGUgaGFyZHdhcmUgc3BlY2lmaWMgb3ZlcmxheS4KICAqIEB0ZV9o YW5kbGVyOiB0cmlnZ2VyIHRvIHRyYW5zZmVyIHZpZGVvIGltYWdlIGF0IHRoZSB0ZWFyaW5nIGVm ZmVjdApAQCAtMTg4LDggKzE4OSw2IEBAIHN0cnVjdCBleHlub3NfZHJtX2NydGNfb3BzIHsKIAlp bnQgKCplbmFibGVfdmJsYW5rKShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKTsKIAl2b2lk ICgqZGlzYWJsZV92YmxhbmspKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpOwogCXZvaWQg KCp3YWl0X2Zvcl92YmxhbmspKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpOwotCXZvaWQg KCp3aW5fbW9kZV9zZXQpKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsCi0JCQkJc3RydWN0 IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lKTsKIAl2b2lkICgqd2luX2NvbW1pdCkoc3RydWN0IGV4 eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpOwogCXZvaWQgKCp3aW5fZGlzYWJsZSkoc3Ry dWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpOwogCXZvaWQgKCp0ZV9oYW5kbGVy KShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZmltZC5jCmluZGV4IGM3YWE0YzcuLjdkNDZkMjggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImV4 eW5vc19kcm1fZHJ2LmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9mYmRldi5oIgogI2luY2x1ZGUg ImV4eW5vc19kcm1fY3J0Yy5oIgorI2luY2x1ZGUgImV4eW5vc19kcm1fcGxhbmUuaCIKICNpbmNs dWRlICJleHlub3NfZHJtX2lvbW11LmgiCiAKIC8qCkBAIC0xNDMsMzEgKzE0NCwxNSBAQCBzdGF0 aWMgc3RydWN0IGZpbWRfZHJpdmVyX2RhdGEgZXh5bm9zNV9maW1kX2RyaXZlcl9kYXRhID0gewog CS5oYXNfdnRzZWwgPSAxLAogfTsKIAotc3RydWN0IGZpbWRfd2luX2RhdGEgewotCXVuc2lnbmVk IGludAkJb2Zmc2V0X3g7Ci0JdW5zaWduZWQgaW50CQlvZmZzZXRfeTsKLQl1bnNpZ25lZCBpbnQJ CW92bF93aWR0aDsKLQl1bnNpZ25lZCBpbnQJCW92bF9oZWlnaHQ7Ci0JdW5zaWduZWQgaW50CQlm Yl93aWR0aDsKLQl1bnNpZ25lZCBpbnQJCWZiX2hlaWdodDsKLQl1bnNpZ25lZCBpbnQJCWJwcDsK LQl1bnNpZ25lZCBpbnQJCXBpeGVsX2Zvcm1hdDsKLQlkbWFfYWRkcl90CQlkbWFfYWRkcjsKLQl1 bnNpZ25lZCBpbnQJCWJ1Zl9vZmZzaXplOwotCXVuc2lnbmVkIGludAkJbGluZV9zaXplOwkvKiBi eXRlcyAqLwotCWJvb2wJCQllbmFibGVkOwotCWJvb2wJCQlyZXN1bWU7Ci19OwotCiBzdHJ1Y3Qg ZmltZF9jb250ZXh0IHsKIAlzdHJ1Y3QgZGV2aWNlCQkJKmRldjsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZQkJKmRybV9kZXY7CiAJc3RydWN0IGV4eW5vc19kcm1fY3J0YwkJKmNydGM7CisJc3RydWN0IGV4 eW5vc19kcm1fcGxhbmUJCXBsYW5lc1tXSU5ET1dTX05SXTsKIAlzdHJ1Y3QgY2xrCQkJKmJ1c19j bGs7CiAJc3RydWN0IGNsawkJCSpsY2RfY2xrOwogCXZvaWQgX19pb21lbQkJCSpyZWdzOwogCXN0 cnVjdCByZWdtYXAJCQkqc3lzcmVnOwotCXN0cnVjdCBmaW1kX3dpbl9kYXRhCQl3aW5fZGF0YVtX SU5ET1dTX05SXTsKIAl1bnNpZ25lZCBpbnQJCQlkZWZhdWx0X3dpbjsKIAl1bnNpZ25lZCBsb25n CQkJaXJxX2ZsYWdzOwogCXUzMgkJCQl2aWRjb24wOwpAQCAtNTA5LDU4ICs0OTQsOSBAQCBzdGF0 aWMgdm9pZCBmaW1kX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMp CiAJfQogfQogCi1zdGF0aWMgdm9pZCBmaW1kX3dpbl9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2Ry bV9jcnRjICpjcnRjLAotCQkJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lKQotewotCXN0 cnVjdCBmaW1kX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKLQlzdHJ1Y3QgZmltZF93aW5fZGF0 YSAqd2luX2RhdGE7Ci0JaW50IHdpbjsKLQl1bnNpZ25lZCBsb25nIG9mZnNldDsKLQotCWlmICgh cGxhbmUpIHsKLQkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsKLQkJcmV0dXJuOwotCX0K LQotCXdpbiA9IHBsYW5lLT56cG9zOwotCWlmICh3aW4gPT0gREVGQVVMVF9aUE9TKQotCQl3aW4g PSBjdHgtPmRlZmF1bHRfd2luOwotCi0JaWYgKHdpbiA8IDAgfHwgd2luID49IFdJTkRPV1NfTlIp Ci0JCXJldHVybjsKLQotCW9mZnNldCA9IHBsYW5lLT5mYl94ICogKHBsYW5lLT5icHAgPj4gMyk7 Ci0Jb2Zmc2V0ICs9IHBsYW5lLT5mYl95ICogcGxhbmUtPnBpdGNoOwotCi0JRFJNX0RFQlVHX0tN Uygib2Zmc2V0ID0gMHglbHgsIHBpdGNoID0gJXhcbiIsIG9mZnNldCwgcGxhbmUtPnBpdGNoKTsK LQotCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKLQotCXdpbl9kYXRhLT5vZmZzZXRf eCA9IHBsYW5lLT5jcnRjX3g7Ci0Jd2luX2RhdGEtPm9mZnNldF95ID0gcGxhbmUtPmNydGNfeTsK LQl3aW5fZGF0YS0+b3ZsX3dpZHRoID0gcGxhbmUtPmNydGNfd2lkdGg7Ci0Jd2luX2RhdGEtPm92 bF9oZWlnaHQgPSBwbGFuZS0+Y3J0Y19oZWlnaHQ7Ci0Jd2luX2RhdGEtPmZiX3dpZHRoID0gcGxh bmUtPmZiX3dpZHRoOwotCXdpbl9kYXRhLT5mYl9oZWlnaHQgPSBwbGFuZS0+ZmJfaGVpZ2h0Owot CXdpbl9kYXRhLT5kbWFfYWRkciA9IHBsYW5lLT5kbWFfYWRkclswXSArIG9mZnNldDsKLQl3aW5f ZGF0YS0+YnBwID0gcGxhbmUtPmJwcDsKLQl3aW5fZGF0YS0+cGl4ZWxfZm9ybWF0ID0gcGxhbmUt PnBpeGVsX2Zvcm1hdDsKLQl3aW5fZGF0YS0+YnVmX29mZnNpemUgPSAocGxhbmUtPmZiX3dpZHRo IC0gcGxhbmUtPmNydGNfd2lkdGgpICoKLQkJCQkocGxhbmUtPmJwcCA+PiAzKTsKLQl3aW5fZGF0 YS0+bGluZV9zaXplID0gcGxhbmUtPmNydGNfd2lkdGggKiAocGxhbmUtPmJwcCA+PiAzKTsKLQot CURSTV9ERUJVR19LTVMoIm9mZnNldF94ID0gJWQsIG9mZnNldF95ID0gJWRcbiIsCi0JCQl3aW5f ZGF0YS0+b2Zmc2V0X3gsIHdpbl9kYXRhLT5vZmZzZXRfeSk7Ci0JRFJNX0RFQlVHX0tNUygib3Zs X3dpZHRoID0gJWQsIG92bF9oZWlnaHQgPSAlZFxuIiwKLQkJCXdpbl9kYXRhLT5vdmxfd2lkdGgs IHdpbl9kYXRhLT5vdmxfaGVpZ2h0KTsKLQlEUk1fREVCVUdfS01TKCJwYWRkciA9IDB4JWx4XG4i LCAodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHIpOwotCURSTV9ERUJVR19LTVMoImZi X3dpZHRoID0gJWQsIGNydGNfd2lkdGggPSAlZFxuIiwKLQkJCXBsYW5lLT5mYl93aWR0aCwgcGxh bmUtPmNydGNfd2lkdGgpOwotfQotCiBzdGF0aWMgdm9pZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0 cnVjdCBmaW1kX2NvbnRleHQgKmN0eCwgdW5zaWduZWQgaW50IHdpbikKIHsKLQlzdHJ1Y3QgZmlt ZF93aW5fZGF0YSAqd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOworCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwogCXVuc2lnbmVkIGxvbmcg dmFsOwogCiAJdmFsID0gV0lOQ09OeF9FTldJTjsKQEAgLTU3MCwxMSArNTA2LDExIEBAIHN0YXRp YyB2b2lkIGZpbWRfd2luX3NldF9waXhmbXQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4LCB1bnNp Z25lZCBpbnQgd2luKQogCSAqIFNvIHRoZSByZXF1ZXN0IGZvcm1hdCBpcyBBUkdCODg4OCB0aGVu IGNoYW5nZSBpdCB0byBYUkdCODg4OC4KIAkgKi8KIAlpZiAoY3R4LT5kcml2ZXJfZGF0YS0+aGFz X2xpbWl0ZWRfZm10ICYmICF3aW4pIHsKLQkJaWYgKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQgPT0g RFJNX0ZPUk1BVF9BUkdCODg4OCkKLQkJCXdpbl9kYXRhLT5waXhlbF9mb3JtYXQgPSBEUk1fRk9S TUFUX1hSR0I4ODg4OworCQlpZiAocGxhbmUtPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX0FS R0I4ODg4KQorCQkJcGxhbmUtPnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7CiAJ fQogCi0Jc3dpdGNoICh3aW5fZGF0YS0+cGl4ZWxfZm9ybWF0KSB7CisJc3dpdGNoIChwbGFuZS0+ cGl4ZWxfZm9ybWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX0M4OgogCQl2YWwgfD0gV0lOQ09OMF9C UFBNT0RFXzhCUFBfUEFMRVRURTsKIAkJdmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fOFdPUkQ7CkBA IC02MTAsNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fc2V0X3BpeGZtdChzdHJ1Y3Qg ZmltZF9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCB3aW4pCiAJCWJyZWFrOwogCX0KIAotCURS TV9ERUJVR19LTVMoImJwcCA9ICVkXG4iLCB3aW5fZGF0YS0+YnBwKTsKKwlEUk1fREVCVUdfS01T KCJicHAgPSAlZFxuIiwgcGxhbmUtPmJwcCk7CiAKIAkvKgogCSAqIEluIGNhc2Ugb2YgZXh5bm9z LCBzZXR0aW5nIGRtYS1idXJzdCB0byAxNldvcmQgY2F1c2VzIHBlcm1hbmVudApAQCAtNjIwLDcg KzU1Niw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX3NldF9waXhmbXQoc3RydWN0IGZpbWRfY29u dGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgd2luKQogCSAqIG1vdmVtZW50IGNhdXNlcyB1bnN0YWJs ZSBETUEgd2hpY2ggcmVzdWx0cyBpbnRvIGlvbW11IGNyYXNoL3RlYXIuCiAJICovCiAKLQlpZiAo d2luX2RhdGEtPmZiX3dpZHRoIDwgTUlOX0ZCX1dJRFRIX0ZPUl8xNldPUkRfQlVSU1QpIHsKKwlp ZiAocGxhbmUtPmZiX3dpZHRoIDwgTUlOX0ZCX1dJRFRIX0ZPUl8xNldPUkRfQlVSU1QpIHsKIAkJ dmFsICY9IH5XSU5DT054X0JVUlNUTEVOX01BU0s7CiAJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVO XzRXT1JEOwogCX0KQEAgLTY4OSwxMSArNjI1LDExIEBAIHN0YXRpYyB2b2lkIGZpbWRfc2hhZG93 X3Byb3RlY3Rfd2luKHN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCwKIHN0YXRpYyB2b2lkIGZpbWRf d2luX2NvbW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKIHsKIAlz dHJ1Y3QgZmltZF9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Ci0Jc3RydWN0IGZpbWRfd2luX2Rh dGEgKndpbl9kYXRhOworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKIAlpbnQgd2lu ID0genBvczsKLQl1bnNpZ25lZCBsb25nIHZhbCwgYWxwaGEsIHNpemU7Ci0JdW5zaWduZWQgaW50 IGxhc3RfeDsKLQl1bnNpZ25lZCBpbnQgbGFzdF95OworCWRtYV9hZGRyX3QgZG1hX2FkZHI7CisJ dW5zaWduZWQgbG9uZyB2YWwsIGFscGhhLCBzaXplLCBvZmZzZXQ7CisJdW5zaWduZWQgaW50IGxh c3RfeCwgbGFzdF95LCBidWZfb2Zmc2l6ZSwgbGluZV9zaXplOwogCiAJaWYgKGN0eC0+c3VzcGVu ZGVkKQogCQlyZXR1cm47CkBAIC03MDQsMTEgKzY0MCwxMSBAQCBzdGF0aWMgdm9pZCBmaW1kX3dp bl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJaWYgKHdp biA8IDAgfHwgd2luID49IFdJTkRPV1NfTlIpCiAJCXJldHVybjsKIAotCXdpbl9kYXRhID0gJmN0 eC0+d2luX2RhdGFbd2luXTsKKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwogCiAJLyogSWYg c3VzcGVuZGVkLCBlbmFibGUgdGhpcyBvbiByZXN1bWUgKi8KIAlpZiAoY3R4LT5zdXNwZW5kZWQp IHsKLQkJd2luX2RhdGEtPnJlc3VtZSA9IHRydWU7CisJCXBsYW5lLT5yZXN1bWUgPSB0cnVlOwog CQlyZXR1cm47CiAJfQogCkBAIC03MjUsMzggKzY2MSw0NSBAQCBzdGF0aWMgdm9pZCBmaW1kX3dp bl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJLyogcHJv dGVjdCB3aW5kb3dzICovCiAJZmltZF9zaGFkb3dfcHJvdGVjdF93aW4oY3R4LCB3aW4sIHRydWUp OwogCisKKwlvZmZzZXQgPSBwbGFuZS0+ZmJfeCAqIChwbGFuZS0+YnBwID4+IDMpOworCW9mZnNl dCArPSBwbGFuZS0+ZmJfeSAqIHBsYW5lLT5waXRjaDsKKwogCS8qIGJ1ZmZlciBzdGFydCBhZGRy ZXNzICovCi0JdmFsID0gKHVuc2lnbmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRyOworCWRtYV9h ZGRyID0gcGxhbmUtPmRtYV9hZGRyWzBdICsgb2Zmc2V0OworCXZhbCA9ICh1bnNpZ25lZCBsb25n KWRtYV9hZGRyOwogCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRFd4X0JVRl9TVEFSVCh3aW4s IDApKTsKIAogCS8qIGJ1ZmZlciBlbmQgYWRkcmVzcyAqLwotCXNpemUgPSB3aW5fZGF0YS0+ZmJf d2lkdGggKiB3aW5fZGF0YS0+b3ZsX2hlaWdodCAqICh3aW5fZGF0YS0+YnBwID4+IDMpOwotCXZh bCA9ICh1bnNpZ25lZCBsb25nKSh3aW5fZGF0YS0+ZG1hX2FkZHIgKyBzaXplKTsKKwlzaXplID0g cGxhbmUtPmZiX3dpZHRoICogcGxhbmUtPmNydGNfaGVpZ2h0ICogKHBsYW5lLT5icHAgPj4gMyk7 CisJdmFsID0gKHVuc2lnbmVkIGxvbmcpKGRtYV9hZGRyICsgc2l6ZSk7CiAJd3JpdGVsKHZhbCwg Y3R4LT5yZWdzICsgVklEV3hfQlVGX0VORCh3aW4sIDApKTsKIAogCURSTV9ERUJVR19LTVMoInN0 YXJ0IGFkZHIgPSAweCVseCwgZW5kIGFkZHIgPSAweCVseCwgc2l6ZSA9IDB4JWx4XG4iLAotCQkJ KHVuc2lnbmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRyLCB2YWwsIHNpemUpOworCQkJKHVuc2ln bmVkIGxvbmcpZG1hX2FkZHIsIHZhbCwgc2l6ZSk7CiAJRFJNX0RFQlVHX0tNUygib3ZsX3dpZHRo ID0gJWQsIG92bF9oZWlnaHQgPSAlZFxuIiwKLQkJCXdpbl9kYXRhLT5vdmxfd2lkdGgsIHdpbl9k YXRhLT5vdmxfaGVpZ2h0KTsKKwkJCXBsYW5lLT5jcnRjX3dpZHRoLCBwbGFuZS0+Y3J0Y19oZWln aHQpOwogCiAJLyogYnVmZmVyIHNpemUgKi8KLQl2YWwgPSBWSURXX0JVRl9TSVpFX09GRlNFVCh3 aW5fZGF0YS0+YnVmX29mZnNpemUpIHwKLQkJVklEV19CVUZfU0laRV9QQUdFV0lEVEgod2luX2Rh dGEtPmxpbmVfc2l6ZSkgfAotCQlWSURXX0JVRl9TSVpFX09GRlNFVF9FKHdpbl9kYXRhLT5idWZf b2Zmc2l6ZSkgfAotCQlWSURXX0JVRl9TSVpFX1BBR0VXSURUSF9FKHdpbl9kYXRhLT5saW5lX3Np emUpOworCWJ1Zl9vZmZzaXplID0gKHBsYW5lLT5mYl93aWR0aCAtIHBsYW5lLT5jcnRjX3dpZHRo KSAqIChwbGFuZS0+YnBwID4+IDMpOworCWxpbmVfc2l6ZSA9IHBsYW5lLT5jcnRjX3dpZHRoICog KHBsYW5lLT5icHAgPj4gMyk7CisJdmFsID0gVklEV19CVUZfU0laRV9PRkZTRVQoYnVmX29mZnNp emUpIHwKKwkJVklEV19CVUZfU0laRV9QQUdFV0lEVEgobGluZV9zaXplKSB8CisJCVZJRFdfQlVG X1NJWkVfT0ZGU0VUX0UoYnVmX29mZnNpemUpIHwKKwkJVklEV19CVUZfU0laRV9QQUdFV0lEVEhf RShsaW5lX3NpemUpOwogCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRFd4X0JVRl9TSVpFKHdp biwgMCkpOwogCiAJLyogT1NEIHBvc2l0aW9uICovCi0JdmFsID0gVklET1NEeEFfVE9QTEVGVF9Y KHdpbl9kYXRhLT5vZmZzZXRfeCkgfAotCQlWSURPU0R4QV9UT1BMRUZUX1kod2luX2RhdGEtPm9m ZnNldF95KSB8Ci0JCVZJRE9TRHhBX1RPUExFRlRfWF9FKHdpbl9kYXRhLT5vZmZzZXRfeCkgfAot CQlWSURPU0R4QV9UT1BMRUZUX1lfRSh3aW5fZGF0YS0+b2Zmc2V0X3kpOworCXZhbCA9IFZJRE9T RHhBX1RPUExFRlRfWChwbGFuZS0+Y3J0Y194KSB8CisJCVZJRE9TRHhBX1RPUExFRlRfWShwbGFu ZS0+Y3J0Y195KSB8CisJCVZJRE9TRHhBX1RPUExFRlRfWF9FKHBsYW5lLT5jcnRjX3gpIHwKKwkJ VklET1NEeEFfVE9QTEVGVF9ZX0UocGxhbmUtPmNydGNfeSk7CiAJd3JpdGVsKHZhbCwgY3R4LT5y ZWdzICsgVklET1NEX0Eod2luKSk7CiAKLQlsYXN0X3ggPSB3aW5fZGF0YS0+b2Zmc2V0X3ggKyB3 aW5fZGF0YS0+b3ZsX3dpZHRoOworCWxhc3RfeCA9IHBsYW5lLT5jcnRjX3ggKyBwbGFuZS0+Y3J0 Y193aWR0aDsKIAlpZiAobGFzdF94KQogCQlsYXN0X3gtLTsKLQlsYXN0X3kgPSB3aW5fZGF0YS0+ b2Zmc2V0X3kgKyB3aW5fZGF0YS0+b3ZsX2hlaWdodDsKKwlsYXN0X3kgPSBwbGFuZS0+Y3J0Y195 ICsgcGxhbmUtPmNydGNfaGVpZ2h0OwogCWlmIChsYXN0X3kpCiAJCWxhc3RfeS0tOwogCkBAIC03 NjYsMTQgKzcwOSwxNCBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9jb21taXQoc3RydWN0IGV4eW5v c19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiAJd3JpdGVsKHZhbCwgY3R4LT5yZWdzICsgVklE T1NEX0Iod2luKSk7CiAKIAlEUk1fREVCVUdfS01TKCJvc2QgcG9zOiB0eCA9ICVkLCB0eSA9ICVk LCBieCA9ICVkLCBieSA9ICVkXG4iLAotCQkJd2luX2RhdGEtPm9mZnNldF94LCB3aW5fZGF0YS0+ b2Zmc2V0X3ksIGxhc3RfeCwgbGFzdF95KTsKKwkJCXBsYW5lLT5jcnRjX3gsIHBsYW5lLT5jcnRj X3ksIGxhc3RfeCwgbGFzdF95KTsKIAogCS8qIE9TRCBzaXplICovCiAJaWYgKHdpbiAhPSAzICYm IHdpbiAhPSA0KSB7CiAJCXUzMiBvZmZzZXQgPSBWSURPU0RfRCh3aW4pOwogCQlpZiAod2luID09 IDApCiAJCQlvZmZzZXQgPSBWSURPU0RfQyh3aW4pOwotCQl2YWwgPSB3aW5fZGF0YS0+b3ZsX3dp ZHRoICogd2luX2RhdGEtPm92bF9oZWlnaHQ7CisJCXZhbCA9IHBsYW5lLT5jcnRjX3dpZHRoICog cGxhbmUtPmNydGNfaGVpZ2h0OwogCQl3cml0ZWwodmFsLCBjdHgtPnJlZ3MgKyBvZmZzZXQpOwog CiAJCURSTV9ERUJVR19LTVMoIm9zZCBzaXplID0gMHgleFxuIiwgKHVuc2lnbmVkIGludCl2YWwp OwpAQCAtNzkzLDcgKzczNiw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2NvbW1pdChzdHJ1Y3Qg ZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKIAkvKiBFbmFibGUgRE1BIGNoYW5uZWwg YW5kIHVucHJvdGVjdCB3aW5kb3dzICovCiAJZmltZF9zaGFkb3dfcHJvdGVjdF93aW4oY3R4LCB3 aW4sIGZhbHNlKTsKIAotCXdpbl9kYXRhLT5lbmFibGVkID0gdHJ1ZTsKKwlwbGFuZS0+ZW5hYmxl ZCA9IHRydWU7CiAKIAlpZiAoY3R4LT5pODBfaWYpCiAJCWF0b21pY19zZXQoJmN0eC0+d2luX3Vw ZGF0ZWQsIDEpOwpAQCAtODAyLDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2NvbW1p dChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKIHN0YXRpYyB2b2lkIGZp bWRfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCiB7 CiAJc3RydWN0IGZpbWRfY29udGV4dCAqY3R4ID0gY3J0Yy0+Y3R4OwotCXN0cnVjdCBmaW1kX3dp bl9kYXRhICp3aW5fZGF0YTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJaW50 IHdpbiA9IHpwb3M7CiAKIAlpZiAod2luID09IERFRkFVTFRfWlBPUykKQEAgLTgxMSwxMSArNzU0 LDExIEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0 YyAqY3J0YywgaW50IHpwb3MpCiAJaWYgKHdpbiA8IDAgfHwgd2luID49IFdJTkRPV1NfTlIpCiAJ CXJldHVybjsKIAotCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKKwlwbGFuZSA9ICZj dHgtPnBsYW5lc1t3aW5dOwogCiAJaWYgKGN0eC0+c3VzcGVuZGVkKSB7CiAJCS8qIGRvIG5vdCBy ZXN1bWUgdGhpcyB3aW5kb3cqLwotCQl3aW5fZGF0YS0+cmVzdW1lID0gZmFsc2U7CisJCXBsYW5l LT5yZXN1bWUgPSBmYWxzZTsKIAkJcmV0dXJuOwogCX0KIApAQCAtODMwLDQyICs3NzMsNDIgQEAg c3RhdGljIHZvaWQgZmltZF93aW5fZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRj LCBpbnQgenBvcykKIAkvKiB1bnByb3RlY3Qgd2luZG93cyAqLwogCWZpbWRfc2hhZG93X3Byb3Rl Y3Rfd2luKGN0eCwgd2luLCBmYWxzZSk7CiAKLQl3aW5fZGF0YS0+ZW5hYmxlZCA9IGZhbHNlOwor CXBsYW5lLT5lbmFibGVkID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGZpbWRfd2luZG93X3N1 c3BlbmQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4KQogewotCXN0cnVjdCBmaW1kX3dpbl9kYXRh ICp3aW5fZGF0YTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJaW50IGk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Ci0JCXdpbl9kYXRhID0gJmN0eC0+ d2luX2RhdGFbaV07Ci0JCXdpbl9kYXRhLT5yZXN1bWUgPSB3aW5fZGF0YS0+ZW5hYmxlZDsKLQkJ aWYgKHdpbl9kYXRhLT5lbmFibGVkKQorCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsKKwkJcGxh bmUtPnJlc3VtZSA9IHBsYW5lLT5lbmFibGVkOworCQlpZiAocGxhbmUtPmVuYWJsZWQpCiAJCQlm aW1kX3dpbl9kaXNhYmxlKGN0eC0+Y3J0YywgaSk7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBmaW1k X3dpbmRvd19yZXN1bWUoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4KQogewotCXN0cnVjdCBmaW1k X3dpbl9kYXRhICp3aW5fZGF0YTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJ aW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsrKSB7Ci0JCXdpbl9kYXRh ID0gJmN0eC0+d2luX2RhdGFbaV07Ci0JCXdpbl9kYXRhLT5lbmFibGVkID0gd2luX2RhdGEtPnJl c3VtZTsKLQkJd2luX2RhdGEtPnJlc3VtZSA9IGZhbHNlOworCQlwbGFuZSA9ICZjdHgtPnBsYW5l c1tpXTsKKwkJcGxhbmUtPmVuYWJsZWQgPSBwbGFuZS0+cmVzdW1lOworCQlwbGFuZS0+cmVzdW1l ID0gZmFsc2U7CiAJfQogfQogCiBzdGF0aWMgdm9pZCBmaW1kX2FwcGx5KHN0cnVjdCBmaW1kX2Nv bnRleHQgKmN0eCkKIHsKLQlzdHJ1Y3QgZmltZF93aW5fZGF0YSAqd2luX2RhdGE7CisJc3RydWN0 IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IFdJ TkRPV1NfTlI7IGkrKykgewotCQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwotCQlpZiAo d2luX2RhdGEtPmVuYWJsZWQpCisJCXBsYW5lID0gJmN0eC0+cGxhbmVzW2ldOworCQlpZiAocGxh bmUtPmVuYWJsZWQpCiAJCQlmaW1kX3dpbl9jb21taXQoY3R4LT5jcnRjLCBpKTsKIAkJZWxzZQog CQkJZmltZF93aW5fZGlzYWJsZShjdHgtPmNydGMsIGkpOwpAQCAtMTAyMiw3ICs5NjUsNiBAQCBz dGF0aWMgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMgZmltZF9jcnRjX29wcyA9IHsKIAkuZW5h YmxlX3ZibGFuayA9IGZpbWRfZW5hYmxlX3ZibGFuaywKIAkuZGlzYWJsZV92YmxhbmsgPSBmaW1k X2Rpc2FibGVfdmJsYW5rLAogCS53YWl0X2Zvcl92YmxhbmsgPSBmaW1kX3dhaXRfZm9yX3ZibGFu aywKLQkud2luX21vZGVfc2V0ID0gZmltZF93aW5fbW9kZV9zZXQsCiAJLndpbl9jb21taXQgPSBm aW1kX3dpbl9jb21taXQsCiAJLndpbl9kaXNhYmxlID0gZmltZF93aW5fZGlzYWJsZSwKIAkudGVf aGFuZGxlciA9IGZpbWRfdGVfaGFuZGxlciwKQEAgLTEwNjcsNyArMTAwOSw5IEBAIHN0YXRpYyBp bnQgZmltZF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2 b2lkICpkYXRhKQogewogCXN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKLQlpbnQgcmV0Owor CXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7CisJZW51bSBkcm1fcGxhbmVf dHlwZSB0eXBlOworCWludCB6cG9zLCByZXQ7CiAKIAlyZXQgPSBmaW1kX2N0eF9pbml0aWFsaXpl KGN0eCwgZHJtX2Rldik7CiAJaWYgKHJldCkgewpAQCAtMTA3NSw4ICsxMDE5LDE2IEBAIHN0YXRp YyBpbnQgZmltZF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVy LCB2b2lkICpkYXRhKQogCQlyZXR1cm4gcmV0OwogCX0KIAotCWN0eC0+Y3J0YyA9IGV4eW5vc19k cm1fY3J0Y19jcmVhdGUoZHJtX2RldiwgY3R4LT5waXBlLAotCQkJCQkgICBFWFlOT1NfRElTUExB WV9UWVBFX0xDRCwKKwlmb3IgKHpwb3MgPSAwOyB6cG9zIDwgV0lORE9XU19OUjsgenBvcysrKSB7 CisJCXR5cGUgPSAoenBvcyA9PSBjdHgtPmRlZmF1bHRfd2luKSA/IERSTV9QTEFORV9UWVBFX1BS SU1BUlkgOgorCQkJCQkJRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKKwkJZXh5bm9zX3BsYW5lX2lu aXQoZHJtX2RldiwgJmN0eC0+cGxhbmVzW3pwb3NdLCAxIDw8IGN0eC0+cGlwZSwKKwkJCQkgIHR5 cGUpOworCX0KKworCWV4eW5vc19wbGFuZSA9ICZjdHgtPnBsYW5lc1tjdHgtPmRlZmF1bHRfd2lu XTsKKwljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsICZleHlub3Nf cGxhbmUtPmJhc2UsCisJCQkJCSAgIGN0eC0+cGlwZSwgRVhZTk9TX0RJU1BMQVlfVFlQRV9MQ0Qs CiAJCQkJCSAgICZmaW1kX2NydGNfb3BzLCBjdHgpOwogCWlmIChJU19FUlIoY3R4LT5jcnRjKSkg ewogCQlmaW1kX2N0eF9yZW1vdmUoY3R4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX3BsYW5lLmMKaW5kZXggYTU2MTY4Ny4uNGE3Y2ZiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKQEAgLTkyLDcgKzkyLDYgQEAgdm9pZCBleHlub3NfcGxh bmVfbW9kZV9zZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAkJCSAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQogewogCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmUgPSB0b19leHlub3NfcGxhbmUocGxhbmUpOwotCXN0 cnVjdCBleHlub3NfZHJtX2NydGMgKmV4eW5vc19jcnRjID0gdG9fZXh5bm9zX2NydGMoY3J0Yyk7 CiAJdW5zaWduZWQgaW50IGFjdHVhbF93OwogCXVuc2lnbmVkIGludCBhY3R1YWxfaDsKIApAQCAt MTM5LDkgKzEzOCw2IEBAIHZvaWQgZXh5bm9zX3BsYW5lX21vZGVfc2V0KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQlleHlub3NfcGxhbmUtPmNydGNf d2lkdGgsIGV4eW5vc19wbGFuZS0+Y3J0Y19oZWlnaHQpOwogCiAJcGxhbmUtPmNydGMgPSBjcnRj OwotCi0JaWYgKGV4eW5vc19jcnRjLT5vcHMtPndpbl9tb2RlX3NldCkKLQkJZXh5bm9zX2NydGMt Pm9wcy0+d2luX21vZGVfc2V0KGV4eW5vc19jcnRjLCBleHlub3NfcGxhbmUpOwogfQogCiBpbnQK QEAgLTE4NCwxMSArMTgwLDggQEAgc3RhdGljIGludCBleHlub3NfZGlzYWJsZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAogc3RhdGljIHZvaWQgZXh5bm9zX3BsYW5lX2Rlc3Ryb3ko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7Ci0Jc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4 eW5vc19wbGFuZSA9IHRvX2V4eW5vc19wbGFuZShwbGFuZSk7Ci0KIAlleHlub3NfZGlzYWJsZV9w bGFuZShwbGFuZSk7CiAJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOwotCWtmcmVlKGV4eW5vc19w bGFuZSk7CiB9CiAKIHN0YXRpYyBpbnQgZXh5bm9zX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKQEAgLTIzMywyNCArMjI2LDE4IEBAIHN0YXRpYyB2b2lkIGV4eW5v c19wbGFuZV9hdHRhY2hfenBvc19wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAlk cm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIDApOwogfQogCi1z dHJ1Y3QgZHJtX3BsYW5lICpleHlub3NfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAotCQkJCSAgICB1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzLAotCQkJCSAgICBlbnVtIGRy bV9wbGFuZV90eXBlIHR5cGUpCitpbnQgZXh5bm9zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKKwkJICAgICAgc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFuZSwK KwkJICAgICAgdW5zaWduZWQgbG9uZyBwb3NzaWJsZV9jcnRjcywgZW51bSBkcm1fcGxhbmVfdHlw ZSB0eXBlKQogewotCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7CiAJaW50 IGVycjsKIAotCWV4eW5vc19wbGFuZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHlub3NfZHJt X3BsYW5lKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFleHlub3NfcGxhbmUpCi0JCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwotCiAJZXJyID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgJmV4 eW5vc19wbGFuZS0+YmFzZSwgcG9zc2libGVfY3J0Y3MsCiAJCQkJICAgICAgICZleHlub3NfcGxh bmVfZnVuY3MsIGZvcm1hdHMsCiAJCQkJICAgICAgIEFSUkFZX1NJWkUoZm9ybWF0cyksIHR5cGUp OwogCWlmIChlcnIpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbGFuZVxu Iik7Ci0JCWtmcmVlKGV4eW5vc19wbGFuZSk7Ci0JCXJldHVybiBFUlJfUFRSKGVycik7CisJCXJl dHVybiBlcnI7CiAJfQogCiAJaWYgKHR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKQEAg LTI1OCw1ICsyNDUsNSBAQCBzdHJ1Y3QgZHJtX3BsYW5lICpleHlub3NfcGxhbmVfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWVsc2UKIAkJZXh5bm9zX3BsYW5lX2F0dGFjaF96cG9zX3By b3BlcnR5KCZleHlub3NfcGxhbmUtPmJhc2UpOwogCi0JcmV0dXJuICZleHlub3NfcGxhbmUtPmJh c2U7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fcGxhbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFu ZS5oCmluZGV4IDlkM2MzNzQuLmQ4YTM0OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9wbGFuZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2RybV9wbGFuZS5oCkBAIC0yMCw2ICsyMCw2IEBAIGludCBleHlub3NfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQl1bnNp Z25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAogCQkJdWludDMyX3Qgc3JjX3gs IHVpbnQzMl90IHNyY195LAogCQkJdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKTsKLXN0 cnVjdCBkcm1fcGxhbmUgKmV4eW5vc19wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Ci0JCQkJICAgIHVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3MsCi0JCQkJICAgIGVudW0gZHJt X3BsYW5lX3R5cGUgdHlwZSk7CitpbnQgZXh5bm9zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKKwkJICAgICAgc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFuZSwK KwkJICAgICAgdW5zaWduZWQgbG9uZyBwb3NzaWJsZV9jcnRjcywgZW51bSBkcm1fcGxhbmVfdHlw ZSB0eXBlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV92 aWRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jCmluZGV4IGI4 ODY5NzIuLjAxNzU1N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV92aWRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3ZpZGku YwpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKICNpbmNs dWRlICJleHlub3NfZHJtX2NydGMuaCIKKyNpbmNsdWRlICJleHlub3NfZHJtX3BsYW5lLmgiCiAj aW5jbHVkZSAiZXh5bm9zX2RybV9lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV92aWRp LmgiCiAKQEAgLTMyLDIwICszMyw2IEBACiAjZGVmaW5lIGN0eF9mcm9tX2Nvbm5lY3RvcihjKQlj b250YWluZXJfb2YoYywgc3RydWN0IHZpZGlfY29udGV4dCwgXAogCQkJCQljb25uZWN0b3IpCiAK LXN0cnVjdCB2aWRpX3dpbl9kYXRhIHsKLQl1bnNpZ25lZCBpbnQJCW9mZnNldF94OwotCXVuc2ln bmVkIGludAkJb2Zmc2V0X3k7Ci0JdW5zaWduZWQgaW50CQlvdmxfd2lkdGg7Ci0JdW5zaWduZWQg aW50CQlvdmxfaGVpZ2h0OwotCXVuc2lnbmVkIGludAkJZmJfd2lkdGg7Ci0JdW5zaWduZWQgaW50 CQlmYl9oZWlnaHQ7Ci0JdW5zaWduZWQgaW50CQlicHA7Ci0JZG1hX2FkZHJfdAkJZG1hX2FkZHI7 Ci0JdW5zaWduZWQgaW50CQlidWZfb2Zmc2l6ZTsKLQl1bnNpZ25lZCBpbnQJCWxpbmVfc2l6ZTsJ LyogYnl0ZXMgKi8KLQlib29sCQkJZW5hYmxlZDsKLX07Ci0KIHN0cnVjdCB2aWRpX2NvbnRleHQg ewogCXN0cnVjdCBleHlub3NfZHJtX2Rpc3BsYXkJZGlzcGxheTsKIAlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlCQkqcGRldjsKQEAgLTUzLDcgKzQwLDcgQEAgc3RydWN0IHZpZGlfY29udGV4dCB7CiAJ c3RydWN0IGV4eW5vc19kcm1fY3J0YwkJKmNydGM7CiAJc3RydWN0IGRybV9lbmNvZGVyCQkqZW5j b2RlcjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvcgkJY29ubmVjdG9yOwotCXN0cnVjdCB2aWRpX3dp bl9kYXRhCQl3aW5fZGF0YVtXSU5ET1dTX05SXTsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZQkJ cGxhbmVzW1dJTkRPV1NfTlJdOwogCXN0cnVjdCBlZGlkCQkJKnJhd19lZGlkOwogCXVuc2lnbmVk IGludAkJCWNsa2RpdjsKIAl1bnNpZ25lZCBpbnQJCQlkZWZhdWx0X3dpbjsKQEAgLTk3LDE5ICs4 NCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyIGZha2VfZWRpZF9pbmZvW10gPSB7CiAJMHgwMCwgMHgw MCwgMHgwMCwgMHgwNgogfTsKIAotc3RhdGljIHZvaWQgdmlkaV9hcHBseShzdHJ1Y3QgdmlkaV9j b250ZXh0ICpjdHgpCi17Ci0Jc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMgKmNydGNfb3BzID0g Y3R4LT5jcnRjLT5vcHM7Ci0Jc3RydWN0IHZpZGlfd2luX2RhdGEgKndpbl9kYXRhOwotCWludCBp OwotCi0JZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgewotCQl3aW5fZGF0YSA9ICZj dHgtPndpbl9kYXRhW2ldOwotCQlpZiAod2luX2RhdGEtPmVuYWJsZWQgJiYgKGNydGNfb3BzICYm IGNydGNfb3BzLT53aW5fY29tbWl0KSkKLQkJCWNydGNfb3BzLT53aW5fY29tbWl0KGN0eC0+Y3J0 YywgaSk7Ci0JfQotfQotCiBzdGF0aWMgaW50IHZpZGlfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZXh5 bm9zX2RybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGNydGMt PmN0eDsKQEAgLTE0Myw2MyArMTE3LDEwIEBAIHN0YXRpYyB2b2lkIHZpZGlfZGlzYWJsZV92Ymxh bmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKIAkJY3R4LT52Ymxhbmtfb24gPSBmYWxz ZTsKIH0KIAotc3RhdGljIHZvaWQgdmlkaV93aW5fbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1f Y3J0YyAqY3J0YywKLQkJCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZSkKLXsKLQlzdHJ1 Y3QgdmlkaV9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Ci0Jc3RydWN0IHZpZGlfd2luX2RhdGEg Kndpbl9kYXRhOwotCWludCB3aW47Ci0JdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0KLQlpZiAoIXBs YW5lKSB7Ci0JCURSTV9FUlJPUigicGxhbmUgaXMgTlVMTFxuIik7Ci0JCXJldHVybjsKLQl9Ci0K LQl3aW4gPSBwbGFuZS0+enBvczsKLQlpZiAod2luID09IERFRkFVTFRfWlBPUykKLQkJd2luID0g Y3R4LT5kZWZhdWx0X3dpbjsKLQotCWlmICh3aW4gPCAwIHx8IHdpbiA+PSBXSU5ET1dTX05SKQot CQlyZXR1cm47Ci0KLQlvZmZzZXQgPSBwbGFuZS0+ZmJfeCAqIChwbGFuZS0+YnBwID4+IDMpOwot CW9mZnNldCArPSBwbGFuZS0+ZmJfeSAqIHBsYW5lLT5waXRjaDsKLQotCURSTV9ERUJVR19LTVMo Im9mZnNldCA9IDB4JWx4LCBwaXRjaCA9ICV4XG4iLCBvZmZzZXQsIHBsYW5lLT5waXRjaCk7Ci0K LQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW3dpbl07Ci0KLQl3aW5fZGF0YS0+b2Zmc2V0X3gg PSBwbGFuZS0+Y3J0Y194OwotCXdpbl9kYXRhLT5vZmZzZXRfeSA9IHBsYW5lLT5jcnRjX3k7Ci0J d2luX2RhdGEtPm92bF93aWR0aCA9IHBsYW5lLT5jcnRjX3dpZHRoOwotCXdpbl9kYXRhLT5vdmxf aGVpZ2h0ID0gcGxhbmUtPmNydGNfaGVpZ2h0OwotCXdpbl9kYXRhLT5mYl93aWR0aCA9IHBsYW5l LT5mYl93aWR0aDsKLQl3aW5fZGF0YS0+ZmJfaGVpZ2h0ID0gcGxhbmUtPmZiX2hlaWdodDsKLQl3 aW5fZGF0YS0+ZG1hX2FkZHIgPSBwbGFuZS0+ZG1hX2FkZHJbMF0gKyBvZmZzZXQ7Ci0Jd2luX2Rh dGEtPmJwcCA9IHBsYW5lLT5icHA7Ci0Jd2luX2RhdGEtPmJ1Zl9vZmZzaXplID0gKHBsYW5lLT5m Yl93aWR0aCAtIHBsYW5lLT5jcnRjX3dpZHRoKSAqCi0JCQkJKHBsYW5lLT5icHAgPj4gMyk7Ci0J d2luX2RhdGEtPmxpbmVfc2l6ZSA9IHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5icHAgPj4g Myk7Ci0KLQkvKgotCSAqIHNvbWUgcGFydHMgb2Ygd2luX2RhdGEgc2hvdWxkIGJlIHRyYW5zZmVy cmVkIHRvIHVzZXIgc2lkZQotCSAqIHRocm91Z2ggc3BlY2lmaWMgaW9jdGwuCi0JICovCi0KLQlE Uk1fREVCVUdfS01TKCJvZmZzZXRfeCA9ICVkLCBvZmZzZXRfeSA9ICVkXG4iLAotCQkJd2luX2Rh dGEtPm9mZnNldF94LCB3aW5fZGF0YS0+b2Zmc2V0X3kpOwotCURSTV9ERUJVR19LTVMoIm92bF93 aWR0aCA9ICVkLCBvdmxfaGVpZ2h0ID0gJWRcbiIsCi0JCQl3aW5fZGF0YS0+b3ZsX3dpZHRoLCB3 aW5fZGF0YS0+b3ZsX2hlaWdodCk7Ci0JRFJNX0RFQlVHX0tNUygicGFkZHIgPSAweCVseFxuIiwg KHVuc2lnbmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRyKTsKLQlEUk1fREVCVUdfS01TKCJmYl93 aWR0aCA9ICVkLCBjcnRjX3dpZHRoID0gJWRcbiIsCi0JCQlwbGFuZS0+ZmJfd2lkdGgsIHBsYW5l LT5jcnRjX3dpZHRoKTsKLX0KLQogc3RhdGljIHZvaWQgdmlkaV93aW5fY29tbWl0KHN0cnVjdCBl eHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogewogCXN0cnVjdCB2aWRpX2NvbnRleHQg KmN0eCA9IGNydGMtPmN0eDsKLQlzdHJ1Y3QgdmlkaV93aW5fZGF0YSAqd2luX2RhdGE7CisJc3Ry dWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwogCWludCB3aW4gPSB6cG9zOwogCiAJaWYgKGN0 eC0+c3VzcGVuZGVkKQpAQCAtMjExLDExICsxMzIsMTEgQEAgc3RhdGljIHZvaWQgdmlkaV93aW5f Y29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogCWlmICh3aW4g PCAwIHx8IHdpbiA+PSBXSU5ET1dTX05SKQogCQlyZXR1cm47CiAKLQl3aW5fZGF0YSA9ICZjdHgt Pndpbl9kYXRhW3dpbl07CisJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKIAotCXdpbl9kYXRh LT5lbmFibGVkID0gdHJ1ZTsKKwlwbGFuZS0+ZW5hYmxlZCA9IHRydWU7CiAKLQlEUk1fREVCVUdf S01TKCJkbWFfYWRkciA9ICVwYWRcbiIsICZ3aW5fZGF0YS0+ZG1hX2FkZHIpOworCURSTV9ERUJV R19LTVMoImRtYV9hZGRyID0gJXBhZFxuIiwgcGxhbmUtPmRtYV9hZGRyKTsKIAogCWlmIChjdHgt PnZibGFua19vbikKIAkJc2NoZWR1bGVfd29yaygmY3R4LT53b3JrKTsKQEAgLTIyNCw3ICsxNDUs NyBAQCBzdGF0aWMgdm9pZCB2aWRpX3dpbl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YywgaW50IHpwb3MpCiBzdGF0aWMgdm9pZCB2aWRpX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlu b3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogewogCXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0 eCA9IGNydGMtPmN0eDsKLQlzdHJ1Y3QgdmlkaV93aW5fZGF0YSAqd2luX2RhdGE7CisJc3RydWN0 IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwogCWludCB3aW4gPSB6cG9zOwogCiAJaWYgKHdpbiA9 PSBERUZBVUxUX1pQT1MpCkBAIC0yMzMsMTQgKzE1NCwxNyBAQCBzdGF0aWMgdm9pZCB2aWRpX3dp bl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQogCWlmICh3 aW4gPCAwIHx8IHdpbiA+PSBXSU5ET1dTX05SKQogCQlyZXR1cm47CiAKLQl3aW5fZGF0YSA9ICZj dHgtPndpbl9kYXRhW3dpbl07Ci0Jd2luX2RhdGEtPmVuYWJsZWQgPSBmYWxzZTsKKwlwbGFuZSA9 ICZjdHgtPnBsYW5lc1t3aW5dOworCXBsYW5lLT5lbmFibGVkID0gZmFsc2U7CiAKIAkvKiBUT0RP LiAqLwogfQogCiBzdGF0aWMgaW50IHZpZGlfcG93ZXJfb24oc3RydWN0IHZpZGlfY29udGV4dCAq Y3R4LCBib29sIGVuYWJsZSkKIHsKKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CisJ aW50IGk7CisKIAlEUk1fREVCVUdfS01TKCIlc1xuIiwgX19GSUxFX18pOwogCiAJaWYgKGVuYWJs ZSAhPSBmYWxzZSAmJiBlbmFibGUgIT0gdHJ1ZSkKQEAgLTI1Myw3ICsxNzcsMTEgQEAgc3RhdGlj IGludCB2aWRpX3Bvd2VyX29uKHN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCwgYm9vbCBlbmFibGUp CiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoMCwgJmN0eC0+aXJxX2ZsYWdzKSkKIAkJCXZpZGlf ZW5hYmxlX3ZibGFuayhjdHgtPmNydGMpOwogCi0JCXZpZGlfYXBwbHkoY3R4KTsKKwkJZm9yIChp ID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgeworCQkJcGxhbmUgPSAmY3R4LT5wbGFuZXNbaV07 CisJCQlpZiAocGxhbmUtPmVuYWJsZWQpCisJCQkJdmlkaV93aW5fY29tbWl0KGN0eC0+Y3J0Yywg aSk7CisJCX0KIAl9IGVsc2UgewogCQljdHgtPnN1c3BlbmRlZCA9IHRydWU7CiAJfQpAQCAtMzAx LDcgKzIyOSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyB2aWRpX2NydGNf b3BzID0gewogCS5kcG1zID0gdmlkaV9kcG1zLAogCS5lbmFibGVfdmJsYW5rID0gdmlkaV9lbmFi bGVfdmJsYW5rLAogCS5kaXNhYmxlX3ZibGFuayA9IHZpZGlfZGlzYWJsZV92YmxhbmssCi0JLndp bl9tb2RlX3NldCA9IHZpZGlfd2luX21vZGVfc2V0LAogCS53aW5fY29tbWl0ID0gdmlkaV93aW5f Y29tbWl0LAogCS53aW5fZGlzYWJsZSA9IHZpZGlfd2luX2Rpc2FibGUsCiB9OwpAQCAtNTQzLDEy ICs0NzAsMjIgQEAgc3RhdGljIGludCB2aWRpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHZpZGlfY29udGV4dCAq Y3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYg PSBkYXRhOwotCWludCByZXQ7CisJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFu ZTsKKwllbnVtIGRybV9wbGFuZV90eXBlIHR5cGU7CisJaW50IHpwb3MsIHJldDsKIAogCXZpZGlf Y3R4X2luaXRpYWxpemUoY3R4LCBkcm1fZGV2KTsKIAotCWN0eC0+Y3J0YyA9IGV4eW5vc19kcm1f Y3J0Y19jcmVhdGUoZHJtX2RldiwgY3R4LT5waXBlLAotCQkJCQkgICBFWFlOT1NfRElTUExBWV9U WVBFX1ZJREksCisJZm9yICh6cG9zID0gMDsgenBvcyA8IFdJTkRPV1NfTlI7IHpwb3MrKykgewor CQl0eXBlID0gKHpwb3MgPT0gY3R4LT5kZWZhdWx0X3dpbikgPyBEUk1fUExBTkVfVFlQRV9QUklN QVJZIDoKKwkJCQkJCURSTV9QTEFORV9UWVBFX09WRVJMQVk7CisJCWV4eW5vc19wbGFuZV9pbml0 KGRybV9kZXYsICZjdHgtPnBsYW5lc1t6cG9zXSwgMSA8PCBjdHgtPnBpcGUsCisJCQkJICB0eXBl KTsKKwl9CisKKwlleHlub3NfcGxhbmUgPSAmY3R4LT5wbGFuZXNbY3R4LT5kZWZhdWx0X3dpbl07 CisJY3R4LT5jcnRjID0gZXh5bm9zX2RybV9jcnRjX2NyZWF0ZShkcm1fZGV2LCAmZXh5bm9zX3Bs YW5lLT5iYXNlLAorCQkJCQkgICBjdHgtPnBpcGUsIEVYWU5PU19ESVNQTEFZX1RZUEVfVklESSwK IAkJCQkJICAgJnZpZGlfY3J0Y19vcHMsIGN0eCk7CiAJaWYgKElTX0VSUihjdHgtPmNydGMpKSB7 CiAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBjcnRjLlxuIik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jIGIvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfbWl4ZXIuYwppbmRleCAzNTE4YmM0Li40MTk1NjVjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19taXhlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX21peGVyLmMKQEAgLTM3LDM0ICszNywxMyBAQAogCiAjaW5jbHVkZSAi ZXh5bm9zX2RybV9kcnYuaCIKICNpbmNsdWRlICJleHlub3NfZHJtX2NydGMuaCIKKyNpbmNsdWRl ICJleHlub3NfZHJtX3BsYW5lLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgogI2lu Y2x1ZGUgImV4eW5vc19taXhlci5oIgogCiAjZGVmaW5lIE1JWEVSX1dJTl9OUgkJMwogI2RlZmlu ZSBNSVhFUl9ERUZBVUxUX1dJTgkwCiAKLXN0cnVjdCBoZG1pX3dpbl9kYXRhIHsKLQlkbWFfYWRk cl90CQlkbWFfYWRkcjsKLQlkbWFfYWRkcl90CQljaHJvbWFfZG1hX2FkZHI7Ci0JdWludDMyX3QJ CXBpeGVsX2Zvcm1hdDsKLQl1bnNpZ25lZCBpbnQJCWJwcDsKLQl1bnNpZ25lZCBpbnQJCWNydGNf eDsKLQl1bnNpZ25lZCBpbnQJCWNydGNfeTsKLQl1bnNpZ25lZCBpbnQJCWNydGNfd2lkdGg7Ci0J dW5zaWduZWQgaW50CQljcnRjX2hlaWdodDsKLQl1bnNpZ25lZCBpbnQJCWZiX3g7Ci0JdW5zaWdu ZWQgaW50CQlmYl95OwotCXVuc2lnbmVkIGludAkJZmJfd2lkdGg7Ci0JdW5zaWduZWQgaW50CQlm Yl9oZWlnaHQ7Ci0JdW5zaWduZWQgaW50CQlzcmNfd2lkdGg7Ci0JdW5zaWduZWQgaW50CQlzcmNf aGVpZ2h0OwotCXVuc2lnbmVkIGludAkJbW9kZV93aWR0aDsKLQl1bnNpZ25lZCBpbnQJCW1vZGVf aGVpZ2h0OwotCXVuc2lnbmVkIGludAkJc2Nhbl9mbGFnczsKLQlib29sCQkJZW5hYmxlZDsKLQli b29sCQkJcmVzdW1lOwotfTsKLQogc3RydWN0IG1peGVyX3Jlc291cmNlcyB7CiAJaW50CQkJaXJx OwogCXZvaWQgX19pb21lbQkJKm1peGVyX3JlZ3M7CkBAIC04OSw2ICs2OCw3IEBAIHN0cnVjdCBt aXhlcl9jb250ZXh0IHsKIAlzdHJ1Y3QgZGV2aWNlCQkqZGV2OwogCXN0cnVjdCBkcm1fZGV2aWNl CSpkcm1fZGV2OwogCXN0cnVjdCBleHlub3NfZHJtX2NydGMJKmNydGM7CisJc3RydWN0IGV4eW5v c19kcm1fcGxhbmUJcGxhbmVzW01JWEVSX1dJTl9OUl07CiAJaW50CQkJcGlwZTsKIAlib29sCQkJ aW50ZXJsYWNlOwogCWJvb2wJCQlwb3dlcmVkOwpAQCAtOTgsNyArNzgsNiBAQCBzdHJ1Y3QgbWl4 ZXJfY29udGV4dCB7CiAKIAlzdHJ1Y3QgbXV0ZXgJCW1peGVyX211dGV4OwogCXN0cnVjdCBtaXhl cl9yZXNvdXJjZXMJbWl4ZXJfcmVzOwotCXN0cnVjdCBoZG1pX3dpbl9kYXRhCXdpbl9kYXRhW01J WEVSX1dJTl9OUl07CiAJZW51bSBtaXhlcl92ZXJzaW9uX2lkCW14cl92ZXI7CiAJd2FpdF9xdWV1 ZV9oZWFkX3QJd2FpdF92c3luY19xdWV1ZTsKIAlhdG9taWNfdAkJd2FpdF92c3luY19ldmVudDsK QEAgLTQwMiw3ICszODEsNyBAQCBzdGF0aWMgdm9pZCB2cF92aWRlb19idWZmZXIoc3RydWN0IG1p eGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKIHsKIAlzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzICpy ZXMgPSAmY3R4LT5taXhlcl9yZXM7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQlzdHJ1Y3QgaGRt aV93aW5fZGF0YSAqd2luX2RhdGE7CisJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwog CXVuc2lnbmVkIGludCB4X3JhdGlvLCB5X3JhdGlvOwogCXVuc2lnbmVkIGludCBidWZfbnVtID0g MTsKIAlkbWFfYWRkcl90IGx1bWFfYWRkclsyXSwgY2hyb21hX2FkZHJbMl07CkBAIC00MTAsOSAr Mzg5LDkgQEAgc3RhdGljIHZvaWQgdnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0 ICpjdHgsIGludCB3aW4pCiAJYm9vbCBjcmNiX21vZGUgPSBmYWxzZTsKIAl1MzIgdmFsOwogCi0J d2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOworCXBsYW5lID0gJmN0eC0+cGxhbmVzW3dp bl07CiAKLQlzd2l0Y2ggKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQpIHsKKwlzd2l0Y2ggKHBsYW5l LT5waXhlbF9mb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfTlYxMjoKIAkJY3JjYl9tb2RlID0g ZmFsc2U7CiAJCWJ1Zl9udW0gPSAyOwpAQCAtNDIwLDM1ICszOTksMzUgQEAgc3RhdGljIHZvaWQg dnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGludCB3aW4pCiAJLyog VE9ETzogc2luZ2xlIGJ1ZmZlciBmb3JtYXQgTlYxMiwgTlYyMSAqLwogCWRlZmF1bHQ6CiAJCS8q IGlnbm9yZSBwaXhlbCBmb3JtYXQgYXQgZGlzYWJsZSB0aW1lICovCi0JCWlmICghd2luX2RhdGEt PmRtYV9hZGRyKQorCQlpZiAoIXBsYW5lLT5kbWFfYWRkclswXSkKIAkJCWJyZWFrOwogCiAJCURS TV9FUlJPUigicGl4ZWwgZm9ybWF0IGZvciB2cCBpcyB3cm9uZyBbJWRdLlxuIiwKLQkJCQl3aW5f ZGF0YS0+cGl4ZWxfZm9ybWF0KTsKKwkJCQlwbGFuZS0+cGl4ZWxfZm9ybWF0KTsKIAkJcmV0dXJu OwogCX0KIAogCS8qIHNjYWxpbmcgZmVhdHVyZTogKHNyYyA8PCAxNikgLyBkc3QgKi8KLQl4X3Jh dGlvID0gKHdpbl9kYXRhLT5zcmNfd2lkdGggPDwgMTYpIC8gd2luX2RhdGEtPmNydGNfd2lkdGg7 Ci0JeV9yYXRpbyA9ICh3aW5fZGF0YS0+c3JjX2hlaWdodCA8PCAxNikgLyB3aW5fZGF0YS0+Y3J0 Y19oZWlnaHQ7CisJeF9yYXRpbyA9IChwbGFuZS0+c3JjX3dpZHRoIDw8IDE2KSAvIHBsYW5lLT5j cnRjX3dpZHRoOworCXlfcmF0aW8gPSAocGxhbmUtPnNyY19oZWlnaHQgPDwgMTYpIC8gcGxhbmUt PmNydGNfaGVpZ2h0OwogCiAJaWYgKGJ1Zl9udW0gPT0gMikgewotCQlsdW1hX2FkZHJbMF0gPSB3 aW5fZGF0YS0+ZG1hX2FkZHI7Ci0JCWNocm9tYV9hZGRyWzBdID0gd2luX2RhdGEtPmNocm9tYV9k bWFfYWRkcjsKKwkJbHVtYV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdOworCQljaHJvbWFf YWRkclswXSA9IHBsYW5lLT5kbWFfYWRkclsxXTsKIAl9IGVsc2UgewotCQlsdW1hX2FkZHJbMF0g PSB3aW5fZGF0YS0+ZG1hX2FkZHI7Ci0JCWNocm9tYV9hZGRyWzBdID0gd2luX2RhdGEtPmRtYV9h ZGRyCi0JCQkrICh3aW5fZGF0YS0+ZmJfd2lkdGggKiB3aW5fZGF0YS0+ZmJfaGVpZ2h0KTsKKwkJ bHVtYV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdOworCQljaHJvbWFfYWRkclswXSA9IHBs YW5lLT5kbWFfYWRkclswXQorCQkJKyAocGxhbmUtPmZiX3dpZHRoICogcGxhbmUtPmZiX2hlaWdo dCk7CiAJfQogCi0JaWYgKHdpbl9kYXRhLT5zY2FuX2ZsYWdzICYgRFJNX01PREVfRkxBR19JTlRF UkxBQ0UpIHsKKwlpZiAocGxhbmUtPnNjYW5fZmxhZyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KSB7CiAJCWN0eC0+aW50ZXJsYWNlID0gdHJ1ZTsKIAkJaWYgKHRpbGVkX21vZGUpIHsKIAkJCWx1 bWFfYWRkclsxXSA9IGx1bWFfYWRkclswXSArIDB4NDA7CiAJCQljaHJvbWFfYWRkclsxXSA9IGNo cm9tYV9hZGRyWzBdICsgMHg0MDsKIAkJfSBlbHNlIHsKLQkJCWx1bWFfYWRkclsxXSA9IGx1bWFf YWRkclswXSArIHdpbl9kYXRhLT5mYl93aWR0aDsKLQkJCWNocm9tYV9hZGRyWzFdID0gY2hyb21h X2FkZHJbMF0gKyB3aW5fZGF0YS0+ZmJfd2lkdGg7CisJCQlsdW1hX2FkZHJbMV0gPSBsdW1hX2Fk ZHJbMF0gKyBwbGFuZS0+ZmJfd2lkdGg7CisJCQljaHJvbWFfYWRkclsxXSA9IGNocm9tYV9hZGRy WzBdICsgcGxhbmUtPmZiX3dpZHRoOwogCQl9CiAJfSBlbHNlIHsKIAkJY3R4LT5pbnRlcmxhY2Ug PSBmYWxzZTsKQEAgLTQ2OSwyNiArNDQ4LDI2IEBAIHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZl cihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2luKQogCXZwX3JlZ193cml0ZW1hc2so cmVzLCBWUF9NT0RFLCB2YWwsIFZQX01PREVfRk1UX01BU0spOwogCiAJLyogc2V0dGluZyBzaXpl IG9mIGlucHV0IGltYWdlICovCi0JdnBfcmVnX3dyaXRlKHJlcywgVlBfSU1HX1NJWkVfWSwgVlBf SU1HX0hTSVpFKHdpbl9kYXRhLT5mYl93aWR0aCkgfAotCQlWUF9JTUdfVlNJWkUod2luX2RhdGEt PmZiX2hlaWdodCkpOworCXZwX3JlZ193cml0ZShyZXMsIFZQX0lNR19TSVpFX1ksIFZQX0lNR19I U0laRShwbGFuZS0+ZmJfd2lkdGgpIHwKKwkJVlBfSU1HX1ZTSVpFKHBsYW5lLT5mYl9oZWlnaHQp KTsKIAkvKiBjaHJvbWEgaGVpZ2h0IGhhcyB0byByZWR1Y2VkIGJ5IDIgdG8gYXZvaWQgY2hyb21h IGRpc3RvcmlvbnMgKi8KLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9JTUdfU0laRV9DLCBWUF9JTUdf SFNJWkUod2luX2RhdGEtPmZiX3dpZHRoKSB8Ci0JCVZQX0lNR19WU0laRSh3aW5fZGF0YS0+ZmJf aGVpZ2h0IC8gMikpOworCXZwX3JlZ193cml0ZShyZXMsIFZQX0lNR19TSVpFX0MsIFZQX0lNR19I U0laRShwbGFuZS0+ZmJfd2lkdGgpIHwKKwkJVlBfSU1HX1ZTSVpFKHBsYW5lLT5mYl9oZWlnaHQg LyAyKSk7CiAKLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfV0lEVEgsIHdpbl9kYXRhLT5zcmNf d2lkdGgpOwotCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19IRUlHSFQsIHdpbl9kYXRhLT5zcmNf aGVpZ2h0KTsKKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfV0lEVEgsIHBsYW5lLT5zcmNfd2lk dGgpOworCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19IRUlHSFQsIHBsYW5lLT5zcmNfaGVpZ2h0 KTsKIAl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfSF9QT1NJVElPTiwKLQkJCVZQX1NSQ19IX1BP U0lUSU9OX1ZBTCh3aW5fZGF0YS0+ZmJfeCkpOwotCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19W X1BPU0lUSU9OLCB3aW5fZGF0YS0+ZmJfeSk7CisJCQlWUF9TUkNfSF9QT1NJVElPTl9WQUwocGxh bmUtPmZiX3gpKTsKKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9TUkNfVl9QT1NJVElPTiwgcGxhbmUt PmZiX3kpOwogCi0JdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX1dJRFRILCB3aW5fZGF0YS0+Y3J0 Y193aWR0aCk7Ci0JdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hfUE9TSVRJT04sIHdpbl9kYXRh LT5jcnRjX3gpOworCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9XSURUSCwgcGxhbmUtPmNydGNf d2lkdGgpOworCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IX1BPU0lUSU9OLCBwbGFuZS0+Y3J0 Y194KTsKIAlpZiAoY3R4LT5pbnRlcmxhY2UpIHsKLQkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNU X0hFSUdIVCwgd2luX2RhdGEtPmNydGNfaGVpZ2h0IC8gMik7Ci0JCXZwX3JlZ193cml0ZShyZXMs IFZQX0RTVF9WX1BPU0lUSU9OLCB3aW5fZGF0YS0+Y3J0Y195IC8gMik7CisJCXZwX3JlZ193cml0 ZShyZXMsIFZQX0RTVF9IRUlHSFQsIHBsYW5lLT5jcnRjX2hlaWdodCAvIDIpOworCQl2cF9yZWdf d3JpdGUocmVzLCBWUF9EU1RfVl9QT1NJVElPTiwgcGxhbmUtPmNydGNfeSAvIDIpOwogCX0gZWxz ZSB7Ci0JCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IRUlHSFQsIHdpbl9kYXRhLT5jcnRjX2hl aWdodCk7Ci0JCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9WX1BPU0lUSU9OLCB3aW5fZGF0YS0+ Y3J0Y195KTsKKwkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hFSUdIVCwgcGxhbmUtPmNydGNf aGVpZ2h0KTsKKwkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX1ZfUE9TSVRJT04sIHBsYW5lLT5j cnRjX3kpOwogCX0KIAogCXZwX3JlZ193cml0ZShyZXMsIFZQX0hfUkFUSU8sIHhfcmF0aW8pOwpA QCAtNTAyLDggKzQ4MSw4IEBAIHN0YXRpYyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4 ZXJfY29udGV4dCAqY3R4LCBpbnQgd2luKQogCXZwX3JlZ193cml0ZShyZXMsIFZQX1RPUF9DX1BU UiwgY2hyb21hX2FkZHJbMF0pOwogCXZwX3JlZ193cml0ZShyZXMsIFZQX0JPVF9DX1BUUiwgY2hy b21hX2FkZHJbMV0pOwogCi0JbWl4ZXJfY2ZnX3NjYW4oY3R4LCB3aW5fZGF0YS0+bW9kZV9oZWln aHQpOwotCW1peGVyX2NmZ19yZ2JfZm10KGN0eCwgd2luX2RhdGEtPm1vZGVfaGVpZ2h0KTsKKwlt aXhlcl9jZmdfc2NhbihjdHgsIHBsYW5lLT5tb2RlX2hlaWdodCk7CisJbWl4ZXJfY2ZnX3JnYl9m bXQoY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwogCW1peGVyX2NmZ19sYXllcihjdHgsIHdpbiwg dHJ1ZSk7CiAJbWl4ZXJfcnVuKGN0eCk7CiAKQEAgLTUyNCwyMSArNTAzLDIxIEBAIHN0YXRpYyB2 b2lkIG1peGVyX2dyYXBoX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2lu KQogewogCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMgKnJlcyA9ICZjdHgtPm1peGVyX3JlczsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBoZG1pX3dpbl9kYXRhICp3aW5fZGF0YTsKKwlz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CiAJdW5zaWduZWQgaW50IHhfcmF0aW8sIHlf cmF0aW87CiAJdW5zaWduZWQgaW50IHNyY194X29mZnNldCwgc3JjX3lfb2Zmc2V0LCBkc3RfeF9v ZmZzZXQsIGRzdF95X29mZnNldDsKIAlkbWFfYWRkcl90IGRtYV9hZGRyOwogCXVuc2lnbmVkIGlu dCBmbXQ7CiAJdTMyIHZhbDsKIAotCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKKwlw bGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwogCiAJI2RlZmluZSBSR0I1NjUgNAogCSNkZWZpbmUg QVJHQjE1NTUgNQogCSNkZWZpbmUgQVJHQjQ0NDQgNgogCSNkZWZpbmUgQVJHQjg4ODggNwogCi0J c3dpdGNoICh3aW5fZGF0YS0+YnBwKSB7CisJc3dpdGNoIChwbGFuZS0+YnBwKSB7CiAJY2FzZSAx NjoKIAkJZm10ID0gQVJHQjQ0NDQ7CiAJCWJyZWFrOwpAQCAtNTUzLDE3ICs1MzIsMTcgQEAgc3Rh dGljIHZvaWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGlu dCB3aW4pCiAJeF9yYXRpbyA9IDA7CiAJeV9yYXRpbyA9IDA7CiAKLQlkc3RfeF9vZmZzZXQgPSB3 aW5fZGF0YS0+Y3J0Y194OwotCWRzdF95X29mZnNldCA9IHdpbl9kYXRhLT5jcnRjX3k7CisJZHN0 X3hfb2Zmc2V0ID0gcGxhbmUtPmNydGNfeDsKKwlkc3RfeV9vZmZzZXQgPSBwbGFuZS0+Y3J0Y195 OwogCiAJLyogY29udmVydGluZyBkbWEgYWRkcmVzcyBiYXNlIGFuZCBzb3VyY2Ugb2Zmc2V0ICov Ci0JZG1hX2FkZHIgPSB3aW5fZGF0YS0+ZG1hX2FkZHIKLQkJKyAod2luX2RhdGEtPmZiX3ggKiB3 aW5fZGF0YS0+YnBwID4+IDMpCi0JCSsgKHdpbl9kYXRhLT5mYl95ICogd2luX2RhdGEtPmZiX3dp ZHRoICogd2luX2RhdGEtPmJwcCA+PiAzKTsKKwlkbWFfYWRkciA9IHBsYW5lLT5kbWFfYWRkclsw XQorCQkrIChwbGFuZS0+ZmJfeCAqIHBsYW5lLT5icHAgPj4gMykKKwkJKyAocGxhbmUtPmZiX3kg KiBwbGFuZS0+ZmJfd2lkdGggKiBwbGFuZS0+YnBwID4+IDMpOwogCXNyY194X29mZnNldCA9IDA7 CiAJc3JjX3lfb2Zmc2V0ID0gMDsKIAotCWlmICh3aW5fZGF0YS0+c2Nhbl9mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKQorCWlmIChwbGFuZS0+c2Nhbl9mbGFnICYgRFJNX01PREVfRkxB R19JTlRFUkxBQ0UpCiAJCWN0eC0+aW50ZXJsYWNlID0gdHJ1ZTsKIAllbHNlCiAJCWN0eC0+aW50 ZXJsYWNlID0gZmFsc2U7CkBAIC01NzYsMTggKzU1NSwxOCBAQCBzdGF0aWMgdm9pZCBtaXhlcl9n cmFwaF9idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKIAkJTVhSX0dS UF9DRkdfRk9STUFUX1ZBTChmbXQpLCBNWFJfR1JQX0NGR19GT1JNQVRfTUFTSyk7CiAKIAkvKiBz ZXR1cCBnZW9tZXRyeSAqLwotCW1peGVyX3JlZ193cml0ZShyZXMsIE1YUl9HUkFQSElDX1NQQU4o d2luKSwgd2luX2RhdGEtPmZiX3dpZHRoKTsKKwltaXhlcl9yZWdfd3JpdGUocmVzLCBNWFJfR1JB UEhJQ19TUEFOKHdpbiksIHBsYW5lLT5mYl93aWR0aCk7CiAKIAkvKiBzZXR1cCBkaXNwbGF5IHNp emUgKi8KIAlpZiAoY3R4LT5teHJfdmVyID09IE1YUl9WRVJfMTI4XzBfMF8xODQgJiYKIAkJd2lu ID09IE1JWEVSX0RFRkFVTFRfV0lOKSB7Ci0JCXZhbCAgPSBNWFJfTVhSX1JFU19IRUlHSFQod2lu X2RhdGEtPm1vZGVfaGVpZ2h0KTsKLQkJdmFsIHw9IE1YUl9NWFJfUkVTX1dJRFRIKHdpbl9kYXRh LT5tb2RlX3dpZHRoKTsKKwkJdmFsICA9IE1YUl9NWFJfUkVTX0hFSUdIVChwbGFuZS0+bW9kZV9o ZWlnaHQpOworCQl2YWwgfD0gTVhSX01YUl9SRVNfV0lEVEgocGxhbmUtPm1vZGVfd2lkdGgpOwog CQltaXhlcl9yZWdfd3JpdGUocmVzLCBNWFJfUkVTT0xVVElPTiwgdmFsKTsKIAl9CiAKLQl2YWwg ID0gTVhSX0dSUF9XSF9XSURUSCh3aW5fZGF0YS0+Y3J0Y193aWR0aCk7Ci0JdmFsIHw9IE1YUl9H UlBfV0hfSEVJR0hUKHdpbl9kYXRhLT5jcnRjX2hlaWdodCk7CisJdmFsICA9IE1YUl9HUlBfV0hf V0lEVEgocGxhbmUtPmNydGNfd2lkdGgpOworCXZhbCB8PSBNWFJfR1JQX1dIX0hFSUdIVChwbGFu ZS0+Y3J0Y19oZWlnaHQpOwogCXZhbCB8PSBNWFJfR1JQX1dIX0hfU0NBTEUoeF9yYXRpbyk7CiAJ dmFsIHw9IE1YUl9HUlBfV0hfVl9TQ0FMRSh5X3JhdGlvKTsKIAltaXhlcl9yZWdfd3JpdGUocmVz LCBNWFJfR1JBUEhJQ19XSCh3aW4pLCB2YWwpOwpAQCAtNjA1LDggKzU4NCw4IEBAIHN0YXRpYyB2 b2lkIG1peGVyX2dyYXBoX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2lu KQogCS8qIHNldCBidWZmZXIgYWRkcmVzcyB0byBtaXhlciAqLwogCW1peGVyX3JlZ193cml0ZShy ZXMsIE1YUl9HUkFQSElDX0JBU0Uod2luKSwgZG1hX2FkZHIpOwogCi0JbWl4ZXJfY2ZnX3NjYW4o Y3R4LCB3aW5fZGF0YS0+bW9kZV9oZWlnaHQpOwotCW1peGVyX2NmZ19yZ2JfZm10KGN0eCwgd2lu X2RhdGEtPm1vZGVfaGVpZ2h0KTsKKwltaXhlcl9jZmdfc2NhbihjdHgsIHBsYW5lLT5tb2RlX2hl aWdodCk7CisJbWl4ZXJfY2ZnX3JnYl9mbXQoY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwogCW1p eGVyX2NmZ19sYXllcihjdHgsIHdpbiwgdHJ1ZSk7CiAKIAkvKiBsYXllciB1cGRhdGUgbWFuZGF0 b3J5IGZvciBtaXhlciAxNi4wLjMzLjAgKi8KQEAgLTkxOCw1OCArODk3LDYgQEAgc3RhdGljIHZv aWQgbWl4ZXJfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKIAlt aXhlcl9yZWdfd3JpdGVtYXNrKHJlcywgTVhSX0lOVF9FTiwgMCwgTVhSX0lOVF9FTl9WU1lOQyk7 CiB9CiAKLXN0YXRpYyB2b2lkIG1peGVyX3dpbl9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2RybV9j cnRjICpjcnRjLAotCQkJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lKQotewotCXN0cnVj dCBtaXhlcl9jb250ZXh0ICptaXhlcl9jdHggPSBjcnRjLT5jdHg7Ci0Jc3RydWN0IGhkbWlfd2lu X2RhdGEgKndpbl9kYXRhOwotCWludCB3aW47Ci0KLQlpZiAoIXBsYW5lKSB7Ci0JCURSTV9FUlJP UigicGxhbmUgaXMgTlVMTFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQlEUk1fREVCVUdfS01TKCJz ZXQgWyVkXXhbJWRdIGF0ICglZCwlZCkgdG8gWyVkXXhbJWRdIGF0ICglZCwlZClcbiIsCi0JCQkJ IHBsYW5lLT5mYl93aWR0aCwgcGxhbmUtPmZiX2hlaWdodCwKLQkJCQkgcGxhbmUtPmZiX3gsIHBs YW5lLT5mYl95LAotCQkJCSBwbGFuZS0+Y3J0Y193aWR0aCwgcGxhbmUtPmNydGNfaGVpZ2h0LAot CQkJCSBwbGFuZS0+Y3J0Y194LCBwbGFuZS0+Y3J0Y195KTsKLQotCXdpbiA9IHBsYW5lLT56cG9z OwotCWlmICh3aW4gPT0gREVGQVVMVF9aUE9TKQotCQl3aW4gPSBNSVhFUl9ERUZBVUxUX1dJTjsK LQotCWlmICh3aW4gPCAwIHx8IHdpbiA+PSBNSVhFUl9XSU5fTlIpIHsKLQkJRFJNX0VSUk9SKCJt aXhlciB3aW5kb3dbJWRdIGlzIHdyb25nXG4iLCB3aW4pOwotCQlyZXR1cm47Ci0JfQotCi0Jd2lu X2RhdGEgPSAmbWl4ZXJfY3R4LT53aW5fZGF0YVt3aW5dOwotCi0Jd2luX2RhdGEtPmRtYV9hZGRy ID0gcGxhbmUtPmRtYV9hZGRyWzBdOwotCXdpbl9kYXRhLT5jaHJvbWFfZG1hX2FkZHIgPSBwbGFu ZS0+ZG1hX2FkZHJbMV07Ci0Jd2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9IHBsYW5lLT5waXhlbF9m b3JtYXQ7Ci0Jd2luX2RhdGEtPmJwcCA9IHBsYW5lLT5icHA7Ci0KLQl3aW5fZGF0YS0+Y3J0Y194 ID0gcGxhbmUtPmNydGNfeDsKLQl3aW5fZGF0YS0+Y3J0Y195ID0gcGxhbmUtPmNydGNfeTsKLQl3 aW5fZGF0YS0+Y3J0Y193aWR0aCA9IHBsYW5lLT5jcnRjX3dpZHRoOwotCXdpbl9kYXRhLT5jcnRj X2hlaWdodCA9IHBsYW5lLT5jcnRjX2hlaWdodDsKLQotCXdpbl9kYXRhLT5mYl94ID0gcGxhbmUt PmZiX3g7Ci0Jd2luX2RhdGEtPmZiX3kgPSBwbGFuZS0+ZmJfeTsKLQl3aW5fZGF0YS0+ZmJfd2lk dGggPSBwbGFuZS0+ZmJfd2lkdGg7Ci0Jd2luX2RhdGEtPmZiX2hlaWdodCA9IHBsYW5lLT5mYl9o ZWlnaHQ7Ci0Jd2luX2RhdGEtPnNyY193aWR0aCA9IHBsYW5lLT5zcmNfd2lkdGg7Ci0Jd2luX2Rh dGEtPnNyY19oZWlnaHQgPSBwbGFuZS0+c3JjX2hlaWdodDsKLQotCXdpbl9kYXRhLT5tb2RlX3dp ZHRoID0gcGxhbmUtPm1vZGVfd2lkdGg7Ci0Jd2luX2RhdGEtPm1vZGVfaGVpZ2h0ID0gcGxhbmUt Pm1vZGVfaGVpZ2h0OwotCi0Jd2luX2RhdGEtPnNjYW5fZmxhZ3MgPSBwbGFuZS0+c2Nhbl9mbGFn OwotfQotCiBzdGF0aWMgdm9pZCBtaXhlcl93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2Ny dGMgKmNydGMsIGludCB6cG9zKQogewogCXN0cnVjdCBtaXhlcl9jb250ZXh0ICptaXhlcl9jdHgg PSBjcnRjLT5jdHg7CkBAIC05ODksNyArOTE2LDcgQEAgc3RhdGljIHZvaWQgbWl4ZXJfd2luX2Nv bW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKIAllbHNlCiAJCW1p eGVyX2dyYXBoX2J1ZmZlcihtaXhlcl9jdHgsIHdpbik7CiAKLQltaXhlcl9jdHgtPndpbl9kYXRh W3dpbl0uZW5hYmxlZCA9IHRydWU7CisJbWl4ZXJfY3R4LT5wbGFuZXNbd2luXS5lbmFibGVkID0g dHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgbWl4ZXJfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19k cm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCkBAIC0xMDA0LDcgKzkzMSw3IEBAIHN0YXRpYyB2b2lk IG1peGVyX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9z KQogCW11dGV4X2xvY2soJm1peGVyX2N0eC0+bWl4ZXJfbXV0ZXgpOwogCWlmICghbWl4ZXJfY3R4 LT5wb3dlcmVkKSB7CiAJCW11dGV4X3VubG9jaygmbWl4ZXJfY3R4LT5taXhlcl9tdXRleCk7Ci0J CW1peGVyX2N0eC0+d2luX2RhdGFbd2luXS5yZXN1bWUgPSBmYWxzZTsKKwkJbWl4ZXJfY3R4LT5w bGFuZXNbd2luXS5yZXN1bWUgPSBmYWxzZTsKIAkJcmV0dXJuOwogCX0KIAltdXRleF91bmxvY2so Jm1peGVyX2N0eC0+bWl4ZXJfbXV0ZXgpOwpAQCAtMTAxNyw3ICs5NDQsNyBAQCBzdGF0aWMgdm9p ZCBtaXhlcl93aW5fZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBv cykKIAltaXhlcl92c3luY19zZXRfdXBkYXRlKG1peGVyX2N0eCwgdHJ1ZSk7CiAJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmcmVzLT5yZWdfc2xvY2ssIGZsYWdzKTsKIAotCW1peGVyX2N0eC0+d2lu X2RhdGFbd2luXS5lbmFibGVkID0gZmFsc2U7CisJbWl4ZXJfY3R4LT5wbGFuZXNbd2luXS5lbmFi bGVkID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIG1peGVyX3dhaXRfZm9yX3ZibGFuayhzdHJ1 Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQpAQCAtMTA1NCwxMiArOTgxLDEyIEBAIHN0YXRpYyB2 b2lkIG1peGVyX3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQog CiBzdGF0aWMgdm9pZCBtaXhlcl93aW5kb3dfc3VzcGVuZChzdHJ1Y3QgbWl4ZXJfY29udGV4dCAq Y3R4KQogewotCXN0cnVjdCBoZG1pX3dpbl9kYXRhICp3aW5fZGF0YTsKKwlzdHJ1Y3QgZXh5bm9z X2RybV9wbGFuZSAqcGxhbmU7CiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgTUlYRVJfV0lO X05SOyBpKyspIHsKLQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKLQkJd2luX2RhdGEt PnJlc3VtZSA9IHdpbl9kYXRhLT5lbmFibGVkOworCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsK KwkJcGxhbmUtPnJlc3VtZSA9IHBsYW5lLT5lbmFibGVkOwogCQltaXhlcl93aW5fZGlzYWJsZShj dHgtPmNydGMsIGkpOwogCX0KIAltaXhlcl93YWl0X2Zvcl92YmxhbmsoY3R4LT5jcnRjKTsKQEAg LTEwNjcsMTQgKzk5NCwxNCBAQCBzdGF0aWMgdm9pZCBtaXhlcl93aW5kb3dfc3VzcGVuZChzdHJ1 Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQogCiBzdGF0aWMgdm9pZCBtaXhlcl93aW5kb3dfcmVzdW1l KHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgpCiB7Ci0Jc3RydWN0IGhkbWlfd2luX2RhdGEgKndp bl9kYXRhOworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKIAlpbnQgaTsKIAogCWZv ciAoaSA9IDA7IGkgPCBNSVhFUl9XSU5fTlI7IGkrKykgewotCQl3aW5fZGF0YSA9ICZjdHgtPndp bl9kYXRhW2ldOwotCQl3aW5fZGF0YS0+ZW5hYmxlZCA9IHdpbl9kYXRhLT5yZXN1bWU7Ci0JCXdp bl9kYXRhLT5yZXN1bWUgPSBmYWxzZTsKLQkJaWYgKHdpbl9kYXRhLT5lbmFibGVkKQorCQlwbGFu ZSA9ICZjdHgtPnBsYW5lc1tpXTsKKwkJcGxhbmUtPmVuYWJsZWQgPSBwbGFuZS0+cmVzdW1lOwor CQlwbGFuZS0+cmVzdW1lID0gZmFsc2U7CisJCWlmIChwbGFuZS0+ZW5hYmxlZCkKIAkJCW1peGVy X3dpbl9jb21taXQoY3R4LT5jcnRjLCBpKTsKIAl9CiB9CkBAIC0xMTg2LDcgKzExMTMsNiBAQCBz dGF0aWMgc3RydWN0IGV4eW5vc19kcm1fY3J0Y19vcHMgbWl4ZXJfY3J0Y19vcHMgPSB7CiAJLmVu YWJsZV92YmxhbmsJCT0gbWl4ZXJfZW5hYmxlX3ZibGFuaywKIAkuZGlzYWJsZV92YmxhbmsJCT0g bWl4ZXJfZGlzYWJsZV92YmxhbmssCiAJLndhaXRfZm9yX3ZibGFuawk9IG1peGVyX3dhaXRfZm9y X3ZibGFuaywKLQkud2luX21vZGVfc2V0CQk9IG1peGVyX3dpbl9tb2RlX3NldCwKIAkud2luX2Nv bW1pdAkJPSBtaXhlcl93aW5fY29tbWl0LAogCS53aW5fZGlzYWJsZQkJPSBtaXhlcl93aW5fZGlz YWJsZSwKIH07CkBAIC0xMjUwLDE1ICsxMTc2LDI1IEBAIHN0YXRpYyBpbnQgbWl4ZXJfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hbmFnZXIsIHZvaWQgKmRhdGEpCiB7 CiAJc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKLQlpbnQgcmV0OworCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7CisJZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlOwor CWludCB6cG9zLCByZXQ7CiAKIAlyZXQgPSBtaXhlcl9pbml0aWFsaXplKGN0eCwgZHJtX2Rldik7 CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWN0eC0+Y3J0YyA9IGV4eW5vc19kcm1fY3J0 Y19jcmVhdGUoZHJtX2RldiwgY3R4LT5waXBlLAotCQkJCSAgICAgRVhZTk9TX0RJU1BMQVlfVFlQ RV9IRE1JLAotCQkJCSAgICAgJm1peGVyX2NydGNfb3BzLCBjdHgpOworCWZvciAoenBvcyA9IDA7 IHpwb3MgPCBNSVhFUl9XSU5fTlI7IHpwb3MrKykgeworCQl0eXBlID0gKHpwb3MgPT0gTUlYRVJf REVGQVVMVF9XSU4pID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6CisJCQkJCQlEUk1fUExBTkVf VFlQRV9PVkVSTEFZOworCQlleHlub3NfcGxhbmVfaW5pdChkcm1fZGV2LCAmY3R4LT5wbGFuZXNb enBvc10sIDEgPDwgY3R4LT5waXBlLAorCQkJCSAgdHlwZSk7CisJfQorCisJZXh5bm9zX3BsYW5l ID0gJmN0eC0+cGxhbmVzW01JWEVSX0RFRkFVTFRfV0lOXTsKKwljdHgtPmNydGMgPSBleHlub3Nf ZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsICZleHlub3NfcGxhbmUtPmJhc2UsCisJCQkJCSAgIGN0 eC0+cGlwZSwgRVhZTk9TX0RJU1BMQVlfVFlQRV9IRE1JLAorCQkJCQkgICAmbWl4ZXJfY3J0Y19v cHMsIGN0eCk7CiAJaWYgKElTX0VSUihjdHgtPmNydGMpKSB7CiAJCW1peGVyX2N0eF9yZW1vdmUo Y3R4KTsKIAkJcmV0ID0gUFRSX0VSUihjdHgtPmNydGMpOwotLSAKMi4xLjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==