From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id A16246E450 for ; Tue, 4 Aug 2020 09:42:06 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 4 Aug 2020 11:41:25 +0200 Message-Id: <20200804094128.31242-15-zbigniew.kempczynski@intel.com> In-Reply-To: <20200804094128.31242-1-zbigniew.kempczynski@intel.com> References: <20200804094128.31242-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v26 14/17] 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 bV9jb25jdXJyZW50X2FsbC5jICB8IDQzOSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t CiB0ZXN0cy9pOTE1L2dlbV9wcGd0dC5jICAgICAgICAgICB8IDE4OSArKysrKystLS0tLS0tCiB0 ZXN0cy9rbXNfZHJhd19jcmMuYyAgICAgICAgICAgICB8ICAyMCArLQogdGVzdHMva21zX2Zyb250 YnVmZmVyX3RyYWNraW5nLmMgfCAgMjAgKy0KIHRlc3RzL2ttc19wc3IuYyAgICAgICAgICAgICAg ICAgIHwgMTM3ICsrKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMoKyks IDM5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50 X2FsbC5jIGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwppbmRleCA4MDI3OGM3NS4u OTBlMTMyZmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKKysr IGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwpAQCAtNTEsNyArNTEsNiBAQAogI2lu Y2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X3ZnZW0u aCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRl c3Qgb2YgcHJlYWQvcHdyaXRlL21tYXAgYmVoYXZpb3Igd2hlbiB3cml0aW5nIHRvIGFjdGl2ZSIK IAkJICAgICAiIGJ1ZmZlcnMuIik7CkBAIC02NCw3ICs2Myw5IEBAIGludCBwYXNzOwogc3RydWN0 IGNyZWF0ZSB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl2b2lkICgqcmVxdWlyZSkoY29uc3Qgc3Ry dWN0IGNyZWF0ZSAqLCB1bnNpZ25lZCk7Ci0JZHJtX2ludGVsX2JvICooKmNyZWF0ZSkoZHJtX2lu dGVsX2J1Zm1nciAqLCB1aW50NjRfdCBzaXplKTsKKwlzdHJ1Y3QgaW50ZWxfYnVmICooKmNyZWF0 ZSkoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHVpbnQzMl90IHdpZHRoLAorCQkJCSAgICB1aW50MzJf dCBoZWlnaHQsIHVpbnQzMl90IHRpbGluZywKKwkJCQkgICAgdWludDY0X3Qgc2l6ZSk7CiB9Owog CiBzdHJ1Y3Qgc2l6ZSB7CkBAIC03NywxMCArNzgsMTAgQEAgc3RydWN0IGJ1ZmZlcnMgewogCWNv bnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZTsKIAljb25zdCBzdHJ1Y3QgYWNjZXNzX21vZGUgKm1v ZGU7CiAJY29uc3Qgc3RydWN0IHNpemUgKnNpemU7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JZHJtX2ludGVsX2JvICoqc3Jj LCAqKmRzdDsKLQlkcm1faW50ZWxfYm8gKnNub29wLCAqc3BhcmU7CisJc3RydWN0IGJ1Zl9vcHMg KmJvcHM7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqKnNyYywg Kipkc3Q7CisJc3RydWN0IGludGVsX2J1ZiAqc25vb3AsICpzcGFyZTsKIAl1aW50MzJfdCAqdG1w OwogCWludCB3aWR0aCwgaGVpZ2h0LCBucGl4ZWxzLCBwYWdlX3NpemU7CiAJaW50IGNvdW50LCBu dW1fYnVmZmVyczsKQEAgLTg4LDI5ICs4OSwzMiBAQCBzdHJ1Y3QgYnVmZmVycyB7CiAKICNkZWZp bmUgTUlOX0JVRkZFUlMgMwogCi1zdGF0aWMgdm9pZCBibHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVy cyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKTsKK3N0YXRpYyB2b2lk IGJsdF9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJ CQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpOwogCiBzdGF0aWMgdm9pZAotbm9wX3JlbGVhc2VfYm8o ZHJtX2ludGVsX2JvICpibykKK25vcF9yZWxlYXNlX2JvKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikK IHsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8pOworCWlmIChidWYtPnB0cikKKwkJaW50 ZWxfYnVmX3VubWFwKGJ1Zik7CisJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmKTsKIH0KIAogc3RhdGlj IHZvaWQKLXByd19zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90IHZhbCkKK3Byd19zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWZvciAoaW50IGkgPSAwOyBpIDwgYi0+bnBpeGVs czsgaSsrKQogCQliLT50bXBbaV0gPSB2YWw7Ci0JZHJtX2ludGVsX2JvX3N1YmRhdGEoYm8sIDAs IDQqYi0+bnBpeGVscywgYi0+dG1wKTsKKwlnZW1fd3JpdGUoZmQsIGJ1Zi0+aGFuZGxlLCAwLCBi LT50bXAsIDQqYi0+bnBpeGVscyk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wcndfY21wX2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitwcndfY21wX2Jv KHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKIAl1aW50MzJfdCAqdmFkZHI7CiAKIAl2YWRkciA9IGItPnRtcDsKLQlkb19vcl9kaWUoZHJt X2ludGVsX2JvX2dldF9zdWJkYXRhKGJvLCAwLCA0KmItPm5waXhlbHMsIHZhZGRyKSk7CisJZ2Vt X3JlYWQoZmQsIGJ1Zi0+aGFuZGxlLCAwLCB2YWRkciwgNCpiLT5ucGl4ZWxzKTsKIAlmb3IgKGlu dCBpID0gMDsgaSA8IGItPm5waXhlbHM7IGkrKykKIAkJaWd0X2Fzc2VydF9lcV91MzIodmFkZHJb aV0sIHZhbCk7CiB9CkBAIC0xMTgsMzEgKzEyMiwzMyBAQCBwcndfY21wX2JvKHN0cnVjdCBidWZm ZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCiAjZGVmaW5lIHBpeGVsKHks IHdpZHRoKSAoKHkpKih3aWR0aCkgKyAoKCh5KSArIHBhc3MpJSh3aWR0aCkpKQogCiBzdGF0aWMg dm9pZAotcGFydGlhbF9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90IHZhbCkKK3BhcnRpYWxfc2V0X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlmb3IgKGludCB5ID0gMDsgeSA8IGIt PmhlaWdodDsgeSsrKQotCQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX3N1YmRhdGEoYm8sIDQqcGl4 ZWwoeSwgYi0+d2lkdGgpLCA0LCAmdmFsKSk7CisJCWdlbV93cml0ZShmZCwgYnVmLT5oYW5kbGUs IDQqcGl4ZWwoeSwgYi0+d2lkdGgpLCAmdmFsLCA0KTsKIH0KIAogc3RhdGljIHZvaWQKLXBhcnRp YWxfY21wX2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2 YWwpCitwYXJ0aWFsX2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAq YnVmLCB1aW50MzJfdCB2YWwpCiB7CiAJZm9yIChpbnQgeSA9IDA7IHkgPCBiLT5oZWlnaHQ7IHkr KykgewotCQl1aW50MzJfdCBidWY7Ci0JCWRvX29yX2RpZShkcm1faW50ZWxfYm9fZ2V0X3N1YmRh dGEoYm8sIDQqcGl4ZWwoeSwgYi0+d2lkdGgpLCA0LCAmYnVmKSk7Ci0JCWlndF9hc3NlcnRfZXFf dTMyKGJ1ZiwgdmFsKTsKKwkJdWludDMyX3QgdG1wOworCisJCWdlbV9yZWFkKGZkLCBidWYtPmhh bmRsZSwgNCpwaXhlbCh5LCBiLT53aWR0aCksICZ0bXAsIDQpOworCQlpZ3RfYXNzZXJ0X2VxX3Uz Mih0bXAsIHZhbCk7CiAJfQogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0ZV9ub3Jt YWxfYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3RhdGljIHN0 cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX25vcm1hbF9ibyhzdHJ1Y3QgYnVmX29wcyAqYm9wcywg dWludDMyX3Qgd2lkdGgsCisJCSB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IHRpbGluZywgdWlu dDY0X3Qgc2l6ZSkKIHsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1 ZjsKKwlpbnQgYnBwID0gc2l6ZS9oZWlnaHQvd2lkdGggKiA4OwogCi0JYm8gPSBkcm1faW50ZWxf Ym9fYWxsb2MoYnVmbWdyLCAiYm8iLCBzaXplLCAwKTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwlidWYg PSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwgdGlsaW5nLCAw KTsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9pZCBjYW5fY3Jl YXRlX25vcm1hbChjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNvdW50KQpA QCAtMTUwLDE5ICsxNTYsMjYgQEAgc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9ub3JtYWwoY29uc3Qg c3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKIH0KIAogI2lmIEhBVkVfQ1JF QVRFX1BSSVZBVEUKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgotY3JlYXRlX3ByaXZhdGVfYm8oZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3RhdGljIHN0cnVjdCBpbnRl bF9idWYgKgorY3JlYXRlX3ByaXZhdGVfYm8oYnVmX29wcyAqYm9wcywgdWludDMyX3Qgd2lkdGgs IHVpbnQzMl90IGhlaWdodCwKKwkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQ2NF90IHNpemUpCiB7 Ci0JZHJtX2ludGVsX2JvICpibzsKLQl1aW50MzJfdCBoYW5kbGU7CisJc3RydWN0IGludGVsX2J1 ZiAqYnVmOworCXVpbnQzMl90IGhhbmRsZSwgYnVmX2hhbmRsZSwgbmFtZTsKKwlpbnQgYnBwID0g c2l6ZS9oZWlnaHQvd2lkdGggKiA4OwogCiAJLyogWFhYIGdlbV9jcmVhdGVfd2l0aF9mbGFncyhm ZCwgc2l6ZSwgSTkxNV9DUkVBVEVfUFJJVkFURSk7ICovCiAKIAloYW5kbGUgPSBnZW1fY3JlYXRl KGZkLCBzaXplKTsKLQlibyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZmQsICJz dG9sZW4iLCBoYW5kbGUpOworCW5hbWUgPSBnZW1fZmxpbmsoZmQsIGhhbmRsZSk7CisJYnVmX2hh bmRsZSA9IGdlbV9vcGVuKGZkLCBuYW1lKTsKKworCWJ1ZiA9IGNhbGxvYygxLCBzaXplb2YoKmJ1 ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShib3BzLCBidWZfaGFuZGxlLCBidWYs IHdpZHRoLCBoZWlnaHQsCisJCQkJICAgIGJwcCwgMCwgdGlsaW5nLCAwKTsKIAlnZW1fY2xvc2Uo ZmQsIGhhbmRsZSk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAogc3RhdGljIHZv aWQgY2FuX2NyZWF0ZV9wcml2YXRlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWdu ZWQgY291bnQpCkBAIC0xNzIsMTkgKzE4NSwyNiBAQCBzdGF0aWMgdm9pZCBjYW5fY3JlYXRlX3By aXZhdGUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKICNlbmRp ZgogCiAjaWYgSEFWRV9DUkVBVEVfU1RPTEVOCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLWNyZWF0 ZV9zdG9sZW5fYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCB1aW50NjRfdCBzaXplKQorc3Rh dGljIHN0cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX3N0b2xlbl9ibyhidWZfb3BzICpib3BzLCB1 aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LAorCQkgdWludDMyX3QgdGlsaW5nLCB1aW50 NjRfdCBzaXplKQogewotCWRybV9pbnRlbF9ibyAqYm87Ci0JdWludDMyX3QgaGFuZGxlOworCXN0 cnVjdCBpbnRlbF9idWYgKmJ1ZjsKKwl1aW50MzJfdCBoYW5kbGUsIGJ1Zl9oYW5kbGUsIG5hbWU7 CisJaW50IGJwcCA9IHNpemUvaGVpZ2h0L3dpZHRoICogODsKIAotCS8qIFhYWCBnZW1fY3JlYXRl X3dpdGhfZmxhZ3MoZmQsIHNpemUsIEk5MTVfQ1JFQVRFX1NUT0xFTik7ICovCisJLyogWFhYIGdl bV9jcmVhdGVfd2l0aF9mbGFncyhmZCwgc2l6ZSwgSTkxNV9DUkVBVEVfUFJJVkFURSk7ICovCiAK IAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBzaXplKTsKLQlibyA9IGdlbV9oYW5kbGVfdG9fbGli ZHJtX2JvKGJ1Zm1nciwgZmQsICJzdG9sZW4iLCBoYW5kbGUpOworCW5hbWUgPSBnZW1fZmxpbmso ZmQsIGhhbmRsZSk7CisJYnVmX2hhbmRsZSA9IGdlbV9vcGVuKGZkLCBuYW1lKTsKKworCWJ1ZiA9 IGNhbGxvYygxLCBzaXplb2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShi b3BzLCBidWZfaGFuZGxlLCBidWYsIHdpZHRoLCBoZWlnaHQsCisJCQkJICAgIGJwcCwgMCwgdGls aW5nLCAwKTsKIAlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJu IGJ1ZjsKIH0KIAogc3RhdGljIHZvaWQgY2FuX2NyZWF0ZV9zdG9sZW4oY29uc3Qgc3RydWN0IGNy ZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAgLTIwMSwxMCArMjIxLDE3IEBAIHN0YXRp YyB2b2lkIGNyZWF0ZV9jcHVfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVu c2lnbmVkIGNvdW50KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGlj IHN0cnVjdCBpbnRlbF9idWYgKgorY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiLCB1 aW50MzJfdCB0aWxpbmcpCit7CisJcmV0dXJuIGItPmNyZWF0ZS0+Y3JlYXRlKGItPmJvcHMsIGIt PndpZHRoLCBiLT5oZWlnaHQsCisJCQkJIHRpbGluZywgNCpiLT5ucGl4ZWxzKTsKK30KKworc3Rh dGljIHN0cnVjdCBpbnRlbF9idWYgKgogdW5tYXBwZWRfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBi dWZmZXJzICpiKQogewotCXJldHVybiBiLT5jcmVhdGUtPmNyZWF0ZShiLT5idWZtZ3IsIDQqYi0+ bnBpeGVscyk7CisJcmV0dXJuIGNyZWF0ZV9ibyhiLCBJOTE1X1RJTElOR19OT05FKTsKIH0KIAog c3RhdGljIHZvaWQgY3JlYXRlX3Nub29wX3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3Jl YXRlLCB1bnNpZ25lZCBjb3VudCkKQEAgLTIxMywxNiArMjQwLDE1IEBAIHN0YXRpYyB2b2lkIGNy ZWF0ZV9zbm9vcF9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQg Y291bnQpCiAJaWd0X3JlcXVpcmUoIWdlbV9oYXNfbGxjKGZkKSk7CiB9CiAKLXN0YXRpYyBkcm1f aW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgogc25vb3BfY3JlYXRlX2JvKGNv bnN0IHN0cnVjdCBidWZmZXJzICpiKQogewotCWRybV9pbnRlbF9ibyAqYm87CisJc3RydWN0IGlu dGVsX2J1ZiAqYnVmOwogCi0JYm8gPSB1bm1hcHBlZF9jcmVhdGVfYm8oYik7Ci0JZ2VtX3NldF9j YWNoaW5nKGZkLCBiby0+aGFuZGxlLCBJOTE1X0NBQ0hJTkdfQ0FDSEVEKTsKLQlkcm1faW50ZWxf Ym9fZGlzYWJsZV9yZXVzZShibyk7CisJYnVmID0gdW5tYXBwZWRfY3JlYXRlX2JvKGIpOworCWdl bV9zZXRfY2FjaGluZyhmZCwgYnVmLT5oYW5kbGUsIEk5MTVfQ0FDSElOR19DQUNIRUQpOwogCi0J cmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZV91c2VycHRy X3JlcXVpcmUoY29uc3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKQEAg LTI1MSwxMSArMjc3LDExIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV91c2VycHRyX3JlcXVpcmUoY29u c3Qgc3RydWN0IGNyZWF0ZSAqY3JlYXRlLCB1bnNpZ25lZCBjb3VudCkKIAlpZ3RfcmVxdWlyZSho YXNfdXNlcnB0cik7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBp bnRlbF9idWYgKgogdXNlcnB0cl9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV91c2VycHRyIHVzZXJwdHI7Ci0JZHJtX2ludGVsX2JvICpi bzsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAJdm9pZCAqcHRyOwogCiAJbWVtc2V0KCZ1c2Vy cHRyLCAwLCBzaXplb2YodXNlcnB0cikpOwpAQCAtMjY2LDU0ICsyOTIsNDggQEAgdXNlcnB0cl9j cmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAJaWd0X2Fzc2VydChwdHIgIT0gKHZv aWQgKiktMSk7CiAJdXNlcnB0ci51c2VyX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihwdHIpOwogCi0j aWYgMAogCWRvX29yX2RpZShkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1VTRVJQVFIs ICZ1c2VycHRyKSk7Ci0JYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhiLT5idWZtZ3IsIGZk LCAidXNlcnB0ciIsIHVzZXJwdHIuaGFuZGxlKTsKLQlnZW1fY2xvc2UoZmQsIHVzZXJwdHIuaGFu ZGxlKTsKLSNlbHNlCi0JYm8gPSBkcm1faW50ZWxfYm9fYWxsb2NfdXNlcnB0cihiLT5idWZtZ3Is ICJuYW1lIiwKLQkJCQkJcHRyLCBJOTE1X1RJTElOR19OT05FLCAwLAotCQkJCQl1c2VycHRyLnVz ZXJfc2l6ZSwgMCk7Ci0JaWd0X2Fzc2VydChibyk7Ci0jZW5kaWYKLQliby0+dmlydHVhbCA9IGZy b21fdXNlcl9wb2ludGVyKHVzZXJwdHIudXNlcl9wdHIpOworCWJ1ZiA9IGNhbGxvYygxLCBzaXpl b2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3BzLCB1c2VycHRy LmhhbmRsZSwgYnVmLCBiLT53aWR0aCwKKwkJCQkgICAgYi0+aGVpZ2h0LCAzMiwgMCwgSTkxNV9U SUxJTkdfTk9ORSwgMCk7CiAKLQlyZXR1cm4gYm87CisJYnVmLT5wdHIgPSAodm9pZCAqKSBmcm9t X3VzZXJfcG9pbnRlcih1c2VycHRyLnVzZXJfcHRyKTsKKworCXJldHVybiBidWY7CiB9CiAKIHN0 YXRpYyB2b2lkCi11c2VycHRyX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgdmFsKQordXNlcnB0cl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0 cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWludCBzaXplID0gYi0+bnBp eGVsczsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIg PSBidWYtPnB0cjsKIAotCWdlbV9zZXRfZG9tYWluKGZkLCBiby0+aGFuZGxlLAorCWdlbV9zZXRf ZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DUFUsIEk5 MTVfR0VNX0RPTUFJTl9DUFUpOwogCXdoaWxlIChzaXplLS0pCiAJCSp2YWRkcisrID0gdmFsOwog fQogCiBzdGF0aWMgdm9pZAotdXNlcnB0cl9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9p bnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK3VzZXJwdHJfY21wX2JvKHN0cnVjdCBidWZmZXJz ICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgc2l6ZSA9 ICBiLT5ucGl4ZWxzOwotCXVpbnQzMl90ICp2YWRkciA9IGJvLT52aXJ0dWFsOworCXVpbnQzMl90 ICp2YWRkciA9IGJ1Zi0+cHRyOwogCi0JZ2VtX3NldF9kb21haW4oZmQsIGJvLT5oYW5kbGUsCisJ Z2VtX3NldF9kb21haW4oZmQsIGJ1Zi0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0NQVSwgMCk7CiAJd2hpbGUgKHNpemUtLSkKIAkJaWd0X2Fzc2VydF9lcV91MzIoKnZhZGRyKyss IHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkCi11c2VycHRyX3JlbGVhc2VfYm8oZHJtX2ludGVsX2Jv ICpibykKK3VzZXJwdHJfcmVsZWFzZV9ibyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0JaWd0 X2Fzc2VydChiby0+dmlydHVhbCk7CisJaWd0X2Fzc2VydChidWYtPnB0cik7CiAKLQltdW5tYXAo Ym8tPnZpcnR1YWwsIGJvLT5zaXplKTsKLQliby0+dmlydHVhbCA9IE5VTEw7CisJbXVubWFwKGJ1 Zi0+cHRyLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CiAKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UoYm8pOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0 ZV9kbWFidWZfcmVxdWlyZShjb25zdCBzdHJ1Y3QgY3JlYXRlICpjcmVhdGUsIHVuc2lnbmVkIGNv dW50KQpAQCAtMzQ5LDEzICszNjksMTQgQEAgc3RydWN0IGRtYWJ1ZiB7CiAJdm9pZCAqbWFwOwog fTsKIAotc3RhdGljIGRybV9pbnRlbF9ibyAqCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqCiBk bWFidWZfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogewogCXN0cnVjdCBkcm1f cHJpbWVfaGFuZGxlIGFyZ3M7Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdGF0aWMgc3RydWN0IGlu dGVsX2J1ZiAqYnVmOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKIAlpbnQgc2l6ZTsKKwl1aW50 MzJfdCBoYW5kbGU7CiAKIAlzaXplID0gYi0+cGFnZV9zaXplOwogCkBAIC0zNjYsOSArMzg3LDEy IEBAIGRtYWJ1Zl9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiAKIAlkb19pb2N0 bChmZCwgRFJNX0lPQ1RMX1BSSU1FX0hBTkRMRV9UT19GRCwgJmFyZ3MpOwogCWdlbV9jbG9zZShm ZCwgYXJncy5oYW5kbGUpOworCWlndF9hc3NlcnQoYXJncy5mZCAhPSAtMSk7CiAKLQlibyA9IGRy bV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zyb21fcHJpbWUoYi0+YnVmbWdyLCBhcmdzLmZkLCBzaXpl KTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwloYW5kbGUgPSBwcmltZV9mZF90b19oYW5kbGUoYnVmX29w c19nZXRfZmQoYi0+Ym9wcyksIGFyZ3MuZmQpOworCWJ1ZiA9IGNhbGxvYygxLCBzaXplb2YoKmJ1 ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3BzLCBoYW5kbGUsIGJ1Ziwg Yi0+d2lkdGgsCisJCQkJICAgIGItPmhlaWdodCwgMzIsIDAsIEk5MTVfVElMSU5HX05PTkUsIDAp OwogCiAJZG1hYnVmID0gbWFsbG9jKHNpemVvZigqZG1hYnVmKSk7CiAJaWd0X2Fzc2VydChkbWFi dWYpOwpAQCAtMzc5LDE1ICs0MDMsMTUgQEAgZG1hYnVmX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3Qg YnVmZmVycyAqYikKIAkJCSAgIGRtYWJ1Zi0+ZmQsIDApOwogCWlndF9hc3NlcnQoZG1hYnVmLT5t YXAgIT0gKHZvaWQgKiktMSk7CiAKLQliby0+dmlydHVhbCA9IGRtYWJ1ZjsKKwlidWYtPnB0ciA9 ICh2b2lkICopIGRtYWJ1ZjsKIAotCXJldHVybiBibzsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0 aWMgdm9pZAotZG1hYnVmX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpi bywgdWludDMyX3QgdmFsKQorZG1hYnVmX3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0 IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpCiB7Ci0Jc3RydWN0IGRtYWJ1ZiAqZG1hYnVm ID0gYm8tPnZpcnR1YWw7CisJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gKHZvaWQgKikgYnVmLT5w dHI7CiAJdWludDMyX3QgKnYgPSBkbWFidWYtPm1hcDsKIAlpbnQgeTsKIApAQCAtMzk4LDkgKzQy Miw5IEBAIGRtYWJ1Zl9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8s IHVpbnQzMl90IHZhbCkKIH0KIAogc3RhdGljIHZvaWQKLWRtYWJ1Zl9jbXBfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2RtYWJ1Zl9jbXBfYm8o c3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQog ewotCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZiA9IGJvLT52aXJ0dWFsOworCXN0cnVjdCBkbWFidWYg KmRtYWJ1ZiA9ICh2b2lkICopIGJ1Zi0+cHRyOwogCXVpbnQzMl90ICp2ID0gZG1hYnVmLT5tYXA7 CiAJaW50IHk7CiAKQEAgLTQxMSwxNyArNDM1LDE2IEBAIGRtYWJ1Zl9jbXBfYm8oc3RydWN0IGJ1 ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIH0KIAogc3RhdGljIHZv aWQKLWRtYWJ1Zl9yZWxlYXNlX2JvKGRybV9pbnRlbF9ibyAqYm8pCitkbWFidWZfcmVsZWFzZV9i byhzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0Jc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gYm8t PnZpcnR1YWw7CisJc3RydWN0IGRtYWJ1ZiAqZG1hYnVmID0gKHZvaWQgKikgYnVmLT5wdHI7CiAJ aWd0X2Fzc2VydChkbWFidWYpOwogCi0JbXVubWFwKGRtYWJ1Zi0+bWFwLCBiby0+c2l6ZSk7CisJ bXVubWFwKGRtYWJ1Zi0+bWFwLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CiAJY2xvc2UoZG1hYnVm LT5mZCk7CiAJZnJlZShkbWFidWYpOwogCi0JYm8tPnZpcnR1YWwgPSBOVUxMOwotCWRybV9pbnRl bF9ib191bnJlZmVyZW5jZShibyk7CisJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmKTsKIH0KIAogc3Rh dGljIGJvb2wgaGFzX3ByaW1lX2V4cG9ydChpbnQgX2ZkKQpAQCAtNDQ2LDEzICs0NjksMTQgQEAg c3RhdGljIHZvaWQgY3JlYXRlX2d0dF9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0 ZSwgdW5zaWduZWQgY291bnQpCiAJZ2VtX3JlcXVpcmVfbWFwcGFibGVfZ2d0dChmZCk7CiB9CiAK LXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgogdmdlbV9j cmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJc3RydWN0IGRybV9wcmltZV9o YW5kbGUgYXJnczsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1ZjsK IAlzdHJ1Y3QgdmdlbV9ibyB2Z2VtOwogCXN0cnVjdCBkbWFidWYgKmRtYWJ1ZjsKKwl1aW50MzJf dCBoYW5kbGU7CiAKIAlpZ3RfYXNzZXJ0KHZnZW1fZHJ2ICE9IC0xKTsKIApAQCAtNDcwLDggKzQ5 NCwxMSBAQCB2Z2VtX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIAlnZW1fY2xv c2UodmdlbV9kcnYsIGFyZ3MuaGFuZGxlKTsKIAlpZ3RfYXNzZXJ0KGFyZ3MuZmQgIT0gLTEpOwog Ci0JYm8gPSBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGItPmJ1Zm1nciwgYXJn cy5mZCwgdmdlbS5zaXplKTsKLQlpZ3RfYXNzZXJ0KGJvKTsKKwloYW5kbGUgPSBwcmltZV9mZF90 b19oYW5kbGUoYnVmX29wc19nZXRfZmQoYi0+Ym9wcyksIGFyZ3MuZmQpOworCWJ1ZiA9IGNhbGxv YygxLCBzaXplb2YoKmJ1ZikpOworCWludGVsX2J1Zl9pbml0X3VzaW5nX2hhbmRsZShiLT5ib3Bz LCBoYW5kbGUsIGJ1ZiwKKwkJCQkgICAgdmdlbS53aWR0aCwgdmdlbS5oZWlnaHQsIHZnZW0uYnBw LAorCQkJCSAgICAwLCBJOTE1X1RJTElOR19OT05FLCAwKTsKIAogCWRtYWJ1ZiA9IG1hbGxvYyhz aXplb2YoKmRtYWJ1ZikpOwogCWlndF9hc3NlcnQoZG1hYnVmKTsKQEAgLTQ4Miw2NCArNTA5LDU4 IEBAIHZnZW1fY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpiKQogCQkJICAgZG1hYnVm LT5mZCwgMCk7CiAJaWd0X2Fzc2VydChkbWFidWYtPm1hcCAhPSAodm9pZCAqKS0xKTsKIAotCWJv LT52aXJ0dWFsID0gZG1hYnVmOworCWJ1Zi0+cHRyID0gKHZvaWQgKikgZG1hYnVmOwogCi0JcmV0 dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKIHN0YXRpYyB2b2lkCi1ndHRfc2V0X2JvKHN0cnVj dCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCB2YWwpCitndHRfc2V0X2Jv KHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHZhbCkK IHsKLQl1aW50MzJfdCAqdmFkZHIgPSBiby0+dmlydHVhbDsKKwl1aW50MzJfdCAqdmFkZHIgPSBi dWYtPnB0cjsKKworCWdlbV9zZXRfZG9tYWluKGZkLCBidWYtPmhhbmRsZSwKKwkJICAgICAgIEk5 MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwogCi0JZHJtX2ludGVsX2dl bV9ib19zdGFydF9ndHRfYWNjZXNzKGJvLCB0cnVlKTsKIAlmb3IgKGludCB5ID0gMDsgeSA8IGIt PmhlaWdodDsgeSsrKQogCQl2YWRkcltwaXhlbCh5LCBiLT53aWR0aCldID0gdmFsOwogfQogCiBz dGF0aWMgdm9pZAotZ3R0X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpi bywgdWludDMyX3QgdmFsKQorZ3R0X2NtcF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0ICBp bnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCXVpbnQzMl90ICp2YWRkciA9IGJvLT52 aXJ0dWFsOworCXVpbnQzMl90ICp2YWRkciA9IGJ1Zi0+cHRyOwogCiAJLyogR1RUIGFjY2VzcyBp cyBzbG93LiBTbyB3ZSBqdXN0IGNvbXBhcmUgYSBmZXcgcG9pbnRzICovCi0JZHJtX2ludGVsX2dl bV9ib19zdGFydF9ndHRfYWNjZXNzKGJvLCBmYWxzZSk7CisJZ2VtX3NldF9kb21haW4oZmQsIGJ1 Zi0+aGFuZGxlLAorCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CisKIAlmb3IgKGlu dCB5ID0gMDsgeSA8IGItPmhlaWdodDsgeSsrKQogCQlpZ3RfYXNzZXJ0X2VxX3UzMih2YWRkcltw aXhlbCh5LCBiLT53aWR0aCldLCB2YWwpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKLW1h cF9ibyhkcm1faW50ZWxfYm8gKmJvKQorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYgKgorbWFwX2Jv KHN0cnVjdCBpbnRlbF9idWYgKmJ1ZikKIHsKIAkvKiBndHQgbWFwIGRvZXNuJ3QgaGF2ZSBhIHdy aXRlIHBhcmFtZXRlciwgc28ganVzdCBrZWVwIHRoZSBtYXBwaW5nCiAJICogYXJvdW5kICh0byBh dm9pZCB0aGUgc2V0X2RvbWFpbiB3aXRoIHRoZSBndHQgd3JpdGUgZG9tYWluIHNldCkgYW5kCiAJ ICogbWFudWFsbHkgdGVsbCB0aGUga2VybmVsIHdoZW4gd2Ugc3RhcnQgYWNjZXNzIHRoZSBndHQu ICovCi0JZG9fb3JfZGllKGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChibykpOworCWJ1Zi0+cHRy ID0gZ2VtX21tYXBfX2d0dChidWZfb3BzX2dldF9mZChidWYtPmJvcHMpLCBidWYtPmhhbmRsZSwK KwkJCQkgYnVmLT5zdXJmYWNlWzBdLnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogCi0J cmV0dXJuIGJvOworCXJldHVybiBidWY7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgotdGls ZV9ibyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgd2lkdGgpCi17Ci0JdWludDMyX3QgdGlsaW5nID0g STkxNV9USUxJTkdfWDsKLQl1aW50MzJfdCBzdHJpZGUgPSB3aWR0aCAqIDQ7Ci0KLQlkb19vcl9k aWUoZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYm8sICZ0aWxpbmcsIHN0cmlkZSkpOwotCi0JcmV0 dXJuIGJvOwotfQotCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf YnVmICoKIGd0dF9jcmVhdGVfYm8oY29uc3Qgc3RydWN0IGJ1ZmZlcnMgKmIpCiB7CiAJcmV0dXJu IG1hcF9ibyh1bm1hcHBlZF9jcmVhdGVfYm8oYikpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2Jv ICoKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKIGd0dFhfY3JlYXRlX2JvKGNvbnN0IHN0cnVj dCBidWZmZXJzICpiKQogewotCXJldHVybiB0aWxlX2JvKGd0dF9jcmVhdGVfYm8oYiksIGItPndp ZHRoKTsKKwlyZXR1cm4gbWFwX2JvKGNyZWF0ZV9ibyhiLCBJOTE1X1RJTElOR19YKSk7CiB9CiAK IHN0YXRpYyB2b2lkIGJpdDE3X3JlcXVpcmUodm9pZCkKQEAgLTU3NCw4NSArNTk1LDg4IEBAIHdj X2NyZWF0ZV9yZXF1aXJlKGNvbnN0IHN0cnVjdCBjcmVhdGUgKmNyZWF0ZSwgdW5zaWduZWQgY291 bnQpCiAJd2NfcmVxdWlyZSgpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfYnVmICoKIHdjX2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikK IHsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAK LQlibyA9IHVubWFwcGVkX2NyZWF0ZV9ibyhiKTsKLQliby0+dmlydHVhbCA9IGdlbV9tbWFwX193 YyhmZCwgYm8tPmhhbmRsZSwgMCwgYm8tPnNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwot CXJldHVybiBibzsKKwlidWYgPSB1bm1hcHBlZF9jcmVhdGVfYm8oYik7CisJYnVmLT5wdHIgPSBn ZW1fbW1hcF9fd2MoZmQsIGJ1Zi0+aGFuZGxlLCAwLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSwKKwkJ CQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKwlyZXR1cm4gYnVmOwogfQogCiBzdGF0aWMgdm9p ZAotd2NfcmVsZWFzZV9ibyhkcm1faW50ZWxfYm8gKmJvKQord2NfcmVsZWFzZV9ibyhzdHJ1Y3Qg aW50ZWxfYnVmICpidWYpCiB7Ci0JaWd0X2Fzc2VydChiby0+dmlydHVhbCk7CisJaWd0X2Fzc2Vy dChidWYtPnB0cik7CiAKLQltdW5tYXAoYm8tPnZpcnR1YWwsIGJvLT5zaXplKTsKLQliby0+dmly dHVhbCA9IE5VTEw7CisJbXVubWFwKGJ1Zi0+cHRyLCBidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CisJ YnVmLT5wdHIgPSAwOwogCi0Jbm9wX3JlbGVhc2VfYm8oYm8pOworCW5vcF9yZWxlYXNlX2JvKGJ1 Zik7CiB9CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKgorc3RhdGljIHN0cnVjdCBpbnRlbF9idWYg KgogZ3B1X2NyZWF0ZV9ibyhjb25zdCBzdHJ1Y3QgYnVmZmVycyAqYikKIHsKIAlyZXR1cm4gdW5t YXBwZWRfY3JlYXRlX2JvKGIpOwogfQogCi1zdGF0aWMgZHJtX2ludGVsX2JvICoKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfYnVmICoKIGdwdVhfY3JlYXRlX2JvKGNvbnN0IHN0cnVjdCBidWZmZXJzICpi KQogewotCXJldHVybiB0aWxlX2JvKGdwdV9jcmVhdGVfYm8oYiksIGItPndpZHRoKTsKKwlyZXR1 cm4gY3JlYXRlX2JvKGIsIEk5MTVfVElMSU5HX1gpOwogfQogCiBzdGF0aWMgdm9pZAotY3B1X3Nl dF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQor Y3B1X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50 MzJfdCB2YWwpCiB7CiAJaW50IHNpemUgPSBiLT5ucGl4ZWxzOworCWludCBpOTE1ID0gYnVmX29w c19nZXRfZmQoYnVmLT5ib3BzKTsKIAl1aW50MzJfdCAqdmFkZHI7CiAKLQlkb19vcl9kaWUoZHJt X2ludGVsX2JvX21hcChibywgdHJ1ZSkpOwotCXZhZGRyID0gYm8tPnZpcnR1YWw7CisJaWYgKGdl bV9oYXNfbGxjKGk5MTUpKQorCQlpbnRlbF9idWZfY3B1X21hcChidWYsIHRydWUpOworCWVsc2UK KwkJaW50ZWxfYnVmX2RldmljZV9tYXAoYnVmLCB0cnVlKTsKKworCXZhZGRyID0gYnVmLT5wdHI7 CiAJd2hpbGUgKHNpemUtLSkKIAkJKnZhZGRyKysgPSB2YWw7Ci0JZHJtX2ludGVsX2JvX3VubWFw KGJvKTsKKwlpbnRlbF9idWZfdW5tYXAoYnVmKTsKIH0KIAogc3RhdGljIHZvaWQKLWNwdV9jbXBf Ym8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2Nw dV9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMy X3QgdmFsKQogewogCWludCBzaXplID0gYi0+bnBpeGVsczsKIAl1aW50MzJfdCAqdmFkZHI7CiAK LQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChibywgZmFsc2UpKTsKLQl2YWRkciA9IGJvLT52 aXJ0dWFsOworCWludGVsX2J1Zl9jcHVfbWFwKGJ1ZiwgZmFsc2UpOworCXZhZGRyID0gYnVmLT5w dHI7CiAJd2hpbGUgKHNpemUtLSkKIAkJaWd0X2Fzc2VydF9lcV91MzIoKnZhZGRyKyssIHZhbCk7 Ci0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKKwlpbnRlbF9idWZfdW5tYXAoYnVmKTsKIH0KIAog c3RhdGljIHZvaWQKLWdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRybV9pbnRl bF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2dwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZl cnMsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1sxXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiBnZW1fZXhlY1syXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyIGV4ZWNidWY7Ci0JdWludDMyX3QgYnVmWzEwXSwgKmI7Ci0JdWludDMyX3QgdGlsaW5nLCBz d2l6emxlOwotCi0JZHJtX2ludGVsX2JvX2dldF90aWxpbmcoYm8sICZ0aWxpbmcsICZzd2l6emxl KTsKKwl1aW50MzJfdCB0bXBbMTBdLCAqYjsKIAogCW1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJl bG9jKSk7CiAJbWVtc2V0KGdlbV9leGVjLCAwLCBzaXplb2YoZ2VtX2V4ZWMpKTsKIAltZW1zZXQo JmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CiAKLQliID0gYnVmOworCWIgPSB0bXA7CiAJ KmIrKyA9IFhZX0NPTE9SX0JMVF9DTURfTk9MRU4gfAogCQkoKGdlbiA+PSA4KSA/IDUgOiA0KSB8 CiAJCUNPTE9SX0JMVF9XUklURV9BTFBIQSB8IFhZX0NPTE9SX0JMVF9XUklURV9SR0I7Ci0JaWYg KGdlbiA+PSA0ICYmIHRpbGluZykgeworCWlmIChnZW4gPj0gNCAmJiBidWYtPnRpbGluZykgewog CQliWy0xXSB8PSBYWV9DT0xPUl9CTFRfVElMRUQ7CiAJCSpiID0gYnVmZmVycy0+d2lkdGg7CiAJ fSBlbHNlCkBAIC02NjAsOCArNjg0LDggQEAgZ3B1X3NldF9ibyhzdHJ1Y3QgYnVmZmVycyAqYnVm ZmVycywgZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgdmFsKQogCSpiKysgfD0gMHhmMCA8PCAx NiB8IDEgPDwgMjUgfCAxIDw8IDI0OwogCSpiKysgPSAwOwogCSpiKysgPSBidWZmZXJzLT5oZWln aHQgPDwgMTYgfCBidWZmZXJzLT53aWR0aDsKLQlyZWxvY1swXS5vZmZzZXQgPSAoYiAtIGJ1Zikg KiBzaXplb2YodWludDMyX3QpOwotCXJlbG9jWzBdLnRhcmdldF9oYW5kbGUgPSBiby0+aGFuZGxl OworCXJlbG9jWzBdLm9mZnNldCA9IChiIC0gdG1wKSAqIHNpemVvZih1aW50MzJfdCk7CisJcmVs b2NbMF0udGFyZ2V0X2hhbmRsZSA9IGJ1Zi0+aGFuZGxlOwogCXJlbG9jWzBdLnJlYWRfZG9tYWlu cyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CiAJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0gSTkx NV9HRU1fRE9NQUlOX1JFTkRFUjsKIAkqYisrID0gMDsKQEAgLTY2OSwxMCArNjkzLDEwIEBAIGdw dV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQz Ml90IHZhbCkKIAkJKmIrKyA9IDA7CiAJKmIrKyA9IHZhbDsKIAkqYisrID0gTUlfQkFUQ0hfQlVG RkVSX0VORDsKLQlpZiAoKGIgLSBidWYpICYgMSkKKwlpZiAoKGIgLSB0bXApICYgMSkKIAkJKmIr KyA9IDA7CiAKLQlnZW1fZXhlY1swXS5oYW5kbGUgPSBiby0+aGFuZGxlOworCWdlbV9leGVjWzBd LmhhbmRsZSA9IGJ1Zi0+aGFuZGxlOwogCWdlbV9leGVjWzBdLmZsYWdzID0gRVhFQ19PQkpFQ1Rf TkVFRFNfRkVOQ0U7CiAKIAlnZW1fZXhlY1sxXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2 KTsKQEAgLTY4MSwzMCArNzA1LDMwIEBAIGdwdV9zZXRfYm8oc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZl cnMsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKIAogCWV4ZWNidWYuYnVmZmVyc19w dHIgPSB0b191c2VyX3BvaW50ZXIoZ2VtX2V4ZWMpOwogCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0g MjsKLQlleGVjYnVmLmJhdGNoX2xlbiA9IChiIC0gYnVmKSAqIHNpemVvZihidWZbMF0pOworCWV4 ZWNidWYuYmF0Y2hfbGVuID0gKGIgLSB0bXApICogc2l6ZW9mKHRtcFswXSk7CiAJaWYgKGdlbiA+ PSA2KQogCQlleGVjYnVmLmZsYWdzID0gSTkxNV9FWEVDX0JMVDsKIAotCWdlbV93cml0ZShmZCwg Z2VtX2V4ZWNbMV0uaGFuZGxlLCAwLCBidWYsIGV4ZWNidWYuYmF0Y2hfbGVuKTsKKwlnZW1fd3Jp dGUoZmQsIGdlbV9leGVjWzFdLmhhbmRsZSwgMCwgdG1wLCBleGVjYnVmLmJhdGNoX2xlbik7CiAJ Z2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKIAogCWdlbV9jbG9zZShmZCwgZ2VtX2V4ZWNbMV0u aGFuZGxlKTsKIH0KIAogc3RhdGljIHZvaWQKLWdwdV9jbXBfYm8oc3RydWN0IGJ1ZmZlcnMgKmIs IGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCkKK2dwdV9jbXBfYm8oc3RydWN0IGJ1ZmZl cnMgKmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewotCWJsdF9jb3B5 X2JvKGIsIGItPnNub29wLCBibyk7CisJYmx0X2NvcHlfYm8oYiwgYi0+c25vb3AsIGJ1Zik7CiAJ Y3B1X2NtcF9ibyhiLCBiLT5zbm9vcCwgdmFsKTsKIH0KIAogc3RydWN0IGFjY2Vzc19tb2RlIHsK IAljb25zdCBjaGFyICpuYW1lOwogCXZvaWQgKCpyZXF1aXJlKShjb25zdCBzdHJ1Y3QgY3JlYXRl ICosIHVuc2lnbmVkKTsKLQlkcm1faW50ZWxfYm8gKigqY3JlYXRlX2JvKShjb25zdCBzdHJ1Y3Qg YnVmZmVycyAqYik7Ci0Jdm9pZCAoKnNldF9ibykoc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRl bF9ibyAqYm8sIHVpbnQzMl90IHZhbCk7Ci0Jdm9pZCAoKmNtcF9ibykoc3RydWN0IGJ1ZmZlcnMg KmIsIGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IHZhbCk7Ci0Jdm9pZCAoKnJlbGVhc2VfYm8p KGRybV9pbnRlbF9ibyAqYm8pOworCXN0cnVjdCBpbnRlbF9idWYgKigqY3JlYXRlX2JvKShjb25z dCBzdHJ1Y3QgYnVmZmVycyAqYik7CisJdm9pZCAoKnNldF9ibykoc3RydWN0IGJ1ZmZlcnMgKmIs IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKTsKKwl2b2lkICgqY21wX2JvKShz dHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCB2YWwpOwor CXZvaWQgKCpyZWxlYXNlX2JvKShzdHJ1Y3QgaW50ZWxfYnVmICpidWYpOwogfTsKIGlndF9yZW5k ZXJfY29weWZ1bmNfdCByZW5kZXJjb3B5OwogCkBAIC03NDUsNyArNzY5LDcgQEAgc3RhdGljIHZv aWQgYnVmZmVyc19pbml0KHN0cnVjdCBidWZmZXJzICpiLAogCQkJIGNvbnN0IHN0cnVjdCBhY2Nl c3NfbW9kZSAqbW9kZSwKIAkJCSBjb25zdCBzdHJ1Y3Qgc2l6ZSAqc2l6ZSwKIAkJCSBpbnQgbnVt X2J1ZmZlcnMsCi0JCQkgaW50IF9mZCwgaW50IGVuYWJsZV9yZXVzZSkKKwkJCSBpbnQgX2ZkKQog ewogCW1lbXNldChiLCAwLCBzaXplb2YoKmIpKTsKIAliLT5uYW1lID0gbmFtZTsKQEAgLTc2Mywx NyArNzg3LDEzIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfaW5pdChzdHJ1Y3QgYnVmZmVycyAqYiwK IAliLT50bXAgPSBtYWxsb2MoYi0+cGFnZV9zaXplKTsKIAlpZ3RfYXNzZXJ0KGItPnRtcCk7CiAK LQliLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KF9mZCwgNDA5Nik7Ci0JaWd0 X2Fzc2VydChiLT5idWZtZ3IpOworCWItPmJvcHMgPSBidWZfb3BzX2NyZWF0ZShfZmQpOwogCi0J Yi0+c3JjID0gbWFsbG9jKDIqc2l6ZW9mKGRybV9pbnRlbF9ibyAqKSpudW1fYnVmZmVycyk7CisJ Yi0+c3JjID0gbWFsbG9jKDIqc2l6ZW9mKHN0cnVjdCBpbnRlbF9idWYgKikqbnVtX2J1ZmZlcnMp OwogCWlndF9hc3NlcnQoYi0+c3JjKTsKIAliLT5kc3QgPSBiLT5zcmMgKyBudW1fYnVmZmVyczsK IAotCWlmIChlbmFibGVfcmV1c2UpCi0JCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVz ZShiLT5idWZtZ3IpOwotCWItPmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYi0+YnVm bWdyLCBkZXZpZCk7Ci0JaWd0X2Fzc2VydChiLT5iYXRjaCk7CisJYi0+aWJiID0gaW50ZWxfYmJf Y3JlYXRlKF9mZCwgNDA5Nik7CiB9CiAKIHN0YXRpYyB2b2lkIGJ1ZmZlcnNfZGVzdHJveShzdHJ1 Y3QgYnVmZmVycyAqYikKQEAgLTgwOSw3ICs4MjksNyBAQCBzdGF0aWMgdm9pZCBidWZmZXJzX2Rl c3Ryb3koc3RydWN0IGJ1ZmZlcnMgKmIpCiBzdGF0aWMgdm9pZCBidWZmZXJzX2NyZWF0ZShzdHJ1 Y3QgYnVmZmVycyAqYikKIHsKIAlpbnQgY291bnQgPSBiLT5udW1fYnVmZmVyczsKLQlpZ3RfYXNz ZXJ0KGItPmJ1Zm1ncik7CisJaWd0X2Fzc2VydChiLT5ib3BzKTsKIAogCWJ1ZmZlcnNfZGVzdHJv eShiKTsKIAlpZ3RfYXNzZXJ0KGItPmNvdW50ID09IDApOwpAQCAtODIzLDIwICs4NDMsMTUgQEAg c3RhdGljIHZvaWQgYnVmZmVyc19jcmVhdGUoc3RydWN0IGJ1ZmZlcnMgKmIpCiAJYi0+c25vb3Ag PSBzbm9vcF9jcmVhdGVfYm8oYik7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1ZmZlcnNfcmVzZXQoc3Ry dWN0IGJ1ZmZlcnMgKmIsIGJvb2wgZW5hYmxlX3JldXNlKQorc3RhdGljIHZvaWQgYnVmZmVyc19y ZXNldChzdHJ1Y3QgYnVmZmVycyAqYikKIHsKLQliLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdy X2dlbV9pbml0KGZkLCA0MDk2KTsKLQlpZ3RfYXNzZXJ0KGItPmJ1Zm1ncik7Ci0KLQlpZiAoZW5h YmxlX3JldXNlKQotCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYi0+YnVmbWdy KTsKLQliLT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGItPmJ1Zm1nciwgZGV2aWQp OwotCWlndF9hc3NlcnQoYi0+YmF0Y2gpOworCWItPmJvcHMgPSBidWZfb3BzX2NyZWF0ZShmZCk7 CisJYi0+aWJiID0gaW50ZWxfYmJfY3JlYXRlKGZkLCA0MDk2KTsKIH0KIAogc3RhdGljIHZvaWQg YnVmZmVyc19maW5pKHN0cnVjdCBidWZmZXJzICpiKQogewotCWlmIChiLT5idWZtZ3IgPT0gTlVM TCkKKwlpZiAoYi0+Ym9wcyA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlidWZmZXJzX2Rlc3Ryb3ko Yik7CkBAIC04NDQsNTggKzg1OSw0NyBAQCBzdGF0aWMgdm9pZCBidWZmZXJzX2Zpbmkoc3RydWN0 IGJ1ZmZlcnMgKmIpCiAJZnJlZShiLT50bXApOwogCWZyZWUoYi0+c3JjKTsKIAotCWludGVsX2Jh dGNoYnVmZmVyX2ZyZWUoYi0+YmF0Y2gpOwotCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShiLT5i dWZtZ3IpOworCWludGVsX2JiX2Rlc3Ryb3koYi0+aWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3koYi0+ Ym9wcyk7CiAKIAltZW1zZXQoYiwgMCwgc2l6ZW9mKCpiKSk7CiB9CiAKLXR5cGVkZWYgdm9pZCAo KmRvX2NvcHkpKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVs X2JvICpzcmMpOwordHlwZWRlZiB2b2lkICgqZG9fY29weSkoc3RydWN0IGJ1ZmZlcnMgKmIsIHN0 cnVjdCBpbnRlbF9idWYgKmRzdCwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYyk7CiB0eXBlZGVm IGlndF9oYW5nX3QgKCpkb19oYW5nKSh2b2lkKTsKIAotc3RhdGljIHZvaWQgcmVuZGVyX2NvcHlf Ym8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNy YykKK3N0YXRpYyB2b2lkIHJlbmRlcl9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3Qg aW50ZWxfYnVmICpkc3QsCisJCQkgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7Ci0Jc3RydWN0 IGlndF9idWYgZCA9IHsKLQkJLmJvID0gZHN0LAotCQkubnVtX3RpbGVzID0gYi0+bnBpeGVscyAq IDQsCi0JCS5zdXJmYWNlWzBdID0gewotCQkJLnNpemUgPSBiLT5ucGl4ZWxzICogNCwgLnN0cmlk ZSA9IGItPndpZHRoICogNCwKLQkJfSwKLQkJLmJwcCA9IDMyLAotCX0sIHMgPSB7Ci0JCS5ibyA9 IHNyYywKLQkJLm51bV90aWxlcyA9IGItPm5waXhlbHMgKiA0LAotCQkuc3VyZmFjZVswXSA9IHsK LQkJCS5zaXplID0gYi0+bnBpeGVscyAqIDQsIC5zdHJpZGUgPSBiLT53aWR0aCAqIDQsCi0JCX0s Ci0JCS5icHAgPSAzMiwKLQl9OwotCXVpbnQzMl90IHN3aXp6bGU7Ci0KLQlkcm1faW50ZWxfYm9f Z2V0X3RpbGluZyhkc3QsICZkLnRpbGluZywgJnN3aXp6bGUpOwotCWRybV9pbnRlbF9ib19nZXRf dGlsaW5nKHNyYywgJnMudGlsaW5nLCAmc3dpenpsZSk7Ci0KLQlyZW5kZXJjb3B5KGItPmJhdGNo LCBOVUxMLAotCQkgICAmcywgMCwgMCwKKwlyZW5kZXJjb3B5KGItPmliYiwgMCwKKwkJICAgc3Jj LCAwLCAwLAogCQkgICBiLT53aWR0aCwgYi0+aGVpZ2h0LAotCQkgICAmZCwgMCwgMCk7CisJCSAg IGRzdCwgMCwgMCk7CisJaW50ZWxfYmJfc3luYyhiLT5pYmIpOworCWludGVsX2JiX3Jlc2V0KGIt PmliYiwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGJsdF9jb3B5X2JvKHN0cnVjdCBidWZmZXJz ICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpCitzdGF0aWMgdm9pZCBi bHRfY29weV9ibyhzdHJ1Y3QgYnVmZmVycyAqYiwgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJ c3RydWN0IGludGVsX2J1ZiAqc3JjKQogewotCWludGVsX2JsdF9jb3B5KGItPmJhdGNoLAorCWlu dGVsX2JiX2JsdF9jb3B5KGItPmliYiwKIAkJICAgICAgIHNyYywgMCwgMCwgNCpiLT53aWR0aCwK IAkJICAgICAgIGRzdCwgMCwgMCwgNCpiLT53aWR0aCwKIAkJICAgICAgIGItPndpZHRoLCBiLT5o ZWlnaHQsIDMyKTsKKwlpbnRlbF9iYl9zeW5jKGItPmliYik7CisJaW50ZWxfYmJfcmVzZXQoYi0+ aWJiLCB0cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgY3B1X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMg KmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnNyYykKK3N0YXRpYyB2b2lkIGNw dV9jb3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCQlz dHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7CiAJY29uc3QgaW50IHNpemUgPSBiLT5wYWdlX3NpemU7 CiAJdm9pZCAqZCwgKnM7CiAKIAlnZW1fc2V0X2RvbWFpbihmZCwgc3JjLT5oYW5kbGUsIEk5MTVf R0VNX0RPTUFJTl9DUFUsIDApOwotCWdlbV9zZXRfZG9tYWluKGZkLCBkc3QtPmhhbmRsZSwgSTkx NV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJZ2VtX3NldF9kb21haW4o ZmQsIGRzdC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLAorCQkgICAgICAgSTkxNV9HRU1f RE9NQUlOX0NQVSk7CiAJcyA9IGdlbV9tbWFwX19jcHUoZmQsIHNyYy0+aGFuZGxlLCAwLCBzaXpl LCBQUk9UX1JFQUQpOwogCWQgPSBnZW1fbW1hcF9fY3B1KGZkLCBkc3QtPmhhbmRsZSwgMCwgc2l6 ZSwgUFJPVF9XUklURSk7CiAKQEAgLTkwNSwxMyArOTA5LDE1IEBAIHN0YXRpYyB2b2lkIGNwdV9j b3B5X2JvKHN0cnVjdCBidWZmZXJzICpiLCBkcm1faW50ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2Jv ICpzcmMpCiAJbXVubWFwKHMsIHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBndHRfY29weV9ibyhz dHJ1Y3QgYnVmZmVycyAqYiwgZHJtX2ludGVsX2JvICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKQor c3RhdGljIHZvaWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBpbnRlbF9i dWYgKmRzdCwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKIAljb25zdCBpbnQgc2l6ZSA9 IGItPnBhZ2Vfc2l6ZTsKIAl2b2lkICpkLCAqczsKIAogCWdlbV9zZXRfZG9tYWluKGZkLCBzcmMt PmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIGRz dC0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKKwln ZW1fc2V0X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsCisJCSAg ICAgICBJOTE1X0dFTV9ET01BSU5fR1RUKTsKIAogCXMgPSBnZW1fbW1hcF9fZ3R0KGZkLCBzcmMt PmhhbmRsZSwgc2l6ZSwgUFJPVF9SRUFEKTsKIAlkID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0LT5o YW5kbGUsIHNpemUsIFBST1RfV1JJVEUpOwpAQCAtOTIyLDEzICs5MjgsMTUgQEAgc3RhdGljIHZv aWQgZ3R0X2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1f aW50ZWxfYm8gKnNyYykKIAltdW5tYXAocywgc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdjX2Nv cHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8g KnNyYykKK3N0YXRpYyB2b2lkIHdjX2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsIHN0cnVjdCBp bnRlbF9idWYgKmRzdCwKKwkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKnNyYykKIHsKIAljb25z dCBpbnQgc2l6ZSA9IGItPnBhZ2Vfc2l6ZTsKIAl2b2lkICpkLCAqczsKIAogCWdlbV9zZXRfZG9t YWluKGZkLCBzcmMtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX1dDLCAwKTsKLQlnZW1fc2V0X2Rv bWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9XQywgSTkxNV9HRU1fRE9NQUlO X1dDKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9X QywKKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9XQyk7CiAKIAlzID0gZ2VtX21tYXBfX3djKGZk LCBzcmMtPmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9SRUFEKTsKIAlkID0gZ2VtX21tYXBfX3djKGZk LCBkc3QtPmhhbmRsZSwgMCwgc2l6ZSwgUFJPVF9XUklURSk7CkBAIC0xMzM1LDcgKzEzNDMsNyBA QCBzdGF0aWMgdm9pZCBydW5fY2hpbGQoc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsCiAJCSAgICAg IGRvX2hhbmcgZG9faGFuZ19mdW5jKQogCiB7Ci0JLyogV2UgaW5oZXJpdCB0aGUgYnVmZmVycyBm cm9tIHRoZSBwYXJlbnQsIGJ1dCB0aGUgYnVmbWdyL2JhdGNoCisJLyogV2UgaW5oZXJpdCB0aGUg YnVmZmVycyBmcm9tIHRoZSBwYXJlbnQsIGJ1dCB0aGUgYm9wcy9pbnRlbF9iYgogCSAqIG5lZWRz IHRvIGJlIGxvY2FsIGFzIHRoZSBjYWNoZSBvZiByZXVzYWJsZSBpdHNlbGYgd2lsbCBiZSBDT1dl ZCwKIAkgKiBsZWFkaW5nIHRvIHRoZSBjaGlsZCBjbG9zaW5nIGFuIG9iamVjdCB3aXRob3V0IHRo ZSBwYXJlbnQga25vd2luZy4KIAkgKi8KQEAgLTEzNTMsMTAgKzEzNjEsMTAgQEAgc3RhdGljIHZv aWQgX19ydW5fZm9ya2VkKHN0cnVjdCBidWZmZXJzICpidWZmZXJzLAogCQkJIGRvX2hhbmcgZG9f aGFuZ19mdW5jKQogCiB7Ci0JLyogcHVyZ2UgdGhlIGxpYmRybSBjYWNoZXMgYmVmb3JlIGNsb2lu ZyB0aGUgcHJvY2VzcyAqLworCS8qIHB1cmdlIHRoZSBjYWNoZXMgYmVmb3JlIGNsb2luZyB0aGUg cHJvY2VzcyAqLwogCWJ1ZmZlcnNfZGVzdHJveShidWZmZXJzKTsKLQlpbnRlbF9iYXRjaGJ1ZmZl cl9mcmVlKGJ1ZmZlcnMtPmJhdGNoKTsKLQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVmZmVy cy0+YnVmbWdyKTsKKwlpbnRlbF9iYl9kZXN0cm95KGJ1ZmZlcnMtPmliYik7CisJYnVmX29wc19k ZXN0cm95KGJ1ZmZlcnMtPmJvcHMpOwogCiAJaWd0X2ZvcmsoY2hpbGQsIG51bV9jaGlsZHJlbikg ewogCQlpbnQgbnVtX2J1ZmZlcnM7CkBAIC0xMzY5LDcgKzEzNzcsNyBAQCBzdGF0aWMgdm9pZCBf X3J1bl9mb3JrZWQoc3RydWN0IGJ1ZmZlcnMgKmJ1ZmZlcnMsCiAJCWlmIChudW1fYnVmZmVycyA8 IGJ1ZmZlcnMtPm51bV9idWZmZXJzKQogCQkJYnVmZmVycy0+bnVtX2J1ZmZlcnMgPSBudW1fYnVm ZmVyczsKIAotCQlidWZmZXJzX3Jlc2V0KGJ1ZmZlcnMsIHRydWUpOworCQlidWZmZXJzX3Jlc2V0 KGJ1ZmZlcnMpOwogCQlidWZmZXJzX2NyZWF0ZShidWZmZXJzKTsKIAogCQlpZ3Rfd2hpbGVfaW50 ZXJydXB0aWJsZShpbnRlcnJ1cHQpIHsKQEAgLTEzODIsNyArMTM5MCw3IEBAIHN0YXRpYyB2b2lk IF9fcnVuX2ZvcmtlZChzdHJ1Y3QgYnVmZmVycyAqYnVmZmVycywKIAlpZ3Rfd2FpdGNoaWxkcmVu KCk7CiAJaWd0X2Fzc2VydF9lcShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1 cHRzKGZkKSwgMCk7CiAKLQlidWZmZXJzX3Jlc2V0KGJ1ZmZlcnMsIHRydWUpOworCWJ1ZmZlcnNf cmVzZXQoYnVmZmVycyk7CiB9CiAKIHN0YXRpYyB2b2lkIHJ1bl9mb3JrZWQoc3RydWN0IGJ1ZmZl cnMgKmJ1ZmZlcnMsCkBAIC0xNDU5LDggKzE0NjcsNyBAQCBydW5fbW9kZShjb25zdCBjaGFyICpw cmVmaXgsCiAKIAlpZ3RfZml4dHVyZQogCQlidWZmZXJzX2luaXQoJmJ1ZmZlcnMsIHByZWZpeCwg Y3JlYXRlLCBtb2RlLAotCQkJICAgICBzaXplLCBudW1fYnVmZmVycywKLQkJCSAgICAgZmQsIHJ1 bl93cmFwX2Z1bmMgIT0gcnVuX2NoaWxkKTsKKwkJCSAgICAgc2l6ZSwgbnVtX2J1ZmZlcnMsIGZk KTsKIAogCWZvciAoaCA9IGhhbmdzOyBoLT5zdWZmaXg7IGgrKykgewogCQlpZiAoIWFsbCAmJiAq aC0+c3VmZml4KQpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcHBndHQuYyBiL3Rlc3RzL2k5 MTUvZ2VtX3BwZ3R0LmMKaW5kZXggOGMwMmU0YWYuLmU0YjFmZTQ1IDEwMDY0NAotLS0gYS90ZXN0 cy9pOTE1L2dlbV9wcGd0dC5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMKQEAgLTM4LDU2 ICszOCw1MCBAQAogI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5j bHVkZSAiaWd0X2RlYnVnZnMuaCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogI2RlZmlu ZSBXSURUSCA1MTIKICNkZWZpbmUgU1RSSURFIChXSURUSCo0KQogI2RlZmluZSBIRUlHSFQgNTEy CiAjZGVmaW5lIFNJWkUgKEhFSUdIVCpTVFJJREUpCiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKmNy ZWF0ZV9ibyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCi0JCQkgICAgICAgdWludDMyX3QgcGl4 ZWwpCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqY3JlYXRlX2JvKHN0cnVjdCBidWZfb3BzICpi b3BzLCB1aW50MzJfdCBwaXhlbCkKIHsKIAl1aW50NjRfdCB2YWx1ZSA9ICh1aW50NjRfdClwaXhl bCA8PCAzMiB8IHBpeGVsLCAqdjsKLQlkcm1faW50ZWxfYm8gKmJvOworCXN0cnVjdCBpbnRlbF9i dWYgKmJ1ZjsKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOwogCi0JYm8gPSBkcm1f aW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAic3VyZmFjZSIsIFNJWkUsIDQwOTYpOwotCWlndF9hc3Nl cnQoYm8pOworCWJ1ZiA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgV0lEVEgsIEhFSUdIVCwgMzIs IDAsIEk5MTVfVElMSU5HX05PTkUsIDApOworCisJaWYgKGdlbV9oYXNfbGxjKGk5MTUpKQorCQl2 ID0gaW50ZWxfYnVmX2NwdV9tYXAoYnVmLCB0cnVlKTsKKwllbHNlCisJCXYgPSBpbnRlbF9idWZf ZGV2aWNlX21hcChidWYsIHRydWUpOwogCi0JZG9fb3JfZGllKGRybV9pbnRlbF9ib19tYXAoYm8s IDEpKTsKLQl2ID0gYm8tPnZpcnR1YWw7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBTSVpFIC8gc2l6 ZW9mKHZhbHVlKTsgaSArPSA4KSB7CiAJCXZbaSArIDBdID0gdmFsdWU7IHZbaSArIDFdID0gdmFs dWU7CiAJCXZbaSArIDJdID0gdmFsdWU7IHZbaSArIDNdID0gdmFsdWU7CiAJCXZbaSArIDRdID0g dmFsdWU7IHZbaSArIDVdID0gdmFsdWU7CiAJCXZbaSArIDZdID0gdmFsdWU7IHZbaSArIDddID0g dmFsdWU7CiAJfQotCWRybV9pbnRlbF9ib191bm1hcChibyk7CisJaW50ZWxfYnVmX3VubWFwKGJ1 Zik7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGJ1ZjsKIH0KIAotc3RhdGljIHZvaWQgc2NyYXRj aF9idWZfaW5pdChzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkJICAgICBkcm1faW50ZWxfYnVmbWdy ICpidWZtZ3IsCi0JCQkgICAgIHVpbnQzMl90IHBpeGVsKQorc3RhdGljIHZvaWQgY2xlYW51cF9i dWZzKHN0cnVjdCBpbnRlbF9idWYgKipidWYsIGludCBjb3VudCkKIHsKLQltZW1zZXQoYnVmLCAw LCBzaXplb2YoKmJ1ZikpOwotCi0JYnVmLT5ibyA9IGNyZWF0ZV9ibyhidWZtZ3IsIHBpeGVsKTsK LQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwotCWJ1Zi0+dGlsaW5nID0gSTkxNV9U SUxJTkdfTk9ORTsKLQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JYnVmLT5icHAgPSAz MjsKLX0KKwlmb3IgKGludCBjaGlsZCA9IDA7IGNoaWxkIDwgY291bnQ7IGNoaWxkKyspIHsKKwkJ c3RydWN0IGJ1Zl9vcHMgKmJvcHMgPSBidWZbY2hpbGRdLT5ib3BzOworCQlpbnQgZmQgPSBidWZf b3BzX2dldF9mZChidWZbY2hpbGRdLT5ib3BzKTsKIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZf ZmluaShzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQotewotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShi dWYtPmJvKTsKLQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOworCQlpbnRlbF9idWZfZGVz dHJveShidWZbY2hpbGRdKTsKKwkJYnVmX29wc19kZXN0cm95KGJvcHMpOworCQljbG9zZShmZCk7 CisJfQogfQogCiBzdGF0aWMgdm9pZCBmb3JrX3Jjc19jb3B5KGludCB0aW1lb3V0LCB1aW50MzJf dCBmaW5hbCwKLQkJCSAgZHJtX2ludGVsX2JvICoqZHN0LCBpbnQgY291bnQsCisJCQkgIHN0cnVj dCBpbnRlbF9idWYgKipkc3QsIGludCBjb3VudCwKIAkJCSAgdW5zaWduZWQgZmxhZ3MpCiAjZGVm aW5lIENSRUFURV9DT05URVhUIDB4MQogewpAQCAtMTAyLDIxICs5NiwxMyBAQCBzdGF0aWMgdm9p ZCBmb3JrX3Jjc19jb3B5KGludCB0aW1lb3V0LCB1aW50MzJfdCBmaW5hbCwKIAogCWZvciAoaW50 IGNoaWxkID0gMDsgY2hpbGQgPCBjb3VudDsgY2hpbGQrKykgewogCQlpbnQgZmQgPSBkcm1fb3Bl bl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKLQkJZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworCQlz dHJ1Y3QgYnVmX29wcyAqYm9wczsKIAogCQlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQp OwogCi0JCWJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwotCQlp Z3RfYXNzZXJ0KGJ1Zm1ncik7CisJCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShmZCk7CiAKLQkJZHN0 W2NoaWxkXSA9IGNyZWF0ZV9ibyhidWZtZ3IsIH4wKTsKLQotCQlpZiAoZmxhZ3MgJiBDUkVBVEVf Q09OVEVYVCkgewotCQkJZHJtX2ludGVsX2NvbnRleHQgKmN0eDsKLQotCQkJY3R4ID0gZHJtX2lu dGVsX2dlbV9jb250ZXh0X2NyZWF0ZShkc3RbY2hpbGRdLT5idWZtZ3IpOwotCQkJaWd0X3JlcXVp cmUoY3R4KTsKLQkJfQorCQlkc3RbY2hpbGRdID0gY3JlYXRlX2JvKGJvcHMsIH4wKTsKIAogCQly ZW5kZXJfY29weSA9IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGRldmlkKTsKIAkJaWd0X3JlcXVp cmVfZihyZW5kZXJfY29weSwKQEAgLTEyNCwxMTMgKzExMCwxMDYgQEAgc3RhdGljIHZvaWQgZm9y a19yY3NfY29weShpbnQgdGltZW91dCwgdWludDMyX3QgZmluYWwsCiAJfQogCiAJaWd0X2Zvcmso Y2hpbGQsIGNvdW50KSB7Ci0JCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JCXN0 cnVjdCBpZ3RfYnVmIGJ1ZiA9IHt9OwotCQlzdHJ1Y3QgaWd0X2J1ZiBzcmM7CisJCXN0cnVjdCBp bnRlbF9iYiAqaWJiOworCQl1aW50MzJfdCBjdHggPSAwOworCQlzdHJ1Y3QgaW50ZWxfYnVmICpz cmM7CiAJCXVuc2lnbmVkIGxvbmcgaTsKIAotCQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2Fs bG9jKGRzdFtjaGlsZF0tPmJ1Zm1nciwKLQkJCQkJCWRldmlkKTsKLQkJaWd0X2Fzc2VydChiYXRj aCk7Ci0KLQkJaWYgKGZsYWdzICYgQ1JFQVRFX0NPTlRFWFQpIHsKLQkJCWRybV9pbnRlbF9jb250 ZXh0ICpjdHg7Ci0KLQkJCWN0eCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoZHN0W2No aWxkXS0+YnVmbWdyKTsKLQkJCWludGVsX2JhdGNoYnVmZmVyX3NldF9jb250ZXh0KGJhdGNoLCBj dHgpOwotCQl9CisJCWliYiA9IGludGVsX2JiX2NyZWF0ZShidWZfb3BzX2dldF9mZChkc3RbY2hp bGRdLT5ib3BzKSwgNDA5Nik7CiAKLQkJYnVmLmJvID0gZHN0W2NoaWxkXTsKLQkJYnVmLnN1cmZh Y2VbMF0uc3RyaWRlID0gU1RSSURFOwotCQlidWYudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsK LQkJYnVmLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCWJ1Zi5icHAgPSAzMjsKKwkJaWYgKGZs YWdzICYgQ1JFQVRFX0NPTlRFWFQpCisJCQljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoYnVmX29w c19nZXRfZmQoZHN0W2NoaWxkXS0+Ym9wcykpOwogCiAJCWkgPSAwOwogCQlpZ3RfdW50aWxfdGlt ZW91dCh0aW1lb3V0KSB7Ci0JCQlzY3JhdGNoX2J1Zl9pbml0KCZzcmMsIGRzdFtjaGlsZF0tPmJ1 Zm1nciwKLQkJCQkJIGkrKyB8IGNoaWxkIDw8IDE2KTsKLQkJCXJlbmRlcl9jb3B5KGJhdGNoLCBO VUxMLAotCQkJCSAgICAmc3JjLCAwLCAwLAorCQkJc3JjID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0t PmJvcHMsCisJCQkJCWkrKyB8IGNoaWxkIDw8IDE2KTsKKwkJCXJlbmRlcl9jb3B5KGliYiwgY3R4 LAorCQkJCSAgICBzcmMsIDAsIDAsCiAJCQkJICAgIFdJRFRILCBIRUlHSFQsCi0JCQkJICAgICZi dWYsIDAsIDApOwotCQkJc2NyYXRjaF9idWZfZmluaSgmc3JjKTsKKwkJCQkgICAgZHN0W2NoaWxk XSwgMCwgMCk7CisKKwkJCWludGVsX2J1Zl9kZXN0cm95KHNyYyk7CiAJCX0KIAotCQlzY3JhdGNo X2J1Zl9pbml0KCZzcmMsIGRzdFtjaGlsZF0tPmJ1Zm1nciwKLQkJCQkgZmluYWwgfCBjaGlsZCA8 PCAxNik7Ci0JCXJlbmRlcl9jb3B5KGJhdGNoLCBOVUxMLAotCQkJICAgICZzcmMsIDAsIDAsCisJ CXNyYyA9IGNyZWF0ZV9ibyhkc3RbY2hpbGRdLT5ib3BzLAorCQkJCWZpbmFsIHwgY2hpbGQgPDwg MTYpOworCQlyZW5kZXJfY29weShpYmIsIGN0eCwKKwkJCSAgICBzcmMsIDAsIDAsCiAJCQkgICAg V0lEVEgsIEhFSUdIVCwKLQkJCSAgICAmYnVmLCAwLCAwKTsKLQkJc2NyYXRjaF9idWZfZmluaSgm c3JjKTsKKwkJCSAgICBkc3RbY2hpbGRdLCAwLCAwKTsKKwkJaW50ZWxfYmJfc3luYyhpYmIpOwor CisJCWludGVsX2J1Zl9kZXN0cm95KHNyYyk7CisKKwkJaW50ZWxfYmJfZGVzdHJveShpYmIpOwog CX0KIH0KIAogc3RhdGljIHZvaWQgZm9ya19iY3NfY29weShpbnQgdGltZW91dCwgdWludDMyX3Qg ZmluYWwsCi0JCQkgIGRybV9pbnRlbF9ibyAqKmRzdCwgaW50IGNvdW50KQorCQkJICBzdHJ1Y3Qg aW50ZWxfYnVmICoqZHN0LCBpbnQgY291bnQpCiB7Ci0JaW50IGRldmlkOwotCiAJZm9yIChpbnQg Y2hpbGQgPSAwOyBjaGlsZCA8IGNvdW50OyBjaGlsZCsrKSB7Ci0JCWRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1ncjsKKwkJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiAJCWludCBmZCA9IGRybV9vcGVuX2Ry aXZlcihEUklWRVJfSU5URUwpOwogCi0JCWRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7 Ci0KLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Ci0JCWln dF9hc3NlcnQoYnVmbWdyKTsKLQotCQlkc3RbY2hpbGRdID0gY3JlYXRlX2JvKGJ1Zm1nciwgfjAp OworCQlib3BzID0gYnVmX29wc19jcmVhdGUoZmQpOworCQlkc3RbY2hpbGRdID0gY3JlYXRlX2Jv KGJvcHMsIH4wKTsKIAl9CiAKIAlpZ3RfZm9yayhjaGlsZCwgY291bnQpIHsKLQkJc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKLQkJZHJtX2ludGVsX2JvICpzcmNbMl07CisJCXN0cnVj dCBpbnRlbF9idWYgKnNyY1syXTsKKwkJc3RydWN0IGludGVsX2JiICppYmI7CiAJCXVuc2lnbmVk IGxvbmcgaTsKIAotCi0JCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZHN0W2NoaWxk XS0+YnVmbWdyLAotCQkJCQkJZGV2aWQpOwotCQlpZ3RfYXNzZXJ0KGJhdGNoKTsKKwkJaWJiID0g aW50ZWxfYmJfY3JlYXRlKGJ1Zl9vcHNfZ2V0X2ZkKGRzdFtjaGlsZF0tPmJvcHMpLCA0MDk2KTsK IAogCQlpID0gMDsKIAkJaWd0X3VudGlsX3RpbWVvdXQodGltZW91dCkgewotCQkJc3JjWzBdID0g Y3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJ1Zm1nciwKKwkJCXNyY1swXSA9IGNyZWF0ZV9ibyhkc3Rb Y2hpbGRdLT5ib3BzLAogCQkJCQkgICB+MCk7Ci0JCQlzcmNbMV0gPSBjcmVhdGVfYm8oZHN0W2No aWxkXS0+YnVmbWdyLAorCQkJc3JjWzFdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJvcHMsCiAJ CQkJCSAgIGkrKyB8IGNoaWxkIDw8IDE2KTsKIAotCQkJaW50ZWxfY29weV9ibyhiYXRjaCwgc3Jj WzBdLCBzcmNbMV0sIFNJWkUpOwotCQkJaW50ZWxfY29weV9ibyhiYXRjaCwgZHN0W2NoaWxkXSwg c3JjWzBdLCBTSVpFKTsKKwkJCWludGVsX2JiX2JsdF9jb3B5KGliYiwgc3JjWzFdLCAwLCAwLCA0 MDk2LAorCQkJCQkgIHNyY1swXSwgMCwgMCwgNDA5NiwKKwkJCQkJICA0MDk2LzQsIFNJWkUvNDA5 NiwgMzIpOworCQkJaW50ZWxfYmJfYmx0X2NvcHkoaWJiLCBzcmNbMF0sIDAsIDAsIDQwOTYsCisJ CQkJCSAgZHN0W2NoaWxkXSwgMCwgMCwgNDA5NiwKKwkJCQkJICA0MDk2LzQsIFNJWkUvNDA5Niwg MzIpOwogCi0JCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3JjWzFdKTsKLQkJCWRybV9pbnRl bF9ib191bnJlZmVyZW5jZShzcmNbMF0pOworCQkJaW50ZWxfYnVmX2Rlc3Ryb3koc3JjWzFdKTsK KwkJCWludGVsX2J1Zl9kZXN0cm95KHNyY1swXSk7CiAJCX0KIAotCQlzcmNbMF0gPSBjcmVhdGVf Ym8oZHN0W2NoaWxkXS0+YnVmbWdyLAotCQkJCSAgIH4wKTsKLQkJc3JjWzFdID0gY3JlYXRlX2Jv KGRzdFtjaGlsZF0tPmJ1Zm1nciwKKwkJc3JjWzBdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJv cHMsIH4wKTsKKwkJc3JjWzFdID0gY3JlYXRlX2JvKGRzdFtjaGlsZF0tPmJvcHMsCiAJCQkJICAg ZmluYWwgfCBjaGlsZCA8PCAxNik7CiAKLQkJaW50ZWxfY29weV9ibyhiYXRjaCwgc3JjWzBdLCBz cmNbMV0sIFNJWkUpOwotCQlpbnRlbF9jb3B5X2JvKGJhdGNoLCBkc3RbY2hpbGRdLCBzcmNbMF0s IFNJWkUpOworCQlpbnRlbF9iYl9ibHRfY29weShpYmIsIHNyY1sxXSwgMCwgMCwgNDA5NiwKKwkJ CQkgIHNyY1swXSwgMCwgMCwgNDA5NiwKKwkJCQkgIDQwOTYvNCwgU0laRS80MDk2LCAzMik7CisJ CWludGVsX2JiX2JsdF9jb3B5KGliYiwgc3JjWzBdLCAwLCAwLCA0MDk2LAorCQkJCSAgZHN0W2No aWxkXSwgMCwgMCwgNDA5NiwKKwkJCQkgIDQwOTYvNCwgU0laRS80MDk2LCAzMik7CisJCWludGVs X2JiX3N5bmMoaWJiKTsKIAotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc3JjWzFdKTsKLQkJ ZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHNyY1swXSk7CisJCWludGVsX2J1Zl9kZXN0cm95KHNy Y1sxXSk7CisJCWludGVsX2J1Zl9kZXN0cm95KHNyY1swXSk7CisKKwkJaW50ZWxfYmJfZGVzdHJv eShpYmIpOwogCX0KIH0KIAotc3RhdGljIHZvaWQgc3VyZmFjZXNfY2hlY2soZHJtX2ludGVsX2Jv ICoqYm8sIGludCBjb3VudCwgdWludDMyX3QgZXhwZWN0ZWQpCitzdGF0aWMgdm9pZCBzdXJmYWNl c19jaGVjayhzdHJ1Y3QgaW50ZWxfYnVmICoqYnVmLCBpbnQgY291bnQsIHVpbnQzMl90IGV4cGVj dGVkKQogewogCWZvciAoaW50IGNoaWxkID0gMDsgY2hpbGQgPCBjb3VudDsgY2hpbGQrKykgewog CQl1aW50MzJfdCAqcHRyOwogCi0JCWRvX29yX2RpZShkcm1faW50ZWxfYm9fbWFwKGJvW2NoaWxk XSwgMCkpOwotCQlwdHIgPSBib1tjaGlsZF0tPnZpcnR1YWw7CisJCXB0ciA9IGludGVsX2J1Zl9j cHVfbWFwKGJ1ZltjaGlsZF0sIDApOwogCQlmb3IgKGludCBqID0gMDsgaiA8IFNJWkUvNDsgaisr KQogCQkJaWd0X2Fzc2VydF9lcShwdHJbal0sIGV4cGVjdGVkIHwgY2hpbGQgPDwgMTYpOwotCQlk cm1faW50ZWxfYm9fdW5tYXAoYm9bY2hpbGRdKTsKKwkJaW50ZWxfYnVmX3VubWFwKGJ1ZltjaGls ZF0pOwogCX0KIH0KIApAQCAtMzAxLDcgKzI4MCw3IEBAIGlndF9tYWluCiAJfQogCiAJaWd0X3N1 YnRlc3QoImJsdC12cy1yZW5kZXItY3R4MCIpIHsKLQkJZHJtX2ludGVsX2JvICpiY3NbMV0sICpy Y3NbTl9DSElMRF07CisJCXN0cnVjdCBpbnRlbF9idWYgKmJjc1sxXSwgKnJjc1tOX0NISUxEXTsK IAogCQlmb3JrX2Jjc19jb3B5KDMwLCAweDQwMDAsIGJjcywgMSk7CiAJCWZvcmtfcmNzX2NvcHko MzAsIDB4ODAwMCAvIE5fQ0hJTEQsIHJjcywgTl9DSElMRCwgMCk7CkBAIC0zMTAsMTAgKzI4OSwx MyBAQCBpZ3RfbWFpbgogCiAJCXN1cmZhY2VzX2NoZWNrKGJjcywgMSwgMHg0MDAwKTsKIAkJc3Vy ZmFjZXNfY2hlY2socmNzLCBOX0NISUxELCAweDgwMDAgLyBOX0NISUxEKTsKKworCQljbGVhbnVw X2J1ZnMoYmNzLCAxKTsKKwkJY2xlYW51cF9idWZzKHJjcywgTl9DSElMRCk7CiAJfQogCiAJaWd0 X3N1YnRlc3QoImJsdC12cy1yZW5kZXItY3R4TiIpIHsKLQkJZHJtX2ludGVsX2JvICpiY3NbMV0s ICpyY3NbTl9DSElMRF07CisJCXN0cnVjdCBpbnRlbF9idWYgKmJjc1sxXSwgKnJjc1tOX0NISUxE XTsKIAogCQlmb3JrX3Jjc19jb3B5KDMwLCAweDgwMDAgLyBOX0NISUxELCByY3MsIE5fQ0hJTEQs IENSRUFURV9DT05URVhUKTsKIAkJZm9ya19iY3NfY29weSgzMCwgMHg0MDAwLCBiY3MsIDEpOwpA QCAtMzIyLDYgKzMwNCw5IEBAIGlndF9tYWluCiAKIAkJc3VyZmFjZXNfY2hlY2soYmNzLCAxLCAw eDQwMDApOwogCQlzdXJmYWNlc19jaGVjayhyY3MsIE5fQ0hJTEQsIDB4ODAwMCAvIE5fQ0hJTEQp OworCisJCWNsZWFudXBfYnVmcyhiY3MsIDEpOworCQljbGVhbnVwX2J1ZnMocmNzLCBOX0NISUxE KTsKIAl9CiAKIAlpZ3Rfc3VidGVzdCgiZmxpbmstYW5kLWNsb3NlLXZtYS1sZWFrIikKZGlmZiAt LWdpdCBhL3Rlc3RzL2ttc19kcmF3X2NyYy5jIGIvdGVzdHMva21zX2RyYXdfY3JjLmMKaW5kZXgg NzBiOWIwNWYuLmZmZDY1NWIwIDEwMDY0NAotLS0gYS90ZXN0cy9rbXNfZHJhd19jcmMuYworKysg Yi90ZXN0cy9rbXNfZHJhd19jcmMuYwpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgbW9kZXNldF9w YXJhbXMgewogaW50IGRybV9mZDsKIGRybU1vZGVSZXNQdHIgZHJtX3JlczsKIGRybU1vZGVDb25u ZWN0b3JQdHIgZHJtX2Nvbm5lY3RvcnNbTUFYX0NPTk5FQ1RPUlNdOwotZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyOworc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CiBpZ3RfcGlwZV9jcmNfdCAqcGlwZV9j cmM7CiAKICNkZWZpbmUgTl9GT1JNQVRTIDMKQEAgLTEyNiwyMyArMTI2LDIzIEBAIHN0YXRpYyB2 b2lkIGdldF9tZXRob2RfY3JjKGVudW0gaWd0X2RyYXdfbWV0aG9kIG1ldGhvZCwgdWludDMyX3Qg ZHJtX2Zvcm1hdCwKIAogCWlndF9jcmVhdGVfZmIoZHJtX2ZkLCBtcy5tb2RlLT5oZGlzcGxheSwg bXMubW9kZS0+dmRpc3BsYXksCiAJCSAgICAgIGRybV9mb3JtYXQsIHRpbGluZywgJmZiKTsKLQlp Z3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYnVmbWdyLCBOVUxMLCAmZmIsIG1ldGhvZCwKKwlpZ3Rf ZHJhd19yZWN0X2ZiKGRybV9mZCwgYm9wcywgMCwgJmZiLCBtZXRob2QsCiAJCQkgMCwgMCwgZmIu d2lkdGgsIGZiLmhlaWdodCwKIAkJCSBnZXRfY29sb3IoZHJtX2Zvcm1hdCwgMCwgMCwgMSkpOwog Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsCisJ aWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJvcHMsIDAsICZmYiwgbWV0aG9kLAogCQkJIGZiLndp ZHRoIC8gNCwgZmIuaGVpZ2h0IC8gNCwKIAkJCSBmYi53aWR0aCAvIDIsIGZiLmhlaWdodCAvIDIs CiAJCQkgZ2V0X2NvbG9yKGRybV9mb3JtYXQsIDAsIDEsIDApKTsKLQlpZ3RfZHJhd19yZWN0X2Zi KGRybV9mZCwgYnVmbWdyLCBOVUxMLCAmZmIsIG1ldGhvZCwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRy bV9mZCwgYm9wcywgMCwgJmZiLCBtZXRob2QsCiAJCQkgZmIud2lkdGggLyA4LCBmYi5oZWlnaHQg LyA4LAogCQkJIGZiLndpZHRoIC8gNCwgZmIuaGVpZ2h0IC8gNCwKIAkJCSBnZXRfY29sb3IoZHJt X2Zvcm1hdCwgMSwgMCwgMCkpOwotCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBidWZtZ3IsIE5V TEwsICZmYiwgbWV0aG9kLAorCWlndF9kcmF3X3JlY3RfZmIoZHJtX2ZkLCBib3BzLCAwLCAmZmIs IG1ldGhvZCwKIAkJCSBmYi53aWR0aCAvIDIsIGZiLmhlaWdodCAvIDIsCiAJCQkgZmIud2lkdGgg LyAzLCBmYi5oZWlnaHQgLyAzLAogCQkJIGdldF9jb2xvcihkcm1fZm9ybWF0LCAxLCAwLCAxKSk7 Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJ1Zm1nciwgTlVMTCwgJmZiLCBtZXRob2QsIDEs IDEsIDE1LCAxNSwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYm9wcywgMCwgJmZiLCBtZXRo b2QsIDEsIDEsIDE1LCAxNSwKIAkJCSBnZXRfY29sb3IoZHJtX2Zvcm1hdCwgMCwgMSwgMSkpOwog CiAJcmMgPSBkcm1Nb2RlU2V0Q3J0Yyhkcm1fZmQsIG1zLmNydGNfaWQsIGZiLmZiX2lkLCAwLCAw LApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyB2b2lkIGZpbGxfZmJfc3VidGVzdCh2b2lkKQog CWlndF9jcmVhdGVfZmIoZHJtX2ZkLCBtcy5tb2RlLT5oZGlzcGxheSwgbXMubW9kZS0+dmRpc3Bs YXksCiAJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUsICZmYik7CiAKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybV9mZCwgYnVmbWdyLCBOVUxMLCAmZmIs CisJaWd0X2RyYXdfcmVjdF9mYihkcm1fZmQsIGJvcHMsIDAsICZmYiwKIAkJCSBnZW1faGFzX21h cHBhYmxlX2dndHQoZHJtX2ZkKSA/IElHVF9EUkFXX01NQVBfR1RUIDoKIAkJCQkJCQkgSUdUX0RS QVdfTU1BUF9XQywKIAkJCSAwLCAwLCBmYi53aWR0aCwgZmIuaGVpZ2h0LCAweEZGKTsKQEAgLTI3 MCw5ICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9lbnZpcm9ubWVudCh2b2lkKQogCiAJa21z dGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCi0JYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1n cl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoYnVmbWdyKTsKLQlkcm1faW50 ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoYnVmbWdyKTsKKwlib3BzID0gYnVmX29wc19jcmVh dGUoZHJtX2ZkKTsKIAogCWZpbmRfbW9kZXNldF9wYXJhbXMoKTsKIAlwaXBlX2NyYyA9IGlndF9w aXBlX2NyY19uZXcoZHJtX2ZkLCBrbXN0ZXN0X2dldF9jcnRjX2lkeChkcm1fcmVzLCBtcy5jcnRj X2lkKSwKQEAgLTI4NSw3ICsyODMsNyBAQCBzdGF0aWMgdm9pZCB0ZWFyZG93bl9lbnZpcm9ubWVu dCh2b2lkKQogCiAJaWd0X3BpcGVfY3JjX2ZyZWUocGlwZV9jcmMpOwogCi0JZHJtX2ludGVsX2J1 Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJYnVmX29wc19kZXN0cm95KGJvcHMpOwogCiAJZm9yIChp ID0gMDsgaSA8IGRybV9yZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykKIAkJZHJtTW9kZUZyZWVD b25uZWN0b3IoZHJtX2Nvbm5lY3RvcnNbaV0pOwpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zyb250 YnVmZmVyX3RyYWNraW5nLmMgYi90ZXN0cy9rbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcuYwppbmRl eCA3ODBmZWNmZS4uMTRmNTIyZDggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90 cmFja2luZy5jCisrKyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCkBAIC0xNjYs NyArMTY2LDcgQEAgc3RydWN0IHsKIAlpbnQgZGVidWdmczsKIAlpZ3RfZGlzcGxheV90IGRpc3Bs YXk7CiAKLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7 CiB9IGRybTsKIAogc3RydWN0IHsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGRy YXdfcmVjdChzdHJ1Y3QgZHJhd19wYXR0ZXJuX2luZm8gKnBhdHRlcm4sIHN0cnVjdCBmYl9yZWdp b24gKmZiLAogewogCXN0cnVjdCByZWN0IHJlY3QgPSBwYXR0ZXJuLT5nZXRfcmVjdChmYiwgcik7 CiAKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJtLmJ1Zm1nciwgTlVMTCwgZmItPmZiLCBt ZXRob2QsCisJaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQsIGRybS5ib3BzLCAwLCBmYi0+ZmIsIG1l dGhvZCwKIAkJCSBmYi0+eCArIHJlY3QueCwgZmItPnkgKyByZWN0LnksCiAJCQkgcmVjdC53LCBy ZWN0LmgsIHJlY3QuY29sb3IpOwogCkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0aWMgdm9pZCBm aWxsX2ZiX3JlZ2lvbihzdHJ1Y3QgZmJfcmVnaW9uICpyZWdpb24sIGVudW0gY29sb3IgZWNvbG9y KQogewogCXVpbnQzMl90IGNvbG9yID0gcGlja19jb2xvcihyZWdpb24tPmZiLCBlY29sb3IpOwog Ci0JaWd0X2RyYXdfcmVjdF9mYihkcm0uZmQsIGRybS5idWZtZ3IsIE5VTEwsIHJlZ2lvbi0+ZmIs IElHVF9EUkFXX0JMVCwKKwlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJtLmJvcHMsIDAsIHJl Z2lvbi0+ZmIsIElHVF9EUkFXX0JMVCwKIAkJCSByZWdpb24tPngsIHJlZ2lvbi0+eSwgcmVnaW9u LT53LCByZWdpb24tPmgsCiAJCQkgY29sb3IpOwogfQpAQCAtMTE0MSw3ICsxMTQxLDcgQEAgc3Rh dGljIGJvb2wgZGlzYWJsZV9mZWF0dXJlcyhjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogc3Rh dGljIHZvaWQgKmJ1c3lfdGhyZWFkX2Z1bmModm9pZCAqZGF0YSkKIHsKIAl3aGlsZSAoIWJ1c3lf dGhyZWFkLnN0b3ApCi0JCWlndF9kcmF3X3JlY3QoZHJtLmZkLCBkcm0uYnVmbWdyLCBOVUxMLCBi dXN5X3RocmVhZC5oYW5kbGUsCisJCWlndF9kcmF3X3JlY3QoZHJtLmZkLCBkcm0uYm9wcywgMCwg YnVzeV90aHJlYWQuaGFuZGxlLAogCQkJICAgICAgYnVzeV90aHJlYWQuc2l6ZSwgYnVzeV90aHJl YWQuc3RyaWRlLAogCQkJICAgICAgYnVzeV90aHJlYWQudGlsaW5nLCBJR1RfRFJBV19CTFQsIDAs IDAsCiAJCQkgICAgICBidXN5X3RocmVhZC53aWR0aCwgYnVzeV90aHJlYWQuaGVpZ2h0LApAQCAt MTI4OCwxNCArMTI4OCwxMiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9kcm0odm9pZCkKIAlrbXN0ZXN0 X3NldF92dF9ncmFwaGljc19tb2RlKCk7CiAJaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZHJtLmRpc3Bs YXksIGRybS5mZCk7CiAKLQlkcm0uYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChk cm0uZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoZHJtLmJ1Zm1ncik7Ci0JZHJtX2ludGVsX2J1Zm1n cl9nZW1fZW5hYmxlX3JldXNlKGRybS5idWZtZ3IpOworCWRybS5ib3BzID0gYnVmX29wc19jcmVh dGUoZHJtLmZkKTsKIH0KIAogc3RhdGljIHZvaWQgdGVhcmRvd25fZHJtKHZvaWQpCiB7Ci0JZHJt X2ludGVsX2J1Zm1ncl9kZXN0cm95KGRybS5idWZtZ3IpOworCWJ1Zl9vcHNfZGVzdHJveShkcm0u Ym9wcyk7CiAJaWd0X2Rpc3BsYXlfZmluaSgmZHJtLmRpc3BsYXkpOwogCWNsb3NlKGRybS5mZCk7 CiB9CkBAIC0yNjIyLDE0ICsyNjIwLDE0IEBAIHN0YXRpYyB2b2lkIHNjYWxlZHByaW1hcnlfc3Vi dGVzdChjb25zdCBzdHJ1Y3QgdGVzdF9tb2RlICp0KQogCQkgIHQtPnRpbGluZywgdC0+cGxhbmUs ICZuZXdfZmIpOwogCWZpbGxfZmIoJm5ld19mYiwgQ09MT1JfQkxVRSk7CiAKLQlpZ3RfZHJhd19y ZWN0X2ZiKGRybS5mZCwgZHJtLmJ1Zm1nciwgTlVMTCwgJm5ld19mYiwgdC0+bWV0aG9kLAorCWln dF9kcmF3X3JlY3RfZmIoZHJtLmZkLCBkcm0uYm9wcywgMCwgJm5ld19mYiwgdC0+bWV0aG9kLAog CQkJIHJlZy0+eCwgcmVnLT55LCByZWctPncgLyAyLCByZWctPmggLyAyLAogCQkJIHBpY2tfY29s b3IoJm5ld19mYiwgQ09MT1JfR1JFRU4pKTsKLQlpZ3RfZHJhd19yZWN0X2ZiKGRybS5mZCwgZHJt LmJ1Zm1nciwgTlVMTCwgJm5ld19mYiwgdC0+bWV0aG9kLAorCWlndF9kcmF3X3JlY3RfZmIoZHJt LmZkLCBkcm0uYm9wcywgMCwgJm5ld19mYiwgdC0+bWV0aG9kLAogCQkJIHJlZy0+eCArIHJlZy0+ dyAvIDIsIHJlZy0+eSArIHJlZy0+aCAvIDIsCiAJCQkgcmVnLT53IC8gMiwgcmVnLT5oIC8gMiwK IAkJCSBwaWNrX2NvbG9yKCZuZXdfZmIsIENPTE9SX1JFRCkpOwotCWlndF9kcmF3X3JlY3RfZmIo ZHJtLmZkLCBkcm0uYnVmbWdyLCBOVUxMLCAmbmV3X2ZiLCB0LT5tZXRob2QsCisJaWd0X2RyYXdf cmVjdF9mYihkcm0uZmQsIGRybS5ib3BzLCAwLCAmbmV3X2ZiLCB0LT5tZXRob2QsCiAJCQkgcmVn LT54ICsgcmVnLT53IC8gMiwgcmVnLT55ICsgcmVnLT5oIC8gMiwKIAkJCSByZWctPncgLyA0LCBy ZWctPmggLyA0LAogCQkJIHBpY2tfY29sb3IoJm5ld19mYiwgQ09MT1JfTUFHRU5UQSkpOwpkaWZm IC0tZ2l0IGEvdGVzdHMva21zX3Bzci5jIGIvdGVzdHMva21zX3Bzci5jCmluZGV4IDQ5ZWE0NDZh Li43MzQzZTI3MCAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3Bzci5jCisrKyBiL3Rlc3RzL2ttc19w c3IuYwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxz dGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgImludGVsX2J1Zm1nci5oIgog CiBlbnVtIG9wZXJhdGlvbnMgewogCVBBR0VfRkxJUCwKQEAgLTY1LDcgKzY0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgewogCXVpbnQzMl90IGRldmlkOwogCXVpbnQzMl90IGNydGNfaWQ7CiAJaWd0X2Rp c3BsYXlfdCBkaXNwbGF5OwotCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKKwlzdHJ1Y3QgYnVm X29wcyAqYm9wczsKIAlzdHJ1Y3QgaWd0X2ZiIGZiX2dyZWVuLCBmYl93aGl0ZTsKIAlpZ3RfcGxh bmVfdCAqdGVzdF9wbGFuZTsKIAlpbnQgbW9kX3NpemU7CkBAIC0xMjMsNzMgKzEyMiw5NiBAQCBz dGF0aWMgdm9pZCBkaXNwbGF5X2ZpbmkoZGF0YV90ICpkYXRhKQogCWlndF9kaXNwbGF5X2Zpbmko JmRhdGEtPmRpc3BsYXkpOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX2JsdChkYXRhX3QgKmRhdGEs IHVpbnQzMl90IGhhbmRsZSwgdW5zaWduZWQgY2hhciBjb2xvcikKK3N0YXRpYyB2b2lkIGNvbG9y X2JsaXRfc3RhcnQoc3RydWN0IGludGVsX2JiICppYmIpCiB7Ci0JZHJtX2ludGVsX2JvICpkc3Qg PSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5idWZtZ3IsCi0JCQkJCQkgICAgZGF0YS0+ ZHJtX2ZkLAotCQkJCQkJICAgICIiLCBoYW5kbGUpOwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2g7Ci0KLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1n ciwgZGF0YS0+ZGV2aWQpOwotCWlndF9hc3NlcnQoYmF0Y2gpOwotCi0JQ09MT1JfQkxJVF9DT1BZ X0JBVENIX1NUQVJUKDApOwotCU9VVF9CQVRDSCgoMSA8PCAyNCkgfCAoMHhmMCA8PCAxNikgfCAw KTsKLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDB4ZmZmIDw8IDE2IHwgMHhmZmYpOwotCU9V VF9SRUxPQyhkc3QsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIEk5MTVfR0VNX0RPTUFJTl9SRU5E RVIsIDApOwotCU9VVF9CQVRDSChjb2xvcik7Ci0JQURWQU5DRV9CQVRDSCgpOwotCi0JaW50ZWxf YmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gpOwotCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gp OwotCi0JZ2VtX2JvX2J1c3koZGF0YS0+ZHJtX2ZkLCBoYW5kbGUpOworCWludGVsX2JiX291dChp YmIsIFhZX0NPTE9SX0JMVF9DTURfTk9MRU4gfAorCQkgICAgIENPTE9SX0JMVF9XUklURV9BTFBI QSB8CisJCSAgICAgWFlfQ09MT1JfQkxUX1dSSVRFX1JHQiB8CisJCSAgICAgKDQgKyAoaWJiLT5n ZW4gPj0gOCkpKTsKIH0KIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLCBkcm1faW50ZWxfYm8gKmJvLAotCQkJICAgICBpbnQgc2l6ZSwgaW50IHN0cmlk ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICpjcmVhdGVfYnVmX2Zyb21fZmIoZGF0YV90ICpk YXRhLAorCQkJCQkgICAgY29uc3Qgc3RydWN0IGlndF9mYiAqZmIpCiB7Ci0JbWVtc2V0KGJ1Ziwg MCwgc2l6ZW9mKCpidWYpKTsKKwl1aW50MzJfdCBuYW1lLCBoYW5kbGUsIHRpbGluZywgc3RyaWRl LCB3aWR0aCwgaGVpZ2h0LCBicHAsIHNpemU7CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOworCisJ aWd0X2Fzc2VydF9lcShmYi0+b2Zmc2V0c1swXSwgMCk7CisKKwl0aWxpbmcgPSBpZ3RfZmJfbW9k X3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpOworCXN0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOworCWJw cCA9IGZiLT5wbGFuZV9icHBbMF07CisJc2l6ZSA9IGZiLT5zaXplOworCXdpZHRoID0gc3RyaWRl IC8gKGJwcCAvIDgpOworCWhlaWdodCA9IHNpemUgLyBzdHJpZGU7CisKKwlidWYgPSBjYWxsb2Mo MSwgc2l6ZW9mKCpidWYpKTsKKwlpZ3RfYXNzZXJ0KGJ1Zik7CisKKwluYW1lID0gZ2VtX2ZsaW5r KGRhdGEtPmRybV9mZCwgZmItPmdlbV9oYW5kbGUpOworCWhhbmRsZSA9IGdlbV9vcGVuKGRhdGEt PmRybV9mZCwgbmFtZSk7CisJaW50ZWxfYnVmX2luaXRfdXNpbmdfaGFuZGxlKGRhdGEtPmJvcHMs IGhhbmRsZSwgYnVmLAorCQkJCSAgICB3aWR0aCwgaGVpZ2h0LCBicHAsIDAsIHRpbGluZywgMCk7 CisJcmV0dXJuIGJ1ZjsKK30KIAotCWJ1Zi0+Ym8gPSBibzsKLQlidWYtPnN1cmZhY2VbMF0uc3Ry aWRlID0gc3RyaWRlOwotCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKLQlidWYtPnN1cmZh Y2VbMF0uc2l6ZSA9IHNpemU7Ci0JYnVmLT5icHAgPSAzMjsKK3N0YXRpYyB2b2lkIGZpbGxfYmx0 KGRhdGFfdCAqZGF0YSwgY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIHVuc2lnbmVkIGNoYXIgY29s b3IpCit7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqZHN0Owor CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRhdGEtPmRybV9mZCwgNDA5Nik7CisJZHN0ID0gY3Jl YXRlX2J1Zl9mcm9tX2ZiKGRhdGEsIGZiKTsKKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwg ZHN0LCB0cnVlKTsKKworCWNvbG9yX2JsaXRfc3RhcnQoaWJiKTsKKwlpbnRlbF9iYl9vdXQoaWJi LCAoMSA8PCAyNCkgfCAoMHhmMCA8PCAxNikgfCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsK KwlpbnRlbF9iYl9vdXQoaWJiLCAweGZmZiA8PCAxNiB8IDB4ZmZmKTsKKwlpbnRlbF9iYl9lbWl0 X3JlbG9jKGliYiwgZHN0LT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkgICAg STkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwgZHN0LT5hZGRyLm9mZnNldCk7CisJaW50ZWxfYmJf b3V0KGliYiwgY29sb3IpOworCisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOworCWludGVsX2Ji X3N5bmMoaWJiKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJaW50ZWxfYnVmX2Rlc3Ryb3ko ZHN0KTsKKworCWdlbV9ib19idXN5KGRhdGEtPmRybV9mZCwgZmItPmdlbV9oYW5kbGUpOwogfQog Ci1zdGF0aWMgdm9pZCBmaWxsX3JlbmRlcihkYXRhX3QgKmRhdGEsIHVpbnQzMl90IGhhbmRsZSwg dW5zaWduZWQgY2hhciBjb2xvcikKK3N0YXRpYyB2b2lkIGZpbGxfcmVuZGVyKGRhdGFfdCAqZGF0 YSwgY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsCisJCQl1bnNpZ25lZCBjaGFyIGNvbG9yKQogewot CWRybV9pbnRlbF9ibyAqc3JjLCAqZHN0OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0 Y2g7Ci0Jc3RydWN0IGlndF9idWYgc3JjX2J1ZiwgZHN0X2J1ZjsKKwlzdHJ1Y3QgaW50ZWxfYnVm ICpzcmMsICpkc3Q7CisJc3RydWN0IGludGVsX2JiICppYmI7CiAJY29uc3QgdWludDhfdCBidWZb NF0gPSB7IGNvbG9yLCBjb2xvciwgY29sb3IsIGNvbG9yIH07CiAJaWd0X3JlbmRlcl9jb3B5ZnVu Y190IHJlbmRlcmNvcHkgPSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLT5kZXZpZCk7CisJ aW50IGhlaWdodCwgd2lkdGgsIHRpbGluZzsKIAogCWlndF9za2lwX29uKCFyZW5kZXJjb3B5KTsK IAotCWRzdCA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZHJt X2ZkLCAiIiwgaGFuZGxlKTsKLQlpZ3RfYXNzZXJ0KGRzdCk7CisJaWJiID0gaW50ZWxfYmJfY3Jl YXRlKGRhdGEtPmRybV9mZCwgNDA5Nik7CisJZHN0ID0gY3JlYXRlX2J1Zl9mcm9tX2ZiKGRhdGEs IGZiKTsKIAotCXNyYyA9IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIiLCBkYXRh LT5tb2Rfc2l6ZSwgNDA5Nik7Ci0JaWd0X2Fzc2VydChzcmMpOworCXdpZHRoID0gZmItPnN0cmlk ZXNbMF0gLyAoZmItPnBsYW5lX2JwcFswXSAvIDgpOworCWhlaWdodCA9IGZiLT5zaXplIC8gZmIt PnN0cmlkZXNbMF07CisJdGlsaW5nID0gaWd0X2ZiX21vZF90b190aWxpbmcoZmItPm1vZGlmaWVy KTsKIAorCXNyYyA9IGludGVsX2J1Zl9jcmVhdGUoZGF0YS0+Ym9wcywgd2lkdGgsIGhlaWdodCwg ZmItPnBsYW5lX2JwcFswXSwKKwkJCSAgICAgICAwLCB0aWxpbmcsIDApOwogCWdlbV93cml0ZShk YXRhLT5kcm1fZmQsIHNyYy0+aGFuZGxlLCAwLCBidWYsIDQpOwogCi0Jc2NyYXRjaF9idWZfaW5p dCgmc3JjX2J1Ziwgc3JjLCBkYXRhLT5tb2Rfc2l6ZSwgZGF0YS0+bW9kX3N0cmlkZSk7Ci0Jc2Ny YXRjaF9idWZfaW5pdCgmZHN0X2J1ZiwgZHN0LCBkYXRhLT5tb2Rfc2l6ZSwgZGF0YS0+bW9kX3N0 cmlkZSk7Ci0KLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGRhdGEtPmJ1Zm1nciwg ZGF0YS0+ZGV2aWQpOwotCWlndF9hc3NlcnQoYmF0Y2gpOwotCi0JcmVuZGVyY29weShiYXRjaCwg TlVMTCwKLQkJICAgJnNyY19idWYsIDAsIDAsIDB4ZmYsIDB4ZmYsCi0JCSAgICZkc3RfYnVmLCAw LCAwKTsKKwlyZW5kZXJjb3B5KGliYiwgMCwKKwkJICAgc3JjLCAwLCAwLCAweGZmLCAweGZmLAor CQkgICBkc3QsIDAsIDApOwogCi0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7CisJaW50 ZWxfYmJfc3luYyhpYmIpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlpbnRlbF9idWZfZGVz dHJveShzcmMpOworCWludGVsX2J1Zl9kZXN0cm95KGRzdCk7CiAKLQlnZW1fYm9fYnVzeShkYXRh LT5kcm1fZmQsIGhhbmRsZSk7CisJZ2VtX2JvX2J1c3koZGF0YS0+ZHJtX2ZkLCBmYi0+Z2VtX2hh bmRsZSk7CiB9CiAKIHN0YXRpYyBib29sIHNpbmtfc3VwcG9ydChkYXRhX3QgKmRhdGEsIGVudW0g cHNyX21vZGUgbW9kZSkKQEAgLTI5MCwxMSArMzEyLDExIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0 KGRhdGFfdCAqZGF0YSkKIAkJZXhwZWN0ZWQgPSAiQkxBQ0sgb3IgVFJBTlNQQVJFTlQgbWFyayBv biB0b3Agb2YgcGxhbmUgaW4gdGVzdCI7CiAJCWJyZWFrOwogCWNhc2UgQkxUOgotCQlmaWxsX2Js dChkYXRhLCBoYW5kbGUsIDApOworCQlmaWxsX2JsdChkYXRhLCAmZGF0YS0+ZmJfd2hpdGUsIDAp OwogCQlleHBlY3RlZCA9ICJCTEFDSyBvciBUUkFOU1BBUkVOVCBtYXJrIG9uIHRvcCBvZiBwbGFu ZSBpbiB0ZXN0IjsKIAkJYnJlYWs7CiAJY2FzZSBSRU5ERVI6Ci0JCWZpbGxfcmVuZGVyKGRhdGEs IGhhbmRsZSwgMCk7CisJCWZpbGxfcmVuZGVyKGRhdGEsICZkYXRhLT5mYl93aGl0ZSwgMCk7CiAJ CWV4cGVjdGVkID0gIkJMQUNLIG9yIFRSQU5TUEFSRU5UIG1hcmsgb24gdG9wIG9mIHBsYW5lIGlu IHRlc3QiOwogCQlicmVhazsKIAljYXNlIFBMQU5FX01PVkU6CkBAIC0zMTQsNyArMzM2LDggQEAg c3RhdGljIHZvaWQgcnVuX3Rlc3QoZGF0YV90ICpkYXRhKQogCW1hbnVhbChleHBlY3RlZCk7CiB9 CiAKLXN0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChkYXRhX3QgKmRhdGEpIHsKK3N0YXRpYyB2b2lk IHRlc3RfY2xlYW51cChkYXRhX3QgKmRhdGEpCit7CiAJaWd0X3BsYW5lX3QgKnByaW1hcnk7CiAK IAlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRhLT5vdXRwdXQsCkBAIC00 NDQsMTEgKzQ2Nyw3IEBAIGlndF9tYWluX2FyZ3MoIiIsIGxvbmdfb3B0aW9ucywgaGVscF9zdHIs IG9wdF9oYW5kbGVyLCAmZGF0YSkKIAkJCSAgICAgICJTaW5rIGRvZXMgbm90IHN1cHBvcnQgUFNS XG4iKTsKIAogCQlkYXRhLnN1cHBvcnRzX3BzcjIgPSBzaW5rX3N1cHBvcnQoJmRhdGEsIFBTUl9N T0RFXzIpOwotCi0JCWRhdGEuYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkYXRh LmRybV9mZCwgNDA5Nik7Ci0JCWlndF9hc3NlcnQoZGF0YS5idWZtZ3IpOwotCQlkcm1faW50ZWxf YnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZGF0YS5idWZtZ3IpOwotCisJCWRhdGEuYm9wcyA9IGJ1 Zl9vcHNfY3JlYXRlKGRhdGEuZHJtX2ZkKTsKIAkJZGlzcGxheV9pbml0KCZkYXRhKTsKIAl9CiAK QEAgLTUyOCw3ICs1NDcsNyBAQCBpZ3RfbWFpbl9hcmdzKCIiLCBsb25nX29wdGlvbnMsIGhlbHBf c3RyLCBvcHRfaGFuZGxlciwgJmRhdGEpCiAJCQlwc3JfZGlzYWJsZShkYXRhLmRybV9mZCwgZGF0 YS5kZWJ1Z2ZzX2ZkKTsKIAogCQljbG9zZShkYXRhLmRlYnVnZnNfZmQpOwotCQlkcm1faW50ZWxf YnVmbWdyX2Rlc3Ryb3koZGF0YS5idWZtZ3IpOworCQlidWZfb3BzX2Rlc3Ryb3koZGF0YS5ib3Bz KTsKIAkJZGlzcGxheV9maW5pKCZkYXRhKTsKIAl9CiB9Ci0tIAoyLjI2LjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=