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 7BB9DFD0062 for ; Sun, 1 Mar 2026 18:58:14 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 59AEC10E3FF; Sun, 1 Mar 2026 18:58:13 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="Yn4EDM7R"; dkim-atps=neutral Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012003.outbound.protection.outlook.com [40.107.209.3]) by gabe.freedesktop.org (Postfix) with ESMTPS id E101210E3F3; Sun, 1 Mar 2026 18:58:11 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=spX+GVgnZ5bgMkMbbVtqGfYERd/1EykJCbeNb+l2anjzpNCrOl6WbMN0LBQUx39BN6/WhvtrgkydLk387nksMvDBKdG+SUA5e902MFWEtvvA9K3LlfifpK5jRq/e7chtQNWTL8B5uwjzLys3/wcAqfB+GxJ5kR2FbJx3AUNoyNy1PaoOYmF4xuDTpr8VA1dAB/2zrKz60kEBE0VsIX00U3YoXsoszf1WmBH4xSGucgNmDkbyw8VFc1uMeH+6/JjwH50hZuUCcftWuJiTnVQBhnD+f5mDYfv11TiuIfWou2u0GlHDNsZlSVj0e7EW5b5ZAW0Rw2EprtAuFwf+ucGb6A== 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=80zMS60hsdJ7ItPrD+7bzS9Cfj6rMNVNXpv27z9H9Rc=; b=KP1Hc2L2aY6uZKuf9CMBtDeKZSz+uUIxQHdb3civvngGnVhQ7EvUmbTl5X8ddR1Z6oyAo/f6zH3dbNjtBUu7EuKUDv89/1VDj3t/zz42dLX3mhGDI0j58MpTk/4XhzVRCOPA9KEApqVeqdOEwZfHM4CdgXzqkbWxIsE/fvCLhfQsE+Dwz+G4pD2i3FKdHlPPx125hxRs71kPx5bLUGSq2bf3BumxpCFEXSOFcSso3s1r87jXooDJFwgBaM9Yf7pTZMDlhnHMQLN5Puu2BPqCOk4Qi8sgmr8CUYZizX+aWbORujYULgyuOMA6Y7VDYO7NWPS/uJynTxDWOXOs7IAS8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80zMS60hsdJ7ItPrD+7bzS9Cfj6rMNVNXpv27z9H9Rc=; b=Yn4EDM7R4uVv+Fv4QtDc2f1VDAxSPCMvo8TTrNrywy8DWe+xFX19ShHFFBwNwKAV3ClXbTv8BcivAE9+xzzdECiPnjyiFT6X/ZS7XDTx2uXAY57MZ6q+VO4kGbRNXz3fwOKFPfzvoUpkzlkWDacg2WVKj3zCJLjxsFogAjnoxz7QBOIlqg/LROA/eZe9DMApibs+5Z/sUdCSjlmRMKwSvaWHxsYkauW3eaD7lOoZ6/bPQyoDCXiskUgiT6WkOPu5P0WMPx47ejY+O+xhgpphmyQJuZ32kuagXDCj2vhhAQqMyVN04krTliucyKJQVHM9vUzNt3dI43F0R21UpB2xCQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by BL1PR12MB5993.namprd12.prod.outlook.com (2603:10b6:208:399::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.18; Sun, 1 Mar 2026 18:58:02 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9654.014; Sun, 1 Mar 2026 18:58:02 +0000 From: Jason Gunthorpe To: David Airlie , =?utf-8?q?Christian_K=C3=B6nig?= , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jani Nikula , Joonas Lahtinen , linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org, Rodrigo Vivi , Simona Vetter , Sumit Semwal , Tvrtko Ursulin Cc: patches@lists.linux.dev Subject: [PATCH 4/5] dma-buf: Change st-dma-fence-chain.c to use kunit Date: Sun, 1 Mar 2026 14:57:56 -0400 Message-ID: <4-v1-0a349a394eff+14110-dmabuf_kunit_jgg@nvidia.com> In-Reply-To: <0-v1-0a349a394eff+14110-dmabuf_kunit_jgg@nvidia.com> References: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: BL1PR13CA0389.namprd13.prod.outlook.com (2603:10b6:208:2c0::34) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV8PR12MB9620:EE_|BL1PR12MB5993:EE_ X-MS-Office365-Filtering-Correlation-Id: 40ad3113-64dd-4532-6c2c-08de77c47545 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|7416014|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: nA0K2GVUYrGN7t/uxKMQM3XB36FuR2w0DFh2Qf7VmiCxOrzleY6b2/Sl2M2b5I+CDcp0kMryPNEHcVR2P3z+BoInsZL3+vcO/AerbAWAYomX0GwSEz0EniDC+Da35CsRsXOMpuy7j3Ynl6D1qNavlKKponGGaY29cpPiFBr9Oe383vJoSXTPHM8GQ1orCgNrXZekGnUAnrUtw2DVDifzGyElf5lPqJmZw6lCA3AZx39l+TUjQm/0XV3gPbbeFx6o9WFLopVZzzsBZzB+Xqc0jQg5S36rzn5hRKYKRWxnGsVaw80BfM2Sm1+LIF5Tb0OxsFNVa1LFUyhpTVWqntOav1ByqRaLD1hs+fMh8q9ompiLCzK7KCymbpCjj6vCwTtx2onvKfADOffZ6J1uz8InXOMGOmq+O7PiwSjpl82VJEvRMMm8hTh6klFv08qTyvdO3OoMof8oVIqGVxZ14Ai4wP2hhwConGrb8Ik33ZEWJwbpKIlDbvR9WvQ9tYyG3mLNp3VB3VgTXpkjuNGfYWsfwzQbbTG3UolJZbHHPjkFi8eB3y/EayVYjv9PiCoG1/QG8VZ70ODHx91+OsgOV4W0Ts/47v5p8Qmt75sab6ck52xMaQVz55/sPFFyZXWTmUlW7J8Vsc/s4xbIzS/XVNo0GkEuazrvNyz7zlwBpfSEsBuvytncwjylCPqYmMwmhM+fv1NKFLkmlYOF9AM9uQGews+IwhzO5fCpitth2X4Xbaws+Gt+8kq4ySxgo8nf5kJq0pQvlHrQPowo518F/T8Vcw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:LV8PR12MB9620.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(7416014)(366016)(1800799024)(921020); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z0xJYm1nUjhjS0lsMXMzeXVCQm1nY3dKbmpqWDBJWGRZU0tTRTFrV0MwTVZ3?= =?utf-8?B?ZHVFaGdWSTE4S1dkZStlcmdqY25DdTMrb1RRR0pUTGpFQ2daZWtNQ0tmTUVV?= =?utf-8?B?QjVpVDdFanhkUXZ4R25vUFppWSthQlJzdCttdzBEa2hkM3U0bXA0a3plV0lH?= =?utf-8?B?citEa2tadVlBdFp3VWFyWEVmc0hkU09qSklpL1I2dzhCQkxKZHFLK0sxNkcz?= =?utf-8?B?SmVHU01nODZ3WkwrRk81SjkxZGpFdFEwZkhuR2ZEdXI2UERpUXJNMGhSVmxQ?= =?utf-8?B?cUJyKzA0UnV1dkFBZzQxZUMzUk1ubjdJanVsYzJ4c2xGM3pWMDlwZHNzQzRl?= =?utf-8?B?aU5sY0R4bytYcVAwZEJpZEl0VElFRjVsdWFQK3FVT1pxeVkzVFpPS3E1UEhi?= =?utf-8?B?UHMybXY4VkFXNzVjYmNIRy9GL1lEZkI2SEJjNlJ6RHBBTmVkb0IwNXpiNmo2?= =?utf-8?B?UFk3S2ZQUmFCeFNJQUY1L1psZUtrTkxFbXRwYXg5SkIremxkMlpTZzlFbm9J?= =?utf-8?B?Q3R2OEZLcG05ai9YNXByekFwMVNoelhvWmd0dHlUcEJORnVHRkxZN0JzdGxi?= =?utf-8?B?amZFZlZjSnJmWHFDWjdFK2Q1ZS92emo5enA4eVd3cFNvMGJ1UmhDVzd1eFJ2?= =?utf-8?B?QjUxek1ISHBlUVlJUndmd21RWExadDdxWktMWmhQU2daRXpNUjF0WjJwcVhH?= =?utf-8?B?ZWxHY2xUejVlWFdHQUdIL1pVVWkwbm4zL2h3RGI4VkgvTUVKMXFyYzRva0lX?= =?utf-8?B?b2FPNFhiRVo4SDN1bkwvSXVzZ2l3S25VZHcvU3JnZDVHK2R1NmdEaWVUbTdO?= =?utf-8?B?THJ3ZGZoVmt1UkFTQVppb0FsT1VoNk1zcjJTU3drL3FsdmE0WlBpZ1QyMlgx?= =?utf-8?B?UFg2d2lMSDJoS1BJdElRYml3bGVlc2hpTTVFSTcyUndlclpKZzFMNGptUVV2?= =?utf-8?B?Nm52eHhBWTlsN2FvLythZVkxV0czbTN4YzNhK0Y0NE9UOGdjRmtYbEEybmRq?= =?utf-8?B?MjE1RFJKUHlYUUJES08vb1VXQVpWWmtoN1dnQmhLVmkxWUtHQVNmR2I5VDE2?= =?utf-8?B?emtrTkdIbXEzeVE3dmlvL3FGNEpOdEMwMVdTakplSzFiWlNHQ3BVYXFGTVZX?= =?utf-8?B?SzVQOUdVS2w3R1h5UzM0OVdjKy9wR1NRVU5BTjZ5bUV1aktSS1VpUVNXMGhm?= =?utf-8?B?Ym5ac0t4UUNuTDF6akpDdWhZalVaWjNpd0FRanUxK2hPMUZKc2NxTGtaMzh0?= =?utf-8?B?NXg2TjRjaFVBNUpFeXA5MjM5MXNQaUQ5OFVhZG03SXc1ZEFQaWp2L1JvSmlt?= =?utf-8?B?cm8rN1M5RDRDOEloem9rdVlQMVpCcFlDYVFjeFFaNWYxYlZaVGdVWWRRYlR3?= =?utf-8?B?Q3lCQUVucWRsRUVMSVNKWjJWVFlDcVhJdkViYlRldmZjSEg1VVRuaGN3ZS9s?= =?utf-8?B?MUc3N256RzFVT1JFMkZndnVHYnBPMW1qSFhGaWNUb0dob21tQmw1TWY3VUg2?= =?utf-8?B?Sks5UW05elhISDdCUElYMHU1b0xTL2xFbldTUkRrbnc5UkRCcGV6KzR6WHk0?= =?utf-8?B?d3BDTDQ1d1lwU004WXFGcUJTb0tvd1NPc2VQYVZ6bnJBMFNZdGtRNU5uTW5V?= =?utf-8?B?b3NTOTdmZDRiZ0E5SFBBd1p5dGJFUXN1MDZHL2VrQlFMVXo5blVkcTlzN0FB?= =?utf-8?B?SVVrZVVwNDlYc3BCVWtLcVN1d21LbnR5UkZkeFlFVzE0SmpBNFh4K3dDKzlJ?= =?utf-8?B?OEhVeDl1Tk1UZ2U4dVVhYmZWRU81V0RoUTBoZ1ZQNnROVUVYRDRuUmZOeVlz?= =?utf-8?B?L1YydlFxTDV1N2VBNU1nK1dTb1hhdG5hRTlyWW9ueTB4UXBQeHVoOXQ2bGg5?= =?utf-8?B?VGkxOTlSTklnNFRRVFp0S0MxbytWNUFBU3JuRUUxNE5MdVdXa3dxVUxxMERI?= =?utf-8?B?TU0vdEd0TTBvS25zQzU5Yk52cWxHY2FINWk1M21JcFZudkxjSEpvZjZITnJQ?= =?utf-8?B?ak5YSXNHTjJWajBaR1ErNmg5TnM3TTI0NHdxaC81WUxlM3ArV25GOTNacW5t?= =?utf-8?B?enJucDFNS0M3NFZsaU5QNzhyemhhM3B4N3NCOWZvNnBQTHBGMjJ3cVNtV3ZT?= =?utf-8?B?UkJySlpSV3hLZUV5ZDg0cFJERG4zdWhBUEhEaTNuZUlIYjRreUs5NGE5c094?= =?utf-8?B?bkhIM2NzZE9haWRKOWpGemlWM0loSGpTTi9EcXB5U09oYzc4U0tZeVRsL1Rm?= =?utf-8?B?LzVxd3pCQjZKTHdmNk5MY3czM3lnWGZWZmNvQ2tyRHlJcEt0UGM3Z0F4VEZx?= =?utf-8?Q?f08TYIBbj8w25xCaaB?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40ad3113-64dd-4532-6c2c-08de77c47545 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2026 18:58:00.6729 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D9mhPacgMT19sH8J9bJnmFIJtGya7jursMFXRq2EI+qLOlWKkx+HPFG/C0PCLSJM X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5993 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" TW9kZXJuaXplIHRoZSBvcGVuIGNvZGVkIHRlc3QgZnJhbWV3b3JrIGJ5IHVzaW5nIGt1bml0LgoK U2lnbmVkLW9mZi1ieTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbnZpZGlhLmNvbT4KLS0tCiBkcml2 ZXJzL2RtYS1idWYvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZG1hLWJ1 Zi9zZWxmdGVzdHMuaCAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2RtYS1idWYvc3QtZG1hLWZl bmNlLWNoYWluLmMgfCAyMTcgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNo YW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKaW5kZXgg NjViZGExYjdjYzczZWIuLmM5N2FiMmQwMWE3ZTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1i dWYvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCkBAIC04LDEzICs4LDEz IEBAIG9iai0kKENPTkZJR19TV19TWU5DKQkJKz0gc3dfc3luYy5vIHN5bmNfZGVidWcubwogb2Jq LSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1hYnVmLm8KIAogZG1hYnVmX3NlbGZ0ZXN0cy15IDo9 IFwKLQlzZWxmdGVzdC5vIFwKLQlzdC1kbWEtZmVuY2UtY2hhaW4ubworCXNlbGZ0ZXN0Lm8KIAog b2JqLSQoQ09ORklHX0RNQUJVRl9TRUxGVEVTVFMpCSs9IGRtYWJ1Zl9zZWxmdGVzdHMubwogCiBk bWFidWZfa3VuaXQteSA6PSBcCiAJc3QtZG1hLWZlbmNlLm8gXAorCXN0LWRtYS1mZW5jZS1jaGFp bi5vIFwKIAlzdC1kbWEtZmVuY2UtdW53cmFwLm8gXAogCXN0LWRtYS1yZXN2Lm8KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9kbWEtYnVmL3NlbGZ0ZXN0cy5oIGIvZHJpdmVycy9kbWEtYnVmL3NlbGZ0 ZXN0cy5oCmluZGV4IDcxMDRjZjBjY2UyNmQxLi4zN2I3MjUxODQxMjc4ZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9kbWEtYnVmL3NlbGZ0ZXN0cy5oCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9zZWxmdGVz dHMuaApAQCAtMTAsNCArMTAsMyBAQAogICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5 IGlndC9kbWFidWZfc2VsZnRlc3QKICAqLwogc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIF9fc2FuaXR5 Y2hlY2tfXykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8KLXNlbGZ0ZXN0KGRtYV9m ZW5jZV9jaGFpbiwgZG1hX2ZlbmNlX2NoYWluKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVm L3N0LWRtYS1mZW5jZS1jaGFpbi5jIGIvZHJpdmVycy9kbWEtYnVmL3N0LWRtYS1mZW5jZS1jaGFp bi5jCmluZGV4IDgyMTAyM2RkMzRkZjY4Li5hMzAyM2QzZmVkYzlkOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9kbWEtYnVmL3N0LWRtYS1mZW5jZS1jaGFpbi5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9z dC1kbWEtZmVuY2UtY2hhaW4uYwpAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdodCDCqSAyMDE5 IEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAorI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KICNpbmNs dWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgogI2luY2x1 ZGUgPGxpbnV4L2RtYS1mZW5jZS1jaGFpbi5oPgpAQCAtMTUsOCArMTYsNiBAQAogI2luY2x1ZGUg PGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CiAKLSNpbmNsdWRl ICJzZWxmdGVzdC5oIgotCiAjZGVmaW5lIENIQUlOX1NaICg0IDw8IDEwKQogCiBzdGF0aWMgc3Ry dWN0IGttZW1fY2FjaGUgKnNsYWJfZmVuY2VzOwpAQCAtNzQsMjcgKzczLDIzIEBAIHN0YXRpYyBz dHJ1Y3QgZG1hX2ZlbmNlICptb2NrX2NoYWluKHN0cnVjdCBkbWFfZmVuY2UgKnByZXYsCiAJcmV0 dXJuICZmLT5iYXNlOwogfQogCi1zdGF0aWMgaW50IHNhbml0eWNoZWNrKHZvaWQgKmFyZykKK3N0 YXRpYyB2b2lkIHRlc3Rfc2FuaXR5Y2hlY2soc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVj dCBkbWFfZmVuY2UgKmYsICpjaGFpbjsKLQlpbnQgZXJyID0gMDsKIAogCWYgPSBtb2NrX2ZlbmNl KCk7Ci0JaWYgKCFmKQotCQlyZXR1cm4gLUVOT01FTTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwo dGVzdCwgZik7CiAKIAljaGFpbiA9IG1vY2tfY2hhaW4oTlVMTCwgZiwgMSk7CiAJaWYgKGNoYWlu KQogCQlkbWFfZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZyhjaGFpbik7CiAJZWxzZQotCQllcnIg PSAtRU5PTUVNOworCQlLVU5JVF9GQUlMKHRlc3QsICJGYWlsZWQgdG8gY3JlYXRlIGNoYWluIik7 CiAKIAlkbWFfZmVuY2Vfc2lnbmFsKGYpOwogCWRtYV9mZW5jZV9wdXQoZik7CiAKIAlkbWFfZmVu Y2VfcHV0KGNoYWluKTsKLQotCXJldHVybiBlcnI7CiB9CiAKIHN0cnVjdCBmZW5jZV9jaGFpbnMg ewpAQCAtMTc2LDcgKzE3MSw3IEBAIHN0YXRpYyB2b2lkIGZlbmNlX2NoYWluc19maW5pKHN0cnVj dCBmZW5jZV9jaGFpbnMgKmZjKQogCWt2ZnJlZShmYy0+Y2hhaW5zKTsKIH0KIAotc3RhdGljIGlu dCBmaW5kX3NlcW5vKHZvaWQgKmFyZykKK3N0YXRpYyB2b2lkIHRlc3RfZmluZF9zZXFubyhzdHJ1 Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGZlbmNlX2NoYWlucyBmYzsKIAlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKQEAgLTE4NCwxNCArMTc5LDEzIEBAIHN0YXRpYyBpbnQgZmluZF9zZXFu byh2b2lkICphcmcpCiAJaW50IGk7CiAKIAllcnIgPSBmZW5jZV9jaGFpbnNfaW5pdCgmZmMsIDY0 LCBzZXFub19pbmMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CisJS1VOSVRfQVNTRVJUX0VR X01TRyh0ZXN0LCBlcnIsIDAsICJGYWlsZWQgdG8gaW5pdCBmZW5jZSBjaGFpbnMiKTsKIAogCWZl bmNlID0gZG1hX2ZlbmNlX2dldChmYy50YWlsKTsKIAllcnIgPSBkbWFfZmVuY2VfY2hhaW5fZmlu ZF9zZXFubygmZmVuY2UsIDApOwogCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCWlmIChlcnIpIHsK LQkJcHJfZXJyKCJSZXBvcnRlZCAlZCBmb3IgZmluZF9zZXFubygwKSFcbiIsIGVycik7CisJCUtV TklUX0ZBSUwodGVzdCwgIlJlcG9ydGVkICVkIGZvciBmaW5kX3NlcW5vKDApISIsIGVycik7CiAJ CWdvdG8gZXJyOwogCX0KIApAQCAtMjAwLDE0ICsxOTQsMTMgQEAgc3RhdGljIGludCBmaW5kX3Nl cW5vKHZvaWQgKmFyZykKIAkJZXJyID0gZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8oJmZlbmNl LCBpICsgMSk7CiAJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCQlpZiAoZXJyKSB7Ci0JCQlwcl9l cnIoIlJlcG9ydGVkICVkIGZvciBmaW5kX3NlcW5vKCVkOiVkKSFcbiIsCi0JCQkgICAgICAgZXJy LCBmYy5jaGFpbl9sZW5ndGggKyAxLCBpICsgMSk7CisJCQlLVU5JVF9GQUlMKHRlc3QsICJSZXBv cnRlZCAlZCBmb3IgZmluZF9zZXFubyglZDolZCkhIiwKKwkJCQkgICBlcnIsIGZjLmNoYWluX2xl bmd0aCArIDEsIGkgKyAxKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAJCWlmIChmZW5jZSAhPSBmYy5j aGFpbnNbaV0pIHsKLQkJCXByX2VycigiSW5jb3JyZWN0IGZlbmNlIHJlcG9ydGVkIGJ5IGZpbmRf c2Vxbm8oJWQ6JWQpXG4iLAotCQkJICAgICAgIGZjLmNoYWluX2xlbmd0aCArIDEsIGkgKyAxKTsK LQkJCWVyciA9IC1FSU5WQUw7CisJCQlLVU5JVF9GQUlMKHRlc3QsICJJbmNvcnJlY3QgZmVuY2Ug cmVwb3J0ZWQgYnkgZmluZF9zZXFubyglZDolZCkiLAorCQkJCSAgIGZjLmNoYWluX2xlbmd0aCAr IDEsIGkgKyAxKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAKQEAgLTIxNSwxMiArMjA4LDExIEBAIHN0 YXRpYyBpbnQgZmluZF9zZXFubyh2b2lkICphcmcpCiAJCWVyciA9IGRtYV9mZW5jZV9jaGFpbl9m aW5kX3NlcW5vKCZmZW5jZSwgaSArIDEpOwogCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAkJaWYg KGVycikgewotCQkJcHJfZXJyKCJFcnJvciByZXBvcnRlZCBmb3IgZmluZGluZyBzZWxmXG4iKTsK KwkJCUtVTklUX0ZBSUwodGVzdCwgIkVycm9yIHJlcG9ydGVkIGZvciBmaW5kaW5nIHNlbGYiKTsK IAkJCWdvdG8gZXJyOwogCQl9CiAJCWlmIChmZW5jZSAhPSBmYy5jaGFpbnNbaV0pIHsKLQkJCXBy X2VycigiSW5jb3JyZWN0IGZlbmNlIHJlcG9ydGVkIGJ5IGZpbmQgc2VsZlxuIik7Ci0JCQllcnIg PSAtRUlOVkFMOworCQkJS1VOSVRfRkFJTCh0ZXN0LCAiSW5jb3JyZWN0IGZlbmNlIHJlcG9ydGVk IGJ5IGZpbmQgc2VsZiIpOwogCQkJZ290byBlcnI7CiAJCX0KIApAQCAtMjI4LDkgKzIyMCw4IEBA IHN0YXRpYyBpbnQgZmluZF9zZXFubyh2b2lkICphcmcpCiAJCWVyciA9IGRtYV9mZW5jZV9jaGFp bl9maW5kX3NlcW5vKCZmZW5jZSwgaSArIDIpOwogCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAkJ aWYgKCFlcnIpIHsKLQkJCXByX2VycigiRXJyb3Igbm90IHJlcG9ydGVkIGZvciBmdXR1cmUgZmVu Y2U6IGZpbmRfc2Vxbm8oJWQ6JWQpIVxuIiwKLQkJCSAgICAgICBpICsgMSwgaSArIDIpOwotCQkJ ZXJyID0gLUVJTlZBTDsKKwkJCUtVTklUX0ZBSUwodGVzdCwgIkVycm9yIG5vdCByZXBvcnRlZCBm b3IgZnV0dXJlIGZlbmNlOiBmaW5kX3NlcW5vKCVkOiVkKSEiLAorCQkJCSAgIGkgKyAxLCBpICsg Mik7CiAJCQlnb3RvIGVycjsKIAkJfQogCkBAIC0yMzgsMzEgKzIyOSwyOCBAQCBzdGF0aWMgaW50 IGZpbmRfc2Vxbm8odm9pZCAqYXJnKQogCQllcnIgPSBkbWFfZmVuY2VfY2hhaW5fZmluZF9zZXFu bygmZmVuY2UsIGkpOwogCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAkJaWYgKGVycikgewotCQkJ cHJfZXJyKCJFcnJvciByZXBvcnRlZCBmb3IgcHJldmlvdXMgZmVuY2UhXG4iKTsKKwkJCUtVTklU X0ZBSUwodGVzdCwgIkVycm9yIHJlcG9ydGVkIGZvciBwcmV2aW91cyBmZW5jZSEiKTsKIAkJCWdv dG8gZXJyOwogCQl9CiAJCWlmIChpID4gMCAmJiBmZW5jZSAhPSBmYy5jaGFpbnNbaSAtIDFdKSB7 Ci0JCQlwcl9lcnIoIkluY29ycmVjdCBmZW5jZSByZXBvcnRlZCBieSBmaW5kX3NlcW5vKCVkOiVk KVxuIiwKLQkJCSAgICAgICBpICsgMSwgaSk7Ci0JCQllcnIgPSAtRUlOVkFMOworCQkJS1VOSVRf RkFJTCh0ZXN0LCAiSW5jb3JyZWN0IGZlbmNlIHJlcG9ydGVkIGJ5IGZpbmRfc2Vxbm8oJWQ6JWQp IiwKKwkJCQkgICBpICsgMSwgaSk7CiAJCQlnb3RvIGVycjsKIAkJfQogCX0KIAogZXJyOgogCWZl bmNlX2NoYWluc19maW5pKCZmYyk7Ci0JcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBmaW5k X3NpZ25hbGVkKHZvaWQgKmFyZykKK3N0YXRpYyB2b2lkIHRlc3RfZmluZF9zaWduYWxlZChzdHJ1 Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGZlbmNlX2NoYWlucyBmYzsKIAlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKIAlpbnQgZXJyOwogCiAJZXJyID0gZmVuY2VfY2hhaW5zX2luaXQoJmZj LCAyLCBzZXFub19pbmMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CisJS1VOSVRfQVNTRVJU X0VRX01TRyh0ZXN0LCBlcnIsIDAsICJGYWlsZWQgdG8gaW5pdCBmZW5jZSBjaGFpbnMiKTsKIAog CWRtYV9mZW5jZV9zaWduYWwoZmMuZmVuY2VzWzBdKTsKIApAQCAtMjcwLDM3ICsyNTgsMzMgQEAg c3RhdGljIGludCBmaW5kX3NpZ25hbGVkKHZvaWQgKmFyZykKIAllcnIgPSBkbWFfZmVuY2VfY2hh aW5fZmluZF9zZXFubygmZmVuY2UsIDEpOwogCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCWlmIChl cnIpIHsKLQkJcHJfZXJyKCJSZXBvcnRlZCAlZCBmb3IgZmluZF9zZXFubygpIVxuIiwgZXJyKTsK KwkJS1VOSVRfRkFJTCh0ZXN0LCAiUmVwb3J0ZWQgJWQgZm9yIGZpbmRfc2Vxbm8oKSEiLCBlcnIp OwogCQlnb3RvIGVycjsKIAl9CiAKIAlpZiAoZmVuY2UgJiYgZmVuY2UgIT0gZmMuY2hhaW5zWzBd KSB7Ci0JCXByX2VycigiSW5jb3JyZWN0IGNoYWluLWZlbmNlLnNlcW5vOiVsbGQgcmVwb3J0ZWQg Zm9yIGNvbXBsZXRlZCBzZXFubzoxXG4iLAotCQkgICAgICAgZmVuY2UtPnNlcW5vKTsKKwkJS1VO SVRfRkFJTCh0ZXN0LCAiSW5jb3JyZWN0IGNoYWluLWZlbmNlLnNlcW5vOiVsbGQgcmVwb3J0ZWQg Zm9yIGNvbXBsZXRlZCBzZXFubzoxIiwKKwkJCSAgIGZlbmNlLT5zZXFubyk7CiAKIAkJZG1hX2Zl bmNlX2dldChmZW5jZSk7CiAJCWVyciA9IGRtYV9mZW5jZV9jaGFpbl9maW5kX3NlcW5vKCZmZW5j ZSwgMSk7CiAJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCQlpZiAoZXJyKQotCQkJcHJfZXJyKCJS ZXBvcnRlZCAlZCBmb3IgZmluZGluZyBzZWxmIVxuIiwgZXJyKTsKLQotCQllcnIgPSAtRUlOVkFM OworCQkJS1VOSVRfRkFJTCh0ZXN0LCAiUmVwb3J0ZWQgJWQgZm9yIGZpbmRpbmcgc2VsZiEiLCBl cnIpOwogCX0KIAogZXJyOgogCWZlbmNlX2NoYWluc19maW5pKCZmYyk7Ci0JcmV0dXJuIGVycjsK IH0KIAotc3RhdGljIGludCBmaW5kX291dF9vZl9vcmRlcih2b2lkICphcmcpCitzdGF0aWMgdm9p ZCB0ZXN0X2ZpbmRfb3V0X29mX29yZGVyKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3Qg ZmVuY2VfY2hhaW5zIGZjOwogCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwogCWludCBlcnI7CiAK IAllcnIgPSBmZW5jZV9jaGFpbnNfaW5pdCgmZmMsIDMsIHNlcW5vX2luYyk7Ci0JaWYgKGVycikK LQkJcmV0dXJuIGVycjsKKwlLVU5JVF9BU1NFUlRfRVFfTVNHKHRlc3QsIGVyciwgMCwgIkZhaWxl ZCB0byBpbml0IGZlbmNlIGNoYWlucyIpOwogCiAJZG1hX2ZlbmNlX3NpZ25hbChmYy5mZW5jZXNb MV0pOwogCkBAIC0zMDgsNyArMjkyLDcgQEAgc3RhdGljIGludCBmaW5kX291dF9vZl9vcmRlcih2 b2lkICphcmcpCiAJZXJyID0gZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8oJmZlbmNlLCAyKTsK IAlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAlpZiAoZXJyKSB7Ci0JCXByX2VycigiUmVwb3J0ZWQg JWQgZm9yIGZpbmRfc2Vxbm8oKSFcbiIsIGVycik7CisJCUtVTklUX0ZBSUwodGVzdCwgIlJlcG9y dGVkICVkIGZvciBmaW5kX3NlcW5vKCkhIiwgZXJyKTsKIAkJZ290byBlcnI7CiAJfQogCkBAIC0z MTksMTYgKzMwMywxMiBAQCBzdGF0aWMgaW50IGZpbmRfb3V0X29mX29yZGVyKHZvaWQgKmFyZykK IAkgKiB3ZSBzaG91bGQgZ2V0IGFzIGZlbmNlIHRvIHdhaXQgdXBvbiAoZmVuY2UgMiBiZWluZyBn YXJiYWdlCiAJICogY29sbGVjdGVkIGR1cmluZyB0aGUgdHJhdmVyc2FsIG9mIHRoZSBjaGFpbiku CiAJICovCi0JaWYgKGZlbmNlICE9IGZjLmNoYWluc1swXSkgewotCQlwcl9lcnIoIkluY29ycmVj dCBjaGFpbi1mZW5jZS5zZXFubzolbGxkIHJlcG9ydGVkIGZvciBjb21wbGV0ZWQgc2Vxbm86Mlxu IiwKLQkJICAgICAgIGZlbmNlID8gZmVuY2UtPnNlcW5vIDogMCk7Ci0KLQkJZXJyID0gLUVJTlZB TDsKLQl9CisJaWYgKGZlbmNlICE9IGZjLmNoYWluc1swXSkKKwkJS1VOSVRfRkFJTCh0ZXN0LCAi SW5jb3JyZWN0IGNoYWluLWZlbmNlLnNlcW5vOiVsbGQgcmVwb3J0ZWQgZm9yIGNvbXBsZXRlZCBz ZXFubzoyIiwKKwkJCSAgIGZlbmNlID8gZmVuY2UtPnNlcW5vIDogMCk7CiAKIGVycjoKIAlmZW5j ZV9jaGFpbnNfZmluaSgmZmMpOwotCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyB1aW50NjRfdCBz ZXFub19pbmMyKHVuc2lnbmVkIGludCBpKQpAQCAtMzM2LDcgKzMxNiw3IEBAIHN0YXRpYyB1aW50 NjRfdCBzZXFub19pbmMyKHVuc2lnbmVkIGludCBpKQogCXJldHVybiAyICogaSArIDI7CiB9CiAK LXN0YXRpYyBpbnQgZmluZF9nYXAodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF9maW5kX2dh cChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGZlbmNlX2NoYWlucyBmYzsKIAlzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZTsKQEAgLTM0NCwyNCArMzI0LDIyIEBAIHN0YXRpYyBpbnQgZmlu ZF9nYXAodm9pZCAqYXJnKQogCWludCBpOwogCiAJZXJyID0gZmVuY2VfY2hhaW5zX2luaXQoJmZj LCA2NCwgc2Vxbm9faW5jMik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKKwlLVU5JVF9BU1NF UlRfRVFfTVNHKHRlc3QsIGVyciwgMCwgIkZhaWxlZCB0byBpbml0IGZlbmNlIGNoYWlucyIpOwog CiAJZm9yIChpID0gMDsgaSA8IGZjLmNoYWluX2xlbmd0aDsgaSsrKSB7CiAJCWZlbmNlID0gZG1h X2ZlbmNlX2dldChmYy50YWlsKTsKIAkJZXJyID0gZG1hX2ZlbmNlX2NoYWluX2ZpbmRfc2Vxbm8o JmZlbmNlLCAyICogaSArIDEpOwogCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKIAkJaWYgKGVycikg ewotCQkJcHJfZXJyKCJSZXBvcnRlZCAlZCBmb3IgZmluZF9zZXFubyglZDolZCkhXG4iLAotCQkJ ICAgICAgIGVyciwgZmMuY2hhaW5fbGVuZ3RoICsgMSwgMiAqIGkgKyAxKTsKKwkJCUtVTklUX0ZB SUwodGVzdCwgIlJlcG9ydGVkICVkIGZvciBmaW5kX3NlcW5vKCVkOiVkKSEiLAorCQkJCSAgIGVy ciwgZmMuY2hhaW5fbGVuZ3RoICsgMSwgMiAqIGkgKyAxKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAJ CWlmIChmZW5jZSAhPSBmYy5jaGFpbnNbaV0pIHsKLQkJCXByX2VycigiSW5jb3JyZWN0IGZlbmNl LnNlcW5vOiVsbGQgcmVwb3J0ZWQgYnkgZmluZF9zZXFubyglZDolZClcbiIsCi0JCQkgICAgICAg ZmVuY2UtPnNlcW5vLAotCQkJICAgICAgIGZjLmNoYWluX2xlbmd0aCArIDEsCi0JCQkgICAgICAg MiAqIGkgKyAxKTsKLQkJCWVyciA9IC1FSU5WQUw7CisJCQlLVU5JVF9GQUlMKHRlc3QsICJJbmNv cnJlY3QgZmVuY2Uuc2Vxbm86JWxsZCByZXBvcnRlZCBieSBmaW5kX3NlcW5vKCVkOiVkKSIsCisJ CQkJICAgZmVuY2UtPnNlcW5vLAorCQkJCSAgIGZjLmNoYWluX2xlbmd0aCArIDEsCisJCQkJICAg MiAqIGkgKyAxKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAKQEAgLTM2OSwxOSArMzQ3LDE3IEBAIHN0 YXRpYyBpbnQgZmluZF9nYXAodm9pZCAqYXJnKQogCQllcnIgPSBkbWFfZmVuY2VfY2hhaW5fZmlu ZF9zZXFubygmZmVuY2UsIDIgKiBpICsgMik7CiAJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwogCQlp ZiAoZXJyKSB7Ci0JCQlwcl9lcnIoIkVycm9yIHJlcG9ydGVkIGZvciBmaW5kaW5nIHNlbGZcbiIp OworCQkJS1VOSVRfRkFJTCh0ZXN0LCAiRXJyb3IgcmVwb3J0ZWQgZm9yIGZpbmRpbmcgc2VsZiIp OwogCQkJZ290byBlcnI7CiAJCX0KIAkJaWYgKGZlbmNlICE9IGZjLmNoYWluc1tpXSkgewotCQkJ cHJfZXJyKCJJbmNvcnJlY3QgZmVuY2UgcmVwb3J0ZWQgYnkgZmluZCBzZWxmXG4iKTsKLQkJCWVy ciA9IC1FSU5WQUw7CisJCQlLVU5JVF9GQUlMKHRlc3QsICJJbmNvcnJlY3QgZmVuY2UgcmVwb3J0 ZWQgYnkgZmluZCBzZWxmIik7CiAJCQlnb3RvIGVycjsKIAkJfQogCX0KIAogZXJyOgogCWZlbmNl X2NoYWluc19maW5pKCZmYyk7Ci0JcmV0dXJuIGVycjsKIH0KIAogc3RydWN0IGZpbmRfcmFjZSB7 CkBAIC00MzcsNyArNDEzLDcgQEAgc3RhdGljIGludCBfX2ZpbmRfcmFjZSh2b2lkICphcmcpCiAJ cmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBmaW5kX3JhY2Uodm9pZCAqYXJnKQorc3RhdGlj IHZvaWQgdGVzdF9maW5kX3JhY2Uoc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBmaW5k X3JhY2UgZGF0YTsKIAlpbnQgbmNwdXMgPSBudW1fb25saW5lX2NwdXMoKTsKQEAgLTQ0NywxMiAr NDIzLDExIEBAIHN0YXRpYyBpbnQgZmluZF9yYWNlKHZvaWQgKmFyZykKIAlpbnQgaTsKIAogCWVy ciA9IGZlbmNlX2NoYWluc19pbml0KCZkYXRhLmZjLCBDSEFJTl9TWiwgc2Vxbm9faW5jKTsKLQlp ZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCUtVTklUX0FTU0VSVF9FUV9NU0codGVzdCwgZXJyLCAw LCAiRmFpbGVkIHRvIGluaXQgZmVuY2UgY2hhaW5zIik7CiAKIAl0aHJlYWRzID0ga21hbGxvY19v YmpzKCp0aHJlYWRzLCBuY3B1cyk7CiAJaWYgKCF0aHJlYWRzKSB7Ci0JCWVyciA9IC1FTk9NRU07 CisJCUtVTklUX0ZBSUwodGVzdCwgIkZhaWxlZCB0byBhbGxvY2F0ZSB0aHJlYWRzIGFycmF5Iik7 CiAJCWdvdG8gZXJyOwogCX0KIApAQCAtNDg2LDc0ICs0NjEsNjcgQEAgc3RhdGljIGludCBmaW5k X3JhY2Uodm9pZCAqYXJnKQogCQkJY291bnQrKzsKIAlwcl9pbmZvKCJDb21wbGV0ZWQgJWx1IGN5 Y2xlc1xuIiwgY291bnQpOwogCisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGVyciwgMCk7CisKIGVy cjoKIAlmZW5jZV9jaGFpbnNfZmluaSgmZGF0YS5mYyk7Ci0JcmV0dXJuIGVycjsKIH0KIAotc3Rh dGljIGludCBzaWduYWxfZm9yd2FyZCh2b2lkICphcmcpCitzdGF0aWMgdm9pZCB0ZXN0X3NpZ25h bF9mb3J3YXJkKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3QgZmVuY2VfY2hhaW5zIGZj OwogCWludCBlcnI7CiAJaW50IGk7CiAKIAllcnIgPSBmZW5jZV9jaGFpbnNfaW5pdCgmZmMsIDY0 LCBzZXFub19pbmMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7CisJS1VOSVRfQVNTRVJUX0VR X01TRyh0ZXN0LCBlcnIsIDAsICJGYWlsZWQgdG8gaW5pdCBmZW5jZSBjaGFpbnMiKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBmYy5jaGFpbl9sZW5ndGg7IGkrKykgewogCQlkbWFfZmVuY2Vfc2lnbmFs KGZjLmZlbmNlc1tpXSk7CiAKIAkJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmMuY2hhaW5z W2ldKSkgewotCQkJcHJfZXJyKCJjaGFpblslZF0gbm90IHNpZ25hbGVkIVxuIiwgaSk7Ci0JCQll cnIgPSAtRUlOVkFMOworCQkJS1VOSVRfRkFJTCh0ZXN0LCAiY2hhaW5bJWRdIG5vdCBzaWduYWxl ZCEiLCBpKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAKIAkJaWYgKGkgKyAxIDwgZmMuY2hhaW5fbGVu Z3RoICYmCiAJCSAgICBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZmMuY2hhaW5zW2kgKyAxXSkpIHsK LQkJCXByX2VycigiY2hhaW5bJWRdIGlzIHNpZ25hbGVkIVxuIiwgaSk7Ci0JCQllcnIgPSAtRUlO VkFMOworCQkJS1VOSVRfRkFJTCh0ZXN0LCAiY2hhaW5bJWRdIGlzIHNpZ25hbGVkISIsIGkpOwog CQkJZ290byBlcnI7CiAJCX0KIAl9CiAKIGVycjoKIAlmZW5jZV9jaGFpbnNfZmluaSgmZmMpOwot CXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgc2lnbmFsX2JhY2t3YXJkKHZvaWQgKmFyZykK K3N0YXRpYyB2b2lkIHRlc3Rfc2lnbmFsX2JhY2t3YXJkKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsK IAlzdHJ1Y3QgZmVuY2VfY2hhaW5zIGZjOwogCWludCBlcnI7CiAJaW50IGk7CiAKIAllcnIgPSBm ZW5jZV9jaGFpbnNfaW5pdCgmZmMsIDY0LCBzZXFub19pbmMpOwotCWlmIChlcnIpCi0JCXJldHVy biBlcnI7CisJS1VOSVRfQVNTRVJUX0VRX01TRyh0ZXN0LCBlcnIsIDAsICJGYWlsZWQgdG8gaW5p dCBmZW5jZSBjaGFpbnMiKTsKIAogCWZvciAoaSA9IGZjLmNoYWluX2xlbmd0aDsgaS0tOyApIHsK IAkJZG1hX2ZlbmNlX3NpZ25hbChmYy5mZW5jZXNbaV0pOwogCiAJCWlmIChpID4gMCAmJiBkbWFf ZmVuY2VfaXNfc2lnbmFsZWQoZmMuY2hhaW5zW2ldKSkgewotCQkJcHJfZXJyKCJjaGFpblslZF0g aXMgc2lnbmFsZWQhXG4iLCBpKTsKLQkJCWVyciA9IC1FSU5WQUw7CisJCQlLVU5JVF9GQUlMKHRl c3QsICJjaGFpblslZF0gaXMgc2lnbmFsZWQhIiwgaSk7CiAJCQlnb3RvIGVycjsKIAkJfQogCX0K IAogCWZvciAoaSA9IDA7IGkgPCBmYy5jaGFpbl9sZW5ndGg7IGkrKykgewogCQlpZiAoIWRtYV9m ZW5jZV9pc19zaWduYWxlZChmYy5jaGFpbnNbaV0pKSB7Ci0JCQlwcl9lcnIoImNoYWluWyVkXSB3 YXMgbm90IHNpZ25hbGVkIVxuIiwgaSk7Ci0JCQllcnIgPSAtRUlOVkFMOworCQkJS1VOSVRfRkFJ TCh0ZXN0LCAiY2hhaW5bJWRdIHdhcyBub3Qgc2lnbmFsZWQhIiwgaSk7CiAJCQlnb3RvIGVycjsK IAkJfQogCX0KIAogZXJyOgogCWZlbmNlX2NoYWluc19maW5pKCZmYyk7Ci0JcmV0dXJuIGVycjsK IH0KIAogc3RhdGljIGludCBfX3dhaXRfZmVuY2VfY2hhaW5zKHZvaWQgKmFyZykKQEAgLTU2Niw3 ICs1MzQsNyBAQCBzdGF0aWMgaW50IF9fd2FpdF9mZW5jZV9jaGFpbnModm9pZCAqYXJnKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IHdhaXRfZm9yd2FyZCh2b2lkICphcmcpCitzdGF0aWMg dm9pZCB0ZXN0X3dhaXRfZm9yd2FyZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGZl bmNlX2NoYWlucyBmYzsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKQEAgLTU3NCwxMiArNTQy LDExIEBAIHN0YXRpYyBpbnQgd2FpdF9mb3J3YXJkKHZvaWQgKmFyZykKIAlpbnQgaTsKIAogCWVy ciA9IGZlbmNlX2NoYWluc19pbml0KCZmYywgQ0hBSU5fU1osIHNlcW5vX2luYyk7Ci0JaWYgKGVy cikKLQkJcmV0dXJuIGVycjsKKwlLVU5JVF9BU1NFUlRfRVFfTVNHKHRlc3QsIGVyciwgMCwgIkZh aWxlZCB0byBpbml0IGZlbmNlIGNoYWlucyIpOwogCiAJdHNrID0ga3RocmVhZF9ydW4oX193YWl0 X2ZlbmNlX2NoYWlucywgJmZjLCAiZG1hYnVmL3dhaXQiKTsKIAlpZiAoSVNfRVJSKHRzaykpIHsK LQkJZXJyID0gUFRSX0VSUih0c2spOworCQlLVU5JVF9GQUlMKHRlc3QsICJGYWlsZWQgdG8gY3Jl YXRlIGt0aHJlYWQiKTsKIAkJZ290byBlcnI7CiAJfQogCWdldF90YXNrX3N0cnVjdCh0c2spOwpA QCAtNTg5LDEzICs1NTYsMTMgQEAgc3RhdGljIGludCB3YWl0X2ZvcndhcmQodm9pZCAqYXJnKQog CQlkbWFfZmVuY2Vfc2lnbmFsKGZjLmZlbmNlc1tpXSk7CiAKIAllcnIgPSBrdGhyZWFkX3N0b3Bf cHV0KHRzayk7CisJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGVyciwgMCk7CiAKIGVycjoKIAlmZW5j ZV9jaGFpbnNfZmluaSgmZmMpOwotCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgd2FpdF9i YWNrd2FyZCh2b2lkICphcmcpCitzdGF0aWMgdm9pZCB0ZXN0X3dhaXRfYmFja3dhcmQoc3RydWN0 IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBmZW5jZV9jaGFpbnMgZmM7CiAJc3RydWN0IHRhc2tf c3RydWN0ICp0c2s7CkBAIC02MDMsMTIgKzU3MCwxMSBAQCBzdGF0aWMgaW50IHdhaXRfYmFja3dh cmQodm9pZCAqYXJnKQogCWludCBpOwogCiAJZXJyID0gZmVuY2VfY2hhaW5zX2luaXQoJmZjLCBD SEFJTl9TWiwgc2Vxbm9faW5jKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCUtVTklUX0FT U0VSVF9FUV9NU0codGVzdCwgZXJyLCAwLCAiRmFpbGVkIHRvIGluaXQgZmVuY2UgY2hhaW5zIik7 CiAKIAl0c2sgPSBrdGhyZWFkX3J1bihfX3dhaXRfZmVuY2VfY2hhaW5zLCAmZmMsICJkbWFidWYv d2FpdCIpOwogCWlmIChJU19FUlIodHNrKSkgewotCQllcnIgPSBQVFJfRVJSKHRzayk7CisJCUtV TklUX0ZBSUwodGVzdCwgIkZhaWxlZCB0byBjcmVhdGUga3RocmVhZCIpOwogCQlnb3RvIGVycjsK IAl9CiAJZ2V0X3Rhc2tfc3RydWN0KHRzayk7CkBAIC02MTgsMTAgKzU4NCwxMCBAQCBzdGF0aWMg aW50IHdhaXRfYmFja3dhcmQodm9pZCAqYXJnKQogCQlkbWFfZmVuY2Vfc2lnbmFsKGZjLmZlbmNl c1tpXSk7CiAKIAllcnIgPSBrdGhyZWFkX3N0b3BfcHV0KHRzayk7CisJS1VOSVRfRVhQRUNUX0VR KHRlc3QsIGVyciwgMCk7CiAKIGVycjoKIAlmZW5jZV9jaGFpbnNfZmluaSgmZmMpOwotCXJldHVy biBlcnI7CiB9CiAKIHN0YXRpYyB2b2lkIHJhbmRvbWlzZV9mZW5jZXMoc3RydWN0IGZlbmNlX2No YWlucyAqZmMpCkBAIC02NDAsNyArNjA2LDcgQEAgc3RhdGljIHZvaWQgcmFuZG9taXNlX2ZlbmNl cyhzdHJ1Y3QgZmVuY2VfY2hhaW5zICpmYykKIAl9CiB9CiAKLXN0YXRpYyBpbnQgd2FpdF9yYW5k b20odm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF93YWl0X3JhbmRvbShzdHJ1Y3Qga3VuaXQg KnRlc3QpCiB7CiAJc3RydWN0IGZlbmNlX2NoYWlucyBmYzsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzazsKQEAgLTY0OCwxNCArNjE0LDEzIEBAIHN0YXRpYyBpbnQgd2FpdF9yYW5kb20odm9pZCAq YXJnKQogCWludCBpOwogCiAJZXJyID0gZmVuY2VfY2hhaW5zX2luaXQoJmZjLCBDSEFJTl9TWiwg c2Vxbm9faW5jKTsKLQlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCUtVTklUX0FTU0VSVF9FUV9N U0codGVzdCwgZXJyLCAwLCAiRmFpbGVkIHRvIGluaXQgZmVuY2UgY2hhaW5zIik7CiAKIAlyYW5k b21pc2VfZmVuY2VzKCZmYyk7CiAKIAl0c2sgPSBrdGhyZWFkX3J1bihfX3dhaXRfZmVuY2VfY2hh aW5zLCAmZmMsICJkbWFidWYvd2FpdCIpOwogCWlmIChJU19FUlIodHNrKSkgewotCQllcnIgPSBQ VFJfRVJSKHRzayk7CisJCUtVTklUX0ZBSUwodGVzdCwgIkZhaWxlZCB0byBjcmVhdGUga3RocmVh ZCIpOwogCQlnb3RvIGVycjsKIAl9CiAJZ2V0X3Rhc2tfc3RydWN0KHRzayk7CkBAIC02NjUsMjkg KzYzMCwxNCBAQCBzdGF0aWMgaW50IHdhaXRfcmFuZG9tKHZvaWQgKmFyZykKIAkJZG1hX2ZlbmNl X3NpZ25hbChmYy5mZW5jZXNbaV0pOwogCiAJZXJyID0ga3RocmVhZF9zdG9wX3B1dCh0c2spOwor CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBlcnIsIDApOwogCiBlcnI6CiAJZmVuY2VfY2hhaW5zX2Zp bmkoJmZjKTsKLQlyZXR1cm4gZXJyOwogfQogCi1pbnQgZG1hX2ZlbmNlX2NoYWluKHZvaWQpCitz dGF0aWMgaW50IGRtYV9mZW5jZV9jaGFpbl9zdWl0ZV9pbml0KHN0cnVjdCBrdW5pdF9zdWl0ZSAq c3VpdGUpCiB7Ci0Jc3RhdGljIGNvbnN0IHN0cnVjdCBzdWJ0ZXN0IHRlc3RzW10gPSB7Ci0JCVNV QlRFU1Qoc2FuaXR5Y2hlY2spLAotCQlTVUJURVNUKGZpbmRfc2Vxbm8pLAotCQlTVUJURVNUKGZp bmRfc2lnbmFsZWQpLAotCQlTVUJURVNUKGZpbmRfb3V0X29mX29yZGVyKSwKLQkJU1VCVEVTVChm aW5kX2dhcCksCi0JCVNVQlRFU1QoZmluZF9yYWNlKSwKLQkJU1VCVEVTVChzaWduYWxfZm9yd2Fy ZCksCi0JCVNVQlRFU1Qoc2lnbmFsX2JhY2t3YXJkKSwKLQkJU1VCVEVTVCh3YWl0X2ZvcndhcmQp LAotCQlTVUJURVNUKHdhaXRfYmFja3dhcmQpLAotCQlTVUJURVNUKHdhaXRfcmFuZG9tKSwKLQl9 OwotCWludCByZXQ7Ci0KIAlwcl9pbmZvKCJzaXplb2YoZG1hX2ZlbmNlX2NoYWluKT0lenVcbiIs CiAJCXNpemVvZihzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluKSk7CiAKQEAgLTY5Niw5ICs2NDYsMzQg QEAgaW50IGRtYV9mZW5jZV9jaGFpbih2b2lkKQogCQkJCSBTTEFCX0hXQ0FDSEVfQUxJR04pOwog CWlmICghc2xhYl9mZW5jZXMpCiAJCXJldHVybiAtRU5PTUVNOwotCi0JcmV0ID0gc3VidGVzdHMo dGVzdHMsIE5VTEwpOwotCi0Ja21lbV9jYWNoZV9kZXN0cm95KHNsYWJfZmVuY2VzKTsKLQlyZXR1 cm4gcmV0OworCXJldHVybiAwOwogfQorCitzdGF0aWMgdm9pZCBkbWFfZmVuY2VfY2hhaW5fc3Vp dGVfZXhpdChzdHJ1Y3Qga3VuaXRfc3VpdGUgKnN1aXRlKQoreworCWttZW1fY2FjaGVfZGVzdHJv eShzbGFiX2ZlbmNlcyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkbWFfZmVuY2Vf Y2hhaW5fY2FzZXNbXSA9IHsKKwlLVU5JVF9DQVNFKHRlc3Rfc2FuaXR5Y2hlY2spLAorCUtVTklU X0NBU0UodGVzdF9maW5kX3NlcW5vKSwKKwlLVU5JVF9DQVNFKHRlc3RfZmluZF9zaWduYWxlZCks CisJS1VOSVRfQ0FTRSh0ZXN0X2ZpbmRfb3V0X29mX29yZGVyKSwKKwlLVU5JVF9DQVNFKHRlc3Rf ZmluZF9nYXApLAorCUtVTklUX0NBU0UodGVzdF9maW5kX3JhY2UpLAorCUtVTklUX0NBU0UodGVz dF9zaWduYWxfZm9yd2FyZCksCisJS1VOSVRfQ0FTRSh0ZXN0X3NpZ25hbF9iYWNrd2FyZCksCisJ S1VOSVRfQ0FTRSh0ZXN0X3dhaXRfZm9yd2FyZCksCisJS1VOSVRfQ0FTRSh0ZXN0X3dhaXRfYmFj a3dhcmQpLAorCUtVTklUX0NBU0UodGVzdF93YWl0X3JhbmRvbSksCisJe30KK307CisKK3N0YXRp YyBzdHJ1Y3Qga3VuaXRfc3VpdGUgZG1hX2ZlbmNlX2NoYWluX3Rlc3Rfc3VpdGUgPSB7CisJLm5h bWUgPSAiZG1hLWJ1Zi1mZW5jZS1jaGFpbiIsCisJLnN1aXRlX2luaXQgPSBkbWFfZmVuY2VfY2hh aW5fc3VpdGVfaW5pdCwKKwkuc3VpdGVfZXhpdCA9IGRtYV9mZW5jZV9jaGFpbl9zdWl0ZV9leGl0 LAorCS50ZXN0X2Nhc2VzID0gZG1hX2ZlbmNlX2NoYWluX2Nhc2VzLAorfTsKKwora3VuaXRfdGVz dF9zdWl0ZShkbWFfZmVuY2VfY2hhaW5fdGVzdF9zdWl0ZSk7Ci0tIAoyLjQzLjAKCg==