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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 2B04ECD5BAA for ; Wed, 20 May 2026 07:09:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 573C010EF15; Wed, 20 May 2026 07:08:59 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="rQMY7kQl"; dkim-atps=neutral Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011032.outbound.protection.outlook.com [52.101.52.32]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF46710EF09; Wed, 20 May 2026 07:08:57 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XL6jIbXt7UNNYp8D4LXRKxHRVr9NKpkBT4ELYun7w6gH3zOfPLx3IjhwwnH/MUt6+VwI0zy/EdKp02UjNssEoZnq9TgpQAMDNgColrcSSdhsh0zj9BY+/uRk7zzZHkhiHHD8hexs+66y9/4NmTkB03mdgv535rK7ahNEo0bQlG7fdWdnb3sfcgyiABFC3OIL4LM2CaZguwq8y4+3knvWK3sz/iXd/lM8k82xYmlnfpVg9Gi4jAjBSDoIkAwttHlF2b/3GB2kVLT9iTaZ/6htECza+zn2GM8LSfGRHs1vj/zNZlwshl4IPAAhJFTT3W6qSFVRA8wPwMcnHZS9847Ugg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=psP5VBwIyijk16ie4WQ6y3HH2weWRHFe+Ku3ngbG1fo=; b=hiXUYfulbpXou0pRIqDnpDO5vVxx/VuYgFm2ucP9h7vexEouwkNk5DmRHQGT0S/5WtPKT6kFSlEuMPtiqDmsG4rMiMJKXI2j7vbOtcvuLmCfyS+q8rKejyonYYAfKEpMq0dUcNyf5qeN3OnSkx45AIkdPbR+ggcuM8dYWqjDdbV8oH7qP8wxxFzlWWZlsojKw2xex68v86y4MiBeJp/EmHaC+8Zj22h+Y3WT4OhTq0BB+k+7pbXBeAh8VnzCKl3Crm2Tq860IqsKToK5eX6IzITm4ZNJt2384ScQrVZl4uhGpo+OW+EhpdpHpdO1I/5NtdgOJp12469Ylt8ZGV7NiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=psP5VBwIyijk16ie4WQ6y3HH2weWRHFe+Ku3ngbG1fo=; b=rQMY7kQldOR4HLCcCO2CO9Ud9MIHN5QwgJxwazYSSmIRvyYiLGnMb9MYsE/RpeZ5ktIWerkhRqtKwt++yzPaX+jiJow6lannierDUiT3NfCS/6NVnr+/6vSLDTHrunVaoOdW2jYoSduHySqL2F++L5SgpHD2S4cFJR6j4dlaZvo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22) by MW4PR12MB5603.namprd12.prod.outlook.com (2603:10b6:303:16a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.14; Wed, 20 May 2026 07:08:53 +0000 Received: from PH7PR12MB5685.namprd12.prod.outlook.com ([fe80::ce69:cfae:774d:a65c]) by PH7PR12MB5685.namprd12.prod.outlook.com ([fe80::ce69:cfae:774d:a65c%5]) with mapi id 15.21.0025.022; Wed, 20 May 2026 07:08:53 +0000 Message-ID: <45bbcc75-f852-46c2-bcff-8cacb9413376@amd.com> Date: Wed, 20 May 2026 09:08:46 +0200 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] drm/amdgpu: fix recursive ww_mutex acquire in amdgpu_devcoredump_format To: Mikhail Gavrilov , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Alex Deucher , David Airlie , Simona Vetter , Sumit Semwal , Pierre-Eric Pelloux-Prayer , linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org References: <20260429143743.50743-1-mikhail.v.gavrilov@gmail.com> <20260519161541.19994-1-mikhail.v.gavrilov@gmail.com> Content-Language: en-US From: =?UTF-8?Q?Christian_K=C3=B6nig?= In-Reply-To: <20260519161541.19994-1-mikhail.v.gavrilov@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: FR4P281CA0288.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e7::19) To PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR12MB5685:EE_|MW4PR12MB5603:EE_ X-MS-Office365-Filtering-Correlation-Id: 23130090-d1b5-4942-96ac-08deb63ea6aa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003|11063799006|3023799007|4143699003; X-Microsoft-Antispam-Message-Info: jtkB3aHWnB3dmj9Z1nQ+zycjs4xTeAF7b/wxd6IAY7YP64HeNmb3BfjoNoxpm6xC++SnECZB58Hixpno+JZWy/6SCEB1ZH1uHhuel8gFc9lOInw8qiMkwYp6AsQpnUU1Gdud0L8CUx1A98mG6Vqd7S9I+cGdlAOMgDvlGpaZIDpjdmSZsKyaEAnhLtysel5gD+EG5DALheQb7T/5GU08JcsGEtn1W94PGIn36WQAhyYZAlu9YI57KfV8mq348D3fVZwE7zksRtreZpeafeNfXvUzAkyIcpSki+qoGkU2HktpXUHLkra1Q7YuJ/+P00moHUrWY9DXCs1gnmsHciKM1pL+uE4MXNcYj33+0rZSn7OiaSI/kWmwHKs8fvjxcA/PpNbqy2W99N7V1sjMfvOvqd4Xi/YjzvkXi3qF8zGoXALsDdCKKt7SL9rUYy/aTxx/qgPO5AWN2Gdpzg3bHw4N2K9iqbJXQ3qG6o6lC4cFFjSLSoP6ACMZGlVl1HldXUjjbo5p3UataU+sCUyTJvu+VhAbG7AUWyjDz6TiLTNR2raarDLIn+ypypAj20af+JuUdJqdocGJR0tUKwETdiM0ya4xmJxHl5zUPebAbgrFjGgyQjadvVXtXKFMoitC2a6jQSwnl97TYktkXashKQ0VA3z00a76v9OPMhNCbSglvAPYaPe7asLayC1ZqFSgt6q7 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR12MB5685.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003)(11063799006)(3023799007)(4143699003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dmxMMnlvUkxiREZlZEVXa1FYVThwcHpnbTNKeEVnZ0xwYzBzTXpQdGxpN3JT?= =?utf-8?B?LzRQNGRVd1ZsZ3lEK2lyTzZRNE4vS1hXRzd3VnVLMjdlTDdYUWN5ZHpzK0dM?= =?utf-8?B?anZrYmlvUVkxclpjZ2hFRVBGTlR3bmFmRlpPTmVncVZFUjRwM2xrUEZTc1Vn?= =?utf-8?B?dVM2UnZFeWFhWGVqVW9TUmRZRmMxYWt3RUt0dlFkSjhSdE1Ec29xSW9DdEdk?= =?utf-8?B?QXdFSlVUZE5zTFkySlZIZnlpaS9KWmk1SWZzQTVpZnBoUWFJVEFUTmk2Wk0x?= =?utf-8?B?YTNBMlBTaW1YVHB3ckNpbzRrOXBjaHVyVTJHV3FUeUYxSXRURmlHOXVSRlNP?= =?utf-8?B?U3ozcFZvU2xCSFJidjlTTWJuenJrbVhtOTNBOUpKdHl1dVo1WHNrdEtGK3hV?= =?utf-8?B?NUdVYVI2SDZUVTY0MTc0U1UyK3BhZUE0bVlEUGcyQjBiR1IzTTMrUDdIeUxE?= =?utf-8?B?U1ROaUg3R0FFaml0dDRtMHpFcERTUFlkTTUwNzd2U2RsM3VYY0FGYjNiS0JV?= =?utf-8?B?UGlaK1NlbUxwWHdVU1RSRHQvSWJrNnZFOE9ha3M3em1kTG54NUtubU5JcVF4?= =?utf-8?B?NWloRUZyb1F3b09tK0Z2RzBEeHN5WVRzb1dvVWY2TXJ5bTBxNGZ2NDFiZmVw?= =?utf-8?B?UExiNStTRTRnY2ZQbFBxUTdOSDZTdVhxT2ZmRHdyaU56YUVQWjNlcGZRbFc4?= =?utf-8?B?elNFRE9ycUdISTBXT2NZZUc0bjZtMTBXWVg0ZkJqVmJCbmg3VDlXWXZFdmVU?= =?utf-8?B?NExON0VTd1N6cHFKZmRNMGJhR2VZVXZoSlJ5MUpPUEJXZ0hySzd5WWFuVTZB?= =?utf-8?B?cjQ3UmJaU3ZFVjEvOGV2c2g2dnJGaktyOE1oWVBYaE5qU01PV05hcVVNSEJH?= =?utf-8?B?V1AxQlhzaytLUzV3ZkF1ZHkrc0gyZW1nQzlZaGZOZjRZRmhJRXdnQjVjYXp6?= =?utf-8?B?ZWFVVXM3ckYwRnJRMW1OQnlMY3VydksyYVhYTVY4WDJHSGZleGFKTHVuVWlJ?= =?utf-8?B?bjk5V2RDTnFHbFNrWmxxSnRTYmNDUTlZbkhHckNreVpGQStUemozSmgwRFVR?= =?utf-8?B?NzBUZ1pvLzViWmEyN1hCSGdmLzVnQUphdDJONytwUS9INmdZemRyeG55Tlp3?= =?utf-8?B?OHkzZ0d4OU9QQ1Q0ZEpaRDBHNFdGakdkbTJWaDluN2FZVGYyL1hib0doV1pP?= =?utf-8?B?bTZnQktoMkRabSt6S3MyaldyOVd3THFFUTg5ZkJiOTd6enpUSGxweGhSblcr?= =?utf-8?B?NVZxQytaKzZNU0p2OVZoNmpxNlhHamE5UmRBYjVsZk5xc2dGeEZXbWpWR0lt?= =?utf-8?B?dTJZeUkyWUM4VUFKR2F4Zm9nSWdXbHpCT3Bud3JKSWhoQzlxR3hVTE03b040?= =?utf-8?B?aFYrdFErTkJQQ0NVOEdyVXFuZWFVamRtNVZaSTBwKzh3OHJtQ0tJWkhtdWhv?= =?utf-8?B?MWJxSUs4azdQRCtTTGJOMVBNbUg2QWMwNWgzdVBrMnJQd2pXNCtUMERjS0Ir?= =?utf-8?B?d3RoTkNLOEgvdWkzbEd6Uk9MYnpmM2lDSEhwTVlpanR6Tyt0L1UvTy9rc2Js?= =?utf-8?B?b2FkemxhYnVBRkc2VjI5R1hNc0Y5dDlXTTJ3WC9TdW16UlNXOS9KZmwvOGpZ?= =?utf-8?B?NGZtWXp2a2tPV1N3NnlRR0tzeXZkTXpzdGJSQkF0dE82akNxdld4UFN3cUFt?= =?utf-8?B?TXlXOU5pUTQvVWNtUFRZZEVoUEUwYmNLcFhhbHlyNmtHdXVQRTVXQ0tEb0dB?= =?utf-8?B?OWY1b1MveWNKdzJ2aTBKMWQ5dE9XMFJWZ2gyREttL0piUmlZWk9PRVhLT2R6?= =?utf-8?B?ekZ2akgxQ2dWb0lSTVROQk1aR0l3a2pveG0vNVJNdXljUmFOQTEySWd5YzRz?= =?utf-8?B?Q29QdHFBMDVpTUhOcTZMakYrQUFRNVZxdVdhRTFwM29WcDNJbk5LT3dkYi9F?= =?utf-8?B?TE1vUWE5OEQ5YTRSdzhScGhZRkZObGI2MXNCcWx5cXBBYVNVRlRTRENkdXgr?= =?utf-8?B?QnJGMElNOGwwTzUwblgxSlFOS29xVEZXMk9XZjc3ZFBlTGI3QU1MSHUxL2po?= =?utf-8?B?UnFoUE9pdjNyUEtJS0Q2WkFMZkRKY2RXSVcvQ3pBQWNMWGsrb3R0cFBmc043?= =?utf-8?B?dHBOODM0eGI0enlCTmlQUmc4aVJsZWJJUVViL0Q2OENSeDZ2MGl5Y2E3YjE3?= =?utf-8?B?UU1NU1F5RzJCM0FLTTNOZmRqeUpuOWZuMnV1YStpS0tIamVXOFlZRWFQR05T?= =?utf-8?B?dlRLUXBvVjJ0cGd3dmdaelFrQXUxc3dTM3gwL1JkZkt6QWFzZzFjbjhJM0Rq?= =?utf-8?Q?tjpeF1Td47R6QfCLK8?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23130090-d1b5-4942-96ac-08deb63ea6aa X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5685.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2026 07:08:53.6303 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: o/CDL5l0XafP/oX/zs5zjmMCc0wpFdQVosLXFMX4Mhp8YirNeVIhpaSZ4aoWuhtO X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB5603 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gNS8xOS8yNiAxODoxNSwgTWlraGFpbCBHYXZyaWxvdiB3cm90ZToKPiBXaGVuIGR1bXBpbmcg SUIgY29udGVudHMgZnJvbSBhIGh1bmcgam9iLCBhbWRncHVfZGV2Y29yZWR1bXBfZm9ybWF0KCkK PiBhY3F1aXJlcyB0aGUgVk0gcm9vdCBQRCdzIHJlc2VydmF0aW9uIGxvY2sgdmlhIGFtZGdwdV92 bV9sb2NrX2J5X3Bhc2lkKCkKPiBhbmQgdGhlbiwgZm9yIGVhY2ggSUIgcmVmZXJlbmNlZCBieSB0 aGUgam9iLCBjYWxscyBhbWRncHVfYm9fcmVzZXJ2ZSgpCj4gb24gdGhlIEJPIHRoYXQgYmFja3Mg dGhlIElCLiAgQm90aCByZXNlcnZhdGlvbnMgYXJlIHRha2VuIG9uCj4gcmVzZXJ2YXRpb25fd3df Y2xhc3NfbXV0ZXggb2JqZWN0cyBidXQgbmVpdGhlciB1c2VzIGEgd3dfYWNxdWlyZV9jdHgsCj4g d2hpY2ggdHJpcHMgbG9ja2RlcDoKPiAKPiAgIFdBUk5JTkc6IHBvc3NpYmxlIHJlY3Vyc2l2ZSBs b2NraW5nIGRldGVjdGVkCj4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAga3dvcmtlci91MTI4OjAgaXMgdHJ5aW5nIHRvIGFjcXVpcmUgbG9jazoKPiAg IGZmZmY4ODgzOGIxNmUxZjAgKHJlc2VydmF0aW9uX3d3X2NsYXNzX211dGV4KXsrLisufS17NDo0 fSwKPiAgICAgYXQ6IGFtZGdwdV9kZXZjb3JlZHVtcF9mb3JtYXQrMHgxNTk0LzB4MjNmMCBbYW1k Z3B1XQo+IAo+ICAgYnV0IHRhc2sgaXMgYWxyZWFkeSBob2xkaW5nIGxvY2s6Cj4gICBmZmZmODg4 MmY4MjY4MWYwIChyZXNlcnZhdGlvbl93d19jbGFzc19tdXRleCl7Ky4rLn0tezQ6NH0sCj4gICAg IGF0OiBhbWRncHVfZGV2Y29yZWR1bXBfZm9ybWF0KzB4MTU5NC8weDIzZjAgW2FtZGdwdV0KPiAK PiAgICBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKPiAgICAgICAgICBDUFUwCj4g ICAgICAgICAgLS0tLQo+ICAgICBsb2NrKHJlc2VydmF0aW9uX3d3X2NsYXNzX211dGV4KTsKPiAg ICAgbG9jayhyZXNlcnZhdGlvbl93d19jbGFzc19tdXRleCk7Cj4gCj4gICAgKioqIERFQURMT0NL ICoqKgo+ICAgIE1heSBiZSBkdWUgdG8gbWlzc2luZyBsb2NrIG5lc3Rpbmcgbm90YXRpb24KPiAK PiAgIFdvcmtxdWV1ZTogZXZlbnRzX3VuYm91bmQgYW1kZ3B1X2RldmNvcmVkdW1wX2RlZmVycmVk X3dvcmsgW2FtZGdwdV0KPiAgIENhbGwgVHJhY2U6Cj4gICAgX193d19tdXRleF9sb2NrLmNvbnN0 cHJvcC4wCj4gICAgd3dfbXV0ZXhfbG9jawo+ICAgIGFtZGdwdV9ib19yZXNlcnZlCj4gICAgYW1k Z3B1X2RldmNvcmVkdW1wX2Zvcm1hdCsweDE1OTQgW2FtZGdwdV0KPiAgICBhbWRncHVfZGV2Y29y ZWR1bXBfZGVmZXJyZWRfd29yaysweGVhIFthbWRncHVdCj4gCj4gVGhlIHR3byByZXNlcnZhdGlv bnMgYXJlIG9uIGRpZmZlcmVudCBCT3MgaW4gdGhlIGNhcHR1cmVkIHRyYWNlLCBzbyB0aGUKPiBz cGxhdCBpcyBhIGxvY2tkZXAtY29ycmVjdG5lc3Mgd2FybmluZywgbm90IGFuIG9ic2VydmVkIGRl YWRsb2NrLiAgSXQKPiBiZWNvbWVzIGEgcmVhbCBzZWxmLWRlYWRsb2NrIHdoZW5ldmVyIHRoZSBJ QiBCTyBzaGFyZXMgaXRzIGRtYV9yZXN2Cj4gd2l0aCB0aGUgcm9vdCBQRCAodGhlIGFsd2F5cy12 YWxpZCBjYXNlLCBzZWUKPiBhbWRncHVfdm1faXNfYm9fYWx3YXlzX3ZhbGlkKCkpOiBhbWRncHVf Ym9fcmVzZXJ2ZShhYm8pIHJlLWFjcXVpcmVzIHRoZQo+IHNhbWUgd3dfbXV0ZXggd2l0aG91dCBh IHRpY2tldCBhbmQgYmxvY2tzIGZvcmV2ZXIuCj4gCj4gRml4IGl0IGluIHR3byBzdGVwczoKPiAK PiAxLiBDb2xsZWN0IHBlci1JQiBCTyByZWZlcmVuY2VzIHVuZGVyIHRoZSByb290IFBEJ3MgcmVz ZXJ2YXRpb24sIHRoZW4KPiAgICByZWxlYXNlIHRoZSByb290IGJlZm9yZSBsb2NraW5nIHRoZSBJ QiBCT3MuICBUaGUgd2FsayBvdmVyIHRoZSBWTQo+ICAgIG1hcHBpbmcgdHJlZSBtdXN0IHJlbWFp biB1bmRlciB0aGUgcm9vdCBsb2NrIChtYXBwaW5ncyBjYW4gYmUgdG9ybgo+ICAgIGRvd24gd2l0 aG91dCBpdCksIGJ1dCB0aGUgYWN0dWFsIGNvbnRlbnQgY29waWVzIGRvIG5vdC4KPiAKPiAyLiBM b2NrIGFsbCB0aGUgSUIgQk9zIHRvZ2V0aGVyIHVzaW5nIGRybV9leGVjKDkpIHdpdGggYSBzaW5n bGUKPiAgICB3d19hY3F1aXJlX2N0eC4gIERSTV9FWEVDX0lHTk9SRV9EVVBMSUNBVEVTIGhhbmRs ZXMgdGhlIGNhc2Ugd2hlcmUKPiAgICBJQiBCT3Mgc2hhcmUgYSBkbWFfcmVzdiAoZS5nLiBhbHdh eXMtdmFsaWQgQk9zKS4gIEVhY2ggbG9jayBhdHRlbXB0Cj4gICAgaXMgbm93IGEgdG9wLWxldmVs IGFjcXVpcmUgdW5kZXIgb25lIHRpY2tldCwgd2l0aCByZXRyeS1vbi0KPiAgICBjb250ZW50aW9u IGhhbmRsZWQgYnkgZHJtX2V4ZWM7IHRoZSByZWN1cnNpdmUgd3dfbXV0ZXggY29uZGl0aW9uCj4g ICAgaXMgZ29uZS4KPiAKPiBUaGUgY29sbGVjdC9sb2NrL3JlbGVhc2UgbG9naWMgaXMgZmFjdG9y ZWQgb3V0IGludG8gdGhyZWUgc21hbGwgaGVscGVycwo+IChhbWRncHVfZGV2Y29yZWR1bXBfe2Nv bGxlY3QsbG9jayxyZWxlYXNlfV9pYl9yZWZzKSB0byBrZWVwIHRoZSBtYWluCj4gZnVuY3Rpb24g cmVhZGFibGUgYW5kIHdpdGhpbiB0aGUga2VybmVsIGNvZGluZyBzdHlsZSBpbmRlbnRhdGlvbgo+ IGd1aWRlbGluZS4KPiAKPiBUaGlzIGFsc28gZml4ZXMgYSBCTyByZWZjb3VudCBsZWFrIGluIHRo ZSBvcmlnaW5hbCBjb2RlOiB3aGVuCj4gYW1kZ3B1X2JvX3Jlc2VydmUoKSBmYWlsZWQsIGNvbnRy b2wganVtcGVkIHRvIGZyZWVfaWJfY29udGVudCB3aXRob3V0Cj4gcnVubmluZyBhbWRncHVfYm9f dW5yZWYoKS4gIEluIHRoZSBuZXcgc3RydWN0dXJlIHRoZSBwZXItSUIgQk8gcmVmcwo+IGFyZSBy ZWxlYXNlZCB1bmNvbmRpdGlvbmFsbHkgaW4gdGhlIGNsZWFudXAgaGVscGVyLgo+IAo+IFJlcHJv ZHVjZXIgKH4xNTAgTG9DIGxpYmRybV9hbWRncHUpOiBzdWJtaXQgYSBzaW5nbGUgR0ZYIElCIGNv bnRhaW5pbmcKPiBQQUNLRVQzX0lORElSRUNUX0JVRkZFUiBjaGFpbmVkIGF0IEdQVSBWQSAwIGFu ZCB3YWl0IGZvciB0aGUgZmVuY2UuCj4gVGhlIFREUiBmaXJlcyB3aXRoaW4gfjEwIHMgYW5kIHRo ZSBkZWZlcnJlZCBjb3JlZHVtcCB3b3JrZXIgcHJvZHVjZXMKPiB0aGUgc3BsYXQgYWJvdmUgb24g ZXZlcnkgaW52b2NhdGlvbi4KPiAKPiB2Mjogc3dpdGNoIGZyb20gcGVyLUlCIGFtZGdwdV9ib19y ZXNlcnZlKCkgdG8gZHJtX2V4ZWMgZm9yIHRoZSBJQiBCTwo+ICAgICBsb2NraW5nIGFzIHN1Z2dl c3RlZCBieSBDaHJpc3RpYW4gS8O2bmlnOyB0aGUgc25hcHNob3QgYXBwcm9hY2gKPiAgICAgZm9y IGNvbGxlY3RpbmcgQk8gcmVmZXJlbmNlcyB1bmRlciB0aGUgcm9vdCBQRCdzIHJlc2VydmF0aW9u IGlzCj4gICAgIHJldGFpbmVkLgo+IAo+IEZpeGVzOiA3YjE1ZmMyZDFmMWEgKCJkcm0vYW1kZ3B1 OiBkdW1wIGpvYiBpYnMgaW4gdGhlIGRldmNvcmVkdW1wIikKPiBTdWdnZXN0ZWQtYnk6IENocmlz dGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBN aWtoYWlsIEdhdnJpbG92IDxtaWtoYWlsLnYuZ2F2cmlsb3ZAZ21haWwuY29tPgo+IC0tLQo+ICAu Li4vZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZfY29yZWR1bXAuYyAgfCAxODcgKysrKysr KysrKysrKystLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygrKSwgMzkgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kZXZfY29yZWR1bXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k ZXZfY29yZWR1bXAuYwo+IGluZGV4IGQzODZiYzc3NWQwMy4uOWFjOTU4Y2YwOWZkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZfY29yZWR1bXAuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZfY29yZWR1bXAuYwo+ IEBAIC0yNCw2ICsyNCw3IEBACj4gIAo+ICAjaW5jbHVkZSA8Z2VuZXJhdGVkL3V0c3JlbGVhc2Uu aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RldmNvcmVkdW1wLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2V4ZWMuaD4KPiAgI2luY2x1ZGUgImFtZGdwdV9kZXZfY29yZWR1bXAuaCIKPiAgI2luY2x1ZGUg ImF0b20uaCIKPiAgCj4gQEAgLTIwNyw2ICsyMDgsMTA4IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9k ZXZjb3JlZHVtcF9md19pbmZvKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAJfQo+ICB9 Cj4gIAo+ICtzdHJ1Y3QgYW1kZ3B1X2RldmNvcmVkdW1wX2liX3JlZiB7Cj4gKwlzdHJ1Y3QgYW1k Z3B1X2JvCSpibzsKPiArCXU2NAkJCW9mZnNldDsKPiArfTsKCj4gKwo+ICsvKgo+ICsgKiBXYWxr IHRoZSBWTSdzIG1hcHBpbmcgdHJlZSB1bmRlciB0aGUgcm9vdCBQRCdzIHJlc2VydmF0aW9uIHRv IG9idGFpbiB0aGUgQk8KPiArICogdGhhdCBiYWNrcyBlYWNoIElCIGFuZCBwaW4gaXQgd2l0aCBh IHJlZmNvdW50LiBUaGUgcm9vdCBQRCByZXNlcnZhdGlvbiBpcwo+ICsgKiBkcm9wcGVkIGJlZm9y ZSB0aGlzIGZ1bmN0aW9uIHJldHVybnM7IHRoZSBjYWxsZXIgY2FuIHRoZW4gbG9jayBlYWNoIElC IEJPCj4gKyAqIHZpYSBkcm1fZXhlYyB3aXRob3V0IG5lc3RpbmcgcmVzZXJ2YXRpb25zIG9uIHJl c2VydmF0aW9uX3d3X2NsYXNzX211dGV4Lgo+ICsgKgo+ICsgKiBSZXR1cm5zIGFuIGFycmF5IG9m IG51bV9pYnMgZW50cmllcyAoZWFjaCBpYl9yZWZzW2ldLmJvIG1heSBiZSBOVUxMIGlmIGl0cwo+ ICsgKiBtYXBwaW5nIHdhcyBub3QgZm91bmQpLCBvciBOVUxMIG9uIGFsbG9jYXRpb24gZmFpbHVy ZSAvIFZNIGxvb2t1cCBmYWlsdXJlLgo+ICsgKiBUaGUgY2FsbGVyIG11c3QgcmVsZWFzZSB0aGUg Qk8gcmVmcyBhbmQgZnJlZSB0aGUgYXJyYXkgdmlhCj4gKyAqIGFtZGdwdV9kZXZjb3JlZHVtcF9y ZWxlYXNlX2liX3JlZnMoKS4KPiArICovCj4gK3N0YXRpYyBzdHJ1Y3QgYW1kZ3B1X2RldmNvcmVk dW1wX2liX3JlZiAqCj4gK2FtZGdwdV9kZXZjb3JlZHVtcF9jb2xsZWN0X2liX3JlZnMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgYW1kZ3B1X2NvcmVkdW1wX2lu Zm8gKmNvcmVkdW1wKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmNvcmVkdW1wX2liX3JlZiAq aWJfcmVmczsKPiArCXN0cnVjdCBhbWRncHVfYm9fdmFfbWFwcGluZyAqbWFwcGluZzsKPiArCXN0 cnVjdCBhbWRncHVfYm8gKnJvb3Q7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bTsKPiArCXU2NCB2 YV9zdGFydDsKPiArCj4gKwlpYl9yZWZzID0ga2NhbGxvYyhjb3JlZHVtcC0+bnVtX2licywgc2l6 ZW9mKCppYl9yZWZzKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWliX3JlZnMpCj4gKwkJcmV0dXJu IE5VTEw7Cj4gKwo+ICsJdm0gPSBhbWRncHVfdm1fbG9ja19ieV9wYXNpZChhZGV2LCAmcm9vdCwg Y29yZWR1bXAtPnBhc2lkKTsKPiArCWlmICghdm0pIHsKPiArCQlrZnJlZShpYl9yZWZzKTsKPiAr CQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlmb3IgKGludCBpID0gMDsgaSA8IGNvcmVkdW1w LT5udW1faWJzOyBpKyspIHsKPiArCQl2YV9zdGFydCA9IGNvcmVkdW1wLT5pYnNbaV0uZ3B1X2Fk ZHIgJiBBTURHUFVfR01DX0hPTEVfTUFTSzsKPiArCQltYXBwaW5nID0gYW1kZ3B1X3ZtX2JvX2xv b2t1cF9tYXBwaW5nKHZtLCB2YV9zdGFydCAvIEFNREdQVV9HUFVfUEFHRV9TSVpFKTsKPiArCQlp ZiAoIW1hcHBpbmcpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpYl9yZWZzW2ldLmJvID0gYW1k Z3B1X2JvX3JlZihtYXBwaW5nLT5ib192YS0+YmFzZS5ibyk7Cj4gKwkJaWJfcmVmc1tpXS5vZmZz ZXQgPSB2YV9zdGFydCAtCj4gKwkJCQkgICAgbWFwcGluZy0+c3RhcnQgKiBBTURHUFVfR1BVX1BB R0VfU0laRTsKPiArCX0KPiArCj4gKwlhbWRncHVfYm9fdW5yZXNlcnZlKHJvb3QpOwo+ICsJYW1k Z3B1X2JvX3VucmVmKCZyb290KTsKPiArCj4gKwlyZXR1cm4gaWJfcmVmczsKPiArfQoKClRoYXQg d2hvbGUgaW5mcmFzdHJ1Y3R1cmUgaXMgc3VwZXJmbG91cy4gWW91IGp1c3QgbmVlZCB0byBtb2Rp ZnkgYW1kZ3B1X3ZtX2xvY2tfYnlfcGFzaWQoKSB0byB0YWtlIGEgZHJtX2V4ZWMgb2JqZWN0IHRv IGxvY2sgdGhlIHJvb3QgQk8uCgpSZWdhcmRzLApDaHJpc3RpYW4uCgoKPiArCj4gK3N0YXRpYyB2 b2lkCj4gK2FtZGdwdV9kZXZjb3JlZHVtcF9yZWxlYXNlX2liX3JlZnMoc3RydWN0IGFtZGdwdV9k ZXZjb3JlZHVtcF9pYl9yZWYgKmliX3JlZnMsCj4gKwkJCQkgICBpbnQgbnVtX2licykKPiArewo+ ICsJaWYgKCFpYl9yZWZzKQo+ICsJCXJldHVybjsKPiArCj4gKwlmb3IgKGludCBpID0gMDsgaSA8 IG51bV9pYnM7IGkrKykKPiArCQlpZiAoaWJfcmVmc1tpXS5ibykKPiArCQkJYW1kZ3B1X2JvX3Vu cmVmKCZpYl9yZWZzW2ldLmJvKTsKPiArCWtmcmVlKGliX3JlZnMpOwo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBMb2NrIGFsbCBjb2xsZWN0ZWQgSUIgQk9zIHRvZ2V0aGVyIHVzaW5nIGEgc2luZ2xlIGRy bV9leGVjIHRpY2tldC4gVGhpcwo+ICsgKiBlbGltaW5hdGVzIHRoZSBuZXN0ZWQgd3dfbXV0ZXgg YWNxdWlyZSB0aGF0IGxvY2tkZXAgZmxhZ3MgYXMgcmVjdXJzaXZlCj4gKyAqIGxvY2tpbmcgKGFu ZCB0aGF0IGJlY29tZXMgYSByZWFsIHNlbGYtZGVhZGxvY2sgZm9yIElCIEJPcyBzaGFyaW5nIHRo ZWlyCj4gKyAqIGRtYV9yZXN2IHdpdGggdGhlIHJvb3QgUEQpLgo+ICsgKgo+ICsgKiBSZXR1cm5z IDAgaWYgZHJtX2V4ZWMgd2FzIGluaXRpYWxpc2VkIGFuZCB0aGUgQk9zIGFyZSBsb2NrZWQ7IHRo ZSBjYWxsZXIKPiArICogbXVzdCBjYWxsIGRybV9leGVjX2ZpbmkoKSBvbiBzdWNjZXNzLiBSZXR1 cm5zIG5vbi16ZXJvIG9uIGZhaWx1cmUsIGluIHdoaWNoCj4gKyAqIGNhc2UgZHJtX2V4ZWMgaXMg YWxyZWFkeSB0b3JuIGRvd24uCj4gKyAqLwo+ICtzdGF0aWMgaW50Cj4gK2FtZGdwdV9kZXZjb3Jl ZHVtcF9sb2NrX2liX3JlZnMoc3RydWN0IGRybV9leGVjICpleGVjLAo+ICsJCQkJc3RydWN0IGFt ZGdwdV9kZXZjb3JlZHVtcF9pYl9yZWYgKmliX3JlZnMsCj4gKwkJCQlpbnQgbnVtX2licykKPiAr ewo+ICsJaW50IHIgPSAwOwo+ICsKPiArCWRybV9leGVjX2luaXQoZXhlYywgRFJNX0VYRUNfSUdO T1JFX0RVUExJQ0FURVMsIG51bV9pYnMpOwo+ICsJZHJtX2V4ZWNfdW50aWxfYWxsX2xvY2tlZChl eGVjKSB7Cj4gKwkJciA9IDA7Cj4gKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1faWJzOyBpKysp IHsKPiArCQkJaWYgKCFpYl9yZWZzW2ldLmJvKQo+ICsJCQkJY29udGludWU7Cj4gKwkJCXIgPSBk cm1fZXhlY19sb2NrX29iaihleGVjLCAmaWJfcmVmc1tpXS5iby0+dGJvLmJhc2UpOwo+ICsJCQlk cm1fZXhlY19yZXRyeV9vbl9jb250ZW50aW9uKGV4ZWMpOwo+ICsJCQlpZiAocikKPiArCQkJCWJy ZWFrOwo+ICsJCX0KPiArCQlpZiAocikKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwlpZiAocikKPiAr CQlkcm1fZXhlY19maW5pKGV4ZWMpOwo+ICsJcmV0dXJuIHI7Cj4gK30KPiArCj4gIHN0YXRpYyBz c2l6ZV90Cj4gIGFtZGdwdV9kZXZjb3JlZHVtcF9mb3JtYXQoY2hhciAqYnVmZmVyLCBzaXplX3Qg Y291bnQsIHN0cnVjdCBhbWRncHVfY29yZWR1bXBfaW5mbyAqY29yZWR1bXApCj4gIHsKPiBAQCAt MjE0LDEzICszMTcsOSBAQCBhbWRncHVfZGV2Y29yZWR1bXBfZm9ybWF0KGNoYXIgKmJ1ZmZlciwg c2l6ZV90IGNvdW50LCBzdHJ1Y3QgYW1kZ3B1X2NvcmVkdW1wX2luZgo+ICAJc3RydWN0IGRybV9w cmludGVyIHA7Cj4gIAlzdHJ1Y3QgZHJtX3ByaW50X2l0ZXJhdG9yIGl0ZXI7Cj4gIAlzdHJ1Y3Qg YW1kZ3B1X3ZtX2ZhdWx0X2luZm8gKmZhdWx0X2luZm87Cj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvX3Zh X21hcHBpbmcgKm1hcHBpbmc7Cj4gIAlzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrICppcF9ibG9jazsK PiAgCXN0cnVjdCBhbWRncHVfcmVzX2N1cnNvciBjdXJzb3I7Cj4gLQlzdHJ1Y3QgYW1kZ3B1X2Jv ICphYm8sICpyb290Owo+IC0JdWludDY0X3QgdmFfc3RhcnQsIG9mZnNldDsKPiAgCXN0cnVjdCBh bWRncHVfcmluZyAqcmluZzsKPiAtCXN0cnVjdCBhbWRncHVfdm0gKnZtOwo+ICAJdTMyICppYl9j b250ZW50Owo+ICAJdWludDhfdCAqa3B0cjsKPiAgCWludCB2ZXIsIGksIGosIHI7Cj4gQEAgLTM0 Myw0MyArNDQyLDUyIEBAIGFtZGdwdV9kZXZjb3JlZHVtcF9mb3JtYXQoY2hhciAqYnVmZmVyLCBz aXplX3QgY291bnQsIHN0cnVjdCBhbWRncHVfY29yZWR1bXBfaW5mCj4gIAkJZHJtX3ByaW50Zigm cCwgIlZSQU0gaXMgbG9zdCBkdWUgdG8gR1BVIHJlc2V0IVxuIik7Cj4gIAo+ICAJaWYgKGNvcmVk dW1wLT5udW1faWJzKSB7Cj4gLQkJLyogRG9uJ3QgdHJ5IHRvIGxvb2t1cCB0aGUgVk0gb3IgbWFw IHRoZSBCT3Mgd2hlbiBjYWxjdWxhdGluZyB0aGUKPiAtCQkgKiBzaXplIHJlcXVpcmVkIHRvIHN0 b3JlIHRoZSBkZXZjb3JlZHVtcC4KPiArCQlzdHJ1Y3QgYW1kZ3B1X2RldmNvcmVkdW1wX2liX3Jl ZiAqaWJfcmVmcyA9IE5VTEw7Cj4gKwkJc3RydWN0IGRybV9leGVjIGV4ZWM7Cj4gKwkJYm9vbCBp YnNfbG9ja2VkID0gZmFsc2U7Cj4gKwo+ICsJCS8qCj4gKwkJICogQ29sbGVjdCB0aGUgQk8gdGhh dCBiYWNrcyBlYWNoIElCIHVuZGVyIHRoZSByb290IFBEJ3MKPiArCQkgKiByZXNlcnZhdGlvbiwg ZHJvcCB0aGUgcm9vdCByZXNlcnZhdGlvbiwgdGhlbiBsb2NrIGFsbCB0aGUKPiArCQkgKiBJQiBC T3MgdG9nZXRoZXIgaW4gb25lIGRybV9leGVjIHRpY2tldC4gVGhpcyBhdm9pZHMgbmVzdGluZwo+ ICsJCSAqIGFtZGdwdV9ib19yZXNlcnZlKCkgaW5zaWRlIHRoZSByb290IFBEJ3MgcmVzZXJ2YXRp b24sIHdoaWNoCj4gKwkJICogd291bGQgYmUgYSByZWN1cnNpdmUgcmVzZXJ2YXRpb25fd3dfY2xh c3NfbXV0ZXggYWNxdWlyZQo+ICsJCSAqIHdpdGhvdXQgYSB3d19hY3F1aXJlX2N0eCAobG9ja2Rl cCBzcGxhdCwgYW5kIGEgcmVhbAo+ICsJCSAqIHNlbGYtZGVhZGxvY2sgZm9yIGFsd2F5cy12YWxp ZCBCT3MgdGhhdCBzaGFyZSB0aGVpciBkbWFfcmVzdgo+ICsJCSAqIHdpdGggdGhlIHJvb3QgUEQp Lgo+ICsJCSAqCj4gKwkJICogU2tpcCBsb29rdXAvbG9ja2luZyBlbnRpcmVseSBvbiB0aGUgc2l6 aW5nIHBhc3M6IGl0IGRvZXMgbm90Cj4gKwkJICogd3JpdGUgSUIgY29udGVudCwgYW5kIHRoZSBz aXplIGVzdGltYXRlIGRvZXNuJ3QgZGVwZW5kIG9uCj4gKwkJICogd2hldGhlciB0aGUgQk9zIGFy ZSByZWFjaGFibGUuCj4gIAkJICovCj4gLQkJaWYgKHNpemluZ19wYXNzKQo+IC0JCQl2bSA9IE5V TEw7Cj4gLQkJZWxzZQo+IC0JCQl2bSA9IGFtZGdwdV92bV9sb2NrX2J5X3Bhc2lkKGFkZXYsICZy b290LCBjb3JlZHVtcC0+cGFzaWQpOwo+ICsJCWlmICghc2l6aW5nX3Bhc3MpIHsKPiArCQkJaWJf cmVmcyA9IGFtZGdwdV9kZXZjb3JlZHVtcF9jb2xsZWN0X2liX3JlZnMoYWRldiwgY29yZWR1bXAp Owo+ICsJCQlpZiAoaWJfcmVmcykgewo+ICsJCQkJciA9IGFtZGdwdV9kZXZjb3JlZHVtcF9sb2Nr X2liX3JlZnMoJmV4ZWMsIGliX3JlZnMsCj4gKwkJCQkJCQkJICAgIGNvcmVkdW1wLT5udW1faWJz KTsKPiArCQkJCWlmICghcikKPiArCQkJCQlpYnNfbG9ja2VkID0gdHJ1ZTsKPiArCQkJfQo+ICsJ CX0KPiArCj4gKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3JlZHVtcC0+bnVtX2liczsgaSsrKSB7 Cj4gKwkJCXN0cnVjdCBhbWRncHVfYm8gKmFibyA9IGlic19sb2NrZWQgPyBpYl9yZWZzW2ldLmJv IDogTlVMTDsKPiArCQkJdTY0IG9mZnNldCA9IGlic19sb2NrZWQgPyBpYl9yZWZzW2ldLm9mZnNl dCA6IDA7Cj4gKwkJCWJvb2wgZW1pdF9jb250ZW50ID0gc2l6aW5nX3Bhc3M7Cj4gIAo+IC0JCWZv ciAoaW50IGkgPSAwOyBpIDwgY29yZWR1bXAtPm51bV9pYnMgJiYgKHNpemluZ19wYXNzIHx8IHZt KTsgaSsrKSB7Cj4gIAkJCWliX2NvbnRlbnQgPSBrdm1hbGxvY19hcnJheShjb3JlZHVtcC0+aWJz W2ldLmliX3NpemVfZHcsIDQsCj4gIAkJCQkJCSAgICBHRlBfS0VSTkVMKTsKPiAgCQkJaWYgKCFp Yl9jb250ZW50KQo+ICAJCQkJY29udGludWU7Cj4gIAo+IC0JCQkvKiB2bT1OVUxMIGNhbiBvbmx5 IGhhcHBlbiB3aGVuICdzaXppbmdfcGFzcycgaXMgdHJ1ZS4gU2tpcCB0byB0aGUKPiAtCQkJICog ZHJtX3ByaW50ZigpIGNhbGxzIChpYl9jb250ZW50IGRvZXNuJ3QgbmVlZCB0byBiZSBpbml0aWFs aXplZAo+IC0JCQkgKiBhcyBpdHMgY29udGVudCB3b24ndCBiZSB3cml0dGVuIGFueXdoZXJlKS4K PiAtCQkJICovCj4gLQkJCWlmICghdm0pCj4gKwkJCWlmICghYWJvKQo+ICAJCQkJZ290byBvdXRw dXRfaWJfY29udGVudDsKPiAgCj4gLQkJCXZhX3N0YXJ0ID0gY29yZWR1bXAtPmlic1tpXS5ncHVf YWRkciAmIEFNREdQVV9HTUNfSE9MRV9NQVNLOwo+IC0JCQltYXBwaW5nID0gYW1kZ3B1X3ZtX2Jv X2xvb2t1cF9tYXBwaW5nKHZtLCB2YV9zdGFydCAvIEFNREdQVV9HUFVfUEFHRV9TSVpFKTsKPiAt CQkJaWYgKCFtYXBwaW5nKQo+IC0JCQkJZ290byBmcmVlX2liX2NvbnRlbnQ7Cj4gLQo+IC0JCQlv ZmZzZXQgPSB2YV9zdGFydCAtIChtYXBwaW5nLT5zdGFydCAqIEFNREdQVV9HUFVfUEFHRV9TSVpF KTsKPiAtCQkJYWJvID0gYW1kZ3B1X2JvX3JlZihtYXBwaW5nLT5ib192YS0+YmFzZS5ibyk7Cj4g LQkJCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZShhYm8sIGZhbHNlKTsKPiAtCQkJaWYgKHIpCj4gLQkJ CQlnb3RvIGZyZWVfaWJfY29udGVudDsKPiAtCj4gIAkJCWlmIChhYm8tPmZsYWdzICYgQU1ER1BV X0dFTV9DUkVBVEVfTk9fQ1BVX0FDQ0VTUykgewo+ICAJCQkJb2ZmID0gMDsKPiAgCj4gIAkJCQlp ZiAoYWJvLT50Ym8ucmVzb3VyY2UtPm1lbV90eXBlICE9IFRUTV9QTF9WUkFNKQo+IC0JCQkJCWdv dG8gdW5yZXNlcnZlX2FibzsKPiArCQkJCQlnb3RvIG91dHB1dF9pYl9jb250ZW50Owo+ICAKPiAg CQkJCWFtZGdwdV9yZXNfZmlyc3QoYWJvLT50Ym8ucmVzb3VyY2UsIG9mZnNldCwKPiAgCQkJCQkJ IGNvcmVkdW1wLT5pYnNbaV0uaWJfc2l6ZV9kdyAqIDQsCj4gQEAgLTM5MSwxMiArNDk5LDEzIEBA IGFtZGdwdV9kZXZjb3JlZHVtcF9mb3JtYXQoY2hhciAqYnVmZmVyLCBzaXplX3QgY291bnQsIHN0 cnVjdCBhbWRncHVfY29yZWR1bXBfaW5mCj4gIAkJCQkJb2ZmICs9IGN1cnNvci5zaXplOwo+ICAJ CQkJCWFtZGdwdV9yZXNfbmV4dCgmY3Vyc29yLCBjdXJzb3Iuc2l6ZSk7Cj4gIAkJCQl9Cj4gKwkJ CQllbWl0X2NvbnRlbnQgPSB0cnVlOwo+ICAJCQl9IGVsc2Ugewo+ICAJCQkJciA9IHR0bV9ib19r bWFwKCZhYm8tPnRibywgMCwKPiAgCQkJCQkJUEZOX1VQKGFiby0+dGJvLmJhc2Uuc2l6ZSksCj4g IAkJCQkJCSZhYm8tPmttYXApOwo+ICAJCQkJaWYgKHIpCj4gLQkJCQkJZ290byB1bnJlc2VydmVf YWJvOwo+ICsJCQkJCWdvdG8gb3V0cHV0X2liX2NvbnRlbnQ7Cj4gIAo+ICAJCQkJa3B0ciA9IGFt ZGdwdV9ib19rcHRyKGFibyk7Cj4gIAkJCQlrcHRyICs9IG9mZnNldDsKPiBAQCAtNDA0LDIzICs1 MTMsMjMgQEAgYW1kZ3B1X2RldmNvcmVkdW1wX2Zvcm1hdChjaGFyICpidWZmZXIsIHNpemVfdCBj b3VudCwgc3RydWN0IGFtZGdwdV9jb3JlZHVtcF9pbmYKPiAgCQkJCSAgICAgICBjb3JlZHVtcC0+ aWJzW2ldLmliX3NpemVfZHcgKiA0KTsKPiAgCj4gIAkJCQlhbWRncHVfYm9fa3VubWFwKGFibyk7 Cj4gKwkJCQllbWl0X2NvbnRlbnQgPSB0cnVlOwo+ICAJCQl9Cj4gIAo+ICBvdXRwdXRfaWJfY29u dGVudDoKPiAgCQkJZHJtX3ByaW50ZigmcCwgIlxuSUIgIyVkIDB4JWxseCAlZCBkd1xuIiwKPiAg CQkJCSAgIGksIGNvcmVkdW1wLT5pYnNbaV0uZ3B1X2FkZHIsIGNvcmVkdW1wLT5pYnNbaV0uaWJf c2l6ZV9kdyk7Cj4gLQkJCWZvciAoaW50IGogPSAwOyBqIDwgY29yZWR1bXAtPmlic1tpXS5pYl9z aXplX2R3OyBqKyspCj4gLQkJCQlkcm1fcHJpbnRmKCZwLCAiMHglMDh4XG4iLCBpYl9jb250ZW50 W2pdKTsKPiAtdW5yZXNlcnZlX2FibzoKPiAtCQkJaWYgKHZtKQo+IC0JCQkJYW1kZ3B1X2JvX3Vu cmVzZXJ2ZShhYm8pOwo+IC1mcmVlX2liX2NvbnRlbnQ6Cj4gKwkJCWlmIChlbWl0X2NvbnRlbnQp IHsKPiArCQkJCWZvciAoaW50IGogPSAwOyBqIDwgY29yZWR1bXAtPmlic1tpXS5pYl9zaXplX2R3 OyBqKyspCj4gKwkJCQkJZHJtX3ByaW50ZigmcCwgIjB4JTA4eFxuIiwgaWJfY29udGVudFtqXSk7 Cj4gKwkJCX0KPiAgCQkJa3ZmcmVlKGliX2NvbnRlbnQpOwo+ICAJCX0KPiAtCQlpZiAodm0pIHsK PiAtCQkJYW1kZ3B1X2JvX3VucmVzZXJ2ZShyb290KTsKPiAtCQkJYW1kZ3B1X2JvX3VucmVmKCZy b290KTsKPiAtCQl9Cj4gKwo+ICsJCWlmIChpYnNfbG9ja2VkKQo+ICsJCQlkcm1fZXhlY19maW5p KCZleGVjKTsKPiArCj4gKwkJYW1kZ3B1X2RldmNvcmVkdW1wX3JlbGVhc2VfaWJfcmVmcyhpYl9y ZWZzLCBjb3JlZHVtcC0+bnVtX2licyk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIGNvdW50IC0gaXRl ci5yZW1haW47Cgo=