From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A736C282CB for ; Tue, 5 Feb 2019 18:26:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 00598217F9 for ; Tue, 5 Feb 2019 18:26:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725921AbfBES0y (ORCPT ); Tue, 5 Feb 2019 13:26:54 -0500 Received: from imap1.codethink.co.uk ([176.9.8.82]:45086 "EHLO imap1.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727397AbfBES0y (ORCPT ); Tue, 5 Feb 2019 13:26:54 -0500 Received: from [167.98.27.226] (helo=xylophone) by imap1.codethink.co.uk with esmtpsa (Exim 4.84_2 #1 (Debian)) id 1gr5QO-0001t5-Fc; Tue, 05 Feb 2019 18:26:24 +0000 Message-ID: <1549391183.2925.179.camel@codethink.co.uk> Subject: [4.4] FragmentSmack security fixes From: Ben Hutchings To: Greg Kroah-Hartman , Sasha Levin Cc: stable , Eric Dumazet , Peter Oskolkov Date: Tue, 05 Feb 2019 18:26:23 +0000 Organization: Codethink Ltd. Content-Type: multipart/mixed; boundary="=-PJSiTvJ5lLUTEDyOnXKh" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org --=-PJSiTvJ5lLUTEDyOnXKh Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit This is a backport of upstream changes to fix the FragmentSmack (CVE- 2018-5391) vulnerability. Peter Oskolkov checked an earlier version of this backport, but I have since rebased and added another 3 commits to it. I tested with the ip_defrag.sh self-test that he added upstream, and it passed. I have included the fix that is currently queued for the 4.9, 4.14 and 4.19 branches. Ben. -- Ben Hutchings, Software Developer   Codethink Ltd https://www.codethink.co.uk/ Dale House, 35 Dale Street Manchester, M1 2HF, United Kingdom --=-PJSiTvJ5lLUTEDyOnXKh Content-Type: application/mbox; name="security-4.4-fragmentsmack.mbox" Content-Disposition: attachment; filename="security-4.4-fragmentsmack.mbox" Content-Transfer-Encoding: base64 RnJvbSBkNTcxODY4ODMwZTllZDgyYTA2OWIwZmVjNmEwZTExYjI1OTNiMTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRh dGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6Mjk6NDkgLTA3MDAKU3ViamVjdDogWzAxLzMzXSBpbmV0 OiBmcmFnczogY2hhbmdlIGluZXRfZnJhZ3NfaW5pdF9uZXQoKSByZXR1cm4gdmFsdWUKCmNvbW1p dCA3ODdiZWE3NzQ4YTc2MTMwNTY2Zjg4MWMyMzQyYTBiZTQxMjdkMTgyIHVwc3RyZWFtLgoKV2Ug d2lsbCBzb29uIGluaXRpYWxpemUgb25lIHJoYXNodGFibGUgcGVyIHN0cnVjdCBuZXRuc19mcmFn cwppbiBpbmV0X2ZyYWdzX2luaXRfbmV0KCkuCgpUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHJldHVy biB2YWx1ZSB0byBldmVudHVhbGx5IHByb3BhZ2F0ZSBhbgplcnJvci4KClNpZ25lZC1vZmYtYnk6 IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4g SHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBpbmNsdWRlL25l dC9pbmV0X2ZyYWcuaCAgICAgICAgICAgICAgICAgfCAgMyArKy0KIG5ldC9pZWVlODAyMTU0LzZs b3dwYW4vcmVhc3NlbWJseS5jICAgICB8IDExICsrKysrKysrLS0tCiBuZXQvaXB2NC9pcF9mcmFn bWVudC5jICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKystLS0KIG5ldC9pcHY2L25ldGZp bHRlci9uZl9jb25udHJhY2tfcmVhc20uYyB8IDEyICsrKysrKysrKy0tLQogbmV0L2lwdjYvcmVh c3NlbWJseS5jICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrLS0KIDUgZmlsZXMgY2hh bmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9uZXQvaW5ldF9mcmFnLmggYi9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaAppbmRleCBjMjZh NmU0ZGMzMDYuLjc4ODFjODBmZWVmZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaW5ldF9mcmFn LmgKKysrIGIvaW5jbHVkZS9uZXQvaW5ldF9mcmFnLmgKQEAgLTEwMyw5ICsxMDMsMTAgQEAgc3Ry dWN0IGluZXRfZnJhZ3MgewogaW50IGluZXRfZnJhZ3NfaW5pdChzdHJ1Y3QgaW5ldF9mcmFncyAq KTsKIHZvaWQgaW5ldF9mcmFnc19maW5pKHN0cnVjdCBpbmV0X2ZyYWdzICopOwogCi1zdGF0aWMg aW5saW5lIHZvaWQgaW5ldF9mcmFnc19pbml0X25ldChzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mKQor c3RhdGljIGlubGluZSBpbnQgaW5ldF9mcmFnc19pbml0X25ldChzdHJ1Y3QgbmV0bnNfZnJhZ3Mg Km5mKQogewogCWF0b21pY19zZXQoJm5mLT5tZW0sIDApOworCXJldHVybiAwOwogfQogdm9pZCBp bmV0X2ZyYWdzX2V4aXRfbmV0KHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIHN0cnVjdCBpbmV0X2Zy YWdzICpmKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5 LmMgYi9uZXQvaWVlZTgwMjE1NC82bG93cGFuL3JlYXNzZW1ibHkuYwppbmRleCAxMmU4Y2Y0YmRh OWYuLmUxNDk2MmMxZmNhMiAxMDA2NDQKLS0tIGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFz c2VtYmx5LmMKKysrIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKQEAgLTU4 MCwxNCArNTgwLDE5IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBsb3dwYW5fZnJhZ3NfaW5pdF9u ZXQoc3RydWN0IG5ldCAqbmV0KQogewogCXN0cnVjdCBuZXRuc19pZWVlODAyMTU0X2xvd3BhbiAq aWVlZTgwMjE1NF9sb3dwYW4gPQogCQluZXRfaWVlZTgwMjE1NF9sb3dwYW4obmV0KTsKKwlpbnQg cmVzOwogCiAJaWVlZTgwMjE1NF9sb3dwYW4tPmZyYWdzLmhpZ2hfdGhyZXNoID0gSVBWNl9GUkFH X0hJR0hfVEhSRVNIOwogCWllZWU4MDIxNTRfbG93cGFuLT5mcmFncy5sb3dfdGhyZXNoID0gSVBW Nl9GUkFHX0xPV19USFJFU0g7CiAJaWVlZTgwMjE1NF9sb3dwYW4tPmZyYWdzLnRpbWVvdXQgPSBJ UFY2X0ZSQUdfVElNRU9VVDsKIAotCWluZXRfZnJhZ3NfaW5pdF9uZXQoJmllZWU4MDIxNTRfbG93 cGFuLT5mcmFncyk7Ci0KLQlyZXR1cm4gbG93cGFuX2ZyYWdzX25zX3N5c2N0bF9yZWdpc3Rlcihu ZXQpOworCXJlcyA9IGluZXRfZnJhZ3NfaW5pdF9uZXQoJmllZWU4MDIxNTRfbG93cGFuLT5mcmFn cyk7CisJaWYgKHJlcyA8IDApCisJCXJldHVybiByZXM7CisJcmVzID0gbG93cGFuX2ZyYWdzX25z X3N5c2N0bF9yZWdpc3RlcihuZXQpOworCWlmIChyZXMgPCAwKQorCQlpbmV0X2ZyYWdzX2V4aXRf bmV0KCZpZWVlODAyMTU0X2xvd3Bhbi0+ZnJhZ3MsICZsb3dwYW5fZnJhZ3MpOworCXJldHVybiBy ZXM7CiB9CiAKIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgbG93cGFuX2ZyYWdzX2V4aXRfbmV0KHN0 cnVjdCBuZXQgKm5ldCkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMgYi9uZXQv aXB2NC9pcF9mcmFnbWVudC5jCmluZGV4IDcyOTE1NjU4YTZiMS4uMTRjNDBmNzk5YmQ0IDEwMDY0 NAotLS0gYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50 LmMKQEAgLTg1Myw2ICs4NTMsOCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaXA0X2ZyYWdzX2N0bF9y ZWdpc3Rlcih2b2lkKQogCiBzdGF0aWMgaW50IF9fbmV0X2luaXQgaXB2NF9mcmFnc19pbml0X25l dChzdHJ1Y3QgbmV0ICpuZXQpCiB7CisJaW50IHJlczsKKwogCS8qIEZyYWdtZW50IGNhY2hlIGxp bWl0cy4KIAkgKgogCSAqIFRoZSBmcmFnbWVudCBtZW1vcnkgYWNjb3VudGluZyBjb2RlLCAodHJp ZXMgdG8pIGFjY291bnQgZm9yCkBAIC04NzYsOSArODc4LDEzIEBAIHN0YXRpYyBpbnQgX19uZXRf aW5pdCBpcHY0X2ZyYWdzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAkgKi8KIAluZXQtPmlw djQuZnJhZ3MudGltZW91dCA9IElQX0ZSQUdfVElNRTsKIAotCWluZXRfZnJhZ3NfaW5pdF9uZXQo Jm5ldC0+aXB2NC5mcmFncyk7Ci0KLQlyZXR1cm4gaXA0X2ZyYWdzX25zX2N0bF9yZWdpc3Rlcihu ZXQpOworCXJlcyA9IGluZXRfZnJhZ3NfaW5pdF9uZXQoJm5ldC0+aXB2NC5mcmFncyk7CisJaWYg KHJlcyA8IDApCisJCXJldHVybiByZXM7CisJcmVzID0gaXA0X2ZyYWdzX25zX2N0bF9yZWdpc3Rl cihuZXQpOworCWlmIChyZXMgPCAwKQorCQlpbmV0X2ZyYWdzX2V4aXRfbmV0KCZuZXQtPmlwdjQu ZnJhZ3MsICZpcDRfZnJhZ3MpOworCXJldHVybiByZXM7CiB9CiAKIHN0YXRpYyB2b2lkIF9fbmV0 X2V4aXQgaXB2NF9mcmFnc19leGl0X25ldChzdHJ1Y3QgbmV0ICpuZXQpCmRpZmYgLS1naXQgYS9u ZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMgYi9uZXQvaXB2Ni9uZXRmaWx0 ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKaW5kZXggNWE5YWU1NmU3ODY4Li42ODU5ZDFlMDg0ZmUg MTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYworKysg Yi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKQEAgLTY1MCwxMiArNjUw LDE4IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2ZyYWc2X2NvbnN1bWVfb3JpZyk7CiAKIHN0 YXRpYyBpbnQgbmZfY3RfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KQogeworCWludCByZXM7CisK IAluZXQtPm5mX2ZyYWcuZnJhZ3MuaGlnaF90aHJlc2ggPSBJUFY2X0ZSQUdfSElHSF9USFJFU0g7 CiAJbmV0LT5uZl9mcmFnLmZyYWdzLmxvd190aHJlc2ggPSBJUFY2X0ZSQUdfTE9XX1RIUkVTSDsK IAluZXQtPm5mX2ZyYWcuZnJhZ3MudGltZW91dCA9IElQVjZfRlJBR19USU1FT1VUOwotCWluZXRf ZnJhZ3NfaW5pdF9uZXQoJm5ldC0+bmZfZnJhZy5mcmFncyk7Ci0KLQlyZXR1cm4gbmZfY3RfZnJh ZzZfc3lzY3RsX3JlZ2lzdGVyKG5ldCk7CisJcmVzID0gaW5ldF9mcmFnc19pbml0X25ldCgmbmV0 LT5uZl9mcmFnLmZyYWdzKTsKKwlpZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJlczsKKwlyZXMgPSBu Zl9jdF9mcmFnNl9zeXNjdGxfcmVnaXN0ZXIobmV0KTsKKwlpZiAocmVzIDwgMCkKKwkJaW5ldF9m cmFnc19leGl0X25ldCgmbmV0LT5uZl9mcmFnLmZyYWdzLCAmbmZfZnJhZ3MpOworCXJldHVybiBy ZXM7CiB9CiAKIHN0YXRpYyB2b2lkIG5mX2N0X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKZGlm ZiAtLWdpdCBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwpp bmRleCA1OGYyMTM5ZWJiNWUuLmMzOGExYWJiNWM2MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmVh c3NlbWJseS5jCisrKyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwpAQCAtNzA4LDEzICs3MDgsMjAg QEAgc3RhdGljIHZvaWQgaXA2X2ZyYWdzX3N5c2N0bF91bnJlZ2lzdGVyKHZvaWQpCiAKIHN0YXRp YyBpbnQgX19uZXRfaW5pdCBpcHY2X2ZyYWdzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIHsK KwlpbnQgcmVzOworCiAJbmV0LT5pcHY2LmZyYWdzLmhpZ2hfdGhyZXNoID0gSVBWNl9GUkFHX0hJ R0hfVEhSRVNIOwogCW5ldC0+aXB2Ni5mcmFncy5sb3dfdGhyZXNoID0gSVBWNl9GUkFHX0xPV19U SFJFU0g7CiAJbmV0LT5pcHY2LmZyYWdzLnRpbWVvdXQgPSBJUFY2X0ZSQUdfVElNRU9VVDsKIAot CWluZXRfZnJhZ3NfaW5pdF9uZXQoJm5ldC0+aXB2Ni5mcmFncyk7CisJcmVzID0gaW5ldF9mcmFn c19pbml0X25ldCgmbmV0LT5pcHY2LmZyYWdzKTsKKwlpZiAocmVzIDwgMCkKKwkJcmV0dXJuIHJl czsKIAotCXJldHVybiBpcDZfZnJhZ3NfbnNfc3lzY3RsX3JlZ2lzdGVyKG5ldCk7CisJcmVzID0g aXA2X2ZyYWdzX25zX3N5c2N0bF9yZWdpc3RlcihuZXQpOworCWlmIChyZXMgPCAwKQorCQlpbmV0 X2ZyYWdzX2V4aXRfbmV0KCZuZXQtPmlwdjYuZnJhZ3MsICZpcDZfZnJhZ3MpOworCXJldHVybiBy ZXM7CiB9CiAKIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXB2Nl9mcmFnc19leGl0X25ldChzdHJ1 Y3QgbmV0ICpuZXQpCgpGcm9tIDdkNWIxZDYwOTQ0MjRmMGEwZmZjN2QzNDEyZjQ0MGU2ZGNhYThm ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRA Z29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjoyOTo1MCAtMDcwMApTdWJqZWN0 OiBbMDIvMzNdIGluZXQ6IGZyYWdzOiBhZGQgYSBwb2ludGVyIHRvIHN0cnVjdCBuZXRuc19mcmFn cwoKY29tbWl0IDA5M2JhNzI5MTRiNjk2NTIxZTQ4ODU3NTZhNjhhMzMzMjc4MmM4ZGUgdXBzdHJl YW0uCgpJbiBvcmRlciB0byBzaW1wbGlmeSB0aGUgQVBJLCBhZGQgYSBwb2ludGVyIHRvIHN0cnVj dCBpbmV0X2ZyYWdzLgpUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbWFrZSB0aGluZ3MgbGVzcyBjb21w bGV4LgoKVGhlc2UgZnVuY3Rpb25zIG5vIGxvbmdlciBoYXZlIGEgc3RydWN0IGluZXRfZnJhZ3Mg cGFyYW1ldGVyIDoKCmluZXRfZnJhZ19kZXN0cm95KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEg IC8qLCBzdHJ1Y3QgaW5ldF9mcmFncyAqZiAqLykKaW5ldF9mcmFnX3B1dChzdHJ1Y3QgaW5ldF9m cmFnX3F1ZXVlICpxIC8qLCBzdHJ1Y3QgaW5ldF9mcmFncyAqZiAqLykKaW5ldF9mcmFnX2tpbGwo c3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSAvKiwgc3RydWN0IGluZXRfZnJhZ3MgKmYgKi8pCmlu ZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiAvKiwgc3RydWN0IGluZXRf ZnJhZ3MgKmYgKi8pCmlwNl9leHBpcmVfZnJhZ19xdWV1ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVj dCBmcmFnX3F1ZXVlICpmcSkKClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxv ZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZv dW5kYXRpb24ub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogaW5ldF9mcmFnX3traWxsLHB1 dH0oKSBhcmUgY2FsbGVkIGluIHNvbWUKIGRpZmZlcmVudCBwbGFjZXM7IHVwZGF0ZSBhbGwgY2Fs bHNdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5r LmNvLnVrPgotLS0KIGluY2x1ZGUvbmV0L2luZXRfZnJhZy5oICAgICAgICAgICAgICAgICB8IDEx ICsrKysrKy0tLS0tCiBpbmNsdWRlL25ldC9pcHY2LmggICAgICAgICAgICAgICAgICAgICAgfCAg MyArLS0KIG5ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5jICAgICB8IDEzICsrKysr KystLS0tLS0KIG5ldC9pcHY0L2luZXRfZnJhZ21lbnQuYyAgICAgICAgICAgICAgICB8IDE3ICsr KysrKysrKystLS0tLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jICAgICAgICAgICAgICAgICAg fCAxMCArKysrKystLS0tCiBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMg fCAxNiArKysrKysrKystLS0tLS0tCiBuZXQvaXB2Ni9yZWFzc2VtYmx5LmMgICAgICAgICAgICAg ICAgICAgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNl cnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0 X2ZyYWcuaCBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCmluZGV4IDc4ODFjODBmZWVmZC4uMTI1 ODlmMDhlMDY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaAorKysgYi9pbmNs dWRlL25ldC9pbmV0X2ZyYWcuaApAQCAtOCw2ICs4LDcgQEAgc3RydWN0IG5ldG5zX2ZyYWdzIHsK IAlpbnQJCQl0aW1lb3V0OwogCWludAkJCWhpZ2hfdGhyZXNoOwogCWludAkJCWxvd190aHJlc2g7 CisJc3RydWN0IGluZXRfZnJhZ3MJKmY7CiB9OwogCiAvKioKQEAgLTEwOCwyMCArMTA5LDIwIEBA IHN0YXRpYyBpbmxpbmUgaW50IGluZXRfZnJhZ3NfaW5pdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdz ICpuZikKIAlhdG9taWNfc2V0KCZuZi0+bWVtLCAwKTsKIAlyZXR1cm4gMDsKIH0KLXZvaWQgaW5l dF9mcmFnc19leGl0X25ldChzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mLCBzdHJ1Y3QgaW5ldF9mcmFn cyAqZik7Cit2b2lkIGluZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZik7 CiAKLXZvaWQgaW5ldF9mcmFnX2tpbGwoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgc3RydWN0 IGluZXRfZnJhZ3MgKmYpOwotdm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1Y3QgaW5ldF9mcmFn X3F1ZXVlICpxLCBzdHJ1Y3QgaW5ldF9mcmFncyAqZik7Cit2b2lkIGluZXRfZnJhZ19raWxsKHN0 cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpOwordm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1Y3Qg aW5ldF9mcmFnX3F1ZXVlICpxKTsKIHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmluZXRfZnJhZ19m aW5kKHN0cnVjdCBuZXRuc19mcmFncyAqbmYsCiAJCXN0cnVjdCBpbmV0X2ZyYWdzICpmLCB2b2lk ICprZXksIHVuc2lnbmVkIGludCBoYXNoKTsKIAogdm9pZCBpbmV0X2ZyYWdfbWF5YmVfd2Fybl9v dmVyZmxvdyhzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxLAogCQkJCSAgIGNvbnN0IGNoYXIgKnBy ZWZpeCk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2ZyYWdfcHV0KHN0cnVjdCBpbmV0X2Zy YWdfcXVldWUgKnEsIHN0cnVjdCBpbmV0X2ZyYWdzICpmKQorc3RhdGljIGlubGluZSB2b2lkIGlu ZXRfZnJhZ19wdXQoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkKIHsKIAlpZiAoYXRvbWljX2Rl Y19hbmRfdGVzdCgmcS0+cmVmY250KSkKLQkJaW5ldF9mcmFnX2Rlc3Ryb3kocSwgZik7CisJCWlu ZXRfZnJhZ19kZXN0cm95KHEpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaW5ldF9mcmFnX2V2 aWN0aW5nKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpCmRpZmYgLS1naXQgYS9pbmNsdWRlL25l dC9pcHY2LmggYi9pbmNsdWRlL25ldC9pcHY2LmgKaW5kZXggMGUwMWQ1NzBmYTIyLi45ZDhlYWNl NmQ0NTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaAorKysgYi9pbmNsdWRlL25ldC9p cHY2LmgKQEAgLTUzNCw4ICs1MzQsNyBAQCBzdHJ1Y3QgZnJhZ19xdWV1ZSB7CiAJdTgJCQllY247 CiB9OwogCi12b2lkIGlwNl9leHBpcmVfZnJhZ19xdWV1ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVj dCBmcmFnX3F1ZXVlICpmcSwKLQkJCSAgIHN0cnVjdCBpbmV0X2ZyYWdzICpmcmFncyk7Cit2b2lk IGlwNl9leHBpcmVfZnJhZ19xdWV1ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmcmFnX3F1ZXVl ICpmcSk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpcHY2X2FkZHJfYW55KGNvbnN0IHN0cnVjdCBp bjZfYWRkciAqYSkKIHsKZGlmZiAtLWdpdCBhL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3Nl bWJseS5jIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKaW5kZXggZTE0OTYy YzFmY2EyLi44YzUzMjc0M2U5MTcgMTAwNjQ0Ci0tLSBhL25ldC9pZWVlODAyMTU0LzZsb3dwYW4v cmVhc3NlbWJseS5jCisrKyBiL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5jCkBA IC05MywxMCArOTMsMTAgQEAgc3RhdGljIHZvaWQgbG93cGFuX2ZyYWdfZXhwaXJlKHVuc2lnbmVk IGxvbmcgZGF0YSkKIAlpZiAoZnEtPnEuZmxhZ3MgJiBJTkVUX0ZSQUdfQ09NUExFVEUpCiAJCWdv dG8gb3V0OwogCi0JaW5ldF9mcmFnX2tpbGwoJmZxLT5xLCAmbG93cGFuX2ZyYWdzKTsKKwlpbmV0 X2ZyYWdfa2lsbCgmZnEtPnEpOwogb3V0OgogCXNwaW5fdW5sb2NrKCZmcS0+cS5sb2NrKTsKLQlp bmV0X2ZyYWdfcHV0KCZmcS0+cSwgJmxvd3Bhbl9mcmFncyk7CisJaW5ldF9mcmFnX3B1dCgmZnEt PnEpOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsb3dwYW5fZnJhZ19xdWV1ZSAqCkBAIC0y MjksNyArMjI5LDcgQEAgc3RhdGljIGludCBsb3dwYW5fZnJhZ19yZWFzbShzdHJ1Y3QgbG93cGFu X2ZyYWdfcXVldWUgKmZxLCBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwKIAlzdHJ1Y3Qgc2tfYnVmZiAq ZnAsICpoZWFkID0gZnEtPnEuZnJhZ21lbnRzOwogCWludCBzdW1fdHJ1ZXNpemU7CiAKLQlpbmV0 X2ZyYWdfa2lsbCgmZnEtPnEsICZsb3dwYW5fZnJhZ3MpOworCWluZXRfZnJhZ19raWxsKCZmcS0+ cSk7CiAKIAkvKiBNYWtlIHRoZSBvbmUgd2UganVzdCByZWNlaXZlZCB0aGUgaGVhZC4gKi8KIAlp ZiAocHJldikgewpAQCAtNDM3LDcgKzQzNyw3IEBAIGludCBsb3dwYW5fZnJhZ19yY3Yoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgdTggZnJhZ190eXBlKQogCQlyZXQgPSBsb3dwYW5fZnJhZ19xdWV1ZShm cSwgc2tiLCBmcmFnX3R5cGUpOwogCQlzcGluX3VubG9jaygmZnEtPnEubG9jayk7CiAKLQkJaW5l dF9mcmFnX3B1dCgmZnEtPnEsICZsb3dwYW5fZnJhZ3MpOworCQlpbmV0X2ZyYWdfcHV0KCZmcS0+ cSk7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC01ODUsMTMgKzU4NSwxNCBAQCBzdGF0aWMgaW50 IF9fbmV0X2luaXQgbG93cGFuX2ZyYWdzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAlpZWVl ODAyMTU0X2xvd3Bhbi0+ZnJhZ3MuaGlnaF90aHJlc2ggPSBJUFY2X0ZSQUdfSElHSF9USFJFU0g7 CiAJaWVlZTgwMjE1NF9sb3dwYW4tPmZyYWdzLmxvd190aHJlc2ggPSBJUFY2X0ZSQUdfTE9XX1RI UkVTSDsKIAlpZWVlODAyMTU0X2xvd3Bhbi0+ZnJhZ3MudGltZW91dCA9IElQVjZfRlJBR19USU1F T1VUOworCWllZWU4MDIxNTRfbG93cGFuLT5mcmFncy5mID0gJmxvd3Bhbl9mcmFnczsKIAogCXJl cyA9IGluZXRfZnJhZ3NfaW5pdF9uZXQoJmllZWU4MDIxNTRfbG93cGFuLT5mcmFncyk7CiAJaWYg KHJlcyA8IDApCiAJCXJldHVybiByZXM7CiAJcmVzID0gbG93cGFuX2ZyYWdzX25zX3N5c2N0bF9y ZWdpc3RlcihuZXQpOwogCWlmIChyZXMgPCAwKQotCQlpbmV0X2ZyYWdzX2V4aXRfbmV0KCZpZWVl ODAyMTU0X2xvd3Bhbi0+ZnJhZ3MsICZsb3dwYW5fZnJhZ3MpOworCQlpbmV0X2ZyYWdzX2V4aXRf bmV0KCZpZWVlODAyMTU0X2xvd3Bhbi0+ZnJhZ3MpOwogCXJldHVybiByZXM7CiB9CiAKQEAgLTYw MSw3ICs2MDIsNyBAQCBzdGF0aWMgdm9pZCBfX25ldF9leGl0IGxvd3Bhbl9mcmFnc19leGl0X25l dChzdHJ1Y3QgbmV0ICpuZXQpCiAJCW5ldF9pZWVlODAyMTU0X2xvd3BhbihuZXQpOwogCiAJbG93 cGFuX2ZyYWdzX25zX3N5c2N0bF91bnJlZ2lzdGVyKG5ldCk7Ci0JaW5ldF9mcmFnc19leGl0X25l dCgmaWVlZTgwMjE1NF9sb3dwYW4tPmZyYWdzLCAmbG93cGFuX2ZyYWdzKTsKKwlpbmV0X2ZyYWdz X2V4aXRfbmV0KCZpZWVlODAyMTU0X2xvd3Bhbi0+ZnJhZ3MpOwogfQogCiBzdGF0aWMgc3RydWN0 IHBlcm5ldF9vcGVyYXRpb25zIGxvd3Bhbl9mcmFnc19vcHMgPSB7CmRpZmYgLS1naXQgYS9uZXQv aXB2NC9pbmV0X2ZyYWdtZW50LmMgYi9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKaW5kZXggYjIw MDFiMjBlMDI5Li44YzJiODY5ZDAzNWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2luZXRfZnJhZ21l bnQuYworKysgYi9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKQEAgLTIxOSw4ICsyMTksOSBAQCB2 b2lkIGluZXRfZnJhZ3NfZmluaShzdHJ1Y3QgaW5ldF9mcmFncyAqZikKIH0KIEVYUE9SVF9TWU1C T0woaW5ldF9mcmFnc19maW5pKTsKIAotdm9pZCBpbmV0X2ZyYWdzX2V4aXRfbmV0KHN0cnVjdCBu ZXRuc19mcmFncyAqbmYsIHN0cnVjdCBpbmV0X2ZyYWdzICpmKQordm9pZCBpbmV0X2ZyYWdzX2V4 aXRfbmV0KHN0cnVjdCBuZXRuc19mcmFncyAqbmYpCiB7CisJc3RydWN0IGluZXRfZnJhZ3MgKmYg PW5mLT5mOwogCXVuc2lnbmVkIGludCBzZXE7CiAJaW50IGk7CiAKQEAgLTI2NCwyMyArMjY1LDIz IEBAIF9fYWNxdWlyZXMoaGItPmNoYWluX2xvY2spCiAJcmV0dXJuIGhiOwogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgZnFfdW5saW5rKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmZxLCBzdHJ1Y3Qg aW5ldF9mcmFncyAqZikKK3N0YXRpYyBpbmxpbmUgdm9pZCBmcV91bmxpbmsoc3RydWN0IGluZXRf ZnJhZ19xdWV1ZSAqZnEpCiB7CiAJc3RydWN0IGluZXRfZnJhZ19idWNrZXQgKmhiOwogCi0JaGIg PSBnZXRfZnJhZ19idWNrZXRfbG9ja2VkKGZxLCBmKTsKKwloYiA9IGdldF9mcmFnX2J1Y2tldF9s b2NrZWQoZnEsIGZxLT5uZXQtPmYpOwogCWhsaXN0X2RlbCgmZnEtPmxpc3QpOwogCWZxLT5mbGFn cyB8PSBJTkVUX0ZSQUdfQ09NUExFVEU7CiAJc3Bpbl91bmxvY2soJmhiLT5jaGFpbl9sb2NrKTsK IH0KIAotdm9pZCBpbmV0X2ZyYWdfa2lsbChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpmcSwgc3Ry dWN0IGluZXRfZnJhZ3MgKmYpCit2b2lkIGluZXRfZnJhZ19raWxsKHN0cnVjdCBpbmV0X2ZyYWdf cXVldWUgKmZxKQogewogCWlmIChkZWxfdGltZXIoJmZxLT50aW1lcikpCiAJCWF0b21pY19kZWMo JmZxLT5yZWZjbnQpOwogCiAJaWYgKCEoZnEtPmZsYWdzICYgSU5FVF9GUkFHX0NPTVBMRVRFKSkg ewotCQlmcV91bmxpbmsoZnEsIGYpOworCQlmcV91bmxpbmsoZnEpOwogCQlhdG9taWNfZGVjKCZm cS0+cmVmY250KTsKIAl9CiB9CkBAIC0yOTQsMTEgKzI5NSwxMiBAQCBzdGF0aWMgaW5saW5lIHZv aWQgZnJhZ19rZnJlZV9za2Ioc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgc3RydWN0IGluZXRfZnJh Z3MgKmYsCiAJa2ZyZWVfc2tiKHNrYik7CiB9CiAKLXZvaWQgaW5ldF9mcmFnX2Rlc3Ryb3koc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgc3RydWN0IGluZXRfZnJhZ3MgKmYpCit2b2lkIGluZXRf ZnJhZ19kZXN0cm95KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpCiB7CiAJc3RydWN0IHNrX2J1 ZmYgKmZwOwogCXN0cnVjdCBuZXRuc19mcmFncyAqbmY7CiAJdW5zaWduZWQgaW50IHN1bSwgc3Vt X3RydWVzaXplID0gMDsKKwlzdHJ1Y3QgaW5ldF9mcmFncyAqZjsKIAogCVdBUk5fT04oIShxLT5m bGFncyAmIElORVRfRlJBR19DT01QTEVURSkpOwogCVdBUk5fT04oZGVsX3RpbWVyKCZxLT50aW1l cikgIT0gMCk7CkBAIC0zMDYsNiArMzA4LDcgQEAgdm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1 Y3QgaW5ldF9mcmFnX3F1ZXVlICpxLCBzdHJ1Y3QgaW5ldF9mcmFncyAqZikKIAkvKiBSZWxlYXNl IGFsbCBmcmFnbWVudCBkYXRhLiAqLwogCWZwID0gcS0+ZnJhZ21lbnRzOwogCW5mID0gcS0+bmV0 OworCWYgPSBuZi0+ZjsKIAl3aGlsZSAoZnApIHsKIAkJc3RydWN0IHNrX2J1ZmYgKnhwID0gZnAt Pm5leHQ7CiAKQEAgLTM0MSw3ICszNDQsNyBAQCBzdGF0aWMgc3RydWN0IGluZXRfZnJhZ19xdWV1 ZSAqaW5ldF9mcmFnX2ludGVybihzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mLAogCQkJYXRvbWljX2lu YygmcXAtPnJlZmNudCk7CiAJCQlzcGluX3VubG9jaygmaGItPmNoYWluX2xvY2spOwogCQkJcXBf aW4tPmZsYWdzIHw9IElORVRfRlJBR19DT01QTEVURTsKLQkJCWluZXRfZnJhZ19wdXQocXBfaW4s IGYpOworCQkJaW5ldF9mcmFnX3B1dChxcF9pbik7CiAJCQlyZXR1cm4gcXA7CiAJCX0KIAl9CmRp ZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQu YwppbmRleCAxNGM0MGY3OTliZDQuLmI4N2Y0MTg1YmY2MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQv aXBfZnJhZ21lbnQuYworKysgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCkBAIC0xNjksNyArMTY5 LDcgQEAgc3RhdGljIHZvaWQgaXA0X2ZyYWdfZnJlZShzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpx KQogCiBzdGF0aWMgdm9pZCBpcHFfcHV0KHN0cnVjdCBpcHEgKmlwcSkKIHsKLQlpbmV0X2ZyYWdf cHV0KCZpcHEtPnEsICZpcDRfZnJhZ3MpOworCWluZXRfZnJhZ19wdXQoJmlwcS0+cSk7CiB9CiAK IC8qIEtpbGwgaXBxIGVudHJ5LiBJdCBpcyBub3QgZGVzdHJveWVkIGltbWVkaWF0ZWx5LApAQCAt MTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGlwcV9wdXQoc3RydWN0IGlwcSAqaXBxKQogICov CiBzdGF0aWMgdm9pZCBpcHFfa2lsbChzdHJ1Y3QgaXBxICppcHEpCiB7Ci0JaW5ldF9mcmFnX2tp bGwoJmlwcS0+cSwgJmlwNF9mcmFncyk7CisJaW5ldF9mcmFnX2tpbGwoJmlwcS0+cSk7CiB9CiAK IHN0YXRpYyBib29sIGZyYWdfZXhwaXJlX3NraXBfaWNtcCh1MzIgdXNlcikKQEAgLTg3OCwxOSAr ODc4LDIxIEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcHY0X2ZyYWdzX2luaXRfbmV0KHN0cnVj dCBuZXQgKm5ldCkKIAkgKi8KIAluZXQtPmlwdjQuZnJhZ3MudGltZW91dCA9IElQX0ZSQUdfVElN RTsKIAorCW5ldC0+aXB2NC5mcmFncy5mID0gJmlwNF9mcmFnczsKKwogCXJlcyA9IGluZXRfZnJh Z3NfaW5pdF9uZXQoJm5ldC0+aXB2NC5mcmFncyk7CiAJaWYgKHJlcyA8IDApCiAJCXJldHVybiBy ZXM7CiAJcmVzID0gaXA0X2ZyYWdzX25zX2N0bF9yZWdpc3RlcihuZXQpOwogCWlmIChyZXMgPCAw KQotCQlpbmV0X2ZyYWdzX2V4aXRfbmV0KCZuZXQtPmlwdjQuZnJhZ3MsICZpcDRfZnJhZ3MpOwor CQlpbmV0X2ZyYWdzX2V4aXRfbmV0KCZuZXQtPmlwdjQuZnJhZ3MpOwogCXJldHVybiByZXM7CiB9 CiAKIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXB2NF9mcmFnc19leGl0X25ldChzdHJ1Y3QgbmV0 ICpuZXQpCiB7CiAJaXA0X2ZyYWdzX25zX2N0bF91bnJlZ2lzdGVyKG5ldCk7Ci0JaW5ldF9mcmFn c19leGl0X25ldCgmbmV0LT5pcHY0LmZyYWdzLCAmaXA0X2ZyYWdzKTsKKwlpbmV0X2ZyYWdzX2V4 aXRfbmV0KCZuZXQtPmlwdjQuZnJhZ3MpOwogfQogCiBzdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVy YXRpb25zIGlwNF9mcmFnc19vcHMgPSB7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIv bmZfY29ubnRyYWNrX3JlYXNtLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Jl YXNtLmMKaW5kZXggNjg1OWQxZTA4NGZlLi4xNWE5ZGE1Y2YyOTYgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0 ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBu Zl9jdF9mcmFnNl9leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQogCWZxID0gY29udGFpbmVyX29m KChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICopZGF0YSwgc3RydWN0IGZyYWdfcXVldWUsIHEpOwog CW5ldCA9IGNvbnRhaW5lcl9vZihmcS0+cS5uZXQsIHN0cnVjdCBuZXQsIG5mX2ZyYWcuZnJhZ3Mp OwogCi0JaXA2X2V4cGlyZV9mcmFnX3F1ZXVlKG5ldCwgZnEsICZuZl9mcmFncyk7CisJaXA2X2V4 cGlyZV9mcmFnX3F1ZXVlKG5ldCwgZnEpOwogfQogCiAvKiBDcmVhdGlvbiBwcmltaXRpdmVzLiAq LwpAQCAtMzYyLDcgKzM2Miw3IEBAIGZvdW5kOgogCXJldHVybiAwOwogCiBkaXNjYXJkX2ZxOgot CWluZXRfZnJhZ19raWxsKCZmcS0+cSwgJm5mX2ZyYWdzKTsKKwlpbmV0X2ZyYWdfa2lsbCgmZnEt PnEpOwogZXJyOgogCXJldHVybiAtMTsKIH0KQEAgLTM4Myw3ICszODMsNyBAQCBuZl9jdF9mcmFn Nl9yZWFzbShzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnEsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJ aW50ICAgIHBheWxvYWRfbGVuOwogCXU4IGVjbjsKIAotCWluZXRfZnJhZ19raWxsKCZmcS0+cSwg Jm5mX2ZyYWdzKTsKKwlpbmV0X2ZyYWdfa2lsbCgmZnEtPnEpOwogCiAJV0FSTl9PTihoZWFkID09 IE5VTEwpOwogCVdBUk5fT04oTkZDVF9GUkFHNl9DQihoZWFkKS0+b2Zmc2V0ICE9IDApOwpAQCAt NjE0LDcgKzYxNCw3IEBAIHN0cnVjdCBza19idWZmICpuZl9jdF9mcmFnNl9nYXRoZXIoc3RydWN0 IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdXNlCiAJaWYgKG5mX2N0X2ZyYWc2 X3F1ZXVlKGZxLCBjbG9uZSwgZmhkciwgbmhvZmYpIDwgMCkgewogCQlzcGluX3VubG9ja19iaCgm ZnEtPnEubG9jayk7CiAJCXByX2RlYnVnKCJDYW4ndCBpbnNlcnQgc2tiIHRvIHF1ZXVlXG4iKTsK LQkJaW5ldF9mcmFnX3B1dCgmZnEtPnEsICZuZl9mcmFncyk7CisJCWluZXRfZnJhZ19wdXQoJmZx LT5xKTsKIAkJZ290byByZXRfb3JpZzsKIAl9CiAKQEAgLTYyNiw3ICs2MjYsNyBAQCBzdHJ1Y3Qg c2tfYnVmZiAqbmZfY3RfZnJhZzZfZ2F0aGVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgdTMyIHVzZQogCX0KIAlzcGluX3VubG9ja19iaCgmZnEtPnEubG9jayk7CiAKLQlp bmV0X2ZyYWdfcHV0KCZmcS0+cSwgJm5mX2ZyYWdzKTsKKwlpbmV0X2ZyYWdfcHV0KCZmcS0+cSk7 CiAJcmV0dXJuIHJldF9za2I7CiAKIHJldF9vcmlnOgpAQCAtNjU1LDE5ICs2NTUsMjEgQEAgc3Rh dGljIGludCBuZl9jdF9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJbmV0LT5uZl9mcmFnLmZy YWdzLmhpZ2hfdGhyZXNoID0gSVBWNl9GUkFHX0hJR0hfVEhSRVNIOwogCW5ldC0+bmZfZnJhZy5m cmFncy5sb3dfdGhyZXNoID0gSVBWNl9GUkFHX0xPV19USFJFU0g7CiAJbmV0LT5uZl9mcmFnLmZy YWdzLnRpbWVvdXQgPSBJUFY2X0ZSQUdfVElNRU9VVDsKKwluZXQtPm5mX2ZyYWcuZnJhZ3MuZiA9 ICZuZl9mcmFnczsKKwogCXJlcyA9IGluZXRfZnJhZ3NfaW5pdF9uZXQoJm5ldC0+bmZfZnJhZy5m cmFncyk7CiAJaWYgKHJlcyA8IDApCiAJCXJldHVybiByZXM7CiAJcmVzID0gbmZfY3RfZnJhZzZf c3lzY3RsX3JlZ2lzdGVyKG5ldCk7CiAJaWYgKHJlcyA8IDApCi0JCWluZXRfZnJhZ3NfZXhpdF9u ZXQoJm5ldC0+bmZfZnJhZy5mcmFncywgJm5mX2ZyYWdzKTsKKwkJaW5ldF9mcmFnc19leGl0X25l dCgmbmV0LT5uZl9mcmFnLmZyYWdzKTsKIAlyZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZCBu Zl9jdF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiB7CiAJbmZfY3RfZnJhZ3M2X3N5c2N0bF91 bnJlZ2lzdGVyKG5ldCk7Ci0JaW5ldF9mcmFnc19leGl0X25ldCgmbmV0LT5uZl9mcmFnLmZyYWdz LCAmbmZfZnJhZ3MpOworCWluZXRfZnJhZ3NfZXhpdF9uZXQoJm5ldC0+bmZfZnJhZy5mcmFncyk7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgbmZfY3RfbmV0X29wcyA9IHsK ZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYyBiL25ldC9pcHY2L3JlYXNzZW1ibHku YwppbmRleCBjMzhhMWFiYjVjNjIuLmJjZWZkYTg1ZDI3YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv cmVhc3NlbWJseS5jCisrKyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwpAQCAtMTI4LDggKzEyOCw3 IEBAIHZvaWQgaXA2X2ZyYWdfaW5pdChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxLCBjb25zdCB2 b2lkICphKQogfQogRVhQT1JUX1NZTUJPTChpcDZfZnJhZ19pbml0KTsKIAotdm9pZCBpcDZfZXhw aXJlX2ZyYWdfcXVldWUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnEsCi0J CQkgICBzdHJ1Y3QgaW5ldF9mcmFncyAqZnJhZ3MpCit2b2lkIGlwNl9leHBpcmVfZnJhZ19xdWV1 ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmcmFnX3F1ZXVlICpmcSkKIHsKIAlzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2ID0gTlVMTDsKIApAQCAtMTM4LDcgKzEzNyw3IEBAIHZvaWQgaXA2X2V4cGly ZV9mcmFnX3F1ZXVlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZyYWdfcXVldWUgKmZxLAogCWlm IChmcS0+cS5mbGFncyAmIElORVRfRlJBR19DT01QTEVURSkKIAkJZ290byBvdXQ7CiAKLQlpbmV0 X2ZyYWdfa2lsbCgmZnEtPnEsIGZyYWdzKTsKKwlpbmV0X2ZyYWdfa2lsbCgmZnEtPnEpOwogCiAJ cmN1X3JlYWRfbG9jaygpOwogCWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KG5ldCwgZnEtPmlp Zik7CkBAIC0xNjYsNyArMTY1LDcgQEAgb3V0X3JjdV91bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2Nr KCk7CiBvdXQ6CiAJc3Bpbl91bmxvY2soJmZxLT5xLmxvY2spOwotCWluZXRfZnJhZ19wdXQoJmZx LT5xLCBmcmFncyk7CisJaW5ldF9mcmFnX3B1dCgmZnEtPnEpOwogfQogRVhQT1JUX1NZTUJPTChp cDZfZXhwaXJlX2ZyYWdfcXVldWUpOwogCkBAIC0xNzgsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQg aXA2X2ZyYWdfZXhwaXJlKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlmcSA9IGNvbnRhaW5lcl9vZigo c3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqKWRhdGEsIHN0cnVjdCBmcmFnX3F1ZXVlLCBxKTsKIAlu ZXQgPSBjb250YWluZXJfb2YoZnEtPnEubmV0LCBzdHJ1Y3QgbmV0LCBpcHY2LmZyYWdzKTsKIAot CWlwNl9leHBpcmVfZnJhZ19xdWV1ZShuZXQsIGZxLCAmaXA2X2ZyYWdzKTsKKwlpcDZfZXhwaXJl X2ZyYWdfcXVldWUobmV0LCBmcSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZnJhZ19xdWV1ZSAqCkBA IC0zNTksNyArMzU4LDcgQEAgZm91bmQ6CiAJcmV0dXJuIC0xOwogCiBkaXNjYXJkX2ZxOgotCWlu ZXRfZnJhZ19raWxsKCZmcS0+cSwgJmlwNl9mcmFncyk7CisJaW5ldF9mcmFnX2tpbGwoJmZxLT5x KTsKIGVycjoKIAlJUDZfSU5DX1NUQVRTX0JIKG5ldCwgaXA2X2RzdF9pZGV2KHNrYl9kc3Qoc2ti KSksCiAJCQkgSVBTVEFUU19NSUJfUkVBU01GQUlMUyk7CkBAIC0zODYsNyArMzg1LDcgQEAgc3Rh dGljIGludCBpcDZfZnJhZ19yZWFzbShzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnEsIHN0cnVjdCBza19i dWZmICpwcmV2LAogCWludCBzdW1fdHJ1ZXNpemU7CiAJdTggZWNuOwogCi0JaW5ldF9mcmFnX2tp bGwoJmZxLT5xLCAmaXA2X2ZyYWdzKTsKKwlpbmV0X2ZyYWdfa2lsbCgmZnEtPnEpOwogCiAJZWNu ID0gaXBfZnJhZ19lY25fdGFibGVbZnEtPmVjbl07CiAJaWYgKHVubGlrZWx5KGVjbiA9PSAweGZm KSkKQEAgLTU2Miw3ICs1NjEsNyBAQCBzdGF0aWMgaW50IGlwdjZfZnJhZ19yY3Yoc3RydWN0IHNr X2J1ZmYgKnNrYikKIAkJcmV0ID0gaXA2X2ZyYWdfcXVldWUoZnEsIHNrYiwgZmhkciwgSVA2Q0Io c2tiKS0+bmhvZmYpOwogCiAJCXNwaW5fdW5sb2NrKCZmcS0+cS5sb2NrKTsKLQkJaW5ldF9mcmFn X3B1dCgmZnEtPnEsICZpcDZfZnJhZ3MpOworCQlpbmV0X2ZyYWdfcHV0KCZmcS0+cSk7CiAJCXJl dHVybiByZXQ7CiAJfQogCkBAIC03MTMsNiArNzEyLDcgQEAgc3RhdGljIGludCBfX25ldF9pbml0 IGlwdjZfZnJhZ3NfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogCW5ldC0+aXB2Ni5mcmFncy5o aWdoX3RocmVzaCA9IElQVjZfRlJBR19ISUdIX1RIUkVTSDsKIAluZXQtPmlwdjYuZnJhZ3MubG93 X3RocmVzaCA9IElQVjZfRlJBR19MT1dfVEhSRVNIOwogCW5ldC0+aXB2Ni5mcmFncy50aW1lb3V0 ID0gSVBWNl9GUkFHX1RJTUVPVVQ7CisJbmV0LT5pcHY2LmZyYWdzLmYgPSAmaXA2X2ZyYWdzOwog CiAJcmVzID0gaW5ldF9mcmFnc19pbml0X25ldCgmbmV0LT5pcHY2LmZyYWdzKTsKIAlpZiAocmVz IDwgMCkKQEAgLTcyMCwxNCArNzIwLDE0IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcHY2X2Zy YWdzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldCkKIAogCXJlcyA9IGlwNl9mcmFnc19uc19zeXNj dGxfcmVnaXN0ZXIobmV0KTsKIAlpZiAocmVzIDwgMCkKLQkJaW5ldF9mcmFnc19leGl0X25ldCgm bmV0LT5pcHY2LmZyYWdzLCAmaXA2X2ZyYWdzKTsKKwkJaW5ldF9mcmFnc19leGl0X25ldCgmbmV0 LT5pcHY2LmZyYWdzKTsKIAlyZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZCBfX25ldF9leGl0 IGlwdjZfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogewogCWlwNl9mcmFnc19uc19z eXNjdGxfdW5yZWdpc3RlcihuZXQpOwotCWluZXRfZnJhZ3NfZXhpdF9uZXQoJm5ldC0+aXB2Ni5m cmFncywgJmlwNl9mcmFncyk7CisJaW5ldF9mcmFnc19leGl0X25ldCgmbmV0LT5pcHY2LmZyYWdz KTsKIH0KIAogc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcDZfZnJhZ3Nfb3BzID0g ewoKRnJvbSBmMTEwNzBjMWMzYzUwZTk3Zjk2YTJiNDAyYjZjN2M4NTI4MzUzN2NiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6Mjk6NTEgLTA3MDAKU3ViamVjdDogWzAzLzMzXSBp bmV0OiBmcmFnczogcmVmYWN0b3IgaXBmcmFnX2luaXQoKQoKY29tbWl0IDQ4M2E2ZTRmYTA1NTEy MzE0MmQ4OTU2ODY2ZmUyYWE5Yzk4ZDU0NmQgdXBzdHJlYW0uCgpXZSBuZWVkIHRvIGNhbGwgaW5l dF9mcmFnc19pbml0KCkgYmVmb3JlIHJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoKSwKYXMgYSBwcmVy ZXEgZm9yIGZvbGxvd2luZyBwYXRjaCAoImluZXQ6IGZyYWdzOiB1c2Ugcmhhc2h0YWJsZXMgZm9y IHJlYXNzZW1ibHkgdW5pdHMiKQoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4 Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGlu Z3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9pcHY0L2lwX2ZyYWdtZW50LmMgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKaW5k ZXggYjg3ZjQxODViZjYzLi5mNDk3OGE1YWE1NWUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2Zy YWdtZW50LmMKKysrIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAtOTAyLDggKzkwMiw2IEBA IHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXA0X2ZyYWdzX29wcyA9IHsKIAogdm9p ZCBfX2luaXQgaXBmcmFnX2luaXQodm9pZCkKIHsKLQlpcDRfZnJhZ3NfY3RsX3JlZ2lzdGVyKCk7 Ci0JcmVnaXN0ZXJfcGVybmV0X3N1YnN5cygmaXA0X2ZyYWdzX29wcyk7CiAJaXA0X2ZyYWdzLmhh c2hmbiA9IGlwNF9oYXNoZm47CiAJaXA0X2ZyYWdzLmNvbnN0cnVjdG9yID0gaXA0X2ZyYWdfaW5p dDsKIAlpcDRfZnJhZ3MuZGVzdHJ1Y3RvciA9IGlwNF9mcmFnX2ZyZWU7CkBAIC05MTQsNCArOTEy LDYgQEAgdm9pZCBfX2luaXQgaXBmcmFnX2luaXQodm9pZCkKIAlpcDRfZnJhZ3MuZnJhZ3NfY2Fj aGVfbmFtZSA9IGlwX2ZyYWdfY2FjaGVfbmFtZTsKIAlpZiAoaW5ldF9mcmFnc19pbml0KCZpcDRf ZnJhZ3MpKQogCQlwYW5pYygiSVA6IGZhaWxlZCB0byBhbGxvY2F0ZSBpcDRfZnJhZ3MgY2FjaGVc biIpOworCWlwNF9mcmFnc19jdGxfcmVnaXN0ZXIoKTsKKwlyZWdpc3Rlcl9wZXJuZXRfc3Vic3lz KCZpcDRfZnJhZ3Nfb3BzKTsKIH0KCkZyb20gMDIxMWQ0YTg4OGU1ZGIxNWRjNTBiY2RlMDdhOWYy YzEwZTczNmMzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxl ZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjI5OjUyIC0wNzAw ClN1YmplY3Q6IFswNC8zM10gaW5ldDogZnJhZ3M6IHJlZmFjdG9yIGlwdjZfZnJhZ19pbml0KCkK CmNvbW1pdCA1Yjk3NWJhYjIzNjE1Y2QwZmRmNjdhZjZjOTI5OGViMDFjNGI5ZjYxIHVwc3RyZWFt LgoKV2Ugd2FudCB0byBjYWxsIGluZXRfZnJhZ3NfaW5pdCgpIGVhcmxpZXIuCgpUaGlzIGlzIGEg cHJlcmVxIHRvICJpbmV0OiBmcmFnczogdXNlIHJoYXNodGFibGVzIGZvciByZWFzc2VtYmx5IHVu aXRzIgoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25l ZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OiBBbHNvIGRlbGV0ZSBhIHJlZHVuZGFudCBhc3NpZ25t ZW50IHRvCiBpcDZfZnJhZ3Muc2tiX2ZyZWVdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3Mg PGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9pcHY2L3JlYXNzZW1ibHku YyB8IDI2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5z ZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVhc3Nl bWJseS5jIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IGJjZWZkYTg1ZDI3Yi4uMGI2ZjRl MWY0M2RiIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKKysrIGIvbmV0L2lwdjYv cmVhc3NlbWJseS5jCkBAIC03MzksMTAgKzczOSwyMSBAQCBpbnQgX19pbml0IGlwdjZfZnJhZ19p bml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IGluZXQ2X2FkZF9wcm90b2NvbCgmZnJh Z19wcm90b2NvbCwgSVBQUk9UT19GUkFHTUVOVCk7CisJaXA2X2ZyYWdzLmhhc2hmbiA9IGlwNl9o YXNoZm47CisJaXA2X2ZyYWdzLmNvbnN0cnVjdG9yID0gaXA2X2ZyYWdfaW5pdDsKKwlpcDZfZnJh Z3MuZGVzdHJ1Y3RvciA9IE5VTEw7CisJaXA2X2ZyYWdzLnFzaXplID0gc2l6ZW9mKHN0cnVjdCBm cmFnX3F1ZXVlKTsKKwlpcDZfZnJhZ3MubWF0Y2ggPSBpcDZfZnJhZ19tYXRjaDsKKwlpcDZfZnJh Z3MuZnJhZ19leHBpcmUgPSBpcDZfZnJhZ19leHBpcmU7CisJaXA2X2ZyYWdzLmZyYWdzX2NhY2hl X25hbWUgPSBpcDZfZnJhZ19jYWNoZV9uYW1lOworCXJldCA9IGluZXRfZnJhZ3NfaW5pdCgmaXA2 X2ZyYWdzKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIAorCXJldCA9IGluZXQ2X2FkZF9wcm90 b2NvbCgmZnJhZ19wcm90b2NvbCwgSVBQUk9UT19GUkFHTUVOVCk7CisJaWYgKHJldCkKKwkJZ290 byBlcnJfcHJvdG9jb2w7CisKIAlyZXQgPSBpcDZfZnJhZ3Nfc3lzY3RsX3JlZ2lzdGVyKCk7CiAJ aWYgKHJldCkKIAkJZ290byBlcnJfc3lzY3RsOwpAQCAtNzUxLDE3ICs3NjIsNiBAQCBpbnQgX19p bml0IGlwdjZfZnJhZ19pbml0KHZvaWQpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfcGVybmV0Owog Ci0JaXA2X2ZyYWdzLmhhc2hmbiA9IGlwNl9oYXNoZm47Ci0JaXA2X2ZyYWdzLmNvbnN0cnVjdG9y ID0gaXA2X2ZyYWdfaW5pdDsKLQlpcDZfZnJhZ3MuZGVzdHJ1Y3RvciA9IE5VTEw7Ci0JaXA2X2Zy YWdzLnNrYl9mcmVlID0gTlVMTDsKLQlpcDZfZnJhZ3MucXNpemUgPSBzaXplb2Yoc3RydWN0IGZy YWdfcXVldWUpOwotCWlwNl9mcmFncy5tYXRjaCA9IGlwNl9mcmFnX21hdGNoOwotCWlwNl9mcmFn cy5mcmFnX2V4cGlyZSA9IGlwNl9mcmFnX2V4cGlyZTsKLQlpcDZfZnJhZ3MuZnJhZ3NfY2FjaGVf bmFtZSA9IGlwNl9mcmFnX2NhY2hlX25hbWU7Ci0JcmV0ID0gaW5ldF9mcmFnc19pbml0KCZpcDZf ZnJhZ3MpOwotCWlmIChyZXQpCi0JCWdvdG8gZXJyX3Blcm5ldDsKIG91dDoKIAlyZXR1cm4gcmV0 OwogCkBAIC03NjksNiArNzY5LDggQEAgZXJyX3Blcm5ldDoKIAlpcDZfZnJhZ3Nfc3lzY3RsX3Vu cmVnaXN0ZXIoKTsKIGVycl9zeXNjdGw6CiAJaW5ldDZfZGVsX3Byb3RvY29sKCZmcmFnX3Byb3Rv Y29sLCBJUFBST1RPX0ZSQUdNRU5UKTsKK2Vycl9wcm90b2NvbDoKKwlpbmV0X2ZyYWdzX2Zpbmko JmlwNl9mcmFncyk7CiAJZ290byBvdXQ7CiB9CiAKCkZyb20gOWMxM2I4MzMwMjE1ZWJmZTVhZGZl YWM3ZGE1NWQ2N2M2Mzk3YTc4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBE dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjI5 OjUzIC0wNzAwClN1YmplY3Q6IFswNS8zM10gaW5ldDogZnJhZ3M6IHJlZmFjdG9yIGxvd3Bhbl9u ZXRfZnJhZ19pbml0KCkKCmNvbW1pdCA4MDdmMTg0NGRmNGFjMjM1OTQyNjhmYTlmNDE5MDJkMDU0 OWU5MmFhIHVwc3RyZWFtLgoKV2Ugd2FudCB0byBjYWxsIGxvd3Bhbl9uZXRfZnJhZ19pbml0KCkg ZWFybGllci4KU2ltaWxhciB0byBjb21taXQgImluZXQ6IGZyYWdzOiByZWZhY3RvciBpcHY2X2Zy YWdfaW5pdCgpIgoKVGhpcyBpcyBhIHByZXJlcSB0byAiaW5ldDogZnJhZ3M6IHVzZSByaGFzaHRh YmxlcyBmb3IgcmVhc3NlbWJseSB1bml0cyIKClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8 ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4u aHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBuZXQvaWVlZTgwMjE1NC82bG93cGFuL3Jl YXNzZW1ibHkuYyB8IDIwICsrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaWVlZTgwMjE1 NC82bG93cGFuL3JlYXNzZW1ibHkuYyBiL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJs eS5jCmluZGV4IDhjNTMyNzQzZTkxNy4uZGJhMGEzNGNmOTJhIDEwMDY0NAotLS0gYS9uZXQvaWVl ZTgwMjE1NC82bG93cGFuL3JlYXNzZW1ibHkuYworKysgYi9uZXQvaWVlZTgwMjE1NC82bG93cGFu L3JlYXNzZW1ibHkuYwpAQCAtNjE0LDE0ICs2MTQsNiBAQCBpbnQgX19pbml0IGxvd3Bhbl9uZXRf ZnJhZ19pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IGxvd3Bhbl9mcmFnc19zeXNj dGxfcmVnaXN0ZXIoKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gcmVnaXN0 ZXJfcGVybmV0X3N1YnN5cygmbG93cGFuX2ZyYWdzX29wcyk7Ci0JaWYgKHJldCkKLQkJZ290byBl cnJfcGVybmV0OwotCiAJbG93cGFuX2ZyYWdzLmhhc2hmbiA9IGxvd3Bhbl9oYXNoZm47CiAJbG93 cGFuX2ZyYWdzLmNvbnN0cnVjdG9yID0gbG93cGFuX2ZyYWdfaW5pdDsKIAlsb3dwYW5fZnJhZ3Mu ZGVzdHJ1Y3RvciA9IE5VTEw7CkBAIC02MzIsMTEgKzYyNCwyMSBAQCBpbnQgX19pbml0IGxvd3Bh bl9uZXRfZnJhZ19pbml0KHZvaWQpCiAJbG93cGFuX2ZyYWdzLmZyYWdzX2NhY2hlX25hbWUgPSBs b3dwYW5fZnJhZ3NfY2FjaGVfbmFtZTsKIAlyZXQgPSBpbmV0X2ZyYWdzX2luaXQoJmxvd3Bhbl9m cmFncyk7CiAJaWYgKHJldCkKLQkJZ290byBlcnJfcGVybmV0OworCQlnb3RvIG91dDsKIAorCXJl dCA9IGxvd3Bhbl9mcmFnc19zeXNjdGxfcmVnaXN0ZXIoKTsKKwlpZiAocmV0KQorCQlnb3RvIGVy cl9zeXNjdGw7CisKKwlyZXQgPSByZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKCZsb3dwYW5fZnJhZ3Nf b3BzKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9wZXJuZXQ7CitvdXQ6CiAJcmV0dXJuIHJldDsK IGVycl9wZXJuZXQ6CiAJbG93cGFuX2ZyYWdzX3N5c2N0bF91bnJlZ2lzdGVyKCk7CitlcnJfc3lz Y3RsOgorCWluZXRfZnJhZ3NfZmluaSgmbG93cGFuX2ZyYWdzKTsKIAlyZXR1cm4gcmV0OwogfQog CgpGcm9tIDIzZDVmZWViOWE2YzlhYjE3MTAwMGE3NTgxNzNkYzRjZmY0ZTUzM2MgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IFBhYmxvIE5laXJhIEF5dXNvIDxwYWJsb0BuZXRmaWx0ZXIu b3JnPgpEYXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDEyOjMxOjMxICswMjAwClN1YmplY3Q6IFswNi8z M10gcmhhc2h0YWJsZTogYWRkIHJoYXNodGFibGVfbG9va3VwX2dldF9pbnNlcnRfa2V5KCkKCmNv bW1pdCA1Y2E4Y2M1YmYxMWZhZWQyNTdjNzYyMDE4YWVhOTEwNmQ1MjkyMzJmIHVwc3RyZWFtLgoK VGhpcyBwYXRjaCBtb2RpZmllcyBfX3JoYXNodGFibGVfaW5zZXJ0X2Zhc3QoKSBzbyBpdCByZXR1 cm5zIHRoZQpleGlzdGluZyBvYmplY3QgdGhhdCBjbGFzaGVzIHdpdGggdGhlIG9uZSB0aGF0IHlv dSB3YW50IHRvIGluc2VydC4KSW4gY2FzZSB0aGUgb2JqZWN0IGlzIHN1Y2Nlc3NmdWxseSBpbnNl cnRlZCwgTlVMTCBpcyByZXR1cm5lZC4KT3RoZXJ3aXNlLCB5b3UgZ2V0IGFuIGVycm9yIHZpYSBF UlJfUFRSKCkuCgpUaGlzIHBhdGNoIGFkYXB0cyB0aGUgZXhpc3RpbmcgY2FsbGVycyBvZiBfX3Jo YXNodGFibGVfaW5zZXJ0X2Zhc3QoKQpzbyB0aGV5IGhhbmRsZSB0aGlzIG5ldyBsb2dpYywgYW5k IGl0IGFkZHMgYSBuZXcKcmhhc2h0YWJsZV9sb29rdXBfZ2V0X2luc2VydF9rZXkoKSBpbnRlcmZh Y2UgdG8gZmV0Y2ggdGhpcyBleGlzdGluZwpvYmplY3QuCgpuZl90YWJsZXMgbmVlZHMgdGhpcyBj aGFuZ2UgdG8gaW1wcm92ZSBoYW5kbGluZyBvZiBFRVhJU1QgY2FzZXMgdmlhCmhvbm9yaW5nIHRo ZSBOTE1fRl9FWENMIGZsYWcgYW5kIGJ5IGNoZWNraW5nIGlmIHRoZSBkYXRhIHBhcnQgb2YgdGhl Cm1hcHBpbmcgbWF0Y2hlcyB3aGF0IHdlIGhhdmUuCgpDYzogSGVyYmVydCBYdSA8aGVyYmVydEBn b25kb3IuYXBhbmEub3JnLmF1PgpDYzogVGhvbWFzIEdyYWYgPHRncmFmQHN1dWcuY2g+ClNpZ25l ZC1vZmYtYnk6IFBhYmxvIE5laXJhIEF5dXNvIDxwYWJsb0BuZXRmaWx0ZXIub3JnPgpBY2tlZC1i eTogSGVyYmVydCBYdSA8aGVyYmVydEBnb25kb3IuYXBhbmEub3JnLmF1PgpTaWduZWQtb2ZmLWJ5 OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBpbmNs dWRlL2xpbnV4L3JoYXNodGFibGUuaCB8IDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0KIGxpYi9yaGFzaHRhYmxlLmMgICAgICAgICAgIHwgMTAgKysrKyst LQogMiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUuaCBiL2luY2x1ZGUvbGludXgvcmhh c2h0YWJsZS5oCmluZGV4IGU1MGIzMWQxODQ2Mi4uZTA3ZWNhMDEzMTZjIDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L3JoYXNodGFibGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUu aApAQCAtMzQzLDcgKzM0Myw4IEBAIGludCByaGFzaHRhYmxlX2luaXQoc3RydWN0IHJoYXNodGFi bGUgKmh0LAogc3RydWN0IGJ1Y2tldF90YWJsZSAqcmhhc2h0YWJsZV9pbnNlcnRfc2xvdyhzdHJ1 Y3Qgcmhhc2h0YWJsZSAqaHQsCiAJCQkJCSAgICBjb25zdCB2b2lkICprZXksCiAJCQkJCSAgICBz dHJ1Y3Qgcmhhc2hfaGVhZCAqb2JqLAotCQkJCQkgICAgc3RydWN0IGJ1Y2tldF90YWJsZSAqb2xk X3RibCk7CisJCQkJCSAgICBzdHJ1Y3QgYnVja2V0X3RhYmxlICpvbGRfdGJsLAorCQkJCQkgICAg dm9pZCAqKmRhdGEpOwogaW50IHJoYXNodGFibGVfaW5zZXJ0X3JlaGFzaChzdHJ1Y3Qgcmhhc2h0 YWJsZSAqaHQsIHN0cnVjdCBidWNrZXRfdGFibGUgKnRibCk7CiAKIGludCByaGFzaHRhYmxlX3dh bGtfaW5pdChzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQsIHN0cnVjdCByaGFzaHRhYmxlX2l0ZXIgKml0 ZXIpOwpAQCAtNTYyLDggKzU2MywxMSBAQCByZXN0YXJ0OgogCXJldHVybiBOVUxMOwogfQogCi0v KiBJbnRlcm5hbCBmdW5jdGlvbiwgcGxlYXNlIHVzZSByaGFzaHRhYmxlX2luc2VydF9mYXN0KCkg aW5zdGVhZCAqLwotc3RhdGljIGlubGluZSBpbnQgX19yaGFzaHRhYmxlX2luc2VydF9mYXN0KAor LyogSW50ZXJuYWwgZnVuY3Rpb24sIHBsZWFzZSB1c2Ugcmhhc2h0YWJsZV9pbnNlcnRfZmFzdCgp IGluc3RlYWQuIFRoaXMKKyAqIGZ1bmN0aW9uIHJldHVybnMgdGhlIGV4aXN0aW5nIGVsZW1lbnQg YWxyZWFkeSBpbiBoYXNoZXMgaW4gdGhlcmUgaXMgYSBjbGFzaCwKKyAqIG90aGVyd2lzZSBpdCBy ZXR1cm5zIGFuIGVycm9yIHZpYSBFUlJfUFRSKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCAq X19yaGFzaHRhYmxlX2luc2VydF9mYXN0KAogCXN0cnVjdCByaGFzaHRhYmxlICpodCwgY29uc3Qg dm9pZCAqa2V5LCBzdHJ1Y3Qgcmhhc2hfaGVhZCAqb2JqLAogCWNvbnN0IHN0cnVjdCByaGFzaHRh YmxlX3BhcmFtcyBwYXJhbXMpCiB7CkBAIC01NzYsNiArNTgwLDcgQEAgc3RhdGljIGlubGluZSBp bnQgX19yaGFzaHRhYmxlX2luc2VydF9mYXN0KAogCXNwaW5sb2NrX3QgKmxvY2s7CiAJdW5zaWdu ZWQgaW50IGVsYXN0aWNpdHk7CiAJdW5zaWduZWQgaW50IGhhc2g7CisJdm9pZCAqZGF0YSA9IE5V TEw7CiAJaW50IGVycjsKIAogcmVzdGFydDoKQEAgLTYwMCwxMSArNjA1LDE0IEBAIHJlc3RhcnQ6 CiAKIAluZXdfdGJsID0gcmh0X2RlcmVmZXJlbmNlX3JjdSh0YmwtPmZ1dHVyZV90YmwsIGh0KTsK IAlpZiAodW5saWtlbHkobmV3X3RibCkpIHsKLQkJdGJsID0gcmhhc2h0YWJsZV9pbnNlcnRfc2xv dyhodCwga2V5LCBvYmosIG5ld190YmwpOworCQl0YmwgPSByaGFzaHRhYmxlX2luc2VydF9zbG93 KGh0LCBrZXksIG9iaiwgbmV3X3RibCwgJmRhdGEpOwogCQlpZiAoIUlTX0VSUl9PUl9OVUxMKHRi bCkpCiAJCQlnb3RvIHNsb3dfcGF0aDsKIAogCQllcnIgPSBQVFJfRVJSKHRibCk7CisJCWlmIChl cnIgPT0gLUVFWElTVCkKKwkJCWVyciA9IDA7CisKIAkJZ290byBvdXQ7CiAJfQogCkBAIC02MTgs MjUgKzYyNiwyNSBAQCBzbG93X3BhdGg6CiAJCWVyciA9IHJoYXNodGFibGVfaW5zZXJ0X3JlaGFz aChodCwgdGJsKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJCWlmIChlcnIpCi0JCQlyZXR1cm4g ZXJyOworCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAogCQlnb3RvIHJlc3RhcnQ7CiAJfQogCi0J ZXJyID0gLUVFWElTVDsKKwllcnIgPSAwOwogCWVsYXN0aWNpdHkgPSBodC0+ZWxhc3RpY2l0eTsK IAlyaHRfZm9yX2VhY2goaGVhZCwgdGJsLCBoYXNoKSB7CiAJCWlmIChrZXkgJiYKIAkJICAgIHVu bGlrZWx5KCEocGFyYW1zLm9ial9jbXBmbiA/CiAJCQkgICAgICAgcGFyYW1zLm9ial9jbXBmbigm YXJnLCByaHRfb2JqKGh0LCBoZWFkKSkgOgotCQkJICAgICAgIHJoYXNodGFibGVfY29tcGFyZSgm YXJnLCByaHRfb2JqKGh0LCBoZWFkKSkpKSkKKwkJCSAgICAgICByaGFzaHRhYmxlX2NvbXBhcmUo JmFyZywgcmh0X29iaihodCwgaGVhZCkpKSkpIHsKKwkJCWRhdGEgPSByaHRfb2JqKGh0LCBoZWFk KTsKIAkJCWdvdG8gb3V0OworCQl9CiAJCWlmICghLS1lbGFzdGljaXR5KQogCQkJZ290byBzbG93 X3BhdGg7CiAJfQogCi0JZXJyID0gMDsKLQogCWhlYWQgPSByaHRfZGVyZWZlcmVuY2VfYnVja2V0 KHRibC0+YnVja2V0c1toYXNoXSwgdGJsLCBoYXNoKTsKIAogCVJDVV9JTklUX1BPSU5URVIob2Jq LT5uZXh0LCBoZWFkKTsKQEAgLTY1MSw3ICs2NTksNyBAQCBvdXQ6CiAJc3Bpbl91bmxvY2tfYmgo bG9jayk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAKLQlyZXR1cm4gZXJyOworCXJldHVybiBlcnIg PyBFUlJfUFRSKGVycikgOiBkYXRhOwogfQogCiAvKioKQEAgLTY3NCw3ICs2ODIsMTMgQEAgc3Rh dGljIGlubGluZSBpbnQgcmhhc2h0YWJsZV9pbnNlcnRfZmFzdCgKIAlzdHJ1Y3Qgcmhhc2h0YWJs ZSAqaHQsIHN0cnVjdCByaGFzaF9oZWFkICpvYmosCiAJY29uc3Qgc3RydWN0IHJoYXNodGFibGVf cGFyYW1zIHBhcmFtcykKIHsKLQlyZXR1cm4gX19yaGFzaHRhYmxlX2luc2VydF9mYXN0KGh0LCBO VUxMLCBvYmosIHBhcmFtcyk7CisJdm9pZCAqcmV0OworCisJcmV0ID0gX19yaGFzaHRhYmxlX2lu c2VydF9mYXN0KGh0LCBOVUxMLCBvYmosIHBhcmFtcyk7CisJaWYgKElTX0VSUihyZXQpKQorCQly ZXR1cm4gUFRSX0VSUihyZXQpOworCisJcmV0dXJuIHJldCA9PSBOVUxMID8gMCA6IC1FRVhJU1Q7 CiB9CiAKIC8qKgpAQCAtNzAzLDExICs3MTcsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgcmhhc2h0 YWJsZV9sb29rdXBfaW5zZXJ0X2Zhc3QoCiAJY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1z IHBhcmFtcykKIHsKIAljb25zdCBjaGFyICprZXkgPSByaHRfb2JqKGh0LCBvYmopOworCXZvaWQg KnJldDsKIAogCUJVR19PTihodC0+cC5vYmpfaGFzaGZuKTsKIAotCXJldHVybiBfX3JoYXNodGFi bGVfaW5zZXJ0X2Zhc3QoaHQsIGtleSArIGh0LT5wLmtleV9vZmZzZXQsIG9iaiwKLQkJCQkJcGFy YW1zKTsKKwlyZXQgPSBfX3JoYXNodGFibGVfaW5zZXJ0X2Zhc3QoaHQsIGtleSArIGh0LT5wLmtl eV9vZmZzZXQsIG9iaiwgcGFyYW1zKTsKKwlpZiAoSVNfRVJSKHJldCkpCisJCXJldHVybiBQVFJf RVJSKHJldCk7CisKKwlyZXR1cm4gcmV0ID09IE5VTEwgPyAwIDogLUVFWElTVDsKIH0KIAogLyoq CkBAIC03MzYsNiArNzU0LDMyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJoYXNodGFibGVfbG9va3Vw X2luc2VydF9rZXkoCiAJc3RydWN0IHJoYXNodGFibGUgKmh0LCBjb25zdCB2b2lkICprZXksIHN0 cnVjdCByaGFzaF9oZWFkICpvYmosCiAJY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIHBh cmFtcykKIHsKKwl2b2lkICpyZXQ7CisKKwlCVUdfT04oIWh0LT5wLm9ial9oYXNoZm4gfHwgIWtl eSk7CisKKwlyZXQgPSBfX3JoYXNodGFibGVfaW5zZXJ0X2Zhc3QoaHQsIGtleSwgb2JqLCBwYXJh bXMpOworCWlmIChJU19FUlIocmV0KSkKKwkJcmV0dXJuIFBUUl9FUlIocmV0KTsKKworCXJldHVy biByZXQgPT0gTlVMTCA/IDAgOiAtRUVYSVNUOworfQorCisvKioKKyAqIHJoYXNodGFibGVfbG9v a3VwX2dldF9pbnNlcnRfa2V5IC0gbG9va3VwIGFuZCBpbnNlcnQgb2JqZWN0IGludG8gaGFzaCB0 YWJsZQorICogQGh0OgkJaGFzaCB0YWJsZQorICogQG9iajoJcG9pbnRlciB0byBoYXNoIGhlYWQg aW5zaWRlIG9iamVjdAorICogQHBhcmFtczoJaGFzaCB0YWJsZSBwYXJhbWV0ZXJzCisgKiBAZGF0 YToJcG9pbnRlciB0byBlbGVtZW50IGRhdGEgYWxyZWFkeSBpbiBoYXNoZXMKKyAqCisgKiBKdXN0 IGxpa2Ugcmhhc2h0YWJsZV9sb29rdXBfaW5zZXJ0X2tleSgpLCBidXQgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zIHRoZQorICogb2JqZWN0IGlmIGl0IGV4aXN0cywgTlVMTCBpZiBpdCBkb2VzIG5vdCBh bmQgdGhlIGluc2VydGlvbiB3YXMgc3VjY2Vzc2Z1bCwKKyAqIGFuZCBhbiBFUlJfUFRSIG90aGVy d2lzZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkICpyaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5z ZXJ0X2tleSgKKwlzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQsIGNvbnN0IHZvaWQgKmtleSwgc3RydWN0 IHJoYXNoX2hlYWQgKm9iaiwKKwljb25zdCBzdHJ1Y3Qgcmhhc2h0YWJsZV9wYXJhbXMgcGFyYW1z KQorewogCUJVR19PTighaHQtPnAub2JqX2hhc2hmbiB8fCAha2V5KTsKIAogCXJldHVybiBfX3Jo YXNodGFibGVfaW5zZXJ0X2Zhc3QoaHQsIGtleSwgb2JqLCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEv bGliL3JoYXNodGFibGUuYyBiL2xpYi9yaGFzaHRhYmxlLmMKaW5kZXggMzdlYTk0YjYzNmEzLi45 OTFiZWUzMmU1MmUgMTAwNjQ0Ci0tLSBhL2xpYi9yaGFzaHRhYmxlLmMKKysrIGIvbGliL3JoYXNo dGFibGUuYwpAQCAtNDQxLDcgKzQ0MSw4IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJoYXNodGFibGVf aW5zZXJ0X3JlaGFzaCk7CiBzdHJ1Y3QgYnVja2V0X3RhYmxlICpyaGFzaHRhYmxlX2luc2VydF9z bG93KHN0cnVjdCByaGFzaHRhYmxlICpodCwKIAkJCQkJICAgIGNvbnN0IHZvaWQgKmtleSwKIAkJ CQkJICAgIHN0cnVjdCByaGFzaF9oZWFkICpvYmosCi0JCQkJCSAgICBzdHJ1Y3QgYnVja2V0X3Rh YmxlICp0YmwpCisJCQkJCSAgICBzdHJ1Y3QgYnVja2V0X3RhYmxlICp0YmwsCisJCQkJCSAgICB2 b2lkICoqZGF0YSkKIHsKIAlzdHJ1Y3Qgcmhhc2hfaGVhZCAqaGVhZDsKIAl1bnNpZ25lZCBpbnQg aGFzaDsKQEAgLTQ1Miw4ICs0NTMsMTEgQEAgc3RydWN0IGJ1Y2tldF90YWJsZSAqcmhhc2h0YWJs ZV9pbnNlcnRfc2xvdyhzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQsCiAJc3Bpbl9sb2NrX25lc3RlZChy aHRfYnVja2V0X2xvY2sodGJsLCBoYXNoKSwgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwogCiAJZXJy ID0gLUVFWElTVDsKLQlpZiAoa2V5ICYmIHJoYXNodGFibGVfbG9va3VwX2Zhc3QoaHQsIGtleSwg aHQtPnApKQotCQlnb3RvIGV4aXQ7CisJaWYgKGtleSkgeworCQkqZGF0YSA9IHJoYXNodGFibGVf bG9va3VwX2Zhc3QoaHQsIGtleSwgaHQtPnApOworCQlpZiAoKmRhdGEpCisJCQlnb3RvIGV4aXQ7 CisJfQogCiAJZXJyID0gLUUyQklHOwogCWlmICh1bmxpa2VseShyaHRfZ3Jvd19hYm92ZV9tYXgo aHQsIHRibCkpKQoKRnJvbSBiMGJlMWNhMzE4MDY0M2Y4NTZlZWM5ZTNlOTI3NGY1NWQxYmU0YzU0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hp bmdzQGNvZGV0aGluay5jby51az4KRGF0ZTogRnJpLCA3IERlYyAyMDE4IDE3OjE2OjQ2ICswMDAw ClN1YmplY3Q6IFswNy8zM10gcmhhc2h0YWJsZTogQWRkIHJoYXNodGFibGVfbG9va3VwKCkKCkV4 dHJhY3RlZCBmcm9tIGNvbW1pdCBjYTI2ODkzZjA1ZTggInJoYXNodGFibGU6IEFkZCByaGxpc3Qg aW50ZXJmYWNlIi4KCkNjOiBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+ ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNv LnVrPgotLS0KIGluY2x1ZGUvbGludXgvcmhhc2h0YWJsZS5oIHwgNjkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUyIGluc2Vy dGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmhh c2h0YWJsZS5oIGIvaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLmgKaW5kZXggZTA3ZWNhMDEzMTZj Li43NTM4MzVkMDViZTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS5oCisr KyBiL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS5oCkBAIC01MTUsMTggKzUxNSw4IEBAIHN0YXRp YyBpbmxpbmUgaW50IHJoYXNodGFibGVfY29tcGFyZShzdHJ1Y3Qgcmhhc2h0YWJsZV9jb21wYXJl X2FyZyAqYXJnLAogCXJldHVybiBtZW1jbXAocHRyICsgaHQtPnAua2V5X29mZnNldCwgYXJnLT5r ZXksIGh0LT5wLmtleV9sZW4pOwogfQogCi0vKioKLSAqIHJoYXNodGFibGVfbG9va3VwX2Zhc3Qg LSBzZWFyY2ggaGFzaCB0YWJsZSwgaW5saW5lZCB2ZXJzaW9uCi0gKiBAaHQ6CQloYXNoIHRhYmxl Ci0gKiBAa2V5Ogl0aGUgcG9pbnRlciB0byB0aGUga2V5Ci0gKiBAcGFyYW1zOgloYXNoIHRhYmxl IHBhcmFtZXRlcnMKLSAqCi0gKiBDb21wdXRlcyB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGtleSBh bmQgdHJhdmVyc2VzIHRoZSBidWNrZXQgY2hhaW4gbG9va2luZwotICogZm9yIGEgZW50cnkgd2l0 aCBhbiBpZGVudGljYWwga2V5LiBUaGUgZmlyc3QgbWF0Y2hpbmcgZW50cnkgaXMgcmV0dXJuZWQu Ci0gKgotICogUmV0dXJucyB0aGUgZmlyc3QgZW50cnkgb24gd2hpY2ggdGhlIGNvbXBhcmUgZnVu Y3Rpb24gcmV0dXJuZWQgdHJ1ZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkICpyaGFzaHRhYmxl X2xvb2t1cF9mYXN0KAorLyogSW50ZXJuYWwgZnVuY3Rpb24sIGRvIG5vdCB1c2UuICovCitzdGF0 aWMgaW5saW5lIHN0cnVjdCByaGFzaF9oZWFkICpfX3JoYXNodGFibGVfbG9va3VwKAogCXN0cnVj dCByaGFzaHRhYmxlICpodCwgY29uc3Qgdm9pZCAqa2V5LAogCWNvbnN0IHN0cnVjdCByaGFzaHRh YmxlX3BhcmFtcyBwYXJhbXMpCiB7CkBAIC01MzgsOCArNTI4LDYgQEAgc3RhdGljIGlubGluZSB2 b2lkICpyaGFzaHRhYmxlX2xvb2t1cF9mYXN0KAogCXN0cnVjdCByaGFzaF9oZWFkICpoZTsKIAl1 bnNpZ25lZCBpbnQgaGFzaDsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQogCXRibCA9IHJodF9kZXJl ZmVyZW5jZV9yY3UoaHQtPnRibCwgaHQpOwogcmVzdGFydDoKIAloYXNoID0gcmh0X2tleV9oYXNo Zm4oaHQsIHRibCwga2V5LCBwYXJhbXMpOwpAQCAtNTQ4LDggKzUzNiw3IEBAIHJlc3RhcnQ6CiAJ CSAgICBwYXJhbXMub2JqX2NtcGZuKCZhcmcsIHJodF9vYmooaHQsIGhlKSkgOgogCQkgICAgcmhh c2h0YWJsZV9jb21wYXJlKCZhcmcsIHJodF9vYmooaHQsIGhlKSkpCiAJCQljb250aW51ZTsKLQkJ cmN1X3JlYWRfdW5sb2NrKCk7Ci0JCXJldHVybiByaHRfb2JqKGh0LCBoZSk7CisJCXJldHVybiBo ZTsKIAl9CiAKIAkvKiBFbnN1cmUgd2Ugc2VlIGFueSBuZXcgdGFibGVzLiAqLwpAQCAtNTU4LDEx ICs1NDUsNTkgQEAgcmVzdGFydDoKIAl0YmwgPSByaHRfZGVyZWZlcmVuY2VfcmN1KHRibC0+ZnV0 dXJlX3RibCwgaHQpOwogCWlmICh1bmxpa2VseSh0YmwpKQogCQlnb3RvIHJlc3RhcnQ7Ci0JcmN1 X3JlYWRfdW5sb2NrKCk7CiAKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoqCisgKiByaGFzaHRhYmxl X2xvb2t1cCAtIHNlYXJjaCBoYXNoIHRhYmxlCisgKiBAaHQ6CQloYXNoIHRhYmxlCisgKiBAa2V5 Ogl0aGUgcG9pbnRlciB0byB0aGUga2V5CisgKiBAcGFyYW1zOgloYXNoIHRhYmxlIHBhcmFtZXRl cnMKKyAqCisgKiBDb21wdXRlcyB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGtleSBhbmQgdHJhdmVy c2VzIHRoZSBidWNrZXQgY2hhaW4gbG9va2luZworICogZm9yIGEgZW50cnkgd2l0aCBhbiBpZGVu dGljYWwga2V5LiBUaGUgZmlyc3QgbWF0Y2hpbmcgZW50cnkgaXMgcmV0dXJuZWQuCisgKgorICog VGhpcyBtdXN0IG9ubHkgYmUgY2FsbGVkIHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrLgorICoKKyAq IFJldHVybnMgdGhlIGZpcnN0IGVudHJ5IG9uIHdoaWNoIHRoZSBjb21wYXJlIGZ1bmN0aW9uIHJl dHVybmVkIHRydWUuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCAqcmhhc2h0YWJsZV9sb29rdXAo CisJc3RydWN0IHJoYXNodGFibGUgKmh0LCBjb25zdCB2b2lkICprZXksCisJY29uc3Qgc3RydWN0 IHJoYXNodGFibGVfcGFyYW1zIHBhcmFtcykKK3sKKwlzdHJ1Y3Qgcmhhc2hfaGVhZCAqaGUgPSBf X3JoYXNodGFibGVfbG9va3VwKGh0LCBrZXksIHBhcmFtcyk7CisKKwlyZXR1cm4gaGUgPyByaHRf b2JqKGh0LCBoZSkgOiBOVUxMOworfQorCisvKioKKyAqIHJoYXNodGFibGVfbG9va3VwX2Zhc3Qg LSBzZWFyY2ggaGFzaCB0YWJsZSwgd2l0aG91dCBSQ1UgcmVhZCBsb2NrCisgKiBAaHQ6CQloYXNo IHRhYmxlCisgKiBAa2V5Ogl0aGUgcG9pbnRlciB0byB0aGUga2V5CisgKiBAcGFyYW1zOgloYXNo IHRhYmxlIHBhcmFtZXRlcnMKKyAqCisgKiBDb21wdXRlcyB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhl IGtleSBhbmQgdHJhdmVyc2VzIHRoZSBidWNrZXQgY2hhaW4gbG9va2luZworICogZm9yIGEgZW50 cnkgd2l0aCBhbiBpZGVudGljYWwga2V5LiBUaGUgZmlyc3QgbWF0Y2hpbmcgZW50cnkgaXMgcmV0 dXJuZWQuCisgKgorICogT25seSB1c2UgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdSBoYXZlIG90aGVy IG1lY2hhbmlzbXMgZ3VhcmFudGVlaW5nCisgKiB0aGF0IHRoZSBvYmplY3Qgd29uJ3QgZ28gYXdh eSBhZnRlciB0aGUgUkNVIHJlYWQgbG9jayBpcyByZWxlYXNlZC4KKyAqCisgKiBSZXR1cm5zIHRo ZSBmaXJzdCBlbnRyeSBvbiB3aGljaCB0aGUgY29tcGFyZSBmdW5jdGlvbiByZXR1cm5lZCB0cnVl LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgKnJoYXNodGFibGVfbG9va3VwX2Zhc3QoCisJc3Ry dWN0IHJoYXNodGFibGUgKmh0LCBjb25zdCB2b2lkICprZXksCisJY29uc3Qgc3RydWN0IHJoYXNo dGFibGVfcGFyYW1zIHBhcmFtcykKK3sKKwl2b2lkICpvYmo7CisKKwlyY3VfcmVhZF9sb2NrKCk7 CisJb2JqID0gcmhhc2h0YWJsZV9sb29rdXAoaHQsIGtleSwgcGFyYW1zKTsKKwlyY3VfcmVhZF91 bmxvY2soKTsKKworCXJldHVybiBvYmo7Cit9CisKIC8qIEludGVybmFsIGZ1bmN0aW9uLCBwbGVh c2UgdXNlIHJoYXNodGFibGVfaW5zZXJ0X2Zhc3QoKSBpbnN0ZWFkLiBUaGlzCiAgKiBmdW5jdGlv biByZXR1cm5zIHRoZSBleGlzdGluZyBlbGVtZW50IGFscmVhZHkgaW4gaGFzaGVzIGluIHRoZXJl IGlzIGEgY2xhc2gsCiAgKiBvdGhlcndpc2UgaXQgcmV0dXJucyBhbiBlcnJvciB2aWEgRVJSX1BU UigpLgoKRnJvbSBkYTIzMmRhZjRkNTZjMTJhMDcyNDI4OGQ4OWIwYzFlMzg0YzQxOGQ2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6Mjk6NTUgLTA3MDAKU3ViamVjdDogWzA4LzMz XSByaGFzaHRhYmxlOiBhZGQgc2NoZWR1bGUgcG9pbnRzCgpjb21taXQgYWU2ZGExZjUwM2FiYjVh NTA4MWY5ZjZjNGE2ODgxZGU5NzgzMGYzZSB1cHN0cmVhbS4KClJlaGFzaGluZyBhbmQgZGVzdHJv eWluZyBsYXJnZSBoYXNoIHRhYmxlIHRha2VzIGEgbG90IG9mIHRpbWUsCmFuZCBoYXBwZW5zIGlu IHByb2Nlc3MgY29udGV4dC4gSXQgaXMgc2FmZSB0byBhZGQgY29uZF9yZXNjaGVkKCkKaW4gcmhh c2h0YWJsZV9yZWhhc2hfdGFibGUoKSBhbmQgcmhhc2h0YWJsZV9mcmVlX2FuZF9kZXN0cm95KCkK ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQt Ynk6IEhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBs aWIvcmhhc2h0YWJsZS5jIHwgNSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpYi9yaGFzaHRhYmxlLmMgYi9saWIvcmhh c2h0YWJsZS5jCmluZGV4IDk5MWJlZTMyZTUyZS4uN2JiODY0OTQyOWJmIDEwMDY0NAotLS0gYS9s aWIvcmhhc2h0YWJsZS5jCisrKyBiL2xpYi9yaGFzaHRhYmxlLmMKQEAgLTI1MCw4ICsyNTAsMTAg QEAgc3RhdGljIGludCByaGFzaHRhYmxlX3JlaGFzaF90YWJsZShzdHJ1Y3Qgcmhhc2h0YWJsZSAq aHQpCiAJaWYgKCFuZXdfdGJsKQogCQlyZXR1cm4gMDsKIAotCWZvciAob2xkX2hhc2ggPSAwOyBv bGRfaGFzaCA8IG9sZF90YmwtPnNpemU7IG9sZF9oYXNoKyspCisJZm9yIChvbGRfaGFzaCA9IDA7 IG9sZF9oYXNoIDwgb2xkX3RibC0+c2l6ZTsgb2xkX2hhc2grKykgewogCQlyaGFzaHRhYmxlX3Jl aGFzaF9jaGFpbihodCwgb2xkX2hhc2gpOworCQljb25kX3Jlc2NoZWQoKTsKKwl9CiAKIAkvKiBQ dWJsaXNoIHRoZSBuZXcgdGFibGUgcG9pbnRlci4gKi8KIAlyY3VfYXNzaWduX3BvaW50ZXIoaHQt PnRibCwgbmV3X3RibCk7CkBAIC04NDIsNiArODQ0LDcgQEAgdm9pZCByaGFzaHRhYmxlX2ZyZWVf YW5kX2Rlc3Ryb3koc3RydWN0IHJoYXNodGFibGUgKmh0LAogCQlmb3IgKGkgPSAwOyBpIDwgdGJs LT5zaXplOyBpKyspIHsKIAkJCXN0cnVjdCByaGFzaF9oZWFkICpwb3MsICpuZXh0OwogCisJCQlj b25kX3Jlc2NoZWQoKTsKIAkJCWZvciAocG9zID0gcmh0X2RlcmVmZXJlbmNlKHRibC0+YnVja2V0 c1tpXSwgaHQpLAogCQkJICAgICBuZXh0ID0gIXJodF9pc19hX251bGxzKHBvcykgPwogCQkJCQly aHRfZGVyZWZlcmVuY2UocG9zLT5uZXh0LCBodCkgOiBOVUxMOwoKRnJvbSBiOWEwNjdlODIxN2Fk N2M0MmYyZDNhZDY5NzUxMTE2NGViYTcxZWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTAgT2N0IDIw MTggMTI6Mjk6NTYgLTA3MDAKU3ViamVjdDogWzA5LzMzXSBpbmV0OiBmcmFnczogdXNlIHJoYXNo dGFibGVzIGZvciByZWFzc2VtYmx5IHVuaXRzCgpjb21taXQgNjQ4NzAwZjc2YjAzYjdlODE0OWQx M2NjMmJkYjMzNTUwMzUyNThhOSB1cHN0cmVhbS4KClNvbWUgYXBwbGljYXRpb25zIHN0aWxsIHJl bHkgb24gSVAgZnJhZ21lbnRhdGlvbiwgYW5kIHRvIGJlIGZhaXIgbGludXgKcmVhc3NlbWJseSB1 bml0IGlzIG5vdCB3b3JraW5nIHVuZGVyIGFueSBzZXJpb3VzIGxvYWQuCgpJdCB1c2VzIHN0YXRp YyBoYXNoIHRhYmxlcyBvZiAxMDI0IGJ1Y2tldHMsIGFuZCB1cCB0byAxMjggaXRlbXMgcGVyIGJ1 Y2tldCAoISEhKQoKQSB3b3JrIHF1ZXVlIGlzIHN1cHBvc2VkIHRvIGdhcmJhZ2UgY29sbGVjdCBp dGVtcyB3aGVuIGhvc3QgaXMgdW5kZXIgbWVtb3J5CnByZXNzdXJlLCBhbmQgZG9pbmcgYSBoYXNo IHJlYnVpbGQsIGNoYW5naW5nIHNlZWQgdXNlZCBpbiBoYXNoIGNvbXB1dGF0aW9ucy4KClRoaXMg d29yayBxdWV1ZSBibG9ja3Mgc29mdGlycXMgZm9yIHVwIHRvIDI1IG1zIHdoZW4gZG9pbmcgYSBo YXNoIHJlYnVpbGQsCm9jY3VycmluZyBldmVyeSA1IHNlY29uZHMgaWYgaG9zdCBpcyB1bmRlciBm aXJlLgoKVGhlbiB0aGVyZSBpcyB0aGUgcHJvYmxlbSBvZiBzaGFyaW5nIHRoaXMgaGFzaCB0YWJs ZSBmb3IgYWxsIG5ldG5zLgoKSXQgaXMgdGltZSB0byBzd2l0Y2ggdG8gcmhhc2h0YWJsZXMsIGFu ZCBhbGxvY2F0ZSBvbmUgb2YgdGhlbSBwZXIgbmV0bnMKdG8gc3BlZWR1cCBuZXRucyBkaXNtYW50 bGUsIHNpbmNlIHRoaXMgaXMgYSBjcml0aWNhbCBtZXRyaWMgdGhlc2UgZGF5cy4KCkxvb2t1cCBp cyBub3cgdXNpbmcgUkNVLiBBIGZvbGxvd3VwIHBhdGNoIHdpbGwgZXZlbiByZW1vdmUKdGhlIHJl ZmNvdW50IGhvbGQvcmVsZWFzZSBsZWZ0IGZyb20gcHJpb3IgaW1wbGVtZW50YXRpb24gYW5kIHNh dmUKYSBjb3VwbGUgb2YgYXRvbWljIG9wZXJhdGlvbnMuCgpCZWZvcmUgdGhpcyBwYXRjaCwgMTYg Y3B1cyAoMTYgUlggcXVldWUgTklDKSBjb3VsZCBub3QgaGFuZGxlIG1vcmUKdGhhbiAxIE1wcHMg ZnJhZ3MgRERPUy4KCkFmdGVyIHRoZSBwYXRjaCwgSSByZWFjaCA5IE1wcHMgd2l0aG91dCBhbnkg dHVuaW5nLCBhbmQgY2FuIHVzZSB1cCB0byAyR0IKb2Ygc3RvcmFnZSBmb3IgdGhlIGZyYWdtZW50 cyAoZXhhY3QgbnVtYmVyIGRlcGVuZHMgb24gZnJhZ3MgYmVpbmcgZXZpY3RlZAphZnRlciB0aW1l b3V0KQoKJCBncmVwIEZSQUcgL3Byb2MvbmV0L3NvY2tzdGF0CkZSQUc6IGludXNlIDE5NjY5MTYg bWVtb3J5IDIxNDAwMDQ2MDgKCkEgZm9sbG93dXAgcGF0Y2ggd2lsbCBjaGFuZ2UgdGhlIGxpbWl0 cyBmb3IgNjRiaXQgYXJjaGVzLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpDYzogS2lyaWxsIFRraGFpIDxrdGtoYWlAdmlydHVvenpvLmNvbT4KQ2M6 IEhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KQ2M6IEZsb3JpYW4gV2Vz dHBoYWwgPGZ3QHN0cmxlbi5kZT4KQ2M6IEplc3BlciBEYW5nYWFyZCBCcm91ZXIgPGJyb3VlckBy ZWRoYXQuY29tPgpDYzogQWxleGFuZGVyIEFyaW5nIDxhbGV4LmFyaW5nQGdtYWlsLmNvbT4KQ2M6 IFN0ZWZhbiBTY2htaWR0IDxzdGVmYW5Ab3NnLnNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2twb3J0 ZWQgdG8gNC40OiBhZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8 YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogRG9jdW1lbnRhdGlvbi9uZXR3b3Jr aW5nL2lwLXN5c2N0bC50eHQgIHwgICA3ICstCiBpbmNsdWRlL25ldC9pbmV0X2ZyYWcuaCAgICAg ICAgICAgICAgICAgfCAgODEgKysrKy0tLS0KIGluY2x1ZGUvbmV0L2lwdjYuaCAgICAgICAgICAg ICAgICAgICAgICB8ICAxNiArLQogbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi82bG93cGFuX2kuaCAg ICAgIHwgIDI2ICstLQogbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMgICAgIHwg IDkxICsrKystLS0tLQogbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jICAgICAgICAgICAgICAgIHwg MzQ5ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVu dC5jICAgICAgICAgICAgICAgICAgfCAxMTIgKysrKystLS0tLQogbmV0L2lwdjYvbmV0ZmlsdGVy L25mX2Nvbm50cmFja19yZWFzbS5jIHwgIDUxICsrLS0tCiBuZXQvaXB2Ni9yZWFzc2VtYmx5LmMg ICAgICAgICAgICAgICAgICAgfCAxMTAgKysrKystLS0tLQogOSBmaWxlcyBjaGFuZ2VkLCAyNjcg aW5zZXJ0aW9ucygrKSwgNTc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lw LXN5c2N0bC50eHQKaW5kZXggMmVhNGM0NWNmMWM4Li4yYWE1NmNjYWE5OTYgMTAwNjQ0Ci0tLSBh L0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0CisrKyBiL0RvY3VtZW50YXRp b24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0CkBAIC0xMTMsMTMgKzExMywxMCBAQCBtaW5fYWR2 X21zcyAtIElOVEVHRVIKIElQIEZyYWdtZW50YXRpb246CiAKIGlwZnJhZ19oaWdoX3RocmVzaCAt IElOVEVHRVIKLQlNYXhpbXVtIG1lbW9yeSB1c2VkIHRvIHJlYXNzZW1ibGUgSVAgZnJhZ21lbnRz LiBXaGVuCi0JaXBmcmFnX2hpZ2hfdGhyZXNoIGJ5dGVzIG9mIG1lbW9yeSBpcyBhbGxvY2F0ZWQg Zm9yIHRoaXMgcHVycG9zZSwKLQl0aGUgZnJhZ21lbnQgaGFuZGxlciB3aWxsIHRvc3MgcGFja2V0 cyB1bnRpbCBpcGZyYWdfbG93X3RocmVzaAotCWlzIHJlYWNoZWQuIFRoaXMgYWxzbyBzZXJ2ZXMg YXMgYSBtYXhpbXVtIGxpbWl0IHRvIG5hbWVzcGFjZXMKLQlkaWZmZXJlbnQgZnJvbSB0aGUgaW5p dGlhbCBvbmUuCisJTWF4aW11bSBtZW1vcnkgdXNlZCB0byByZWFzc2VtYmxlIElQIGZyYWdtZW50 cy4KIAogaXBmcmFnX2xvd190aHJlc2ggLSBJTlRFR0VSCisJKE9ic29sZXRlIHNpbmNlIGxpbnV4 LTQuMTcpCiAJTWF4aW11bSBtZW1vcnkgdXNlZCB0byByZWFzc2VtYmxlIElQIGZyYWdtZW50cyBi ZWZvcmUgdGhlIGtlcm5lbAogCWJlZ2lucyB0byByZW1vdmUgaW5jb21wbGV0ZSBmcmFnbWVudCBx dWV1ZXMgdG8gZnJlZSB1cCByZXNvdXJjZXMuCiAJVGhlIGtlcm5lbCBzdGlsbCBhY2NlcHRzIG5l dyBmcmFnbWVudHMgZm9yIGRlZnJhZ21lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0 L2luZXRfZnJhZy5oIGIvaW5jbHVkZS9uZXQvaW5ldF9mcmFnLmgKaW5kZXggMTI1ODlmMDhlMDY0 Li42MjNlYjgyMjJhNzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCisrKyBi L2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCkBAIC0xLDcgKzEsMTEgQEAKICNpZm5kZWYgX19ORVRf RlJBR19IX18KICNkZWZpbmUgX19ORVRfRlJBR19IX18KIAorI2luY2x1ZGUgPGxpbnV4L3JoYXNo dGFibGUuaD4KKwogc3RydWN0IG5ldG5zX2ZyYWdzIHsKKwlzdHJ1Y3Qgcmhhc2h0YWJsZSAgICAg ICByaGFzaHRhYmxlIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CisKIAkvKiBLZWVwIGF0 b21pYyBtZW0gb24gc2VwYXJhdGUgY2FjaGVsaW5lcyBpbiBzdHJ1Y3RzIHRoYXQgaW5jbHVkZSBp dCAqLwogCWF0b21pY190CQltZW0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKIAkvKiBz eXNjdGxzICovCkBAIC0yNCwxMiArMjgsMzAgQEAgZW51bSB7CiAJSU5FVF9GUkFHX0NPTVBMRVRF CT0gQklUKDIpLAogfTsKIAorc3RydWN0IGZyYWdfdjRfY29tcGFyZV9rZXkgeworCV9fYmUzMgkJ c2FkZHI7CisJX19iZTMyCQlkYWRkcjsKKwl1MzIJCXVzZXI7CisJdTMyCQl2aWY7CisJX19iZTE2 CQlpZDsKKwl1MTYJCXByb3RvY29sOworfTsKKworc3RydWN0IGZyYWdfdjZfY29tcGFyZV9rZXkg eworCXN0cnVjdCBpbjZfYWRkcglzYWRkcjsKKwlzdHJ1Y3QgaW42X2FkZHIJZGFkZHI7CisJdTMy CQl1c2VyOworCV9fYmUzMgkJaWQ7CisJdTMyCQlpaWY7Cit9OworCiAvKioKICAqIHN0cnVjdCBp bmV0X2ZyYWdfcXVldWUgLSBmcmFnbWVudCBxdWV1ZQogICoKLSAqIEBsb2NrOiBzcGlubG9jayBw cm90ZWN0aW5nIHRoZSBxdWV1ZQorICogQG5vZGU6IHJoYXNoIG5vZGUKKyAqIEBrZXk6IGtleXMg aWRlbnRpZnlpbmcgdGhpcyBmcmFnLgogICogQHRpbWVyOiBxdWV1ZSBleHBpcmF0aW9uIHRpbWVy Ci0gKiBAbGlzdDogaGFzaCBidWNrZXQgbGlzdAorICogQGxvY2s6IHNwaW5sb2NrIHByb3RlY3Rp bmcgdGhpcyBmcmFnCiAgKiBAcmVmY250OiByZWZlcmVuY2UgY291bnQgb2YgdGhlIHF1ZXVlCiAg KiBAZnJhZ21lbnRzOiByZWNlaXZlZCBmcmFnbWVudHMgaGVhZAogICogQGZyYWdtZW50c190YWls OiByZWNlaXZlZCBmcmFnbWVudHMgdGFpbApAQCAtMzksMTIgKzYxLDE2IEBAIGVudW0gewogICog QGZsYWdzOiBmcmFnbWVudCBxdWV1ZSBmbGFncwogICogQG1heF9zaXplOiBtYXhpbXVtIHJlY2Vp dmVkIGZyYWdtZW50IHNpemUKICAqIEBuZXQ6IG5hbWVzcGFjZSB0aGF0IHRoaXMgZnJhZyBiZWxv bmdzIHRvCi0gKiBAbGlzdF9ldmljdG9yOiBsaXN0IG9mIHF1ZXVlcyB0byBmb3JjZWZ1bGx5IGV2 aWN0IChlLmcuIGR1ZSB0byBsb3cgbWVtb3J5KQorICogQHJjdTogcmN1IGhlYWQgZm9yIGZyZWVp bmcgZGVmZXJhbGwKICAqLwogc3RydWN0IGluZXRfZnJhZ19xdWV1ZSB7Ci0Jc3BpbmxvY2tfdAkJ bG9jazsKKwlzdHJ1Y3Qgcmhhc2hfaGVhZAlub2RlOworCXVuaW9uIHsKKwkJc3RydWN0IGZyYWdf djRfY29tcGFyZV9rZXkgdjQ7CisJCXN0cnVjdCBmcmFnX3Y2X2NvbXBhcmVfa2V5IHY2OworCX0g a2V5OwogCXN0cnVjdCB0aW1lcl9saXN0CXRpbWVyOwotCXN0cnVjdCBobGlzdF9ub2RlCWxpc3Q7 CisJc3BpbmxvY2tfdAkJbG9jazsKIAlhdG9taWNfdAkJcmVmY250OwogCXN0cnVjdCBza19idWZm CQkqZnJhZ21lbnRzOwogCXN0cnVjdCBza19idWZmCQkqZnJhZ21lbnRzX3RhaWw7CkBAIC01Myw0 NSArNzksMTMgQEAgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSB7CiAJaW50CQkJbWVhdDsKIAlfX3U4 CQkJZmxhZ3M7CiAJdTE2CQkJbWF4X3NpemU7Ci0Jc3RydWN0IG5ldG5zX2ZyYWdzCSpuZXQ7Ci0J c3RydWN0IGhsaXN0X25vZGUJbGlzdF9ldmljdG9yOwotfTsKLQotI2RlZmluZSBJTkVURlJBR1Nf SEFTSFNaCTEwMjQKLQotLyogYXZlcmFnZWQ6Ci0gKiBtYXhfZGVwdGggPSBkZWZhdWx0IGlwZnJh Z19oaWdoX3RocmVzaCAvIElORVRGUkFHU19IQVNIU1ogLwotICoJICAgICAgIHJvdW5kZWQgdXAg KFNLQl9UUlVFTEVOKDApICsgc2l6ZW9mKHN0cnVjdCBpcHEgb3IKLSAqCSAgICAgICBzdHJ1Y3Qg ZnJhZ19xdWV1ZSkpCi0gKi8KLSNkZWZpbmUgSU5FVEZSQUdTX01BWERFUFRICTEyOAotCi1zdHJ1 Y3QgaW5ldF9mcmFnX2J1Y2tldCB7Ci0Jc3RydWN0IGhsaXN0X2hlYWQJY2hhaW47Ci0Jc3Bpbmxv Y2tfdAkJY2hhaW5fbG9jazsKKwlzdHJ1Y3QgbmV0bnNfZnJhZ3MgICAgICAqbmV0OworCXN0cnVj dCByY3VfaGVhZAkJcmN1OwogfTsKIAogc3RydWN0IGluZXRfZnJhZ3MgewotCXN0cnVjdCBpbmV0 X2ZyYWdfYnVja2V0CWhhc2hbSU5FVEZSQUdTX0hBU0hTWl07Ci0KLQlzdHJ1Y3Qgd29ya19zdHJ1 Y3QJZnJhZ3Nfd29yazsKLQl1bnNpZ25lZCBpbnQgbmV4dF9idWNrZXQ7Ci0JdW5zaWduZWQgbG9u ZyBsYXN0X3JlYnVpbGRfamlmZmllczsKLQlib29sIHJlYnVpbGQ7Ci0KLQkvKiBUaGUgZmlyc3Qg Y2FsbCB0byBoYXNoZm4gaXMgcmVzcG9uc2libGUgdG8gaW5pdGlhbGl6ZQotCSAqIHJuZC4gVGhp cyBpcyBiZXN0IGRvbmUgd2l0aCBuZXRfZ2V0X3JhbmRvbV9vbmNlLgotCSAqCi0JICogcm5kX3Nl cWxvY2sgaXMgdXNlZCB0byBsZXQgaGFzaCBpbnNlcnRpb24gZGV0ZWN0Ci0JICogd2hlbiBpdCBu ZWVkcyB0byByZS1sb29rdXAgdGhlIGhhc2ggY2hhaW4gdG8gdXNlLgotCSAqLwotCXUzMgkJCXJu ZDsKLQlzZXFsb2NrX3QJCXJuZF9zZXFsb2NrOwogCWludAkJCXFzaXplOwogCi0JdW5zaWduZWQg aW50CQkoKmhhc2hmbikoY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqKTsKLQlib29sCQkJ KCptYXRjaCkoY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwKLQkJCQkJIGNvbnN0IHZv aWQgKmFyZyk7CiAJdm9pZAkJCSgqY29uc3RydWN0b3IpKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUg KnEsCiAJCQkJCSAgICAgICBjb25zdCB2b2lkICphcmcpOwogCXZvaWQJCQkoKmRlc3RydWN0b3Ip KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKik7CkBAIC05OSw2ICs5Myw3IEBAIHN0cnVjdCBpbmV0 X2ZyYWdzIHsKIAl2b2lkCQkJKCpmcmFnX2V4cGlyZSkodW5zaWduZWQgbG9uZyBkYXRhKTsKIAlz dHJ1Y3Qga21lbV9jYWNoZQkqZnJhZ3NfY2FjaGVwOwogCWNvbnN0IGNoYXIJCSpmcmFnc19jYWNo ZV9uYW1lOworCXN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyByaGFzaF9wYXJhbXM7CiB9OwogCiBp bnQgaW5ldF9mcmFnc19pbml0KHN0cnVjdCBpbmV0X2ZyYWdzICopOwpAQCAtMTA3LDE1ICsxMDIs MTMgQEAgdm9pZCBpbmV0X2ZyYWdzX2Zpbmkoc3RydWN0IGluZXRfZnJhZ3MgKik7CiBzdGF0aWMg aW5saW5lIGludCBpbmV0X2ZyYWdzX2luaXRfbmV0KHN0cnVjdCBuZXRuc19mcmFncyAqbmYpCiB7 CiAJYXRvbWljX3NldCgmbmYtPm1lbSwgMCk7Ci0JcmV0dXJuIDA7CisJcmV0dXJuIHJoYXNodGFi bGVfaW5pdCgmbmYtPnJoYXNodGFibGUsICZuZi0+Zi0+cmhhc2hfcGFyYW1zKTsKIH0KIHZvaWQg aW5ldF9mcmFnc19leGl0X25ldChzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mKTsKIAogdm9pZCBpbmV0 X2ZyYWdfa2lsbChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxKTsKIHZvaWQgaW5ldF9mcmFnX2Rl c3Ryb3koc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSk7Ci1zdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVl ICppbmV0X2ZyYWdfZmluZChzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mLAotCQlzdHJ1Y3QgaW5ldF9m cmFncyAqZiwgdm9pZCAqa2V5LCB1bnNpZ25lZCBpbnQgaGFzaCk7Ci0KK3N0cnVjdCBpbmV0X2Zy YWdfcXVldWUgKmluZXRfZnJhZ19maW5kKHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIHZvaWQgKmtl eSk7CiB2b2lkIGluZXRfZnJhZ19tYXliZV93YXJuX292ZXJmbG93KHN0cnVjdCBpbmV0X2ZyYWdf cXVldWUgKnEsCiAJCQkJICAgY29uc3QgY2hhciAqcHJlZml4KTsKIApAQCAtMTI3LDcgKzEyMCw3 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2ZyYWdfcHV0KHN0cnVjdCBpbmV0X2ZyYWdfcXVl dWUgKnEpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmV0X2ZyYWdfZXZpY3Rpbmcoc3RydWN0IGlu ZXRfZnJhZ19xdWV1ZSAqcSkKIHsKLQlyZXR1cm4gIWhsaXN0X3VuaGFzaGVkKCZxLT5saXN0X2V2 aWN0b3IpOworCXJldHVybiBmYWxzZTsKIH0KIAogLyogTWVtb3J5IFRyYWNraW5nIEZ1bmN0aW9u cy4gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYu aAppbmRleCA5ZDhlYWNlNmQ0NTUuLjIwNjdiYmVjMDIxYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9u ZXQvaXB2Ni5oCisrKyBiL2luY2x1ZGUvbmV0L2lwdjYuaApAQCAtNTA1LDE3ICs1MDUsOCBAQCBl bnVtIGlwNl9kZWZyYWdfdXNlcnMgewogCV9fSVA2X0RFRlJBR19DT05OVFJBQ0tfQlJJREdFX0lO ID0gSVA2X0RFRlJBR19DT05OVFJBQ0tfQlJJREdFX0lOICsgVVNIUlRfTUFYLAogfTsKIAotc3Ry dWN0IGlwNl9jcmVhdGVfYXJnIHsKLQlfX2JlMzIgaWQ7Ci0JdTMyIHVzZXI7Ci0JY29uc3Qgc3Ry dWN0IGluNl9hZGRyICpzcmM7Ci0JY29uc3Qgc3RydWN0IGluNl9hZGRyICpkc3Q7Ci0JaW50IGlp ZjsKLQl1OCBlY247Ci19OwotCiB2b2lkIGlwNl9mcmFnX2luaXQoc3RydWN0IGluZXRfZnJhZ19x dWV1ZSAqcSwgY29uc3Qgdm9pZCAqYSk7Ci1ib29sIGlwNl9mcmFnX21hdGNoKGNvbnN0IHN0cnVj dCBpbmV0X2ZyYWdfcXVldWUgKnEsIGNvbnN0IHZvaWQgKmEpOworZXh0ZXJuIGNvbnN0IHN0cnVj dCByaGFzaHRhYmxlX3BhcmFtcyBpcDZfcmhhc2hfcGFyYW1zOwogCiAvKgogICoJRXF1aXZhbGVu dCBvZiBpcHY0IHN0cnVjdCBpcApAQCAtNTIzLDExICs1MTQsNiBAQCBib29sIGlwNl9mcmFnX21h dGNoKGNvbnN0IHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEsIGNvbnN0IHZvaWQgKmEpOwogc3Ry dWN0IGZyYWdfcXVldWUgewogCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUJcTsKIAotCV9fYmUzMgkJ CWlkOwkJLyogZnJhZ21lbnQgaWQJCSovCi0JdTMyCQkJdXNlcjsKLQlzdHJ1Y3QgaW42X2FkZHIJ CXNhZGRyOwotCXN0cnVjdCBpbjZfYWRkcgkJZGFkZHI7Ci0KIAlpbnQJCQlpaWY7CiAJdW5zaWdu ZWQgaW50CQljc3VtOwogCV9fdTE2CQkJbmhvZmZzZXQ7CmRpZmYgLS1naXQgYS9uZXQvaWVlZTgw MjE1NC82bG93cGFuLzZsb3dwYW5faS5oIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi82bG93cGFu X2kuaAppbmRleCBiNGUxN2E3YzBkZjAuLjNjNWZjMDY4ODNiYSAxMDA2NDQKLS0tIGEvbmV0L2ll ZWU4MDIxNTQvNmxvd3Bhbi82bG93cGFuX2kuaAorKysgYi9uZXQvaWVlZTgwMjE1NC82bG93cGFu LzZsb3dwYW5faS5oCkBAIC0xNiwzNyArMTYsMTkgQEAgdHlwZWRlZiB1bnNpZ25lZCBfX2JpdHdp c2VfXyBsb3dwYW5fcnhfcmVzdWx0OwogI2RlZmluZSBMT1dQQU5fRElTUEFUQ0hfRlJBRzEgICAg ICAgICAgIDB4YzAKICNkZWZpbmUgTE9XUEFOX0RJU1BBVENIX0ZSQUdOICAgICAgICAgICAweGUw CiAKLXN0cnVjdCBsb3dwYW5fY3JlYXRlX2FyZyB7CitzdHJ1Y3QgZnJhZ19sb3dwYW5fY29tcGFy ZV9rZXkgewogCXUxNiB0YWc7CiAJdTE2IGRfc2l6ZTsKLQljb25zdCBzdHJ1Y3QgaWVlZTgwMjE1 NF9hZGRyICpzcmM7Ci0JY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfYWRkciAqZHN0OworCWNvbnN0 IHN0cnVjdCBpZWVlODAyMTU0X2FkZHIgc3JjOworCWNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X2Fk ZHIgZHN0OwogfTsKIAotLyogRXF1aXZhbGVudCBvZiBpcHY0IHN0cnVjdCBpcAorLyogRXF1aXZh bGVudCBvZiBpcHY0IHN0cnVjdCBpcHEKICAqLwogc3RydWN0IGxvd3Bhbl9mcmFnX3F1ZXVlIHsK IAlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlCXE7Ci0KLQl1MTYJCQl0YWc7Ci0JdTE2CQkJZF9zaXpl OwotCXN0cnVjdCBpZWVlODAyMTU0X2FkZHIJc2FkZHI7Ci0Jc3RydWN0IGllZWU4MDIxNTRfYWRk cglkYWRkcjsKIH07CiAKLXN0YXRpYyBpbmxpbmUgdTMyIGllZWU4MDIxNTRfYWRkcl9oYXNoKGNv bnN0IHN0cnVjdCBpZWVlODAyMTU0X2FkZHIgKmEpCi17Ci0Jc3dpdGNoIChhLT5tb2RlKSB7Ci0J Y2FzZSBJRUVFODAyMTU0X0FERFJfTE9ORzoKLQkJcmV0dXJuICgoKF9fZm9yY2UgdTY0KWEtPmV4 dGVuZGVkX2FkZHIpID4+IDMyKSBeCi0JCQkoKChfX2ZvcmNlIHU2NClhLT5leHRlbmRlZF9hZGRy KSAmIDB4ZmZmZmZmZmYpOwotCWNhc2UgSUVFRTgwMjE1NF9BRERSX1NIT1JUOgotCQlyZXR1cm4g KF9fZm9yY2UgdTMyKShhLT5zaG9ydF9hZGRyKTsKLQlkZWZhdWx0OgotCQlyZXR1cm4gMDsKLQl9 Ci19Ci0KIC8qIHByaXZhdGUgZGV2aWNlIGluZm8gKi8KIHN0cnVjdCBsb3dwYW5fZGV2X2luZm8g ewogCXN0cnVjdCBuZXRfZGV2aWNlCSp3ZGV2OyAvKiB3cGFuIGRldmljZSBwdHIgKi8KZGlmZiAt LWdpdCBhL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5jIGIvbmV0L2llZWU4MDIx NTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKaW5kZXggZGJhMGEzNGNmOTJhLi42NWMwYjczNDlmOWQg MTAwNjQ0Ci0tLSBhL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5jCisrKyBiL25l dC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5jCkBAIC0zNyw0NyArMzcsMTUgQEAgc3Rh dGljIHN0cnVjdCBpbmV0X2ZyYWdzIGxvd3Bhbl9mcmFnczsKIHN0YXRpYyBpbnQgbG93cGFuX2Zy YWdfcmVhc20oc3RydWN0IGxvd3Bhbl9mcmFnX3F1ZXVlICpmcSwKIAkJCSAgICAgc3RydWN0IHNr X2J1ZmYgKnByZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpsZGV2KTsKIAotc3RhdGljIHVuc2lnbmVk IGludCBsb3dwYW5faGFzaF9mcmFnKHUxNiB0YWcsIHUxNiBkX3NpemUsCi0JCQkJICAgICBjb25z dCBzdHJ1Y3QgaWVlZTgwMjE1NF9hZGRyICpzYWRkciwKLQkJCQkgICAgIGNvbnN0IHN0cnVjdCBp ZWVlODAyMTU0X2FkZHIgKmRhZGRyKQotewotCW5ldF9nZXRfcmFuZG9tX29uY2UoJmxvd3Bhbl9m cmFncy5ybmQsIHNpemVvZihsb3dwYW5fZnJhZ3Mucm5kKSk7Ci0JcmV0dXJuIGpoYXNoXzN3b3Jk cyhpZWVlODAyMTU0X2FkZHJfaGFzaChzYWRkciksCi0JCQkgICAgaWVlZTgwMjE1NF9hZGRyX2hh c2goZGFkZHIpLAotCQkJICAgIChfX2ZvcmNlIHUzMikodGFnICsgKGRfc2l6ZSA8PCAxNikpLAot CQkJICAgIGxvd3Bhbl9mcmFncy5ybmQpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgaW50IGxvd3Bh bl9oYXNoZm4oY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkKLXsKLQljb25zdCBzdHJ1 Y3QgbG93cGFuX2ZyYWdfcXVldWUgKmZxOwotCi0JZnEgPSBjb250YWluZXJfb2YocSwgc3RydWN0 IGxvd3Bhbl9mcmFnX3F1ZXVlLCBxKTsKLQlyZXR1cm4gbG93cGFuX2hhc2hfZnJhZyhmcS0+dGFn LCBmcS0+ZF9zaXplLCAmZnEtPnNhZGRyLCAmZnEtPmRhZGRyKTsKLX0KLQotc3RhdGljIGJvb2wg bG93cGFuX2ZyYWdfbWF0Y2goY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgY29uc3Qg dm9pZCAqYSkKLXsKLQljb25zdCBzdHJ1Y3QgbG93cGFuX2ZyYWdfcXVldWUgKmZxOwotCWNvbnN0 IHN0cnVjdCBsb3dwYW5fY3JlYXRlX2FyZyAqYXJnID0gYTsKLQotCWZxID0gY29udGFpbmVyX29m KHEsIHN0cnVjdCBsb3dwYW5fZnJhZ19xdWV1ZSwgcSk7Ci0JcmV0dXJuCWZxLT50YWcgPT0gYXJn LT50YWcgJiYgZnEtPmRfc2l6ZSA9PSBhcmctPmRfc2l6ZSAmJgotCQlpZWVlODAyMTU0X2FkZHJf ZXF1YWwoJmZxLT5zYWRkciwgYXJnLT5zcmMpICYmCi0JCWllZWU4MDIxNTRfYWRkcl9lcXVhbCgm ZnEtPmRhZGRyLCBhcmctPmRzdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGxvd3Bhbl9mcmFnX2luaXQo c3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgY29uc3Qgdm9pZCAqYSkKIHsKLQljb25zdCBzdHJ1 Y3QgbG93cGFuX2NyZWF0ZV9hcmcgKmFyZyA9IGE7CisJY29uc3Qgc3RydWN0IGZyYWdfbG93cGFu X2NvbXBhcmVfa2V5ICprZXkgPSBhOwogCXN0cnVjdCBsb3dwYW5fZnJhZ19xdWV1ZSAqZnE7CiAK IAlmcSA9IGNvbnRhaW5lcl9vZihxLCBzdHJ1Y3QgbG93cGFuX2ZyYWdfcXVldWUsIHEpOwogCi0J ZnEtPnRhZyA9IGFyZy0+dGFnOwotCWZxLT5kX3NpemUgPSBhcmctPmRfc2l6ZTsKLQlmcS0+c2Fk ZHIgPSAqYXJnLT5zcmM7Ci0JZnEtPmRhZGRyID0gKmFyZy0+ZHN0OworCUJVSUxEX0JVR19PTihz aXplb2YoKmtleSkgPiBzaXplb2YocS0+a2V5KSk7CisJbWVtY3B5KCZxLT5rZXksIGtleSwgc2l6 ZW9mKCprZXkpKTsKIH0KIAogc3RhdGljIHZvaWQgbG93cGFuX2ZyYWdfZXhwaXJlKHVuc2lnbmVk IGxvbmcgZGF0YSkKQEAgLTEwNCwyMSArNzIsMTcgQEAgZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQs IGNvbnN0IHN0cnVjdCBsb3dwYW5fODAyMTU0X2NiICpjYiwKIAljb25zdCBzdHJ1Y3QgaWVlZTgw MjE1NF9hZGRyICpzcmMsCiAJY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfYWRkciAqZHN0KQogewot CXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnE7Ci0Jc3RydWN0IGxvd3Bhbl9jcmVhdGVfYXJnIGFy ZzsKLQl1bnNpZ25lZCBpbnQgaGFzaDsKIAlzdHJ1Y3QgbmV0bnNfaWVlZTgwMjE1NF9sb3dwYW4g KmllZWU4MDIxNTRfbG93cGFuID0KIAkJbmV0X2llZWU4MDIxNTRfbG93cGFuKG5ldCk7CisJc3Ry dWN0IGZyYWdfbG93cGFuX2NvbXBhcmVfa2V5IGtleSA9IHsKKwkJLnRhZyA9IGNiLT5kX3RhZywK KwkJLmRfc2l6ZSA9IGNiLT5kX3NpemUsCisJCS5zcmMgPSAqc3JjLAorCQkuZHN0ID0gKmRzdCwK Kwl9OworCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnE7CiAKLQlhcmcudGFnID0gY2ItPmRfdGFn OwotCWFyZy5kX3NpemUgPSBjYi0+ZF9zaXplOwotCWFyZy5zcmMgPSBzcmM7Ci0JYXJnLmRzdCA9 IGRzdDsKLQotCWhhc2ggPSBsb3dwYW5faGFzaF9mcmFnKGNiLT5kX3RhZywgY2ItPmRfc2l6ZSwg c3JjLCBkc3QpOwotCi0JcSA9IGluZXRfZnJhZ19maW5kKCZpZWVlODAyMTU0X2xvd3Bhbi0+ZnJh Z3MsCi0JCQkgICAmbG93cGFuX2ZyYWdzLCAmYXJnLCBoYXNoKTsKKwlxID0gaW5ldF9mcmFnX2Zp bmQoJmllZWU4MDIxNTRfbG93cGFuLT5mcmFncywgJmtleSk7CiAJaWYgKElTX0VSUl9PUl9OVUxM KHEpKSB7CiAJCWluZXRfZnJhZ19tYXliZV93YXJuX292ZXJmbG93KHEsIHByX2ZtdCgpKTsKIAkJ cmV0dXJuIE5VTEw7CkBAIC02MTAsMTggKzU3NCw0NyBAQCBzdGF0aWMgc3RydWN0IHBlcm5ldF9v cGVyYXRpb25zIGxvd3Bhbl9mcmFnc19vcHMgPSB7CiAJLmV4aXQgPSBsb3dwYW5fZnJhZ3NfZXhp dF9uZXQsCiB9OwogCitzdGF0aWMgdTMyIGxvd3Bhbl9rZXlfaGFzaGZuKGNvbnN0IHZvaWQgKmRh dGEsIHUzMiBsZW4sIHUzMiBzZWVkKQoreworCXJldHVybiBqaGFzaDIoZGF0YSwKKwkJICAgICAg c2l6ZW9mKHN0cnVjdCBmcmFnX2xvd3Bhbl9jb21wYXJlX2tleSkgLyBzaXplb2YodTMyKSwgc2Vl ZCk7Cit9CisKK3N0YXRpYyB1MzIgbG93cGFuX29ial9oYXNoZm4oY29uc3Qgdm9pZCAqZGF0YSwg dTMyIGxlbiwgdTMyIHNlZWQpCit7CisJY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqZnEg PSBkYXRhOworCisJcmV0dXJuIGpoYXNoMigoY29uc3QgdTMyICopJmZxLT5rZXksCisJCSAgICAg IHNpemVvZihzdHJ1Y3QgZnJhZ19sb3dwYW5fY29tcGFyZV9rZXkpIC8gc2l6ZW9mKHUzMiksIHNl ZWQpOworfQorCitzdGF0aWMgaW50IGxvd3Bhbl9vYmpfY21wZm4oc3RydWN0IHJoYXNodGFibGVf Y29tcGFyZV9hcmcgKmFyZywgY29uc3Qgdm9pZCAqcHRyKQoreworCWNvbnN0IHN0cnVjdCBmcmFn X2xvd3Bhbl9jb21wYXJlX2tleSAqa2V5ID0gYXJnLT5rZXk7CisJY29uc3Qgc3RydWN0IGluZXRf ZnJhZ19xdWV1ZSAqZnEgPSBwdHI7CisKKwlyZXR1cm4gISFtZW1jbXAoJmZxLT5rZXksIGtleSwg c2l6ZW9mKCprZXkpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFt cyBsb3dwYW5fcmhhc2hfcGFyYW1zID0geworCS5oZWFkX29mZnNldAkJPSBvZmZzZXRvZihzdHJ1 Y3QgaW5ldF9mcmFnX3F1ZXVlLCBub2RlKSwKKwkuaGFzaGZuCQkJPSBsb3dwYW5fa2V5X2hhc2hm biwKKwkub2JqX2hhc2hmbgkJPSBsb3dwYW5fb2JqX2hhc2hmbiwKKwkub2JqX2NtcGZuCQk9IGxv d3Bhbl9vYmpfY21wZm4sCisJLmF1dG9tYXRpY19zaHJpbmtpbmcJPSB0cnVlLAorfTsKKwogaW50 IF9faW5pdCBsb3dwYW5fbmV0X2ZyYWdfaW5pdCh2b2lkKQogewogCWludCByZXQ7CiAKLQlsb3dw YW5fZnJhZ3MuaGFzaGZuID0gbG93cGFuX2hhc2hmbjsKIAlsb3dwYW5fZnJhZ3MuY29uc3RydWN0 b3IgPSBsb3dwYW5fZnJhZ19pbml0OwogCWxvd3Bhbl9mcmFncy5kZXN0cnVjdG9yID0gTlVMTDsK IAlsb3dwYW5fZnJhZ3Muc2tiX2ZyZWUgPSBOVUxMOwogCWxvd3Bhbl9mcmFncy5xc2l6ZSA9IHNp emVvZihzdHJ1Y3QgZnJhZ19xdWV1ZSk7Ci0JbG93cGFuX2ZyYWdzLm1hdGNoID0gbG93cGFuX2Zy YWdfbWF0Y2g7CiAJbG93cGFuX2ZyYWdzLmZyYWdfZXhwaXJlID0gbG93cGFuX2ZyYWdfZXhwaXJl OwogCWxvd3Bhbl9mcmFncy5mcmFnc19jYWNoZV9uYW1lID0gbG93cGFuX2ZyYWdzX2NhY2hlX25h bWU7CisJbG93cGFuX2ZyYWdzLnJoYXNoX3BhcmFtcyA9IGxvd3Bhbl9yaGFzaF9wYXJhbXM7CiAJ cmV0ID0gaW5ldF9mcmFnc19pbml0KCZsb3dwYW5fZnJhZ3MpOwogCWlmIChyZXQpCiAJCWdvdG8g b3V0OwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaW5l dF9mcmFnbWVudC5jCmluZGV4IDhjMmI4NjlkMDM1Zi4uMTBjZDdjMTgyMTM2IDEwMDY0NAotLS0g YS9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKKysrIGIvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5j CkBAIC0yNSwxMiArMjUsNiBAQAogI2luY2x1ZGUgPG5ldC9pbmV0X2ZyYWcuaD4KICNpbmNsdWRl IDxuZXQvaW5ldF9lY24uaD4KIAotI2RlZmluZSBJTkVURlJBR1NfRVZJQ1RfQlVDS0VUUyAgIDEy OAotI2RlZmluZSBJTkVURlJBR1NfRVZJQ1RfTUFYCSAgNTEyCi0KLS8qIGRvbid0IHJlYnVpbGQg aW5ldGZyYWcgdGFibGUgd2l0aCBuZXcgc2VjcmV0IG1vcmUgb2Z0ZW4gdGhhbiB0aGlzICovCi0j ZGVmaW5lIElORVRGUkFHU19NSU5fUkVCVUlMRF9JTlRFUlZBTCAoNSAqIEhaKQotCiAvKiBHaXZl biB0aGUgT1IgdmFsdWVzIG9mIGFsbCBmcmFnbWVudHMsIGFwcGx5IFJGQyAzMTY4IDUuMyByZXF1 aXJlbWVudHMKICAqIFZhbHVlIDogMHhmZiBpZiBmcmFtZSBzaG91bGQgYmUgZHJvcHBlZC4KICAq ICAgICAgICAgMCBvciBJTkVUX0VDTl9DRSB2YWx1ZSwgdG8gYmUgT1JlZCBpbiB0byBmaW5hbCBp cGgtPnRvcyBmaWVsZApAQCAtNTIsMTU3ICs0Niw4IEBAIGNvbnN0IHU4IGlwX2ZyYWdfZWNuX3Rh YmxlWzE2XSA9IHsKIH07CiBFWFBPUlRfU1lNQk9MKGlwX2ZyYWdfZWNuX3RhYmxlKTsKIAotc3Rh dGljIHVuc2lnbmVkIGludAotaW5ldF9mcmFnX2hhc2hmbihjb25zdCBzdHJ1Y3QgaW5ldF9mcmFn cyAqZiwgY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkKLXsKLQlyZXR1cm4gZi0+aGFz aGZuKHEpICYgKElORVRGUkFHU19IQVNIU1ogLSAxKTsKLX0KLQotc3RhdGljIGJvb2wgaW5ldF9m cmFnX21heV9yZWJ1aWxkKHN0cnVjdCBpbmV0X2ZyYWdzICpmKQotewotCXJldHVybiB0aW1lX2Fm dGVyKGppZmZpZXMsCi0JICAgICAgIGYtPmxhc3RfcmVidWlsZF9qaWZmaWVzICsgSU5FVEZSQUdT X01JTl9SRUJVSUxEX0lOVEVSVkFMKTsKLX0KLQotc3RhdGljIHZvaWQgaW5ldF9mcmFnX3NlY3Jl dF9yZWJ1aWxkKHN0cnVjdCBpbmV0X2ZyYWdzICpmKQotewotCWludCBpOwotCi0Jd3JpdGVfc2Vx bG9ja19iaCgmZi0+cm5kX3NlcWxvY2spOwotCi0JaWYgKCFpbmV0X2ZyYWdfbWF5X3JlYnVpbGQo ZikpCi0JCWdvdG8gb3V0OwotCi0JZ2V0X3JhbmRvbV9ieXRlcygmZi0+cm5kLCBzaXplb2YodTMy KSk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgSU5FVEZSQUdTX0hBU0hTWjsgaSsrKSB7Ci0JCXN0cnVj dCBpbmV0X2ZyYWdfYnVja2V0ICpoYjsKLQkJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKLQkJ c3RydWN0IGhsaXN0X25vZGUgKm47Ci0KLQkJaGIgPSAmZi0+aGFzaFtpXTsKLQkJc3Bpbl9sb2Nr KCZoYi0+Y2hhaW5fbG9jayk7Ci0KLQkJaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShxLCBuLCAm aGItPmNoYWluLCBsaXN0KSB7Ci0JCQl1bnNpZ25lZCBpbnQgaHZhbCA9IGluZXRfZnJhZ19oYXNo Zm4oZiwgcSk7Ci0KLQkJCWlmIChodmFsICE9IGkpIHsKLQkJCQlzdHJ1Y3QgaW5ldF9mcmFnX2J1 Y2tldCAqaGJfZGVzdDsKLQotCQkJCWhsaXN0X2RlbCgmcS0+bGlzdCk7Ci0KLQkJCQkvKiBSZWxp bmsgdG8gbmV3IGhhc2ggY2hhaW4uICovCi0JCQkJaGJfZGVzdCA9ICZmLT5oYXNoW2h2YWxdOwot Ci0JCQkJLyogVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3aGVyZSB3ZSB0YWtlCi0JCQkJICogYW5v dGhlciBjaGFpbl9sb2NrIHdoaWxlIGFscmVhZHkgaG9sZGluZwotCQkJCSAqIG9uZS4gIEFzIHRo aXMgd2lsbCBub3QgcnVuIGNvbmN1cnJlbnRseSwKLQkJCQkgKiB3ZSBjYW5ub3QgZGVhZGxvY2sg b24gaGJfZGVzdCBsb2NrIGJlbG93LCBpZiBpdHMKLQkJCQkgKiBhbHJlYWR5IGxvY2tlZCBpdCB3 aWxsIGJlIHJlbGVhc2VkIHNvb24gc2luY2UKLQkJCQkgKiBvdGhlciBjYWxsZXIgY2Fubm90IGJl IHdhaXRpbmcgZm9yIGhiIGxvY2sKLQkJCQkgKiB0aGF0IHdlJ3ZlIHRha2VuIGFib3ZlLgotCQkJ CSAqLwotCQkJCXNwaW5fbG9ja19uZXN0ZWQoJmhiX2Rlc3QtPmNoYWluX2xvY2ssCi0JCQkJCQkg U0lOR0xFX0RFUFRIX05FU1RJTkcpOwotCQkJCWhsaXN0X2FkZF9oZWFkKCZxLT5saXN0LCAmaGJf ZGVzdC0+Y2hhaW4pOwotCQkJCXNwaW5fdW5sb2NrKCZoYl9kZXN0LT5jaGFpbl9sb2NrKTsKLQkJ CX0KLQkJfQotCQlzcGluX3VubG9jaygmaGItPmNoYWluX2xvY2spOwotCX0KLQotCWYtPnJlYnVp bGQgPSBmYWxzZTsKLQlmLT5sYXN0X3JlYnVpbGRfamlmZmllcyA9IGppZmZpZXM7Ci1vdXQ6Ci0J d3JpdGVfc2VxdW5sb2NrX2JoKCZmLT5ybmRfc2VxbG9jayk7Ci19Ci0KLXN0YXRpYyBib29sIGlu ZXRfZnJhZ3Ffc2hvdWxkX2V2aWN0KGNvbnN0IHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpCi17 Ci0JaWYgKCFobGlzdF91bmhhc2hlZCgmcS0+bGlzdF9ldmljdG9yKSkKLQkJcmV0dXJuIGZhbHNl OwotCi0JcmV0dXJuIHEtPm5ldC0+bG93X3RocmVzaCA9PSAwIHx8Ci0JICAgICAgIGZyYWdfbWVt X2xpbWl0KHEtPm5ldCkgPj0gcS0+bmV0LT5sb3dfdGhyZXNoOwotfQotCi1zdGF0aWMgdW5zaWdu ZWQgaW50Ci1pbmV0X2V2aWN0X2J1Y2tldChzdHJ1Y3QgaW5ldF9mcmFncyAqZiwgc3RydWN0IGlu ZXRfZnJhZ19idWNrZXQgKmhiKQotewotCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmZxOwotCXN0 cnVjdCBobGlzdF9ub2RlICpuOwotCXVuc2lnbmVkIGludCBldmljdGVkID0gMDsKLQlITElTVF9I RUFEKGV4cGlyZWQpOwotCi0Jc3Bpbl9sb2NrKCZoYi0+Y2hhaW5fbG9jayk7Ci0KLQlobGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGZxLCBuLCAmaGItPmNoYWluLCBsaXN0KSB7Ci0JCWlmICghaW5l dF9mcmFncV9zaG91bGRfZXZpY3QoZnEpKQotCQkJY29udGludWU7Ci0KLQkJaWYgKCFkZWxfdGlt ZXIoJmZxLT50aW1lcikpCi0JCQljb250aW51ZTsKLQotCQlobGlzdF9hZGRfaGVhZCgmZnEtPmxp c3RfZXZpY3RvciwgJmV4cGlyZWQpOwotCQkrK2V2aWN0ZWQ7Ci0JfQotCi0Jc3Bpbl91bmxvY2so JmhiLT5jaGFpbl9sb2NrKTsKLQotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZnEsIG4sICZl eHBpcmVkLCBsaXN0X2V2aWN0b3IpCi0JCWYtPmZyYWdfZXhwaXJlKCh1bnNpZ25lZCBsb25nKSBm cSk7Ci0KLQlyZXR1cm4gZXZpY3RlZDsKLX0KLQotc3RhdGljIHZvaWQgaW5ldF9mcmFnX3dvcmtl cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCi17Ci0JdW5zaWduZWQgaW50IGJ1ZGdldCA9IElO RVRGUkFHU19FVklDVF9CVUNLRVRTOwotCXVuc2lnbmVkIGludCBpLCBldmljdGVkID0gMDsKLQlz dHJ1Y3QgaW5ldF9mcmFncyAqZjsKLQotCWYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGlu ZXRfZnJhZ3MsIGZyYWdzX3dvcmspOwotCi0JQlVJTERfQlVHX09OKElORVRGUkFHU19FVklDVF9C VUNLRVRTID49IElORVRGUkFHU19IQVNIU1opOwotCi0JbG9jYWxfYmhfZGlzYWJsZSgpOwotCi0J Zm9yIChpID0gQUNDRVNTX09OQ0UoZi0+bmV4dF9idWNrZXQpOyBidWRnZXQ7IC0tYnVkZ2V0KSB7 Ci0JCWV2aWN0ZWQgKz0gaW5ldF9ldmljdF9idWNrZXQoZiwgJmYtPmhhc2hbaV0pOwotCQlpID0g KGkgKyAxKSAmIChJTkVURlJBR1NfSEFTSFNaIC0gMSk7Ci0JCWlmIChldmljdGVkID4gSU5FVEZS QUdTX0VWSUNUX01BWCkKLQkJCWJyZWFrOwotCX0KLQotCWYtPm5leHRfYnVja2V0ID0gaTsKLQot CWxvY2FsX2JoX2VuYWJsZSgpOwotCi0JaWYgKGYtPnJlYnVpbGQgJiYgaW5ldF9mcmFnX21heV9y ZWJ1aWxkKGYpKQotCQlpbmV0X2ZyYWdfc2VjcmV0X3JlYnVpbGQoZik7Ci19Ci0KLXN0YXRpYyB2 b2lkIGluZXRfZnJhZ19zY2hlZHVsZV93b3JrZXIoc3RydWN0IGluZXRfZnJhZ3MgKmYpCi17Ci0J aWYgKHVubGlrZWx5KCF3b3JrX3BlbmRpbmcoJmYtPmZyYWdzX3dvcmspKSkKLQkJc2NoZWR1bGVf d29yaygmZi0+ZnJhZ3Nfd29yayk7Ci19Ci0KIGludCBpbmV0X2ZyYWdzX2luaXQoc3RydWN0IGlu ZXRfZnJhZ3MgKmYpCiB7Ci0JaW50IGk7Ci0KLQlJTklUX1dPUksoJmYtPmZyYWdzX3dvcmssIGlu ZXRfZnJhZ193b3JrZXIpOwotCi0JZm9yIChpID0gMDsgaSA8IElORVRGUkFHU19IQVNIU1o7IGkr KykgewotCQlzdHJ1Y3QgaW5ldF9mcmFnX2J1Y2tldCAqaGIgPSAmZi0+aGFzaFtpXTsKLQotCQlz cGluX2xvY2tfaW5pdCgmaGItPmNoYWluX2xvY2spOwotCQlJTklUX0hMSVNUX0hFQUQoJmhiLT5j aGFpbik7Ci0JfQotCi0Jc2VxbG9ja19pbml0KCZmLT5ybmRfc2VxbG9jayk7Ci0JZi0+bGFzdF9y ZWJ1aWxkX2ppZmZpZXMgPSAwOwogCWYtPmZyYWdzX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRl KGYtPmZyYWdzX2NhY2hlX25hbWUsIGYtPnFzaXplLCAwLCAwLAogCQkJCQkgICAgTlVMTCk7CiAJ aWYgKCFmLT5mcmFnc19jYWNoZXApCkBAIC0yMTQsNjYgKzU5LDQyIEBAIEVYUE9SVF9TWU1CT0wo aW5ldF9mcmFnc19pbml0KTsKIAogdm9pZCBpbmV0X2ZyYWdzX2Zpbmkoc3RydWN0IGluZXRfZnJh Z3MgKmYpCiB7Ci0JY2FuY2VsX3dvcmtfc3luYygmZi0+ZnJhZ3Nfd29yayk7CisJLyogV2UgbXVz dCB3YWl0IHRoYXQgYWxsIGluZXRfZnJhZ19kZXN0cm95X3JjdSgpIGhhdmUgY29tcGxldGVkLiAq LworCXJjdV9iYXJyaWVyKCk7CisKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZi0+ZnJhZ3NfY2FjaGVw KTsKKwlmLT5mcmFnc19jYWNoZXAgPSBOVUxMOwogfQogRVhQT1JUX1NZTUJPTChpbmV0X2ZyYWdz X2ZpbmkpOwogCi12b2lkIGluZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpu ZikKLXsKLQlzdHJ1Y3QgaW5ldF9mcmFncyAqZiA9bmYtPmY7Ci0JdW5zaWduZWQgaW50IHNlcTsK LQlpbnQgaTsKLQotCW5mLT5sb3dfdGhyZXNoID0gMDsKLQotZXZpY3RfYWdhaW46Ci0JbG9jYWxf YmhfZGlzYWJsZSgpOwotCXNlcSA9IHJlYWRfc2VxYmVnaW4oJmYtPnJuZF9zZXFsb2NrKTsKLQot CWZvciAoaSA9IDA7IGkgPCBJTkVURlJBR1NfSEFTSFNaIDsgaSsrKQotCQlpbmV0X2V2aWN0X2J1 Y2tldChmLCAmZi0+aGFzaFtpXSk7Ci0KLQlsb2NhbF9iaF9lbmFibGUoKTsKLQljb25kX3Jlc2No ZWQoKTsKLQotCWlmIChyZWFkX3NlcXJldHJ5KCZmLT5ybmRfc2VxbG9jaywgc2VxKSB8fAotCSAg ICBzdW1fZnJhZ19tZW1fbGltaXQobmYpKQotCQlnb3RvIGV2aWN0X2FnYWluOwotfQotRVhQT1JU X1NZTUJPTChpbmV0X2ZyYWdzX2V4aXRfbmV0KTsKLQotc3RhdGljIHN0cnVjdCBpbmV0X2ZyYWdf YnVja2V0ICoKLWdldF9mcmFnX2J1Y2tldF9sb2NrZWQoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAq ZnEsIHN0cnVjdCBpbmV0X2ZyYWdzICpmKQotX19hY3F1aXJlcyhoYi0+Y2hhaW5fbG9jaykKK3N0 YXRpYyB2b2lkIGluZXRfZnJhZ3NfZnJlZV9jYih2b2lkICpwdHIsIHZvaWQgKmFyZykKIHsKLQlz dHJ1Y3QgaW5ldF9mcmFnX2J1Y2tldCAqaGI7Ci0JdW5zaWduZWQgaW50IHNlcSwgaGFzaDsKKwlz dHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpmcSA9IHB0cjsKIAotIHJlc3RhcnQ6Ci0Jc2VxID0gcmVh ZF9zZXFiZWdpbigmZi0+cm5kX3NlcWxvY2spOwotCi0JaGFzaCA9IGluZXRfZnJhZ19oYXNoZm4o ZiwgZnEpOwotCWhiID0gJmYtPmhhc2hbaGFzaF07CisJLyogSWYgd2UgY2FuIG5vdCBjYW5jZWwg dGhlIHRpbWVyLCBpdCBtZWFucyB0aGlzIGZyYWdfcXVldWUKKwkgKiBpcyBhbHJlYWR5IGRpc2Fw cGVhcmluZywgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgorCSAqIE90aGVyd2lzZSwgd2Ugb3duIGEg cmVmY291bnQgdW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgorCSAqLworCWlmICghZGVs X3RpbWVyKCZmcS0+dGltZXIpKQorCQlyZXR1cm47CiAKLQlzcGluX2xvY2soJmhiLT5jaGFpbl9s b2NrKTsKLQlpZiAocmVhZF9zZXFyZXRyeSgmZi0+cm5kX3NlcWxvY2ssIHNlcSkpIHsKLQkJc3Bp bl91bmxvY2soJmhiLT5jaGFpbl9sb2NrKTsKLQkJZ290byByZXN0YXJ0OworCXNwaW5fbG9ja19i aCgmZnEtPmxvY2spOworCWlmICghKGZxLT5mbGFncyAmIElORVRfRlJBR19DT01QTEVURSkpIHsK KwkJZnEtPmZsYWdzIHw9IElORVRfRlJBR19DT01QTEVURTsKKwkJYXRvbWljX2RlYygmZnEtPnJl ZmNudCk7CiAJfQorCXNwaW5fdW5sb2NrX2JoKCZmcS0+bG9jayk7CiAKLQlyZXR1cm4gaGI7CisJ aW5ldF9mcmFnX3B1dChmcSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBmcV91bmxpbmsoc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqZnEpCit2b2lkIGluZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0 IG5ldG5zX2ZyYWdzICpuZikKIHsKLQlzdHJ1Y3QgaW5ldF9mcmFnX2J1Y2tldCAqaGI7CisJbmYt Pmxvd190aHJlc2ggPSAwOyAvKiBwcmV2ZW50IGNyZWF0aW9uIG9mIG5ldyBmcmFncyAqLwogCi0J aGIgPSBnZXRfZnJhZ19idWNrZXRfbG9ja2VkKGZxLCBmcS0+bmV0LT5mKTsKLQlobGlzdF9kZWwo JmZxLT5saXN0KTsKLQlmcS0+ZmxhZ3MgfD0gSU5FVF9GUkFHX0NPTVBMRVRFOwotCXNwaW5fdW5s b2NrKCZoYi0+Y2hhaW5fbG9jayk7CisJcmhhc2h0YWJsZV9mcmVlX2FuZF9kZXN0cm95KCZuZi0+ cmhhc2h0YWJsZSwgaW5ldF9mcmFnc19mcmVlX2NiLCBOVUxMKTsKIH0KK0VYUE9SVF9TWU1CT0wo aW5ldF9mcmFnc19leGl0X25ldCk7CiAKIHZvaWQgaW5ldF9mcmFnX2tpbGwoc3RydWN0IGluZXRf ZnJhZ19xdWV1ZSAqZnEpCiB7CkBAIC0yODEsNyArMTAyLDEwIEBAIHZvaWQgaW5ldF9mcmFnX2tp bGwoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqZnEpCiAJCWF0b21pY19kZWMoJmZxLT5yZWZjbnQp OwogCiAJaWYgKCEoZnEtPmZsYWdzICYgSU5FVF9GUkFHX0NPTVBMRVRFKSkgewotCQlmcV91bmxp bmsoZnEpOworCQlzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mID0gZnEtPm5ldDsKKworCQlmcS0+Zmxh Z3MgfD0gSU5FVF9GUkFHX0NPTVBMRVRFOworCQlyaGFzaHRhYmxlX3JlbW92ZV9mYXN0KCZuZi0+ cmhhc2h0YWJsZSwgJmZxLT5ub2RlLCBuZi0+Zi0+cmhhc2hfcGFyYW1zKTsKIAkJYXRvbWljX2Rl YygmZnEtPnJlZmNudCk7CiAJfQogfQpAQCAtMjk1LDYgKzExOSwxNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgZnJhZ19rZnJlZV9za2Ioc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgc3RydWN0IGluZXRf ZnJhZ3MgKmYsCiAJa2ZyZWVfc2tiKHNrYik7CiB9CiAKK3N0YXRpYyB2b2lkIGluZXRfZnJhZ19k ZXN0cm95X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCit7CisJc3RydWN0IGluZXRfZnJhZ19x dWV1ZSAqcSA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlLAorCQkJ CQkJIHJjdSk7CisJc3RydWN0IGluZXRfZnJhZ3MgKmYgPSBxLT5uZXQtPmY7CisKKwlpZiAoZi0+ ZGVzdHJ1Y3RvcikKKwkJZi0+ZGVzdHJ1Y3RvcihxKTsKKwlrbWVtX2NhY2hlX2ZyZWUoZi0+ZnJh Z3NfY2FjaGVwLCBxKTsKK30KKwogdm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1Y3QgaW5ldF9m cmFnX3F1ZXVlICpxKQogewogCXN0cnVjdCBza19idWZmICpmcDsKQEAgLTMxOCw1NSArMTUzLDIx IEBAIHZvaWQgaW5ldF9mcmFnX2Rlc3Ryb3koc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkKIAl9 CiAJc3VtID0gc3VtX3RydWVzaXplICsgZi0+cXNpemU7CiAKLQlpZiAoZi0+ZGVzdHJ1Y3RvcikK LQkJZi0+ZGVzdHJ1Y3RvcihxKTsKLQlrbWVtX2NhY2hlX2ZyZWUoZi0+ZnJhZ3NfY2FjaGVwLCBx KTsKKwljYWxsX3JjdSgmcS0+cmN1LCBpbmV0X2ZyYWdfZGVzdHJveV9yY3UpOwogCiAJc3ViX2Zy YWdfbWVtX2xpbWl0KG5mLCBzdW0pOwogfQogRVhQT1JUX1NZTUJPTChpbmV0X2ZyYWdfZGVzdHJv eSk7CiAKLXN0YXRpYyBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICppbmV0X2ZyYWdfaW50ZXJuKHN0 cnVjdCBuZXRuc19mcmFncyAqbmYsCi0JCQkJCQlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxcF9p biwKLQkJCQkJCXN0cnVjdCBpbmV0X2ZyYWdzICpmLAotCQkJCQkJdm9pZCAqYXJnKQotewotCXN0 cnVjdCBpbmV0X2ZyYWdfYnVja2V0ICpoYiA9IGdldF9mcmFnX2J1Y2tldF9sb2NrZWQocXBfaW4s IGYpOwotCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnFwOwotCi0jaWZkZWYgQ09ORklHX1NNUAot CS8qIFdpdGggU01QIHJhY2Ugd2UgaGF2ZSB0byByZWNoZWNrIGhhc2ggdGFibGUsIGJlY2F1c2UK LQkgKiBzdWNoIGVudHJ5IGNvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIG9uIG90aGVyIGNwdSBiZWZv cmUKLQkgKiB3ZSBhY3F1aXJlZCBoYXNoIGJ1Y2tldCBsb2NrLgotCSAqLwotCWhsaXN0X2Zvcl9l YWNoX2VudHJ5KHFwLCAmaGItPmNoYWluLCBsaXN0KSB7Ci0JCWlmIChxcC0+bmV0ID09IG5mICYm IGYtPm1hdGNoKHFwLCBhcmcpKSB7Ci0JCQlhdG9taWNfaW5jKCZxcC0+cmVmY250KTsKLQkJCXNw aW5fdW5sb2NrKCZoYi0+Y2hhaW5fbG9jayk7Ci0JCQlxcF9pbi0+ZmxhZ3MgfD0gSU5FVF9GUkFH X0NPTVBMRVRFOwotCQkJaW5ldF9mcmFnX3B1dChxcF9pbik7Ci0JCQlyZXR1cm4gcXA7Ci0JCX0K LQl9Ci0jZW5kaWYKLQlxcCA9IHFwX2luOwotCWlmICghbW9kX3RpbWVyKCZxcC0+dGltZXIsIGpp ZmZpZXMgKyBuZi0+dGltZW91dCkpCi0JCWF0b21pY19pbmMoJnFwLT5yZWZjbnQpOwotCi0JYXRv bWljX2luYygmcXAtPnJlZmNudCk7Ci0JaGxpc3RfYWRkX2hlYWQoJnFwLT5saXN0LCAmaGItPmNo YWluKTsKLQotCXNwaW5fdW5sb2NrKCZoYi0+Y2hhaW5fbG9jayk7Ci0KLQlyZXR1cm4gcXA7Ci19 Ci0KIHN0YXRpYyBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICppbmV0X2ZyYWdfYWxsb2Moc3RydWN0 IG5ldG5zX2ZyYWdzICpuZiwKIAkJCQkJICAgICAgIHN0cnVjdCBpbmV0X2ZyYWdzICpmLAogCQkJ CQkgICAgICAgdm9pZCAqYXJnKQogewogCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnE7CiAKKwlp ZiAoIW5mLT5oaWdoX3RocmVzaCB8fCBmcmFnX21lbV9saW1pdChuZikgPiBuZi0+aGlnaF90aHJl c2gpCisJCXJldHVybiBOVUxMOworCiAJcSA9IGttZW1fY2FjaGVfemFsbG9jKGYtPmZyYWdzX2Nh Y2hlcCwgR0ZQX0FUT01JQyk7CiAJaWYgKCFxKQogCQlyZXR1cm4gTlVMTDsKQEAgLTM3Nyw2NCAr MTc4LDUxIEBAIHN0YXRpYyBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICppbmV0X2ZyYWdfYWxsb2Mo c3RydWN0IG5ldG5zX2ZyYWdzICpuZiwKIAogCXNldHVwX3RpbWVyKCZxLT50aW1lciwgZi0+ZnJh Z19leHBpcmUsICh1bnNpZ25lZCBsb25nKXEpOwogCXNwaW5fbG9ja19pbml0KCZxLT5sb2NrKTsK LQlhdG9taWNfc2V0KCZxLT5yZWZjbnQsIDEpOworCWF0b21pY19zZXQoJnEtPnJlZmNudCwgMyk7 CiAKIAlyZXR1cm4gcTsKIH0KIAogc3RhdGljIHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmluZXRf ZnJhZ19jcmVhdGUoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwKLQkJCQkJCXN0cnVjdCBpbmV0X2Zy YWdzICpmLAogCQkJCQkJdm9pZCAqYXJnKQogeworCXN0cnVjdCBpbmV0X2ZyYWdzICpmID0gbmYt PmY7CiAJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKKwlpbnQgZXJyOwogCiAJcSA9IGluZXRf ZnJhZ19hbGxvYyhuZiwgZiwgYXJnKTsKIAlpZiAoIXEpCiAJCXJldHVybiBOVUxMOwogCi0JcmV0 dXJuIGluZXRfZnJhZ19pbnRlcm4obmYsIHEsIGYsIGFyZyk7Ci19CisJbW9kX3RpbWVyKCZxLT50 aW1lciwgamlmZmllcyArIG5mLT50aW1lb3V0KTsKIAotc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAq aW5ldF9mcmFnX2ZpbmQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwKLQkJCQkgICAgICAgc3RydWN0 IGluZXRfZnJhZ3MgKmYsIHZvaWQgKmtleSwKLQkJCQkgICAgICAgdW5zaWduZWQgaW50IGhhc2gp Ci17Ci0Jc3RydWN0IGluZXRfZnJhZ19idWNrZXQgKmhiOwotCXN0cnVjdCBpbmV0X2ZyYWdfcXVl dWUgKnE7Ci0JaW50IGRlcHRoID0gMDsKLQotCWlmICghbmYtPmhpZ2hfdGhyZXNoIHx8IGZyYWdf bWVtX2xpbWl0KG5mKSA+IG5mLT5oaWdoX3RocmVzaCkgewotCQlpbmV0X2ZyYWdfc2NoZWR1bGVf d29ya2VyKGYpOworCWVyciA9IHJoYXNodGFibGVfaW5zZXJ0X2Zhc3QoJm5mLT5yaGFzaHRhYmxl LCAmcS0+bm9kZSwKKwkJCQkgICAgIGYtPnJoYXNoX3BhcmFtcyk7CisJaWYgKGVyciA8IDApIHsK KwkJcS0+ZmxhZ3MgfD0gSU5FVF9GUkFHX0NPTVBMRVRFOworCQlpbmV0X2ZyYWdfa2lsbChxKTsK KwkJaW5ldF9mcmFnX2Rlc3Ryb3kocSk7CiAJCXJldHVybiBOVUxMOwogCX0KKwlyZXR1cm4gcTsK K30KK0VYUE9SVF9TWU1CT0woaW5ldF9mcmFnX2NyZWF0ZSk7CiAKLQlpZiAoZnJhZ19tZW1fbGlt aXQobmYpID4gbmYtPmxvd190aHJlc2gpCi0JCWluZXRfZnJhZ19zY2hlZHVsZV93b3JrZXIoZik7 Ci0KLQloYXNoICY9IChJTkVURlJBR1NfSEFTSFNaIC0gMSk7Ci0JaGIgPSAmZi0+aGFzaFtoYXNo XTsKLQotCXNwaW5fbG9jaygmaGItPmNoYWluX2xvY2spOwotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5 KHEsICZoYi0+Y2hhaW4sIGxpc3QpIHsKLQkJaWYgKHEtPm5ldCA9PSBuZiAmJiBmLT5tYXRjaChx LCBrZXkpKSB7Ci0JCQlhdG9taWNfaW5jKCZxLT5yZWZjbnQpOwotCQkJc3Bpbl91bmxvY2soJmhi LT5jaGFpbl9sb2NrKTsKLQkJCXJldHVybiBxOwotCQl9Ci0JCWRlcHRoKys7Ci0JfQotCXNwaW5f dW5sb2NrKCZoYi0+Y2hhaW5fbG9jayk7Ci0KLQlpZiAoZGVwdGggPD0gSU5FVEZSQUdTX01BWERF UFRIKQotCQlyZXR1cm4gaW5ldF9mcmFnX2NyZWF0ZShuZiwgZiwga2V5KTsKKy8qIFRPRE8gOiBj YWxsIGZyb20gcmN1X3JlYWRfbG9jaygpIGFuZCBubyBsb25nZXIgdXNlIHJlZmNvdW50X2luY19u b3RfemVybygpICovCitzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICppbmV0X2ZyYWdfZmluZChzdHJ1 Y3QgbmV0bnNfZnJhZ3MgKm5mLCB2b2lkICprZXkpCit7CisJc3RydWN0IGluZXRfZnJhZ19xdWV1 ZSAqZnE7CiAKLQlpZiAoaW5ldF9mcmFnX21heV9yZWJ1aWxkKGYpKSB7Ci0JCWlmICghZi0+cmVi dWlsZCkKLQkJCWYtPnJlYnVpbGQgPSB0cnVlOwotCQlpbmV0X2ZyYWdfc2NoZWR1bGVfd29ya2Vy KGYpOworCXJjdV9yZWFkX2xvY2soKTsKKwlmcSA9IHJoYXNodGFibGVfbG9va3VwKCZuZi0+cmhh c2h0YWJsZSwga2V5LCBuZi0+Zi0+cmhhc2hfcGFyYW1zKTsKKwlpZiAoZnEpIHsKKwkJaWYgKCFh dG9taWNfaW5jX25vdF96ZXJvKCZmcS0+cmVmY250KSkKKwkJCWZxID0gTlVMTDsKKwkJcmN1X3Jl YWRfdW5sb2NrKCk7CisJCXJldHVybiBmcTsKIAl9Ci0KLQlyZXR1cm4gRVJSX1BUUigtRU5PQlVG Uyk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIGluZXRfZnJhZ19jcmVhdGUobmYsIGtl eSk7CiB9CiBFWFBPUlRfU1lNQk9MKGluZXRfZnJhZ19maW5kKTsKIApAQCAtNDQyLDggKzIzMCw3 IEBAIHZvaWQgaW5ldF9mcmFnX21heWJlX3dhcm5fb3ZlcmZsb3coc3RydWN0IGluZXRfZnJhZ19x dWV1ZSAqcSwKIAkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RhdGljIGNvbnN0IGNo YXIgbXNnW10gPSAiaW5ldF9mcmFnX2ZpbmQ6IEZyYWdtZW50IGhhc2ggYnVja2V0IgotCQkiIGxp c3QgbGVuZ3RoIGdyZXcgb3ZlciBsaW1pdCAiIF9fc3RyaW5naWZ5KElORVRGUkFHU19NQVhERVBU SCkKLQkJIi4gRHJvcHBpbmcgZnJhZ21lbnQuXG4iOworCQkiIGxpc3QgbGVuZ3RoIGdyZXcgb3Zl ciBsaW1pdC4gRHJvcHBpbmcgZnJhZ21lbnQuXG4iOwogCiAJaWYgKFBUUl9FUlIocSkgPT0gLUVO T0JVRlMpCiAJCW5ldF9kYmdfcmF0ZWxpbWl0ZWQoIiVzJXMiLCBwcmVmaXgsIG1zZyk7CmRpZmYg LS1naXQgYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpp bmRleCBmNDk3OGE1YWE1NWUuLmIzODNjYmM4NmIxMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBf ZnJhZ21lbnQuYworKysgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCkBAIC03MCwxNSArNzAsOSBA QCBzdHJ1Y3QgaXBmcmFnX3NrYl9jYgogc3RydWN0IGlwcSB7CiAJc3RydWN0IGluZXRfZnJhZ19x dWV1ZSBxOwogCi0JdTMyCQl1c2VyOwotCV9fYmUzMgkJc2FkZHI7Ci0JX19iZTMyCQlkYWRkcjsK LQlfX2JlMTYJCWlkOwotCXU4CQlwcm90b2NvbDsKIAl1OAkJZWNuOyAvKiBSRkMzMTY4IHN1cHBv cnQgKi8KIAl1MTYJCW1heF9kZl9zaXplOyAvKiBsYXJnZXN0IGZyYWcgd2l0aCBERiBzZXQgc2Vl biAqLwogCWludCAgICAgICAgICAgICBpaWY7Ci0JaW50ICAgICAgICAgICAgIHZpZjsgICAvKiBM MyBtYXN0ZXIgZGV2aWNlIGluZGV4ICovCiAJdW5zaWduZWQgaW50ICAgIHJpZDsKIAlzdHJ1Y3Qg aW5ldF9wZWVyICpwZWVyOwogfTsKQEAgLTk4LDQxICs5Miw2IEBAIGludCBpcF9mcmFnX21lbShz dHJ1Y3QgbmV0ICpuZXQpCiBzdGF0aWMgaW50IGlwX2ZyYWdfcmVhc20oc3RydWN0IGlwcSAqcXAs IHN0cnVjdCBza19idWZmICpwcmV2LAogCQkJIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogCi1z dHJ1Y3QgaXA0X2NyZWF0ZV9hcmcgewotCXN0cnVjdCBpcGhkciAqaXBoOwotCXUzMiB1c2VyOwot CWludCB2aWY7Ci19OwotCi1zdGF0aWMgdW5zaWduZWQgaW50IGlwcWhhc2hmbihfX2JlMTYgaWQs IF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLCB1OCBwcm90KQotewotCW5ldF9nZXRfcmFuZG9t X29uY2UoJmlwNF9mcmFncy5ybmQsIHNpemVvZihpcDRfZnJhZ3Mucm5kKSk7Ci0JcmV0dXJuIGpo YXNoXzN3b3JkcygoX19mb3JjZSB1MzIpaWQgPDwgMTYgfCBwcm90LAotCQkJICAgIChfX2ZvcmNl IHUzMilzYWRkciwgKF9fZm9yY2UgdTMyKWRhZGRyLAotCQkJICAgIGlwNF9mcmFncy5ybmQpOwot fQotCi1zdGF0aWMgdW5zaWduZWQgaW50IGlwNF9oYXNoZm4oY29uc3Qgc3RydWN0IGluZXRfZnJh Z19xdWV1ZSAqcSkKLXsKLQljb25zdCBzdHJ1Y3QgaXBxICppcHE7Ci0KLQlpcHEgPSBjb250YWlu ZXJfb2YocSwgc3RydWN0IGlwcSwgcSk7Ci0JcmV0dXJuIGlwcWhhc2hmbihpcHEtPmlkLCBpcHEt PnNhZGRyLCBpcHEtPmRhZGRyLCBpcHEtPnByb3RvY29sKTsKLX0KLQotc3RhdGljIGJvb2wgaXA0 X2ZyYWdfbWF0Y2goY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgY29uc3Qgdm9pZCAq YSkKLXsKLQljb25zdCBzdHJ1Y3QgaXBxICpxcDsKLQljb25zdCBzdHJ1Y3QgaXA0X2NyZWF0ZV9h cmcgKmFyZyA9IGE7Ci0KLQlxcCA9IGNvbnRhaW5lcl9vZihxLCBzdHJ1Y3QgaXBxLCBxKTsKLQly ZXR1cm4JcXAtPmlkID09IGFyZy0+aXBoLT5pZCAmJgotCQlxcC0+c2FkZHIgPT0gYXJnLT5pcGgt PnNhZGRyICYmCi0JCXFwLT5kYWRkciA9PSBhcmctPmlwaC0+ZGFkZHIgJiYKLQkJcXAtPnByb3Rv Y29sID09IGFyZy0+aXBoLT5wcm90b2NvbCAmJgotCQlxcC0+dXNlciA9PSBhcmctPnVzZXIgJiYK LQkJcXAtPnZpZiA9PSBhcmctPnZpZjsKLX0KIAogc3RhdGljIHZvaWQgaXA0X2ZyYWdfaW5pdChz dHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxLCBjb25zdCB2b2lkICphKQogewpAQCAtMTQxLDE3ICsx MDAsMTIgQEAgc3RhdGljIHZvaWQgaXA0X2ZyYWdfaW5pdChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVl ICpxLCBjb25zdCB2b2lkICphKQogCQkJCQkgICAgICAgZnJhZ3MpOwogCXN0cnVjdCBuZXQgKm5l dCA9IGNvbnRhaW5lcl9vZihpcHY0LCBzdHJ1Y3QgbmV0LCBpcHY0KTsKIAotCWNvbnN0IHN0cnVj dCBpcDRfY3JlYXRlX2FyZyAqYXJnID0gYTsKKwljb25zdCBzdHJ1Y3QgZnJhZ192NF9jb21wYXJl X2tleSAqa2V5ID0gYTsKIAotCXFwLT5wcm90b2NvbCA9IGFyZy0+aXBoLT5wcm90b2NvbDsKLQlx cC0+aWQgPSBhcmctPmlwaC0+aWQ7Ci0JcXAtPmVjbiA9IGlwNF9mcmFnX2VjbihhcmctPmlwaC0+ dG9zKTsKLQlxcC0+c2FkZHIgPSBhcmctPmlwaC0+c2FkZHI7Ci0JcXAtPmRhZGRyID0gYXJnLT5p cGgtPmRhZGRyOwotCXFwLT52aWYgPSBhcmctPnZpZjsKLQlxcC0+dXNlciA9IGFyZy0+dXNlcjsK KwlxLT5rZXkudjQgPSAqa2V5OworCXFwLT5lY24gPSAwOwogCXFwLT5wZWVyID0gc3lzY3RsX2lw ZnJhZ19tYXhfZGlzdCA/Ci0JCWluZXRfZ2V0cGVlcl92NChuZXQtPmlwdjQucGVlcnMsIGFyZy0+ aXBoLT5zYWRkciwgYXJnLT52aWYsIDEpIDoKKwkJaW5ldF9nZXRwZWVyX3Y0KG5ldC0+aXB2NC5w ZWVycywga2V5LT5zYWRkciwga2V5LT52aWYsIDEpIDoKIAkJTlVMTDsKIH0KIApAQCAtMjM0LDcg KzE4OCw3IEBAIHN0YXRpYyB2b2lkIGlwX2V4cGlyZSh1bnNpZ25lZCBsb25nIGFyZykKIAkJLyog T25seSBhbiBlbmQgaG9zdCBuZWVkcyB0byBzZW5kIGFuIElDTVAKIAkJICogIkZyYWdtZW50IFJl YXNzZW1ibHkgVGltZW91dCIgbWVzc2FnZSwgcGVyIFJGQzc5Mi4KIAkJICovCi0JCWlmIChmcmFn X2V4cGlyZV9za2lwX2ljbXAocXAtPnVzZXIpICYmCisJCWlmIChmcmFnX2V4cGlyZV9za2lwX2lj bXAocXAtPnEua2V5LnY0LnVzZXIpICYmCiAJCSAgICAoc2tiX3J0YWJsZShoZWFkKS0+cnRfdHlw ZSAhPSBSVE5fTE9DQUwpKQogCQkJZ290byBvdXQ7CiAKQEAgLTI2MiwxNyArMjE2LDE3IEBAIG91 dF9yY3VfdW5sb2NrOgogc3RhdGljIHN0cnVjdCBpcHEgKmlwX2ZpbmQoc3RydWN0IG5ldCAqbmV0 LCBzdHJ1Y3QgaXBoZHIgKmlwaCwKIAkJCSAgIHUzMiB1c2VyLCBpbnQgdmlmKQogeworCXN0cnVj dCBmcmFnX3Y0X2NvbXBhcmVfa2V5IGtleSA9IHsKKwkJLnNhZGRyID0gaXBoLT5zYWRkciwKKwkJ LmRhZGRyID0gaXBoLT5kYWRkciwKKwkJLnVzZXIgPSB1c2VyLAorCQkudmlmID0gdmlmLAorCQku aWQgPSBpcGgtPmlkLAorCQkucHJvdG9jb2wgPSBpcGgtPnByb3RvY29sLAorCX07CiAJc3RydWN0 IGluZXRfZnJhZ19xdWV1ZSAqcTsKLQlzdHJ1Y3QgaXA0X2NyZWF0ZV9hcmcgYXJnOwotCXVuc2ln bmVkIGludCBoYXNoOwotCi0JYXJnLmlwaCA9IGlwaDsKLQlhcmcudXNlciA9IHVzZXI7Ci0JYXJn LnZpZiA9IHZpZjsKIAotCWhhc2ggPSBpcHFoYXNoZm4oaXBoLT5pZCwgaXBoLT5zYWRkciwgaXBo LT5kYWRkciwgaXBoLT5wcm90b2NvbCk7Ci0KLQlxID0gaW5ldF9mcmFnX2ZpbmQoJm5ldC0+aXB2 NC5mcmFncywgJmlwNF9mcmFncywgJmFyZywgaGFzaCk7CisJcSA9IGluZXRfZnJhZ19maW5kKCZu ZXQtPmlwdjQuZnJhZ3MsICZrZXkpOwogCWlmIChJU19FUlJfT1JfTlVMTChxKSkgewogCQlpbmV0 X2ZyYWdfbWF5YmVfd2Fybl9vdmVyZmxvdyhxLCBwcl9mbXQoKSk7CiAJCXJldHVybiBOVUxMOwpA QCAtNjU2LDcgKzYxMCw3IEBAIG91dF9ub21lbToKIAllcnIgPSAtRU5PTUVNOwogCWdvdG8gb3V0 X2ZhaWw7CiBvdXRfb3ZlcnNpemU6Ci0JbmV0X2luZm9fcmF0ZWxpbWl0ZWQoIk92ZXJzaXplZCBJ UCBwYWNrZXQgZnJvbSAlcEk0XG4iLCAmcXAtPnNhZGRyKTsKKwluZXRfaW5mb19yYXRlbGltaXRl ZCgiT3ZlcnNpemVkIElQIHBhY2tldCBmcm9tICVwSTRcbiIsICZxcC0+cS5rZXkudjQuc2FkZHIp Owogb3V0X2ZhaWw6CiAJSVBfSU5DX1NUQVRTX0JIKG5ldCwgSVBTVEFUU19NSUJfUkVBU01GQUlM Uyk7CiAJcmV0dXJuIGVycjsKQEAgLTkwMCwxNiArODU0LDQ4IEBAIHN0YXRpYyBzdHJ1Y3QgcGVy bmV0X29wZXJhdGlvbnMgaXA0X2ZyYWdzX29wcyA9IHsKIAkuZXhpdCA9IGlwdjRfZnJhZ3NfZXhp dF9uZXQsCiB9OwogCisKK3N0YXRpYyB1MzIgaXA0X2tleV9oYXNoZm4oY29uc3Qgdm9pZCAqZGF0 YSwgdTMyIGxlbiwgdTMyIHNlZWQpCit7CisJcmV0dXJuIGpoYXNoMihkYXRhLAorCQkgICAgICBz aXplb2Yoc3RydWN0IGZyYWdfdjRfY29tcGFyZV9rZXkpIC8gc2l6ZW9mKHUzMiksIHNlZWQpOwor fQorCitzdGF0aWMgdTMyIGlwNF9vYmpfaGFzaGZuKGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBsZW4s IHUzMiBzZWVkKQoreworCWNvbnN0IHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmZxID0gZGF0YTsK KworCXJldHVybiBqaGFzaDIoKGNvbnN0IHUzMiAqKSZmcS0+a2V5LnY0LAorCQkgICAgICBzaXpl b2Yoc3RydWN0IGZyYWdfdjRfY29tcGFyZV9rZXkpIC8gc2l6ZW9mKHUzMiksIHNlZWQpOworfQor CitzdGF0aWMgaW50IGlwNF9vYmpfY21wZm4oc3RydWN0IHJoYXNodGFibGVfY29tcGFyZV9hcmcg KmFyZywgY29uc3Qgdm9pZCAqcHRyKQoreworCWNvbnN0IHN0cnVjdCBmcmFnX3Y0X2NvbXBhcmVf a2V5ICprZXkgPSBhcmctPmtleTsKKwljb25zdCBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpmcSA9 IHB0cjsKKworCXJldHVybiAhIW1lbWNtcCgmZnEtPmtleSwga2V5LCBzaXplb2YoKmtleSkpOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIGlwNF9yaGFzaF9wYXJh bXMgPSB7CisJLmhlYWRfb2Zmc2V0CQk9IG9mZnNldG9mKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUs IG5vZGUpLAorCS5rZXlfb2Zmc2V0CQk9IG9mZnNldG9mKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUs IGtleSksCisJLmtleV9sZW4JCT0gc2l6ZW9mKHN0cnVjdCBmcmFnX3Y0X2NvbXBhcmVfa2V5KSwK KwkuaGFzaGZuCQkJPSBpcDRfa2V5X2hhc2hmbiwKKwkub2JqX2hhc2hmbgkJPSBpcDRfb2JqX2hh c2hmbiwKKwkub2JqX2NtcGZuCQk9IGlwNF9vYmpfY21wZm4sCisJLmF1dG9tYXRpY19zaHJpbmtp bmcJPSB0cnVlLAorfTsKKwogdm9pZCBfX2luaXQgaXBmcmFnX2luaXQodm9pZCkKIHsKLQlpcDRf ZnJhZ3MuaGFzaGZuID0gaXA0X2hhc2hmbjsKIAlpcDRfZnJhZ3MuY29uc3RydWN0b3IgPSBpcDRf ZnJhZ19pbml0OwogCWlwNF9mcmFncy5kZXN0cnVjdG9yID0gaXA0X2ZyYWdfZnJlZTsKIAlpcDRf ZnJhZ3Muc2tiX2ZyZWUgPSBOVUxMOwogCWlwNF9mcmFncy5xc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg aXBxKTsKLQlpcDRfZnJhZ3MubWF0Y2ggPSBpcDRfZnJhZ19tYXRjaDsKIAlpcDRfZnJhZ3MuZnJh Z19leHBpcmUgPSBpcF9leHBpcmU7CiAJaXA0X2ZyYWdzLmZyYWdzX2NhY2hlX25hbWUgPSBpcF9m cmFnX2NhY2hlX25hbWU7CisJaXA0X2ZyYWdzLnJoYXNoX3BhcmFtcyA9IGlwNF9yaGFzaF9wYXJh bXM7CiAJaWYgKGluZXRfZnJhZ3NfaW5pdCgmaXA0X2ZyYWdzKSkKIAkJcGFuaWMoIklQOiBmYWls ZWQgdG8gYWxsb2NhdGUgaXA0X2ZyYWdzIGNhY2hlXG4iKTsKIAlpcDRfZnJhZ3NfY3RsX3JlZ2lz dGVyKCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNt LmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKaW5kZXggMTVhOWRh NWNmMjk2Li45ODVhOWI2NDExYWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9j b25udHJhY2tfcmVhc20uYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Jl YXNtLmMKQEAgLTE1MywyMyArMTUzLDYgQEAgc3RhdGljIGlubGluZSB1OCBpcDZfZnJhZ19lY24o Y29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwdjZoKQogCXJldHVybiAxIDw8IChpcHY2X2dldF9kc2Zp ZWxkKGlwdjZoKSAmIElORVRfRUNOX01BU0spOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IG5m X2hhc2hfZnJhZyhfX2JlMzIgaWQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsCi0JCQkJ IGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIpCi17Ci0JbmV0X2dldF9yYW5kb21fb25jZSgm bmZfZnJhZ3Mucm5kLCBzaXplb2YobmZfZnJhZ3Mucm5kKSk7Ci0JcmV0dXJuIGpoYXNoXzN3b3Jk cyhpcHY2X2FkZHJfaGFzaChzYWRkciksIGlwdjZfYWRkcl9oYXNoKGRhZGRyKSwKLQkJCSAgICAo X19mb3JjZSB1MzIpaWQsIG5mX2ZyYWdzLnJuZCk7Ci19Ci0KLQotc3RhdGljIHVuc2lnbmVkIGlu dCBuZl9oYXNoZm4oY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkKLXsKLQljb25zdCBz dHJ1Y3QgZnJhZ19xdWV1ZSAqbnE7Ci0KLQlucSA9IGNvbnRhaW5lcl9vZihxLCBzdHJ1Y3QgZnJh Z19xdWV1ZSwgcSk7Ci0JcmV0dXJuIG5mX2hhc2hfZnJhZyhucS0+aWQsICZucS0+c2FkZHIsICZu cS0+ZGFkZHIpOwotfQotCiBzdGF0aWMgdm9pZCBuZl9za2JfZnJlZShzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQogewogCWlmIChORkNUX0ZSQUc2X0NCKHNrYiktPm9yaWcpCkBAIC0xODgsMjYgKzE3MSwx OSBAQCBzdGF0aWMgdm9pZCBuZl9jdF9mcmFnNl9leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQog fQogCiAvKiBDcmVhdGlvbiBwcmltaXRpdmVzLiAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgZnJh Z19xdWV1ZSAqZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBpZCwKLQkJCQkJIHUzMiB1 c2VyLCBzdHJ1Y3QgaW42X2FkZHIgKnNyYywKLQkJCQkJIHN0cnVjdCBpbjZfYWRkciAqZHN0LCBp bnQgaWlmLCB1OCBlY24pCitzdGF0aWMgc3RydWN0IGZyYWdfcXVldWUgKmZxX2ZpbmQoc3RydWN0 IG5ldCAqbmV0LCBfX2JlMzIgaWQsIHUzMiB1c2VyLAorCQkJCSAgY29uc3Qgc3RydWN0IGlwdjZo ZHIgKmhkciwgaW50IGlpZikKIHsKKwlzdHJ1Y3QgZnJhZ192Nl9jb21wYXJlX2tleSBrZXkgPSB7 CisJCS5pZCA9IGlkLAorCQkuc2FkZHIgPSBoZHItPnNhZGRyLAorCQkuZGFkZHIgPSBoZHItPmRh ZGRyLAorCQkudXNlciA9IHVzZXIsCisJCS5paWYgPSBpaWYsCisJfTsKIAlzdHJ1Y3QgaW5ldF9m cmFnX3F1ZXVlICpxOwotCXN0cnVjdCBpcDZfY3JlYXRlX2FyZyBhcmc7Ci0JdW5zaWduZWQgaW50 IGhhc2g7Ci0KLQlhcmcuaWQgPSBpZDsKLQlhcmcudXNlciA9IHVzZXI7Ci0JYXJnLnNyYyA9IHNy YzsKLQlhcmcuZHN0ID0gZHN0OwotCWFyZy5paWYgPSBpaWY7Ci0JYXJnLmVjbiA9IGVjbjsKLQot CWxvY2FsX2JoX2Rpc2FibGUoKTsKLQloYXNoID0gbmZfaGFzaF9mcmFnKGlkLCBzcmMsIGRzdCk7 CiAKLQlxID0gaW5ldF9mcmFnX2ZpbmQoJm5ldC0+bmZfZnJhZy5mcmFncywgJm5mX2ZyYWdzLCAm YXJnLCBoYXNoKTsKLQlsb2NhbF9iaF9lbmFibGUoKTsKKwlxID0gaW5ldF9mcmFnX2ZpbmQoJm5l dC0+bmZfZnJhZy5mcmFncywgJmtleSk7CiAJaWYgKElTX0VSUl9PUl9OVUxMKHEpKSB7CiAJCWlu ZXRfZnJhZ19tYXliZV93YXJuX292ZXJmbG93KHEsIHByX2ZtdCgpKTsKIAkJcmV0dXJuIE5VTEw7 CkBAIC02MDIsOCArNTc4LDggQEAgc3RydWN0IHNrX2J1ZmYgKm5mX2N0X2ZyYWc2X2dhdGhlcihz dHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiB1c2UKIAlmaGRyID0gKHN0 cnVjdCBmcmFnX2hkciAqKXNrYl90cmFuc3BvcnRfaGVhZGVyKGNsb25lKTsKIAogCXNrYl9vcnBo YW4oc2tiKTsKLQlmcSA9IGZxX2ZpbmQobmV0LCBmaGRyLT5pZGVudGlmaWNhdGlvbiwgdXNlciwg Jmhkci0+c2FkZHIsICZoZHItPmRhZGRyLAotCQkgICAgIHNrYi0+ZGV2ID8gc2tiLT5kZXYtPmlm aW5kZXggOiAwLCBpcDZfZnJhZ19lY24oaGRyKSk7CisJZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+ aWRlbnRpZmljYXRpb24sIHVzZXIsIGhkciwKKwkJICAgICBza2ItPmRldiA/IHNrYi0+ZGV2LT5p ZmluZGV4IDogMCk7CiAJaWYgKGZxID09IE5VTEwpIHsKIAkJcHJfZGVidWcoIkNhbid0IGZpbmQg YW5kIGNhbid0IGNyZWF0ZSBuZXcgcXVldWVcbiIpOwogCQlnb3RvIHJldF9vcmlnOwpAQCAtNjgx LDE0ICs2NTcsMTMgQEAgaW50IG5mX2N0X2ZyYWc2X2luaXQodm9pZCkKIHsKIAlpbnQgcmV0ID0g MDsKIAotCW5mX2ZyYWdzLmhhc2hmbiA9IG5mX2hhc2hmbjsKIAluZl9mcmFncy5jb25zdHJ1Y3Rv ciA9IGlwNl9mcmFnX2luaXQ7CiAJbmZfZnJhZ3MuZGVzdHJ1Y3RvciA9IE5VTEw7CiAJbmZfZnJh Z3Muc2tiX2ZyZWUgPSBuZl9za2JfZnJlZTsKIAluZl9mcmFncy5xc2l6ZSA9IHNpemVvZihzdHJ1 Y3QgZnJhZ19xdWV1ZSk7Ci0JbmZfZnJhZ3MubWF0Y2ggPSBpcDZfZnJhZ19tYXRjaDsKIAluZl9m cmFncy5mcmFnX2V4cGlyZSA9IG5mX2N0X2ZyYWc2X2V4cGlyZTsKIAluZl9mcmFncy5mcmFnc19j YWNoZV9uYW1lID0gbmZfZnJhZ3NfY2FjaGVfbmFtZTsKKwluZl9mcmFncy5yaGFzaF9wYXJhbXMg PSBpcDZfcmhhc2hfcGFyYW1zOwogCXJldCA9IGluZXRfZnJhZ3NfaW5pdCgmbmZfZnJhZ3MpOwog CWlmIChyZXQpCiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVhc3NlbWJseS5j IGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IDBiNmY0ZTFmNDNkYi4uMDYyNmMxYjg5NGU0 IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKKysrIGIvbmV0L2lwdjYvcmVhc3Nl bWJseS5jCkBAIC03OSw1MiArNzksMTMgQEAgc3RhdGljIHN0cnVjdCBpbmV0X2ZyYWdzIGlwNl9m cmFnczsKIHN0YXRpYyBpbnQgaXA2X2ZyYWdfcmVhc20oc3RydWN0IGZyYWdfcXVldWUgKmZxLCBz dHJ1Y3Qgc2tfYnVmZiAqcHJldiwKIAkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAKLS8q Ci0gKiBjYWxsZXJzIHNob3VsZCBiZSBjYXJlZnVsIG5vdCB0byB1c2UgdGhlIGhhc2ggdmFsdWUg b3V0c2lkZSB0aGUgaXBmcmFnX2xvY2sKLSAqIGFzIGRvaW5nIHNvIGNvdWxkIHJhY2Ugd2l0aCBp cGZyYWdfaGFzaF9ybmQgYmVpbmcgcmVjYWxjdWxhdGVkLgotICovCi1zdGF0aWMgdW5zaWduZWQg aW50IGluZXQ2X2hhc2hfZnJhZyhfX2JlMzIgaWQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2Fk ZHIsCi0JCQkJICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIpCi17Ci0JbmV0X2dldF9y YW5kb21fb25jZSgmaXA2X2ZyYWdzLnJuZCwgc2l6ZW9mKGlwNl9mcmFncy5ybmQpKTsKLQlyZXR1 cm4gamhhc2hfM3dvcmRzKGlwdjZfYWRkcl9oYXNoKHNhZGRyKSwgaXB2Nl9hZGRyX2hhc2goZGFk ZHIpLAotCQkJICAgIChfX2ZvcmNlIHUzMilpZCwgaXA2X2ZyYWdzLnJuZCk7Ci19Ci0KLXN0YXRp YyB1bnNpZ25lZCBpbnQgaXA2X2hhc2hmbihjb25zdCBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpx KQotewotCWNvbnN0IHN0cnVjdCBmcmFnX3F1ZXVlICpmcTsKLQotCWZxID0gY29udGFpbmVyX29m KHEsIHN0cnVjdCBmcmFnX3F1ZXVlLCBxKTsKLQlyZXR1cm4gaW5ldDZfaGFzaF9mcmFnKGZxLT5p ZCwgJmZxLT5zYWRkciwgJmZxLT5kYWRkcik7Ci19Ci0KLWJvb2wgaXA2X2ZyYWdfbWF0Y2goY29u c3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgY29uc3Qgdm9pZCAqYSkKLXsKLQljb25zdCBz dHJ1Y3QgZnJhZ19xdWV1ZSAqZnE7Ci0JY29uc3Qgc3RydWN0IGlwNl9jcmVhdGVfYXJnICphcmcg PSBhOwotCi0JZnEgPSBjb250YWluZXJfb2YocSwgc3RydWN0IGZyYWdfcXVldWUsIHEpOwotCXJl dHVybglmcS0+aWQgPT0gYXJnLT5pZCAmJgotCQlmcS0+dXNlciA9PSBhcmctPnVzZXIgJiYKLQkJ aXB2Nl9hZGRyX2VxdWFsKCZmcS0+c2FkZHIsIGFyZy0+c3JjKSAmJgotCQlpcHY2X2FkZHJfZXF1 YWwoJmZxLT5kYWRkciwgYXJnLT5kc3QpICYmCi0JCShhcmctPmlpZiA9PSBmcS0+aWlmIHx8Ci0J CSAhKGlwdjZfYWRkcl90eXBlKGFyZy0+ZHN0KSAmIChJUFY2X0FERFJfTVVMVElDQVNUIHwKLQkJ CQkJICAgICAgIElQVjZfQUREUl9MSU5LTE9DQUwpKSk7Ci19Ci1FWFBPUlRfU1lNQk9MKGlwNl9m cmFnX21hdGNoKTsKLQogdm9pZCBpcDZfZnJhZ19pbml0KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUg KnEsIGNvbnN0IHZvaWQgKmEpCiB7CiAJc3RydWN0IGZyYWdfcXVldWUgKmZxID0gY29udGFpbmVy X29mKHEsIHN0cnVjdCBmcmFnX3F1ZXVlLCBxKTsKLQljb25zdCBzdHJ1Y3QgaXA2X2NyZWF0ZV9h cmcgKmFyZyA9IGE7CisJY29uc3Qgc3RydWN0IGZyYWdfdjZfY29tcGFyZV9rZXkgKmtleSA9IGE7 CiAKLQlmcS0+aWQgPSBhcmctPmlkOwotCWZxLT51c2VyID0gYXJnLT51c2VyOwotCWZxLT5zYWRk ciA9ICphcmctPnNyYzsKLQlmcS0+ZGFkZHIgPSAqYXJnLT5kc3Q7Ci0JZnEtPmVjbiA9IGFyZy0+ ZWNuOworCXEtPmtleS52NiA9ICprZXk7CisJZnEtPmVjbiA9IDA7CiB9CiBFWFBPUlRfU1lNQk9M KGlwNl9mcmFnX2luaXQpOwogCkBAIC0xODEsMjMgKzE0MiwyMiBAQCBzdGF0aWMgdm9pZCBpcDZf ZnJhZ19leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQogfQogCiBzdGF0aWMgc3RydWN0IGZyYWdf cXVldWUgKgotZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBpZCwgY29uc3Qgc3RydWN0 IGluNl9hZGRyICpzcmMsCi0JY29uc3Qgc3RydWN0IGluNl9hZGRyICpkc3QsIGludCBpaWYsIHU4 IGVjbikKK2ZxX2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgaWQsIGNvbnN0IHN0cnVjdCBp cHY2aGRyICpoZHIsIGludCBpaWYpCiB7CisJc3RydWN0IGZyYWdfdjZfY29tcGFyZV9rZXkga2V5 ID0geworCQkuaWQgPSBpZCwKKwkJLnNhZGRyID0gaGRyLT5zYWRkciwKKwkJLmRhZGRyID0gaGRy LT5kYWRkciwKKwkJLnVzZXIgPSBJUDZfREVGUkFHX0xPQ0FMX0RFTElWRVIsCisJCS5paWYgPSBp aWYsCisJfTsKIAlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxOwotCXN0cnVjdCBpcDZfY3JlYXRl X2FyZyBhcmc7Ci0JdW5zaWduZWQgaW50IGhhc2g7Ci0KLQlhcmcuaWQgPSBpZDsKLQlhcmcudXNl ciA9IElQNl9ERUZSQUdfTE9DQUxfREVMSVZFUjsKLQlhcmcuc3JjID0gc3JjOwotCWFyZy5kc3Qg PSBkc3Q7Ci0JYXJnLmlpZiA9IGlpZjsKLQlhcmcuZWNuID0gZWNuOwogCi0JaGFzaCA9IGluZXQ2 X2hhc2hfZnJhZyhpZCwgc3JjLCBkc3QpOworCWlmICghKGlwdjZfYWRkcl90eXBlKCZoZHItPmRh ZGRyKSAmIChJUFY2X0FERFJfTVVMVElDQVNUIHwKKwkJCQkJICAgIElQVjZfQUREUl9MSU5LTE9D QUwpKSkKKwkJa2V5LmlpZiA9IDA7CiAKLQlxID0gaW5ldF9mcmFnX2ZpbmQoJm5ldC0+aXB2Ni5m cmFncywgJmlwNl9mcmFncywgJmFyZywgaGFzaCk7CisJcSA9IGluZXRfZnJhZ19maW5kKCZuZXQt PmlwdjYuZnJhZ3MsICZrZXkpOwogCWlmIChJU19FUlJfT1JfTlVMTChxKSkgewogCQlpbmV0X2Zy YWdfbWF5YmVfd2Fybl9vdmVyZmxvdyhxLCBwcl9mbXQoKSk7CiAJCXJldHVybiBOVUxMOwpAQCAt NTIzLDYgKzQ4Myw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9mcmFnX3JjdihzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQogCXN0cnVjdCBmcmFnX3F1ZXVlICpmcTsKIAljb25zdCBzdHJ1Y3QgaXB2NmhkciAqaGRy ID0gaXB2Nl9oZHIoc2tiKTsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KHNrYl9kc3Qoc2ti KS0+ZGV2KTsKKwlpbnQgaWlmOwogCiAJaWYgKElQNkNCKHNrYiktPmZsYWdzICYgSVA2U0tCX0ZS QUdNRU5URUQpCiAJCWdvdG8gZmFpbF9oZHI7CkBAIC01NTEsMTMgKzUxMiwxNCBAQCBzdGF0aWMg aW50IGlwdjZfZnJhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuIDE7CiAJfQog Ci0JZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+aWRlbnRpZmljYXRpb24sICZoZHItPnNhZGRyLCAm aGRyLT5kYWRkciwKLQkJICAgICBza2ItPmRldiA/IHNrYi0+ZGV2LT5pZmluZGV4IDogMCwgaXA2 X2ZyYWdfZWNuKGhkcikpOworCWlpZiA9IHNrYi0+ZGV2ID8gc2tiLT5kZXYtPmlmaW5kZXggOiAw OworCWZxID0gZnFfZmluZChuZXQsIGZoZHItPmlkZW50aWZpY2F0aW9uLCBoZHIsIGlpZik7CiAJ aWYgKGZxKSB7CiAJCWludCByZXQ7CiAKIAkJc3Bpbl9sb2NrKCZmcS0+cS5sb2NrKTsKIAorCQlm cS0+aWlmID0gaWlmOwogCQlyZXQgPSBpcDZfZnJhZ19xdWV1ZShmcSwgc2tiLCBmaGRyLCBJUDZD Qihza2IpLT5uaG9mZik7CiAKIAkJc3Bpbl91bmxvY2soJmZxLT5xLmxvY2spOwpAQCAtNzM1LDE3 ICs2OTcsNDcgQEAgc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcDZfZnJhZ3Nfb3Bz ID0gewogCS5leGl0ID0gaXB2Nl9mcmFnc19leGl0X25ldCwKIH07CiAKK3N0YXRpYyB1MzIgaXA2 X2tleV9oYXNoZm4oY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGxlbiwgdTMyIHNlZWQpCit7CisJcmV0 dXJuIGpoYXNoMihkYXRhLAorCQkgICAgICBzaXplb2Yoc3RydWN0IGZyYWdfdjZfY29tcGFyZV9r ZXkpIC8gc2l6ZW9mKHUzMiksIHNlZWQpOworfQorCitzdGF0aWMgdTMyIGlwNl9vYmpfaGFzaGZu KGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBsZW4sIHUzMiBzZWVkKQoreworCWNvbnN0IHN0cnVjdCBp bmV0X2ZyYWdfcXVldWUgKmZxID0gZGF0YTsKKworCXJldHVybiBqaGFzaDIoKGNvbnN0IHUzMiAq KSZmcS0+a2V5LnY2LAorCQkgICAgICBzaXplb2Yoc3RydWN0IGZyYWdfdjZfY29tcGFyZV9rZXkp IC8gc2l6ZW9mKHUzMiksIHNlZWQpOworfQorCitzdGF0aWMgaW50IGlwNl9vYmpfY21wZm4oc3Ry dWN0IHJoYXNodGFibGVfY29tcGFyZV9hcmcgKmFyZywgY29uc3Qgdm9pZCAqcHRyKQoreworCWNv bnN0IHN0cnVjdCBmcmFnX3Y2X2NvbXBhcmVfa2V5ICprZXkgPSBhcmctPmtleTsKKwljb25zdCBz dHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpmcSA9IHB0cjsKKworCXJldHVybiAhIW1lbWNtcCgmZnEt PmtleSwga2V5LCBzaXplb2YoKmtleSkpOworfQorCitjb25zdCBzdHJ1Y3Qgcmhhc2h0YWJsZV9w YXJhbXMgaXA2X3JoYXNoX3BhcmFtcyA9IHsKKwkuaGVhZF9vZmZzZXQJCT0gb2Zmc2V0b2Yoc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSwgbm9kZSksCisJLmhhc2hmbgkJCT0gaXA2X2tleV9oYXNoZm4s CisJLm9ial9oYXNoZm4JCT0gaXA2X29ial9oYXNoZm4sCisJLm9ial9jbXBmbgkJPSBpcDZfb2Jq X2NtcGZuLAorCS5hdXRvbWF0aWNfc2hyaW5raW5nCT0gdHJ1ZSwKK307CitFWFBPUlRfU1lNQk9M KGlwNl9yaGFzaF9wYXJhbXMpOworCiBpbnQgX19pbml0IGlwdjZfZnJhZ19pbml0KHZvaWQpCiB7 CiAJaW50IHJldDsKIAotCWlwNl9mcmFncy5oYXNoZm4gPSBpcDZfaGFzaGZuOwogCWlwNl9mcmFn cy5jb25zdHJ1Y3RvciA9IGlwNl9mcmFnX2luaXQ7CiAJaXA2X2ZyYWdzLmRlc3RydWN0b3IgPSBO VUxMOwogCWlwNl9mcmFncy5xc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZnJhZ19xdWV1ZSk7Ci0JaXA2 X2ZyYWdzLm1hdGNoID0gaXA2X2ZyYWdfbWF0Y2g7CiAJaXA2X2ZyYWdzLmZyYWdfZXhwaXJlID0g aXA2X2ZyYWdfZXhwaXJlOwogCWlwNl9mcmFncy5mcmFnc19jYWNoZV9uYW1lID0gaXA2X2ZyYWdf Y2FjaGVfbmFtZTsKKwlpcDZfZnJhZ3Mucmhhc2hfcGFyYW1zID0gaXA2X3JoYXNoX3BhcmFtczsK IAlyZXQgPSBpbmV0X2ZyYWdzX2luaXQoJmlwNl9mcmFncyk7CiAJaWYgKHJldCkKIAkJZ290byBv dXQ7CgpGcm9tIGYwNGMzZGIyNzY1NTExZjBkNjFkMzIxZjdhZWNmZTYwOWI4M2E5YTEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFsZXhhbmRlciBBcmluZyA8YXJpbmdAbW9qYXRhdHUu Y29tPgpEYXRlOiBGcmksIDIwIEFwciAyMDE4IDE0OjU0OjEzIC0wNDAwClN1YmplY3Q6IFsxMC8z M10gbmV0OiBpZWVlODAyMTU0OiA2bG93cGFuOiBmaXggZnJhZyByZWFzc2VtYmx5Cgpjb21taXQg ZjE4ZmE1ZGU1YmE3ZjFkNjY1MDk1MTUwMmJiOTZhNmU0NzE1YTk0OCB1cHN0cmVhbS4KClRoaXMg cGF0Y2ggaW5pdGlhbGl6ZSBzdGFjayB2YXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgaW4KZnJhZ19s b3dwYW5fY29tcGFyZV9rZXkgdG8gemVyby4gSW4gbXkgY2FzZSB0aGVyZSBhcmUgcGFkZGluZyBi eXRlcyBpbiB0aGUKc3RydWN0dXJlcyBpZWVlODAyMTU0X2FkZHIgYXMgd2VsbCBpbiBmcmFnX2xv d3Bhbl9jb21wYXJlX2tleS4gT3RoZXJ3aXNlCnRoZSBrZXkgdmFyaWFibGUgY29udGFpbnMgcmFu ZG9tIGJ5dGVzLiBUaGUgcmVzdWx0IGlzIHRoYXQgYSBjb21wYXJlIG9mCnR3byBrZXlzIGJ5IG1l bWNtcCB3b3JrcyBpbmNvcnJlY3QuCgpGaXhlczogNjQ4NzAwZjc2YjAzICgiaW5ldDogZnJhZ3M6 IHVzZSByaGFzaHRhYmxlcyBmb3IgcmVhc3NlbWJseSB1bml0cyIpClNpZ25lZC1vZmYtYnk6IEFs ZXhhbmRlciBBcmluZyA8YXJpbmdAbW9qYXRhdHUuY29tPgpSZXBvcnRlZC1ieTogU3RlZmFuIFNj aG1pZHQgPHN0ZWZhbkBvc2cuc2Ftc3VuZy5jb20+ClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBTY2ht aWR0IDxzdGVmYW5Ab3NnLnNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0 Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBuZXQvaWVlZTgwMjE1 NC82bG93cGFuLzZsb3dwYW5faS5oICB8ICA0ICsrLS0KIG5ldC9pZWVlODAyMTU0LzZsb3dwYW4v cmVhc3NlbWJseS5jIHwgMTQgKysrKysrKy0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNl cnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9pZWVlODAyMTU0LzZs b3dwYW4vNmxvd3Bhbl9pLmggYi9uZXQvaWVlZTgwMjE1NC82bG93cGFuLzZsb3dwYW5faS5oCmlu ZGV4IDNjNWZjMDY4ODNiYS4uZmRiZWJlNTE0NDZmIDEwMDY0NAotLS0gYS9uZXQvaWVlZTgwMjE1 NC82bG93cGFuLzZsb3dwYW5faS5oCisrKyBiL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vNmxvd3Bh bl9pLmgKQEAgLTE5LDggKzE5LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBfX2JpdHdpc2VfXyBsb3dw YW5fcnhfcmVzdWx0Owogc3RydWN0IGZyYWdfbG93cGFuX2NvbXBhcmVfa2V5IHsKIAl1MTYgdGFn OwogCXUxNiBkX3NpemU7Ci0JY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfYWRkciBzcmM7Ci0JY29u c3Qgc3RydWN0IGllZWU4MDIxNTRfYWRkciBkc3Q7CisJc3RydWN0IGllZWU4MDIxNTRfYWRkciBz cmM7CisJc3RydWN0IGllZWU4MDIxNTRfYWRkciBkc3Q7CiB9OwogCiAvKiBFcXVpdmFsZW50IG9m IGlwdjQgc3RydWN0IGlwcQpkaWZmIC0tZ2l0IGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFz c2VtYmx5LmMgYi9uZXQvaWVlZTgwMjE1NC82bG93cGFuL3JlYXNzZW1ibHkuYwppbmRleCA2NWMw YjczNDlmOWQuLjUxMDU2OGMzNzQ3NiAxMDA2NDQKLS0tIGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bh bi9yZWFzc2VtYmx5LmMKKysrIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMK QEAgLTc0LDE0ICs3NCwxNCBAQCBmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0 IGxvd3Bhbl84MDIxNTRfY2IgKmNiLAogewogCXN0cnVjdCBuZXRuc19pZWVlODAyMTU0X2xvd3Bh biAqaWVlZTgwMjE1NF9sb3dwYW4gPQogCQluZXRfaWVlZTgwMjE1NF9sb3dwYW4obmV0KTsKLQlz dHJ1Y3QgZnJhZ19sb3dwYW5fY29tcGFyZV9rZXkga2V5ID0gewotCQkudGFnID0gY2ItPmRfdGFn LAotCQkuZF9zaXplID0gY2ItPmRfc2l6ZSwKLQkJLnNyYyA9ICpzcmMsCi0JCS5kc3QgPSAqZHN0 LAotCX07CisJc3RydWN0IGZyYWdfbG93cGFuX2NvbXBhcmVfa2V5IGtleSA9IHt9OwogCXN0cnVj dCBpbmV0X2ZyYWdfcXVldWUgKnE7CiAKKwlrZXkudGFnID0gY2ItPmRfdGFnOworCWtleS5kX3Np emUgPSBjYi0+ZF9zaXplOworCWtleS5zcmMgPSAqc3JjOworCWtleS5kc3QgPSAqZHN0OworCiAJ cSA9IGluZXRfZnJhZ19maW5kKCZpZWVlODAyMTU0X2xvd3Bhbi0+ZnJhZ3MsICZrZXkpOwogCWlm IChJU19FUlJfT1JfTlVMTChxKSkgewogCQlpbmV0X2ZyYWdfbWF5YmVfd2Fybl9vdmVyZmxvdyhx LCBwcl9mbXQoKSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgaW50IGxvd3Bhbl9mcmFnX3JjdihzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCB1OCBmcmFnX3R5cGUpCiAJc3RydWN0IGxvd3Bhbl9mcmFnX3F1ZXVl ICpmcTsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KHNrYi0+ZGV2KTsKIAlzdHJ1Y3QgbG93 cGFuXzgwMjE1NF9jYiAqY2IgPSBsb3dwYW5fODAyMTU0X2NiKHNrYik7Ci0Jc3RydWN0IGllZWU4 MDIxNTRfaGRyIGhkcjsKKwlzdHJ1Y3QgaWVlZTgwMjE1NF9oZHIgaGRyID0ge307CiAJaW50IGVy cjsKIAogCWlmIChpZWVlODAyMTU0X2hkcl9wZWVrX2FkZHJzKHNrYiwgJmhkcikgPCAwKQoKRnJv bSA3NmEyZDViNzYxMjM0N2NiZGFlNmViNjRhMDZkNTFlZjRhNjYwZWU4IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBQYW9sbyBBYmVuaSA8cGFiZW5pQHJlZGhhdC5jb20+CkRhdGU6IEZy aSwgNiBKdWwgMjAxOCAxMjozMDoyMCArMDIwMApTdWJqZWN0OiBbMTEvMzNdIGlwZnJhZzogcmVh bGx5IHByZXZlbnQgYWxsb2NhdGlvbiBvbiBuZXRucyBleGl0Cgpjb21taXQgZjZmMmE0YTJlYjky YmM3MzY3MTIwNDE5OGJiMmY4YWI1M2ZmNTlmYiB1cHN0cmVhbS4KClNldHRpbmcgdGhlIGxvdyB0 aHJlc2hvbGQgdG8gMCBoYXMgbm8gZWZmZWN0IG9uIGZyYWdzIGFsbG9jYXRpb24sCndlIG5lZWQg dG8gY2xlYXIgaGlnaF90aHJlc2ggaW5zdGVhZC4KClRoZSBjb2RlIHdhcyBwcmUtZXhpc3RlbnQg dG8gY29tbWl0IDY0ODcwMGY3NmIwMyAoImluZXQ6IGZyYWdzOgp1c2Ugcmhhc2h0YWJsZXMgZm9y IHJlYXNzZW1ibHkgdW5pdHMiKSwgYnV0IGJlZm9yZSB0aGUgYWJvdmUsCnN1Y2ggYXNzaWdubWVu dCBoYWQgYSBkaWZmZXJlbnQgcm9sZTogcHJldmVudCBjb25jdXJyZW50IGV2aWN0aW9uCmZyb20g dGhlIHdvcmtlciBhbmQgdGhlIG5ldG5zIGNsZWFudXAgaGVscGVyLgoKRml4ZXM6IDY0ODcwMGY3 NmIwMyAoImluZXQ6IGZyYWdzOiB1c2Ugcmhhc2h0YWJsZXMgZm9yIHJlYXNzZW1ibHkgdW5pdHMi KQpTaWduZWQtb2ZmLWJ5OiBQYW9sbyBBYmVuaSA8cGFiZW5pQHJlZGhhdC5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogbmV0 L2lwdjQvaW5ldF9mcmFnbWVudC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5j IGIvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jCmluZGV4IDEwY2Q3YzE4MjEzNi4uY2NhNzM2MmM4 ODM0IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKKysrIGIvbmV0L2lwdjQv aW5ldF9mcmFnbWVudC5jCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyB2b2lkIGluZXRfZnJhZ3Nf ZnJlZV9jYih2b2lkICpwdHIsIHZvaWQgKmFyZykKIAogdm9pZCBpbmV0X2ZyYWdzX2V4aXRfbmV0 KHN0cnVjdCBuZXRuc19mcmFncyAqbmYpCiB7Ci0JbmYtPmxvd190aHJlc2ggPSAwOyAvKiBwcmV2 ZW50IGNyZWF0aW9uIG9mIG5ldyBmcmFncyAqLworCW5mLT5oaWdoX3RocmVzaCA9IDA7IC8qIHBy ZXZlbnQgY3JlYXRpb24gb2YgbmV3IGZyYWdzICovCiAKIAlyaGFzaHRhYmxlX2ZyZWVfYW5kX2Rl c3Ryb3koJm5mLT5yaGFzaHRhYmxlLCBpbmV0X2ZyYWdzX2ZyZWVfY2IsIE5VTEwpOwogfQoKRnJv bSA3Njg2MTQyMzg5M2E3YzFhMmY2MTI2NGY5NTI1YTU5OGVkYTYzMDFmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6 IFdlZCwgMTAgT2N0IDIwMTggMTI6Mjk6NTcgLTA3MDAKU3ViamVjdDogWzEyLzMzXSBpbmV0OiBm cmFnczogcmVtb3ZlIHNvbWUgaGVscGVycwoKY29tbWl0IDZiZWZlNGE3OGIxNTUzZWRiNmVlZDNh NzhiNGJjZDk3NDg1MjY2NzIgdXBzdHJlYW0uCgpSZW1vdmUgc3VtX2ZyYWdfbWVtX2xpbWl0KCks IGlwX2ZyYWdfbWVtKCkgJiBpcDZfZnJhZ19tZW0oKQoKQWxzbyBzaW5jZSB3ZSB1c2Ugcmhhc2h0 YWJsZSB3ZSBjYW4gYnJpbmcgYmFjayB0aGUgbnVtYmVyIG9mIGZyYWdtZW50cwppbiAiZ3JlcCBG UkFHIC9wcm9jL25ldC9zb2Nrc3RhdCAvcHJvYy9uZXQvc29ja3N0YXQ2IiB0aGF0IHdhcwpyZW1v dmVkIGluIGNvbW1pdCA0MzRkMzA1NDA1YWIgKCJpbmV0OiBmcmFnOiBkb24ndCBhY2NvdW50IG51 bWJlcgpvZiBmcmFnbWVudCBxdWV1ZXMiKQoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxl ZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to QGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5o dXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGluY2x1ZGUvbmV0L2luZXRfZnJhZy5oIHwg NSAtLS0tLQogaW5jbHVkZS9uZXQvaXAuaCAgICAgICAgfCAxIC0KIGluY2x1ZGUvbmV0L2lwdjYu aCAgICAgIHwgNyAtLS0tLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jICB8IDUgLS0tLS0KIG5l dC9pcHY0L3Byb2MuYyAgICAgICAgIHwgNiArKystLS0KIG5ldC9pcHY2L3Byb2MuYyAgICAgICAg IHwgNSArKystLQogNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oIGIvaW5jbHVkZS9uZXQv aW5ldF9mcmFnLmgKaW5kZXggNjIzZWI4MjIyYTc1Li4zMTlhNDM1Y2Q3MjMgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCkBA IC0xNDAsMTEgKzE0MCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfZnJhZ19tZW1fbGltaXQo c3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgaW50IGkpCiAJYXRvbWljX2FkZChpLCAmbmYtPm1lbSk7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHN1bV9mcmFnX21lbV9saW1pdChzdHJ1Y3QgbmV0bnNf ZnJhZ3MgKm5mKQotewotCXJldHVybiBhdG9taWNfcmVhZCgmbmYtPm1lbSk7Ci19Ci0KIC8qIFJG QyAzMTY4IHN1cHBvcnQgOgogICogV2Ugd2FudCB0byBjaGVjayBFQ04gdmFsdWVzIG9mIGFsbCBm cmFnbWVudHMsIGRvIGRldGVjdCBpbnZhbGlkIGNvbWJpbmF0aW9ucy4KICAqIEluIGlwcS0+ZWNu LCB3ZSBzdG9yZSB0aGUgT1IgdmFsdWUgb2YgZWFjaCBpcDRfZnJhZ19lY24oKSBmcmFnbWVudCB2 YWx1ZS4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwLmggYi9pbmNsdWRlL25ldC9pcC5oCmlu ZGV4IDA1MzBiY2RiYzIxMi4uN2I5Njg5Mjc0NzdkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9p cC5oCisrKyBiL2luY2x1ZGUvbmV0L2lwLmgKQEAgLTUyNCw3ICs1MjQsNiBAQCBzdGF0aWMgaW5s aW5lIHN0cnVjdCBza19idWZmICppcF9jaGVja19kZWZyYWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1 Y3Qgc2tfYnVmZiAqcwogCXJldHVybiBza2I7CiB9CiAjZW5kaWYKLWludCBpcF9mcmFnX21lbShz dHJ1Y3QgbmV0ICpuZXQpOwogCiAvKgogICoJRnVuY3Rpb25zIHByb3ZpZGVkIGJ5IGlwX2Zvcndh cmQuYwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5o CmluZGV4IDIwNjdiYmVjMDIxYy4uYzA3Y2Y5NTk2YjZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25l dC9pcHY2LmgKKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0zMjAsMTMgKzMyMCw2IEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBpcHY2X2FjY2VwdF9yYShzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQog CSAgICBpZGV2LT5jbmYuYWNjZXB0X3JhOwogfQogCi0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBW NikKLXN0YXRpYyBpbmxpbmUgaW50IGlwNl9mcmFnX21lbShzdHJ1Y3QgbmV0ICpuZXQpCi17Ci0J cmV0dXJuIHN1bV9mcmFnX21lbV9saW1pdCgmbmV0LT5pcHY2LmZyYWdzKTsKLX0KLSNlbmRpZgot CiAjZGVmaW5lIElQVjZfRlJBR19ISUdIX1RIUkVTSAkoNCAqIDEwMjQqMTAyNCkJLyogNDE5NDMw NCAqLwogI2RlZmluZSBJUFY2X0ZSQUdfTE9XX1RIUkVTSAkoMyAqIDEwMjQqMTAyNCkJLyogMzE0 NTcyOCAqLwogI2RlZmluZSBJUFY2X0ZSQUdfVElNRU9VVAkoNjAgKiBIWikJLyogNjAgc2Vjb25k cyAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lwX2Zy YWdtZW50LmMKaW5kZXggYjM4M2NiYzg2YjEzLi40NGEzOTgyNTYzY2MgMTAwNjQ0Ci0tLSBhL25l dC9pcHY0L2lwX2ZyYWdtZW50LmMKKysrIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAtODQs MTEgKzg0LDYgQEAgc3RhdGljIHU4IGlwNF9mcmFnX2Vjbih1OCB0b3MpCiAKIHN0YXRpYyBzdHJ1 Y3QgaW5ldF9mcmFncyBpcDRfZnJhZ3M7CiAKLWludCBpcF9mcmFnX21lbShzdHJ1Y3QgbmV0ICpu ZXQpCi17Ci0JcmV0dXJuIHN1bV9mcmFnX21lbV9saW1pdCgmbmV0LT5pcHY0LmZyYWdzKTsKLX0K LQogc3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVm ZiAqcHJldiwKIAkJCSBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIApkaWZmIC0tZ2l0IGEvbmV0 L2lwdjQvcHJvYy5jIGIvbmV0L2lwdjQvcHJvYy5jCmluZGV4IDNhYmQ5ZDdhM2FkZi4uZDcyOWFk MmU0YWQxIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9wcm9jLmMKKysrIGIvbmV0L2lwdjQvcHJvYy5j CkBAIC01Miw3ICs1Miw2IEBACiBzdGF0aWMgaW50IHNvY2tzdGF0X3NlcV9zaG93KHN0cnVjdCBz ZXFfZmlsZSAqc2VxLCB2b2lkICp2KQogewogCXN0cnVjdCBuZXQgKm5ldCA9IHNlcS0+cHJpdmF0 ZTsKLQl1bnNpZ25lZCBpbnQgZnJhZ19tZW07CiAJaW50IG9ycGhhbnMsIHNvY2tldHM7CiAKIAls b2NhbF9iaF9kaXNhYmxlKCk7CkBAIC03Miw4ICs3MSw5IEBAIHN0YXRpYyBpbnQgc29ja3N0YXRf c2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpCiAJCSAgIHNvY2tfcHJvdF9p bnVzZV9nZXQobmV0LCAmdWRwbGl0ZV9wcm90KSk7CiAJc2VxX3ByaW50ZihzZXEsICJSQVc6IGlu dXNlICVkXG4iLAogCQkgICBzb2NrX3Byb3RfaW51c2VfZ2V0KG5ldCwgJnJhd19wcm90KSk7Ci0J ZnJhZ19tZW0gPSBpcF9mcmFnX21lbShuZXQpOwotCXNlcV9wcmludGYoc2VxLCAgIkZSQUc6IGlu dXNlICV1IG1lbW9yeSAldVxuIiwgISFmcmFnX21lbSwgZnJhZ19tZW0pOworCXNlcV9wcmludGYo c2VxLCAgIkZSQUc6IGludXNlICV1IG1lbW9yeSAldVxuIiwKKwkJICAgYXRvbWljX3JlYWQoJm5l dC0+aXB2NC5mcmFncy5yaGFzaHRhYmxlLm5lbGVtcyksCisJCSAgIGZyYWdfbWVtX2xpbWl0KCZu ZXQtPmlwdjQuZnJhZ3MpKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYv cHJvYy5jIGIvbmV0L2lwdjYvcHJvYy5jCmluZGV4IDY3OTI1M2QwYWY4NC4uMTc3ZTJmZTIwOTE1 IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9wcm9jLmMKKysrIGIvbmV0L2lwdjYvcHJvYy5jCkBAIC0z Myw3ICszMyw2IEBACiBzdGF0aWMgaW50IHNvY2tzdGF0Nl9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKnNlcSwgdm9pZCAqdikKIHsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBzZXEtPnByaXZhdGU7Ci0J dW5zaWduZWQgaW50IGZyYWdfbWVtID0gaXA2X2ZyYWdfbWVtKG5ldCk7CiAKIAlzZXFfcHJpbnRm KHNlcSwgIlRDUDY6IGludXNlICVkXG4iLAogCQkgICAgICAgc29ja19wcm90X2ludXNlX2dldChu ZXQsICZ0Y3B2Nl9wcm90KSk7CkBAIC00Myw3ICs0Miw5IEBAIHN0YXRpYyBpbnQgc29ja3N0YXQ2 X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KQogCQkJc29ja19wcm90X2lu dXNlX2dldChuZXQsICZ1ZHBsaXRldjZfcHJvdCkpOwogCXNlcV9wcmludGYoc2VxLCAiUkFXNjog aW51c2UgJWRcbiIsCiAJCSAgICAgICBzb2NrX3Byb3RfaW51c2VfZ2V0KG5ldCwgJnJhd3Y2X3By b3QpKTsKLQlzZXFfcHJpbnRmKHNlcSwgIkZSQUc2OiBpbnVzZSAldSBtZW1vcnkgJXVcbiIsICEh ZnJhZ19tZW0sIGZyYWdfbWVtKTsKKwlzZXFfcHJpbnRmKHNlcSwgIkZSQUc2OiBpbnVzZSAldSBt ZW1vcnkgJXVcbiIsCisJCSAgIGF0b21pY19yZWFkKCZuZXQtPmlwdjYuZnJhZ3Mucmhhc2h0YWJs ZS5uZWxlbXMpLAorCQkgICBmcmFnX21lbV9saW1pdCgmbmV0LT5pcHY2LmZyYWdzKSk7CiAJcmV0 dXJuIDA7CiB9CiAKCkZyb20gMTJhMDBlNzU4ZDgwMTc0YmYyMjBkMzNiMzU2YThmNmQ2MzZhYzZj MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBn b29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjI5OjU4IC0wNzAwClN1YmplY3Q6 IFsxMy8zM10gaW5ldDogZnJhZ3M6IGdldCByaWYgb2YgaW5ldF9mcmFnX2V2aWN0aW5nKCkKCmNv bW1pdCAzOTlkMTQwNGJlNjYwZDM1NTE5MmZmNGRmNWNjYzNmNDE1OWVjMWU0IHVwc3RyZWFtLgoK VGhpcyByZWZhY3RvcnMgaXBfZXhwaXJlKCkgc2luY2Ugb25lIGluZGVudGF0aW9uIGxldmVsIGlz IHJlbW92ZWQuCgpOb3RlOiBpbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgdHJ5IGhhcmQgdG8gYXZv aWQgdGhlIHNrYl9jbG9uZSgpCnNpbmNlIHRoaXMgaXMgYSBzZXJpb3VzIHBlcmZvcm1hbmNlIGNv c3QuClVuZGVyIERET1MsIHRoZSBJQ01QIG1lc3NhZ2Ugd29udCBiZSBzZW50IGJlY2F1c2Ugb2Yg cmF0ZSBsaW1pdHMuCgpGYWN0IHRoYXQgaXA2X2V4cGlyZV9mcmFnX3F1ZXVlKCkgZG9lcyBub3Qg dXNlIHNrYl9jbG9uZSgpIGlzCmRpc3R1cmJpbmcgdG9vLiBQcmVzdW1hYmx5IElQdjYgc2hvdWxk IGhhdmUgdGhlIHNhbWUKaXNzdWUgdGhhbiB0aGUgb25lIHdlIGZpeGVkIGluIGNvbW1pdCBlYzRm YmQ2NDc1MWQKKCJpbmV0OiBmcmFnOiByZWxlYXNlIHNwaW5sb2NrIGJlZm9yZSBjYWxsaW5nIGlj bXBfc2VuZCgpIikKClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xl LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0 PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRp b24ub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogYWRqdXN0IGNvbnRleHRdClNpZ25lZC1v ZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0K IGluY2x1ZGUvbmV0L2luZXRfZnJhZy5oIHwgIDUgLS0tLQogbmV0L2lwdjQvaXBfZnJhZ21lbnQu YyAgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBuZXQvaXB2Ni9yZWFzc2VtYmx5LmMgICB8ICA0IC0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMiBp bnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9p bmV0X2ZyYWcuaCBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCmluZGV4IDMxOWE0MzVjZDcyMy4u NmViOWY3Y2YxZjEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaAorKysgYi9p bmNsdWRlL25ldC9pbmV0X2ZyYWcuaApAQCAtMTE4LDExICsxMTgsNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgaW5ldF9mcmFnX3B1dChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxKQogCQlpbmV0X2Zy YWdfZGVzdHJveShxKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGluZXRfZnJhZ19ldmljdGlu ZyhzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxKQotewotCXJldHVybiBmYWxzZTsKLX0KLQogLyog TWVtb3J5IFRyYWNraW5nIEZ1bmN0aW9ucy4gKi8KIAogc3RhdGljIGlubGluZSBpbnQgZnJhZ19t ZW1fbGltaXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZikKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lw X2ZyYWdtZW50LmMgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCmluZGV4IDQ0YTM5ODI1NjNjYy4u ZTA0NjVhZDIxODY4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCisrKyBiL25l dC9pcHY0L2lwX2ZyYWdtZW50LmMKQEAgLTE0Myw4ICsxNDMsMTEgQEAgc3RhdGljIGJvb2wgZnJh Z19leHBpcmVfc2tpcF9pY21wKHUzMiB1c2VyKQogICovCiBzdGF0aWMgdm9pZCBpcF9leHBpcmUo dW5zaWduZWQgbG9uZyBhcmcpCiB7Ci0Jc3RydWN0IGlwcSAqcXA7CisJc3RydWN0IHNrX2J1ZmYg KmNsb25lLCAqaGVhZDsKKwljb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDsKIAlzdHJ1Y3QgbmV0ICpu ZXQ7CisJc3RydWN0IGlwcSAqcXA7CisJaW50IGVycjsKIAogCXFwID0gY29udGFpbmVyX29mKChz dHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICopIGFyZywgc3RydWN0IGlwcSwgcSk7CiAJbmV0ID0gY29u dGFpbmVyX29mKHFwLT5xLm5ldCwgc3RydWN0IG5ldCwgaXB2NC5mcmFncyk7CkBAIC0xNTgsNDUg KzE2MSw0MSBAQCBzdGF0aWMgdm9pZCBpcF9leHBpcmUodW5zaWduZWQgbG9uZyBhcmcpCiAJaXBx X2tpbGwocXApOwogCUlQX0lOQ19TVEFUU19CSChuZXQsIElQU1RBVFNfTUlCX1JFQVNNRkFJTFMp OwogCi0JaWYgKCFpbmV0X2ZyYWdfZXZpY3RpbmcoJnFwLT5xKSkgewotCQlzdHJ1Y3Qgc2tfYnVm ZiAqY2xvbmUsICpoZWFkID0gcXAtPnEuZnJhZ21lbnRzOwotCQljb25zdCBzdHJ1Y3QgaXBoZHIg KmlwaDsKLQkJaW50IGVycjsKKwloZWFkID0gcXAtPnEuZnJhZ21lbnRzOwogCi0JCUlQX0lOQ19T VEFUU19CSChuZXQsIElQU1RBVFNfTUlCX1JFQVNNVElNRU9VVCk7CisJSVBfSU5DX1NUQVRTX0JI KG5ldCwgSVBTVEFUU19NSUJfUkVBU01USU1FT1VUKTsKIAotCQlpZiAoIShxcC0+cS5mbGFncyAm IElORVRfRlJBR19GSVJTVF9JTikgfHwgIXFwLT5xLmZyYWdtZW50cykKLQkJCWdvdG8gb3V0Owor CWlmICghKHFwLT5xLmZsYWdzICYgSU5FVF9GUkFHX0ZJUlNUX0lOKSB8fCAhaGVhZCkKKwkJZ290 byBvdXQ7CiAKLQkJaGVhZC0+ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBxcC0+aWlm KTsKLQkJaWYgKCFoZWFkLT5kZXYpCi0JCQlnb3RvIG91dDsKKwloZWFkLT5kZXYgPSBkZXZfZ2V0 X2J5X2luZGV4X3JjdShuZXQsIHFwLT5paWYpOworCWlmICghaGVhZC0+ZGV2KQorCQlnb3RvIG91 dDsKIAogCi0JCS8qIHNrYiBoYXMgbm8gZHN0LCBwZXJmb3JtIHJvdXRlIGxvb2t1cCBhZ2FpbiAq LwotCQlpcGggPSBpcF9oZHIoaGVhZCk7Ci0JCWVyciA9IGlwX3JvdXRlX2lucHV0X25vcmVmKGhl YWQsIGlwaC0+ZGFkZHIsIGlwaC0+c2FkZHIsCisJLyogc2tiIGhhcyBubyBkc3QsIHBlcmZvcm0g cm91dGUgbG9va3VwIGFnYWluICovCisJaXBoID0gaXBfaGRyKGhlYWQpOworCWVyciA9IGlwX3Jv dXRlX2lucHV0X25vcmVmKGhlYWQsIGlwaC0+ZGFkZHIsIGlwaC0+c2FkZHIsCiAJCQkJCSAgIGlw aC0+dG9zLCBoZWFkLT5kZXYpOwotCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7CisJaWYgKGVycikK KwkJZ290byBvdXQ7CiAKLQkJLyogT25seSBhbiBlbmQgaG9zdCBuZWVkcyB0byBzZW5kIGFuIElD TVAKLQkJICogIkZyYWdtZW50IFJlYXNzZW1ibHkgVGltZW91dCIgbWVzc2FnZSwgcGVyIFJGQzc5 Mi4KLQkJICovCi0JCWlmIChmcmFnX2V4cGlyZV9za2lwX2ljbXAocXAtPnEua2V5LnY0LnVzZXIp ICYmCi0JCSAgICAoc2tiX3J0YWJsZShoZWFkKS0+cnRfdHlwZSAhPSBSVE5fTE9DQUwpKQotCQkJ Z290byBvdXQ7Ci0KLQkJY2xvbmUgPSBza2JfY2xvbmUoaGVhZCwgR0ZQX0FUT01JQyk7Ci0KLQkJ LyogU2VuZCBhbiBJQ01QICJGcmFnbWVudCBSZWFzc2VtYmx5IFRpbWVvdXQiIG1lc3NhZ2UuICov Ci0JCWlmIChjbG9uZSkgewotCQkJc3Bpbl91bmxvY2soJnFwLT5xLmxvY2spOwotCQkJaWNtcF9z ZW5kKGNsb25lLCBJQ01QX1RJTUVfRVhDRUVERUQsCi0JCQkJICBJQ01QX0VYQ19GUkFHVElNRSwg MCk7Ci0JCQljb25zdW1lX3NrYihjbG9uZSk7Ci0JCQlnb3RvIG91dF9yY3VfdW5sb2NrOwotCQl9 CisJLyogT25seSBhbiBlbmQgaG9zdCBuZWVkcyB0byBzZW5kIGFuIElDTVAKKwkgKiAiRnJhZ21l bnQgUmVhc3NlbWJseSBUaW1lb3V0IiBtZXNzYWdlLCBwZXIgUkZDNzkyLgorCSAqLworCWlmIChm cmFnX2V4cGlyZV9za2lwX2ljbXAocXAtPnEua2V5LnY0LnVzZXIpICYmCisJICAgIChza2JfcnRh YmxlKGhlYWQpLT5ydF90eXBlICE9IFJUTl9MT0NBTCkpCisJCWdvdG8gb3V0OworCisJY2xvbmUg PSBza2JfY2xvbmUoaGVhZCwgR0ZQX0FUT01JQyk7CisKKwkvKiBTZW5kIGFuIElDTVAgIkZyYWdt ZW50IFJlYXNzZW1ibHkgVGltZW91dCIgbWVzc2FnZS4gKi8KKwlpZiAoY2xvbmUpIHsKKwkJc3Bp bl91bmxvY2soJnFwLT5xLmxvY2spOworCQlpY21wX3NlbmQoY2xvbmUsIElDTVBfVElNRV9FWENF RURFRCwKKwkJCSAgSUNNUF9FWENfRlJBR1RJTUUsIDApOworCQljb25zdW1lX3NrYihjbG9uZSk7 CisJCWdvdG8gb3V0X3JjdV91bmxvY2s7CiAJfQogb3V0OgogCXNwaW5fdW5sb2NrKCZxcC0+cS5s b2NrKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYyBiL25ldC9pcHY2L3JlYXNz ZW1ibHkuYwppbmRleCAwNjI2YzFiODk0ZTQuLjAwNzZkN2EwMzMyMyAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYvcmVhc3NlbWJseS5jCisrKyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwpAQCAtMTA2LDEw ICsxMDYsNiBAQCB2b2lkIGlwNl9leHBpcmVfZnJhZ19xdWV1ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0 cnVjdCBmcmFnX3F1ZXVlICpmcSkKIAkJZ290byBvdXRfcmN1X3VubG9jazsKIAogCUlQNl9JTkNf U1RBVFNfQkgobmV0LCBfX2luNl9kZXZfZ2V0KGRldiksIElQU1RBVFNfTUlCX1JFQVNNRkFJTFMp OwotCi0JaWYgKGluZXRfZnJhZ19ldmljdGluZygmZnEtPnEpKQotCQlnb3RvIG91dF9yY3VfdW5s b2NrOwotCiAJSVA2X0lOQ19TVEFUU19CSChuZXQsIF9faW42X2Rldl9nZXQoZGV2KSwgSVBTVEFU U19NSUJfUkVBU01USU1FT1VUKTsKIAogCS8qIERvbid0IHNlbmQgZXJyb3IgaWYgdGhlIGZpcnN0 IHNlZ21lbnQgZGlkIG5vdCBhcnJpdmUuICovCgpGcm9tIDU5Mjk5MDI3MmY5OGRkMTMxYWFmOTYw NDQ5ZmQyY2NlM2ZkODg0YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVt YXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjoyOTo1 OSAtMDcwMApTdWJqZWN0OiBbMTQvMzNdIGluZXQ6IGZyYWdzOiByZW1vdmUgaW5ldF9mcmFnX21h eWJlX3dhcm5fb3ZlcmZsb3coKQoKY29tbWl0IDJkNDRlZDIyZTYwN2Y5YTI4NWIwNDlkZTIyNjNl Mzg0MDY3M2EyNjAgdXBzdHJlYW0uCgpUaGlzIGZ1bmN0aW9uIGlzIG9ic29sZXRlLCBhZnRlciBy aGFzaHRhYmxlIGFkZGl0aW9uIHRvIGluZXQgZGVmcmFnLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBE dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGlu Z3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGluY2x1ZGUvbmV0L2luZXRf ZnJhZy5oICAgICAgICAgICAgICAgICB8ICAyIC0tCiBuZXQvaWVlZTgwMjE1NC82bG93cGFuL3Jl YXNzZW1ibHkuYyAgICAgfCAgNSArKy0tLQogbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jICAgICAg ICAgICAgICAgIHwgMTEgLS0tLS0tLS0tLS0KIG5ldC9pcHY0L2lwX2ZyYWdtZW50LmMgICAgICAg ICAgICAgICAgICB8ICA1ICsrLS0tCiBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Jl YXNtLmMgfCAgNSArKy0tLQogbmV0L2lwdjYvcmVhc3NlbWJseS5jICAgICAgICAgICAgICAgICAg IHwgIDUgKystLS0KIDYgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaCBiL2luY2x1ZGUvbmV0 L2luZXRfZnJhZy5oCmluZGV4IDZlYjlmN2NmMWYxMi4uYTk0NTNkOWU1NjJiIDEwMDY0NAotLS0g YS9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaAorKysgYi9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaApA QCAtMTA5LDggKzEwOSw2IEBAIHZvaWQgaW5ldF9mcmFnc19leGl0X25ldChzdHJ1Y3QgbmV0bnNf ZnJhZ3MgKm5mKTsKIHZvaWQgaW5ldF9mcmFnX2tpbGwoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAq cSk7CiB2b2lkIGluZXRfZnJhZ19kZXN0cm95KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpOwog c3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqaW5ldF9mcmFnX2ZpbmQoc3RydWN0IG5ldG5zX2ZyYWdz ICpuZiwgdm9pZCAqa2V5KTsKLXZvaWQgaW5ldF9mcmFnX21heWJlX3dhcm5fb3ZlcmZsb3coc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwKLQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgpOwogCiBz dGF0aWMgaW5saW5lIHZvaWQgaW5ldF9mcmFnX3B1dChzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpx KQogewpkaWZmIC0tZ2l0IGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMgYi9u ZXQvaWVlZTgwMjE1NC82bG93cGFuL3JlYXNzZW1ibHkuYwppbmRleCA1MTA1NjhjMzc0NzYuLmM1 YWQ4OWY1ZjAyOCAxMDA2NDQKLS0tIGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5 LmMKKysrIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKQEAgLTgzLDEwICs4 Myw5IEBAIGZxX2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbG93cGFuXzgwMjE1 NF9jYiAqY2IsCiAJa2V5LmRzdCA9ICpkc3Q7CiAKIAlxID0gaW5ldF9mcmFnX2ZpbmQoJmllZWU4 MDIxNTRfbG93cGFuLT5mcmFncywgJmtleSk7Ci0JaWYgKElTX0VSUl9PUl9OVUxMKHEpKSB7Ci0J CWluZXRfZnJhZ19tYXliZV93YXJuX292ZXJmbG93KHEsIHByX2ZtdCgpKTsKKwlpZiAoIXEpCiAJ CXJldHVybiBOVUxMOwotCX0KKwogCXJldHVybiBjb250YWluZXJfb2YocSwgc3RydWN0IGxvd3Bh bl9mcmFnX3F1ZXVlLCBxKTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9mcmFnbWVu dC5jIGIvbmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jCmluZGV4IGNjYTczNjJjODgzNC4uYmI3ODRj M2E0MGZiIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKKysrIGIvbmV0L2lw djQvaW5ldF9mcmFnbWVudC5jCkBAIC0yMjUsMTQgKzIyNSwzIEBAIHN0cnVjdCBpbmV0X2ZyYWdf cXVldWUgKmluZXRfZnJhZ19maW5kKHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIHZvaWQgKmtleSkK IAlyZXR1cm4gaW5ldF9mcmFnX2NyZWF0ZShuZiwga2V5KTsKIH0KIEVYUE9SVF9TWU1CT0woaW5l dF9mcmFnX2ZpbmQpOwotCi12b2lkIGluZXRfZnJhZ19tYXliZV93YXJuX292ZXJmbG93KHN0cnVj dCBpbmV0X2ZyYWdfcXVldWUgKnEsCi0JCQkJICAgY29uc3QgY2hhciAqcHJlZml4KQotewotCXN0 YXRpYyBjb25zdCBjaGFyIG1zZ1tdID0gImluZXRfZnJhZ19maW5kOiBGcmFnbWVudCBoYXNoIGJ1 Y2tldCIKLQkJIiBsaXN0IGxlbmd0aCBncmV3IG92ZXIgbGltaXQuIERyb3BwaW5nIGZyYWdtZW50 LlxuIjsKLQotCWlmIChQVFJfRVJSKHEpID09IC1FTk9CVUZTKQotCQluZXRfZGJnX3JhdGVsaW1p dGVkKCIlcyVzIiwgcHJlZml4LCBtc2cpOwotfQotRVhQT1JUX1NZTUJPTChpbmV0X2ZyYWdfbWF5 YmVfd2Fybl9vdmVyZmxvdyk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIv bmV0L2lwdjQvaXBfZnJhZ21lbnQuYwppbmRleCBlMDQ2NWFkMjE4NjguLmM2NzExYjA0YWQ3OSAx MDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYworKysgYi9uZXQvaXB2NC9pcF9mcmFn bWVudC5jCkBAIC0yMjEsMTAgKzIyMSw5IEBAIHN0YXRpYyBzdHJ1Y3QgaXBxICppcF9maW5kKHN0 cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlwaGRyICppcGgsCiAJc3RydWN0IGluZXRfZnJhZ19xdWV1 ZSAqcTsKIAogCXEgPSBpbmV0X2ZyYWdfZmluZCgmbmV0LT5pcHY0LmZyYWdzLCAma2V5KTsKLQlp ZiAoSVNfRVJSX09SX05VTEwocSkpIHsKLQkJaW5ldF9mcmFnX21heWJlX3dhcm5fb3ZlcmZsb3co cSwgcHJfZm10KCkpOworCWlmICghcSkKIAkJcmV0dXJuIE5VTEw7Ci0JfQorCiAJcmV0dXJuIGNv bnRhaW5lcl9vZihxLCBzdHJ1Y3QgaXBxLCBxKTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYv bmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nv bm50cmFja19yZWFzbS5jCmluZGV4IDk4NWE5YjY0MTFhZi4uNDFjNjYzOTVkZjgyIDEwMDY0NAot LS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKKysrIGIvbmV0L2lw djYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCkBAIC0xODQsMTAgKzE4NCw5IEBAIHN0 YXRpYyBzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBp ZCwgdTMyIHVzZXIsCiAJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAogCXEgPSBpbmV0X2Zy YWdfZmluZCgmbmV0LT5uZl9mcmFnLmZyYWdzLCAma2V5KTsKLQlpZiAoSVNfRVJSX09SX05VTEwo cSkpIHsKLQkJaW5ldF9mcmFnX21heWJlX3dhcm5fb3ZlcmZsb3cocSwgcHJfZm10KCkpOworCWlm ICghcSkKIAkJcmV0dXJuIE5VTEw7Ci0JfQorCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihxLCBzdHJ1 Y3QgZnJhZ19xdWV1ZSwgcSk7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JlYXNzZW1ibHku YyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwppbmRleCAwMDc2ZDdhMDMzMjMuLjFhYjMyZmYwODIz ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmVhc3NlbWJseS5jCisrKyBiL25ldC9pcHY2L3JlYXNz ZW1ibHkuYwpAQCAtMTU0LDEwICsxNTQsOSBAQCBmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19i ZTMyIGlkLCBjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaGRyLCBpbnQgaWlmKQogCQlrZXkuaWlmID0g MDsKIAogCXEgPSBpbmV0X2ZyYWdfZmluZCgmbmV0LT5pcHY2LmZyYWdzLCAma2V5KTsKLQlpZiAo SVNfRVJSX09SX05VTEwocSkpIHsKLQkJaW5ldF9mcmFnX21heWJlX3dhcm5fb3ZlcmZsb3cocSwg cHJfZm10KCkpOworCWlmICghcSkKIAkJcmV0dXJuIE5VTEw7Ci0JfQorCiAJcmV0dXJuIGNvbnRh aW5lcl9vZihxLCBzdHJ1Y3QgZnJhZ19xdWV1ZSwgcSk7CiB9CiAKCkZyb20gNTA1ODZiNDY5NDA1 OTQ1M2JmMmZlNGNkZjBmM2RiMzU1ZWQyOTExOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAy MDE4IDEyOjMwOjAwIC0wNzAwClN1YmplY3Q6IFsxNS8zM10gaW5ldDogZnJhZ3M6IGJyZWFrIHRo ZSAyR0IgbGltaXQgZm9yIGZyYWdzIHN0b3JhZ2UKCmNvbW1pdCAzZTY3ZjEwNmY2MTlkY2ZhZjZm NGUyMDM5NTk5YmRiNjk4NDhjNzE0IHVwc3RyZWFtLgoKU29tZSB1c2VycyBhcmUgd2lsbGluZyB0 byBwcm92aXNpb24gaHVnZSBhbW91bnRzIG9mIG1lbW9yeSB0byBiZSBhYmxlCnRvIHBlcmZvcm0g cmVhc3NlbWJseSByZWFzb25uYWJseSB3ZWxsIHVuZGVyIHByZXNzdXJlLgoKQ3VycmVudCBtZW1v cnkgdHJhY2tpbmcgaXMgdXNpbmcgb25lIGF0b21pY190IGFuZCBpbnRlZ2Vycy4KClN3aXRjaCB0 byBhdG9taWNfbG9uZ190IHNvIHRoYXQgNjRiaXQgYXJjaGVzIGNhbiB1c2UgbW9yZSB0aGFuIDJH QiwKd2l0aG91dCBhbnkgY29zdCBmb3IgMzJiaXQgYXJjaGVzLgoKTm90ZSB0aGF0IHRoaXMgcGF0 Y2ggYXZvaWRzIGFuIG92ZXJmbG93IGVycm9yLCBpZiBoaWdoX3RocmVzaCB3YXMgc2V0CnRvIH4y R0IsIHNpbmNlIHRoaXMgdGVzdCBpbiBpbmV0X2ZyYWdfYWxsb2MoKSB3YXMgbmV2ZXIgdHJ1ZSA6 CgppZiAoLi4uIHx8IGZyYWdfbWVtX2xpbWl0KG5mKSA+IG5mLT5oaWdoX3RocmVzaCkKClRlc3Rl ZDoKCiQgZWNobyAxNjAwMDAwMDAwMCA+L3Byb2Mvc3lzL25ldC9pcHY0L2lwZnJhZ19oaWdoX3Ro cmVzaAoKPGZyYWcgRERPUz4KCiQgZ3JlcCBGUkFHIC9wcm9jL25ldC9zb2Nrc3RhdApGUkFHOiBp bnVzZSAxNDcwNTg4NSBtZW1vcnkgMTYwMDAwMDI4ODAKCiQgbnN0YXQgLW4gOyBzbGVlcCAxIDsg bnN0YXQgfCBncmVwIFJlYXMKSXBSZWFzbVJlcWRzICAgICAgICAgICAgICAgICAgICAzMzE3MTUw ICAgICAgICAgICAgMC4wCklwUmVhc21GYWlscyAgICAgICAgICAgICAgICAgICAgMzMxNzExMiAg ICAgICAgICAgIDAuMAoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29n bGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29k ZXRoaW5rLmNvLnVrPgotLS0KIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0 ICB8ICA0ICsrLS0KIGluY2x1ZGUvbmV0L2luZXRfZnJhZy5oICAgICAgICAgICAgICAgICB8IDIw ICsrKysrKysrKystLS0tLS0tLS0tCiBuZXQvaWVlZTgwMjE1NC82bG93cGFuL3JlYXNzZW1ibHku YyAgICAgfCAxMCArKysrKy0tLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jICAgICAgICAgICAg ICAgICAgfCAxMCArKysrKy0tLS0tCiBuZXQvaXB2NC9wcm9jLmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jIHwg MTAgKysrKystLS0tLQogbmV0L2lwdjYvcHJvYy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIG5ldC9pcHY2L3JlYXNzZW1ibHkuYyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0t LQogOCBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnR4dCBiL0RvY3Vt ZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0CmluZGV4IDJhYTU2Y2NhYTk5Ni4uN2My MjlmNTkwMTZmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3Rs LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnR4dApAQCAtMTEy LDEwICsxMTIsMTAgQEAgbWluX2Fkdl9tc3MgLSBJTlRFR0VSCiAKIElQIEZyYWdtZW50YXRpb246 CiAKLWlwZnJhZ19oaWdoX3RocmVzaCAtIElOVEVHRVIKK2lwZnJhZ19oaWdoX3RocmVzaCAtIExP TkcgSU5URUdFUgogCU1heGltdW0gbWVtb3J5IHVzZWQgdG8gcmVhc3NlbWJsZSBJUCBmcmFnbWVu dHMuCiAKLWlwZnJhZ19sb3dfdGhyZXNoIC0gSU5URUdFUgoraXBmcmFnX2xvd190aHJlc2ggLSBM T05HIElOVEVHRVIKIAkoT2Jzb2xldGUgc2luY2UgbGludXgtNC4xNykKIAlNYXhpbXVtIG1lbW9y eSB1c2VkIHRvIHJlYXNzZW1ibGUgSVAgZnJhZ21lbnRzIGJlZm9yZSB0aGUga2VybmVsCiAJYmVn aW5zIHRvIHJlbW92ZSBpbmNvbXBsZXRlIGZyYWdtZW50IHF1ZXVlcyB0byBmcmVlIHVwIHJlc291 cmNlcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oIGIvaW5jbHVkZS9uZXQv aW5ldF9mcmFnLmgKaW5kZXggYTk0NTNkOWU1NjJiLi4xOTdjMTcyY2M4MTEgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCkBA IC03LDExICs3LDExIEBAIHN0cnVjdCBuZXRuc19mcmFncyB7CiAJc3RydWN0IHJoYXNodGFibGUg ICAgICAgcmhhc2h0YWJsZSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wOwogCiAJLyogS2Vl cCBhdG9taWMgbWVtIG9uIHNlcGFyYXRlIGNhY2hlbGluZXMgaW4gc3RydWN0cyB0aGF0IGluY2x1 ZGUgaXQgKi8KLQlhdG9taWNfdAkJbWVtIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CisJ YXRvbWljX2xvbmdfdAkJbWVtIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiAJLyogc3lz Y3RscyAqLworCWxvbmcJCQloaWdoX3RocmVzaDsKKwlsb25nCQkJbG93X3RocmVzaDsKIAlpbnQJ CQl0aW1lb3V0OwotCWludAkJCWhpZ2hfdGhyZXNoOwotCWludAkJCWxvd190aHJlc2g7CiAJc3Ry dWN0IGluZXRfZnJhZ3MJKmY7CiB9OwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBpbmV0X2Zy YWdzX2Zpbmkoc3RydWN0IGluZXRfZnJhZ3MgKik7CiAKIHN0YXRpYyBpbmxpbmUgaW50IGluZXRf ZnJhZ3NfaW5pdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZikKIHsKLQlhdG9taWNfc2V0KCZu Zi0+bWVtLCAwKTsKKwlhdG9taWNfbG9uZ19zZXQoJm5mLT5tZW0sIDApOwogCXJldHVybiByaGFz aHRhYmxlX2luaXQoJm5mLT5yaGFzaHRhYmxlLCAmbmYtPmYtPnJoYXNoX3BhcmFtcyk7CiB9CiB2 b2lkIGluZXRfZnJhZ3NfZXhpdF9uZXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZik7CkBAIC0xMTgs MTkgKzExOCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9mcmFnX3B1dChzdHJ1Y3QgaW5l dF9mcmFnX3F1ZXVlICpxKQogCiAvKiBNZW1vcnkgVHJhY2tpbmcgRnVuY3Rpb25zLiAqLwogCi1z dGF0aWMgaW5saW5lIGludCBmcmFnX21lbV9saW1pdChzdHJ1Y3QgbmV0bnNfZnJhZ3MgKm5mKQor c3RhdGljIGlubGluZSBsb25nIGZyYWdfbWVtX2xpbWl0KGNvbnN0IHN0cnVjdCBuZXRuc19mcmFn cyAqbmYpCiB7Ci0JcmV0dXJuIGF0b21pY19yZWFkKCZuZi0+bWVtKTsKKwlyZXR1cm4gYXRvbWlj X2xvbmdfcmVhZCgmbmYtPm1lbSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdWJfZnJhZ19t ZW1fbGltaXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgaW50IGkpCitzdGF0aWMgaW5saW5lIHZv aWQgc3ViX2ZyYWdfbWVtX2xpbWl0KHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIGxvbmcgdmFsKQog ewotCWF0b21pY19zdWIoaSwgJm5mLT5tZW0pOworCWF0b21pY19sb25nX3N1Yih2YWwsICZuZi0+ bWVtKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFkZF9mcmFnX21lbV9saW1pdChzdHJ1Y3Qg bmV0bnNfZnJhZ3MgKm5mLCBpbnQgaSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRfZnJhZ19tZW1f bGltaXQoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwgbG9uZyB2YWwpCiB7Ci0JYXRvbWljX2FkZChp LCAmbmYtPm1lbSk7CisJYXRvbWljX2xvbmdfYWRkKHZhbCwgJm5mLT5tZW0pOwogfQogCiAvKiBS RkMgMzE2OCBzdXBwb3J0IDoKZGlmZiAtLWdpdCBhL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVh c3NlbWJseS5jIGIvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKaW5kZXggYzVh ZDg5ZjVmMDI4Li45NGVmOTIwNTMwYTUgMTAwNjQ0Ci0tLSBhL25ldC9pZWVlODAyMTU0LzZsb3dw YW4vcmVhc3NlbWJseS5jCisrKyBiL25ldC9pZWVlODAyMTU0LzZsb3dwYW4vcmVhc3NlbWJseS5j CkBAIC00MTAsMjMgKzQxMCwyMyBAQCBlcnI6CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTQ1RMCi1z dGF0aWMgaW50IHplcm87CitzdGF0aWMgbG9uZyB6ZXJvOwogCiBzdGF0aWMgc3RydWN0IGN0bF90 YWJsZSBsb3dwYW5fZnJhZ3NfbnNfY3RsX3RhYmxlW10gPSB7CiAJewogCQkucHJvY25hbWUJPSAi Nmxvd3BhbmZyYWdfaGlnaF90aHJlc2giLAogCQkuZGF0YQkJPSAmaW5pdF9uZXQuaWVlZTgwMjE1 NF9sb3dwYW4uZnJhZ3MuaGlnaF90aHJlc2gsCi0JCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJ CS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0LAotCQku cHJvY19oYW5kbGVyCT0gcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5wcm9jX2hhbmRsZXIJPSBw cm9jX2RvdWxvbmd2ZWNfbWlubWF4LAogCQkuZXh0cmExCQk9ICZpbml0X25ldC5pZWVlODAyMTU0 X2xvd3Bhbi5mcmFncy5sb3dfdGhyZXNoCiAJfSwKIAl7CiAJCS5wcm9jbmFtZQk9ICI2bG93cGFu ZnJhZ19sb3dfdGhyZXNoIiwKIAkJLmRhdGEJCT0gJmluaXRfbmV0LmllZWU4MDIxNTRfbG93cGFu LmZyYWdzLmxvd190aHJlc2gsCi0JCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tYXhsZW4J CT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0LAotCQkucHJvY19oYW5k bGVyCT0gcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2RvdWxv bmd2ZWNfbWlubWF4LAogCQkuZXh0cmExCQk9ICZ6ZXJvLAogCQkuZXh0cmEyCQk9ICZpbml0X25l dC5pZWVlODAyMTU0X2xvd3Bhbi5mcmFncy5oaWdoX3RocmVzaAogCX0sCmRpZmYgLS1naXQgYS9u ZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwppbmRleCBjNjcx MWIwNGFkNzkuLmEwNjhhM2JjZDJkNCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQu YworKysgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCkBAIC02ODIsMjMgKzY4MiwyMyBAQCBzdHJ1 Y3Qgc2tfYnVmZiAqaXBfY2hlY2tfZGVmcmFnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgdTMyIHVzZXIpCiBFWFBPUlRfU1lNQk9MKGlwX2NoZWNrX2RlZnJhZyk7CiAKICNp ZmRlZiBDT05GSUdfU1lTQ1RMCi1zdGF0aWMgaW50IHplcm87CitzdGF0aWMgbG9uZyB6ZXJvOwog CiBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcDRfZnJhZ3NfbnNfY3RsX3RhYmxlW10gPSB7CiAJ ewogCQkucHJvY25hbWUJPSAiaXBmcmFnX2hpZ2hfdGhyZXNoIiwKIAkJLmRhdGEJCT0gJmluaXRf bmV0LmlwdjQuZnJhZ3MuaGlnaF90aHJlc2gsCi0JCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJ CS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0LAotCQku cHJvY19oYW5kbGVyCT0gcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5wcm9jX2hhbmRsZXIJPSBw cm9jX2RvdWxvbmd2ZWNfbWlubWF4LAogCQkuZXh0cmExCQk9ICZpbml0X25ldC5pcHY0LmZyYWdz Lmxvd190aHJlc2gKIAl9LAogCXsKIAkJLnByb2NuYW1lCT0gImlwZnJhZ19sb3dfdGhyZXNoIiwK IAkJLmRhdGEJCT0gJmluaXRfbmV0LmlwdjQuZnJhZ3MubG93X3RocmVzaCwKLQkJLm1heGxlbgkJ PSBzaXplb2YoaW50KSwKKwkJLm1heGxlbgkJPSBzaXplb2YodW5zaWduZWQgbG9uZyksCiAJCS5t b2RlCQk9IDA2NDQsCi0JCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJ LnByb2NfaGFuZGxlcgk9IHByb2NfZG91bG9uZ3ZlY19taW5tYXgsCiAJCS5leHRyYTEJCT0gJnpl cm8sCiAJCS5leHRyYTIJCT0gJmluaXRfbmV0LmlwdjQuZnJhZ3MuaGlnaF90aHJlc2gKIAl9LApk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvcHJvYy5jIGIvbmV0L2lwdjQvcHJvYy5jCmluZGV4IGQ3Mjlh ZDJlNGFkMS4uZDk0MTVmYWU5NDY3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9wcm9jLmMKKysrIGIv bmV0L2lwdjQvcHJvYy5jCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBpbnQgc29ja3N0YXRfc2Vx X3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpCiAJCSAgIHNvY2tfcHJvdF9pbnVz ZV9nZXQobmV0LCAmdWRwbGl0ZV9wcm90KSk7CiAJc2VxX3ByaW50ZihzZXEsICJSQVc6IGludXNl ICVkXG4iLAogCQkgICBzb2NrX3Byb3RfaW51c2VfZ2V0KG5ldCwgJnJhd19wcm90KSk7Ci0Jc2Vx X3ByaW50ZihzZXEsICAiRlJBRzogaW51c2UgJXUgbWVtb3J5ICV1XG4iLAorCXNlcV9wcmludGYo c2VxLCAgIkZSQUc6IGludXNlICV1IG1lbW9yeSAlbHVcbiIsCiAJCSAgIGF0b21pY19yZWFkKCZu ZXQtPmlwdjQuZnJhZ3Mucmhhc2h0YWJsZS5uZWxlbXMpLAogCQkgICBmcmFnX21lbV9saW1pdCgm bmV0LT5pcHY0LmZyYWdzKSk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRm aWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRy YWNrX3JlYXNtLmMKaW5kZXggNDFjNjYzOTVkZjgyLi42MThkYzc2MDAzYTIgMTAwNjQ0Ci0tLSBh L25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYworKysgYi9uZXQvaXB2Ni9u ZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IG5m X2N0X2ZyYWc2X3NrYl9jYgogc3RhdGljIHN0cnVjdCBpbmV0X2ZyYWdzIG5mX2ZyYWdzOwogCiAj aWZkZWYgQ09ORklHX1NZU0NUTAotc3RhdGljIGludCB6ZXJvOworc3RhdGljIGxvbmcgemVybzsK IAogc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmZfY3RfZnJhZzZfc3lzY3RsX3RhYmxlW10gPSB7 CiAJewpAQCAtNzcsMTggKzc3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIG5mX2N0X2Zy YWc2X3N5c2N0bF90YWJsZVtdID0gewogCXsKIAkJLnByb2NuYW1lCT0gIm5mX2Nvbm50cmFja19m cmFnNl9sb3dfdGhyZXNoIiwKIAkJLmRhdGEJCT0gJmluaXRfbmV0Lm5mX2ZyYWcuZnJhZ3MubG93 X3RocmVzaCwKLQkJLm1heGxlbgkJPSBzaXplb2YodW5zaWduZWQgaW50KSwKKwkJLm1heGxlbgkJ PSBzaXplb2YodW5zaWduZWQgbG9uZyksCiAJCS5tb2RlCQk9IDA2NDQsCi0JCS5wcm9jX2hhbmRs ZXIJPSBwcm9jX2RvaW50dmVjX21pbm1heCwKKwkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG91bG9u Z3ZlY19taW5tYXgsCiAJCS5leHRyYTEJCT0gJnplcm8sCiAJCS5leHRyYTIJCT0gJmluaXRfbmV0 Lm5mX2ZyYWcuZnJhZ3MuaGlnaF90aHJlc2gKIAl9LAogCXsKIAkJLnByb2NuYW1lCT0gIm5mX2Nv bm50cmFja19mcmFnNl9oaWdoX3RocmVzaCIsCiAJCS5kYXRhCQk9ICZpbml0X25ldC5uZl9mcmFn LmZyYWdzLmhpZ2hfdGhyZXNoLAotCQkubWF4bGVuCQk9IHNpemVvZih1bnNpZ25lZCBpbnQpLAor CQkubWF4bGVuCQk9IHNpemVvZih1bnNpZ25lZCBsb25nKSwKIAkJLm1vZGUJCT0gMDY0NCwKLQkJ LnByb2NfaGFuZGxlcgk9IHByb2NfZG9pbnR2ZWNfbWlubWF4LAorCQkucHJvY19oYW5kbGVyCT0g cHJvY19kb3Vsb25ndmVjX21pbm1heCwKIAkJLmV4dHJhMQkJPSAmaW5pdF9uZXQubmZfZnJhZy5m cmFncy5sb3dfdGhyZXNoCiAJfSwKIAl7IH0KZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Byb2MuYyBi L25ldC9pcHY2L3Byb2MuYwppbmRleCAxNzdlMmZlMjA5MTUuLjczZTc2NmU3YmMzNyAxMDA2NDQK LS0tIGEvbmV0L2lwdjYvcHJvYy5jCisrKyBiL25ldC9pcHY2L3Byb2MuYwpAQCAtNDIsNyArNDIs NyBAQCBzdGF0aWMgaW50IHNvY2tzdGF0Nl9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwg dm9pZCAqdikKIAkJCXNvY2tfcHJvdF9pbnVzZV9nZXQobmV0LCAmdWRwbGl0ZXY2X3Byb3QpKTsK IAlzZXFfcHJpbnRmKHNlcSwgIlJBVzY6IGludXNlICVkXG4iLAogCQkgICAgICAgc29ja19wcm90 X2ludXNlX2dldChuZXQsICZyYXd2Nl9wcm90KSk7Ci0Jc2VxX3ByaW50ZihzZXEsICJGUkFHNjog aW51c2UgJXUgbWVtb3J5ICV1XG4iLAorCXNlcV9wcmludGYoc2VxLCAiRlJBRzY6IGludXNlICV1 IG1lbW9yeSAlbHVcbiIsCiAJCSAgIGF0b21pY19yZWFkKCZuZXQtPmlwdjYuZnJhZ3Mucmhhc2h0 YWJsZS5uZWxlbXMpLAogCQkgICBmcmFnX21lbV9saW1pdCgmbmV0LT5pcHY2LmZyYWdzKSk7CiAJ cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMgYi9uZXQvaXB2Ni9y ZWFzc2VtYmx5LmMKaW5kZXggMWFiMzJmZjA4MjNlLi4zOWUwNTgyMWI5NTYgMTAwNjQ0Ci0tLSBh L25ldC9pcHY2L3JlYXNzZW1ibHkuYworKysgYi9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKQEAgLTU0 NSwxNSArNTQ1LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwNl9mcmFnc19uc19jdGxf dGFibGVbXSA9IHsKIAl7CiAJCS5wcm9jbmFtZQk9ICJpcDZmcmFnX2hpZ2hfdGhyZXNoIiwKIAkJ LmRhdGEJCT0gJmluaXRfbmV0LmlwdjYuZnJhZ3MuaGlnaF90aHJlc2gsCi0JCS5tYXhsZW4JCT0g c2l6ZW9mKGludCksCisJCS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogCQkubW9k ZQkJPSAwNjQ0LAotCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb2ludHZlY19taW5tYXgsCisJCS5w cm9jX2hhbmRsZXIJPSBwcm9jX2RvdWxvbmd2ZWNfbWlubWF4LAogCQkuZXh0cmExCQk9ICZpbml0 X25ldC5pcHY2LmZyYWdzLmxvd190aHJlc2gKIAl9LAogCXsKIAkJLnByb2NuYW1lCT0gImlwNmZy YWdfbG93X3RocmVzaCIsCiAJCS5kYXRhCQk9ICZpbml0X25ldC5pcHY2LmZyYWdzLmxvd190aHJl c2gsCi0JCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCisJCS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2ln bmVkIGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0LAogCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb2lu dHZlY19taW5tYXgsCiAJCS5leHRyYTEJCT0gJnplcm8sCgpGcm9tIDdkODg1MjZlMjA5ZTY1MDEx YTNjMjkzYzY2ZTlmMjI3N2FiZWUxNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAx MjozMDowMSAtMDcwMApTdWJqZWN0OiBbMTYvMzNdIGluZXQ6IGZyYWdzOiBkbyBub3QgY2xvbmUg c2tiIGluIGlwX2V4cGlyZSgpCgpjb21taXQgMWVlYzVkNTY3MDA4NGVlNjQ0NTk3YmQyNmMyNWUy MmM2OWI5Zjc0OCB1cHN0cmVhbS4KCkFuIHNrYl9jbG9uZSgpIHdhcyBhZGRlZCBpbiBjb21taXQg ZWM0ZmJkNjQ3NTFkICgiaW5ldDogZnJhZzogcmVsZWFzZQpzcGlubG9jayBiZWZvcmUgY2FsbGlu ZyBpY21wX3NlbmQoKSIpCgpXaGlsZSBmaXhpbmcgdGhlIGJ1ZyBhdCB0aGF0IHRpbWUsIGl0IGFs c28gYWRkZWQgYSB2ZXJ5IGhpZ2ggY29zdApmb3IgRERPUyBmcmFncywgYXMgdGhlIElDTVAgcmF0 ZSBsaW1pdCBpcyBhcHBsaWVkIGFmdGVyIHRoaXMKZXhwZW5zaXZlIG9wZXJhdGlvbiAoc2tiX2Ns b25lKCkgKyBjb25zdW1lX3NrYigpLCBpbXBseWluZyBtZW1vcnkKYWxsb2NhdGlvbnMsIGNvcHks IGFuZCBmcmVlaW5nKQoKV2UgY2FuIHVzZSBza2JfZ2V0KGhlYWQpIGhlcmUsIGFsbCB3ZSB3YW50 IGlzIHRvIG1ha2Ugc3VyZSBza2Igd29udApiZSBmcmVlZCBieSBhbm90aGVyIGNwdS4KClNpZ25l ZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBu ZXQvaXB2NC9pcF9mcmFnbWVudC5jIHwgMTYgKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvaXBfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKaW5kZXggYTA2OGEzYmNk MmQ0Li4yNDY2NWYwMDQ1NTYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKKysr IGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAtMTQzLDggKzE0Myw4IEBAIHN0YXRpYyBib29s IGZyYWdfZXhwaXJlX3NraXBfaWNtcCh1MzIgdXNlcikKICAqLwogc3RhdGljIHZvaWQgaXBfZXhw aXJlKHVuc2lnbmVkIGxvbmcgYXJnKQogewotCXN0cnVjdCBza19idWZmICpjbG9uZSwgKmhlYWQ7 CiAJY29uc3Qgc3RydWN0IGlwaGRyICppcGg7CisJc3RydWN0IHNrX2J1ZmYgKmhlYWQ7CiAJc3Ry dWN0IG5ldCAqbmV0OwogCXN0cnVjdCBpcHEgKnFwOwogCWludCBlcnI7CkBAIC0xODcsMTYgKzE4 NywxMiBAQCBzdGF0aWMgdm9pZCBpcF9leHBpcmUodW5zaWduZWQgbG9uZyBhcmcpCiAJICAgIChz a2JfcnRhYmxlKGhlYWQpLT5ydF90eXBlICE9IFJUTl9MT0NBTCkpCiAJCWdvdG8gb3V0OwogCi0J Y2xvbmUgPSBza2JfY2xvbmUoaGVhZCwgR0ZQX0FUT01JQyk7CisJc2tiX2dldChoZWFkKTsKKwlz cGluX3VubG9jaygmcXAtPnEubG9jayk7CisJaWNtcF9zZW5kKGhlYWQsIElDTVBfVElNRV9FWENF RURFRCwgSUNNUF9FWENfRlJBR1RJTUUsIDApOworCWtmcmVlX3NrYihoZWFkKTsKKwlnb3RvIG91 dF9yY3VfdW5sb2NrOwogCi0JLyogU2VuZCBhbiBJQ01QICJGcmFnbWVudCBSZWFzc2VtYmx5IFRp bWVvdXQiIG1lc3NhZ2UuICovCi0JaWYgKGNsb25lKSB7Ci0JCXNwaW5fdW5sb2NrKCZxcC0+cS5s b2NrKTsKLQkJaWNtcF9zZW5kKGNsb25lLCBJQ01QX1RJTUVfRVhDRUVERUQsCi0JCQkgIElDTVBf RVhDX0ZSQUdUSU1FLCAwKTsKLQkJY29uc3VtZV9za2IoY2xvbmUpOwotCQlnb3RvIG91dF9yY3Vf dW5sb2NrOwotCX0KIG91dDoKIAlzcGluX3VubG9jaygmcXAtPnEubG9jayk7CiBvdXRfcmN1X3Vu bG9jazoKCkZyb20gYjI4OGUxYWM5MTA1ZTE4N2NjNjczZTllY2JmMDlhNTFiZjIyZGZlYSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUu Y29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjMwOjAyIC0wNzAwClN1YmplY3Q6IFsxNy8z M10gaXB2NjogZnJhZ3M6IHJld3JpdGUgaXA2X2V4cGlyZV9mcmFnX3F1ZXVlKCkKCmNvbW1pdCAw NWMwYjg2Yjk2OTY4MDJmZDBjZTU2NzZhOTJhNjNmMWI0NTViZGYzIHVwc3RyZWFtLgoKTWFrZSBp dCBzaW1pbGFyIHRvIElQdjQgaXBfZXhwaXJlKCksIGFuZCByZWxlYXNlIHRoZSBsb2NrCmJlZm9y ZSBjYWxsaW5nIGljbXAgZnVuY3Rpb25zLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxl ZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to QGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OiBhZGp1c3QgY29u dGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhp bmsuY28udWs+Ci0tLQogbmV0L2lwdjYvcmVhc3NlbWJseS5jIHwgMjQgKysrKysrKysrKysrKysr Ky0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMgYi9uZXQvaXB2Ni9yZWFzc2Vt Ymx5LmMKaW5kZXggMzllMDU4MjFiOTU2Li44M2FhMDI3ZDI0YjYgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L3JlYXNzZW1ibHkuYworKysgYi9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKQEAgLTkyLDcgKzky LDkgQEAgRVhQT1JUX1NZTUJPTChpcDZfZnJhZ19pbml0KTsKIHZvaWQgaXA2X2V4cGlyZV9mcmFn X3F1ZXVlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZyYWdfcXVldWUgKmZxKQogewogCXN0cnVj dCBuZXRfZGV2aWNlICpkZXYgPSBOVUxMOworCXN0cnVjdCBza19idWZmICpoZWFkOwogCisJcmN1 X3JlYWRfbG9jaygpOwogCXNwaW5fbG9jaygmZnEtPnEubG9jayk7CiAKIAlpZiAoZnEtPnEuZmxh Z3MgJiBJTkVUX0ZSQUdfQ09NUExFVEUpCkBAIC0xMDAsMjggKzEwMiwzNCBAQCB2b2lkIGlwNl9l eHBpcmVfZnJhZ19xdWV1ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmcmFnX3F1ZXVlICpmcSkK IAogCWluZXRfZnJhZ19raWxsKCZmcS0+cSk7CiAKLQlyY3VfcmVhZF9sb2NrKCk7CiAJZGV2ID0g ZGV2X2dldF9ieV9pbmRleF9yY3UobmV0LCBmcS0+aWlmKTsKIAlpZiAoIWRldikKLQkJZ290byBv dXRfcmN1X3VubG9jazsKKwkJZ290byBvdXQ7CiAKIAlJUDZfSU5DX1NUQVRTX0JIKG5ldCwgX19p bjZfZGV2X2dldChkZXYpLCBJUFNUQVRTX01JQl9SRUFTTUZBSUxTKTsKIAlJUDZfSU5DX1NUQVRT X0JIKG5ldCwgX19pbjZfZGV2X2dldChkZXYpLCBJUFNUQVRTX01JQl9SRUFTTVRJTUVPVVQpOwog CiAJLyogRG9uJ3Qgc2VuZCBlcnJvciBpZiB0aGUgZmlyc3Qgc2VnbWVudCBkaWQgbm90IGFycml2 ZS4gKi8KLQlpZiAoIShmcS0+cS5mbGFncyAmIElORVRfRlJBR19GSVJTVF9JTikgfHwgIWZxLT5x LmZyYWdtZW50cykKLQkJZ290byBvdXRfcmN1X3VubG9jazsKKwloZWFkID0gZnEtPnEuZnJhZ21l bnRzOworCWlmICghKGZxLT5xLmZsYWdzICYgSU5FVF9GUkFHX0ZJUlNUX0lOKSB8fCAhaGVhZCkK KwkJZ290byBvdXQ7CiAKIAkvKiBCdXQgdXNlIGFzIHNvdXJjZSBkZXZpY2Ugb24gd2hpY2ggTEFT VCBBUlJJVkVECiAJICogc2VnbWVudCB3YXMgcmVjZWl2ZWQuIEFuZCBkbyBub3QgdXNlIGZxLT5k ZXYKIAkgKiBwb2ludGVyIGRpcmVjdGx5LCBkZXZpY2UgbWlnaHQgYWxyZWFkeSBkaXNhcHBlYXJl ZC4KIAkgKi8KLQlmcS0+cS5mcmFnbWVudHMtPmRldiA9IGRldjsKLQlpY21wdjZfc2VuZChmcS0+ cS5mcmFnbWVudHMsIElDTVBWNl9USU1FX0VYQ0VFRCwgSUNNUFY2X0VYQ19GUkFHVElNRSwgMCk7 Ci1vdXRfcmN1X3VubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsKKwloZWFkLT5kZXYgPSBkZXY7 CisJc2tiX2dldChoZWFkKTsKKwlzcGluX3VubG9jaygmZnEtPnEubG9jayk7CisKKwlpY21wdjZf c2VuZChoZWFkLCBJQ01QVjZfVElNRV9FWENFRUQsIElDTVBWNl9FWENfRlJBR1RJTUUsIDApOwor CWtmcmVlX3NrYihoZWFkKTsKKwlnb3RvIG91dF9yY3VfdW5sb2NrOworCiBvdXQ6CiAJc3Bpbl91 bmxvY2soJmZxLT5xLmxvY2spOworb3V0X3JjdV91bmxvY2s6CisJcmN1X3JlYWRfdW5sb2NrKCk7 CiAJaW5ldF9mcmFnX3B1dCgmZnEtPnEpOwogfQogRVhQT1JUX1NZTUJPTChpcDZfZXhwaXJlX2Zy YWdfcXVldWUpOwoKRnJvbSBkMTgzYTU4ZGYwMzRlNjdjMDdkMjk4YjVmODMxYzQ2OGIxOThmMGZk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdv b2dsZS5jb20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6MzA6MDMgLTA3MDAKU3ViamVjdDog WzE4LzMzXSByaGFzaHRhYmxlOiByZW9yZ2FuaXplIHN0cnVjdCByaGFzaHRhYmxlIGxheW91dAoK Y29tbWl0IGU1ZDY3MmEwNzgwZDllNzExOGNhYWQ0YzE3MWVjODhiODI5OTM5OGQgdXBzdHJlYW0u CgpXaGlsZSB1bmRlciBmcmFncyBERE9TIEkgbm90aWNlZCB1bmZvcnR1bmF0ZSBmYWxzZSBzaGFy aW5nIGJldHdlZW4KQG5lbGVtcyBhbmQgQHBhcmFtcy5hdXRvbWF0aWNfc2hyaW5raW5nCgpNb3Zl IEBuZWxlbXMgYXQgdGhlIGVuZCBvZiBzdHJ1Y3Qgcmhhc2h0YWJsZSBzbyB0aGF0IGZpcnN0IGNh Y2hlIGxpbmUKaXMgc2hhcmVkIGJldHdlZW4gYWxsIGNwdXMsIGJlY2F1c2UgYWxtb3N0IG5ldmVy IGRpcnRpZWQuCgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K U2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9u Lm9yZz4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhp bmsuY28udWs+Ci0tLQogaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLmggfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLmggYi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUuaApp bmRleCA3NTM4MzVkMDViZTguLmU5N2NkZmQ2Y2JhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9yaGFzaHRhYmxlLmgKKysrIGIvaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLmgKQEAgLTEzMywy MyArMTMzLDIzIEBAIHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyB7CiAvKioKICAqIHN0cnVjdCBy aGFzaHRhYmxlIC0gSGFzaCB0YWJsZSBoYW5kbGUKICAqIEB0Ymw6IEJ1Y2tldCB0YWJsZQotICog QG5lbGVtczogTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRhYmxlCiAgKiBAa2V5X2xlbjogS2V5IGxl bmd0aCBmb3IgaGFzaGZuCiAgKiBAZWxhc3RpY2l0eTogTWF4aW11bSBjaGFpbiBsZW5ndGggYmVm b3JlIHJlaGFzaAogICogQHA6IENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwogICogQHJ1bl93b3Jr OiBEZWZlcnJlZCB3b3JrZXIgdG8gZXhwYW5kL3NocmluayBhc3luY2hyb25vdXNseQogICogQG11 dGV4OiBNdXRleCB0byBwcm90ZWN0IGN1cnJlbnQvZnV0dXJlIHRhYmxlIHN3YXBwaW5nCiAgKiBA bG9jazogU3BpbiBsb2NrIHRvIHByb3RlY3Qgd2Fsa2VyIGxpc3QKKyAqIEBuZWxlbXM6IE51bWJl ciBvZiBlbGVtZW50cyBpbiB0YWJsZQogICovCiBzdHJ1Y3Qgcmhhc2h0YWJsZSB7CiAJc3RydWN0 IGJ1Y2tldF90YWJsZSBfX3JjdQkqdGJsOwotCWF0b21pY190CQkJbmVsZW1zOwogCXVuc2lnbmVk IGludAkJCWtleV9sZW47CiAJdW5zaWduZWQgaW50CQkJZWxhc3RpY2l0eTsKIAlzdHJ1Y3Qgcmhh c2h0YWJsZV9wYXJhbXMJcDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCXJ1bl93b3JrOwogCXN0cnVj dCBtdXRleCAgICAgICAgICAgICAgICAgICAgbXV0ZXg7CiAJc3BpbmxvY2tfdAkJCWxvY2s7CisJ YXRvbWljX3QJCQluZWxlbXM7CiB9OwogCiAvKioKCkZyb20gZGQyYjc1NTIwMTZiNGQwM2FlYTYx NWVlYjk3YjBmZWExNDdmOGViMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBE dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjMw OjA0IC0wNzAwClN1YmplY3Q6IFsxOS8zM10gaW5ldDogZnJhZ3M6IHJlb3JnYW5pemUgc3RydWN0 IG5ldG5zX2ZyYWdzCgpjb21taXQgYzI2MTVjZjVhNzYxYjMyYmY3NGU4NWJkZGMyMjNkZmZmM2Q5 YjlmMCB1cHN0cmVhbS4KClB1dCB0aGUgcmVhZC1tb3N0bHkgZmllbGRzIGluIGEgc2VwYXJhdGUg Y2FjaGUgbGluZQphdCB0aGUgYmVnaW5uaW5nIG9mIHN0cnVjdCBuZXRuc19mcmFncywgdG8gcmVk dWNlCmZhbHNlIHNoYXJpbmcgbm90aWNlZCBpbiBpbmV0X2ZyYWdfa2lsbCgpCgpTaWduZWQtb2Zm LWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBL cm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KW2J3aDogQmFja3BvcnRl ZCB0byA0LjQ6IGFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxi ZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBpbmNsdWRlL25ldC9pbmV0X2ZyYWcu aCB8IDkgKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oIGIvaW5jbHVkZS9u ZXQvaW5ldF9mcmFnLmgKaW5kZXggMTk3YzE3MmNjODExLi40MWE4MzBiYTExZmMgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5o CkBAIC00LDE1ICs0LDE2IEBACiAjaW5jbHVkZSA8bGludXgvcmhhc2h0YWJsZS5oPgogCiBzdHJ1 Y3QgbmV0bnNfZnJhZ3MgewotCXN0cnVjdCByaGFzaHRhYmxlICAgICAgIHJoYXNodGFibGUgX19f X2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKLQotCS8qIEtlZXAgYXRvbWljIG1lbSBvbiBzZXBh cmF0ZSBjYWNoZWxpbmVzIGluIHN0cnVjdHMgdGhhdCBpbmNsdWRlIGl0ICovCi0JYXRvbWljX2xv bmdfdAkJbWVtIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiAJLyogc3lzY3RscyAqLwog CWxvbmcJCQloaWdoX3RocmVzaDsKIAlsb25nCQkJbG93X3RocmVzaDsKIAlpbnQJCQl0aW1lb3V0 OwogCXN0cnVjdCBpbmV0X2ZyYWdzCSpmOworCisJc3RydWN0IHJoYXNodGFibGUgICAgICAgcmhh c2h0YWJsZSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wOworCisJLyogS2VlcCBhdG9taWMg bWVtIG9uIHNlcGFyYXRlIGNhY2hlbGluZXMgaW4gc3RydWN0cyB0aGF0IGluY2x1ZGUgaXQgKi8K KwlhdG9taWNfbG9uZ190CQltZW0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDsKIH07CiAK IC8qKgoKRnJvbSBmMDY2MjBmNTllYzliZjYyOGNlZDhkYzkzMmYxZDhjNDNmMzMxYjc0IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6MzA6MDUgLTA3MDAKU3ViamVjdDogWzIwLzMz XSBpbmV0OiBmcmFnczogZ2V0IHJpZCBvZiBpcGZyYWdfc2tiX2NiL0ZSQUdfQ0IKCmNvbW1pdCBi ZjY2MzM3MTQwYzY0YzI3ZmEzNzIyMmI3YWJjYTdlNDlkNjNmYjU3IHVwc3RyZWFtLgoKaXBfZGVm cmFnIHVzZXMgc2tiLT5jYltdIHRvIHN0b3JlIHRoZSBmcmFnbWVudCBvZmZzZXQsIGFuZCB1bmZv cnR1bmF0ZWx5CnRoaXMgaW50ZWdlciBpcyBjdXJyZW50bHkgaW4gYSBkaWZmZXJlbnQgY2FjaGUg bGluZSB0aGFuIHNrYi0+bmV4dCwKbWVhbmluZyB0aGF0IHdlIHVzZSB0d28gY2FjaGUgbGluZXMg cGVyIHNrYiB3aGVuIGZpbmRpbmcgdGhlIGluc2VydGlvbiBwb2ludC4KCkJ5IGFsaWFzaW5nIHNr Yi0+aXBfZGVmcmFnX29mZnNldCBhbmQgc2tiLT5kZXYsIHdlIHBhY2sgYWxsIHRoZSBmaWVsZHMK aW4gYSBzaW5nbGUgY2FjaGUgbGluZSBhbmQgc2F2ZSBwcmVjaW91cyBtZW1vcnkgYmFuZHdpZHRo LgoKTm90ZSB0aGF0IGFmdGVyIHRoZSBmYXN0IHBhdGggYWRkZWQgYnkgQ2hhbmdsaSBHYW8gaW4g Y29tbWl0CmQ2YmViY2E5MmM2NiAoImZyYWdtZW50OiBhZGQgZmFzdCBwYXRoIGZvciBpbi1vcmRl ciBmcmFnbWVudHMiKQp0aGlzIGNoYW5nZSB3b250IGhlbHAgdGhlIGZhc3QgcGF0aCwgc2luY2Ug d2Ugc3RpbGwgbmVlZAp0byBhY2Nlc3MgcHJldi0+bGVuICgybmQgY2FjaGUgbGluZSksIGJ1dCB3 aWxsIHNob3cgZ3JlYXQKYmVuZWZpdHMgd2hlbiBzbG93IHBhdGggaXMgZW50ZXJlZCwgc2luY2Ug d2UgcGVyZm9ybQphIGxpbmVhciBzY2FuIG9mIGEgcG90ZW50aWFsbHkgbG9uZyBsaXN0LgoKQWxz bywgbm90ZSB0aGF0IHRoaXMgcG90ZW50aWFsIGxvbmcgbGlzdCBpcyBhbiBhdHRhY2sgdmVjdG9y LAp3ZSBtaWdodCBjb25zaWRlciBhbHNvIHVzaW5nIGFuIHJiLXRyZWUgdGhlcmUgZXZlbnR1YWxs eS4KClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQt b2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpT aWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51 az4KLS0tCiBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oIHwgNSArKysrKwogMSBmaWxlIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9p bmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IGE0OTBkZDcxODY1NC4uM2QyMzM1NjQ1NWRhIDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCisrKyBiL2luY2x1ZGUvbGludXgvc2ti dWZmLmgKQEAgLTU1OCw2ICs1NTgsMTEgQEAgc3RydWN0IHNrX2J1ZmYgewogCQl9OwogCQlzdHJ1 Y3QgcmJfbm9kZQlyYm5vZGU7IC8qIHVzZWQgaW4gbmV0ZW0gJiB0Y3Agc3RhY2sgKi8KIAl9Owor CisJdW5pb24geworCQlpbnQJCQlpcF9kZWZyYWdfb2Zmc2V0OworCX07CisKIAlzdHJ1Y3Qgc29j awkJKnNrOwogCXN0cnVjdCBuZXRfZGV2aWNlCSpkZXY7CiAKCkZyb20gYTJkNGE0ZGE2NmZiNWQz MjZmN2RkYjk4ZWZiZTE3MzRhMTVhMWNkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog RXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4 IDEyOjMwOjA2IC0wNzAwClN1YmplY3Q6IFsyMS8zM10gaW5ldDogZnJhZ3M6IGZpeCBpcDZmcmFn X2xvd190aHJlc2ggYm91bmRhcnkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0 L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCmNv bW1pdCAzZDIzNDAxMjgzZTgwY2ViMDNmNzY1ODQyNzg3ZTBlNzlmZjU5OGI3IHVwc3RyZWFtLgoK R2l2aW5nIGFuIGludGVnZXIgdG8gcHJvY19kb3Vsb25ndmVjX21pbm1heCgpIGlzIGRhbmdlcm91 cyBvbiA2NGJpdCBhcmNoZXMsCnNpbmNlIGxpbmtlciBtaWdodCBwbGFjZSBuZXh0IHRvIGl0IGEg bm9uIHplcm8gdmFsdWUgcHJldmVudGluZyBhIGNoYW5nZQp0byBpcDZmcmFnX2xvd190aHJlc2gu CgppcDZmcmFnX2xvd190aHJlc2ggaXMgbm90IHVzZWQgYW55bW9yZSBpbiB0aGUga2VybmVsLCBi dXQgd2UgZG8gbm90CndhbnQgdG8gcHJlbWF0dXJhbHkgYnJlYWsgdXNlciBzY3JpcHRzIHdhbnRp bmcgdG8gY2hhbmdlIGl0LgoKU2luY2Ugc3BlY2lmeWluZyBhIG1pbmltYWwgdmFsdWUgb2YgMCBm b3IgcHJvY19kb3Vsb25ndmVjX21pbm1heCgpCmlzIG1vb3QsIGxldCdzIHJlbW92ZSB0aGVzZSB6 ZXJvIHZhbHVlcyBpbiBhbGwgZGVmcmFnIHVuaXRzLgoKRml4ZXM6IDZlMDBmN2RkNWU0ZSAoImlw djY6IGZyYWdzOiBmaXggL3Byb2Mvc3lzL25ldC9pcHY2L2lwNmZyYWdfbG93X3RocmVzaCIpClNp Z25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQt Ynk6IE1hY2llaiDFu2VuY3p5a293c2tpIDxtYXplQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3Jl ZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogbmV0 L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMgICAgIHwgIDIgLS0KIG5ldC9pcHY0L2lw X2ZyYWdtZW50LmMgICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLQogbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jIHwgIDIg LS0KIG5ldC9pcHY2L3JlYXNzZW1ibHkuYyAgICAgICAgICAgICAgICAgICB8ICA0ICstLS0KIDQg ZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMgYi9uZXQvaWVlZTgwMjE1 NC82bG93cGFuL3JlYXNzZW1ibHkuYwppbmRleCA5NGVmOTIwNTMwYTUuLjYxODM3MzBkMzhkYiAx MDA2NDQKLS0tIGEvbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKKysrIGIvbmV0 L2llZWU4MDIxNTQvNmxvd3Bhbi9yZWFzc2VtYmx5LmMKQEAgLTQxMCw3ICs0MTAsNiBAQCBlcnI6 CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTQ1RMCi1zdGF0aWMgbG9uZyB6ZXJvOwogCiBzdGF0aWMg c3RydWN0IGN0bF90YWJsZSBsb3dwYW5fZnJhZ3NfbnNfY3RsX3RhYmxlW10gPSB7CiAJewpAQCAt NDI3LDcgKzQyNiw2IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGxvd3Bhbl9mcmFnc19uc19j dGxfdGFibGVbXSA9IHsKIAkJLm1heGxlbgkJPSBzaXplb2YodW5zaWduZWQgbG9uZyksCiAJCS5t b2RlCQk9IDA2NDQsCiAJCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2RvdWxvbmd2ZWNfbWlubWF4LAot CQkuZXh0cmExCQk9ICZ6ZXJvLAogCQkuZXh0cmEyCQk9ICZpbml0X25ldC5pZWVlODAyMTU0X2xv d3Bhbi5mcmFncy5oaWdoX3RocmVzaAogCX0sCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBf ZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKaW5kZXggMjQ2NjVmMDA0NTU2Li4x NWQ1MzQ5MTgwY2MgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKKysrIGIvbmV0 L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAtNTgsMTQgKzU4LDYgQEAKIHN0YXRpYyBpbnQgc3lzY3Rs X2lwZnJhZ19tYXhfZGlzdCBfX3JlYWRfbW9zdGx5ID0gNjQ7CiBzdGF0aWMgY29uc3QgY2hhciBp cF9mcmFnX2NhY2hlX25hbWVbXSA9ICJpcDQtZnJhZ3MiOwogCi1zdHJ1Y3QgaXBmcmFnX3NrYl9j YgotewotCXN0cnVjdCBpbmV0X3NrYl9wYXJtCWg7Ci0JaW50CQkJb2Zmc2V0OwotfTsKLQotI2Rl ZmluZSBGUkFHX0NCKHNrYikJKChzdHJ1Y3QgaXBmcmFnX3NrYl9jYiAqKSgoc2tiKS0+Y2IpKQot CiAvKiBEZXNjcmliZSBhbiBlbnRyeSBpbiB0aGUgImluY29tcGxldGUgZGF0YWdyYW1zIiBxdWV1 ZS4gKi8KIHN0cnVjdCBpcHEgewogCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgcTsKQEAgLTM1Mywx MyArMzQ1LDEzIEBAIHN0YXRpYyBpbnQgaXBfZnJhZ19xdWV1ZShzdHJ1Y3QgaXBxICpxcCwgc3Ry dWN0IHNrX2J1ZmYgKnNrYikKIAkgKiB0aGlzIGZyYWdtZW50LCByaWdodD8KIAkgKi8KIAlwcmV2 ID0gcXAtPnEuZnJhZ21lbnRzX3RhaWw7Ci0JaWYgKCFwcmV2IHx8IEZSQUdfQ0IocHJldiktPm9m ZnNldCA8IG9mZnNldCkgeworCWlmICghcHJldiB8fCBwcmV2LT5pcF9kZWZyYWdfb2Zmc2V0IDwg b2Zmc2V0KSB7CiAJCW5leHQgPSBOVUxMOwogCQlnb3RvIGZvdW5kOwogCX0KIAlwcmV2ID0gTlVM TDsKIAlmb3IgKG5leHQgPSBxcC0+cS5mcmFnbWVudHM7IG5leHQgIT0gTlVMTDsgbmV4dCA9IG5l eHQtPm5leHQpIHsKLQkJaWYgKEZSQUdfQ0IobmV4dCktPm9mZnNldCA+PSBvZmZzZXQpCisJCWlm IChuZXh0LT5pcF9kZWZyYWdfb2Zmc2V0ID49IG9mZnNldCkKIAkJCWJyZWFrOwkvKiBiaW5nbyEg Ki8KIAkJcHJldiA9IG5leHQ7CiAJfQpAQCAtMzcwLDcgKzM2Miw3IEBAIGZvdW5kOgogCSAqIGFu eSBvdmVybGFwcyBhcmUgZWxpbWluYXRlZC4KIAkgKi8KIAlpZiAocHJldikgewotCQlpbnQgaSA9 IChGUkFHX0NCKHByZXYpLT5vZmZzZXQgKyBwcmV2LT5sZW4pIC0gb2Zmc2V0OworCQlpbnQgaSA9 IChwcmV2LT5pcF9kZWZyYWdfb2Zmc2V0ICsgcHJldi0+bGVuKSAtIG9mZnNldDsKIAogCQlpZiAo aSA+IDApIHsKIAkJCW9mZnNldCArPSBpOwpAQCAtMzg3LDggKzM3OSw4IEBAIGZvdW5kOgogCiAJ ZXJyID0gLUVOT01FTTsKIAotCXdoaWxlIChuZXh0ICYmIEZSQUdfQ0IobmV4dCktPm9mZnNldCA8 IGVuZCkgewotCQlpbnQgaSA9IGVuZCAtIEZSQUdfQ0IobmV4dCktPm9mZnNldDsgLyogb3Zlcmxh cCBpcyAnaScgYnl0ZXMgKi8KKwl3aGlsZSAobmV4dCAmJiBuZXh0LT5pcF9kZWZyYWdfb2Zmc2V0 IDwgZW5kKSB7CisJCWludCBpID0gZW5kIC0gbmV4dC0+aXBfZGVmcmFnX29mZnNldDsgLyogb3Zl cmxhcCBpcyAnaScgYnl0ZXMgKi8KIAogCQlpZiAoaSA8IG5leHQtPmxlbikgewogCQkJLyogRWF0 IGhlYWQgb2YgdGhlIG5leHQgb3ZlcmxhcHBlZCBmcmFnbWVudApAQCAtMzk2LDcgKzM4OCw3IEBA IGZvdW5kOgogCQkJICovCiAJCQlpZiAoIXBza2JfcHVsbChuZXh0LCBpKSkKIAkJCQlnb3RvIGVy cjsKLQkJCUZSQUdfQ0IobmV4dCktPm9mZnNldCArPSBpOworCQkJbmV4dC0+aXBfZGVmcmFnX29m ZnNldCArPSBpOwogCQkJcXAtPnEubWVhdCAtPSBpOwogCQkJaWYgKG5leHQtPmlwX3N1bW1lZCAh PSBDSEVDS1NVTV9VTk5FQ0VTU0FSWSkKIAkJCQluZXh0LT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9O T05FOwpAQCAtNDIwLDcgKzQxMiwxMyBAQCBmb3VuZDoKIAkJfQogCX0KIAotCUZSQUdfQ0Ioc2ti KS0+b2Zmc2V0ID0gb2Zmc2V0OworCS8qIE5vdGUgOiBza2ItPmlwX2RlZnJhZ19vZmZzZXQgYW5k IHNrYi0+ZGV2IHNoYXJlIHRoZSBzYW1lIGxvY2F0aW9uICovCisJZGV2ID0gc2tiLT5kZXY7CisJ aWYgKGRldikKKwkJcXAtPmlpZiA9IGRldi0+aWZpbmRleDsKKwkvKiBNYWtlcyBzdXJlIGNvbXBp bGVyIHdvbnQgZG8gc2lsbHkgYWxpYXNpbmcgZ2FtZXMgKi8KKwliYXJyaWVyKCk7CisJc2tiLT5p cF9kZWZyYWdfb2Zmc2V0ID0gb2Zmc2V0OwogCiAJLyogSW5zZXJ0IHRoaXMgZnJhZ21lbnQgaW4g dGhlIGNoYWluIG9mIGZyYWdtZW50cy4gKi8KIAlza2ItPm5leHQgPSBuZXh0OwpAQCAtNDMxLDEx ICs0MjksNiBAQCBmb3VuZDoKIAllbHNlCiAJCXFwLT5xLmZyYWdtZW50cyA9IHNrYjsKIAotCWRl diA9IHNrYi0+ZGV2OwotCWlmIChkZXYpIHsKLQkJcXAtPmlpZiA9IGRldi0+aWZpbmRleDsKLQkJ c2tiLT5kZXYgPSBOVUxMOwotCX0KIAlxcC0+cS5zdGFtcCA9IHNrYi0+dHN0YW1wOwogCXFwLT5x Lm1lYXQgKz0gc2tiLT5sZW47CiAJcXAtPmVjbiB8PSBlY247CkBAIC01MTEsNyArNTA0LDcgQEAg c3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAq cHJldiwKIAl9CiAKIAlXQVJOX09OKCFoZWFkKTsKLQlXQVJOX09OKEZSQUdfQ0IoaGVhZCktPm9m ZnNldCAhPSAwKTsKKwlXQVJOX09OKGhlYWQtPmlwX2RlZnJhZ19vZmZzZXQgIT0gMCk7CiAKIAkv KiBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgZm9yIHRoZSBkYXRhZ3JhbS4gKi8KIAlpaGxlbiA9IGlw X2hkcmxlbihoZWFkKTsKQEAgLTY3OCw3ICs2NzEsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqaXBfY2hl Y2tfZGVmcmFnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVzZXIp CiBFWFBPUlRfU1lNQk9MKGlwX2NoZWNrX2RlZnJhZyk7CiAKICNpZmRlZiBDT05GSUdfU1lTQ1RM Ci1zdGF0aWMgbG9uZyB6ZXJvOworc3RhdGljIGludCBkaXN0X21pbjsKIAogc3RhdGljIHN0cnVj dCBjdGxfdGFibGUgaXA0X2ZyYWdzX25zX2N0bF90YWJsZVtdID0gewogCXsKQEAgLTY5NSw3ICs2 ODgsNiBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcDRfZnJhZ3NfbnNfY3RsX3RhYmxlW10g PSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0 LAogCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb3Vsb25ndmVjX21pbm1heCwKLQkJLmV4dHJhMQkJ PSAmemVybywKIAkJLmV4dHJhMgkJPSAmaW5pdF9uZXQuaXB2NC5mcmFncy5oaWdoX3RocmVzaAog CX0sCiAJewpAQCAtNzI0LDcgKzcxNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwNF9m cmFnc19jdGxfdGFibGVbXSA9IHsKIAkJLm1heGxlbgkJPSBzaXplb2YoaW50KSwKIAkJLm1vZGUJ CT0gMDY0NCwKIAkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG9pbnR2ZWNfbWlubWF4LAotCQkuZXh0 cmExCQk9ICZ6ZXJvCisJCS5leHRyYTEJCT0gJmRpc3RfbWluLAogCX0sCiAJeyB9CiB9OwpkaWZm IC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jIGIvbmV0L2lw djYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCmluZGV4IDYxOGRjNzYwMDNhMi4uYTM5 YjVhZjQzZWZlIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Jl YXNtLmMKKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCkBAIC02 NCw3ICs2NCw2IEBAIHN0cnVjdCBuZl9jdF9mcmFnNl9za2JfY2IKIHN0YXRpYyBzdHJ1Y3QgaW5l dF9mcmFncyBuZl9mcmFnczsKIAogI2lmZGVmIENPTkZJR19TWVNDVEwKLXN0YXRpYyBsb25nIHpl cm87CiAKIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIG5mX2N0X2ZyYWc2X3N5c2N0bF90YWJsZVtd ID0gewogCXsKQEAgLTgwLDcgKzc5LDYgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmZfY3Rf ZnJhZzZfc3lzY3RsX3RhYmxlW10gPSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVkIGxv bmcpLAogCQkubW9kZQkJPSAwNjQ0LAogCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb3Vsb25ndmVj X21pbm1heCwKLQkJLmV4dHJhMQkJPSAmemVybywKIAkJLmV4dHJhMgkJPSAmaW5pdF9uZXQubmZf ZnJhZy5mcmFncy5oaWdoX3RocmVzaAogCX0sCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVh c3NlbWJseS5jIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IDgzYWEwMjdkMjRiNi4uMzJk NDY1OWQyZDgzIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKKysrIGIvbmV0L2lw djYvcmVhc3NlbWJseS5jCkBAIC01NDcsNyArNTQ3LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bmV0Nl9wcm90b2NvbCBmcmFnX3Byb3RvY29sID0gewogfTsKIAogI2lmZGVmIENPTkZJR19TWVND VEwKLXN0YXRpYyBpbnQgemVybzsKIAogc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXA2X2ZyYWdz X25zX2N0bF90YWJsZVtdID0gewogCXsKQEAgLTU2Myw4ICs1NjIsNyBAQCBzdGF0aWMgc3RydWN0 IGN0bF90YWJsZSBpcDZfZnJhZ3NfbnNfY3RsX3RhYmxlW10gPSB7CiAJCS5kYXRhCQk9ICZpbml0 X25ldC5pcHY2LmZyYWdzLmxvd190aHJlc2gsCiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHVuc2lnbmVk IGxvbmcpLAogCQkubW9kZQkJPSAwNjQ0LAotCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb2ludHZl Y19taW5tYXgsCi0JCS5leHRyYTEJCT0gJnplcm8sCisJCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2Rv dWxvbmd2ZWNfbWlubWF4LAogCQkuZXh0cmEyCQk9ICZpbml0X25ldC5pcHY2LmZyYWdzLmhpZ2hf dGhyZXNoCiAJfSwKIAl7CgpGcm9tIDQ0ZjI5OTU5OGI0Mzc5YjYzODkxOTM3ZjM4MTg3MmM4MmE3 MTFjMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBldGVyIE9za29sa292IDxwb3Nr QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6MzA6MDcgLTA3MDAKU3ViamVj dDogWzIyLzMzXSBpcDogZGlzY2FyZCBJUHY0IGRhdGFncmFtcyB3aXRoIG92ZXJsYXBwaW5nIHNl Z21lbnRzLgoKY29tbWl0IDc5NjllNWM0MGRmZDA0Nzk5ZDQzNDFmMWI3Y2QyNjZiNmU0N2YyMjcg dXBzdHJlYW0uCgpUaGlzIGJlaGF2aW9yIGlzIHJlcXVpcmVkIGluIElQdjYsIGFuZCB0aGVyZSBp cyBsaXR0bGUgbmVlZAp0byB0b2xlcmF0ZSBvdmVybGFwcGluZyBmcmFnbWVudHMgaW4gSVB2NC4g VGhpcyBjaGFuZ2UKc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgZWxpbWluYXRlcyBwb3RlbnRpYWwg RERvUyBhdHRhY2sgdmVjdG9ycy4KClRlc3RlZDogcmFuIGlwX2RlZnJhZyBzZWxmdGVzdCAobm90 IHlldCBhdmFpbGFibGUgdXB0cmVhbSkuCgpTdWdnZXN0ZWQtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgT3Nrb2xrb3YgPHBvc2tA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUu Y29tPgpDYzogRmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgpBY2tlZC1ieTogU3RlcGhl biBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2twb3J0 ZWQgdG8gNC40OgogLSBzL19fSVBfSU5DX1NUQVRTL0lQX0lOQ19TVEFUU19CSC8KIC0gRGVsZXRl ZCBjb2RlIGlzIHNsaWdodGx5IGRpZmZlcmVudF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5n cyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogaW5jbHVkZS91YXBpL2xpbnV4 L3NubXAuaCB8ICAxICsKIG5ldC9pcHY0L2lwX2ZyYWdtZW50LmMgICAgfCA3MCArKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbmV0L2lwdjQvcHJvYy5jICAg ICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNTEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3NubXAuaCBiL2luY2x1 ZGUvdWFwaS9saW51eC9zbm1wLmgKaW5kZXggMjVhOWFkOGJjZWYxLi45ZGU4MDhlYmNlMDUgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zbm1wLmgKKysrIGIvaW5jbHVkZS91YXBpL2xp bnV4L3NubXAuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtCiAJSVBTVEFUU19NSUJfRUNUMVBLVFMs CQkJLyogSW5FQ1QxUGt0cyAqLwogCUlQU1RBVFNfTUlCX0VDVDBQS1RTLAkJCS8qIEluRUNUMFBr dHMgKi8KIAlJUFNUQVRTX01JQl9DRVBLVFMsCQkJLyogSW5DRVBrdHMgKi8KKwlJUFNUQVRTX01J Ql9SRUFTTV9PVkVSTEFQUywJCS8qIFJlYXNtT3ZlcmxhcHMgKi8KIAlfX0lQU1RBVFNfTUlCX01B WAogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lw X2ZyYWdtZW50LmMKaW5kZXggMTVkNTM0OTE4MGNjLi42ZTlkMGM3YzUxNTkgMTAwNjQ0Ci0tLSBh L25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKKysrIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAt Mjc3LDYgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgaXBfZnJhZ19yZWluaXQoc3RydWN0IGlwcSAqcXAp CiAvKiBBZGQgbmV3IHNlZ21lbnQgdG8gZXhpc3RpbmcgcXVldWUuICovCiBzdGF0aWMgaW50IGlw X2ZyYWdfcXVldWUoc3RydWN0IGlwcSAqcXAsIHN0cnVjdCBza19idWZmICpza2IpCiB7CisJc3Ry dWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKHFwLT5xLm5ldCwgc3RydWN0IG5ldCwgaXB2NC5m cmFncyk7CiAJc3RydWN0IHNrX2J1ZmYgKnByZXYsICpuZXh0OwogCXN0cnVjdCBuZXRfZGV2aWNl ICpkZXY7CiAJdW5zaWduZWQgaW50IGZyYWdzaXplOwpAQCAtMzU3LDYwICszNTgsMjMgQEAgc3Rh dGljIGludCBpcF9mcmFnX3F1ZXVlKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti KQogCX0KIAogZm91bmQ6Ci0JLyogV2UgZm91bmQgd2hlcmUgdG8gcHV0IHRoaXMgb25lLiAgQ2hl Y2sgZm9yIG92ZXJsYXAgd2l0aAotCSAqIHByZWNlZGluZyBmcmFnbWVudCwgYW5kLCBpZiBuZWVk ZWQsIGFsaWduIHRoaW5ncyBzbyB0aGF0Ci0JICogYW55IG92ZXJsYXBzIGFyZSBlbGltaW5hdGVk LgorCS8qIFJGQzU3MjIsIFNlY3Rpb24gNCwgYW1lbmRlZCBieSBFcnJhdGEgSUQgOiAzMDg5CisJ ICogICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gcmVhc3NlbWJsaW5nIGFuIElQdjYgZGF0 YWdyYW0sIGlmCisJICogICBvbmUgb3IgbW9yZSBpdHMgY29uc3RpdHVlbnQgZnJhZ21lbnRzIGlz IGRldGVybWluZWQgdG8gYmUgYW4KKwkgKiAgIG92ZXJsYXBwaW5nIGZyYWdtZW50LCB0aGUgZW50 aXJlIGRhdGFncmFtIChhbmQgYW55IGNvbnN0aXR1ZW50CisJICogICBmcmFnbWVudHMpIE1VU1Qg YmUgc2lsZW50bHkgZGlzY2FyZGVkLgorCSAqCisJICogV2UgZG8gdGhlIHNhbWUgaGVyZSBmb3Ig SVB2NC4KIAkgKi8KLQlpZiAocHJldikgewotCQlpbnQgaSA9IChwcmV2LT5pcF9kZWZyYWdfb2Zm c2V0ICsgcHJldi0+bGVuKSAtIG9mZnNldDsKLQotCQlpZiAoaSA+IDApIHsKLQkJCW9mZnNldCAr PSBpOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWlmIChlbmQgPD0gb2Zmc2V0KQotCQkJCWdvdG8g ZXJyOwotCQkJZXJyID0gLUVOT01FTTsKLQkJCWlmICghcHNrYl9wdWxsKHNrYiwgaSkpCi0JCQkJ Z290byBlcnI7Ci0JCQlpZiAoc2tiLT5pcF9zdW1tZWQgIT0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlkp Ci0JCQkJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwotCQl9Ci0JfQotCi0JZXJyID0g LUVOT01FTTsKIAotCXdoaWxlIChuZXh0ICYmIG5leHQtPmlwX2RlZnJhZ19vZmZzZXQgPCBlbmQp IHsKLQkJaW50IGkgPSBlbmQgLSBuZXh0LT5pcF9kZWZyYWdfb2Zmc2V0OyAvKiBvdmVybGFwIGlz ICdpJyBieXRlcyAqLworCS8qIElzIHRoZXJlIGFuIG92ZXJsYXAgd2l0aCB0aGUgcHJldmlvdXMg ZnJhZ21lbnQ/ICovCisJaWYgKHByZXYgJiYKKwkgICAgKHByZXYtPmlwX2RlZnJhZ19vZmZzZXQg KyBwcmV2LT5sZW4pID4gb2Zmc2V0KQorCQlnb3RvIGRpc2NhcmRfcXA7CiAKLQkJaWYgKGkgPCBu ZXh0LT5sZW4pIHsKLQkJCS8qIEVhdCBoZWFkIG9mIHRoZSBuZXh0IG92ZXJsYXBwZWQgZnJhZ21l bnQKLQkJCSAqIGFuZCBsZWF2ZSB0aGUgbG9vcC4gVGhlIG5leHQgb25lcyBjYW5ub3Qgb3Zlcmxh cC4KLQkJCSAqLwotCQkJaWYgKCFwc2tiX3B1bGwobmV4dCwgaSkpCi0JCQkJZ290byBlcnI7Ci0J CQluZXh0LT5pcF9kZWZyYWdfb2Zmc2V0ICs9IGk7Ci0JCQlxcC0+cS5tZWF0IC09IGk7Ci0JCQlp ZiAobmV4dC0+aXBfc3VtbWVkICE9IENIRUNLU1VNX1VOTkVDRVNTQVJZKQotCQkJCW5leHQtPmlw X3N1bW1lZCA9IENIRUNLU1VNX05PTkU7Ci0JCQlicmVhazsKLQkJfSBlbHNlIHsKLQkJCXN0cnVj dCBza19idWZmICpmcmVlX2l0ID0gbmV4dDsKLQotCQkJLyogT2xkIGZyYWdtZW50IGlzIGNvbXBs ZXRlbHkgb3ZlcnJpZGRlbiB3aXRoCi0JCQkgKiBuZXcgb25lIGRyb3AgaXQuCi0JCQkgKi8KLQkJ CW5leHQgPSBuZXh0LT5uZXh0OwotCi0JCQlpZiAocHJldikKLQkJCQlwcmV2LT5uZXh0ID0gbmV4 dDsKLQkJCWVsc2UKLQkJCQlxcC0+cS5mcmFnbWVudHMgPSBuZXh0OwotCi0JCQlxcC0+cS5tZWF0 IC09IGZyZWVfaXQtPmxlbjsKLQkJCXN1Yl9mcmFnX21lbV9saW1pdChxcC0+cS5uZXQsIGZyZWVf aXQtPnRydWVzaXplKTsKLQkJCWtmcmVlX3NrYihmcmVlX2l0KTsKLQkJfQotCX0KKwkvKiBJcyB0 aGVyZSBhbiBvdmVybGFwIHdpdGggdGhlIG5leHQgZnJhZ21lbnQ/ICovCisJaWYgKG5leHQgJiYg bmV4dC0+aXBfZGVmcmFnX29mZnNldCA8IGVuZCkKKwkJZ290byBkaXNjYXJkX3FwOwogCiAJLyog Tm90ZSA6IHNrYi0+aXBfZGVmcmFnX29mZnNldCBhbmQgc2tiLT5kZXYgc2hhcmUgdGhlIHNhbWUg bG9jYXRpb24gKi8KIAlkZXYgPSBza2ItPmRldjsKQEAgLTQ1OCw2ICs0MjIsMTAgQEAgZm91bmQ6 CiAJc2tiX2RzdF9kcm9wKHNrYik7CiAJcmV0dXJuIC1FSU5QUk9HUkVTUzsKIAorZGlzY2FyZF9x cDoKKwlpbmV0X2ZyYWdfa2lsbCgmcXAtPnEpOworCWVyciA9IC1FSU5WQUw7CisJSVBfSU5DX1NU QVRTX0JIKG5ldCwgSVBTVEFUU19NSUJfUkVBU01fT1ZFUkxBUFMpOwogZXJyOgogCWtmcmVlX3Nr Yihza2IpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9wcm9jLmMgYi9uZXQv aXB2NC9wcm9jLmMKaW5kZXggZDk0MTVmYWU5NDY3Li5iMDAxYWQ2NjgxMDggMTAwNjQ0Ci0tLSBh L25ldC9pcHY0L3Byb2MuYworKysgYi9uZXQvaXB2NC9wcm9jLmMKQEAgLTEzMiw2ICsxMzIsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHNubXBfbWliIHNubXA0X2lwZXh0c3RhdHNfbGlzdFtdID0g ewogCVNOTVBfTUlCX0lURU0oIkluRUNUMVBrdHMiLCBJUFNUQVRTX01JQl9FQ1QxUEtUUyksCiAJ U05NUF9NSUJfSVRFTSgiSW5FQ1QwUGt0cyIsIElQU1RBVFNfTUlCX0VDVDBQS1RTKSwKIAlTTk1Q X01JQl9JVEVNKCJJbkNFUGt0cyIsIElQU1RBVFNfTUlCX0NFUEtUUyksCisJU05NUF9NSUJfSVRF TSgiUmVhc21PdmVybGFwcyIsIElQU1RBVFNfTUlCX1JFQVNNX09WRVJMQVBTKSwKIAlTTk1QX01J Ql9TRU5USU5FTAogfTsKIAoKRnJvbSBmOGI1M2FkYWE0YjRhNjg2NDU2OWEzZjI1MzY2N2ExYWU2 NjcyZmI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBPc2tvbGtvdiA8cG9z a0Bnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDEyOjMwOjA5IC0wNzAwClN1Ympl Y3Q6IFsyMy8zM10gbmV0OiBtb2RpZnkgc2tiX3JidHJlZV9wdXJnZSB0byByZXR1cm4gdGhlIHRy dWVzaXplIG9mIGFsbAogcHVyZ2VkIHNrYnMuCgpjb21taXQgMzg1MTE0ZGVjOGE0OWI1ZTU5NDVl NzdiYTdkZTYzNTYxMDY3MTNmNCB1cHN0cmVhbS4KClRlc3RlZDogc2VlIHRoZSBuZXh0IHBhdGNo IGlzIHRoZSBzZXJpZXMuCgpTdWdnZXN0ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29v Z2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgT3Nrb2xrb3YgPHBvc2tAZ29vZ2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogRmxv cmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGlu Z3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGluY2x1ZGUvbGludXgvc2ti dWZmLmggfCAyICstCiBuZXQvY29yZS9za2J1ZmYuYyAgICAgIHwgNiArKysrKy0KIDIgZmlsZXMg Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IDNkMjMz NTY0NTVkYS4uMGIzYzM3MzczZmU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o CisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKQEAgLTIyNzgsNyArMjI3OCw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBfX3NrYl9xdWV1ZV9wdXJnZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0 KQogCQlrZnJlZV9za2Ioc2tiKTsKIH0KIAotdm9pZCBza2JfcmJ0cmVlX3B1cmdlKHN0cnVjdCBy Yl9yb290ICpyb290KTsKK3Vuc2lnbmVkIGludCBza2JfcmJ0cmVlX3B1cmdlKHN0cnVjdCByYl9y b290ICpyb290KTsKIAogdm9pZCAqbmV0ZGV2X2FsbG9jX2ZyYWcodW5zaWduZWQgaW50IGZyYWdz eik7CiAKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMK aW5kZXggOGE1N2JiYWY3NDUyLi40OWY3M2ZiMDg0MGIgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3Nr YnVmZi5jCisrKyBiL25ldC9jb3JlL3NrYnVmZi5jCkBAIC0yMzgwLDIzICsyMzgwLDI3IEBAIEVY UE9SVF9TWU1CT0woc2tiX3F1ZXVlX3B1cmdlKTsKIC8qKgogICoJc2tiX3JidHJlZV9wdXJnZSAt IGVtcHR5IGEgc2tiIHJidHJlZQogICoJQHJvb3Q6IHJvb3Qgb2YgdGhlIHJidHJlZSB0byBlbXB0 eQorICoJUmV0dXJuIHZhbHVlOiB0aGUgc3VtIG9mIHRydWVzaXplcyBvZiBhbGwgcHVyZ2VkIHNr YnMuCiAgKgogICoJRGVsZXRlIGFsbCBidWZmZXJzIG9uIGFuICZza19idWZmIHJidHJlZS4gRWFj aCBidWZmZXIgaXMgcmVtb3ZlZCBmcm9tCiAgKgl0aGUgbGlzdCBhbmQgb25lIHJlZmVyZW5jZSBk cm9wcGVkLiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UKICAqCWFueSBsb2NrLiBTeW5jaHJv bml6YXRpb24gc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlciAoZS5nLiwgVENQCiAgKglv dXQtb2Ytb3JkZXIgcXVldWUgaXMgcHJvdGVjdGVkIGJ5IHRoZSBzb2NrZXQgbG9jaykuCiAgKi8K LXZvaWQgc2tiX3JidHJlZV9wdXJnZShzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3Vuc2lnbmVkIGlu dCBza2JfcmJ0cmVlX3B1cmdlKHN0cnVjdCByYl9yb290ICpyb290KQogewogCXN0cnVjdCByYl9u b2RlICpwID0gcmJfZmlyc3Qocm9vdCk7CisJdW5zaWduZWQgaW50IHN1bSA9IDA7CiAKIAl3aGls ZSAocCkgewogCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcmJfZW50cnkocCwgc3RydWN0IHNrX2J1 ZmYsIHJibm9kZSk7CiAKIAkJcCA9IHJiX25leHQocCk7CiAJCXJiX2VyYXNlKCZza2ItPnJibm9k ZSwgcm9vdCk7CisJCXN1bSArPSBza2ItPnRydWVzaXplOwogCQlrZnJlZV9za2Ioc2tiKTsKIAl9 CisJcmV0dXJuIHN1bTsKIH0KIAogLyoqCgpGcm9tIGRlMGI0ZWVjNGI1YzY1ODU5Nzc2NmQ2ODkx YTMyYjFhNjA0MTM3YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZsb3JpYW4gV2Vz dHBoYWwgPGZ3QHN0cmxlbi5kZT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjozMDoxMCAtMDcw MApTdWJqZWN0OiBbMjQvMzNdIGlwdjY6IGRlZnJhZzogZHJvcCBub24tbGFzdCBmcmFncyBzbWFs bGVyIHRoYW4gbWluIG10dQoKY29tbWl0IDBlZDQyMjliMDhjMTNjODRhM2MzMDFhMDhkZWZkYzll N2Y0NDY3ZTYgdXBzdHJlYW0uCgpkb24ndCBib3RoZXIgd2l0aCBwYXRob2xvZ2ljYWwgY2FzZXMs IHRoZXkgb25seSB3YXN0ZSBjeWNsZXMuCklQdjYgcmVxdWlyZXMgYSBtaW5pbXVtIE1UVSBvZiAx MjgwIHNvIHdlIHNob3VsZCBuZXZlciBzZWUgZnJhZ21lbnRzCnNtYWxsZXIgdGhhbiB0aGlzIChl eGNlcHQgbGFzdCBmcmFnKS4KCnYzOiBkb24ndCB1c2UgYXdrd2FyZCAiLW9mZnNldCArIGxlbiIK djI6IGRyb3AgSVB2NCBwYXJ0LCB3aGljaCBhZGRlZCBzYW1lIGNoZWNrIHcuIElQVjRfTUlOX01U VSAoNjgpLgogICAgVGhlcmUgd2VyZSBjb25jZXJucyB0aGF0IHRoZXJlIGNvdWxkIGJlIGV2ZW4g c21hbGxlciBmcmFncwogICAgZ2VuZXJhdGVkIGJ5IGludGVybWVkaWF0ZSBub2RlcywgZS5nLiBv biByYWRpbyBuZXR3b3Jrcy4KCkNjOiBQZXRlciBPc2tvbGtvdiA8cG9za0Bnb29nbGUuY29tPgpD YzogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBGbG9y aWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFu IDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6IElu IG5mX2N0X2ZyYWc2X2dhdGhlcigpIHVzZSBjbG9uZSBpbnN0ZWFkIG9mIHNrYiwKIGFuZCBnb3Rv IHJldF9vcmlnIGluIGNhc2Ugb2YgZXJyb3JdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3Mg PGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9pcHY2L25ldGZpbHRlci9u Zl9jb25udHJhY2tfcmVhc20uYyB8IDQgKysrKwogbmV0L2lwdjYvcmVhc3NlbWJseS5jICAgICAg ICAgICAgICAgICAgIHwgNCArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyBiL25l dC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwppbmRleCBhMzliNWFmNDNlZmUu LmNiNzIyMzlkY2ZmNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFj a19yZWFzbS5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwpA QCAtNTc0LDYgKzU3NCwxMCBAQCBzdHJ1Y3Qgc2tfYnVmZiAqbmZfY3RfZnJhZzZfZ2F0aGVyKHN0 cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVzZQogCWhkciA9IGlwdjZf aGRyKGNsb25lKTsKIAlmaGRyID0gKHN0cnVjdCBmcmFnX2hkciAqKXNrYl90cmFuc3BvcnRfaGVh ZGVyKGNsb25lKTsKIAorCWlmIChjbG9uZS0+bGVuIC0gc2tiX25ldHdvcmtfb2Zmc2V0KGNsb25l KSA8IElQVjZfTUlOX01UVSAmJgorCSAgICBmaGRyLT5mcmFnX29mZiAmIGh0b25zKElQNl9NRikp CisJCWdvdG8gcmV0X29yaWc7CisKIAlza2Jfb3JwaGFuKHNrYik7CiAJZnEgPSBmcV9maW5kKG5l dCwgZmhkci0+aWRlbnRpZmljYXRpb24sIHVzZXIsIGhkciwKIAkJICAgICBza2ItPmRldiA/IHNr Yi0+ZGV2LT5pZmluZGV4IDogMCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMg Yi9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKaW5kZXggMzJkNDY1OWQyZDgzLi4zY2JjZjA5OWY2YjIg MTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYworKysgYi9uZXQvaXB2Ni9yZWFzc2Vt Ymx5LmMKQEAgLTUxNSw2ICs1MTUsMTAgQEAgc3RhdGljIGludCBpcHY2X2ZyYWdfcmN2KHN0cnVj dCBza19idWZmICpza2IpCiAJCXJldHVybiAxOwogCX0KIAorCWlmIChza2ItPmxlbiAtIHNrYl9u ZXR3b3JrX29mZnNldChza2IpIDwgSVBWNl9NSU5fTVRVICYmCisJICAgIGZoZHItPmZyYWdfb2Zm ICYgaHRvbnMoSVA2X01GKSkKKwkJZ290byBmYWlsX2hkcjsKKwogCWlpZiA9IHNrYi0+ZGV2ID8g c2tiLT5kZXYtPmlmaW5kZXggOiAwOwogCWZxID0gZnFfZmluZChuZXQsIGZoZHItPmlkZW50aWZp Y2F0aW9uLCBoZHIsIGlpZik7CiAJaWYgKGZxKSB7CgpGcm9tIGQxOTI5Nzk2NjFiMTA5N2ZhNDZh NzVhMzE2YzIwNmI4MWUwNDBmMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMg RHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjoz MDoxMSAtMDcwMApTdWJqZWN0OiBbMjUvMzNdIG5ldDogcHNrYl90cmltX3Jjc3VtKCkgYW5kIENI RUNLU1VNX0NPTVBMRVRFIGFyZSBmcmllbmRzCgpjb21taXQgODgwNzhkOThkMWJiMDg1ZDcyYWY4 NDM3NzA3Mjc5ZTIwMzUyNGZhNSB1cHN0cmVhbS4KCkFmdGVyIHdvcmtpbmcgb24gSVAgZGVmcmFn bWVudGF0aW9uIGxhdGVseSwgSSBmb3VuZCB0aGF0IHNvbWUgbGFyZ2UKcGFja2V0cyBkZWZlYXQg Q0hFQ0tTVU1fQ09NUExFVEUgb3B0aW1pemF0aW9uIGJlY2F1c2Ugb2YgTklDIGFkZGluZwp6ZXJv IHBhZGRpbmdzIG9uIHRoZSBsYXN0IChzbWFsbCkgZnJhZ21lbnQuCgpXaGlsZSByZW1vdmluZyB0 aGUgcGFkZGluZyB3aXRoIHBza2JfdHJpbV9yY3N1bSgpLCB3ZSBzZXQgc2tiLT5pcF9zdW1tZWQK dG8gQ0hFQ0tTVU1fTk9ORSwgZm9yY2luZyBhIGZ1bGwgY3N1bSB2YWxpZGF0aW9uLCBldmVuIGlm IGFsbCBwcmlvcgpmcmFnbWVudHMgaGFkIENIRUNLU1VNX0NPTVBMRVRFIHNldC4KCldlIGNhbiBp bnN0ZWFkIGNvbXB1dGUgdGhlIGNoZWNrc3VtIG9mIHRoZSBwYXJ0IHdlIGFyZSB0cmltbWluZywK dXN1YWxseSBzbWFsbGVyIHRoYW4gdGhlIHBhcnQgd2Uga2VlcC4KClNpZ25lZC1vZmYtYnk6IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4g TWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0 Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBpbmNsdWRlL2xpbnV4 L3NrYnVmZi5oIHwgIDUgKystLS0KIG5ldC9jb3JlL3NrYnVmZi5jICAgICAgfCAxNCArKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3Nr YnVmZi5oCmluZGV4IDBiM2MzNzM3M2ZlNS4uMjgyOTg2NGMxNDUyIDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L3NrYnVmZi5oCisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKQEAgLTI3OTYs NiArMjc5Niw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3B1c2hfcmNzdW0o c3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gc2tiLT5kYXRhOwogfQogCitpbnQgcHNrYl90 cmltX3Jjc3VtX3Nsb3coc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbik7CiAv KioKICAqCXBza2JfdHJpbV9yY3N1bSAtIHRyaW0gcmVjZWl2ZWQgc2tiIGFuZCB1cGRhdGUgY2hl Y2tzdW0KICAqCUBza2I6IGJ1ZmZlciB0byB0cmltCkBAIC0yODA5LDkgKzI4MTAsNyBAQCBzdGF0 aWMgaW5saW5lIGludCBwc2tiX3RyaW1fcmNzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWdu ZWQgaW50IGxlbikKIHsKIAlpZiAobGlrZWx5KGxlbiA+PSBza2ItPmxlbikpCiAJCXJldHVybiAw OwotCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9DT01QTEVURSkKLQkJc2tiLT5pcF9z dW1tZWQgPSBDSEVDS1NVTV9OT05FOwotCXJldHVybiBfX3Bza2JfdHJpbShza2IsIGxlbik7CisJ cmV0dXJuIHBza2JfdHJpbV9yY3N1bV9zbG93KHNrYiwgbGVuKTsKIH0KIAogI2RlZmluZSByYl90 b19za2IocmIpIHJiX2VudHJ5X3NhZmUocmIsIHN0cnVjdCBza19idWZmLCByYm5vZGUpCmRpZmYg LS1naXQgYS9uZXQvY29yZS9za2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jCmluZGV4IDQ5Zjcz ZmIwODQwYi4uM2Q3YzkyZDM4YTc4IDEwMDY0NAotLS0gYS9uZXQvY29yZS9za2J1ZmYuYworKysg Yi9uZXQvY29yZS9za2J1ZmYuYwpAQCAtMTUwMiw2ICsxNTAyLDIwIEBAIGRvbmU6CiB9CiBFWFBP UlRfU1lNQk9MKF9fX3Bza2JfdHJpbSk7CiAKKy8qIE5vdGUgOiB1c2UgcHNrYl90cmltX3Jjc3Vt KCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgZGlyZWN0bHkKKyAqLworaW50IHBza2JfdHJpbV9y Y3N1bV9zbG93KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCit7CisJaWYg KHNrYi0+aXBfc3VtbWVkID09IENIRUNLU1VNX0NPTVBMRVRFKSB7CisJCWludCBkZWx0YSA9IHNr Yi0+bGVuIC0gbGVuOworCisJCXNrYi0+Y3N1bSA9IGNzdW1fc3ViKHNrYi0+Y3N1bSwKKwkJCQkg ICAgIHNrYl9jaGVja3N1bShza2IsIGxlbiwgZGVsdGEsIDApKTsKKwl9CisJcmV0dXJuIF9fcHNr Yl90cmltKHNrYiwgbGVuKTsKK30KK0VYUE9SVF9TWU1CT0wocHNrYl90cmltX3Jjc3VtX3Nsb3cp OworCiAvKioKICAqCV9fcHNrYl9wdWxsX3RhaWwgLSBhZHZhbmNlIHRhaWwgb2Ygc2tiIGhlYWRl cgogICoJQHNrYjogYnVmZmVyIHRvIHJlYWxsb2NhdGUKCkZyb20gNzU3YjA2MGYzZmVmY2UxZGQw OTkzOWM0YzE5MGU5NWRhOGFiMmY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUGV0 ZXIgT3Nrb2xrb3YgPHBvc2tAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjoz MDoxMyAtMDcwMApTdWJqZWN0OiBbMjYvMzNdIGlwOiB1c2UgcmIgdHJlZXMgZm9yIElQIGZyYWcg cXVldWUuCgpjb21taXQgZmEwZjUyNzM1OGJkOTAwZWY5MmY5MjU4NzhlZDZiZmJkNTEzMDVjYyB1 cHN0cmVhbS4KClNpbWlsYXIgdG8gVENQIE9PTyBSWCBxdWV1ZSwgaXQgbWFrZXMgc2Vuc2UgdG8g dXNlIHJiIHRyZWVzIHRvIHN0b3JlCklQIGZyYWdtZW50cywgc28gdGhhdCBPT08gZnJhZ21lbnRz IGFyZSBpbnNlcnRlZCBmYXN0ZXIuCgpUZXN0ZWQ6CgotIGEgZm9sbG93LXVwIHBhdGNoIGNvbnRh aW5zIGEgcmF0aGVyIGNvbXByZWhlbnNpdmUgaXAgZGVmcmFnCiAgc2VsZi10ZXN0IChmdW5jdGlv bmFsKQotIHJhbiBuZXBlciBgdWRwX3N0cmVhbSAtYyAtSCA8aG9zdD4gLUYgMTAwIC1sIDMwMCAt VCAyMGA6CiAgICBuZXRzdGF0IC0tc3RhdGlzdGljcwogICAgSXA6CiAgICAgICAgMjgyMDc4OTM3 IHRvdGFsIHBhY2tldHMgcmVjZWl2ZWQKICAgICAgICAwIGZvcndhcmRlZAogICAgICAgIDAgaW5j b21pbmcgcGFja2V0cyBkaXNjYXJkZWQKICAgICAgICA5NDY3NjAgaW5jb21pbmcgcGFja2V0cyBk ZWxpdmVyZWQKICAgICAgICAxODc0MzQ1NiByZXF1ZXN0cyBzZW50IG91dAogICAgICAgIDEwMSBm cmFnbWVudHMgZHJvcHBlZCBhZnRlciB0aW1lb3V0CiAgICAgICAgMjgyMDc3MTI5IHJlYXNzZW1i bGllcyByZXF1aXJlZAogICAgICAgIDk0NDk1MiBwYWNrZXRzIHJlYXNzZW1ibGVkIG9rCiAgICAg ICAgMjYyNzM0MjM5IHBhY2tldCByZWFzc2VtYmxlcyBmYWlsZWQKICAgKFRoZSBudW1iZXJzL3N0 YXRzIGFib3ZlIGFyZSBzb21ld2hhdCBiZXR0ZXIgcmU6CiAgICByZWFzc2VtYmxpZXMgdnMgYSBr ZXJuZWwgd2l0aG91dCB0aGlzIHBhdGNoc2V0LiBNb3JlCiAgICBjb21wcmVoZW5zaXZlIHBlcmZv cm1hbmNlIHRlc3RpbmcgVEJEKS4KClJlcG9ydGVkLWJ5OiBKYW5uIEhvcm4gPGphbm5oQGdvb2ds ZS5jb20+ClJlcG9ydGVkLWJ5OiBKdWhhLU1hdHRpIFRpbGxpIDxqdWhhLW1hdHRpLnRpbGxpQGlr aS5maT4KU3VnZ2VzdGVkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNp Z25lZC1vZmYtYnk6IFBldGVyIE9za29sa292IDxwb3NrQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQ2M6IEZsb3JpYW4gV2VzdHBo YWwgPGZ3QHN0cmxlbi5kZT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBs aW51eGZvdW5kYXRpb24ub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDoKIC0gS2VlcCB1c2lu ZyBmcmFnX2tmcmVlX3NrYigpIGluIGluZXRfZnJhZ19kZXN0cm95KCkKIC0gQWRqdXN0IGNvbnRl eHRdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5r LmNvLnVrPgotLS0KIGluY2x1ZGUvbGludXgvc2tidWZmLmggICAgICAgICAgICAgICAgICB8ICAg NCArLQogaW5jbHVkZS9uZXQvaW5ldF9mcmFnLmggICAgICAgICAgICAgICAgIHwgICAzICstCiBu ZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMgICAgICAgICAgICAgICAgfCAgMTYgKy0tCiBuZXQvaXB2 NC9pcF9mcmFnbWVudC5jICAgICAgICAgICAgICAgICAgfCAxODIgKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0KIG5ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyB8 ICAgMSArCiBuZXQvaXB2Ni9yZWFzc2VtYmx5LmMgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog NiBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgK aW5kZXggMjgyOTg2NGMxNDUyLi44OWU4ZWU5NThhNjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvc2tidWZmLmgKKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtNTU2LDE0ICs1NTYs MTQgQEAgc3RydWN0IHNrX2J1ZmYgewogCQkJCXN0cnVjdCBza2JfbXN0YW1wIHNrYl9tc3RhbXA7 CiAJCQl9OwogCQl9OwotCQlzdHJ1Y3QgcmJfbm9kZQlyYm5vZGU7IC8qIHVzZWQgaW4gbmV0ZW0g JiB0Y3Agc3RhY2sgKi8KKwkJc3RydWN0IHJiX25vZGUJCXJibm9kZTsgLyogdXNlZCBpbiBuZXRl bSwgaXA0IGRlZnJhZywgYW5kIHRjcCBzdGFjayAqLwogCX07CiAKIAl1bmlvbiB7CisJCXN0cnVj dCBzb2NrCQkqc2s7CiAJCWludAkJCWlwX2RlZnJhZ19vZmZzZXQ7CiAJfTsKIAotCXN0cnVjdCBz b2NrCQkqc2s7CiAJc3RydWN0IG5ldF9kZXZpY2UJKmRldjsKIAogCS8qCmRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC9pbmV0X2ZyYWcuaCBiL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCmluZGV4IDQx YTgzMGJhMTFmYy4uNWZkOGU3NmRjZDI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X2Zy YWcuaAorKysgYi9pbmNsdWRlL25ldC9pbmV0X2ZyYWcuaApAQCAtNzMsNyArNzMsOCBAQCBzdHJ1 Y3QgaW5ldF9mcmFnX3F1ZXVlIHsKIAlzdHJ1Y3QgdGltZXJfbGlzdAl0aW1lcjsKIAlzcGlubG9j a190CQlsb2NrOwogCWF0b21pY190CQlyZWZjbnQ7Ci0Jc3RydWN0IHNrX2J1ZmYJCSpmcmFnbWVu dHM7CisJc3RydWN0IHNrX2J1ZmYJCSpmcmFnbWVudHM7ICAvKiBVc2VkIGluIElQdjYuICovCisJ c3RydWN0IHJiX3Jvb3QJCXJiX2ZyYWdtZW50czsgLyogVXNlZCBpbiBJUHY0LiAqLwogCXN0cnVj dCBza19idWZmCQkqZnJhZ21lbnRzX3RhaWw7CiAJa3RpbWVfdAkJCXN0YW1wOwogCWludAkJCWxl bjsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2luZXRf ZnJhZ21lbnQuYwppbmRleCBiYjc4NGMzYTQwZmIuLjAyZDM5OTYxOGI4ZiAxMDA2NDQKLS0tIGEv bmV0L2lwdjQvaW5ldF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYwpA QCAtMTQ0LDEyICsxNDQsMTYgQEAgdm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1Y3QgaW5ldF9m cmFnX3F1ZXVlICpxKQogCWZwID0gcS0+ZnJhZ21lbnRzOwogCW5mID0gcS0+bmV0OwogCWYgPSBu Zi0+ZjsKLQl3aGlsZSAoZnApIHsKLQkJc3RydWN0IHNrX2J1ZmYgKnhwID0gZnAtPm5leHQ7Ci0K LQkJc3VtX3RydWVzaXplICs9IGZwLT50cnVlc2l6ZTsKLQkJZnJhZ19rZnJlZV9za2IobmYsIGYs IGZwKTsKLQkJZnAgPSB4cDsKKwlpZiAoZnApIHsKKwkJZG8geworCQkJc3RydWN0IHNrX2J1ZmYg KnhwID0gZnAtPm5leHQ7CisKKwkJCXN1bV90cnVlc2l6ZSArPSBmcC0+dHJ1ZXNpemU7CisJCQlm cmFnX2tmcmVlX3NrYihuZiwgZiwgZnApOworCQkJZnAgPSB4cDsKKwkJfSB3aGlsZSAoZnApOwor CX0gZWxzZSB7CisJCXN1bV90cnVlc2l6ZSA9IHNrYl9yYnRyZWVfcHVyZ2UoJnEtPnJiX2ZyYWdt ZW50cyk7CiAJfQogCXN1bSA9IHN1bV90cnVlc2l6ZSArIGYtPnFzaXplOwogCmRpZmYgLS1naXQg YS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwppbmRleCA2 ZTlkMGM3YzUxNTkuLjI3MDc5Mjc3NjQwMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfZnJhZ21l bnQuYworKysgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCkBAIC0xMzYsNyArMTM2LDcgQEAgc3Rh dGljIGJvb2wgZnJhZ19leHBpcmVfc2tpcF9pY21wKHUzMiB1c2VyKQogc3RhdGljIHZvaWQgaXBf ZXhwaXJlKHVuc2lnbmVkIGxvbmcgYXJnKQogewogCWNvbnN0IHN0cnVjdCBpcGhkciAqaXBoOwot CXN0cnVjdCBza19idWZmICpoZWFkOworCXN0cnVjdCBza19idWZmICpoZWFkID0gTlVMTDsKIAlz dHJ1Y3QgbmV0ICpuZXQ7CiAJc3RydWN0IGlwcSAqcXA7CiAJaW50IGVycjsKQEAgLTE1MiwxNCAr MTUyLDMxIEBAIHN0YXRpYyB2b2lkIGlwX2V4cGlyZSh1bnNpZ25lZCBsb25nIGFyZykKIAogCWlw cV9raWxsKHFwKTsKIAlJUF9JTkNfU1RBVFNfQkgobmV0LCBJUFNUQVRTX01JQl9SRUFTTUZBSUxT KTsKLQotCWhlYWQgPSBxcC0+cS5mcmFnbWVudHM7Ci0KIAlJUF9JTkNfU1RBVFNfQkgobmV0LCBJ UFNUQVRTX01JQl9SRUFTTVRJTUVPVVQpOwogCi0JaWYgKCEocXAtPnEuZmxhZ3MgJiBJTkVUX0ZS QUdfRklSU1RfSU4pIHx8ICFoZWFkKQorCWlmICghcXAtPnEuZmxhZ3MgJiBJTkVUX0ZSQUdfRklS U1RfSU4pCiAJCWdvdG8gb3V0OwogCisJLyogc2tfYnVmZjo6ZGV2IGFuZCBza19idWZmOjpyYm5v ZGUgYXJlIHVuaW9uaXplZC4gU28gd2UKKwkgKiBwdWxsIHRoZSBoZWFkIG91dCBvZiB0aGUgdHJl ZSBpbiBvcmRlciB0byBiZSBhYmxlIHRvCisJICogZGVhbCB3aXRoIGhlYWQtPmRldi4KKwkgKi8K KwlpZiAocXAtPnEuZnJhZ21lbnRzKSB7CisJCWhlYWQgPSBxcC0+cS5mcmFnbWVudHM7CisJCXFw LT5xLmZyYWdtZW50cyA9IGhlYWQtPm5leHQ7CisJfSBlbHNlIHsKKwkJaGVhZCA9IHNrYl9yYl9m aXJzdCgmcXAtPnEucmJfZnJhZ21lbnRzKTsKKwkJaWYgKCFoZWFkKQorCQkJZ290byBvdXQ7CisJ CXJiX2VyYXNlKCZoZWFkLT5yYm5vZGUsICZxcC0+cS5yYl9mcmFnbWVudHMpOworCQltZW1zZXQo JmhlYWQtPnJibm9kZSwgMCwgc2l6ZW9mKGhlYWQtPnJibm9kZSkpOworCQliYXJyaWVyKCk7CisJ fQorCWlmIChoZWFkID09IHFwLT5xLmZyYWdtZW50c190YWlsKQorCQlxcC0+cS5mcmFnbWVudHNf dGFpbCA9IE5VTEw7CisKKwlzdWJfZnJhZ19tZW1fbGltaXQocXAtPnEubmV0LCBoZWFkLT50cnVl c2l6ZSk7CisKIAloZWFkLT5kZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShuZXQsIHFwLT5paWYp OwogCWlmICghaGVhZC0+ZGV2KQogCQlnb3RvIG91dDsKQEAgLTE3OSwxNiArMTk2LDE2IEBAIHN0 YXRpYyB2b2lkIGlwX2V4cGlyZSh1bnNpZ25lZCBsb25nIGFyZykKIAkgICAgKHNrYl9ydGFibGUo aGVhZCktPnJ0X3R5cGUgIT0gUlROX0xPQ0FMKSkKIAkJZ290byBvdXQ7CiAKLQlza2JfZ2V0KGhl YWQpOwogCXNwaW5fdW5sb2NrKCZxcC0+cS5sb2NrKTsKIAlpY21wX3NlbmQoaGVhZCwgSUNNUF9U SU1FX0VYQ0VFREVELCBJQ01QX0VYQ19GUkFHVElNRSwgMCk7Ci0Ja2ZyZWVfc2tiKGhlYWQpOwog CWdvdG8gb3V0X3JjdV91bmxvY2s7CiAKIG91dDoKIAlzcGluX3VubG9jaygmcXAtPnEubG9jayk7 CiBvdXRfcmN1X3VubG9jazoKIAlyY3VfcmVhZF91bmxvY2soKTsKKwlpZiAoaGVhZCkKKwkJa2Zy ZWVfc2tiKGhlYWQpOwogCWlwcV9wdXQocXApOwogfQogCkBAIC0yMzEsNyArMjQ4LDcgQEAgc3Rh dGljIGludCBpcF9mcmFnX3Rvb19mYXIoc3RydWN0IGlwcSAqcXApCiAJZW5kID0gYXRvbWljX2lu Y19yZXR1cm4oJnBlZXItPnJpZCk7CiAJcXAtPnJpZCA9IGVuZDsKIAotCXJjID0gcXAtPnEuZnJh Z21lbnRzICYmIChlbmQgLSBzdGFydCkgPiBtYXg7CisJcmMgPSBxcC0+cS5mcmFnbWVudHNfdGFp bCAmJiAoZW5kIC0gc3RhcnQpID4gbWF4OwogCiAJaWYgKHJjKSB7CiAJCXN0cnVjdCBuZXQgKm5l dDsKQEAgLTI0NSw3ICsyNjIsNiBAQCBzdGF0aWMgaW50IGlwX2ZyYWdfdG9vX2ZhcihzdHJ1Y3Qg aXBxICpxcCkKIAogc3RhdGljIGludCBpcF9mcmFnX3JlaW5pdChzdHJ1Y3QgaXBxICpxcCkKIHsK LQlzdHJ1Y3Qgc2tfYnVmZiAqZnA7CiAJdW5zaWduZWQgaW50IHN1bV90cnVlc2l6ZSA9IDA7CiAK IAlpZiAoIW1vZF90aW1lcigmcXAtPnEudGltZXIsIGppZmZpZXMgKyBxcC0+cS5uZXQtPnRpbWVv dXQpKSB7CkBAIC0yNTMsMjAgKzI2OSwxNCBAQCBzdGF0aWMgaW50IGlwX2ZyYWdfcmVpbml0KHN0 cnVjdCBpcHEgKnFwKQogCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAl9CiAKLQlmcCA9IHFwLT5xLmZy YWdtZW50czsKLQlkbyB7Ci0JCXN0cnVjdCBza19idWZmICp4cCA9IGZwLT5uZXh0OwotCi0JCXN1 bV90cnVlc2l6ZSArPSBmcC0+dHJ1ZXNpemU7Ci0JCWtmcmVlX3NrYihmcCk7Ci0JCWZwID0geHA7 Ci0JfSB3aGlsZSAoZnApOworCXN1bV90cnVlc2l6ZSA9IHNrYl9yYnRyZWVfcHVyZ2UoJnFwLT5x LnJiX2ZyYWdtZW50cyk7CiAJc3ViX2ZyYWdfbWVtX2xpbWl0KHFwLT5xLm5ldCwgc3VtX3RydWVz aXplKTsKIAogCXFwLT5xLmZsYWdzID0gMDsKIAlxcC0+cS5sZW4gPSAwOwogCXFwLT5xLm1lYXQg PSAwOwogCXFwLT5xLmZyYWdtZW50cyA9IE5VTEw7CisJcXAtPnEucmJfZnJhZ21lbnRzID0gUkJf Uk9PVDsKIAlxcC0+cS5mcmFnbWVudHNfdGFpbCA9IE5VTEw7CiAJcXAtPmlpZiA9IDA7CiAJcXAt PmVjbiA9IDA7CkBAIC0yNzgsNyArMjg4LDggQEAgc3RhdGljIGludCBpcF9mcmFnX3JlaW5pdChz dHJ1Y3QgaXBxICpxcCkKIHN0YXRpYyBpbnQgaXBfZnJhZ19xdWV1ZShzdHJ1Y3QgaXBxICpxcCwg c3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2Yo cXAtPnEubmV0LCBzdHJ1Y3QgbmV0LCBpcHY0LmZyYWdzKTsKLQlzdHJ1Y3Qgc2tfYnVmZiAqcHJl diwgKm5leHQ7CisJc3RydWN0IHJiX25vZGUgKipyYm4sICpwYXJlbnQ7CisJc3RydWN0IHNrX2J1 ZmYgKnNrYjE7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAl1bnNpZ25lZCBpbnQgZnJhZ3Np emU7CiAJaW50IGZsYWdzLCBvZmZzZXQ7CkBAIC0zNDEsNTggKzM1Miw1OCBAQCBzdGF0aWMgaW50 IGlwX2ZyYWdfcXVldWUoc3RydWN0IGlwcSAqcXAsIHN0cnVjdCBza19idWZmICpza2IpCiAJaWYg KGVycikKIAkJZ290byBlcnI7CiAKLQkvKiBGaW5kIG91dCB3aGljaCBmcmFnbWVudHMgYXJlIGlu IGZyb250IGFuZCBhdCB0aGUgYmFjayBvZiB1cwotCSAqIGluIHRoZSBjaGFpbiBvZiBmcmFnbWVu dHMgc28gZmFyLiAgV2UgbXVzdCBrbm93IHdoZXJlIHRvIHB1dAotCSAqIHRoaXMgZnJhZ21lbnQs IHJpZ2h0PwotCSAqLwotCXByZXYgPSBxcC0+cS5mcmFnbWVudHNfdGFpbDsKLQlpZiAoIXByZXYg fHwgcHJldi0+aXBfZGVmcmFnX29mZnNldCA8IG9mZnNldCkgewotCQluZXh0ID0gTlVMTDsKLQkJ Z290byBmb3VuZDsKLQl9Ci0JcHJldiA9IE5VTEw7Ci0JZm9yIChuZXh0ID0gcXAtPnEuZnJhZ21l bnRzOyBuZXh0ICE9IE5VTEw7IG5leHQgPSBuZXh0LT5uZXh0KSB7Ci0JCWlmIChuZXh0LT5pcF9k ZWZyYWdfb2Zmc2V0ID49IG9mZnNldCkKLQkJCWJyZWFrOwkvKiBiaW5nbyEgKi8KLQkJcHJldiA9 IG5leHQ7Ci0JfQorCS8qIE5vdGUgOiBza2ItPnJibm9kZSBhbmQgc2tiLT5kZXYgc2hhcmUgdGhl IHNhbWUgbG9jYXRpb24uICovCisJZGV2ID0gc2tiLT5kZXY7CisJLyogTWFrZXMgc3VyZSBjb21w aWxlciB3b250IGRvIHNpbGx5IGFsaWFzaW5nIGdhbWVzICovCisJYmFycmllcigpOwogCi1mb3Vu ZDoKIAkvKiBSRkM1NzIyLCBTZWN0aW9uIDQsIGFtZW5kZWQgYnkgRXJyYXRhIElEIDogMzA4OQog CSAqICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHJlYXNzZW1ibGluZyBhbiBJUHY2IGRh dGFncmFtLCBpZgogCSAqICAgb25lIG9yIG1vcmUgaXRzIGNvbnN0aXR1ZW50IGZyYWdtZW50cyBp cyBkZXRlcm1pbmVkIHRvIGJlIGFuCiAJICogICBvdmVybGFwcGluZyBmcmFnbWVudCwgdGhlIGVu dGlyZSBkYXRhZ3JhbSAoYW5kIGFueSBjb25zdGl0dWVudAogCSAqICAgZnJhZ21lbnRzKSBNVVNU IGJlIHNpbGVudGx5IGRpc2NhcmRlZC4KIAkgKgotCSAqIFdlIGRvIHRoZSBzYW1lIGhlcmUgZm9y IElQdjQuCisJICogV2UgZG8gdGhlIHNhbWUgaGVyZSBmb3IgSVB2NCAoYW5kIGluY3JlbWVudCBh biBzbm1wIGNvdW50ZXIpLgogCSAqLwogCi0JLyogSXMgdGhlcmUgYW4gb3ZlcmxhcCB3aXRoIHRo ZSBwcmV2aW91cyBmcmFnbWVudD8gKi8KLQlpZiAocHJldiAmJgotCSAgICAocHJldi0+aXBfZGVm cmFnX29mZnNldCArIHByZXYtPmxlbikgPiBvZmZzZXQpCi0JCWdvdG8gZGlzY2FyZF9xcDsKLQot CS8qIElzIHRoZXJlIGFuIG92ZXJsYXAgd2l0aCB0aGUgbmV4dCBmcmFnbWVudD8gKi8KLQlpZiAo bmV4dCAmJiBuZXh0LT5pcF9kZWZyYWdfb2Zmc2V0IDwgZW5kKQotCQlnb3RvIGRpc2NhcmRfcXA7 CisJLyogRmluZCBvdXQgd2hlcmUgdG8gcHV0IHRoaXMgZnJhZ21lbnQuICAqLworCXNrYjEgPSBx cC0+cS5mcmFnbWVudHNfdGFpbDsKKwlpZiAoIXNrYjEpIHsKKwkJLyogVGhpcyBpcyB0aGUgZmly c3QgZnJhZ21lbnQgd2UndmUgcmVjZWl2ZWQuICovCisJCXJiX2xpbmtfbm9kZSgmc2tiLT5yYm5v ZGUsIE5VTEwsICZxcC0+cS5yYl9mcmFnbWVudHMucmJfbm9kZSk7CisJCXFwLT5xLmZyYWdtZW50 c190YWlsID0gc2tiOworCX0gZWxzZSBpZiAoKHNrYjEtPmlwX2RlZnJhZ19vZmZzZXQgKyBza2Ix LT5sZW4pIDwgZW5kKSB7CisJCS8qIFRoaXMgaXMgdGhlIGNvbW1vbi9zcGVjaWFsIGNhc2U6IHNr YiBnb2VzIHRvIHRoZSBlbmQuICovCisJCS8qIERldGVjdCBhbmQgZGlzY2FyZCBvdmVybGFwcy4g Ki8KKwkJaWYgKG9mZnNldCA8IChza2IxLT5pcF9kZWZyYWdfb2Zmc2V0ICsgc2tiMS0+bGVuKSkK KwkJCWdvdG8gZGlzY2FyZF9xcDsKKwkJLyogSW5zZXJ0IGFmdGVyIHNrYjEuICovCisJCXJiX2xp bmtfbm9kZSgmc2tiLT5yYm5vZGUsICZza2IxLT5yYm5vZGUsICZza2IxLT5yYm5vZGUucmJfcmln aHQpOworCQlxcC0+cS5mcmFnbWVudHNfdGFpbCA9IHNrYjsKKwl9IGVsc2UgeworCQkvKiBCaW5h cnkgc2VhcmNoLiBOb3RlIHRoYXQgc2tiIGNhbiBiZWNvbWUgdGhlIGZpcnN0IGZyYWdtZW50LCBi dXQKKwkJICogbm90IHRoZSBsYXN0IChjb3ZlcmVkIGFib3ZlKS4gKi8KKwkJcmJuID0gJnFwLT5x LnJiX2ZyYWdtZW50cy5yYl9ub2RlOworCQlkbyB7CisJCQlwYXJlbnQgPSAqcmJuOworCQkJc2ti MSA9IHJiX3RvX3NrYihwYXJlbnQpOworCQkJaWYgKGVuZCA8PSBza2IxLT5pcF9kZWZyYWdfb2Zm c2V0KQorCQkJCXJibiA9ICZwYXJlbnQtPnJiX2xlZnQ7CisJCQllbHNlIGlmIChvZmZzZXQgPj0g c2tiMS0+aXBfZGVmcmFnX29mZnNldCArIHNrYjEtPmxlbikKKwkJCQlyYm4gPSAmcGFyZW50LT5y Yl9yaWdodDsKKwkJCWVsc2UgLyogRm91bmQgYW4gb3ZlcmxhcCB3aXRoIHNrYjEuICovCisJCQkJ Z290byBkaXNjYXJkX3FwOworCQl9IHdoaWxlICgqcmJuKTsKKwkJLyogSGVyZSB3ZSBoYXZlIHBh cmVudCBwcm9wZXJseSBzZXQsIGFuZCByYm4gcG9pbnRpbmcgdG8KKwkJICogb25lIG9mIGl0cyBO VUxMIGxlZnQvcmlnaHQgY2hpbGRyZW4uIEluc2VydCBza2IuICovCisJCXJiX2xpbmtfbm9kZSgm c2tiLT5yYm5vZGUsIHBhcmVudCwgcmJuKTsKKwl9CisJcmJfaW5zZXJ0X2NvbG9yKCZza2ItPnJi bm9kZSwgJnFwLT5xLnJiX2ZyYWdtZW50cyk7CiAKLQkvKiBOb3RlIDogc2tiLT5pcF9kZWZyYWdf b2Zmc2V0IGFuZCBza2ItPmRldiBzaGFyZSB0aGUgc2FtZSBsb2NhdGlvbiAqLwotCWRldiA9IHNr Yi0+ZGV2OwogCWlmIChkZXYpCiAJCXFwLT5paWYgPSBkZXYtPmlmaW5kZXg7Ci0JLyogTWFrZXMg c3VyZSBjb21waWxlciB3b250IGRvIHNpbGx5IGFsaWFzaW5nIGdhbWVzICovCi0JYmFycmllcigp OwogCXNrYi0+aXBfZGVmcmFnX29mZnNldCA9IG9mZnNldDsKIAotCS8qIEluc2VydCB0aGlzIGZy YWdtZW50IGluIHRoZSBjaGFpbiBvZiBmcmFnbWVudHMuICovCi0Jc2tiLT5uZXh0ID0gbmV4dDsK LQlpZiAoIW5leHQpCi0JCXFwLT5xLmZyYWdtZW50c190YWlsID0gc2tiOwotCWlmIChwcmV2KQot CQlwcmV2LT5uZXh0ID0gc2tiOwotCWVsc2UKLQkJcXAtPnEuZnJhZ21lbnRzID0gc2tiOwotCiAJ cXAtPnEuc3RhbXAgPSBza2ItPnRzdGFtcDsKIAlxcC0+cS5tZWF0ICs9IHNrYi0+bGVuOwogCXFw LT5lY24gfD0gZWNuOwpAQCAtNDE0LDcgKzQyNSw3IEBAIGZvdW5kOgogCQl1bnNpZ25lZCBsb25n IG9yZWZkc3QgPSBza2ItPl9za2JfcmVmZHN0OwogCiAJCXNrYi0+X3NrYl9yZWZkc3QgPSAwVUw7 Ci0JCWVyciA9IGlwX2ZyYWdfcmVhc20ocXAsIHByZXYsIGRldik7CisJCWVyciA9IGlwX2ZyYWdf cmVhc20ocXAsIHNrYiwgZGV2KTsKIAkJc2tiLT5fc2tiX3JlZmRzdCA9IG9yZWZkc3Q7CiAJCXJl dHVybiBlcnI7CiAJfQpAQCAtNDMxLDE1ICs0NDIsMTUgQEAgZXJyOgogCXJldHVybiBlcnI7CiB9 CiAKLQogLyogQnVpbGQgYSBuZXcgSVAgZGF0YWdyYW0gZnJvbSBhbGwgaXRzIGZyYWdtZW50cy4g Ki8KLQotc3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tf YnVmZiAqcHJldiwKK3N0YXRpYyBpbnQgaXBfZnJhZ19yZWFzbShzdHJ1Y3QgaXBxICpxcCwgc3Ry dWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVj dCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZihxcC0+cS5uZXQsIHN0cnVjdCBuZXQsIGlwdjQuZnJh Z3MpOwogCXN0cnVjdCBpcGhkciAqaXBoOwotCXN0cnVjdCBza19idWZmICpmcCwgKmhlYWQgPSBx cC0+cS5mcmFnbWVudHM7CisJc3RydWN0IHNrX2J1ZmYgKmZwLCAqaGVhZCA9IHNrYl9yYl9maXJz dCgmcXAtPnEucmJfZnJhZ21lbnRzKTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqKm5leHRwOyAvKiBUbyBi dWlsZCBmcmFnX2xpc3QuICovCisJc3RydWN0IHJiX25vZGUgKnJibjsKIAlpbnQgbGVuOwogCWlu dCBpaGxlbjsKIAlpbnQgZXJyOwpAQCAtNDUzLDI1ICs0NjQsMjAgQEAgc3RhdGljIGludCBpcF9m cmFnX3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwKIAkJZ290byBv dXRfZmFpbDsKIAl9CiAJLyogTWFrZSB0aGUgb25lIHdlIGp1c3QgcmVjZWl2ZWQgdGhlIGhlYWQu ICovCi0JaWYgKHByZXYpIHsKLQkJaGVhZCA9IHByZXYtPm5leHQ7Ci0JCWZwID0gc2tiX2Nsb25l KGhlYWQsIEdGUF9BVE9NSUMpOworCWlmIChoZWFkICE9IHNrYikgeworCQlmcCA9IHNrYl9jbG9u ZShza2IsIEdGUF9BVE9NSUMpOwogCQlpZiAoIWZwKQogCQkJZ290byBvdXRfbm9tZW07Ci0KLQkJ ZnAtPm5leHQgPSBoZWFkLT5uZXh0OwotCQlpZiAoIWZwLT5uZXh0KQorCQlyYl9yZXBsYWNlX25v ZGUoJnNrYi0+cmJub2RlLCAmZnAtPnJibm9kZSwgJnFwLT5xLnJiX2ZyYWdtZW50cyk7CisJCWlm IChxcC0+cS5mcmFnbWVudHNfdGFpbCA9PSBza2IpCiAJCQlxcC0+cS5mcmFnbWVudHNfdGFpbCA9 IGZwOwotCQlwcmV2LT5uZXh0ID0gZnA7Ci0KLQkJc2tiX21vcnBoKGhlYWQsIHFwLT5xLmZyYWdt ZW50cyk7Ci0JCWhlYWQtPm5leHQgPSBxcC0+cS5mcmFnbWVudHMtPm5leHQ7Ci0KLQkJY29uc3Vt ZV9za2IocXAtPnEuZnJhZ21lbnRzKTsKLQkJcXAtPnEuZnJhZ21lbnRzID0gaGVhZDsKKwkJc2ti X21vcnBoKHNrYiwgaGVhZCk7CisJCXJiX3JlcGxhY2Vfbm9kZSgmaGVhZC0+cmJub2RlLCAmc2ti LT5yYm5vZGUsCisJCQkJJnFwLT5xLnJiX2ZyYWdtZW50cyk7CisJCWNvbnN1bWVfc2tiKGhlYWQp OworCQloZWFkID0gc2tiOwogCX0KIAotCVdBUk5fT04oIWhlYWQpOwogCVdBUk5fT04oaGVhZC0+ aXBfZGVmcmFnX29mZnNldCAhPSAwKTsKIAogCS8qIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBmb3Ig dGhlIGRhdGFncmFtLiAqLwpAQCAtNDk2LDI0ICs1MDIsMzUgQEAgc3RhdGljIGludCBpcF9mcmFn X3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwKIAkJY2xvbmUgPSBh bGxvY19za2IoMCwgR0ZQX0FUT01JQyk7CiAJCWlmICghY2xvbmUpCiAJCQlnb3RvIG91dF9ub21l bTsKLQkJY2xvbmUtPm5leHQgPSBoZWFkLT5uZXh0OwotCQloZWFkLT5uZXh0ID0gY2xvbmU7CiAJ CXNrYl9zaGluZm8oY2xvbmUpLT5mcmFnX2xpc3QgPSBza2Jfc2hpbmZvKGhlYWQpLT5mcmFnX2xp c3Q7CiAJCXNrYl9mcmFnX2xpc3RfaW5pdChoZWFkKTsKIAkJZm9yIChpID0gMDsgaSA8IHNrYl9z aGluZm8oaGVhZCktPm5yX2ZyYWdzOyBpKyspCiAJCQlwbGVuICs9IHNrYl9mcmFnX3NpemUoJnNr Yl9zaGluZm8oaGVhZCktPmZyYWdzW2ldKTsKIAkJY2xvbmUtPmxlbiA9IGNsb25lLT5kYXRhX2xl biA9IGhlYWQtPmRhdGFfbGVuIC0gcGxlbjsKLQkJaGVhZC0+ZGF0YV9sZW4gLT0gY2xvbmUtPmxl bjsKLQkJaGVhZC0+bGVuIC09IGNsb25lLT5sZW47CisJCXNrYi0+dHJ1ZXNpemUgKz0gY2xvbmUt PnRydWVzaXplOwogCQljbG9uZS0+Y3N1bSA9IDA7CiAJCWNsb25lLT5pcF9zdW1tZWQgPSBoZWFk LT5pcF9zdW1tZWQ7CiAJCWFkZF9mcmFnX21lbV9saW1pdChxcC0+cS5uZXQsIGNsb25lLT50cnVl c2l6ZSk7CisJCXNrYl9zaGluZm8oaGVhZCktPmZyYWdfbGlzdCA9IGNsb25lOworCQluZXh0cCA9 ICZjbG9uZS0+bmV4dDsKKwl9IGVsc2UgeworCQluZXh0cCA9ICZza2Jfc2hpbmZvKGhlYWQpLT5m cmFnX2xpc3Q7CiAJfQogCi0Jc2tiX3NoaW5mbyhoZWFkKS0+ZnJhZ19saXN0ID0gaGVhZC0+bmV4 dDsKIAlza2JfcHVzaChoZWFkLCBoZWFkLT5kYXRhIC0gc2tiX25ldHdvcmtfaGVhZGVyKGhlYWQp KTsKIAotCWZvciAoZnA9aGVhZC0+bmV4dDsgZnA7IGZwID0gZnAtPm5leHQpIHsKKwkvKiBUcmF2 ZXJzZSB0aGUgdHJlZSBpbiBvcmRlciwgdG8gYnVpbGQgZnJhZ19saXN0LiAqLworCXJibiA9IHJi X25leHQoJmhlYWQtPnJibm9kZSk7CisJcmJfZXJhc2UoJmhlYWQtPnJibm9kZSwgJnFwLT5xLnJi X2ZyYWdtZW50cyk7CisJd2hpbGUgKHJibikgeworCQlzdHJ1Y3QgcmJfbm9kZSAqcmJuZXh0ID0g cmJfbmV4dChyYm4pOworCQlmcCA9IHJiX3RvX3NrYihyYm4pOworCQlyYl9lcmFzZShyYm4sICZx cC0+cS5yYl9mcmFnbWVudHMpOworCQlyYm4gPSByYm5leHQ7CisJCSpuZXh0cCA9IGZwOworCQlu ZXh0cCA9ICZmcC0+bmV4dDsKKwkJZnAtPnByZXYgPSBOVUxMOworCQltZW1zZXQoJmZwLT5yYm5v ZGUsIDAsIHNpemVvZihmcC0+cmJub2RlKSk7CiAJCWhlYWQtPmRhdGFfbGVuICs9IGZwLT5sZW47 CiAJCWhlYWQtPmxlbiArPSBmcC0+bGVuOwogCQlpZiAoaGVhZC0+aXBfc3VtbWVkICE9IGZwLT5p cF9zdW1tZWQpCkBAIC01MjQsNyArNTQxLDkgQEAgc3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0 cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwKIAl9CiAJc3ViX2ZyYWdfbWVtX2xp bWl0KHFwLT5xLm5ldCwgaGVhZC0+dHJ1ZXNpemUpOwogCisJKm5leHRwID0gTlVMTDsKIAloZWFk LT5uZXh0ID0gTlVMTDsKKwloZWFkLT5wcmV2ID0gTlVMTDsKIAloZWFkLT5kZXYgPSBkZXY7CiAJ aGVhZC0+dHN0YW1wID0gcXAtPnEuc3RhbXA7CiAJSVBDQihoZWFkKS0+ZnJhZ19tYXhfc2l6ZSA9 IG1heChxcC0+bWF4X2RmX3NpemUsIHFwLT5xLm1heF9zaXplKTsKQEAgLTU1Miw2ICs1NzEsNyBA QCBzdGF0aWMgaW50IGlwX2ZyYWdfcmVhc20oc3RydWN0IGlwcSAqcXAsIHN0cnVjdCBza19idWZm ICpwcmV2LAogCiAJSVBfSU5DX1NUQVRTX0JIKG5ldCwgSVBTVEFUU19NSUJfUkVBU01PS1MpOwog CXFwLT5xLmZyYWdtZW50cyA9IE5VTEw7CisJcXAtPnEucmJfZnJhZ21lbnRzID0gUkJfUk9PVDsK IAlxcC0+cS5mcmFnbWVudHNfdGFpbCA9IE5VTEw7CiAJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBh L25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyBiL25ldC9pcHY2L25ldGZp bHRlci9uZl9jb25udHJhY2tfcmVhc20uYwppbmRleCBjYjcyMjM5ZGNmZjcuLjVjZTU5MWFlZjQ2 ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCisr KyBiL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwpAQCAtNDQ1LDYgKzQ0 NSw3IEBAIG5mX2N0X2ZyYWc2X3JlYXNtKHN0cnVjdCBmcmFnX3F1ZXVlICpmcSwgc3RydWN0IG5l dF9kZXZpY2UgKmRldikKIAkJCQkJICBoZWFkLT5jc3VtKTsKIAogCWZxLT5xLmZyYWdtZW50cyA9 IE5VTEw7CisJZnEtPnEucmJfZnJhZ21lbnRzID0gUkJfUk9PVDsKIAlmcS0+cS5mcmFnbWVudHNf dGFpbCA9IE5VTEw7CiAKIAkvKiBhbGwgb3JpZ2luYWwgc2ticyBhcmUgbGlua2VkIGludG8gdGhl IE5GQ1RfRlJBRzZfQ0IoaGVhZCkub3JpZyAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVhc3Nl bWJseS5jIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IDNjYmNmMDk5ZjZiMi4uZWM5MTdm NThkMTA1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMKKysrIGIvbmV0L2lwdjYv cmVhc3NlbWJseS5jCkBAIC00NjUsNiArNDY1LDcgQEAgc3RhdGljIGludCBpcDZfZnJhZ19yZWFz bShzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnEsIHN0cnVjdCBza19idWZmICpwcmV2LAogCUlQNl9JTkNf U1RBVFNfQkgobmV0LCBfX2luNl9kZXZfZ2V0KGRldiksIElQU1RBVFNfTUlCX1JFQVNNT0tTKTsK IAlyY3VfcmVhZF91bmxvY2soKTsKIAlmcS0+cS5mcmFnbWVudHMgPSBOVUxMOworCWZxLT5xLnJi X2ZyYWdtZW50cyA9IFJCX1JPT1Q7CiAJZnEtPnEuZnJhZ21lbnRzX3RhaWwgPSBOVUxMOwogCXJl dHVybiAxOwogCgpGcm9tIGMwNzkwMTQ0ZGE5NzhkNGRjMTA4OTFlMjQ1YjFkNGNmNzI1MTYyYjQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBldGVyIE9za29sa292IDxwb3NrQGdvb2ds ZS5jb20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6MzA6MTQgLTA3MDAKU3ViamVjdDogWzI3 LzMzXSBpcDogYWRkIGhlbHBlcnMgdG8gcHJvY2VzcyBpbi1vcmRlciBmcmFnbWVudHMgZmFzdGVy LgoKY29tbWl0IDM1M2M5Y2IzNjA4NzRlNzM3ZmIwMDA1NDVmNzgzZGY3NTZjMDZmOWEgdXBzdHJl YW0uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgc2V2ZXJhbCBoZWxwZXIgZnVuY3Rpb25zL21hY3Jv cyB0aGF0IHdpbGwgYmUKdXNlZCBpbiB0aGUgZm9sbG93LXVwIHBhdGNoLiBObyBydW50aW1lIGNo YW5nZXMgeWV0LgoKVGhlIG5ldyBsb2dpYyAoZnVsbHkgaW1wbGVtZW50ZWQgaW4gdGhlIHNlY29u ZCBwYXRjaCkgaXMgYXMgZm9sbG93czoKCiogTm9kZXMgaW4gdGhlIHJiLXRyZWUgd2lsbCBub3cg Y29udGFpbiBub3Qgc2luZ2xlIGZyYWdtZW50cywgYnV0IGxpc3RzCiAgb2YgY29uc2VjdXRpdmUg ZnJhZ21lbnRzICgicnVucyIpLgoKKiBBdCBlYWNoIHBvaW50IGluIHRpbWUsIHRoZSBjdXJyZW50 ICJhY3RpdmUiIHJ1biBhdCB0aGUgdGFpbCBpcwogIG1haW50YWluZWQvdHJhY2tlZC4gRnJhZ21l bnRzIHRoYXQgYXJyaXZlIGluLW9yZGVyLCBhZGphY2VudAogIHRvIHRoZSBwcmV2aW91cyB0YWls IGZyYWdtZW50LCBhcmUgYWRkZWQgdG8gdGhpcyB0YWlsIHJ1biB3aXRob3V0CiAgdHJpZ2dlcmlu ZyB0aGUgcmUtYmFsYW5jaW5nIG9mIHRoZSByYi10cmVlLgoKKiBJZiBhIGZyYWdtZW50IGFycml2 ZXMgb3V0IG9mIG9yZGVyIHdpdGggdGhlIG9mZnNldCBfYmVmb3JlXyB0aGUgdGFpbCBydW4sCiAg aXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgcmItdHJlZSBhcyBhIHNpbmdsZSBmcmFnbWVudC4KCiog SWYgYSBmcmFnbWVudCBhcnJpdmVzIGFmdGVyIHRoZSBjdXJyZW50IHRhaWwgZnJhZ21lbnQgKHdp dGggYSBnYXApLAogIGl0IHN0YXJ0cyBhIG5ldyAidGFpbCIgcnVuLCBhcyBpcyBpbnNlcnRlZCBp bnRvIHRoZSByYi10cmVlCiAgYXQgdGhlIGVuZCBhcyB0aGUgaGVhZCBvZiB0aGUgbmV3IHJ1bi4K CnNrYi0+Y2IgaXMgdXNlZCB0byBzdG9yZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCm5lZWRlZCBo ZXJlIChzdWdnZXN0ZWQgYnkgRXJpYyBEdW1hemV0KS4KClJlcG9ydGVkLWJ5OiBXaWxsZW0gZGUg QnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIE9za29sa292 IDxwb3NrQGdvb2dsZS5jb20+CkNjOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ CkNjOiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9h aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogQmVu IEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogaW5jbHVkZS9u ZXQvaW5ldF9mcmFnLmggfCAgNiArKysrCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jICB8IDczICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRf ZnJhZy5oIGIvaW5jbHVkZS9uZXQvaW5ldF9mcmFnLmgKaW5kZXggNWZkOGU3NmRjZDI2Li42MjYw ZWMxNDYxNDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2luZXRfZnJhZy5oCisrKyBiL2luY2x1 ZGUvbmV0L2luZXRfZnJhZy5oCkBAIC01NSw3ICs1NSw5IEBAIHN0cnVjdCBmcmFnX3Y2X2NvbXBh cmVfa2V5IHsKICAqIEBsb2NrOiBzcGlubG9jayBwcm90ZWN0aW5nIHRoaXMgZnJhZwogICogQHJl ZmNudDogcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBxdWV1ZQogICogQGZyYWdtZW50czogcmVjZWl2 ZWQgZnJhZ21lbnRzIGhlYWQKKyAqIEByYl9mcmFnbWVudHM6IHJlY2VpdmVkIGZyYWdtZW50cyBy Yi10cmVlIHJvb3QKICAqIEBmcmFnbWVudHNfdGFpbDogcmVjZWl2ZWQgZnJhZ21lbnRzIHRhaWwK KyAqIEBsYXN0X3J1bl9oZWFkOiB0aGUgaGVhZCBvZiB0aGUgbGFzdCAicnVuIi4gc2VlIGlwX2Zy YWdtZW50LmMKICAqIEBzdGFtcDogdGltZXN0YW1wIG9mIHRoZSBsYXN0IHJlY2VpdmVkIGZyYWdt ZW50CiAgKiBAbGVuOiB0b3RhbCBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIGRhdGFncmFtCiAgKiBA bWVhdDogbGVuZ3RoIG9mIHJlY2VpdmVkIGZyYWdtZW50cyBzbyBmYXIKQEAgLTc2LDYgKzc4LDcg QEAgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSB7CiAJc3RydWN0IHNrX2J1ZmYJCSpmcmFnbWVudHM7 ICAvKiBVc2VkIGluIElQdjYuICovCiAJc3RydWN0IHJiX3Jvb3QJCXJiX2ZyYWdtZW50czsgLyog VXNlZCBpbiBJUHY0LiAqLwogCXN0cnVjdCBza19idWZmCQkqZnJhZ21lbnRzX3RhaWw7CisJc3Ry dWN0IHNrX2J1ZmYJCSpsYXN0X3J1bl9oZWFkOwogCWt0aW1lX3QJCQlzdGFtcDsKIAlpbnQJCQls ZW47CiAJaW50CQkJbWVhdDsKQEAgLTExMiw2ICsxMTUsOSBAQCB2b2lkIGluZXRfZnJhZ19raWxs KHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEpOwogdm9pZCBpbmV0X2ZyYWdfZGVzdHJveShzdHJ1 Y3QgaW5ldF9mcmFnX3F1ZXVlICpxKTsKIHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmluZXRfZnJh Z19maW5kKHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIHZvaWQgKmtleSk7CiAKKy8qIEZyZWUgYWxs IHNrYnMgaW4gdGhlIHF1ZXVlOyByZXR1cm4gdGhlIHN1bSBvZiB0aGVpciB0cnVlc2l6ZXMuICov Cit1bnNpZ25lZCBpbnQgaW5ldF9mcmFnX3JidHJlZV9wdXJnZShzdHJ1Y3QgcmJfcm9vdCAqcm9v dCk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2ZyYWdfcHV0KHN0cnVjdCBpbmV0X2ZyYWdf cXVldWUgKnEpCiB7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJnEtPnJlZmNudCkpCmRpZmYg LS1naXQgYS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jIGIvbmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpp bmRleCAyNzA3OTI3NzY0MDMuLmEzMmQ0ZTNjOTlmMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBf ZnJhZ21lbnQuYworKysgYi9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCkBAIC01OCw2ICs1OCw1NyBA QAogc3RhdGljIGludCBzeXNjdGxfaXBmcmFnX21heF9kaXN0IF9fcmVhZF9tb3N0bHkgPSA2NDsK IHN0YXRpYyBjb25zdCBjaGFyIGlwX2ZyYWdfY2FjaGVfbmFtZVtdID0gImlwNC1mcmFncyI7CiAK Ky8qIFVzZSBza2ItPmNiIHRvIHRyYWNrIGNvbnNlY3V0aXZlL2FkamFjZW50IGZyYWdtZW50cyBj b21pbmcgYXQKKyAqIHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiBOb2RlcyBpbiB0aGUgcmItdHJlZSBx dWV1ZSB3aWxsCisgKiBjb250YWluICJydW5zIiBvZiBvbmUgb3IgbW9yZSBhZGphY2VudCBmcmFn bWVudHMuCisgKgorICogSW52YXJpYW50czoKKyAqIC0gbmV4dF9mcmFnIGlzIE5VTEwgYXQgdGhl IHRhaWwgb2YgYSAicnVuIjsKKyAqIC0gdGhlIGhlYWQgb2YgYSAicnVuIiBoYXMgdGhlIHN1bSBv ZiBhbGwgZnJhZ21lbnQgbGVuZ3RocyBpbiBmcmFnX3J1bl9sZW4uCisgKi8KK3N0cnVjdCBpcGZy YWdfc2tiX2NiIHsKKwlzdHJ1Y3QgaW5ldF9za2JfcGFybQloOworCXN0cnVjdCBza19idWZmCQkq bmV4dF9mcmFnOworCWludAkJCWZyYWdfcnVuX2xlbjsKK307CisKKyNkZWZpbmUgRlJBR19DQihz a2IpCQkoKHN0cnVjdCBpcGZyYWdfc2tiX2NiICopKChza2IpLT5jYikpCisKK3N0YXRpYyB2b2lk IGlwNF9mcmFnX2luaXRfcnVuKHN0cnVjdCBza19idWZmICpza2IpCit7CisJQlVJTERfQlVHX09O KHNpemVvZihzdHJ1Y3QgaXBmcmFnX3NrYl9jYikgPiBzaXplb2Yoc2tiLT5jYikpOworCisJRlJB R19DQihza2IpLT5uZXh0X2ZyYWcgPSBOVUxMOworCUZSQUdfQ0Ioc2tiKS0+ZnJhZ19ydW5fbGVu ID0gc2tiLT5sZW47Cit9CisKKy8qIEFwcGVuZCBza2IgdG8gdGhlIGxhc3QgInJ1biIuICovCitz dGF0aWMgdm9pZCBpcDRfZnJhZ19hcHBlbmRfdG9fbGFzdF9ydW4oc3RydWN0IGluZXRfZnJhZ19x dWV1ZSAqcSwKKwkJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlSQl9DTEVBUl9OT0RFKCZz a2ItPnJibm9kZSk7CisJRlJBR19DQihza2IpLT5uZXh0X2ZyYWcgPSBOVUxMOworCisJRlJBR19D QihxLT5sYXN0X3J1bl9oZWFkKS0+ZnJhZ19ydW5fbGVuICs9IHNrYi0+bGVuOworCUZSQUdfQ0Io cS0+ZnJhZ21lbnRzX3RhaWwpLT5uZXh0X2ZyYWcgPSBza2I7CisJcS0+ZnJhZ21lbnRzX3RhaWwg PSBza2I7Cit9CisKKy8qIENyZWF0ZSBhIG5ldyAicnVuIiB3aXRoIHRoZSBza2IuICovCitzdGF0 aWMgdm9pZCBpcDRfZnJhZ19jcmVhdGVfcnVuKHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEsIHN0 cnVjdCBza19idWZmICpza2IpCit7CisJaWYgKHEtPmxhc3RfcnVuX2hlYWQpCisJCXJiX2xpbmtf bm9kZSgmc2tiLT5yYm5vZGUsICZxLT5sYXN0X3J1bl9oZWFkLT5yYm5vZGUsCisJCQkgICAgICZx LT5sYXN0X3J1bl9oZWFkLT5yYm5vZGUucmJfcmlnaHQpOworCWVsc2UKKwkJcmJfbGlua19ub2Rl KCZza2ItPnJibm9kZSwgTlVMTCwgJnEtPnJiX2ZyYWdtZW50cy5yYl9ub2RlKTsKKwlyYl9pbnNl cnRfY29sb3IoJnNrYi0+cmJub2RlLCAmcS0+cmJfZnJhZ21lbnRzKTsKKworCWlwNF9mcmFnX2lu aXRfcnVuKHNrYik7CisJcS0+ZnJhZ21lbnRzX3RhaWwgPSBza2I7CisJcS0+bGFzdF9ydW5faGVh ZCA9IHNrYjsKK30KKwogLyogRGVzY3JpYmUgYW4gZW50cnkgaW4gdGhlICJpbmNvbXBsZXRlIGRh dGFncmFtcyIgcXVldWUuICovCiBzdHJ1Y3QgaXBxIHsKIAlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVl IHE7CkBAIC02NTgsNiArNzA5LDI4IEBAIHN0cnVjdCBza19idWZmICppcF9jaGVja19kZWZyYWco c3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdXNlcikKIH0KIEVYUE9S VF9TWU1CT0woaXBfY2hlY2tfZGVmcmFnKTsKIAordW5zaWduZWQgaW50IGluZXRfZnJhZ19yYnRy ZWVfcHVyZ2Uoc3RydWN0IHJiX3Jvb3QgKnJvb3QpCit7CisJc3RydWN0IHJiX25vZGUgKnAgPSBy Yl9maXJzdChyb290KTsKKwl1bnNpZ25lZCBpbnQgc3VtID0gMDsKKworCXdoaWxlIChwKSB7CisJ CXN0cnVjdCBza19idWZmICpza2IgPSByYl9lbnRyeShwLCBzdHJ1Y3Qgc2tfYnVmZiwgcmJub2Rl KTsKKworCQlwID0gcmJfbmV4dChwKTsKKwkJcmJfZXJhc2UoJnNrYi0+cmJub2RlLCByb290KTsK KwkJd2hpbGUgKHNrYikgeworCQkJc3RydWN0IHNrX2J1ZmYgKm5leHQgPSBGUkFHX0NCKHNrYikt Pm5leHRfZnJhZzsKKworCQkJc3VtICs9IHNrYi0+dHJ1ZXNpemU7CisJCQlrZnJlZV9za2Ioc2ti KTsKKwkJCXNrYiA9IG5leHQ7CisJCX0KKwl9CisJcmV0dXJuIHN1bTsKK30KK0VYUE9SVF9TWU1C T0woaW5ldF9mcmFnX3JidHJlZV9wdXJnZSk7CisKICNpZmRlZiBDT05GSUdfU1lTQ1RMCiBzdGF0 aWMgaW50IGRpc3RfbWluOwogCgpGcm9tIDViZmI2ZjVmNzE1Mjk0ZTZhZjZlNzZhOTJlYzIyYjdj MzMzY2I5ZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBldGVyIE9za29sa292IDxw b3NrQGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTAgT2N0IDIwMTggMTI6MzA6MTUgLTA3MDAKU3Vi amVjdDogWzI4LzMzXSBpcDogcHJvY2VzcyBpbi1vcmRlciBmcmFnbWVudHMgZWZmaWNpZW50bHkK CmNvbW1pdCBhNGZkMjg0YTFmOGZkNGI2YzU5YWE1OWRiMjE4NWIxZTE3YzVjMTFjIHVwc3RyZWFt LgoKVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBydW50aW1lIGJlaGF2aW9yIG9mIElQIGRlZnJhZyBx dWV1ZToKaW5jb21pbmcgaW4tb3JkZXIgZnJhZ21lbnRzIGFyZSBhZGRlZCB0byB0aGUgZW5kIG9m IHRoZSBjdXJyZW50Cmxpc3QvInJ1biIgb2YgaW4tb3JkZXIgZnJhZ21lbnRzIGF0IHRoZSB0YWls LgoKT24gc29tZSB3b3JrbG9hZHMsIFVEUCBzdHJlYW0gcGVyZm9ybWFuY2UgaXMgc3Vic3RhbnRp YWxseSBpbXByb3ZlZDoKClJYOiAuL3VkcF9zdHJlYW0gLUYgMTAgLVQgMiAtbCA2MApUWDogLi91 ZHBfc3RyZWFtIC1jIC1IIDxob3N0PiAtRiAxMCAtVCA1IC1sIDYwCgp3aXRoIHRoaXMgcGF0Y2hz ZXQgYXBwbGllZCBvbiBhIDEwR2JwcyByZWNlaXZlcjoKCiAgdGhyb3VnaHB1dD05NTI0LjE4CiAg dGhyb3VnaHB1dF91bml0cz1NYml0L3MKCnVwc3RyZWFtIChuZXQtbmV4dCk6CgogIHRocm91Z2hw dXQ9NDYwOC45MwogIHRocm91Z2hwdXRfdW5pdHM9TWJpdC9zCgpSZXBvcnRlZC1ieTogV2lsbGVt IGRlIEJydWlqbiA8d2lsbGVtYkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBPc2tv bGtvdiA8cG9za0Bnb29nbGUuY29tPgpDYzogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUu Y29tPgpDYzogRmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6 IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9p cHY0L2luZXRfZnJhZ21lbnQuYyB8ICAgMiArLQogbmV0L2lwdjQvaXBfZnJhZ21lbnQuYyAgIHwg MTEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYwpp bmRleCAwMmQzOTk2MThiOGYuLmI2Y2I5OTU4YjM0ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5l dF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2luZXRfZnJhZ21lbnQuYwpAQCAtMTUzLDcgKzE1 Myw3IEBAIHZvaWQgaW5ldF9mcmFnX2Rlc3Ryb3koc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSkK IAkJCWZwID0geHA7CiAJCX0gd2hpbGUgKGZwKTsKIAl9IGVsc2UgewotCQlzdW1fdHJ1ZXNpemUg PSBza2JfcmJ0cmVlX3B1cmdlKCZxLT5yYl9mcmFnbWVudHMpOworCQlzdW1fdHJ1ZXNpemUgPSBp bmV0X2ZyYWdfcmJ0cmVlX3B1cmdlKCZxLT5yYl9mcmFnbWVudHMpOwogCX0KIAlzdW0gPSBzdW1f dHJ1ZXNpemUgKyBmLT5xc2l6ZTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZnJhZ21lbnQu YyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKaW5kZXggYTMyZDRlM2M5OWYyLi4zZjZjMTcwYjQw ZTEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKKysrIGIvbmV0L2lwdjQvaXBf ZnJhZ21lbnQuYwpAQCAtMTI3LDggKzEyNyw4IEBAIHN0YXRpYyB1OCBpcDRfZnJhZ19lY24odTgg dG9zKQogCiBzdGF0aWMgc3RydWN0IGluZXRfZnJhZ3MgaXA0X2ZyYWdzOwogCi1zdGF0aWMgaW50 IGlwX2ZyYWdfcmVhc20oc3RydWN0IGlwcSAqcXAsIHN0cnVjdCBza19idWZmICpwcmV2LAotCQkJ IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworc3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0cnVj dCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJIHN0cnVjdCBza19idWZmICpwcmV2 X3RhaWwsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogCiAKIHN0YXRpYyB2b2lkIGlwNF9mcmFn X2luaXQoc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwgY29uc3Qgdm9pZCAqYSkKQEAgLTIxOSw3 ICsyMTksMTIgQEAgc3RhdGljIHZvaWQgaXBfZXhwaXJlKHVuc2lnbmVkIGxvbmcgYXJnKQogCQlo ZWFkID0gc2tiX3JiX2ZpcnN0KCZxcC0+cS5yYl9mcmFnbWVudHMpOwogCQlpZiAoIWhlYWQpCiAJ CQlnb3RvIG91dDsKLQkJcmJfZXJhc2UoJmhlYWQtPnJibm9kZSwgJnFwLT5xLnJiX2ZyYWdtZW50 cyk7CisJCWlmIChGUkFHX0NCKGhlYWQpLT5uZXh0X2ZyYWcpCisJCQlyYl9yZXBsYWNlX25vZGUo JmhlYWQtPnJibm9kZSwKKwkJCQkJJkZSQUdfQ0IoaGVhZCktPm5leHRfZnJhZy0+cmJub2RlLAor CQkJCQkmcXAtPnEucmJfZnJhZ21lbnRzKTsKKwkJZWxzZQorCQkJcmJfZXJhc2UoJmhlYWQtPnJi bm9kZSwgJnFwLT5xLnJiX2ZyYWdtZW50cyk7CiAJCW1lbXNldCgmaGVhZC0+cmJub2RlLCAwLCBz aXplb2YoaGVhZC0+cmJub2RlKSk7CiAJCWJhcnJpZXIoKTsKIAl9CkBAIC0zMjAsNyArMzI1LDcg QEAgc3RhdGljIGludCBpcF9mcmFnX3JlaW5pdChzdHJ1Y3QgaXBxICpxcCkKIAkJcmV0dXJuIC1F VElNRURPVVQ7CiAJfQogCi0Jc3VtX3RydWVzaXplID0gc2tiX3JidHJlZV9wdXJnZSgmcXAtPnEu cmJfZnJhZ21lbnRzKTsKKwlzdW1fdHJ1ZXNpemUgPSBpbmV0X2ZyYWdfcmJ0cmVlX3B1cmdlKCZx cC0+cS5yYl9mcmFnbWVudHMpOwogCXN1Yl9mcmFnX21lbV9saW1pdChxcC0+cS5uZXQsIHN1bV90 cnVlc2l6ZSk7CiAKIAlxcC0+cS5mbGFncyA9IDA7CkBAIC0zMjksNiArMzM0LDcgQEAgc3RhdGlj IGludCBpcF9mcmFnX3JlaW5pdChzdHJ1Y3QgaXBxICpxcCkKIAlxcC0+cS5mcmFnbWVudHMgPSBO VUxMOwogCXFwLT5xLnJiX2ZyYWdtZW50cyA9IFJCX1JPT1Q7CiAJcXAtPnEuZnJhZ21lbnRzX3Rh aWwgPSBOVUxMOworCXFwLT5xLmxhc3RfcnVuX2hlYWQgPSBOVUxMOwogCXFwLT5paWYgPSAwOwog CXFwLT5lY24gPSAwOwogCkBAIC0zNDAsNyArMzQ2LDcgQEAgc3RhdGljIGludCBpcF9mcmFnX3F1 ZXVlKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBuZXQg Km5ldCA9IGNvbnRhaW5lcl9vZihxcC0+cS5uZXQsIHN0cnVjdCBuZXQsIGlwdjQuZnJhZ3MpOwog CXN0cnVjdCByYl9ub2RlICoqcmJuLCAqcGFyZW50OwotCXN0cnVjdCBza19idWZmICpza2IxOwor CXN0cnVjdCBza19idWZmICpza2IxLCAqcHJldl90YWlsOwogCXN0cnVjdCBuZXRfZGV2aWNlICpk ZXY7CiAJdW5zaWduZWQgaW50IGZyYWdzaXplOwogCWludCBmbGFncywgb2Zmc2V0OwpAQCAtNDE4 LDM4ICs0MjQsNDEgQEAgc3RhdGljIGludCBpcF9mcmFnX3F1ZXVlKHN0cnVjdCBpcHEgKnFwLCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqLwogCiAJLyogRmluZCBvdXQgd2hlcmUgdG8gcHV0IHRo aXMgZnJhZ21lbnQuICAqLwotCXNrYjEgPSBxcC0+cS5mcmFnbWVudHNfdGFpbDsKLQlpZiAoIXNr YjEpIHsKLQkJLyogVGhpcyBpcyB0aGUgZmlyc3QgZnJhZ21lbnQgd2UndmUgcmVjZWl2ZWQuICov Ci0JCXJiX2xpbmtfbm9kZSgmc2tiLT5yYm5vZGUsIE5VTEwsICZxcC0+cS5yYl9mcmFnbWVudHMu cmJfbm9kZSk7Ci0JCXFwLT5xLmZyYWdtZW50c190YWlsID0gc2tiOwotCX0gZWxzZSBpZiAoKHNr YjEtPmlwX2RlZnJhZ19vZmZzZXQgKyBza2IxLT5sZW4pIDwgZW5kKSB7Ci0JCS8qIFRoaXMgaXMg dGhlIGNvbW1vbi9zcGVjaWFsIGNhc2U6IHNrYiBnb2VzIHRvIHRoZSBlbmQuICovCisJcHJldl90 YWlsID0gcXAtPnEuZnJhZ21lbnRzX3RhaWw7CisJaWYgKCFwcmV2X3RhaWwpCisJCWlwNF9mcmFn X2NyZWF0ZV9ydW4oJnFwLT5xLCBza2IpOyAgLyogRmlyc3QgZnJhZ21lbnQuICovCisJZWxzZSBp ZiAocHJldl90YWlsLT5pcF9kZWZyYWdfb2Zmc2V0ICsgcHJldl90YWlsLT5sZW4gPCBlbmQpIHsK KwkJLyogVGhpcyBpcyB0aGUgY29tbW9uIGNhc2U6IHNrYiBnb2VzIHRvIHRoZSBlbmQuICovCiAJ CS8qIERldGVjdCBhbmQgZGlzY2FyZCBvdmVybGFwcy4gKi8KLQkJaWYgKG9mZnNldCA8IChza2Ix LT5pcF9kZWZyYWdfb2Zmc2V0ICsgc2tiMS0+bGVuKSkKKwkJaWYgKG9mZnNldCA8IHByZXZfdGFp bC0+aXBfZGVmcmFnX29mZnNldCArIHByZXZfdGFpbC0+bGVuKQogCQkJZ290byBkaXNjYXJkX3Fw OwotCQkvKiBJbnNlcnQgYWZ0ZXIgc2tiMS4gKi8KLQkJcmJfbGlua19ub2RlKCZza2ItPnJibm9k ZSwgJnNrYjEtPnJibm9kZSwgJnNrYjEtPnJibm9kZS5yYl9yaWdodCk7Ci0JCXFwLT5xLmZyYWdt ZW50c190YWlsID0gc2tiOworCQlpZiAob2Zmc2V0ID09IHByZXZfdGFpbC0+aXBfZGVmcmFnX29m ZnNldCArIHByZXZfdGFpbC0+bGVuKQorCQkJaXA0X2ZyYWdfYXBwZW5kX3RvX2xhc3RfcnVuKCZx cC0+cSwgc2tiKTsKKwkJZWxzZQorCQkJaXA0X2ZyYWdfY3JlYXRlX3J1bigmcXAtPnEsIHNrYik7 CiAJfSBlbHNlIHsKLQkJLyogQmluYXJ5IHNlYXJjaC4gTm90ZSB0aGF0IHNrYiBjYW4gYmVjb21l IHRoZSBmaXJzdCBmcmFnbWVudCwgYnV0Ci0JCSAqIG5vdCB0aGUgbGFzdCAoY292ZXJlZCBhYm92 ZSkuICovCisJCS8qIEJpbmFyeSBzZWFyY2guIE5vdGUgdGhhdCBza2IgY2FuIGJlY29tZSB0aGUg Zmlyc3QgZnJhZ21lbnQsCisJCSAqIGJ1dCBub3QgdGhlIGxhc3QgKGNvdmVyZWQgYWJvdmUpLgor CQkgKi8KIAkJcmJuID0gJnFwLT5xLnJiX2ZyYWdtZW50cy5yYl9ub2RlOwogCQlkbyB7CiAJCQlw YXJlbnQgPSAqcmJuOwogCQkJc2tiMSA9IHJiX3RvX3NrYihwYXJlbnQpOwogCQkJaWYgKGVuZCA8 PSBza2IxLT5pcF9kZWZyYWdfb2Zmc2V0KQogCQkJCXJibiA9ICZwYXJlbnQtPnJiX2xlZnQ7Ci0J CQllbHNlIGlmIChvZmZzZXQgPj0gc2tiMS0+aXBfZGVmcmFnX29mZnNldCArIHNrYjEtPmxlbikK KwkJCWVsc2UgaWYgKG9mZnNldCA+PSBza2IxLT5pcF9kZWZyYWdfb2Zmc2V0ICsKKwkJCQkJCUZS QUdfQ0Ioc2tiMSktPmZyYWdfcnVuX2xlbikKIAkJCQlyYm4gPSAmcGFyZW50LT5yYl9yaWdodDsK IAkJCWVsc2UgLyogRm91bmQgYW4gb3ZlcmxhcCB3aXRoIHNrYjEuICovCiAJCQkJZ290byBkaXNj YXJkX3FwOwogCQl9IHdoaWxlICgqcmJuKTsKIAkJLyogSGVyZSB3ZSBoYXZlIHBhcmVudCBwcm9w ZXJseSBzZXQsIGFuZCByYm4gcG9pbnRpbmcgdG8KLQkJICogb25lIG9mIGl0cyBOVUxMIGxlZnQv cmlnaHQgY2hpbGRyZW4uIEluc2VydCBza2IuICovCisJCSAqIG9uZSBvZiBpdHMgTlVMTCBsZWZ0 L3JpZ2h0IGNoaWxkcmVuLiBJbnNlcnQgc2tiLgorCQkgKi8KKwkJaXA0X2ZyYWdfaW5pdF9ydW4o c2tiKTsKIAkJcmJfbGlua19ub2RlKCZza2ItPnJibm9kZSwgcGFyZW50LCByYm4pOworCQlyYl9p bnNlcnRfY29sb3IoJnNrYi0+cmJub2RlLCAmcXAtPnEucmJfZnJhZ21lbnRzKTsKIAl9Ci0JcmJf aW5zZXJ0X2NvbG9yKCZza2ItPnJibm9kZSwgJnFwLT5xLnJiX2ZyYWdtZW50cyk7CiAKIAlpZiAo ZGV2KQogCQlxcC0+aWlmID0gZGV2LT5pZmluZGV4OwpAQCAtNDc2LDcgKzQ4NSw3IEBAIHN0YXRp YyBpbnQgaXBfZnJhZ19xdWV1ZShzdHJ1Y3QgaXBxICpxcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikK IAkJdW5zaWduZWQgbG9uZyBvcmVmZHN0ID0gc2tiLT5fc2tiX3JlZmRzdDsKIAogCQlza2ItPl9z a2JfcmVmZHN0ID0gMFVMOwotCQllcnIgPSBpcF9mcmFnX3JlYXNtKHFwLCBza2IsIGRldik7CisJ CWVyciA9IGlwX2ZyYWdfcmVhc20ocXAsIHNrYiwgcHJldl90YWlsLCBkZXYpOwogCQlza2ItPl9z a2JfcmVmZHN0ID0gb3JlZmRzdDsKIAkJcmV0dXJuIGVycjsKIAl9CkBAIC00OTUsNyArNTA0LDcg QEAgZXJyOgogCiAvKiBCdWlsZCBhIG5ldyBJUCBkYXRhZ3JhbSBmcm9tIGFsbCBpdHMgZnJhZ21l bnRzLiAqLwogc3RhdGljIGludCBpcF9mcmFnX3JlYXNtKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAotCQkJIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCisJCQkgc3RydWN0IHNr X2J1ZmYgKnByZXZfdGFpbCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgbmV0 ICpuZXQgPSBjb250YWluZXJfb2YocXAtPnEubmV0LCBzdHJ1Y3QgbmV0LCBpcHY0LmZyYWdzKTsK IAlzdHJ1Y3QgaXBoZHIgKmlwaDsKQEAgLTUxOSwxMCArNTI4LDE2IEBAIHN0YXRpYyBpbnQgaXBf ZnJhZ19yZWFzbShzdHJ1Y3QgaXBxICpxcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZnAgPSBz a2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKIAkJaWYgKCFmcCkKIAkJCWdvdG8gb3V0X25vbWVt OwotCQlyYl9yZXBsYWNlX25vZGUoJnNrYi0+cmJub2RlLCAmZnAtPnJibm9kZSwgJnFwLT5xLnJi X2ZyYWdtZW50cyk7CisJCUZSQUdfQ0IoZnApLT5uZXh0X2ZyYWcgPSBGUkFHX0NCKHNrYiktPm5l eHRfZnJhZzsKKwkJaWYgKFJCX0VNUFRZX05PREUoJnNrYi0+cmJub2RlKSkKKwkJCUZSQUdfQ0Io cHJldl90YWlsKS0+bmV4dF9mcmFnID0gZnA7CisJCWVsc2UKKwkJCXJiX3JlcGxhY2Vfbm9kZSgm c2tiLT5yYm5vZGUsICZmcC0+cmJub2RlLAorCQkJCQkmcXAtPnEucmJfZnJhZ21lbnRzKTsKIAkJ aWYgKHFwLT5xLmZyYWdtZW50c190YWlsID09IHNrYikKIAkJCXFwLT5xLmZyYWdtZW50c190YWls ID0gZnA7CiAJCXNrYl9tb3JwaChza2IsIGhlYWQpOworCQlGUkFHX0NCKHNrYiktPm5leHRfZnJh ZyA9IEZSQUdfQ0IoaGVhZCktPm5leHRfZnJhZzsKIAkJcmJfcmVwbGFjZV9ub2RlKCZoZWFkLT5y Ym5vZGUsICZza2ItPnJibm9kZSwKIAkJCQkmcXAtPnEucmJfZnJhZ21lbnRzKTsKIAkJY29uc3Vt ZV9za2IoaGVhZCk7CkBAIC01NTgsNyArNTczLDcgQEAgc3RhdGljIGludCBpcF9mcmFnX3JlYXNt KHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlmb3IgKGkgPSAwOyBpIDwg c2tiX3NoaW5mbyhoZWFkKS0+bnJfZnJhZ3M7IGkrKykKIAkJCXBsZW4gKz0gc2tiX2ZyYWdfc2l6 ZSgmc2tiX3NoaW5mbyhoZWFkKS0+ZnJhZ3NbaV0pOwogCQljbG9uZS0+bGVuID0gY2xvbmUtPmRh dGFfbGVuID0gaGVhZC0+ZGF0YV9sZW4gLSBwbGVuOwotCQlza2ItPnRydWVzaXplICs9IGNsb25l LT50cnVlc2l6ZTsKKwkJaGVhZC0+dHJ1ZXNpemUgKz0gY2xvbmUtPnRydWVzaXplOwogCQljbG9u ZS0+Y3N1bSA9IDA7CiAJCWNsb25lLT5pcF9zdW1tZWQgPSBoZWFkLT5pcF9zdW1tZWQ7CiAJCWFk ZF9mcmFnX21lbV9saW1pdChxcC0+cS5uZXQsIGNsb25lLT50cnVlc2l6ZSk7CkBAIC01NzEsMjQg KzU4NiwzNiBAQCBzdGF0aWMgaW50IGlwX2ZyYWdfcmVhc20oc3RydWN0IGlwcSAqcXAsIHN0cnVj dCBza19idWZmICpza2IsCiAJc2tiX3B1c2goaGVhZCwgaGVhZC0+ZGF0YSAtIHNrYl9uZXR3b3Jr X2hlYWRlcihoZWFkKSk7CiAKIAkvKiBUcmF2ZXJzZSB0aGUgdHJlZSBpbiBvcmRlciwgdG8gYnVp bGQgZnJhZ19saXN0LiAqLworCWZwID0gRlJBR19DQihoZWFkKS0+bmV4dF9mcmFnOwogCXJibiA9 IHJiX25leHQoJmhlYWQtPnJibm9kZSk7CiAJcmJfZXJhc2UoJmhlYWQtPnJibm9kZSwgJnFwLT5x LnJiX2ZyYWdtZW50cyk7Ci0Jd2hpbGUgKHJibikgewotCQlzdHJ1Y3QgcmJfbm9kZSAqcmJuZXh0 ID0gcmJfbmV4dChyYm4pOwotCQlmcCA9IHJiX3RvX3NrYihyYm4pOwotCQlyYl9lcmFzZShyYm4s ICZxcC0+cS5yYl9mcmFnbWVudHMpOwotCQlyYm4gPSByYm5leHQ7Ci0JCSpuZXh0cCA9IGZwOwot CQluZXh0cCA9ICZmcC0+bmV4dDsKLQkJZnAtPnByZXYgPSBOVUxMOwotCQltZW1zZXQoJmZwLT5y Ym5vZGUsIDAsIHNpemVvZihmcC0+cmJub2RlKSk7Ci0JCWhlYWQtPmRhdGFfbGVuICs9IGZwLT5s ZW47Ci0JCWhlYWQtPmxlbiArPSBmcC0+bGVuOwotCQlpZiAoaGVhZC0+aXBfc3VtbWVkICE9IGZw LT5pcF9zdW1tZWQpCi0JCQloZWFkLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwotCQllbHNl IGlmIChoZWFkLT5pcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fQ09NUExFVEUpCi0JCQloZWFkLT5jc3Vt ID0gY3N1bV9hZGQoaGVhZC0+Y3N1bSwgZnAtPmNzdW0pOwotCQloZWFkLT50cnVlc2l6ZSArPSBm cC0+dHJ1ZXNpemU7CisJd2hpbGUgKHJibiB8fCBmcCkgeworCQkvKiBmcCBwb2ludHMgdG8gdGhl IG5leHQgc2tfYnVmZiBpbiB0aGUgY3VycmVudCBydW47CisJCSAqIHJibiBwb2ludHMgdG8gdGhl IG5leHQgcnVuLgorCQkgKi8KKwkJLyogR28gdGhyb3VnaCB0aGUgY3VycmVudCBydW4uICovCisJ CXdoaWxlIChmcCkgeworCQkJKm5leHRwID0gZnA7CisJCQluZXh0cCA9ICZmcC0+bmV4dDsKKwkJ CWZwLT5wcmV2ID0gTlVMTDsKKwkJCW1lbXNldCgmZnAtPnJibm9kZSwgMCwgc2l6ZW9mKGZwLT5y Ym5vZGUpKTsKKwkJCWhlYWQtPmRhdGFfbGVuICs9IGZwLT5sZW47CisJCQloZWFkLT5sZW4gKz0g ZnAtPmxlbjsKKwkJCWlmIChoZWFkLT5pcF9zdW1tZWQgIT0gZnAtPmlwX3N1bW1lZCkKKwkJCQlo ZWFkLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOworCQkJZWxzZSBpZiAoaGVhZC0+aXBfc3Vt bWVkID09IENIRUNLU1VNX0NPTVBMRVRFKQorCQkJCWhlYWQtPmNzdW0gPSBjc3VtX2FkZChoZWFk LT5jc3VtLCBmcC0+Y3N1bSk7CisJCQloZWFkLT50cnVlc2l6ZSArPSBmcC0+dHJ1ZXNpemU7CisJ CQlmcCA9IEZSQUdfQ0IoZnApLT5uZXh0X2ZyYWc7CisJCX0KKwkJLyogTW92ZSB0byB0aGUgbmV4 dCBydW4uICovCisJCWlmIChyYm4pIHsKKwkJCXN0cnVjdCByYl9ub2RlICpyYm5leHQgPSByYl9u ZXh0KHJibik7CisKKwkJCWZwID0gcmJfdG9fc2tiKHJibik7CisJCQlyYl9lcmFzZShyYm4sICZx cC0+cS5yYl9mcmFnbWVudHMpOworCQkJcmJuID0gcmJuZXh0OworCQl9CiAJfQogCXN1Yl9mcmFn X21lbV9saW1pdChxcC0+cS5uZXQsIGhlYWQtPnRydWVzaXplKTsKIApAQCAtNjI0LDYgKzY1MSw3 IEBAIHN0YXRpYyBpbnQgaXBfZnJhZ19yZWFzbShzdHJ1Y3QgaXBxICpxcCwgc3RydWN0IHNrX2J1 ZmYgKnNrYiwKIAlxcC0+cS5mcmFnbWVudHMgPSBOVUxMOwogCXFwLT5xLnJiX2ZyYWdtZW50cyA9 IFJCX1JPT1Q7CiAJcXAtPnEuZnJhZ21lbnRzX3RhaWwgPSBOVUxMOworCXFwLT5xLmxhc3RfcnVu X2hlYWQgPSBOVUxMOwogCXJldHVybiAwOwogCiBvdXRfbm9tZW06CgpGcm9tIGY5MzFiMDM1NWQ5 YzFhMDIwMmIyMzJjMzQ2ZTJjOTU5ZmQxNzY2N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IFRhZWhlZSBZb28gPGFwNDIwMDczQGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAx OCAxMjozMDoxNiAtMDcwMApTdWJqZWN0OiBbMjkvMzNdIGlwOiBmcmFnczogZml4IGNyYXNoIGlu IGlwX2RvX2ZyYWdtZW50KCkKCmNvbW1pdCA1ZDQwN2IwNzFkYzM2OWMyNmEzODM5ODMyNmVlMmJl NTM2NTFjZmU0IHVwc3RyZWFtLgoKQSBrZXJuZWwgY3Jhc2ggb2NjdXJycyB3aGVuIGRlZnJhZ21l bnRlZCBwYWNrZXQgaXMgZnJhZ21lbnRlZAppbiBpcF9kb19mcmFnbWVudCgpLgpJbiBkZWZyYWdt ZW50IHJvdXRpbmUsIHNrYl9vcnBoYW4oKSBpcyBjYWxsZWQgYW5kCnNrYi0+aXBfZGVmcmFnX29m ZnNldCBpcyBzZXQuIGJ1dCBza2ItPnNrIGFuZApza2ItPmlwX2RlZnJhZ19vZmZzZXQgYXJlIHNh bWUgdW5pb24gbWVtYmVyLiBzbyB0aGF0CmZyYWctPnNrIGlzIG5vdCBOVUxMLgpIZW5jZSBjcmFz aCBvY2N1cnJzIGluIHNrYi0+c2sgY2hlY2sgcm91dGluZSBpbiBpcF9kb19mcmFnbWVudCgpIHdo ZW4KZGVmcmFnbWVudGVkIHBhY2tldCBpcyBmcmFnbWVudGVkLgoKdGVzdCBjb21tYW5kczoKICAg JWlwdGFibGVzIC10IG5hdCAtSSBQT1NUUk9VVElORyAtaiBNQVNRVUVSQURFCiAgICVocGluZzMg MTkyLjE2OC40LjIgLXMgMTAwMCAtcCAyMDAwIC1kIDYwMDAwCgpzcGxhdCBsb29rcyBsaWtlOgpb ICAyNjEuMDY5NDI5XSBrZXJuZWwgQlVHIGF0IG5ldC9pcHY0L2lwX291dHB1dC5jOjYzNiEKWyAg MjYxLjA3NTc1M10gaW52YWxpZCBvcGNvZGU6IDAwMDAgWyMxXSBTTVAgREVCVUdfUEFHRUFMTE9D IEtBU0FOIFBUSQpbICAyNjEuMDgzODU0XSBDUFU6IDEgUElEOiAxMzQ5IENvbW06IGhwaW5nMyBO b3QgdGFpbnRlZCA0LjE5LjAtcmMyKyAjMwpbICAyNjEuMTAwOTc3XSBSSVA6IDAwMTA6aXBfZG9f ZnJhZ21lbnQrMHgxNjEzLzB4MjYwMApbICAyNjEuMTA2OTQ1XSBDb2RlOiBlOCBlMiAzOCBlMyBm ZSA0YyA4YiA0NCAyNCAxOCA0OCA4YiA3NCAyNCAwOCBlOSA5MiBmNiBmZiBmZiA4MCAzYyAwMiAw MCAwZiA4NSBkYSAwNyAwMCAwMCA0OCA4YiBiNSBkMCAwMCAwMCAwMCBlOSAyNSBmNiBmZiBmZiA8 MGY+IDBiIDBmIDBiIDQ0IDhiIDU0IDI0IDU4IDRjIDhiIDRjIDI0IDE4IDRjIDhiIDVjIDI0IDYw IDRjIDhiIDZjClsgIDI2MS4xMjcwMTVdIFJTUDogMDAxODpmZmZmODgwMTAzMWNmMmMwIEVGTEFH UzogMDAwMTAyMDIKWyAgMjYxLjEzNDE1Nl0gUkFYOiAxZmZmZjEwMDIyOTc1MzdiIFJCWDogZmZm ZmVkMDAyMDYzOWU2ZSBSQ1g6IDAwMDAwMDAwMDAwMDAwMDQKWyAgMjYxLjE0MjE1Nl0gUkRYOiAw MDAwMDAwMDAwMDAwMDAwIFJTSTogMDAwMDAwMDAwMDAwMDAwMCBSREk6IGZmZmY4ODAxMTRiYTli ZDgKWyAgMjYxLjE1MDE1N10gUkJQOiBmZmZmODgwMTE0YmE4YTQwIFIwODogZmZmZmVkMDAyMjk3 NTM5NSBSMDk6IGZmZmZlZDAwMjI5NzUzOTUKWyAgMjYxLjE1ODE1N10gUjEwOiAwMDAwMDAwMDAw MDAwMDAxIFIxMTogZmZmZmVkMDAyMjk3NTM5NCBSMTI6IGZmZmY4ODAxMTRiYTljYTQKWyAgMjYx LjE2NjE1OV0gUjEzOiAwMDAwMDAwMDAwMDAwMDEwIFIxNDogZmZmZjg4MDExNGJhOWJjMCBSMTU6 IGRmZmZmYzAwMDAwMDAwMDAKWyAgMjYxLjE3NDE2OV0gRlM6ICAwMDAwN2ZiYWUyMTk5NzAwKDAw MDApIEdTOmZmZmY4ODAxMWI0MDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMApbICAy NjEuMTgzMDEyXSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUw MDMzClsgIDI2MS4xODkwMTNdIENSMjogMDAwMDU1NzkyNDRmZTAwMCBDUjM6IDAwMDAwMDAxMTli ZjQwMDAgQ1I0OiAwMDAwMDAwMDAwMTAwNmUwClsgIDI2MS4xOTgxNThdIENhbGwgVHJhY2U6Clsg IDI2MS4xOTkwMThdICA/IGRzdF9vdXRwdXQrMHgxODAvMHgxODAKWyAgMjYxLjIwNTAxMV0gID8g c2F2ZV90cmFjZSsweDMwMC8weDMwMApbICAyNjEuMjA5MDE4XSAgPyBpcF9jb3B5X21ldGFkYXRh KzB4YjAwLzB4YjAwClsgIDI2MS4yMTMwMzRdICA/IHNjaGVkX2Nsb2NrX2xvY2FsKzB4ZDQvMHgx NDAKWyAgMjYxLjIxODE1OF0gID8ga2lsbF9sNHByb3RvKzB4MTIwLzB4MTIwIFtuZl9jb25udHJh Y2tdClsgIDI2MS4yMjMwMTRdICA/IHJ0X2NwdV9zZXFfc3RvcCsweDEwLzB4MTAKWyAgMjYxLjIy NzAxNF0gID8gZmluZF9oZWxkX2xvY2srMHgzOS8weDFjMApbICAyNjEuMjMzMDA4XSAgaXBfZmlu aXNoX291dHB1dCsweDUxZC8weGI1MApbICAyNjEuMjM3MDA2XSAgPyBpcF9mcmFnbWVudC5jb25z dHByb3AuNTYrMHgyMjAvMHgyMjAKWyAgMjYxLjI0MzAxMV0gID8gbmZfY3RfbDRwcm90b19yZWdp c3Rlcl9vbmUrMHg1YjAvMHg1YjAgW25mX2Nvbm50cmFja10KWyAgMjYxLjI1MDE1Ml0gID8gcmN1 X2lzX3dhdGNoaW5nKzB4NzcvMHgxMjAKWyAgMjYxLjI1NTAxMF0gID8gbmZfbmF0X2lwdjRfb3V0 KzB4MWUvMHgyYjAgW25mX25hdF9pcHY0XQpbICAyNjEuMjYxMDMzXSAgPyBuZl9ob29rX3Nsb3cr MHhiMS8weDE2MApbICAyNjEuMjY1MDA3XSAgaXBfb3V0cHV0KzB4MWM3LzB4NzEwClsgIDI2MS4y NjkwMDVdICA/IGlwX21jX291dHB1dCsweDEzZjAvMHgxM2YwClsgIDI2MS4yNzMwMDJdICA/IF9f bG9jYWxfYmhfZW5hYmxlX2lwKzB4ZTkvMHgxYjAKWyAgMjYxLjI3ODE1Ml0gID8gaXBfZnJhZ21l bnQuY29uc3Rwcm9wLjU2KzB4MjIwLzB4MjIwClsgIDI2MS4yODI5OTZdICA/IG5mX2hvb2tfc2xv dysweGIxLzB4MTYwClsgIDI2MS4yODcwMDddICByYXdfc2VuZG1zZysweDIxZjkvMHg0NDIwClsg IDI2MS4yOTEwMDhdICA/IGRzdF9vdXRwdXQrMHgxODAvMHgxODAKWyAgMjYxLjI5NzAwM10gID8g c2NoZWRfY2xvY2tfY3B1KzB4MTI2LzB4MTcwClsgIDI2MS4zMDEwMDNdICA/IGZpbmRfaGVsZF9s b2NrKzB4MzkvMHgxYzAKWyAgMjYxLjMwNjE1NV0gID8gc3RvcF9jcml0aWNhbF90aW1pbmdzKzB4 NDIwLzB4NDIwClsgIDI2MS4zMTEwMDRdICA/IGNoZWNrX2ZsYWdzLnBhcnQuMzYrMHg0NTAvMHg0 NTAKWyAgMjYxLjMxNTAwNV0gID8gX3Jhd19zcGluX3VubG9ja19pcnErMHgyOS8weDQwClsgIDI2 MS4zMjA5OTVdICA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxKzB4MjkvMHg0MApbICAyNjEuMzI2MTQy XSAgPyBjeWMybnNfcmVhZF9lbmQrMHgxMC8weDEwClsgIDI2MS4zMzAxMzldICA/IHJhd19iaW5k KzB4MjgwLzB4MjgwClsgIDI2MS4zMzQxMzhdICA/IHNjaGVkX2Nsb2NrX2NwdSsweDEyNi8weDE3 MApbICAyNjEuMzM4OTk1XSAgPyBjaGVja19mbGFncy5wYXJ0LjM2KzB4NDUwLzB4NDUwClsgIDI2 MS4zNDI5OTFdICA/IF9fbG9ja19hY3F1aXJlKzB4NDUwMC8weDQ1MDAKWyAgMjYxLjM0ODk5NF0g ID8gaW5ldF9zZW5kbXNnKzB4MTFjLzB4NTAwClsgIDI2MS4zNTI5ODldICA/IGRzdF9vdXRwdXQr MHgxODAvMHgxODAKWyAgMjYxLjM1NzAxMl0gIGluZXRfc2VuZG1zZysweDExYy8weDUwMApbIC4u LiBdCgp2MjoKIC0gY2xlYXIgc2tiLT5zayBhdCByZWFzc2VtYmx5IHJvdXRpbmUuKEVyaWMgRHVt YXJ6ZXQpCgpGaXhlczogZmEwZjUyNzM1OGJkICgiaXA6IHVzZSByYiB0cmVlcyBmb3IgSVAgZnJh ZyBxdWV1ZS4iKQpTdWdnZXN0ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNv bT4KU2lnbmVkLW9mZi1ieTogVGFlaGVlIFlvbyA8YXA0MjAwNzNAZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6 IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9p cHY0L2lwX2ZyYWdtZW50LmMgICAgICAgICAgICAgICAgICB8IDEgKwogbmV0L2lwdjYvbmV0Zmls dGVyL25mX2Nvbm50cmFja19yZWFzbS5jIHwgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMgYi9uZXQvaXB2NC9p cF9mcmFnbWVudC5jCmluZGV4IDNmNmMxNzBiNDBlMS4uY2ZhNTIzMzAyODkwIDEwMDY0NAotLS0g YS9uZXQvaXB2NC9pcF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKQEAg LTU5OSw2ICs1OTksNyBAQCBzdGF0aWMgaW50IGlwX2ZyYWdfcmVhc20oc3RydWN0IGlwcSAqcXAs IHN0cnVjdCBza19idWZmICpza2IsCiAJCQluZXh0cCA9ICZmcC0+bmV4dDsKIAkJCWZwLT5wcmV2 ID0gTlVMTDsKIAkJCW1lbXNldCgmZnAtPnJibm9kZSwgMCwgc2l6ZW9mKGZwLT5yYm5vZGUpKTsK KwkJCWZwLT5zayA9IE5VTEw7CiAJCQloZWFkLT5kYXRhX2xlbiArPSBmcC0+bGVuOwogCQkJaGVh ZC0+bGVuICs9IGZwLT5sZW47CiAJCQlpZiAoaGVhZC0+aXBfc3VtbWVkICE9IGZwLT5pcF9zdW1t ZWQpCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMg Yi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKaW5kZXggNWNlNTkxYWVm NDZlLi42NjRjODRlNDdiYWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25u dHJhY2tfcmVhc20uYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNt LmMKQEAgLTQyNyw2ICs0MjcsNyBAQCBuZl9jdF9mcmFnNl9yZWFzbShzdHJ1Y3QgZnJhZ19xdWV1 ZSAqZnEsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCWVsc2UgaWYgKGhlYWQtPmlwX3N1bW1l ZCA9PSBDSEVDS1NVTV9DT01QTEVURSkKIAkJCWhlYWQtPmNzdW0gPSBjc3VtX2FkZChoZWFkLT5j c3VtLCBmcC0+Y3N1bSk7CiAJCWhlYWQtPnRydWVzaXplICs9IGZwLT50cnVlc2l6ZTsKKwkJZnAt PnNrID0gTlVMTDsKIAl9CiAJc3ViX2ZyYWdfbWVtX2xpbWl0KGZxLT5xLm5ldCwgaGVhZC0+dHJ1 ZXNpemUpOwogCgpGcm9tIGM2MjkxN2Y2ZTExMDA3YjllYzZiOWFhY2JhYzhhMjRiYzA2OGE3N2Mg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbiBDYXJwZW50ZXIgPGRhbi5jYXJwZW50 ZXJAb3JhY2xlLmNvbT4KRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAxMjozMDoxNyAtMDcwMApTdWJq ZWN0OiBbMzAvMzNdIGlwdjQ6IGZyYWdzOiBwcmVjZWRlbmNlIGJ1ZyBpbiBpcF9leHBpcmUoKQoK Y29tbWl0IDcwODM3ZmZlMzA4NWM5YTkxNDg4YjUyY2ExM2FjODQ0MjRkYTEwNDIgdXBzdHJlYW0u CgpXZSBhY2NpZGVudGFsbHkgcmVtb3ZlZCB0aGUgcGFyZW50aGVzZXMgaGVyZSwgYnV0IHRoZXkg YXJlIHJlcXVpcmVkCmJlY2F1c2UgJyEnIGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuICcmJy4K CkZpeGVzOiBmYTBmNTI3MzU4YmQgKCJpcDogdXNlIHJiIHRyZWVzIGZvciBJUCBmcmFnIHF1ZXVl LiIpClNpZ25lZC1vZmYtYnk6IERhbiBDYXJwZW50ZXIgPGRhbi5jYXJwZW50ZXJAb3JhY2xlLmNv bT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpT aWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24u b3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGlu ay5jby51az4KLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQv aXBfZnJhZ21lbnQuYyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKaW5kZXggY2ZhNTIzMzAyODkw Li5kYmY4MDQ1YjkxN2YgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKKysrIGIv bmV0L2lwdjQvaXBfZnJhZ21lbnQuYwpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkIGlw X2V4cGlyZSh1bnNpZ25lZCBsb25nIGFyZykKIAlJUF9JTkNfU1RBVFNfQkgobmV0LCBJUFNUQVRT X01JQl9SRUFTTUZBSUxTKTsKIAlJUF9JTkNfU1RBVFNfQkgobmV0LCBJUFNUQVRTX01JQl9SRUFT TVRJTUVPVVQpOwogCi0JaWYgKCFxcC0+cS5mbGFncyAmIElORVRfRlJBR19GSVJTVF9JTikKKwlp ZiAoIShxcC0+cS5mbGFncyAmIElORVRfRlJBR19GSVJTVF9JTikpCiAJCWdvdG8gb3V0OwogCiAJ Lyogc2tfYnVmZjo6ZGV2IGFuZCBza19idWZmOjpyYm5vZGUgYXJlIHVuaW9uaXplZC4gU28gd2UK CkZyb20gZjA3YjY2ZmY5NjY0ZjllMTdhZjEyNTE0NjVjMjczMDFmZTQxNWU3MiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpE YXRlOiBUaHUsIDggTm92IDIwMTggMTc6MzQ6MjcgLTA4MDAKU3ViamVjdDogWzMxLzMzXSBpbmV0 OiBmcmFnczogYmV0dGVyIGRlYWwgd2l0aCBzbXAgcmFjZXMKTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IDhiaXQKCmNvbW1pdCAwZDViOTMxMWJhZjI3YmI1NDVmMTg3ZjEyZWNmZDU1ODIyMGM2 MDdkIHVwc3RyZWFtLgoKTXVsdGlwbGUgY3B1cyBtaWdodCBhdHRlbXB0IHRvIGluc2VydCBhIG5l dyBmcmFnbWVudCBpbiByaGFzaHRhYmxlLAppZiBmb3IgZXhhbXBsZSBSUFMgaXMgYnVnZ3ksIGFz IHJlcG9ydGVkIGJ5IOuwsOyEneynhCBpbgpodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3Bh dGNoLzk5NDYwMS8KCldlIHVzZSByaGFzaHRhYmxlX2xvb2t1cF9nZXRfaW5zZXJ0X2tleSgpIGlu c3RlYWQgb2YKcmhhc2h0YWJsZV9pbnNlcnRfZmFzdCgpIHRvIGxldCBjcHVzIGxvc2luZyB0aGUg cmFjZQpmcmVlIHRoZWlyIG93biBpbmV0X2ZyYWdfcXVldWUgYW5kIHVzZSB0aGUgb25lIHRoYXQK d2FzIGluc2VydGVkIGJ5IGFub3RoZXIgY3B1LgoKRml4ZXM6IDY0ODcwMGY3NmIwMyAoImluZXQ6 IGZyYWdzOiB1c2Ugcmhhc2h0YWJsZXMgZm9yIHJlYXNzZW1ibHkgdW5pdHMiKQpTaWduZWQtb2Zm LWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClJlcG9ydGVkLWJ5OiDrsLDs hJ3sp4QgPHNvdWtqaW4uYmFlQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFy dG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRj aGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIG5ldC9pcHY0L2luZXRf ZnJhZ21lbnQuYyB8IDI4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQv aXB2NC9pbmV0X2ZyYWdtZW50LmMgYi9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKaW5kZXggYjZj Yjk5NThiMzRkLi5jMDNlNWY1ODU5ZTEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2luZXRfZnJhZ21l bnQuYworKysgYi9uZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmMKQEAgLTE4OCwyMSArMTg4LDIyIEBA IHN0YXRpYyBzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICppbmV0X2ZyYWdfYWxsb2Moc3RydWN0IG5l dG5zX2ZyYWdzICpuZiwKIH0KIAogc3RhdGljIHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKmluZXRf ZnJhZ19jcmVhdGUoc3RydWN0IG5ldG5zX2ZyYWdzICpuZiwKLQkJCQkJCXZvaWQgKmFyZykKKwkJ CQkJCXZvaWQgKmFyZywKKwkJCQkJCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKipwcmV2KQogewog CXN0cnVjdCBpbmV0X2ZyYWdzICpmID0gbmYtPmY7CiAJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAq cTsKLQlpbnQgZXJyOwogCiAJcSA9IGluZXRfZnJhZ19hbGxvYyhuZiwgZiwgYXJnKTsKLQlpZiAo IXEpCisJaWYgKCFxKSB7CisJCSpwcmV2ID0gRVJSX1BUUigtRU5PTUVNKTsKIAkJcmV0dXJuIE5V TEw7Ci0KKwl9CiAJbW9kX3RpbWVyKCZxLT50aW1lciwgamlmZmllcyArIG5mLT50aW1lb3V0KTsK IAotCWVyciA9IHJoYXNodGFibGVfaW5zZXJ0X2Zhc3QoJm5mLT5yaGFzaHRhYmxlLCAmcS0+bm9k ZSwKLQkJCQkgICAgIGYtPnJoYXNoX3BhcmFtcyk7Ci0JaWYgKGVyciA8IDApIHsKKwkqcHJldiA9 IHJoYXNodGFibGVfbG9va3VwX2dldF9pbnNlcnRfa2V5KCZuZi0+cmhhc2h0YWJsZSwgJnEtPmtl eSwKKwkJCQkJCSAmcS0+bm9kZSwgZi0+cmhhc2hfcGFyYW1zKTsKKwlpZiAoKnByZXYpIHsKIAkJ cS0+ZmxhZ3MgfD0gSU5FVF9GUkFHX0NPTVBMRVRFOwogCQlpbmV0X2ZyYWdfa2lsbChxKTsKIAkJ aW5ldF9mcmFnX2Rlc3Ryb3kocSk7CkBAIC0yMTUsMTcgKzIxNiwxOCBAQCBFWFBPUlRfU1lNQk9M KGluZXRfZnJhZ19jcmVhdGUpOwogLyogVE9ETyA6IGNhbGwgZnJvbSByY3VfcmVhZF9sb2NrKCkg YW5kIG5vIGxvbmdlciB1c2UgcmVmY291bnRfaW5jX25vdF96ZXJvKCkgKi8KIHN0cnVjdCBpbmV0 X2ZyYWdfcXVldWUgKmluZXRfZnJhZ19maW5kKHN0cnVjdCBuZXRuc19mcmFncyAqbmYsIHZvaWQg KmtleSkKIHsKLQlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpmcTsKKwlzdHJ1Y3QgaW5ldF9mcmFn X3F1ZXVlICpmcSA9IE5VTEwsICpwcmV2OwogCiAJcmN1X3JlYWRfbG9jaygpOwotCWZxID0gcmhh c2h0YWJsZV9sb29rdXAoJm5mLT5yaGFzaHRhYmxlLCBrZXksIG5mLT5mLT5yaGFzaF9wYXJhbXMp OwotCWlmIChmcSkgeworCXByZXYgPSByaGFzaHRhYmxlX2xvb2t1cCgmbmYtPnJoYXNodGFibGUs IGtleSwgbmYtPmYtPnJoYXNoX3BhcmFtcyk7CisJaWYgKCFwcmV2KQorCQlmcSA9IGluZXRfZnJh Z19jcmVhdGUobmYsIGtleSwgJnByZXYpOworCWlmIChwcmV2ICYmICFJU19FUlIocHJldikpIHsK KwkJZnEgPSBwcmV2OwogCQlpZiAoIWF0b21pY19pbmNfbm90X3plcm8oJmZxLT5yZWZjbnQpKQog CQkJZnEgPSBOVUxMOwotCQlyY3VfcmVhZF91bmxvY2soKTsKLQkJcmV0dXJuIGZxOwogCX0KIAly Y3VfcmVhZF91bmxvY2soKTsKLQlyZXR1cm4gaW5ldF9mcmFnX2NyZWF0ZShuZiwga2V5KTsKKwly ZXR1cm4gZnE7CiB9CiBFWFBPUlRfU1lNQk9MKGluZXRfZnJhZ19maW5kKTsKCkZyb20gZmY0N2Ex YTQ2YmM1MDhjMTc5MGE1N2VlMTM4YjA1NTQzN2Y4MzdhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogRGltaXRyaXMgTWljaGFpbGlkaXMgPGRtaWNoYWlsQGdvb2dsZS5jb20+CkRhdGU6 IEZyaSwgMTkgT2N0IDIwMTggMTc6MDc6MTMgLTA3MDAKU3ViamVjdDogWzMyLzMzXSBuZXQ6IGZp eCBwc2tiX3RyaW1fcmNzdW1fc2xvdygpIHdpdGggb2RkIHRyaW0gb2Zmc2V0Cgpjb21taXQgZDU1 YmVmNTA1OWRkMDU3YmQwNzcxNTUzNzVjNTgxYjQ5ZDI1YmU3ZSB1cHN0cmVhbS4KCldlJ3ZlIGJl ZW4gZ2V0dGluZyBjaGVja3N1bSBlcnJvcnMgaW52b2x2aW5nIHNtYWxsIFVEUCBwYWNrZXRzLCB1 c3VhbGx5CjU5QiBwYWNrZXRzIHdpdGggMSBleHRyYSBub24temVybyBwYWRkaW5nIGJ5dGUuIG5l dGRldl9yeF9jc3VtX2ZhdWx0KCkKaGFzIGJlZW4gY29tcGxhaW5pbmcgdGhhdCBIVyBpcyBwcm92 aWRpbmcgYmFkIGNoZWNrc3Vtcy4gVHVybnMgb3V0IHRoZQpwcm9ibGVtIGlzIGluIHBza2JfdHJp bV9yY3N1bV9zbG93KCksIGludHJvZHVjZWQgaW4gY29tbWl0IDg4MDc4ZDk4ZDFiYgooIm5ldDog cHNrYl90cmltX3Jjc3VtKCkgYW5kIENIRUNLU1VNX0NPTVBMRVRFIGFyZSBmcmllbmRzIikuCgpU aGUgc291cmNlIG9mIHRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiB0aGUgYnl0ZXMgd2UgYXJlIHRy aW1taW5nIHN0YXJ0CmF0IGFuIG9kZCBhZGRyZXNzLCBhcyBpbiB0aGUgY2FzZSBvZiB0aGUgMSBw YWRkaW5nIGJ5dGUgYWJvdmUsCnNrYl9jaGVja3N1bSgpIHJldHVybnMgYSBieXRlLXN3YXBwZWQg dmFsdWUuIFdlIGNhbm5vdCBqdXN0IGNvbWJpbmUgdGhpcwp3aXRoIHNrYi0+Y3N1bSB1c2luZyBj c3VtX3N1YigpLiBXZSBuZWVkIHRvIHVzZSBjc3VtX2Jsb2NrX3N1YigpIGhlcmUKdGhhdCB0YWtl cyBpbnRvIGFjY291bnQgdGhlIHBhcml0eSBvZiB0aGUgc3RhcnQgYWRkcmVzcyBhbmQgaGFuZGxl cyB0aGUKc3dhcHBpbmcuCgpNYXRjaGVzIGV4aXN0aW5nIGNvZGUgaW4gX19za2JfcG9zdHB1bGxf cmNzdW0oKSBhbmQgZXNwX3JlbW92ZV90cmFpbGVyKCkuCgpGaXhlczogODgwNzhkOThkMWJiICgi bmV0OiBwc2tiX3RyaW1fcmNzdW0oKSBhbmQgQ0hFQ0tTVU1fQ09NUExFVEUgYXJlIGZyaWVuZHMi KQpTaWduZWQtb2ZmLWJ5OiBEaW1pdHJpcyBNaWNoYWlsaWRpcyA8ZG1pY2hhaWxAZ29vZ2xlLmNv bT4KUmV2aWV3ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBu ZXQvY29yZS9za2J1ZmYuYyB8IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQv Y29yZS9za2J1ZmYuYwppbmRleCAzZDdjOTJkMzhhNzguLmZlYTdjMjRlOTlkMCAxMDA2NDQKLS0t IGEvbmV0L2NvcmUvc2tidWZmLmMKKysrIGIvbmV0L2NvcmUvc2tidWZmLmMKQEAgLTE1MDksOCAr MTUwOSw5IEBAIGludCBwc2tiX3RyaW1fcmNzdW1fc2xvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1 bnNpZ25lZCBpbnQgbGVuKQogCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9DT01QTEVU RSkgewogCQlpbnQgZGVsdGEgPSBza2ItPmxlbiAtIGxlbjsKIAotCQlza2ItPmNzdW0gPSBjc3Vt X3N1Yihza2ItPmNzdW0sCi0JCQkJICAgICBza2JfY2hlY2tzdW0oc2tiLCBsZW4sIGRlbHRhLCAw KSk7CisJCXNrYi0+Y3N1bSA9IGNzdW1fYmxvY2tfc3ViKHNrYi0+Y3N1bSwKKwkJCQkJICAgc2ti X2NoZWNrc3VtKHNrYiwgbGVuLCBkZWx0YSwgMCksCisJCQkJCSAgIGxlbik7CiAJfQogCXJldHVy biBfX3Bza2JfdHJpbShza2IsIGxlbik7CiB9CgpGcm9tIDY5ZjQ3Y2I1ZTdjNTU0MDg1NDE2YWQ4 MjM1NjNjYjkxZDk0YjIzMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pY2hhbCBL dWJlY2VrIDxta3ViZWNla0BzdXNlLmN6PgpEYXRlOiBUaHUsIDEzIERlYyAyMDE4IDE3OjIzOjMy ICswMTAwClN1YmplY3Q6IFszMy8zM10gbmV0OiBpcHY0OiBkbyBub3QgaGFuZGxlIGR1cGxpY2F0 ZSBmcmFnbWVudHMgYXMgb3ZlcmxhcHBpbmcKCmNvbW1pdCBhZGU0NDY0MDNiZmI3OWQzNTI4ZDU2 MDcxYTg0YjE1MzUxYTEzOWFkIHVwc3RyZWFtLgoKU2luY2UgY29tbWl0IDc5NjllNWM0MGRmZCAo ImlwOiBkaXNjYXJkIElQdjQgZGF0YWdyYW1zIHdpdGggb3ZlcmxhcHBpbmcKc2VnbWVudHMuIikg SVB2NCByZWFzc2VtYmx5IGNvZGUgZHJvcHMgdGhlIHdob2xlIHF1ZXVlIHdoZW5ldmVyIGFuCm92 ZXJsYXBwaW5nIGZyYWdtZW50IGlzIHJlY2VpdmVkLiBIb3dldmVyLCB0aGUgdGVzdCBpcyB3cml0 dGVuIGluIGEgd2F5CndoaWNoIGRldGVjdHMgZHVwbGljYXRlIGZyYWdtZW50cyBhcyBvdmVybGFw cGluZyBzbyB0aGF0IGluIGVudmlyb25tZW50cwp3aXRoIG1hbnkgZHVwbGljYXRlIHBhY2tldHMs IGZyYWdtZW50ZWQgcGFja2V0cyBtYXkgYmUgdW5kZWxpdmVyYWJsZS4KCkFkZCBhbiBleHRyYSB0 ZXN0IGFuZCBmb3IgKHBvdGVudGlhbGx5KSBkdXBsaWNhdGUgZnJhZ21lbnQsIG9ubHkgZHJvcCB0 aGUKbmV3IGZyYWdtZW50IHJhdGhlciB0aGFuIHRoZSB3aG9sZSBxdWV1ZS4gT25seSBzdGFydGlu ZyBvZmZzZXQgYW5kIGxlbmd0aAphcmUgY2hlY2tlZCwgbm90IHRoZSBjb250ZW50cyBvZiB0aGUg ZnJhZ21lbnRzIGFzIHRoYXQgd291bGQgYmUgdG9vCmV4cGVuc2l2ZS4gRm9yIHNpbWlsYXIgcmVh c29uLCBsaW5lYXIgbGlzdCAoInJ1biIpIG9mIGEgcmJ0cmVlIG5vZGUgaXMgbm90Cml0ZXJhdGVk LCB3ZSBvbmx5IGNoZWNrIGlmIHRoZSBuZXcgZnJhZ21lbnQgaXMgYSBzdWJzZXQgb2YgdGhlIGlu dGVydmFsCmNvdmVyZWQgYnkgZXhpc3RpbmcgY29uc2VjdXRpdmUgZnJhZ21lbnRzLgoKdjI6IGlu c3RlYWQgb2YgYW4gZXhhY3QgY2hlY2sgaXRlcmF0aW5nIHRocm91Z2ggbGluZWFyIGxpc3Qgb2Yg YW4gcmJ0cmVlCm5vZGUsIG9ubHkgY2hlY2sgaWYgdGhlIG5ldyBmcmFnbWVudCBpcyBzdWJzZXQg b2YgdGhlICJydW4iIChzdWdnZXN0ZWQKYnkgRXJpYyBEdW1hemV0KQoKRml4ZXM6IDc5NjllNWM0 MGRmZCAoImlwOiBkaXNjYXJkIElQdjQgZGF0YWdyYW1zIHdpdGggb3ZlcmxhcHBpbmcgc2VnbWVu dHMuIikKU2lnbmVkLW9mZi1ieTogTWljaGFsIEt1YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KW2J3aDog QmFja3BvcnRlZCB0byA0LjQ6CiAtIGdvdG8gZGlzY2FyZF9xcCwgbm90IGVyciwgaW4gY2FzZSBv ZiBvdmVybGFwCiAtIFNldCBlcnIgZWFybGllciB2YXJpYWJsZSwgYXMgZG9uZSB1cHN0cmVhbSBp biBjb21taXQgMGZmODllZmI1MjQ2CiAgICJpcDogZmFpbCBmYXN0IG9uIElQIGRlZnJhZyBlcnJv cnMiXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGlu ay5jby51az4KLS0tCiBuZXQvaXB2NC9pcF9mcmFnbWVudC5jIHwgMjAgKysrKysrKysrKysrKy0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMgYi9uZXQvaXB2NC9pcF9mcmFnbWVu dC5jCmluZGV4IGRiZjgwNDViOTE3Zi4uOWIwOWE5YjVhNGZlIDEwMDY0NAotLS0gYS9uZXQvaXB2 NC9pcF9mcmFnbWVudC5jCisrKyBiL25ldC9pcHY0L2lwX2ZyYWdtZW50LmMKQEAgLTM0NywxMCAr MzQ3LDEwIEBAIHN0YXRpYyBpbnQgaXBfZnJhZ19xdWV1ZShzdHJ1Y3QgaXBxICpxcCwgc3RydWN0 IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2YocXAtPnEubmV0 LCBzdHJ1Y3QgbmV0LCBpcHY0LmZyYWdzKTsKIAlzdHJ1Y3QgcmJfbm9kZSAqKnJibiwgKnBhcmVu dDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiMSwgKnByZXZfdGFpbDsKKwlpbnQgaWhsLCBlbmQsIHNr YjFfcnVuX2VuZDsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCXVuc2lnbmVkIGludCBmcmFn c2l6ZTsKIAlpbnQgZmxhZ3MsIG9mZnNldDsKLQlpbnQgaWhsLCBlbmQ7CiAJaW50IGVyciA9IC1F Tk9FTlQ7CiAJdTggZWNuOwogCkBAIC00MjAsOSArNDIwLDEyIEBAIHN0YXRpYyBpbnQgaXBfZnJh Z19xdWV1ZShzdHJ1Y3QgaXBxICpxcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgKiAgIG92ZXJs YXBwaW5nIGZyYWdtZW50LCB0aGUgZW50aXJlIGRhdGFncmFtIChhbmQgYW55IGNvbnN0aXR1ZW50 CiAJICogICBmcmFnbWVudHMpIE1VU1QgYmUgc2lsZW50bHkgZGlzY2FyZGVkLgogCSAqCi0JICog V2UgZG8gdGhlIHNhbWUgaGVyZSBmb3IgSVB2NCAoYW5kIGluY3JlbWVudCBhbiBzbm1wIGNvdW50 ZXIpLgorCSAqIFdlIGRvIHRoZSBzYW1lIGhlcmUgZm9yIElQdjQgKGFuZCBpbmNyZW1lbnQgYW4g c25tcCBjb3VudGVyKSBidXQKKwkgKiB3ZSBkbyBub3Qgd2FudCB0byBkcm9wIHRoZSB3aG9sZSBx dWV1ZSBpbiByZXNwb25zZSB0byBhIGR1cGxpY2F0ZQorCSAqIGZyYWdtZW50LgogCSAqLwogCisJ ZXJyID0gLUVJTlZBTDsKIAkvKiBGaW5kIG91dCB3aGVyZSB0byBwdXQgdGhpcyBmcmFnbWVudC4g ICovCiAJcHJldl90YWlsID0gcXAtPnEuZnJhZ21lbnRzX3RhaWw7CiAJaWYgKCFwcmV2X3RhaWwp CkBAIC00NDQsMTMgKzQ0NywxNyBAQCBzdGF0aWMgaW50IGlwX2ZyYWdfcXVldWUoc3RydWN0IGlw cSAqcXAsIHN0cnVjdCBza19idWZmICpza2IpCiAJCWRvIHsKIAkJCXBhcmVudCA9ICpyYm47CiAJ CQlza2IxID0gcmJfdG9fc2tiKHBhcmVudCk7CisJCQlza2IxX3J1bl9lbmQgPSBza2IxLT5pcF9k ZWZyYWdfb2Zmc2V0ICsKKwkJCQkgICAgICAgRlJBR19DQihza2IxKS0+ZnJhZ19ydW5fbGVuOwog CQkJaWYgKGVuZCA8PSBza2IxLT5pcF9kZWZyYWdfb2Zmc2V0KQogCQkJCXJibiA9ICZwYXJlbnQt PnJiX2xlZnQ7Ci0JCQllbHNlIGlmIChvZmZzZXQgPj0gc2tiMS0+aXBfZGVmcmFnX29mZnNldCAr Ci0JCQkJCQlGUkFHX0NCKHNrYjEpLT5mcmFnX3J1bl9sZW4pCisJCQllbHNlIGlmIChvZmZzZXQg Pj0gc2tiMV9ydW5fZW5kKQogCQkJCXJibiA9ICZwYXJlbnQtPnJiX3JpZ2h0OwotCQkJZWxzZSAv KiBGb3VuZCBhbiBvdmVybGFwIHdpdGggc2tiMS4gKi8KLQkJCQlnb3RvIGRpc2NhcmRfcXA7CisJ CQllbHNlIGlmIChvZmZzZXQgPj0gc2tiMS0+aXBfZGVmcmFnX29mZnNldCAmJgorCQkJCSBlbmQg PD0gc2tiMV9ydW5fZW5kKQorCQkJCWdvdG8gZXJyOyAvKiBObyBuZXcgZGF0YSwgcG90ZW50aWFs IGR1cGxpY2F0ZSAqLworCQkJZWxzZQorCQkJCWdvdG8gZGlzY2FyZF9xcDsgLyogRm91bmQgYW4g b3ZlcmxhcCAqLwogCQl9IHdoaWxlICgqcmJuKTsKIAkJLyogSGVyZSB3ZSBoYXZlIHBhcmVudCBw cm9wZXJseSBzZXQsIGFuZCByYm4gcG9pbnRpbmcgdG8KIAkJICogb25lIG9mIGl0cyBOVUxMIGxl ZnQvcmlnaHQgY2hpbGRyZW4uIEluc2VydCBza2IuCkBAIC00OTUsNyArNTAyLDYgQEAgc3RhdGlj IGludCBpcF9mcmFnX3F1ZXVlKHN0cnVjdCBpcHEgKnFwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQog CiBkaXNjYXJkX3FwOgogCWluZXRfZnJhZ19raWxsKCZxcC0+cSk7Ci0JZXJyID0gLUVJTlZBTDsK IAlJUF9JTkNfU1RBVFNfQkgobmV0LCBJUFNUQVRTX01JQl9SRUFTTV9PVkVSTEFQUyk7CiBlcnI6 CiAJa2ZyZWVfc2tiKHNrYik7Cm== --=-PJSiTvJ5lLUTEDyOnXKh--