From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Martin Subject: [PATCH v5 13/30] arm64/sve: Core task context handling Date: Tue, 31 Oct 2017 15:51:05 +0000 Message-ID: <1509465082-30427-14-git-send-email-Dave.Martin@arm.com> References: <1509465082-30427-1-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id E53D549D7B for ; Tue, 31 Oct 2017 11:50:23 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6FX8OOUftjRo for ; Tue, 31 Oct 2017 11:50:21 -0400 (EDT) Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by mm01.cs.columbia.edu (Postfix) with ESMTP id D5A8749D73 for ; Tue, 31 Oct 2017 11:50:20 -0400 (EDT) In-Reply-To: <1509465082-30427-1-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: linux-arm-kernel@lists.infradead.org Cc: linux-arch@vger.kernel.org, Okamoto Takayuki , libc-alpha@sourceware.org, Ard Biesheuvel , Szabolcs Nagy , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu List-Id: kvmarm@lists.cs.columbia.edu VGhpcyBwYXRjaCBhZGRzIHRoZSBjb3JlIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBhbmQgbWFuYWdp bmcgdGhlIFNWRQphcmNoaXRlY3R1cmFsIHN0YXRlIG9mIHVzZXIgdGFza3MuCgpDYWxscyB0byB0 aGUgZXhpc3RpbmcgRlBTSU1EIGxvdy1sZXZlbCBzYXZlL3Jlc3RvcmUgZnVuY3Rpb25zIGFyZQpm YWN0b3JlZCBvdXQgYXMgbmV3IGZ1bmN0aW9ucyB0YXNrX2Zwc2ltZF97c2F2ZSxsb2FkfSgpLCBz aW5jZSBTVkUKbm93IGR5bmFtaWNhbGx5IG1heSBvciBtYXkgbm90IG5lZWQgdG8gYmUgaGFuZGxl ZCBhdCB0aGVzZSBwb2ludHMKZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiwg aGFyZHdhcmUgZmVhdHVyZXMgZGlzY292ZXJlZAphdCBib290LCBhbmQgdGhlIHJ1bnRpbWUgc3Rh dGUgb2YgdGhlIHRhc2suICBUbyBtYWtlIHRoZXNlCmRlY2lzaW9ucyBhcyBmYXN0IGFzIHBvc3Np YmxlLCBjb25zdCBjcHVjYXBzIGFyZSB1c2VkIHdoZXJlCmZlYXNpYmxlLCB2aWEgdGhlIHN5c3Rl bV9zdXBwb3J0c19zdmUoKSBoZWxwZXIuCgpUaGUgU1ZFIHJlZ2lzdGVycyBhcmUgb25seSB0cmFj a2VkIGZvciB0aHJlYWRzIHRoYXQgaGF2ZSBleHBsaWNpdGx5CnVzZWQgU1ZFLCBpbmRpY2F0ZWQg YnkgdGhlIG5ldyB0aHJlYWQgZmxhZyBUSUZfU1ZFLiAgT3RoZXJ3aXNlLCB0aGUKRlBTSU1EIHZp ZXcgb2YgdGhlIGFyY2hpdGVjdHVyYWwgc3RhdGUgaXMgc3RvcmVkIGluCnRocmVhZC5mcHNpbWRf c3RhdGUgYXMgdXN1YWwuCgpXaGVuIGluIHVzZSwgdGhlIFNWRSByZWdpc3RlcnMgYXJlIG5vdCBz dG9yZWQgZGlyZWN0bHkgaW4KdGhyZWFkX3N0cnVjdCBkdWUgdG8gdGhlaXIgcG90ZW50aWFsbHkg bGFyZ2UgYW5kIHZhcmlhYmxlIHNpemUuCkJlY2F1c2UgdGhlIHRhc2tfc3RydWN0IHNsYWIgYWxs b2NhdG9yIG11c3QgYmUgY29uZmlndXJlZCB2ZXJ5CmVhcmx5IGR1cmluZyBrZXJuZWwgYm9vdCwg aXQgaXMgYWxzbyB0cmlja3kgdG8gY29uZmlndXJlIGl0CmNvcnJlY3RseSB0byBtYXRjaCB0aGUg bWF4aW11bSB2ZWN0b3IgbGVuZ3RoIHByb3ZpZGVkIGJ5IHRoZQpoYXJkd2FyZSwgc2luY2UgdGhp cyBkZXBlbmRzIG9uIGV4YW1pbmluZyBzZWNvbmRhcnkgQ1BVcyBhcyB3ZWxsIGFzCnRoZSBwcmlt YXJ5LiAgSW5zdGVhZCwgYSBwb2ludGVyIHN2ZV9zdGF0ZSBpbiB0aHJlYWRfc3RydWN0IHBvaW50 cwp0byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidWZmZXIgY29udGFpbmluZyB0aGUgU1ZFIHJl Z2lzdGVyIGRhdGEsCmFuZCBjb2RlIGlzIGFkZGVkIHRvIGFsbG9jYXRlIGFuZCBmcmVlIHRoaXMg YnVmZmVyIGF0IGFwcHJvcHJpYXRlCnRpbWVzLgoKVElGX1NWRSBpcyBzZXQgd2hlbiB0YWtpbmcg YW4gU1ZFIGFjY2VzcyB0cmFwIGZyb20gdXNlcnNwYWNlLCBpZgpzdWl0YWJsZSBoYXJkd2FyZSBz dXBwb3J0IGhhcyBiZWVuIGRldGVjdGVkLiAgVGhpcyBlbmFibGVzIFNWRSBmb3IKdGhlIHRocmVh ZDogYSBzdWJzZXF1ZW50IHJldHVybiB0byB1c2Vyc3BhY2Ugd2lsbCBkaXNhYmxlIHRoZSB0cmFw CmFjY29yZGluZ2x5LiAgSWYgc3VjaCBhIHRyYXAgaXMgdGFrZW4gd2l0aG91dCBzdWZmaWNpZW50 IHN5c3RlbS0Kd2lkZSBoYXJkd2FyZSBzdXBwb3J0LCBTSUdJTEwgaXMgc2VudCB0byB0aGUgdGhy ZWFkIGluc3RlYWQgYXMgaWYKYW4gdW5kZWZpbmVkIGluc3RydWN0aW9uIGhhZCBiZWVuIGV4ZWN1 dGVkOiB0aGlzIG1heSBoYXBwZW4gaWYKdXNlcnNwYWNlIHRyaWVzIHRvIHVzZSBTVkUgaW4gYSBz eXN0ZW0gd2hlcmUgbm90IGFsbCBDUFVzIHN1cHBvcnQKaXQgZm9yIGV4YW1wbGUuCgpUaGUga2Vy bmVsIHdpbGwgY2xlYXIgVElGX1NWRSBhbmQgZGlzYWJsZSBTVkUgZm9yIHRoZSB0aHJlYWQKd2hl bmV2ZXIgYW4gZXhwbGljaXQgc3lzY2FsbCBpcyBtYWRlIGJ5IHVzZXJzcGFjZS4gIEZvciBiYWNr d2FyZHMKY29tcGF0aWJpbGl0eSByZWFzb25zIGFuZCBjb25mb3JtYW5jZSB3aXRoIHRoZSBzcGly aXQgb2YgdGhlIGJhc2UKQUFyY2g2NCBwcm9jZWR1cmUgY2FsbCBzdGFuZGFyZCwgdGhlIHN1YnNl dCBvZiB0aGUgU1ZFIHJlZ2lzdGVyCnN0YXRlIHRoYXQgYWxpYXNlcyB0aGUgRlBTSU1EIHJlZ2lz dGVycyBpcyBzdGlsbCBwcmVzZXJ2ZWQgYWNyb3NzIGEKc3lzY2FsbCBldmVuIGlmIHRoaXMgaGFw cGVucy4gIFRoZSByZW1haW5kZXIgb2YgdGhlIFNWRSByZWdpc3RlcgpzdGF0ZSBsb2dpY2FsbHkg YmVjb21lcyB6ZXJvIGF0IHN5c2NhbGwgZW50cnksIHRob3VnaCB0aGUgYWN0dWFsCnplcm9pbmcg d29yayBpcyBjdXJyZW50bHkgZGVmZXJyZWQgdW50aWwgdGhlIHRocmVhZCBuZXh0IHRyaWVzIHRv CnVzZSBTVkUsIGNhdXNpbmcgYW5vdGhlciB0cmFwIHRvIHRoZSBrZXJuZWwuICBUaGlzIGltcGxl bWVudGF0aW9uCmlzIHN1Ym9wdGltYWw6IGluIHRoZSBmdXR1cmUsIHRoZSBmYXN0cGF0aCBjYXNl IG1heSBiZSBvcHRpbWlzZWQKdG8gemVybyB0aGUgcmVnaXN0ZXJzIGluLXBsYWNlIGFuZCBsZWF2 ZSBTVkUgZW5hYmxlZCBmb3IgdGhlIHRhc2ssCndoZXJlIGJlbmVmaWNpYWwuCgpUSUZfU1ZFIGlz IGFsc28gY2xlYXJlZCBpbiB0aGUgZm9sbG93aW5nIHNsb3dwYXRoIGNhc2VzLCB3aGljaCBhcmUK dGFrZW4gYXMgcmVhc29uYWJsZSBoaW50cyB0aGF0IHRoZSB0YXNrIG1heSBubyBsb25nZXIgdXNl IFNWRToKICogZXhlYwogKiBmb3JrIGFuZCBjbG9uZQoKQ29kZSBpcyBhZGRlZCB0byBzeW5jIGRh dGEgYmV0d2VlbiB0aHJlYWQuZnBzaW1kX3N0YXRlIGFuZAp0aHJlYWQuc3ZlX3N0YXRlIHdoZW5l dmVyIGVuYWJsaW5nL2Rpc2FibGluZyBTVkUsIGluIGEgbWFubmVyCmNvbnNpc3RlbnQgd2l0aCB0 aGUgU1ZFIGFyY2hpdGVjdHVyYWwgcHJvZ3JhbW1lcidzIG1vZGVsLgoKU2lnbmVkLW9mZi1ieTog RGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5jb20+ClJldmlld2VkLWJ5OiBDYXRhbGluIE1h cmluYXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPgpDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFy by5vcmc+CgotLS0KCktlcHQgQ2F0YWxpbidzIFJldmlld2VkLWJ5LCBzaW5jZSB0aGlzIGlzIGEg dHJpdmlhbCBjaGFuZ2UuCgpDaGFuZ2VzIHNpbmNlIHY0Ci0tLS0tLS0tLS0tLS0tLS0KCk1pc2Nl bGxhbmVvdXM6CgogKiBNYXJrIGRvX3N2ZV9hY2MoKSBhcyBhc21saW5rYWdlLgoKICAgKFNlbWFu dGljIGNvcnJlY3RuZXNzIG9ubHk7IG5vIGZ1bmN0aW9uYWwgaW1wYWN0LikKLS0tCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2Zwc2ltZC5oICAgICAgfCAgMTYgKysKIGFyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmggICB8ICAgMiArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVh ZF9pbmZvLmggfCAgIDQgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oICAgICAgIHwg ICAyICsKIGFyY2gvYXJtNjQva2VybmVsL2VudHJ5LlMgICAgICAgICAgICB8ICAzOSArKysrLQog YXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMgICAgICAgICAgIHwgMzI0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiBhcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMgICAgICAg ICAgfCAgMjQgKysrCiBhcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jICAgICAgICAgICAgfCAgIDYg Ky0KIDggZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBzaW1kLmggYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2Zwc2ltZC5oCmluZGV4IDAyNmE3YzcuLjU2NTVmZTEgMTAwNjQ0Ci0tLSBh L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnBzaW1kLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9mcHNpbWQuaApAQCAtMjAsNiArMjAsOCBAQAogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwog CisjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CisKIC8qCiAgKiBGUC9TSU1EIHN0b3JhZ2UgYXJl YSBoYXM6CiAgKiAgLSBGUFNSIGFuZCBGUENSCkBAIC03Miw2ICs3NCwyMCBAQCBleHRlcm4gdm9p ZCBzdmVfbG9hZF9zdGF0ZSh2b2lkIGNvbnN0ICpzdGF0ZSwgdTMyIGNvbnN0ICpwZnBzciwKIAkJ CSAgIHVuc2lnbmVkIGxvbmcgdnFfbWludXNfMSk7CiBleHRlcm4gdW5zaWduZWQgaW50IHN2ZV9n ZXRfdmwodm9pZCk7CiAKKyNpZmRlZiBDT05GSUdfQVJNNjRfU1ZFCisKK2V4dGVybiBzaXplX3Qg c3ZlX3N0YXRlX3NpemUoc3RydWN0IHRhc2tfc3RydWN0IGNvbnN0ICp0YXNrKTsKKworZXh0ZXJu IHZvaWQgc3ZlX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7CitleHRlcm4gdm9pZCBm cHNpbWRfcmVsZWFzZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7CisKKyNlbHNlIC8q ICEgQ09ORklHX0FSTTY0X1NWRSAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgc3ZlX2FsbG9jKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgZnBzaW1kX3Jl bGVhc2VfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spIHsgfQorCisjZW5kaWYgLyogISBD T05GSUdfQVJNNjRfU1ZFICovCisKIC8qIEZvciB1c2UgYnkgRUZJIHJ1bnRpbWUgc2VydmljZXMg Y2FsbHMgb25seSAqLwogZXh0ZXJuIHZvaWQgX19lZmlfZnBzaW1kX2JlZ2luKHZvaWQpOwogZXh0 ZXJuIHZvaWQgX19lZmlfZnBzaW1kX2VuZCh2b2lkKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oCmluZGV4IDdkZGRjYTIuLmUyZjU3NWQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jZXNzb3Iu aApAQCAtMTA1LDYgKzEwNSw4IEBAIHN0cnVjdCB0aHJlYWRfc3RydWN0IHsKIAl1bnNpZ25lZCBs b25nCQl0cDJfdmFsdWU7CiAjZW5kaWYKIAlzdHJ1Y3QgZnBzaW1kX3N0YXRlCWZwc2ltZF9zdGF0 ZTsKKwl2b2lkCQkJKnN2ZV9zdGF0ZTsJLyogU1ZFIHJlZ2lzdGVycywgaWYgYW55ICovCisJdW5z aWduZWQgaW50CQlzdmVfdmw7CQkvKiBTVkUgdmVjdG9yIGxlbmd0aCAqLwogCXVuc2lnbmVkIGxv bmcJCWZhdWx0X2FkZHJlc3M7CS8qIGZhdWx0IGluZm8gKi8KIAl1bnNpZ25lZCBsb25nCQlmYXVs dF9jb2RlOwkvKiBFU1JfRUwxIHZhbHVlICovCiAJc3RydWN0IGRlYnVnX2luZm8JZGVidWc7CQkv KiBkZWJ1Z2dpbmcgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFk X2luZm8uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCBkZGRl ZDY0Li45MmI3YjQ4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9p bmZvLmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCkBAIC02Myw2 ICs2Myw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7CiB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWMo dm9pZCk7CiAjZGVmaW5lIGFyY2hfc2V0dXBfbmV3X2V4ZWMgICAgIGFyY2hfc2V0dXBfbmV3X2V4 ZWMKIAordm9pZCBhcmNoX3JlbGVhc2VfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0 c2spOworCiAjZW5kaWYKIAogLyoKQEAgLTkyLDYgKzk0LDcgQEAgdm9pZCBhcmNoX3NldHVwX25l d19leGVjKHZvaWQpOwogI2RlZmluZSBUSUZfUkVTVE9SRV9TSUdNQVNLCTIwCiAjZGVmaW5lIFRJ Rl9TSU5HTEVTVEVQCQkyMQogI2RlZmluZSBUSUZfMzJCSVQJCTIyCS8qIDMyYml0IHByb2Nlc3Mg Ki8KKyNkZWZpbmUgVElGX1NWRQkJCTIzCS8qIFNjYWxhYmxlIFZlY3RvciBFeHRlbnNpb24gaW4g dXNlICovCiAKICNkZWZpbmUgX1RJRl9TSUdQRU5ESU5HCQkoMSA8PCBUSUZfU0lHUEVORElORykK ICNkZWZpbmUgX1RJRl9ORUVEX1JFU0NIRUQJKDEgPDwgVElGX05FRURfUkVTQ0hFRCkKQEAgLTEw NSw2ICsxMDgsNyBAQCB2b2lkIGFyY2hfc2V0dXBfbmV3X2V4ZWModm9pZCk7CiAjZGVmaW5lIF9U SUZfVVBST0JFCQkoMSA8PCBUSUZfVVBST0JFKQogI2RlZmluZSBfVElGX0ZTQ0hFQ0sJCSgxIDw8 IFRJRl9GU0NIRUNLKQogI2RlZmluZSBfVElGXzMyQklUCQkoMSA8PCBUSUZfMzJCSVQpCisjZGVm aW5lIF9USUZfU1ZFCQkoMSA8PCBUSUZfU1ZFKQogCiAjZGVmaW5lIF9USUZfV09SS19NQVNLCQko X1RJRl9ORUVEX1JFU0NIRUQgfCBfVElGX1NJR1BFTkRJTkcgfCBcCiAJCQkJIF9USUZfTk9USUZZ X1JFU1VNRSB8IF9USUZfRk9SRUlHTl9GUFNUQVRFIHwgXApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS90cmFwcy5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90cmFwcy5oCmlu ZGV4IDQ1ZTNkYTMuLjE2OTZmOWQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v dHJhcHMuaAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RyYXBzLmgKQEAgLTM0LDYgKzM0 LDggQEAgc3RydWN0IHVuZGVmX2hvb2sgewogCiB2b2lkIHJlZ2lzdGVyX3VuZGVmX2hvb2soc3Ry dWN0IHVuZGVmX2hvb2sgKmhvb2spOwogdm9pZCB1bnJlZ2lzdGVyX3VuZGVmX2hvb2soc3RydWN0 IHVuZGVmX2hvb2sgKmhvb2spOwordm9pZCBmb3JjZV9zaWduYWxfaW5qZWN0KGludCBzaWduYWws IGludCBjb2RlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCSB1bnNpZ25lZCBsb25nIGFkZHJl c3MpOwogCiB2b2lkIGFybTY0X25vdGlmeV9zZWdmYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncywg dW5zaWduZWQgbG9uZyBhZGRyKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvZW50 cnkuUyBiL2FyY2gvYXJtNjQva2VybmVsL2VudHJ5LlMKaW5kZXggZjVlODUxZS4uNTZlODQ4ZiAx MDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL2FybTY0L2tl cm5lbC9lbnRyeS5TCkBAIC02MDcsNiArNjA3LDggQEAgZWwwX3N5bmM6CiAJYi5lcQllbDBfaWEK IAljbXAJeDI0LCAjRVNSX0VMeF9FQ19GUF9BU0lNRAkvLyBGUC9BU0lNRCBhY2Nlc3MKIAliLmVx CWVsMF9mcHNpbWRfYWNjCisJY21wCXgyNCwgI0VTUl9FTHhfRUNfU1ZFCQkvLyBTVkUgYWNjZXNz CisJYi5lcQllbDBfc3ZlX2FjYwogCWNtcAl4MjQsICNFU1JfRUx4X0VDX0ZQX0VYQzY0CS8vIEZQ L0FTSU1EIGV4Y2VwdGlvbgogCWIuZXEJZWwwX2Zwc2ltZF9leGMKIAljbXAJeDI0LCAjRVNSX0VM eF9FQ19TWVM2NAkJLy8gY29uZmlndXJhYmxlIHRyYXAKQEAgLTY1OCw2ICs2NjAsNyBAQCBlbDBf c3ZjX2NvbXBhdDoKIAkvKgogCSAqIEFBcmNoMzIgc3lzY2FsbCBoYW5kbGluZwogCSAqLworCWxk cgl4MTYsIFt0c2ssICNUU0tfVElfRkxBR1NdCS8vIGxvYWQgdGhyZWFkIGZsYWdzCiAJYWRycAlz dGJsLCBjb21wYXRfc3lzX2NhbGxfdGFibGUJLy8gbG9hZCBjb21wYXQgc3lzY2FsbCB0YWJsZSBw b2ludGVyCiAJbW92CXdzY25vLCB3NwkJCS8vIHN5c2NhbGwgbnVtYmVyIGluIHc3IChyNykKIAlt b3YgICAgIHdzY19uciwgI19fTlJfY29tcGF0X3N5c2NhbGxzCkBAIC03MDUsOSArNzA4LDE5IEBA IGVsMF9mcHNpbWRfYWNjOgogCW1vdgl4MSwgc3AKIAlibAlkb19mcHNpbWRfYWNjCiAJYglyZXRf dG9fdXNlcgorZWwwX3N2ZV9hY2M6CisJLyoKKwkgKiBTY2FsYWJsZSBWZWN0b3IgRXh0ZW5zaW9u IGFjY2VzcworCSAqLworCWVuYWJsZV9kYmdfYW5kX2lycQorCWN0X3VzZXJfZXhpdAorCW1vdgl4 MCwgeDI1CisJbW92CXgxLCBzcAorCWJsCWRvX3N2ZV9hY2MKKwliCXJldF90b191c2VyCiBlbDBf ZnBzaW1kX2V4YzoKIAkvKgotCSAqIEZsb2F0aW5nIFBvaW50IG9yIEFkdmFuY2VkIFNJTUQgZXhj ZXB0aW9uCisJICogRmxvYXRpbmcgUG9pbnQsIEFkdmFuY2VkIFNJTUQgb3IgU1ZFIGV4Y2VwdGlv bgogCSAqLwogCWVuYWJsZV9kYmcKIAljdF91c2VyX2V4aXQKQEAgLTgzNSwxNiArODQ4LDM2IEBA IEVORFBST0MocmV0X3RvX3VzZXIpCiAgKi8KIAkuYWxpZ24JNgogZWwwX3N2YzoKKwlsZHIJeDE2 LCBbdHNrLCAjVFNLX1RJX0ZMQUdTXQkvLyBsb2FkIHRocmVhZCBmbGFncwogCWFkcnAJc3RibCwg c3lzX2NhbGxfdGFibGUJCS8vIGxvYWQgc3lzY2FsbCB0YWJsZSBwb2ludGVyCiAJbW92CXdzY25v LCB3OAkJCS8vIHN5c2NhbGwgbnVtYmVyIGluIHc4CiAJbW92CXdzY19uciwgI19fTlJfc3lzY2Fs bHMKKworI2lmbmRlZiBDT05GSUdfQVJNNjRfU1ZFCisJYgllbDBfc3ZjX25ha2VkCisjZWxzZQor CXRiegl4MTYsICNUSUZfU1ZFLCBlbDBfc3ZjX25ha2VkCS8vIFNraXAgdW5sZXNzIFRJRl9TVkUg c2V0OgorCWJpYwl4MTYsIHgxNiwgI19USUZfU1ZFCQkvLyBkaXNjYXJkIFNWRSBzdGF0ZQorCXN0 cgl4MTYsIFt0c2ssICNUU0tfVElfRkxBR1NdCisKKwkvKgorCSAqIHRhc2tfZnBzaW1kX2xvYWQo KSB3b24ndCBiZSBjYWxsZWQgdG8gdXBkYXRlIENQQUNSX0VMMSBpbgorCSAqIHJldF90b191c2Vy IHVubGVzcyBUSUZfRk9SRUlHTl9GUFNUQVRFIGlzIHN0aWxsIHNldCwgd2hpY2ggb25seQorCSAq IGhhcHBlbnMgaWYgYSBjb250ZXh0IHN3aXRjaCBvciBrZXJuZWxfbmVvbl9iZWdpbigpIG9yIGNv bnRleHQKKwkgKiBtb2RpZmljYXRpb24gKHNpZ3JldHVybiwgcHRyYWNlKSBpbnRlcnZlbmVzLgor CSAqIFNvLCBlbnN1cmUgdGhhdCBDUEFDUl9FTDEgaXMgYWxyZWFkeSBjb3JyZWN0IGZvciB0aGUg ZmFzdC1wYXRoIGNhc2U6CisJICovCisJbXJzCXg5LCBjcGFjcl9lbDEKKwliaWMJeDksIHg5LCAj Q1BBQ1JfRUwxX1pFTl9FTDBFTgkvLyBkaXNhYmxlIFNWRSBmb3IgZWwwCisJbXNyCWNwYWNyX2Vs MSwgeDkJCQkvLyBzeW5jaHJvbmlzZWQgYnkgZXJldCB0byBlbDAKKyNlbmRpZiAvKiBDT05GSUdf QVJNNjRfU1ZFICovCisKIGVsMF9zdmNfbmFrZWQ6CQkJCQkvLyBjb21wYXQgZW50cnkgcG9pbnQK IAlzdHAJeDAsIHhzY25vLCBbc3AsICNTX09SSUdfWDBdCS8vIHNhdmUgdGhlIG9yaWdpbmFsIHgw IGFuZCBzeXNjYWxsIG51bWJlcgogCWVuYWJsZV9kYmdfYW5kX2lycQogCWN0X3VzZXJfZXhpdCAx CiAKLQlsZHIJeDE2LCBbdHNrLCAjVFNLX1RJX0ZMQUdTXQkvLyBjaGVjayBmb3Igc3lzY2FsbCBo b29rcwotCXRzdAl4MTYsICNfVElGX1NZU0NBTExfV09SSworCXRzdAl4MTYsICNfVElGX1NZU0NB TExfV09SSwkJLy8gY2hlY2sgZm9yIHN5c2NhbGwgaG9va3MKIAliLm5lCV9fc3lzX3RyYWNlCiAJ Y21wICAgICB3c2Nubywgd3NjX25yCQkJLy8gY2hlY2sgdXBwZXIgc3lzY2FsbCBsaW1pdAogCWIu aHMJbmlfc3lzCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYyBiL2FyY2gv YXJtNjQva2VybmVsL2Zwc2ltZC5jCmluZGV4IDJiYWJhMGQuLjc4N2Y1ZDMgMTAwNjQ0Ci0tLSBh L2FyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jCisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2Zwc2lt ZC5jCkBAIC0xOCwxOSArMTgsMjcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvYm90dG9tX2hh bGYuaD4KKyNpbmNsdWRlIDxsaW51eC9idWcuaD4KKyNpbmNsdWRlIDxsaW51eC9jb21wYXQuaD4K ICNpbmNsdWRlIDxsaW51eC9jcHUuaD4KICNpbmNsdWRlIDxsaW51eC9jcHVfcG0uaD4KICNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjaW5jbHVk ZSA8bGludXgvaXJxZmxhZ3MuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8 bGludXgvcGVyY3B1Lmg+CiAjaW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgorI2luY2x1ZGUgPGxp bnV4L3B0cmFjZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkL3NpZ25hbC5oPgogI2luY2x1ZGUg PGxpbnV4L3NpZ25hbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAogI2luY2x1ZGUgPGFz bS9mcHNpbWQuaD4KICNpbmNsdWRlIDxhc20vY3B1dHlwZS5oPgogI2luY2x1ZGUgPGFzbS9zaW1k Lmg+CisjaW5jbHVkZSA8YXNtL3NpZ2NvbnRleHQuaD4KKyNpbmNsdWRlIDxhc20vc3lzcmVnLmg+ CisjaW5jbHVkZSA8YXNtL3RyYXBzLmg+CiAKICNkZWZpbmUgRlBFWENfSU9GCSgxIDw8IDApCiAj ZGVmaW5lIEZQRVhDX0RaRgkoMSA8PCAxKQpAQCAtNDAsNiArNDgsOCBAQAogI2RlZmluZSBGUEVY Q19JREYJKDEgPDwgNykKIAogLyoKKyAqIChOb3RlOiBpbiB0aGlzIGRpc2N1c3Npb24sIHN0YXRl bWVudHMgYWJvdXQgRlBTSU1EIGFwcGx5IGVxdWFsbHkgdG8gU1ZFLikKKyAqCiAgKiBJbiBvcmRl ciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgRlBTSU1EIHN0YXRlIGlzIG5lZWRs ZXNzbHkgc2F2ZWQKICAqIGFuZCByZXN0b3JlZCwgd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHR3 byB0aGluZ3M6CiAgKiAoYSkgZm9yIGVhY2ggdGFzaywgd2UgbmVlZCB0byByZW1lbWJlciB3aGlj aCBDUFUgd2FzIHRoZSBsYXN0IG9uZSB0byBoYXZlCkBAIC0xMDEsNiArMTExLDI3OSBAQAogc3Rh dGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBmcHNpbWRfc3RhdGUgKiwgZnBzaW1kX2xhc3Rfc3Rh dGUpOwogCiAvKgorICogQ2FsbCBfX3N2ZV9mcmVlKCkgZGlyZWN0bHkgb25seSBpZiB5b3Uga25v dyB0YXNrIGNhbid0IGJlIHNjaGVkdWxlZAorICogb3IgcHJlZW1wdGVkLgorICovCitzdGF0aWMg dm9pZCBfX3N2ZV9mcmVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKK3sKKwlrZnJlZSh0YXNr LT50aHJlYWQuc3ZlX3N0YXRlKTsKKwl0YXNrLT50aHJlYWQuc3ZlX3N0YXRlID0gTlVMTDsKK30K Kworc3RhdGljIHZvaWQgc3ZlX2ZyZWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQoreworCVdB Uk5fT04odGVzdF90c2tfdGhyZWFkX2ZsYWcodGFzaywgVElGX1NWRSkpOworCisJX19zdmVfZnJl ZSh0YXNrKTsKK30KKworCisvKiBPZmZzZXQgb2YgRkZSIGluIHRoZSBTVkUgcmVnaXN0ZXIgZHVt cCAqLworc3RhdGljIHNpemVfdCBzdmVfZmZyX29mZnNldChpbnQgdmwpCit7CisJcmV0dXJuIFNW RV9TSUdfRkZSX09GRlNFVChzdmVfdnFfZnJvbV92bCh2bCkpIC0gU1ZFX1NJR19SRUdTX09GRlNF VDsKK30KKworc3RhdGljIHZvaWQgKnN2ZV9wZmZyKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykK K3sKKwlyZXR1cm4gKGNoYXIgKil0YXNrLT50aHJlYWQuc3ZlX3N0YXRlICsKKwkJc3ZlX2Zmcl9v ZmZzZXQodGFzay0+dGhyZWFkLnN2ZV92bCk7Cit9CisKK3N0YXRpYyB2b2lkIGNoYW5nZV9jcGFj cih1NjQgdmFsLCB1NjQgbWFzaykKK3sKKwl1NjQgY3BhY3IgPSByZWFkX3N5c3JlZyhDUEFDUl9F TDEpOworCXU2NCBuZXcgPSAoY3BhY3IgJiB+bWFzaykgfCB2YWw7CisKKwlpZiAobmV3ICE9IGNw YWNyKQorCQl3cml0ZV9zeXNyZWcobmV3LCBDUEFDUl9FTDEpOworfQorCitzdGF0aWMgdm9pZCBz dmVfdXNlcl9kaXNhYmxlKHZvaWQpCit7CisJY2hhbmdlX2NwYWNyKDAsIENQQUNSX0VMMV9aRU5f RUwwRU4pOworfQorCitzdGF0aWMgdm9pZCBzdmVfdXNlcl9lbmFibGUodm9pZCkKK3sKKwljaGFu Z2VfY3BhY3IoQ1BBQ1JfRUwxX1pFTl9FTDBFTiwgQ1BBQ1JfRUwxX1pFTl9FTDBFTik7Cit9CisK Ky8qCisgKiBUSUZfU1ZFIGNvbnRyb2xzIHdoZXRoZXIgYSB0YXNrIGNhbiB1c2UgU1ZFIHdpdGhv dXQgdHJhcHBpbmcgd2hpbGUKKyAqIGluIHVzZXJzcGFjZSwgYW5kIGFsc28gdGhlIHdheSBhIHRh c2sncyBGUFNJTUQvU1ZFIHN0YXRlIGlzIHN0b3JlZAorICogaW4gdGhyZWFkX3N0cnVjdC4KKyAq CisgKiBUaGUga2VybmVsIHVzZXMgdGhpcyBmbGFnIHRvIHRyYWNrIHdoZXRoZXIgYSB1c2VyIHRh c2sgaXMgYWN0aXZlbHkKKyAqIHVzaW5nIFNWRSwgYW5kIHRoZXJlZm9yZSB3aGV0aGVyIGZ1bGwg U1ZFIHJlZ2lzdGVyIHN0YXRlIG5lZWRzIHRvCisgKiBiZSB0cmFja2VkLiAgSWYgbm90LCB0aGUg Y2hlYXBlciBGUFNJTUQgY29udGV4dCBoYW5kbGluZyBjb2RlIGNhbgorICogYmUgdXNlZCBpbnN0 ZWFkIG9mIHRoZSBtb3JlIGNvc3RseSBTVkUgZXF1aXZhbGVudHMuCisgKgorICogICogVElGX1NW RSBzZXQ6CisgKgorICogICAgVGhlIHRhc2sgY2FuIGV4ZWN1dGUgU1ZFIGluc3RydWN0aW9ucyB3 aGlsZSBpbiB1c2Vyc3BhY2Ugd2l0aG91dAorICogICAgdHJhcHBpbmcgdG8gdGhlIGtlcm5lbC4K KyAqCisgKiAgICBXaGVuIHN0b3JlZCwgWjAtWjMxIChpbmNvcnBvcmF0aW5nIFZuIGluIGJpdHNb MTI3OjBdIG9yIHRoZQorICogICAgY29ycmVzcG9uZGluZyBabiksIFAwLVAxNSBhbmQgRkZSIGFy ZSBlbmNvZGVkIGluIGluCisgKiAgICB0YXNrLT50aHJlYWQuc3ZlX3N0YXRlLCBmb3JtYXR0ZWQg YXBwcm9wcmlhdGVseSBmb3IgdmVjdG9yCisgKiAgICBsZW5ndGggdGFzay0+dGhyZWFkLnN2ZV92 bC4KKyAqCisgKiAgICB0YXNrLT50aHJlYWQuc3ZlX3N0YXRlIG11c3QgcG9pbnQgdG8gYSB2YWxp ZCBidWZmZXIgYXQgbGVhc3QKKyAqICAgIHN2ZV9zdGF0ZV9zaXplKHRhc2spIGJ5dGVzIGluIHNp emUuCisgKgorICogICAgRHVyaW5nIGFueSBzeXNjYWxsLCB0aGUga2VybmVsIG1heSBvcHRpb25h bGx5IGNsZWFyIFRJRl9TVkUgYW5kCisgKiAgICBkaXNjYXJkIHRoZSB2ZWN0b3Igc3RhdGUgZXhj ZXB0IGZvciB0aGUgRlBTSU1EIHN1YnNldC4KKyAqCisgKiAgKiBUSUZfU1ZFIGNsZWFyOgorICoK KyAqICAgIEFuIGF0dGVtcHQgYnkgdGhlIHVzZXIgdGFzayB0byBleGVjdXRlIGFuIFNWRSBpbnN0 cnVjdGlvbiBjYXVzZXMKKyAqICAgIGRvX3N2ZV9hY2MoKSB0byBiZSBjYWxsZWQsIHdoaWNoIGRv ZXMgc29tZSBwcmVwYXJhdGlvbiBhbmQgdGhlbgorICogICAgc2V0cyBUSUZfU1ZFLgorICoKKyAq ICAgIFdoZW4gc3RvcmVkLCBGUFNJTUQgcmVnaXN0ZXJzIFYwLVYzMSBhcmUgZW5jb2RlZCBpbgor ICogICAgdGFzay0+ZnBzaW1kX3N0YXRlOyBiaXRzIFttYXggOiAxMjhdIGZvciBlYWNoIG9mIFow LVozMSBhcmUKKyAqICAgIGxvZ2ljYWxseSB6ZXJvIGJ1dCBub3Qgc3RvcmVkIGFueXdoZXJlOyBQ MC1QMTUgYW5kIEZGUiBhcmUgbm90CisgKiAgICBzdG9yZWQgYW5kIGhhdmUgdW5zcGVjaWZpZWQg dmFsdWVzIGZyb20gdXNlcnNwYWNlJ3MgcG9pbnQgb2YKKyAqICAgIHZpZXcuICBGb3IgaHlnaWVu ZSBwdXJwb3NlcywgdGhlIGtlcm5lbCB6ZXJvZXMgdGhlbSBvbiBuZXh0IHVzZSwKKyAqICAgIGJ1 dCB1c2Vyc3BhY2UgaXMgZGlzY291cmFnZWQgZnJvbSByZWx5aW5nIG9uIHRoaXMuCisgKgorICog ICAgdGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG5vbi1OVUxMLCB2 YWxpZCBvciBhbnkKKyAqICAgIHBhcnRpY3VsYXIgc2l6ZTogaXQgbXVzdCBub3QgYmUgZGVyZWZl cmVuY2VkLgorICoKKyAqICAqIEZQU1IgYW5kIEZQQ1IgYXJlIGFsd2F5cyBzdG9yZWQgaW4gdGFz ay0+ZnBzaW1kX3N0YXRlIGlycmVzcGN0aXZlIG9mCisgKiAgICB3aGV0aGVyIFRJRl9TVkUgaXMg Y2xlYXIgb3Igc2V0LCBzaW5jZSB0aGVzZSBhcmUgbm90IHZlY3RvciBsZW5ndGgKKyAqICAgIGRl cGVuZGVudC4KKyAqLworCisvKgorICogVXBkYXRlIGN1cnJlbnQncyBGUFNJTUQvU1ZFIHJlZ2lz dGVycyBmcm9tIHRocmVhZF9zdHJ1Y3QuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg Y2FsbGVkIG9ubHkgd2hlbiB0aGUgRlBTSU1EL1NWRSBzdGF0ZSBpbgorICogdGhyZWFkX3N0cnVj dCBpcyBrbm93biB0byBiZSB1cCB0byBkYXRlLCB3aGVuIHByZXBhcmluZyB0byBlbnRlcgorICog dXNlcnNwYWNlLgorICoKKyAqIFNvZnRpcnFzIChhbmQgcHJlZW1wdGlvbikgbXVzdCBiZSBkaXNh YmxlZC4KKyAqLworc3RhdGljIHZvaWQgdGFza19mcHNpbWRfbG9hZCh2b2lkKQoreworCVdBUk5f T04oIWluX3NvZnRpcnEoKSAmJiAhaXJxc19kaXNhYmxlZCgpKTsKKworCWlmIChzeXN0ZW1fc3Vw cG9ydHNfc3ZlKCkgJiYgdGVzdF90aHJlYWRfZmxhZyhUSUZfU1ZFKSkKKwkJc3ZlX2xvYWRfc3Rh dGUoc3ZlX3BmZnIoY3VycmVudCksCisJCQkgICAgICAgJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRf c3RhdGUuZnBzciwKKwkJCSAgICAgICBzdmVfdnFfZnJvbV92bChjdXJyZW50LT50aHJlYWQuc3Zl X3ZsKSAtIDEpOworCWVsc2UKKwkJZnBzaW1kX2xvYWRfc3RhdGUoJmN1cnJlbnQtPnRocmVhZC5m cHNpbWRfc3RhdGUpOworCisJaWYgKHN5c3RlbV9zdXBwb3J0c19zdmUoKSkgeworCQkvKiBUb2dn bGUgU1ZFIHRyYXBwaW5nIGZvciB1c2Vyc3BhY2UgaWYgbmVlZGVkICovCisJCWlmICh0ZXN0X3Ro cmVhZF9mbGFnKFRJRl9TVkUpKQorCQkJc3ZlX3VzZXJfZW5hYmxlKCk7CisJCWVsc2UKKwkJCXN2 ZV91c2VyX2Rpc2FibGUoKTsKKworCQkvKiBTZXJpYWxpc2VkIGJ5IGV4Y2VwdGlvbiByZXR1cm4g dG8gdXNlciAqLworCX0KK30KKworLyoKKyAqIEVuc3VyZSBjdXJyZW50J3MgRlBTSU1EL1NWRSBz dG9yYWdlIGluIHRocmVhZF9zdHJ1Y3QgaXMgdXAgdG8gZGF0ZQorICogd2l0aCByZXNwZWN0IHRv IHRoZSBDUFUgcmVnaXN0ZXJzLgorICoKKyAqIFNvZnRpcnFzIChhbmQgcHJlZW1wdGlvbikgbXVz dCBiZSBkaXNhYmxlZC4KKyAqLworc3RhdGljIHZvaWQgdGFza19mcHNpbWRfc2F2ZSh2b2lkKQor eworCVdBUk5fT04oIWluX3NvZnRpcnEoKSAmJiAhaXJxc19kaXNhYmxlZCgpKTsKKworCWlmICgh dGVzdF90aHJlYWRfZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKSkgeworCQlpZiAoc3lzdGVtX3N1 cHBvcnRzX3N2ZSgpICYmIHRlc3RfdGhyZWFkX2ZsYWcoVElGX1NWRSkpIHsKKwkJCWlmIChXQVJO X09OKHN2ZV9nZXRfdmwoKSAhPSBjdXJyZW50LT50aHJlYWQuc3ZlX3ZsKSkgeworCQkJCS8qCisJ CQkJICogQ2FuJ3Qgc2F2ZSB0aGUgdXNlciByZWdzLCBzbyBjdXJyZW50IHdvdWxkCisJCQkJICog cmUtZW50ZXIgdXNlciB3aXRoIGNvcnJ1cHQgc3RhdGUuCisJCQkJICogVGhlcmUncyBubyB3YXkg dG8gcmVjb3Zlciwgc28ga2lsbCBpdDoKKwkJCQkgKi8KKwkJCQlmb3JjZV9zaWduYWxfaW5qZWN0 KAorCQkJCQlTSUdLSUxMLCAwLCBjdXJyZW50X3B0X3JlZ3MoKSwgMCk7CisJCQkJcmV0dXJuOwor CQkJfQorCisJCQlzdmVfc2F2ZV9zdGF0ZShzdmVfcGZmcihjdXJyZW50KSwKKwkJCQkgICAgICAg JmN1cnJlbnQtPnRocmVhZC5mcHNpbWRfc3RhdGUuZnBzcik7CisJCX0gZWxzZQorCQkJZnBzaW1k X3NhdmVfc3RhdGUoJmN1cnJlbnQtPnRocmVhZC5mcHNpbWRfc3RhdGUpOworCX0KK30KKworI2Rl ZmluZSBaUkVHKHN2ZV9zdGF0ZSwgdnEsIG4pICgoY2hhciAqKShzdmVfc3RhdGUpICsJCVwKKwko U1ZFX1NJR19aUkVHX09GRlNFVCh2cSwgbikgLSBTVkVfU0lHX1JFR1NfT0ZGU0VUKSkKKworLyoK KyAqIFRyYW5zZmVyIHRoZSBGUFNJTUQgc3RhdGUgaW4gdGFzay0+dGhyZWFkLmZwc2ltZF9zdGF0 ZSB0bworICogdGFzay0+dGhyZWFkLnN2ZV9zdGF0ZS4KKyAqCisgKiBUYXNrIGNhbiBiZSBhIG5v bi1ydW5uYWJsZSB0YXNrLCBvciBjdXJyZW50LiAgSW4gdGhlIGxhdHRlciBjYXNlLAorICogc29m dGlycXMgKGFuZCBwcmVlbXB0aW9uKSBtdXN0IGJlIGRpc2FibGVkLgorICogdGFzay0+dGhyZWFk LnN2ZV9zdGF0ZSBtdXN0IHBvaW50IHRvIGF0IGxlYXN0IHN2ZV9zdGF0ZV9zaXplKHRhc2spCisg KiBieXRlcyBvZiBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeS4KKyAqIHRhc2stPnRocmVhZC5mcHNp bWRfc3RhdGUgbXVzdCBiZSB1cCB0byBkYXRlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u CisgKi8KK3N0YXRpYyB2b2lkIGZwc2ltZF90b19zdmUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNr KQoreworCXVuc2lnbmVkIGludCB2cTsKKwl2b2lkICpzc3QgPSB0YXNrLT50aHJlYWQuc3ZlX3N0 YXRlOworCXN0cnVjdCBmcHNpbWRfc3RhdGUgY29uc3QgKmZzdCA9ICZ0YXNrLT50aHJlYWQuZnBz aW1kX3N0YXRlOworCXVuc2lnbmVkIGludCBpOworCisJaWYgKCFzeXN0ZW1fc3VwcG9ydHNfc3Zl KCkpCisJCXJldHVybjsKKworCXZxID0gc3ZlX3ZxX2Zyb21fdmwodGFzay0+dGhyZWFkLnN2ZV92 bCk7CisJZm9yIChpID0gMDsgaSA8IDMyOyArK2kpCisJCW1lbWNweShaUkVHKHNzdCwgdnEsIGkp LCAmZnN0LT52cmVnc1tpXSwKKwkJICAgICAgIHNpemVvZihmc3QtPnZyZWdzW2ldKSk7Cit9CisK KyNpZmRlZiBDT05GSUdfQVJNNjRfU1ZFCisKKy8qCisgKiBSZXR1cm4gaG93IG1hbnkgYnl0ZXMg b2YgbWVtb3J5IGFyZSByZXF1aXJlZCB0byBzdG9yZSB0aGUgZnVsbCBTVkUKKyAqIHN0YXRlIGZv ciB0YXNrLCBnaXZlbiB0YXNrJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdmVjdG9yIGxlbmd0aC4K KyAqLworc2l6ZV90IHN2ZV9zdGF0ZV9zaXplKHN0cnVjdCB0YXNrX3N0cnVjdCBjb25zdCAqdGFz aykKK3sKKwlyZXR1cm4gU1ZFX1NJR19SRUdTX1NJWkUoc3ZlX3ZxX2Zyb21fdmwodGFzay0+dGhy ZWFkLnN2ZV92bCkpOworfQorCisvKgorICogRW5zdXJlIHRoYXQgdGFzay0+dGhyZWFkLnN2ZV9z dGF0ZSBpcyBhbGxvY2F0ZWQgYW5kIHN1ZmZpY2llbnRseSBsYXJnZS4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gcHJlcGFyYXRpb24gZm9yIHJlcGxhY2luZwor ICogdGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSB3aXRoIG5ldyBkYXRhLiAgVGhlIG1lbW9yeSBpcyBh bHdheXMgemVyb2VkCisgKiBoZXJlIHRvIHByZXZlbnQgc3RhbGUgZGF0YSBmcm9tIHNob3dpbmcg dGhyb3VnaDogdGhpcyBpcyBkb25lIGluCisgKiB0aGUgaW50ZXJlc3Qgb2YgdGVzdGFiaWxpdHkg YW5kIHByZWRpY3RhYmlsaXR5OiBleGNlcHQgaW4gdGhlCisgKiBkb19zdmVfYWNjKCkgY2FzZSwg dGhlcmUgaXMgbm8gQUJJIHJlcXVpcmVtZW50IHRvIGhpZGUgc3RhbGUgZGF0YQorICogd3JpdHRl biBwcmV2aW91c2x5IGJlIHRhc2suCisgKi8KK3ZvaWQgc3ZlX2FsbG9jKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzaykKK3sKKwlpZiAodGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSkgeworCQltZW1zZXQo dGFzay0+dGhyZWFkLnN2ZV9zdGF0ZSwgMCwgc3ZlX3N0YXRlX3NpemUoY3VycmVudCkpOworCQly ZXR1cm47CisJfQorCisJLyogVGhpcyBpcyBhIHNtYWxsIGFsbG9jYXRpb24gKG1heGltdW0gfjhL QikgYW5kIFNob3VsZCBOb3QgRmFpbC4gKi8KKwl0YXNrLT50aHJlYWQuc3ZlX3N0YXRlID0KKwkJ a3phbGxvYyhzdmVfc3RhdGVfc2l6ZSh0YXNrKSwgR0ZQX0tFUk5FTCk7CisKKwkvKgorCSAqIElm IGZ1dHVyZSBTVkUgcmV2aXNpb25zIGNhbiBoYXZlIGxhcmdlciB2ZWN0b3JzIHRob3VnaCwKKwkg KiB0aGlzIG1heSBjZWFzZSB0byBiZSB0cnVlOgorCSAqLworCUJVR19PTighdGFzay0+dGhyZWFk LnN2ZV9zdGF0ZSk7Cit9CisKKy8qCisgKiBDYWxsZWQgZnJvbSB0aGUgcHV0X3Rhc2tfc3RydWN0 KCkgcGF0aCwgd2hpY2ggY2Fubm90IGdldCBoZXJlCisgKiB1bmxlc3MgZGVhZF90YXNrIGlzIHJl YWxseSBkZWFkIGFuZCBub3Qgc2NoZWR1bGFibGUuCisgKi8KK3ZvaWQgZnBzaW1kX3JlbGVhc2Vf dGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRlYWRfdGFzaykKK3sKKwlfX3N2ZV9mcmVlKGRlYWRf dGFzayk7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfQVJNNjRfU1ZFICovCisKKy8qCisgKiBUcmFw cGVkIFNWRSBhY2Nlc3MKKyAqCisgKiBTdG9yYWdlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bGwg U1ZFIHN0YXRlLCB0aGUgY3VycmVudCBGUFNJTUQKKyAqIHJlZ2lzdGVyIGNvbnRlbnRzIGFyZSBt aWdyYXRlZCBhY3Jvc3MsIGFuZCBUSUZfU1ZFIGlzIHNldCBzbyB0aGF0CisgKiB0aGUgU1ZFIGFj Y2VzcyB0cmFwIHdpbGwgYmUgZGlzYWJsZWQgdGhlIG5leHQgdGltZSB0aGlzIHRhc2sKKyAqIHJl YWNoZXMgcmV0X3RvX3VzZXIuCisgKgorICogVElGX1NWRSBzaG91bGQgYmUgY2xlYXIgb24gZW50 cnk6IG90aGVyd2lzZSwgdGFza19mcHNpbWRfbG9hZCgpCisgKiB3b3VsZCBoYXZlIGRpc2FibGVk IHRoZSBTVkUgYWNjZXNzIHRyYXAgZm9yIHVzZXJzcGFjZSBkdXJpbmcKKyAqIHJldF90b191c2Vy LCBtYWtpbmcgYW4gU1ZFIGFjY2VzcyB0cmFwIGltcG9zc2libGUgaW4gdGhhdCBjYXNlLgorICov Cithc21saW5rYWdlIHZvaWQgZG9fc3ZlX2FjYyh1bnNpZ25lZCBpbnQgZXNyLCBzdHJ1Y3QgcHRf cmVncyAqcmVncykKK3sKKwkvKiBFdmVuIGlmIHdlIGNob3NlIG5vdCB0byB1c2UgU1ZFLCB0aGUg aGFyZHdhcmUgY291bGQgc3RpbGwgdHJhcDogKi8KKwlpZiAodW5saWtlbHkoIXN5c3RlbV9zdXBw b3J0c19zdmUoKSkgfHwgV0FSTl9PTihpc19jb21wYXRfdGFzaygpKSkgeworCQlmb3JjZV9zaWdu YWxfaW5qZWN0KFNJR0lMTCwgSUxMX0lMTE9QQywgcmVncywgMCk7CisJCXJldHVybjsKKwl9CisK KwlzdmVfYWxsb2MoY3VycmVudCk7CisKKwlsb2NhbF9iaF9kaXNhYmxlKCk7CisKKwl0YXNrX2Zw c2ltZF9zYXZlKCk7CisJZnBzaW1kX3RvX3N2ZShjdXJyZW50KTsKKworCS8qIEZvcmNlIHJldF90 b191c2VyIHRvIHJlbG9hZCB0aGUgcmVnaXN0ZXJzOiAqLworCWZwc2ltZF9mbHVzaF90YXNrX3N0 YXRlKGN1cnJlbnQpOworCXNldF90aHJlYWRfZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKTsKKwor CWlmICh0ZXN0X2FuZF9zZXRfdGhyZWFkX2ZsYWcoVElGX1NWRSkpCisJCVdBUk5fT04oMSk7IC8q IFNWRSBhY2Nlc3Mgc2hvdWxkbid0IGhhdmUgdHJhcHBlZCAqLworCisJbG9jYWxfYmhfZW5hYmxl KCk7Cit9CisKKy8qCiAgKiBUcmFwcGVkIEZQL0FTSU1EIGFjY2Vzcy4KICAqLwogYXNtbGlua2Fn ZSB2b2lkIGRvX2Zwc2ltZF9hY2ModW5zaWduZWQgaW50IGVzciwgc3RydWN0IHB0X3JlZ3MgKnJl Z3MpCkBAIC0xNDUsOCArNDI4LDggQEAgdm9pZCBmcHNpbWRfdGhyZWFkX3N3aXRjaChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKm5leHQpCiAJICogdGhlIHJlZ2lzdGVycyBpcyBpbiBmYWN0IHRoZSBtb3N0 IHJlY2VudCB1c2VybGFuZCBGUFNJTUQgc3RhdGUgb2YKIAkgKiAnY3VycmVudCcuCiAJICovCi0J aWYgKGN1cnJlbnQtPm1tICYmICF0ZXN0X3RocmVhZF9mbGFnKFRJRl9GT1JFSUdOX0ZQU1RBVEUp KQotCQlmcHNpbWRfc2F2ZV9zdGF0ZSgmY3VycmVudC0+dGhyZWFkLmZwc2ltZF9zdGF0ZSk7CisJ aWYgKGN1cnJlbnQtPm1tKQorCQl0YXNrX2Zwc2ltZF9zYXZlKCk7CiAKIAlpZiAobmV4dC0+bW0p IHsKIAkJLyoKQEAgLTE2OCw2ICs0NTEsOCBAQCB2b2lkIGZwc2ltZF90aHJlYWRfc3dpdGNoKHN0 cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkKIAogdm9pZCBmcHNpbWRfZmx1c2hfdGhyZWFkKHZvaWQp CiB7CisJaW50IHZsOworCiAJaWYgKCFzeXN0ZW1fc3VwcG9ydHNfZnBzaW1kKCkpCiAJCXJldHVy bjsKIApAQCAtMTc1LDYgKzQ2MCwzMCBAQCB2b2lkIGZwc2ltZF9mbHVzaF90aHJlYWQodm9pZCkK IAogCW1lbXNldCgmY3VycmVudC0+dGhyZWFkLmZwc2ltZF9zdGF0ZSwgMCwgc2l6ZW9mKHN0cnVj dCBmcHNpbWRfc3RhdGUpKTsKIAlmcHNpbWRfZmx1c2hfdGFza19zdGF0ZShjdXJyZW50KTsKKwor CWlmIChzeXN0ZW1fc3VwcG9ydHNfc3ZlKCkpIHsKKwkJY2xlYXJfdGhyZWFkX2ZsYWcoVElGX1NW RSk7CisJCXN2ZV9mcmVlKGN1cnJlbnQpOworCisJCS8qCisJCSAqIFJlc2V0IHRoZSB0YXNrIHZl Y3RvciBsZW5ndGggYXMgcmVxdWlyZWQuCisJCSAqIFRoaXMgaXMgd2hlcmUgd2UgZW5zdXJlIHRo YXQgYWxsIHVzZXIgdGFza3MgaGF2ZSBhIHZhbGlkCisJCSAqIHZlY3RvciBsZW5ndGggY29uZmln dXJlZDogbm8ga2VybmVsIHRhc2sgY2FuIGJlY29tZSBhIHVzZXIKKwkJICogdGFzayB3aXRob3V0 IGFuIGV4ZWMgYW5kIGhlbmNlIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLgorCQkgKiBJZiBhIGJ1 ZyBjYXVzZXMgdGhpcyB0byBnbyB3cm9uZywgd2UgbWFrZSBzb21lIG5vaXNlIGFuZAorCQkgKiB0 cnkgdG8gZnVkZ2UgdGhyZWFkLnN2ZV92bCB0byBhIHNhZmUgdmFsdWUgaGVyZS4KKwkJICovCisJ CXZsID0gY3VycmVudC0+dGhyZWFkLnN2ZV92bDsKKworCQlpZiAodmwgPT0gMCkKKwkJCXZsID0g U1ZFX1ZMX01JTjsKKworCQlpZiAoV0FSTl9PTighc3ZlX3ZsX3ZhbGlkKHZsKSkpCisJCQl2bCA9 IFNWRV9WTF9NSU47CisKKwkJY3VycmVudC0+dGhyZWFkLnN2ZV92bCA9IHZsOworCX0KKwogCXNl dF90aHJlYWRfZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKTsKIAogCWxvY2FsX2JoX2VuYWJsZSgp OwpAQCAtMTgzLDYgKzQ5Miw5IEBAIHZvaWQgZnBzaW1kX2ZsdXNoX3RocmVhZCh2b2lkKQogLyoK ICAqIFNhdmUgdGhlIHVzZXJsYW5kIEZQU0lNRCBzdGF0ZSBvZiAnY3VycmVudCcgdG8gbWVtb3J5 LCBidXQgb25seSBpZiB0aGUgc3RhdGUKICAqIGN1cnJlbnRseSBoZWxkIGluIHRoZSByZWdpc3Rl cnMgZG9lcyBpbiBmYWN0IGJlbG9uZyB0byAnY3VycmVudCcKKyAqCisgKiBDdXJyZW50bHksIFNW RSB0YXNrcyBjYW4ndCBleGlzdCwgc28ganVzdCBXQVJOIGluIHRoYXQgY2FzZS4KKyAqIFN1YnNl cXVlbnQgcGF0Y2hlcyB3aWxsIGFkZCBmdWxsIFNWRSBzdXBwb3J0IGhlcmUuCiAgKi8KIHZvaWQg ZnBzaW1kX3ByZXNlcnZlX2N1cnJlbnRfc3RhdGUodm9pZCkKIHsKQEAgLTE5NCw2ICs1MDYsOCBA QCB2b2lkIGZwc2ltZF9wcmVzZXJ2ZV9jdXJyZW50X3N0YXRlKHZvaWQpCiAJaWYgKCF0ZXN0X3Ro cmVhZF9mbGFnKFRJRl9GT1JFSUdOX0ZQU1RBVEUpKQogCQlmcHNpbWRfc2F2ZV9zdGF0ZSgmY3Vy cmVudC0+dGhyZWFkLmZwc2ltZF9zdGF0ZSk7CiAKKwlXQVJOX09OX09OQ0UodGVzdF9hbmRfY2xl YXJfdGhyZWFkX2ZsYWcoVElGX1NWRSkpOworCiAJbG9jYWxfYmhfZW5hYmxlKCk7CiB9CiAKQEAg LTIxMiw3ICs1MjYsNyBAQCB2b2lkIGZwc2ltZF9yZXN0b3JlX2N1cnJlbnRfc3RhdGUodm9pZCkK IAlpZiAodGVzdF9hbmRfY2xlYXJfdGhyZWFkX2ZsYWcoVElGX0ZPUkVJR05fRlBTVEFURSkpIHsK IAkJc3RydWN0IGZwc2ltZF9zdGF0ZSAqc3QgPSAmY3VycmVudC0+dGhyZWFkLmZwc2ltZF9zdGF0 ZTsKIAotCQlmcHNpbWRfbG9hZF9zdGF0ZShzdCk7CisJCXRhc2tfZnBzaW1kX2xvYWQoKTsKIAkJ X190aGlzX2NwdV93cml0ZShmcHNpbWRfbGFzdF9zdGF0ZSwgc3QpOwogCQlzdC0+Y3B1ID0gc21w X3Byb2Nlc3Nvcl9pZCgpOwogCX0KQEAgLTM4MSw4ICs2OTUsOCBAQCBzdGF0aWMgaW50IGZwc2lt ZF9jcHVfcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLAogewogCXN3aXRj aCAoY21kKSB7CiAJY2FzZSBDUFVfUE1fRU5URVI6Ci0JCWlmIChjdXJyZW50LT5tbSAmJiAhdGVz dF90aHJlYWRfZmxhZyhUSUZfRk9SRUlHTl9GUFNUQVRFKSkKLQkJCWZwc2ltZF9zYXZlX3N0YXRl KCZjdXJyZW50LT50aHJlYWQuZnBzaW1kX3N0YXRlKTsKKwkJaWYgKGN1cnJlbnQtPm1tKQorCQkJ dGFza19mcHNpbWRfc2F2ZSgpOwogCQl0aGlzX2NwdV93cml0ZShmcHNpbWRfbGFzdF9zdGF0ZSwg TlVMTCk7CiAJCWJyZWFrOwogCWNhc2UgQ1BVX1BNX0VYSVQ6CmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMKaW5kZXgg YzE1ZWM0MS4uYjJhZGNjZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvcHJvY2Vzcy5j CisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3Byb2Nlc3MuYwpAQCAtNDksNiArNDksNyBAQAogI2lu Y2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+CiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL3Bvd2VyLmg+ CiAjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+CisjaW5jbHVkZSA8bGludXgvdGhyZWFkX2luZm8u aD4KIAogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPGFzbS9jb21wYXQu aD4KQEAgLTI3MywxMSArMjc0LDI3IEBAIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tf c3RydWN0ICpkZWFkX3Rhc2spCiB7CiB9CiAKK3ZvaWQgYXJjaF9yZWxlYXNlX3Rhc2tfc3RydWN0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoreworCWZwc2ltZF9yZWxlYXNlX3Rhc2sodHNrKTsK K30KKworLyoKKyAqIHNyYyBhbmQgZHN0IG1heSB0ZW1wb3JhcmlseSBoYXZlIGFsaWFzZWQgc3Zl X3N0YXRlIGFmdGVyIHRhc2tfc3RydWN0CisgKiBpcyBjb3BpZWQuICBXZSBjYW5ub3QgZml4IHRo aXMgcHJvcGVybHkgaGVyZSwgYmVjYXVzZSBzcmMgbWF5IGhhdmUKKyAqIGxpdmUgU1ZFIHN0YXRl IGFuZCBkc3QncyB0aHJlYWRfaW5mbyBtYXkgbm90IGV4aXN0IHlldCwgc28gdHdlYWtpbmcKKyAq IGVpdGhlciBzcmMncyBvciBkc3QncyBUSUZfU1ZFIGlzIG5vdCBzYWZlLgorICoKKyAqIFRoZSB1 bmFsaWFzaW5nIGlzIGRvbmUgaW4gY29weV90aHJlYWQoKSBpbnN0ZWFkLiAgVGhpcyB3b3JrcyBi ZWNhdXNlCisgKiBkc3QgaXMgbm90IHNjaGVkdWxhYmxlIG9yIHRyYWNlYWJsZSB1bnRpbCBib3Ro IG9mIHRoZXNlIGZ1bmN0aW9ucworICogaGF2ZSBiZWVuIGNhbGxlZC4KKyAqLwogaW50IGFyY2hf ZHVwX3Rhc2tfc3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnNyYykKIHsKIAlpZiAoY3VycmVudC0+bW0pCiAJCWZwc2ltZF9wcmVzZXJ2ZV9jdXJyZW50 X3N0YXRlKCk7CiAJKmRzdCA9ICpzcmM7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjkwLDYgKzMw NywxMyBAQCBpbnQgY29weV90aHJlYWQodW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgdW5zaWdu ZWQgbG9uZyBzdGFja19zdGFydCwKIAogCW1lbXNldCgmcC0+dGhyZWFkLmNwdV9jb250ZXh0LCAw LCBzaXplb2Yoc3RydWN0IGNwdV9jb250ZXh0KSk7CiAKKwkvKgorCSAqIFVuYWxpYXMgcC0+dGhy ZWFkLnN2ZV9zdGF0ZSAoaWYgYW55KSBmcm9tIHRoZSBwYXJlbnQgdGFzaworCSAqIGFuZCBkaXNh YmxlIGRpc2NhcmQgU1ZFIHN0YXRlIGZvciBwOgorCSAqLworCWNsZWFyX3Rza190aHJlYWRfZmxh ZyhwLCBUSUZfU1ZFKTsKKwlwLT50aHJlYWQuc3ZlX3N0YXRlID0gTlVMTDsKKwogCWlmIChsaWtl bHkoIShwLT5mbGFncyAmIFBGX0tUSFJFQUQpKSkgewogCQkqY2hpbGRyZWdzID0gKmN1cnJlbnRf cHRfcmVncygpOwogCQljaGlsZHJlZ3MtPnJlZ3NbMF0gPSAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMKaW5kZXggMThj MDI5MC4uOWQzYzdmMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYworKysg Yi9hcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jCkBAIC0zMTAsOCArMzEwLDggQEAgc3RhdGljIGlu dCBjYWxsX3VuZGVmX2hvb2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJcmV0dXJuIGZuID8gZm4o cmVncywgaW5zdHIpIDogMTsKIH0KIAotc3RhdGljIHZvaWQgZm9yY2Vfc2lnbmFsX2luamVjdChp bnQgc2lnbmFsLCBpbnQgY29kZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCi0JCQkJdW5zaWduZWQg bG9uZyBhZGRyZXNzKQordm9pZCBmb3JjZV9zaWduYWxfaW5qZWN0KGludCBzaWduYWwsIGludCBj b2RlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCSB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCiB7 CiAJc2lnaW5mb190IGluZm87CiAJdm9pZCBfX3VzZXIgKnBjID0gKHZvaWQgX191c2VyICopaW5z dHJ1Y3Rpb25fcG9pbnRlcihyZWdzKTsKQEAgLTMyNSw3ICszMjUsNyBAQCBzdGF0aWMgdm9pZCBm b3JjZV9zaWduYWxfaW5qZWN0KGludCBzaWduYWwsIGludCBjb2RlLCBzdHJ1Y3QgcHRfcmVncyAq cmVncywKIAkJZGVzYyA9ICJpbGxlZ2FsIG1lbW9yeSBhY2Nlc3MiOwogCQlicmVhazsKIAlkZWZh dWx0OgotCQlkZXNjID0gImJhZCBtb2RlIjsKKwkJZGVzYyA9ICJ1bmtub3duIG9yIHVucmVjb3Zl cmFibGUgZXJyb3IiOwogCQlicmVhazsKIAl9CiAKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprdm1hcm0gbWFpbGluZyBsaXN0Cmt2bWFy bUBsaXN0cy5jcy5jb2x1bWJpYS5lZHUKaHR0cHM6Ly9saXN0cy5jcy5jb2x1bWJpYS5lZHUvbWFp bG1hbi9saXN0aW5mby9rdm1hcm0K