Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5881121pxu; Wed, 23 Dec 2020 07:43:47 -0800 (PST) X-Google-Smtp-Source: ABdhPJzlUxC2p0uK8Sl/G4t5nMAlCurpcu+Bd9pFqAZyvX0l9tzF3q5icq8r8/mZq7cMhvZm7s6o X-Received: by 2002:a05:6402:3074:: with SMTP id bs20mr25053255edb.365.1608738227672; Wed, 23 Dec 2020 07:43:47 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1608738227; cv=pass; d=google.com; s=arc-20160816; b=oLRgNt332JOH4KpCKOaHakeBIAEie/EZUm6nIqGXA18GbGQNmO4DIgYsPnrj3aU7cV PFdiwy7LjsZGtV1TktBfrMQ5aQHq2mT7ufKpGl+YWoAhEG8fJXxujW+0qTzsR5zS/D1g 7m/ck7JfgJqaITl5M63VatoF1S2C6xfAWs9LNKlG4+sxdsVVslMtIROBZ39RFQG3qc5t GRDeAoswwEVJU+HKng43ym39eJm71JJpEf4vr1WR3PkchOoh6rX7jWngRGShy1V8HJJo FYhY7bKMAOV1bGXe7qoCViTAmkrQ2oOiv3uTXggyd53F7fuOkd2rfFnEIqL6B4KnCisj aLVw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Ig7DuFi88K/P7GJvM7NX3+MEDUZtMSNI77ix80wz9Uw=; b=P2/eJayC0xM2IDGF6Tey95kEqbTGZQOF0DgyAqrwSAuLEiRnFZHf+SXixa6R1PupWD IW0ola3Nghp6qN2VP2nV8fr9ESJycj0ZQD5Phw50mjDI5+kc3SKvNHbvRpJOu5M6P0uA 3WL0yzov3iDSjrAHSdT8UMRAV5fP9xsf+tUmp2/7Dw2wM9zC2ldNRO986dGjQyje90x2 x930N+JtX7bMgEP+f6l50WTDUvikIL1IajYiUoBmih5QgMvBNPSwLjxe1vKq7U1tPy1d vssfG4FokC2UarkPoi0jgenrNH9Mdnmw+6JAVYQbyPr/1hfhBjFp+2LDwReO0yMoUdn/ UnZQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b="iMG+h/RQ"; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w13si12035176ejn.15.2020.12.23.07.43.24; Wed, 23 Dec 2020 07:43:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b="iMG+h/RQ"; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729345AbgLWPmD (ORCPT + 99 others); Wed, 23 Dec 2020 10:42:03 -0500 Received: from mail-mw2nam12on2073.outbound.protection.outlook.com ([40.107.244.73]:3743 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729276AbgLWPl4 (ORCPT ); Wed, 23 Dec 2020 10:41:56 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZWy5wwoH8BMZpxGwmQfADWzflF/57KUhjoNLut7CXVk5P7h2pmAp30fq+KYArkRTRyakT4nTVbJuQpkkFdY+E1DuHEznM4mjMF7hYWkFs9B/Si/AjN+Geaq/z7LBDWpy2jfZEG4lhl0GuFSrD2EvV6X0gSFmZ8QZe3+vEeJXJqM+IFZID9dZO8G4Pw+DAvOgJpMIagydVdeimUwkUm5vqtNcYfxrVsiAl8jImNB/o4vrFoDp5AGJJYwkRvcLzLvRydAVqW9lrWJfvDRRbPMmbN/XkdVDi2RnGhGpk1xJ5yZ/Vf51zbt/xmxAacNYcf7KP87tGdh9z7fTS+6/s1g1Ig== 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-SenderADCheck; bh=Ig7DuFi88K/P7GJvM7NX3+MEDUZtMSNI77ix80wz9Uw=; b=imEelOHDMWnWfLxwvF8rAMyRbcbw7mc2H1eapKkTBdCprjECSQPdFP7nLnDKclo/GfESMqRlgCNtYHY6GQI53SwykuiZScaM7+mvKdSSc9Aedx12chQTfXfZNQjwOWIASmH6dWuETEwtHaq4EJnn0GLlvVDJwHsbQ/nFXuG8XfHiDseQHx2vTiO1Exxm3Fs6XA8BkAkG3lDAEBuUmKvt+FDhehRrJFoTci6SIBhEyqPnGBpswPY22eK2g/WNlBqxk/13vG7h1fSN/QKFHS4VbLslYIK6E7Dpf1PP5hw7mTrpPWVGp2/ops9BFuV+LRTsW3jsLyFdm/jbNuWRUwixPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ig7DuFi88K/P7GJvM7NX3+MEDUZtMSNI77ix80wz9Uw=; b=iMG+h/RQw3atN5W7zlJvRTV2UvmO0jX5ahBWY/kbDT+yB5kRXe7ugt624VXaGRdbSwSdPaeTRelsO8IZbXzP6T/YYfYynbfd+EEKC280r/NsrCQCufTTWTB+oXlm5q61EvF7ZU7zHIn/zIVY6mjGzpfHFdegEonzcLqWHHQe9us= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2815.namprd11.prod.outlook.com (2603:10b6:805:62::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.25; Wed, 23 Dec 2020 15:40:21 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca%5]) with mapi id 15.20.3700.026; Wed, 23 Dec 2020 15:40:21 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v4 17/24] wfx: add queue.c/queue.h Date: Wed, 23 Dec 2020 16:39:18 +0100 Message-Id: <20201223153925.73742-18-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> References: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Originating-IP: [82.67.86.106] X-ClientProxiedBy: SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (82.67.86.106) by SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Wed, 23 Dec 2020 15:40:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e2e70289-26f5-455a-fb7e-08d8a7590ea9 X-MS-TrafficTypeDiagnostic: SN6PR11MB2815: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PExaPWZd5aTq7KsnkahkXo2gVMcBYSlKU7SEsjW2C37Z8GRi6NSxbm9h3lW4C7sHSsc6n5cw3PdIIQcebsJuQ8jgNnqse6EF2K3mxj7e9GM3XIPMjpqmma49wxHWRY2qOpYdIPkU4bTmv0tJsLXa1bUl2nBmIEsDM/c6NJ3u5ZijlApsE3m+KnK6+FKOxgV2OO6u25DDLTpya0VdMN3i/IzCmo8z64AC4UfZ66WD6d/vWefIhM/nJBv3I/oJTUmmiDqOa8c8ZZY6joSVWjPhVkPd0H83mkYr/0GA1bKXNznJRzxxWCeSVkIVznFod1oagssYigjLuMtvl+DaUlcf/CoKS7e0gRkDl9fmdqFoF1rF8gvBDoufYP1oYm8Inkd1E4KAIFpnjJNEh7KdJ4qFhA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(136003)(366004)(376002)(39850400004)(346002)(66574015)(478600001)(83380400001)(8676002)(186003)(2906002)(8936002)(26005)(52116002)(107886003)(16526019)(7696005)(66946007)(7416002)(6486002)(956004)(2616005)(54906003)(66476007)(316002)(4326008)(36756003)(5660300002)(1076003)(86362001)(66556008)(30864003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?MC94QktvZ2hXVE8xZ3NxUWpHZDM2b05yeng0U09WMlR0VWVKZlNqSHk2NHRL?= =?utf-8?B?Y1BQZ2JYUFVFazlmRFNkYmJHbW8zS2dCeVV0SDNRS2hPa0F4ZEQ5RnFkbmUr?= =?utf-8?B?NGlGNHpVWG16T3R3NEtTbTFTNVBnUmxlRm9rVTE1OGF6eWFEQnIydVlvK2Er?= =?utf-8?B?MjdDMFJvSWxNOU9PalpwUnpjZXhJOHNoU1YwdE9TM1F6L3hJaHNZaE9Kelhn?= =?utf-8?B?TUhIL1FsS2JrNWFCSDdZOGh0WTlQSk15M1ZpS3RJZFNFSzFlS1NCQlhyUk9O?= =?utf-8?B?dndwZ2VTZlEzYzV1cHplNGcxdFQ3WkNOdS9Ec0hOaUhqVWNLREgzUG9wdEND?= =?utf-8?B?YjJBVDRCb3gyOFNlNWU4TUwyclQ5Y1gxQzg2dHNOT29JbGtOd2MvYUV6ZUZP?= =?utf-8?B?bVA3TXYxYjhCMENPZ0lPb0ozZVdBbEdQSUNlSVVaYWVZamtoOUJyMThwbEd0?= =?utf-8?B?SGFqNkp3VUVVMDNGbGNUUVhYM3EzZjYvQm9VSWJUTHNhTEpOVkcrR05pcWcw?= =?utf-8?B?TFVPbG5pUHlWK21lOU81dXZsUWN6SWwwZnhPZW1sWk9qNlRDOTVnQVh0RVdo?= =?utf-8?B?Q1FkT1VrVEVPeTZ6cEk4azA3ZVJZUnBPOVNXd04zcDBpSnpNeTg3QzdCeGk1?= =?utf-8?B?UGJCL0wyWS9DbHY2QVQ4N1EyeUpXVkJhYlR6ZHdUeTZwUjhZdmJLK0FpOEta?= =?utf-8?B?a1plMTJMb3p6TWRMUEZBdnFZQlNod3BjUTZOKzI3WFRtMVNDelgyWXJ0QVQ1?= =?utf-8?B?Z0QrcjZDeFJRM0laZ3NHaFlsTi84V0dqNXBBcXFvU0hGZDRYaVpvMU91bnJM?= =?utf-8?B?T2JUQml4Z1BmOVVWTzlLdENpV0hKdXZUSWFNWVJtM3REV0RLQ3JzMm10NWRs?= =?utf-8?B?L1B2eVZNWFA2QVVsSXhyTjRObU1wS2psbHNjcTk5VEs3Q2pWSERjaFR3Rldo?= =?utf-8?B?L3hJVnZvdnpMUWhkNDFsUnpId2RLNVZ2Rm9DRzk5cGl1aVRscXIyRnJhbFhF?= =?utf-8?B?M0hBc3djaFdyaXB2bHl0UWhIK3FENVI0eFNJRGd0UzhUS1V3bWd1M3R1TlZY?= =?utf-8?B?WVJkTkZRNEtscjJxUjZnSlZZVUdFRE5aMUtpWkNETE5Lb0lscmRwTXJaM2NP?= =?utf-8?B?aTVNeTROcW5SNjNUODd5cytyWXN6bjlISEU5T2VwM0c2QndYaFIvSTNCdTZy?= =?utf-8?B?b0pueHFVSllvb29ocjVpTXVMaVhacnp0SUlVbHltOVFGaUpib3FyMzI2Rkh0?= =?utf-8?B?TzJLRXJkYk4yZCs2UjNzUGpOME11UWZ2VkVzd2xzUW9UcnFITUFVR2k0N042?= =?utf-8?Q?X5Z54TUhkFodWazxK0TUkK3pzDyYBQJwoI?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2020 15:40:21.1345 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-Network-Message-Id: e2e70289-26f5-455a-fb7e-08d8a7590ea9 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3WVBVpaOEjktGTdutlfOFNciOTumhyiaGw2XGS3ItKYA/Mnlsm8mR9kE9woEoL/P0c+DDS/+Wcp3krpeDoYiZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2815 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUuYyB8IDMwNyArKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVl dWUuaCB8ICA0NSArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGRjMTYxZjVmZjcxCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCkBAIC0wLDAgKzEsMzA3IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogTygxKSBU WCBxdWV1ZSB3aXRoIGJ1aWx0LWluIGFsbG9jYXRvci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAx MCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8 bmV0L21hYzgwMjExLmg+CisKKyNpbmNsdWRlICJxdWV1ZS5oIgorI2luY2x1ZGUgIndmeC5oIgor I2luY2x1ZGUgInN0YS5oIgorI2luY2x1ZGUgImRhdGFfdHguaCIKKyNpbmNsdWRlICJ0cmFjZXMu aCIKKwordm9pZCB3ZnhfdHhfbG9jayhzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlhdG9taWNf aW5jKCZ3ZGV2LT50eF9sb2NrKTsKK30KKwordm9pZCB3ZnhfdHhfdW5sb2NrKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2KQoreworCWludCB0eF9sb2NrID0gYXRvbWljX2RlY19yZXR1cm4oJndkZXYtPnR4 X2xvY2spOworCisJV0FSTih0eF9sb2NrIDwgMCwgImluY29uc2lzdGVudCB0eF9sb2NrIHZhbHVl Iik7CisJaWYgKCF0eF9sb2NrKQorCQl3ZnhfYmhfcmVxdWVzdF90eCh3ZGV2KTsKK30KKwordm9p ZCB3ZnhfdHhfZmx1c2goc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaW50IHJldDsKKworCS8q IERvIG5vdCB3YWl0IGZvciBhbnkgcmVwbHkgaWYgY2hpcCBpcyBmcm96ZW4gKi8KKwlpZiAod2Rl di0+Y2hpcF9mcm96ZW4pCisJCXJldHVybjsKKworCXdmeF90eF9sb2NrKHdkZXYpOworCW11dGV4 X2xvY2soJndkZXYtPmhpZl9jbWQubG9jayk7CisJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHdk ZXYtPmhpZi50eF9idWZmZXJzX2VtcHR5LAorCQkJCSAhd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNl ZCwKKwkJCQkgbXNlY3NfdG9famlmZmllcygzMDAwKSk7CisJaWYgKCFyZXQpIHsKKwkJZGV2X3dh cm4od2Rldi0+ZGV2LCAiY2Fubm90IGZsdXNoIHR4IGJ1ZmZlcnMgKCVkIHN0aWxsIGJ1c3kpXG4i LAorCQkJIHdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQpOworCQl3ZnhfcGVuZGluZ19kdW1wX29s ZF9mcmFtZXMod2RldiwgMzAwMCk7CisJCS8qIEZJWE1FOiBkcm9wIHBlbmRpbmcgZnJhbWVzIGhl cmUgKi8KKwkJd2Rldi0+Y2hpcF9mcm96ZW4gPSB0cnVlOworCX0KKwltdXRleF91bmxvY2soJndk ZXYtPmhpZl9jbWQubG9jayk7CisJd2Z4X3R4X3VubG9jayh3ZGV2KTsKK30KKwordm9pZCB3Znhf dHhfbG9ja19mbHVzaChzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwl3ZnhfdHhfbG9jayh3ZGV2 KTsKKwl3ZnhfdHhfZmx1c2god2Rldik7Cit9CisKK3ZvaWQgd2Z4X3R4X3F1ZXVlc19pbml0KHN0 cnVjdCB3ZnhfdmlmICp3dmlmKQoreworCS8qIFRoZSBkZXZpY2UgaXMgaW4gY2hhcmdlIHRvIHJl c3BlY3QgdGhlIGRldGFpbHMgb2YgdGhlIFFvUyBwYXJhbWV0ZXJzLgorCSAqIFRoZSBkcml2ZXIg anVzdCBlbnN1cmUgdGhhdCBpdCByb3VnaHRseSByZXNwZWN0IHRoZSBwcmlvcml0aWVzIHRvCisJ ICogYXZvaWQgYW55IHNob3J0YWdlLgorCSAqLworCWNvbnN0IGludCBwcmlvcml0aWVzW0lFRUU4 MDIxMV9OVU1fQUNTXSA9IHsgMSwgMiwgNjQsIDEyOCB9OworCWludCBpOworCisJZm9yIChpID0g MDsgaSA8IElFRUU4MDIxMV9OVU1fQUNTOyArK2kpIHsKKwkJc2tiX3F1ZXVlX2hlYWRfaW5pdCgm d3ZpZi0+dHhfcXVldWVbaV0ubm9ybWFsKTsKKwkJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmd3ZpZi0+ dHhfcXVldWVbaV0uY2FiKTsKKwkJd3ZpZi0+dHhfcXVldWVbaV0ucHJpb3JpdHkgPSBwcmlvcml0 aWVzW2ldOworCX0KK30KKwordm9pZCB3ZnhfdHhfcXVldWVzX2NoZWNrX2VtcHR5KHN0cnVjdCB3 ZnhfdmlmICp3dmlmKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IElFRUU4MDIxMV9O VU1fQUNTOyArK2kpIHsKKwkJV0FSTl9PTihhdG9taWNfcmVhZCgmd3ZpZi0+dHhfcXVldWVbaV0u cGVuZGluZ19mcmFtZXMpKTsKKwkJV0FSTl9PTighc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZ3 dmlmLT50eF9xdWV1ZVtpXS5ub3JtYWwpKTsKKwkJV0FSTl9PTighc2tiX3F1ZXVlX2VtcHR5X2xv Y2tsZXNzKCZ3dmlmLT50eF9xdWV1ZVtpXS5jYWIpKTsKKwl9Cit9CisKK2Jvb2wgd2Z4X3R4X3F1 ZXVlX2VtcHR5KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZSkK K3sKKwlyZXR1cm4gc2tiX3F1ZXVlX2VtcHR5KCZxdWV1ZS0+bm9ybWFsKSAmJiBza2JfcXVldWVf ZW1wdHkoJnF1ZXVlLT5jYWIpOworfQorCitzdGF0aWMgdm9pZCBfX3dmeF90eF9xdWV1ZV9kcm9w KHN0cnVjdCB3ZnhfdmlmICp3dmlmLAorCQkJCXN0cnVjdCBza19idWZmX2hlYWQgKnNrYl9xdWV1 ZSwKKwkJCQlzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpkcm9wcGVkKQoreworCXN0cnVjdCBza19idWZm ICpza2IsICp0bXA7CisKKwlzcGluX2xvY2tfYmgoJnNrYl9xdWV1ZS0+bG9jayk7CisJc2tiX3F1 ZXVlX3dhbGtfc2FmZShza2JfcXVldWUsIHNrYiwgdG1wKSB7CisJCV9fc2tiX3VubGluayhza2Is IHNrYl9xdWV1ZSk7CisJCXNrYl9xdWV1ZV9oZWFkKGRyb3BwZWQsIHNrYik7CisJfQorCXNwaW5f dW5sb2NrX2JoKCZza2JfcXVldWUtPmxvY2spOworfQorCit2b2lkIHdmeF90eF9xdWV1ZV9kcm9w KHN0cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZSwKKwkJICAgICAg IHN0cnVjdCBza19idWZmX2hlYWQgKmRyb3BwZWQpCit7CisJX193ZnhfdHhfcXVldWVfZHJvcCh3 dmlmLCAmcXVldWUtPmNhYiwgZHJvcHBlZCk7CisJX193ZnhfdHhfcXVldWVfZHJvcCh3dmlmLCAm cXVldWUtPm5vcm1hbCwgZHJvcHBlZCk7CisJd2FrZV91cCgmd3ZpZi0+d2Rldi0+dHhfZGVxdWV1 ZSk7Cit9CisKK3ZvaWQgd2Z4X3R4X3F1ZXVlc19wdXQoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0 cnVjdCBza19idWZmICpza2IpCit7CisJc3RydWN0IHdmeF9xdWV1ZSAqcXVldWUgPSAmd3ZpZi0+ dHhfcXVldWVbc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYildOworCXN0cnVjdCBpZWVlODAyMTFf dHhfaW5mbyAqdHhfaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsKKworCWlmICh0eF9pbmZv LT5mbGFncyAmIElFRUU4MDIxMV9UWF9DVExfU0VORF9BRlRFUl9EVElNKQorCQlza2JfcXVldWVf dGFpbCgmcXVldWUtPmNhYiwgc2tiKTsKKwllbHNlCisJCXNrYl9xdWV1ZV90YWlsKCZxdWV1ZS0+ bm9ybWFsLCBza2IpOworfQorCit2b2lkIHdmeF9wZW5kaW5nX2Ryb3Aoc3RydWN0IHdmeF9kZXYg KndkZXYsIHN0cnVjdCBza19idWZmX2hlYWQgKmRyb3BwZWQpCit7CisJc3RydWN0IHdmeF9xdWV1 ZSAqcXVldWU7CisJc3RydWN0IHdmeF92aWYgKnd2aWY7CisJc3RydWN0IGhpZl9tc2cgKmhpZjsK KwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJV0FSTighd2Rldi0+Y2hpcF9mcm96ZW4sICIlcyBz aG91bGQgb25seSBiZSB1c2VkIHRvIHJlY292ZXIgYSBmcm96ZW4gZGV2aWNlIiwKKwkgICAgIF9f ZnVuY19fKTsKKwl3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZ3ZGV2LT50eF9wZW5kaW5nKSkg IT0gTlVMTCkgeworCQloaWYgPSAoc3RydWN0IGhpZl9tc2cgKilza2ItPmRhdGE7CisJCXd2aWYg PSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZhY2UpOworCQlpZiAod3ZpZikgeworCQkJ cXVldWUgPSAmd3ZpZi0+dHhfcXVldWVbc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYildOworCQkJ V0FSTl9PTihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSA+IDMpOworCQkJV0FSTl9PTighYXRv bWljX3JlYWQoJnF1ZXVlLT5wZW5kaW5nX2ZyYW1lcykpOworCQkJYXRvbWljX2RlYygmcXVldWUt PnBlbmRpbmdfZnJhbWVzKTsKKwkJfQorCQlza2JfcXVldWVfaGVhZChkcm9wcGVkLCBza2IpOwor CX0KK30KKworc3RydWN0IHNrX2J1ZmYgKndmeF9wZW5kaW5nX2dldChzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwgdTMyIHBhY2tldF9pZCkKK3sKKwlzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZTsKKwlzdHJ1 Y3QgaGlmX3JlcV90eCAqcmVxOworCXN0cnVjdCB3ZnhfdmlmICp3dmlmOworCXN0cnVjdCBoaWZf bXNnICpoaWY7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCXNwaW5fbG9ja19iaCgmd2Rldi0+ dHhfcGVuZGluZy5sb2NrKTsKKwlza2JfcXVldWVfd2Fsaygmd2Rldi0+dHhfcGVuZGluZywgc2ti KSB7CisJCWhpZiA9IChzdHJ1Y3QgaGlmX21zZyAqKXNrYi0+ZGF0YTsKKwkJcmVxID0gKHN0cnVj dCBoaWZfcmVxX3R4ICopaGlmLT5ib2R5OworCQlpZiAocmVxLT5wYWNrZXRfaWQgIT0gcGFja2V0 X2lkKQorCQkJY29udGludWU7CisJCXNwaW5fdW5sb2NrX2JoKCZ3ZGV2LT50eF9wZW5kaW5nLmxv Y2spOworCQl3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKwkJaWYg KHd2aWYpIHsKKwkJCXF1ZXVlID0gJnd2aWYtPnR4X3F1ZXVlW3NrYl9nZXRfcXVldWVfbWFwcGlu Zyhza2IpXTsKKwkJCVdBUk5fT04oc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgPiAzKTsKKwkJ CVdBUk5fT04oIWF0b21pY19yZWFkKCZxdWV1ZS0+cGVuZGluZ19mcmFtZXMpKTsKKwkJCWF0b21p Y19kZWMoJnF1ZXVlLT5wZW5kaW5nX2ZyYW1lcyk7CisJCX0KKwkJc2tiX3VubGluayhza2IsICZ3 ZGV2LT50eF9wZW5kaW5nKTsKKwkJcmV0dXJuIHNrYjsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJndk ZXYtPnR4X3BlbmRpbmcubG9jayk7CisJV0FSTigxLCAiY2Fubm90IGZpbmQgcGFja2V0IGluIHBl bmRpbmcgcXVldWUiKTsKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCB3ZnhfcGVuZGluZ19kdW1w X29sZF9mcmFtZXMoc3RydWN0IHdmeF9kZXYgKndkZXYsIHVuc2lnbmVkIGludCBsaW1pdF9tcykK K3sKKwlrdGltZV90IG5vdyA9IGt0aW1lX2dldCgpOworCXN0cnVjdCB3ZnhfdHhfcHJpdiAqdHhf cHJpdjsKKwlzdHJ1Y3QgaGlmX3JlcV90eCAqcmVxOworCXN0cnVjdCBza19idWZmICpza2I7CisJ Ym9vbCBmaXJzdCA9IHRydWU7CisKKwlzcGluX2xvY2tfYmgoJndkZXYtPnR4X3BlbmRpbmcubG9j ayk7CisJc2tiX3F1ZXVlX3dhbGsoJndkZXYtPnR4X3BlbmRpbmcsIHNrYikgeworCQl0eF9wcml2 ID0gd2Z4X3NrYl90eF9wcml2KHNrYik7CisJCXJlcSA9IHdmeF9za2JfdHhyZXEoc2tiKTsKKwkJ aWYgKGt0aW1lX2FmdGVyKG5vdywga3RpbWVfYWRkX21zKHR4X3ByaXYtPnhtaXRfdGltZXN0YW1w LAorCQkJCQkJICBsaW1pdF9tcykpKSB7CisJCQlpZiAoZmlyc3QpIHsKKwkJCQlkZXZfaW5mbyh3 ZGV2LT5kZXYsICJmcmFtZXMgc3R1Y2sgaW4gZmlybXdhcmUgc2luY2UgJWRtcyBvciBtb3JlOlxu IiwKKwkJCQkJIGxpbWl0X21zKTsKKwkJCQlmaXJzdCA9IGZhbHNlOworCQkJfQorCQkJZGV2X2lu Zm8od2Rldi0+ZGV2LCAiICAgaWQgJTA4eCBzZW50ICVsbGRtcyBhZ29cbiIsCisJCQkJIHJlcS0+ cGFja2V0X2lkLAorCQkJCSBrdGltZV9tc19kZWx0YShub3csIHR4X3ByaXYtPnhtaXRfdGltZXN0 YW1wKSk7CisJCX0KKwl9CisJc3Bpbl91bmxvY2tfYmgoJndkZXYtPnR4X3BlbmRpbmcubG9jayk7 Cit9CisKK3Vuc2lnbmVkIGludCB3ZnhfcGVuZGluZ19nZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2LAorCQkJCQkgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJa3RpbWVfdCBu b3cgPSBrdGltZV9nZXQoKTsKKwlzdHJ1Y3Qgd2Z4X3R4X3ByaXYgKnR4X3ByaXYgPSB3Znhfc2ti X3R4X3ByaXYoc2tiKTsKKworCXJldHVybiBrdGltZV91c19kZWx0YShub3csIHR4X3ByaXYtPnht aXRfdGltZXN0YW1wKTsKK30KKworYm9vbCB3ZnhfdHhfcXVldWVzX2hhc19jYWIoc3RydWN0IHdm eF92aWYgKnd2aWYpCit7CisJaW50IGk7CisKKwlpZiAod3ZpZi0+dmlmLT50eXBlICE9IE5MODAy MTFfSUZUWVBFX0FQKQorCQlyZXR1cm4gZmFsc2U7CisJZm9yIChpID0gMDsgaSA8IElFRUU4MDIx MV9OVU1fQUNTOyArK2kpCisJCS8qIE5vdGU6IHNpbmNlIG9ubHkgQVAgY2FuIGhhdmUgbWNhc3Qg ZnJhbWVzIGluIHF1ZXVlIGFuZCBvbmx5CisJCSAqIG9uZSB2aWYgY2FuIGJlIEFQLCBhbGwgcXVl dWVkIGZyYW1lcyBoYXMgc2FtZSBpbnRlcmZhY2UgaWQKKwkJICovCisJCWlmICghc2tiX3F1ZXVl X2VtcHR5X2xvY2tsZXNzKCZ3dmlmLT50eF9xdWV1ZVtpXS5jYWIpKQorCQkJcmV0dXJuIHRydWU7 CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW50IHdmeF90eF9xdWV1ZV9nZXRfd2VpZ2h0 KHN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlKQoreworCXJldHVybiBhdG9taWNfcmVhZCgmcXVldWUt PnBlbmRpbmdfZnJhbWVzKSAqIHF1ZXVlLT5wcmlvcml0eTsKK30KKworc3RhdGljIHN0cnVjdCBz a19idWZmICp3ZnhfdHhfcXVldWVzX2dldF9za2Ioc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJ c3RydWN0IHdmeF9xdWV1ZSAqcXVldWVzW0lFRUU4MDIxMV9OVU1fQUNTICogQVJSQVlfU0laRSh3 ZGV2LT52aWYpXTsKKwlpbnQgaSwgaiwgbnVtX3F1ZXVlcyA9IDA7CisJc3RydWN0IHdmeF92aWYg Knd2aWY7CisJc3RydWN0IGhpZl9tc2cgKmhpZjsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJ Lyogc29ydCB0aGUgcXVldWVzICovCisJd3ZpZiA9IE5VTEw7CisJd2hpbGUgKCh3dmlmID0gd3Zp Zl9pdGVyYXRlKHdkZXYsIHd2aWYpKSAhPSBOVUxMKSB7CisJCWZvciAoaSA9IDA7IGkgPCBJRUVF ODAyMTFfTlVNX0FDUzsgaSsrKSB7CisJCQlXQVJOX09OKG51bV9xdWV1ZXMgPj0gQVJSQVlfU0la RShxdWV1ZXMpKTsKKwkJCXF1ZXVlc1tudW1fcXVldWVzXSA9ICZ3dmlmLT50eF9xdWV1ZVtpXTsK KwkJCWZvciAoaiA9IG51bV9xdWV1ZXM7IGogPiAwOyBqLS0pCisJCQkJaWYgKHdmeF90eF9xdWV1 ZV9nZXRfd2VpZ2h0KHF1ZXVlc1tqXSkgPAorCQkJCSAgICB3ZnhfdHhfcXVldWVfZ2V0X3dlaWdo dChxdWV1ZXNbaiAtIDFdKSkKKwkJCQkJc3dhcChxdWV1ZXNbaiAtIDFdLCBxdWV1ZXNbal0pOwor CQkJbnVtX3F1ZXVlcysrOworCQl9CisJfQorCisJd3ZpZiA9IE5VTEw7CisJd2hpbGUgKCh3dmlm ID0gd3ZpZl9pdGVyYXRlKHdkZXYsIHd2aWYpKSAhPSBOVUxMKSB7CisJCWlmICghd3ZpZi0+YWZ0 ZXJfZHRpbV90eF9hbGxvd2VkKQorCQkJY29udGludWU7CisJCWZvciAoaSA9IDA7IGkgPCBudW1f cXVldWVzOyBpKyspIHsKKwkJCXNrYiA9IHNrYl9kZXF1ZXVlKCZxdWV1ZXNbaV0tPmNhYik7CisJ CQlpZiAoIXNrYikKKwkJCQljb250aW51ZTsKKwkJCS8qIE5vdGU6IHNpbmNlIG9ubHkgQVAgY2Fu IGhhdmUgbWNhc3QgZnJhbWVzIGluIHF1ZXVlCisJCQkgKiBhbmQgb25seSBvbmUgdmlmIGNhbiBi ZSBBUCwgYWxsIHF1ZXVlZCBmcmFtZXMgaGFzCisJCQkgKiBzYW1lIGludGVyZmFjZSBpZAorCQkJ ICovCisJCQloaWYgPSAoc3RydWN0IGhpZl9tc2cgKilza2ItPmRhdGE7CisJCQlXQVJOX09OKGhp Zi0+aW50ZXJmYWNlICE9IHd2aWYtPmlkKTsKKwkJCVdBUk5fT04ocXVldWVzW2ldICE9CisJCQkJ Jnd2aWYtPnR4X3F1ZXVlW3NrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpXSk7CisJCQlhdG9taWNf aW5jKCZxdWV1ZXNbaV0tPnBlbmRpbmdfZnJhbWVzKTsKKwkJCXRyYWNlX3F1ZXVlc19zdGF0cyh3 ZGV2LCBxdWV1ZXNbaV0pOworCQkJcmV0dXJuIHNrYjsKKwkJfQorCQkvKiBObyBtb3JlIG11bHRp Y2FzdCB0byBzZW50ICovCisJCXd2aWYtPmFmdGVyX2R0aW1fdHhfYWxsb3dlZCA9IGZhbHNlOwor CQlzY2hlZHVsZV93b3JrKCZ3dmlmLT51cGRhdGVfdGltX3dvcmspOworCX0KKworCWZvciAoaSA9 IDA7IGkgPCBudW1fcXVldWVzOyBpKyspIHsKKwkJc2tiID0gc2tiX2RlcXVldWUoJnF1ZXVlc1tp XS0+bm9ybWFsKTsKKwkJaWYgKHNrYikgeworCQkJYXRvbWljX2luYygmcXVldWVzW2ldLT5wZW5k aW5nX2ZyYW1lcyk7CisJCQl0cmFjZV9xdWV1ZXNfc3RhdHMod2RldiwgcXVldWVzW2ldKTsKKwkJ CXJldHVybiBza2I7CisJCX0KKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0cnVjdCBoaWZfbXNn ICp3ZnhfdHhfcXVldWVzX2dldChzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlzdHJ1Y3Qgd2Z4 X3R4X3ByaXYgKnR4X3ByaXY7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCWlmIChhdG9taWNf cmVhZCgmd2Rldi0+dHhfbG9jaykpCisJCXJldHVybiBOVUxMOworCXNrYiA9IHdmeF90eF9xdWV1 ZXNfZ2V0X3NrYih3ZGV2KTsKKwlpZiAoIXNrYikKKwkJcmV0dXJuIE5VTEw7CisJc2tiX3F1ZXVl X3RhaWwoJndkZXYtPnR4X3BlbmRpbmcsIHNrYik7CisJd2FrZV91cCgmd2Rldi0+dHhfZGVxdWV1 ZSk7CisJdHhfcHJpdiA9IHdmeF9za2JfdHhfcHJpdihza2IpOworCXR4X3ByaXYtPnhtaXRfdGlt ZXN0YW1wID0ga3RpbWVfZ2V0KCk7CisJcmV0dXJuIChzdHJ1Y3QgaGlmX21zZyAqKXNrYi0+ZGF0 YTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUu aCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE0ODQyY2FiNjY5YwotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUuaApAQCAtMCwwICsxLDQ1 IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICog TygxKSBUWCBxdWV1ZSB3aXRoIGJ1aWx0LWluIGFsbG9jYXRvci4KKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAo YykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2lmbmRlZiBXRlhfUVVFVUVfSAorI2RlZmluZSBX RlhfUVVFVUVfSAorCisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgv YXRvbWljLmg+CisKK3N0cnVjdCB3ZnhfZGV2Oworc3RydWN0IHdmeF92aWY7CisKK3N0cnVjdCB3 ZnhfcXVldWUgeworCXN0cnVjdCBza19idWZmX2hlYWQJbm9ybWFsOworCXN0cnVjdCBza19idWZm X2hlYWQJY2FiOyAvKiBDb250ZW50IEFmdGVyIChEVElNKSBCZWFjb24gKi8KKwlhdG9taWNfdAkJ cGVuZGluZ19mcmFtZXM7CisJaW50CQkJcHJpb3JpdHk7Cit9OworCit2b2lkIHdmeF90eF9sb2Nr KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKK3ZvaWQgd2Z4X3R4X3VubG9jayhzdHJ1Y3Qgd2Z4X2Rl diAqd2Rldik7Cit2b2lkIHdmeF90eF9mbHVzaChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7Cit2b2lk IHdmeF90eF9sb2NrX2ZsdXNoKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKKwordm9pZCB3ZnhfdHhf cXVldWVzX2luaXQoc3RydWN0IHdmeF92aWYgKnd2aWYpOwordm9pZCB3ZnhfdHhfcXVldWVzX2No ZWNrX2VtcHR5KHN0cnVjdCB3ZnhfdmlmICp3dmlmKTsKK2Jvb2wgd2Z4X3R4X3F1ZXVlc19oYXNf Y2FiKHN0cnVjdCB3ZnhfdmlmICp3dmlmKTsKK3ZvaWQgd2Z4X3R4X3F1ZXVlc19wdXQoc3RydWN0 IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBza19idWZmICpza2IpOworc3RydWN0IGhpZl9tc2cgKndm eF90eF9xdWV1ZXNfZ2V0KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKKworYm9vbCB3ZnhfdHhfcXVl dWVfZW1wdHkoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlKTsK K3ZvaWQgd2Z4X3R4X3F1ZXVlX2Ryb3Aoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCB3Znhf cXVldWUgKnF1ZXVlLAorCQkgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqZHJvcHBlZCk7CisK K3N0cnVjdCBza19idWZmICp3ZnhfcGVuZGluZ19nZXQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUz MiBwYWNrZXRfaWQpOwordm9pZCB3ZnhfcGVuZGluZ19kcm9wKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpkcm9wcGVkKTsKK3Vuc2lnbmVkIGludCB3ZnhfcGVuZGlu Z19nZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCQkgIHN0cnVjdCBz a19idWZmICpza2IpOwordm9pZCB3ZnhfcGVuZGluZ19kdW1wX29sZF9mcmFtZXMoc3RydWN0IHdm eF9kZXYgKndkZXYsIHVuc2lnbmVkIGludCBsaW1pdF9tcyk7CisKKyNlbmRpZgotLSAKMi4yOS4y Cgo=