From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 48D9789E35 for ; Mon, 10 Aug 2020 09:48:23 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 10 Aug 2020 11:46:59 +0200 Message-Id: <20200810094710.28930-20-zbigniew.kempczynski@intel.com> In-Reply-To: <20200810094710.28930-1-zbigniew.kempczynski@intel.com> References: <20200810094710.28930-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v27 19/30] tests/gem_concurrent_all: remove libdrm dependency 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 VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClNp Z25lZC1vZmYtYnk6IERvbWluaWsgR3J6ZWdvcnplayA8ZG9taW5pay5ncnplZ29yemVrQGludGVs LmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50 ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQog dGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYyB8IDQzOSArKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCAyMTYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYyBi L3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKaW5kZXggODAyNzhjNzUuLjkwZTEzMmZm IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50X2FsbC5jCisrKyBiL3Rlc3Rz L2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJp OTE1L2dlbS5oIgogI2luY2x1ZGUgImlndC5oIgogI2luY2x1ZGUgImlndF92Z2VtLmgiCi0jaW5j bHVkZSAiaW50ZWxfYnVmbWdyLmgiCiAKIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IG9mIHBy ZWFkL3B3cml0ZS9tbWFwIGJlaGF2aW9yIHdoZW4gd3JpdGluZyB0byBhY3RpdmUiCiAJCSAgICAg IiBidWZmZXJzLiIpOwpAQCAtNjQsNyArNjMsOSBAQCBpbnQgcGFzczsKIHN0cnVjdCBjcmVhdGUg ewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJdm9pZCAoKnJlcXVpcmUpKGNvbnN0IHN0cnVjdCBjcmVh dGUgKiwgdW5zaWduZWQpOwotCWRybV9pbnRlbF9ibyAqKCpjcmVhdGUpKGRybV9pbnRlbF9idWZt Z3IgKiwgdWludDY0X3Qgc2l6ZSk7CisJc3RydWN0IGludGVsX2J1ZiAqKCpjcmVhdGUpKHN0cnVj dCBidWZfb3BzICpib3BzLCB1aW50MzJfdCB3aWR0aCwKKwkJCQkgICAgdWludDMyX3QgaGVpZ2h0 LCB1aW50MzJfdCB0aWxpbmcsCisJCQkJICAgIHVpbnQ2NF90IHNpemUpOwogfTsKIAogc3RydWN0 IHNpemUgewpAQCAtNzcsMTAgKzc4LDEwIEBAIHN0cnVjdCBidWZmZXJzIHsKIAljb25zdCBzdHJ1 Y3QgY3JlYXRlICpjcmVhdGU7CiAJY29uc3Qgc3RydWN0IGFjY2Vzc19tb2RlICptb2RlOwogCWNv bnN0IHN0cnVjdCBzaXplICpzaXplOwotCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKLQlzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwotCWRybV9pbnRlbF9ibyAqKnNyYywgKipkc3Q7 Ci0JZHJtX2ludGVsX2JvICpzbm9vcCwgKnNwYXJlOworCXN0cnVjdCBidWZfb3BzICpib3BzOwor CXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0cnVjdCBpbnRlbF9idWYgKipzcmMsICoqZHN0Owor CXN0cnVjdCBpbnRlbF9idWYgKnNub29wLCAqc3BhcmU7CiAJdWludDMyX3QgKnRtcDsKIAlpbnQg d2lkdGgsIGhlaWdodCwgbnBpeGVscywgcGFnZV9zaXplOwogCWludCBjb3VudCwgbnVtX2J1ZmZl cnM7CkBAIC04OCwyOSArODksMzIgQEAgc3RydWN0IGJ1ZmZlcnMgewogCiAjZGVmaW5lIE1JTl9C VUZGRVJTIDMKIAotc3RhdGljIHZvaWQgYmx0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRy bV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNyYyk7CitzdGF0aWMgdm9pZCBibHRfY29w eV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJc3RydWN0 IGludGVsX2J1ZiAqc3JjKTsKIAogc3RhdGljIHZvaWQKLW5vcF9yZWxlYXNlX2JvKGRybV9pbnRl bF9ibyAqYm8pCitub3BfcmVsZWFzZV9ibyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0JZHJt X2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKKwlpZiAoYnVmLT5wdHIpCisJCWludGVsX2J1Zl91 bm1hcChidWYpOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCi1w cndfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2 YWwpCitwcndfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYs IHVpbnQzMl90IHZhbCkKIHsKIAlmb3IgKGludCBpID0gMDsgaSA8IGItPm5waXhlbHM7IGkrKykK IAkJYi0+dG1wW2ldID0gdmFsOwotCWRybV9pbnRlbF9ib19zdWJkYXRhKGJvLCAwLCA0KmItPm5w aXhlbHMsIGItPnRtcCk7CisJZ2VtX3dyaXRlKGZkLCBidWYtPmhhbmRsZSwgMCwgYi0+dG1wLCA0 KmItPm5waXhlbHMpOwogfQogCiBzdGF0aWMgdm9pZAotcHJ3X2NtcF9ibyhzdHJ1Y3QgYnVmZmVy cyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQorcHJ3X2NtcF9ibyhzdHJ1Y3Qg YnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJdWlu dDMyX3QgKnZhZGRyOwogCiAJdmFkZHIgPSBiLT50bXA7Ci0JZG9fb3JfZGllKGRybV9pbnRlbF9i b19nZXRfc3ViZGF0YShibywgMCwgNCpiLT5ucGl4ZWxzLCB2YWRkcikpOworCWdlbV9yZWFkKGZk LCBidWYtPmhhbmRsZSwgMCwgdmFkZHIsIDQqYi0+bnBpeGVscyk7CiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBiLT5ucGl4ZWxzOyBpKyspCiAJCWlndF9hc3NlcnRfZXFfdTMyKHZhZGRyW2ldLCB2YWwp OwogfQpAQCAtMTE4LDMxICsxMjIsMzMgQEAgcHJ3X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwg ZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQogI2RlZmluZSBwaXhlbCh5LCB3aWR0aCkg KCh5KSood2lkdGgpICsgKCgoeSkgKyBwYXNzKSUod2lkdGgpKSkKIAogc3RhdGljIHZvaWQKLXBh cnRpYWxfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJf dCB2YWwpCitwYXJ0aWFsX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1 ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJZm9yIChpbnQgeSA9IDA7IHkgPCBiLT5oZWlnaHQ7 IHkrKykKLQkJZG9fb3JfZGllKGRybV9pbnRlbF9ib19zdWJkYXRhKGJvLCA0KnBpeGVsKHksIGIt PndpZHRoKSwgNCwgJnZhbCkpOworCQlnZW1fd3JpdGUoZmQsIGJ1Zi0+aGFuZGxlLCA0KnBpeGVs KHksIGItPndpZHRoKSwgJnZhbCwgNCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wYXJ0aWFsX2NtcF9i byhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQorcGFy dGlhbF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWlu dDMyX3QgdmFsKQogewogCWZvciAoaW50IHkgPSAwOyB5IDwgYi0+aGVpZ2h0OyB5KyspIHsKLQkJ dWludDMyX3QgYnVmOwotCQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX2dldF9zdWJkYXRhKGJvLCA0 KnBpeGVsKHksIGItPndpZHRoKSwgNCwgJmJ1ZikpOwotCQlpZ3RfYXNzZXJ0X2VxX3UzMihidWYs IHZhbCk7CisJCXVpbnQzMl90IHRtcDsKKworCQlnZW1fcmVhZChmZCwgYnVmLT5oYW5kbGUsIDQq cGl4ZWwoeSwgYi0+d2lkdGgpLCAmdG1wLCA0KTsKKwkJaWd0X2Fzc2VydF9lcV91MzIodG1wLCB2 YWwpOwogCX0KIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCi1jcmVhdGVfbm9ybWFsX2JvKGRy bV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgdWludDY0X3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50 ZWxfYnVmICoKK2NyZWF0ZV9ub3JtYWxfYm8oc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHVpbnQzMl90 IHdpZHRoLAorCQkgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2NF90IHNp emUpCiB7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CisJaW50 IGJwcCA9IHNpemUvaGVpZ2h0L3dpZHRoICogODsKIAotCWJvID0gZHJtX2ludGVsX2JvX2FsbG9j KGJ1Zm1nciwgImJvIiwgc2l6ZSwgMCk7Ci0JaWd0X2Fzc2VydChibyk7CisJYnVmID0gaW50ZWxf YnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0LCBicHAsIDAsIHRpbGluZywgMCk7CiAKLQly ZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9ub3Jt YWwoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAgLTE1MCwx OSArMTU2LDI2IEBAIHN0YXRpYyB2b2lkIGNhbl9jcmVhdGVfbm9ybWFsKGNvbnN0IHN0cnVjdCBj cmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCiB9CiAKICNpZiBIQVZFX0NSRUFURV9QUklW QVRFCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0ZV9wcml2YXRlX2JvKGRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1nciwgdWludDY0X3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoK K2NyZWF0ZV9wcml2YXRlX2JvKGJ1Zl9vcHMgKmJvcHMsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJf dCBoZWlnaHQsCisJCSAgdWludDMyX3QgdGlsaW5nLCB1aW50NjRfdCBzaXplKQogewotCWRybV9p bnRlbF9ibyAqYm87Ci0JdWludDMyX3QgaGFuZGxlOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsK Kwl1aW50MzJfdCBoYW5kbGUsIGJ1Zl9oYW5kbGUsIG5hbWU7CisJaW50IGJwcCA9IHNpemUvaGVp Z2h0L3dpZHRoICogODsKIAogCS8qIFhYWCBnZW1fY3JlYXRlX3dpdGhfZmxhZ3MoZmQsIHNpemUs IEk5MTVfQ1JFQVRFX1BSSVZBVEUpOyAqLwogCiAJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgc2l6 ZSk7Ci0JYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGZkLCAic3RvbGVuIiwg aGFuZGxlKTsKKwluYW1lID0gZ2VtX2ZsaW5rKGZkLCBoYW5kbGUpOworCWJ1Zl9oYW5kbGUgPSBn ZW1fb3BlbihmZCwgbmFtZSk7CisKKwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlp bnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYm9wcywgYnVmX2hhbmRsZSwgYnVmLCB3aWR0aCwg aGVpZ2h0LAorCQkJCSAgICBicHAsIDAsIHRpbGluZywgMCk7CiAJZ2VtX2Nsb3NlKGZkLCBoYW5k bGUpOwogCi0JcmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkIGNhbl9j cmVhdGVfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50 KQpAQCAtMTcyLDE5ICsxODUsMjYgQEAgc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9wcml2YXRlKGNv bnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCiAjZW5kaWYKIAogI2lm IEhBVkVfQ1JFQVRFX1NUT0xFTgotc3RhdGljIGRybV9pbnRlbF9ibyAqCi1jcmVhdGVfc3RvbGVu X2JvKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgdWludDY0X3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1 Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9zdG9sZW5fYm8oYnVmX29wcyAqYm9wcywgdWludDMyX3Qg d2lkdGgsIHVpbnQzMl90IGhlaWdodCwKKwkJIHVpbnQzMl90IHRpbGluZywgdWludDY0X3Qgc2l6 ZSkKIHsKLQlkcm1faW50ZWxfYm8gKmJvOwotCXVpbnQzMl90IGhhbmRsZTsKKwlzdHJ1Y3QgaW50 ZWxfYnVmICpidWY7CisJdWludDMyX3QgaGFuZGxlLCBidWZfaGFuZGxlLCBuYW1lOworCWludCBi cHAgPSBzaXplL2hlaWdodC93aWR0aCAqIDg7CiAKLQkvKiBYWFggZ2VtX2NyZWF0ZV93aXRoX2Zs YWdzKGZkLCBzaXplLCBJOTE1X0NSRUFURV9TVE9MRU4pOyAqLworCS8qIFhYWCBnZW1fY3JlYXRl X3dpdGhfZmxhZ3MoZmQsIHNpemUsIEk5MTVfQ1JFQVRFX1BSSVZBVEUpOyAqLwogCiAJaGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgc2l6ZSk7Ci0JYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhi dWZtZ3IsIGZkLCAic3RvbGVuIiwgaGFuZGxlKTsKKwluYW1lID0gZ2VtX2ZsaW5rKGZkLCBoYW5k bGUpOworCWJ1Zl9oYW5kbGUgPSBnZW1fb3BlbihmZCwgbmFtZSk7CisKKwlidWYgPSBjYWxsb2Mo MSwgc2l6ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYm9wcywgYnVm X2hhbmRsZSwgYnVmLCB3aWR0aCwgaGVpZ2h0LAorCQkJCSAgICBicHAsIDAsIHRpbGluZywgMCk7 CiAJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwogCi0JcmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9 CiAKIHN0YXRpYyB2b2lkIGNhbl9jcmVhdGVfc3RvbGVuKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNy ZWF0ZSwgdW5zaWduZWQgY291bnQpCkBAIC0yMDEsMTAgKzIyMSwxNyBAQCBzdGF0aWMgdm9pZCBj cmVhdGVfY3B1X3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBj b3VudCkKICNlbmRpZgogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3Qg aW50ZWxfYnVmICoKK2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYiwgdWludDMyX3Qg dGlsaW5nKQoreworCXJldHVybiBiLT5jcmVhdGUtPmNyZWF0ZShiLT5ib3BzLCBiLT53aWR0aCwg Yi0+aGVpZ2h0LAorCQkJCSB0aWxpbmcsIDQqYi0+bnBpeGVscyk7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgaW50ZWxfYnVmICoKIHVubWFwcGVkX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAq YikKIHsKLQlyZXR1cm4gYi0+Y3JlYXRlLT5jcmVhdGUoYi0+YnVmbWdyLCA0KmItPm5waXhlbHMp OworCXJldHVybiBjcmVhdGVfYm8oYiwgSTkxNV9USUxJTkdfTk9ORSk7CiB9CiAKIHN0YXRpYyB2 b2lkIGNyZWF0ZV9zbm9vcF9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5z aWduZWQgY291bnQpCkBAIC0yMTMsMTYgKzI0MCwxNSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfc25v b3BfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50KQog CWlndF9yZXF1aXJlKCFnZW1faGFzX2xsYyhmZCkpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2Jv ICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIHNub29wX2NyZWF0ZV9ibyhjb25zdCBzdHJ1 Y3QgYnVmZmVycyAqYikKIHsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9idWYg KmJ1ZjsKIAotCWJvID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIpOwotCWdlbV9zZXRfY2FjaGluZyhm ZCwgYm8tPmhhbmRsZSwgSTkxNV9DQUNISU5HX0NBQ0hFRCk7Ci0JZHJtX2ludGVsX2JvX2Rpc2Fi bGVfcmV1c2UoYm8pOworCWJ1ZiA9IHVubWFwcGVkX2NyZWF0ZV9ibyhiKTsKKwlnZW1fc2V0X2Nh Y2hpbmcoZmQsIGJ1Zi0+aGFuZGxlLCBJOTE1X0NBQ0hJTkdfQ0FDSEVEKTsKIAotCXJldHVybiBi bzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVfdXNlcnB0cl9yZXF1aXJl KGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCkBAIC0yNTEsMTEg KzI3NywxMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfdXNlcnB0cl9yZXF1aXJlKGNvbnN0IHN0cnVj dCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291bnQpCiAJaWd0X3JlcXVpcmUoaGFzX3VzZXJw dHIpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVm ICoKIHVzZXJwdHJfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXN0cnVj dCBkcm1faTkxNV9nZW1fdXNlcnB0ciB1c2VycHRyOwotCWRybV9pbnRlbF9ibyAqYm87CisJc3Ry dWN0IGludGVsX2J1ZiAqYnVmOwogCXZvaWQgKnB0cjsKIAogCW1lbXNldCgmdXNlcnB0ciwgMCwg c2l6ZW9mKHVzZXJwdHIpKTsKQEAgLTI2Niw1NCArMjkyLDQ4IEBAIHVzZXJwdHJfY3JlYXRlX2Jv KGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogCWlndF9hc3NlcnQocHRyICE9ICh2b2lkICopLTEp OwogCXVzZXJwdHIudXNlcl9wdHIgPSB0b191c2VyX3BvaW50ZXIocHRyKTsKIAotI2lmIDAKIAlk b19vcl9kaWUoZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9VU0VSUFRSLCAmdXNlcnB0 cikpOwotCWJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYi0+YnVmbWdyLCBmZCwgInVzZXJw dHIiLCB1c2VycHRyLmhhbmRsZSk7Ci0JZ2VtX2Nsb3NlKGZkLCB1c2VycHRyLmhhbmRsZSk7Ci0j ZWxzZQotCWJvID0gZHJtX2ludGVsX2JvX2FsbG9jX3VzZXJwdHIoYi0+YnVmbWdyLCAibmFtZSIs Ci0JCQkJCXB0ciwgSTkxNV9USUxJTkdfTk9ORSwgMCwKLQkJCQkJdXNlcnB0ci51c2VyX3NpemUs IDApOwotCWlndF9hc3NlcnQoYm8pOwotI2VuZGlmCi0JYm8tPnZpcnR1YWwgPSBmcm9tX3VzZXJf cG9pbnRlcih1c2VycHRyLnVzZXJfcHRyKTsKKwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYp KTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYi0+Ym9wcywgdXNlcnB0ci5oYW5kbGUs IGJ1ZiwgYi0+d2lkdGgsCisJCQkJICAgIGItPmhlaWdodCwgMzIsIDAsIEk5MTVfVElMSU5HX05P TkUsIDApOwogCi0JcmV0dXJuIGJvOworCWJ1Zi0+cHRyID0gKHZvaWQgKikgZnJvbV91c2VyX3Bv aW50ZXIodXNlcnB0ci51c2VyX3B0cik7CisKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9p ZAotdXNlcnB0cl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90IHZhbCkKK3VzZXJwdHJfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50 ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgc2l6ZSA9IGItPm5waXhlbHM7Ci0J dWludDMyX3QgKnZhZGRyID0gYm8tPnZpcnR1YWw7CisJdWludDMyX3QgKnZhZGRyID0gYnVmLT5w dHI7CiAKLQlnZW1fc2V0X2RvbWFpbihmZCwgYm8tPmhhbmRsZSwKKwlnZW1fc2V0X2RvbWFpbihm ZCwgYnVmLT5oYW5kbGUsCiAJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fQ1BVLCBJOTE1X0dFTV9E T01BSU5fQ1BVKTsKIAl3aGlsZSAoc2l6ZS0tKQogCQkqdmFkZHIrKyA9IHZhbDsKIH0KIAogc3Rh dGljIHZvaWQKLXVzZXJwdHJfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8g KmJvLCB1aW50MzJfdCB2YWwpCit1c2VycHRyX2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3Ry dWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJaW50IHNpemUgPSAgYi0+bnBp eGVsczsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIg PSBidWYtPnB0cjsKIAotCWdlbV9zZXRfZG9tYWluKGZkLCBiby0+aGFuZGxlLAorCWdlbV9zZXRf ZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDAp OwogCXdoaWxlIChzaXplLS0pCiAJCWlndF9hc3NlcnRfZXFfdTMyKCp2YWRkcisrLCB2YWwpOwog fQogCiBzdGF0aWMgdm9pZAotdXNlcnB0cl9yZWxlYXNlX2JvKGRybV9pbnRlbF9ibyAqYm8pCit1 c2VycHRyX3JlbGVhc2VfYm8oc3RydWN0IGludGVsX2J1ZiAqYnVmKQogewotCWlndF9hc3NlcnQo Ym8tPnZpcnR1YWwpOworCWlndF9hc3NlcnQoYnVmLT5wdHIpOwogCi0JbXVubWFwKGJvLT52aXJ0 dWFsLCBiby0+c2l6ZSk7Ci0JYm8tPnZpcnR1YWwgPSBOVUxMOworCW11bm1hcChidWYtPnB0ciwg YnVmLT5zdXJmYWNlWzBdLnNpemUpOwogCi0JZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsK KwlpbnRlbF9idWZfZGVzdHJveShidWYpOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVfZG1hYnVm X3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAg LTM0OSwxMyArMzY5LDE0IEBAIHN0cnVjdCBkbWFidWYgewogCXZvaWQgKm1hcDsKIH07CiAKLXN0 YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgogZG1hYnVmX2Ny ZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKIAlzdHJ1Y3QgZHJtX3ByaW1lX2hh bmRsZSBhcmdzOwotCWRybV9pbnRlbF9ibyAqYm87CisJc3RhdGljIHN0cnVjdCBpbnRlbF9idWYg KmJ1ZjsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWY7CiAJaW50IHNpemU7CisJdWludDMyX3QgaGFu ZGxlOwogCiAJc2l6ZSA9IGItPnBhZ2Vfc2l6ZTsKIApAQCAtMzY2LDkgKzM4NywxMiBAQCBkbWFi dWZfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogCiAJZG9faW9jdGwoZmQsIERS TV9JT0NUTF9QUklNRV9IQU5ETEVfVE9fRkQsICZhcmdzKTsKIAlnZW1fY2xvc2UoZmQsIGFyZ3Mu aGFuZGxlKTsKKwlpZ3RfYXNzZXJ0KGFyZ3MuZmQgIT0gLTEpOwogCi0JYm8gPSBkcm1faW50ZWxf Ym9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGItPmJ1Zm1nciwgYXJncy5mZCwgc2l6ZSk7Ci0JaWd0 X2Fzc2VydChibyk7CisJaGFuZGxlID0gcHJpbWVfZmRfdG9faGFuZGxlKGJ1Zl9vcHNfZ2V0X2Zk KGItPmJvcHMpLCBhcmdzLmZkKTsKKwlidWYgPSBjYWxsb2MoMSwgc2l6ZW9mKCpidWYpKTsKKwlp bnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYi0+Ym9wcywgaGFuZGxlLCBidWYsIGItPndpZHRo LAorCQkJCSAgICBiLT5oZWlnaHQsIDMyLCAwLCBJOTE1X1RJTElOR19OT05FLCAwKTsKIAogCWRt YWJ1ZiA9IG1hbGxvYyhzaXplb2YoKmRtYWJ1ZikpOwogCWlndF9hc3NlcnQoZG1hYnVmKTsKQEAg LTM3OSwxNSArNDAzLDE1IEBAIGRtYWJ1Zl9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMg KmIpCiAJCQkgICBkbWFidWYtPmZkLCAwKTsKIAlpZ3RfYXNzZXJ0KGRtYWJ1Zi0+bWFwICE9ICh2 b2lkICopLTEpOwogCi0JYm8tPnZpcnR1YWwgPSBkbWFidWY7CisJYnVmLT5wdHIgPSAodm9pZCAq KSBkbWFidWY7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGljIHZvaWQK LWRtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQz Ml90IHZhbCkKK2RtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9IGJvLT52 aXJ0dWFsOworCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICh2b2lkICopIGJ1Zi0+cHRyOwogCXVp bnQzMl90ICp2ID0gZG1hYnVmLT5tYXA7CiAJaW50IHk7CiAKQEAgLTM5OCw5ICs0MjIsOSBAQCBk bWFidWZfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJf dCB2YWwpCiB9CiAKIHN0YXRpYyB2b2lkCi1kbWFidWZfY21wX2JvKHN0cnVjdCBidWZmZXJzICpi LCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitkbWFidWZfY21wX2JvKHN0cnVjdCBi dWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKLQlzdHJ1 Y3QgZG1hYnVmICpkbWFidWYgPSBiby0+dmlydHVhbDsKKwlzdHJ1Y3QgZG1hYnVmICpkbWFidWYg PSAodm9pZCAqKSBidWYtPnB0cjsKIAl1aW50MzJfdCAqdiA9IGRtYWJ1Zi0+bWFwOwogCWludCB5 OwogCkBAIC00MTEsMTcgKzQzNSwxNiBAQCBkbWFidWZfY21wX2JvKHN0cnVjdCBidWZmZXJzICpi LCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiB9CiAKIHN0YXRpYyB2b2lkCi1kbWFi dWZfcmVsZWFzZV9ibyhkcm1faW50ZWxfYm8gKmJvKQorZG1hYnVmX3JlbGVhc2VfYm8oc3RydWN0 IGludGVsX2J1ZiAqYnVmKQogewotCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9IGJvLT52aXJ0dWFs OworCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9ICh2b2lkICopIGJ1Zi0+cHRyOwogCWlndF9hc3Nl cnQoZG1hYnVmKTsKIAotCW11bm1hcChkbWFidWYtPm1hcCwgYm8tPnNpemUpOworCW11bm1hcChk bWFidWYtPm1hcCwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOwogCWNsb3NlKGRtYWJ1Zi0+ZmQpOwog CWZyZWUoZG1hYnVmKTsKIAotCWJvLT52aXJ0dWFsID0gTlVMTDsKLQlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2UoYm8pOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiB9CiAKIHN0YXRpYyBib29s IGhhc19wcmltZV9leHBvcnQoaW50IF9mZCkKQEAgLTQ0NiwxMyArNDY5LDE0IEBAIHN0YXRpYyB2 b2lkIGNyZWF0ZV9ndHRfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2ln bmVkIGNvdW50KQogCWdlbV9yZXF1aXJlX21hcHBhYmxlX2dndHQoZmQpOwogfQogCi1zdGF0aWMg ZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIHZnZW1fY3JlYXRlX2Jv KGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIGFy Z3M7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAJc3RydWN0 IHZnZW1fYm8gdmdlbTsKIAlzdHJ1Y3QgZG1hYnVmICpkbWFidWY7CisJdWludDMyX3QgaGFuZGxl OwogCiAJaWd0X2Fzc2VydCh2Z2VtX2RydiAhPSAtMSk7CiAKQEAgLTQ3MCw4ICs0OTQsMTEgQEAg dmdlbV9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAJZ2VtX2Nsb3NlKHZnZW1f ZHJ2LCBhcmdzLmhhbmRsZSk7CiAJaWd0X2Fzc2VydChhcmdzLmZkICE9IC0xKTsKIAotCWJvID0g ZHJtX2ludGVsX2JvX2dlbV9jcmVhdGVfZnJvbV9wcmltZShiLT5idWZtZ3IsIGFyZ3MuZmQsIHZn ZW0uc2l6ZSk7Ci0JaWd0X2Fzc2VydChibyk7CisJaGFuZGxlID0gcHJpbWVfZmRfdG9faGFuZGxl KGJ1Zl9vcHNfZ2V0X2ZkKGItPmJvcHMpLCBhcmdzLmZkKTsKKwlidWYgPSBjYWxsb2MoMSwgc2l6 ZW9mKCpidWYpKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoYi0+Ym9wcywgaGFuZGxl LCBidWYsCisJCQkJICAgIHZnZW0ud2lkdGgsIHZnZW0uaGVpZ2h0LCB2Z2VtLmJwcCwKKwkJCQkg ICAgMCwgSTkxNV9USUxJTkdfTk9ORSwgMCk7CiAKIAlkbWFidWYgPSBtYWxsb2Moc2l6ZW9mKCpk bWFidWYpKTsKIAlpZ3RfYXNzZXJ0KGRtYWJ1Zik7CkBAIC00ODIsNjQgKzUwOSw1OCBAQCB2Z2Vt X2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIAkJCSAgIGRtYWJ1Zi0+ZmQsIDAp OwogCWlndF9hc3NlcnQoZG1hYnVmLT5tYXAgIT0gKHZvaWQgKiktMSk7CiAKLQliby0+dmlydHVh bCA9IGRtYWJ1ZjsKKwlidWYtPnB0ciA9ICh2b2lkICopIGRtYWJ1ZjsKIAotCXJldHVybiBibzsK KwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZAotZ3R0X3NldF9ibyhzdHJ1Y3QgYnVmZmVy cyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQorZ3R0X3NldF9ibyhzdHJ1Y3Qg YnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7Ci0JdWlu dDMyX3QgKnZhZGRyID0gYm8tPnZpcnR1YWw7CisJdWludDMyX3QgKnZhZGRyID0gYnVmLT5wdHI7 CisKKwlnZW1fc2V0X2RvbWFpbihmZCwgYnVmLT5oYW5kbGUsCisJCSAgICAgICBJOTE1X0dFTV9E T01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKIAotCWRybV9pbnRlbF9nZW1fYm9fc3Rh cnRfZ3R0X2FjY2VzcyhibywgdHJ1ZSk7CiAJZm9yIChpbnQgeSA9IDA7IHkgPCBiLT5oZWlnaHQ7 IHkrKykKIAkJdmFkZHJbcGl4ZWwoeSwgYi0+d2lkdGgpXSA9IHZhbDsKIH0KIAogc3RhdGljIHZv aWQKLWd0dF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQz Ml90IHZhbCkKK2d0dF9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCAgaW50ZWxfYnVm ICpidWYsIHVpbnQzMl90IHZhbCkKIHsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsK Kwl1aW50MzJfdCAqdmFkZHIgPSBidWYtPnB0cjsKIAogCS8qIEdUVCBhY2Nlc3MgaXMgc2xvdy4g U28gd2UganVzdCBjb21wYXJlIGEgZmV3IHBvaW50cyAqLwotCWRybV9pbnRlbF9nZW1fYm9fc3Rh cnRfZ3R0X2FjY2VzcyhibywgZmFsc2UpOworCWdlbV9zZXRfZG9tYWluKGZkLCBidWYtPmhhbmRs ZSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOworCiAJZm9yIChpbnQgeSA9IDA7 IHkgPCBiLT5oZWlnaHQ7IHkrKykKIAkJaWd0X2Fzc2VydF9lcV91MzIodmFkZHJbcGl4ZWwoeSwg Yi0+d2lkdGgpXSwgdmFsKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCi1tYXBfYm8oZHJt X2ludGVsX2JvICpibykKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK21hcF9ibyhzdHJ1Y3Qg aW50ZWxfYnVmICpidWYpCiB7CiAJLyogZ3R0IG1hcCBkb2Vzbid0IGhhdmUgYSB3cml0ZSBwYXJh bWV0ZXIsIHNvIGp1c3Qga2VlcCB0aGUgbWFwcGluZwogCSAqIGFyb3VuZCAodG8gYXZvaWQgdGhl IHNldF9kb21haW4gd2l0aCB0aGUgZ3R0IHdyaXRlIGRvbWFpbiBzZXQpIGFuZAogCSAqIG1hbnVh bGx5IHRlbGwgdGhlIGtlcm5lbCB3aGVuIHdlIHN0YXJ0IGFjY2VzcyB0aGUgZ3R0LiAqLwotCWRv X29yX2RpZShkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pKTsKKwlidWYtPnB0ciA9IGdlbV9t bWFwX19ndHQoYnVmX29wc19nZXRfZmQoYnVmLT5ib3BzKSwgYnVmLT5oYW5kbGUsCisJCQkJIGJ1 Zi0+c3VyZmFjZVswXS5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKIAotCXJldHVybiBi bzsKKwlyZXR1cm4gYnVmOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLXRpbGVfYm8oZHJt X2ludGVsX2JvICpibywgaW50IHdpZHRoKQotewotCXVpbnQzMl90IHRpbGluZyA9IEk5MTVfVElM SU5HX1g7Ci0JdWludDMyX3Qgc3RyaWRlID0gd2lkdGggKiA0OwotCi0JZG9fb3JfZGllKGRybV9p bnRlbF9ib19zZXRfdGlsaW5nKGJvLCAmdGlsaW5nLCBzdHJpZGUpKTsKLQotCXJldHVybiBibzsK LX0KLQotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBn dHRfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXJldHVybiBtYXBfYm8o dW5tYXBwZWRfY3JlYXRlX2JvKGIpKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0 aWMgc3RydWN0IGludGVsX2J1ZiAqCiBndHRYX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVy cyAqYikKIHsKLQlyZXR1cm4gdGlsZV9ibyhndHRfY3JlYXRlX2JvKGIpLCBiLT53aWR0aCk7CisJ cmV0dXJuIG1hcF9ibyhjcmVhdGVfYm8oYiwgSTkxNV9USUxJTkdfWCkpOwogfQogCiBzdGF0aWMg dm9pZCBiaXQxN19yZXF1aXJlKHZvaWQpCkBAIC01NzQsODUgKzU5NSw4OCBAQCB3Y19jcmVhdGVf cmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50KQogCXdj X3JlcXVpcmUoKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGlu dGVsX2J1ZiAqCiB3Y19jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7Ci0JZHJt X2ludGVsX2JvICpibzsKKwlzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqYnVmOwogCi0JYm8gPSB1 bm1hcHBlZF9jcmVhdGVfYm8oYik7Ci0JYm8tPnZpcnR1YWwgPSBnZW1fbW1hcF9fd2MoZmQsIGJv LT5oYW5kbGUsIDAsIGJvLT5zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKLQlyZXR1cm4g Ym87CisJYnVmID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIpOworCWJ1Zi0+cHRyID0gZ2VtX21tYXBf X3djKGZkLCBidWYtPmhhbmRsZSwgMCwgYnVmLT5zdXJmYWNlWzBdLnNpemUsCisJCQkJUFJPVF9S RUFEIHwgUFJPVF9XUklURSk7CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGljIHZvaWQKLXdjX3Jl bGVhc2VfYm8oZHJtX2ludGVsX2JvICpibykKK3djX3JlbGVhc2VfYm8oc3RydWN0IGludGVsX2J1 ZiAqYnVmKQogewotCWlndF9hc3NlcnQoYm8tPnZpcnR1YWwpOworCWlndF9hc3NlcnQoYnVmLT5w dHIpOwogCi0JbXVubWFwKGJvLT52aXJ0dWFsLCBiby0+c2l6ZSk7Ci0JYm8tPnZpcnR1YWwgPSBO VUxMOworCW11bm1hcChidWYtPnB0ciwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOworCWJ1Zi0+cHRy ID0gMDsKIAotCW5vcF9yZWxlYXNlX2JvKGJvKTsKKwlub3BfcmVsZWFzZV9ibyhidWYpOwogfQog Ci1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIGdwdV9j cmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJcmV0dXJuIHVubWFwcGVkX2Ny ZWF0ZV9ibyhiKTsKIH0KIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGlu dGVsX2J1ZiAqCiBncHVYX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQly ZXR1cm4gdGlsZV9ibyhncHVfY3JlYXRlX2JvKGIpLCBiLT53aWR0aCk7CisJcmV0dXJuIGNyZWF0 ZV9ibyhiLCBJOTE1X1RJTElOR19YKTsKIH0KIAogc3RhdGljIHZvaWQKLWNwdV9zZXRfYm8oc3Ry dWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2NwdV9zZXRf Ym8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFs KQogewogCWludCBzaXplID0gYi0+bnBpeGVsczsKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2Zk KGJ1Zi0+Ym9wcyk7CiAJdWludDMyX3QgKnZhZGRyOwogCi0JZG9fb3JfZGllKGRybV9pbnRlbF9i b19tYXAoYm8sIHRydWUpKTsKLQl2YWRkciA9IGJvLT52aXJ0dWFsOworCWlmIChnZW1faGFzX2xs YyhpOTE1KSkKKwkJaW50ZWxfYnVmX2NwdV9tYXAoYnVmLCB0cnVlKTsKKwllbHNlCisJCWludGVs X2J1Zl9kZXZpY2VfbWFwKGJ1ZiwgdHJ1ZSk7CisKKwl2YWRkciA9IGJ1Zi0+cHRyOwogCXdoaWxl IChzaXplLS0pCiAJCSp2YWRkcisrID0gdmFsOwotCWRybV9pbnRlbF9ib191bm1hcChibyk7CisJ aW50ZWxfYnVmX3VubWFwKGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCi1jcHVfY21wX2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitjcHVfY21wX2Jv KHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKIAlpbnQgc2l6ZSA9IGItPm5waXhlbHM7CiAJdWludDMyX3QgKnZhZGRyOwogCi0JZG9fb3Jf ZGllKGRybV9pbnRlbF9ib19tYXAoYm8sIGZhbHNlKSk7Ci0JdmFkZHIgPSBiby0+dmlydHVhbDsK KwlpbnRlbF9idWZfY3B1X21hcChidWYsIGZhbHNlKTsKKwl2YWRkciA9IGJ1Zi0+cHRyOwogCXdo aWxlIChzaXplLS0pCiAJCWlndF9hc3NlcnRfZXFfdTMyKCp2YWRkcisrLCB2YWwpOwotCWRybV9p bnRlbF9ib191bm1hcChibyk7CisJaW50ZWxfYnVmX3VubWFwKGJ1Zik7CiB9CiAKIHN0YXRpYyB2 b2lkCi1ncHVfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLCBkcm1faW50ZWxfYm8gKmJv LCB1aW50MzJfdCB2YWwpCitncHVfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLCBzdHJ1 Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlbG9jYXRpb25fZW50cnkgcmVsb2NbMV07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgZ2VtX2V4ZWNbMl07CiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVj YnVmOwotCXVpbnQzMl90IGJ1ZlsxMF0sICpiOwotCXVpbnQzMl90IHRpbGluZywgc3dpenpsZTsK LQotCWRybV9pbnRlbF9ib19nZXRfdGlsaW5nKGJvLCAmdGlsaW5nLCAmc3dpenpsZSk7CisJdWlu dDMyX3QgdG1wWzEwXSwgKmI7CiAKIAltZW1zZXQocmVsb2MsIDAsIHNpemVvZihyZWxvYykpOwog CW1lbXNldChnZW1fZXhlYywgMCwgc2l6ZW9mKGdlbV9leGVjKSk7CiAJbWVtc2V0KCZleGVjYnVm LCAwLCBzaXplb2YoZXhlY2J1ZikpOwogCi0JYiA9IGJ1ZjsKKwliID0gdG1wOwogCSpiKysgPSBY WV9DT0xPUl9CTFRfQ01EX05PTEVOIHwKIAkJKChnZW4gPj0gOCkgPyA1IDogNCkgfAogCQlDT0xP Ul9CTFRfV1JJVEVfQUxQSEEgfCBYWV9DT0xPUl9CTFRfV1JJVEVfUkdCOwotCWlmIChnZW4gPj0g NCAmJiB0aWxpbmcpIHsKKwlpZiAoZ2VuID49IDQgJiYgYnVmLT50aWxpbmcpIHsKIAkJYlstMV0g fD0gWFlfQ09MT1JfQkxUX1RJTEVEOwogCQkqYiA9IGJ1ZmZlcnMtPndpZHRoOwogCX0gZWxzZQpA QCAtNjYwLDggKzY4NCw4IEBAIGdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRy bV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIAkqYisrIHw9IDB4ZjAgPDwgMTYgfCAxIDw8 IDI1IHwgMSA8PCAyNDsKIAkqYisrID0gMDsKIAkqYisrID0gYnVmZmVycy0+aGVpZ2h0IDw8IDE2 IHwgYnVmZmVycy0+d2lkdGg7Ci0JcmVsb2NbMF0ub2Zmc2V0ID0gKGIgLSBidWYpICogc2l6ZW9m KHVpbnQzMl90KTsKLQlyZWxvY1swXS50YXJnZXRfaGFuZGxlID0gYm8tPmhhbmRsZTsKKwlyZWxv Y1swXS5vZmZzZXQgPSAoYiAtIHRtcCkgKiBzaXplb2YodWludDMyX3QpOworCXJlbG9jWzBdLnRh cmdldF9oYW5kbGUgPSBidWYtPmhhbmRsZTsKIAlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fUkVOREVSOwogCXJlbG9jWzBdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RP TUFJTl9SRU5ERVI7CiAJKmIrKyA9IDA7CkBAIC02NjksMTAgKzY5MywxMCBAQCBncHVfc2V0X2Jv KHN0cnVjdCBidWZmZXJzICpidWZmZXJzLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwp CiAJCSpiKysgPSAwOwogCSpiKysgPSB2YWw7CiAJKmIrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7 Ci0JaWYgKChiIC0gYnVmKSAmIDEpCisJaWYgKChiIC0gdG1wKSAmIDEpCiAJCSpiKysgPSAwOwog Ci0JZ2VtX2V4ZWNbMF0uaGFuZGxlID0gYm8tPmhhbmRsZTsKKwlnZW1fZXhlY1swXS5oYW5kbGUg PSBidWYtPmhhbmRsZTsKIAlnZW1fZXhlY1swXS5mbGFncyA9IEVYRUNfT0JKRUNUX05FRURTX0ZF TkNFOwogCiAJZ2VtX2V4ZWNbMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CkBAIC02 ODEsMzAgKzcwNSwzMCBAQCBncHVfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLCBkcm1f aW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiAKIAlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9f dXNlcl9wb2ludGVyKGdlbV9leGVjKTsKIAlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDI7Ci0JZXhl Y2J1Zi5iYXRjaF9sZW4gPSAoYiAtIGJ1ZikgKiBzaXplb2YoYnVmWzBdKTsKKwlleGVjYnVmLmJh dGNoX2xlbiA9IChiIC0gdG1wKSAqIHNpemVvZih0bXBbMF0pOwogCWlmIChnZW4gPj0gNikKIAkJ ZXhlY2J1Zi5mbGFncyA9IEk5MTVfRVhFQ19CTFQ7CiAKLQlnZW1fd3JpdGUoZmQsIGdlbV9leGVj WzFdLmhhbmRsZSwgMCwgYnVmLCBleGVjYnVmLmJhdGNoX2xlbik7CisJZ2VtX3dyaXRlKGZkLCBn ZW1fZXhlY1sxXS5oYW5kbGUsIDAsIHRtcCwgZXhlY2J1Zi5iYXRjaF9sZW4pOwogCWdlbV9leGVj YnVmKGZkLCAmZXhlY2J1Zik7CiAKIAlnZW1fY2xvc2UoZmQsIGdlbV9leGVjWzFdLmhhbmRsZSk7 CiB9CiAKIHN0YXRpYyB2b2lkCi1ncHVfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50 ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitncHVfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBz dHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKLQlibHRfY29weV9ibyhiLCBi LT5zbm9vcCwgYm8pOworCWJsdF9jb3B5X2JvKGIsIGItPnNub29wLCBidWYpOwogCWNwdV9jbXBf Ym8oYiwgYi0+c25vb3AsIHZhbCk7CiB9CiAKIHN0cnVjdCBhY2Nlc3NfbW9kZSB7CiAJY29uc3Qg Y2hhciAqbmFtZTsKIAl2b2lkICgqcmVxdWlyZSkoY29uc3Qgc3RydWN0IGNyZWF0ZSAqLCB1bnNp Z25lZCk7Ci0JZHJtX2ludGVsX2JvICooKmNyZWF0ZV9ibykoY29uc3Qgc3RydWN0IGJ1ZmZlcnMg KmIpOwotCXZvaWQgKCpzZXRfYm8pKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJv LCB1aW50MzJfdCB2YWwpOwotCXZvaWQgKCpjbXBfYm8pKHN0cnVjdCBidWZmZXJzICpiLCBkcm1f aW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpOwotCXZvaWQgKCpyZWxlYXNlX2JvKShkcm1faW50 ZWxfYm8gKmJvKTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICooKmNyZWF0ZV9ibykoY29uc3Qgc3RydWN0 IGJ1ZmZlcnMgKmIpOworCXZvaWQgKCpzZXRfYm8pKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCk7CisJdm9pZCAoKmNtcF9ibykoc3RydWN0IGJ1 ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKTsKKwl2b2lkICgq cmVsZWFzZV9ibykoc3RydWN0IGludGVsX2J1ZiAqYnVmKTsKIH07CiBpZ3RfcmVuZGVyX2NvcHlm dW5jX3QgcmVuZGVyY29weTsKIApAQCAtNzQ1LDcgKzc2OSw3IEBAIHN0YXRpYyB2b2lkIGJ1ZmZl cnNfaW5pdChzdHJ1Y3QgYnVmZmVycyAqYiwKIAkJCSBjb25zdCBzdHJ1Y3QgYWNjZXNzX21vZGUg Km1vZGUsCiAJCQkgY29uc3Qgc3RydWN0IHNpemUgKnNpemUsCiAJCQkgaW50IG51bV9idWZmZXJz LAotCQkJIGludCBfZmQsIGludCBlbmFibGVfcmV1c2UpCisJCQkgaW50IF9mZCkKIHsKIAltZW1z ZXQoYiwgMCwgc2l6ZW9mKCpiKSk7CiAJYi0+bmFtZSA9IG5hbWU7CkBAIC03NjMsMTcgKzc4Nywx MyBAQCBzdGF0aWMgdm9pZCBidWZmZXJzX2luaXQoc3RydWN0IGJ1ZmZlcnMgKmIsCiAJYi0+dG1w ID0gbWFsbG9jKGItPnBhZ2Vfc2l6ZSk7CiAJaWd0X2Fzc2VydChiLT50bXApOwogCi0JYi0+YnVm bWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChfZmQsIDQwOTYpOwotCWlndF9hc3NlcnQo Yi0+YnVmbWdyKTsKKwliLT5ib3BzID0gYnVmX29wc19jcmVhdGUoX2ZkKTsKIAotCWItPnNyYyA9 IG1hbGxvYygyKnNpemVvZihkcm1faW50ZWxfYm8gKikqbnVtX2J1ZmZlcnMpOworCWItPnNyYyA9 IG1hbGxvYygyKnNpemVvZihzdHJ1Y3QgaW50ZWxfYnVmICopKm51bV9idWZmZXJzKTsKIAlpZ3Rf YXNzZXJ0KGItPnNyYyk7CiAJYi0+ZHN0ID0gYi0+c3JjICsgbnVtX2J1ZmZlcnM7CiAKLQlpZiAo ZW5hYmxlX3JldXNlKQotCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYi0+YnVm bWdyKTsKLQliLT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGItPmJ1Zm1nciwgZGV2 aWQpOwotCWlndF9hc3NlcnQoYi0+YmF0Y2gpOworCWItPmliYiA9IGludGVsX2JiX2NyZWF0ZShf ZmQsIDQwOTYpOwogfQogCiBzdGF0aWMgdm9pZCBidWZmZXJzX2Rlc3Ryb3koc3RydWN0IGJ1ZmZl cnMgKmIpCkBAIC04MDksNyArODI5LDcgQEAgc3RhdGljIHZvaWQgYnVmZmVyc19kZXN0cm95KHN0 cnVjdCBidWZmZXJzICpiKQogc3RhdGljIHZvaWQgYnVmZmVyc19jcmVhdGUoc3RydWN0IGJ1ZmZl cnMgKmIpCiB7CiAJaW50IGNvdW50ID0gYi0+bnVtX2J1ZmZlcnM7Ci0JaWd0X2Fzc2VydChiLT5i dWZtZ3IpOworCWlndF9hc3NlcnQoYi0+Ym9wcyk7CiAKIAlidWZmZXJzX2Rlc3Ryb3koYik7CiAJ aWd0X2Fzc2VydChiLT5jb3VudCA9PSAwKTsKQEAgLTgyMywyMCArODQzLDE1IEBAIHN0YXRpYyB2 b2lkIGJ1ZmZlcnNfY3JlYXRlKHN0cnVjdCBidWZmZXJzICpiKQogCWItPnNub29wID0gc25vb3Bf Y3JlYXRlX2JvKGIpOwogfQogCi1zdGF0aWMgdm9pZCBidWZmZXJzX3Jlc2V0KHN0cnVjdCBidWZm ZXJzICpiLCBib29sIGVuYWJsZV9yZXVzZSkKK3N0YXRpYyB2b2lkIGJ1ZmZlcnNfcmVzZXQoc3Ry dWN0IGJ1ZmZlcnMgKmIpCiB7Ci0JYi0+YnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5p dChmZCwgNDA5Nik7Ci0JaWd0X2Fzc2VydChiLT5idWZtZ3IpOwotCi0JaWYgKGVuYWJsZV9yZXVz ZSkKLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGItPmJ1Zm1ncik7Ci0JYi0+ YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhiLT5idWZtZ3IsIGRldmlkKTsKLQlpZ3Rf YXNzZXJ0KGItPmJhdGNoKTsKKwliLT5ib3BzID0gYnVmX29wc19jcmVhdGUoZmQpOworCWItPmli YiA9IGludGVsX2JiX2NyZWF0ZShmZCwgNDA5Nik7CiB9CiAKIHN0YXRpYyB2b2lkIGJ1ZmZlcnNf ZmluaShzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQlpZiAoYi0+YnVmbWdyID09IE5VTEwpCisJaWYg KGItPmJvcHMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJYnVmZmVyc19kZXN0cm95KGIpOwpAQCAt ODQ0LDU4ICs4NTksNDcgQEAgc3RhdGljIHZvaWQgYnVmZmVyc19maW5pKHN0cnVjdCBidWZmZXJz ICpiKQogCWZyZWUoYi0+dG1wKTsKIAlmcmVlKGItPnNyYyk7CiAKLQlpbnRlbF9iYXRjaGJ1ZmZl cl9mcmVlKGItPmJhdGNoKTsKLQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYi0+YnVmbWdyKTsK KwlpbnRlbF9iYl9kZXN0cm95KGItPmliYik7CisJYnVmX29wc19kZXN0cm95KGItPmJvcHMpOwog CiAJbWVtc2V0KGIsIDAsIHNpemVvZigqYikpOwogfQogCi10eXBlZGVmIHZvaWQgKCpkb19jb3B5 KShzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3Jj KTsKK3R5cGVkZWYgdm9pZCAoKmRvX2NvcHkpKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50 ZWxfYnVmICpkc3QsCisJCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpOwogdHlwZWRlZiBpZ3RfaGFu Z190ICgqZG9faGFuZykodm9pZCk7CiAKLXN0YXRpYyB2b2lkIHJlbmRlcl9jb3B5X2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0 aWMgdm9pZCByZW5kZXJfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1 ZiAqZHN0LAorCQkJICAgc3RydWN0IGludGVsX2J1ZiAqc3JjKQogewotCXN0cnVjdCBpZ3RfYnVm IGQgPSB7Ci0JCS5ibyA9IGRzdCwKLQkJLm51bV90aWxlcyA9IGItPm5waXhlbHMgKiA0LAotCQku c3VyZmFjZVswXSA9IHsKLQkJCS5zaXplID0gYi0+bnBpeGVscyAqIDQsIC5zdHJpZGUgPSBiLT53 aWR0aCAqIDQsCi0JCX0sCi0JCS5icHAgPSAzMiwKLQl9LCBzID0gewotCQkuYm8gPSBzcmMsCi0J CS5udW1fdGlsZXMgPSBiLT5ucGl4ZWxzICogNCwKLQkJLnN1cmZhY2VbMF0gPSB7Ci0JCQkuc2l6 ZSA9IGItPm5waXhlbHMgKiA0LCAuc3RyaWRlID0gYi0+d2lkdGggKiA0LAotCQl9LAotCQkuYnBw ID0gMzIsCi0JfTsKLQl1aW50MzJfdCBzd2l6emxlOwotCi0JZHJtX2ludGVsX2JvX2dldF90aWxp bmcoZHN0LCAmZC50aWxpbmcsICZzd2l6emxlKTsKLQlkcm1faW50ZWxfYm9fZ2V0X3RpbGluZyhz cmMsICZzLnRpbGluZywgJnN3aXp6bGUpOwotCi0JcmVuZGVyY29weShiLT5iYXRjaCwgTlVMTCwK LQkJICAgJnMsIDAsIDAsCisJcmVuZGVyY29weShiLT5pYmIsIDAsCisJCSAgIHNyYywgMCwgMCwK IAkJICAgYi0+d2lkdGgsIGItPmhlaWdodCwKLQkJICAgJmQsIDAsIDApOworCQkgICBkc3QsIDAs IDApOworCWludGVsX2JiX3N5bmMoYi0+aWJiKTsKKwlpbnRlbF9iYl9yZXNldChiLT5pYmIsIHRy dWUpOwogfQogCi1zdGF0aWMgdm9pZCBibHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJt X2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKQorc3RhdGljIHZvaWQgYmx0X2NvcHlf Ym8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKKwkJCXN0cnVjdCBp bnRlbF9idWYgKnNyYykKIHsKLQlpbnRlbF9ibHRfY29weShiLT5iYXRjaCwKKwlpbnRlbF9iYl9i bHRfY29weShiLT5pYmIsCiAJCSAgICAgICBzcmMsIDAsIDAsIDQqYi0+d2lkdGgsCiAJCSAgICAg ICBkc3QsIDAsIDAsIDQqYi0+d2lkdGgsCiAJCSAgICAgICBiLT53aWR0aCwgYi0+aGVpZ2h0LCAz Mik7CisJaW50ZWxfYmJfc3luYyhiLT5pYmIpOworCWludGVsX2JiX3Jlc2V0KGItPmliYiwgdHJ1 ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdV9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1f aW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMgdm9pZCBjcHVfY29weV9i byhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJc3RydWN0IGlu dGVsX2J1ZiAqc3JjKQogewogCWNvbnN0IGludCBzaXplID0gYi0+cGFnZV9zaXplOwogCXZvaWQg KmQsICpzOwogCiAJZ2VtX3NldF9kb21haW4oZmQsIHNyYy0+aGFuZGxlLCBJOTE1X0dFTV9ET01B SU5fQ1BVLCAwKTsKLQlnZW1fc2V0X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RP TUFJTl9DUFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOworCWdlbV9zZXRfZG9tYWluKGZkLCBkc3Qt PmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9D UFUpOwogCXMgPSBnZW1fbW1hcF9fY3B1KGZkLCBzcmMtPmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9S RUFEKTsKIAlkID0gZ2VtX21tYXBfX2NwdShmZCwgZHN0LT5oYW5kbGUsIDAsIHNpemUsIFBST1Rf V1JJVEUpOwogCkBAIC05MDUsMTMgKzkwOSwxNSBAQCBzdGF0aWMgdm9pZCBjcHVfY29weV9ibyhz dHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKQog CW11bm1hcChzLCBzaXplKTsKIH0KIAotc3RhdGljIHZvaWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNyYykKK3N0YXRpYyB2 b2lkIGd0dF9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3Qs CisJCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7CiAJY29uc3QgaW50IHNpemUgPSBiLT5wYWdl X3NpemU7CiAJdm9pZCAqZCwgKnM7CiAKIAlnZW1fc2V0X2RvbWFpbihmZCwgc3JjLT5oYW5kbGUs IEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwotCWdlbV9zZXRfZG9tYWluKGZkLCBkc3QtPmhhbmRs ZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisJZ2VtX3NldF9k b21haW4oZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULAorCQkgICAgICAgSTkx NV9HRU1fRE9NQUlOX0dUVCk7CiAKIAlzID0gZ2VtX21tYXBfX2d0dChmZCwgc3JjLT5oYW5kbGUs IHNpemUsIFBST1RfUkVBRCk7CiAJZCA9IGdlbV9tbWFwX19ndHQoZmQsIGRzdC0+aGFuZGxlLCBz aXplLCBQUk9UX1dSSVRFKTsKQEAgLTkyMiwxMyArOTI4LDE1IEBAIHN0YXRpYyB2b2lkIGd0dF9j b3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2Jv ICpzcmMpCiAJbXVubWFwKHMsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCB3Y19jb3B5X2JvKHN0 cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitz dGF0aWMgdm9pZCB3Y19jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVm ICpkc3QsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7CiAJY29uc3QgaW50IHNp emUgPSBiLT5wYWdlX3NpemU7CiAJdm9pZCAqZCwgKnM7CiAKIAlnZW1fc2V0X2RvbWFpbihmZCwg c3JjLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9XQywgMCk7Ci0JZ2VtX3NldF9kb21haW4oZmQs IGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fV0MsIEk5MTVfR0VNX0RPTUFJTl9XQyk7CisJ Z2VtX3NldF9kb21haW4oZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fV0MsCisJCSAg ICAgICBJOTE1X0dFTV9ET01BSU5fV0MpOwogCiAJcyA9IGdlbV9tbWFwX193YyhmZCwgc3JjLT5o YW5kbGUsIDAsIHNpemUsIFBST1RfUkVBRCk7CiAJZCA9IGdlbV9tbWFwX193YyhmZCwgZHN0LT5o YW5kbGUsIDAsIHNpemUsIFBST1RfV1JJVEUpOwpAQCAtMTMzNSw3ICsxMzQzLDcgQEAgc3RhdGlj IHZvaWQgcnVuX2NoaWxkKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLAogCQkgICAgICBkb19oYW5n IGRvX2hhbmdfZnVuYykKIAogewotCS8qIFdlIGluaGVyaXQgdGhlIGJ1ZmZlcnMgZnJvbSB0aGUg cGFyZW50LCBidXQgdGhlIGJ1Zm1nci9iYXRjaAorCS8qIFdlIGluaGVyaXQgdGhlIGJ1ZmZlcnMg ZnJvbSB0aGUgcGFyZW50LCBidXQgdGhlIGJvcHMvaW50ZWxfYmIKIAkgKiBuZWVkcyB0byBiZSBs b2NhbCBhcyB0aGUgY2FjaGUgb2YgcmV1c2FibGUgaXRzZWxmIHdpbGwgYmUgQ09XZWQsCiAJICog bGVhZGluZyB0byB0aGUgY2hpbGQgY2xvc2luZyBhbiBvYmplY3Qgd2l0aG91dCB0aGUgcGFyZW50 IGtub3dpbmcuCiAJICovCkBAIC0xMzUzLDEwICsxMzYxLDEwIEBAIHN0YXRpYyB2b2lkIF9fcnVu X2ZvcmtlZChzdHJ1Y3QgYnVmZmVycyAqYnVmZmVycywKIAkJCSBkb19oYW5nIGRvX2hhbmdfZnVu YykKIAogewotCS8qIHB1cmdlIHRoZSBsaWJkcm0gY2FjaGVzIGJlZm9yZSBjbG9pbmcgdGhlIHBy b2Nlc3MgKi8KKwkvKiBwdXJnZSB0aGUgY2FjaGVzIGJlZm9yZSBjbG9pbmcgdGhlIHByb2Nlc3Mg Ki8KIAlidWZmZXJzX2Rlc3Ryb3koYnVmZmVycyk7Ci0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShi dWZmZXJzLT5iYXRjaCk7Ci0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1ZmZlcnMtPmJ1Zm1n cik7CisJaW50ZWxfYmJfZGVzdHJveShidWZmZXJzLT5pYmIpOworCWJ1Zl9vcHNfZGVzdHJveShi dWZmZXJzLT5ib3BzKTsKIAogCWlndF9mb3JrKGNoaWxkLCBudW1fY2hpbGRyZW4pIHsKIAkJaW50 IG51bV9idWZmZXJzOwpAQCAtMTM2OSw3ICsxMzc3LDcgQEAgc3RhdGljIHZvaWQgX19ydW5fZm9y a2VkKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLAogCQlpZiAobnVtX2J1ZmZlcnMgPCBidWZmZXJz LT5udW1fYnVmZmVycykKIAkJCWJ1ZmZlcnMtPm51bV9idWZmZXJzID0gbnVtX2J1ZmZlcnM7CiAK LQkJYnVmZmVyc19yZXNldChidWZmZXJzLCB0cnVlKTsKKwkJYnVmZmVyc19yZXNldChidWZmZXJz KTsKIAkJYnVmZmVyc19jcmVhdGUoYnVmZmVycyk7CiAKIAkJaWd0X3doaWxlX2ludGVycnVwdGli bGUoaW50ZXJydXB0KSB7CkBAIC0xMzgyLDcgKzEzOTAsNyBAQCBzdGF0aWMgdm9pZCBfX3J1bl9m b3JrZWQoc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsCiAJaWd0X3dhaXRjaGlsZHJlbigpOwogCWln dF9hc3NlcnRfZXEoaW50ZWxfZGV0ZWN0X2FuZF9jbGVhcl9taXNzZWRfaW50ZXJydXB0cyhmZCks IDApOwogCi0JYnVmZmVyc19yZXNldChidWZmZXJzLCB0cnVlKTsKKwlidWZmZXJzX3Jlc2V0KGJ1 ZmZlcnMpOwogfQogCiBzdGF0aWMgdm9pZCBydW5fZm9ya2VkKHN0cnVjdCBidWZmZXJzICpidWZm ZXJzLApAQCAtMTQ1OSw4ICsxNDY3LDcgQEAgcnVuX21vZGUoY29uc3QgY2hhciAqcHJlZml4LAog CiAJaWd0X2ZpeHR1cmUKIAkJYnVmZmVyc19pbml0KCZidWZmZXJzLCBwcmVmaXgsIGNyZWF0ZSwg bW9kZSwKLQkJCSAgICAgc2l6ZSwgbnVtX2J1ZmZlcnMsCi0JCQkgICAgIGZkLCBydW5fd3JhcF9m dW5jICE9IHJ1bl9jaGlsZCk7CisJCQkgICAgIHNpemUsIG51bV9idWZmZXJzLCBmZCk7CiAKIAlm b3IgKGggPSBoYW5nczsgaC0+c3VmZml4OyBoKyspIHsKIAkJaWYgKCFhbGwgJiYgKmgtPnN1ZmZp eCkKLS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==