Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp300423pxm; Tue, 22 Feb 2022 10:55:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJwF2NIzDlFmM/DHnGSgHob1KUCH6RyDJ1t17/+CbLIYFdGF0OClOHb6cLeu6B3OfENwWoDJ X-Received: by 2002:a63:d63:0:b0:36c:670d:b6c9 with SMTP id 35-20020a630d63000000b0036c670db6c9mr20376815pgn.343.1645556140335; Tue, 22 Feb 2022 10:55:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1645556140; cv=pass; d=google.com; s=arc-20160816; b=bhJ8+7mR5qBY8GI3LIRw+e5eqTv4OhLWHHATeM+E2Ys5AU+waUl5LCbfwFo4zlpuyx nvbPPkMKI2liTrPLSjCeLYE0BsNn1FQeLiArGMPT7N67GPyEoRvpUhcnfDUK0HdBcbLf 88mOUKRvj8A+oWqb3d5V1sEYy69zM8vHrwNEgVpPBuke6jEMn7PCEA9aBaatIIKEU1gP izS3lwO9HQ0zz8aUc38/3qgRkZ1PtlzDTcKJcIwJdUDoXA7PzxgP3jbe2XLfAR1wrKA0 sfWhB9z2ON0qJBFO4DHkpUbzVtMmsKL0yLd1UVmoSMpQAvvuHk/xcW7UYHPdXJiaX/td FPBw== 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=S8QZucPFceqNZ01CjCbFhFxQz++Ul/5bd1pATFGvWJY=; b=ZnuKbo+puG7j/QS32+5Iy/2XJ32o2OWsjNFZ/9HjgwfRfU9kXpHxfuY/xNdIhcDkxM C8nnZW/KubJRNNH/frooHII30dpqETFuL9tNK87c1TR6qGUjqzfhv4Z3M9WLM0CxyPLC cZZcF6jkTcEtnqpTnr68riVHu2FHGT60UZ+hXWq6FDGEORAklX7HilYcwij/M0ckEd7v lb1Id2POsflVeNNZK9x7Ky9jA/vo37+Rxc69cVFLU3bxhJNaSwrREJLLmV+PcQ7wXNBc PDyhXE/hUicsv/gW2jR17gvburKn84YoHnq7TsFmyAIRSP1z8jwtFsSSJRHbJKwiJi9j AxLw== 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 t6si12595117plr.236.2022.02.22.10.55.24; Tue, 22 Feb 2022 10:55:40 -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 S234817AbiBVSAS (ORCPT + 99 others); Tue, 22 Feb 2022 13:00:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234824AbiBVSAQ (ORCPT ); Tue, 22 Feb 2022 13:00:16 -0500 Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-eopbgr90040.outbound.protection.outlook.com [40.107.9.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 800FC172255; Tue, 22 Feb 2022 09:59:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UCq9IKayFmf6s3waSGH/MvMZug50+C1HXJFhYRzNXXEIW24Dba1pKv8brhmqgSI/HpdncQnlBQk4VC4rzqb9OigMx9A+iKrcwHqkcvxHhH5Ve0TeXjyUbZm4/XsoJ6dVGzMFSmwIq2bodvZ8UAIZbifhiFTLvGNX8sHtZUfH+l+OFU1mgdmHJhHt/R8x19gXVQ/YAQb/GK1XcbfxNNIekA0mbRaJn7T0HisW1zNuIYFxdNyHjuAB9x36aiwcfGX4HQEweKeUjNSpGTbrOuvCaPBGzMAInz8csRXqFq7HQyaz/JTJyW7tU2ME7AkV9SrLrYs8tpajdkuD16cRQMVmUw== 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=S8QZucPFceqNZ01CjCbFhFxQz++Ul/5bd1pATFGvWJY=; b=OjdjljJzPYCU6URjwGT89tBayBHDFIjvOW/vK/ajRTMxqQS+ndGh7Y41G8RQW5+bdPmuPwQctMRd07TVCPFjPwDwfNVH7Z1hqmb7tVDC5z6yUo9+zyGxZ6wIEU96q/FnTOqCr0n+dXH6PF8PN/VNVjdPfnwSj5hEHe167dI/d8qAuzyGXZv+YPJB4nGhCfg8khbjMmKx0a/MOzM9z0jm3JSiruo/EQfVxzB3hjt2rypm5HW+yzEtDe8wnetMqMIJStTlJdXxUnFsVTx3k9wZ2H17VLRtTyEoYlignXwBYqNPvZMePnk3cYBO9DTi68s8mwYEsOaD4RKUUZJdKFIDQg== 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:59:46 +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:59:46 +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 10/13] module: Move procfs support into a separate file Thread-Topic: [PATCH v8 10/13] module: Move procfs support into a separate file Thread-Index: AQHYJ/ZZQi/C4+n9+0ejWNHq0j8o1ayf3AWA Date: Tue, 22 Feb 2022 17:59:46 +0000 Message-ID: References: <20220222141303.1392190-1-atomlin@redhat.com> <20220222141303.1392190-11-atomlin@redhat.com> In-Reply-To: <20220222141303.1392190-11-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: 861ef10d-d2ab-4b44-7aa8-08d9f62d1cb8 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: YurXJGHIo3g4yMpttIielz2Xl4B+FZzSl7qNeD3SpfiUjzzYVcVhKVx1ZYBR+Ynl1tqkv/FYyVNZjfp1bSCtGn7OtKk6JyHzlVqdXL8x0sv7R2pbHNmha8C53KjZXUYd3labGBlpEMmaPNPIqibOPfrEoJLWGIMcBNcjn4h9L9U7Tf4uyMYSHxQRTzfEYLrMY9a5m0cHrMz8eoQSC2TS5y1NNs7tCvT/GjolzVsm5wCpHxGSUovkTuT8+pvUzwOxW30zxPdboHBrQfPFV9VLpp6WDDEb0EAeBDPZU1vZuEjEZVq6Pra4UzAilf0JfUybPm0w6+GOaU6Ryhm9tql8AZunaK+zPTZf4Ncd2DDFiCtsdRRZF9n/WW7Snl9Rx/LUMLIY1A+He0Xn2s4nGUfbSryOtVvdxUcHGL9B5GqudfJhc2Mor+zmDCvKSiZbamd3fw5suSDJ1l2aMEnpvhDmC4Yl2CUJtcSJDMM51EkcINqmHR0B1rT6myEccjvUYQX+oxchDf7NNOIKNizQ3xSAg8rS4iI7SFYW9ySA/wyKqhKGmL3+ZG52Ck/tTcnrXKXpe1Ic8AvfmeM99aTkoaS2yLmco0UkddNCOznio0QCNu7vxkczJ0vIa+OL3ULk0aGdV4xtsncgOVPJFCMEbHopL1/PZcjOtD38ZBtqEpeT0V/voGnwapgQS/Jot8iiR64TF41ifLdgEg+pPIJ9x2aTD3dO8K5A3eyUV+yusvjfZLsM9agzs5x4YcT3At2rU7VX/WfxP7IsGGKftttAwEmiIQ== 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)(30864003)(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?akhNZWdPd01PNVFIRHNDUnVYSHNGMDZYeElnNWFjUTAxUERzQjkyRVBIUzhY?= =?utf-8?B?cExSTFdERTZkWmNBQ0t5c05yb3ZvU1ZZTWRnQXFBcGNVSkdVclYzWlp1S2N6?= =?utf-8?B?L1RoTndJeklXSzAyejlsS3RtWG1RblpOSWNBN3cwNVV3WVQxZHNjUmRyMUZY?= =?utf-8?B?dnlNNE9VNWc3OFdOVW1uY1NBc29MZ3VObTN1dnFwdXc3VVpTZ1ZwQVUvRWVC?= =?utf-8?B?cTNiQWlWUllmQkhkamxQejJ6TkYzK1ZNQVoxQVdsSFpHS1JwTzRwc0RLZzJC?= =?utf-8?B?N0lObXIxMzZNNFRxVWlPb0lSQVN4eTFlRHJKbFNoWGxMeDBlQ1hyeUhERkdz?= =?utf-8?B?Y0wvSUYxMXhzbmkvaVhDZ1dWT3ZkcXdoc1RWbnJBejFtNmljdEpQSEtBNjdu?= =?utf-8?B?eWMvWkRMZHRKUkhkbUJnd3VKY1VRVUhuSGl5aURERFpxbExtaHBuNHBXeFF1?= =?utf-8?B?U3Nac2JSSlY3WW1RR0hab3AwUXBXVlJJc3h1b0RIUWN1WjU3dTJHTUZmUXg3?= =?utf-8?B?NGlMS01rK2NDN2t4cVkrRHI3dnV1V3pSZDJvR25na3Awc3NycW1OdHdlVmJE?= =?utf-8?B?WndiMmh5UGNxaXpwQ3JzcVJDa2M0UktLYUgvMDhlVktBM2dxQldSSzcxTFlM?= =?utf-8?B?cmN6dlRzRE1jQlEwTWtqY0pjWVVXUVpqZ0FVYTVjU2d0UkEydDdXcHVVVXdJ?= =?utf-8?B?NjhzWFcwcm9mU2FsZlRxL3F3WERMMTYzemZpOFI4VlcxWnJLYlJwWTdJa0lP?= =?utf-8?B?SWdscWdWdTRJc1d2TklqbXJLMlpmczQ3L09KSGJTVC8wd1hpcHNxbHZnaFBP?= =?utf-8?B?Uzg0bzBDL1l0Yis1NlhhTzBCRjJpaWZRKzdyS2FJZExlamZISS9zcFBkNFlN?= =?utf-8?B?WmVZd0ZsV3E5V2FaU3RYbWlqcGpGUklkYkxMTUZTVEJ4MFBpMzlBWDVJWk9Y?= =?utf-8?B?RlRJUzMvMEN5WXdnNHJHUGxnMmVJSUhKSU5UcHlRaGJaTE4zajNMMzl1ZW9N?= =?utf-8?B?YnFyUk9lRlhVWlloWXZHeUs5UjdyZzdxMWM5bmFlMFdxYkFIankrd3hFOFhD?= =?utf-8?B?WUlObW5mUXdTWmdnaFJOOWkrTDNmbkpQMStIMzk4MW9ZTUVPUGVaNWNUeVZG?= =?utf-8?B?WUtHT0tuSk5RV3BVQmpCQmxPVHRTWUhLQzVwZWxmZitYV1BadzRNOHg4aGlQ?= =?utf-8?B?dEQ1MUQ5TVYxZHBkSUNzdzIwRWRSZEM3NEEvTjlDalFIZDk2cEQwdHNCV2FK?= =?utf-8?B?amFUTFlKaHNKbzFqUjY1ZGJCdXloZ3Bvak94akVFbU5zTUlXWWRIRjZlZTNX?= =?utf-8?B?K0cvL0cycFFQbmgvM2luVE15RHRqVk9XbVFlS1FHUzVBV1N1czhEMXBFOG1z?= =?utf-8?B?SkFSNXUzeEI2Z1l2dDJOVktMWnBWeno4TXNoVHFXWUJNL2FuYXRhRDNMN3Bx?= =?utf-8?B?OFpBKzNOR3dERDFCSk9RNXduVGltL1hYOTg0Uk8zeHZ5WUo5aFBScmZaU2hn?= =?utf-8?B?Z0E5NEZiRXZSSWFsUUpXY0N1Y052NHZWaTNCNmhjNzZ5cXNvb0pickNuSUh2?= =?utf-8?B?L0VFaVpjekwyQUczZS9RTWRZeXQyUlpNVXcraVZVeWZrN0dKSGZuWndHZ1Nw?= =?utf-8?B?dmQ5ZlpxamVoMmRmL2FETGRrSnUwLzBrUHJuRDY5eUx5bXVQcExlc1o4RldE?= =?utf-8?B?YXlKN3VDeTlwVlFjMnJiMG1BMGc5eUxCY1FHdmNUTVdaSXdjRi9QTy9QVXE1?= =?utf-8?B?R0xHYVR4RlZtQzRKUFUxYnMwRGxVeEVsN0hsa1hwRmpBNTJndmpMenQ4bXhY?= =?utf-8?B?dHBqS2s1SmtKbjd4R0U3Zlp5QWNUSXhjVFVielMvMXFERmtyQTNnRVdZdGh4?= =?utf-8?B?Z2Fkc1RXc25wNFlRK1dvb2RscEZJUmJENlJCQ1o2RW1iNW5ZdHFhQlVqVWE0?= =?utf-8?B?RmJ6RTF0ZUR1cVVUNzFHS2xHYVZudnV4R3V2dWlQUmVnd0xpVG5yUTlvaTh2?= =?utf-8?B?MG41TDJkMm1HMlozRnBwRk9wcFN3TmRTa1owbkFxU3pRVjlLVzIyTVE1c1Rw?= =?utf-8?B?MzRyOW1ENDdObVhONzNDb2hYV3dUYXRBVVdnZnN2a0libWlYcUNpUVhGZll3?= =?utf-8?B?NVZzdEdZTlROME8wYWprVzREV3k5ckhYTXVWdE1PZmEyYnpFQ1VwazFieUtO?= =?utf-8?B?S3ZhSEtuWWNaOFNuK0tPbXFhckU0M2l6dS9rNmg2cnd1RVdUNTA5WUQxMUY5?= =?utf-8?Q?wiCmPl6Qjx050SUgxtZ5e71euewyLbWastfgNNd03w=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: 861ef10d-d2ab-4b44-7aa8-08d9f62d1cb8 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2022 17:59:46.4668 (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: NnB522JpatvWwIrPpmMkrXJC1ZUP08QEoviiF7VWMBPwGs8d3geYpsTX04fUqKvJyzhaAjGoSasJZhQu4+xsigNouB+yE6CJpelJdsk9YCk= 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 DQoNCkxlIDIyLzAyLzIwMjIgw6AgMTU6MTMsIEFhcm9uIFRvbWxpbiBhIMOpY3JpdMKgOg0KPiBO byBmdW5jdGlvbmFsIGNoYW5nZS4NCj4gDQo+IFRoaXMgcGF0Y2ggbWlncmF0ZXMgY29kZSB0aGF0 IGFsbG93cyBvbmUgdG8gZ2VuZXJhdGUgYQ0KPiBsaXN0IG9mIGxvYWRlZC9vciBsaW5rZWQgbW9k dWxlcyB2aWEgL3Byb2Mgd2hlbiBwcm9jZnMNCj4gc3VwcG9ydCBpcyBlbmFibGVkIGludG8ga2Vy bmVsL21vZHVsZS9wcm9jZnMuYy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFhcm9uIFRvbWxpbiA8 YXRvbWxpbkByZWRoYXQuY29tPg0KDQpSZXZpZXdlZC1ieTogQ2hyaXN0b3BoZSBMZXJveSA8Y2hy aXN0b3BoZS5sZXJveUBjc2dyb3VwLmV1Pg0KDQo+IC0tLQ0KPiAgIGtlcm5lbC9tb2R1bGUvTWFr ZWZpbGUgICB8ICAgMSArDQo+ICAga2VybmVsL21vZHVsZS9pbnRlcm5hbC5oIHwgICAxICsNCj4g ICBrZXJuZWwvbW9kdWxlL21haW4uYyAgICAgfCAxMzEgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ICAga2VybmVsL21vZHVsZS9wcm9jZnMuYyAgIHwgMTQyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTQ1 IGluc2VydGlvbnMoKyksIDEzMCBkZWxldGlvbnMoLSkNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg a2VybmVsL21vZHVsZS9wcm9jZnMuYw0KPiANCj4gZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUv TWFrZWZpbGUgYi9rZXJuZWwvbW9kdWxlL01ha2VmaWxlDQo+IGluZGV4IDk5MDFiZWQzYWI1Yi4u OTQyOTZjOThhNjdmIDEwMDY0NA0KPiAtLS0gYS9rZXJuZWwvbW9kdWxlL01ha2VmaWxlDQo+ICsr KyBiL2tlcm5lbC9tb2R1bGUvTWFrZWZpbGUNCj4gQEAgLTE1LDMgKzE1LDQgQEAgb2JqLSQoQ09O RklHX01PRFVMRVNfVFJFRV9MT09LVVApICs9IHRyZWVfbG9va3VwLm8NCj4gICBvYmotJChDT05G SUdfU1RSSUNUX01PRFVMRV9SV1gpICs9IHN0cmljdF9yd3gubw0KPiAgIG9iai0kKENPTkZJR19E RUJVR19LTUVNTEVBSykgKz0gZGVidWdfa21lbWxlYWsubw0KPiAgIG9iai0kKENPTkZJR19LQUxM U1lNUykgKz0ga2FsbHN5bXMubw0KPiArb2JqLSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Nmcy5v DQo+IGRpZmYgLS1naXQgYS9rZXJuZWwvbW9kdWxlL2ludGVybmFsLmggYi9rZXJuZWwvbW9kdWxl L2ludGVybmFsLmgNCj4gaW5kZXggNDRjYTA1YjllYjhmLi42YWY0MGMyZDE0NWYgMTAwNjQ0DQo+ IC0tLSBhL2tlcm5lbC9tb2R1bGUvaW50ZXJuYWwuaA0KPiArKysgYi9rZXJuZWwvbW9kdWxlL2lu dGVybmFsLmgNCj4gQEAgLTcyLDYgKzcyLDcgQEAgc3RydWN0IG1vZHVsZSAqZmluZF9tb2R1bGVf YWxsKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBsZW4sIGJvb2wgZXZlbl91bmZvcm1lZCkNCj4g ICBpbnQgY21wX25hbWUoY29uc3Qgdm9pZCAqbmFtZSwgY29uc3Qgdm9pZCAqc3ltKTsNCj4gICBs b25nIG1vZHVsZV9nZXRfb2Zmc2V0KHN0cnVjdCBtb2R1bGUgKm1vZCwgdW5zaWduZWQgaW50ICpz aXplLCBFbGZfU2hkciAqc2VjaGRyLA0KPiAgIAkJICAgICAgIHVuc2lnbmVkIGludCBzZWN0aW9u KTsNCj4gK2NoYXIgKm1vZHVsZV9mbGFncyhzdHJ1Y3QgbW9kdWxlICptb2QsIGNoYXIgKmJ1Zik7 DQo+ICAgDQo+ICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGtlcm5lbF9zeW1ib2xfdmFs dWUoY29uc3Qgc3RydWN0IGtlcm5lbF9zeW1ib2wgKnN5bSkNCj4gICB7DQo+IGRpZmYgLS1naXQg YS9rZXJuZWwvbW9kdWxlL21haW4uYyBiL2tlcm5lbC9tb2R1bGUvbWFpbi5jDQo+IGluZGV4IDk1 MjA3OTk4N2VhNC4uNDRiNmZkMWFjYzQ0IDEwMDY0NA0KPiAtLS0gYS9rZXJuZWwvbW9kdWxlL21h aW4uYw0KPiArKysgYi9rZXJuZWwvbW9kdWxlL21haW4uYw0KPiBAQCAtMjIsNyArMjIsNiBAQA0K PiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2Mu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvZWxmLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvcHJvY19m cy5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPg0KPiAgICNpbmNsdWRlIDxsaW51 eC9zeXNjYWxscy5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9mY250bC5oPg0KPiBAQCAtODA1LDMx ICs4MDQsNiBAQCBTWVNDQUxMX0RFRklORTIoZGVsZXRlX21vZHVsZSwgY29uc3QgY2hhciBfX3Vz ZXIgKiwgbmFtZV91c2VyLA0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRp YyBpbmxpbmUgdm9pZCBwcmludF91bmxvYWRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVj dCBtb2R1bGUgKm1vZCkNCj4gLXsNCj4gLQlzdHJ1Y3QgbW9kdWxlX3VzZSAqdXNlOw0KPiAtCWlu dCBwcmludGVkX3NvbWV0aGluZyA9IDA7DQo+IC0NCj4gLQlzZXFfcHJpbnRmKG0sICIgJWkgIiwg bW9kdWxlX3JlZmNvdW50KG1vZCkpOw0KPiAtDQo+IC0JLyoNCj4gLQkgKiBBbHdheXMgaW5jbHVk ZSBhIHRyYWlsaW5nICwgc28gdXNlcnNwYWNlIGNhbiBkaWZmZXJlbnRpYXRlDQo+IC0JICogYmV0 d2VlbiB0aGlzIGFuZCB0aGUgb2xkIG11bHRpLWZpZWxkIHByb2MgZm9ybWF0Lg0KPiAtCSAqLw0K PiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodXNlLCAmbW9kLT5zb3VyY2VfbGlzdCwgc291cmNlX2xp c3QpIHsNCj4gLQkJcHJpbnRlZF9zb21ldGhpbmcgPSAxOw0KPiAtCQlzZXFfcHJpbnRmKG0sICIl cywiLCB1c2UtPnNvdXJjZS0+bmFtZSk7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKG1vZC0+aW5pdCAh PSBOVUxMICYmIG1vZC0+ZXhpdCA9PSBOVUxMKSB7DQo+IC0JCXByaW50ZWRfc29tZXRoaW5nID0g MTsNCj4gLQkJc2VxX3B1dHMobSwgIltwZXJtYW5lbnRdLCIpOw0KPiAtCX0NCj4gLQ0KPiAtCWlm ICghcHJpbnRlZF9zb21ldGhpbmcpDQo+IC0JCXNlcV9wdXRzKG0sICItIik7DQo+IC19DQo+IC0N Cj4gICB2b2lkIF9fc3ltYm9sX3B1dChjb25zdCBjaGFyICpzeW1ib2wpDQo+ICAgew0KPiAgIAlz dHJ1Y3QgZmluZF9zeW1ib2xfYXJnIGZzYSA9IHsNCj4gQEAgLTkxOSwxMiArODkzLDYgQEAgdm9p ZCBtb2R1bGVfcHV0KHN0cnVjdCBtb2R1bGUgKm1vZHVsZSkNCj4gICBFWFBPUlRfU1lNQk9MKG1v ZHVsZV9wdXQpOw0KPiAgIA0KPiAgICNlbHNlIC8qICFDT05GSUdfTU9EVUxFX1VOTE9BRCAqLw0K PiAtc3RhdGljIGlubGluZSB2b2lkIHByaW50X3VubG9hZF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IG1vZHVsZSAqbW9kKQ0KPiAtew0KPiAtCS8qIFdlIGRvbid0IGtub3cgdGhlIHVz YWdlIGNvdW50LCBvciB3aGF0IG1vZHVsZXMgYXJlIHVzaW5nLiAqLw0KPiAtCXNlcV9wdXRzKG0s ICIgLSAtIik7DQo+IC19DQo+IC0NCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgbW9kdWxlX3VubG9h ZF9mcmVlKHN0cnVjdCBtb2R1bGUgKm1vZCkNCj4gICB7DQo+ICAgfQ0KPiBAQCAtMzU5Niw3ICsz NTY0LDcgQEAgc3RhdGljIHZvaWQgY2ZpX2NsZWFudXAoc3RydWN0IG1vZHVsZSAqbW9kKQ0KPiAg IH0NCj4gICANCj4gICAvKiBLZWVwIGluIHN5bmMgd2l0aCBNT0RVTEVfRkxBR1NfQlVGX1NJWkUg ISEhICovDQo+IC1zdGF0aWMgY2hhciAqbW9kdWxlX2ZsYWdzKHN0cnVjdCBtb2R1bGUgKm1vZCwg Y2hhciAqYnVmKQ0KPiArY2hhciAqbW9kdWxlX2ZsYWdzKHN0cnVjdCBtb2R1bGUgKm1vZCwgY2hh ciAqYnVmKQ0KPiAgIHsNCj4gICAJaW50IGJ4ID0gMDsNCj4gICANCj4gQEAgLTM2MTksMTAzICsz NTg3LDYgQEAgc3RhdGljIGNoYXIgKm1vZHVsZV9mbGFncyhzdHJ1Y3QgbW9kdWxlICptb2QsIGNo YXIgKmJ1ZikNCj4gICAJcmV0dXJuIGJ1ZjsNCj4gICB9DQo+ICAgDQo+IC0jaWZkZWYgQ09ORklH X1BST0NfRlMNCj4gLS8qIENhbGxlZCBieSB0aGUgL3Byb2MgZmlsZSBzeXN0ZW0gdG8gcmV0dXJu IGEgbGlzdCBvZiBtb2R1bGVzLiAqLw0KPiAtc3RhdGljIHZvaWQgKm1fc3RhcnQoc3RydWN0IHNl cV9maWxlICptLCBsb2ZmX3QgKnBvcykNCj4gLXsNCj4gLQltdXRleF9sb2NrKCZtb2R1bGVfbXV0 ZXgpOw0KPiAtCXJldHVybiBzZXFfbGlzdF9zdGFydCgmbW9kdWxlcywgKnBvcyk7DQo+IC19DQo+ IC0NCj4gLXN0YXRpYyB2b2lkICptX25leHQoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpwLCBs b2ZmX3QgKnBvcykNCj4gLXsNCj4gLQlyZXR1cm4gc2VxX2xpc3RfbmV4dChwLCAmbW9kdWxlcywg cG9zKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgbV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqcCkNCj4gLXsNCj4gLQltdXRleF91bmxvY2soJm1vZHVsZV9tdXRleCk7DQo+IC19 DQo+IC0NCj4gLXN0YXRpYyBpbnQgbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqcCkN Cj4gLXsNCj4gLQlzdHJ1Y3QgbW9kdWxlICptb2QgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBtb2R1 bGUsIGxpc3QpOw0KPiAtCWNoYXIgYnVmW01PRFVMRV9GTEFHU19CVUZfU0laRV07DQo+IC0Jdm9p ZCAqdmFsdWU7DQo+IC0NCj4gLQkvKiBXZSBhbHdheXMgaWdub3JlIHVuZm9ybWVkIG1vZHVsZXMu ICovDQo+IC0JaWYgKG1vZC0+c3RhdGUgPT0gTU9EVUxFX1NUQVRFX1VORk9STUVEKQ0KPiAtCQly ZXR1cm4gMDsNCj4gLQ0KPiAtCXNlcV9wcmludGYobSwgIiVzICV1IiwNCj4gLQkJICAgbW9kLT5u YW1lLCBtb2QtPmluaXRfbGF5b3V0LnNpemUgKyBtb2QtPmNvcmVfbGF5b3V0LnNpemUpOw0KPiAt CXByaW50X3VubG9hZF9pbmZvKG0sIG1vZCk7DQo+IC0NCj4gLQkvKiBJbmZvcm1hdGl2ZSBmb3Ig dXNlcnMuICovDQo+IC0Jc2VxX3ByaW50ZihtLCAiICVzIiwNCj4gLQkJICAgbW9kLT5zdGF0ZSA9 PSBNT0RVTEVfU1RBVEVfR09JTkcgPyAiVW5sb2FkaW5nIiA6DQo+IC0JCSAgIG1vZC0+c3RhdGUg PT0gTU9EVUxFX1NUQVRFX0NPTUlORyA/ICJMb2FkaW5nIiA6DQo+IC0JCSAgICJMaXZlIik7DQo+ IC0JLyogVXNlZCBieSBvcHJvZmlsZSBhbmQgb3RoZXIgc2ltaWxhciB0b29scy4gKi8NCj4gLQl2 YWx1ZSA9IG0tPnByaXZhdGUgPyBOVUxMIDogbW9kLT5jb3JlX2xheW91dC5iYXNlOw0KPiAtCXNl cV9wcmludGYobSwgIiAweCVweCIsIHZhbHVlKTsNCj4gLQ0KPiAtCS8qIFRhaW50cyBpbmZvICov DQo+IC0JaWYgKG1vZC0+dGFpbnRzKQ0KPiAtCQlzZXFfcHJpbnRmKG0sICIgJXMiLCBtb2R1bGVf ZmxhZ3MobW9kLCBidWYpKTsNCj4gLQ0KPiAtCXNlcV9wdXRzKG0sICJcbiIpOw0KPiAtCXJldHVy biAwOw0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAtICogRm9ybWF0OiBtb2R1bGVuYW1lIHNpemUgcmVm Y291bnQgZGVwcyBhZGRyZXNzDQo+IC0gKg0KPiAtICogV2hlcmUgcmVmY291bnQgaXMgYSBudW1i ZXIgb3IgLSwgYW5kIGRlcHMgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdA0KPiAtICogb2YgZGVw ZW5kcyBvciAtLg0KPiAtICovDQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25z IG1vZHVsZXNfb3AgPSB7DQo+IC0JLnN0YXJ0CT0gbV9zdGFydCwNCj4gLQkubmV4dAk9IG1fbmV4 dCwNCj4gLQkuc3RvcAk9IG1fc3RvcCwNCj4gLQkuc2hvdwk9IG1fc2hvdw0KPiAtfTsNCj4gLQ0K PiAtLyoNCj4gLSAqIFRoaXMgYWxzbyBzZXRzIHRoZSAicHJpdmF0ZSIgcG9pbnRlciB0byBub24t TlVMTCBpZiB0aGUNCj4gLSAqIGtlcm5lbCBwb2ludGVycyBzaG91bGQgYmUgaGlkZGVuIChzbyB5 b3UgY2FuIGp1c3QgdGVzdA0KPiAtICogIm0tPnByaXZhdGUiIHRvIHNlZSBpZiB5b3Ugc2hvdWxk IGtlZXAgdGhlIHZhbHVlcyBwcml2YXRlKS4NCj4gLSAqDQo+IC0gKiBXZSB1c2UgdGhlIHNhbWUg bG9naWMgYXMgZm9yIC9wcm9jL2thbGxzeW1zLg0KPiAtICovDQo+IC1zdGF0aWMgaW50IG1vZHVs ZXNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gLXsNCj4g LQlpbnQgZXJyID0gc2VxX29wZW4oZmlsZSwgJm1vZHVsZXNfb3ApOw0KPiAtDQo+IC0JaWYgKCFl cnIpIHsNCj4gLQkJc3RydWN0IHNlcV9maWxlICptID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0KPiAt CQltLT5wcml2YXRlID0ga2FsbHN5bXNfc2hvd192YWx1ZShmaWxlLT5mX2NyZWQpID8gTlVMTCA6 ICh2b2lkICopOHVsOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiBlcnI7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvY19vcHMgbW9kdWxlc19wcm9jX29wcyA9IHsNCj4gLQku cHJvY19mbGFncwk9IFBST0NfRU5UUllfUEVSTUFORU5ULA0KPiAtCS5wcm9jX29wZW4JPSBtb2R1 bGVzX29wZW4sDQo+IC0JLnByb2NfcmVhZAk9IHNlcV9yZWFkLA0KPiAtCS5wcm9jX2xzZWVrCT0g c2VxX2xzZWVrLA0KPiAtCS5wcm9jX3JlbGVhc2UJPSBzZXFfcmVsZWFzZSwNCj4gLX07DQo+IC0N Cj4gLXN0YXRpYyBpbnQgX19pbml0IHByb2NfbW9kdWxlc19pbml0KHZvaWQpDQo+IC17DQo+IC0J cHJvY19jcmVhdGUoIm1vZHVsZXMiLCAwLCBOVUxMLCAmbW9kdWxlc19wcm9jX29wcyk7DQo+IC0J cmV0dXJuIDA7DQo+IC19DQo+IC1tb2R1bGVfaW5pdChwcm9jX21vZHVsZXNfaW5pdCk7DQo+IC0j ZW5kaWYNCj4gLQ0KPiAgIC8qIEdpdmVuIGFuIGFkZHJlc3MsIGxvb2sgZm9yIGl0IGluIHRoZSBt b2R1bGUgZXhjZXB0aW9uIHRhYmxlcy4gKi8NCj4gICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3Rh YmxlX2VudHJ5ICpzZWFyY2hfbW9kdWxlX2V4dGFibGVzKHVuc2lnbmVkIGxvbmcgYWRkcikNCj4g ICB7DQo+IGRpZmYgLS1naXQgYS9rZXJuZWwvbW9kdWxlL3Byb2Nmcy5jIGIva2VybmVsL21vZHVs ZS9wcm9jZnMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAu LjI3MTdlMTMwNzg4ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2tlcm5lbC9tb2R1bGUvcHJv Y2ZzLmMNCj4gQEAgLTAsMCArMSwxNDIgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyDQo+ICsvKg0KPiArICogTW9kdWxlIHByb2Mgc3VwcG9ydA0KPiAr ICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAwOCBBbGV4ZXkgRG9icml5YW4NCj4gKyAqLw0KPiAr DQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgva2FsbHN5 bXMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Nl cV9maWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0KPiArI2luY2x1ZGUgImlu dGVybmFsLmgiDQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfTU9EVUxFX1VOTE9BRA0KPiArc3RhdGlj IGlubGluZSB2b2lkIHByaW50X3VubG9hZF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IG1vZHVsZSAqbW9kKQ0KPiArew0KPiArCXN0cnVjdCBtb2R1bGVfdXNlICp1c2U7DQo+ICsJaW50 IHByaW50ZWRfc29tZXRoaW5nID0gMDsNCj4gKw0KPiArCXNlcV9wcmludGYobSwgIiAlaSAiLCBt b2R1bGVfcmVmY291bnQobW9kKSk7DQo+ICsNCj4gKwkvKg0KPiArCSAqIEFsd2F5cyBpbmNsdWRl IGEgdHJhaWxpbmcgLCBzbyB1c2Vyc3BhY2UgY2FuIGRpZmZlcmVudGlhdGUNCj4gKwkgKiBiZXR3 ZWVuIHRoaXMgYW5kIHRoZSBvbGQgbXVsdGktZmllbGQgcHJvYyBmb3JtYXQuDQo+ICsJICovDQo+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh1c2UsICZtb2QtPnNvdXJjZV9saXN0LCBzb3VyY2VfbGlz dCkgew0KPiArCQlwcmludGVkX3NvbWV0aGluZyA9IDE7DQo+ICsJCXNlcV9wcmludGYobSwgIiVz LCIsIHVzZS0+c291cmNlLT5uYW1lKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAobW9kLT5pbml0ICYm ICFtb2QtPmV4aXQpIHsNCj4gKwkJcHJpbnRlZF9zb21ldGhpbmcgPSAxOw0KPiArCQlzZXFfcHV0 cyhtLCAiW3Blcm1hbmVudF0sIik7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFwcmludGVkX3NvbWV0 aGluZykNCj4gKwkJc2VxX3B1dHMobSwgIi0iKTsNCj4gK30NCj4gKyNlbHNlIC8qICFDT05GSUdf TU9EVUxFX1VOTE9BRCAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkIHByaW50X3VubG9hZF9pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IG1vZHVsZSAqbW9kKQ0KPiArew0KPiArCS8qIFdl IGRvbid0IGtub3cgdGhlIHVzYWdlIGNvdW50LCBvciB3aGF0IG1vZHVsZXMgYXJlIHVzaW5nLiAq Lw0KPiArCXNlcV9wdXRzKG0sICIgLSAtIik7DQo+ICt9DQo+ICsjZW5kaWYgLyogQ09ORklHX01P RFVMRV9VTkxPQUQgKi8NCj4gKw0KPiArLyogQ2FsbGVkIGJ5IHRoZSAvcHJvYyBmaWxlIHN5c3Rl bSB0byByZXR1cm4gYSBsaXN0IG9mIG1vZHVsZXMuICovDQo+ICtzdGF0aWMgdm9pZCAqbV9zdGFy dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGxvZmZfdCAqcG9zKQ0KPiArew0KPiArCW11dGV4X2xvY2so Jm1vZHVsZV9tdXRleCk7DQo+ICsJcmV0dXJuIHNlcV9saXN0X3N0YXJ0KCZtb2R1bGVzLCAqcG9z KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgKm1fbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnAsIGxvZmZfdCAqcG9zKQ0KPiArew0KPiArCXJldHVybiBzZXFfbGlzdF9uZXh0KHAs ICZtb2R1bGVzLCBwb3MpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBtX3N0b3Aoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpwKQ0KPiArew0KPiArCW11dGV4X3VubG9jaygmbW9kdWxlX211 dGV4KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtX3Nob3coc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpwKQ0KPiArew0KPiArCXN0cnVjdCBtb2R1bGUgKm1vZCA9IGxpc3RfZW50cnkocCwg c3RydWN0IG1vZHVsZSwgbGlzdCk7DQo+ICsJY2hhciBidWZbTU9EVUxFX0ZMQUdTX0JVRl9TSVpF XTsNCj4gKwl2b2lkICp2YWx1ZTsNCj4gKw0KPiArCS8qIFdlIGFsd2F5cyBpZ25vcmUgdW5mb3Jt ZWQgbW9kdWxlcy4gKi8NCj4gKwlpZiAobW9kLT5zdGF0ZSA9PSBNT0RVTEVfU1RBVEVfVU5GT1JN RUQpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJc2VxX3ByaW50ZihtLCAiJXMgJXUiLA0KPiAr CQkgICBtb2QtPm5hbWUsIG1vZC0+aW5pdF9sYXlvdXQuc2l6ZSArIG1vZC0+Y29yZV9sYXlvdXQu c2l6ZSk7DQo+ICsJcHJpbnRfdW5sb2FkX2luZm8obSwgbW9kKTsNCj4gKw0KPiArCS8qIEluZm9y bWF0aXZlIGZvciB1c2Vycy4gKi8NCj4gKwlzZXFfcHJpbnRmKG0sICIgJXMiLA0KPiArCQkgICBt b2QtPnN0YXRlID09IE1PRFVMRV9TVEFURV9HT0lORyA/ICJVbmxvYWRpbmciIDoNCj4gKwkJICAg bW9kLT5zdGF0ZSA9PSBNT0RVTEVfU1RBVEVfQ09NSU5HID8gIkxvYWRpbmciIDoNCj4gKwkJICAg IkxpdmUiKTsNCj4gKwkvKiBVc2VkIGJ5IG9wcm9maWxlIGFuZCBvdGhlciBzaW1pbGFyIHRvb2xz LiAqLw0KPiArCXZhbHVlID0gbS0+cHJpdmF0ZSA/IE5VTEwgOiBtb2QtPmNvcmVfbGF5b3V0LmJh c2U7DQo+ICsJc2VxX3ByaW50ZihtLCAiIDB4JXB4IiwgdmFsdWUpOw0KPiArDQo+ICsJLyogVGFp bnRzIGluZm8gKi8NCj4gKwlpZiAobW9kLT50YWludHMpDQo+ICsJCXNlcV9wcmludGYobSwgIiAl cyIsIG1vZHVsZV9mbGFncyhtb2QsIGJ1ZikpOw0KPiArDQo+ICsJc2VxX3B1dHMobSwgIlxuIik7 DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBGb3JtYXQ6IG1vZHVsZW5h bWUgc2l6ZSByZWZjb3VudCBkZXBzIGFkZHJlc3MNCj4gKyAqDQo+ICsgKiBXaGVyZSByZWZjb3Vu dCBpcyBhIG51bWJlciBvciAtLCBhbmQgZGVwcyBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0DQo+ ICsgKiBvZiBkZXBlbmRzIG9yIC0uDQo+ICsgKi8NCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Vx X29wZXJhdGlvbnMgbW9kdWxlc19vcCA9IHsNCj4gKwkuc3RhcnQJPSBtX3N0YXJ0LA0KPiArCS5u ZXh0CT0gbV9uZXh0LA0KPiArCS5zdG9wCT0gbV9zdG9wLA0KPiArCS5zaG93CT0gbV9zaG93DQo+ ICt9Ow0KPiArDQo+ICsvKg0KPiArICogVGhpcyBhbHNvIHNldHMgdGhlICJwcml2YXRlIiBwb2lu dGVyIHRvIG5vbi1OVUxMIGlmIHRoZQ0KPiArICoga2VybmVsIHBvaW50ZXJzIHNob3VsZCBiZSBo aWRkZW4gKHNvIHlvdSBjYW4ganVzdCB0ZXN0DQo+ICsgKiAibS0+cHJpdmF0ZSIgdG8gc2VlIGlm IHlvdSBzaG91bGQga2VlcCB0aGUgdmFsdWVzIHByaXZhdGUpLg0KPiArICoNCj4gKyAqIFdlIHVz ZSB0aGUgc2FtZSBsb2dpYyBhcyBmb3IgL3Byb2Mva2FsbHN5bXMuDQo+ICsgKi8NCj4gK3N0YXRp YyBpbnQgbW9kdWxlc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl KQ0KPiArew0KPiArCWludCBlcnIgPSBzZXFfb3BlbihmaWxlLCAmbW9kdWxlc19vcCk7DQo+ICsN Cj4gKwlpZiAoIWVycikgew0KPiArCQlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRl X2RhdGE7DQo+ICsNCj4gKwkJbS0+cHJpdmF0ZSA9IGthbGxzeW1zX3Nob3dfdmFsdWUoZmlsZS0+ Zl9jcmVkKSA/IE5VTEwgOiAodm9pZCAqKTh1bDsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gZXJy Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHByb2Nfb3BzIG1vZHVsZXNfcHJv Y19vcHMgPSB7DQo+ICsJLnByb2NfZmxhZ3MJPSBQUk9DX0VOVFJZX1BFUk1BTkVOVCwNCj4gKwku cHJvY19vcGVuCT0gbW9kdWxlc19vcGVuLA0KPiArCS5wcm9jX3JlYWQJPSBzZXFfcmVhZCwNCj4g KwkucHJvY19sc2Vlawk9IHNlcV9sc2VlaywNCj4gKwkucHJvY19yZWxlYXNlCT0gc2VxX3JlbGVh c2UsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IF9faW5pdCBwcm9jX21vZHVsZXNfaW5pdCh2 b2lkKQ0KPiArew0KPiArCXByb2NfY3JlYXRlKCJtb2R1bGVzIiwgMCwgTlVMTCwgJm1vZHVsZXNf cHJvY19vcHMpOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArbW9kdWxlX2luaXQocHJvY19tb2R1 bGVzX2luaXQpOw==