Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp992505pxf; Thu, 8 Apr 2021 19:05:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPfwjLa1Rjy6zpRqtePusl3MOhwCT7pdaeyhzJwMKL0UbG9+48jE4yAqGM2B8JDkYaQFSH X-Received: by 2002:a63:4944:: with SMTP id y4mr10965430pgk.9.1617933934895; Thu, 08 Apr 2021 19:05:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1617933934; cv=pass; d=google.com; s=arc-20160816; b=cNQOedUohARVHzsRRJaFN41SMh40AzvJIG5+/LgDmlCe7wJeU+//1MLaLy4wYP/t/l JNgJE0kmMNPW+SP0GKe51o/QF0tAWC69/YPcKrNjWdkEYES9eHwemzcDl0RGWfc8YKCf PEEiPKLZBjF2QJWsRGrEprKlnbuG7g1TT+lcNTKHH1y4hJoaM6YZfnCKS3J5gPzqLaSw Th8wuvPXxAvMV1HXveKMe/UR2a4ufZmTrYHu7aGkjVujuQSd9hCKPYJTTZoiyQUO57NQ aYGhaNXAf6MelqXOL8idxrN2J3sO86sL8FC04Eryx7EPMAU+nCK3MVqdJpkTRxM65l+a zFPg== 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-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :ironport-sdr; bh=/NP3BMyf7aHrRCg78zy6srjL6Bwqv/WtiAvxl10B4Yo=; b=o5uthwt94EKvvASbWqzmGyvKDvvOf9o4JLyXfSKcfTFLlzU+Fmd9pDEhMtGPJwtuNl QxkTIYJPv/lMDGCx6LxMdMzWMgEIrAaw6jLstS47X8UEkMp1OmN9GcY4Y/Nb9x9pxnFL cTcl6Me0YK5oY41rvD5OdToYjivY2zUj+PQozGK35XhksjnWrD+aJE1DaE06bpb7Mb+P ItbD0Y9WEDThm2A4PIUHWRn8gdOTb8O+gsmq7HHLnFRHdVZ1FfHdWHtvafuAV3F5Rs2i SXUzdObmFKrEBLqU1eFVh7R8+4IsZBrcjReT8Ddm6VyGuzEcnxAMvllS+wOt6XT5uCRK 0qIg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@fujitsu.onmicrosoft.com header.s=selector2-fujitsu-onmicrosoft-com header.b=fRhYnGR0; arc=pass (i=1 spf=pass spfdomain=fujitsu.com dkim=pass dkdomain=fujitsu.com dmarc=pass fromdomain=fujitsu.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 135si1197686pgg.580.2021.04.08.19.05.21; Thu, 08 Apr 2021 19:05:34 -0700 (PDT) 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=@fujitsu.onmicrosoft.com header.s=selector2-fujitsu-onmicrosoft-com header.b=fRhYnGR0; arc=pass (i=1 spf=pass spfdomain=fujitsu.com dkim=pass dkdomain=fujitsu.com dmarc=pass fromdomain=fujitsu.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 S232732AbhDICDk (ORCPT + 99 others); Thu, 8 Apr 2021 22:03:40 -0400 Received: from esa6.fujitsucc.c3s2.iphmx.com ([68.232.159.83]:2537 "EHLO esa6.fujitsucc.c3s2.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232426AbhDICDk (ORCPT ); Thu, 8 Apr 2021 22:03:40 -0400 IronPort-SDR: oZMco7psHXF6s5oZLMDA0TQnTNhQMbDSsIvPSF5cZCwX5DwFj9tWtbLtIvtCEg5ZPp9Z23+Qf7 jEHH2PPSUldUAWX741y7Qp6F06NyjP9VdHIGxPo9pwcUmbtFOI4sR8b5m7TUmKcixkoUC22FBj cVKruL5qNUYJE3poPbkD+vF2+FsM7NVVmdceLyexZkeYebOApaoKuXIUUEpRBP71evVP6MPXyh 6Bz8TRG39cTM9jVUZpEoyk2fFBdSzKbcK8fGmuz1J0vPfQgtQfmH2JSo7AMns3AnBWYJj0ELbh ceY= X-IronPort-AV: E=McAfee;i="6000,8403,9948"; a="29475725" X-IronPort-AV: E=Sophos;i="5.82,208,1613401200"; d="scan'208";a="29475725" Received: from mail-ty1jpn01lp2054.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([104.47.93.54]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Apr 2021 11:03:21 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XSEvUZNPZI9yOZJcbZ/6JNBG/5VaRiAAvRuQfeEMWSCpjFroFWayXad+FIcTA8KrM0sO1Vuw4iK8v2u3hlRP0cLUuULYFuRC7xod+jYX7+4G4kdaA6ohZ8rATC54i1pc+iv4hZ/7MZnoDM0IDObdNX2mcQnLTB5Qhbr0ScdFJbehQn0z6asSrzYqBk0p0+OJwDhKBccwsiETA48YN8DKSNs2NYf80pLu/Tpfsp1hWcZnfTPdqquOFyz7KYT+Yfy7Toqb3AxM0gaOUrzM/XnySEQO2+UyGXtUCkQDqaS53auEMopbGGhXw7IdgOrsFmYe/8SpgcL8puR6jQcieDKg5g== 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=/NP3BMyf7aHrRCg78zy6srjL6Bwqv/WtiAvxl10B4Yo=; b=DLwx0bPrUmaPC98+7nIDU/nn5fHPa4gRB+QQ0nT/rdMFXz35g6vxdjpUeV5064no7C9+25CIMtwUFZvaBAN181j7O5fR0743aQLmbHZYULrr8FwPj8gGwyjKooXvrjVTsbnkzTfUg8Q+vtLcxSVOBxubgI8N4xGaJ8321uzji8h4ozwaQjccjSfxPD8eaKnDy9Lp5bQWMzm/GAplT41TrBDgti60smaNHsGw0Ruc9mf5hvLYsJ8bqXuh4xibwftDBPY5WFEbNgTq0L7t6V2ZUOvG1T5Ak7EPeccMGuxeDKa6F30ZKp7BtnlujSGBTaHLg1ZL58NhYFufu7Guwuj17g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/NP3BMyf7aHrRCg78zy6srjL6Bwqv/WtiAvxl10B4Yo=; b=fRhYnGR0y4jVq+LKh/I4uTagKSLLFYOz0sm1EPwcnx5k+GQKag+KJxmnLVu8BkBm7C9xdh3BochFKDlksMtMNpUNOqYwbMhkYYzEd7Aa88MxkGelMsh6exZJWdEdApCr1VeOg5AC3iRYqtKnFnh43tKkZqWegwbrdh4fZyP6JMw= Received: from OSAPR01MB2913.jpnprd01.prod.outlook.com (2603:1096:603:3f::16) by OS3PR01MB5958.jpnprd01.prod.outlook.com (2603:1096:604:d5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18; Fri, 9 Apr 2021 02:03:18 +0000 Received: from OSAPR01MB2913.jpnprd01.prod.outlook.com ([fe80::5a:7b3b:1e18:3152]) by OSAPR01MB2913.jpnprd01.prod.outlook.com ([fe80::5a:7b3b:1e18:3152%4]) with mapi id 15.20.3999.032; Fri, 9 Apr 2021 02:03:18 +0000 From: "ruansy.fnst@fujitsu.com" To: "Darrick J. Wong" CC: "linux-kernel@vger.kernel.org" , "linux-xfs@vger.kernel.org" , "linux-nvdimm@lists.01.org" , "linux-fsdevel@vger.kernel.org" , "darrick.wong@oracle.com" , "dan.j.williams@intel.com" , "willy@infradead.org" , "jack@suse.cz" , "viro@zeniv.linux.org.uk" , "linux-btrfs@vger.kernel.org" , "david@fromorbit.com" , "hch@lst.de" , "rgoldwyn@suse.de" , Ritesh Harjani Subject: RE: [PATCH v2 2/3] fsdax: Factor helper: dax_fault_actor() Thread-Topic: [PATCH v2 2/3] fsdax: Factor helper: dax_fault_actor() Thread-Index: AQHXK7NeHUl/6B163UaqZ3W4Fds/L6qrH9EAgABQUDA= Date: Fri, 9 Apr 2021 02:03:18 +0000 Message-ID: References: <20210407133823.828176-1-ruansy.fnst@fujitsu.com> <20210407133823.828176-3-ruansy.fnst@fujitsu.com> <20210408211032.GX3957620@magnolia> In-Reply-To: <20210408211032.GX3957620@magnolia> Accept-Language: en-US, zh-CN Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=fujitsu.com; x-originating-ip: [180.96.28.100] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4c6630bb-e94e-4b64-33b3-08d8fafba50e x-ms-traffictypediagnostic: OS3PR01MB5958: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QCyoB+cYyldTgA5s2W+NSFVBDH56Nd2by3RGwlfj+flDljH7ZjxGLTfU4HKzsSwd+ozb3hoHbZCnS9l4CVylzogRgM7IQb5RfgeCcszdRi9qzVgVDDhbJq+F4Ks7TyOlRbHGSSRxH0Y44IGrxZI8/mDdduC9nLv5QB2n9zXd1h3vIrQFRPSXAGcUQOGZsri4MJWgaqqTqCpbZ35zUdmAgFgujVN1x0z7N9rjT80vgoI1Sv1YBtMKqdabjaFUcdYqoC1PmOt7833d+3jtq5g734T5tR97K6rI9b8JjOInMiXdTD9/WdqLVP0axsjcixt8+gFJiiwH5HqJzMo5l5pqCgvFW2f3QK2zc+dZsop3HHrI6zdkI825rDCuDAkkJac6VOubxWU/fch9QLdtvQ/ugfLHVT6Tb6OG0s7p5CdXfu3dy8XrSTLuCGGd3YzP/v10D8y9xJ14+2bIBYR1VmzOCDkNnuyYvKDhGPOfj9PtNdnJQmvEfrpC+V/eqvH1T2HuwNJTVSnEZLaf9jtyP4QuOovbsb/bwjXAjwrsLZvIhqFtctFWWOEktF4HDc0O37z0+m3S4iGfm6JtMBTyteXLqIxVRw+k9o758nue+KW3XOqGZFkpPkUaZnzBO9JIx4SlMK5uMlGGVxb4DZSsBWdDqNohnxOo9e57qR7y7jGlj00= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSAPR01MB2913.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(396003)(346002)(136003)(376002)(53546011)(33656002)(6506007)(38100700001)(186003)(86362001)(6916009)(76116006)(4326008)(30864003)(316002)(52536014)(66446008)(83380400001)(64756008)(66556008)(7416002)(66946007)(8936002)(9686003)(55016002)(478600001)(26005)(2906002)(5660300002)(85182001)(8676002)(66476007)(7696005)(54906003)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?gb2312?B?VEtDZk1ENFQ3d1RvVXpQSjhhL0dzSjlzY0tNbU9QK0RMM24wUEtLY1N5dmV2?= =?gb2312?B?RkxCL0VJYmp3d3NLTThnOXBwRnExMnk4cnhxalZ6REh0Mzl5ZzhGZkdtN1NB?= =?gb2312?B?Si9RaFBTdkF4YklMdTZTV3lOVWFiTVlTbHA4VnVObENKYVNrZUZ1bFV2VCtx?= =?gb2312?B?Ly9rSlVGMjZOZFV6YUdVNkRzRjk5YUo4Z3FsM1Jxa3BTOURpYmJ2c0dMeTVo?= =?gb2312?B?Rk50dGJ2aWlhMXoxQVVHUXdwVHFJanlQb1F3OG1ONDM5bTZna09rVy84Y1RO?= =?gb2312?B?VDEvdm5Tc0pZRmlUSjM1V1prNHUzVFFFalV3R1F2NTJOZ0FCOWlPZDJwV0NZ?= =?gb2312?B?YzArTWlLVDJGaXhmYVhqL0IwMDVJSEZ2MllEcitFUkZuU3lxald1QnpUYlMr?= =?gb2312?B?YnoweXdVMUNiZWtVSE1HcS9kUnlVc3hzc282NXl2NVAxckdrM1U3UHRvN0ov?= =?gb2312?B?Y1ByVWJiemFheXJrNXg3bFVxSHBhMmMzVEl4RVZ3TXRjMGcvVzl1QW83Mm14?= =?gb2312?B?TVhZcWdDbVpkMy9SbDcyeXozYjVSdmNLRVpOWlQ5UWdjd3NXV05JbHI0TEgr?= =?gb2312?B?cnJweG16ZjRvV2prUWJDYWVuSDJhSXRRb0N4dlJTNjg5RGtvSXZYU1ZqUHd4?= =?gb2312?B?OURHVWZzdFlpZG9MdWZRaGxWaE0rL29wdGd2b3pVRm43cmRjc2NNR2pyQk1W?= =?gb2312?B?eDdxdGY5Zlgva05tek1tZXNvZENDRUsvK3hjNkdPS3c0MVgxRDF4NS96elVB?= =?gb2312?B?TzdBa29BOWxMWDVZMkhRelp3QzZrZS9sTWhReTVwM0lvNWM1U2ZPcFJabXhs?= =?gb2312?B?NDRnZkY4OHo1emFJeDJOT0ZSTzgvcjlTeFZKOGEvRmdQVFh1aThYL2J0OFJ6?= =?gb2312?B?anlVTXYwZXVqcE05bCtoQ2VMUkxydmh2K0pvNkI3YjZDMmVkRlp5enZybW9w?= =?gb2312?B?ZEZ3WmREcWx3N1FnWWN0SDR4clN0a084OC9RN3VjYmNKZ1JIN3FaN1dNdmgr?= =?gb2312?B?ZmMza01XS25yck8rT3o1WXVnNGZUTXBVZ2RROE1CZTdPTjVEWG42Rkx1M0xJ?= =?gb2312?B?ZStHbXJFZUE4Zkt0czh0cVNqTytKbGRJZHhka1lxaDNUQ2Q3NTl1TGFGZm9B?= =?gb2312?B?THZIQ3prTk1FQTFhQ1BOMTl4U2dMcWM5dlA0M1VCWW82VW85UkZYbDJtUXFy?= =?gb2312?B?QjNtRDJtWjluQ3dYRTZORTBhMjVzamRFWVNwRlNiNDJ3WWo0VzBEUnhMWWI3?= =?gb2312?B?OForS0dxWkt0VWVMOGhrUVN6ZXBIS3Q3anZmQ1dSalRVZm56RktYR2JvendS?= =?gb2312?B?V3luYXQxbE9RK0tsTUFyU3ZxY3RjamNGNTJHZHdORDVCaUNYejN6UXV6K2Vx?= =?gb2312?B?U0k0bEcyNWhFY0YyVDJ2OTM2YzdFRTBDY0JuUm16V1dsSG9FZ2drd1R0N0tY?= =?gb2312?B?QVhmUjhkdVhYekhrSlk4RzZsWVRnL1FkNVd3U2crUFBPSDFXSHNqblJva3JB?= =?gb2312?B?UnFNMFNWTVJIYVN6eU1wUjE4SURCL2kxanQrYlNwTGJmK3lWOThFVWFZWEpH?= =?gb2312?B?SDErVWZzaHJBcGVHdXcvNU52UWdFU3BRZ0JWMU01NFA3MzhPYzhSU0NZZTdB?= =?gb2312?B?bmx0Q3NEdURWbHIzQ2JUenpPSDlTWVRMNGZNU3N1T2VvS1B6eGN2V1A0a3V5?= =?gb2312?B?aEJDVXZIK3NsaVZWVWtYcjRVKyt0ajRUYTF4Slg3UDFhRFZSanU4U1dkait1?= =?gb2312?Q?con8X8w3rAV20C0vhKuu3vxtW14qH3Ck7Rcs5zG?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSAPR01MB2913.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c6630bb-e94e-4b64-33b3-08d8fafba50e X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2021 02:03:18.4382 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: h6tSPxz0k6I+crrgapDz4/1yiW59BSdQUrdjYsJw0DOdygJb00S2QDBYSeEKqtWJ2yw5MAGcxAXIirHBhTcThA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB5958 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRGFycmljayBKLiBXb25n IDxkandvbmdAa2VybmVsLm9yZz4NCj4gU2VudDogRnJpZGF5LCBBcHJpbCA5LCAyMDIxIDU6MTEg QU0NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAyLzNdIGZzZGF4OiBGYWN0b3IgaGVscGVyOiBk YXhfZmF1bHRfYWN0b3IoKQ0KPiANCj4gT24gV2VkLCBBcHIgMDcsIDIwMjEgYXQgMDk6Mzg6MjJQ TSArMDgwMCwgU2hpeWFuZyBSdWFuIHdyb3RlOg0KPiA+IFRoZSBjb3JlIGxvZ2ljIGluIHRoZSB0 d28gZGF4IHBhZ2UgZmF1bHQgZnVuY3Rpb25zIGlzIHNpbWlsYXIuIFNvLA0KPiA+IG1vdmUgdGhl IGxvZ2ljIGludG8gYSBjb21tb24gaGVscGVyIGZ1bmN0aW9uLiBBbHNvLCB0byBmYWNpbGl0YXRl IHRoZQ0KPiA+IGFkZGl0aW9uIG9mIG5ldyBmZWF0dXJlcywgc3VjaCBhcyBDb1csIHN3aXRjaC1j YXNlIGlzIG5vIGxvbmdlciB1c2VkDQo+ID4gdG8gaGFuZGxlIGRpZmZlcmVudCBpb21hcCB0eXBl cy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNoaXlhbmcgUnVhbiA8cnVhbnN5LmZuc3RAZnVq aXRzdS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRl Pg0KPiA+IFJldmlld2VkLWJ5OiBSaXRlc2ggSGFyamFuaSA8cml0ZXNoaEBsaW51eC5pYm0uY29t Pg0KPiA+IC0tLQ0KPiA+ICBmcy9kYXguYyB8IDI5NA0KPiA+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQs IDE0OCBpbnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvZnMvZGF4LmMgYi9mcy9kYXguYw0KPiA+IGluZGV4IGY4NDNmYjhmYmJmMS4uNmRlYTFmYzEx YjQ2IDEwMDY0NA0KPiA+IC0tLSBhL2ZzL2RheC5jDQo+ID4gKysrIGIvZnMvZGF4LmMNCj4gPiBA QCAtMTA1NCw2ICsxMDU0LDY2IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRheF9sb2FkX2hvbGUoc3Ry dWN0IHhhX3N0YXRlDQo+ICp4YXMsDQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4g PiArI2lmZGVmIENPTkZJR19GU19EQVhfUE1EDQo+ID4gK3N0YXRpYyB2bV9mYXVsdF90IGRheF9w bWRfbG9hZF9ob2xlKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBzdHJ1Y3Qgdm1fZmF1bHQNCj4gKnZt ZiwNCj4gPiArCQlzdHJ1Y3QgaW9tYXAgKmlvbWFwLCB2b2lkICoqZW50cnkpDQo+ID4gK3sNCj4g PiArCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gdm1mLT52bWEtPnZtX2ZpbGUtPmZf bWFwcGluZzsNCj4gPiArCXVuc2lnbmVkIGxvbmcgcG1kX2FkZHIgPSB2bWYtPmFkZHJlc3MgJiBQ TURfTUFTSzsNCj4gPiArCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7DQo+ ID4gKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gbWFwcGluZy0+aG9zdDsNCj4gPiArCXBndGFibGVf dCBwZ3RhYmxlID0gTlVMTDsNCj4gPiArCXN0cnVjdCBwYWdlICp6ZXJvX3BhZ2U7DQo+ID4gKwlz cGlubG9ja190ICpwdGw7DQo+ID4gKwlwbWRfdCBwbWRfZW50cnk7DQo+ID4gKwlwZm5fdCBwZm47 DQo+ID4gKw0KPiA+ICsJemVyb19wYWdlID0gbW1fZ2V0X2h1Z2VfemVyb19wYWdlKHZtZi0+dm1h LT52bV9tbSk7DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KCF6ZXJvX3BhZ2UpKQ0KPiA+ICsJ CWdvdG8gZmFsbGJhY2s7DQo+ID4gKw0KPiA+ICsJcGZuID0gcGFnZV90b19wZm5fdCh6ZXJvX3Bh Z2UpOw0KPiA+ICsJKmVudHJ5ID0gZGF4X2luc2VydF9lbnRyeSh4YXMsIG1hcHBpbmcsIHZtZiwg KmVudHJ5LCBwZm4sDQo+ID4gKwkJCURBWF9QTUQgfCBEQVhfWkVST19QQUdFLCBmYWxzZSk7DQo+ ID4gKw0KPiA+ICsJaWYgKGFyY2hfbmVlZHNfcGd0YWJsZV9kZXBvc2l0KCkpIHsNCj4gPiArCQlw Z3RhYmxlID0gcHRlX2FsbG9jX29uZSh2bWEtPnZtX21tKTsNCj4gPiArCQlpZiAoIXBndGFibGUp DQo+ID4gKwkJCXJldHVybiBWTV9GQVVMVF9PT007DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcHRs ID0gcG1kX2xvY2sodm1mLT52bWEtPnZtX21tLCB2bWYtPnBtZCk7DQo+ID4gKwlpZiAoIXBtZF9u b25lKCoodm1mLT5wbWQpKSkgew0KPiA+ICsJCXNwaW5fdW5sb2NrKHB0bCk7DQo+ID4gKwkJZ290 byBmYWxsYmFjazsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGd0YWJsZSkgew0KPiA+ICsJ CXBndGFibGVfdHJhbnNfaHVnZV9kZXBvc2l0KHZtYS0+dm1fbW0sIHZtZi0+cG1kLCBwZ3RhYmxl KTsNCj4gPiArCQltbV9pbmNfbnJfcHRlcyh2bWEtPnZtX21tKTsNCj4gPiArCX0NCj4gPiArCXBt ZF9lbnRyeSA9IG1rX3BtZCh6ZXJvX3BhZ2UsIHZtZi0+dm1hLT52bV9wYWdlX3Byb3QpOw0KPiA+ ICsJcG1kX2VudHJ5ID0gcG1kX21raHVnZShwbWRfZW50cnkpOw0KPiA+ICsJc2V0X3BtZF9hdCh2 bWYtPnZtYS0+dm1fbW0sIHBtZF9hZGRyLCB2bWYtPnBtZCwgcG1kX2VudHJ5KTsNCj4gPiArCXNw aW5fdW5sb2NrKHB0bCk7DQo+ID4gKwl0cmFjZV9kYXhfcG1kX2xvYWRfaG9sZShpbm9kZSwgdm1m LCB6ZXJvX3BhZ2UsICplbnRyeSk7DQo+ID4gKwlyZXR1cm4gVk1fRkFVTFRfTk9QQUdFOw0KPiA+ ICsNCj4gPiArZmFsbGJhY2s6DQo+ID4gKwlpZiAocGd0YWJsZSkNCj4gPiArCQlwdGVfZnJlZSh2 bWEtPnZtX21tLCBwZ3RhYmxlKTsNCj4gPiArCXRyYWNlX2RheF9wbWRfbG9hZF9ob2xlX2ZhbGxi YWNrKGlub2RlLCB2bWYsIHplcm9fcGFnZSwgKmVudHJ5KTsNCj4gPiArCXJldHVybiBWTV9GQVVM VF9GQUxMQkFDSzsNCj4gPiArfQ0KPiA+ICsjZWxzZQ0KPiA+ICtzdGF0aWMgdm1fZmF1bHRfdCBk YXhfcG1kX2xvYWRfaG9sZShzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgc3RydWN0IHZtX2ZhdWx0DQo+ ICp2bWYsDQo+ID4gKwkJc3RydWN0IGlvbWFwICppb21hcCwgdm9pZCAqKmVudHJ5KQ0KPiA+ICt7 DQo+ID4gKwlyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7DQo+ID4gK30NCj4gPiArI2VuZGlmIC8q IENPTkZJR19GU19EQVhfUE1EICovDQo+ID4gKw0KPiA+ICBzNjQgZGF4X2lvbWFwX3plcm8obG9m Zl90IHBvcywgdTY0IGxlbmd0aCwgc3RydWN0IGlvbWFwICppb21hcCkgIHsNCj4gPiAgCXNlY3Rv cl90IHNlY3RvciA9IGlvbWFwX3NlY3Rvcihpb21hcCwgcG9zICYgUEFHRV9NQVNLKTsgQEAgLTEy OTEsNg0KPiA+ICsxMzUxLDY0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRheF9mYXVsdF9jb3dfcGFn ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwNCj4gc3RydWN0IGlvbWFwICppb21hcCwNCj4gPiAgCXJl dHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICogZGF4X2ZhdWx0X2FjdG9y IC0gQ29tbW9uIGFjdG9yIHRvIGhhbmRsZSBwZm4gaW5zZXJ0aW9uIGluIFBURS9QTUQgZmF1bHQu DQo+ID4gKyAqIEB2bWY6CXZtIGZhdWx0IGluc3RhbmNlDQo+ID4gKyAqIEBwZm5wOglwZm4gdG8g YmUgcmV0dXJuZWQNCj4gPiArICogQHhhczoJdGhlIGRheCBtYXBwaW5nIHRyZWUgb2YgYSBmaWxl DQo+ID4gKyAqIEBlbnRyeToJYW4gdW5sb2NrZWQgZGF4IGVudHJ5IHRvIGJlIGluc2VydGVkDQo+ ID4gKyAqIEBwbWQ6CWRpc3Rpbmd1aXNoIHdoZXRoZXIgaXQgaXMgYSBwbWQgZmF1bHQNCj4gPiAr ICogQGZsYWdzOglpb21hcCBmbGFncw0KPiA+ICsgKiBAaW9tYXA6CWZyb20gaW9tYXBfYmVnaW4o KQ0KPiA+ICsgKiBAc3JjbWFwOglmcm9tIGlvbWFwX2JlZ2luKCksIG5vdCBlcXVhbCB0byBpb21h cCBpZiBpdCBpcyBhIENvVw0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHZtX2ZhdWx0X3QgZGF4X2Zh dWx0X2FjdG9yKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiArCQlzdHJ1 Y3QgeGFfc3RhdGUgKnhhcywgdm9pZCAqKmVudHJ5LCBib29sIHBtZCwNCj4gPiArCQl1bnNpZ25l ZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwKSB7 DQo+ID4gKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHZtZi0+dm1hLT52bV9maWxl LT5mX21hcHBpbmc7DQo+ID4gKwlzaXplX3Qgc2l6ZSA9IHBtZCA/IFBNRF9TSVpFIDogUEFHRV9T SVpFOw0KPiA+ICsJbG9mZl90IHBvcyA9IChsb2ZmX3QpeGFzLT54YV9pbmRleCA8PCBQQUdFX1NI SUZUOw0KPiA+ICsJYm9vbCB3cml0ZSA9IHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1dSSVRFOw0K PiA+ICsJYm9vbCBzeW5jID0gZGF4X2ZhdWx0X2lzX3N5bmNocm9ub3VzKGZsYWdzLCB2bWYtPnZt YSwgaW9tYXApOw0KPiA+ICsJdW5zaWduZWQgbG9uZyBlbnRyeV9mbGFncyA9IHBtZCA/IERBWF9Q TUQgOiAwOw0KPiA+ICsJaW50IGVyciA9IDA7DQo+ID4gKwlwZm5fdCBwZm47DQo+ID4gKw0KPiA+ ICsJLyogaWYgd2UgYXJlIHJlYWRpbmcgVU5XUklUVEVOIGFuZCBIT0xFLCByZXR1cm4gYSBob2xl LiAqLw0KPiA+ICsJaWYgKCF3cml0ZSAmJg0KPiA+ICsJICAgIChpb21hcC0+dHlwZSA9PSBJT01B UF9VTldSSVRURU4gfHwgaW9tYXAtPnR5cGUgPT0NCj4gSU9NQVBfSE9MRSkpIHsNCj4gPiArCQlp ZiAoIXBtZCkNCj4gPiArCQkJcmV0dXJuIGRheF9sb2FkX2hvbGUoeGFzLCBtYXBwaW5nLCBlbnRy eSwgdm1mKTsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXJldHVybiBkYXhfcG1kX2xvYWRfaG9sZSh4 YXMsIHZtZiwgaW9tYXAsIGVudHJ5KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoaW9tYXAt PnR5cGUgIT0gSU9NQVBfTUFQUEVEKSB7DQo+ID4gKwkJV0FSTl9PTl9PTkNFKDEpOw0KPiA+ICsJ CXJldHVybiBwbWQgPyBWTV9GQVVMVF9GQUxMQkFDSyA6IFZNX0ZBVUxUX1NJR0JVUzsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwllcnIgPSBkYXhfaW9tYXBfcGZuKGlvbWFwLCBwb3MsIHNpemUsICZw Zm4pOw0KPiA+ICsJaWYgKGVycikNCj4gPiArCQlyZXR1cm4gcG1kID8gVk1fRkFVTFRfRkFMTEJB Q0sgOiBkYXhfZmF1bHRfcmV0dXJuKGVycik7DQo+ID4gKw0KPiA+ICsJKmVudHJ5ID0gZGF4X2lu c2VydF9lbnRyeSh4YXMsIG1hcHBpbmcsIHZtZiwgKmVudHJ5LCBwZm4sIGVudHJ5X2ZsYWdzLA0K PiA+ICsJCQkJICB3cml0ZSAmJiAhc3luYyk7DQo+ID4gKw0KPiA+ICsJaWYgKHN5bmMpDQo+ID4g KwkJcmV0dXJuIGRheF9mYXVsdF9zeW5jaHJvbm91c19wZm5wKHBmbnAsIHBmbik7DQo+ID4gKw0K PiA+ICsJLyogaW5zZXJ0IFBNRCBwZm4gKi8NCj4gPiArCWlmIChwbWQpDQo+ID4gKwkJcmV0dXJu IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpOw0KPiA+ICsNCj4gPiArCS8qIGlu c2VydCBQVEUgcGZuICovDQo+ID4gKwlpZiAod3JpdGUpDQo+ID4gKwkJcmV0dXJuIHZtZl9pbnNl cnRfbWl4ZWRfbWt3cml0ZSh2bWYtPnZtYSwgdm1mLT5hZGRyZXNzLCBwZm4pOw0KPiA+ICsJcmV0 dXJuIHZtZl9pbnNlcnRfbWl4ZWQodm1mLT52bWEsIHZtZi0+YWRkcmVzcywgcGZuKTsgfQ0KPiA+ ICsNCj4gPiAgc3RhdGljIHZtX2ZhdWx0X3QgZGF4X2lvbWFwX3B0ZV9mYXVsdChzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZiwgcGZuX3QgKnBmbnAsDQo+ID4gIAkJCSAgICAgICBpbnQgKmlvbWFwX2VycnAs IGNvbnN0IHN0cnVjdCBpb21hcF9vcHMgKm9wcykgIHsgQEANCj4gPiAtMTI5OCwxNyArMTQxNiwx NCBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcHRlX2ZhdWx0KHN0cnVjdA0KPiB2bV9m YXVsdCAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBw aW5nID0gdm1hLT52bV9maWxlLT5mX21hcHBpbmc7DQo+ID4gIAlYQV9TVEFURSh4YXMsICZtYXBw aW5nLT5pX3BhZ2VzLCB2bWYtPnBnb2ZmKTsNCj4gPiAgCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBt YXBwaW5nLT5ob3N0Ow0KPiA+IC0JdW5zaWduZWQgbG9uZyB2YWRkciA9IHZtZi0+YWRkcmVzczsN Cj4gPiAgCWxvZmZfdCBwb3MgPSAobG9mZl90KXZtZi0+cGdvZmYgPDwgUEFHRV9TSElGVDsNCj4g PiAgCXN0cnVjdCBpb21hcCBpb21hcCA9IHsgLnR5cGUgPSBJT01BUF9IT0xFIH07DQo+ID4gIAlz dHJ1Y3QgaW9tYXAgc3JjbWFwID0geyAudHlwZSA9IElPTUFQX0hPTEUgfTsNCj4gPiAgCXVuc2ln bmVkIGZsYWdzID0gSU9NQVBfRkFVTFQ7DQo+ID4gIAlpbnQgZXJyb3IsIG1ham9yID0gMDsNCj4g DQo+IEhtbSwgc2hvdWxkbid0IG1ham9yIGJlIHZtX2ZhdWx0X3Qgc2luY2Ugd2UgYXNzaWduIFZN X0ZBVUxUX01BSk9SIHRvIGl0Pw0KDQpZZXMsIEkgZGlkbid0IG5vdGljZSBpdC4gIFdpbGwgZml4 IGl0IGluIG5leHQgdmVyc2lvbi4NCg0KDQotLQ0KVGhhbmtzLA0KUnVhbiBTaGl5YW5nLg0KDQo+ IA0KPiAtLUQNCj4gDQo+ID4gIAlib29sIHdyaXRlID0gdm1mLT5mbGFncyAmIEZBVUxUX0ZMQUdf V1JJVEU7DQo+ID4gLQlib29sIHN5bmM7DQo+ID4gIAl2bV9mYXVsdF90IHJldCA9IDA7DQo+ID4g IAl2b2lkICplbnRyeTsNCj4gPiAtCXBmbl90IHBmbjsNCj4gPg0KPiA+ICAJdHJhY2VfZGF4X3B0 ZV9mYXVsdChpbm9kZSwgdm1mLCByZXQpOw0KPiA+ICAJLyoNCj4gPiBAQCAtMTM1NCw4ICsxNDY5 LDggQEAgc3RhdGljIHZtX2ZhdWx0X3QgZGF4X2lvbWFwX3B0ZV9mYXVsdChzdHJ1Y3QNCj4gdm1f ZmF1bHQgKnZtZiwgcGZuX3QgKnBmbnAsDQo+ID4gIAkJZ290byB1bmxvY2tfZW50cnk7DQo+ID4g IAl9DQo+ID4gIAlpZiAoV0FSTl9PTl9PTkNFKGlvbWFwLm9mZnNldCArIGlvbWFwLmxlbmd0aCA8 IHBvcyArIFBBR0VfU0laRSkpIHsNCj4gPiAtCQllcnJvciA9IC1FSU87CS8qIGZzIGNvcnJ1cHRp b24/ICovDQo+ID4gLQkJZ290byBlcnJvcl9maW5pc2hfaW9tYXA7DQo+ID4gKwkJcmV0ID0gVk1f RkFVTFRfU0lHQlVTOwkvKiBmcyBjb3JydXB0aW9uPyAqLw0KPiA+ICsJCWdvdG8gZmluaXNoX2lv bWFwOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlpZiAodm1mLT5jb3dfcGFnZSkgew0KPiA+IEBAIC0x MzYzLDQ5ICsxNDc4LDE5IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRheF9pb21hcF9wdGVfZmF1bHQo c3RydWN0DQo+IHZtX2ZhdWx0ICp2bWYsIHBmbl90ICpwZm5wLA0KPiA+ICAJCWdvdG8gZmluaXNo X2lvbWFwOw0KPiA+ICAJfQ0KPiA+DQo+ID4gLQlzeW5jID0gZGF4X2ZhdWx0X2lzX3N5bmNocm9u b3VzKGZsYWdzLCB2bWEsICZpb21hcCk7DQo+ID4gLQ0KPiA+IC0Jc3dpdGNoIChpb21hcC50eXBl KSB7DQo+ID4gLQljYXNlIElPTUFQX01BUFBFRDoNCj4gPiAtCQlpZiAoaW9tYXAuZmxhZ3MgJiBJ T01BUF9GX05FVykgew0KPiA+IC0JCQljb3VudF92bV9ldmVudChQR01BSkZBVUxUKTsNCj4gPiAt CQkJY291bnRfbWVtY2dfZXZlbnRfbW0odm1hLT52bV9tbSwgUEdNQUpGQVVMVCk7DQo+ID4gLQkJ CW1ham9yID0gVk1fRkFVTFRfTUFKT1I7DQo+ID4gLQkJfQ0KPiA+IC0JCWVycm9yID0gZGF4X2lv bWFwX3BmbigmaW9tYXAsIHBvcywgUEFHRV9TSVpFLCAmcGZuKTsNCj4gPiAtCQlpZiAoZXJyb3Ig PCAwKQ0KPiA+IC0JCQlnb3RvIGVycm9yX2ZpbmlzaF9pb21hcDsNCj4gPiAtDQo+ID4gLQkJZW50 cnkgPSBkYXhfaW5zZXJ0X2VudHJ5KCZ4YXMsIG1hcHBpbmcsIHZtZiwgZW50cnksIHBmbiwNCj4g PiAtCQkJCQkJIDAsIHdyaXRlICYmICFzeW5jKTsNCj4gPiAtDQo+ID4gLQkJaWYgKHN5bmMpIHsN Cj4gPiAtCQkJcmV0ID0gZGF4X2ZhdWx0X3N5bmNocm9ub3VzX3BmbnAocGZucCwgcGZuKTsNCj4g PiAtCQkJZ290byBmaW5pc2hfaW9tYXA7DQo+ID4gLQkJfQ0KPiA+IC0JCXRyYWNlX2RheF9pbnNl cnRfbWFwcGluZyhpbm9kZSwgdm1mLCBlbnRyeSk7DQo+ID4gLQkJaWYgKHdyaXRlKQ0KPiA+IC0J CQlyZXQgPSB2bWZfaW5zZXJ0X21peGVkX21rd3JpdGUodm1hLCB2YWRkciwgcGZuKTsNCj4gPiAt CQllbHNlDQo+ID4gLQkJCXJldCA9IHZtZl9pbnNlcnRfbWl4ZWQodm1hLCB2YWRkciwgcGZuKTsN Cj4gPiAtDQo+ID4gKwlyZXQgPSBkYXhfZmF1bHRfYWN0b3Iodm1mLCBwZm5wLCAmeGFzLCAmZW50 cnksIGZhbHNlLCBmbGFncywNCj4gPiArCQkJICAgICAgJmlvbWFwLCAmc3JjbWFwKTsNCj4gPiAr CWlmIChyZXQgPT0gVk1fRkFVTFRfU0lHQlVTKQ0KPiA+ICAJCWdvdG8gZmluaXNoX2lvbWFwOw0K PiA+IC0JY2FzZSBJT01BUF9VTldSSVRURU46DQo+ID4gLQljYXNlIElPTUFQX0hPTEU6DQo+ID4g LQkJaWYgKCF3cml0ZSkgew0KPiA+IC0JCQlyZXQgPSBkYXhfbG9hZF9ob2xlKCZ4YXMsIG1hcHBp bmcsICZlbnRyeSwgdm1mKTsNCj4gPiAtCQkJZ290byBmaW5pc2hfaW9tYXA7DQo+ID4gLQkJfQ0K PiA+IC0JCWZhbGx0aHJvdWdoOw0KPiA+IC0JZGVmYXVsdDoNCj4gPiAtCQlXQVJOX09OX09OQ0Uo MSk7DQo+ID4gLQkJZXJyb3IgPSAtRUlPOw0KPiA+IC0JCWJyZWFrOw0KPiA+ICsNCj4gPiArCS8q IHJlYWQvd3JpdGUgTUFQUEVELCBDb1cgVU5XUklUVEVOICovDQo+ID4gKwlpZiAoaW9tYXAuZmxh Z3MgJiBJT01BUF9GX05FVykgew0KPiA+ICsJCWNvdW50X3ZtX2V2ZW50KFBHTUFKRkFVTFQpOw0K PiA+ICsJCWNvdW50X21lbWNnX2V2ZW50X21tKHZtYS0+dm1fbW0sIFBHTUFKRkFVTFQpOw0KPiA+ ICsJCW1ham9yID0gVk1fRkFVTFRfTUFKT1I7DQo+ID4gIAl9DQo+ID4NCj4gPiAtIGVycm9yX2Zp bmlzaF9pb21hcDoNCj4gPiAtCXJldCA9IGRheF9mYXVsdF9yZXR1cm4oZXJyb3IpOw0KPiA+IC0g ZmluaXNoX2lvbWFwOg0KPiA+ICtmaW5pc2hfaW9tYXA6DQo+ID4gIAlpZiAob3BzLT5pb21hcF9l bmQpIHsNCj4gPiAgCQlpbnQgY29waWVkID0gUEFHRV9TSVpFOw0KPiA+DQo+ID4gQEAgLTE0MTks NjYgKzE1MDQsMTQgQEAgc3RhdGljIHZtX2ZhdWx0X3QgZGF4X2lvbWFwX3B0ZV9mYXVsdChzdHJ1 Y3QNCj4gdm1fZmF1bHQgKnZtZiwgcGZuX3QgKnBmbnAsDQo+ID4gIAkJICovDQo+ID4gIAkJb3Bz LT5pb21hcF9lbmQoaW5vZGUsIHBvcywgUEFHRV9TSVpFLCBjb3BpZWQsIGZsYWdzLCAmaW9tYXAp Ow0KPiA+ICAJfQ0KPiA+IC0gdW5sb2NrX2VudHJ5Og0KPiA+ICt1bmxvY2tfZW50cnk6DQo+ID4g IAlkYXhfdW5sb2NrX2VudHJ5KCZ4YXMsIGVudHJ5KTsNCj4gPiAtIG91dDoNCj4gPiArb3V0Og0K PiA+ICAJdHJhY2VfZGF4X3B0ZV9mYXVsdF9kb25lKGlub2RlLCB2bWYsIHJldCk7DQo+ID4gIAly ZXR1cm4gcmV0IHwgbWFqb3I7DQo+ID4gIH0NCj4gPg0KPiA+ICAjaWZkZWYgQ09ORklHX0ZTX0RB WF9QTUQNCj4gPiAtc3RhdGljIHZtX2ZhdWx0X3QgZGF4X3BtZF9sb2FkX2hvbGUoc3RydWN0IHhh X3N0YXRlICp4YXMsIHN0cnVjdCB2bV9mYXVsdA0KPiAqdm1mLA0KPiA+IC0JCXN0cnVjdCBpb21h cCAqaW9tYXAsIHZvaWQgKiplbnRyeSkNCj4gPiAtew0KPiA+IC0Jc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSB2bWYtPnZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nOw0KPiA+IC0JdW5zaWdu ZWQgbG9uZyBwbWRfYWRkciA9IHZtZi0+YWRkcmVzcyAmIFBNRF9NQVNLOw0KPiA+IC0Jc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsNCj4gPiAtCXN0cnVjdCBpbm9kZSAqaW5v ZGUgPSBtYXBwaW5nLT5ob3N0Ow0KPiA+IC0JcGd0YWJsZV90IHBndGFibGUgPSBOVUxMOw0KPiA+ IC0Jc3RydWN0IHBhZ2UgKnplcm9fcGFnZTsNCj4gPiAtCXNwaW5sb2NrX3QgKnB0bDsNCj4gPiAt CXBtZF90IHBtZF9lbnRyeTsNCj4gPiAtCXBmbl90IHBmbjsNCj4gPiAtDQo+ID4gLQl6ZXJvX3Bh Z2UgPSBtbV9nZXRfaHVnZV96ZXJvX3BhZ2Uodm1mLT52bWEtPnZtX21tKTsNCj4gPiAtDQo+ID4g LQlpZiAodW5saWtlbHkoIXplcm9fcGFnZSkpDQo+ID4gLQkJZ290byBmYWxsYmFjazsNCj4gPiAt DQo+ID4gLQlwZm4gPSBwYWdlX3RvX3Bmbl90KHplcm9fcGFnZSk7DQo+ID4gLQkqZW50cnkgPSBk YXhfaW5zZXJ0X2VudHJ5KHhhcywgbWFwcGluZywgdm1mLCAqZW50cnksIHBmbiwNCj4gPiAtCQkJ REFYX1BNRCB8IERBWF9aRVJPX1BBR0UsIGZhbHNlKTsNCj4gPiAtDQo+ID4gLQlpZiAoYXJjaF9u ZWVkc19wZ3RhYmxlX2RlcG9zaXQoKSkgew0KPiA+IC0JCXBndGFibGUgPSBwdGVfYWxsb2Nfb25l KHZtYS0+dm1fbW0pOw0KPiA+IC0JCWlmICghcGd0YWJsZSkNCj4gPiAtCQkJcmV0dXJuIFZNX0ZB VUxUX09PTTsNCj4gPiAtCX0NCj4gPiAtDQo+ID4gLQlwdGwgPSBwbWRfbG9jayh2bWYtPnZtYS0+ dm1fbW0sIHZtZi0+cG1kKTsNCj4gPiAtCWlmICghcG1kX25vbmUoKih2bWYtPnBtZCkpKSB7DQo+ ID4gLQkJc3Bpbl91bmxvY2socHRsKTsNCj4gPiAtCQlnb3RvIGZhbGxiYWNrOw0KPiA+IC0JfQ0K PiA+IC0NCj4gPiAtCWlmIChwZ3RhYmxlKSB7DQo+ID4gLQkJcGd0YWJsZV90cmFuc19odWdlX2Rl cG9zaXQodm1hLT52bV9tbSwgdm1mLT5wbWQsIHBndGFibGUpOw0KPiA+IC0JCW1tX2luY19ucl9w dGVzKHZtYS0+dm1fbW0pOw0KPiA+IC0JfQ0KPiA+IC0JcG1kX2VudHJ5ID0gbWtfcG1kKHplcm9f cGFnZSwgdm1mLT52bWEtPnZtX3BhZ2VfcHJvdCk7DQo+ID4gLQlwbWRfZW50cnkgPSBwbWRfbWto dWdlKHBtZF9lbnRyeSk7DQo+ID4gLQlzZXRfcG1kX2F0KHZtZi0+dm1hLT52bV9tbSwgcG1kX2Fk ZHIsIHZtZi0+cG1kLCBwbWRfZW50cnkpOw0KPiA+IC0Jc3Bpbl91bmxvY2socHRsKTsNCj4gPiAt CXRyYWNlX2RheF9wbWRfbG9hZF9ob2xlKGlub2RlLCB2bWYsIHplcm9fcGFnZSwgKmVudHJ5KTsN Cj4gPiAtCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7DQo+ID4gLQ0KPiA+IC1mYWxsYmFjazoNCj4g PiAtCWlmIChwZ3RhYmxlKQ0KPiA+IC0JCXB0ZV9mcmVlKHZtYS0+dm1fbW0sIHBndGFibGUpOw0K PiA+IC0JdHJhY2VfZGF4X3BtZF9sb2FkX2hvbGVfZmFsbGJhY2soaW5vZGUsIHZtZiwgemVyb19w YWdlLCAqZW50cnkpOw0KPiA+IC0JcmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLOw0KPiA+IC19DQo+ ID4gLQ0KPiA+ICBzdGF0aWMgYm9vbCBkYXhfZmF1bHRfY2hlY2tfZmFsbGJhY2soc3RydWN0IHZt X2ZhdWx0ICp2bWYsIHN0cnVjdCB4YV9zdGF0ZQ0KPiAqeGFzLA0KPiA+ICAJCXBnb2ZmX3QgbWF4 X3Bnb2ZmKQ0KPiA+ICB7DQo+ID4gQEAgLTE1MTksMTcgKzE1NTIsMTUgQEAgc3RhdGljIHZtX2Zh dWx0X3QgZGF4X2lvbWFwX3BtZF9mYXVsdChzdHJ1Y3QNCj4gdm1fZmF1bHQgKnZtZiwgcGZuX3Qg KnBmbnAsDQo+ID4gIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHZtYS0+dm1fZmls ZS0+Zl9tYXBwaW5nOw0KPiA+ICAJWEFfU1RBVEVfT1JERVIoeGFzLCAmbWFwcGluZy0+aV9wYWdl cywgdm1mLT5wZ29mZiwgUE1EX09SREVSKTsNCj4gPiAgCWJvb2wgd3JpdGUgPSB2bWYtPmZsYWdz ICYgRkFVTFRfRkxBR19XUklURTsNCj4gPiAtCWJvb2wgc3luYzsNCj4gPiAtCXVuc2lnbmVkIGlu dCBpb21hcF9mbGFncyA9ICh3cml0ZSA/IElPTUFQX1dSSVRFIDogMCkgfCBJT01BUF9GQVVMVDsN Cj4gPiArCXVuc2lnbmVkIGludCBmbGFncyA9ICh3cml0ZSA/IElPTUFQX1dSSVRFIDogMCkgfCBJ T01BUF9GQVVMVDsNCj4gPiAgCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBtYXBwaW5nLT5ob3N0Ow0K PiA+IC0Jdm1fZmF1bHRfdCByZXN1bHQgPSBWTV9GQVVMVF9GQUxMQkFDSzsNCj4gPiArCXZtX2Zh dWx0X3QgcmV0ID0gVk1fRkFVTFRfRkFMTEJBQ0s7DQo+ID4gIAlzdHJ1Y3QgaW9tYXAgaW9tYXAg PSB7IC50eXBlID0gSU9NQVBfSE9MRSB9Ow0KPiA+ICAJc3RydWN0IGlvbWFwIHNyY21hcCA9IHsg LnR5cGUgPSBJT01BUF9IT0xFIH07DQo+ID4gIAlwZ29mZl90IG1heF9wZ29mZjsNCj4gPiAgCXZv aWQgKmVudHJ5Ow0KPiA+ICAJbG9mZl90IHBvczsNCj4gPiAgCWludCBlcnJvcjsNCj4gPiAtCXBm bl90IHBmbjsNCj4gPg0KPiA+ICAJLyoNCj4gPiAgCSAqIENoZWNrIHdoZXRoZXIgb2Zmc2V0IGlz bid0IGJleW9uZCBlbmQgb2YgZmlsZSBub3cuIENhbGxlciBpcyBAQA0KPiA+IC0xNTQxLDcgKzE1 NzIsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcG1kX2ZhdWx0KHN0cnVjdCB2bV9m YXVsdA0KPiAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiAgCXRyYWNlX2RheF9wbWRfZmF1bHQoaW5v ZGUsIHZtZiwgbWF4X3Bnb2ZmLCAwKTsNCj4gPg0KPiA+ICAJaWYgKHhhcy54YV9pbmRleCA+PSBt YXhfcGdvZmYpIHsNCj4gPiAtCQlyZXN1bHQgPSBWTV9GQVVMVF9TSUdCVVM7DQo+ID4gKwkJcmV0 ID0gVk1fRkFVTFRfU0lHQlVTOw0KPiA+ICAJCWdvdG8gb3V0Ow0KPiA+ICAJfQ0KPiA+DQo+ID4g QEAgLTE1NTYsNyArMTU4Nyw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRheF9pb21hcF9wbWRfZmF1 bHQoc3RydWN0DQo+IHZtX2ZhdWx0ICp2bWYsIHBmbl90ICpwZm5wLA0KPiA+ICAJICovDQo+ID4g IAllbnRyeSA9IGdyYWJfbWFwcGluZ19lbnRyeSgmeGFzLCBtYXBwaW5nLCBQTURfT1JERVIpOw0K PiA+ICAJaWYgKHhhX2lzX2ludGVybmFsKGVudHJ5KSkgew0KPiA+IC0JCXJlc3VsdCA9IHhhX3Rv X2ludGVybmFsKGVudHJ5KTsNCj4gPiArCQlyZXQgPSB4YV90b19pbnRlcm5hbChlbnRyeSk7DQo+ ID4gIAkJZ290byBmYWxsYmFjazsNCj4gPiAgCX0NCj4gPg0KPiA+IEBAIC0xNTY4LDcgKzE1OTks NyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcG1kX2ZhdWx0KHN0cnVjdA0KPiB2bV9m YXVsdCAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiAgCSAqLw0KPiA+ICAJaWYgKCFwbWRfbm9uZSgq dm1mLT5wbWQpICYmICFwbWRfdHJhbnNfaHVnZSgqdm1mLT5wbWQpICYmDQo+ID4gIAkJCSFwbWRf ZGV2bWFwKCp2bWYtPnBtZCkpIHsNCj4gPiAtCQlyZXN1bHQgPSAwOw0KPiA+ICsJCXJldCA9IDA7 DQo+ID4gIAkJZ290byB1bmxvY2tfZW50cnk7DQo+ID4gIAl9DQo+ID4NCj4gPiBAQCAtMTU3OCw0 OSArMTYwOSwyMSBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcG1kX2ZhdWx0KHN0cnVj dA0KPiB2bV9mYXVsdCAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiAgCSAqIHRvIGxvb2sgdXAgb3Vy IGZpbGVzeXN0ZW0gYmxvY2suDQo+ID4gIAkgKi8NCj4gPiAgCXBvcyA9IChsb2ZmX3QpeGFzLnhh X2luZGV4IDw8IFBBR0VfU0hJRlQ7DQo+ID4gLQllcnJvciA9IG9wcy0+aW9tYXBfYmVnaW4oaW5v ZGUsIHBvcywgUE1EX1NJWkUsIGlvbWFwX2ZsYWdzLCAmaW9tYXAsDQo+ID4gLQkJCSZzcmNtYXAp Ow0KPiA+ICsJZXJyb3IgPSBvcHMtPmlvbWFwX2JlZ2luKGlub2RlLCBwb3MsIFBNRF9TSVpFLCBm bGFncywgJmlvbWFwLA0KPiA+ICsmc3JjbWFwKTsNCj4gPiAgCWlmIChlcnJvcikNCj4gPiAgCQln b3RvIHVubG9ja19lbnRyeTsNCj4gPg0KPiA+ICAJaWYgKGlvbWFwLm9mZnNldCArIGlvbWFwLmxl bmd0aCA8IHBvcyArIFBNRF9TSVpFKQ0KPiA+ICAJCWdvdG8gZmluaXNoX2lvbWFwOw0KPiA+DQo+ ID4gLQlzeW5jID0gZGF4X2ZhdWx0X2lzX3N5bmNocm9ub3VzKGlvbWFwX2ZsYWdzLCB2bWEsICZp b21hcCk7DQo+ID4gLQ0KPiA+IC0Jc3dpdGNoIChpb21hcC50eXBlKSB7DQo+ID4gLQljYXNlIElP TUFQX01BUFBFRDoNCj4gPiAtCQllcnJvciA9IGRheF9pb21hcF9wZm4oJmlvbWFwLCBwb3MsIFBN RF9TSVpFLCAmcGZuKTsNCj4gPiAtCQlpZiAoZXJyb3IgPCAwKQ0KPiA+IC0JCQlnb3RvIGZpbmlz aF9pb21hcDsNCj4gPiArCXJldCA9IGRheF9mYXVsdF9hY3Rvcih2bWYsIHBmbnAsICZ4YXMsICZl bnRyeSwgdHJ1ZSwgZmxhZ3MsDQo+ID4gKwkJCSAgICAgICZpb21hcCwgJnNyY21hcCk7DQo+ID4N Cj4gPiAtCQllbnRyeSA9IGRheF9pbnNlcnRfZW50cnkoJnhhcywgbWFwcGluZywgdm1mLCBlbnRy eSwgcGZuLA0KPiA+IC0JCQkJCQlEQVhfUE1ELCB3cml0ZSAmJiAhc3luYyk7DQo+ID4gLQ0KPiA+ IC0JCWlmIChzeW5jKSB7DQo+ID4gLQkJCXJlc3VsdCA9IGRheF9mYXVsdF9zeW5jaHJvbm91c19w Zm5wKHBmbnAsIHBmbik7DQo+ID4gLQkJCWdvdG8gZmluaXNoX2lvbWFwOw0KPiA+IC0JCX0NCj4g PiAtDQo+ID4gLQkJdHJhY2VfZGF4X3BtZF9pbnNlcnRfbWFwcGluZyhpbm9kZSwgdm1mLCBQTURf U0laRSwgcGZuLCBlbnRyeSk7DQo+ID4gLQkJcmVzdWx0ID0gdm1mX2luc2VydF9wZm5fcG1kKHZt ZiwgcGZuLCB3cml0ZSk7DQo+ID4gLQkJYnJlYWs7DQo+ID4gLQljYXNlIElPTUFQX1VOV1JJVFRF TjoNCj4gPiAtCWNhc2UgSU9NQVBfSE9MRToNCj4gPiAtCQlpZiAoV0FSTl9PTl9PTkNFKHdyaXRl KSkNCj4gPiAtCQkJYnJlYWs7DQo+ID4gLQkJcmVzdWx0ID0gZGF4X3BtZF9sb2FkX2hvbGUoJnhh cywgdm1mLCAmaW9tYXAsICZlbnRyeSk7DQo+ID4gLQkJYnJlYWs7DQo+ID4gLQlkZWZhdWx0Og0K PiA+IC0JCVdBUk5fT05fT05DRSgxKTsNCj4gPiAtCQlicmVhazsNCj4gPiAtCX0NCj4gPiAtDQo+ ID4gLSBmaW5pc2hfaW9tYXA6DQo+ID4gK2ZpbmlzaF9pb21hcDoNCj4gPiAgCWlmIChvcHMtPmlv bWFwX2VuZCkgew0KPiA+ICAJCWludCBjb3BpZWQgPSBQTURfU0laRTsNCj4gPg0KPiA+IC0JCWlm IChyZXN1bHQgPT0gVk1fRkFVTFRfRkFMTEJBQ0spDQo+ID4gKwkJaWYgKHJldCA9PSBWTV9GQVVM VF9GQUxMQkFDSykNCj4gPiAgCQkJY29waWVkID0gMDsNCj4gPiAgCQkvKg0KPiA+ICAJCSAqIFRo ZSBmYXVsdCBpcyBkb25lIGJ5IG5vdyBhbmQgdGhlcmUncyBubyB3YXkgYmFjayAob3RoZXIgQEAN Cj4gPiAtMTYyOCwxOSArMTYzMSwxOCBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcG1k X2ZhdWx0KHN0cnVjdA0KPiB2bV9mYXVsdCAqdm1mLCBwZm5fdCAqcGZucCwNCj4gPiAgCQkgKiBK dXN0IGlnbm9yZSBlcnJvciBmcm9tIC0+aW9tYXBfZW5kIHNpbmNlIHdlIGNhbm5vdCBkbyBtdWNo DQo+ID4gIAkJICogd2l0aCBpdC4NCj4gPiAgCQkgKi8NCj4gPiAtCQlvcHMtPmlvbWFwX2VuZChp bm9kZSwgcG9zLCBQTURfU0laRSwgY29waWVkLCBpb21hcF9mbGFncywNCj4gPiAtCQkJCSZpb21h cCk7DQo+ID4gKwkJb3BzLT5pb21hcF9lbmQoaW5vZGUsIHBvcywgUE1EX1NJWkUsIGNvcGllZCwg ZmxhZ3MsICZpb21hcCk7DQo+ID4gIAl9DQo+ID4gLSB1bmxvY2tfZW50cnk6DQo+ID4gK3VubG9j a19lbnRyeToNCj4gPiAgCWRheF91bmxvY2tfZW50cnkoJnhhcywgZW50cnkpOw0KPiA+IC0gZmFs bGJhY2s6DQo+ID4gLQlpZiAocmVzdWx0ID09IFZNX0ZBVUxUX0ZBTExCQUNLKSB7DQo+ID4gK2Zh bGxiYWNrOg0KPiA+ICsJaWYgKHJldCA9PSBWTV9GQVVMVF9GQUxMQkFDSykgew0KPiA+ICAJCXNw bGl0X2h1Z2VfcG1kKHZtYSwgdm1mLT5wbWQsIHZtZi0+YWRkcmVzcyk7DQo+ID4gIAkJY291bnRf dm1fZXZlbnQoVEhQX0ZBVUxUX0ZBTExCQUNLKTsNCj4gPiAgCX0NCj4gPiAgb3V0Og0KPiA+IC0J dHJhY2VfZGF4X3BtZF9mYXVsdF9kb25lKGlub2RlLCB2bWYsIG1heF9wZ29mZiwgcmVzdWx0KTsN Cj4gPiAtCXJldHVybiByZXN1bHQ7DQo+ID4gKwl0cmFjZV9kYXhfcG1kX2ZhdWx0X2RvbmUoaW5v ZGUsIHZtZiwgbWF4X3Bnb2ZmLCByZXQpOw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+ ICAjZWxzZQ0KPiA+ICBzdGF0aWMgdm1fZmF1bHRfdCBkYXhfaW9tYXBfcG1kX2ZhdWx0KHN0cnVj dCB2bV9mYXVsdCAqdm1mLCBwZm5fdA0KPiA+ICpwZm5wLA0KPiA+IC0tDQo+ID4gMi4zMS4wDQo+ ID4NCj4gPg0KPiA+DQo=