From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9887D6E88D for ; Fri, 24 Jul 2020 20:23:01 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 24 Jul 2020 22:22:28 +0200 Message-Id: <20200724202233.14952-10-zbigniew.kempczynski@intel.com> In-Reply-To: <20200724202233.14952-1-zbigniew.kempczynski@intel.com> References: <20200724202233.14952-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6 09/14] tests/gem|kms: remove libdrm dependency (batch 1) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: RnJvbTogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgoK VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClRl c3RzIGNoYW5nZWQ6Ci0gZ2VtX2NvbmN1cnJlbnRfYWxsCi0gZ2VtX3BwZ3R0Ci0ga21zX2RyYXdf Y3JjCi0ga21zX2Zyb250YnVmZmVyX3RyYWNraW5nCi0ga21zX3BzcgoKU2lnbmVkLW9mZi1ieTog RG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgpDYzogWmJp Z25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2dl bV9jb25jdXJyZW50X2FsbC5jICB8IDQzMSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiB0ZXN0cy9pOTE1L2dlbV9wcGd0dC5jICAgICAgICAgICB8IDE4MyArKysrKystLS0tLS0tCiB0 ZXN0cy9rbXNfZHJhd19jcmMuYyAgICAgICAgICAgICB8ICAyMCArLQogdGVzdHMva21zX2Zyb250 YnVmZmVyX3RyYWNraW5nLmMgfCAgMjAgKy0KIHRlc3RzL2ttc19wc3IuYyAgICAgICAgICAgICAg ICAgIHwgMTM0ICsrKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyks IDM5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50 X2FsbC5jIGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwppbmRleCA4MDI3OGM3NS4u NmJhMTI4NTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKKysr IGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwpAQCAtNjQsNyArNjQsOSBAQCBpbnQg cGFzczsKIHN0cnVjdCBjcmVhdGUgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJdm9pZCAoKnJlcXVp cmUpKGNvbnN0IHN0cnVjdCBjcmVhdGUgKiwgdW5zaWduZWQpOwotCWRybV9pbnRlbF9ibyAqKCpj cmVhdGUpKGRybV9pbnRlbF9idWZtZ3IgKiwgdWludDY0X3Qgc2l6ZSk7CisJc3RydWN0IGludGVs X2J1ZiAqKCpjcmVhdGUpKHN0cnVjdCBidWZfb3BzICpib3BzLCB1aW50MzJfdCB3aWR0aCwKKwkJ CQkgICAgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCB0aWxpbmcsCisJCQkJICAgIHVpbnQ2NF90 IHNpemUpOwogfTsKIAogc3RydWN0IHNpemUgewpAQCAtNzcsMTAgKzc5LDEwIEBAIHN0cnVjdCBi dWZmZXJzIHsKIAljb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGU7CiAJY29uc3Qgc3RydWN0IGFj Y2Vzc19tb2RlICptb2RlOwogCWNvbnN0IHN0cnVjdCBzaXplICpzaXplOwotCWRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwotCWRybV9p bnRlbF9ibyAqKnNyYywgKipkc3Q7Ci0JZHJtX2ludGVsX2JvICpzbm9vcCwgKnNwYXJlOworCXN0 cnVjdCBidWZfb3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0cnVjdCBpbnRl bF9idWYgKipzcmMsICoqZHN0OworCXN0cnVjdCBpbnRlbF9idWYgKnNub29wLCAqc3BhcmU7CiAJ dWludDMyX3QgKnRtcDsKIAlpbnQgd2lkdGgsIGhlaWdodCwgbnBpeGVscywgcGFnZV9zaXplOwog CWludCBjb3VudCwgbnVtX2J1ZmZlcnM7CkBAIC04OCwyOSArOTAsMzIgQEAgc3RydWN0IGJ1ZmZl cnMgewogCiAjZGVmaW5lIE1JTl9CVUZGRVJTIDMKIAotc3RhdGljIHZvaWQgYmx0X2NvcHlfYm8o c3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNyYyk7 CitzdGF0aWMgdm9pZCBibHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVs X2J1ZiAqZHN0LAorCQkJc3RydWN0IGludGVsX2J1ZiAqc3JjKTsKIAogc3RhdGljIHZvaWQKLW5v cF9yZWxlYXNlX2JvKGRybV9pbnRlbF9ibyAqYm8pCitub3BfcmVsZWFzZV9ibyhzdHJ1Y3QgaW50 ZWxfYnVmICpidWYpCiB7Ci0JZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKKwlpZiAoYnVm LT5wdHIpCisJCWludGVsX2J1Zl91bm1hcChidWYpOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7 CiB9CiAKIHN0YXRpYyB2b2lkCi1wcndfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50 ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitwcndfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBz dHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlmb3IgKGludCBpID0gMDsg aSA8IGItPm5waXhlbHM7IGkrKykKIAkJYi0+dG1wW2ldID0gdmFsOwotCWRybV9pbnRlbF9ib19z dWJkYXRhKGJvLCAwLCA0KmItPm5waXhlbHMsIGItPnRtcCk7CisJZ2VtX3dyaXRlKGZkLCBidWYt PmhhbmRsZSwgMCwgYi0+dG1wLCA0KmItPm5waXhlbHMpOwogfQogCiBzdGF0aWMgdm9pZAotcHJ3 X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFs KQorcHJ3X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1 aW50MzJfdCB2YWwpCiB7CiAJdWludDMyX3QgKnZhZGRyOwogCiAJdmFkZHIgPSBiLT50bXA7Ci0J ZG9fb3JfZGllKGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShibywgMCwgNCpiLT5ucGl4ZWxzLCB2 YWRkcikpOworCWdlbV9yZWFkKGZkLCBidWYtPmhhbmRsZSwgMCwgdmFkZHIsIDQqYi0+bnBpeGVs cyk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBiLT5ucGl4ZWxzOyBpKyspCiAJCWlndF9hc3NlcnRf ZXFfdTMyKHZhZGRyW2ldLCB2YWwpOwogfQpAQCAtMTE4LDMxICsxMjMsMzMgQEAgcHJ3X2NtcF9i byhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQogI2Rl ZmluZSBwaXhlbCh5LCB3aWR0aCkgKCh5KSood2lkdGgpICsgKCgoeSkgKyBwYXNzKSUod2lkdGgp KSkKIAogc3RhdGljIHZvaWQKLXBhcnRpYWxfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1f aW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitwYXJ0aWFsX3NldF9ibyhzdHJ1Y3QgYnVmZmVy cyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJZm9yIChpbnQg eSA9IDA7IHkgPCBiLT5oZWlnaHQ7IHkrKykKLQkJZG9fb3JfZGllKGRybV9pbnRlbF9ib19zdWJk YXRhKGJvLCA0KnBpeGVsKHksIGItPndpZHRoKSwgNCwgJnZhbCkpOworCQlnZW1fd3JpdGUoZmQs IGJ1Zi0+aGFuZGxlLCA0KnBpeGVsKHksIGItPndpZHRoKSwgJnZhbCwgNCk7CiB9CiAKIHN0YXRp YyB2b2lkCi1wYXJ0aWFsX2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpi bywgdWludDMyX3QgdmFsKQorcGFydGlhbF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVj dCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWZvciAoaW50IHkgPSAwOyB5IDwg Yi0+aGVpZ2h0OyB5KyspIHsKLQkJdWludDMyX3QgYnVmOwotCQlkb19vcl9kaWUoZHJtX2ludGVs X2JvX2dldF9zdWJkYXRhKGJvLCA0KnBpeGVsKHksIGItPndpZHRoKSwgNCwgJmJ1ZikpOwotCQlp Z3RfYXNzZXJ0X2VxX3UzMihidWYsIHZhbCk7CisJCXVpbnQzMl90IHRtcDsKKworCQlnZW1fcmVh ZChmZCwgYnVmLT5oYW5kbGUsIDQqcGl4ZWwoeSwgYi0+d2lkdGgpLCAmdG1wLCA0KTsKKwkJaWd0 X2Fzc2VydF9lcV91MzIodG1wLCB2YWwpOwogCX0KIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAq Ci1jcmVhdGVfbm9ybWFsX2JvKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgdWludDY0X3Qgc2l6 ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9ub3JtYWxfYm8oc3RydWN0IGJ1 Zl9vcHMgKmJvcHMsIHVpbnQzMl90IHdpZHRoLAorCQkgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJf dCB0aWxpbmcsIHVpbnQ2NF90IHNpemUpCiB7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdHJ1Y3Qg aW50ZWxfYnVmICpidWY7CisJaW50IGJwcCA9IHNpemUvaGVpZ2h0L3dpZHRoICogODsKIAotCWJv ID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgImJvIiwgc2l6ZSwgMCk7Ci0JaWd0X2Fzc2Vy dChibyk7CisJYnVmID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0LCBicHAs IDAsIHRpbGluZywgMCk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGlj IHZvaWQgY2FuX2NyZWF0ZV9ub3JtYWwoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNp Z25lZCBjb3VudCkKQEAgLTE1MCwxOSArMTU3LDI2IEBAIHN0YXRpYyB2b2lkIGNhbl9jcmVhdGVf bm9ybWFsKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCiB9CiAK ICNpZiBIQVZFX0NSRUFURV9QUklWQVRFCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0ZV9w cml2YXRlX2JvKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgdWludDY0X3Qgc2l6ZSkKK3N0YXRp YyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9wcml2YXRlX2JvKGJ1Zl9vcHMgKmJvcHMsIHVp bnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsCisJCSAgdWludDMyX3QgdGlsaW5nLCB1aW50 NjRfdCBzaXplKQogewotCWRybV9pbnRlbF9ibyAqYm87Ci0JdWludDMyX3QgaGFuZGxlOworCXN0 cnVjdCBpbnRlbF9idWYgKmJ1ZjsKKwl1aW50MzJfdCBoYW5kbGUsIGJ1Zl9oYW5kbGUsIG5hbWU7 CisJaW50IGJwcCA9IHNpemUvaGVpZ2h0L3dpZHRoICogODsKIAogCS8qIFhYWCBnZW1fY3JlYXRl X3dpdGhfZmxhZ3MoZmQsIHNpemUsIEk5MTVfQ1JFQVRFX1BSSVZBVEUpOyAqLwogCiAJaGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgc2l6ZSk7Ci0JYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhi dWZtZ3IsIGZkLCAic3RvbGVuIiwgaGFuZGxlKTsKKwluYW1lID0gZ2VtX2ZsaW5rKGZkLCBoYW5k bGUpOworCWJ1Zl9oYW5kbGUgPSBnZW1fb3BlbihmZCwgbmFtZSk7CisKKwlidWYgPSBjYWxsb2Mo MSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYm9wcywgYnVm X2hhbmRsZSwgYnVmLCB3aWR0aCwgaGVpZ2h0LAorCQkJCSAgICBicHAsIDAsIHRpbGluZywgMCk7 CiAJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwogCi0JcmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9 CiAKIHN0YXRpYyB2b2lkIGNhbl9jcmVhdGVfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpj cmVhdGUsIHVuc2lnbmVkIGNvdW50KQpAQCAtMTcyLDE5ICsxODYsMjYgQEAgc3RhdGljIHZvaWQg Y2FuX2NyZWF0ZV9wcml2YXRlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQg Y291bnQpCiAjZW5kaWYKIAogI2lmIEhBVkVfQ1JFQVRFX1NUT0xFTgotc3RhdGljIGRybV9pbnRl bF9ibyAqCi1jcmVhdGVfc3RvbGVuX2JvKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgdWludDY0 X3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9zdG9sZW5fYm8oYnVm X29wcyAqYm9wcywgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwKKwkJIHVpbnQzMl90 IHRpbGluZywgdWludDY0X3Qgc2l6ZSkKIHsKLQlkcm1faW50ZWxfYm8gKmJvOwotCXVpbnQzMl90 IGhhbmRsZTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CisJdWludDMyX3QgaGFuZGxlLCBidWZf aGFuZGxlLCBuYW1lOworCWludCBicHAgPSBzaXplL2hlaWdodC93aWR0aCAqIDg7CiAKLQkvKiBY WFggZ2VtX2NyZWF0ZV93aXRoX2ZsYWdzKGZkLCBzaXplLCBJOTE1X0NSRUFURV9TVE9MRU4pOyAq LworCS8qIFhYWCBnZW1fY3JlYXRlX3dpdGhfZmxhZ3MoZmQsIHNpemUsIEk5MTVfQ1JFQVRFX1BS SVZBVEUpOyAqLwogCiAJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgc2l6ZSk7Ci0JYm8gPSBnZW1f aGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGZkLCAic3RvbGVuIiwgaGFuZGxlKTsKKwluYW1l ID0gZ2VtX2ZsaW5rKGZkLCBoYW5kbGUpOworCWJ1Zl9oYW5kbGUgPSBnZW1fb3BlbihmZCwgbmFt ZSk7CisKKwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91 c2luZ19oYW5kbGUoYm9wcywgYnVmX2hhbmRsZSwgYnVmLCB3aWR0aCwgaGVpZ2h0LAorCQkJCSAg ICBicHAsIDAsIHRpbGluZywgMCk7CiAJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwogCi0JcmV0dXJu IGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkIGNhbl9jcmVhdGVfc3RvbGVuKGNv bnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCkBAIC0yMDEsMTAgKzIy MiwxNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY3B1X3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0 ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKICNlbmRpZgogfQogCi1zdGF0aWMgZHJtX2ludGVs X2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3Qg YnVmZmVycyAqYiwgdWludDMyX3QgdGlsaW5nKQoreworCXJldHVybiBiLT5jcmVhdGUtPmNyZWF0 ZShiLT5ib3BzLCBiLT53aWR0aCwgYi0+aGVpZ2h0LAorCQkJCSB0aWxpbmcsIDQqYi0+bnBpeGVs cyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIHVubWFwcGVkX2NyZWF0ZV9ibyhj b25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQlyZXR1cm4gYi0+Y3JlYXRlLT5jcmVhdGUoYi0+ YnVmbWdyLCA0KmItPm5waXhlbHMpOworCXJldHVybiBjcmVhdGVfYm8oYiwgSTkxNV9USUxJTkdf Tk9ORSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZV9zbm9vcF9yZXF1aXJlKGNvbnN0IHN0cnVj dCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCkBAIC0yMTMsMTYgKzI0MSwxNSBAQCBz dGF0aWMgdm9pZCBjcmVhdGVfc25vb3BfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVh dGUsIHVuc2lnbmVkIGNvdW50KQogCWlndF9yZXF1aXJlKCFnZW1faGFzX2xsYyhmZCkpOwogfQog Ci1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIHNub29w X2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQlkcm1faW50ZWxfYm8gKmJv OworCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsKIAotCWJvID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIp OwotCWdlbV9zZXRfY2FjaGluZyhmZCwgYm8tPmhhbmRsZSwgSTkxNV9DQUNISU5HX0NBQ0hFRCk7 Ci0JZHJtX2ludGVsX2JvX2Rpc2FibGVfcmV1c2UoYm8pOworCWJ1ZiA9IHVubWFwcGVkX2NyZWF0 ZV9ibyhiKTsKKwlnZW1fc2V0X2NhY2hpbmcoZmQsIGJ1Zi0+aGFuZGxlLCBJOTE1X0NBQ0hJTkdf Q0FDSEVEKTsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZCBj cmVhdGVfdXNlcnB0cl9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWdu ZWQgY291bnQpCkBAIC0yNTEsMTEgKzI3OCwxMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfdXNlcnB0 cl9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCiAJ aWd0X3JlcXVpcmUoaGFzX3VzZXJwdHIpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0 YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIHVzZXJwdHJfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBi dWZmZXJzICpiKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB1c2VycHRyOwotCWRy bV9pbnRlbF9ibyAqYm87CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOwogCXZvaWQgKnB0cjsKIAog CW1lbXNldCgmdXNlcnB0ciwgMCwgc2l6ZW9mKHVzZXJwdHIpKTsKQEAgLTI2Niw1NCArMjkzLDQ4 IEBAIHVzZXJwdHJfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogCWlndF9hc3Nl cnQocHRyICE9ICh2b2lkICopLTEpOwogCXVzZXJwdHIudXNlcl9wdHIgPSB0b191c2VyX3BvaW50 ZXIocHRyKTsKIAotI2lmIDAKIAlkb19vcl9kaWUoZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1 X0dFTV9VU0VSUFRSLCAmdXNlcnB0cikpOwotCWJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8o Yi0+YnVmbWdyLCBmZCwgInVzZXJwdHIiLCB1c2VycHRyLmhhbmRsZSk7Ci0JZ2VtX2Nsb3NlKGZk LCB1c2VycHRyLmhhbmRsZSk7Ci0jZWxzZQotCWJvID0gZHJtX2ludGVsX2JvX2FsbG9jX3VzZXJw dHIoYi0+YnVmbWdyLCAibmFtZSIsCi0JCQkJCXB0ciwgSTkxNV9USUxJTkdfTk9ORSwgMCwKLQkJ CQkJdXNlcnB0ci51c2VyX3NpemUsIDApOwotCWlndF9hc3NlcnQoYm8pOwotI2VuZGlmCi0JYm8t PnZpcnR1YWwgPSBmcm9tX3VzZXJfcG9pbnRlcih1c2VycHRyLnVzZXJfcHRyKTsKKwlidWYgPSBj YWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYi0+ Ym9wcywgdXNlcnB0ci5oYW5kbGUsIGJ1ZiwgYi0+d2lkdGgsCisJCQkJICAgIGItPmhlaWdodCwg MzIsIDAsIEk5MTVfVElMSU5HX05PTkUsIDApOworCisJYnVmLT5wdHIgPSAodm9pZCAqKSBmcm9t X3VzZXJfcG9pbnRlcih1c2VycHRyLnVzZXJfcHRyKTsKIAotCXJldHVybiBibzsKKwlyZXR1cm4g YnVmOwogfQogCiBzdGF0aWMgdm9pZAotdXNlcnB0cl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIs IGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK3VzZXJwdHJfc2V0X2JvKHN0cnVjdCBi dWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQg c2l6ZSA9IGItPm5waXhlbHM7Ci0JdWludDMyX3QgKnZhZGRyID0gYm8tPnZpcnR1YWw7CisJdWlu dDMyX3QgKnZhZGRyID0gYnVmLT5wdHI7CiAKLQlnZW1fc2V0X2RvbWFpbihmZCwgYm8tPmhhbmRs ZSwKKwlnZW1fc2V0X2RvbWFpbihmZCwgYnVmLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9E T01BSU5fQ1BVLCBJOTE1X0dFTV9ET01BSU5fQ1BVKTsKIAl3aGlsZSAoc2l6ZS0tKQogCQkqdmFk ZHIrKyA9IHZhbDsKIH0KIAogc3RhdGljIHZvaWQKLXVzZXJwdHJfY21wX2JvKHN0cnVjdCBidWZm ZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCit1c2VycHRyX2NtcF9ibyhz dHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7 CiAJaW50IHNpemUgPSAgYi0+bnBpeGVsczsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVh bDsKKwl1aW50MzJfdCAqdmFkZHIgPSBidWYtPnB0cjsKIAotCWdlbV9zZXRfZG9tYWluKGZkLCBi by0+aGFuZGxlLAorCWdlbV9zZXRfZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKIAkJICAgICAgIEk5 MTVfR0VNX0RPTUFJTl9DUFUsIDApOwogCXdoaWxlIChzaXplLS0pCiAJCWlndF9hc3NlcnRfZXFf dTMyKCp2YWRkcisrLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZAotdXNlcnB0cl9yZWxlYXNlX2Jv KGRybV9pbnRlbF9ibyAqYm8pCit1c2VycHRyX3JlbGVhc2VfYm8oc3RydWN0IGludGVsX2J1ZiAq YnVmKQogewotCWlndF9hc3NlcnQoYm8tPnZpcnR1YWwpOworCWlndF9hc3NlcnQoYnVmLT5wdHIp OwogCi0JbXVubWFwKGJvLT52aXJ0dWFsLCBiby0+c2l6ZSk7Ci0JYm8tPnZpcnR1YWwgPSBOVUxM OworCW11bm1hcChidWYtPnB0ciwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOwogCi0JZHJtX2ludGVs X2JvX3VucmVmZXJlbmNlKGJvKTsKKwlpbnRlbF9idWZfZGVzdHJveShidWYpOwogfQogCiBzdGF0 aWMgdm9pZCBjcmVhdGVfZG1hYnVmX3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRl LCB1bnNpZ25lZCBjb3VudCkKQEAgLTM0OSwxMyArMzcwLDE0IEBAIHN0cnVjdCBkbWFidWYgewog CXZvaWQgKm1hcDsKIH07CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBp bnRlbF9idWYgKgogZG1hYnVmX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsK IAlzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSBhcmdzOwotCWRybV9pbnRlbF9ibyAqYm87CisJc3Rh dGljIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWY7CiAJaW50 IHNpemU7CisJdWludDMyX3QgaGFuZGxlOwogCiAJc2l6ZSA9IGItPnBhZ2Vfc2l6ZTsKIApAQCAt MzY2LDkgKzM4OCwxMiBAQCBkbWFidWZfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpi KQogCiAJZG9faW9jdGwoZmQsIERSTV9JT0NUTF9QUklNRV9IQU5ETEVfVE9fRkQsICZhcmdzKTsK IAlnZW1fY2xvc2UoZmQsIGFyZ3MuaGFuZGxlKTsKKwlpZ3RfYXNzZXJ0KGFyZ3MuZmQgIT0gLTEp OwogCi0JYm8gPSBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGItPmJ1Zm1nciwg YXJncy5mZCwgc2l6ZSk7Ci0JaWd0X2Fzc2VydChibyk7CisJaGFuZGxlID0gcHJpbWVfZmRfdG9f aGFuZGxlKGJ1Zl9vcHNfZ2V0X2ZkKGItPmJvcHMpLCBhcmdzLmZkKTsKKwlidWYgPSBjYWxsb2Mo MSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYi0+Ym9wcywg aGFuZGxlLCBidWYsIGItPndpZHRoLAorCQkJCSAgICBiLT5oZWlnaHQsIDMyLCAwLCBJOTE1X1RJ TElOR19OT05FLCAwKTsKIAogCWRtYWJ1ZiA9IG1hbGxvYyhzaXplb2YoKmRtYWJ1ZikpOwogCWln dF9hc3NlcnQoZG1hYnVmKTsKQEAgLTM3OSwxNSArNDA0LDE1IEBAIGRtYWJ1Zl9jcmVhdGVfYm8o Y29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAJCQkgICBkbWFidWYtPmZkLCAwKTsKIAlpZ3RfYXNz ZXJ0KGRtYWJ1Zi0+bWFwICE9ICh2b2lkICopLTEpOwogCi0JYm8tPnZpcnR1YWwgPSBkbWFidWY7 CisJYnVmLT5wdHIgPSAodm9pZCAqKSBkbWFidWY7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1 ZjsKIH0KIAogc3RhdGljIHZvaWQKLWRtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRy bV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2RtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZl cnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCXN0cnVjdCBk bWFidWYgKmRtYWJ1ZiA9IGJvLT52aXJ0dWFsOworCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICh2 b2lkICopIGJ1Zi0+cHRyOwogCXVpbnQzMl90ICp2ID0gZG1hYnVmLT5tYXA7CiAJaW50IHk7CiAK QEAgLTM5OCw5ICs0MjMsOSBAQCBkbWFidWZfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1f aW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiB9CiAKIHN0YXRpYyB2b2lkCi1kbWFidWZfY21w X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitk bWFidWZfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVp bnQzMl90IHZhbCkKIHsKLQlzdHJ1Y3QgZG1hYnVmICpkbWFidWYgPSBiby0+dmlydHVhbDsKKwlz dHJ1Y3QgZG1hYnVmICpkbWFidWYgPSAodm9pZCAqKSBidWYtPnB0cjsKIAl1aW50MzJfdCAqdiA9 IGRtYWJ1Zi0+bWFwOwogCWludCB5OwogCkBAIC00MTEsMTcgKzQzNiwxNiBAQCBkbWFidWZfY21w X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiB9 CiAKIHN0YXRpYyB2b2lkCi1kbWFidWZfcmVsZWFzZV9ibyhkcm1faW50ZWxfYm8gKmJvKQorZG1h YnVmX3JlbGVhc2VfYm8oc3RydWN0IGludGVsX2J1ZiAqYnVmKQogewotCXN0cnVjdCBkbWFidWYg KmRtYWJ1ZiA9IGJvLT52aXJ0dWFsOworCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICh2b2lkICop IGJ1Zi0+cHRyOwogCWlndF9hc3NlcnQoZG1hYnVmKTsKIAotCW11bm1hcChkbWFidWYtPm1hcCwg Ym8tPnNpemUpOworCW11bm1hcChkbWFidWYtPm1hcCwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOwog CWNsb3NlKGRtYWJ1Zi0+ZmQpOwogCWZyZWUoZG1hYnVmKTsKIAotCWJvLT52aXJ0dWFsID0gTlVM TDsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8pOworCWludGVsX2J1Zl9kZXN0cm95KGJ1 Zik7CiB9CiAKIHN0YXRpYyBib29sIGhhc19wcmltZV9leHBvcnQoaW50IF9mZCkKQEAgLTQ0Niwx MyArNDcwLDE0IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ndHRfcmVxdWlyZShjb25zdCBzdHJ1Y3Qg Y3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50KQogCWdlbV9yZXF1aXJlX21hcHBhYmxlX2dn dHQoZmQpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf YnVmICoKIHZnZW1fY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXN0cnVj dCBkcm1fcHJpbWVfaGFuZGxlIGFyZ3M7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdHJ1Y3QgaW50 ZWxfYnVmICpidWY7CiAJc3RydWN0IHZnZW1fYm8gdmdlbTsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFi dWY7CisJdWludDMyX3QgaGFuZGxlOwogCiAJaWd0X2Fzc2VydCh2Z2VtX2RydiAhPSAtMSk7CiAK QEAgLTQ3MCw4ICs0OTUsMTEgQEAgdmdlbV9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMg KmIpCiAJZ2VtX2Nsb3NlKHZnZW1fZHJ2LCBhcmdzLmhhbmRsZSk7CiAJaWd0X2Fzc2VydChhcmdz LmZkICE9IC0xKTsKIAotCWJvID0gZHJtX2ludGVsX2JvX2dlbV9jcmVhdGVfZnJvbV9wcmltZShi LT5idWZtZ3IsIGFyZ3MuZmQsIHZnZW0uc2l6ZSk7Ci0JaWd0X2Fzc2VydChibyk7CisJaGFuZGxl ID0gcHJpbWVfZmRfdG9faGFuZGxlKGJ1Zl9vcHNfZ2V0X2ZkKGItPmJvcHMpLCBhcmdzLmZkKTsK KwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19o YW5kbGUoYi0+Ym9wcywgaGFuZGxlLCBidWYsCisJCQkJICAgIHZnZW0ud2lkdGgsIHZnZW0uaGVp Z2h0LCB2Z2VtLmJwcCwKKwkJCQkgICAgMCwgSTkxNV9USUxJTkdfTk9ORSwgMCk7CiAKIAlkbWFi dWYgPSBtYWxsb2Moc2l6ZW9mKCpkbWFidWYpKTsKIAlpZ3RfYXNzZXJ0KGRtYWJ1Zik7CkBAIC00 ODIsNjQgKzUxMCw1OCBAQCB2Z2VtX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikK IAkJCSAgIGRtYWJ1Zi0+ZmQsIDApOwogCWlndF9hc3NlcnQoZG1hYnVmLT5tYXAgIT0gKHZvaWQg KiktMSk7CiAKLQliby0+dmlydHVhbCA9IGRtYWJ1ZjsKKwlidWYtPnB0ciA9ICh2b2lkICopIGRt YWJ1ZjsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZAotZ3R0 X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFs KQorZ3R0X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1 aW50MzJfdCB2YWwpCiB7Ci0JdWludDMyX3QgKnZhZGRyID0gYm8tPnZpcnR1YWw7CisJdWludDMy X3QgKnZhZGRyID0gYnVmLT5wdHI7CisKKwlnZW1fc2V0X2RvbWFpbihmZCwgYnVmLT5oYW5kbGUs CisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKIAot CWRybV9pbnRlbF9nZW1fYm9fc3RhcnRfZ3R0X2FjY2VzcyhibywgdHJ1ZSk7CiAJZm9yIChpbnQg eSA9IDA7IHkgPCBiLT5oZWlnaHQ7IHkrKykKIAkJdmFkZHJbcGl4ZWwoeSwgYi0+d2lkdGgpXSA9 IHZhbDsKIH0KIAogc3RhdGljIHZvaWQKLWd0dF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRy bV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2d0dF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMg KmIsIHN0cnVjdCAgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKLQl1aW50MzJfdCAq dmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIgPSBidWYtPnB0cjsKIAogCS8q IEdUVCBhY2Nlc3MgaXMgc2xvdy4gU28gd2UganVzdCBjb21wYXJlIGEgZmV3IHBvaW50cyAqLwot CWRybV9pbnRlbF9nZW1fYm9fc3RhcnRfZ3R0X2FjY2VzcyhibywgZmFsc2UpOworCWdlbV9zZXRf ZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDAp OworCiAJZm9yIChpbnQgeSA9IDA7IHkgPCBiLT5oZWlnaHQ7IHkrKykKIAkJaWd0X2Fzc2VydF9l cV91MzIodmFkZHJbcGl4ZWwoeSwgYi0+d2lkdGgpXSwgdmFsKTsKIH0KIAotc3RhdGljIGRybV9p bnRlbF9ibyAqCi1tYXBfYm8oZHJtX2ludGVsX2JvICpibykKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf YnVmICoKK21hcF9ibyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7CiAJLyogZ3R0IG1hcCBkb2Vz bid0IGhhdmUgYSB3cml0ZSBwYXJhbWV0ZXIsIHNvIGp1c3Qga2VlcCB0aGUgbWFwcGluZwogCSAq IGFyb3VuZCAodG8gYXZvaWQgdGhlIHNldF9kb21haW4gd2l0aCB0aGUgZ3R0IHdyaXRlIGRvbWFp biBzZXQpIGFuZAogCSAqIG1hbnVhbGx5IHRlbGwgdGhlIGtlcm5lbCB3aGVuIHdlIHN0YXJ0IGFj Y2VzcyB0aGUgZ3R0LiAqLwotCWRvX29yX2RpZShkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8p KTsKLQotCXJldHVybiBibzsKLX0KLQotc3RhdGljIGRybV9pbnRlbF9ibyAqCi10aWxlX2JvKGRy bV9pbnRlbF9ibyAqYm8sIGludCB3aWR0aCkKLXsKLQl1aW50MzJfdCB0aWxpbmcgPSBJOTE1X1RJ TElOR19YOwotCXVpbnQzMl90IHN0cmlkZSA9IHdpZHRoICogNDsKLQotCWRvX29yX2RpZShkcm1f aW50ZWxfYm9fc2V0X3RpbGluZyhibywgJnRpbGluZywgc3RyaWRlKSk7CisJYnVmLT5wdHIgPSBn ZW1fbW1hcF9fZ3R0KGJ1Zl9vcHNfZ2V0X2ZkKGJ1Zi0+Ym9wcyksIGJ1Zi0+aGFuZGxlLAorCQkJ CSBidWYtPnN1cmZhY2VbMF0uc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CiAKLQlyZXR1 cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMg c3RydWN0IGludGVsX2J1ZiAqCiBndHRfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpi KQogewogCXJldHVybiBtYXBfYm8odW5tYXBwZWRfY3JlYXRlX2JvKGIpKTsKIH0KIAotc3RhdGlj IGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBndHRYX2NyZWF0ZV9i byhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQlyZXR1cm4gdGlsZV9ibyhndHRfY3JlYXRl X2JvKGIpLCBiLT53aWR0aCk7CisJcmV0dXJuIG1hcF9ibyhjcmVhdGVfYm8oYiwgSTkxNV9USUxJ TkdfWCkpOwogfQogCiBzdGF0aWMgdm9pZCBiaXQxN19yZXF1aXJlKHZvaWQpCkBAIC01NzQsODUg KzU5Niw4MyBAQCB3Y19jcmVhdGVfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUs IHVuc2lnbmVkIGNvdW50KQogCXdjX3JlcXVpcmUoKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9i byAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiB3Y19jcmVhdGVfYm8oY29uc3Qgc3RydWN0 IGJ1ZmZlcnMgKmIpCiB7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdGF0aWMgc3RydWN0IGludGVs X2J1ZiAqYnVmOwogCi0JYm8gPSB1bm1hcHBlZF9jcmVhdGVfYm8oYik7Ci0JYm8tPnZpcnR1YWwg PSBnZW1fbW1hcF9fd2MoZmQsIGJvLT5oYW5kbGUsIDAsIGJvLT5zaXplLCBQUk9UX1JFQUQgfCBQ Uk9UX1dSSVRFKTsKLQlyZXR1cm4gYm87CisJYnVmID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIpOwor CWJ1Zi0+cHRyID0gZ2VtX21tYXBfX3djKGZkLCBidWYtPmhhbmRsZSwgMCwgYnVmLT5zdXJmYWNl WzBdLnNpemUsCisJCQkJUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CisJcmV0dXJuIGJ1ZjsKIH0K IAogc3RhdGljIHZvaWQKLXdjX3JlbGVhc2VfYm8oZHJtX2ludGVsX2JvICpibykKK3djX3JlbGVh c2VfYm8oc3RydWN0IGludGVsX2J1ZiAqYnVmKQogewotCWlndF9hc3NlcnQoYm8tPnZpcnR1YWwp OworCWlndF9hc3NlcnQoYnVmLT5wdHIpOwogCi0JbXVubWFwKGJvLT52aXJ0dWFsLCBiby0+c2l6 ZSk7Ci0JYm8tPnZpcnR1YWwgPSBOVUxMOworCW11bm1hcChidWYtPnB0ciwgYnVmLT5zdXJmYWNl WzBdLnNpemUpOworCWJ1Zi0+cHRyID0gMDsKIAotCW5vcF9yZWxlYXNlX2JvKGJvKTsKKwlub3Bf cmVsZWFzZV9ibyhidWYpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1 Y3QgaW50ZWxfYnVmICoKIGdwdV9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7 CiAJcmV0dXJuIHVubWFwcGVkX2NyZWF0ZV9ibyhiKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9i byAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBncHVYX2NyZWF0ZV9ibyhjb25zdCBzdHJ1 Y3QgYnVmZmVycyAqYikKIHsKLQlyZXR1cm4gdGlsZV9ibyhncHVfY3JlYXRlX2JvKGIpLCBiLT53 aWR0aCk7CisJcmV0dXJuIGNyZWF0ZV9ibyhiLCBJOTE1X1RJTElOR19YKTsKIH0KIAogc3RhdGlj IHZvaWQKLWNwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90IHZhbCkKK2NwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWludCBzaXplID0gYi0+bnBpeGVsczsKIAl1aW50 MzJfdCAqdmFkZHI7CiAKLQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChibywgdHJ1ZSkpOwot CXZhZGRyID0gYm8tPnZpcnR1YWw7CisJaW50ZWxfYnVmX2NwdV9tYXAoYnVmLCB0cnVlKTsKKwl2 YWRkciA9IGJ1Zi0+cHRyOwogCXdoaWxlIChzaXplLS0pCiAJCSp2YWRkcisrID0gdmFsOwotCWRy bV9pbnRlbF9ib191bm1hcChibyk7CisJaW50ZWxfYnVmX3VubWFwKGJ1Zik7CiB9CiAKIHN0YXRp YyB2b2lkCi1jcHVfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1 aW50MzJfdCB2YWwpCitjcHVfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxf YnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgc2l6ZSA9IGItPm5waXhlbHM7CiAJdWlu dDMyX3QgKnZhZGRyOwogCi0JZG9fb3JfZGllKGRybV9pbnRlbF9ib19tYXAoYm8sIGZhbHNlKSk7 Ci0JdmFkZHIgPSBiby0+dmlydHVhbDsKKwlpbnRlbF9idWZfY3B1X21hcChidWYsIGZhbHNlKTsK Kwl2YWRkciA9IGJ1Zi0+cHRyOwogCXdoaWxlIChzaXplLS0pCiAJCWlndF9hc3NlcnRfZXFfdTMy KCp2YWRkcisrLCB2YWwpOwotCWRybV9pbnRlbF9ib191bm1hcChibyk7CisJaW50ZWxfYnVmX3Vu bWFwKGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCi1ncHVfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpi dWZmZXJzLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitncHVfc2V0X2JvKHN0cnVj dCBidWZmZXJzICpidWZmZXJzLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NbMV07CiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgZ2VtX2V4ZWNbMl07CiAJc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwotCXVpbnQzMl90IGJ1ZlsxMF0sICpiOwotCXVp bnQzMl90IHRpbGluZywgc3dpenpsZTsKLQotCWRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGJvLCAm dGlsaW5nLCAmc3dpenpsZSk7CisJdWludDMyX3QgdG1wWzEwXSwgKmI7CiAKIAltZW1zZXQocmVs b2MsIDAsIHNpemVvZihyZWxvYykpOwogCW1lbXNldChnZW1fZXhlYywgMCwgc2l6ZW9mKGdlbV9l eGVjKSk7CiAJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwogCi0JYiA9IGJ1 ZjsKKwliID0gdG1wOwogCSpiKysgPSBYWV9DT0xPUl9CTFRfQ01EX05PTEVOIHwKIAkJKChnZW4g Pj0gOCkgPyA1IDogNCkgfAogCQlDT0xPUl9CTFRfV1JJVEVfQUxQSEEgfCBYWV9DT0xPUl9CTFRf V1JJVEVfUkdCOwotCWlmIChnZW4gPj0gNCAmJiB0aWxpbmcpIHsKKwlpZiAoZ2VuID49IDQgJiYg YnVmLT50aWxpbmcpIHsKIAkJYlstMV0gfD0gWFlfQ09MT1JfQkxUX1RJTEVEOwogCQkqYiA9IGJ1 ZmZlcnMtPndpZHRoOwogCX0gZWxzZQpAQCAtNjYwLDggKzY4MCw4IEBAIGdwdV9zZXRfYm8oc3Ry dWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIAkq YisrIHw9IDB4ZjAgPDwgMTYgfCAxIDw8IDI1IHwgMSA8PCAyNDsKIAkqYisrID0gMDsKIAkqYisr ID0gYnVmZmVycy0+aGVpZ2h0IDw8IDE2IHwgYnVmZmVycy0+d2lkdGg7Ci0JcmVsb2NbMF0ub2Zm c2V0ID0gKGIgLSBidWYpICogc2l6ZW9mKHVpbnQzMl90KTsKLQlyZWxvY1swXS50YXJnZXRfaGFu ZGxlID0gYm8tPmhhbmRsZTsKKwlyZWxvY1swXS5vZmZzZXQgPSAoYiAtIHRtcCkgKiBzaXplb2Yo dWludDMyX3QpOworCXJlbG9jWzBdLnRhcmdldF9oYW5kbGUgPSBidWYtPmhhbmRsZTsKIAlyZWxv Y1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwogCXJlbG9jWzBdLndy aXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CiAJKmIrKyA9IDA7CkBAIC02Njks MTAgKzY4OSwxMCBAQCBncHVfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLCBkcm1faW50 ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiAJCSpiKysgPSAwOwogCSpiKysgPSB2YWw7CiAJKmIr KyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Ci0JaWYgKChiIC0gYnVmKSAmIDEpCisJaWYgKChiIC0g dG1wKSAmIDEpCiAJCSpiKysgPSAwOwogCi0JZ2VtX2V4ZWNbMF0uaGFuZGxlID0gYm8tPmhhbmRs ZTsKKwlnZW1fZXhlY1swXS5oYW5kbGUgPSBidWYtPmhhbmRsZTsKIAlnZW1fZXhlY1swXS5mbGFn cyA9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwogCiAJZ2VtX2V4ZWNbMV0uaGFuZGxlID0gZ2Vt X2NyZWF0ZShmZCwgNDA5Nik7CkBAIC02ODEsMzAgKzcwMSwzMCBAQCBncHVfc2V0X2JvKHN0cnVj dCBidWZmZXJzICpidWZmZXJzLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiAKIAll eGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKGdlbV9leGVjKTsKIAlleGVjYnVm LmJ1ZmZlcl9jb3VudCA9IDI7Ci0JZXhlY2J1Zi5iYXRjaF9sZW4gPSAoYiAtIGJ1ZikgKiBzaXpl b2YoYnVmWzBdKTsKKwlleGVjYnVmLmJhdGNoX2xlbiA9IChiIC0gdG1wKSAqIHNpemVvZih0bXBb MF0pOwogCWlmIChnZW4gPj0gNikKIAkJZXhlY2J1Zi5mbGFncyA9IEk5MTVfRVhFQ19CTFQ7CiAK LQlnZW1fd3JpdGUoZmQsIGdlbV9leGVjWzFdLmhhbmRsZSwgMCwgYnVmLCBleGVjYnVmLmJhdGNo X2xlbik7CisJZ2VtX3dyaXRlKGZkLCBnZW1fZXhlY1sxXS5oYW5kbGUsIDAsIHRtcCwgZXhlY2J1 Zi5iYXRjaF9sZW4pOwogCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CiAKIAlnZW1fY2xvc2Uo ZmQsIGdlbV9leGVjWzFdLmhhbmRsZSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1ncHVfY21wX2JvKHN0 cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitncHVfY21w X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZh bCkKIHsKLQlibHRfY29weV9ibyhiLCBiLT5zbm9vcCwgYm8pOworCWJsdF9jb3B5X2JvKGIsIGIt PnNub29wLCBidWYpOwogCWNwdV9jbXBfYm8oYiwgYi0+c25vb3AsIHZhbCk7CiB9CiAKIHN0cnVj dCBhY2Nlc3NfbW9kZSB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl2b2lkICgqcmVxdWlyZSkoY29u c3Qgc3RydWN0IGNyZWF0ZSAqLCB1bnNpZ25lZCk7Ci0JZHJtX2ludGVsX2JvICooKmNyZWF0ZV9i bykoY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpOwotCXZvaWQgKCpzZXRfYm8pKHN0cnVjdCBidWZm ZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpOwotCXZvaWQgKCpjbXBfYm8p KHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpOwotCXZv aWQgKCpyZWxlYXNlX2JvKShkcm1faW50ZWxfYm8gKmJvKTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICoo KmNyZWF0ZV9ibykoY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpOworCXZvaWQgKCpzZXRfYm8pKHN0 cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCk7CisJ dm9pZCAoKmNtcF9ibykoc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1Ziwg dWludDMyX3QgdmFsKTsKKwl2b2lkICgqcmVsZWFzZV9ibykoc3RydWN0IGludGVsX2J1ZiAqYnVm KTsKIH07CiBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyY29weTsKIApAQCAtNzQ1LDcgKzc2 NSw3IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfaW5pdChzdHJ1Y3QgYnVmZmVycyAqYiwKIAkJCSBj b25zdCBzdHJ1Y3QgYWNjZXNzX21vZGUgKm1vZGUsCiAJCQkgY29uc3Qgc3RydWN0IHNpemUgKnNp emUsCiAJCQkgaW50IG51bV9idWZmZXJzLAotCQkJIGludCBfZmQsIGludCBlbmFibGVfcmV1c2Up CisJCQkgaW50IF9mZCkKIHsKIAltZW1zZXQoYiwgMCwgc2l6ZW9mKCpiKSk7CiAJYi0+bmFtZSA9 IG5hbWU7CkBAIC03NjMsMTcgKzc4MywxMyBAQCBzdGF0aWMgdm9pZCBidWZmZXJzX2luaXQoc3Ry dWN0IGJ1ZmZlcnMgKmIsCiAJYi0+dG1wID0gbWFsbG9jKGItPnBhZ2Vfc2l6ZSk7CiAJaWd0X2Fz c2VydChiLT50bXApOwogCi0JYi0+YnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChf ZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoYi0+YnVmbWdyKTsKKwliLT5ib3BzID0gYnVmX29wc19j cmVhdGUoX2ZkKTsKIAotCWItPnNyYyA9IG1hbGxvYygyKnNpemVvZihkcm1faW50ZWxfYm8gKikq bnVtX2J1ZmZlcnMpOworCWItPnNyYyA9IG1hbGxvYygyKnNpemVvZihzdHJ1Y3QgaW50ZWxfYnVm ICopKm51bV9idWZmZXJzKTsKIAlpZ3RfYXNzZXJ0KGItPnNyYyk7CiAJYi0+ZHN0ID0gYi0+c3Jj ICsgbnVtX2J1ZmZlcnM7CiAKLQlpZiAoZW5hYmxlX3JldXNlKQotCQlkcm1faW50ZWxfYnVmbWdy X2dlbV9lbmFibGVfcmV1c2UoYi0+YnVmbWdyKTsKLQliLT5iYXRjaCA9IGludGVsX2JhdGNoYnVm ZmVyX2FsbG9jKGItPmJ1Zm1nciwgZGV2aWQpOwotCWlndF9hc3NlcnQoYi0+YmF0Y2gpOworCWIt PmliYiA9IGludGVsX2JiX2NyZWF0ZShfZmQsIDQwOTYpOwogfQogCiBzdGF0aWMgdm9pZCBidWZm ZXJzX2Rlc3Ryb3koc3RydWN0IGJ1ZmZlcnMgKmIpCkBAIC04MDksNyArODI1LDcgQEAgc3RhdGlj IHZvaWQgYnVmZmVyc19kZXN0cm95KHN0cnVjdCBidWZmZXJzICpiKQogc3RhdGljIHZvaWQgYnVm ZmVyc19jcmVhdGUoc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJaW50IGNvdW50ID0gYi0+bnVtX2J1 ZmZlcnM7Ci0JaWd0X2Fzc2VydChiLT5idWZtZ3IpOworCWlndF9hc3NlcnQoYi0+Ym9wcyk7CiAK IAlidWZmZXJzX2Rlc3Ryb3koYik7CiAJaWd0X2Fzc2VydChiLT5jb3VudCA9PSAwKTsKQEAgLTgy MywyMCArODM5LDE1IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfY3JlYXRlKHN0cnVjdCBidWZmZXJz ICpiKQogCWItPnNub29wID0gc25vb3BfY3JlYXRlX2JvKGIpOwogfQogCi1zdGF0aWMgdm9pZCBi dWZmZXJzX3Jlc2V0KHN0cnVjdCBidWZmZXJzICpiLCBib29sIGVuYWJsZV9yZXVzZSkKK3N0YXRp YyB2b2lkIGJ1ZmZlcnNfcmVzZXQoc3RydWN0IGJ1ZmZlcnMgKmIpCiB7Ci0JYi0+YnVmbWdyID0g ZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Ci0JaWd0X2Fzc2VydChiLT5idWZt Z3IpOwotCi0JaWYgKGVuYWJsZV9yZXVzZSkKLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxl X3JldXNlKGItPmJ1Zm1ncik7Ci0JYi0+YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhi LT5idWZtZ3IsIGRldmlkKTsKLQlpZ3RfYXNzZXJ0KGItPmJhdGNoKTsKKwliLT5ib3BzID0gYnVm X29wc19jcmVhdGUoZmQpOworCWItPmliYiA9IGludGVsX2JiX2NyZWF0ZShmZCwgNDA5Nik7CiB9 CiAKIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfZmluaShzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQlpZiAo Yi0+YnVmbWdyID09IE5VTEwpCisJaWYgKGItPmJvcHMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJ YnVmZmVyc19kZXN0cm95KGIpOwpAQCAtODQ0LDU4ICs4NTUsNDcgQEAgc3RhdGljIHZvaWQgYnVm ZmVyc19maW5pKHN0cnVjdCBidWZmZXJzICpiKQogCWZyZWUoYi0+dG1wKTsKIAlmcmVlKGItPnNy Yyk7CiAKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGItPmJhdGNoKTsKLQlkcm1faW50ZWxfYnVm bWdyX2Rlc3Ryb3koYi0+YnVmbWdyKTsKKwlpbnRlbF9iYl9kZXN0cm95KGItPmliYik7CisJYnVm X29wc19kZXN0cm95KGItPmJvcHMpOwogCiAJbWVtc2V0KGIsIDAsIHNpemVvZigqYikpOwogfQog Ci10eXBlZGVmIHZvaWQgKCpkb19jb3B5KShzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2Jv ICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKTsKK3R5cGVkZWYgdm9pZCAoKmRvX2NvcHkpKHN0cnVj dCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCQlzdHJ1Y3QgaW50ZWxfYnVm ICpzcmMpOwogdHlwZWRlZiBpZ3RfaGFuZ190ICgqZG9faGFuZykodm9pZCk7CiAKLXN0YXRpYyB2 b2lkIHJlbmRlcl9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwg ZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMgdm9pZCByZW5kZXJfY29weV9ibyhzdHJ1Y3QgYnVm ZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJICAgc3RydWN0IGludGVsX2J1ZiAq c3JjKQogewotCXN0cnVjdCBpZ3RfYnVmIGQgPSB7Ci0JCS5ibyA9IGRzdCwKLQkJLm51bV90aWxl cyA9IGItPm5waXhlbHMgKiA0LAotCQkuc3VyZmFjZVswXSA9IHsKLQkJCS5zaXplID0gYi0+bnBp eGVscyAqIDQsIC5zdHJpZGUgPSBiLT53aWR0aCAqIDQsCi0JCX0sCi0JCS5icHAgPSAzMiwKLQl9 LCBzID0gewotCQkuYm8gPSBzcmMsCi0JCS5udW1fdGlsZXMgPSBiLT5ucGl4ZWxzICogNCwKLQkJ LnN1cmZhY2VbMF0gPSB7Ci0JCQkuc2l6ZSA9IGItPm5waXhlbHMgKiA0LCAuc3RyaWRlID0gYi0+ d2lkdGggKiA0LAotCQl9LAotCQkuYnBwID0gMzIsCi0JfTsKLQl1aW50MzJfdCBzd2l6emxlOwot Ci0JZHJtX2ludGVsX2JvX2dldF90aWxpbmcoZHN0LCAmZC50aWxpbmcsICZzd2l6emxlKTsKLQlk cm1faW50ZWxfYm9fZ2V0X3RpbGluZyhzcmMsICZzLnRpbGluZywgJnN3aXp6bGUpOwotCi0JcmVu ZGVyY29weShiLT5iYXRjaCwgTlVMTCwKLQkJICAgJnMsIDAsIDAsCisJcmVuZGVyY29weShiLT5p YmIsIDAsCisJCSAgIHNyYywgMCwgMCwKIAkJICAgYi0+d2lkdGgsIGItPmhlaWdodCwKLQkJICAg JmQsIDAsIDApOworCQkgICBkc3QsIDAsIDApOworCWludGVsX2JiX3N5bmMoYi0+aWJiKTsKKwlp bnRlbF9iYl9yZXNldChiLT5pYmIsIHRydWUpOwogfQogCi1zdGF0aWMgdm9pZCBibHRfY29weV9i byhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3Jj KQorc3RhdGljIHZvaWQgYmx0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRl bF9idWYgKmRzdCwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKLQlpbnRlbF9ibHRfY29w eShiLT5iYXRjaCwKKwlpbnRlbF9iYl9ibHRfY29weShiLT5pYmIsCiAJCSAgICAgICBzcmMsIDAs IDAsIDQqYi0+d2lkdGgsCiAJCSAgICAgICBkc3QsIDAsIDAsIDQqYi0+d2lkdGgsCiAJCSAgICAg ICBiLT53aWR0aCwgYi0+aGVpZ2h0LCAzMik7CisJaW50ZWxfYmJfc3luYyhiLT5pYmIpOworCWlu dGVsX2JiX3Jlc2V0KGItPmliYiwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdV9jb3B5X2Jv KHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMp CitzdGF0aWMgdm9pZCBjcHVfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVs X2J1ZiAqZHN0LAorCQkJc3RydWN0IGludGVsX2J1ZiAqc3JjKQogewogCWNvbnN0IGludCBzaXpl ID0gYi0+cGFnZV9zaXplOwogCXZvaWQgKmQsICpzOwogCiAJZ2VtX3NldF9kb21haW4oZmQsIHNy Yy0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKLQlnZW1fc2V0X2RvbWFpbihmZCwg ZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwor CWdlbV9zZXRfZG9tYWluKGZkLCBkc3QtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwKKwkJ ICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUpOwogCXMgPSBnZW1fbW1hcF9fY3B1KGZkLCBzcmMt PmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9SRUFEKTsKIAlkID0gZ2VtX21tYXBfX2NwdShmZCwgZHN0 LT5oYW5kbGUsIDAsIHNpemUsIFBST1RfV1JJVEUpOwogCkBAIC05MDUsMTMgKzkwNSwxNSBAQCBz dGF0aWMgdm9pZCBjcHVfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpk c3QsIGRybV9pbnRlbF9ibyAqc3JjKQogCW11bm1hcChzLCBzaXplKTsKIH0KIAotc3RhdGljIHZv aWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1f aW50ZWxfYm8gKnNyYykKK3N0YXRpYyB2b2lkIGd0dF9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpi LCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7CiAJ Y29uc3QgaW50IHNpemUgPSBiLT5wYWdlX3NpemU7CiAJdm9pZCAqZCwgKnM7CiAKIAlnZW1fc2V0 X2RvbWFpbihmZCwgc3JjLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwotCWdlbV9z ZXRfZG9tYWluKGZkLCBkc3QtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1f RE9NQUlOX0dUVCk7CisJZ2VtX3NldF9kb21haW4oZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9E T01BSU5fR1RULAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CiAKIAlzID0gZ2VtX21t YXBfX2d0dChmZCwgc3JjLT5oYW5kbGUsIHNpemUsIFBST1RfUkVBRCk7CiAJZCA9IGdlbV9tbWFw X19ndHQoZmQsIGRzdC0+aGFuZGxlLCBzaXplLCBQUk9UX1dSSVRFKTsKQEAgLTkyMiwxMyArOTI0 LDE1IEBAIHN0YXRpYyB2b2lkIGd0dF9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50 ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCiAJbXVubWFwKHMsIHNpemUpOwogfQogCi1z dGF0aWMgdm9pZCB3Y19jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRz dCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMgdm9pZCB3Y19jb3B5X2JvKHN0cnVjdCBidWZm ZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVm ICpzcmMpCiB7CiAJY29uc3QgaW50IHNpemUgPSBiLT5wYWdlX3NpemU7CiAJdm9pZCAqZCwgKnM7 CiAKIAlnZW1fc2V0X2RvbWFpbihmZCwgc3JjLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9XQywg MCk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fV0Ms IEk5MTVfR0VNX0RPTUFJTl9XQyk7CisJZ2VtX3NldF9kb21haW4oZmQsIGRzdC0+aGFuZGxlLCBJ OTE1X0dFTV9ET01BSU5fV0MsCisJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fV0MpOwogCiAJcyA9 IGdlbV9tbWFwX193YyhmZCwgc3JjLT5oYW5kbGUsIDAsIHNpemUsIFBST1RfUkVBRCk7CiAJZCA9 IGdlbV9tbWFwX193YyhmZCwgZHN0LT5oYW5kbGUsIDAsIHNpemUsIFBST1RfV1JJVEUpOwpAQCAt MTM1MywxMCArMTM1NywxMCBAQCBzdGF0aWMgdm9pZCBfX3J1bl9mb3JrZWQoc3RydWN0IGJ1ZmZl cnMgKmJ1ZmZlcnMsCiAJCQkgZG9faGFuZyBkb19oYW5nX2Z1bmMpCiAKIHsKLQkvKiBwdXJnZSB0 aGUgbGliZHJtIGNhY2hlcyBiZWZvcmUgY2xvaW5nIHRoZSBwcm9jZXNzICovCisJLyogcHVyZ2Ug dGhlIGNhY2hlcyBiZWZvcmUgY2xvaW5nIHRoZSBwcm9jZXNzICovCiAJYnVmZmVyc19kZXN0cm95 KGJ1ZmZlcnMpOwotCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYnVmZmVycy0+YmF0Y2gpOwotCWRy bV9pbnRlbF9idWZtZ3JfZGVzdHJveShidWZmZXJzLT5idWZtZ3IpOworCWludGVsX2JiX2Rlc3Ry b3koYnVmZmVycy0+aWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3koYnVmZmVycy0+Ym9wcyk7CiAKIAlp Z3RfZm9yayhjaGlsZCwgbnVtX2NoaWxkcmVuKSB7CiAJCWludCBudW1fYnVmZmVyczsKQEAgLTEz NjksNyArMTM3Myw3IEBAIHN0YXRpYyB2b2lkIF9fcnVuX2ZvcmtlZChzdHJ1Y3QgYnVmZmVycyAq YnVmZmVycywKIAkJaWYgKG51bV9idWZmZXJzIDwgYnVmZmVycy0+bnVtX2J1ZmZlcnMpCiAJCQli dWZmZXJzLT5udW1fYnVmZmVycyA9IG51bV9idWZmZXJzOwogCi0JCWJ1ZmZlcnNfcmVzZXQoYnVm ZmVycywgdHJ1ZSk7CisJCWJ1ZmZlcnNfcmVzZXQoYnVmZmVycyk7CiAJCWJ1ZmZlcnNfY3JlYXRl KGJ1ZmZlcnMpOwogCiAJCWlndF93aGlsZV9pbnRlcnJ1cHRpYmxlKGludGVycnVwdCkgewpAQCAt MTM4Miw3ICsxMzg2LDcgQEAgc3RhdGljIHZvaWQgX19ydW5fZm9ya2VkKHN0cnVjdCBidWZmZXJz ICpidWZmZXJzLAogCWlndF93YWl0Y2hpbGRyZW4oKTsKIAlpZ3RfYXNzZXJ0X2VxKGludGVsX2Rl dGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpLCAwKTsKIAotCWJ1ZmZlcnNfcmVz ZXQoYnVmZmVycywgdHJ1ZSk7CisJYnVmZmVyc19yZXNldChidWZmZXJzKTsKIH0KIAogc3RhdGlj IHZvaWQgcnVuX2ZvcmtlZChzdHJ1Y3QgYnVmZmVycyAqYnVmZmVycywKQEAgLTE0NTksOCArMTQ2 Myw3IEBAIHJ1bl9tb2RlKGNvbnN0IGNoYXIgKnByZWZpeCwKIAogCWlndF9maXh0dXJlCiAJCWJ1 ZmZlcnNfaW5pdCgmYnVmZmVycywgcHJlZml4LCBjcmVhdGUsIG1vZGUsCi0JCQkgICAgIHNpemUs IG51bV9idWZmZXJzLAotCQkJICAgICBmZCwgcnVuX3dyYXBfZnVuYyAhPSBydW5fY2hpbGQpOwor CQkJICAgICBzaXplLCBudW1fYnVmZmVycywgZmQpOwogCiAJZm9yIChoID0gaGFuZ3M7IGgtPnN1 ZmZpeDsgaCsrKSB7CiAJCWlmICghYWxsICYmICpoLT5zdWZmaXgpCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2dlbV9wcGd0dC5jIGIvdGVzdHMvaTkxNS9nZW1fcHBndHQuYwppbmRleCA4YzAyZTRh Zi4uZDU2ZTgwOGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMKKysrIGIvdGVz dHMvaTkxNS9nZW1fcHBndHQuYwpAQCAtMzgsNTYgKzM4LDQ2IEBACiAjaW5jbHVkZSAiaTkxNS9n ZW0uaCIKICNpbmNsdWRlICJpZ3QuaCIKICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgotI2luY2x1 ZGUgImludGVsX2J1Zm1nci5oIgogCiAjZGVmaW5lIFdJRFRIIDUxMgogI2RlZmluZSBTVFJJREUg KFdJRFRIKjQpCiAjZGVmaW5lIEhFSUdIVCA1MTIKICNkZWZpbmUgU0laRSAoSEVJR0hUKlNUUklE RSkKIAotc3RhdGljIGRybV9pbnRlbF9ibyAqY3JlYXRlX2JvKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwKLQkJCSAgICAgICB1aW50MzJfdCBwaXhlbCkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVm ICpjcmVhdGVfYm8oc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHVpbnQzMl90IHBpeGVsKQogewogCXVp bnQ2NF90IHZhbHVlID0gKHVpbnQ2NF90KXBpeGVsIDw8IDMyIHwgcGl4ZWwsICp2OwotCWRybV9p bnRlbF9ibyAqYm87CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOwogCi0JYm8gPSBkcm1faW50ZWxf Ym9fYWxsb2MoYnVmbWdyLCAic3VyZmFjZSIsIFNJWkUsIDQwOTYpOwotCWlndF9hc3NlcnQoYm8p OworCWJ1ZiA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgV0lEVEgsIEhFSUdIVCwgMzIsIDAsIEk5 MTVfVElMSU5HX05PTkUsIDApOworCXYgPSBpbnRlbF9idWZfY3B1X21hcChidWYsIDEpOwogCi0J ZG9fb3JfZGllKGRybV9pbnRlbF9ib19tYXAoYm8sIDEpKTsKLQl2ID0gYm8tPnZpcnR1YWw7CiAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBTSVpFIC8gc2l6ZW9mKHZhbHVlKTsgaSArPSA4KSB7CiAJCXZb aSArIDBdID0gdmFsdWU7IHZbaSArIDFdID0gdmFsdWU7CiAJCXZbaSArIDJdID0gdmFsdWU7IHZb aSArIDNdID0gdmFsdWU7CiAJCXZbaSArIDRdID0gdmFsdWU7IHZbaSArIDVdID0gdmFsdWU7CiAJ CXZbaSArIDZdID0gdmFsdWU7IHZbaSArIDddID0gdmFsdWU7CiAJfQotCWRybV9pbnRlbF9ib191 bm1hcChibyk7CisJaW50ZWxfYnVmX3VubWFwKGJ1Zik7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJu IGJ1ZjsKIH0KIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgaWd0X2J1ZiAq YnVmLAotCQkJICAgICBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCi0JCQkgICAgIHVpbnQzMl90 IHBpeGVsKQorc3RhdGljIHZvaWQgY2xlYW51cF9idWZzKHN0cnVjdCBpbnRlbF9idWYgKipidWYs IGludCBjb3VudCkKIHsKLQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOworCWZvciAoaW50 IGNoaWxkID0gMDsgY2hpbGQgPCBjb3VudDsgY2hpbGQrKykgeworCQlzdHJ1Y3QgYnVmX29wcyAq Ym9wcyA9IGJ1ZltjaGlsZF0tPmJvcHM7CisJCWludCBmZCA9IGJ1Zl9vcHNfZ2V0X2ZkKGJ1Zltj aGlsZF0tPmJvcHMpOwogCi0JYnVmLT5ibyA9IGNyZWF0ZV9ibyhidWZtZ3IsIHBpeGVsKTsKLQli dWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwotCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJ TkdfTk9ORTsKLQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JYnVmLT5icHAgPSAzMjsK LX0KKwkJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmW2NoaWxkXSk7CisJCWJ1Zl9vcHNfZGVzdHJveShi b3BzKTsKKwkJY2xvc2UoZmQpOworCX0KIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZmluaShz dHJ1Y3QgaWd0X2J1ZiAqYnVmKQotewotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShidWYtPmJv KTsKLQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwogfQogCiBzdGF0aWMgdm9pZCBmb3Jr X3Jjc19jb3B5KGludCB0aW1lb3V0LCB1aW50MzJfdCBmaW5hbCwKLQkJCSAgZHJtX2ludGVsX2Jv ICoqZHN0LCBpbnQgY291bnQsCisJCQkgIHN0cnVjdCBpbnRlbF9idWYgKipkc3QsIGludCBjb3Vu dCwKIAkJCSAgdW5zaWduZWQgZmxhZ3MpCiAjZGVmaW5lIENSRUFURV9DT05URVhUIDB4MQogewpA QCAtMTAyLDIxICs5MiwxMyBAQCBzdGF0aWMgdm9pZCBmb3JrX3Jjc19jb3B5KGludCB0aW1lb3V0 LCB1aW50MzJfdCBmaW5hbCwKIAogCWZvciAoaW50IGNoaWxkID0gMDsgY2hpbGQgPCBjb3VudDsg Y2hpbGQrKykgewogCQlpbnQgZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKLQkJ ZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworCQlzdHJ1Y3QgYnVmX29wcyAqYm9wczsKIAogCQlk ZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQpOwogCi0JCWJ1Zm1nciA9IGRybV9pbnRlbF9i dWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwotCQlpZ3RfYXNzZXJ0KGJ1Zm1ncik7Ci0KLQkJZHN0 W2NoaWxkXSA9IGNyZWF0ZV9ibyhidWZtZ3IsIH4wKTsKKwkJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRl KGZkKTsKIAotCQlpZiAoZmxhZ3MgJiBDUkVBVEVfQ09OVEVYVCkgewotCQkJZHJtX2ludGVsX2Nv bnRleHQgKmN0eDsKLQotCQkJY3R4ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShkc3Rb Y2hpbGRdLT5idWZtZ3IpOwotCQkJaWd0X3JlcXVpcmUoY3R4KTsKLQkJfQorCQlkc3RbY2hpbGRd ID0gY3JlYXRlX2JvKGJvcHMsIH4wKTsKIAogCQlyZW5kZXJfY29weSA9IGlndF9nZXRfcmVuZGVy X2NvcHlmdW5jKGRldmlkKTsKIAkJaWd0X3JlcXVpcmVfZihyZW5kZXJfY29weSwKQEAgLTEyNCwx MTMgKzEwNiwxMDYgQEAgc3RhdGljIHZvaWQgZm9ya19yY3NfY29weShpbnQgdGltZW91dCwgdWlu dDMyX3QgZmluYWwsCiAJfQogCiAJaWd0X2ZvcmsoY2hpbGQsIGNvdW50KSB7Ci0JCXN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JCXN0cnVjdCBpZ3RfYnVmIGJ1ZiA9IHt9OwotCQlz dHJ1Y3QgaWd0X2J1ZiBzcmM7CisJCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCQl1aW50MzJfdCBj dHggPSAwOworCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmM7CiAJCXVuc2lnbmVkIGxvbmcgaTsKIAot CQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRzdFtjaGlsZF0tPmJ1Zm1nciwKLQkJ CQkJCWRldmlkKTsKLQkJaWd0X2Fzc2VydChiYXRjaCk7Ci0KLQkJaWYgKGZsYWdzICYgQ1JFQVRF X0NPTlRFWFQpIHsKLQkJCWRybV9pbnRlbF9jb250ZXh0ICpjdHg7CisJCWliYiA9IGludGVsX2Ji X2NyZWF0ZShidWZfb3BzX2dldF9mZChkc3RbY2hpbGRdLT5ib3BzKSwgNDA5Nik7CiAKLQkJCWN0 eCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoZHN0W2NoaWxkXS0+YnVmbWdyKTsKLQkJ CWludGVsX2JhdGNoYnVmZmVyX3NldF9jb250ZXh0KGJhdGNoLCBjdHgpOwotCQl9Ci0KLQkJYnVm LmJvID0gZHN0W2NoaWxkXTsKLQkJYnVmLnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwotCQli dWYudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQkJYnVmLnN1cmZhY2VbMF0uc2l6ZSA9IFNJ WkU7Ci0JCWJ1Zi5icHAgPSAzMjsKKwkJaWYgKGZsYWdzICYgQ1JFQVRFX0NPTlRFWFQpCisJCQlj dHggPSBnZW1fY29udGV4dF9jcmVhdGUoYnVmX29wc19nZXRfZmQoZHN0W2NoaWxkXS0+Ym9wcykp OwogCiAJCWkgPSAwOwogCQlpZ3RfdW50aWxfdGltZW91dCh0aW1lb3V0KSB7Ci0JCQlzY3JhdGNo X2J1Zl9pbml0KCZzcmMsIGRzdFtjaGlsZF0tPmJ1Zm1nciwKLQkJCQkJIGkrKyB8IGNoaWxkIDw8 IDE2KTsKLQkJCXJlbmRlcl9jb3B5KGJhdGNoLCBOVUxMLAotCQkJCSAgICAmc3JjLCAwLCAwLAor CQkJc3JjID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJvcHMsCisJCQkJCWkrKyB8IGNoaWxkIDw8 IDE2KTsKKwkJCXJlbmRlcl9jb3B5KGliYiwgY3R4LAorCQkJCSAgICBzcmMsIDAsIDAsCiAJCQkJ ICAgIFdJRFRILCBIRUlHSFQsCi0JCQkJICAgICZidWYsIDAsIDApOwotCQkJc2NyYXRjaF9idWZf ZmluaSgmc3JjKTsKKwkJCQkgICAgZHN0W2NoaWxkXSwgMCwgMCk7CisKKwkJCWludGVsX2J1Zl9k ZXN0cm95KHNyYyk7CiAJCX0KIAotCQlzY3JhdGNoX2J1Zl9pbml0KCZzcmMsIGRzdFtjaGlsZF0t PmJ1Zm1nciwKLQkJCQkgZmluYWwgfCBjaGlsZCA8PCAxNik7Ci0JCXJlbmRlcl9jb3B5KGJhdGNo LCBOVUxMLAotCQkJICAgICZzcmMsIDAsIDAsCisJCXNyYyA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRd LT5ib3BzLAorCQkJCWZpbmFsIHwgY2hpbGQgPDwgMTYpOworCQlyZW5kZXJfY29weShpYmIsIGN0 eCwKKwkJCSAgICBzcmMsIDAsIDAsCiAJCQkgICAgV0lEVEgsIEhFSUdIVCwKLQkJCSAgICAmYnVm LCAwLCAwKTsKLQkJc2NyYXRjaF9idWZfZmluaSgmc3JjKTsKKwkJCSAgICBkc3RbY2hpbGRdLCAw LCAwKTsKKwkJaW50ZWxfYmJfc3luYyhpYmIpOworCisJCWludGVsX2J1Zl9kZXN0cm95KHNyYyk7 CisKKwkJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogCX0KIH0KIAogc3RhdGljIHZvaWQgZm9ya19i Y3NfY29weShpbnQgdGltZW91dCwgdWludDMyX3QgZmluYWwsCi0JCQkgIGRybV9pbnRlbF9ibyAq KmRzdCwgaW50IGNvdW50KQorCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICoqZHN0LCBpbnQgY291bnQp CiB7Ci0JaW50IGRldmlkOwotCiAJZm9yIChpbnQgY2hpbGQgPSAwOyBjaGlsZCA8IGNvdW50OyBj aGlsZCsrKSB7Ci0JCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKKwkJc3RydWN0IGJ1Zl9vcHMg KmJvcHM7CiAJCWludCBmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwogCi0JCWRl dmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7Ci0KLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1 Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Ci0JCWlndF9hc3NlcnQoYnVmbWdyKTsKLQotCQlkc3Rb Y2hpbGRdID0gY3JlYXRlX2JvKGJ1Zm1nciwgfjApOworCQlib3BzID0gYnVmX29wc19jcmVhdGUo ZmQpOworCQlkc3RbY2hpbGRdID0gY3JlYXRlX2JvKGJvcHMsIH4wKTsKIAl9CiAKIAlpZ3RfZm9y ayhjaGlsZCwgY291bnQpIHsKLQkJc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKLQkJ ZHJtX2ludGVsX2JvICpzcmNbMl07CisJCXN0cnVjdCBpbnRlbF9idWYgKnNyY1syXTsKKwkJc3Ry dWN0IGludGVsX2JiICppYmI7CiAJCXVuc2lnbmVkIGxvbmcgaTsKIAotCi0JCWJhdGNoID0gaW50 ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZHN0W2NoaWxkXS0+YnVmbWdyLAotCQkJCQkJZGV2aWQpOwot CQlpZ3RfYXNzZXJ0KGJhdGNoKTsKKwkJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGJ1Zl9vcHNfZ2V0 X2ZkKGRzdFtjaGlsZF0tPmJvcHMpLCA0MDk2KTsKIAogCQlpID0gMDsKIAkJaWd0X3VudGlsX3Rp bWVvdXQodGltZW91dCkgewotCQkJc3JjWzBdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJ1Zm1n ciwKKwkJCXNyY1swXSA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRdLT5ib3BzLAogCQkJCQkgICB+MCk7 Ci0JCQlzcmNbMV0gPSBjcmVhdGVfYm8oZHN0W2NoaWxkXS0+YnVmbWdyLAorCQkJc3JjWzFdID0g Y3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJvcHMsCiAJCQkJCSAgIGkrKyB8IGNoaWxkIDw8IDE2KTsK IAotCQkJaW50ZWxfY29weV9ibyhiYXRjaCwgc3JjWzBdLCBzcmNbMV0sIFNJWkUpOwotCQkJaW50 ZWxfY29weV9ibyhiYXRjaCwgZHN0W2NoaWxkXSwgc3JjWzBdLCBTSVpFKTsKKwkJCWludGVsX2Ji X2JsdF9jb3B5KGliYiwgc3JjWzFdLCAwLCAwLCA0MDk2LAorCQkJCQkgIHNyY1swXSwgMCwgMCwg NDA5NiwKKwkJCQkJICA0MDk2LzQsIFNJWkUvNDA5NiwgMzIpOworCQkJaW50ZWxfYmJfYmx0X2Nv cHkoaWJiLCBzcmNbMF0sIDAsIDAsIDQwOTYsCisJCQkJCSAgZHN0W2NoaWxkXSwgMCwgMCwgNDA5 NiwKKwkJCQkJICA0MDk2LzQsIFNJWkUvNDA5NiwgMzIpOwogCi0JCQlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2Uoc3JjWzFdKTsKLQkJCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmNbMF0pOwor CQkJaW50ZWxfYnVmX2Rlc3Ryb3koc3JjWzFdKTsKKwkJCWludGVsX2J1Zl9kZXN0cm95KHNyY1sw XSk7CiAJCX0KIAotCQlzcmNbMF0gPSBjcmVhdGVfYm8oZHN0W2NoaWxkXS0+YnVmbWdyLAotCQkJ CSAgIH4wKTsKLQkJc3JjWzFdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJ1Zm1nciwKKwkJc3Jj WzBdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJvcHMsIH4wKTsKKwkJc3JjWzFdID0gY3JlYXRl X2JvKGRzdFtjaGlsZF0tPmJvcHMsCiAJCQkJICAgZmluYWwgfCBjaGlsZCA8PCAxNik7CiAKLQkJ aW50ZWxfY29weV9ibyhiYXRjaCwgc3JjWzBdLCBzcmNbMV0sIFNJWkUpOwotCQlpbnRlbF9jb3B5 X2JvKGJhdGNoLCBkc3RbY2hpbGRdLCBzcmNbMF0sIFNJWkUpOworCQlpbnRlbF9iYl9ibHRfY29w eShpYmIsIHNyY1sxXSwgMCwgMCwgNDA5NiwKKwkJCQkgIHNyY1swXSwgMCwgMCwgNDA5NiwKKwkJ CQkgIDQwOTYvNCwgU0laRS80MDk2LCAzMik7CisJCWludGVsX2JiX2JsdF9jb3B5KGliYiwgc3Jj WzBdLCAwLCAwLCA0MDk2LAorCQkJCSAgZHN0W2NoaWxkXSwgMCwgMCwgNDA5NiwKKwkJCQkgIDQw OTYvNCwgU0laRS80MDk2LCAzMik7CisJCWludGVsX2JiX3N5bmMoaWJiKTsKKworCQlpbnRlbF9i dWZfZGVzdHJveShzcmNbMV0pOworCQlpbnRlbF9idWZfZGVzdHJveShzcmNbMF0pOwogCi0JCWRy bV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmNbMV0pOwotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2Uoc3JjWzBdKTsKKwkJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogCX0KIH0KIAotc3RhdGljIHZv aWQgc3VyZmFjZXNfY2hlY2soZHJtX2ludGVsX2JvICoqYm8sIGludCBjb3VudCwgdWludDMyX3Qg ZXhwZWN0ZWQpCitzdGF0aWMgdm9pZCBzdXJmYWNlc19jaGVjayhzdHJ1Y3QgaW50ZWxfYnVmICoq YnVmLCBpbnQgY291bnQsIHVpbnQzMl90IGV4cGVjdGVkKQogewogCWZvciAoaW50IGNoaWxkID0g MDsgY2hpbGQgPCBjb3VudDsgY2hpbGQrKykgewogCQl1aW50MzJfdCAqcHRyOwogCi0JCWRvX29y X2RpZShkcm1faW50ZWxfYm9fbWFwKGJvW2NoaWxkXSwgMCkpOwotCQlwdHIgPSBib1tjaGlsZF0t PnZpcnR1YWw7CisJCXB0ciA9IGludGVsX2J1Zl9jcHVfbWFwKGJ1ZltjaGlsZF0sIDApOwogCQlm b3IgKGludCBqID0gMDsgaiA8IFNJWkUvNDsgaisrKQogCQkJaWd0X2Fzc2VydF9lcShwdHJbal0s IGV4cGVjdGVkIHwgY2hpbGQgPDwgMTYpOwotCQlkcm1faW50ZWxfYm9fdW5tYXAoYm9bY2hpbGRd KTsKKwkJaW50ZWxfYnVmX3VubWFwKGJ1ZltjaGlsZF0pOwogCX0KIH0KIApAQCAtMzAxLDcgKzI3 Niw3IEBAIGlndF9tYWluCiAJfQogCiAJaWd0X3N1YnRlc3QoImJsdC12cy1yZW5kZXItY3R4MCIp IHsKLQkJZHJtX2ludGVsX2JvICpiY3NbMV0sICpyY3NbTl9DSElMRF07CisJCXN0cnVjdCBpbnRl bF9idWYgKmJjc1sxXSwgKnJjc1tOX0NISUxEXTsKIAogCQlmb3JrX2Jjc19jb3B5KDMwLCAweDQw MDAsIGJjcywgMSk7CiAJCWZvcmtfcmNzX2NvcHkoMzAsIDB4ODAwMCAvIE5fQ0hJTEQsIHJjcywg Tl9DSElMRCwgMCk7CkBAIC0zMTAsMTAgKzI4NSwxMyBAQCBpZ3RfbWFpbgogCiAJCXN1cmZhY2Vz X2NoZWNrKGJjcywgMSwgMHg0MDAwKTsKIAkJc3VyZmFjZXNfY2hlY2socmNzLCBOX0NISUxELCAw eDgwMDAgLyBOX0NISUxEKTsKKworCQljbGVhbnVwX2J1ZnMoYmNzLCAxKTsKKwkJY2xlYW51cF9i dWZzKHJjcywgTl9DSElMRCk7CiAJfQogCiAJaWd0X3N1YnRlc3QoImJsdC12cy1yZW5kZXItY3R4 TiIpIHsKLQkJZHJtX2ludGVsX2JvICpiY3NbMV0sICpyY3NbTl9DSElMRF07CisJCXN0cnVjdCBp bnRlbF9idWYgKmJjc1sxXSwgKnJjc1tOX0NISUxEXTsKIAogCQlmb3JrX3Jjc19jb3B5KDMwLCAw eDgwMDAgLyBOX0NISUxELCByY3MsIE5fQ0hJTEQsIENSRUFURV9DT05URVhUKTsKIAkJZm9ya19i Y3NfY29weSgzMCwgMHg0MDAwLCBiY3MsIDEpOwpAQCAtMzIyLDYgKzMwMCw5IEBAIGlndF9tYWlu CiAKIAkJc3VyZmFjZXNfY2hlY2soYmNzLCAxLCAweDQwMDApOwogCQlzdXJmYWNlc19jaGVjayhy Y3MsIE5fQ0hJTEQsIDB4ODAwMCAvIE5fQ0hJTEQpOworCisJCWNsZWFudXBfYnVmcyhiY3MsIDEp OworCQljbGVhbnVwX2J1ZnMocmNzLCBOX0NISUxEKTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiZmxp bmstYW5kLWNsb3NlLXZtYS1sZWFrIikKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcmF3X2NyYy5j IGIvdGVzdHMva21zX2RyYXdfY3JjLmMKaW5kZXggNzBiOWIwNWYuLmZmZDY1NWIwIDEwMDY0NAot LS0gYS90ZXN0cy9rbXNfZHJhd19jcmMuYworKysgYi90ZXN0cy9rbXNfZHJhd19jcmMuYwpAQCAt MzgsNyArMzgsNyBAQCBzdHJ1Y3QgbW9kZXNldF9wYXJhbXMgewogaW50IGRybV9mZDsKIGRybU1v ZGVSZXNQdHIgZHJtX3JlczsKIGRybU1vZGVDb25uZWN0b3JQdHIgZHJtX2Nvbm5lY3RvcnNbTUFY X0NPTk5FQ1RPUlNdOwotZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworc3RydWN0IGJ1Zl9vcHMg KmJvcHM7CiBpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CiAKICNkZWZpbmUgTl9GT1JNQVRTIDMK QEAgLTEyNiwyMyArMTI2LDIzIEBAIHN0YXRpYyB2b2lkIGdldF9tZXRob2RfY3JjKGVudW0gaWd0 X2RyYXdfbWV0aG9kIG1ldGhvZCwgdWludDMyX3QgZHJtX2Zvcm1hdCwKIAogCWlndF9jcmVhdGVf ZmIoZHJtX2ZkLCBtcy5tb2RlLT5oZGlzcGxheSwgbXMubW9kZS0+dmRpc3BsYXksCiAJCSAgICAg IGRybV9mb3JtYXQsIHRpbGluZywgJmZiKTsKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYnVm bWdyLCBOVUxMLCAmZmIsIG1ldGhvZCwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYm9wcywg MCwgJmZiLCBtZXRob2QsCiAJCQkgMCwgMCwgZmIud2lkdGgsIGZiLmhlaWdodCwKIAkJCSBnZXRf Y29sb3IoZHJtX2Zvcm1hdCwgMCwgMCwgMSkpOwogCi0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQs IGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsCisJaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJv cHMsIDAsICZmYiwgbWV0aG9kLAogCQkJIGZiLndpZHRoIC8gNCwgZmIuaGVpZ2h0IC8gNCwKIAkJ CSBmYi53aWR0aCAvIDIsIGZiLmhlaWdodCAvIDIsCiAJCQkgZ2V0X2NvbG9yKGRybV9mb3JtYXQs IDAsIDEsIDApKTsKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYnVmbWdyLCBOVUxMLCAmZmIs IG1ldGhvZCwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYm9wcywgMCwgJmZiLCBtZXRob2Qs CiAJCQkgZmIud2lkdGggLyA4LCBmYi5oZWlnaHQgLyA4LAogCQkJIGZiLndpZHRoIC8gNCwgZmIu aGVpZ2h0IC8gNCwKIAkJCSBnZXRfY29sb3IoZHJtX2Zvcm1hdCwgMSwgMCwgMCkpOwotCWlndF9k cmF3X3JlY3RfZmIoZHJtX2ZkLCBidWZtZ3IsIE5VTEwsICZmYiwgbWV0aG9kLAorCWlndF9kcmF3 X3JlY3RfZmIoZHJtX2ZkLCBib3BzLCAwLCAmZmIsIG1ldGhvZCwKIAkJCSBmYi53aWR0aCAvIDIs IGZiLmhlaWdodCAvIDIsCiAJCQkgZmIud2lkdGggLyAzLCBmYi5oZWlnaHQgLyAzLAogCQkJIGdl dF9jb2xvcihkcm1fZm9ybWF0LCAxLCAwLCAxKSk7Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQs IGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsIDEsIDEsIDE1LCAxNSwKKwlpZ3RfZHJhd19yZWN0 X2ZiKGRybV9mZCwgYm9wcywgMCwgJmZiLCBtZXRob2QsIDEsIDEsIDE1LCAxNSwKIAkJCSBnZXRf Y29sb3IoZHJtX2Zvcm1hdCwgMCwgMSwgMSkpOwogCiAJcmMgPSBkcm1Nb2RlU2V0Q3J0Yyhkcm1f ZmQsIG1zLmNydGNfaWQsIGZiLmZiX2lkLCAwLCAwLApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRp YyB2b2lkIGZpbGxfZmJfc3VidGVzdCh2b2lkKQogCWlndF9jcmVhdGVfZmIoZHJtX2ZkLCBtcy5t b2RlLT5oZGlzcGxheSwgbXMubW9kZS0+dmRpc3BsYXksCiAJCSAgICAgIERSTV9GT1JNQVRfWFJH Qjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsICZmYik7CiAKLQlpZ3RfZHJhd19yZWN0 X2ZiKGRybV9mZCwgYnVmbWdyLCBOVUxMLCAmZmIsCisJaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQs IGJvcHMsIDAsICZmYiwKIAkJCSBnZW1faGFzX21hcHBhYmxlX2dndHQoZHJtX2ZkKSA/IElHVF9E UkFXX01NQVBfR1RUIDoKIAkJCQkJCQkgSUdUX0RSQVdfTU1BUF9XQywKIAkJCSAwLCAwLCBmYi53 aWR0aCwgZmIuaGVpZ2h0LCAweEZGKTsKQEAgLTI3MCw5ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBz ZXR1cF9lbnZpcm9ubWVudCh2b2lkKQogCiAJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgp OwogCi0JYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwot CWlndF9hc3NlcnQoYnVmbWdyKTsKLQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2Uo YnVmbWdyKTsKKwlib3BzID0gYnVmX29wc19jcmVhdGUoZHJtX2ZkKTsKIAogCWZpbmRfbW9kZXNl dF9wYXJhbXMoKTsKIAlwaXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZHJtX2ZkLCBrbXN0ZXN0 X2dldF9jcnRjX2lkeChkcm1fcmVzLCBtcy5jcnRjX2lkKSwKQEAgLTI4NSw3ICsyODMsNyBAQCBz dGF0aWMgdm9pZCB0ZWFyZG93bl9lbnZpcm9ubWVudCh2b2lkKQogCiAJaWd0X3BpcGVfY3JjX2Zy ZWUocGlwZV9jcmMpOwogCi0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJYnVm X29wc19kZXN0cm95KGJvcHMpOwogCiAJZm9yIChpID0gMDsgaSA8IGRybV9yZXMtPmNvdW50X2Nv bm5lY3RvcnM7IGkrKykKIAkJZHJtTW9kZUZyZWVDb25uZWN0b3IoZHJtX2Nvbm5lY3RvcnNbaV0p OwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMgYi90ZXN0cy9r bXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwppbmRleCA3ODBmZWNmZS4uMTRmNTIyZDggMTAwNjQ0 Ci0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCisrKyBiL3Rlc3RzL2ttc19m cm9udGJ1ZmZlcl90cmFja2luZy5jCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RydWN0IHsKIAlpbnQg ZGVidWdmczsKIAlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CiAKLQlkcm1faW50ZWxfYnVmbWdyICpi dWZtZ3I7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiB9IGRybTsKIAogc3RydWN0IHsKQEAgLTEw OTEsNyArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdfcmVjdChzdHJ1Y3QgZHJhd19wYXR0ZXJu X2luZm8gKnBhdHRlcm4sIHN0cnVjdCBmYl9yZWdpb24gKmZiLAogewogCXN0cnVjdCByZWN0IHJl Y3QgPSBwYXR0ZXJuLT5nZXRfcmVjdChmYiwgcik7CiAKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybS5m ZCwgZHJtLmJ1Zm1nciwgTlVMTCwgZmItPmZiLCBtZXRob2QsCisJaWd0X2RyYXdfcmVjdF9mYihk cm0uZmQsIGRybS5ib3BzLCAwLCBmYi0+ZmIsIG1ldGhvZCwKIAkJCSBmYi0+eCArIHJlY3QueCwg ZmItPnkgKyByZWN0LnksCiAJCQkgcmVjdC53LCByZWN0LmgsIHJlY3QuY29sb3IpOwogCkBAIC0x MTE3LDcgKzExMTcsNyBAQCBzdGF0aWMgdm9pZCBmaWxsX2ZiX3JlZ2lvbihzdHJ1Y3QgZmJfcmVn aW9uICpyZWdpb24sIGVudW0gY29sb3IgZWNvbG9yKQogewogCXVpbnQzMl90IGNvbG9yID0gcGlj a19jb2xvcihyZWdpb24tPmZiLCBlY29sb3IpOwogCi0JaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQs IGRybS5idWZtZ3IsIE5VTEwsIHJlZ2lvbi0+ZmIsIElHVF9EUkFXX0JMVCwKKwlpZ3RfZHJhd19y ZWN0X2ZiKGRybS5mZCwgZHJtLmJvcHMsIDAsIHJlZ2lvbi0+ZmIsIElHVF9EUkFXX0JMVCwKIAkJ CSByZWdpb24tPngsIHJlZ2lvbi0+eSwgcmVnaW9uLT53LCByZWdpb24tPmgsCiAJCQkgY29sb3Ip OwogfQpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgc3RhdGljIGJvb2wgZGlzYWJsZV9mZWF0dXJlcyhj b25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogc3RhdGljIHZvaWQgKmJ1c3lfdGhyZWFkX2Z1bmMo dm9pZCAqZGF0YSkKIHsKIAl3aGlsZSAoIWJ1c3lfdGhyZWFkLnN0b3ApCi0JCWlndF9kcmF3X3Jl Y3QoZHJtLmZkLCBkcm0uYnVmbWdyLCBOVUxMLCBidXN5X3RocmVhZC5oYW5kbGUsCisJCWlndF9k cmF3X3JlY3QoZHJtLmZkLCBkcm0uYm9wcywgMCwgYnVzeV90aHJlYWQuaGFuZGxlLAogCQkJICAg ICAgYnVzeV90aHJlYWQuc2l6ZSwgYnVzeV90aHJlYWQuc3RyaWRlLAogCQkJICAgICAgYnVzeV90 aHJlYWQudGlsaW5nLCBJR1RfRFJBV19CTFQsIDAsIDAsCiAJCQkgICAgICBidXN5X3RocmVhZC53 aWR0aCwgYnVzeV90aHJlYWQuaGVpZ2h0LApAQCAtMTI4OCwxNCArMTI4OCwxMiBAQCBzdGF0aWMg dm9pZCBzZXR1cF9kcm0odm9pZCkKIAlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CiAJ aWd0X2Rpc3BsYXlfcmVxdWlyZSgmZHJtLmRpc3BsYXksIGRybS5mZCk7CiAKLQlkcm0uYnVmbWdy ID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm0uZmQsIDQwOTYpOwotCWlndF9hc3NlcnQo ZHJtLmJ1Zm1ncik7Ci0JZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRybS5idWZt Z3IpOworCWRybS5ib3BzID0gYnVmX29wc19jcmVhdGUoZHJtLmZkKTsKIH0KIAogc3RhdGljIHZv aWQgdGVhcmRvd25fZHJtKHZvaWQpCiB7Ci0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRybS5i dWZtZ3IpOworCWJ1Zl9vcHNfZGVzdHJveShkcm0uYm9wcyk7CiAJaWd0X2Rpc3BsYXlfZmluaSgm ZHJtLmRpc3BsYXkpOwogCWNsb3NlKGRybS5mZCk7CiB9CkBAIC0yNjIyLDE0ICsyNjIwLDE0IEBA IHN0YXRpYyB2b2lkIHNjYWxlZHByaW1hcnlfc3VidGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2Rl ICp0KQogCQkgIHQtPnRpbGluZywgdC0+cGxhbmUsICZuZXdfZmIpOwogCWZpbGxfZmIoJm5ld19m YiwgQ09MT1JfQkxVRSk7CiAKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJtLmJ1Zm1nciwg TlVMTCwgJm5ld19mYiwgdC0+bWV0aG9kLAorCWlndF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0u Ym9wcywgMCwgJm5ld19mYiwgdC0+bWV0aG9kLAogCQkJIHJlZy0+eCwgcmVnLT55LCByZWctPncg LyAyLCByZWctPmggLyAyLAogCQkJIHBpY2tfY29sb3IoJm5ld19mYiwgQ09MT1JfR1JFRU4pKTsK LQlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJtLmJ1Zm1nciwgTlVMTCwgJm5ld19mYiwgdC0+ bWV0aG9kLAorCWlndF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYm9wcywgMCwgJm5ld19mYiwg dC0+bWV0aG9kLAogCQkJIHJlZy0+eCArIHJlZy0+dyAvIDIsIHJlZy0+eSArIHJlZy0+aCAvIDIs CiAJCQkgcmVnLT53IC8gMiwgcmVnLT5oIC8gMiwKIAkJCSBwaWNrX2NvbG9yKCZuZXdfZmIsIENP TE9SX1JFRCkpOwotCWlndF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYnVmbWdyLCBOVUxMLCAm bmV3X2ZiLCB0LT5tZXRob2QsCisJaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQsIGRybS5ib3BzLCAw LCAmbmV3X2ZiLCB0LT5tZXRob2QsCiAJCQkgcmVnLT54ICsgcmVnLT53IC8gMiwgcmVnLT55ICsg cmVnLT5oIC8gMiwKIAkJCSByZWctPncgLyA0LCByZWctPmggLyA0LAogCQkJIHBpY2tfY29sb3Io Jm5ld19mYiwgQ09MT1JfTUFHRU5UQSkpOwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3Bzci5jIGIv dGVzdHMva21zX3Bzci5jCmluZGV4IDQ5ZWE0NDZhLi5kMmM1YzU0MCAxMDA2NDQKLS0tIGEvdGVz dHMva21zX3Bzci5jCisrKyBiL3Rlc3RzL2ttc19wc3IuYwpAQCAtMjksNyArMjksNiBAQAogI2lu Y2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5o PgotI2luY2x1ZGUgImludGVsX2J1Zm1nci5oIgogCiBlbnVtIG9wZXJhdGlvbnMgewogCVBBR0Vf RkxJUCwKQEAgLTY1LDcgKzY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCXVpbnQzMl90IGRldmlk OwogCXVpbnQzMl90IGNydGNfaWQ7CiAJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OwotCWRybV9pbnRl bF9idWZtZ3IgKmJ1Zm1ncjsKKwlzdHJ1Y3QgYnVmX29wcyAqYm9wczsKIAlzdHJ1Y3QgaWd0X2Zi IGZiX2dyZWVuLCBmYl93aGl0ZTsKIAlpZ3RfcGxhbmVfdCAqdGVzdF9wbGFuZTsKIAlpbnQgbW9k X3NpemU7CkBAIC0xMjMsNzMgKzEyMiw5MSBAQCBzdGF0aWMgdm9pZCBkaXNwbGF5X2ZpbmkoZGF0 YV90ICpkYXRhKQogCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEtPmRpc3BsYXkpOwogfQogCi1zdGF0 aWMgdm9pZCBmaWxsX2JsdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IGhhbmRsZSwgdW5zaWduZWQg Y2hhciBjb2xvcikKK3N0YXRpYyB2b2lkIGNvbG9yX2JsaXRfc3RhcnQoc3RydWN0IGludGVsX2Ji ICppYmIpCiB7Ci0JZHJtX2ludGVsX2JvICpkc3QgPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhk YXRhLT5idWZtZ3IsCi0JCQkJCQkgICAgZGF0YS0+ZHJtX2ZkLAotCQkJCQkJICAgICIiLCBoYW5k bGUpOwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0KLQliYXRjaCA9IGludGVs X2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZGV2aWQpOwotCWlndF9hc3Nl cnQoYmF0Y2gpOwotCi0JQ09MT1JfQkxJVF9DT1BZX0JBVENIX1NUQVJUKDApOwotCU9VVF9CQVRD SCgoMSA8PCAyNCkgfCAoMHhmMCA8PCAxNikgfCAwKTsKLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JB VENIKDB4ZmZmIDw8IDE2IHwgMHhmZmYpOwotCU9VVF9SRUxPQyhkc3QsIEk5MTVfR0VNX0RPTUFJ Tl9SRU5ERVIsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDApOwotCU9VVF9CQVRDSChjb2xvcik7 Ci0JQURWQU5DRV9CQVRDSCgpOwotCi0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gpOwot CWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwotCi0JZ2VtX2JvX2J1c3koZGF0YS0+ZHJt X2ZkLCBoYW5kbGUpOworCWludGVsX2JiX291dChpYmIsIFhZX0NPTE9SX0JMVF9DTURfTk9MRU4g fAorCQkgICAgIENPTE9SX0JMVF9XUklURV9BTFBIQSB8CisJCSAgICAgWFlfQ09MT1JfQkxUX1dS SVRFX1JHQiB8CisJCSAgICAgKDQgKyAoaWJiLT5nZW4gPj0gOCkpKTsKIH0KIAotc3RhdGljIHZv aWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCBkcm1faW50ZWxfYm8gKmJv LAotCQkJICAgICBpbnQgc2l6ZSwgaW50IHN0cmlkZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVm ICpjcmVhdGVfYnVmX2Zyb21fZmIoZGF0YV90ICpkYXRhLAorCQkJCQkgICAgY29uc3Qgc3RydWN0 IGlndF9mYiAqZmIpCiB7Ci0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKKwl1aW50MzJf dCBuYW1lLCBoYW5kbGUsIHRpbGluZywgc3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCBicHAsIHNpemU7 CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOworCisJaWd0X2Fzc2VydF9lcShmYi0+b2Zmc2V0c1sw XSwgMCk7CisKKwl0aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpOwor CXN0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOworCWJwcCA9IGZiLT5wbGFuZV9icHBbMF07CisJc2l6 ZSA9IGZiLT5zaXplOworCXdpZHRoID0gc3RyaWRlIC8gKGJwcCAvIDgpOworCWhlaWdodCA9IHNp emUgLyBzdHJpZGU7CisKKwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlpZ3RfYXNz ZXJ0KGJ1Zik7CisKKwluYW1lID0gZ2VtX2ZsaW5rKGRhdGEtPmRybV9mZCwgZmItPmdlbV9oYW5k bGUpOworCWhhbmRsZSA9IGdlbV9vcGVuKGRhdGEtPmRybV9mZCwgbmFtZSk7CisJaW50ZWxfYnVm X2luaXRfdXNpbmdfaGFuZGxlKGRhdGEtPmJvcHMsIGhhbmRsZSwgYnVmLAorCQkJCSAgICB3aWR0 aCwgaGVpZ2h0LCBicHAsIDAsIHRpbGluZywgMCk7CisJcmV0dXJuIGJ1ZjsKK30KIAotCWJ1Zi0+ Ym8gPSBibzsKLQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gc3RyaWRlOwotCWJ1Zi0+dGlsaW5n ID0gSTkxNV9USUxJTkdfWDsKLQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IHNpemU7Ci0JYnVmLT5i cHAgPSAzMjsKK3N0YXRpYyB2b2lkIGZpbGxfYmx0KGRhdGFfdCAqZGF0YSwgY29uc3Qgc3RydWN0 IGlndF9mYiAqZmIsIHVuc2lnbmVkIGNoYXIgY29sb3IpCit7CisJc3RydWN0IGludGVsX2JiICpp YmI7CisJc3RydWN0IGludGVsX2J1ZiAqZHN0OworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRh dGEtPmRybV9mZCwgNDA5Nik7CisJZHN0ID0gY3JlYXRlX2J1Zl9mcm9tX2ZiKGRhdGEsIGZiKTsK KworCWNvbG9yX2JsaXRfc3RhcnQoaWJiKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAoMSA8PCAyNCkg fCAoMHhmMCA8PCAxNikgfCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9v dXQoaWJiLCAweGZmZiA8PCAxNiB8IDB4ZmZmKTsKKwlpbnRlbF9iYl9lbWl0X3JlbG9jKGliYiwg ZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkgICAgSTkxNV9HRU1fRE9N QUlOX1JFTkRFUiwgMCwgMHgwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCBjb2xvcik7CisKKwlpbnRl bF9iYl9mbHVzaF9ibGl0KGliYik7CisJaW50ZWxfYmJfc3luYyhpYmIpOworCWludGVsX2JiX2Rl c3Ryb3koaWJiKTsKKwlpbnRlbF9idWZfZGVzdHJveShkc3QpOwogfQogCi1zdGF0aWMgdm9pZCBm aWxsX3JlbmRlcihkYXRhX3QgKmRhdGEsIHVpbnQzMl90IGhhbmRsZSwgdW5zaWduZWQgY2hhciBj b2xvcikKK3N0YXRpYyB2b2lkIGZpbGxfcmVuZGVyKGRhdGFfdCAqZGF0YSwgY29uc3Qgc3RydWN0 IGlndF9mYiAqZmIsCisJCQl1bnNpZ25lZCBjaGFyIGNvbG9yKQogewotCWRybV9pbnRlbF9ibyAq c3JjLCAqZHN0OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0Jc3RydWN0IGln dF9idWYgc3JjX2J1ZiwgZHN0X2J1ZjsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsICpkc3Q7CisJ c3RydWN0IGludGVsX2JiICppYmI7CiAJY29uc3QgdWludDhfdCBidWZbNF0gPSB7IGNvbG9yLCBj b2xvciwgY29sb3IsIGNvbG9yIH07CiAJaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcmNvcHkg PSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLT5kZXZpZCk7CisJaW50IGhlaWdodCwgd2lk dGgsIHRpbGluZzsKIAogCWlndF9za2lwX29uKCFyZW5kZXJjb3B5KTsKIAotCWRzdCA9IGdlbV9o YW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZHJtX2ZkLCAiIiwgaGFuZGxl KTsKLQlpZ3RfYXNzZXJ0KGRzdCk7CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRhdGEtPmRybV9m ZCwgNDA5Nik7CisJZHN0ID0gY3JlYXRlX2J1Zl9mcm9tX2ZiKGRhdGEsIGZiKTsKIAotCXNyYyA9 IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBkYXRhLT5tb2Rfc2l6ZSwgNDA5 Nik7Ci0JaWd0X2Fzc2VydChzcmMpOworCXdpZHRoID0gZmItPnN0cmlkZXNbMF0gLyAoZmItPnBs YW5lX2JwcFswXSAvIDgpOworCWhlaWdodCA9IGZiLT5zaXplIC8gZmItPnN0cmlkZXNbMF07CisJ dGlsaW5nID0gaWd0X2ZiX21vZF90b190aWxpbmcoZmItPm1vZGlmaWVyKTsKIAorCXNyYyA9IGlu dGVsX2J1Zl9jcmVhdGUoZGF0YS0+Ym9wcywgd2lkdGgsIGhlaWdodCwgZmItPnBsYW5lX2JwcFsw XSwKKwkJCSAgICAgICAwLCB0aWxpbmcsIDApOwogCWdlbV93cml0ZShkYXRhLT5kcm1fZmQsIHNy Yy0+aGFuZGxlLCAwLCBidWYsIDQpOwogCi0Jc2NyYXRjaF9idWZfaW5pdCgmc3JjX2J1Ziwgc3Jj LCBkYXRhLT5tb2Rfc2l6ZSwgZGF0YS0+bW9kX3N0cmlkZSk7Ci0Jc2NyYXRjaF9idWZfaW5pdCgm ZHN0X2J1ZiwgZHN0LCBkYXRhLT5tb2Rfc2l6ZSwgZGF0YS0+bW9kX3N0cmlkZSk7Ci0KLQliYXRj aCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZGV2aWQpOwot CWlndF9hc3NlcnQoYmF0Y2gpOwotCi0JcmVuZGVyY29weShiYXRjaCwgTlVMTCwKLQkJICAgJnNy Y19idWYsIDAsIDAsIDB4ZmYsIDB4ZmYsCi0JCSAgICZkc3RfYnVmLCAwLCAwKTsKKwlyZW5kZXJj b3B5KGliYiwgMCwKKwkJICAgc3JjLCAwLCAwLCAweGZmLCAweGZmLAorCQkgICBkc3QsIDAsIDAp OwogCi0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7Ci0KLQlnZW1fYm9fYnVzeShkYXRh LT5kcm1fZmQsIGhhbmRsZSk7CisJaW50ZWxfYmJfc3luYyhpYmIpOworCWludGVsX2JiX2Rlc3Ry b3koaWJiKTsKKwlpbnRlbF9idWZfZGVzdHJveShzcmMpOworCWludGVsX2J1Zl9kZXN0cm95KGRz dCk7CiB9CiAKIHN0YXRpYyBib29sIHNpbmtfc3VwcG9ydChkYXRhX3QgKmRhdGEsIGVudW0gcHNy X21vZGUgbW9kZSkKQEAgLTI5MCwxMSArMzA3LDExIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGRh dGFfdCAqZGF0YSkKIAkJZXhwZWN0ZWQgPSAiQkxBQ0sgb3IgVFJBTlNQQVJFTlQgbWFyayBvbiB0 b3Agb2YgcGxhbmUgaW4gdGVzdCI7CiAJCWJyZWFrOwogCWNhc2UgQkxUOgotCQlmaWxsX2JsdChk YXRhLCBoYW5kbGUsIDApOworCQlmaWxsX2JsdChkYXRhLCAmZGF0YS0+ZmJfd2hpdGUsIDApOwog CQlleHBlY3RlZCA9ICJCTEFDSyBvciBUUkFOU1BBUkVOVCBtYXJrIG9uIHRvcCBvZiBwbGFuZSBp biB0ZXN0IjsKIAkJYnJlYWs7CiAJY2FzZSBSRU5ERVI6Ci0JCWZpbGxfcmVuZGVyKGRhdGEsIGhh bmRsZSwgMCk7CisJCWZpbGxfcmVuZGVyKGRhdGEsICZkYXRhLT5mYl93aGl0ZSwgMCk7CiAJCWV4 cGVjdGVkID0gIkJMQUNLIG9yIFRSQU5TUEFSRU5UIG1hcmsgb24gdG9wIG9mIHBsYW5lIGluIHRl c3QiOwogCQlicmVhazsKIAljYXNlIFBMQU5FX01PVkU6CkBAIC0zMTQsNyArMzMxLDggQEAgc3Rh dGljIHZvaWQgcnVuX3Rlc3QoZGF0YV90ICpkYXRhKQogCW1hbnVhbChleHBlY3RlZCk7CiB9CiAK LXN0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChkYXRhX3QgKmRhdGEpIHsKK3N0YXRpYyB2b2lkIHRl c3RfY2xlYW51cChkYXRhX3QgKmRhdGEpCit7CiAJaWd0X3BsYW5lX3QgKnByaW1hcnk7CiAKIAlw cmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRhLT5vdXRwdXQsCkBAIC00NDQs MTEgKzQ2Miw3IEBAIGlndF9tYWluX2FyZ3MoIiIsIGxvbmdfb3B0aW9ucywgaGVscF9zdHIsIG9w dF9oYW5kbGVyLCAmZGF0YSkKIAkJCSAgICAgICJTaW5rIGRvZXMgbm90IHN1cHBvcnQgUFNSXG4i KTsKIAogCQlkYXRhLnN1cHBvcnRzX3BzcjIgPSBzaW5rX3N1cHBvcnQoJmRhdGEsIFBTUl9NT0RF XzIpOwotCi0JCWRhdGEuYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkYXRhLmRy bV9mZCwgNDA5Nik7Ci0JCWlndF9hc3NlcnQoZGF0YS5idWZtZ3IpOwotCQlkcm1faW50ZWxfYnVm bWdyX2dlbV9lbmFibGVfcmV1c2UoZGF0YS5idWZtZ3IpOwotCisJCWRhdGEuYm9wcyA9IGJ1Zl9v cHNfY3JlYXRlKGRhdGEuZHJtX2ZkKTsKIAkJZGlzcGxheV9pbml0KCZkYXRhKTsKIAl9CiAKQEAg LTUyOCw3ICs1NDIsNyBAQCBpZ3RfbWFpbl9hcmdzKCIiLCBsb25nX29wdGlvbnMsIGhlbHBfc3Ry LCBvcHRfaGFuZGxlciwgJmRhdGEpCiAJCQlwc3JfZGlzYWJsZShkYXRhLmRybV9mZCwgZGF0YS5k ZWJ1Z2ZzX2ZkKTsKIAogCQljbG9zZShkYXRhLmRlYnVnZnNfZmQpOwotCQlkcm1faW50ZWxfYnVm bWdyX2Rlc3Ryb3koZGF0YS5idWZtZ3IpOworCQlidWZfb3BzX2Rlc3Ryb3koZGF0YS5ib3BzKTsK IAkJZGlzcGxheV9maW5pKCZkYXRhKTsKIAl9CiB9Ci0tIAoyLjI2LjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=