From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2B66EE7FF4 for ; Mon, 11 Sep 2023 16:13:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FBFF6B0295; Mon, 11 Sep 2023 12:13:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6ABFE6B0296; Mon, 11 Sep 2023 12:13:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5C2746B0297; Mon, 11 Sep 2023 12:13:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 4FD256B0295 for ; Mon, 11 Sep 2023 12:13:13 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 2DACFA02EE for ; Mon, 11 Sep 2023 16:13:13 +0000 (UTC) X-FDA: 81224811066.24.B89FC2D Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.86.151]) by imf24.hostedemail.com (Postfix) with ESMTP id 13B6E180016 for ; Mon, 11 Sep 2023 16:13:08 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=aculab.com; spf=pass (imf24.hostedemail.com: domain of david.laight@aculab.com designates 185.58.86.151 as permitted sender) smtp.mailfrom=david.laight@aculab.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694448790; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ENgnFt4L6Srg3EEgUju5c0IHLPQqBT6O2V74HEC4peU=; b=bBA0P4xzoFRF9KfgetqYcjMeeMoUDiXV+Y+j7vsuFXWVf6PhsunXUV7y0jhewVm5MUt8vK wXpgBTPfZdXO6G66u6VnysUhs4Megr1Q7+nFN30Yp/iTv0aHf+GHo8SPmUNimsNXkaFNOu kPEyri31b9m3PceiaFNtQl8ZYLRzfUI= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=aculab.com; spf=pass (imf24.hostedemail.com: domain of david.laight@aculab.com designates 185.58.86.151 as permitted sender) smtp.mailfrom=david.laight@aculab.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694448790; a=rsa-sha256; cv=none; b=eBrxjQvgOWkwj1+lZNwrc9z2R0UrikNH4pXoSg9tQWVvISctiTt9vUEhK64q35uC3tLYBW RACgHgLh0/mLUHlRCR+d2biusXEh+g0lImLi5e+4p24hqgONITl/TNSXO9vomNuT9aYWOY 5Z4RqB6FcBg2alk3MXpAiKpPQ5re9XY= Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with both STARTTLS and AUTH (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mta-285-mYiHEOWIMmCSSS6iWUQVLQ-1; Mon, 11 Sep 2023 17:12:55 +0100 X-MC-Unique: mYiHEOWIMmCSSS6iWUQVLQ-1 Received: from AcuMS.Aculab.com (10.202.163.4) by AcuMS.aculab.com (10.202.163.4) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Mon, 11 Sep 2023 17:12:43 +0100 Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi id 15.00.1497.048; Mon, 11 Sep 2023 17:12:43 +0100 From: David Laight To: 'Vlastimil Babka' , 'Kees Cook' CC: "linux-kernel@vger.kernel.org" , "'linux-mm@kvack.org'" , 'Christoph Lameter' , 'Pekka Enberg' , 'David Rientjes' , 'Joonsoo Kim' , "'Andrew Morton'" , 'Eric Dumazet' , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Roman Gushchin Subject: RE: Subject: [PATCH v2] slab: kmalloc_size_roundup() must not return 0 for non-zero size Thread-Topic: Subject: [PATCH v2] slab: kmalloc_size_roundup() must not return 0 for non-zero size Thread-Index: Adnhh8rbtLpHk7QBQE+HpPR0NWDZ5gAMq8SAABymU5AApLGGAAACRmZQ Date: Mon, 11 Sep 2023 16:12:43 +0000 Message-ID: <1bf41b7c8d7c428c8bfb5504ec9f680e@AcuMS.aculab.com> References: <4d31a2bf7eb544749023cf491c0eccc8@AcuMS.aculab.com> <202309071235.CB4F6B2@keescook> <20ca0a567a874052a1161e9be0870463@AcuMS.aculab.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Rspamd-Queue-Id: 13B6E180016 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: ozntgqkers14fdd1ctird4qa57dzjp9j X-HE-Tag: 1694448788-685293 X-HE-Meta: U2FsdGVkX18YU6mdhDIUyWcrUL6FuqyFW+fJQ/fWPHY5bI2uBoATOe8wAFwXTJu2aDzh3+DSLoLlrzHRGKuYjlEuz9abc4EcIoFT461c+PX/ka+iKSwvAmmAVHxdGBy4eo4YF+YFFhfG0YFpNjQEjh+YM2l5KXb0CdbTJJv/Yn8TJoF2KXAT6C7MYGJO7W9ljQOkvrOigM/F2OVY3GUFPNaOTL6wDvNgHa9N1Dqt/g0mhSCy+Hu4pJID9KD1nNfzr1qGiBymDidcEzcdHf20c/nPl73yGjFkzIigTdLF/hUNF9pVfaTYt1YEUm4sJ5pTQQqGH8zuX8wRF5sIoZZM4UpjIVW33hqkoCwOB8eFAPT5gLnn6xxFosgCv8U/qBYBbPTisycf8nUHlHh9kgk7Z+B5xKF1BEs2UdZ5VlwK6FlUR+F/J6MqKoUeOdiTrhHrPsqRLrXGrygsUg1UoEiWHOg280+gO2VhQLBBa+QhpDHBb29M8c5DUvnAKo0LWTY2J2HrHF/9dw7CtJNPuUZyl22B04NjrK2O/R0o3e9IiRPmxVu6vJ0nzvzMtFpB1bMwg8aiSDWhDHe8osMbUKaIOQMVxua17a+jrzI70ESSumY/yEVCuCghch9W9dfDhsO6bHmTXtWHy6AmooemeNFzcNmrt7YncKww3zVvzq+nS2IfRWr4qOLwCyZpRybuNEgnH5X2vYUKvLCSWZ/v2fisY2W4BsPyX0990eG5hpY3cZG/tMT0tioVqeXoiM3Z3vckvMvVKsjIdWNnstD9SWDRH6yIPGe/cta8pgUevj2ROdlWVVvGd6m3jb/2bW9edcsu53/0G3Bw57pEpy6QFTTVVkgMJnWA0X3eEyQIE9g5xJCyNQB/CIjDLrbdtCWmH9fyAW6lqDjTrSJ36R2DhxTBxfAAnbJj0ugSxVXVcUOqHSyLQsPaLt6FnfnxAoyDX7UVCC3ubEd6UQJEO5wQE3x jAlhBtnW M4kk7dIaNwCOPW0C4mmhx2cnKWWg36PzzAMB/J7cgJU/+EHn2tTgumqwPnIL6eWDEywzqAdHKhF+AM4a+wINv283y2DtqaWuwAZo2JWXCISY/T0q7cT+gV7aG617gZ9Axn/LknSJyo4cGK3mUE4ASA4damr2JQQ9gTQ7Q+RG0/gKQe0ez/GNGqQAzawG/juVJlWDYvESTJSsIMPEA+i0jJ3DDhEGLz4bcjPhllQY4pp7yN374ybJftIrOb9m0ZfBHGIGU+Ww0BD3Qb4xata6Nq3F1Ax6hSllh+8QTnyNqE56Hl2DkLc+X2wHqO3dxMPUkpVHTbNAxhn22xbwSPqNw1zh2dOmFGG0ENuNE+aBYBPeywTDKeNJrCsoQHdWkC64e/FaAUAhf9rZbeslGwWc7UgSVonOtf96SelhkUFe1BDxH4//CtgU+yiq8XlzA5cm4f5ZLz9a7rdiwLjWZpNlK9Qmc0iU9NcMdxddzorOH3OhXf9foAVa76iWbrA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: RnJvbTogVmxhc3RpbWlsIEJhYmthDQo+IFNlbnQ6IDExIFNlcHRlbWJlciAyMDIzIDE2OjU0DQo+ IA0KPiBPbiA5LzgvMjMgMTA6MjYsIERhdmlkIExhaWdodCB3cm90ZToNCj4gPiBGcm9tOiBLZWVz IENvb2sNCj4gPj4gU2VudDogMDcgU2VwdGVtYmVyIDIwMjMgMjA6MzgNCj4gPj4NCj4gPj4gT24g VGh1LCBTZXAgMDcsIDIwMjMgYXQgMTI6NDI6MjBQTSArMDAwMCwgRGF2aWQgTGFpZ2h0IHdyb3Rl Og0KPiA+PiA+IFRoZSB0eXBpY2FsIHVzZSBvZiBrbWFsbG9jX3NpemVfcm91bmR1cCgpIGlzOg0K PiA+PiA+IAlwdHIgPSBrbWFsbG9jKHN6ID0ga21hbGxvY19zaXplX3JvdW5kdXAoc2l6ZSksIC4u Lik7DQo+ID4+ID4gCWlmICghcHRyKSByZXR1cm4gLUVOT01FTS4NCj4gPj4gPiBUaGlzIG1lYW5z IGl0IGlzIHZpdGFsbHkgaW1wb3J0YW50IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIGlzbid0DQo+ ID4+ID4gbGVzcyB0aGFuIHRoZSBhcmd1bWVudCBldmVuIGlmIHRoZSBhcmd1bWVudCBpcyBpbnNh bmUuDQo+ID4+ID4gSW4gcGFydGljdWxhciBpZiBrbWFsbG9jX3NsYWIoKSBmYWlscyBvciB0aGUg dmFsdWUgaXMgYWJvdmUNCj4gPj4gPiAoTUFYX1VMT05HIC0gUEFHRV9TSVpFKSB6ZXJvIGlzIHJl dHVybmVkIGFuZCBrbWFsbG9jKCkgd2lsbCByZXR1cm4NCj4gPj4gPiBpdCdzIHNpbmdsZSB6ZXJv LWxlbmd0aCBidWZmZXIuDQo+ID4+ID4NCj4gPj4gPiBGaXggYnkgcmV0dXJuaW5nIHRoZSBpbnB1 dCBzaXplIG9uIGVycm9yIG9yIGlmIHRoZSBzaXplIGV4Y2VlZHMNCj4gPj4gPiBhICdzYW5pdHkn IGxpbWl0Lg0KPiA+PiA+IGttYWxsb2MoKSB3aWxsIHRoZW4gcmV0dXJuIE5VTEwgaXMgdGhlIHNp emUgcmVhbGx5IGlzIHRvbyBiaWcuDQo+ID4+ID4NCj4gPj4gPg0KPiA+PiA+IFNpZ25lZC1vZmYt Ynk6IERhdmlkIExhaWdodCA8ZGF2aWQubGFpZ2h0QGFjdWxhYi5jb20+DQo+ID4+ID4gRml4ZXM6 IDA1YTk0MDY1NmUxZWIgKCJzbGFiOiBJbnRyb2R1Y2Uga21hbGxvY19zaXplX3JvdW5kdXAoKSIp DQo+ID4+ID4gLS0tDQo+ID4+ID4gdjI6DQo+ID4+ID4gICAgIC0gVXNlIEtNQUxMT0NfTUFYX1NJ WkUgZm9yIHVwcGVyIGxpbWl0Lg0KPiA+PiA+ICAgICAgIChLTUFMTE9DX01BWF9TSVpFICsgMSBt YXkgZ2l2ZSBiZXR0ZXIgY29kZSBvbiBzb21lIGFyY2hzISkNCj4gPj4gPiAgICAgLSBJbnZlcnQg dGVzdCBmb3Igb3ZlcmxhcmdlIGZvciBjb25zaXN0ZW5jeS4NCj4gPj4gPiAgICAgLSBQdXQgYSBs aWtlbHkoKSBvbiByZXN1bHQgb2Yga21hbGxvY19zbGFiKCkuDQo+ID4+ID4NCj4gPj4gPiAgbW0v c2xhYl9jb21tb24uYyB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+ID4+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkNCj4gPj4gPg0K PiA+PiA+IGRpZmYgLS1naXQgYS9tbS9zbGFiX2NvbW1vbi5jIGIvbW0vc2xhYl9jb21tb24uYw0K PiA+PiA+IGluZGV4IGNkNzFmOTU4MWU2Ny4uMGZiN2M3ZTE5YmFkIDEwMDY0NA0KPiA+PiA+IC0t LSBhL21tL3NsYWJfY29tbW9uLmMNCj4gPj4gPiArKysgYi9tbS9zbGFiX2NvbW1vbi5jDQo+ID4+ ID4gQEAgLTc0NywyMiArNzQ3LDIyIEBAIHNpemVfdCBrbWFsbG9jX3NpemVfcm91bmR1cChzaXpl X3Qgc2l6ZSkNCj4gPj4gPiAgew0KPiA+PiA+ICAJc3RydWN0IGttZW1fY2FjaGUgKmM7DQo+ID4+ ID4NCj4gPj4gPiAtCS8qIFNob3J0LWNpcmN1aXQgdGhlIDAgc2l6ZSBjYXNlLiAqLw0KPiA+PiA+ IC0JaWYgKHVubGlrZWx5KHNpemUgPT0gMCkpDQo+ID4+ID4gLQkJcmV0dXJuIDA7DQo+ID4+DQo+ ID4+IElmIHdlIHdhbnQgdG8gYWxsb3cgMCwgbGV0J3MganVzdCBsZWF2ZSB0aGlzIGNhc2UgYXMt aXM6IHRoZSBjb21waWxlcg0KPiA+PiB3aWxsIG9wdGltaXplIGl0IGFnYWluc3QgdGhlIG90aGVy IHRlc3RzLg0KPiA+DQo+ID4gSSBkb3VidCB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWlzZSBpdCBh d2F5IC0gZXNwZWNpYWxseSB3aXRoDQo+ID4gdGhlIHVubGlrZWx5KCkuDQo+IA0KPiBZZWFoIEkg YWxzbyB0aGluayBjb21waWxlciBjYW4ndCBkbyBtdWNoIG9wdGltaXphdGlvbnMgZXhjZXB0IGZv ciBidWlsZC10aW1lDQo+IGNvbnN0YW50IDAgaGVyZS4NCg0KT25seSByZWxldmFudCBpZiB0aGUg Y29kZSB3ZXJlIGlubGluZWQgLSBhbmQgaXQgaXNuJ3QuDQooYW5kIGlzIHByb2JhYmx5IGEgYml0 IGJpZy4pDQpJJ20gbm90IHN1cmUgeW91J2Qgd2FudCB0byBleHBvc2Uga21hbGxvY19zbGFiKCkg dG8gdGhlIHdpZGVyIGtlcm5lbC4NCg0KT1RPSCwgaXQgY291bGQgaGF2ZSBhbiBpbmxpbmUgdmVy c2lvbiBmb3IgY29uc3RhbnRzID4gS01BTExPQ19DQUNIRV9TSVpFLg0KQnV0IHRoZXkgbWF5IG5v dCBoYXBwZW4gb2Z0ZW4gZW5vdWdoIHRvIG1ha2UgYW55IGRpZmZlcmVuY2UuDQoNCj4gDQo+ID4g T1RPSCB0aGUgZXhwbGljaXQgY2hlY2tzIGZvciAoc2l6ZSAmJiBzaXplIDw9IExJTUlUKSBkbw0K PiA+IGdldCBvcHRpbWlzZWQgdG8gKChzaXplIC0gMSkgPD0gTElNSVQgLSAxKSBzbyBiZWNvbWUN Cj4gPiBhIHNpbmdsZSBjb21wYXJlLg0KPiA+DQo+ID4gVGhlbiByZXR1cm5pbmcgJ3NpemUnIGF0 IHRoZSBib3R0b20gbWVhbnMgdGhhdCB6ZXJvIGlzIHJldHVybmVkDQo+ID4gaW4gdGhlIGFyZyBp cyB6ZXJvIC0gd2hpY2ggaXMgZmluZS4NCj4gPg0KPiA+Pg0KPiA+PiA+IC0JLyogU2hvcnQtY2ly Y3VpdCBzYXR1cmF0ZWQgInRvby1sYXJnZSIgY2FzZS4gKi8NCj4gPj4gPiAtCWlmICh1bmxpa2Vs eShzaXplID09IFNJWkVfTUFYKSkNCj4gPj4gPiAtCQlyZXR1cm4gU0laRV9NQVg7DQo+ID4+ID4g KwlpZiAoc2l6ZSAmJiBzaXplIDw9IEtNQUxMT0NfTUFYX0NBQ0hFX1NJWkUpIHsNCj4gPj4gPiAr CQkvKg0KPiA+PiA+ICsJCSAqIFRoZSBmbGFncyBkb24ndCBtYXR0ZXIgc2luY2Ugc2l6ZV9pbmRl eCBpcyBjb21tb24gdG8gYWxsLg0KPiA+PiA+ICsJCSAqIE5laXRoZXIgZG9lcyB0aGUgY2FsbGVy IGZvciBqdXN0IGdldHRpbmcgLT5vYmplY3Rfc2l6ZS4NCj4gPj4gPiArCQkgKi8NCj4gPj4gPiAr CQljID0ga21hbGxvY19zbGFiKHNpemUsIEdGUF9LRVJORUwsIDApOw0KPiA+PiA+ICsJCXJldHVy biBsaWtlbHkoYykgPyBjLT5vYmplY3Rfc2l6ZSA6IHNpemU7DQo+ID4+DQo+ID4+IEkgd291bGQg bGlrZSB0byBoYXZlIHRoaXMgZmFpbCAic2FmZSIuIGMgc2hvdWxkIG5ldmVyIGJlIE5VTEwgaGVy ZSwgc28NCj4gPj4gbGV0J3MgcmV0dXJuICJLTUFMTE9DX01BWF9TSVpFICsgMSIgdG8gZm9yY2Ug ZmFpbHVyZXMuDQo+ID4NCj4gPiBXaHkgZXZlbiB0cnkgdG8gZm9yY2UgZmFpbHVyZSBoZXJlPw0K PiA+IFRoZSB3aG9sZSBmdW5jdGlvbiBpcyBqdXN0IGFuIG9wdGltaXNhdGlvbiBzbyB0aGF0IHRo ZSBjYWxsZXINCj4gPiBjYW4gdXNlIHRoZSBzcGFyZSBzcGFjZS4NCj4gPg0KPiA+IFRoZSBvbmx5 IHRoaW5nIGl0IG11c3RuJ3QgZG8gaXMgcmV0dXJuIGEgc21hbGxlciB2YWx1ZS4NCj4gDQo+IElm ICJjIiBpcyBOVUxMIGl0IG1lYW5zIGVpdGhlciB0aGUga2VybmVsIGJ1aWxkIG11c3QgYmUgYnJv a2VuIGUuZy4gYnkNCj4gc29tZWJvZHkgYnJlYWtpbmcgdGhlIEtNQUxMT0NfTUFYX0NBQ0hFX1NJ WkUgdmFsdWUsIGFuZCB3ZSBjb3VsZCBqdXN0IGlnbm9yZQ0KPiBjIGJlaW5nIE5VTEwgYW5kIGxl dCBpdCBjcmFzaCBiZWNhdXNlIG9mIHRoYXQuDQo+IEJ1dCBJIHRoaW5rIGl0IGNhbiBhbHNvIGJl IE5VTEwgZHVlIHRvIHRyeWluZyB0byBjYWxsIGttYWxsb2Nfc2l6ZV9yb3VuZHVwKCkNCj4gdG9v IGVhcmx5LCB3aGVuIGttYWxsb2NfY2FjaGVzIGFycmF5IGlzIG5vdCB5ZXQgcG9wdWxhdGVkLiBO b3RlIGlmIHdlIGNhbGwNCj4ga21hbGxvYygpIGl0c2VsZiB0b28gZWFybHksIHdlIGdldCBhIE5V TEwgYXMgYSByZXN1bHQsIEFGQUlDUy4gSSBjYW4gaW1hZ2luZQ0KPiB0d28gc2NlbmFyaW9zOg0K PiANCj4gLSBrbWFsbG9jX3NpemVfcm91bmR1cCgpIGlzIGNhbGxlZCB3aXRoIHJlc3VsdCBpbW1l ZGlhdGVseSBmZWQgdG8ga21hbGxvYygpDQo+IHRoYXQgaGFwcGVucyB0b28gZWFybHksIGluIHRo YXQgY2FzZSB3ZSBiZXN0IHNob3VsZCBub3QgY3Jhc2ggb24gYyBiZWluZw0KPiBOVUxMIGFuZCBt YWtlIHN1cmUgdGhlIGttYWxsb2MoKSByZXR1cm5zIE5VTEwuDQo+IC0ga21hbGxvY19zaXplX3Jv dW5kdXAoKSBpcyBjYWxsZWQgaW4gc29tZSBpbml0IGNvZGUgdG8gZ2V0IGEgdmFsdWUgdGhhdA0K PiBzb21lIGxhdGVyIGttYWxsb2MoKSBjYWxsIHVzZXMuIFdlIG1pZ2h0IHdhbnQgYWxzbyBub3Qg Y3Jhc2ggaW4gdGhhdCBjYXNlLA0KPiBidXQgaW5mb3JtaW5nIHRoZSBkZXZlbG9wZXIgdGhhdCB0 aGV5IGRpZCBzb21ldGhpbmcgd3Jvbmcgd291bGQgYmUgYWxzbyB1c2VmdWw/DQo+IA0KPiBDbGVh cmx5IHJldHVybmluZyAwIGlmIGMgPT0gTlVMTCwgYXMgZG9uZSBjdXJyZW50bHksIGlzIHdyb25n IGZvciBib3RoDQo+IHNjZW5hcmlvcy4gUmV0dW5pbmcgInNpemUiIGlzIE9LIGZvciB0aGUgZmly c3Qgc2NlbmFyaW8sIGFsc28gdmFsaWQgZm9yIHRoZQ0KPiBzZWNvbmQgb25lLCBidXQgdGhlIGNh bGxlciB3aWxsIHNpbGVudGx5IGxvc2UgdGhlIGJlbmVmaXQgb2YNCj4ga21hbGxvY19zaXplX3Jv dW5kdXAoKSBhbmQgdGhlIGRldmVsb3BlciBpbnRyb2R1Y2luZyB0aGF0IHdvbid0IHJlYWxpemUg aXQncw0KPiBkb25lIHRvbyBlYXJseSBhbmQgY291bGQgYmUgZml4ZWQuDQoNCkknbSBzdXJlIHRo YXQgd29uJ3QgbWF0dGVyLg0KDQo+IFNvIHBlcmhhcHMgdGhlIGJlc3Qgd291bGQgYmUgdG8gcmV0 dXJuIHNpemUgZm9yIGMgPT0gTlVMTCwgYnV0IGFsc28gZG8gYQ0KPiBXQVJOX09OQ0U/DQoNClRo YXQgd291bGQgYWRkIGEgcmVhbCBmdW5jdGlvbiBjYWxsIHRvIGFuIG90aGVyd2lzZSBsZWFmIGZ1 bmN0aW9uDQphbmQgYWxtb3N0IGNlcnRhaW5seSByZXF1aXJlIHRoZSBjb21waWxlciBjcmVhdGUg YSBzdGFjayBmcmFtZS4NCg0KLi4uDQoNCkkgZGlkIGhhdmUgYW4gaW50ZXJlc3RpbmcgJ2xhdGVy YWwgdGhvdWdodCcgaWRlYS4NCkl0IGlzIGFsbCB2ZXJ5IHNpbGx5IGRvaW5nIGFsbCB0aGUgd29y ayB0d2ljZSwgd2hhdCB5b3UgcmVhbGx5DQp3YW50IGlzIGttYWxsb2MoKSB0byByZXR1cm4gYm90 aCB0aGUgcG9pbnRlciBhbmQgYWN0dWFsIHNpemUuDQpCdXQgcmV0dXJuaW5nIGEgJ3R3byB3b3Jk JyBzdHJ1Y3R1cmUgaXMgZG9uZSBieSByZWZlcmVuY2UgYW5kDQp3b3VsZCBraWxsIHBlcmZvcm1h bmNlLw0KT1RPSCBhIGxvdCBvZiBhcmNocyBjYW4gcmV0dXJuIHR3byB3b3JkIGludGVnZXJzIGlu IGEgcmVnaXN0ZXIgcGFpcg0KKGR4OmF4IG9uIHg4NikuDQpDb3VsZCB5b3UgaGF2ZSB0aGUgcmVh bCBmdW5jdGlvbiByZXR1cm4gKCh1bnNpZ25lZCBfX2ludDY0KXNpemUgPDwgNjQgfCAobG9uZylw dHIpDQphbmQgdGhlbiBleHRyYWN0IHRoZSBzaXplIGluIGEgd3JhcHBlciBtYWNybz8NCihXaXRo IGRpZmZlcmVudCB0eXBlcyBmb3IgMzJiaXQpDQoNClRoYXQgd2lsbCwgb2YgY291cnNlLCBicmVh ayB0aGUgJ2l0J3MgbGlrZSBtYWxsb2MnIGNoZWNrcyB0aGUNCmNvbXBpbGVyIGlzIGRvaW5nIC0g dW5sZXNzIGl0IGlzIHRhdWdodCB3aGF0IGlzIGdvaW5nIG9uLg0KDQoJRGF2aWQNCg0KLQ0KUmVn aXN0ZXJlZCBBZGRyZXNzIExha2VzaWRlLCBCcmFtbGV5IFJvYWQsIE1vdW50IEZhcm0sIE1pbHRv biBLZXluZXMsIE1LMSAxUFQsIFVLDQpSZWdpc3RyYXRpb24gTm86IDEzOTczODYgKFdhbGVzKQ0K