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 Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DE78EC433F5 for ; Sun, 12 Dec 2021 10:42:01 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4JBh602ZKXz3036 for ; Sun, 12 Dec 2021 21:42:00 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=csgroup.eu (client-ip=2a01:111:f400:7e18::603; helo=fra01-pr2-obe.outbound.protection.outlook.com; envelope-from=christophe.leroy@csgroup.eu; receiver=) Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on0603.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e18::603]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4JBh5Q3N6rz2xsd for ; Sun, 12 Dec 2021 21:41:29 +1100 (AEDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XOJj6NF9moKFzvGygoqnYqAu8AMUK2lPf4s9gBRc+Qfd86+/2lRKOJTs9vmN+269RL7qZeg2tZoqBUCuaqb/pMy8/dnsxYRR/9k23I2aM+lBJQo2b1QJRG+FVGIodQOzOVE82dt/0SHf9cnpzEsAg/2RVeuVOChC/D3KhTzWo0nE+x0rZDDLVq9AgcLuLVM3o4FHsV3PEd9JNkdBACYnPibhQ2hrjSkPToZ9DRc/nWemryla72sRQXkkZEvIVmW6D71M2+HNiiYaJ2XwzsPXU+sRe6+6FGpH9Vf8UewNiItkQaN6w4yg8E3p03XvYqFGXPztUOEiWVRK2e4MNXJzeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=glxJJkKKa7lTVzXU8QnPAw2Vh0D1iM0MwkD7uDx3BDQ=; b=QhT6gStB+dXvK4xoCDGd7UdLzqoiKvOS4i22gRZcwBUqZOTSK1xasSd8sb2qsvVLNDmFuLyynZyfzYLNOOSJGH7LUIwfubZFTY0qQbQwcSOAJ/lRAdIICpd6c6NI/ZAdmPlIGv3zUe5hoQAr4izlEKciQaSilHkVuP4LB3ipZYLqhwIwHojV/zBaORX6W44E9ktr2BYS+qRJPIFCUuHV2pW1NHDLctkJgVtIIHas/3UsIpneSJ5IDfG3PpAeZ1nTIaPm+bYJg9xHBouSbAELyPocO1ctd4tEIgp5Z0daNOzDi415BUqs0HEPEbre3ZwfSgVvUsCnD0cAevvbJuQaeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by MR1P264MB1987.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.12; Sun, 12 Dec 2021 10:41:05 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::fc67:d895:7965:663f]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::fc67:d895:7965:663f%2]) with mapi id 15.20.4778.017; Sun, 12 Dec 2021 10:41:05 +0000 From: Christophe Leroy To: Russell Currey , "linuxppc-dev@lists.ozlabs.org" Subject: Re: [PATCH v2 2/2] powerpc/module_64: Use patch_memory() to apply relocations to loaded modules Thread-Topic: [PATCH v2 2/2] powerpc/module_64: Use patch_memory() to apply relocations to loaded modules Thread-Index: AQHX7vRi+OSMijx7p0OFA3RjcMxPRawuq50A Date: Sun, 12 Dec 2021 10:41:05 +0000 Message-ID: <12d81cfc-1c76-705f-af83-1b424eff64a0@csgroup.eu> References: <20211212010357.16280-1-ruscur@russell.cc> <20211212010357.16280-2-ruscur@russell.cc> In-Reply-To: <20211212010357.16280-2-ruscur@russell.cc> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d68e2a6-459f-453d-32f8-08d9bd5be669 x-ms-traffictypediagnostic: MR1P264MB1987:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SSqECtDPthkrkLqrJeiJUf6a8vfBFkev88tG1kkcAvb2Qh4x017yE9lSteMqcFIcR0cGZm2eaTludjBpCSfHj8uGP+Rtx8OYcImK0gyPaXjPTWTFQbtGsX56o8eYspWlr3kpGzdVFYzPnh1QkvUpyBz6GgZ/mxqUYb0VOTc09TnfIH6vpUgpHd1u4bICw0bzCqtV7ULDQ2yxp+iRn8zY5LXF5ZyLUfBabT71+kpGHbXE9yUJdxwP7EkihtSaTJew+qKoKDdz2n8MqoAWghDuUD3H5Vo/GB5sBvsR58mUIApIDeVlvwxc53n21ZCp9DyzjlcfqCzyLwXYG7oXddvms+hZI5fs4HMC3oP+1SfPpC4C9ClQkxDb0LiyMu4nO7MaLrtXe3nB7zcdIQ4YttvHzjJey5sED3Or4nOmG7/dxZ4SotyxmTz1ruC1HAwH5LgyAtgV75gnPpt6p2mhyfWa8Q3+C/UK5o96Qa2KSgFma88RcosNXuwHyPF4vcVS2m9NIZtfLoOi60X+YPlTwWFBkKoZvRen5v27NnVS+OZxdBCqVjC26TbJhN3I19LSTwwCp+uCp5oSMAU6QnLjkBf23TNbIdi1MTMtakJHjyrENM0iGSSaA5MOToZS6mr6HBcsdPMaxJZ5ZFw1Z+P1xmy1skBvzLWKCC3B1hdyct9UFjXJNNgBTelzqw1vntNolmHvackbB3MlcBAANfpd4YAS1mhaGvmF313wtG9w6R9+5DrMDx9I0HCBhIQbtk+JkgilIscP4oFQLBiJrBJs6fey3vDrN3sUWau4Ygld+N7hUfBL7cYZWc4DlTc9Z6FWVDRbfsFMpLit5Re35xoeEpwlw7XIUbwtaTdFZw9f4o62KVI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(366004)(38070700005)(76116006)(4326008)(8936002)(122000001)(66476007)(66556008)(8676002)(64756008)(2616005)(31696002)(66574015)(186003)(38100700002)(110136005)(66446008)(316002)(66946007)(44832011)(71200400001)(5660300002)(54906003)(91956017)(26005)(6512007)(36756003)(83380400001)(6506007)(30864003)(508600001)(6486002)(86362001)(2906002)(31686004)(966005)(43740500002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bkV6RW1BS3JwN3ZvQ3dGYU9raitVTlNXSEpaTXEySWZwVFdyaFgvemNFV1Rr?= =?utf-8?B?ckpwVXhwOWhHRWdRYWoxQ3dIbXdKcTVDcmczVGpmK1BWTkxXeS9KWU84TDJx?= =?utf-8?B?L1FtdUJDWm9KSUZmWXBJRHFTcVJrb3pWTjdCY1RCMEVqcGVDQzRKRzM5RUJy?= =?utf-8?B?WExTV1BOOEpCaXVmaEJkQlFZUUJhQVgzZkluaXg5Sjd3ZFVtN0t5U1NWVGdW?= =?utf-8?B?cDQzdVp5clRTaXhhdDgwTDczREYwSy9Eb1lmcFB5UTFRN1hHeGxrdWNEMDhZ?= =?utf-8?B?UVIvV2JUSFZjVmc1SVFqTlZJc0d6NlhGQ3JzQ2pQc3pTNTFzc1piUGtJWitr?= =?utf-8?B?TFE2L2hEQVVGM252V2F1UkxkSnNQU29kQ0p3ZUpSdnhtd0JURG5ldjZFSGZB?= =?utf-8?B?TWZlUGlDK0FOMWxJZTkvQTVhVDQ0a1dOWDFEUnE5RUdVUTJyZUw0SmYyaEoz?= =?utf-8?B?TE14b3UvSmZzcW9yS1Q0QnVpb2ZJeXpNeGVUK3Q0WTBXdlI3anpzb0hUZEpL?= =?utf-8?B?TTMrRmRsYU9UYS9mTUtCUmhEdjBNSHFTZVh4SzNseEdzK05GN0lFRGxWZmVU?= =?utf-8?B?L0tlTjBaSCt1Vzg1WTRZY3poUDQ4NW1uV0R0aWxJNFdKbXdrWmpRSURHU005?= =?utf-8?B?ZFg2L0tuakhvVlZUK2NsWjdYZmNwZExxamRJSHpCeUVMVFRLTWVjZlZXQUJB?= =?utf-8?B?dTJzQzh6VDd4aEFnWlk4OHVVUDd5N3NlcHZjTFYzM3JCS3dReWVFb1dmRnlu?= =?utf-8?B?L0YvR0VDWGlYMlNOa3ZwVDdkZm4yVTBnZ05NM3ZRVDRMQlVjN3N3UEJUR1Vi?= =?utf-8?B?THJxNmk1VmVnY2hrNUdLZXlZZkdObTY4NHZSeFo5QWdtUUdWdmhjRXpWTGNa?= =?utf-8?B?SU5RMEw2bCtGYi9xWEI0d2Q5c21QKzd4Sy9DVmlRTzVaU0ovVGxVUXplaHZ0?= =?utf-8?B?S2RlNFVzb1ltVHVpQjh0RExSWHF2U1huNUVtRXhFcXlDcnNEd3hqOWV1d1lP?= =?utf-8?B?cS9TSndQMDE2S1RxNmVRZ1VUOTN4czRqQWQwai8rTGxkclRNQkRka0FxalR6?= =?utf-8?B?NGMvcjBaYTFObTRxbzRJbVdvRHNMSm5ZWXV4cGFwT3hxK2ZKQUFTYlFZbVpE?= =?utf-8?B?Q3R0TVlmZmo0ZDFQM21Yc0UrNWgrbng4VnBOa2xvVFVNcmZwdFd1UVl4d1NT?= =?utf-8?B?QkVCS1VIWDQ4TmFZVEJQTVZUMGtJdnpCQ0Q0VEpta0R0NVFnL2lDUGFycUxL?= =?utf-8?B?QjJQcXJEYityVjRaQ0Nrakttb0dsVVNjZmpsdHRvWVdvd2QySVUzYndTM0Vv?= =?utf-8?B?TTJRNi9YcFI5TEcxRjEyWGJOZ3hnK1YxVUtjeU42eGt3Z1VMd0E0T0NqTE5h?= =?utf-8?B?YU5CMTQrRE5xcEpuQUpUN0l4S1Y2QUtXZkwxT2o2ZlEyRkpYdTdndzBKUXI2?= =?utf-8?B?ODhkdlBKaWhidW5FMHkyQkdvcFpCcHphNGRPOUdmak1VdEVqR3JkUDRCdUVL?= =?utf-8?B?Q3FHMWZML3lqTmY0NmR4WUxXLzJkZXpzR3p1QVRtSUt0aGx0TUZUTXpyQWFz?= =?utf-8?B?LzBDby81U0J1ZG1mUFBhbm9DallNcU4vSmI5V056RmZDUWx1dkdJSlh4Z0Zu?= =?utf-8?B?TmtOaU1Zak1ZZVc4KzI3UERmdzh3UlcrdGl6K1pJRDRvUHJCaE1tY2hDbkpy?= =?utf-8?B?UEJxbFhpMzRjV0psT05RSWI0bG9LczEzQ2VoOUIvWEpKMG9nNVlBakU0Qitz?= =?utf-8?B?dG9aYmtNZ2xlTlQ0NlpJWmZVaGQ2VWluZi9YSm1EVk1KNk1BalJNMXF0cW91?= =?utf-8?B?QWVBcFNRTTZtcmZTYVY4ZlRrdmlQaS9VRUdmQnc5RzhUd1EyTmEzbks5SGZk?= =?utf-8?B?MlZLOUUreVB6YS9PZkFPTkZSZ1hTWDVEVnlsZ2IwQzlZcTV2YVpLaythNytO?= =?utf-8?B?Zkpka0tzbmdYS0pNdXc4QURuMitJMXBmNjBXTmZFL2w1VmZVai92T2M2cjc3?= =?utf-8?B?eXkwU1ljdURGbDM4QzAwdWpBaFROdC8rU1NZeS9EN2ZlNVJqbXJmWFphNUti?= =?utf-8?B?OVlBcnpjT3h3K3Nnbk90aWM1Wm40aVZiUm5QYmFqOXc4TVJvNXR6aUd4UU9L?= =?utf-8?B?aXJINDUyTTJ5WjdjNXVHY1ZBRGs3TzZEem1zMUF6R2dGcHhxeUg4dEFMcG5v?= =?utf-8?B?YlR0R3VRcEs3ZDlheFI2cUpsaW5RTHNHZCtMVlJNSmx6aGpVOGdrZWRSSlpQ?= =?utf-8?Q?9Qne4gLGnugZpYRIcj44PZf9X8s3NRzHZV4l/zW5pc=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <1C95128DCE7ADB4A8A4E5AB969AE1A6E@FRAP264.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 0d68e2a6-459f-453d-32f8-08d9bd5be669 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2021 10:41:05.4057 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6gqImQpAvMvuvlQoj8Xv4wgmPiK9ewcj/52cl5Azl2OPcw/IkCLrMHTISO3zaML+7RZRFlhWglqhK+TtIXpQuFHU6nPuW3BLj8Z/Coj6dv4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR1P264MB1987 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "jniethe5@gmail.com" , "naveen.n.rao@linux.vnet.ibm.com" , "joe.lawrence@redhat.com" , "joel@jms.id.au" Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" DQoNCkxlIDEyLzEyLzIwMjEgw6AgMDI6MDMsIFJ1c3NlbGwgQ3VycmV5IGEgw6ljcml0wqA6DQo+ IExpdmVwYXRjaGluZyBhIGxvYWRlZCBtb2R1bGUgaW52b2x2ZXMgYXBwbHlpbmcgcmVsb2NhdGlv bnMgdGhyb3VnaA0KPiBhcHBseV9yZWxvY2F0ZV9hZGQoKSwgd2hpY2ggYXR0ZW1wdHMgdG8gd3Jp dGUgdG8gcmVhZC1vbmx5IG1lbW9yeSB3aGVuDQo+IENPTkZJR19TVFJJQ1RfTU9EVUxFX1JXWD15 LiAgV29yayBhcm91bmQgdGhpcyBieSBwZXJmb3JtaW5nIHRoZXNlDQo+IHdyaXRlcyB0aHJvdWdo IHRoZSB0ZXh0IHBva2UgYXJlYSBieSB1c2luZyBwYXRjaF9tZW1vcnkoKS4NCj4gDQo+IFNpbWls YXIgdG8geDg2IGFuZCBzMzkwIGltcGxlbWVudGF0aW9ucywgYXBwbHlfcmVsb2NhdGVfYWRkKCkg bm93DQo+IGNob29zZXMgdG8gdXNlIHBhdGNoX21lbW9yeSgpIG9yIG1lbWNweSgpIGRlcGVuZGlu ZyBvbiBpZiB0aGUgbW9kdWxlDQo+IGlzIGxvYWRlZCBvciBub3QuICBXaXRob3V0IFNUUklDVF9L RVJORUxfUldYLCBwYXRjaF9tZW1vcnkoKSBpcyBqdXN0DQo+IG1lbWNweSgpLCBzbyB0aGVyZSBz aG91bGQgYmUgbm8gcGVyZm9ybWFuY2UgaW1wYWN0Lg0KPiANCj4gV2hpbGUgbWFueSByZWxvY2F0 aW9uIHR5cGVzIG1heSBub3QgYmUgYXBwbGllZCBpbiBhIGxpdmVwYXRjaA0KPiBjb250ZXh0LCBj b21wcmVoZW5zaXZlbHkgaGFuZGxpbmcgdGhlbSBwcmV2ZW50cyBhbnkgaXNzdWVzIGluIGZ1dHVy ZSwNCj4gd2l0aCBubyBwZXJmb3JtYW5jZSBwZW5hbHR5IGFzIHRoZSB0ZXh0IHBva2UgYXJlYSBp cyBvbmx5IHVzZWQgd2hlbg0KPiBuZWNlc3NhcnkuDQo+IA0KPiBjcmVhdGVfc3R1YigpIGFuZCBj cmVhdGVfZnRyYWNlX3N0dWIoKSBhcmUgbW9kaWZpZWQgdG8gZmlyc3Qgd3JpdGUNCj4gdG8gdGhl IHN0YWNrIHNvIHRoYXQgdGhlIHBwYzY0X3N0dWJfZW50cnkgc3RydWN0IG9ubHkgdGFrZXMgb25l DQo+IHdyaXRlKCkgdG8gbW9kaWZ5LCBzYXZpbmcgc2V2ZXJhbCBtYXAvdW5tYXAvZmx1c2ggb3Bl cmF0aW9ucw0KPiB3aGVuIHVzZSBvZiBwYXRjaF9tZW1vcnkoKSBpcyBuZWNlc3NhcnkuDQo+IA0K PiBUaGlzIHBhdGNoIGFsc28gY29udGFpbnMgc29tZSB0cml2aWFsIHdoaXRlc3BhY2UgZml4ZXMu DQo+IA0KPiBGaXhlczogYzM1NzE3YzcxZTk4ICgicG93ZXJwYzogU2V0IEFSQ0hfSEFTX1NUUklD VF9NT0RVTEVfUldYIikNCj4gUmVwb3J0ZWQtYnk6IEpvZSBMYXdyZW5jZSA8am9lLmxhd3JlbmNl QHJlZGhhdC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgQ3VycmV5IDxydXNjdXJAcnVz c2VsbC5jYz4NCj4gLS0tDQo+IHYyOiBObyBjaGFuZ2VzLg0KPiANCj4gU29tZSBkaXNjdXNzaW9u IGhlcmU6aHR0cHM6Ly9naXRodWIuY29tL2xpbnV4cHBjL2lzc3Vlcy9pc3N1ZXMvMzc1DQo+IGZv ci1zdGFibGUgdmVyc2lvbiB1c2luZyBwYXRjaF9pbnN0cnVjdGlvbigpOg0KPiBodHRwczovL2xv cmUua2VybmVsLm9yZy9saW51eHBwYy1kZXYvMjAyMTExMjMwODE1MjAuMTg4NDMtMS1ydXNjdXJA cnVzc2VsbC5jYy8NCj4gDQo+ICAgYXJjaC9wb3dlcnBjL2tlcm5lbC9tb2R1bGVfNjQuYyB8IDE1 NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAx MDQgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXJj aC9wb3dlcnBjL2tlcm5lbC9tb2R1bGVfNjQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbW9kdWxl XzY0LmMNCj4gaW5kZXggNmJhYTY3NmU3Y2I2Li4yYTE0Njc1MGZhNmYgMTAwNjQ0DQo+IC0tLSBh L2FyY2gvcG93ZXJwYy9rZXJuZWwvbW9kdWxlXzY0LmMNCj4gKysrIGIvYXJjaC9wb3dlcnBjL2tl cm5lbC9tb2R1bGVfNjQuYw0KPiBAQCAtMzUwLDExICszNTAsMTEgQEAgc3RhdGljIHUzMiBzdHVi X2luc25zW10gPSB7DQo+ICAgICovDQo+ICAgc3RhdGljIGlubGluZSBpbnQgY3JlYXRlX2Z0cmFj ZV9zdHViKHN0cnVjdCBwcGM2NF9zdHViX2VudHJ5ICplbnRyeSwNCj4gICAJCQkJCXVuc2lnbmVk IGxvbmcgYWRkciwNCj4gLQkJCQkJc3RydWN0IG1vZHVsZSAqbWUpDQo+ICsJCQkJCXN0cnVjdCBt b2R1bGUgKm1lLA0KPiArCQkJCQl2b2lkICooKndyaXRlKSh2b2lkICosIGNvbnN0IHZvaWQgKiwg c2l6ZV90KSkNCg0KSSByZWFsbHkgZGlzbGlrZSB0aGlzIHdyaXRlKCkgcGFyYW1ldGVyIHRvIHRo ZSBmdW5jdGlvbi4NCg0KSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZGVmaW5lIGEgc3Rh dGljIHN1Yi1mdW5jdGlvbiB0aGF0IHRha2VzIA0Kd3JpdGUoKSdzIHBhcmFtZXRlcnMgcGx1cyB0 aGUgJ3N0cnVjdCBtb2R1bGUgKm1lJyBhbmQgaGF2ZSBpdCBjYWxsIA0KZWl0aGVyIHBhdGNoX21l bW9yeSgpIG9yIG1lbWNweSgpIGJhc2VkIG9uIG1lLT5zdGF0ZS4NCg0KPiAgIHsNCj4gICAJbG9u ZyByZWxhZGRyOw0KPiAtDQo+IC0JbWVtY3B5KGVudHJ5LT5qdW1wLCBzdHViX2luc25zLCBzaXpl b2Yoc3R1Yl9pbnNucykpOw0KPiArCXN0cnVjdCBwcGM2NF9zdHViX2VudHJ5IHRtcF9lbnRyeTsN Cj4gICANCj4gICAJLyogU3R1YiB1c2VzIGFkZHJlc3MgcmVsYXRpdmUgdG8ga2VybmVsIHRvYyAo ZnJvbSB0aGUgcGFjYSkgKi8NCj4gICAJcmVsYWRkciA9IGFkZHIgLSBrZXJuZWxfdG9jX2FkZHIo KTsNCj4gQEAgLTM2NCwxMiArMzY0LDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNyZWF0ZV9mdHJh Y2Vfc3R1YihzdHJ1Y3QgcHBjNjRfc3R1Yl9lbnRyeSAqZW50cnksDQo+ICAgCQlyZXR1cm4gMDsN Cj4gICAJfQ0KPiAgIA0KPiAtCWVudHJ5LT5qdW1wWzFdIHw9IFBQQ19IQShyZWxhZGRyKTsNCj4g LQllbnRyeS0+anVtcFsyXSB8PSBQUENfTE8ocmVsYWRkcik7DQo+ICsJLyoNCj4gKwkgKiBJbiBj YXNlIEBlbnRyeSBpcyB3cml0ZS1wcm90ZWN0ZWQsIG1ha2Ugb3VyIGNoYW5nZXMgb24gdGhlIHN0 YWNrDQo+ICsJICogc28gd2UgY2FuIHVwZGF0ZSB0aGUgd2hvbGUgc3RydWN0IGluIG9uZSB3cml0 ZSgpLg0KPiArCSAqLw0KPiArCW1lbWNweSgmdG1wX2VudHJ5LCBlbnRyeSwgc2l6ZW9mKHN0cnVj dCBwcGM2NF9zdHViX2VudHJ5KSk7DQoNClRoYXQgY29weSBzZWVtcyB1bm5lY2Vzc2FyeSwgZW50 cnkgaXMgYSBzdHJ1Y3Qgd2l0aCB0aHJlZSBmaWVsZHMgYW5kIHlvdSANCmFyZSBzZXR0aW5nIGFs bCB0aHJlZSBmaWVsZCBiZWxvdy4NCg0KPiAgIA0KPiArCW1lbWNweSgmdG1wX2VudHJ5Lmp1bXAs IHN0dWJfaW5zbnMsIHNpemVvZihzdHViX2luc25zKSk7DQo+ICsJdG1wX2VudHJ5Lmp1bXBbMV0g fD0gUFBDX0hBKHJlbGFkZHIpOw0KPiArCXRtcF9lbnRyeS5qdW1wWzJdIHw9IFBQQ19MTyhyZWxh ZGRyKTsNCj4gICAJLyogRXZlbnRob3VnaCB3ZSBkb24ndCB1c2UgZnVuY2RhdGEgaW4gdGhlIHN0 dWIsIGl0J3MgbmVlZGVkIGVsc2V3aGVyZS4gKi8NCj4gLQllbnRyeS0+ZnVuY2RhdGEgPSBmdW5j X2Rlc2MoYWRkcik7DQo+IC0JZW50cnktPm1hZ2ljID0gU1RVQl9NQUdJQzsNCj4gKwl0bXBfZW50 cnkuZnVuY2RhdGEgPSBmdW5jX2Rlc2MoYWRkcik7DQo+ICsJdG1wX2VudHJ5Lm1hZ2ljID0gU1RV Ql9NQUdJQzsNCj4gKw0KPiArCXdyaXRlKGVudHJ5LCAmdG1wX2VudHJ5LCBzaXplb2Yoc3RydWN0 IHBwYzY0X3N0dWJfZW50cnkpKTsNCj4gICANCj4gICAJcmV0dXJuIDE7DQo+ICAgfQ0KPiBAQCAt MzkyLDcgKzQwMCw4IEBAIHN0YXRpYyBib29sIGlzX21wcm9maWxlX2Z0cmFjZV9jYWxsKGNvbnN0 IGNoYXIgKm5hbWUpDQo+ICAgI2Vsc2UNCj4gICBzdGF0aWMgaW5saW5lIGludCBjcmVhdGVfZnRy YWNlX3N0dWIoc3RydWN0IHBwYzY0X3N0dWJfZW50cnkgKmVudHJ5LA0KPiAgIAkJCQkJdW5zaWdu ZWQgbG9uZyBhZGRyLA0KPiAtCQkJCQlzdHJ1Y3QgbW9kdWxlICptZSkNCj4gKwkJCQkJc3RydWN0 IG1vZHVsZSAqbWUsDQo+ICsJCQkJCXZvaWQgKigqd3JpdGUpKHZvaWQgKiwgY29uc3Qgdm9pZCAq LCBzaXplX3QpKQ0KPiAgIHsNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiBAQCAtNDE5LDE0ICs0 MjgsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgY3JlYXRlX3N0dWIoY29uc3QgRWxmNjRfU2hkciAq c2VjaGRycywNCj4gICAJCQkgICAgICBzdHJ1Y3QgcHBjNjRfc3R1Yl9lbnRyeSAqZW50cnksDQo+ ICAgCQkJICAgICAgdW5zaWduZWQgbG9uZyBhZGRyLA0KPiAgIAkJCSAgICAgIHN0cnVjdCBtb2R1 bGUgKm1lLA0KPiAtCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSkNCj4gKwkJCSAgICAgIGNvbnN0 IGNoYXIgKm5hbWUsDQo+ICsJCQkgICAgICB2b2lkICooKndyaXRlKSh2b2lkICosIGNvbnN0IHZv aWQgKiwgc2l6ZV90KSkNCj4gICB7DQo+ICAgCWxvbmcgcmVsYWRkcjsNCj4gKwlzdHJ1Y3QgcHBj NjRfc3R1Yl9lbnRyeSB0bXBfZW50cnk7DQo+ICAgDQo+ICAgCWlmIChpc19tcHJvZmlsZV9mdHJh Y2VfY2FsbChuYW1lKSkNCj4gLQkJcmV0dXJuIGNyZWF0ZV9mdHJhY2Vfc3R1YihlbnRyeSwgYWRk ciwgbWUpOw0KPiAtDQo+IC0JbWVtY3B5KGVudHJ5LT5qdW1wLCBwcGM2NF9zdHViX2luc25zLCBz aXplb2YocHBjNjRfc3R1Yl9pbnNucykpOw0KPiArCQlyZXR1cm4gY3JlYXRlX2Z0cmFjZV9zdHVi KGVudHJ5LCBhZGRyLCBtZSwgd3JpdGUpOw0KPiAgIA0KPiAgIAkvKiBTdHViIHVzZXMgYWRkcmVz cyByZWxhdGl2ZSB0byByMi4gKi8NCj4gICAJcmVsYWRkciA9ICh1bnNpZ25lZCBsb25nKWVudHJ5 IC0gbXlfcjIoc2VjaGRycywgbWUpOw0KPiBAQCAtNDM3LDEwICs0NDYsMTkgQEAgc3RhdGljIGlu bGluZSBpbnQgY3JlYXRlX3N0dWIoY29uc3QgRWxmNjRfU2hkciAqc2VjaGRycywNCj4gICAJfQ0K PiAgIAlwcl9kZWJ1ZygiU3R1YiAlcCBnZXQgZGF0YSBmcm9tIHJlbGFkZHIgJWxpXG4iLCBlbnRy eSwgcmVsYWRkcik7DQo+ICAgDQo+IC0JZW50cnktPmp1bXBbMF0gfD0gUFBDX0hBKHJlbGFkZHIp Ow0KPiAtCWVudHJ5LT5qdW1wWzFdIHw9IFBQQ19MTyhyZWxhZGRyKTsNCj4gLQllbnRyeS0+ZnVu Y2RhdGEgPSBmdW5jX2Rlc2MoYWRkcik7DQo+IC0JZW50cnktPm1hZ2ljID0gU1RVQl9NQUdJQzsN Cj4gKwkvKg0KPiArCSAqIEluIGNhc2UgQGVudHJ5IGlzIHdyaXRlLXByb3RlY3RlZCwgbWFrZSBv dXIgY2hhbmdlcyBvbiB0aGUgc3RhY2sNCj4gKwkgKiBzbyB3ZSBjYW4gdXBkYXRlIHRoZSB3aG9s ZSBzdHJ1Y3QgaW4gb25lIHdyaXRlKCkuDQo+ICsJICovDQo+ICsJbWVtY3B5KCZ0bXBfZW50cnks IGVudHJ5LCBzaXplb2Yoc3RydWN0IHBwYzY0X3N0dWJfZW50cnkpKTsNCj4gKw0KPiArCW1lbWNw eSgmdG1wX2VudHJ5Lmp1bXAsIHBwYzY0X3N0dWJfaW5zbnMsIHNpemVvZihwcGM2NF9zdHViX2lu c25zKSk7DQo+ICsJdG1wX2VudHJ5Lmp1bXBbMF0gfD0gUFBDX0hBKHJlbGFkZHIpOw0KPiArCXRt cF9lbnRyeS5qdW1wWzFdIHw9IFBQQ19MTyhyZWxhZGRyKTsNCj4gKwl0bXBfZW50cnkuZnVuY2Rh dGEgPSBmdW5jX2Rlc2MoYWRkcik7DQo+ICsJdG1wX2VudHJ5Lm1hZ2ljID0gU1RVQl9NQUdJQzsN Cj4gKw0KPiArCXdyaXRlKGVudHJ5LCAmdG1wX2VudHJ5LCBzaXplb2Yoc3RydWN0IHBwYzY0X3N0 dWJfZW50cnkpKTsNCj4gICANCj4gICAJcmV0dXJuIDE7DQo+ICAgfQ0KPiBAQCAtNDUwLDcgKzQ2 OCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNyZWF0ZV9zdHViKGNvbnN0IEVsZjY0X1NoZHIgKnNl Y2hkcnMsDQo+ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc3R1Yl9mb3JfYWRkcihjb25zdCBFbGY2 NF9TaGRyICpzZWNoZHJzLA0KPiAgIAkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHIsDQo+ICAgCQkJ CSAgIHN0cnVjdCBtb2R1bGUgKm1lLA0KPiAtCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpDQo+ICsJ CQkJICAgY29uc3QgY2hhciAqbmFtZSwNCj4gKwkJCQkgICB2b2lkICooKndyaXRlKSh2b2lkICos IGNvbnN0IHZvaWQgKiwgc2l6ZV90KSkNCj4gICB7DQo+ICAgCXN0cnVjdCBwcGM2NF9zdHViX2Vu dHJ5ICpzdHViczsNCj4gICAJdW5zaWduZWQgaW50IGksIG51bV9zdHViczsNCj4gQEAgLTQ2Nyw3 ICs0ODYsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzdHViX2Zvcl9hZGRyKGNvbnN0IEVsZjY0 X1NoZHIgKnNlY2hkcnMsDQo+ICAgCQkJcmV0dXJuICh1bnNpZ25lZCBsb25nKSZzdHVic1tpXTsN Cj4gICAJfQ0KPiAgIA0KPiAtCWlmICghY3JlYXRlX3N0dWIoc2VjaGRycywgJnN0dWJzW2ldLCBh ZGRyLCBtZSwgbmFtZSkpDQo+ICsJaWYgKCFjcmVhdGVfc3R1YihzZWNoZHJzLCAmc3R1YnNbaV0s IGFkZHIsIG1lLCBuYW1lLCB3cml0ZSkpDQo+ICAgCQlyZXR1cm4gMDsNCj4gICANCj4gICAJcmV0 dXJuICh1bnNpZ25lZCBsb25nKSZzdHVic1tpXTsNCj4gQEAgLTQ5NiwxNSArNTE1LDIwIEBAIHN0 YXRpYyBpbnQgcmVzdG9yZV9yMihjb25zdCBjaGFyICpuYW1lLCB1MzIgKmluc3RydWN0aW9uLCBz dHJ1Y3QgbW9kdWxlICptZSkNCj4gICAJCXJldHVybiAwOw0KPiAgIAl9DQo+ICAgCS8qIGxkIHIy LFIyX1NUQUNLX09GRlNFVChyMSkgKi8NCj4gLQkqaW5zdHJ1Y3Rpb24gPSBQUENfSU5TVF9MRF9U T0M7DQo+ICsJaWYgKG1lLT5zdGF0ZSA9PSBNT0RVTEVfU1RBVEVfVU5GT1JNRUQpDQo+ICsJCSpp bnN0cnVjdGlvbiA9IFBQQ19JTlNUX0xEX1RPQzsNCj4gKwllbHNlDQo+ICsJCXBhdGNoX2luc3Ry dWN0aW9uKGluc3RydWN0aW9uLCBwcGNfaW5zdChQUENfSU5TVF9MRF9UT0MpKTsNCj4gKw0KDQpX b3VsZCBiZSBiZXR0ZXIgaWYgdGhhdCBodW5rIHdhcyBmb2xsb3dpbmcgdGhlIHNhbWUgYXBwcm9h Y2ggYXMgb3RoZXIgDQpwbGFjZXMuDQoNCj4gICAJcmV0dXJuIDE7DQo+ICAgfQ0KPiAgIA0KPiAt aW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJzLA0KPiAtCQkgICAgICAg Y29uc3QgY2hhciAqc3RydGFiLA0KPiAtCQkgICAgICAgdW5zaWduZWQgaW50IHN5bWluZGV4LA0K PiAtCQkgICAgICAgdW5zaWduZWQgaW50IHJlbHNlYywNCj4gLQkJICAgICAgIHN0cnVjdCBtb2R1 bGUgKm1lKQ0KPiArc3RhdGljIGludCBfX2FwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpz ZWNoZHJzLA0KPiArCQkJCWNvbnN0IGNoYXIgKnN0cnRhYiwNCj4gKwkJCQl1bnNpZ25lZCBpbnQg c3ltaW5kZXgsDQo+ICsJCQkJdW5zaWduZWQgaW50IHJlbHNlYywNCj4gKwkJCQlzdHJ1Y3QgbW9k dWxlICptZSwNCj4gKwkJCQl2b2lkICooKndyaXRlKSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpz cmMsIHNpemVfdCBsZW4pKQ0KPiAgIHsNCj4gICAJdW5zaWduZWQgaW50IGk7DQo+ICAgCUVsZjY0 X1JlbGEgKnJlbGEgPSAodm9pZCAqKXNlY2hkcnNbcmVsc2VjXS5zaF9hZGRyOw0KPiBAQCAtNTQ0 LDE2ICs1NjgsMTcgQEAgaW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJz LA0KPiAgIAkJc3dpdGNoIChFTEY2NF9SX1RZUEUocmVsYVtpXS5yX2luZm8pKSB7DQo+ICAgCQlj YXNlIFJfUFBDNjRfQUREUjMyOg0KPiAgIAkJCS8qIFNpbXBseSBzZXQgaXQgKi8NCj4gLQkJCSoo dTMyICopbG9jYXRpb24gPSB2YWx1ZTsNCj4gKwkJCXdyaXRlKGxvY2F0aW9uLCAmdmFsdWUsIDQp Ow0KPiAgIAkJCWJyZWFrOw0KPiAgIA0KPiAgIAkJY2FzZSBSX1BQQzY0X0FERFI2NDoNCj4gICAJ CQkvKiBTaW1wbHkgc2V0IGl0ICovDQo+IC0JCQkqKHVuc2lnbmVkIGxvbmcgKilsb2NhdGlvbiA9 IHZhbHVlOw0KPiArCQkJd3JpdGUobG9jYXRpb24sICZ2YWx1ZSwgOCk7DQo+ICAgCQkJYnJlYWs7 DQo+ICAgDQo+ICAgCQljYXNlIFJfUFBDNjRfVE9DOg0KPiAtCQkJKih1bnNpZ25lZCBsb25nICop bG9jYXRpb24gPSBteV9yMihzZWNoZHJzLCBtZSk7DQo+ICsJCQl2YWx1ZSA9IG15X3IyKHNlY2hk cnMsIG1lKTsNCj4gKwkJCXdyaXRlKGxvY2F0aW9uLCAmdmFsdWUsIDgpOw0KPiAgIAkJCWJyZWFr Ow0KPiAgIA0KPiAgIAkJY2FzZSBSX1BQQzY0X1RPQzE2Og0KPiBAQCAtNTY0LDE3ICs1ODksMTcg QEAgaW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJzLA0KPiAgIAkJCQkg ICAgICAgbWUtPm5hbWUsIHZhbHVlKTsNCj4gICAJCQkJcmV0dXJuIC1FTk9FWEVDOw0KPiAgIAkJ CX0NCj4gLQkJCSooKHVpbnQxNl90ICopIGxvY2F0aW9uKQ0KPiAtCQkJCT0gKCooKHVpbnQxNl90 ICopIGxvY2F0aW9uKSAmIH4weGZmZmYpDQo+ICsJCQl2YWx1ZSA9ICgqKCh1aW50MTZfdCAqKSBs b2NhdGlvbikgJiB+MHhmZmZmKQ0KPiAgIAkJCQl8ICh2YWx1ZSAmIDB4ZmZmZik7DQo+ICsJCQl3 cml0ZShsb2NhdGlvbiwgJnZhbHVlLCAyKTsNCj4gICAJCQlicmVhazsNCj4gICANCj4gICAJCWNh c2UgUl9QUEM2NF9UT0MxNl9MTzoNCj4gICAJCQkvKiBTdWJ0cmFjdCBUT0MgcG9pbnRlciAqLw0K PiAgIAkJCXZhbHVlIC09IG15X3IyKHNlY2hkcnMsIG1lKTsNCj4gLQkJCSooKHVpbnQxNl90ICop IGxvY2F0aW9uKQ0KPiAtCQkJCT0gKCooKHVpbnQxNl90ICopIGxvY2F0aW9uKSAmIH4weGZmZmYp DQo+ICsJCQl2YWx1ZSA9ICgqKCh1aW50MTZfdCAqKSBsb2NhdGlvbikgJiB+MHhmZmZmKQ0KPiAg IAkJCQl8ICh2YWx1ZSAmIDB4ZmZmZik7DQo+ICsJCQl3cml0ZShsb2NhdGlvbiwgJnZhbHVlLCAy KTsNCj4gICAJCQlicmVhazsNCj4gICANCj4gICAJCWNhc2UgUl9QUEM2NF9UT0MxNl9EUzoNCj4g QEAgLTU4NSw5ICs2MTAsOSBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVsZjY0X1NoZHIgKnNl Y2hkcnMsDQo+ICAgCQkJCSAgICAgICBtZS0+bmFtZSwgdmFsdWUpOw0KPiAgIAkJCQlyZXR1cm4g LUVOT0VYRUM7DQo+ICAgCQkJfQ0KPiAtCQkJKigodWludDE2X3QgKikgbG9jYXRpb24pDQo+IC0J CQkJPSAoKigodWludDE2X3QgKikgbG9jYXRpb24pICYgfjB4ZmZmYykNCj4gKwkJCXZhbHVlID0g KCooKHVpbnQxNl90ICopIGxvY2F0aW9uKSAmIH4weGZmZmMpDQo+ICAgCQkJCXwgKHZhbHVlICYg MHhmZmZjKTsNCj4gKwkJCXdyaXRlKGxvY2F0aW9uLCAmdmFsdWUsIDIpOw0KPiAgIAkJCWJyZWFr Ow0KPiAgIA0KPiAgIAkJY2FzZSBSX1BQQzY0X1RPQzE2X0xPX0RTOg0KPiBAQCAtNTk4LDE4ICs2 MjMsMTggQEAgaW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJzLA0KPiAg IAkJCQkgICAgICAgbWUtPm5hbWUsIHZhbHVlKTsNCj4gICAJCQkJcmV0dXJuIC1FTk9FWEVDOw0K PiAgIAkJCX0NCj4gLQkJCSooKHVpbnQxNl90ICopIGxvY2F0aW9uKQ0KPiAtCQkJCT0gKCooKHVp bnQxNl90ICopIGxvY2F0aW9uKSAmIH4weGZmZmMpDQo+ICsJCQl2YWx1ZSA9ICgqKCh1aW50MTZf dCAqKSBsb2NhdGlvbikgJiB+MHhmZmZjKQ0KPiAgIAkJCQl8ICh2YWx1ZSAmIDB4ZmZmYyk7DQo+ ICsJCQl3cml0ZShsb2NhdGlvbiwgJnZhbHVlLCAyKTsNCj4gICAJCQlicmVhazsNCj4gICANCj4g ICAJCWNhc2UgUl9QUEM2NF9UT0MxNl9IQToNCj4gICAJCQkvKiBTdWJ0cmFjdCBUT0MgcG9pbnRl ciAqLw0KPiAgIAkJCXZhbHVlIC09IG15X3IyKHNlY2hkcnMsIG1lKTsNCj4gICAJCQl2YWx1ZSA9 ICgodmFsdWUgKyAweDgwMDApID4+IDE2KTsNCj4gLQkJCSooKHVpbnQxNl90ICopIGxvY2F0aW9u KQ0KPiAtCQkJCT0gKCooKHVpbnQxNl90ICopIGxvY2F0aW9uKSAmIH4weGZmZmYpDQo+ICsJCQl2 YWx1ZSA9ICgqKCh1aW50MTZfdCAqKSBsb2NhdGlvbikgJiB+MHhmZmZmKQ0KPiAgIAkJCQl8ICh2 YWx1ZSAmIDB4ZmZmZik7DQo+ICsJCQl3cml0ZShsb2NhdGlvbiwgJnZhbHVlLCAyKTsNCj4gICAJ CQlicmVhazsNCj4gICANCj4gICAJCWNhc2UgUl9QUENfUkVMMjQ6DQo+IEBAIC02MTgsMTQgKzY0 MywxNSBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVsZjY0X1NoZHIgKnNlY2hkcnMsDQo+ICAg CQkJICAgIHN5bS0+c3Rfc2huZHggPT0gU0hOX0xJVkVQQVRDSCkgew0KPiAgIAkJCQkvKiBFeHRl cm5hbDogZ28gdmlhIHN0dWIgKi8NCj4gICAJCQkJdmFsdWUgPSBzdHViX2Zvcl9hZGRyKHNlY2hk cnMsIHZhbHVlLCBtZSwNCj4gLQkJCQkJCXN0cnRhYiArIHN5bS0+c3RfbmFtZSk7DQo+ICsJCQkJ CQkgICAgICBzdHJ0YWIgKyBzeW0tPnN0X25hbWUsIHdyaXRlKTsNCj4gICAJCQkJaWYgKCF2YWx1 ZSkNCj4gICAJCQkJCXJldHVybiAtRU5PRU5UOw0KPiAgIAkJCQlpZiAoIXJlc3RvcmVfcjIoc3Ry dGFiICsgc3ltLT5zdF9uYW1lLA0KPiAgIAkJCQkJCQkodTMyICopbG9jYXRpb24gKyAxLCBtZSkp DQo+ICAgCQkJCQlyZXR1cm4gLUVOT0VYRUM7DQo+IC0JCQl9IGVsc2UNCj4gKwkJCX0gZWxzZSB7 DQo+ICAgCQkJCXZhbHVlICs9IGxvY2FsX2VudHJ5X29mZnNldChzeW0pOw0KPiArCQkJfQ0KPiAg IA0KPiAgIAkJCS8qIENvbnZlcnQgdmFsdWUgdG8gcmVsYXRpdmUgKi8NCj4gICAJCQl2YWx1ZSAt PSAodW5zaWduZWQgbG9uZylsb2NhdGlvbjsNCj4gQEAgLTYzNiwxNCArNjYyLDE1IEBAIGludCBh cHBseV9yZWxvY2F0ZV9hZGQoRWxmNjRfU2hkciAqc2VjaGRycywNCj4gICAJCQl9DQo+ICAgDQo+ ICAgCQkJLyogT25seSByZXBsYWNlIGJpdHMgMiB0aHJvdWdoIDI2ICovDQo+IC0JCQkqKHVpbnQz Ml90ICopbG9jYXRpb24NCj4gLQkJCQk9ICgqKHVpbnQzMl90ICopbG9jYXRpb24gJiB+MHgwM2Zm ZmZmYykNCj4gKwkJCXZhbHVlID0gKCoodWludDMyX3QgKilsb2NhdGlvbiAmIH4weDAzZmZmZmZj KQ0KPiAgIAkJCQl8ICh2YWx1ZSAmIDB4MDNmZmZmZmMpOw0KPiArCQkJd3JpdGUobG9jYXRpb24s ICZ2YWx1ZSwgNCk7DQo+ICAgCQkJYnJlYWs7DQo+ICAgDQo+ICAgCQljYXNlIFJfUFBDNjRfUkVM NjQ6DQo+ICAgCQkJLyogNjQgYml0cyByZWxhdGl2ZSAodXNlZCBieSBmZWF0dXJlcyBmaXh1cHMp ICovDQo+IC0JCQkqbG9jYXRpb24gPSB2YWx1ZSAtICh1bnNpZ25lZCBsb25nKWxvY2F0aW9uOw0K PiArCQkJdmFsdWUgLT0gKHVuc2lnbmVkIGxvbmcpbG9jYXRpb247DQo+ICsJCQl3cml0ZShsb2Nh dGlvbiwgJnZhbHVlLCA4KTsNCj4gICAJCQlicmVhazsNCj4gICANCj4gICAJCWNhc2UgUl9QUEM2 NF9SRUwzMjoNCj4gQEAgLTY1NSw3ICs2ODIsNyBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVs ZjY0X1NoZHIgKnNlY2hkcnMsDQo+ICAgCQkJCSAgICAgICBtZS0+bmFtZSwgKGxvbmcgaW50KXZh bHVlKTsNCj4gICAJCQkJcmV0dXJuIC1FTk9FWEVDOw0KPiAgIAkJCX0NCj4gLQkJCSoodTMyICop bG9jYXRpb24gPSB2YWx1ZTsNCj4gKwkJCXdyaXRlKGxvY2F0aW9uLCAmdmFsdWUsIDQpOw0KPiAg IAkJCWJyZWFrOw0KPiAgIA0KPiAgIAkJY2FzZSBSX1BQQzY0X1RPQ1NBVkU6DQo+IEBAIC02NzYs NyArNzAzLDcgQEAgaW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGY2NF9TaGRyICpzZWNoZHJzLA0K PiAgIAkJCQlicmVhazsNCj4gICAJCQkvKg0KPiAgIAkJCSAqIENoZWNrIGZvciB0aGUgbGFyZ2Ug Y29kZSBtb2RlbCBwcm9sb2cgc2VxdWVuY2U6DQo+IC0JCSAgICAgICAgICoJbGQgcjIsIC4uLihy MTIpDQo+ICsJCQkgKglsZCByMiwgLi4uKHIxMikNCj4gICAJCQkgKglhZGQgcjIsIHIyLCByMTIN Cj4gICAJCQkgKi8NCj4gICAJCQlpZiAoKCgodWludDMyX3QgKilsb2NhdGlvbilbMF0gJiB+MHhm ZmZjKSAhPSBQUENfUkFXX0xEKF9SMiwgX1IxMiwgMCkpDQo+IEBAIC02ODgsMjUgKzcxNSwyNyBA QCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVsZjY0X1NoZHIgKnNlY2hkcnMsDQo+ICAgCQkJICoJ YWRkaXMgcjIsIHIxMiwgKC5UT0MuLWZ1bmMpQGhhDQo+ICAgCQkJICoJYWRkaSAgcjIsICByMiwg KC5UT0MuLWZ1bmMpQGwNCj4gICAJCQkgKi8NCj4gLQkJCSgodWludDMyX3QgKilsb2NhdGlvbilb MF0gPSBQUENfUkFXX0FERElTKF9SMiwgX1IxMiwgUFBDX0hBKHZhbHVlKSk7DQo+IC0JCQkoKHVp bnQzMl90ICopbG9jYXRpb24pWzFdID0gUFBDX1JBV19BRERJKF9SMiwgX1IyLCBQUENfTE8odmFs dWUpKTsNCj4gKwkJCXBhdGNoX2luc3RydWN0aW9uKCYoKHVpbnQzMl90ICopbG9jYXRpb24pWzBd LA0KPiArCQkJCQkgIHBwY19pbnN0KFBQQ19SQVdfQURESVMoX1IyLCBfUjEyLCBQUENfSEEodmFs dWUpKSkpOw0KPiArCQkJcGF0Y2hfaW5zdHJ1Y3Rpb24oJigodWludDMyX3QgKilsb2NhdGlvbilb MV0sDQo+ICsJCQkJCSAgcHBjX2luc3QoUFBDX1JBV19BRERJKF9SMiwgX1IyLCBQUENfTE8odmFs dWUpKSkpOw0KDQpTaG91bGRuJ3QgeW91IGRvIGxpa2UgcmVzdG9yZV9yMigpID8NCg0KPiAgIAkJ CWJyZWFrOw0KPiAgIA0KPiAgIAkJY2FzZSBSX1BQQzY0X1JFTDE2X0hBOg0KPiAgIAkJCS8qIFN1 YnRyYWN0IGxvY2F0aW9uIHBvaW50ZXIgKi8NCj4gICAJCQl2YWx1ZSAtPSAodW5zaWduZWQgbG9u Zylsb2NhdGlvbjsNCj4gICAJCQl2YWx1ZSA9ICgodmFsdWUgKyAweDgwMDApID4+IDE2KTsNCj4g LQkJCSooKHVpbnQxNl90ICopIGxvY2F0aW9uKQ0KPiAtCQkJCT0gKCooKHVpbnQxNl90ICopIGxv Y2F0aW9uKSAmIH4weGZmZmYpDQo+ICsJCQl2YWx1ZSA9ICgqKCh1aW50MTZfdCAqKSBsb2NhdGlv bikgJiB+MHhmZmZmKQ0KPiAgIAkJCQl8ICh2YWx1ZSAmIDB4ZmZmZik7DQo+ICsJCQl3cml0ZShs b2NhdGlvbiwgJnZhbHVlLCAyKTsNCj4gICAJCQlicmVhazsNCj4gICANCj4gICAJCWNhc2UgUl9Q UEM2NF9SRUwxNl9MTzoNCj4gICAJCQkvKiBTdWJ0cmFjdCBsb2NhdGlvbiBwb2ludGVyICovDQo+ ICAgCQkJdmFsdWUgLT0gKHVuc2lnbmVkIGxvbmcpbG9jYXRpb247DQo+IC0JCQkqKCh1aW50MTZf dCAqKSBsb2NhdGlvbikNCj4gLQkJCQk9ICgqKCh1aW50MTZfdCAqKSBsb2NhdGlvbikgJiB+MHhm ZmZmKQ0KPiArCQkJdmFsdWUgPSAoKigodWludDE2X3QgKikgbG9jYXRpb24pICYgfjB4ZmZmZikN Cj4gICAJCQkJfCAodmFsdWUgJiAweGZmZmYpOw0KPiArCQkJd3JpdGUobG9jYXRpb24sICZ2YWx1 ZSwgMik7DQo+ICAgCQkJYnJlYWs7DQo+ICAgDQo+ICAgCQlkZWZhdWx0Og0KPiBAQCAtNzIwLDYg Kzc0OSwyMCBAQCBpbnQgYXBwbHlfcmVsb2NhdGVfYWRkKEVsZjY0X1NoZHIgKnNlY2hkcnMsDQo+ ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gK2ludCBhcHBseV9yZWxvY2F0ZV9hZGQoRWxm NjRfU2hkciAqc2VjaGRycywNCj4gKwkJICAgICAgIGNvbnN0IGNoYXIgKnN0cnRhYiwNCj4gKwkJ ICAgICAgIHVuc2lnbmVkIGludCBzeW1pbmRleCwNCj4gKwkJICAgICAgIHVuc2lnbmVkIGludCBy ZWxzZWMsDQo+ICsJCSAgICAgICBzdHJ1Y3QgbW9kdWxlICptZSkNCj4gK3sNCj4gKwl2b2lkICoo KndyaXRlKSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KSA9IG1lbWNweTsNCj4gKwlib29s IGVhcmx5ID0gbWUtPnN0YXRlID09IE1PRFVMRV9TVEFURV9VTkZPUk1FRDsNCj4gKw0KPiArCWlm ICghZWFybHkpDQo+ICsJCXdyaXRlID0gcGF0Y2hfbWVtb3J5Ow0KPiArDQo+ICsJcmV0dXJuIF9f YXBwbHlfcmVsb2NhdGVfYWRkKHNlY2hkcnMsIHN0cnRhYiwgc3ltaW5kZXgsIHJlbHNlYywgbWUs IHdyaXRlKTsNCj4gK30NCg0KSSByZWFsbHkgZGlzbGlrZSB0aGlzIHN0dWZmIHdpdGggdGhlIHdy aXRlKCkgZnVuY3Rpb24gYXMgYSBwYXJhbWV0ZXIuIFdlIA0KaGF2ZSAnbWUnLCBpdCBzaG91bGQg YmUgZW5vdWdoIGZvciB0aGUgY2FsbGVlIHRvIGtub3cgd2hhdCB0byBkbywgc2VlIG15IA0KZmly c3QgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoaXMgZW1haWwuDQoNCj4gICAjaWZkZWYgQ09ORklH X0RZTkFNSUNfRlRSQUNFDQo+ICAgaW50IG1vZHVsZV90cmFtcG9saW5lX3RhcmdldChzdHJ1Y3Qg bW9kdWxlICptb2QsIHVuc2lnbmVkIGxvbmcgYWRkciwNCj4gICAJCQkgICAgIHVuc2lnbmVkIGxv bmcgKnRhcmdldCkNCj4gQEAgLTc0OSw3ICs3OTIsNyBAQCBpbnQgbW9kdWxlX3RyYW1wb2xpbmVf dGFyZ2V0KHN0cnVjdCBtb2R1bGUgKm1vZCwgdW5zaWduZWQgbG9uZyBhZGRyLA0KPiAgIAlpZiAo Y29weV9mcm9tX2tlcm5lbF9ub2ZhdWx0KCZmdW5jZGF0YSwgJnN0dWItPmZ1bmNkYXRhLA0KPiAg IAkJCXNpemVvZihmdW5jZGF0YSkpKSB7DQo+ICAgCQlwcl9lcnIoIiVzOiBmYXVsdCByZWFkaW5n IGZ1bmNkYXRhIGZvciBzdHViICVseCBmb3IgJXNcbiIsIF9fZnVuY19fLCBhZGRyLCBtb2QtPm5h bWUpOw0KPiAtICAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPiArCQlyZXR1cm4gLUVG QVVMVDsNCj4gICAJfQ0KPiAgIA0KPiAgIAkqdGFyZ2V0ID0gc3R1Yl9mdW5jX2FkZHIoZnVuY2Rh dGEpOw0KPiBAQCAtNzU5LDE1ICs4MDIsMjMgQEAgaW50IG1vZHVsZV90cmFtcG9saW5lX3Rhcmdl dChzdHJ1Y3QgbW9kdWxlICptb2QsIHVuc2lnbmVkIGxvbmcgYWRkciwNCj4gICANCj4gICBpbnQg bW9kdWxlX2ZpbmFsaXplX2Z0cmFjZShzdHJ1Y3QgbW9kdWxlICptb2QsIGNvbnN0IEVsZl9TaGRy ICpzZWNoZHJzKQ0KPiAgIHsNCj4gKwl2b2lkICooKndyaXRlKSh2b2lkICosIGNvbnN0IHZvaWQg Kiwgc2l6ZV90KSA9IG1lbWNweTsNCj4gKwlib29sIGVhcmx5ID0gbW9kLT5zdGF0ZSA9PSBNT0RV TEVfU1RBVEVfVU5GT1JNRUQ7DQo+ICsNCj4gKwlpZiAoIWVhcmx5KQ0KPiArCQl3cml0ZSA9IHBh dGNoX21lbW9yeTsNCj4gKw0KPiAgIAltb2QtPmFyY2gudHJhbXAgPSBzdHViX2Zvcl9hZGRyKHNl Y2hkcnMsDQo+ICAgCQkJCQkodW5zaWduZWQgbG9uZylmdHJhY2VfY2FsbGVyLA0KPiAgIAkJCQkJ bW9kLA0KPiAtCQkJCQkiZnRyYWNlX2NhbGxlciIpOw0KPiArCQkJCQkiZnRyYWNlX2NhbGxlciIs DQo+ICsJCQkJCXdyaXRlKTsNCj4gICAjaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhf UkVHUw0KPiAgIAltb2QtPmFyY2gudHJhbXBfcmVncyA9IHN0dWJfZm9yX2FkZHIoc2VjaGRycywN Cj4gICAJCQkJCSh1bnNpZ25lZCBsb25nKWZ0cmFjZV9yZWdzX2NhbGxlciwNCj4gICAJCQkJCW1v ZCwNCj4gLQkJCQkJImZ0cmFjZV9yZWdzX2NhbGxlciIpOw0KPiArCQkJCQkiZnRyYWNlX3JlZ3Nf Y2FsbGVyIiwNCj4gKwkJCQkJd3JpdGUpOw0KPiAgIAlpZiAoIW1vZC0+YXJjaC50cmFtcF9yZWdz KQ0KPiAgIAkJcmV0dXJuIC1FTk9FTlQ7DQo+ICAgI2VuZGlmDQo+IA0KDQpDaHJpc3RvcGhl