From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 05/18] drm/i915: Standardize on 'cpp' for bytes per pixel Date: Wed, 20 Jan 2016 21:05:26 +0200 Message-ID: <1453316739-13296-6-git-send-email-ville.syrjala@linux.intel.com> References: <1453316739-13296-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 2AA8B720EE for ; Wed, 20 Jan 2016 11:05:57 -0800 (PST) In-Reply-To: <1453316739-13296-1-git-send-email-ville.syrjala@linux.intel.com> 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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCldl IG1vcmUgb3IgbGVzcyByYW5kb21seSBjYWxsIHRoZSAiYnl0ZXMgcGVyIHBpeGVsIiB2YWx1ZQon Y3BwJywgJ2J5dGVzX3Blcl9waXhlbCcsICdwaXhlbF9zaXplJywgb3IgZXZlbiAnYnBwJy4gTGV0 J3MganVzdCBwaWNrCm9uZSBhbmQgc3RpY2sgdG8gaXQuIEkndmUgY2hvc2VuICdjcHAnLgoKU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMjIgKysrLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAxMjggKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jICB8ICAzNCArKysrLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyks IDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAw ZjVkZjdhNjZjYzQuLmY5NGRkYWQ3MDRiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwpAQCAtMjcwOSw3ICsyNzA5LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAogCXUzMiBsaW5lYXJfb2Zmc2V0Owog CXUzMiBkc3BjbnRyOwogCWk5MTVfcmVnX3QgcmVnID0gRFNQQ05UUihwbGFuZSk7Ci0JaW50IHBp eGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKKwlp bnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAJaW50 IHggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPnNy Yy55MSA+PiAxNjsKIApAQCAtMjc2OSwxMyArMjc2OSwxMiBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAJaWYgKElTX0c0 WChkZXYpKQogCQlkc3BjbnRyIHw9IERJU1BQTEFORV9UUklDS0xFX0ZFRURfRElTQUJMRTsKIAot CWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKKwls aW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIGNwcDsKIAogCWlmIChJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CiAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0K IAkJCWludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsICZ4LCAmeSwKLQkJCQkJCSAg ZmItPm1vZGlmaWVyWzBdLAotCQkJCQkJICBwaXhlbF9zaXplLAorCQkJCQkJICBmYi0+bW9kaWZp ZXJbMF0sIGNwcCwKIAkJCQkJCSAgZmItPnBpdGNoZXNbMF0pOwogCQlsaW5lYXJfb2Zmc2V0IC09 IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0OwogCX0gZWxzZSB7CkBAIC0yNzkyLDcgKzI3OTEs NyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnByaW1hcnksCiAJCWRhdGEgYW5kIGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0Ki8KIAkJbGlu ZWFyX29mZnNldCArPQogCQkJKGNydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRj aGVzWzBdICsKLQkJCShjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwor CQkJKGNydGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAxKSAqIGNwcDsKIAl9CiAKIAlpbnRlbF9jcnRj LT5hZGp1c3RlZF94ID0geDsKQEAgLTI4NDAsNyArMjgzOSw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAJdTMy IGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRS KHBsYW5lKTsKLQlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhl bF9mb3JtYXQsIDApOworCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxf Zm9ybWF0LCAwKTsKIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5zcmMueDEgPj4gMTY7CiAJaW50IHkg PSBwbGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2OwogCkBAIC0yODc5LDExICsyODc4LDEwIEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnByaW1hcnksCiAJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChkZXYpKQog CQlkc3BjbnRyIHw9IERJU1BQTEFORV9UUklDS0xFX0ZFRURfRElTQUJMRTsKIAotCWxpbmVhcl9v ZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogcGl4ZWxfc2l6ZTsKKwlsaW5lYXJfb2Zm c2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIGNwcDsKIAlpbnRlbF9jcnRjLT5kc3BhZGRy X29mZnNldCA9CiAJCWludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsICZ4LCAmeSwK LQkJCQkJICBmYi0+bW9kaWZpZXJbMF0sCi0JCQkJCSAgcGl4ZWxfc2l6ZSwKKwkJCQkJICBmYi0+ bW9kaWZpZXJbMF0sIGNwcCwKIAkJCQkJICBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29mZnNl dCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKIAlpZiAocGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewpAQCAtMjg5Nyw3ICsyODk1LDcgQEAg c3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcHJpbWFyeSwKIAkJCWRhdGEgYW5kIGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0Ki8KIAkJCWxp bmVhcl9vZmZzZXQgKz0KIAkJCQkoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBp dGNoZXNbMF0gKwotCQkJCShjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXpl OworCQkJCShjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkgKiBjcHA7CiAJCX0KIAl9CiAKQEAg LTE0NjgwLDEwICsxNDY3OCwxMiBAQCB1MzIgaW50ZWxfZmJfcGl0Y2hfbGltaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdWludDY0X3QgZmJfbW9kaWZpZXIsCiAJdTMyIGdlbiA9IElOVEVMX0lO Rk8oZGV2KS0+Z2VuOwogCiAJaWYgKGdlbiA+PSA5KSB7CisJCWludCBjcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChwaXhlbF9mb3JtYXQsIDApOworCiAJCS8qICJUaGUgc3RyaWRlIGluIGJ5dGVz IG11c3Qgbm90IGV4Y2VlZCB0aGUgb2YgdGhlIHNpemUgb2YgOEsKIAkJICogIHBpeGVscyBhbmQg MzJLIGJ5dGVzLiIKIAkJICovCi0JCSByZXR1cm4gbWluKDgxOTIqZHJtX2Zvcm1hdF9wbGFuZV9j cHAocGl4ZWxfZm9ybWF0LCAwKSwgMzI3NjgpOworCQlyZXR1cm4gbWluKDgxOTIgKiBjcHAsIDMy NzY4KTsKIAl9IGVsc2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlT X0NIRVJSWVZJRVcoZGV2KSkgewogCQlyZXR1cm4gMzIqMTAyNDsKIAl9IGVsc2UgaWYgKGdlbiA+ PSA0KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCAyMGJmODU0ZWFlOGMuLjMxYmM0ZWEz OTVhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF93YXRlcm1hcmtfcGFyYW1zIGk4NDVfd21faW5mbyA9IHsKICAq IGludGVsX2NhbGN1bGF0ZV93bSAtIGNhbGN1bGF0ZSB3YXRlcm1hcmsgbGV2ZWwKICAqIEBjbG9j a19pbl9raHo6IHBpeGVsIGNsb2NrCiAgKiBAd206IGNoaXAgRklGTyBwYXJhbXMKLSAqIEBwaXhl bF9zaXplOiBkaXNwbGF5IHBpeGVsIHNpemUKKyAqIEBjcHA6IGJ5dGVzIHBlciBwaXhlbAogICog QGxhdGVuY3lfbnM6IG1lbW9yeSBsYXRlbmN5IGZvciB0aGUgcGxhdGZvcm0KICAqCiAgKiBDYWxj dWxhdGUgdGhlIHdhdGVybWFyayBsZXZlbCAodGhlIGxldmVsIGF0IHdoaWNoIHRoZSBkaXNwbGF5 IHBsYW5lIHdpbGwKQEAgLTU2NCw4ICs1NjQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X3dhdGVybWFya19wYXJhbXMgaTg0NV93bV9pbmZvID0gewogICovCiBzdGF0aWMgdW5zaWduZWQg bG9uZyBpbnRlbF9jYWxjdWxhdGVfd20odW5zaWduZWQgbG9uZyBjbG9ja19pbl9raHosCiAJCQkJ CWNvbnN0IHN0cnVjdCBpbnRlbF93YXRlcm1hcmtfcGFyYW1zICp3bSwKLQkJCQkJaW50IGZpZm9f c2l6ZSwKLQkJCQkJaW50IHBpeGVsX3NpemUsCisJCQkJCWludCBmaWZvX3NpemUsIGludCBjcHAs CiAJCQkJCXVuc2lnbmVkIGxvbmcgbGF0ZW5jeV9ucykKIHsKIAlsb25nIGVudHJpZXNfcmVxdWly ZWQsIHdtX3NpemU7CkBAIC01NzYsNyArNTc1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50 ZWxfY2FsY3VsYXRlX3dtKHVuc2lnbmVkIGxvbmcgY2xvY2tfaW5fa2h6LAogCSAqIGNsb2NrcyBn byBmcm9tIGEgZmV3IHRob3VzYW5kIHRvIHNldmVyYWwgaHVuZHJlZCB0aG91c2FuZC4KIAkgKiBs YXRlbmN5IGlzIHVzdWFsbHkgYSBmZXcgdGhvdXNhbmQKIAkgKi8KLQllbnRyaWVzX3JlcXVpcmVk ID0gKChjbG9ja19pbl9raHogLyAxMDAwKSAqIHBpeGVsX3NpemUgKiBsYXRlbmN5X25zKSAvCisJ ZW50cmllc19yZXF1aXJlZCA9ICgoY2xvY2tfaW5fa2h6IC8gMTAwMCkgKiBjcHAgKiBsYXRlbmN5 X25zKSAvCiAJCTEwMDA7CiAJZW50cmllc19yZXF1aXJlZCA9IERJVl9ST1VORF9VUChlbnRyaWVz X3JlcXVpcmVkLCB3bS0+Y2FjaGVsaW5lX3NpemUpOwogCkBAIC02NDAsMTMgKzYzOSwxMyBAQCBz dGF0aWMgdm9pZCBwaW5ldmlld191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0 YykKIAljcnRjID0gc2luZ2xlX2VuYWJsZWRfY3J0YyhkZXYpOwogCWlmIChjcnRjKSB7CiAJCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnRvX2ludGVsX2Ny dGMoY3J0YyktPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwotCQlpbnQgcGl4ZWxfc2l6ZSA9 IGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4OworCQlpbnQgY3Bw ID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZiLT5waXhlbF9m b3JtYXQsIDApOwogCQlpbnQgY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwogCiAJ CS8qIERpc3BsYXkgU1IgKi8KIAkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5l dmlld19kaXNwbGF5X3dtLAogCQkJCQlwaW5ldmlld19kaXNwbGF5X3dtLmZpZm9fc2l6ZSwKLQkJ CQkJcGl4ZWxfc2l6ZSwgbGF0ZW5jeS0+ZGlzcGxheV9zcik7CisJCQkJCWNwcCwgbGF0ZW5jeS0+ ZGlzcGxheV9zcik7CiAJCXJlZyA9IEk5MTVfUkVBRChEU1BGVzEpOwogCQlyZWcgJj0gfkRTUEZX X1NSX01BU0s7CiAJCXJlZyB8PSBGV19XTSh3bSwgU1IpOwpAQCAtNjU2LDcgKzY1NSw3IEBAIHN0 YXRpYyB2b2lkIHBpbmV2aWV3X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRj KQogCQkvKiBjdXJzb3IgU1IgKi8KIAkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZw aW5ldmlld19jdXJzb3Jfd20sCiAJCQkJCXBpbmV2aWV3X2Rpc3BsYXlfd20uZmlmb19zaXplLAot CQkJCQlwaXhlbF9zaXplLCBsYXRlbmN5LT5jdXJzb3Jfc3IpOworCQkJCQljcHAsIGxhdGVuY3kt PmN1cnNvcl9zcik7CiAJCXJlZyA9IEk5MTVfUkVBRChEU1BGVzMpOwogCQlyZWcgJj0gfkRTUEZX X0NVUlNPUl9TUl9NQVNLOwogCQlyZWcgfD0gRldfV00od20sIENVUlNPUl9TUik7CkBAIC02NjUs NyArNjY0LDcgQEAgc3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0 YyAqdW51c2VkX2NydGMpCiAJCS8qIERpc3BsYXkgSFBMTCBvZmYgU1IgKi8KIAkJd20gPSBpbnRl bF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5ldmlld19kaXNwbGF5X2hwbGxvZmZfd20sCiAJCQkJ CXBpbmV2aWV3X2Rpc3BsYXlfaHBsbG9mZl93bS5maWZvX3NpemUsCi0JCQkJCXBpeGVsX3NpemUs IGxhdGVuY3ktPmRpc3BsYXlfaHBsbF9kaXNhYmxlKTsKKwkJCQkJY3BwLCBsYXRlbmN5LT5kaXNw bGF5X2hwbGxfZGlzYWJsZSk7CiAJCXJlZyA9IEk5MTVfUkVBRChEU1BGVzMpOwogCQlyZWcgJj0g fkRTUEZXX0hQTExfU1JfTUFTSzsKIAkJcmVnIHw9IEZXX1dNKHdtLCBIUExMX1NSKTsKQEAgLTY3 NCw3ICs2NzMsNyBAQCBzdGF0aWMgdm9pZCBwaW5ldmlld191cGRhdGVfd20oc3RydWN0IGRybV9j cnRjICp1bnVzZWRfY3J0YykKIAkJLyogY3Vyc29yIEhQTEwgb2ZmIFNSICovCiAJCXdtID0gaW50 ZWxfY2FsY3VsYXRlX3dtKGNsb2NrLCAmcGluZXZpZXdfY3Vyc29yX2hwbGxvZmZfd20sCiAJCQkJ CXBpbmV2aWV3X2Rpc3BsYXlfaHBsbG9mZl93bS5maWZvX3NpemUsCi0JCQkJCXBpeGVsX3NpemUs IGxhdGVuY3ktPmN1cnNvcl9ocGxsX2Rpc2FibGUpOworCQkJCQljcHAsIGxhdGVuY3ktPmN1cnNv cl9ocGxsX2Rpc2FibGUpOwogCQlyZWcgPSBJOTE1X1JFQUQoRFNQRlczKTsKIAkJcmVnICY9IH5E U1BGV19IUExMX0NVUlNPUl9NQVNLOwogCQlyZWcgfD0gRldfV00od20sIEhQTExfQ1VSU09SKTsK QEAgLTY5OCw3ICs2OTcsNyBAQCBzdGF0aWMgYm9vbCBnNHhfY29tcHV0ZV93bTAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Ci0JaW50IGh0b3RhbCwgaGRpc3BsYXks IGNsb2NrLCBwaXhlbF9zaXplOworCWludCBodG90YWwsIGhkaXNwbGF5LCBjbG9jaywgY3BwOwog CWludCBsaW5lX3RpbWVfdXMsIGxpbmVfY291bnQ7CiAJaW50IGVudHJpZXMsIHRsYl9taXNzOwog CkBAIC03MTMsMTAgKzcxMiwxMCBAQCBzdGF0aWMgYm9vbCBnNHhfY29tcHV0ZV93bTAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAljbG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7CiAJ aHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7CiAJaGRpc3BsYXkgPSB0b19pbnRl bF9jcnRjKGNydGMpLT5jb25maWctPnBpcGVfc3JjX3c7Ci0JcGl4ZWxfc2l6ZSA9IGNydGMtPnBy aW1hcnktPnN0YXRlLT5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4OworCWNwcCA9IGRybV9mb3JtYXRf cGxhbmVfY3BwKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAog CS8qIFVzZSB0aGUgc21hbGwgYnVmZmVyIG1ldGhvZCB0byBjYWxjdWxhdGUgcGxhbmUgd2F0ZXJt YXJrICovCi0JZW50cmllcyA9ICgoY2xvY2sgKiBwaXhlbF9zaXplIC8gMTAwMCkgKiBkaXNwbGF5 X2xhdGVuY3lfbnMpIC8gMTAwMDsKKwllbnRyaWVzID0gKChjbG9jayAqIGNwcCAvIDEwMDApICog ZGlzcGxheV9sYXRlbmN5X25zKSAvIDEwMDA7CiAJdGxiX21pc3MgPSBkaXNwbGF5LT5maWZvX3Np emUqZGlzcGxheS0+Y2FjaGVsaW5lX3NpemUgLSBoZGlzcGxheSAqIDg7CiAJaWYgKHRsYl9taXNz ID4gMCkKIAkJZW50cmllcyArPSB0bGJfbWlzczsKQEAgLTcyOCw3ICs3MjcsNyBAQCBzdGF0aWMg Ym9vbCBnNHhfY29tcHV0ZV93bTAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkvKiBVc2UgdGhl IGxhcmdlIGJ1ZmZlciBtZXRob2QgdG8gY2FsY3VsYXRlIGN1cnNvciB3YXRlcm1hcmsgKi8KIAls aW5lX3RpbWVfdXMgPSBtYXgoaHRvdGFsICogMTAwMCAvIGNsb2NrLCAxKTsKIAlsaW5lX2NvdW50 ID0gKGN1cnNvcl9sYXRlbmN5X25zIC8gbGluZV90aW1lX3VzICsgMTAwMCkgLyAxMDAwOwotCWVu dHJpZXMgPSBsaW5lX2NvdW50ICogY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193ICogcGl4ZWxf c2l6ZTsKKwllbnRyaWVzID0gbGluZV9jb3VudCAqIGNydGMtPmN1cnNvci0+c3RhdGUtPmNydGNf dyAqIGNwcDsKIAl0bGJfbWlzcyA9IGN1cnNvci0+Zmlmb19zaXplKmN1cnNvci0+Y2FjaGVsaW5l X3NpemUgLSBoZGlzcGxheSAqIDg7CiAJaWYgKHRsYl9taXNzID4gMCkKIAkJZW50cmllcyArPSB0 bGJfbWlzczsKQEAgLTc4NCw3ICs3ODMsNyBAQCBzdGF0aWMgYm9vbCBnNHhfY29tcHV0ZV9zcndt KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlOwotCWludCBoZGlzcGxh eSwgaHRvdGFsLCBwaXhlbF9zaXplLCBjbG9jazsKKwlpbnQgaGRpc3BsYXksIGh0b3RhbCwgY3Bw LCBjbG9jazsKIAl1bnNpZ25lZCBsb25nIGxpbmVfdGltZV91czsKIAlpbnQgbGluZV9jb3VudCwg bGluZV9zaXplOwogCWludCBzbWFsbCwgbGFyZ2U7CkBAIC04MDAsMjEgKzc5OSwyMSBAQCBzdGF0 aWMgYm9vbCBnNHhfY29tcHV0ZV9zcndtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJY2xvY2sg PSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwogCWh0b3RhbCA9IGFkanVzdGVkX21vZGUtPmNy dGNfaHRvdGFsOwogCWhkaXNwbGF5ID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5waXBl X3NyY193OwotCXBpeGVsX3NpemUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVy X3BpeGVsIC8gODsKKwljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChjcnRjLT5wcmltYXJ5LT5z dGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAKIAlsaW5lX3RpbWVfdXMgPSBtYXgoaHRvdGFs ICogMTAwMCAvIGNsb2NrLCAxKTsKIAlsaW5lX2NvdW50ID0gKGxhdGVuY3lfbnMgLyBsaW5lX3Rp bWVfdXMgKyAxMDAwKSAvIDEwMDA7Ci0JbGluZV9zaXplID0gaGRpc3BsYXkgKiBwaXhlbF9zaXpl OworCWxpbmVfc2l6ZSA9IGhkaXNwbGF5ICogY3BwOwogCiAJLyogVXNlIHRoZSBtaW5pbXVtIG9m IHRoZSBzbWFsbCBhbmQgbGFyZ2UgYnVmZmVyIG1ldGhvZCBmb3IgcHJpbWFyeSAqLwotCXNtYWxs ID0gKChjbG9jayAqIHBpeGVsX3NpemUgLyAxMDAwKSAqIGxhdGVuY3lfbnMpIC8gMTAwMDsKKwlz bWFsbCA9ICgoY2xvY2sgKiBjcHAgLyAxMDAwKSAqIGxhdGVuY3lfbnMpIC8gMTAwMDsKIAlsYXJn ZSA9IGxpbmVfY291bnQgKiBsaW5lX3NpemU7CiAKIAllbnRyaWVzID0gRElWX1JPVU5EX1VQKG1p bihzbWFsbCwgbGFyZ2UpLCBkaXNwbGF5LT5jYWNoZWxpbmVfc2l6ZSk7CiAJKmRpc3BsYXlfd20g PSBlbnRyaWVzICsgZGlzcGxheS0+Z3VhcmRfc2l6ZTsKIAogCS8qIGNhbGN1bGF0ZSB0aGUgc2Vs Zi1yZWZyZXNoIHdhdGVybWFyayBmb3IgZGlzcGxheSBjdXJzb3IgKi8KLQllbnRyaWVzID0gbGlu ZV9jb3VudCAqIHBpeGVsX3NpemUgKiBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX3c7CisJZW50 cmllcyA9IGxpbmVfY291bnQgKiBjcHAgKiBjcnRjLT5jdXJzb3ItPnN0YXRlLT5jcnRjX3c7CiAJ ZW50cmllcyA9IERJVl9ST1VORF9VUChlbnRyaWVzLCBjdXJzb3ItPmNhY2hlbGluZV9zaXplKTsK IAkqY3Vyc29yX3dtID0gZW50cmllcyArIGN1cnNvci0+Z3VhcmRfc2l6ZTsKIApAQCAtOTA2LDEz ICs5MDUsMTMgQEAgZW51bSB2bHZfd21fbGV2ZWwgewogc3RhdGljIHVuc2lnbmVkIGludCB2bHZf d21fbWV0aG9kMih1bnNpZ25lZCBpbnQgcGl4ZWxfcmF0ZSwKIAkJCQkgICB1bnNpZ25lZCBpbnQg cGlwZV9odG90YWwsCiAJCQkJICAgdW5zaWduZWQgaW50IGhvcml6X3BpeGVscywKLQkJCQkgICB1 bnNpZ25lZCBpbnQgYnl0ZXNfcGVyX3BpeGVsLAorCQkJCSAgIHVuc2lnbmVkIGludCBjcHAsCiAJ CQkJICAgdW5zaWduZWQgaW50IGxhdGVuY3kpCiB7CiAJdW5zaWduZWQgaW50IHJldDsKIAogCXJl dCA9IChsYXRlbmN5ICogcGl4ZWxfcmF0ZSkgLyAocGlwZV9odG90YWwgKiAxMDAwMCk7Ci0JcmV0 ID0gKHJldCArIDEpICogaG9yaXpfcGl4ZWxzICogYnl0ZXNfcGVyX3BpeGVsOworCXJldCA9IChy ZXQgKyAxKSAqIGhvcml6X3BpeGVscyAqIGNwcDsKIAlyZXQgPSBESVZfUk9VTkRfVVAocmV0LCA2 NCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtOTQxLDcgKzk0MCw3IEBAIHN0YXRpYyB1aW50MTZfdCB2 bHZfY29tcHV0ZV93bV9sZXZlbChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQkJCSAgICAg aW50IGxldmVsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsKLQlpbnQgY2xvY2ssIGh0b3RhbCwgcGl4ZWxfc2l6ZSwgd2lk dGgsIHdtOworCWludCBjbG9jaywgaHRvdGFsLCBjcHAsIHdpZHRoLCB3bTsKIAogCWlmIChkZXZf cHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdID09IDApCiAJCXJldHVybiBVU0hSVF9NQVg7CkBA IC05NDksNyArOTQ4LDcgQEAgc3RhdGljIHVpbnQxNl90IHZsdl9jb21wdXRlX3dtX2xldmVsKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJaWYgKCFzdGF0ZS0+dmlzaWJsZSkKIAkJcmV0dXJu IDA7CiAKLQlwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoc3RhdGUtPmJhc2UuZmIt PnBpeGVsX2Zvcm1hdCwgMCk7CisJY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoc3RhdGUtPmJh c2UuZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAJY2xvY2sgPSBjcnRjLT5jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCWh0b3RhbCA9IGNydGMtPmNvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlLmNydGNfaHRvdGFsOwogCXdpZHRoID0gY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193 OwpAQCAtOTY1LDcgKzk2NCw3IEBAIHN0YXRpYyB1aW50MTZfdCB2bHZfY29tcHV0ZV93bV9sZXZl bChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQkgKi8KIAkJd20gPSA2MzsKIAl9IGVsc2Ug ewotCQl3bSA9IHZsdl93bV9tZXRob2QyKGNsb2NrLCBodG90YWwsIHdpZHRoLCBwaXhlbF9zaXpl LAorCQl3bSA9IHZsdl93bV9tZXRob2QyKGNsb2NrLCBodG90YWwsIHdpZHRoLCBjcHAsCiAJCQkJ ICAgIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVtsZXZlbF0gKiAxMCk7CiAJfQogCkBAIC0xNDM5 LDcgKzE0MzgsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMg KnVudXNlZF9jcnRjKQogCQlpbnQgY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwog CQlpbnQgaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7CiAJCWludCBoZGlzcGxh eSA9IHRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+cGlwZV9zcmNfdzsKLQkJaW50IHBpeGVs X3NpemUgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKKwkJ aW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+ cGl4ZWxfZm9ybWF0LCAwKTsKIAkJdW5zaWduZWQgbG9uZyBsaW5lX3RpbWVfdXM7CiAJCWludCBl bnRyaWVzOwogCkBAIC0xNDQ3LDcgKzE0NDYsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3VwZGF0ZV93 bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQogCiAJCS8qIFVzZSBucy91cyB0aGVuIGRp dmlkZSB0byBwcmVzZXJ2ZSBwcmVjaXNpb24gKi8KIAkJZW50cmllcyA9ICgoKHNyX2xhdGVuY3lf bnMgLyBsaW5lX3RpbWVfdXMpICsgMTAwMCkgLyAxMDAwKSAqCi0JCQlwaXhlbF9zaXplICogaGRp c3BsYXk7CisJCQljcHAgKiBoZGlzcGxheTsKIAkJZW50cmllcyA9IERJVl9ST1VORF9VUChlbnRy aWVzLCBJOTE1X0ZJRk9fTElORV9TSVpFKTsKIAkJc3J3bSA9IEk5NjVfRklGT19TSVpFIC0gZW50 cmllczsKIAkJaWYgKHNyd20gPCAwKQpAQCAtMTQ1Nyw3ICsxNDU2LDcgQEAgc3RhdGljIHZvaWQg aTk2NV91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKIAkJCSAgICAgIGVu dHJpZXMsIHNyd20pOwogCiAJCWVudHJpZXMgPSAoKChzcl9sYXRlbmN5X25zIC8gbGluZV90aW1l X3VzKSArIDEwMDApIC8gMTAwMCkgKgotCQkJcGl4ZWxfc2l6ZSAqIGNydGMtPmN1cnNvci0+c3Rh dGUtPmNydGNfdzsKKwkJCWNwcCAqIGNydGMtPmN1cnNvci0+c3RhdGUtPmNydGNfdzsKIAkJZW50 cmllcyA9IERJVl9ST1VORF9VUChlbnRyaWVzLAogCQkJCQkgIGk5NjVfY3Vyc29yX3dtX2luZm8u Y2FjaGVsaW5lX3NpemUpOwogCQljdXJzb3Jfc3IgPSBpOTY1X2N1cnNvcl93bV9pbmZvLmZpZm9f c2l6ZSAtCkBAIC0xNTE4LDcgKzE1MTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShz dHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQogCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3Jf cGxhbmUoZGV2LCAwKTsKIAlpZiAoaW50ZWxfY3J0Y19hY3RpdmUoY3J0YykpIHsKIAkJY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Ci0JCWludCBjcHAgPSBjcnRj LT5wcmltYXJ5LT5zdGF0ZS0+ZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKKwkJaW50IGNwcCA9IGRy bV9mb3JtYXRfcGxhbmVfY3BwKGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0 LCAwKTsKIAkJaWYgKElTX0dFTjIoZGV2KSkKIAkJCWNwcCA9IDQ7CiAKQEAgLTE1NDAsNyArMTUz OSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2Vk X2NydGMpCiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXYsIDEpOwogCWlmIChp bnRlbF9jcnRjX2FjdGl2ZShjcnRjKSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZTsKLQkJaW50IGNwcCA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5mYi0+ Yml0c19wZXJfcGl4ZWwgLyA4OworCQlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoY3J0 Yy0+cHJpbWFyeS0+c3RhdGUtPmZiLT5waXhlbF9mb3JtYXQsIDApOwogCQlpZiAoSVNfR0VOMihk ZXYpKQogCQkJY3BwID0gNDsKIApAQCAtMTU4Niw3ICsxNTg1LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKIAkJaW50IGNsb2NrID0g YWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKIAkJaW50IGh0b3RhbCA9IGFkanVzdGVkX21vZGUt PmNydGNfaHRvdGFsOwogCQlpbnQgaGRpc3BsYXkgPSB0b19pbnRlbF9jcnRjKGVuYWJsZWQpLT5j b25maWctPnBpcGVfc3JjX3c7Ci0JCWludCBwaXhlbF9zaXplID0gZW5hYmxlZC0+cHJpbWFyeS0+ c3RhdGUtPmZiLT5iaXRzX3Blcl9waXhlbCAvIDg7CisJCWludCBjcHAgPSBkcm1fZm9ybWF0X3Bs YW5lX2NwcChlbmFibGVkLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAJ CXVuc2lnbmVkIGxvbmcgbGluZV90aW1lX3VzOwogCQlpbnQgZW50cmllczsKIApAQCAtMTU5NCw3 ICsxNTkzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1 bnVzZWRfY3J0YykKIAogCQkvKiBVc2UgbnMvdXMgdGhlbiBkaXZpZGUgdG8gcHJlc2VydmUgcHJl Y2lzaW9uICovCiAJCWVudHJpZXMgPSAoKChzcl9sYXRlbmN5X25zIC8gbGluZV90aW1lX3VzKSAr IDEwMDApIC8gMTAwMCkgKgotCQkJcGl4ZWxfc2l6ZSAqIGhkaXNwbGF5OworCQkJY3BwICogaGRp c3BsYXk7CiAJCWVudHJpZXMgPSBESVZfUk9VTkRfVVAoZW50cmllcywgd21faW5mby0+Y2FjaGVs aW5lX3NpemUpOwogCQlEUk1fREVCVUdfS01TKCJzZWxmLXJlZnJlc2ggZW50cmllczogJWRcbiIs IGVudHJpZXMpOwogCQlzcndtID0gd21faW5mby0+Zmlmb19zaXplIC0gZW50cmllczsKQEAgLTE2 ODUsMTUgKzE2ODQsMTQgQEAgdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB9CiAKIC8qIGxhdGVuY3kgbXVzdCBi ZSBpbiAwLjF1cyB1bml0cy4gKi8KLXN0YXRpYyB1aW50MzJfdCBpbGtfd21fbWV0aG9kMSh1aW50 MzJfdCBwaXhlbF9yYXRlLCB1aW50OF90IGJ5dGVzX3Blcl9waXhlbCwKLQkJCSAgICAgICB1aW50 MzJfdCBsYXRlbmN5KQorc3RhdGljIHVpbnQzMl90IGlsa193bV9tZXRob2QxKHVpbnQzMl90IHBp eGVsX3JhdGUsIHVpbnQ4X3QgY3BwLCB1aW50MzJfdCBsYXRlbmN5KQogewogCXVpbnQ2NF90IHJl dDsKIAogCWlmIChXQVJOKGxhdGVuY3kgPT0gMCwgIkxhdGVuY3kgdmFsdWUgbWlzc2luZ1xuIikp CiAJCXJldHVybiBVSU5UX01BWDsKIAotCXJldCA9ICh1aW50NjRfdCkgcGl4ZWxfcmF0ZSAqIGJ5 dGVzX3Blcl9waXhlbCAqIGxhdGVuY3k7CisJcmV0ID0gKHVpbnQ2NF90KSBwaXhlbF9yYXRlICog Y3BwICogbGF0ZW5jeTsKIAlyZXQgPSBESVZfUk9VTkRfVVBfVUxMKHJldCwgNjQgKiAxMDAwMCkg KyAyOwogCiAJcmV0dXJuIHJldDsKQEAgLTE3MDEsNyArMTY5OSw3IEBAIHN0YXRpYyB1aW50MzJf dCBpbGtfd21fbWV0aG9kMSh1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50OF90IGJ5dGVzX3Blcl9w aXhlbCwKIAogLyogbGF0ZW5jeSBtdXN0IGJlIGluIDAuMXVzIHVuaXRzLiAqLwogc3RhdGljIHVp bnQzMl90IGlsa193bV9tZXRob2QyKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVf aHRvdGFsLAotCQkJICAgICAgIHVpbnQzMl90IGhvcml6X3BpeGVscywgdWludDhfdCBieXRlc19w ZXJfcGl4ZWwsCisJCQkgICAgICAgdWludDMyX3QgaG9yaXpfcGl4ZWxzLCB1aW50OF90IGNwcCwK IAkJCSAgICAgICB1aW50MzJfdCBsYXRlbmN5KQogewogCXVpbnQzMl90IHJldDsKQEAgLTE3MTIs MTMgKzE3MTAsMTMgQEAgc3RhdGljIHVpbnQzMl90IGlsa193bV9tZXRob2QyKHVpbnQzMl90IHBp eGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRvdGFsLAogCQlyZXR1cm4gVUlOVF9NQVg7CiAKIAly ZXQgPSAobGF0ZW5jeSAqIHBpeGVsX3JhdGUpIC8gKHBpcGVfaHRvdGFsICogMTAwMDApOwotCXJl dCA9IChyZXQgKyAxKSAqIGhvcml6X3BpeGVscyAqIGJ5dGVzX3Blcl9waXhlbDsKKwlyZXQgPSAo cmV0ICsgMSkgKiBob3Jpel9waXhlbHMgKiBjcHA7CiAJcmV0ID0gRElWX1JPVU5EX1VQKHJldCwg NjQpICsgMjsKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdWludDMyX3QgaWxrX3dtX2ZiYyh1 aW50MzJfdCBwcmlfdmFsLCB1aW50MzJfdCBob3Jpel9waXhlbHMsCi0JCQkgICB1aW50OF90IGJ5 dGVzX3Blcl9waXhlbCkKKwkJCSAgIHVpbnQ4X3QgY3BwKQogewogCS8qCiAJICogTmVpdGhlciBv ZiB0aGVzZSBzaG91bGQgYmUgcG9zc2libGUgc2luY2UgdGhpcyBmdW5jdGlvbiBzaG91bGRuJ3Qg YmUKQEAgLTE3MjYsMTIgKzE3MjQsMTIgQEAgc3RhdGljIHVpbnQzMl90IGlsa193bV9mYmModWlu dDMyX3QgcHJpX3ZhbCwgdWludDMyX3QgaG9yaXpfcGl4ZWxzLAogCSAqIGV4dHJhIHBhcmFub2lk IHRvIGF2b2lkIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGlmIHdlIHNjcmV3IHVwCiAJICog ZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIuCiAJICovCi0JaWYgKFdBUk5fT04oIWJ5dGVzX3Blcl9w aXhlbCkpCisJaWYgKFdBUk5fT04oIWNwcCkpCiAJCXJldHVybiAwOwogCWlmIChXQVJOX09OKCFo b3Jpel9waXhlbHMpKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiBESVZfUk9VTkRfVVAocHJpX3Zh bCAqIDY0LCBob3Jpel9waXhlbHMgKiBieXRlc19wZXJfcGl4ZWwpICsgMjsKKwlyZXR1cm4gRElW X1JPVU5EX1VQKHByaV92YWwgKiA2NCwgaG9yaXpfcGl4ZWxzICogY3BwKSArIDI7CiB9CiAKIHN0 cnVjdCBpbGtfd21fbWF4aW11bXMgewpAQCAtMTc1MCwxMyArMTc0OCwxNCBAQCBzdGF0aWMgdWlu dDMyX3QgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCiAJCQkJICAgdWludDMyX3QgbWVtX3ZhbHVlLAogCQkJCSAgIGJvb2wgaXNfbHApCiB7 Ci0JaW50IGJwcCA9IHBzdGF0ZS0+YmFzZS5mYiA/IHBzdGF0ZS0+YmFzZS5mYi0+Yml0c19wZXJf cGl4ZWwgLyA4IDogMDsKKwlpbnQgY3BwID0gcHN0YXRlLT5iYXNlLmZiID8KKwkJZHJtX2Zvcm1h dF9wbGFuZV9jcHAocHN0YXRlLT5iYXNlLmZiLT5waXhlbF9mb3JtYXQsIDApIDogMDsKIAl1aW50 MzJfdCBtZXRob2QxLCBtZXRob2QyOwogCiAJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8ICFw c3RhdGUtPnZpc2libGUpCiAJCXJldHVybiAwOwogCi0JbWV0aG9kMSA9IGlsa193bV9tZXRob2Qx KGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwgYnBwLCBtZW1fdmFsdWUpOworCW1ldGhvZDEg PSBpbGtfd21fbWV0aG9kMShpbGtfcGlwZV9waXhlbF9yYXRlKGNzdGF0ZSksIGNwcCwgbWVtX3Zh bHVlKTsKIAogCWlmICghaXNfbHApCiAJCXJldHVybiBtZXRob2QxOwpAQCAtMTc2NCw4ICsxNzYz LDcgQEAgc3RhdGljIHVpbnQzMl90IGlsa19jb21wdXRlX3ByaV93bShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9kMihpbGtfcGlw ZV9waXhlbF9yYXRlKGNzdGF0ZSksCiAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfaHRvdGFsLAogCQkJCSBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5kc3QpLAotCQkJCSBicHAs Ci0JCQkJIG1lbV92YWx1ZSk7CisJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKIAogCXJldHVybiBtaW4o bWV0aG9kMSwgbWV0aG9kMik7CiB9CkBAIC0xNzc4LDE4ICsxNzc2LDE4IEBAIHN0YXRpYyB1aW50 MzJfdCBpbGtfY29tcHV0ZV9zcHJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSwKIAkJ CQkgICB1aW50MzJfdCBtZW1fdmFsdWUpCiB7Ci0JaW50IGJwcCA9IHBzdGF0ZS0+YmFzZS5mYiA/ IHBzdGF0ZS0+YmFzZS5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4IDogMDsKKwlpbnQgY3BwID0gcHN0 YXRlLT5iYXNlLmZiID8KKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocHN0YXRlLT5iYXNlLmZiLT5w aXhlbF9mb3JtYXQsIDApIDogMDsKIAl1aW50MzJfdCBtZXRob2QxLCBtZXRob2QyOwogCiAJaWYg KCFjc3RhdGUtPmJhc2UuYWN0aXZlIHx8ICFwc3RhdGUtPnZpc2libGUpCiAJCXJldHVybiAwOwog Ci0JbWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGlsa19waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwg YnBwLCBtZW1fdmFsdWUpOworCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShpbGtfcGlwZV9waXhl bF9yYXRlKGNzdGF0ZSksIGNwcCwgbWVtX3ZhbHVlKTsKIAltZXRob2QyID0gaWxrX3dtX21ldGhv ZDIoaWxrX3BpcGVfcGl4ZWxfcmF0ZShjc3RhdGUpLAogCQkJCSBjc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCwKIAkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+ZHN0KSwK LQkJCQkgYnBwLAotCQkJCSBtZW1fdmFsdWUpOworCQkJCSBjcHAsIG1lbV92YWx1ZSk7CiAJcmV0 dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKIH0KIApAQCAtMTgwMSw3ICsxNzk5LDggQEAgc3Rh dGljIHVpbnQzMl90IGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0 YXRlLAogCQkJCSAgIHVpbnQzMl90IG1lbV92YWx1ZSkKIHsKLQlpbnQgYnBwID0gcHN0YXRlLT5i YXNlLmZiID8gcHN0YXRlLT5iYXNlLmZiLT5iaXRzX3Blcl9waXhlbCAvIDggOiAwOworCWludCBj cHAgPSBwc3RhdGUtPmJhc2UuZmIgPworCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChwc3RhdGUtPmJh c2UuZmItPnBpeGVsX2Zvcm1hdCwgMCkgOiAwOwogCiAJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZl IHx8ICFwc3RhdGUtPnZpc2libGUpCiAJCXJldHVybiAwOwpAQCAtMTgwOSw4ICsxODA4LDcgQEAg c3RhdGljIHVpbnQzMl90IGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlLAogCXJldHVybiBpbGtfd21fbWV0aG9kMihpbGtfcGlwZV9waXhlbF9y YXRlKGNzdGF0ZSksCiAJCQkgICAgICBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0 b3RhbCwKIAkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmRzdCksCi0JCQkgICAgICBi cHAsCi0JCQkgICAgICBtZW1fdmFsdWUpOworCQkJICAgICAgY3BwLCBtZW1fdmFsdWUpOwogfQog CiAvKiBPbmx5IGZvciBXTV9MUC4gKi8KQEAgLTE4MTgsMTIgKzE4MTYsMTMgQEAgc3RhdGljIHVp bnQzMl90IGlsa19jb21wdXRlX2ZiY193bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlLAog CQkJCSAgIHVpbnQzMl90IHByaV92YWwpCiB7Ci0JaW50IGJwcCA9IHBzdGF0ZS0+YmFzZS5mYiA/ IHBzdGF0ZS0+YmFzZS5mYi0+Yml0c19wZXJfcGl4ZWwgLyA4IDogMDsKKwlpbnQgY3BwID0gcHN0 YXRlLT5iYXNlLmZiID8KKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAocHN0YXRlLT5iYXNlLmZiLT5w aXhlbF9mb3JtYXQsIDApIDogMDsKIAogCWlmICghY3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCAhcHN0 YXRlLT52aXNpYmxlKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiBpbGtfd21fZmJjKHByaV92YWws IGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmRzdCksIGJwcCk7CisJcmV0dXJuIGlsa193bV9mYmMo cHJpX3ZhbCwgZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+ZHN0KSwgY3BwKTsKIH0KIAogc3RhdGlj IHVuc2lnbmVkIGludCBpbGtfZGlzcGxheV9maWZvX3NpemUoY29uc3Qgc3RydWN0IGRybV9kZXZp Y2UgKmRldikKQEAgLTMwNDIsMjYgKzMwNDEsMjUgQEAgc3RhdGljIHVpbnQzMl90IHNrbF9waXBl X3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNvbmZpZykKIAogLyoK ICAqIFRoZSBtYXggbGF0ZW5jeSBzaG91bGQgYmUgMjU3IChtYXggdGhlIHB1bml0IGNhbiBjb2Rl IGlzIDI1NSBhbmQgd2UgYWRkIDJ1cwotICogZm9yIHRoZSByZWFkIGxhdGVuY3kpIGFuZCBieXRl c19wZXJfcGl4ZWwgc2hvdWxkIGFsd2F5cyBiZSA8PSA4LCBzbyB0aGF0CisgKiBmb3IgdGhlIHJl YWQgbGF0ZW5jeSkgYW5kIGNwcCBzaG91bGQgYWx3YXlzIGJlIDw9IDgsIHNvIHRoYXQKICAqIHNo b3VsZCBhbGxvdyBwaXhlbF9yYXRlIHVwIHRvIH4yIEdIeiB3aGljaCBzZWVtcyBzdWZmaWNpZW50 IHNpbmNlIG1heAogICogMnhjZGNsayBpcyAxMzUwIE1IeiBhbmQgdGhlIHBpeGVsIHJhdGUgc2hv dWxkIG5ldmVyIGV4Y2VlZCB0aGF0LgogKi8KLXN0YXRpYyB1aW50MzJfdCBza2xfd21fbWV0aG9k MSh1aW50MzJfdCBwaXhlbF9yYXRlLCB1aW50OF90IGJ5dGVzX3Blcl9waXhlbCwKLQkJCSAgICAg ICB1aW50MzJfdCBsYXRlbmN5KQorc3RhdGljIHVpbnQzMl90IHNrbF93bV9tZXRob2QxKHVpbnQz Ml90IHBpeGVsX3JhdGUsIHVpbnQ4X3QgY3BwLCB1aW50MzJfdCBsYXRlbmN5KQogewogCXVpbnQz Ml90IHdtX2ludGVybWVkaWF0ZV92YWwsIHJldDsKIAogCWlmIChsYXRlbmN5ID09IDApCiAJCXJl dHVybiBVSU5UX01BWDsKIAotCXdtX2ludGVybWVkaWF0ZV92YWwgPSBsYXRlbmN5ICogcGl4ZWxf cmF0ZSAqIGJ5dGVzX3Blcl9waXhlbCAvIDUxMjsKKwl3bV9pbnRlcm1lZGlhdGVfdmFsID0gbGF0 ZW5jeSAqIHBpeGVsX3JhdGUgKiBjcHAgLyA1MTI7CiAJcmV0ID0gRElWX1JPVU5EX1VQKHdtX2lu dGVybWVkaWF0ZV92YWwsIDEwMDApOwogCiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHVpbnQz Ml90IHNrbF93bV9tZXRob2QyKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRv dGFsLAotCQkJICAgICAgIHVpbnQzMl90IGhvcml6X3BpeGVscywgdWludDhfdCBieXRlc19wZXJf cGl4ZWwsCisJCQkgICAgICAgdWludDMyX3QgaG9yaXpfcGl4ZWxzLCB1aW50OF90IGNwcCwKIAkJ CSAgICAgICB1aW50NjRfdCB0aWxpbmcsIHVpbnQzMl90IGxhdGVuY3kpCiB7CiAJdWludDMyX3Qg cmV0OwpAQCAtMzA3MSw3ICszMDY5LDcgQEAgc3RhdGljIHVpbnQzMl90IHNrbF93bV9tZXRob2Qy KHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRvdGFsLAogCWlmIChsYXRlbmN5 ID09IDApCiAJCXJldHVybiBVSU5UX01BWDsKIAotCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gaG9y aXpfcGl4ZWxzICogYnl0ZXNfcGVyX3BpeGVsOworCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gaG9y aXpfcGl4ZWxzICogY3BwOwogCiAJaWYgKHRpbGluZyA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxF RCB8fAogCSAgICB0aWxpbmcgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7CkBAIC0zMTIx LDIzICszMTE5LDIxIEBAIHN0YXRpYyBib29sIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1aW50MzJfdCBwbGFuZV9ieXRlc19w ZXJfbGluZSwgcGxhbmVfYmxvY2tzX3Blcl9saW5lOwogCXVpbnQzMl90IHJlc19ibG9ja3MsIHJl c19saW5lczsKIAl1aW50MzJfdCBzZWxlY3RlZF9yZXN1bHQ7Ci0JdWludDhfdCBieXRlc19wZXJf cGl4ZWw7CisJdWludDhfdCBjcHA7CiAKIAlpZiAobGF0ZW5jeSA9PSAwIHx8ICFjc3RhdGUtPmJh c2UuYWN0aXZlIHx8ICFmYikKIAkJcmV0dXJuIGZhbHNlOwogCi0JYnl0ZXNfcGVyX3BpeGVsID0g ZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJY3BwID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAJbWV0aG9kMSA9IHNrbF93bV9t ZXRob2QxKHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwKLQkJCQkgYnl0ZXNfcGVyX3BpeGVs LAotCQkJCSBsYXRlbmN5KTsKKwkJCQkgY3BwLCBsYXRlbmN5KTsKIAltZXRob2QyID0gc2tsX3dt X21ldGhvZDIoc2tsX3BpcGVfcGl4ZWxfcmF0ZShjc3RhdGUpLAogCQkJCSBjc3RhdGUtPmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKIAkJCQkgY3N0YXRlLT5waXBlX3NyY193LAotCQkJ CSBieXRlc19wZXJfcGl4ZWwsCi0JCQkJIGZiLT5tb2RpZmllclswXSwKKwkJCQkgY3BwLCBmYi0+ bW9kaWZpZXJbMF0sCiAJCQkJIGxhdGVuY3kpOwogCi0JcGxhbmVfYnl0ZXNfcGVyX2xpbmUgPSBj c3RhdGUtPnBpcGVfc3JjX3cgKiBieXRlc19wZXJfcGl4ZWw7CisJcGxhbmVfYnl0ZXNfcGVyX2xp bmUgPSBjc3RhdGUtPnBpcGVfc3JjX3cgKiBjcHA7CiAJcGxhbmVfYmxvY2tzX3Blcl9saW5lID0g RElWX1JPVU5EX1VQKHBsYW5lX2J5dGVzX3Blcl9saW5lLCA1MTIpOwogCiAJaWYgKGZiLT5tb2Rp ZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fApAQCAtMzE0NSwxMSArMzE0MSwx MSBAQCBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXVpbnQzMl90IG1pbl9zY2FubGluZXMgPSA0OwogCQl1 aW50MzJfdCB5X3RpbGVfbWluaW11bTsKIAkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChw bGFuZS0+c3RhdGUtPnJvdGF0aW9uKSkgewotCQkJaW50IGJwcCA9IChmYi0+cGl4ZWxfZm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikgPworCQkJaW50IGNwcCA9IChmYi0+cGl4ZWxfZm9ybWF0ID09 IERSTV9GT1JNQVRfTlYxMikgPwogCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9m b3JtYXQsIDEpIDoKIAkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAw KTsKIAotCQkJc3dpdGNoIChicHApIHsKKwkJCXN3aXRjaCAoY3BwKSB7CiAJCQljYXNlIDE6CiAJ CQkJbWluX3NjYW5saW5lcyA9IDE2OwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYwppbmRleCBmMWVlN2RiMDgxMWEuLmEyNTgyYzQ1NWIzNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTM1MSw3ICszNTEsNyBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwKIAlpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxhbmU7 CiAJdTMyIHNwcmN0bDsKIAl1MzIgc3Byc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7Ci0JaW50 IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsK KwlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAJ Y29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0 ZS0+Y2tleTsKIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKIAlpbnQgY3J0Y195 ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKQEAgLTQyMiwxMCArNDIyLDkgQEAgdmx2X3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsCiAJY3J0Y193LS07CiAJY3J0Y19oLS07CiAK LQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7CisJ bGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBjcHA7CiAJc3Byc3VyZl9v ZmZzZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnksCi0JCQkJ CQkgICBmYi0+bW9kaWZpZXJbMF0sCi0JCQkJCQkgICBwaXhlbF9zaXplLAorCQkJCQkJICAgZmIt Pm1vZGlmaWVyWzBdLCBjcHAsCiAJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29m ZnNldCAtPSBzcHJzdXJmX29mZnNldDsKIApAQCAtNDM0LDcgKzQzMyw3IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAogCiAJCXggKz0gc3JjX3c7CiAJCXkgKz0g c3JjX2g7Ci0JCWxpbmVhcl9vZmZzZXQgKz0gc3JjX2ggKiBmYi0+cGl0Y2hlc1swXSArIHNyY193 ICogcGl4ZWxfc2l6ZTsKKwkJbGluZWFyX29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBd ICsgc3JjX3cgKiBjcHA7CiAJfQogCiAJaWYgKGtleS0+ZmxhZ3MpIHsKQEAgLTQ5NCw3ICs0OTMs NyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CiAJdTMyIHNwcmN0bCwgc3Byc2NhbGUgPSAwOwog CXUzMiBzcHJzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKLQlpbnQgcGl4ZWxfc2l6ZSA9IGRy bV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOworCWludCBjcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAljb25zdCBzdHJ1Y3QgZHJt X2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5OwogCWludCBj cnRjX3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwogCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+ ZHN0LnkxOwpAQCAtNTU2LDEwICs1NTUsOSBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCWlmIChjcnRjX3cgIT0gc3JjX3cgfHwgY3J0Y19oICE9IHNyY19oKQog CQlzcHJzY2FsZSA9IFNQUklURV9TQ0FMRV9FTkFCTEUgfCAoc3JjX3cgPDwgMTYpIHwgc3JjX2g7 CiAKLQlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIHBpeGVsX3NpemU7 CisJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBjcHA7CiAJc3Byc3Vy Zl9vZmZzZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnksCi0J CQkJCQkgICBmYi0+bW9kaWZpZXJbMF0sCi0JCQkJCQkgICBwaXhlbF9zaXplLAorCQkJCQkJICAg ZmItPm1vZGlmaWVyWzBdLCBjcHAsCiAJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7CiAJbGluZWFy X29mZnNldCAtPSBzcHJzdXJmX29mZnNldDsKIApAQCAtNTcwLDggKzU2OCw3IEBAIGl2Yl91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCWlmICghSVNfSEFTV0VMTChkZXYp ICYmICFJU19CUk9BRFdFTEwoZGV2KSkgewogCQkJeCArPSBzcmNfdzsKIAkJCXkgKz0gc3JjX2g7 Ci0JCQlsaW5lYXJfb2Zmc2V0ICs9IHNyY19oICogZmItPnBpdGNoZXNbMF0gKwotCQkJCXNyY193 ICogcGl4ZWxfc2l6ZTsKKwkJCWxpbmVhcl9vZmZzZXQgKz0gc3JjX2ggKiBmYi0+cGl0Y2hlc1sw XSArIHNyY193ICogY3BwOwogCQl9CiAJfQogCkBAIC02MzcsNyArNjM0LDcgQEAgaWxrX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpbnQgcGlwZSA9IGludGVsX3BsYW5l LT5waXBlOwogCXUzMiBkdnNjbnRyLCBkdnNzY2FsZTsKIAl1MzIgZHZzc3VyZl9vZmZzZXQsIGxp bmVhcl9vZmZzZXQ7Ci0JaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+ cGl4ZWxfZm9ybWF0LCAwKTsKKwlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBp eGVsX2Zvcm1hdCwgMCk7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmRz dC54MTsKIAlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKQEAgLTY5NSwxMCArNjky LDkgQEAgaWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpZiAoY3J0 Y193ICE9IHNyY193IHx8IGNydGNfaCAhPSBzcmNfaCkKIAkJZHZzc2NhbGUgPSBEVlNfU0NBTEVf RU5BQkxFIHwgKHNyY193IDw8IDE2KSB8IHNyY19oOwogCi0JbGluZWFyX29mZnNldCA9IHkgKiBm Yi0+cGl0Y2hlc1swXSArIHggKiBwaXhlbF9zaXplOworCWxpbmVhcl9vZmZzZXQgPSB5ICogZmIt PnBpdGNoZXNbMF0gKyB4ICogY3BwOwogCWR2c3N1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90 aWxlX29mZnNldChkZXZfcHJpdiwgJngsICZ5LAotCQkJCQkJICAgZmItPm1vZGlmaWVyWzBdLAot CQkJCQkJICAgcGl4ZWxfc2l6ZSwKKwkJCQkJCSAgIGZiLT5tb2RpZmllclswXSwgY3BwLAogCQkJ CQkJICAgZmItPnBpdGNoZXNbMF0pOwogCWxpbmVhcl9vZmZzZXQgLT0gZHZzc3VyZl9vZmZzZXQ7 CiAKQEAgLTcwNyw3ICs3MDMsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCiAJCXggKz0gc3JjX3c7CiAJCXkgKz0gc3JjX2g7Ci0JCWxpbmVhcl9vZmZzZXQg Kz0gc3JjX2ggKiBmYi0+cGl0Y2hlc1swXSArIHNyY193ICogcGl4ZWxfc2l6ZTsKKwkJbGluZWFy X29mZnNldCArPSBzcmNfaCAqIGZiLT5waXRjaGVzWzBdICsgc3JjX3cgKiBjcHA7CiAJfQogCiAJ aWYgKGtleS0+ZmxhZ3MpIHsKQEAgLTc3Miw3ICs3NjgsNiBAQCBpbnRlbF9jaGVja19zcHJpdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJaW50IGhzY2FsZSwgdnNjYWxlOwogCWlu dCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsKIAlib29sIGNhbl9zY2FsZTsKLQlpbnQgcGl4ZWxfc2l6 ZTsKIAogCWlmICghZmIpIHsKIAkJc3RhdGUtPnZpc2libGUgPSBmYWxzZTsKQEAgLTg5NCw2ICs4 ODksNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJLyogQ2hlY2sgc2l6ZSByZXN0cmljdGlvbnMgd2hlbiBzY2FsaW5nICovCiAJaWYgKHN0YXRl LT52aXNpYmxlICYmIChzcmNfdyAhPSBjcnRjX3cgfHwgc3JjX2ggIT0gY3J0Y19oKSkgewogCQl1 bnNpZ25lZCBpbnQgd2lkdGhfYnl0ZXM7CisJCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAogCQlXQVJOX09OKCFjYW5fc2NhbGUpOwogCkBAIC05 MDUsOSArOTAxLDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCQlpZiAoc3JjX3cgPCAzIHx8IHNyY19oIDwgMykKIAkJCXN0YXRlLT52aXNpYmxl ID0gZmFsc2U7CiAKLQkJcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhl bF9mb3JtYXQsIDApOwotCQl3aWR0aF9ieXRlcyA9ICgoc3JjX3ggKiBwaXhlbF9zaXplKSAmIDYz KSArCi0JCQkJCXNyY193ICogcGl4ZWxfc2l6ZTsKKwkJd2lkdGhfYnl0ZXMgPSAoKHNyY194ICog Y3BwKSAmIDYzKSArIHNyY193ICogY3BwOwogCiAJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDkgJiYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKIAkJICAgIHdpZHRoX2J5dGVz ID4gNDA5NiB8fCBmYi0+cGl0Y2hlc1swXSA+IDQwOTYpKSB7Ci0tIAoyLjQuMTAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==