From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DD9B0A0C43; Mon, 15 Nov 2021 09:13:37 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C602640E01; Mon, 15 Nov 2021 09:13:37 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 66BC540141 for ; Mon, 15 Nov 2021 09:13:36 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10168"; a="296828772" X-IronPort-AV: E=Sophos;i="5.87,235,1631602800"; d="scan'208";a="296828772" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Nov 2021 00:13:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,235,1631602800"; d="scan'208";a="671424584" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga005.jf.intel.com with ESMTP; 15 Nov 2021 00:13:35 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 15 Nov 2021 00:13:34 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 15 Nov 2021 00:13:34 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.175) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 15 Nov 2021 00:13:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AanAAFma+bu7FXzP2HWJOAVzbgdxnqUgdPdvTnDIRwX5nzPB06oEQU16LjxqK3X5HVwP8k4rYOnTLrz0tLI8FfARRoi7PMbd03HpAJRVIzJ1I7GuX8HXOC9VmvIxsL8yf/ATOu77tf7O4WHavkZL8PUQPt104gNeLA2L82EoIdp6tYffJvP6oYP/MY4crVk98kY6J5QgtGgXn/xyExaKVvG0A2sAWZLTPoyOtNGADlo+YAkgo4f0jNVGd6X6xjuIzqSOUndwA2/SuY9FGhgEZoRZVUFnVNt5EUCd7+dpcJRBUTmF7vEGnM1QyC1GdqOQRh6lxdgeN/6ukCj5LjTH1w== 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=eEgekRy22uwQ/97qocQRW/qSgf8DaYLxNHyAg4sWFPQ=; b=Ro++N/32Q5CPgsu1saZ8AlEpGWNG751W9sypkSbh+B3X03T0wtUNCfYN+BaFrv9wVN+Bg6/0unBWvwb1ux12A+jsjMzVomIOIX7Tq1ecbfR/B6UrB8nnPt/JRFspYtpAmJZa3CF7gXpC2223F3ZntQB0WeA4oaNlC/zxn0w4ySGxX6fu0/Xa4gddMNyhL1CBO38fcWNMzQBuOzwIQdRczX72qw9B2j2q0Z1z6j0IsXpnthwgo+xBZy5RlrQvyiS6f9uP8+InmWe+csv5hW+qfIZPqSCWjFutXATIstWPfhZRwQiK+P53/kApZWcbugJ11BTGy9RBlUkVAj74lvYv1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eEgekRy22uwQ/97qocQRW/qSgf8DaYLxNHyAg4sWFPQ=; b=BU2wdtXYExQ51kNQ5UtsLeqD1/vZnIhPVK4E8VJzUxaN6AimbuMaa1fdKV/1sNfFFTaD6lmGxY+vdNOBUe4ExdojTC2b2I0t7Oq4UTTCYcaHE94auU2g6VUdbexMe99EIjkvVmym296Btse14h+WkhZsLRqqlVSSR5hJkDVdFPI= Received: from BN9PR11MB5513.namprd11.prod.outlook.com (2603:10b6:408:102::11) by BN8PR11MB3633.namprd11.prod.outlook.com (2603:10b6:408:8a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16; Mon, 15 Nov 2021 08:13:24 +0000 Received: from BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::2d2f:59c2:c16d:fe6b]) by BN9PR11MB5513.namprd11.prod.outlook.com ([fe80::2d2f:59c2:c16d:fe6b%9]) with mapi id 15.20.4690.027; Mon, 15 Nov 2021 08:13:24 +0000 From: "Ding, Xuan" To: "Xia, Chenbo" , "maxime.coquelin@redhat.com" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Wang, YuanX" , "He, Xingguang" , "Burakov, Anatoly" Subject: RE: [PATCH v3] vhost: fix physical address mapping Thread-Topic: [PATCH v3] vhost: fix physical address mapping Thread-Index: AQHX1fsGZi9cJGLiwkaMPNTddx7IO6wENqsAgAAHr/A= Date: Mon, 15 Nov 2021 08:13:23 +0000 Message-ID: References: <20211110054630.61524-1-xuan.ding@intel.com> <20211110060641.7666-1-xuan.ding@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6c0250a9-4682-4907-1951-08d9a80fcb87 x-ms-traffictypediagnostic: BN8PR11MB3633: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 68zMvIvCW49twstSc0J0xGvWhdpbnOypiYt1cZzN+mq9KigzFbNGwXNCxtkuX5T719lZMHxXdVdymwTHi17SQjdrEOX6Vb7D3WlE+Sa/tP6+n2IbEKNusGTCIckXVQN3/SOpU+7FOVb7duDgkhSSsW7ayyWddHE+yNrx+VIdo3izLMAkm/TZ/2Jcqgx4CrWyWmyjknvnMWN918u4a6Eeqc+OGchH3X90QkwwB4deE/MAtPHRh66nsSHh719S/Rv7HrCysN5IKWtdobDWefno8nLBH36va/1QM79BVzpNyynqp04ouLdoVDvwKBDVCfxLqWqPmStZXaq+2akRxSYXaaFsSQ87bYjvaF/dV7N66gl61pzVdwe+yLRu/Tw6tjOe3tn8l9TV20q5RMSSPgvTi/WXvmsca5Ck2Q4Lw5CTbk7L5ip9javLjtgv3LFpIEzPHHm9DiNzWyAcb85gXPfTGgwR+0d1nOdoSsnE7eOmk3dELyZvLQWLRGwEt8jl8IlO6dVWcAAJpYBOYg04oy9FcMnhzj4sj8pSen3/GTUgVcffjij/8eBTIp4MiYbr7Gis+v7Zo9RMdQILTnJmO+Ba10GB6cPCV5hzA/lltiNzpqNuJMPSHZYh6ZMBYQh5ZTGpokcP+ShriCBWAlu0zcyrrwQekHp/SzSMugs5jge7Q5jJ0S1DZPcXwULRNdoSi/4/+SFVOH1IG54qBaTi9gTl+A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5513.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(186003)(52536014)(53546011)(8676002)(5660300002)(38070700005)(2906002)(83380400001)(122000001)(55016002)(33656002)(7696005)(26005)(508600001)(38100700002)(107886003)(6506007)(8936002)(9686003)(82960400001)(71200400001)(54906003)(66946007)(66476007)(86362001)(316002)(110136005)(66556008)(64756008)(4326008)(66446008)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dElwUXZON0Y1VFVKZkJTeDNBMGpwK3g3L0psTnV6dHBvRjA0S01YR09QcGVh?= =?utf-8?B?aG02N0xvcEptbHZ5U0t5K2M1M29NT24xd0dwN0JMbkpKbExQSWZZcCtmSU9t?= =?utf-8?B?clNTdEtySWFsQU1PcUlneTVHb1VpSmtwNW92SkdiZXpPajhTaml3Z0tDc05T?= =?utf-8?B?QXZqblFYYTUzbWlFY3llS3l1SnQvK3lWOUVxL3RkWkx5TUw2TGpUdnN4azFa?= =?utf-8?B?cWMweWs0UmttNmlWVlJpM045OTFXSnRVWGcrT2N2d1BVOXA1NWZBMjFSbkNp?= =?utf-8?B?QTN3R0NEVWJtbmhQZmtlbk9JVG9IRzBzV2ZNSitDS0xvT0locldtRlFmellX?= =?utf-8?B?WlBQSUd1TldTQjh4TVdkU2dycExUOEpNZGFKb0hwMzRYSXdRbnhGT0dUSlBD?= =?utf-8?B?blVjc1BiTXRSNFRiVk5kU1lLWXVENnBvZmlVNHhmNzgxckdRbkQyc0t3NzFP?= =?utf-8?B?Rm9XdEdmN00reGxOcWFyLzRaczNZbTRCc1QzWkdlRzRMa2kxWWk5RWNzRk80?= =?utf-8?B?YmxTdmdFVmdWVjM2R2RYQjdVWVp0bFV5SUh2K0ljUXJvRDRvN2lTQXBiZTVW?= =?utf-8?B?WWVZQ21DVUFXcGNtMlk3Sk5xVElTQ0QzeGxmakdzY0RGY1d4YXoxd2ZaS05x?= =?utf-8?B?RWdmMTVka1ZPZ0F4Q2VRQ1QrclkzNDBucW9YNGFzY2svZ2hNVnZrMXJTdlpy?= =?utf-8?B?TFIxY1AvSmtEZjduc3NWRmRxYVJQSXBaRndJVXoyM1hJcStaQWhJZVdyM0pC?= =?utf-8?B?VHZidFM4dE9VdzNVQTcxTkFMSzQ0SWFKejl0cmp3MTZYT2hhYTUycmJwNEZQ?= =?utf-8?B?VGgxTGYwdlhuSGlGa2IwdkFRVllLWnZvUjFjRUp5MlZxd2tScmszM0xZZkEv?= =?utf-8?B?UjVkMXhlZ2ttODljS0JHdkNBcUxrZVBkWlppYyt0V0JrN3dkcllXWVNiR1lV?= =?utf-8?B?KzZUa3ZUcjJhQm1hOTkxczIrajhKSVhOdy82WWFaQi85VGcyY0k5M0x6MVFh?= =?utf-8?B?T3k2bkpRV3ViNWEvOGVKMWFSYVhpQ0dRY2JkN2ZqUDQrYzJiU0wyc1RldEZY?= =?utf-8?B?Y0JSTkJnT1VDUzM3dHI5Vy9OL1E3N0xQUWJvVXJNNkowbzJmVFZqM0JTd3Js?= =?utf-8?B?Vm1ZNE4yR2NOVXlIaS9oZU44SzhCKzhQeno4V3A1NFBJSkp5Z1hQb3kwd0Q1?= =?utf-8?B?T3F2NllqWVluWTN5VWZtWVUrRzhLNjU1Q3dFWWpINGFVbDd2M2lEU2dCU0lQ?= =?utf-8?B?Wjl2bE9RdjdQaThXZzE2S1JGdnB6UkRKL3I3dHJidWwyNjk3VndmMzMyZTFM?= =?utf-8?B?VDZHZzd4a2JVU0tRRVlLSFE3Y294R3hwMEUrQjFyZDlDQXhTYW9XZUhzbnFw?= =?utf-8?B?N2l6V3BjZWIxVVJUam11SjVnNzc0NDYyVmlHampwVC9EQkZiWllsdlZoZm5F?= =?utf-8?B?UWtnNnV4bXJHMFFyZzlXblpTRkRFTjZEc0xqaFRhQzNweFp0aUtaYnpHcEpP?= =?utf-8?B?WjUyeDZSU2V6NXhvQ1FEVlVJSCtXYTRyWm9lTFBTbGJSQnorWGJ2Q292OFgv?= =?utf-8?B?clJJRnlodjYvVDRNNEpEd2hlWkRuTUNHdFREZ2YvMmU3N21KSmc0RjhxR00x?= =?utf-8?B?WEVDZktqdURoQXkxTWIzQWxmT2YzNjZWNjIzczdGaDZHNWpuSC9hbjlVQXAw?= =?utf-8?B?cWJ4bldDQXdaSTQ3bzhzd1dzb3dpQ21HME5RU1FiQ1NFOW9rcWxVVXhaVXhO?= =?utf-8?B?WDRlYzRqTyt3b1JhZUF5dzJyYnUxZyszdXIxWksrRUVGUEFvWnk3Nkoyc0da?= =?utf-8?B?SFFOeWhsWEhidnljdG5mOS9FVXlESktVYko2Q1N3QVdVbVJtZW1wdkNyS2Ja?= =?utf-8?B?cVF3Nk1OZnMrOWlWTHZIN0JyNjh1SkllNVk0dGdTRFpYL3lHUFpuYUI5N1lw?= =?utf-8?B?UjN6YjBhNGxYTkdVbkhkTlpOTzZaVXd5OFpZaEtWa0hwMnlRbmFaTjJzUy9r?= =?utf-8?B?a1YveDBGZVhJNDk1NFA1bERadTExeStoR051SEFtUGQ4THRDTG5XZlZZSm16?= =?utf-8?B?YUxmdVBKYXAwbXpSZ0lRKy9lRHFGTDd1U0Q5U2FJblFJWDc0NlAxNlNJVGVG?= =?utf-8?B?czBsTlJrTVlWRmxkZ3JQMml0Q0daMkU3Yk1JYytwUDlMd2xwUWt5UGdGSmxw?= =?utf-8?Q?PTO8/Fz24e/SjjNX5Zbj2p8=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5513.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c0250a9-4682-4907-1951-08d9a80fcb87 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2021 08:13:24.0119 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GgguAxZNgsOgfCp+lAnj+14mwhuyyCIVx0FRW/8rJKD0gDq5UkZ+eJ5wJh6s1EIVHM7mMe0LlcsECDlLSC5PwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR11MB3633 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgQ2hlbmJvLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFhpYSwg Q2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gU2VudDogMjAyMeW5tDEx5pyIMTXml6Ug MTU6MjENCj4gVG86IERpbmcsIFh1YW4gPHh1YW4uZGluZ0BpbnRlbC5jb20+OyBtYXhpbWUuY29x dWVsaW5AcmVkaGF0LmNvbQ0KPiBDYzogZGV2QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1 QGludGVsLmNvbT47IFdhbmcsIFl1YW5YDQo+IDx5dWFueC53YW5nQGludGVsLmNvbT47IEhlLCBY aW5nZ3VhbmcgPHhpbmdndWFuZy5oZUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0gg djNdIHZob3N0OiBmaXggcGh5c2ljYWwgYWRkcmVzcyBtYXBwaW5nDQo+IA0KPiBIaSBYdWFuLA0K PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IERpbmcsIFh1YW4g PHh1YW4uZGluZ0BpbnRlbC5jb20+DQo+ID4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAxMCwg MjAyMSAyOjA3IFBNDQo+ID4gVG86IG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tOyBYaWEsIENo ZW5ibyA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+DQo+ID4gQ2M6IGRldkBkcGRrLm9yZzsgSHUsIEpp YXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyBXYW5nLCBZdWFuWA0KPiA+IDx5dWFueC53YW5nQGlu dGVsLmNvbT47IEhlLCBYaW5nZ3VhbmcgPHhpbmdndWFuZy5oZUBpbnRlbC5jb20+OyBEaW5nLA0K PiA+IFh1YW4gPHh1YW4uZGluZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW1BBVENIIHYzXSB2 aG9zdDogZml4IHBoeXNpY2FsIGFkZHJlc3MgbWFwcGluZw0KPiA+DQo+ID4gV2hlbiBjaG9vc2lu ZyBJT1ZBIGFzIFBBIG1vZGUsIElPVkEgaXMgbGlrZWx5IHRvIGJlIGRpc2NvbnRpbnVvdXMsDQo+ ID4gd2hpY2ggcmVxdWlyZXMgcGFnZSBieSBwYWdlIG1hcHBpbmcgZm9yIERNQSBkZXZpY2VzLiBU byBiZSBjb25zaXN0ZW50LA0KPiA+IHRoaXMgcGF0Y2ggaW1wbGVtZW50cyBwYWdlIGJ5IHBhZ2Ug bWFwcGluZyBpbnN0ZWFkIG9mIG1hcHBpbmcgYXQgdGhlDQo+ID4gcmVnaW9uIGdyYW51bGFyaXR5 IGZvciBib3RoIElPVkEgYXMgVkEgYW5kIFBBIG1vZGUuDQo+ID4NCj4gPiBGaXhlczogN2M2MWZh MDhiNzE2ICgidmhvc3Q6IGVuYWJsZSBJT01NVSBmb3IgYXN5bmMgdmhvc3QiKQ0KPiA+DQo+ID4g U2lnbmVkLW9mZi1ieTogWHVhbiBEaW5nIDx4dWFuLmRpbmdAaW50ZWwuY29tPg0KPiA+IC0tLQ0K PiA+DQo+ID4gdjM6DQo+ID4gKiBGaXggY29tbWl0IHRpdGxlLg0KPiA+DQo+ID4gdjI6DQo+ID4g KiBGaXggYSBmb3JtYXQgaXNzdWUuDQo+ID4gLS0tDQo+ID4gIGxpYi92aG9zdC92aG9zdC5oICAg ICAgfCAgIDEgKw0KPiA+ICBsaWIvdmhvc3Qvdmhvc3RfdXNlci5jIHwgMTA1DQo+ID4gKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMiBmaWxlcyBjaGFuZ2Vk LCA1MyBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9saWIvdmhvc3Qvdmhvc3QuaCBiL2xpYi92aG9zdC92aG9zdC5oIGluZGV4DQo+ID4gNzA4NWUw ODg1Yy4uZDI0NjUzOGNhNSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvdmhvc3Qvdmhvc3QuaA0KPiA+ ICsrKyBiL2xpYi92aG9zdC92aG9zdC5oDQo+ID4gQEAgLTM1NSw2ICszNTUsNyBAQCBzdHJ1Y3Qg dnJpbmdfcGFja2VkX2Rlc2NfZXZlbnQgeyAgc3RydWN0DQo+ID4gZ3Vlc3RfcGFnZSB7DQo+ID4g IAl1aW50NjRfdCBndWVzdF9waHlzX2FkZHI7DQo+ID4gIAl1aW50NjRfdCBob3N0X3BoeXNfYWRk cjsNCj4gPiArCXVpbnQ2NF90IGhvc3RfdXNlcl9hZGRyOw0KPiA+ICAJdWludDY0X3Qgc2l6ZTsN Cj4gPiAgfTsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvdmhvc3Qvdmhvc3RfdXNlci5jIGIv bGliL3Zob3N0L3Zob3N0X3VzZXIuYyBpbmRleA0KPiA+IGE3ODEzNDZjNGQuLjM3Y2RlZGRhM2Mg MTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+ICsrKyBiL2xpYi92 aG9zdC92aG9zdF91c2VyLmMNCj4gPiBAQCAtMTQ0LDUyICsxNDQsNTUgQEAgZ2V0X2Jsa19zaXpl KGludCBmZCkgIH0NCj4gPg0KPiA+ICBzdGF0aWMgaW50DQo+ID4gLWFzeW5jX2RtYV9tYXAoc3Ry dWN0IHJ0ZV92aG9zdF9tZW1fcmVnaW9uICpyZWdpb24sIGJvb2wgZG9fbWFwKQ0KPiA+ICthc3lu Y19kbWFfbWFwKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIGJvb2wgZG9fbWFwKQ0KPiA+ICB7DQo+ ID4gLQl1aW50NjRfdCBob3N0X2lvdmE7DQo+ID4gIAlpbnQgcmV0ID0gMDsNCj4gPiAtDQo+ID4g LQlob3N0X2lvdmEgPSBydGVfbWVtX3ZpcnQyaW92YSgodm9pZCAqKSh1aW50cHRyX3QpcmVnaW9u LQ0KPiA+aG9zdF91c2VyX2FkZHIpOw0KPiA+ICsJdWludDMyX3QgaTsNCj4gPiArCXN0cnVjdCBn dWVzdF9wYWdlICpwYWdlOw0KPiA+ICAJaWYgKGRvX21hcCkgew0KPiA+IC0JCS8qIEFkZCBtYXBw ZWQgcmVnaW9uIGludG8gdGhlIGRlZmF1bHQgY29udGFpbmVyIG9mIERQREsuICovDQo+ID4gLQkJ cmV0ID0NCj4gcnRlX3ZmaW9fY29udGFpbmVyX2RtYV9tYXAoUlRFX1ZGSU9fREVGQVVMVF9DT05U QUlORVJfRkQsDQo+ID4gLQkJCQkJCSByZWdpb24tPmhvc3RfdXNlcl9hZGRyLA0KPiA+IC0JCQkJ CQkgaG9zdF9pb3ZhLA0KPiA+IC0JCQkJCQkgcmVnaW9uLT5zaXplKTsNCj4gPiAtCQlpZiAocmV0 KSB7DQo+ID4gLQkJCS8qDQo+ID4gLQkJCSAqIERNQSBkZXZpY2UgbWF5IGJpbmQgd2l0aCBrZXJu ZWwgZHJpdmVyLCBpbiB0aGlzIGNhc2UsDQo+ID4gLQkJCSAqIHdlIGRvbid0IG5lZWQgdG8gcHJv Z3JhbSBJT01NVSBtYW51YWxseS4NCj4gSG93ZXZlciwgaWYgbm8NCj4gPiAtCQkJICogZGV2aWNl IGlzIGJvdW5kIHdpdGggdmZpby91aW8gaW4gRFBESywgYW5kIHZmaW8ga2VybmVsDQo+ID4gLQkJ CSAqIG1vZHVsZSBpcyBsb2FkZWQsIHRoZSBBUEkgd2lsbCBzdGlsbCBiZSBjYWxsZWQgYW5kDQo+ IHJldHVybg0KPiA+IC0JCQkgKiB3aXRoIEVOT0RFVi9FTk9TVVAuDQo+ID4gLQkJCSAqDQo+ID4g LQkJCSAqIERQREsgdmZpbyBvbmx5IHJldHVybnMgRU5PREVWL0VOT1NVUCBpbiB2ZXJ5DQo+IHNp bWlsYXINCj4gPiAtCQkJICogc2l0dWF0aW9ucyh2ZmlvIGVpdGhlciB1bnN1cHBvcnRlZCwgb3Ig c3VwcG9ydGVkDQo+ID4gLQkJCSAqIGJ1dCBubyBkZXZpY2VzIGZvdW5kKS4gRWl0aGVyIHdheSwg bm8gbWFwcGluZ3MgY291bGQNCj4gYmUNCj4gPiAtCQkJICogcGVyZm9ybWVkLiBXZSB0cmVhdCBp dCBhcyBub3JtYWwgY2FzZSBpbiBhc3luYyBwYXRoLg0KPiA+IC0JCQkgKi8NCj4gPiAtCQkJaWYg KHJ0ZV9lcnJubyA9PSBFTk9ERVYgfHwgcnRlX2Vycm5vID09IEVOT1RTVVApDQo+ID4gKwkJZm9y IChpID0gMDsgaSA8IGRldi0+bnJfZ3Vlc3RfcGFnZXM7IGkrKykgew0KPiA+ICsJCQlwYWdlID0g JmRldi0+Z3Vlc3RfcGFnZXNbaV07DQo+ID4gKwkJCXJldCA9DQo+ID4gcnRlX3ZmaW9fY29udGFp bmVyX2RtYV9tYXAoUlRFX1ZGSU9fREVGQVVMVF9DT05UQUlORVJfRkQsDQo+ID4gKwkJCQkJCQkg cGFnZS0NCj4gPmhvc3RfdXNlcl9hZGRyLA0KPiA+ICsJCQkJCQkJIHBhZ2UtDQo+ID5ob3N0X3Bo eXNfYWRkciwNCj4gPiArCQkJCQkJCSBwYWdlLT5zaXplKTsNCj4gPiArCQkJaWYgKHJldCkgew0K PiA+ICsJCQkJLyoNCj4gPiArCQkJCSAqIERNQSBkZXZpY2UgbWF5IGJpbmQgd2l0aCBrZXJuZWwg ZHJpdmVyLCBpbg0KPiB0aGlzDQo+ID4gY2FzZSwNCj4gPiArCQkJCSAqIHdlIGRvbid0IG5lZWQg dG8gcHJvZ3JhbSBJT01NVSBtYW51YWxseS4NCj4gSG93ZXZlciwNCj4gPiBpZiBubw0KPiA+ICsJ CQkJICogZGV2aWNlIGlzIGJvdW5kIHdpdGggdmZpby91aW8gaW4gRFBESywgYW5kDQo+IHZmaW8N Cj4gPiBrZXJuZWwNCj4gPiArCQkJCSAqIG1vZHVsZSBpcyBsb2FkZWQsIHRoZSBBUEkgd2lsbCBz dGlsbCBiZSBjYWxsZWQNCj4gYW5kDQo+ID4gcmV0dXJuDQo+ID4gKwkJCQkgKiB3aXRoIEVOT0RF Vi9FTk9TVVAuDQo+ID4gKwkJCQkgKg0KPiA+ICsJCQkJICogRFBESyB2ZmlvIG9ubHkgcmV0dXJu cyBFTk9ERVYvRU5PU1VQIGluDQo+IHZlcnkNCj4gPiBzaW1pbGFyDQo+ID4gKwkJCQkgKiBzaXR1 YXRpb25zKHZmaW8gZWl0aGVyIHVuc3VwcG9ydGVkLCBvcg0KPiBzdXBwb3J0ZWQNCj4gPiArCQkJ CSAqIGJ1dCBubyBkZXZpY2VzIGZvdW5kKS4gRWl0aGVyIHdheSwgbm8NCj4gbWFwcGluZ3MNCj4g PiBjb3VsZCBiZQ0KPiA+ICsJCQkJICogcGVyZm9ybWVkLiBXZSB0cmVhdCBpdCBhcyBub3JtYWwg Y2FzZSBpbg0KPiBhc3luYyBwYXRoLg0KPiA+ICsJCQkJICovDQo+ID4gKwkJCQlpZiAocnRlX2Vy cm5vID09IEVOT0RFViB8fCBydGVfZXJybm8gPT0NCj4gRU5PVFNVUCkNCj4gPiArCQkJCQlyZXR1 cm4gMDsNCj4gDQo+IEkgZG9uJ3QgdGhpbmsgdGhpcyBsb2dpYyBpcyBnb29kIGVub3VnaCB0byBv bmx5IGluY2x1ZGUgdGhlIGNhc2Ugb2Yga2VybmVsIGRyaXZlciArDQo+IHVubmVlZGVkIG1hcHBp bmcuIENvdWxkIGFsc28gYmUgdmZpbyBkcml2ZXIgKyBpbmNvcnJlY3QgbWFwcGluZy4gSXQncyBu b3QgZ29vZA0KPiB0byBhc3N1bWUgRU5PREVWIGFuZCBFTk9UU1VQIG9ubHkgY29tZXMgZnJvbSBE UERLLCBpdCBjb3VsZCBiZSBmcm9tDQo+IGtlcm5lbC4NCg0KVGhlIGNvZGUgaGVyZSBpcyBhIHdv cmthcm91bmQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGtlcm5lbCBkcml2ZXIsIHNpbmNlIHdlIGNh bid0DQprbm93IHRoZSBkZXZpY2UgZHJpdmVyIGluIHZob3N0IGZvciBub3cuIEluIGZhY3QsIHRo ZSBhcHByb3ByaWF0ZSBhcHByb2FjaCBmb3IganVzdGlmeWluZw0Kd2hldGhlciBwZXJmb3JtIG1h cHBpbmcgaGVyZSBzaG91bGQgYmFzZSBvbiB0aGUgZGV2aWNlIGRyaXZlci4NCg0KPiANCj4gPiAr DQo+ID4gKwkJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkRNQSBlbmdpbmUgbWFwDQo+IGZhaWxl ZFxuIik7DQo+ID4gKwkJCQkvKiBETUEgbWFwcGluZyBlcnJvcnMgd29uJ3Qgc3RvcA0KPiA+IFZI U1RfVVNFUl9TRVRfTUVNX1RBQkxFLiAqLw0KPiA+ICAJCQkJcmV0dXJuIDA7DQo+IA0KPiBJIHVu ZGVyc3RhbmQgdGhpcyBmdW5jdGlvbiBjb3ZlcnMgbWFueSBjYXNlcyBhbmQgaXQncyBkaWZmaWN1 bHQgdG8gZGlmZmVyZW50aWF0ZSwgU28NCj4geW91IGRvbid0IGNoZWNrIHRoZSByZXR1cm4gdmFs dWUgYnV0IHVzZSB0aGUgbG9nIGhlcmUgdG8gaW5mb3JtIHVzZXJzLg0KPiANCj4gSSBzdWdnZXN0 IHRvIHVzZSBhIFdBUk5JTkcgbG9nIChzaW5jZSB0aGlzIGNvdWxkIGZhaWwgd2l0aCBrZXJuZWwg ZHJpdmVyIGNhc2UgYnV0DQo+IGl0J3MgYWN0dWFsbHkgY29ycmVjdCkgYW5kIHByaW50IHRoZSBl cnJubyBpbmZvIGZvciB1c2Vycy4NCg0KVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24uIEFjY29y ZGluZ2x5LCBJIHdpbGwgdXBkYXRlIHRoZSBkb2MgdG8gaW5mb3JtIHVzZXIgc2hvdWxkDQp0YWtl IHdoaWNoIGFjdGlvbiBhY2NvcmRpbmcgdG8gZGlmZmVyZW50IHdhcm5pbmcgbWVzc2FnZS4NCg0K PiANCj4gTm90ZTogdGhpcyBpcyBvbmx5IGEgd29ya2Fyb3VuZCwgbm90IGEgcGVyZmVjdCBzb2x1 dGlvbi4gQnV0IHNpbmNlIHZob3N0IHdpdGgNCj4gZG1hZGV2IGlzIGluIHByb2dyZXNzIGFuZCBt b3N0IGxpa2VseSB2aG9zdCBsaWIgd2lsbCBhd2FyZSBvZiBkbWFkZXYgaWQuIFRoZQ0KPiBwcm9i bGVtIGNvdWxkIGJlIHNvbHZlZCBsYXRlciAoc29tZSBkbWFkZXYgYXBpIGNvdWxkIGJlIHVzZWQg dG8ga25vdyBWQS9QQQ0KPiBtb2RlIGFuZCBrZXJuZWwvdXNlciBkcml2ZXI/KQ0KIA0KV2l0aCBy dGVfaW92YV9tb2RlKCksIHdlIGNhbiBrbm93IGN1cnJlbnQgSU9WQSBtb2RlIGluIERQREsuIEl0 IHdpbGwgbm90IGFmZmVjdA0KdmZpbyBtYXBwaW5nIGJlY2F1c2UgYm91bmQgYSBkZXZpY2UgdG8g dmZpbyBhbHdheXMgcmVxdWlyZXMgbWFwcGluZy4gRm9yIGRtYWRldiwNCml0IGlzIHBvc3NpYmxl IHRvIGtub3cgY3VycmVudCBkcml2ZXIsIHNpbmNlIHRoZSBpbnRlZ3JhdGlvbiBmb3IgYXN5bmMg dmhvc3Qgd2l0aCBkbWFkZXYNCmlzIGluIHByb2dyZXNzLCBzbyBsZXQncyB1c2UgdGhpcyBzb2x1 dGlvbiBmb3Igbm93Lg0KDQo+IA0KPiA+IC0NCj4gPiAtCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIs ICJETUEgZW5naW5lIG1hcCBmYWlsZWRcbiIpOw0KPiA+IC0JCQkvKiBETUEgbWFwcGluZyBlcnJv cnMgd29uJ3Qgc3RvcA0KPiBWSFNUX1VTRVJfU0VUX01FTV9UQUJMRS4gKi8NCj4gPiAtCQkJcmV0 dXJuIDA7DQo+ID4gKwkJCX0NCj4gPiAgCQl9DQo+ID4NCj4gPiAgCX0gZWxzZSB7DQo+ID4gLQkJ LyogUmVtb3ZlIG1hcHBlZCByZWdpb24gZnJvbSB0aGUgZGVmYXVsdCBjb250YWluZXIgb2YgRFBE Sy4NCj4gKi8NCj4gPiAtCQlyZXQgPQ0KPiBydGVfdmZpb19jb250YWluZXJfZG1hX3VubWFwKFJU RV9WRklPX0RFRkFVTFRfQ09OVEFJTkVSX0ZELA0KPiA+IC0JCQkJCQkgICByZWdpb24tPmhvc3Rf dXNlcl9hZGRyLA0KPiA+IC0JCQkJCQkgICBob3N0X2lvdmEsDQo+ID4gLQkJCQkJCSAgIHJlZ2lv bi0+c2l6ZSk7DQo+ID4gLQkJaWYgKHJldCkgew0KPiA+IC0JCQkvKiBsaWtlIERNQSBtYXAsIGln bm9yZSB0aGUga2VybmVsIGRyaXZlciBjYXNlIHdoZW4NCj4gdW5tYXAuDQo+ID4gKi8NCj4gPiAt CQkJaWYgKHJ0ZV9lcnJubyA9PSBFSU5WQUwpDQo+ID4gLQkJCQlyZXR1cm4gMDsNCj4gPiArCQlm b3IgKGkgPSAwOyBpIDwgZGV2LT5ucl9ndWVzdF9wYWdlczsgaSsrKSB7DQo+ID4gKwkJCXBhZ2Ug PSAmZGV2LT5ndWVzdF9wYWdlc1tpXTsNCj4gPiArCQkJcmV0ID0NCj4gPiBydGVfdmZpb19jb250 YWluZXJfZG1hX3VubWFwKFJURV9WRklPX0RFRkFVTFRfQ09OVEFJTkVSX0ZELA0KPiA+ICsJCQkJ CQkJICAgcGFnZS0NCj4gPmhvc3RfdXNlcl9hZGRyLA0KPiA+ICsJCQkJCQkJICAgcGFnZS0NCj4g Pmhvc3RfcGh5c19hZGRyLA0KPiA+ICsJCQkJCQkJICAgcGFnZS0+c2l6ZSk7DQo+ID4gKwkJCWlm IChyZXQpIHsNCj4gPiArCQkJCS8qIGxpa2UgRE1BIG1hcCwgaWdub3JlIHRoZSBrZXJuZWwgZHJp dmVyIGNhc2UNCj4gd2hlbg0KPiA+IHVubWFwLiAqLw0KPiA+ICsJCQkJaWYgKHJ0ZV9lcnJubyA9 PSBFSU5WQUwpDQo+ID4gKwkJCQkJcmV0dXJuIDA7DQo+ID4NCj4gPiAtCQkJVkhPU1RfTE9HX0NP TkZJRyhFUlIsICJETUEgZW5naW5lIHVubWFwDQo+IGZhaWxlZFxuIik7DQo+ID4gLQkJCXJldHVy biByZXQ7DQo+ID4gKwkJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwgIkRNQSBlbmdpbmUNCj4gdW5t YXAgZmFpbGVkXG4iKTsNCj4gPiArCQkJCXJldHVybiByZXQ7DQo+IA0KPiBTYW1lIGhlcmUuDQo+ IA0KPiBBbmQgc2luY2UgeW91IGRvbid0IGNoZWNrIHJldHVybiB2YWx1ZSwgeW91IGNhbiBqdXN0 IGRvbid0IHJldHVybiBhbnl0aGluZyBhbmQNCj4gcmV0dXJuIHR5cGUgY2FuIGJlIHZvaWQNCg0K R29vZCBjYXRjaCwgcGxzIHNlZSBuZXh0IHZlcnNpb24uDQoNClRoYW5rcywNClh1YW4NCg0KPiAN Cj4gVGhhbmtzLA0KPiBDaGVuYm8NCj4gDQo+IA0KPiA+ICsJCQl9DQo+ID4gIAkJfQ0KPiA+ICAJ fQ0KPiA+DQo+ID4gQEAgLTIwNSwxMiArMjA4LDEyIEBAIGZyZWVfbWVtX3JlZ2lvbihzdHJ1Y3Qg dmlydGlvX25ldCAqZGV2KQ0KPiA+ICAJaWYgKCFkZXYgfHwgIWRldi0+bWVtKQ0KPiA+ICAJCXJl dHVybjsNCj4gPg0KPiA+ICsJaWYgKGRldi0+YXN5bmNfY29weSAmJiBydGVfdmZpb19pc19lbmFi bGVkKCJ2ZmlvIikpDQo+ID4gKwkJYXN5bmNfZG1hX21hcChkZXYsIGZhbHNlKTsNCj4gPiArDQo+ ID4gIAlmb3IgKGkgPSAwOyBpIDwgZGV2LT5tZW0tPm5yZWdpb25zOyBpKyspIHsNCj4gPiAgCQly ZWcgPSAmZGV2LT5tZW0tPnJlZ2lvbnNbaV07DQo+ID4gIAkJaWYgKHJlZy0+aG9zdF91c2VyX2Fk ZHIpIHsNCj4gPiAtCQkJaWYgKGRldi0+YXN5bmNfY29weSAmJiBydGVfdmZpb19pc19lbmFibGVk KCJ2ZmlvIikpDQo+ID4gLQkJCQlhc3luY19kbWFfbWFwKHJlZywgZmFsc2UpOw0KPiA+IC0NCj4g PiAgCQkJbXVubWFwKHJlZy0+bW1hcF9hZGRyLCByZWctPm1tYXBfc2l6ZSk7DQo+ID4gIAkJCWNs b3NlKHJlZy0+ZmQpOw0KPiA+ICAJCX0NCj4gPiBAQCAtOTc4LDcgKzk4MSw3IEBAIHZob3N0X3Vz ZXJfc2V0X3ZyaW5nX2Jhc2Uoc3RydWN0IHZpcnRpb19uZXQNCj4gPiAqKnBkZXYsDQo+ID4NCj4g PiAgc3RhdGljIGludA0KPiA+ICBhZGRfb25lX2d1ZXN0X3BhZ2Uoc3RydWN0IHZpcnRpb19uZXQg KmRldiwgdWludDY0X3QgZ3Vlc3RfcGh5c19hZGRyLA0KPiA+IC0JCSAgIHVpbnQ2NF90IGhvc3Rf cGh5c19hZGRyLCB1aW50NjRfdCBzaXplKQ0KPiA+ICsJCSAgIHVpbnQ2NF90IGhvc3RfcGh5c19h ZGRyLCB1aW50NjRfdCBob3N0X3VzZXJfYWRkciwgdWludDY0X3QNCj4gc2l6ZSkNCj4gPiAgew0K PiA+ICAJc3RydWN0IGd1ZXN0X3BhZ2UgKnBhZ2UsICpsYXN0X3BhZ2U7DQo+ID4gIAlzdHJ1Y3Qg Z3Vlc3RfcGFnZSAqb2xkX3BhZ2VzOw0KPiA+IEBAIC0xMDA5LDYgKzEwMTIsNyBAQCBhZGRfb25l X2d1ZXN0X3BhZ2Uoc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiB1aW50NjRfdCBndWVzdF9w aHlzX2FkZHIsDQo+ID4gIAlwYWdlID0gJmRldi0+Z3Vlc3RfcGFnZXNbZGV2LT5ucl9ndWVzdF9w YWdlcysrXTsNCj4gPiAgCXBhZ2UtPmd1ZXN0X3BoeXNfYWRkciA9IGd1ZXN0X3BoeXNfYWRkcjsN Cj4gPiAgCXBhZ2UtPmhvc3RfcGh5c19hZGRyICA9IGhvc3RfcGh5c19hZGRyOw0KPiA+ICsJcGFn ZS0+aG9zdF91c2VyX2FkZHIgPSBob3N0X3VzZXJfYWRkcjsNCj4gPiAgCXBhZ2UtPnNpemUgPSBz aXplOw0KPiA+DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiBAQCAtMTAyOCw3ICsxMDMyLDggQEAgYWRk X2d1ZXN0X3BhZ2VzKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdA0KPiA+IHJ0ZV92aG9z dF9tZW1fcmVnaW9uICpyZWcsDQo+ID4gIAlzaXplID0gcGFnZV9zaXplIC0gKGd1ZXN0X3BoeXNf YWRkciAmIChwYWdlX3NpemUgLSAxKSk7DQo+ID4gIAlzaXplID0gUlRFX01JTihzaXplLCByZWdf c2l6ZSk7DQo+ID4NCj4gPiAtCWlmIChhZGRfb25lX2d1ZXN0X3BhZ2UoZGV2LCBndWVzdF9waHlz X2FkZHIsIGhvc3RfcGh5c19hZGRyLCBzaXplKSA8DQo+IDApDQo+ID4gKwlpZiAoYWRkX29uZV9n dWVzdF9wYWdlKGRldiwgZ3Vlc3RfcGh5c19hZGRyLCBob3N0X3BoeXNfYWRkciwNCj4gPiArCQkJ ICAgICAgIGhvc3RfdXNlcl9hZGRyLCBzaXplKSA8IDApDQo+ID4gIAkJcmV0dXJuIC0xOw0KPiA+ DQo+ID4gIAlob3N0X3VzZXJfYWRkciAgKz0gc2l6ZTsNCj4gPiBAQCAtMTA0MCw3ICsxMDQ1LDcg QEAgYWRkX2d1ZXN0X3BhZ2VzKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdA0KPiA+IHJ0 ZV92aG9zdF9tZW1fcmVnaW9uICpyZWcsDQo+ID4gIAkJaG9zdF9waHlzX2FkZHIgPSBydGVfbWVt X3ZpcnQyaW92YSgodm9pZCAqKSh1aW50cHRyX3QpDQo+ID4gIAkJCQkJCSAgaG9zdF91c2VyX2Fk ZHIpOw0KPiA+ICAJCWlmIChhZGRfb25lX2d1ZXN0X3BhZ2UoZGV2LCBndWVzdF9waHlzX2FkZHIs IGhvc3RfcGh5c19hZGRyLA0KPiA+IC0JCQkJc2l6ZSkgPCAwKQ0KPiA+ICsJCQkJICAgICAgIGhv c3RfdXNlcl9hZGRyLCBzaXplKSA8IDApDQo+ID4gIAkJCXJldHVybiAtMTsNCj4gPg0KPiA+ICAJ CWhvc3RfdXNlcl9hZGRyICArPSBzaXplOw0KPiA+IEBAIC0xMjE1LDcgKzEyMjAsNiBAQCB2aG9z dF91c2VyX21tYXBfcmVnaW9uKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4gIAl1aW50NjRf dCBtbWFwX3NpemU7DQo+ID4gIAl1aW50NjRfdCBhbGlnbm1lbnQ7DQo+ID4gIAlpbnQgcG9wdWxh dGU7DQo+ID4gLQlpbnQgcmV0Ow0KPiA+DQo+ID4gIAkvKiBDaGVjayBmb3IgbWVtb3J5X3NpemUg KyBtbWFwX29mZnNldCBvdmVyZmxvdyAqLw0KPiA+ICAJaWYgKG1tYXBfb2Zmc2V0ID49IC1yZWdp b24tPnNpemUpIHsNCj4gPiBAQCAtMTI3NCwxNCArMTI3OCw2IEBAIHZob3N0X3VzZXJfbW1hcF9y ZWdpb24oc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiAgCQkJVkhPU1RfTE9HX0NPTkZJRyhF UlIsICJhZGRpbmcgZ3Vlc3QgcGFnZXMgdG8NCj4gcmVnaW9uIGZhaWxlZC5cbiIpOw0KPiA+ICAJ CQlyZXR1cm4gLTE7DQo+ID4gIAkJfQ0KPiA+IC0NCj4gPiAtCQlpZiAocnRlX3ZmaW9faXNfZW5h YmxlZCgidmZpbyIpKSB7DQo+ID4gLQkJCXJldCA9IGFzeW5jX2RtYV9tYXAocmVnaW9uLCB0cnVl KTsNCj4gPiAtCQkJaWYgKHJldCkgew0KPiA+IC0JCQkJVkhPU1RfTE9HX0NPTkZJRyhFUlIsICJD b25maWd1cmUgSU9NTVUNCj4gZm9yIERNQSBlbmdpbmUNCj4gPiBmYWlsZWRcbiIpOw0KPiA+IC0J CQkJcmV0dXJuIC0xOw0KPiA+IC0JCQl9DQo+ID4gLQkJfQ0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlW SE9TVF9MT0dfQ09ORklHKElORk8sDQo+ID4gQEAgLTE0MjAsNiArMTQxNiw5IEBAIHZob3N0X3Vz ZXJfc2V0X21lbV90YWJsZShzdHJ1Y3QgdmlydGlvX25ldA0KPiA+ICoqcGRldiwgc3RydWN0IFZo b3N0VXNlck1zZyAqbXNnLA0KPiA+ICAJCWRldi0+bWVtLT5ucmVnaW9ucysrOw0KPiA+ICAJfQ0K PiA+DQo+ID4gKwlpZiAoZGV2LT5hc3luY19jb3B5ICYmIHJ0ZV92ZmlvX2lzX2VuYWJsZWQoInZm aW8iKSkNCj4gPiArCQlhc3luY19kbWFfbWFwKGRldiwgdHJ1ZSk7DQo+ID4gKw0KPiA+ICAJaWYg KHZob3N0X3VzZXJfcG9zdGNvcHlfcmVnaXN0ZXIoZGV2LCBtYWluX2ZkLCBtc2cpIDwgMCkNCj4g PiAgCQlnb3RvIGZyZWVfbWVtX3RhYmxlOw0KPiA+DQo+ID4gLS0NCj4gPiAyLjE3LjENCg0K