Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp216259pxm; Tue, 22 Feb 2022 21:29:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJwDAhd83alCT+3H4jowbexE43d7VrIEw10m7DXoz7VFrOW/QXnryPg+3leqTyWiO6o6tFv7 X-Received: by 2002:aa7:cb18:0:b0:413:3a7a:b5d6 with SMTP id s24-20020aa7cb18000000b004133a7ab5d6mr1048157edt.254.1645594143457; Tue, 22 Feb 2022 21:29:03 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1645594143; cv=pass; d=google.com; s=arc-20160816; b=atJCWnttr2GQJ64EHucXn+5zhVrIpXO6GE34XkflYo2ytUD0gUg7qBy42xC8DGt1OL mNVP/Khyks/S5tlMk9x6ltIjZIBjraypbE3vh7fP5yhhSAEcqrvStLKV3o0LpjpHZGZ7 bh3LcDWS33hjnvQ7uwY1hbQI1hDCiZmlVl7/LXKqJNmp5ANKCqSixxXMbjQmKVN0SP1q IIhoGjNdlijGgPUmCQL/07qBbon2Ox8qOkapSM0B3oe3Q4TIuD6Ruaqob3T+pfAyRMCi 45A37K1JWL+dhbPyM2KZO8Vb28YJ0ekJVQ2BLj7T1Hjw5ulFgKRhPENB97JLz8MY0xp8 2DxQ== 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 :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from; bh=NWxgPD9fODQsgvvKZfP6b85ezexbee5Y40+D8fAAaD0=; b=ltL7QArZKCC70xue+ZMyadN3d2w5UcolwKbRLeiaAtVKLI5lOg/ZNfe7+A0FD45lrf V81qlCBJbtluz/9kVphB+pL//P0N30RpkyikVO6z1fQ0GJjB7/gWVPIWJVAqUxReTb65 /wwTFKpqc+g0NBo6yQHGh/tJC7Ak3XR9PvaxvRE3zMgyHX6xUBMU0zvLpJPWJEnjvPcn T6+2/S+WS3/oPp/Oya+Ei5y9WRxMQwPrBJ1bO8dineps5ELlua+SWntlPdbTpLCN7bFe 6limIuCFhT4NAqJjqqrrj97gS7PNfX5bOxUI7YdcRjUVcrd/VhTjo7BktB/GT6/q6H84 8Q4g== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nd3si14052455ejc.49.2022.02.22.21.28.40; Tue, 22 Feb 2022 21:29:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234673AbiBVR7d (ORCPT + 99 others); Tue, 22 Feb 2022 12:59:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234315AbiBVR71 (ORCPT ); Tue, 22 Feb 2022 12:59:27 -0500 Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-eopbgr90054.outbound.protection.outlook.com [40.107.9.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1497D17187F; Tue, 22 Feb 2022 09:58:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZGnfQ+N33SUlY9Q18jkZRmvdED/DPdZWKWx/UoTMwjMzdIGfCC/M3z1C15Nx/tti7ON7i8uwrLpNsuKMIL3ZHWgsljHitZJyAdgtykfpANKwUZfAMNDMk2CFtrF8isW6lfkFb5VIJXOJ15WHdvMzR9M65jKEPgGnWr07PN2m6XNTB3xsRJudCrGuj4L32jM7sh6QN0xMn6v25H89XuPhclwSgew4m5k/pJnKuT2UvZtxzs2W8/Ilclg7UtNaCh50mz7TOSHd0w9DrgxRvsbn55i08Q6w3pHeWz88v1oaczmXyIjtrFHW25Z+gySG1OW9qpZ/XXaPw5nVFrNrqglfNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NWxgPD9fODQsgvvKZfP6b85ezexbee5Y40+D8fAAaD0=; b=l6WCJep7jkLiCsCAKynoaAKFYpVdtuVhxlIy4HTXbYWuWRlSrZ0d+aRZPUVdASp7LbW8w/fIJrDHfS4CwZb3SpmZ6PMFUPlRAnLCTHx9TuDjsep3PwOjZxGsZSjoS6nRHqUV2tSL66AQiIQAFZdAzrW05+9L/lDRrKCbEPKSKBFmWyWJkbdwEMWFh6vMoX6HBXHinCnOZFaxsz2LcKObDw0PdbcyDFCWGxYRFqzKnE16bj9PqBRNOu1+zCzo4/HtGaCrZ5jjhaUFpMLl8zdArPvX0zTnlGsv4P58Rv+Yp7hzdTGdITIaotphzwnl6zelDmO4z4cG8X34vDGDH5jKAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by MR1P264MB3442.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:26::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.21; Tue, 22 Feb 2022 17:58:57 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::8142:2e6f:219b:646d]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::8142:2e6f:219b:646d%5]) with mapi id 15.20.5017.021; Tue, 22 Feb 2022 17:58:57 +0000 From: Christophe Leroy To: Aaron Tomlin , "mcgrof@kernel.org" CC: "cl@linux.com" , "pmladek@suse.com" , "mbenes@suse.cz" , "akpm@linux-foundation.org" , "jeyu@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-modules@vger.kernel.org" , "void@manifault.com" , "atomlin@atomlin.com" , "allen.lkml@gmail.com" , "joe@perches.com" , "msuchanek@suse.de" , "oleksandr@natalenko.name" Subject: Re: [PATCH v8 05/13] module: Move latched RB-tree support to a separate file Thread-Topic: [PATCH v8 05/13] module: Move latched RB-tree support to a separate file Thread-Index: AQHYJ/ZVdkIRMNQgwEqSdQjbphsh2qyf28sA Date: Tue, 22 Feb 2022 17:58:57 +0000 Message-ID: <0e526245-f258-7c03-66c2-7f437a54164d@csgroup.eu> References: <20220222141303.1392190-1-atomlin@redhat.com> <20220222141303.1392190-6-atomlin@redhat.com> In-Reply-To: <20220222141303.1392190-6-atomlin@redhat.com> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 798ef299-8ee5-4710-f711-08d9f62cff5f x-ms-traffictypediagnostic: MR1P264MB3442:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: or7p/XrvJZADWpbA/mTxIno7Hh+F2HhX0vMyNtxzebbeEEgewW1wTRl9H9ymcU0PZQKrJwrBIpn489Z7RcosBeVXVZzPqzqvAQ2QXaHIMY763OZEAfweG+/w6h6BUa5Y7RuXcSuizThV6Ub0WJ7hcBVldepaz9t55b1sD15C5zCopw1Rg+i5dhIvCvMIMWS96h8tR7pwNLVhjTKVUXsM1fDc9IAvXAcDeoJ/xzEEIebwJ3RKAX6HFnANXMDJea8nH0YkrrMlPkMlA7beZWhG9SJBiCF6VIYr2zKj9YXXISbumucEjjXBhoCXa4Fo2AWrVHvCGXPvHCA2Lz8ypgzQlzNjgc/INYJcr1Mz0KXEmuE9jm+yKoIVRoAfTJThxRTfBn/3dhkwNlf/5oIIhRG3KQ2ImuSkKhORqIAk8zER+bSgKiZKcjsN43saAUdTcWtHTUxnQLA8mV2Gcqum4OW3p+zh/DUkhj1inDB+MyKbVHrovdh++ztwW6AF9YXduXLjGNjA/FV0+hjF1jVl/8lEdNrJoBEjJkgjhRhg45C33F/MIuIY7udq3rbq4uNx0EPXibjNv/dFQ0XPdNywqlKsz7EjdyhQ05z+EJjCl9aXoPJz1qbTvCy1BS/Hugg96ZAaXkPEnVNxAgls+r9X9M2L4clM7n4XwaAsvhxumcmNh0IB131FRtzSGUpwttGFVIkJTxLYy9f8L8T481NtphLy5FWjXGjsrbcpVCwBICwZYSBl6lWGjcR4YSWjjSVvG6UVhAq/f/tivx2I7a3EBi2ZYA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(5660300002)(7416002)(508600001)(6486002)(91956017)(66574015)(66946007)(76116006)(86362001)(66556008)(4326008)(64756008)(31696002)(8676002)(66446008)(316002)(8936002)(71200400001)(44832011)(66476007)(186003)(26005)(38100700002)(36756003)(122000001)(38070700005)(2906002)(2616005)(31686004)(110136005)(6512007)(54906003)(6506007)(83380400001)(45980500001)(43740500002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d2FTdjNoVFlDd0d6eDlHWldCMnA1ZWU1alZhZ3hVZ2d1UXNPYS9ueXIreWgw?= =?utf-8?B?RWMzdUZOOUFYVDhaaUhrc0YvbWpKTEpNSVdvRzVrMTkydWpwYkhjV0RTRGtR?= =?utf-8?B?UmFvYVFMS1FRbUZ2MWhwRjhQU3loYXY2eDZITVd3Z2owK2s0R1V5TFJmOE9t?= =?utf-8?B?ZVoxSEpoK3pEMU0xOFdSSUVHWEZ5akJOODdDYXRHVWc3VitZYkdIZkdNUjQ2?= =?utf-8?B?NEl1TnJmN1lWeVQ3MXJINHUvZTU3aWdyWjM2RmFNbThOb256M0pFVW1mamp1?= =?utf-8?B?b25NMTNhb2QyZytGTGVMK3J1MGF4SzNwZ2ZlR2VIbWxmZnIwaFVaUFZRRTQ1?= =?utf-8?B?M1ZaTldXckcrcmNMQ0RuT2Z2V09MZjhWQ1pyVFFocWpCbHlLNWtRWkhkVGdq?= =?utf-8?B?cnJNazUxeGQ1NG1ocXVHV2JPZGR2Sno3RUdVbWw0OG9NZ3VlUnJvWlRzcHBy?= =?utf-8?B?MzkwTkZ2VHRMMEVuZXZscW5xK1RFUXE3eWxiMDRTanlHNDZ5bk5nQ0RCSzlt?= =?utf-8?B?VGJlSkMzYXZEQ1IvNHo5RlUxL0g0OUx4eXQwSWMySGlaMmRDSnhRV1hEVWEx?= =?utf-8?B?d0JrS1U5d05VZkVIZlV0MHo1K3dPWDY0THBIc0pLSjlEWEFyNzlLd0hkdnhL?= =?utf-8?B?QnlHQmxzZ2tKNmoxUEhSQkNXMG1EMlh4UkRqb29SYmxoNTBqMTlRTXM2MzZH?= =?utf-8?B?bW43SWFFdHJtUjVnZ2VlbktFR1dxNUxMazZVeXVTMTJ4NlVnM2tjT2tiVkRB?= =?utf-8?B?U3BJQkJqc3lLcXQ3QUphTzB4U24ybys5RDNPN1hZclRiNGZpbUN2bmgvUjdi?= =?utf-8?B?bVFBWkdwTkRIOStIRE5XdGd1N2RhVWd6elNzYmp1NHlSeTRsdUZPTlowdDk1?= =?utf-8?B?M1FuNFRjaUJXSDhlMkg4NVhLWTl1WVFMMk54emVOUFpvLzRsUVNUVnFvbGhl?= =?utf-8?B?cFVBbUpzQnRKK1VscUJrQ05QRU9UQm9COC9MSDNUSU9IWlZsRVp2REdUNDdx?= =?utf-8?B?Sk01OVNickZPcERMN2tkbmc4ekpLWCtYU2NRZVdkSjNjcDYrYjlHd042K2NX?= =?utf-8?B?eitHa0hJQ0RuaVBoMlVFU3Z4MTJUUVkwTEIyTS8rK2ttNmwxRFZSQ1BieWlw?= =?utf-8?B?S1VndUFEMUhrdS9XcmVCTHlWMFFtTkxFbUgxdEI2ZlRtVVBlOTNxb3VxakFm?= =?utf-8?B?OHhGZEJHaFRCQk81SllkNkpwNUtHdi80MTRVK2doSjJmYXZ0eU1aZFBuRW1h?= =?utf-8?B?dEwwdCt4a1J5bGdSenJ6Q3o3YlBCZDhUekFidHpJTnRwc216blA4R09wejRF?= =?utf-8?B?amNkZUtLcExvZVg2Y3ZGcjF1N0ZFMEFXbEcreWh3YThTTW9SM2t5bzh1ditv?= =?utf-8?B?dmFReU4zcUFHeVBOenpTSFhFWTVpMjQyVURnUnFITkFVcnl1Y2pNWENBZW0r?= =?utf-8?B?aGFGMm1BaFhCV3VSTTNpNVpzY2NXYkcrRWdxUC9sOWpBQlZVUGpsdGMxd0xD?= =?utf-8?B?RXBSV3ZFb1crKzBoMVk1LzJ3K1ZHbEltVHRGaXEzTTdTL0ZYMzVqQ3docFZ5?= =?utf-8?B?NnkrdDFvZkhVOGVBcVpMSk9TY25HeFZ1d1l3dmlQVjZhK0gwckwyVm8vUTlK?= =?utf-8?B?RjJkeVcrbkRPeUVWOWFGK1RqL2QzU2RTRWVmTUwvREl3TVN1c3JtOVZyUWxi?= =?utf-8?B?Ky9nZDBxNW5ZcTQ3MkxLQTJzcEhFNUpxbXR2NVEvdDBnUnpCN1duWUZXQk1H?= =?utf-8?B?cXVDSndNalFONEE0aWhWUDhRWlZMSlB5SmNkTnJSRjZmK3RsNmE5QURTU1dl?= =?utf-8?B?YytEbEJRR1lEeVFSeGM2dythdjdiN0NmaXY2M2dUejl3SzhadzVHa3dOUXAx?= =?utf-8?B?aTJkYnNreXdzUGV5OWpEQ0h3TzdWWndpZUlhQ0UrQXRiSWlPZ0phcHA1bFZS?= =?utf-8?B?ZkFGOVJaVFl3QTl4dTNOdWRyakJIVXQ0b096S21QSXJjMjFzVllDTFNvcmlh?= =?utf-8?B?MTZmNE5KbTg0bzQwKzlHZ1dPamp0K29aNnBCR3V5cS9zdUQzcXljWGtKdzJm?= =?utf-8?B?TnhSTEVKWXRzWGJqYzQ1NU4zSk0zNytrbjRlcXc3OGdYWVFIUjFpWkJ4QTlm?= =?utf-8?B?N0dQcTZrVmNrbmxML05TVytGOVNGV2pIb3ArdVF6YlFBaXBSNXp6SFpEbTBM?= =?utf-8?B?T3RRNTNnQVN2UjJuYnYrdHp1M09mbkdIN2I5ZkV6R21jSlVKUEJWUmlvVGF6?= =?utf-8?Q?SALooZsLV35Iq2YQhmFOqhVuMihEBG0h4YTbHtgNX0=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 798ef299-8ee5-4710-f711-08d9f62cff5f X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2022 17:58:57.2484 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jt+4lmc/J6fYWeypK3Nc/Ar63pirot52u/Nf1tCxw6FnWMi7AsUiSrFJdebqq7hnmJd/FkGa8AI1vYGnjb+99Sf92XBkzq/NvzQhAObkbbw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR1P264MB3442 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCkxlIDIyLzAyLzIwMjIgw6AgMTU6MTIsIEFhcm9uIFRvbWxpbiBhIMOpY3JpdMKgOg0KPiBO byBmdW5jdGlvbmFsIGNoYW5nZS4NCj4gDQo+IFRoaXMgcGF0Y2ggbWlncmF0ZXMgbW9kdWxlIGxh dGNoZWQgUkItdHJlZSBzdXBwb3J0DQo+IChlLmcuIHNlZSBfX21vZHVsZV9hZGRyZXNzKCkpIGZy b20gY29yZSBtb2R1bGUgY29kZQ0KPiBpbnRvIGtlcm5lbC9tb2R1bGUvdHJlZV9sb29rdXAuYy4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFhcm9uIFRvbWxpbiA8YXRvbWxpbkByZWRoYXQuY29tPg0K DQpSZXZpZXdlZC1ieTogQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3Vw LmV1Pg0KDQo+IC0tLQ0KPiAgIGtlcm5lbC9tb2R1bGUvTWFrZWZpbGUgICAgICB8ICAgMSArDQo+ ICAga2VybmVsL21vZHVsZS9pbnRlcm5hbC5oICAgIHwgIDMzICsrKysrKysrKw0KPiAgIGtlcm5l bC9tb2R1bGUvbWFpbi5jICAgICAgICB8IDEzMCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gICBrZXJuZWwvbW9kdWxlL3RyZWVfbG9va3VwLmMgfCAxMDkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9u cygrKSwgMTI2IGRlbGV0aW9ucygtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvbW9k dWxlL3RyZWVfbG9va3VwLmMNCj4gDQo+IGRpZmYgLS1naXQgYS9rZXJuZWwvbW9kdWxlL01ha2Vm aWxlIGIva2VybmVsL21vZHVsZS9NYWtlZmlsZQ0KPiBpbmRleCBlZDNhYWNiMDRmMTcuLjg4Nzc0 ZTM4NjI3NiAxMDA2NDQNCj4gLS0tIGEva2VybmVsL21vZHVsZS9NYWtlZmlsZQ0KPiArKysgYi9r ZXJuZWwvbW9kdWxlL01ha2VmaWxlDQo+IEBAIC0xMSwzICsxMSw0IEBAIG9iai15ICs9IG1haW4u bw0KPiAgIG9iai0kKENPTkZJR19NT0RVTEVfREVDT01QUkVTUykgKz0gZGVjb21wcmVzcy5vDQo+ ICAgb2JqLSQoQ09ORklHX01PRFVMRV9TSUcpICs9IHNpZ25pbmcubw0KPiAgIG9iai0kKENPTkZJ R19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vDQo+ICtvYmotJChDT05GSUdfTU9EVUxFU19UUkVF X0xPT0tVUCkgKz0gdHJlZV9sb29rdXAubw0KPiBkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVsZS9p bnRlcm5hbC5oIGIva2VybmVsL21vZHVsZS9pbnRlcm5hbC5oDQo+IGluZGV4IGFkN2E0NDQyNTNl ZC4uZjE2ODJlMzY3N2JlIDEwMDY0NA0KPiAtLS0gYS9rZXJuZWwvbW9kdWxlL2ludGVybmFsLmgN Cj4gKysrIGIva2VybmVsL21vZHVsZS9pbnRlcm5hbC5oDQo+IEBAIC05LDYgKzksNyBAQA0KPiAg ICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yY3Vs aXN0Lmg+DQo+ICAgDQo+ICAgI2lmbmRlZiBBUkNIX1NIRl9TTUFMTA0KPiAgICNkZWZpbmUgQVJD SF9TSEZfU01BTEwgMA0KPiBAQCAtOTMsMyArOTQsMzUgQEAgc3RhdGljIGlubGluZSB2b2lkIG1v ZHVsZV9kZWNvbXByZXNzX2NsZWFudXAoc3RydWN0IGxvYWRfaW5mbyAqaW5mbykNCj4gICB7DQo+ ICAgfQ0KPiAgICNlbmRpZg0KPiArDQo+ICsjaWZkZWYgQ09ORklHX01PRFVMRVNfVFJFRV9MT09L VVANCj4gK3N0cnVjdCBtb2RfdHJlZV9yb290IHsNCj4gKwlzdHJ1Y3QgbGF0Y2hfdHJlZV9yb290 IHJvb3Q7DQo+ICsJdW5zaWduZWQgbG9uZyBhZGRyX21pbjsNCj4gKwl1bnNpZ25lZCBsb25nIGFk ZHJfbWF4Ow0KPiArfTsNCj4gKw0KPiArZXh0ZXJuIHN0cnVjdCBtb2RfdHJlZV9yb290IG1vZF90 cmVlOw0KPiArDQo+ICt2b2lkIG1vZF90cmVlX2luc2VydChzdHJ1Y3QgbW9kdWxlICptb2QpOw0K PiArdm9pZCBtb2RfdHJlZV9yZW1vdmVfaW5pdChzdHJ1Y3QgbW9kdWxlICptb2QpOw0KPiArdm9p ZCBtb2RfdHJlZV9yZW1vdmUoc3RydWN0IG1vZHVsZSAqbW9kKTsNCj4gK3N0cnVjdCBtb2R1bGUg Km1vZF9maW5kKHVuc2lnbmVkIGxvbmcgYWRkcik7DQo+ICsjZWxzZSAvKiAhQ09ORklHX01PRFVM RVNfVFJFRV9MT09LVVAgKi8NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIG1vZF90cmVlX2lu c2VydChzdHJ1Y3QgbW9kdWxlICptb2QpIHsgfQ0KPiArc3RhdGljIGlubGluZSB2b2lkIG1vZF90 cmVlX3JlbW92ZV9pbml0KHN0cnVjdCBtb2R1bGUgKm1vZCkgeyB9DQo+ICtzdGF0aWMgaW5saW5l IHZvaWQgbW9kX3RyZWVfcmVtb3ZlKHN0cnVjdCBtb2R1bGUgKm1vZCkgeyB9DQo+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBtb2R1bGUgKm1vZF9maW5kKHVuc2lnbmVkIGxvbmcgYWRkcikNCj4gK3sN Cj4gKwlzdHJ1Y3QgbW9kdWxlICptb2Q7DQo+ICsNCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Jj dShtb2QsICZtb2R1bGVzLCBsaXN0LA0KPiArCQkJCWxvY2tkZXBfaXNfaGVsZCgmbW9kdWxlX211 dGV4KSkgew0KPiArCQlpZiAod2l0aGluX21vZHVsZShhZGRyLCBtb2QpKQ0KPiArCQkJcmV0dXJu IG1vZDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gTlVMTDsNCj4gK30NCj4gKyNlbmRpZiAvKiBD T05GSUdfTU9EVUxFU19UUkVFX0xPT0tVUCAqLw0KPiBkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVs ZS9tYWluLmMgYi9rZXJuZWwvbW9kdWxlL21haW4uYw0KPiBpbmRleCAzNTk2ZWJmM2E2YzMuLjc2 YjUzODgwYWQ5MSAxMDA2NDQNCj4gLS0tIGEva2VybmVsL21vZHVsZS9tYWluLmMNCj4gKysrIGIv a2VybmVsL21vZHVsZS9tYWluLmMNCj4gQEAgLTkwLDEzOCArOTAsMTYgQEAgc3RhdGljIERFQ0xB UkVfV09SSyhpbml0X2ZyZWVfd3EsIGRvX2ZyZWVfaW5pdCk7DQo+ICAgc3RhdGljIExMSVNUX0hF QUQoaW5pdF9mcmVlX2xpc3QpOw0KPiAgIA0KPiAgICNpZmRlZiBDT05GSUdfTU9EVUxFU19UUkVF X0xPT0tVUA0KPiAtDQo+IC0vKg0KPiAtICogVXNlIGEgbGF0Y2hlZCBSQi10cmVlIGZvciBfX21v ZHVsZV9hZGRyZXNzKCk7IHRoaXMgYWxsb3dzIHVzIHRvIHVzZQ0KPiAtICogUkNVLXNjaGVkIGxv b2t1cHMgb2YgdGhlIGFkZHJlc3MgZnJvbSBhbnkgY29udGV4dC4NCj4gLSAqDQo+IC0gKiBUaGlz IGlzIGNvbmRpdGlvbmFsIG9uIFBFUkZfRVZFTlRTIHx8IFRSQUNJTkcgYmVjYXVzZSB0aG9zZSBj YW4gcmVhbGx5IGhpdA0KPiAtICogX19tb2R1bGVfYWRkcmVzcygpIGhhcmQgYnkgZG9pbmcgYSBs b3Qgb2Ygc3RhY2sgdW53aW5kaW5nOyBwb3RlbnRpYWxseSBmcm9tDQo+IC0gKiBOTUkgY29udGV4 dC4NCj4gLSAqLw0KPiAtDQo+IC1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxvbmcg X19tb2RfdHJlZV92YWwoc3RydWN0IGxhdGNoX3RyZWVfbm9kZSAqbikNCj4gLXsNCj4gLQlzdHJ1 Y3QgbW9kdWxlX2xheW91dCAqbGF5b3V0ID0gY29udGFpbmVyX29mKG4sIHN0cnVjdCBtb2R1bGVf bGF5b3V0LCBtdG4ubm9kZSk7DQo+IC0NCj4gLQlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbGF5b3V0 LT5iYXNlOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGxv bmcgX19tb2RfdHJlZV9zaXplKHN0cnVjdCBsYXRjaF90cmVlX25vZGUgKm4pDQo+IC17DQo+IC0J c3RydWN0IG1vZHVsZV9sYXlvdXQgKmxheW91dCA9IGNvbnRhaW5lcl9vZihuLCBzdHJ1Y3QgbW9k dWxlX2xheW91dCwgbXRuLm5vZGUpOw0KPiAtDQo+IC0JcmV0dXJuICh1bnNpZ25lZCBsb25nKWxh eW91dC0+c2l6ZTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sDQo+ IC1tb2RfdHJlZV9sZXNzKHN0cnVjdCBsYXRjaF90cmVlX25vZGUgKmEsIHN0cnVjdCBsYXRjaF90 cmVlX25vZGUgKmIpDQo+IC17DQo+IC0JcmV0dXJuIF9fbW9kX3RyZWVfdmFsKGEpIDwgX19tb2Rf dHJlZV92YWwoYik7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50DQo+ IC1tb2RfdHJlZV9jb21wKHZvaWQgKmtleSwgc3RydWN0IGxhdGNoX3RyZWVfbm9kZSAqbikNCj4g LXsNCj4gLQl1bnNpZ25lZCBsb25nIHZhbCA9ICh1bnNpZ25lZCBsb25nKWtleTsNCj4gLQl1bnNp Z25lZCBsb25nIHN0YXJ0LCBlbmQ7DQo+IC0NCj4gLQlzdGFydCA9IF9fbW9kX3RyZWVfdmFsKG4p Ow0KPiAtCWlmICh2YWwgPCBzdGFydCkNCj4gLQkJcmV0dXJuIC0xOw0KPiAtDQo+IC0JZW5kID0g c3RhcnQgKyBfX21vZF90cmVlX3NpemUobik7DQo+IC0JaWYgKHZhbCA+PSBlbmQpDQo+IC0JCXJl dHVybiAxOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBjb25zdCBz dHJ1Y3QgbGF0Y2hfdHJlZV9vcHMgbW9kX3RyZWVfb3BzID0gew0KPiAtCS5sZXNzID0gbW9kX3Ry ZWVfbGVzcywNCj4gLQkuY29tcCA9IG1vZF90cmVlX2NvbXAsDQo+IC19Ow0KPiAtDQo+IC1zdGF0 aWMgc3RydWN0IG1vZF90cmVlX3Jvb3Qgew0KPiAtCXN0cnVjdCBsYXRjaF90cmVlX3Jvb3Qgcm9v dDsNCj4gLQl1bnNpZ25lZCBsb25nIGFkZHJfbWluOw0KPiAtCXVuc2lnbmVkIGxvbmcgYWRkcl9t YXg7DQo+IC19IG1vZF90cmVlIF9fY2FjaGVsaW5lX2FsaWduZWQgPSB7DQo+ICtzdHJ1Y3QgbW9k X3RyZWVfcm9vdCBtb2RfdHJlZSBfX2NhY2hlbGluZV9hbGlnbmVkID0gew0KPiAgIAkuYWRkcl9t aW4gPSAtMVVMLA0KPiAgIH07DQo+ICAgDQo+ICAgI2RlZmluZSBtb2R1bGVfYWRkcl9taW4gbW9k X3RyZWUuYWRkcl9taW4NCj4gICAjZGVmaW5lIG1vZHVsZV9hZGRyX21heCBtb2RfdHJlZS5hZGRy X21heA0KPiAgIA0KPiAtc3RhdGljIG5vaW5saW5lIHZvaWQgX19tb2RfdHJlZV9pbnNlcnQoc3Ry dWN0IG1vZF90cmVlX25vZGUgKm5vZGUpDQo+IC17DQo+IC0JbGF0Y2hfdHJlZV9pbnNlcnQoJm5v ZGUtPm5vZGUsICZtb2RfdHJlZS5yb290LCAmbW9kX3RyZWVfb3BzKTsNCj4gLX0NCj4gLQ0KPiAt c3RhdGljIHZvaWQgX19tb2RfdHJlZV9yZW1vdmUoc3RydWN0IG1vZF90cmVlX25vZGUgKm5vZGUp DQo+IC17DQo+IC0JbGF0Y2hfdHJlZV9lcmFzZSgmbm9kZS0+bm9kZSwgJm1vZF90cmVlLnJvb3Qs ICZtb2RfdHJlZV9vcHMpOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogVGhlc2UgbW9kaWZpY2F0 aW9uczogaW5zZXJ0LCByZW1vdmVfaW5pdCBhbmQgcmVtb3ZlOyBhcmUgc2VyaWFsaXplZCBieSB0 aGUNCj4gLSAqIG1vZHVsZV9tdXRleC4NCj4gLSAqLw0KPiAtc3RhdGljIHZvaWQgbW9kX3RyZWVf aW5zZXJ0KHN0cnVjdCBtb2R1bGUgKm1vZCkNCj4gLXsNCj4gLQltb2QtPmNvcmVfbGF5b3V0Lm10 bi5tb2QgPSBtb2Q7DQo+IC0JbW9kLT5pbml0X2xheW91dC5tdG4ubW9kID0gbW9kOw0KPiAtDQo+ IC0JX19tb2RfdHJlZV9pbnNlcnQoJm1vZC0+Y29yZV9sYXlvdXQubXRuKTsNCj4gLQlpZiAobW9k LT5pbml0X2xheW91dC5zaXplKQ0KPiAtCQlfX21vZF90cmVlX2luc2VydCgmbW9kLT5pbml0X2xh eW91dC5tdG4pOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBtb2RfdHJlZV9yZW1vdmVfaW5p dChzdHJ1Y3QgbW9kdWxlICptb2QpDQo+IC17DQo+IC0JaWYgKG1vZC0+aW5pdF9sYXlvdXQuc2l6 ZSkNCj4gLQkJX19tb2RfdHJlZV9yZW1vdmUoJm1vZC0+aW5pdF9sYXlvdXQubXRuKTsNCj4gLX0N Cj4gLQ0KPiAtc3RhdGljIHZvaWQgbW9kX3RyZWVfcmVtb3ZlKHN0cnVjdCBtb2R1bGUgKm1vZCkN Cj4gLXsNCj4gLQlfX21vZF90cmVlX3JlbW92ZSgmbW9kLT5jb3JlX2xheW91dC5tdG4pOw0KPiAt CW1vZF90cmVlX3JlbW92ZV9pbml0KG1vZCk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3Qg bW9kdWxlICptb2RfZmluZCh1bnNpZ25lZCBsb25nIGFkZHIpDQo+IC17DQo+IC0Jc3RydWN0IGxh dGNoX3RyZWVfbm9kZSAqbHRuOw0KPiAtDQo+IC0JbHRuID0gbGF0Y2hfdHJlZV9maW5kKCh2b2lk ICopYWRkciwgJm1vZF90cmVlLnJvb3QsICZtb2RfdHJlZV9vcHMpOw0KPiAtCWlmICghbHRuKQ0K PiAtCQlyZXR1cm4gTlVMTDsNCj4gLQ0KPiAtCXJldHVybiBjb250YWluZXJfb2YobHRuLCBzdHJ1 Y3QgbW9kX3RyZWVfbm9kZSwgbm9kZSktPm1vZDsNCj4gLX0NCj4gLQ0KPiAtI2Vsc2UgLyogTU9E VUxFU19UUkVFX0xPT0tVUCAqLw0KPiAtDQo+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBtb2R1bGVf YWRkcl9taW4gPSAtMVVMLCBtb2R1bGVfYWRkcl9tYXggPSAwOw0KPiAtDQo+IC1zdGF0aWMgdm9p ZCBtb2RfdHJlZV9pbnNlcnQoc3RydWN0IG1vZHVsZSAqbW9kKSB7IH0NCj4gLXN0YXRpYyB2b2lk IG1vZF90cmVlX3JlbW92ZV9pbml0KHN0cnVjdCBtb2R1bGUgKm1vZCkgeyB9DQo+IC1zdGF0aWMg dm9pZCBtb2RfdHJlZV9yZW1vdmUoc3RydWN0IG1vZHVsZSAqbW9kKSB7IH0NCj4gLQ0KPiAtc3Rh dGljIHN0cnVjdCBtb2R1bGUgKm1vZF9maW5kKHVuc2lnbmVkIGxvbmcgYWRkcikNCj4gLXsNCj4g LQlzdHJ1Y3QgbW9kdWxlICptb2Q7DQo+IC0NCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSht b2QsICZtb2R1bGVzLCBsaXN0LA0KPiAtCQkJCWxvY2tkZXBfaXNfaGVsZCgmbW9kdWxlX211dGV4 KSkgew0KPiAtCQlpZiAod2l0aGluX21vZHVsZShhZGRyLCBtb2QpKQ0KPiAtCQkJcmV0dXJuIG1v ZDsNCj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gTlVMTDsNCj4gLX0NCj4gLQ0KPiAtI2VuZGlmIC8q IE1PRFVMRVNfVFJFRV9MT09LVVAgKi8NCj4gKyNlbHNlIC8qICFDT05GSUdfTU9EVUxFU19UUkVF X0xPT0tVUCAqLw0KPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgbW9kdWxlX2FkZHJfbWluID0gLTFV TCwgbW9kdWxlX2FkZHJfbWF4Ow0KPiArI2VuZGlmIC8qIENPTkZJR19NT0RVTEVTX1RSRUVfTE9P S1VQICovDQo+ICAgDQo+ICAgLyoNCj4gICAgKiBCb3VuZHMgb2YgbW9kdWxlIHRleHQsIGZvciBz cGVlZGluZyB1cCBfX21vZHVsZV9hZGRyZXNzLg0KPiBkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVs ZS90cmVlX2xvb2t1cC5jIGIva2VybmVsL21vZHVsZS90cmVlX2xvb2t1cC5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGJjNGVjM2IyMmNlDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIva2VybmVsL21vZHVsZS90cmVlX2xvb2t1cC5jDQo+IEBAIC0wLDAg KzEsMTA5IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRl cg0KPiArLyoNCj4gKyAqIE1vZHVsZXMgdHJlZSBsb29rdXANCj4gKyAqDQo+ICsgKiBDb3B5cmln aHQgKEMpIDIwMTUgUGV0ZXIgWmlqbHN0cmENCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBSdXN0 eSBSdXNzZWxsDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3JidHJlZV9sYXRjaC5oPg0KPiArI2luY2x1ZGUgImludGVybmFsLmgi DQo+ICsNCj4gKy8qDQo+ICsgKiBVc2UgYSBsYXRjaGVkIFJCLXRyZWUgZm9yIF9fbW9kdWxlX2Fk ZHJlc3MoKTsgdGhpcyBhbGxvd3MgdXMgdG8gdXNlDQo+ICsgKiBSQ1Utc2NoZWQgbG9va3VwcyBv ZiB0aGUgYWRkcmVzcyBmcm9tIGFueSBjb250ZXh0Lg0KPiArICoNCj4gKyAqIFRoaXMgaXMgY29u ZGl0aW9uYWwgb24gUEVSRl9FVkVOVFMgfHwgVFJBQ0lORyBiZWNhdXNlIHRob3NlIGNhbiByZWFs bHkgaGl0DQo+ICsgKiBfX21vZHVsZV9hZGRyZXNzKCkgaGFyZCBieSBkb2luZyBhIGxvdCBvZiBz dGFjayB1bndpbmRpbmc7IHBvdGVudGlhbGx5IGZyb20NCj4gKyAqIE5NSSBjb250ZXh0Lg0KPiAr ICovDQo+ICsNCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX21vZF90 cmVlX3ZhbChzdHJ1Y3QgbGF0Y2hfdHJlZV9ub2RlICpuKQ0KPiArew0KPiArCXN0cnVjdCBtb2R1 bGVfbGF5b3V0ICpsYXlvdXQgPSBjb250YWluZXJfb2Yobiwgc3RydWN0IG1vZHVsZV9sYXlvdXQs IG10bi5ub2RlKTsNCj4gKw0KPiArCXJldHVybiAodW5zaWduZWQgbG9uZylsYXlvdXQtPmJhc2U7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX21v ZF90cmVlX3NpemUoc3RydWN0IGxhdGNoX3RyZWVfbm9kZSAqbikNCj4gK3sNCj4gKwlzdHJ1Y3Qg bW9kdWxlX2xheW91dCAqbGF5b3V0ID0gY29udGFpbmVyX29mKG4sIHN0cnVjdCBtb2R1bGVfbGF5 b3V0LCBtdG4ubm9kZSk7DQo+ICsNCj4gKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbGF5b3V0LT5z aXplOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wNCj4gK21vZF90 cmVlX2xlc3Moc3RydWN0IGxhdGNoX3RyZWVfbm9kZSAqYSwgc3RydWN0IGxhdGNoX3RyZWVfbm9k ZSAqYikNCj4gK3sNCj4gKwlyZXR1cm4gX19tb2RfdHJlZV92YWwoYSkgPCBfX21vZF90cmVlX3Zh bChiKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQNCj4gK21vZF90 cmVlX2NvbXAodm9pZCAqa2V5LCBzdHJ1Y3QgbGF0Y2hfdHJlZV9ub2RlICpuKQ0KPiArew0KPiAr CXVuc2lnbmVkIGxvbmcgdmFsID0gKHVuc2lnbmVkIGxvbmcpa2V5Ow0KPiArCXVuc2lnbmVkIGxv bmcgc3RhcnQsIGVuZDsNCj4gKw0KPiArCXN0YXJ0ID0gX19tb2RfdHJlZV92YWwobik7DQo+ICsJ aWYgKHZhbCA8IHN0YXJ0KQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwllbmQgPSBzdGFydCAr IF9fbW9kX3RyZWVfc2l6ZShuKTsNCj4gKwlpZiAodmFsID49IGVuZCkNCj4gKwkJcmV0dXJuIDE7 DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBs YXRjaF90cmVlX29wcyBtb2RfdHJlZV9vcHMgPSB7DQo+ICsJLmxlc3MgPSBtb2RfdHJlZV9sZXNz LA0KPiArCS5jb21wID0gbW9kX3RyZWVfY29tcCwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBub2lu bGluZSB2b2lkIF9fbW9kX3RyZWVfaW5zZXJ0KHN0cnVjdCBtb2RfdHJlZV9ub2RlICpub2RlKQ0K PiArew0KPiArCWxhdGNoX3RyZWVfaW5zZXJ0KCZub2RlLT5ub2RlLCAmbW9kX3RyZWUucm9vdCwg Jm1vZF90cmVlX29wcyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9fbW9kX3RyZWVfcmVt b3ZlKHN0cnVjdCBtb2RfdHJlZV9ub2RlICpub2RlKQ0KPiArew0KPiArCWxhdGNoX3RyZWVfZXJh c2UoJm5vZGUtPm5vZGUsICZtb2RfdHJlZS5yb290LCAmbW9kX3RyZWVfb3BzKTsNCj4gK30NCj4g Kw0KPiArLyoNCj4gKyAqIFRoZXNlIG1vZGlmaWNhdGlvbnM6IGluc2VydCwgcmVtb3ZlX2luaXQg YW5kIHJlbW92ZTsgYXJlIHNlcmlhbGl6ZWQgYnkgdGhlDQo+ICsgKiBtb2R1bGVfbXV0ZXguDQo+ ICsgKi8NCj4gK3ZvaWQgbW9kX3RyZWVfaW5zZXJ0KHN0cnVjdCBtb2R1bGUgKm1vZCkNCj4gK3sN Cj4gKwltb2QtPmNvcmVfbGF5b3V0Lm10bi5tb2QgPSBtb2Q7DQo+ICsJbW9kLT5pbml0X2xheW91 dC5tdG4ubW9kID0gbW9kOw0KPiArDQo+ICsJX19tb2RfdHJlZV9pbnNlcnQoJm1vZC0+Y29yZV9s YXlvdXQubXRuKTsNCj4gKwlpZiAobW9kLT5pbml0X2xheW91dC5zaXplKQ0KPiArCQlfX21vZF90 cmVlX2luc2VydCgmbW9kLT5pbml0X2xheW91dC5tdG4pOw0KPiArfQ0KPiArDQo+ICt2b2lkIG1v ZF90cmVlX3JlbW92ZV9pbml0KHN0cnVjdCBtb2R1bGUgKm1vZCkNCj4gK3sNCj4gKwlpZiAobW9k LT5pbml0X2xheW91dC5zaXplKQ0KPiArCQlfX21vZF90cmVlX3JlbW92ZSgmbW9kLT5pbml0X2xh eW91dC5tdG4pOw0KPiArfQ0KPiArDQo+ICt2b2lkIG1vZF90cmVlX3JlbW92ZShzdHJ1Y3QgbW9k dWxlICptb2QpDQo+ICt7DQo+ICsJX19tb2RfdHJlZV9yZW1vdmUoJm1vZC0+Y29yZV9sYXlvdXQu bXRuKTsNCj4gKwltb2RfdHJlZV9yZW1vdmVfaW5pdChtb2QpOw0KPiArfQ0KPiArDQo+ICtzdHJ1 Y3QgbW9kdWxlICptb2RfZmluZCh1bnNpZ25lZCBsb25nIGFkZHIpDQo+ICt7DQo+ICsJc3RydWN0 IGxhdGNoX3RyZWVfbm9kZSAqbHRuOw0KPiArDQo+ICsJbHRuID0gbGF0Y2hfdHJlZV9maW5kKCh2 b2lkICopYWRkciwgJm1vZF90cmVlLnJvb3QsICZtb2RfdHJlZV9vcHMpOw0KPiArCWlmICghbHRu KQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCXJldHVybiBjb250YWluZXJfb2YobHRuLCBz dHJ1Y3QgbW9kX3RyZWVfbm9kZSwgbm9kZSktPm1vZDsNCj4gK30=