Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp1182079imb; Sat, 2 Mar 2019 05:56:37 -0800 (PST) X-Google-Smtp-Source: APXvYqzaUosyBUitHDCip7fGytxh3HJD+eaLMIqY+29nqfdOXVlkGrGuIY5Drl2jTTaASqYDRqAO X-Received: by 2002:a17:902:6684:: with SMTP id e4mr10956204plk.90.1551534997439; Sat, 02 Mar 2019 05:56:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551534997; cv=none; d=google.com; s=arc-20160816; b=FiHl9Yohk7abs0Q4tHPb95n1n9bp4cBrPS1EXyZ9ut7C0VSLqkUcHmiAJnIsMMIQjK j5FZKgBDZaE2Hk/MrFyhHfBnYB0KX+bB1jaoCM5VH6vf4LP2Lra4MIGpvBpxXEP3vZ4k z9MoTH0L4la/GBpGQMfkg9XNIQR1CUjaZxYx/umow8qtH+1LwNAxzk0iQQzrQ1X9XbGB pqlPSzynMtPwJUHP2LIRjV/R1ahp1aTKDzVpNGRoVHdWttldiH+94pO3ii3PVWhBFeVZ ENXFt4xKgrJyBsgSjYRoWNf3bavQqHeYANxOHfKDiTAN4FaG9P6PWw6dOQzrvvsgXnQJ ecxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender: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; bh=J2XtwoDe+A9DhM99DdpQLjpj7UMgRlhs/k4f5hp39Dk=; b=X+56SscvAcvoH6OKkTclKzLLDN4ZYM92MRfC0Fjld5WxDiPNFXa/k04OXUBhvbVeyn Pf9HxtFIa0JTgpmfxaE13W/glNPzt5lpmUtlS0LieVeb/W/ZZ3J7AyDW9kZV6AGvXkJx AUOCBO0RFtRCy9K02isvywVmQOSfBgHbSx2v/CiThrr/0zT30WM6LSYnU57zStEmKPnt QjaF+4Q7OSd8l01hFlzYF2Dk859KmWsYg+uu3VXJT4xa4kChSV6CwV7BJd/nIbgUuk9C t7zqfuHcrNprBM8noWqh0e7gBJKbZoAZv+5QUrI3inmLToaIF4jMxaWY/FDNEiZO6Tg0 MFMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=oWoAu67M; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r7si721137pgi.20.2019.03.02.05.56.21; Sat, 02 Mar 2019 05:56:37 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=oWoAu67M; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726362AbfCBN4B (ORCPT + 99 others); Sat, 2 Mar 2019 08:56:01 -0500 Received: from mail-eopbgr20069.outbound.protection.outlook.com ([40.107.2.69]:14734 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726044AbfCBN4A (ORCPT ); Sat, 2 Mar 2019 08:56:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J2XtwoDe+A9DhM99DdpQLjpj7UMgRlhs/k4f5hp39Dk=; b=oWoAu67M3H+JOZH9JKLdPPQDE/HJFohAHPxY6c2zsz/KfrTh9yk7/ui+/JZZ6xE9XyQcJKC15rSZyfqfXEW0M2utMIk1bGw/wrdbBwKVZdD+A/Po6xiiEMze/AL5REHxVEhrgKa7pLW2Y+7PhZ7Vp2rm19vfSD6vPvZkZFxDCmg= Received: from AM0PR04MB4481.eurprd04.prod.outlook.com (52.135.147.15) by AM0PR04MB4226.eurprd04.prod.outlook.com (52.134.91.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.16; Sat, 2 Mar 2019 13:55:55 +0000 Received: from AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::a51f:134d:b530:f185]) by AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::a51f:134d:b530:f185%5]) with mapi id 15.20.1665.019; Sat, 2 Mar 2019 13:55:55 +0000 From: Peng Fan To: Dennis Zhou , Tejun Heo , Christoph Lameter CC: Vlad Buslov , "kernel-team@fb.com" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 05/12] percpu: relegate chunks unusable when failing small allocations Thread-Topic: [PATCH 05/12] percpu: relegate chunks unusable when failing small allocations Thread-Index: AQHUzwv3B7bPPhTIqESPGGL2rz7Di6X4X1uA Date: Sat, 2 Mar 2019 13:55:54 +0000 Message-ID: References: <20190228021839.55779-1-dennis@kernel.org> <20190228021839.55779-6-dennis@kernel.org> In-Reply-To: <20190228021839.55779-6-dennis@kernel.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 52eebccd-8d72-4532-c6e5-08d69f16ca49 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM0PR04MB4226; x-ms-traffictypediagnostic: AM0PR04MB4226: x-microsoft-exchange-diagnostics: =?gb2312?B?MTtBTTBQUjA0TUI0MjI2OzIzOm1qS21HUTJFWEtoM05Ja0kwK2FzWkFBVGF6?= =?gb2312?B?azd3UmprdEUvV0NUUzJmUzRrQzlqcGk3U2NXSFNzeE1GY3hWV29Kc2M5THJv?= =?gb2312?B?TllVenVPYUpPb0V3aWliejJYQ2xSWE02RGpvdFFIWS9oUFdZTEdVNXJpV1hu?= =?gb2312?B?elBEOHd0aldFaklsV1piNitoRzgvTDhpbDdDZDdDbEF6Ymtoc3dwQjJXUzk2?= =?gb2312?B?czlocithZGR4TTAzMzJWRGQ4WkNacEJmSDBpNGM0VktKRW5wQ1JyU25VOVlF?= =?gb2312?B?elZ2RC9pMXc1bjY2V2QremhBUm5TME91OCs1VldHMFI0R1pqRFRQQ1lvL1lT?= =?gb2312?B?Tm9ydzFsK0RlL29kYmV4Y2lOc1ZVYVNNQnB3UHQ2dHZVU1ZHUmVDSWc3UTM2?= =?gb2312?B?VGJsUTdxTU1TTzNlSGFzUVEwSk9NMmVyQUpCRFdWVmNzNklxeU92aVJsQTNa?= =?gb2312?B?MGl3V2JKb1J1aDF3T0NwUXo1Sk96Yjg2ZGRuV0lBS2wvT0JWTktNc2hHNmtl?= =?gb2312?B?cTBEUHVNSmJOV0E0YzMzTDc3YXQyOGowa0VWU0V3d0VRUTgxZWFHc1NQSkFx?= =?gb2312?B?WXlMTnRTVEZSejR0VkVMWlBFVUhHblV5QStKeUF5NFF1Qkw3SFNKQ2RBN1R0?= =?gb2312?B?TFowUWZpVHJyYTNpUGVNNmhaYUNjU3NDVlZqQk5qQmxkV2ZtUmM3cC9PRG1U?= =?gb2312?B?bERQVlpiMXhlMHFGbWhZYkRQSmE2MnZzVklxVUdTWC9BVnBCNmlwdmlNRXQ5?= =?gb2312?B?Wk5hZFZiSGx1V0lqbFpXSUxZQVlKWUlmR0ZoSjU2TWFvSWd6Sjl5ZkdYTS9x?= =?gb2312?B?bkpqRG5aRXltWG1PZlpITVAyMWoyZ1hzU0JBNVY5cGJkQVNqODB6S2hpRDV6?= =?gb2312?B?WWJCV00wdGJvU0VwYVFNVGlxY0MwWjI2QXBzT0dlalRKOExMOFJSMU5sWmhO?= =?gb2312?B?UzhYQ2E2bFcwT3QwQUlYOElOS2tFYzBQUC8zVDc4aUlBd2JuS2FpZ2lCMGx3?= =?gb2312?B?RmFEU0E3QWhyb1BNVDEvL2NySDFuMU5ITElJUk02a0J2aTd5d1JJWmRjdkVV?= =?gb2312?B?c252K0dHbmhCaFArZCs4d1AwcXM5VTUraFppaERxQTFWN0x4VEdEblFXVS8v?= =?gb2312?B?MUM5UFZvT1Fqb1ROZXVJWGZBUERadHgvWS91U2pkMGZ0eG1VYU4rUVI1Y0xp?= =?gb2312?B?dWdnUVY5WXFuM1dQUUpTK0J6VERhVjBydlRBS2FNSXZia3RrQU42SVFoSHM3?= =?gb2312?B?RGZSR3hYUUFyY1lNM0dVWVVxdEtYQlVlQzFmSGlMT3hYUnZmeS9oUCtxS1pt?= =?gb2312?B?YW1TUDJjbWg4c1BuT2R6eE9Feldod1ZsN3pqMVhqNlFnTlpIcEhuT0RFMjJq?= =?gb2312?B?N0xVN1lSRFRxZS81NVZqNE1udCtBZHZmZ1krMytWOFZmbm5pUVVQR1lFQ0JT?= =?gb2312?B?NHhPdDVSNVpPZVArZEQvb3F5M2dTcTk0d2RFT1FCTlFBQ3duTndCWkx6cFdm?= =?gb2312?B?N2FYSGVDTkdnN1hmVVNCWWhTUFZhUFJPMGZoZHlVZXZOM1BYd2ZWREl4S05Q?= =?gb2312?B?VDNGS1FxNWYxTjVMRTZ1Z0xVUXl2WU0xRXpwNmt3WjlFSW1KK1RmNjBYM3FK?= =?gb2312?B?N2YwNU1KZTJuN2UrS3dyak1aeERpV2c1UEJaVnpuWmxGL1JSdk41aHFwN1ZX?= =?gb2312?B?TU9SQnJTdEJVMnpZQUhqTnNkV3QzOE5JZTF5NjhzZU95eFlQL2d5ZzY3dk5X?= =?gb2312?B?ZFlvZ3ZjK0NWZERPQ3l1dz09?= x-microsoft-antispam-prvs: x-forefront-prvs: 09645BAC66 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(136003)(376002)(396003)(39860400002)(346002)(199004)(189003)(13464003)(9686003)(55016002)(305945005)(26005)(76176011)(229853002)(7696005)(33656002)(316002)(53546011)(66066001)(6246003)(7736002)(5660300002)(53936002)(6506007)(105586002)(106356001)(99286004)(68736007)(186003)(6436002)(52536013)(25786009)(446003)(3846002)(8936002)(6116002)(8676002)(81156014)(81166006)(97736004)(74316002)(54906003)(14444005)(71190400001)(4326008)(71200400001)(102836004)(478600001)(86362001)(11346002)(476003)(44832011)(110136005)(2906002)(486006)(256004)(14454004);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR04MB4226;H:AM0PR04MB4481.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 2kVn5erfSjQAobq3iIkiXafSHg/PqMWTa7lcpcaSZgFDriC8fVRSTH7ezeVkCeD1OQMR+bRJxkqbuA9kYdHeP9ULcIYikwghqfVgSJuSbpFFS59YPlrxyA2sk+Oje6Y+BaLrhbe/oDFFtCARIJh1u8LxaIUooAzkn00OYtz56SLOpX+y1UrdYGwrtGQh8oZPTfro8vq9hWYwJmA12l8M5i1f7snTjs5GBDwrr0no6/e2wCFW971/u0nkQgIJUGPLJwcp7xFP7KKVY/9e9xUfnxLJ0vos1WFTIb2JUBQK98HWB2kz5Nh0LiC56hnSgWaYR298C7blkbUzh2L70PemwHf61sTDCVaVORxSg981CZuBR8Usex17OPg7kN+IsdApPMS0JJa1VfYkoQ7lllK1A6C5EA5mE5wjoGCMqe/p8H8= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52eebccd-8d72-4532-c6e5-08d69f16ca49 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2019 13:55:55.0072 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4226 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgRGVubmlzLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IG93bmVy LWxpbnV4LW1tQGt2YWNrLm9yZyBbbWFpbHRvOm93bmVyLWxpbnV4LW1tQGt2YWNrLm9yZ10gT24N Cj4gQmVoYWxmIE9mIERlbm5pcyBaaG91DQo+IFNlbnQ6IDIwMTnE6jLUwjI4yNUgMTA6MTkNCj4g VG86IERlbm5pcyBaaG91IDxkZW5uaXNAa2VybmVsLm9yZz47IFRlanVuIEhlbyA8dGpAa2VybmVs Lm9yZz47IENocmlzdG9waA0KPiBMYW1ldGVyIDxjbEBsaW51eC5jb20+DQo+IENjOiBWbGFkIEJ1 c2xvdiA8dmxhZGJ1QG1lbGxhbm94LmNvbT47IGtlcm5lbC10ZWFtQGZiLmNvbTsNCj4gbGludXgt bW1Aa3ZhY2sub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFtQ QVRDSCAwNS8xMl0gcGVyY3B1OiByZWxlZ2F0ZSBjaHVua3MgdW51c2FibGUgd2hlbiBmYWlsaW5n IHNtYWxsDQo+IGFsbG9jYXRpb25zDQo+IA0KPiBJbiBjZXJ0YWluIGNhc2VzLCByZXF1ZXN0b3Jz IG9mIHBlcmNwdSBtZW1vcnkgbWF5IHdhbnQgc3BlY2lmaWMgYWxpZ25tZW50cy4NCj4gSG93ZXZl ciwgaXQgaXMgcG9zc2libGUgdG8gZW5kIHVwIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGNvbnRp Z19oaW50IG1hdGNoZXMsDQo+IGJ1dCB0aGUgYWxpZ25tZW50IGRvZXMgbm90LiBUaGlzIGNhdXNl cyBleGNlc3Mgc2Nhbm5pbmcgb2YgY2h1bmtzIHRoYXQgd2lsbCBmYWlsLg0KPiBUbyBwcmV2ZW50 IHRoaXMsIGlmIGEgc21hbGwgYWxsb2NhdGlvbiBmYWlscyAoPCAzMkIpLCB0aGUgY2h1bmsgaXMg bW92ZWQgdG8gdGhlDQo+IGVtcHR5IGxpc3QuIE9uY2UgYW4gYWxsb2NhdGlvbiBpcyBmcmVlZCBm cm9tIHRoYXQgY2h1bmssIGl0IGlzIHBsYWNlZCBiYWNrIGludG8NCj4gcm90YXRpb24uDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBEZW5uaXMgWmhvdSA8ZGVubmlzQGtlcm5lbC5vcmc+DQo+IC0tLQ0K PiAgbW0vcGVyY3B1LmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0K PiAgMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvbW0vcGVyY3B1LmMgYi9tbS9wZXJjcHUuYw0KPiBpbmRleCBjOTk2YmNm ZmJiMmEuLjNkN2RlZWNlOTU1NiAxMDA2NDQNCj4gLS0tIGEvbW0vcGVyY3B1LmMNCj4gKysrIGIv bW0vcGVyY3B1LmMNCj4gQEAgLTk0LDYgKzk0LDggQEANCj4gDQo+ICAvKiB0aGUgc2xvdHMgYXJl IHNvcnRlZCBieSBmcmVlIGJ5dGVzIGxlZnQsIDEtMzEgYnl0ZXMgc2hhcmUgdGhlIHNhbWUgc2xv dCAqLw0KPiAgI2RlZmluZSBQQ1BVX1NMT1RfQkFTRV9TSElGVAkJNQ0KPiArLyogY2h1bmtzIGlu IHNsb3RzIGJlbG93IHRoaXMgYXJlIHN1YmplY3QgdG8gYmVpbmcgc2lkZWxpbmVkIG9uIGZhaWxl ZCBhbGxvYyAqLw0KPiArI2RlZmluZSBQQ1BVX1NMT1RfRkFJTF9USFJFU0hPTEQJMw0KPiANCj4g ICNkZWZpbmUgUENQVV9FTVBUWV9QT1BfUEFHRVNfTE9XCTINCj4gICNkZWZpbmUgUENQVV9FTVBU WV9QT1BfUEFHRVNfSElHSAk0DQo+IEBAIC00ODgsNiArNDkwLDIyIEBAIHN0YXRpYyB2b2lkIHBj cHVfbWVtX2ZyZWUodm9pZCAqcHRyKQ0KPiAgCWt2ZnJlZShwdHIpOw0KPiAgfQ0KPiANCj4gK3N0 YXRpYyB2b2lkIF9fcGNwdV9jaHVua19tb3ZlKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgaW50 IHNsb3QsDQo+ICsJCQkgICAgICBib29sIG1vdmVfZnJvbnQpDQo+ICt7DQo+ICsJaWYgKGNodW5r ICE9IHBjcHVfcmVzZXJ2ZWRfY2h1bmspIHsNCj4gKwkJaWYgKG1vdmVfZnJvbnQpDQo+ICsJCQls aXN0X21vdmUoJmNodW5rLT5saXN0LCAmcGNwdV9zbG90W3Nsb3RdKTsNCj4gKwkJZWxzZQ0KPiAr CQkJbGlzdF9tb3ZlX3RhaWwoJmNodW5rLT5saXN0LCAmcGNwdV9zbG90W3Nsb3RdKTsNCj4gKwl9 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHBjcHVfY2h1bmtfbW92ZShzdHJ1Y3QgcGNwdV9j aHVuayAqY2h1bmssIGludCBzbG90KSB7DQo+ICsJX19wY3B1X2NodW5rX21vdmUoY2h1bmssIHNs b3QsIHRydWUpOw0KPiArfQ0KPiArDQo+ICAvKioNCj4gICAqIHBjcHVfY2h1bmtfcmVsb2NhdGUg LSBwdXQgY2h1bmsgaW4gdGhlIGFwcHJvcHJpYXRlIGNodW5rIHNsb3QNCj4gICAqIEBjaHVuazog Y2h1bmsgb2YgaW50ZXJlc3QNCj4gQEAgLTUwNSwxMiArNTIzLDggQEAgc3RhdGljIHZvaWQgcGNw dV9jaHVua19yZWxvY2F0ZShzdHJ1Y3QgcGNwdV9jaHVuaw0KPiAqY2h1bmssIGludCBvc2xvdCkg IHsNCj4gIAlpbnQgbnNsb3QgPSBwY3B1X2NodW5rX3Nsb3QoY2h1bmspOw0KPiANCj4gLQlpZiAo Y2h1bmsgIT0gcGNwdV9yZXNlcnZlZF9jaHVuayAmJiBvc2xvdCAhPSBuc2xvdCkgew0KPiAtCQlp ZiAob3Nsb3QgPCBuc2xvdCkNCj4gLQkJCWxpc3RfbW92ZSgmY2h1bmstPmxpc3QsICZwY3B1X3Ns b3RbbnNsb3RdKTsNCj4gLQkJZWxzZQ0KPiAtCQkJbGlzdF9tb3ZlX3RhaWwoJmNodW5rLT5saXN0 LCAmcGNwdV9zbG90W25zbG90XSk7DQo+IC0JfQ0KPiArCWlmIChvc2xvdCAhPSBuc2xvdCkNCj4g KwkJX19wY3B1X2NodW5rX21vdmUoY2h1bmssIG5zbG90LCBvc2xvdCA8IG5zbG90KTsNCj4gIH0N Cj4gDQo+ICAvKioNCj4gQEAgLTEzODEsNyArMTM5NSw3IEBAIHN0YXRpYyB2b2lkIF9fcGVyY3B1 ICpwY3B1X2FsbG9jKHNpemVfdCBzaXplLCBzaXplX3QNCj4gYWxpZ24sIGJvb2wgcmVzZXJ2ZWQs DQo+ICAJYm9vbCBpc19hdG9taWMgPSAoZ2ZwICYgR0ZQX0tFUk5FTCkgIT0gR0ZQX0tFUk5FTDsN Cj4gIAlib29sIGRvX3dhcm4gPSAhKGdmcCAmIF9fR0ZQX05PV0FSTik7DQo+ICAJc3RhdGljIGlu dCB3YXJuX2xpbWl0ID0gMTA7DQo+IC0Jc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rOw0KPiArCXN0 cnVjdCBwY3B1X2NodW5rICpjaHVuaywgKm5leHQ7DQo+ICAJY29uc3QgY2hhciAqZXJyOw0KPiAg CWludCBzbG90LCBvZmYsIGNwdSwgcmV0Ow0KPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+IEBA IC0xNDQzLDExICsxNDU3LDE0IEBAIHN0YXRpYyB2b2lkIF9fcGVyY3B1ICpwY3B1X2FsbG9jKHNp emVfdCBzaXplLA0KPiBzaXplX3QgYWxpZ24sIGJvb2wgcmVzZXJ2ZWQsDQo+ICByZXN0YXJ0Og0K PiAgCS8qIHNlYXJjaCB0aHJvdWdoIG5vcm1hbCBjaHVua3MgKi8NCj4gIAlmb3IgKHNsb3QgPSBw Y3B1X3NpemVfdG9fc2xvdChzaXplKTsgc2xvdCA8IHBjcHVfbnJfc2xvdHM7IHNsb3QrKykgew0K PiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNodW5rLCAmcGNwdV9zbG90W3Nsb3RdLCBsaXN0KSB7 DQo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjaHVuaywgbmV4dCwgJnBjcHVfc2xvdFtz bG90XSwgbGlzdCkgew0KPiAgCQkJb2ZmID0gcGNwdV9maW5kX2Jsb2NrX2ZpdChjaHVuaywgYml0 cywgYml0X2FsaWduLA0KPiAgCQkJCQkJICBpc19hdG9taWMpOw0KPiAtCQkJaWYgKG9mZiA8IDAp DQo+ICsJCQlpZiAob2ZmIDwgMCkgew0KPiArCQkJCWlmIChzbG90IDwgUENQVV9TTE9UX0ZBSUxf VEhSRVNIT0xEKQ0KPiArCQkJCQlwY3B1X2NodW5rX21vdmUoY2h1bmssIDApOw0KPiAgCQkJCWNv bnRpbnVlOw0KPiArCQkJfQ0KPiANCj4gIAkJCW9mZiA9IHBjcHVfYWxsb2NfYXJlYShjaHVuaywg Yml0cywgYml0X2FsaWduLCBvZmYpOw0KPiAgCQkJaWYgKG9mZiA+PSAwKQ0KDQpGb3IgdGhlIGNv ZGU6IFJldmlld2VkLWJ5OiBQZW5nIEZhbiA8cGVuZy5mYW5AbnhwLmNvbT4NCg0KQnV0IEkgZGlk IG5vdCB1bmRlcnN0YW5kIHdlbGwgd2h5IGNob29zZSAzMkI/IElmIHRoZXJlIGFyZQ0KbW9yZSBp bmZvcm1hdGlvbiwgYmV0dGVyIHB1dCBpbiBjb21taXQgbG9nLg0KDQpUaGFua3MsDQpQZW5nLg0K DQoNCj4gLS0NCj4gMi4xNy4xDQoNCg==