From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 11/24] drm/i915: Preparation for plane split Date: Fri, 4 Oct 2019 13:35:01 +0200 Message-ID: <20191004113514.17064-12-maarten.lankhorst@linux.intel.com> References: <20191004113514.17064-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9E7A56EB35 for ; Fri, 4 Oct 2019 11:35:22 +0000 (UTC) In-Reply-To: <20191004113514.17064-1-maarten.lankhorst@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 V2Ugc3BsaXQgcGxhbmVfc3RhdGUgaW50byBodyBhbmQgdWFwaSwgdGhpcyB3aWxsIGFsbG93IHVz IHRvCm1ha2UgYmlnam9pbmVyIHdvcmsgd2l0aG91dCByZXdyaXRpbmcgdGhlIGVudGlyZSBhdG9t aWNfY2hlY2sgYW5kCnBsYW5lIHByb2dyYW1taW5nIHRvIGJlIGJpZ2pvaWVuciBhd2FyZS4KClRo aXMgcmVzdWx0cyBpbiBhIGNsZWFuZXIgYmlnam9pbmVyIGltcGxlbWVudGF0aW9uIHRoYW4gaWYg d2UgdXNlCmEgc2VwYXJhdGUgcGxhbmVfc3RhdGUuCgpUaGUgb25seSBleGNlcHRpb24gaXMgaW50 ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUsIGJ1dCB0aGF0IHVzZXMKdGhlIGRybV9wbGFuZV9zdGF0 ZSBkaXJlY3RseSwgY29ycmVjdGx5LgoKc3BhdGNoIGFuZCBndWlkZWxpbmVzIGJlbG93LCBrZWVw IGluIG1pbmQgZ2V0X2NydGNfZnJvbV9zdGF0ZXMoKQpuZWVkcyBhY2Nlc3MgdG8gdWFwaSwgYmVj YXVzZSBwbGFuZV9zdGF0ZSBpcyBub3QgY29waWVkIHlldC4KCnN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgewoJLy8gZGVyaXZlZCBzdGF0ZSBhbmQgZml4ZWQgc3RhdGUsIHNhZmUgdG8gdXNlIGludGVs X3BsYW5lX3N0YXRlLT51YXBpOgoJc3RydWN0IGRybV9yZWN0IHNyYywgZHN0OwoJYm9vbCB2aXNp YmxlOwoKCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwoJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAq Y29tbWl0OwoJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwoJc3RydWN0IGRtYV9mZW5j ZSBmZW5jZTsKCgkvLyBIVyBwcm9wZXJ0aWVzLCBtdXN0IHVzZSBpbnRlbF9wbGFuZV9zdGF0ZS0+ aHcKCglzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CglzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsK Cgl1MTYgYWxwaGE7Cgl1aW50MTZfdCBwaXhlbF9ibGVuZF9tb2RlOwoJdW5zaWduZWQgaW50IHJv dGF0aW9uOwoJZW51bSBkcm1fY29sb3JfZW5jb2RpbmcgY29sb3JfZW5jb2Rpbmc7CgllbnVtIGRy bV9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZTsKfTsKCkBACnN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqVDsKQEAKLVQtPmJhc2Uuc3JjCitULT51YXBpLnNyYwoKQEAKc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpUOwpAQAotVC0+YmFzZS5kc3QKK1QtPnVhcGkuZHN0CgpAQApzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKlQ7CkBACi1ULT5iYXNlLnZpc2libGUKK1QtPnVhcGkudmlzaWJsZQoKQEAK c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpUOwpAQAotVC0+YmFzZS5wbGFuZQorVC0+dWFwaS5w bGFuZQoKQEAKc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpUOwpAQAotVC0+YmFzZS5jb21taXQK K1QtPnVhcGkuY29tbWl0CgpAQApzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7CkBACi1ULT5i YXNlLnN0YXRlCitULT51YXBpLnN0YXRlCgpAQApzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7 CkBACi1ULT5iYXNlLmZlbmNlCitULT51YXBpLmZlbmNlCgovLyBIVyBtZW1iZXJzLCBwcm9wZXJ0 aWVzCgpAQApzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7CkBACi1ULT5iYXNlLmNydGMKK1Qt Pmh3LmNydGMKCkBACnN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqVDsKQEAKLVQtPmJhc2UuZmIK K1QtPmh3LmZiCgpAQApzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7CkBACi1ULT5iYXNlLmFs cGhhCitULT5ody5hbHBoYQoKQEAKc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpUOwpAQAotVC0+ YmFzZS5waXhlbF9ibGVuZF9tb2RlCitULT5ody5waXhlbF9ibGVuZF9tb2RlCgpAQApzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKlQ7CkBACi1ULT5iYXNlLnJvdGF0aW9uCitULT5ody5yb3RhdGlv bgoKQEAKc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpUOwpAQAotVC0+YmFzZS5jb2xvcl9lbmNv ZGluZworVC0+aHcuY29sb3JfZW5jb2RpbmcKCkBACnN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq VDsKQEAKLVQtPmJhc2UuY29sb3JfcmFuZ2UKK1QtPmh3LmNvbG9yX3JhbmdlCgpTaWduZWQtb2Zm LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAg OCArLQogLi4uL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jIHwgIDUy ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMzc4 ICsrKysrKysrKy0tLS0tLS0tLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Zi Yy5jICAgICAgfCAgMjAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3Zl cmxheS5jICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJp dGUuYyAgIHwgMTkwICsrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAg ICAgICAgICAgICAgIHwgIDkzICsrLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25z KCspLCAzNzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMKaW5kZXggMjY2ZDBjZTlkMDNkLi40NzgzZDdmZjRmY2YgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwpAQCAtMjk2LDEwICsyOTYsMTAg QEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0 Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGEKIAkJcmV0dXJuOwogCiAJLyogc2V0IHNjYWxlciBt b2RlICovCi0JaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLmZiICYmCi0JICAg IHBsYW5lX3N0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmlzX3l1diAmJgotCSAgICBwbGFuZV9zdGF0 ZS0+YmFzZS5mYi0+Zm9ybWF0LT5udW1fcGxhbmVzID4gMSkgewotCQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCWlm IChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+aHcuZmIgJiYKKwkgICAgcGxhbmVfc3RhdGUt Pmh3LmZiLT5mb3JtYXQtPmlzX3l1diAmJgorCSAgICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1h dC0+bnVtX3BsYW5lcyA+IDEpIHsKKwkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAkJaWYgKElTX0dFTihkZXZfcHJp diwgOSkgJiYKIAkJICAgICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewogCQkJbW9kZSA9IFNL TF9QU19TQ0FMRVJfTU9ERV9OVjEyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKaW5kZXggY2E4MjE2N2Q0Y2UzLi4wMTkzNzg5NmQ2OWMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3Bs YW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxh bmUuYwpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lX2Fs bG9jKHZvaWQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KIAotCV9fZHJtX2F0b21p Y19oZWxwZXJfcGxhbmVfcmVzZXQoJnBsYW5lLT5iYXNlLCAmcGxhbmVfc3RhdGUtPmJhc2UpOwor CV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQoJnBsYW5lLT5iYXNlLCAmcGxhbmVfc3Rh dGUtPnVhcGkpOwogCXBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPSAtMTsKIAogCXJldHVybiBwbGFu ZTsKQEAgLTgwLDIyICs4MCwyMCBAQCB2b2lkIGludGVsX3BsYW5lX2ZyZWUoc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSkKIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKgogaW50ZWxfcGxhbmVfZHVw bGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogewotCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnN0YXRlOwogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3RhdGU7 CiAKLQlpbnRlbF9zdGF0ZSA9IGttZW1kdXAocGxhbmUtPnN0YXRlLCBzaXplb2YoKmludGVsX3N0 YXRlKSwgR0ZQX0tFUk5FTCk7CisJaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShw bGFuZS0+c3RhdGUpOworCWludGVsX3N0YXRlID0ga21lbWR1cChpbnRlbF9zdGF0ZSwgc2l6ZW9m KCppbnRlbF9zdGF0ZSksIEdGUF9LRVJORUwpOwogCiAJaWYgKCFpbnRlbF9zdGF0ZSkKIAkJcmV0 dXJuIE5VTEw7CiAKLQlzdGF0ZSA9ICZpbnRlbF9zdGF0ZS0+YmFzZTsKLQotCV9fZHJtX2F0b21p Y19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lLCBzdGF0ZSk7CisJX19kcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+dWFw aSk7CiAKIAlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsKIAlpbnRlbF9zdGF0ZS0+ZmxhZ3MgPSAw OwogCi0JcmV0dXJuIHN0YXRlOworCXJldHVybiAmaW50ZWxfc3RhdGUtPnVhcGk7CiB9CiAKIC8q KgpAQCAtMTEwLDE4ICsxMDgsMjAgQEAgdm9pZAogaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpCiB7Ci0JV0FSTl9PTih0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSktPnZtYSk7CisJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRl KHN0YXRlKTsKKwlXQVJOX09OKHBsYW5lX3N0YXRlLT52bWEpOwogCi0JZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOworCV9fZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkpOworCWtmcmVlKHBsYW5l X3N0YXRlKTsKIH0KIAogdW5zaWduZWQgaW50IGludGVsX3BsYW5lX2RhdGFfcmF0ZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CisJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IGNwcDsK IAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwpA QCAtMTQzLDE3ICsxNDMsMTcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0 YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KIAkJCQkJY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsCiAJCQkJCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShuZXdfcGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwot CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5iYXNl LmZiOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShuZXdfcGxh bmVfc3RhdGUtPnVhcGkucGxhbmUpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gbmV3X3BsYW5lX3N0YXRlLT5ody5mYjsKIAlpbnQgcmV0OwogCiAJbmV3X2NydGNfc3RhdGUt PmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOwogCW5ld19jcnRjX3N0YXRlLT5udjEy X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyAm PSB+QklUKHBsYW5lLT5pZCk7CiAJbmV3X2NydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRd ID0gMDsKLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOworCW5ld19wbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7CiAKLQlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+ YmFzZS5jcnRjICYmICFvbGRfcGxhbmVfc3RhdGUtPmJhc2UuY3J0YykKKwlpZiAoIW5ld19wbGFu ZV9zdGF0ZS0+aHcuY3J0YyAmJiAhb2xkX3BsYW5lX3N0YXRlLT5ody5jcnRjKQogCQlyZXR1cm4g MDsKIAogCXJldCA9IHBsYW5lLT5jaGVja19wbGFuZShuZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5l X3N0YXRlKTsKQEAgLTE2MSwxOCArMTYxLDE4IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCiAJ CXJldHVybiByZXQ7CiAKIAkvKiBGSVhNRSBwcmUtZzR4IGRvbid0IHdvcmsgbGlrZSB0aGlzICov Ci0JaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmIChuZXdfcGxhbmVfc3Rh dGUtPnVhcGkudmlzaWJsZSkKIAkJbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgfD0gQklU KHBsYW5lLT5pZCk7CiAKLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgJiYKKwlp ZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYKIAkgICAgZHJtX2Zvcm1hdF9pbmZv X2lzX3l1dl9zZW1pcGxhbmFyKGZiLT5mb3JtYXQpKQogCQluZXdfY3J0Y19zdGF0ZS0+bnYxMl9w bGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7CiAKLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUgJiYKKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYKIAkgICAgZmIt PmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfQzgpCiAJCW5ld19jcnRjX3N0YXRlLT5jOF9w bGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7CiAKLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUgfHwgb2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKG5ld19wbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlIHx8IG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlu ZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKIAogCW5ld19j cnRjX3N0YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9CkBAIC0xODYsMTEgKzE4NiwxMSBAQCBz dGF0aWMgc3RydWN0IGludGVsX2NydGMgKgogZ2V0X2NydGNfZnJvbV9zdGF0ZXMoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsCiAJCSAgICAgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUpCiB7Ci0JaWYgKG5ld19wbGFu ZV9zdGF0ZS0+YmFzZS5jcnRjKQotCQlyZXR1cm4gdG9faW50ZWxfY3J0YyhuZXdfcGxhbmVfc3Rh dGUtPmJhc2UuY3J0Yyk7CisJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjKQorCQlyZXR1 cm4gdG9faW50ZWxfY3J0YyhuZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Yyk7CiAKLQlpZiAob2xk X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMpCi0JCXJldHVybiB0b19pbnRlbF9jcnRjKG9sZF9wbGFu ZV9zdGF0ZS0+YmFzZS5jcnRjKTsKKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLmNydGMpCisJ CXJldHVybiB0b19pbnRlbF9jcnRjKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjKTsKIAogCXJl dHVybiBOVUxMOwogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVf YXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlOwogCi0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxz ZTsKKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IGZhbHNlOwogCWlmICghY3J0YykK IAkJcmV0dXJuIDA7CiAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIHNrbF91cGRhdGVfcGxhbmVz X29uX2NydGMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KIAkJCWludGVsX2F0b21pY19nZXRfbmV3 X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7CiAKLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlKSB7CisJCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewogCQkJ aW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBuZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRl KTsKIAkJfSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSkgewogCQkJc3Ry dWN0IGludGVsX3BsYW5lICptYXN0ZXIgPQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgaTl4eF91 cGRhdGVfcGxhbmVzX29uX2NydGMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJ CSAgICAhKHVwZGF0ZV9tYXNrICYgQklUKHBsYW5lLT5pZCkpKQogCQkJY29udGludWU7CiAKLQkJ aWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAobmV3X3BsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpCiAJCQlpbnRlbF91cGRhdGVfcGxhbmUocGxhbmUsIG5ld19jcnRjX3N0 YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwogCQllbHNlCiAJCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBs YW5lLCBuZXdfY3J0Y19zdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jCmluZGV4IGMyZGViYjQwMjg0NC4uMGVlNTQyODQwYzcwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjA1Niw3ICsyMDU2 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdubWVudChjb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAogc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVfdXNlc19m ZW5jZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAKIAlyZXR1cm4gSU5URUxfR0VOKGRldl9w cml2KSA8IDQgfHwKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHUzMiBpbnRlbF9mYl94eV90b19saW5l YXIoaW50IHgsIGludCB5LAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0 YXRlLAogCQkJICBpbnQgY29sb3JfcGxhbmUpCiB7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHN0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3Bw W2NvbG9yX3BsYW5lXTsKIAl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBzdGF0ZS0+Y29sb3JfcGxhbmVb Y29sb3JfcGxhbmVdLnN0cmlkZTsKIApAQCAtMjI5Myw4ICsyMjkzLDggQEAgc3RhdGljIHUzMiBp bnRlbF9wbGFuZV9hZGp1c3RfYWxpZ25lZF9vZmZzZXQoaW50ICp4LCBpbnQgKnksCiAJCQkJCSAg ICAgaW50IGNvbG9yX3BsYW5lLAogCQkJCQkgICAgIHUzMiBvbGRfb2Zmc2V0LCB1MzIgbmV3X29m ZnNldCkKIHsKLQlyZXR1cm4gaW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KHgsIHksIHN0YXRl LT5iYXNlLmZiLCBjb2xvcl9wbGFuZSwKLQkJCQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24sCisJ cmV0dXJuIGludGVsX2FkanVzdF9hbGlnbmVkX29mZnNldCh4LCB5LCBzdGF0ZS0+aHcuZmIsIGNv bG9yX3BsYW5lLAorCQkJCQkgICBzdGF0ZS0+aHcucm90YXRpb24sCiAJCQkJCSAgIHN0YXRlLT5j b2xvcl9wbGFuZVtjb2xvcl9wbGFuZV0uc3RyaWRlLAogCQkJCQkgICBvbGRfb2Zmc2V0LCBuZXdf b2Zmc2V0KTsKIH0KQEAgLTIzNjgsMTAgKzIzNjgsMTAgQEAgc3RhdGljIHUzMiBpbnRlbF9wbGFu ZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQkJCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlLAogCQkJCQkgICAgICBpbnQgY29sb3Jf cGxhbmUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHN0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUoc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJhc2UuZGV2KTsKLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwotCXVuc2lnbmVk IGludCByb3RhdGlvbiA9IHN0YXRlLT5iYXNlLnJvdGF0aW9uOworCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHN0YXRlLT5ody5yb3RhdGlvbjsKIAlpbnQgcGl0Y2ggPSBzdGF0ZS0+Y29sb3JfcGxhbmVbY29s b3JfcGxhbmVdLnN0cmlkZTsKIAl1MzIgYWxpZ25tZW50OwogCkBAIC0yNTU2LDkgKzI1NTYsOSBA QCBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLCBpbnQgY29sb3JfcGxhbmUpCiAKIGJvb2wgaW50ZWxfcGxhbmVfY2FuX3JlbWFwKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsK KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWludCBpOwogCiAJLyogV2UgZG9uJ3Qgd2FudCB0byBk ZWFsIHdpdGggcmVtYXBwaW5nIHdpdGggY3Vyc29ycyAqLwpAQCAtMjU5NiwxNiArMjU5NiwxNiBA QCBib29sIGludGVsX3BsYW5lX2Nhbl9yZW1hcChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQogCiBzdGF0aWMgYm9vbCBpbnRlbF9wbGFuZV9uZWVkc19yZW1hcChj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlv bjsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbjsKIAl1MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwogCiAJLyoKIAkgKiBObyByZW1h cHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ugd2UgZG9uJ3QgaGF2ZQogCSAqIGFuIGFj dHVhbCBzb3VyY2Ugdmlld3BvcnQgdG8gcmVtYXAuCiAJICovCi0JaWYgKCFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJu IGZhbHNlOwogCiAJaWYgKCFpbnRlbF9wbGFuZV9jYW5fcmVtYXAocGxhbmVfc3RhdGUpKQpAQCAt Mjc5MSwxMSArMjc5MSwxMSBAQCBzdGF0aWMgdm9pZAogaW50ZWxfcGxhbmVfcmVtYXBfZ3R0KHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ ZGV2KTsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi OworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOworCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCXN0cnVjdCBpbnRlbF9mcmFt ZWJ1ZmZlciAqaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7CiAJc3RydWN0IGlu dGVsX3JvdGF0aW9uX2luZm8gKmluZm8gPSAmcGxhbmVfc3RhdGUtPnZpZXcucm90YXRlZDsKLQl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJaW50IGksIG51 bV9wbGFuZXMgPSBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzOwogCXVuc2lnbmVkIGludCB0aWxlX3Np emUgPSBpbnRlbF90aWxlX3NpemUoZGV2X3ByaXYpOwogCXVuc2lnbmVkIGludCBzcmNfeCwgc3Jj X3k7CkBAIC0yODA2LDIwICsyODA2LDIwIEBAIGludGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCXBsYW5lX3N0YXRlLT52aWV3LnR5cGUg PSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSA/CiAJCUk5MTVfR0dUVF9WSUVXX1JP VEFURUQgOiBJOTE1X0dHVFRfVklFV19SRU1BUFBFRDsKIAotCXNyY194ID0gcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLngxID4+IDE2OwotCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+ IDE2OwotCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7Ci0Jc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7CisJc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJc3JjX3kgPSBw bGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCVdBUk5fT04oaXNfY2NzX21vZGlmaWVy KGZiLT5tb2RpZmllcikpOwogCiAJLyogTWFrZSBzcmMgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8g dGhlIHZpZXdwb3J0ICovCi0JZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5z cmMsCisJZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCiAJCQkgICAt KHNyY194IDw8IDE2KSwgLShzcmNfeSA8PCAxNikpOwogCiAJLyogUm90YXRlIHNyYyBjb29yZGlu YXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCiAJaWYgKGRybV9yb3RhdGlvbl85MF9v cl8yNzAocm90YXRpb24pKQotCQlkcm1fcmVjdF9yb3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YywKKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMsCiAJCQkJc3JjX3cg PDwgMTYsIHNyY19oIDw8IDE2LAogCQkJCURSTV9NT0RFX1JPVEFURV8yNzApOwogCkBAIC0yOTA0 LDggKzI5MDQsOCBAQCBzdGF0aWMgaW50CiBpbnRlbF9wbGFuZV9jb21wdXRlX2d0dChzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBpbnRlbF9m cmFtZWJ1ZmZlciAqZmIgPQotCQl0b19pbnRlbF9mcmFtZWJ1ZmZlcihwbGFuZV9zdGF0ZS0+YmFz ZS5mYik7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b247CisJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKHBsYW5lX3N0YXRlLT5ody5mYik7CisJdW5zaWdu ZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWludCBpLCBudW1f cGxhbmVzOwogCiAJaWYgKCFmYikKQEAgLTI5NDIsNyArMjk0Miw3IEBAIGludGVsX3BsYW5lX2Nv bXB1dGVfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAKIAkvKiBS b3RhdGUgc3JjIGNvb3JkaW5hdGVzIHRvIG1hdGNoIHJvdGF0ZWQgR1RUIHZpZXcgKi8KIAlpZiAo ZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCi0JCWRybV9yZWN0X3JvdGF0ZSgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLAorCQlkcm1fcmVjdF9yb3RhdGUoJnBsYW5lX3N0YXRlLT51YXBp LnNyYywKIAkJCQlmYi0+YmFzZS53aWR0aCA8PCAxNiwgZmItPmJhc2UuaGVpZ2h0IDw8IDE2LAog CQkJCURSTV9NT0RFX1JPVEFURV8yNzApOwogCkBAIC0zMTEwLDkgKzMxMTAsOSBAQCBpbnRlbF9z ZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJ CXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQlib29sIHZpc2libGUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCi0JcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSA9IHZpc2libGU7CisJcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IHZpc2libGU7CiAK IAlpZiAodmlzaWJsZSkKIAkJY3J0Y19zdGF0ZS0+dWFwaS5wbGFuZV9tYXNrIHw9IGRybV9wbGFu ZV9tYXNrKCZwbGFuZS0+YmFzZSk7CkBAIC0zMjA3LDcgKzMyMDcsNyBAQCBpbnRlbF9maW5kX2lu aXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJY29udGlu dWU7CiAKIAkJaWYgKGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHN0YXRlKSA9PSBwbGFuZV9jb25m aWctPmJhc2UpIHsKLQkJCWZiID0gc3RhdGUtPmJhc2UuZmI7CisJCQlmYiA9IHN0YXRlLT5ody5m YjsKIAkJCWRybV9mcmFtZWJ1ZmZlcl9nZXQoZmIpOwogCQkJZ290byB2YWxpZF9mYjsKIAkJfQpA QCAtMzIyNSwxMSArMzIyNSwxMSBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCXJldHVybjsKIAogdmFsaWRfZmI6Ci0JaW50ZWxf c3RhdGUtPmJhc2Uucm90YXRpb24gPSBwbGFuZV9jb25maWctPnJvdGF0aW9uOworCWludGVsX3N0 YXRlLT5ody5yb3RhdGlvbiA9IHBsYW5lX2NvbmZpZy0+cm90YXRpb247CiAJaW50ZWxfZmlsbF9m Yl9nZ3R0X3ZpZXcoJmludGVsX3N0YXRlLT52aWV3LCBmYiwKLQkJCQlpbnRlbF9zdGF0ZS0+YmFz ZS5yb3RhdGlvbik7CisJCQkJaW50ZWxfc3RhdGUtPmh3LnJvdGF0aW9uKTsKIAlpbnRlbF9zdGF0 ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlID0KLQkJaW50ZWxfZmJfcGl0Y2goZmIsIDAsIGludGVs X3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKKwkJaW50ZWxfZmJfcGl0Y2goZmIsIDAsIGludGVsX3N0 YXRlLT5ody5yb3RhdGlvbik7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJ aW50ZWxfc3RhdGUtPnZtYSA9CkBAIC0zMjU5LDggKzMyNTksOCBAQCBpbnRlbF9maW5kX2luaXRp YWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCXBsYW5lX3N0YXRl LT5jcnRjX3cgPSBmYi0+d2lkdGg7CiAJcGxhbmVfc3RhdGUtPmNydGNfaCA9IGZiLT5oZWlnaHQ7 CiAKLQlpbnRlbF9zdGF0ZS0+YmFzZS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKHBsYW5lX3N0 YXRlKTsKLQlpbnRlbF9zdGF0ZS0+YmFzZS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdChwbGFu ZV9zdGF0ZSk7CisJaW50ZWxfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYyhw bGFuZV9zdGF0ZSk7CisJaW50ZWxfc3RhdGUtPnVhcGkuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rl c3QocGxhbmVfc3RhdGUpOwogCiAJaWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nKQogCQlkZXZfcHJp di0+cHJlc2VydmVfYmlvc19zd2l6emxlID0gdHJ1ZTsKQEAgLTMzNTgsNyArMzM1OCw3IEBAIHN0 YXRpYyBpbnQgaWNsX21heF9wbGFuZV9oZWlnaHQodm9pZCkKIHN0YXRpYyBib29sIHNrbF9jaGVj a19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAogCQkJCQkgICBpbnQgbWFpbl94LCBpbnQgbWFpbl95LCB1MzIgbWFpbl9vZmZzZXQpCiB7 Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m YjsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAlpbnQgaHN1YiA9IGZiLT5mb3JtYXQtPmhzdWI7CiAJaW50IHZzdWIgPSBmYi0+Zm9ybWF0 LT52c3ViOwogCWludCBhdXhfeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54OwpAQCAt MzM5NSwxMyArMzM5NSwxMyBAQCBzdGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRp bmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZQogCiBzdGF0aWMgaW50 IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5z cmMueDEgPj4gMTY7Ci0JaW50IHkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7Ci0J aW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQlp bnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbjsKKwlpbnQgeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKKwlp bnQgeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKKwlpbnQgdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWludCBoID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCWludCBtYXhfd2lkdGg7CiAJ aW50IG1heF9oZWlnaHQ7CiAJdTMyIGFsaWdubWVudCwgb2Zmc2V0LCBhdXhfb2Zmc2V0ID0gcGxh bmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldDsKQEAgLTM0ODQsMjMgKzM0ODQsMjMgQEAg c3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCiAJICogUHV0IHRoZSBmaW5hbCBjb29yZGluYXRlcyBiYWNrIHNvIHRo YXQgdGhlIHNyYwogCSAqIGNvb3JkaW5hdGUgY2hlY2tzIHdpbGwgc2VlIHRoZSByaWdodCB2YWx1 ZXMuCiAJICovCi0JZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCi0J CQkgICAoeCA8PCAxNikgLSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEsCi0JCQkgICAoeSA8PCAx NikgLSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEpOworCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjLAorCQkJICAgKHggPDwgMTYpIC0gcGxhbmVfc3RhdGUtPnVhcGku c3JjLngxLAorCQkJICAgKHkgPDwgMTYpIC0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxKTsKIAog CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKKwl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJaW50IG1heF93aWR0aCA9IHNrbF9t YXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hlaWdodCA9IDQwOTY7 Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Ci0JaW50IHkgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7Ci0JaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKLQlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKKwlpbnQgeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNy Yy54MSA+PiAxNzsKKwlpbnQgeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNzsKKwlp bnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3OworCWlu dCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3OwogCXUz MiBvZmZzZXQ7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBsYW5lX3N0YXRlLCAx KTsKQEAgLTM1MjIsOSArMzUyMiw5IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1 cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAogc3RhdGljIGlu dCBza2xfY2hlY2tfY2NzX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+YmFzZS5mYjsKLQlpbnQgc3JjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4g MTY7Ci0JaW50IHNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OworCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOworCWludCBz cmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKKwlpbnQgc3JjX3kgPSBwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CiAJaW50IGhzdWIgPSBmYi0+Zm9ybWF0LT5oc3Vi OwogCWludCB2c3ViID0gZmItPmZvcm1hdC0+dnN1YjsKIAlpbnQgeCA9IHNyY194IC8gaHN1YjsK QEAgLTM1NDMsMTQgKzM1NDMsMTQgQEAgc3RhdGljIGludCBza2xfY2hlY2tfY2NzX2F1eF9zdXJm YWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAKIGludCBza2xfY2hl Y2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQog ewotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZmI7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0KHBsYW5lX3N0 YXRlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7 CiAKIAkvKgpAQCAtMzYyNyw5ICszNjI3LDkgQEAgc3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5k ZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b247CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CisJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisJdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCXUzMiBkc3BjbnRyOwog CiAJZHNwY250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFOwpAQCAtMzY4MSw3ICszNjgxLDcgQEAg c3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwogCWludCBzcmNfeCwgc3JjX3k7CiAJ dTMyIG9mZnNldDsKIAlpbnQgcmV0OwpAQCAtMzY5MCwxMSArMzY5MCwxMSBAQCBpbnQgaTl4eF9j aGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCi0J c3JjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTY7Ci0Jc3JjX3kgPSBwbGFuZV9z dGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CisJc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMu eDEgPj4gMTY7CisJc3JjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CiAKIAlp bnRlbF9hZGRfZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVfc3RhdGUsIDApOwogCkBA IC0zNzA4LDE1ICszNzA4LDE1IEBAIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBQdXQgdGhlIGZpbmFsIGNvb3Jk aW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCiAJICogY29vcmRpbmF0ZSBjaGVja3Mgd2lsbCBz ZWUgdGhlIHJpZ2h0IHZhbHVlcy4KIAkgKi8KLQlkcm1fcmVjdF90cmFuc2xhdGUoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYywKLQkJCSAgIChzcmNfeCA8PCAxNikgLSBwbGFuZV9zdGF0ZS0+YmFzZS5z cmMueDEsCi0JCQkgICAoc3JjX3kgPDwgMTYpIC0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxKTsK Kwlkcm1fcmVjdF90cmFuc2xhdGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKKwkJCSAgIChzcmNf eCA8PCAxNikgLSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEsCisJCQkgICAoc3JjX3kgPDwgMTYp IC0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxKTsKIAogCS8qIEhTVy9CRFcgZG8gdGhpcyBhdXRv bWFnaWNhbGx5IGluIGhhcmR3YXJlICovCiAJaWYgKCFJU19IQVNXRUxMKGRldl9wcml2KSAmJiAh SVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotCQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFu ZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKLQkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwkJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOworCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwkJaW50IHNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCiAJCWlmIChyb3RhdGlvbiAm IERSTV9NT0RFX1JPVEFURV8xODApIHsKIAkJCXNyY194ICs9IHNyY193IC0gMTsKQEAgLTM3NTMs MTQgKzM3NTMsMTQgQEAgc3RhdGljIGludAogaTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCWludCByZXQ7CiAKIAly ZXQgPSBjaHZfcGxhbmVfY2hlY2tfcm90YXRpb24ocGxhbmVfc3RhdGUpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0 ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCisJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxh bmVfc3RhdGUoJnBsYW5lX3N0YXRlLT51YXBpLAogCQkJCQkJICAmY3J0Y19zdGF0ZS0+dWFwaSwK IAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAogCQkJCQkJICBEUk1fUExBTkVf SEVMUEVSX05PX1NDQUxJTkcsCkBAIC0zNzczLDcgKzM3NzMsNyBAQCBpOXh4X3BsYW5lX2NoZWNr KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gMDsKIAogCXJldCA9IGludGVsX3BsYW5lX2No ZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7CkBAIC0zNzk0LDEwICszNzk0LDEwIEBA IHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJdTMyIGxpbmVhcl9vZmZzZXQ7CiAJaW50IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ueDsKIAlpbnQgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55OwotCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50IGNydGNfeSA9IHBsYW5lX3N0YXRl LT5iYXNlLmRzdC55MTsKLQlpbnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLmRzdCk7Ci0JaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PmJhc2UuZHN0KTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWlu dCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJaW50IGNydGNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCWludCBjcnRjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFn czsKIAl1MzIgZHNwYWRkcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CkBAIC0zOTY3LDggKzM5Njcs OCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNrbF9wbGFuZV9zdHJpZGVfbXVsdChjb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIHUzMiBza2xfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCSAgICAgaW50IGNvbG9yX3BsYW5l KQogewotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b247CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwog CXUzMiBzdHJpZGUgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLnN0cmlk ZTsKIAogCWlmIChjb2xvcl9wbGFuZSA+PSBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzKQpAQCAtNDAz NywxMCArNDAzNywxMCBAQCBzdGF0aWMgdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHUzMiBwaXhl bF9mb3JtYXQpCiAKIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCWlmICghcGxhbmVfc3RhdGUtPmJh c2UuZmItPmZvcm1hdC0+aGFzX2FscGhhKQorCWlmICghcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3Jt YXQtPmhhc19hbHBoYSkKIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwogCi0Jc3dp dGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7CisJc3dpdGNoIChwbGFu ZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZSkgewogCWNhc2UgRFJNX01PREVfQkxFTkRfUElY RUxfTk9ORToKIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwogCWNhc2UgRFJNX01P REVfQkxFTkRfUFJFTVVMVEk6CkBAIC00MDQ4LDE3ICs0MDQ4LDE3IEBAIHN0YXRpYyB1MzIgc2ts X3BsYW5lX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogCWNhc2UgRFJNX01PREVfQkxFTkRfQ09WRVJBR0U6CiAJCXJldHVybiBQTEFORV9DVExf QUxQSEFfSFdfUFJFTVVMVElQTFk7CiAJZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNFKHBsYW5lX3N0 YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpOworCQlNSVNTSU5HX0NBU0UocGxhbmVfc3RhdGUt Pmh3LnBpeGVsX2JsZW5kX21vZGUpOwogCQlyZXR1cm4gUExBTkVfQ1RMX0FMUEhBX0RJU0FCTEU7 CiAJfQogfQogCiBzdGF0aWMgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlpZiAoIXBsYW5lX3N0YXRl LT5iYXNlLmZiLT5mb3JtYXQtPmhhc19hbHBoYSkKKwlpZiAoIXBsYW5lX3N0YXRlLT5ody5mYi0+ Zm9ybWF0LT5oYXNfYWxwaGEpCiAJCXJldHVybiBQTEFORV9DT0xPUl9BTFBIQV9ESVNBQkxFOwog Ci0Jc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7CisJc3dpdGNo IChwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZSkgewogCWNhc2UgRFJNX01PREVfQkxF TkRfUElYRUxfTk9ORToKIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7CiAJY2Fz ZSBEUk1fTU9ERV9CTEVORF9QUkVNVUxUSToKQEAgLTQwNjYsNyArNDA2Niw3IEBAIHN0YXRpYyB1 MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlCiAJY2FzZSBEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRToKIAkJcmV0dXJu IFBMQU5FX0NPTE9SX0FMUEhBX0hXX1BSRU1VTFRJUExZOwogCWRlZmF1bHQ6Ci0JCU1JU1NJTkdf Q0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKTsKKwkJTUlTU0lOR19DQVNF KHBsYW5lX3N0YXRlLT5ody5waXhlbF9ibGVuZF9tb2RlKTsKIAkJcmV0dXJuIFBMQU5FX0NPTE9S X0FMUEhBX0RJU0FCTEU7CiAJfQogfQpAQCAtNDE1MSw5ICs0MTUxLDkgQEAgdTMyIHNrbF9wbGFu ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCSAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lLT5kZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmJhc2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb247CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CisJY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWNvbnN0IHN0 cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7 CiAJdTMyIHBsYW5lX2N0bDsKIApAQCAtNDE2MywxMCArNDE2MywxMCBAQCB1MzIgc2tsX3BsYW5l X2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcGxhbmVf Y3RsIHw9IHNrbF9wbGFuZV9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwogCQlwbGFuZV9jdGwgfD0g UExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7CiAKLQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNl LmNvbG9yX2VuY29kaW5nID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKKwkJaWYgKHBsYW5lX3N0 YXRlLT5ody5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCiAJCQlwbGFu ZV9jdGwgfD0gUExBTkVfQ1RMX1lVVl9UT19SR0JfQ1NDX0ZPUk1BVF9CVDcwOTsKIAotCQlpZiAo cGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExfUkFO R0UpCisJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNS X0ZVTExfUkFOR0UpCiAJCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1lVVl9SQU5HRV9DT1JSRUNU SU9OX0RJU0FCTEU7CiAJfQogCkBAIC00MjA3LDIxICs0MjA3LDIxIEBAIHUzMiBnbGtfcGxhbmVf Y29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJ Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lLT5kZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFw aS5wbGFuZS0+ZGV2KTsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5ody5mYjsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwog CiAJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1BMQU5FX0dBTU1BX0RJU0FCTEU7CiAJ cGxhbmVfY29sb3JfY3RsIHw9IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEocGxhbmVfc3RhdGUp OwogCiAJaWYgKGZiLT5mb3JtYXQtPmlzX3l1diAmJiAhaWNsX2lzX2hkcl9wbGFuZShkZXZfcHJp diwgcGxhbmUtPmlkKSkgewotCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2Rpbmcg PT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQorCQlpZiAocGxhbmVfc3RhdGUtPmh3LmNvbG9yX2Vu Y29kaW5nID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKIAkJCXBsYW5lX2NvbG9yX2N0bCB8PSBQ TEFORV9DT0xPUl9DU0NfTU9ERV9ZVVY3MDlfVE9fUkdCNzA5OwogCQllbHNlCiAJCQlwbGFuZV9j b2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfQ1NDX01PREVfWVVWNjAxX1RPX1JHQjcwOTsKIAotCQlp ZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExf UkFOR0UpCisJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lD QkNSX0ZVTExfUkFOR0UpCiAJCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfWVVWX1JB TkdFX0NPUlJFQ1RJT05fRElTQUJMRTsKIAl9IGVsc2UgaWYgKGZiLT5mb3JtYXQtPmlzX3l1dikg ewogCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfSU5QVVRfQ1NDX0VOQUJMRTsKQEAg LTU1MDQsMTEgKzU1MDQsMTEgQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3NjYWxlcl9wbGFuZShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxf cGxhbmUgPQotCQl0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJCXRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Ci0Jc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAlpbnQgcmV0OwotCWJv b2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOworCWJv b2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogCWJv b2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKIAogCS8qIFByZS1nZW4xMSBhbmQgU0RSIHBsYW5lcyBh bHdheXMgbmVlZCBhIHNjYWxlciBmb3IgcGxhbmFyIGZvcm1hdHMuICovCkBAIC01NTE5LDEwICs1 NTE5LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXIoY3J0Y19z dGF0ZSwgZm9yY2VfZGV0YWNoLAogCQkJCWRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUtPmJh c2UpLAogCQkJCSZwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkLAotCQkJCWRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2LAotCQkJCWRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiwKLQkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2UuZHN0KSwKLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCks CisJCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTYsCisJCQkJ ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAorCQkJCWRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJCWRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQlmYiA/IGZiLT5mb3JtYXQgOiBOVUxMLCBuZWVk X3NjYWxlcik7CiAKIAlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPCAwKQpAQCAt NTk0MCw3ICs1OTQwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJCSAqIFNvIGRpc2FibGUgdW5k ZXJydW4gcmVwb3J0aW5nIGJlZm9yZSBhbGwgdGhlIHBsYW5lcyBnZXQgZGlzYWJsZWQuCiAJCSAq LwogCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJpbWFyeV9zdGF0ZS0+dmlzaWJs ZSAmJgotCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0YXRlLT5iYXNlLnZpc2libGUp KQorCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0YXRlLT51YXBpLnZpc2libGUpKQog CQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0Yy0+ cGlwZSwgZmFsc2UpOwogCX0KIApAQCAtNjAyNyw3ICs2MDI3LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK IAogCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBuZXdfY3J0Y19zdGF0ZSk7CiAKLQkJaWYg KG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAob2xkX3BsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpCiAJCQlmYl9iaXRzIHw9IHBsYW5lLT5mcm9udGJ1ZmZlcl9iaXQ7CiAJfQog CkBAIC03MDI1LDcgKzcwMjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9h dG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlID0KIAkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNl LnN0YXRlKTsKIAotCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwkJaWYgKHBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGlu dGVsX2NydGMsIHBsYW5lKTsKIAl9CiAKQEAgLTEwNTM3LDggKzEwNTM3LDggQEAgc3RhdGljIGJv b2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiBzdGF0 aWMgdTMyIGludGVsX2N1cnNvcl9iYXNlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCQl0b19pOTE1KHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwogCXUzMiBiYXNlOwogCkBAIC0xMDU1MSwxNyAr MTA1NTEsMTcgQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCiAJLyogSUxLKyBkbyB0aGlzIGF1dG9tYWdp Y2FsbHkgKi8KIAlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpICYmCi0JICAgIHBsYW5lX3N0YXRlLT5i YXNlLnJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4MCkKLQkJYmFzZSArPSAoZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpICoKLQkJCSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2UuZHN0KSAtIDEpICogZmItPmZvcm1hdC0+Y3BwWzBdOworCSAgICBwbGFu ZV9zdGF0ZS0+aHcucm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMTgwKQorCQliYXNlICs9IChk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkgKgorCQkJIGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpIC0gMSkgKiBmYi0+Zm9ybWF0LT5jcHBbMF07CiAK IAlyZXR1cm4gYmFzZTsKIH0KIAogc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfcG9zaXRpb24oY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlpbnQgeCA9IHBs YW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55 MTsKKwlpbnQgeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKKwlpbnQgeSA9IHBsYW5lX3N0 YXRlLT51YXBpLmRzdC55MTsKIAl1MzIgcG9zID0gMDsKIAogCWlmICh4IDwgMCkgewpAQCAtMTA1 ODIsOSArMTA1ODIsOSBAQCBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGljIGJvb2wgaW50ZWxf Y3Vyc29yX3NpemVfb2soY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPQotCQkmcGxhbmVf c3RhdGUtPmJhc2UucGxhbmUtPmRldi0+bW9kZV9jb25maWc7Ci0JaW50IHdpZHRoID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JaW50IGhlaWdodCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJJnBsYW5lX3N0YXRlLT51YXBpLnBs YW5lLT5kZXYtPm1vZGVfY29uZmlnOworCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+dWFwaS5kc3QpOworCWludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7CiAKIAlyZXR1cm4gd2lkdGggPiAwICYmIHdpZHRoIDw9IGNvbmZp Zy0+Y3Vyc29yX3dpZHRoICYmCiAJCWhlaWdodCA+IDAgJiYgaGVpZ2h0IDw9IGNvbmZpZy0+Y3Vy c29yX2hlaWdodDsKQEAgLTEwNjAwLDExICsxMDYwMCwxMSBAQCBzdGF0aWMgaW50IGludGVsX2N1 cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCi0J c3JjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTY7Ci0Jc3JjX3kgPSBwbGFuZV9z dGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CisJc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMu eDEgPj4gMTY7CisJc3JjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CiAKIAlp bnRlbF9hZGRfZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVfc3RhdGUsIDApOwogCW9m ZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQoJnNyY194LCAmc3JjX3ks CkBAIC0xMDYyMyw3ICsxMDYyMyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3Vyc29yX2NoZWNrX3N1 cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRpYyBpbnQg aW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQkJICAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWlu dCByZXQ7CiAKIAlpZiAoZmIgJiYgZmItPm1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX0xJTkVB UikgewpAQCAtMTA2MzEsNyArMTA2MzEsNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNv cihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5l X3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkg IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9O T19TQ0FMSU5HLApAQCAtMTA2NDAsMTQgKzEwNjQwLDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfY2hl Y2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlyZXR1cm4g cmV0OwogCiAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5nbGVzLCB3aGljaCB3 ZSBwcm9ncmFtIHRvIGh3ICovCi0JcGxhbmVfc3RhdGUtPmJhc2Uuc3JjID0gZHJtX3BsYW5lX3N0 YXRlX3NyYygmcGxhbmVfc3RhdGUtPmJhc2UpOwotCXBsYW5lX3N0YXRlLT5iYXNlLmRzdCA9IGRy bV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9zdGF0ZS0+YmFzZSk7CisJcGxhbmVfc3RhdGUtPnVh cGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3RhdGUtPnVhcGkpOworCXBsYW5l X3N0YXRlLT51YXBpLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9zdGF0ZS0+dWFw aSk7CiAKIAlyZXQgPSBpbnRlbF9jdXJzb3JfY2hlY2tfc3VyZmFjZShwbGFuZV9zdGF0ZSk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJs ZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0 ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTEw Njg1LDcgKzEwNjg1LDcgQEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIHN0YXRpYyBib29sIGk4NDVfY3Vyc29y X3NpemVfb2soY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK LQlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlp bnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCS8q CiAJICogODQ1Zy84NjVnIGFyZSBvbmx5IGxpbWl0ZWQgYnkgdGhlIHdpZHRoIG9mIHRoZWlyIGN1 cnNvcnMsCkBAIC0xMDY5Nyw3ICsxMDY5Nyw3IEBAIHN0YXRpYyBib29sIGk4NDVfY3Vyc29yX3Np emVfb2soY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRp YyBpbnQgaTg0NV9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCQkgICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK Kwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsK IAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfY2hlY2tfY3Vyc29yKGNydGNfc3RhdGUsIHBsYW5l X3N0YXRlKTsKQEAgLTEwNzExLDEyICsxMDcxMSwxMiBAQCBzdGF0aWMgaW50IGk4NDVfY2hlY2tf Y3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCS8qIENoZWNrIGZv ciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAqLwogCWlmICghaTg0NV9jdXJzb3Jfc2l6 ZV9vayhwbGFuZV9zdGF0ZSkpIHsKIAkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVk IG5vdCBzdXBwb3J0ZWRcbiIsCi0JCQkgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpLAotCQkJICBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkpOwor CQkJICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKKwkJCSAgZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JV0FSTl9PTihwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlICYmCisJV0FSTl9PTihwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCiAJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5z dHJpZGUgIT0gZmItPnBpdGNoZXNbMF0pOwogCiAJc3dpdGNoIChmYi0+cGl0Y2hlc1swXSkgewpA QCAtMTA3NDQsOSArMTA3NDQsOSBAQCBzdGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgY250bCA9IDAsIGJhc2UgPSAwLCBwb3MgPSAw LCBzaXplID0gMDsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCi0JaWYgKHBsYW5lX3N0YXRl ICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKLQkJdW5zaWduZWQgaW50IHdpZHRoID0g ZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYyk7Ci0JCXVuc2lnbmVkIGludCBo ZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaWYgKHBs YW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKKwkJdW5zaWduZWQgaW50 IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYyk7CisJCXVuc2ln bmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7 CiAKIAkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGwgfAogCQkJaTg0NV9jdXJzb3JfY3RsX2NydGMo Y3J0Y19zdGF0ZSk7CkBAIC0xMDg0MiwxMyArMTA4NDIsMTMgQEAgc3RhdGljIHUzMiBpOXh4X2N1 cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7 CiAJdTMyIGNudGwgPSAwOwogCiAJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJ REdFKGRldl9wcml2KSkKIAkJY250bCB8PSBNQ1VSU09SX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwog Ci0Jc3dpdGNoIChkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSkgeworCXN3 aXRjaCAoZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkpIHsKIAljYXNlIDY0 OgogCQljbnRsIHw9IE1DVVJTT1JfTU9ERV82NF9BUkdCX0FYOwogCQlicmVhazsKQEAgLTEwODU5 LDExICsxMDg1OSwxMSBAQCBzdGF0aWMgdTMyIGk5eHhfY3Vyc29yX2N0bChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJY250bCB8PSBNQ1VSU09SX01PREVfMjU2 X0FSR0JfQVg7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSk7CisJCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiAJCXJldHVybiAwOwogCX0KIAotCWlmIChw bGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFURV8xODApCisJaWYgKHBs YW5lX3N0YXRlLT5ody5yb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFURV8xODApCiAJCWNudGwgfD0g TUNVUlNPUl9ST1RBVEVfMTgwOwogCiAJcmV0dXJuIGNudGw7CkBAIC0xMDg3Miw5ICsxMDg3Miw5 IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogc3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUt PmRldik7Ci0JaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCk7Ci0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0 KTsKKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwlpbnQgd2lkdGgg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwlpbnQgaGVpZ2h0ID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJaWYgKCFpbnRlbF9j dXJzb3Jfc2l6ZV9vayhwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiBmYWxzZTsKQEAgLTEwODk2LDcg KzEwODk2LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCSAqIGN1cnNvcnMuCiAJICovCiAJaWYg KEhBU19DVVJfRkJDKGRldl9wcml2KSAmJgotCSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlv biAmIERSTV9NT0RFX1JPVEFURV8wKSB7CisJICAgIHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbiAm IERSTV9NT0RFX1JPVEFURV8wKSB7CiAJCWlmIChoZWlnaHQgPCA4IHx8IGhlaWdodCA+IHdpZHRo KQogCQkJcmV0dXJuIGZhbHNlOwogCX0gZWxzZSB7CkBAIC0xMDkxMCw5ICsxMDkxMCw5IEBAIHN0 YXRpYyBib29sIGk5eHhfY3Vyc29yX3NpemVfb2soY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsK LQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi OworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJaW50IHJldDsKIApAQCAtMTA5Mjcs MTkgKzEwOTI3LDE5IEBAIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0eXBl cyB3ZSBzdXBwb3J0ICovCiAJaWYgKCFpOXh4X2N1cnNvcl9zaXplX29rKHBsYW5lX3N0YXRlKSkg ewogCQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gJWR4JWQgbm90IHN1cHBvcnRlZFxuIiwK LQkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCi0JCQkgIGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSk7CisJCQkgIGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJICBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT51YXBpLmRzdCkpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlXQVJOX09OKHBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUgJiYKKwlXQVJOX09OKHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUgJiYKIAkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSAhPSBmYi0+cGl0Y2hl c1swXSk7CiAKIAlpZiAoZmItPnBpdGNoZXNbMF0gIT0KLQkgICAgZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCkgKiBmYi0+Zm9ybWF0LT5jcHBbMF0pIHsKKwkgICAgZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkgKiBmYi0+Zm9ybWF0LT5jcHBbMF0pIHsK IAkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBjdXJzb3Igc3RyaWRlICgldSkgKGN1cnNvciB3aWR0 aCAlZClcbiIsCiAJCQkgICAgICBmYi0+cGl0Y2hlc1swXSwKLQkJCSAgICAgIGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0xMDk1 NCw3ICsxMDk1NCw3IEBAIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICogUmVmdXNlIHRoZSBwdXQgdGhlIGN1cnNvciBp bnRvIHRoYXQgY29tcHJvbWlzZWQgcG9zaXRpb24uCiAJICovCiAJaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9DICYmCi0JICAgIHBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUgJiYgcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxIDwgMCkgeworCSAgICBwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlICYmIHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MSA8IDApIHsKIAkJRFJN X0RFQlVHX0tNUygiQ0hWIGN1cnNvciBDIG5vdCBhbGxvd2VkIHRvIHN0cmFkZGxlIHRoZSBsZWZ0 IHNjcmVlbiBlZGdlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMTA5NzMsOSArMTA5 NzMsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKIAl1MzIgY250bCA9IDAsIGJhc2UgPSAwLCBwb3MgPSAwLCBmYmNfY3RsID0gMDsK IAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCi0JaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGUpIHsKLQkJdW5zaWduZWQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQkJdW5zaWduZWQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKSB7CisJCXVuc2lnbmVkIHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJCXVuc2lnbmVkIGhlaWdodCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0 bCB8CiAJCQlpOXh4X2N1cnNvcl9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKQEAgLTExNTEzLDE4ICsx MTUxMywxOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKIAkJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpu ZXcpCiB7CiAJLyogVXBkYXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4g Ki8KLQlpZiAobmV3LT5iYXNlLnZpc2libGUgIT0gY3VyLT5iYXNlLnZpc2libGUpCisJaWYgKG5l dy0+dWFwaS52aXNpYmxlICE9IGN1ci0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gdHJ1ZTsKIAot CWlmICghY3VyLT5iYXNlLmZiIHx8ICFuZXctPmJhc2UuZmIpCisJaWYgKCFjdXItPmh3LmZiIHx8 ICFuZXctPmh3LmZiKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoY3VyLT5iYXNlLmZiLT5tb2Rp ZmllciAhPSBuZXctPmJhc2UuZmItPm1vZGlmaWVyIHx8Ci0JICAgIGN1ci0+YmFzZS5yb3RhdGlv biAhPSBuZXctPmJhc2Uucm90YXRpb24gfHwKLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFz ZS5zcmMpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uuc3JjKSB8fAotCSAgICBkcm1fcmVj dF9oZWlnaHQoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLnNy YykgfHwKLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dp ZHRoKCZjdXItPmJhc2UuZHN0KSB8fAotCSAgICBkcm1fcmVjdF9oZWlnaHQoJm5ldy0+YmFzZS5k c3QpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLmRzdCkpCisJaWYgKGN1ci0+aHcuZmIt Pm1vZGlmaWVyICE9IG5ldy0+aHcuZmItPm1vZGlmaWVyIHx8CisJICAgIGN1ci0+aHcucm90YXRp b24gIT0gbmV3LT5ody5yb3RhdGlvbiB8fAorCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51YXBp LnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+dWFwaS5zcmMpIHx8CisJICAgIGRybV9yZWN0 X2hlaWdodCgmbmV3LT51YXBpLnNyYykgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuc3Jj KSB8fAorCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51YXBpLmRzdCkgIT0gZHJtX3JlY3Rfd2lk dGgoJmN1ci0+dWFwaS5kc3QpIHx8CisJICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT51YXBpLmRz dCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuZHN0KSkKIAkJcmV0dXJuIHRydWU7CiAK IAlyZXR1cm4gZmFsc2U7CkBAIC0xMTUzMiwxMCArMTE1MzIsMTAgQEAgc3RhdGljIGJvb2wgaW50 ZWxfd21fbmVlZF91cGRhdGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXIsCiAK IHN0YXRpYyBib29sIG5lZWRzX3NjYWxpbmcoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpzdGF0ZSkKIHsKLQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPmJhc2Uuc3Jj KSA+PiAxNjsKLQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5iYXNlLnNyYykg Pj4gMTY7Ci0JaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5iYXNlLmRzdCk7Ci0J aW50IGRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+YmFzZS5kc3QpOworCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWludCBzcmNfaCA9 IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlpbnQgZHN0X3cgPSBk cm1fcmVjdF93aWR0aCgmc3RhdGUtPnVhcGkuZHN0KTsKKwlpbnQgZHN0X2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnN0YXRlLT51YXBpLmRzdCk7CiAKIAlyZXR1cm4gKHNyY193ICE9IGRzdF93IHx8IHNy Y19oICE9IGRzdF9oKTsKIH0KQEAgLTExNTQ2LDcgKzExNTQ2LDcgQEAgaW50IGludGVsX3BsYW5l X2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXQKIAkJCQkgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJYm9vbCBtb2Rl X2NoYW5nZWQgPSBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpOwogCWJvb2wgd2FzX2NydGNfZW5h YmxlZCA9IG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7CkBAIC0xMTU2MCw4ICsxMTU2MCw4IEBA IGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0CiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXdhc192aXNp YmxlID0gb2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Ci0JdmlzaWJsZSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGU7CisJd2FzX3Zpc2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZTsKKwl2aXNpYmxlID0gcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZTsKIAogCWlmICgh d2FzX2NydGNfZW5hYmxlZCAmJiBXQVJOX09OKHdhc192aXNpYmxlKSkKIAkJd2FzX3Zpc2libGUg PSBmYWxzZTsKQEAgLTExNTc3LDcgKzExNTc3LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j YWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQK IAkgKiBvbmx5IGNvbWJpbmUgdGhlIHJlc3VsdHMgZnJvbSBhbGwgcGxhbmVzIGluIHRoZSBjdXJy ZW50IHBsYWNlPwogCSAqLwogCWlmICghaXNfY3J0Y19lbmFibGVkKSB7Ci0JCXBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUgPSB2aXNpYmxlID0gZmFsc2U7CisJCXBsYW5lX3N0YXRlLT51YXBpLnZp c2libGUgPSB2aXNpYmxlID0gZmFsc2U7CiAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0g fkJJVChwbGFuZS0+aWQpOwogCQljcnRjX3N0YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9IDA7 CiAJfQpAQCAtMTE3MzYsNyArMTE3MzYsNyBAQCBzdGF0aWMgaW50IGljbF9jaGVja19udjEyX3Bs YW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJCWNvbnRpbnVlOwog CiAJCXBsYW5lX3N0YXRlLT5wbGFuYXJfbGlua2VkX3BsYW5lID0gTlVMTDsKLQkJaWYgKHBsYW5l X3N0YXRlLT5wbGFuYXJfc2xhdmUgJiYgIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKKwkJ aWYgKHBsYW5lX3N0YXRlLT5wbGFuYXJfc2xhdmUgJiYgIXBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUpIHsKIAkJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOwog CQkJY3J0Y19zdGF0ZS0+dXBkYXRlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKIAkJfQpAQCAt MTIwNzUsMTQgKzEyMDc1LDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyICpvdXRwdXRfZm9ybWF0cyhl bnVtIGludGVsX291dHB1dF9mb3JtYXQgZm9ybWF0KQogCiBzdGF0aWMgdm9pZCBpbnRlbF9kdW1w X3BsYW5lX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5iYXNlLmZiOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CisJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7CiAKIAlpZiAoIWZiKSB7CiAJCURSTV9ERUJVR19LTVMoIltQTEFO RTolZDolc10gZmI6IFtOT0ZCXSwgdmlzaWJsZTogJXNcbiIsCiAJCQkgICAgICBwbGFuZS0+YmFz ZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAotCQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkpOworCQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZSkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjA5MCwxMyArMTIwOTAsMTMgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCQkgICAgICBwbGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5u YW1lLAogCQkgICAgICBmYi0+YmFzZS5pZCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkgICAg ICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwK LQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkpOworCQkgICAgICB5ZXNu byhwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSk7CiAJRFJNX0RFQlVHX0tNUygiXHRyb3RhdGlv bjogMHgleCwgc2NhbGVyOiAlZFxuIiwKLQkJICAgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRp b24sIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQpOwotCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKQorCQkgICAgICBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb24sIHBsYW5lX3N0YXRlLT5zY2Fs ZXJfaWQpOworCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlEUk1fREVCVUdfS01T KCJcdHNyYzogIiBEUk1fUkVDVF9GUF9GTVQgIiBkc3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCi0J CQkgICAgICBEUk1fUkVDVF9GUF9BUkcoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYyksCi0JCQkgICAg ICBEUk1fUkVDVF9BUkcoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkpOworCQkJICAgICAgRFJNX1JF Q1RfRlBfQVJHKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpLAorCQkJICAgICAgRFJNX1JFQ1RfQVJH KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9w aXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCkBA IC0xMzI1Myw3ICsxMzI1Myw3IEBAIGludGVsX3ZlcmlmeV9wbGFuZXMoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0 YXRlLCBwbGFuZSwKIAkJCQkJICBwbGFuZV9zdGF0ZSwgaSkKIAkJYXNzZXJ0X3BsYW5lKHBsYW5l LCBwbGFuZV9zdGF0ZS0+cGxhbmFyX3NsYXZlIHx8Ci0JCQkgICAgIHBsYW5lX3N0YXRlLT5iYXNl LnZpc2libGUpOworCQkJICAgICBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTE0MjQ3LDggKzE0MjQ3LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWlj X3RyYWNrX2ZicyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWZvcl9lYWNo X29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0 ZSwKIAkJCQkJICAgICBuZXdfcGxhbmVfc3RhdGUsIGkpCi0JCWludGVsX2Zyb250YnVmZmVyX3Ry YWNrKHRvX2ludGVsX2Zyb250YnVmZmVyKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5mYiksCi0JCQkJ CXRvX2ludGVsX2Zyb250YnVmZmVyKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mYiksCisJCWludGVs X2Zyb250YnVmZmVyX3RyYWNrKHRvX2ludGVsX2Zyb250YnVmZmVyKG9sZF9wbGFuZV9zdGF0ZS0+ aHcuZmIpLAorCQkJCQl0b19pbnRlbF9mcm9udGJ1ZmZlcihuZXdfcGxhbmVfc3RhdGUtPmh3LmZi KSwKIAkJCQkJcGxhbmUtPmZyb250YnVmZmVyX2JpdCk7CiB9CiAKQEAgLTE0NDA1LDkgKzE0NDA1 LDkgQEAgc3RhdGljIHZvaWQgYWRkX3Jwc19ib29zdF9hZnRlcl92Ymxhbmsoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCiBzdGF0aWMgaW50IGludGVsX3BsYW5lX3Bpbl9mYihzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNl LmRldik7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m YjsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAogCWlmIChwbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09SICYm CkBAIC0xNDQ3Miw5ICsxNDQ3Miw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3Rh dGUgPQogCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShfbmV3X3BsYW5lX3N0YXRlKTsKIAlzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Ci0JCXRvX2ludGVsX2F0b21pY19zdGF0 ZShuZXdfcGxhbmVfc3RhdGUtPmJhc2Uuc3RhdGUpOworCQl0b19pbnRlbF9hdG9taWNfc3RhdGUo bmV3X3BsYW5lX3N0YXRlLT51YXBpLnN0YXRlKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5kZXYpOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZiOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gbmV3X3BsYW5lX3N0YXRlLT5ody5mYjsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2xkX29iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKTsKIAlpbnQgcmV0OwpAQCAt MTQ1MDUsOSArMTQ1MDUsOSBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCQl9CiAJfQogCi0JaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mZW5jZSkg eyAvKiBleHBsaWNpdCBmZW5jaW5nICovCisJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5j ZSkgeyAvKiBleHBsaWNpdCBmZW5jaW5nICovCiAJCXJldCA9IGk5MTVfc3dfZmVuY2VfYXdhaXRf ZG1hX2ZlbmNlKCZpbnRlbF9zdGF0ZS0+Y29tbWl0X3JlYWR5LAotCQkJCQkJICAgIG5ld19wbGFu ZV9zdGF0ZS0+YmFzZS5mZW5jZSwKKwkJCQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVu Y2UsCiAJCQkJCQkgICAgSTkxNV9GRU5DRV9USU1FT1VULAogCQkJCQkJICAgIEdGUF9LRVJORUwp OwogCQlpZiAocmV0IDwgMCkKQEAgLTE0NTM3LDcgKzE0NTM3LDcgQEAgaW50ZWxfcHJlcGFyZV9w bGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlmYl9vYmpfYnVtcF9yZW5kZXJfcHJp b3JpdHkob2JqKTsKIAlpbnRlbF9mcm9udGJ1ZmZlcl9mbHVzaChvYmotPmZyb250YnVmZmVyLCBP UklHSU5fRElSVFlGQik7CiAKLQlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mZW5jZSkgeyAv KiBpbXBsaWNpdCBmZW5jaW5nICovCisJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2Up IHsgLyogaW1wbGljaXQgZmVuY2luZyAqLwogCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIAog CQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZpbnRlbF9zdGF0ZS0+Y29t bWl0X3JlYWR5LApAQCAtMTQ1NDksMTEgKzE0NTQ5LDEzIEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAKIAkJZmVuY2UgPSBkbWFfcmVzdl9nZXRfZXhj bF9yY3Uob2JqLT5iYXNlLnJlc3YpOwogCQlpZiAoZmVuY2UpIHsKLQkJCWFkZF9ycHNfYm9vc3Rf YWZ0ZXJfdmJsYW5rKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjLCBmZW5jZSk7CisJCQlhZGRf cnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCisJCQkJCQkg ICBmZW5jZSk7CiAJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAkJfQogCX0gZWxzZSB7Ci0JCWFk ZF9ycHNfYm9vc3RfYWZ0ZXJfdmJsYW5rKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjLCBuZXdf cGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpOworCQlhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhu ZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCisJCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5m ZW5jZSk7CiAJfQogCiAJLyoKQEAgLTE0NTg4LDcgKzE0NTkwLDcgQEAgaW50ZWxfY2xlYW51cF9w bGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKm9sZF9wbGFuZV9zdGF0ZSA9CiAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKF9vbGRfcGxhbmVf c3RhdGUpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KLQkJdG9f aW50ZWxfYXRvbWljX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJCXRvX2lu dGVsX2F0b21pY19zdGF0ZShvbGRfcGxhbmVfc3RhdGUtPnVhcGkuc3RhdGUpOwogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7CiAKIAlpZiAo aW50ZWxfc3RhdGUtPnJwc19pbnRlcmFjdGl2ZSkgewpAQCAtMTY1MzEsNyArMTY1MzMsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAog CQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9CiAJCQkJdG9f aW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3RhdGUpOwogCi0JCQlpZiAocGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSAmJgorCQkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYK IAkJCSAgICBwbGFuZS0+YmFzZS50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCiAJCQkJ aW50ZWxfcGxhbmVfZGlzYWJsZV9ub2F0b21pYyhjcnRjLCBwbGFuZSk7CiAJCX0KQEAgLTE2ODcz LDcgKzE2ODc1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQkgKiBGSVhNRSBkb24ndCBoYXZlIHRoZSBmYiB5 ZXQsIHNvIGNhbid0CiAJCQkgKiB1c2UgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKCkgOigKIAkJCSAq LwotCQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJCQlpZiAocGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKIAkJCQljcnRjX3N0YXRlLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9CiAJ CQkJCTQgKiBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IDk0MDE5MTViYzkz YS4uYzZjNDlhYThjMTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaApAQCAtNTE1LDcgKzUxNSwxMCBAQCBzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlIHsKIH07CiAKIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Ci0Jc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSBiYXNlOworCXVuaW9uIHsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSB1YXBpOworCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGh3OworCX07CiAJc3RydWN0IGk5MTVf Z2d0dF92aWV3IHZpZXc7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJdW5zaWduZWQgbG9uZyBm bGFnczsKQEAgLTExMjQsNyArMTEyNyw3IEBAIHN0cnVjdCBjeHNyX2xhdGVuY3kgewogI2RlZmlu ZSB0b19pbnRlbF9lbmNvZGVyKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciwgYmFzZSkKICNkZWZpbmUgdG9faW50ZWxfZnJhbWVidWZmZXIoeCkgY29udGFpbmVyX29mKHgs IHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciwgYmFzZSkKICNkZWZpbmUgdG9faW50ZWxfcGxhbmUo eCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9wbGFuZSwgYmFzZSkKLSNkZWZpbmUgdG9f aW50ZWxfcGxhbmVfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSwgYmFzZSkKKyNkZWZpbmUgdG9faW50ZWxfcGxhbmVfc3RhdGUoeCkgY29udGFpbmVyX29m KHgsIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSwgdWFwaSkKICNkZWZpbmUgaW50ZWxfZmJfb2Jq KHgpICgoeCkgPyB0b19pbnRlbF9ibygoeCktPm9ialswXSkgOiBOVUxMKQogCiBzdHJ1Y3QgaW50 ZWxfaGRtaSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwppbmRleCBj NmNjMzc3NWYzYjguLjkyYzdlYjI0MzU1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9mYmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2ZiYy5jCkBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIGJvb2wgbXVsdGlwbGVfcGlw ZXNfb2soc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJaWYgKCFub19mYmNfb25fbXVsdGlwbGVf cGlwZXMoZGV2X3ByaXYpKQogCQlyZXR1cm4gdHJ1ZTsKIAotCWlmIChwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlKQorCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlmYmMtPnZpc2li bGVfcGlwZXNfbWFzayB8PSAoMSA8PCBwaXBlKTsKIAllbHNlCiAJCWZiYy0+dmlzaWJsZV9waXBl c19tYXNrICY9IH4oMSA8PCBwaXBlKTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYp OwogCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwogCXN0cnVjdCBpbnRl bF9mYmNfc3RhdGVfY2FjaGUgKmNhY2hlID0gJmZiYy0+c3RhdGVfY2FjaGU7Ci0Jc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKKwlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAogCWNhY2hlLT52bWEgPSBOVUxM OwogCWNhY2hlLT5mbGFncyA9IDA7CkBAIC02NzEsMjAgKzY3MSwyMCBAQCBzdGF0aWMgdm9pZCBp bnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlm IChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQogCQljYWNo ZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUgPSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwogCi0J Y2FjaGUtPnBsYW5lLnJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJY2Fj aGUtPnBsYW5lLnJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCS8qCiAJICog U3JjIGNvb3JkaW5hdGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcwIGRlZ3JlZXMgZm9yCiAJ ICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZQog CSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBo ZXJlLgogCSAqLwotCWNhY2hlLT5wbGFuZS5zcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWNhY2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQljYWNoZS0+cGxhbmUudmlzaWJs ZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7CisJY2FjaGUtPnBsYW5lLnNyY193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJY2FjaGUtPnBsYW5l LnNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owor CWNhY2hlLT5wbGFuZS52aXNpYmxlID0gcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZTsKIAljYWNo ZS0+cGxhbmUuYWRqdXN0ZWRfeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCWNh Y2hlLT5wbGFuZS5hZGp1c3RlZF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Ci0J Y2FjaGUtPnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CisJY2FjaGUt PnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CiAKLQljYWNoZS0+cGxh bmUucGl4ZWxfYmxlbmRfbW9kZSA9IHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGU7 CisJY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUgPSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxf YmxlbmRfbW9kZTsKIAogCWlmICghY2FjaGUtPnBsYW5lLnZpc2libGUpCiAJCXJldHVybjsKQEAg LTEwNDcsMTIgKzEwNDcsMTIgQEAgdm9pZCBpbnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIHRvIHBpcGUgb3IgcGxhbmUgQS4gKi8KIAlm b3JfZWFjaF9uZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0 ZSwgaSkgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQkJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5iYXNlLmNydGMp OworCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGxhbmVfc3RhdGUt Pmh3LmNydGMpOwogCiAJCWlmICghcGxhbmUtPmhhc19mYmMpCiAJCQljb250aW51ZTsKIAotCQlp ZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJCWlmICghcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9vdmVybGF5LmMKaW5kZXggNWVmZWY5YmFiYWRiLi5iMjdhMWU4YTgzZjkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jCkBAIC02Njks OCArNjY5LDggQEAgc3RhdGljIHZvaWQgdXBkYXRlX2NvbG9ya2V5KHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5LAogCWlmIChvdmVybGF5LT5jb2xvcl9rZXlfZW5hYmxlZCkKIAkJZmxhZ3Mg fD0gRFNUX0tFWV9FTkFCTEU7CiAKLQlpZiAoc3RhdGUtPmJhc2UudmlzaWJsZSkKLQkJZm9ybWF0 ID0gc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0OworCWlmIChzdGF0ZS0+dWFwaS52aXNp YmxlKQorCQlmb3JtYXQgPSBzdGF0ZS0+aHcuZmItPmZvcm1hdC0+Zm9ybWF0OwogCiAJc3dpdGNo IChmb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfQzg6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9zcHJpdGUuYwppbmRleCA1MjZhOTM2NmI2ODIuLmNlMTkzMzY3Yjk2YiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC0yNDAs OSArMjQwLDkgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCiBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5l KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9u OworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+dWFwaS5wbGFuZSk7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3 LnJvdGF0aW9uOwogCXUzMiBzdHJpZGUsIG1heF9zdHJpZGU7CiAKIAkvKgpAQCAtMjUyLDcgKzI1 Miw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBraWNrIGluIGR1ZSB0aGUgcGxhbmUgYmVpbmcg aW52aXNpYmxlLgogCSAqLwogCWlmIChpbnRlbF9wbGFuZV9jYW5fcmVtYXAocGxhbmVfc3RhdGUp ICYmCi0JICAgICFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCSAgICAhcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKIAkvKiBGSVhNRSBvdGhlciBjb2xvciBwbGFu ZXM/ICovCkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRl KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAKIGludCBpbnRl bF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKIHsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwotCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5i YXNlLnNyYzsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKKwlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+dWFwaS5zcmM7 CiAJdTMyIHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oLCBoc3ViLCB2c3ViOwotCWJvb2wgcm90 YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24p OworCWJvb2wgcm90YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmh3 LnJvdGF0aW9uKTsKIAogCS8qCiAJICogSGFyZHdhcmUgZG9lc24ndCBoYW5kbGUgc3VicGl4ZWwg Y29vcmRpbmF0ZXMuCkBAIC0zNDksMjQgKzM0OSwyNCBAQCBza2xfcHJvZ3JhbV9zY2FsZXIoc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5w aXBlOwogCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwogCWNvbnN0IHN0 cnVjdCBpbnRlbF9zY2FsZXIgKnNjYWxlciA9CiAJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUu c2NhbGVyc1tzY2FsZXJfaWRdOwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3Qu eDE7Ci0JaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKLQl1MzIgY3J0Y193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JdTMyIGNydGNfaCA9 IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgY3J0Y194ID0g cGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFw aS5kc3QueTE7CisJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QpOworCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBp LmRzdCk7CiAJdTE2IHlfaHBoYXNlLCB1dl9yZ2JfaHBoYXNlOwogCXUxNiB5X3ZwaGFzZSwgdXZf cmdiX3ZwaGFzZTsKIAlpbnQgaHNjYWxlLCB2c2NhbGU7CiAKLQloc2NhbGUgPSBkcm1fcmVjdF9j YWxjX2hzY2FsZSgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAotCQkJCSAgICAgICZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QsCisJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0YXRl LT51YXBpLnNyYywKKwkJCQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAogCQkJCSAgICAg IDAsIElOVF9NQVgpOwotCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMsCi0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCwKKwl2c2NhbGUg PSBkcm1fcmVjdF9jYWxjX3ZzY2FsZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAorCQkJCSAgICAg ICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCiAJCQkJICAgICAgMCwgSU5UX01BWCk7CiAKIAkvKiBU T0RPOiBoYW5kbGUgc3ViLXBpeGVsIGNvb3JkaW5hdGVzICovCkBAIC00OTUsMTAgKzQ5NSwxMCBA QCBpY2xfcHJvZ3JhbV9pbnB1dF9jc2Moc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl9Owog CWNvbnN0IHUxNiAqY3NjOwogCi0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09 IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQotCQljc2MgPSBpbnB1dF9jc2NfbWF0cml4W3Bs YW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29kaW5nXTsKKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNv bG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQorCQljc2MgPSBpbnB1dF9j c2NfbWF0cml4W3BsYW5lX3N0YXRlLT5ody5jb2xvcl9lbmNvZGluZ107CiAJZWxzZQotCQljc2Mg PSBpbnB1dF9jc2NfbWF0cml4X2xyW3BsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29kaW5nXTsK KwkJY3NjID0gaW5wdXRfY3NjX21hdHJpeF9scltwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2Rp bmddOwogCiAJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9DU0NfQ09FRkYocGlwZSwgcGxhbmVf aWQsIDApLCBST0ZGKGNzY1swXSkgfAogCQkgICAgICBHT0ZGKGNzY1sxXSkpOwpAQCAtNTEyLDcg KzUxMiw3IEBAIGljbF9wcm9ncmFtX2lucHV0X2NzYyhzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAogCiAJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9DU0NfUFJFT0ZGKHBpcGUsIHBsYW5lX2lk LCAwKSwKIAkJICAgICAgUFJFT0ZGX1lVVl9UT19SR0JfSEkpOwotCWlmIChwbGFuZV9zdGF0ZS0+ YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRSkKKwlpZiAocGxh bmVfc3RhdGUtPmh3LmNvbG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQog CQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0lOUFVUX0NTQ19QUkVPRkYocGlwZSwgcGxhbmVfaWQsIDEp LCAwKTsKIAllbHNlCiAJCUk5MTVfV1JJVEVfRlcoUExBTkVfSU5QVVRfQ1NDX1BSRU9GRihwaXBl LCBwbGFuZV9pZCwgMSksCkBAIC01MzcsMTUgKzUzNywxNSBAQCBza2xfcHJvZ3JhbV9wbGFuZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+ Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5l X3N0cmlkZShwbGFuZV9zdGF0ZSwgY29sb3JfcGxhbmUpOwogCXUzMiBhdXhfc3RyaWRlID0gc2ts X3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgMSk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRl LT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwor CWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT51YXBpLmRzdC55MTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVtjb2xvcl9wbGFuZV0ueDsKIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xv cl9wbGFuZV0ueTsKLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0g cGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmU7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1OCBhbHBoYSA9IHBsYW5lX3N0 YXRlLT5iYXNlLmFscGhhID4+IDg7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisJdTggYWxwaGEgPSBwbGFuZV9zdGF0ZS0+aHcuYWxwaGEg Pj4gODsKIAl1MzIgcGxhbmVfY29sb3JfY3RsID0gMDsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdz OwogCXUzMiBrZXltc2ssIGtleW1heDsKQEAgLTcxOSw5ICs3MTksOSBAQCBzdGF0aWMgdm9pZCBp OXh4X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbOF0pCiBzdGF0aWMgdm9pZAogY2h2X3Vw ZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CisJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwbGFuZV9pZCBwbGFu ZV9pZCA9IHBsYW5lLT5pZDsKIAkvKgogCSAqIHxyfCAgIHwgYzAgYzEgYzIgfCAgIHxjcnwKQEAg LTc0Nyw3ICs3NDcsNyBAQCBjaHZfdXBkYXRlX2NzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogCQkJICAgIDAsIDQwOTYsICA3NjAxLAogCQl9LAogCX07Ci0J Y29uc3QgczE2ICpjc2MgPSBjc2NfbWF0cml4W3BsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29k aW5nXTsKKwljb25zdCBzMTYgKmNzYyA9IGNzY19tYXRyaXhbcGxhbmVfc3RhdGUtPmh3LmNvbG9y X2VuY29kaW5nXTsKIAogCS8qIFNlZW1zIFJHQiBkYXRhIGJ5cGFzc2VzIHRoZSBDU0MgYWx3YXlz ICovCiAJaWYgKCFmYi0+Zm9ybWF0LT5pc195dXYpCkBAIC03NzgsMTUgKzc3OCwxNSBAQCBjaHZf dXBkYXRlX2NzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQog c3RhdGljIHZvaWQKIHZsdl91cGRhdGVfY2xyYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Ci0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK Kwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsK IAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSBwbGFuZS0+aWQ7CiAJaW50IGNvbnRyYXN0LCBicmlnaHRuZXNzLCBzaF9zY2FsZSwgc2hfc2lu LCBzaF9jb3M7CiAKIAlpZiAoZmItPmZvcm1hdC0+aXNfeXV2ICYmCi0JICAgIHBsYW5lX3N0YXRl LT5iYXNlLmNvbG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKSB7CisJ ICAgIHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1JfTElNSVRF RF9SQU5HRSkgewogCQkvKgogCQkgKiBFeHBhbmQgbGltaXRlZCByYW5nZSB0byBmdWxsIHJhbmdl OgogCQkgKiBDb250cmFzdCBpcyBhcHBsaWVkIGZpcnN0IGFuZCBpcyB1c2VkIHRvIGV4cGFuZCBZ IHJhbmdlLgpAQCAtODI3LDggKzgyNyw4IEBAIHN0YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGxfY3J0 Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHN0YXRpYyB1MzIg dmx2X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK LQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKKwl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKIAl1MzIgc3ByY3RsOwogCkBAIC04NzMsNyArODczLDcgQEAgc3RhdGljIHUzMiB2bHZfc3By aXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0 dXJuIDA7CiAJfQogCi0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29kaW5nID09IERS TV9DT0xPUl9ZQ0JDUl9CVDcwOSkKKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNvbG9yX2VuY29kaW5n ID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKIAkJc3ByY3RsIHw9IFNQX1lVVl9GT1JNQVRfQlQ3 MDk7CiAKIAlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQpAQCAt ODkzLDkgKzg5Myw5IEBAIHN0YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIHN0YXRpYyB2b2lkIHZsdl91cGRhdGVfZ2Ft bWEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+ cGlwZTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwogCXUxNiBnYW1tYVs4 XTsKQEAgLTkyNywxMCArOTI3LDEwIEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMF0ub2Zmc2V0OwogCXUzMiBsaW5lYXJfb2Zmc2V0OwogCWNvbnN0IHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Ci0JaW50IGNydGNf eCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwotCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2UuZHN0KTsKLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50 IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwl1MzIgY3J0Y193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJdTMyIGNydGNfaCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVswXS54OwogCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7 CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKQEAgLTEwMzcsOSArMTAzNyw5IEBAIHN0YXRpYyB1 MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlv bjsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5OwogCXUzMiBzcHJjdGw7CiAKQEAgLTEwNzQsMTAgKzEwNzQsMTAgQEAgc3Rh dGljIHUzMiBpdmJfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIAogCXNwcmN0bCB8PSBTUFJJVEVfSU5UX0dBTU1BX0RJU0FCTEU7CiAKLQlpZiAo cGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5 KQorCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNS X0JUNzA5KQogCQlzcHJjdGwgfD0gU1BSSVRFX1lVVl9UT19SR0JfQ1NDX0ZPUk1BVF9CVDcwOTsK IAotCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1Jf RlVMTF9SQU5HRSkKKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNvbG9yX3JhbmdlID09IERSTV9DT0xP Ul9ZQ0JDUl9GVUxMX1JBTkdFKQogCQlzcHJjdGwgfD0gU1BSSVRFX1lVVl9SQU5HRV9DT1JSRUNU SU9OX0RJU0FCTEU7CiAKIAlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJ TEVEKQpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgc3RhdGljIHZvaWQgaXZiX3Nwcml0ZV9saW5lYXJf Z2FtbWEodTE2IGdhbW1hWzE4XSkKIAogc3RhdGljIHZvaWQgaXZiX3VwZGF0ZV9nYW1tYShjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7CiAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKIAl1 MTYgZ2FtbWFbMThdOwpAQCAtMTE0MywxNCArMTE0MywxNCBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3Rh dGUtPmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKIAl1MzIgbGluZWFyX29mZnNldDsKIAljb25zdCBz dHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5 OwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50IGNydGNfeSA9 IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGku ZHN0LngxOworCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJdTMyIGNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCXUzMiBjcnRj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAJdTMyIHggPSBw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xv cl9wbGFuZVswXS55OwotCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMpID4+IDE2OwotCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAJdTMyIHNwcmN0bCwgc3Byc2NhbGUgPSAwOwog CXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKQEAgLTEyNzEsOSArMTI3MSw5IEBAIHN0YXRpYyB1 MzIgZzR4X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlv bjsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5OwogCXUzMiBkdnNjbnRyOwogCkBAIC0xMzA2LDEwICsxMzA2LDEwIEBAIHN0 YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCiAJCXJldHVybiAwOwogCX0KIAotCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xv cl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCisJaWYgKHBsYW5lX3N0YXRlLT5o dy5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCiAJCWR2c2NudHIgfD0g RFZTX1lVVl9GT1JNQVRfQlQ3MDk7CiAKLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFu Z2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCisJaWYgKHBsYW5lX3N0YXRlLT5ody5j b2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRSkKIAkJZHZzY250ciB8PSBE VlNfWVVWX1JBTkdFX0NPUlJFQ1RJT05fRElTQUJMRTsKIAogCWlmIChmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCkBAIC0xMzI4LDkgKzEzMjgsOSBAQCBzdGF0aWMgdTMy IGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCiBzdGF0aWMgdm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3 LmZiOwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJdTE2IGdhbW1hWzhdOwogCWlu dCBpOwpAQCAtMTM2MCw5ICsxMzYwLDkgQEAgc3RhdGljIHZvaWQgaWxrX3Nwcml0ZV9saW5lYXJf Z2FtbWEodTE2IGdhbW1hWzE3XSkKIAogc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9nYW1tYShjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwog CXUxNiBnYW1tYVsxN107CiAJaW50IGk7CkBAIC0xMzk2LDE0ICsxMzk2LDE0IEBAIGc0eF91cGRh dGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgZHZzc3VyZl9vZmZzZXQg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0OwogCXUzMiBsaW5lYXJfb2Zmc2V0 OwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlp bnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCXUzMiBjcnRjX3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQl1MzIgY3J0Y19oID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55 MTsKKwl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7 CisJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsK IAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCXUzMiB5ID0gcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Ci0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OworCXUzMiBzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCXUzMiBzcmNfaCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAl1MzIgZHZzY250ciwgZHZz c2NhbGUgPSAwOwogCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKQEAgLTE1MTEsOSArMTUxMSw5 IEBAIHN0YXRpYyBpbnQKIGc0eF9zcHJpdGVfY2hlY2tfc2NhbGluZyhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQogewotCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmJhc2UuZmI7Ci0JY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjOwotCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRlLT5i YXNlLmRzdDsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+dWFw aS5zcmM7CisJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPnVhcGku ZHN0OwogCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRlLT5o dy5hZGp1c3RlZF9tb2RlOwpAQCAtMTU3MiwxMyArMTU3MiwxMyBAQCBzdGF0aWMgaW50CiBnNHhf c3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFw aS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+YmFzZS5kZXYpOwogCWludCBtaW5fc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1ND QUxJTkc7CiAJaW50IG1heF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAlp bnQgcmV0OwogCi0JaWYgKGludGVsX2ZiX3NjYWxhYmxlKHBsYW5lX3N0YXRlLT5iYXNlLmZiKSkg eworCWlmIChpbnRlbF9mYl9zY2FsYWJsZShwbGFuZV9zdGF0ZS0+aHcuZmIpKSB7CiAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNykgewogCQkJbWluX3NjYWxlID0gMTsKIAkJCW1heF9zY2Fs ZSA9IDE2IDw8IDE2OwpAQCAtMTU4OCw3ICsxNTg4LDcgQEAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJfQogCX0KIAotCXJldCA9IGRybV9h dG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZSwKKwlyZXQg PSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGks CiAJCQkJCQkgICZjcnRjX3N0YXRlLT51YXBpLAogCQkJCQkJICBtaW5fc2NhbGUsIG1heF9zY2Fs ZSwKIAkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7CkBAIC0xNTk5LDcgKzE1OTksNyBAQCBnNHhfc3ByaXRl X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gMDsKIAogCXJldCA9IGludGVsX3Bs YW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7CkBAIC0xNjIwLDkgKzE2MjAs OSBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCiBpbnQgY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsK Kwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAKIAkv KiBDSFYgaWdub3JlcyB0aGUgbWlycm9yIGJpdCB3aGVuIHRoZSByb3RhdGUgYml0IGlzIHNldCA6 KCAqLwogCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgpAQCAtMTY0NSw3ICsxNjQ1LDcg QEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNf c3RhdGUtPnVhcGksCiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJCQkJ CSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgdmx2 X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQor CWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKIAlyZXQgPSBp bnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOwpAQCAtMTY3Miwx MCArMTY3MiwxMCBAQCB2bHZfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNl LmRldik7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3Rh dGlvbjsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5o dy5mYjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247 CiAJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CiAKIAlpZiAoIWZiKQpA QCAtMTc0Nyw5ICsxNzQ3LDkgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZHN0X2Nvb3Jk aW5hdGVzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3MKIAkJCQkJICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lLT5kZXYpOwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50 IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOworCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwogCWludCBwaXBlX3NyY193ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNf dzsKIAogCS8qCkBAIC0xNzc1LDkgKzE3NzUsOSBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVj a19kc3RfY29vcmRpbmF0ZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfcwog CiBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19udjEyX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRp b24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKLQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKKwl1bnNpZ25lZCBpbnQgcm90YXRp b24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CisJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAkvKiBEaXNwbGF5IFdBICMxMTA2 ICovCiAJaWYgKGRybV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0KSAm JiBzcmNfdyAmIDMgJiYKQEAgLTE3OTMsOSArMTc5Myw5IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5l X2NoZWNrX252MTJfcm90YXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zCiBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWludCBtaW5fc2NhbGUg PSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CiAJaW50IG1heF9zY2FsZSA9IERSTV9QTEFO RV9IRUxQRVJfTk9fU0NBTElORzsKIAlpbnQgcmV0OwpAQCAtMTgxMCw3ICsxODEwLDcgQEAgc3Rh dGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCW1heF9zY2FsZSA9IHNrbF9tYXhfc2NhbGUoY3J0Y19zdGF0ZSwgZmItPmZvcm1hdCk7 CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5l X3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkg IG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJICB0cnVlLCB0cnVlKTsKQEAgLTE4MjEsNyAr MTgyMSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQog CQlyZXR1cm4gMDsKIAogCXJldCA9IHNrbF9wbGFuZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwpAQCAtMTgzNyw4ICsxODM3LDggQEAgc3RhdGljIGludCBz a2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCXJl dHVybiByZXQ7CiAKIAkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4ZWwgcHJlY2lzaW9uLCBkaXNh YmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwotCWlmICghKHBsYW5lX3N0YXRlLT5iYXNlLmFscGhh ID4+IDgpKQotCQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7CisJaWYgKCEocGxh bmVfc3RhdGUtPmh3LmFscGhhID4+IDgpKQorCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0g ZmFsc2U7CiAKIAlwbGFuZV9zdGF0ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBw bGFuZV9zdGF0ZSk7CiAKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIHN0YXRpYyBib29sIGhhc19kc3Rf a2V5X2luX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog c3RhdGljIHZvaWQgaW50ZWxfcGxhbmVfc2V0X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSwKIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKnNldCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCXN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDRjOTM1OTk4MWMyNC4uMzNkOGZjNGE2MGFhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGF0aWMgaW50IGludGVs X3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGlj IGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAogCS8qIEZJWE1FIGNo ZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFkICovCiAJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUp CkBAIC04MTAsOSArODEwLDkgQEAgc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkgKiBhcm91bmQgdGhp cyBwcm9ibGVtIHdpdGggdGhlIHdhdGVybWFyayBjb2RlLgogCSAqLwogCWlmIChwbGFuZS0+aWQg PT0gUExBTkVfQ1VSU09SKQotCQlyZXR1cm4gcGxhbmVfc3RhdGUtPmJhc2UuZmIgIT0gTlVMTDsK KwkJcmV0dXJuIHBsYW5lX3N0YXRlLT5ody5mYiAhPSBOVUxMOwogCWVsc2UKLQkJcmV0dXJuIHBs YW5lX3N0YXRlLT5iYXNlLnZpc2libGU7CisJCXJldHVybiBwbGFuZV9zdGF0ZS0+dWFwaS52aXNp YmxlOwogfQogCiBzdGF0aWMgc3RydWN0IGludGVsX2NydGMgKnNpbmdsZV9lbmFibGVkX2NydGMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTA4NCw3ICsxMDg0LDcgQEAg c3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSwKIAkJCSAgaW50IGxldmVsKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRl dik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQogCQkm Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHN0YXRp YyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0 YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0 LT5jcHBbMF07CisJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKIAog CS8qCiAJICogTm90IDEwMCUgc3VyZSB3aGljaCB3YXkgRUxLIHNob3VsZCBnbyBoZXJlIGFzIHRo ZQpAQCAtMTExNyw3ICsxMTE3LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAljbG9jayA9IGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2s7CiAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7CiAK LQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCXdpZHRo ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAKIAlpZiAocGxhbmUt PmlkID09IFBMQU5FX0NVUlNPUikgewogCQl3bSA9IGludGVsX3dtX21ldGhvZDIoY2xvY2ssIGh0 b3RhbCwgd2lkdGgsIGNwcCwgbGF0ZW5jeSk7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBzdGF0aWMg dTMyIGlsa19jb21wdXRlX2ZiY193bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIHN0YXRpYyBib29sIGc0eF9yYXdfcGxhbmVfd21fY29tcHV0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwog CWludCBudW1fbGV2ZWxzID0gaW50ZWxfd21fbnVtX2xldmVscyh0b19pOTE1KHBsYW5lLT5iYXNl LmRldikpOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7CiAJYm9vbCBkaXJ0 eSA9IGZhbHNlOwpAQCAtMTMxNyw4ICsxMzE3LDggQEAgc3RhdGljIGludCBnNHhfY29tcHV0ZV9w aXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWZvcl9lYWNoX29s ZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsCiAJCQkJCSAgICAgb2xkX3Bs YW5lX3N0YXRlLAogCQkJCQkgICAgIG5ld19wbGFuZV9zdGF0ZSwgaSkgewotCQlpZiAobmV3X3Bs YW5lX3N0YXRlLT5iYXNlLmNydGMgIT0gJmNydGMtPmJhc2UgJiYKLQkJICAgIG9sZF9wbGFuZV9z dGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNlKQorCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5o dy5jcnRjICE9ICZjcnRjLT5iYXNlICYmCisJCSAgICBvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMg IT0gJmNydGMtPmJhc2UpCiAJCQljb250aW51ZTsKIAogCQlpZiAoZzR4X3Jhd19wbGFuZV93bV9j b21wdXRlKGNydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSkpCkBAIC0xNTkwLDcgKzE1OTAsNyBA QCBzdGF0aWMgdTE2IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUsCiAJCQkJaW50IGxldmVsKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PQogCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKQEAgLTE2MDIsNyArMTYwMiw3IEBA IHN0YXRpYyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5jcHBbMF07CisJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQt PmNwcFswXTsKIAljbG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7CiAJaHRvdGFsID0g YWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7CiAJd2lkdGggPSBjcnRjX3N0YXRlLT5waXBlX3Ny Y193OwpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgc3RhdGljIGJvb2wgdmx2X3Jhd19wbGFuZV93bV9z ZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgYm9vbCB2bHZf cmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQog ewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0g cGxhbmUtPmlkOwogCWludCBudW1fbGV2ZWxzID0gaW50ZWxfd21fbnVtX2xldmVscyh0b19pOTE1 KHBsYW5lLT5iYXNlLmRldikpOwogCWludCBsZXZlbDsKQEAgLTE4MzgsOCArMTgzOCw4IEBAIHN0 YXRpYyBpbnQgdmx2X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBs YW5lLAogCQkJCQkgICAgIG9sZF9wbGFuZV9zdGF0ZSwKIAkJCQkJICAgICBuZXdfcGxhbmVfc3Rh dGUsIGkpIHsKLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNl ICYmCi0JCSAgICBvbGRfcGxhbmVfc3RhdGUtPmJhc2UuY3J0YyAhPSAmY3J0Yy0+YmFzZSkKKwkJ aWYgKG5ld19wbGFuZV9zdGF0ZS0+aHcuY3J0YyAhPSAmY3J0Yy0+YmFzZSAmJgorCQkgICAgb2xk X3BsYW5lX3N0YXRlLT5ody5jcnRjICE9ICZjcnRjLT5iYXNlKQogCQkJY29udGludWU7CiAKIAkJ aWYgKHZsdl9yYXdfcGxhbmVfd21fY29tcHV0ZShjcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUp KQpAQCAtMjQ4NCw3ICsyNDg0LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9wcmlfd20oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKCFpbnRlbF93bV9w bGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQlj cHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07CisJY3BwID0gcGxhbmVf c3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKIAogCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9k MShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAKQEAgLTI0OTMsNyAr MjQ5Myw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNy dGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUu Y3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3Qp LAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQkgY3Bw LCBtZW1fdmFsdWUpOwogCiAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKQEAgLTI1MTYs MTIgKzI1MTYsMTIgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9zcHJfd20oY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNp YmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQljcHAgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07CisJY3BwID0gcGxhbmVfc3RhdGUtPmh3 LmZiLT5mb3JtYXQtPmNwcFswXTsKIAogCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0 YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0aG9kMiA9IGlsa193bV9tZXRo b2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJ CQkgY3BwLCBtZW1fdmFsdWUpOwogCXJldHVybiBtaW4obWV0aG9kMSwgbWV0aG9kMik7CiB9CkBA IC0yNTQyLDExICsyNTQyLDExIEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfY3VyX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmICghaW50ZWxfd21fcGxh bmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiAwOwogCi0JY3Bw ID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOworCWNwcCA9IHBsYW5lX3N0 YXRlLT5ody5mYi0+Zm9ybWF0LT5jcHBbMF07CiAKIAlyZXR1cm4gaWxrX3dtX21ldGhvZDIoY3J0 Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKIAkJCSAgICAgIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21v ZGUuY3J0Y19odG90YWwsCi0JCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2UuZHN0KSwKKwkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qp LAogCQkJICAgICAgY3BwLCBtZW1fdmFsdWUpOwogfQogCkBAIC0yNTYwLDkgKzI1NjAsMTAgQEAg c3RhdGljIHUzMiBpbGtfY29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUs IHBsYW5lX3N0YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m Yi0+Zm9ybWF0LT5jcHBbMF07CisJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNw cFswXTsKIAotCXJldHVybiBpbGtfd21fZmJjKHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpLCBjcHApOworCXJldHVybiBpbGtfd21fZmJjKHByaV92YWwsIGRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJICBjcHApOwogfQogCiBz dGF0aWMgdW5zaWduZWQgaW50CkBAIC0zMTA2LDEwICszMTA3LDEwIEBAIHN0YXRpYyBpbnQgaWxr X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAog CXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKIAlpZiAoc3By c3RhdGUpIHsKLQkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPmJhc2Uudmlz aWJsZTsKLQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxl ICYmCi0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rf d2lkdGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYgfHwKLQkJCSBkcm1fcmVjdF9oZWlnaHQo JnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+YmFzZS5z cmMpID4+IDE2KTsKKwkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnVhcGku dmlzaWJsZTsKKwkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+dWFwaS52aXNp YmxlICYmCisJCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3Jl Y3Rfd2lkdGgoJnNwcnN0YXRlLT51YXBpLnNyYykgPj4gMTYgfHwKKwkJCSBkcm1fcmVjdF9oZWln aHQoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFw aS5zcmMpID4+IDE2KTsKIAl9CiAKIAl1c2FibGVfbGV2ZWwgPSBtYXhfbGV2ZWw7CkBAIC00MDU2 LDEwICs0MDU3LDEwIEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAqCiAJICogbi5iLiwgc3JjIGlzIDE2LjE2 IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdlci4KIAkgKi8KLQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCXNyY19oID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWRzdF93ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JZHN0X2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+dWFwaS5kc3QpOworCWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QpOwogCiAJZnBfd19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7 CiAJZnBfaF9yYXRpbyA9IGRpdl9maXhlZDE2KHNyY19oLCBkc3RfaCk7CkBAIC00MTI1LDExICs0 MTI2LDExIEBAIGludCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YywKIAkJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChXQVJOX09OKCFwbGFuZV9z dGF0ZS0+YmFzZS5mYikpCisJCWlmIChXQVJOX09OKCFwbGFuZV9zdGF0ZS0+aHcuZmIpKQogCQkJ cmV0dXJuIC1FSU5WQUw7CiAKIAkJcGxhbmVfZG93bnNjYWxlID0gc2tsX3BsYW5lX2Rvd25zY2Fs ZV9hbW91bnQoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwotCQlicHAgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF0gKiA4OworCQlicHAgPSBwbGFuZV9zdGF0ZS0+aHcuZmIt PmZvcm1hdC0+Y3BwWzBdICogODsKIAkJaWYgKGJwcCA9PSA2NCkKIAkJCXBsYW5lX2Rvd25zY2Fs ZSA9IG11bF9maXhlZDE2KHBsYW5lX2Rvd25zY2FsZSwKIAkJCQkJCSAgICAgIGZwXzlfZGl2Xzgp OwpAQCAtNDE2MSwxNCArNDE2MiwxNCBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAogCQkJICAgICBpbnQgY29sb3Jf cGxhbmUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CisJY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTMyIGRhdGFfcmF0ZTsK IAl1MzIgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBkb3duX3Nj YWxlX2Ftb3VudDsKIAl1NjQgcmF0ZTsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJs ZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJaWYg KHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpCkBAIC00MTgzLDggKzQxODQsOCBAQCBza2xfcGxh bmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBt YXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Ig cm90YXRpb24gaGVyZS4KIAkgKi8KLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMpID4+IDE2OwotCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+dWFwaS5zcmMpID4+IDE2OworCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCS8qIFVWIHBsYW5lIGRvZXMgMS8yIHBpeGVsIHN1Yi1z YW1wbGluZyAqLwogCWlmIChjb2xvcl9wbGFuZSA9PSAxKSB7CkBAIC00NjgzLDcgKzQ2ODQsNyBA QCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKIAkJCSAgICBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsIGludCBjb2xvcl9w bGFuZSkKIHsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmh3LmZiOwogCWludCB3aWR0aDsKIAogCS8qCkBAIC00NjkxLDExICs0NjkyLDExIEBAIHNr bF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkgKiB0aGUgOTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAo dG8gbWF0Y2ggdGhlCiAJICogR1RUIG1hcHBpbmcpLCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQg Zm9yIHJvdGF0aW9uIGhlcmUuCiAJICovCi0Jd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCiAJcmV0dXJuIHNrbF9jb21wdXRlX3dtX3BhcmFtcyhj cnRjX3N0YXRlLCB3aWR0aCwKIAkJCQkgICAgIGZiLT5mb3JtYXQsIGZiLT5tb2RpZmllciwKLQkJ CQkgICAgIHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uLAorCQkJCSAgICAgcGxhbmVfc3RhdGUt Pmh3LnJvdGF0aW9uLAogCQkJCSAgICAgc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUpLAogCQkJCSAgICAgd3AsIGNvbG9yX3BsYW5lKTsKIH0KQEAg LTQ5NzMsOCArNDk3NCw4IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogc3RhdGljIGludCBza2xfYnVpbGRfcGxh bmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m YjsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7CiAJ aW50IHJldDsKIApAQCAtNDk5OSw3ICs1MDAwLDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGxh bmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgaW50IGlj bF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0J ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKS0+aWQ7CisJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT51YXBpLnBsYW5lKS0+aWQ7CiAJaW50IHJldDsKIAogCS8qIFdhdGVybWFya3Mg Y2FsY3VsYXRlZCBpbiBtYXN0ZXIgKi8KQEAgLTUwMDcsNyArNTAwOCw3IEBAIHN0YXRpYyBpbnQg aWNsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQlyZXR1cm4gMDsKIAogCWlmIChwbGFuZV9zdGF0ZS0+cGxhbmFyX2xpbmtlZF9wbGFuZSkgewot CQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi OworCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAkJZW51bSBwbGFuZV9pZCB5X3BsYW5lX2lkID0gcGxhbmVfc3RhdGUtPnBsYW5hcl9saW5r ZWRfcGxhbmUtPmlkOwogCiAJCVdBUk5fT04oIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19z dGF0ZSwgcGxhbmVfc3RhdGUpKTsKQEAgLTYwMzIsNyArNjAzMyw3IEBAIHZvaWQgZzR4X3dtX3Nh bml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51bSBwbGFuZV9p ZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJCWNv bnRpbnVlOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKyspIHsKQEAgLTYx ODcsNyArNjE4OCw3IEBAIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJ aW50IGxldmVsOwogCi0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAocGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAobGV2ZWwgPSAw OyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Ci0tIAoyLjIzLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==