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 D0A09FD0062 for ; Sun, 1 Mar 2026 18:58:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3657A10E3F7; Sun, 1 Mar 2026 18:58:06 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="j9bmJ1Oa"; dkim-atps=neutral Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010054.outbound.protection.outlook.com [52.101.201.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32CA410E3F4; Sun, 1 Mar 2026 18:58:04 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DHaW6o2MhQPbYuAj5DonsfR/nANx+a+VAgqldBDVC834v5qvYOPn5x2GJqX5eSZFNWFD+kguKJMGEd0Y8m4ZsZUglxk/ltO/A2j29s2VrzAQ1Ha7peyK+6ODkCWbAbyrrxXUN9dzAz8I/pntgh6T33eYSldYFcwcjoHOn2uc/GSa8BxhHCFHt9TtEB3jUoK+1Cf9OO8BvODqKrw69bV7yOsHfN2PQOeyAJSdMyCS3EjK98WGpM1iniJKScDrKTKIRKHRjf7Zd+0HF/VgqVPdspfCFjDCeg/ekO7SrU9NT6S7a8YiYVLw88zzQR3go6+X1f9z1Od8v8GiTBlfNZF+ZA== 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=U6zBEpGEDAJbrnN4TM09gDDer46h38xGb3BlzK6FUhY=; b=Sevn0r1hJ7fzFMHdZcjvuiSKcLFBOuxNUx+qa5pbyHGRJ2ghZ/jqdXUJ+0KQVobEqAtpSiTCjtiKzP9k2RTfySGSvLXynEpFKoQulWUz4wPkc8PWgAHxznMLW2epTAftJYMLGtBWjL4x3f48H1AX0/rJ68DreCLdUsYA9X2qqV45HkNc0mwdYyLmb3VPjOhma1uFi+TxsfQNen7o7M2C8xfubEQ0xn0LoM/148zSK7tPxQoqPptuS5noru7BwCKYz6eLj/qTkUs7yJUMj/0+o2RPMINll6ouSr1Wf0HxpR11TN6US+lpcDNMuC81yZ3vb3bsZgBtnP3q5BIA5w8cHg== 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=U6zBEpGEDAJbrnN4TM09gDDer46h38xGb3BlzK6FUhY=; b=j9bmJ1OaYL7yxAUx+hG3kgc1V9P5iw7V6aJRTPHZIUIXH49tJu7gcPR6w6tRJrFc24izVIgYepxJGncFwMNAwzJZts7j1I+rG1UD1wC5DLJd4H++3eeSi6fWFT6+N1EWw2crxjoziLhyZyRl2lfxbf5HfSKs5GoSbGNeDFqdc1hTzrOWyuggHVfaiYGJLJQzvPFmDCt3jBhJPOLqIl+vh4Lu2+lAJ6Wiy9SxFDHpF7DSDo9+6wsRIx9lOZM91bDLruUHFqz8ub7LztB/qd6QGLI8mOzpDpfvFBWjDFr3R03s9FtNcHvof2/itxJTF26dQ1LlmtyC+OB2zgq0dvWTkg== 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:00 +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:00 +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 2/5] dma-buf: Change st-dma-fence.c to use kunit Date: Sun, 1 Mar 2026 14:57:54 -0400 Message-ID: <2-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: MN2PR08CA0022.namprd08.prod.outlook.com (2603:10b6:208:239::27) 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: f99a3cd9-5886-4013-155b-08de77c47497 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: VuXWmohjHY8POKHvoQ3g/o8VVElqBg75Msq/xnFV7R8Nu1THu4VfU7X5jOOLrkjXslbTvB58Wglsi+vLYUk9cPOdseHopCmaDkjGsgYmphEGjz89xcWYGb9To+eoip2b4Hr37oqWGRfnhT2k0Oy3prV0htPbCdX0i8pNy2DaDYZvX500uk+4N5VDcolRPtEsRXvQwtFwC2+FP7TXeX3SbXI8SZFKHbcKhbieShBDRFINkT9eQZRFBe7avqikBA0RC4jiiPiFu6uxYoDagwyOUCwdCx23aDYXPcKpADWO8efMQiC6OGVzOn8TujK6lVF0QKf8KEY+/BrxmPar91XgXBzvM/9FOnXdh/3ZrS0bufCng+nbCkuutbaVR4TAhbEWY75j2cSIrj2zIP1omuQhk5nGyg/lQgyit8ZIme3k7CR8t9I/VYZXW8oAWtCEx1Fqf/At9GCeXG28BmK2IiFJ/6jodhNQHVoTKwX9BZf4PYb6CO2b6I3A2dTPAEma/48vI2m4n3CyUgYm0obIUD+yk5LTMk+rjHa5hstcxoXRO4H62WSeq3kMJDwwHEURBbEfl17KvL1pxNvhnXNNullXbtPunJttDYoD+CYrxPDU/jRR/1+1+XfBXziIMVMqW5N5AExPJOykbW0OMZavrrLoaoX8r90rR+KqwpZXjMed8y+mVHqTJm4jKj002r7AlBAbnhvsl4vjBbB69h5iRCSLviRBpdEfvhaDGwZojg1PuoZkuqe51N1z25gZnFr8gtYep34ANCjobwLROCA73Y9zxg== 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?bXVpYTlISkMvWXpZK2NxQUtNbWs0WkllSjZRaFQvbTNqSFpvOG84NGhVWUVs?= =?utf-8?B?K3ZuV2lCWUlOSS9Id1l6KzEzSW5CQlJaZlYxOXFCL2laTmxVOVBIcE0veDRp?= =?utf-8?B?SkdhVTZRWWV1V2NtRXJvL3pvc3V1R3ZkVktjRW5pTW55N0JESWtFME9BNjR6?= =?utf-8?B?c1p3bnlERVF3emhZRFYyVnhaVWtBR3cxMDl0Z1lmWGNqUnVKR2drcVlCaVRJ?= =?utf-8?B?U1RDSVVCTGlXQS8yQ2FWaDc2V0RuNUhHYnQxR2pnYXF1ZjRYR1l6SlFueE53?= =?utf-8?B?OWFWZGJmRnpwR2wxZWIyTXBwV3BLTWZpVVpuczB4TE1nbXYrS2QyOG9RN2d3?= =?utf-8?B?dEU2RU9Tamh2dVd6Uk56R0tUL3JVU004eTVMOCs4ZVFFNUcwUmNVZExCVS9F?= =?utf-8?B?WVU4c2xxVzkveFJCeTJqMWlkbXphWlBmTmE5TndJMitSV2FzVWdsc2FvVkV5?= =?utf-8?B?TDJwSE1XU2ZPbTNtZjB4WlZRZHMrOEd2Rk9Tb3FVb2YreFpqZEhia0huM05i?= =?utf-8?B?cFRhK1FIQWpCNkdoVEZadSs1VlJaeWtQd2ZLWGtjZHB1NlVDQXdTeVZGbmdD?= =?utf-8?B?L0pvZjNjMHU4Q3RZWHFsVGh1aytnenkxamFDV0FvdlMxeTRMQVQ0azZFbkp4?= =?utf-8?B?bVh6aWRzblNsUVpUL3luenF3cmNmeEgyV0hGdXRjV2ZqaVlZdGRCSHpjRXZr?= =?utf-8?B?QVFNNndjTXhia21hL1UxSGNHRDBqSThSNnNOZWRpL0R5Zk9FZE5hNVJMRFo3?= =?utf-8?B?aTdCeStNam1TMUhQSG5yc0ZaOVZBV2tQSWpiSzkrOTh5cXU4bWVEZ1lPVitz?= =?utf-8?B?TE13QmNwOE1xSGw4clNla3JyZEJEUllBM2xac3p5eU1oYW4xTTd1TVFEd2s5?= =?utf-8?B?OTJwU0pqNjQydCtiaUFCZ0pOc05CamI0emV6UFVENi9wSkc4K0tvS1JHS1lB?= =?utf-8?B?YnFFNWhRV0ZOOSszRTZJMFowZVVrbll0Q05FSERzWjMvdnBuZjJXRlRQN2FZ?= =?utf-8?B?Vm01OFViQ0R0REZsWDBvN25xOGtpZVRXcUpJNmpxT0t3Rk9oNk5tekF3aStN?= =?utf-8?B?T1FkU2hqbVdIVGRXWnZZenBOVjhBMCtJTXJ1NWJQUjdpc3BtZk9TQ0pOdURz?= =?utf-8?B?S0h6NEdobGswSGNZNmtDL0tOMDFpa045YWZWS2VBa1Z2OC9TWHVJTWhzWmJp?= =?utf-8?B?QmdTZCs5RzJudWovSFBZdU8xbVV3cGVsY1FlcndQZFQ3MUQ5c3NuZlJiOFp4?= =?utf-8?B?cWRyL1RURDlpNVluTlhDaHBrSExzTXBMWFp0OHRmZ0c2bThMYWVGUVZpbFJp?= =?utf-8?B?KzV5QlowTXhpVTBGdzI5eFY4ejFJZ3M5cG1zdk15TXNpandMUDRWMktUWHVq?= =?utf-8?B?MnVPZWpkM3FXTXRsWWZJQWxERXhWTHYrd1p3WGRrSmhyaG5CTitJT3BOMG9Y?= =?utf-8?B?TTlYbjQ2TGcxRTE4UGdrSHJqaXZVOFNTQlVwTERKVU5CUm1RUXBoSFZTNDl4?= =?utf-8?B?aVZOOTJaenduWCs1MFdFVlROamdmRGhUdmhqOENjS0lpTzYvaDVWb0cwQytk?= =?utf-8?B?M2M3c1JxVjRORmRjZG1mYXQ5ZW5TN3cwWVRybFR4LzF5NWpUcDFQWnVuVHVp?= =?utf-8?B?RTM1UFhwRzVrd3BQRVBlVWYvTVZRZW8rZXZFYzlzNGs0SlEwZkFoSDJaYUdI?= =?utf-8?B?a1I0U1c2NnlDQ0xCN2xNaDNuOVpid2hUZ3JhRlpaNmN5N0VleGt5Q0pEWGtQ?= =?utf-8?B?QUhwQTZXYTg5WXdGeTVlUHJNcWRWbER1REkvL01UMEF1enMvWmViOG1QU2gv?= =?utf-8?B?VmxVYWpTem4vS2M2eVhjMGdIMzd2Vjh5eHR2aktZNlZjSmhoWGx5SksvTHJJ?= =?utf-8?B?VGRJZHRWNlBpNXNBYlFSWVhjekhaYnBDcU1zdFFlb1NvWU4rcG9Vc2pMOG9O?= =?utf-8?B?Y0pSeWxXYUtFbHFHOHFDT0xCSHhRZWY2RTB0NlpHMDFJTVlFUFFnY3YrUjJD?= =?utf-8?B?dHNSK1hRemVqUE04VzdoRzhRSnZvWkdjUmV5MDBFM1Y3WVIvNmsyMWxWMzg3?= =?utf-8?B?dkxNZHF5Sjl5bXo1TWtsMEZlWEcwYmllbUFQZC9yMXJBdWZNcVhVUkRFbmFW?= =?utf-8?B?RExXQ20xMXhZNDgxbGZrRVQxZllMekRVeHlDWFpVMWZGR1NBUGZEVHJuZExP?= =?utf-8?B?QVhmWW8rODIzWURnaVU4YW1jcThEWUdRSzFMVk1KQmQxVDBWMVZFSEFTMzV4?= =?utf-8?B?amhBYXlVc3BLUzArWmdwaWdaK052c21BTjlDcHN4cHdUMEI3Z0hkUU5NUWJW?= =?utf-8?B?NXBuRTZ2bDRBY0Z3Z2NpOU9TQ2xxSXJsTUNiVkI4azVZSG96UUFBQT09?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f99a3cd9-5886-4013-155b-08de77c47497 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:57:59.2545 (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: 7n4fxgcNfTd7WXU4YBWa/JAWaIgIxeUvEZFgg9nSBNYfM5K8amKGchSgjPvQplWZ 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 QWRkIGEgbnVtX29ubGluZV9jcHVzKCkgY2hlY2sgdG8gdGVzdF9yYWNlX3NpZ25hbF9jYWxsYmFj aygpIGFzIHRoZQpkZWZhdWx0IGt1bml0LnB5IHJ1bnMgdGhlIFZNIHdpdGggYSBzaW5nbGUgQ1BV IGFuZCB0aGlzIHRlc3QgZGVwZW5kcyBvbgp0d28gdHJ1bHkgcGFyYWxsZWwga3RocmVhZHMuIFNr aXAgaXQgaW5zdGVhZCBvZiBoYW5naW5nLgoKU2lnbmVkLW9mZi1ieTogSmFzb24gR3VudGhvcnBl IDxqZ2dAbnZpZGlhLmNvbT4KLS0tCiBkcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgICAgICAgfCAg IDIgKy0KIGRyaXZlcnMvZG1hLWJ1Zi9zZWxmdGVzdHMuaCAgICB8ICAgMSAtCiBkcml2ZXJzL2Rt YS1idWYvc3QtZG1hLWZlbmNlLmMgfCAyMDAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiAzIGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYv TWFrZWZpbGUKaW5kZXggMmU3YTE0NTNlMmZlMDQuLjM3Yzk0NTYyZTY3N2NhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxl CkBAIC05LDEzICs5LDEzIEBAIG9iai0kKENPTkZJR19VRE1BQlVGKQkJKz0gdWRtYWJ1Zi5vCiAK IGRtYWJ1Zl9zZWxmdGVzdHMteSA6PSBcCiAJc2VsZnRlc3QubyBcCi0Jc3QtZG1hLWZlbmNlLm8g XAogCXN0LWRtYS1mZW5jZS1jaGFpbi5vIFwKIAlzdC1kbWEtZmVuY2UtdW53cmFwLm8KIAogb2Jq LSQoQ09ORklHX0RNQUJVRl9TRUxGVEVTVFMpCSs9IGRtYWJ1Zl9zZWxmdGVzdHMubwogCiBkbWFi dWZfa3VuaXQteSA6PSBcCisJc3QtZG1hLWZlbmNlLm8gXAogCXN0LWRtYS1yZXN2Lm8KIAogb2Jq LSQoQ09ORklHX0RNQUJVRl9LVU5JVF9URVNUKSArPSBkbWFidWZfa3VuaXQubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEtYnVmL3NlbGZ0ZXN0cy5oIGIvZHJpdmVycy9kbWEtYnVmL3NlbGZ0ZXN0 cy5oCmluZGV4IDJmZGFjYTZiM2U5MmUyLi4wYTM0OGE1Y2JiZWJjNyAxMDA2NDQKLS0tIGEvZHJp dmVycy9kbWEtYnVmL3NlbGZ0ZXN0cy5oCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9zZWxmdGVzdHMu aApAQCAtMTAsNiArMTAsNSBAQAogICogVGVzdHMgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIGJ5IGln dC9kbWFidWZfc2VsZnRlc3QKICAqLwogc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIF9fc2FuaXR5Y2hl Y2tfXykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8KLXNlbGZ0ZXN0KGRtYV9mZW5j ZSwgZG1hX2ZlbmNlKQogc2VsZnRlc3QoZG1hX2ZlbmNlX2NoYWluLCBkbWFfZmVuY2VfY2hhaW4p CiBzZWxmdGVzdChkbWFfZmVuY2VfdW53cmFwLCBkbWFfZmVuY2VfdW53cmFwKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEtYnVmL3N0LWRtYS1mZW5jZS5jIGIvZHJpdmVycy9kbWEtYnVmL3N0LWRt YS1mZW5jZS5jCmluZGV4IDBkOWQ1MjRkNzliNmQ5Li40OTkyNzIyMjk2OTY4ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9kbWEtYnVmL3N0LWRtYS1mZW5jZS5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9z dC1kbWEtZmVuY2UuYwpAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCiAgKi8KIAorI2luY2x1ZGUgPGt1bml0L3Rlc3QuaD4KICNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgogI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgpAQCAtMTIsOCArMTMsNiBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K ICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgogCi0jaW5jbHVkZSAic2VsZnRlc3QuaCIKLQog c3RhdGljIGNvbnN0IGNoYXIgKm1vY2tfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmKQogewogCXJl dHVybiAibW9jayI7CkBAIC0zNiw2MiArMzUsNTUgQEAgc3RhdGljIHN0cnVjdCBkbWFfZmVuY2Ug Km1vY2tfZmVuY2Uodm9pZCkKIAlyZXR1cm4gZjsKIH0KIAotc3RhdGljIGludCBzYW5pdHljaGVj ayh2b2lkICphcmcpCitzdGF0aWMgdm9pZCB0ZXN0X3Nhbml0eWNoZWNrKHN0cnVjdCBrdW5pdCAq dGVzdCkKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmOwogCiAJZiA9IG1vY2tfZmVuY2UoKTsKLQlp ZiAoIWYpCi0JCXJldHVybiAtRU5PTUVNOworCUtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCBm KTsKIAogCWRtYV9mZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5nKGYpOwogCiAJZG1hX2ZlbmNlX3Np Z25hbChmKTsKIAlkbWFfZmVuY2VfcHV0KGYpOwotCi0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp bnQgdGVzdF9zaWduYWxpbmcodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF9zaWduYWxpbmco c3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBkbWFfZmVuY2UgKmY7Ci0JaW50IGVyciA9 IC1FSU5WQUw7CiAKIAlmID0gbW9ja19mZW5jZSgpOwotCWlmICghZikKLQkJcmV0dXJuIC1FTk9N RU07CisJS1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIGYpOwogCiAJZG1hX2ZlbmNlX2VuYWJs ZV9zd19zaWduYWxpbmcoZik7CiAKIAlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGYpKSB7Ci0J CXByX2VycigiRmVuY2UgdW5leHBlY3RlZGx5IHNpZ25hbGVkIG9uIGNyZWF0aW9uXG4iKTsKKwkJ S1VOSVRfRkFJTCh0ZXN0LCAiRmVuY2UgdW5leHBlY3RlZGx5IHNpZ25hbGVkIG9uIGNyZWF0aW9u Iik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCiAJaWYgKGRtYV9mZW5jZV9jaGVja19hbmRfc2ln bmFsKGYpKSB7Ci0JCXByX2VycigiRmVuY2UgcmVwb3J0ZWQgYmVpbmcgYWxyZWFkeSBzaWduYWxl ZFxuIik7CisJCUtVTklUX0ZBSUwodGVzdCwgIkZlbmNlIHJlcG9ydGVkIGJlaW5nIGFscmVhZHkg c2lnbmFsZWQiKTsKIAkJZ290byBlcnJfZnJlZTsKIAl9CiAKIAlpZiAoIWRtYV9mZW5jZV9pc19z aWduYWxlZChmKSkgewotCQlwcl9lcnIoIkZlbmNlIG5vdCByZXBvcnRpbmcgc2lnbmFsZWRcbiIp OworCQlLVU5JVF9GQUlMKHRlc3QsICJGZW5jZSBub3QgcmVwb3J0aW5nIHNpZ25hbGVkIik7CiAJ CWdvdG8gZXJyX2ZyZWU7CiAJfQogCiAJaWYgKCFkbWFfZmVuY2VfdGVzdF9zaWduYWxlZF9mbGFn KGYpKSB7Ci0JCXByX2VycigiRmVuY2UgcmVwb3J0ZWQgbm90IGJlaW5nIGFscmVhZHkgc2lnbmFs ZWRcbiIpOworCQlLVU5JVF9GQUlMKHRlc3QsICJGZW5jZSByZXBvcnRlZCBub3QgYmVpbmcgYWxy ZWFkeSBzaWduYWxlZCIpOwogCQlnb3RvIGVycl9mcmVlOwogCX0KIAogCWlmIChyY3VfZGVyZWZl cmVuY2VfcHJvdGVjdGVkKGYtPm9wcywgdHJ1ZSkpIHsKLQkJcHJfZXJyKCJGZW5jZSBvcHMgbm90 IGNsZWFyZWQgb24gc2lnbmFsXG4iKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiRmVuY2Ugb3BzIG5v dCBjbGVhcmVkIG9uIHNpZ25hbCIpOwogCQlnb3RvIGVycl9mcmVlOwogCX0KIAotCWVyciA9IDA7 CiBlcnJfZnJlZToKIAlkbWFfZmVuY2VfcHV0KGYpOwotCXJldHVybiBlcnI7CiB9CiAKIHN0cnVj dCBzaW1wbGVfY2IgewpAQCAtMTA0LDIxNSArOTYsMTg3IEBAIHN0YXRpYyB2b2lkIHNpbXBsZV9j YWxsYmFjayhzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKIAlz bXBfc3RvcmVfbWIoY29udGFpbmVyX29mKGNiLCBzdHJ1Y3Qgc2ltcGxlX2NiLCBjYiktPnNlZW4s IHRydWUpOwogfQogCi1zdGF0aWMgaW50IHRlc3RfYWRkX2NhbGxiYWNrKHZvaWQgKmFyZykKK3N0 YXRpYyB2b2lkIHRlc3RfYWRkX2NhbGxiYWNrKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1 Y3Qgc2ltcGxlX2NiIGNiID0ge307CiAJc3RydWN0IGRtYV9mZW5jZSAqZjsKLQlpbnQgZXJyID0g LUVJTlZBTDsKIAogCWYgPSBtb2NrX2ZlbmNlKCk7Ci0JaWYgKCFmKQotCQlyZXR1cm4gLUVOT01F TTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZik7CiAKIAlpZiAoZG1hX2ZlbmNlX2Fk ZF9jYWxsYmFjayhmLCAmY2IuY2IsIHNpbXBsZV9jYWxsYmFjaykpIHsKLQkJcHJfZXJyKCJGYWls ZWQgdG8gYWRkIGNhbGxiYWNrLCBmZW5jZSBhbHJlYWR5IHNpZ25hbGVkIVxuIik7CisJCUtVTklU X0ZBSUwodGVzdCwgIkZhaWxlZCB0byBhZGQgY2FsbGJhY2ssIGZlbmNlIGFscmVhZHkgc2lnbmFs ZWQhIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCiAJZG1hX2ZlbmNlX3NpZ25hbChmKTsKIAlp ZiAoIWNiLnNlZW4pIHsKLQkJcHJfZXJyKCJDYWxsYmFjayBmYWlsZWQhXG4iKTsKKwkJS1VOSVRf RkFJTCh0ZXN0LCAiQ2FsbGJhY2sgZmFpbGVkISIpOwogCQlnb3RvIGVycl9mcmVlOwogCX0KIAot CWVyciA9IDA7CiBlcnJfZnJlZToKIAlkbWFfZmVuY2VfcHV0KGYpOwotCXJldHVybiBlcnI7CiB9 CiAKLXN0YXRpYyBpbnQgdGVzdF9sYXRlX2FkZF9jYWxsYmFjayh2b2lkICphcmcpCitzdGF0aWMg dm9pZCB0ZXN0X2xhdGVfYWRkX2NhbGxiYWNrKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1 Y3Qgc2ltcGxlX2NiIGNiID0ge307CiAJc3RydWN0IGRtYV9mZW5jZSAqZjsKLQlpbnQgZXJyID0g LUVJTlZBTDsKIAogCWYgPSBtb2NrX2ZlbmNlKCk7Ci0JaWYgKCFmKQotCQlyZXR1cm4gLUVOT01F TTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZik7CiAKIAlkbWFfZmVuY2VfZW5hYmxl X3N3X3NpZ25hbGluZyhmKTsKIAogCWRtYV9mZW5jZV9zaWduYWwoZik7CiAKIAlpZiAoIWRtYV9m ZW5jZV9hZGRfY2FsbGJhY2soZiwgJmNiLmNiLCBzaW1wbGVfY2FsbGJhY2spKSB7Ci0JCXByX2Vy cigiQWRkZWQgY2FsbGJhY2ssIGJ1dCBmZW5jZSB3YXMgYWxyZWFkeSBzaWduYWxlZCFcbiIpOwor CQlLVU5JVF9GQUlMKHRlc3QsICJBZGRlZCBjYWxsYmFjaywgYnV0IGZlbmNlIHdhcyBhbHJlYWR5 IHNpZ25hbGVkISIpOwogCQlnb3RvIGVycl9mcmVlOwogCX0KIAogCWRtYV9mZW5jZV9zaWduYWwo Zik7CiAJaWYgKGNiLnNlZW4pIHsKLQkJcHJfZXJyKCJDYWxsYmFjayBjYWxsZWQgYWZ0ZXIgZmFp bGVkIGF0dGFjaG1lbnQgIVxuIik7CisJCUtVTklUX0ZBSUwodGVzdCwgIkNhbGxiYWNrIGNhbGxl ZCBhZnRlciBmYWlsZWQgYXR0YWNobWVudCEiKTsKIAkJZ290byBlcnJfZnJlZTsKIAl9CiAKLQll cnIgPSAwOwogZXJyX2ZyZWU6CiAJZG1hX2ZlbmNlX3B1dChmKTsKLQlyZXR1cm4gZXJyOwogfQog Ci1zdGF0aWMgaW50IHRlc3Rfcm1fY2FsbGJhY2sodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVz dF9ybV9jYWxsYmFjayhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IHNpbXBsZV9jYiBj YiA9IHt9OwogCXN0cnVjdCBkbWFfZmVuY2UgKmY7Ci0JaW50IGVyciA9IC1FSU5WQUw7CiAKIAlm ID0gbW9ja19mZW5jZSgpOwotCWlmICghZikKLQkJcmV0dXJuIC1FTk9NRU07CisJS1VOSVRfQVNT RVJUX05PVF9OVUxMKHRlc3QsIGYpOwogCiAJaWYgKGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZiwg JmNiLmNiLCBzaW1wbGVfY2FsbGJhY2spKSB7Ci0JCXByX2VycigiRmFpbGVkIHRvIGFkZCBjYWxs YmFjaywgZmVuY2UgYWxyZWFkeSBzaWduYWxlZCFcbiIpOworCQlLVU5JVF9GQUlMKHRlc3QsICJG YWlsZWQgdG8gYWRkIGNhbGxiYWNrLCBmZW5jZSBhbHJlYWR5IHNpZ25hbGVkISIpOwogCQlnb3Rv IGVycl9mcmVlOwogCX0KIAogCWlmICghZG1hX2ZlbmNlX3JlbW92ZV9jYWxsYmFjayhmLCAmY2Iu Y2IpKSB7Ci0JCXByX2VycigiRmFpbGVkIHRvIHJlbW92ZSBjYWxsYmFjayFcbiIpOworCQlLVU5J VF9GQUlMKHRlc3QsICJGYWlsZWQgdG8gcmVtb3ZlIGNhbGxiYWNrISIpOwogCQlnb3RvIGVycl9m cmVlOwogCX0KIAogCWRtYV9mZW5jZV9zaWduYWwoZik7CiAJaWYgKGNiLnNlZW4pIHsKLQkJcHJf ZXJyKCJDYWxsYmFjayBzdGlsbCBzaWduYWxlZCBhZnRlciByZW1vdmFsIVxuIik7CisJCUtVTklU X0ZBSUwodGVzdCwgIkNhbGxiYWNrIHN0aWxsIHNpZ25hbGVkIGFmdGVyIHJlbW92YWwhIik7CiAJ CWdvdG8gZXJyX2ZyZWU7CiAJfQogCi0JZXJyID0gMDsKIGVycl9mcmVlOgogCWRtYV9mZW5jZV9w dXQoZik7Ci0JcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCB0ZXN0X2xhdGVfcm1fY2FsbGJh Y2sodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF9sYXRlX3JtX2NhbGxiYWNrKHN0cnVjdCBr dW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3Qgc2ltcGxlX2NiIGNiID0ge307CiAJc3RydWN0IGRtYV9m ZW5jZSAqZjsKLQlpbnQgZXJyID0gLUVJTlZBTDsKIAogCWYgPSBtb2NrX2ZlbmNlKCk7Ci0JaWYg KCFmKQotCQlyZXR1cm4gLUVOT01FTTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZik7 CiAKIAlpZiAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLCAmY2IuY2IsIHNpbXBsZV9jYWxsYmFj aykpIHsKLQkJcHJfZXJyKCJGYWlsZWQgdG8gYWRkIGNhbGxiYWNrLCBmZW5jZSBhbHJlYWR5IHNp Z25hbGVkIVxuIik7CisJCUtVTklUX0ZBSUwodGVzdCwgIkZhaWxlZCB0byBhZGQgY2FsbGJhY2ss IGZlbmNlIGFscmVhZHkgc2lnbmFsZWQhIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCiAJZG1h X2ZlbmNlX3NpZ25hbChmKTsKIAlpZiAoIWNiLnNlZW4pIHsKLQkJcHJfZXJyKCJDYWxsYmFjayBm YWlsZWQhXG4iKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiQ2FsbGJhY2sgZmFpbGVkISIpOwogCQln b3RvIGVycl9mcmVlOwogCX0KIAogCWlmIChkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGYsICZj Yi5jYikpIHsKLQkJcHJfZXJyKCJDYWxsYmFjayByZW1vdmFsIHN1Y2NlZWQgYWZ0ZXIgYmVpbmcg ZXhlY3V0ZWQhXG4iKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiQ2FsbGJhY2sgcmVtb3ZhbCBzdWNj ZWVkZWQgYWZ0ZXIgYmVpbmcgZXhlY3V0ZWQhIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCi0J ZXJyID0gMDsKIGVycl9mcmVlOgogCWRtYV9mZW5jZV9wdXQoZik7Ci0JcmV0dXJuIGVycjsKIH0K IAotc3RhdGljIGludCB0ZXN0X3N0YXR1cyh2b2lkICphcmcpCitzdGF0aWMgdm9pZCB0ZXN0X3N0 YXR1cyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJc3RydWN0IGRtYV9mZW5jZSAqZjsKLQlpbnQg ZXJyID0gLUVJTlZBTDsKIAogCWYgPSBtb2NrX2ZlbmNlKCk7Ci0JaWYgKCFmKQotCQlyZXR1cm4g LUVOT01FTTsKKwlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgZik7CiAKIAlkbWFfZmVuY2Vf ZW5hYmxlX3N3X3NpZ25hbGluZyhmKTsKIAogCWlmIChkbWFfZmVuY2VfZ2V0X3N0YXR1cyhmKSkg ewotCQlwcl9lcnIoIkZlbmNlIHVuZXhwZWN0ZWRseSBoYXMgc2lnbmFsZWQgc3RhdHVzIG9uIGNy ZWF0aW9uXG4iKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiRmVuY2UgdW5leHBlY3RlZGx5IGhhcyBz aWduYWxlZCBzdGF0dXMgb24gY3JlYXRpb24iKTsKIAkJZ290byBlcnJfZnJlZTsKIAl9CiAKIAlk bWFfZmVuY2Vfc2lnbmFsKGYpOwogCWlmICghZG1hX2ZlbmNlX2dldF9zdGF0dXMoZikpIHsKLQkJ cHJfZXJyKCJGZW5jZSBub3QgcmVwb3J0aW5nIHNpZ25hbGVkIHN0YXR1c1xuIik7CisJCUtVTklU X0ZBSUwodGVzdCwgIkZlbmNlIG5vdCByZXBvcnRpbmcgc2lnbmFsZWQgc3RhdHVzIik7CiAJCWdv dG8gZXJyX2ZyZWU7CiAJfQogCi0JZXJyID0gMDsKIGVycl9mcmVlOgogCWRtYV9mZW5jZV9wdXQo Zik7Ci0JcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCB0ZXN0X2Vycm9yKHZvaWQgKmFyZykK K3N0YXRpYyB2b2lkIHRlc3RfZXJyb3Ioc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0cnVjdCBk bWFfZmVuY2UgKmY7Ci0JaW50IGVyciA9IC1FSU5WQUw7CiAKIAlmID0gbW9ja19mZW5jZSgpOwot CWlmICghZikKLQkJcmV0dXJuIC1FTk9NRU07CisJS1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3Qs IGYpOwogCiAJZG1hX2ZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoZik7CiAKIAlkbWFfZmVuY2Vf c2V0X2Vycm9yKGYsIC1FSU8pOwogCiAJaWYgKGRtYV9mZW5jZV9nZXRfc3RhdHVzKGYpKSB7Ci0J CXByX2VycigiRmVuY2UgdW5leHBlY3RlZGx5IGhhcyBlcnJvciBzdGF0dXMgYmVmb3JlIHNpZ25h bFxuIik7CisJCUtVTklUX0ZBSUwodGVzdCwgIkZlbmNlIHVuZXhwZWN0ZWRseSBoYXMgZXJyb3Ig c3RhdHVzIGJlZm9yZSBzaWduYWwiKTsKIAkJZ290byBlcnJfZnJlZTsKIAl9CiAKIAlkbWFfZmVu Y2Vfc2lnbmFsKGYpOwogCWlmIChkbWFfZmVuY2VfZ2V0X3N0YXR1cyhmKSAhPSAtRUlPKSB7Ci0J CXByX2VycigiRmVuY2Ugbm90IHJlcG9ydGluZyBlcnJvciBzdGF0dXMsIGdvdCAlZFxuIiwKLQkJ ICAgICAgIGRtYV9mZW5jZV9nZXRfc3RhdHVzKGYpKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiRmVu Y2Ugbm90IHJlcG9ydGluZyBlcnJvciBzdGF0dXMsIGdvdCAlZCIsCisJCQkgICBkbWFfZmVuY2Vf Z2V0X3N0YXR1cyhmKSk7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCi0JZXJyID0gMDsKIGVycl9m cmVlOgogCWRtYV9mZW5jZV9wdXQoZik7Ci0JcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCB0 ZXN0X3dhaXQodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF93YWl0KHN0cnVjdCBrdW5pdCAq dGVzdCkKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmOwotCWludCBlcnIgPSAtRUlOVkFMOwogCiAJ ZiA9IG1vY2tfZmVuY2UoKTsKLQlpZiAoIWYpCi0JCXJldHVybiAtRU5PTUVNOworCUtVTklUX0FT U0VSVF9OT1RfTlVMTCh0ZXN0LCBmKTsKIAogCWRtYV9mZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5n KGYpOwogCiAJaWYgKGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZiwgZmFsc2UsIDApICE9IDApIHsK LQkJcHJfZXJyKCJXYWl0IHJlcG9ydGVkIGNvbXBsZXRlIGJlZm9yZSBiZWluZyBzaWduYWxlZFxu Iik7CisJCUtVTklUX0ZBSUwodGVzdCwgIldhaXQgcmVwb3J0ZWQgY29tcGxldGUgYmVmb3JlIGJl aW5nIHNpZ25hbGVkIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCiAJZG1hX2ZlbmNlX3NpZ25h bChmKTsKIAogCWlmIChkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KGYsIGZhbHNlLCAwKSAhPSAxKSB7 Ci0JCXByX2VycigiV2FpdCByZXBvcnRlZCBpbmNvbXBsZXRlIGFmdGVyIGJlaW5nIHNpZ25hbGVk XG4iKTsKKwkJS1VOSVRfRkFJTCh0ZXN0LCAiV2FpdCByZXBvcnRlZCBpbmNvbXBsZXRlIGFmdGVy IGJlaW5nIHNpZ25hbGVkIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCi0JZXJyID0gMDsKIGVy cl9mcmVlOgogCWRtYV9mZW5jZV9zaWduYWwoZik7CiAJZG1hX2ZlbmNlX3B1dChmKTsKLQlyZXR1 cm4gZXJyOwogfQogCiBzdHJ1Y3Qgd2FpdF90aW1lciB7CkBAIC0zMjcsMjEgKzI5MSwxOSBAQCBz dGF0aWMgdm9pZCB3YWl0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcikKIAlkbWFfZmVu Y2Vfc2lnbmFsKHd0LT5mKTsKIH0KIAotc3RhdGljIGludCB0ZXN0X3dhaXRfdGltZW91dCh2b2lk ICphcmcpCitzdGF0aWMgdm9pZCB0ZXN0X3dhaXRfdGltZW91dChzdHJ1Y3Qga3VuaXQgKnRlc3Qp CiB7CiAJc3RydWN0IHdhaXRfdGltZXIgd3Q7Ci0JaW50IGVyciA9IC1FSU5WQUw7CiAKIAl0aW1l cl9zZXR1cF9vbl9zdGFjaygmd3QudGltZXIsIHdhaXRfdGltZXIsIDApOwogCiAJd3QuZiA9IG1v Y2tfZmVuY2UoKTsKLQlpZiAoIXd0LmYpCi0JCXJldHVybiAtRU5PTUVNOworCUtVTklUX0FTU0VS VF9OT1RfTlVMTCh0ZXN0LCB3dC5mKTsKIAogCWRtYV9mZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5n KHd0LmYpOwogCiAJaWYgKGRtYV9mZW5jZV93YWl0X3RpbWVvdXQod3QuZiwgZmFsc2UsIDEpICE9 IDApIHsKLQkJcHJfZXJyKCJXYWl0IHJlcG9ydGVkIGNvbXBsZXRlIGJlZm9yZSBiZWluZyBzaWdu YWxlZFxuIik7CisJCUtVTklUX0ZBSUwodGVzdCwgIldhaXQgcmVwb3J0ZWQgY29tcGxldGUgYmVm b3JlIGJlaW5nIHNpZ25hbGVkIik7CiAJCWdvdG8gZXJyX2ZyZWU7CiAJfQogCkBAIC0zNDksNDIg KzMxMSwzOCBAQCBzdGF0aWMgaW50IHRlc3Rfd2FpdF90aW1lb3V0KHZvaWQgKmFyZykKIAogCWlm IChkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KHd0LmYsIGZhbHNlLCBIWikgPT0gMCkgewogCQlpZiAo dGltZXJfcGVuZGluZygmd3QudGltZXIpKSB7Ci0JCQlwcl9ub3RpY2UoIlRpbWVyIGRpZCBub3Qg ZmlyZSB3aXRoaW4gb25lIEhaIVxuIik7Ci0JCQllcnIgPSAwOyAvKiBub3Qgb3VyIGZhdWx0ISAq LworCQkJa3VuaXRfbWFya19za2lwcGVkKAorCQkJCXRlc3QsICJUaW1lciBkaWQgbm90IGZpcmUg d2l0aGluIG9uIEhaIVxuIik7CiAJCX0gZWxzZSB7Ci0JCQlwcl9lcnIoIldhaXQgcmVwb3J0ZWQg aW5jb21wbGV0ZSBhZnRlciB0aW1lb3V0XG4iKTsKKwkJCUtVTklUX0ZBSUwodGVzdCwKKwkJCQkg ICAiV2FpdCByZXBvcnRlZCBpbmNvbXBsZXRlIGFmdGVyIHRpbWVvdXQiKTsKIAkJfQogCQlnb3Rv IGVycl9mcmVlOwogCX0KIAotCWVyciA9IDA7CiBlcnJfZnJlZToKIAl0aW1lcl9kZWxldGVfc3lu Yygmd3QudGltZXIpOwogCXRpbWVyX2Rlc3Ryb3lfb25fc3RhY2soJnd0LnRpbWVyKTsKIAlkbWFf ZmVuY2Vfc2lnbmFsKHd0LmYpOwogCWRtYV9mZW5jZV9wdXQod3QuZik7Ci0JcmV0dXJuIGVycjsK IH0KIAotc3RhdGljIGludCB0ZXN0X3N0dWIodm9pZCAqYXJnKQorc3RhdGljIHZvaWQgdGVzdF9z dHViKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmWzY0XTsKLQlp bnQgZXJyID0gLUVJTlZBTDsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGYpOyBpKyspIHsKIAkJZltpXSA9IGRtYV9mZW5jZV9nZXRfc3R1YigpOwogCQlpZiAoIWRtYV9m ZW5jZV9pc19zaWduYWxlZChmW2ldKSkgewotCQkJcHJfZXJyKCJPYnRhaW5lZCB1bnNpZ25hbGVk IHN0dWIgZmVuY2UhXG4iKTsKKwkJCUtVTklUX0ZBSUwodGVzdCwgIk9idGFpbmVkIHVuc2lnbmFs ZWQgc3R1YiBmZW5jZSEiKTsKIAkJCWdvdG8gZXJyOwogCQl9CiAJfQogCi0JZXJyID0gMDsKIGVy cjoKIAl3aGlsZSAoaS0tKQogCQlkbWFfZmVuY2VfcHV0KGZbaV0pOwotCXJldHVybiBlcnI7CiB9 CiAKIC8qIE5vdyBvZmYgdG8gdGhlIHJhY2VzISAqLwpAQCAtNDczLDEyICs0MzEsMTkgQEAgc3Rh dGljIGludCB0aHJlYWRfc2lnbmFsX2NhbGxiYWNrKHZvaWQgKmFyZykKIAlyZXR1cm4gZXJyOwog fQogCi1zdGF0aWMgaW50IHJhY2Vfc2lnbmFsX2NhbGxiYWNrKHZvaWQgKmFyZykKK3N0YXRpYyB2 b2lkIHRlc3RfcmFjZV9zaWduYWxfY2FsbGJhY2soc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXN0 cnVjdCBkbWFfZmVuY2UgX19yY3UgKmZbMl0gPSB7fTsKIAlpbnQgcmV0ID0gMDsKIAlpbnQgcGFz czsKIAorCS8qCisJICogdGhyZWFkX3NpZ25hbF9jYWxsYmFjaygpIHNwaW5zIHVuZGVyIFJDVSBh bmQgaXQgY2Fubm90IG1ha2UgZm9yd2FyZAorCSAqIHByb2dyZXNzIHVubGVzcyB0aGUgdGhyZWFk cyBhcmUgdHJ1bHkgcnVubmluZyBjb25jdXJyZW50bHkuCisJICovCisJaWYgKG51bV9vbmxpbmVf Y3B1cygpIDwgMikKKwkJa3VuaXRfc2tpcCh0ZXN0LCAicmVxdWlyZXMgYXQgbGVhc3QgMiBDUFVz Iik7CisKIAlmb3IgKHBhc3MgPSAwOyAhcmV0ICYmIHBhc3MgPD0gMTsgcGFzcysrKSB7CiAJCXN0 cnVjdCByYWNlX3RocmVhZCB0WzJdOwogCQlpbnQgaTsKQEAgLTQ5MCwxMCArNDU1LDEwIEBAIHN0 YXRpYyBpbnQgcmFjZV9zaWduYWxfY2FsbGJhY2sodm9pZCAqYXJnKQogCQkJdFtpXS50YXNrID0g a3RocmVhZF9ydW4odGhyZWFkX3NpZ25hbF9jYWxsYmFjaywgJnRbaV0sCiAJCQkJCQkiZG1hLWZl bmNlOiVkIiwgaSk7CiAJCQlpZiAoSVNfRVJSKHRbaV0udGFzaykpIHsKLQkJCQlyZXQgPSBQVFJf RVJSKHRbaV0udGFzayk7CisJCQkJS1VOSVRfRkFJTCh0ZXN0LCAiRmFpbGVkIHRvIGNyZWF0ZSBr dGhyZWFkIik7CiAJCQkJd2hpbGUgKC0taSA+PSAwKQogCQkJCQlrdGhyZWFkX3N0b3BfcHV0KHRb aV0udGFzayk7Ci0JCQkJcmV0dXJuIHJldDsKKwkJCQlyZXR1cm47CiAJCQl9CiAJCQlnZXRfdGFz a19zdHJ1Y3QodFtpXS50YXNrKTsKIAkJfQpAQCAtNTA5LDI2ICs0NzQsMzUgQEAgc3RhdGljIGlu dCByYWNlX3NpZ25hbF9jYWxsYmFjayh2b2lkICphcmcpCiAJCX0KIAl9CiAKLQlyZXR1cm4gcmV0 OworCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCByZXQsIDApOwogfQogCi1pbnQgZG1hX2ZlbmNlKHZv aWQpCitzdGF0aWMgaW50IGRtYV9mZW5jZV9zdWl0ZV9pbml0KHN0cnVjdCBrdW5pdF9zdWl0ZSAq c3VpdGUpCiB7Ci0Jc3RhdGljIGNvbnN0IHN0cnVjdCBzdWJ0ZXN0IHRlc3RzW10gPSB7Ci0JCVNV QlRFU1Qoc2FuaXR5Y2hlY2spLAotCQlTVUJURVNUKHRlc3Rfc2lnbmFsaW5nKSwKLQkJU1VCVEVT VCh0ZXN0X2FkZF9jYWxsYmFjayksCi0JCVNVQlRFU1QodGVzdF9sYXRlX2FkZF9jYWxsYmFjayks Ci0JCVNVQlRFU1QodGVzdF9ybV9jYWxsYmFjayksCi0JCVNVQlRFU1QodGVzdF9sYXRlX3JtX2Nh bGxiYWNrKSwKLQkJU1VCVEVTVCh0ZXN0X3N0YXR1cyksCi0JCVNVQlRFU1QodGVzdF9lcnJvciks Ci0JCVNVQlRFU1QodGVzdF93YWl0KSwKLQkJU1VCVEVTVCh0ZXN0X3dhaXRfdGltZW91dCksCi0J CVNVQlRFU1QodGVzdF9zdHViKSwKLQkJU1VCVEVTVChyYWNlX3NpZ25hbF9jYWxsYmFjayksCi0J fTsKLQogCXByX2luZm8oInNpemVvZihkbWFfZmVuY2UpPSV6dVxuIiwgc2l6ZW9mKHN0cnVjdCBk bWFfZmVuY2UpKTsKLQlyZXR1cm4gc3VidGVzdHModGVzdHMsIE5VTEwpOworCXJldHVybiAwOwog fQorCitzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZG1hX2ZlbmNlX2Nhc2VzW10gPSB7CisJS1VO SVRfQ0FTRSh0ZXN0X3Nhbml0eWNoZWNrKSwKKwlLVU5JVF9DQVNFKHRlc3Rfc2lnbmFsaW5nKSwK KwlLVU5JVF9DQVNFKHRlc3RfYWRkX2NhbGxiYWNrKSwKKwlLVU5JVF9DQVNFKHRlc3RfbGF0ZV9h ZGRfY2FsbGJhY2spLAorCUtVTklUX0NBU0UodGVzdF9ybV9jYWxsYmFjayksCisJS1VOSVRfQ0FT RSh0ZXN0X2xhdGVfcm1fY2FsbGJhY2spLAorCUtVTklUX0NBU0UodGVzdF9zdGF0dXMpLAorCUtV TklUX0NBU0UodGVzdF9lcnJvciksCisJS1VOSVRfQ0FTRSh0ZXN0X3dhaXQpLAorCUtVTklUX0NB U0UodGVzdF93YWl0X3RpbWVvdXQpLAorCUtVTklUX0NBU0UodGVzdF9zdHViKSwKKwlLVU5JVF9D QVNFKHRlc3RfcmFjZV9zaWduYWxfY2FsbGJhY2spLAorCXt9Cit9OworCitzdGF0aWMgc3RydWN0 IGt1bml0X3N1aXRlIGRtYV9mZW5jZV90ZXN0X3N1aXRlID0geworCS5uYW1lID0gImRtYS1idWYt ZmVuY2UiLAorCS5zdWl0ZV9pbml0ID0gZG1hX2ZlbmNlX3N1aXRlX2luaXQsCisJLnRlc3RfY2Fz ZXMgPSBkbWFfZmVuY2VfY2FzZXMsCit9OworCitrdW5pdF90ZXN0X3N1aXRlKGRtYV9mZW5jZV90 ZXN0X3N1aXRlKTsKLS0gCjIuNDMuMAoK