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 6D199C021A9 for ; Tue, 18 Feb 2025 02:51:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A96BF2800B6; Mon, 17 Feb 2025 21:51:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A462E2800B5; Mon, 17 Feb 2025 21:51:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E6FF2800B6; Mon, 17 Feb 2025 21:51:08 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6A5A12800B5 for ; Mon, 17 Feb 2025 21:51:08 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 269331616B9 for ; Tue, 18 Feb 2025 02:51:08 +0000 (UTC) X-FDA: 83131538616.14.20A6A05 Received: from mta21.hihonor.com (mta21.honor.com [81.70.160.142]) by imf09.hostedemail.com (Postfix) with ESMTP id 2F7FC140010 for ; Tue, 18 Feb 2025 02:51:04 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=honor.com; spf=pass (imf09.hostedemail.com: domain of gaoxu2@honor.com designates 81.70.160.142 as permitted sender) smtp.mailfrom=gaoxu2@honor.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739847066; 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=P405UDpZTeFjNC1+dD9AS62yWRFp1ndqDVHC8Aqn6V0=; b=PL2Ns0+Rxjj6E2GC++aZodBzvuBFaTkt97+NLrzCdX9Xd3Jj4In2UNQ9ho1xpikMv3HIvE lsNohPgmsC+FGujaWdi/VDDCV1BgNkuUFHg0r1b2OgCfKBunFeLOPJoPSY+HwUgkcZ9Lc3 z5E5M5Kjuyxqd80mC7bcWQByKKl4vW0= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=honor.com; spf=pass (imf09.hostedemail.com: domain of gaoxu2@honor.com designates 81.70.160.142 as permitted sender) smtp.mailfrom=gaoxu2@honor.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739847066; a=rsa-sha256; cv=none; b=XG0Dbl7f8RPrnoxiSuZKPDedRduw/23GyFkN+nqw75Ffakc1FDNCr3ivffHOK+nv12jCxd 91u8Dqu4OojQ4f5aJZtfl8j3hOhWkXnogc2sIJiMcT5VB6pKRUxHlJZJzSKvFUdsXww/mt zj60/Ccyr23z3u/mPWlzKMLIh9aqAzM= Received: from w013.hihonor.com (unknown [10.68.26.19]) by mta21.hihonor.com (SkyGuard) with ESMTPS id 4YxkXK2W9YzYkyMK; Tue, 18 Feb 2025 10:50:09 +0800 (CST) Received: from a008.hihonor.com (10.68.30.56) by w013.hihonor.com (10.68.26.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 18 Feb 2025 10:51:01 +0800 Received: from a007.hihonor.com (10.68.22.31) by a008.hihonor.com (10.68.30.56) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 18 Feb 2025 10:51:00 +0800 Received: from a007.hihonor.com ([fe80::e866:83ac:f23b:c25c]) by a007.hihonor.com ([fe80::e866:83ac:f23b:c25c%10]) with mapi id 15.02.1544.011; Tue, 18 Feb 2025 10:51:00 +0800 From: gaoxu To: Barry Song <21cnbao@gmail.com> CC: Andrew Morton , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Suren Baghdasaryan , Yosry Ahmed , yipengxiang Subject: =?utf-8?B?5Zue5aSNOiBbUEFUQ0ggdjNdIG1tOiBGaXggcG9zc2libGUgTlVMTCBwb2lu?= =?utf-8?B?dGVyIGRlcmVmZXJlbmNlIGluIF9fc3dhcF9kdXBsaWNhdGU=?= Thread-Topic: [PATCH v3] mm: Fix possible NULL pointer dereference in __swap_duplicate Thread-Index: Adt/iIz/pSZ7Q3r8TEmsD6w3AazKUAASHxkAAHYtS4A= Date: Tue, 18 Feb 2025 02:51:00 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.164.11.140] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 2F7FC140010 X-Stat-Signature: 75wxa94648uj4f3wp1eai3q4i6zimm9g X-HE-Tag: 1739847064-929894 X-HE-Meta: U2FsdGVkX1+LLSDQGXD1LYCK1Z+FjjKggfQy0q0xxVInmG7k8X01aIdfo7rAGwn9ln43Wdp6wx20MHaUaazEDBKHJXI905ux8uDzQfCXfnAB3CwjoBJ5TGzY/7888A2aWfOHBk+Tkj8c+7PZ8BPxm9CNK7sNqs0NHqCRiQFs7V6Qlm43kZPEXAZR9B43C41qMZm3K0dZ4FkbCic9dN424Z8raVnwQy2xffmdcCsn/rXASnnY61Z/1c1OHMgYEP/dyA/o7DPgqY9d1GaWl0+5xwRYlxBJ6t24yo1F2IV2nxSeIR5xxz/iwTM4yvmI/xf+Sa4BPwj+57Nb19gMSxG9xm+xDYgm7QORaQ0/G96nzgO69HUwdP5bQLRV2Q31AUUx9vSzVZppptMo4a7kGtJfbRHYNrx6+dBUEDlUtp+/vjTFHxWwJ7FQN+60HrBvNvylXfJpcXsxqUTsOxr7M+z4BUEqUmCpA/0OqXrc0ObnY3c5fbso8ynVcpuSas0x9Hx6c3a4/xcK27jawodcy1TGue+sX+FcHpHO0xz9Q2squQtBP51OHLpRbCqU56wK5wuWQGv+THEREeB4cmkLuoVTNIGtgIvOu/jSNU0FQ6AGgk+LBsInOVCcAg4Enz/jhk47+KvZ2/CDsJ1Isp+eutTjTQxhGEnt7nh2mGnNbXn7prd0S381iyny5klOOLG+8gqi9EyXpGST0I3dPdzgjkFCNhCoSmOFIjDgOaDtF47s8r9MQx9vh4XycwsMyDROICvCJJy9E55yvr7n/bolIyCo0N4pdoY/TWsqhuxUlk8sanC1Fnx/+35VCyEODquINpxKQfMtb9XztgItvxkKMlZ9JHRpf0K63ee98ksyHVQk84gJ9OB8TXlfWGks9VUZfIEDQVHRB6bTUdNhMQY16y00Lzkl8pk371LfvSOD05EgTgg4fGzyRPubW+59aXqSIG9KaAu4MLlm92Crd5PctGF CwyxKxuK x76FpmDwyJ33QB6TLuVezP+0eU+FWN8E2Cq4Ri5BMwNJ6uDTgsXB/wvCKHk7WREUzTYoQ2rfu8M/fdg0AjK4q6BiecjNAR4mQ0D3azGj6QNNpLC5E6jsmJt26QUn7zUX2gmxVnxbU57BUY7q8bqsVoXr0zXLzVNt1Hzej/ECJSXKLd8yvrAF4Ss3P22r8t6jeDITDe7ihzCRiJ7+BoosPIkgJXylVNYsEwv6IeajgNb7FHJvuJDib0rZno4g05yRM1epwhBbb9dD0JBe2rt6a/8mEJSlkmf9tgohKBzZwZd/1qLdd9Kc+Excy92ZTYZuiovb4xjcvhwTg2N6WzLVAu93hNs16m+/YvLsJ9X5X6IJNeGWk80p0MRrqRXmnpTh1R6HN 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: List-Subscribe: List-Unsubscribe: PiANCj4gT24gU2F0LCBGZWIgMTUsIDIwMjUgYXQgMTA6MDXigK9QTSBnYW94dSA8Z2FveHUyQGhv bm9yLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBBZGQgYSBOVUxMIGNoZWNrIG9uIHRoZSByZXR1cm4g dmFsdWUgb2Ygc3dwX3N3YXBfaW5mbyBpbg0KPiA+IF9fc3dhcF9kdXBsaWNhdGUgdG8gcHJldmVu dCBjcmFzaGVzIGNhdXNlZCBieSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuDQo+ID4NCj4gPiBU aGUgcmVhc29uIHdoeSBzd3Bfc3dhcF9pbmZvKCkgcmV0dXJucyBOVUxMIGlzIHVuY2xlYXI7IGl0 IG1heSBiZSBkdWUNCj4gPiB0byBDUFUgY2FjaGUgaXNzdWVzIG9yIEREUiBiaXQgZmxpcHMuIFRo ZSBwcm9iYWJpbGl0eSBvZiB0aGlzIGlzc3VlIGlzDQo+ID4gdmVyeSBzbWFsbCwgYW5kIHRoZSBz dGFjayBpbmZvIHdlIGVuY291bnRlcmVkIGlzIGFzIGZvbGxvd3PvvJoNCj4gPiBVbmFibGUgdG8g aGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYXQgdmlydHVhbCBhZGRyZXNz DQo+ID4gMDAwMDAwMDAwMDAwMDA1OA0KPiA+IFtSQi9FXXJiX3NyZWFzb25fc3RyX3NldDogc3Jl YXNvbl9zdHIgc2V0IG51bGxfcG9pbnRlciBNZW0gYWJvcnQgaW5mbzoNCj4gPiAgIEVTUiA9IDB4 MDAwMDAwMDA5NjAwMDAwNQ0KPiA+ICAgRUMgPSAweDI1OiBEQUJUIChjdXJyZW50IEVMKSwgSUwg PSAzMiBiaXRzDQo+ID4gICBTRVQgPSAwLCBGblYgPSAwDQo+ID4gICBFQSA9IDAsIFMxUFRXID0g MA0KPiA+ICAgRlNDID0gMHgwNTogbGV2ZWwgMSB0cmFuc2xhdGlvbiBmYXVsdCBEYXRhIGFib3J0 IGluZm86DQo+ID4gICBJU1YgPSAwLCBJU1MgPSAweDAwMDAwMDA1LCBJU1MyID0gMHgwMDAwMDAw MA0KPiA+ICAgQ00gPSAwLCBXblIgPSAwLCBUbkQgPSAwLCBUYWdBY2Nlc3MgPSAwDQo+ID4gICBH Q1MgPSAwLCBPdmVybGF5ID0gMCwgRGlydHlCaXQgPSAwLCBYcyA9IDAgdXNlciBwZ3RhYmxlOiA0 ayBwYWdlcywNCj4gPiAzOS1iaXQgVkFzLCBwZ2RwPTAwMDAwMDA4YTgwZTUwMDAgWzAwMDAwMDAw MDAwMDAwNThdDQo+ID4gcGdkPTAwMDAwMDAwMDAwMDAwMDAsIHA0ZD0wMDAwMDAwMDAwMDAwMDAw LA0KPiA+IHB1ZD0wMDAwMDAwMDAwMDAwMDAwDQo+ID4gSW50ZXJuYWwgZXJyb3I6IE9vcHM6IDAw MDAwMDAwOTYwMDAwMDUgWyMxXSBQUkVFTVBUIFNNUCBTa2lwIG1kIGZ0cmFjZQ0KPiA+IGJ1ZmZl ciBkdW1wIGZvcjogMHgxNjA5ZTAgLi4uDQo+ID4gcGMgOiBzd2FwX2R1cGxpY2F0ZSsweDQ0LzB4 MTY0DQo+ID4gbHIgOiBjb3B5X3BhZ2VfcmFuZ2UrMHg1MDgvMHgxZTc4DQo+ID4gc3AgOiBmZmZm ZmZjMGYyYTY5OWUwDQo+ID4geDI5OiBmZmZmZmZjMGYyYTY5OWUwIHgyODogZmZmZmZmOGE1YjI4 ZDM4OCB4Mjc6IGZmZmZmZjhiMDY2MDMzODgNCj4gPiB4MjY6IGZmZmZmZmRmNzI5MWZlNzAgeDI1 OiAwMDAwMDAwMDAwMDAwMDA2IHgyNDogMDAwMDAwMDAwMDEwMDA3Mw0KPiA+IHgyMzogMDAwMDAw MDAwMDJkMmQyZiB4MjI6IDAwMDAwMDAwMDAwMDAwMDggeDIxOiAwMDAwMDAwMDAwMDAwMDAwDQo+ ID4geDIwOiAwMDAwMDAwMDAwMmQyZDJmIHgxOTogMTgwMDAwMDAwMDJkMmQyZiB4MTg6IGZmZmZm ZmRmNzI2ZmFlYzANCj4gPiB4MTc6IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDEwMDAwMDAwMDAw MDAxIHgxNTogMDA0MDAwMDAwMDAwMDAwMQ0KPiA+IHgxNDogMDQwMDAwMDAwMDAwMDAwMSB4MTM6 IGZmN2ZmZmZmZmZmZmZiN2YgeDEyOiBmZmVmZmZmZmZmZmZmYmZmDQo+ID4geDExOiBmZmZmZmY4 YTVjN2UxODk4IHgxMDogMDAwMDAwMDAwMDAwMDAxOCB4OSA6IDAwMDAwMDAwMDAwMDAwMDYNCj4g PiB4OCA6IDE4MDAwMDAwMDAwMDAwMDAgeDcgOiAwMDAwMDAwMDAwMDAwMDAwIHg2IDogZmZmZmZm ODA1N2MwMWYxMA0KPiA+IHg1IDogMDAwMDAwMDAwMDAwYTMxOCB4NCA6IDAwMDAwMDAwMDAwMDAw MDAgeDMgOiAwMDAwMDAwMDAwMDAwMDAwDQo+ID4geDIgOiAwMDAwMDA2ZGFmMjAwMDAwIHgxIDog MDAwMDAwMDAwMDAwMDAwMSB4MCA6IDE4MDAwMDAwMDAyZDJkMmYgQ2FsbA0KPiA+IHRyYWNlOg0K PiA+ICBzd2FwX2R1cGxpY2F0ZSsweDQ0LzB4MTY0DQo+ID4gIGNvcHlfcGFnZV9yYW5nZSsweDUw OC8weDFlNzgNCj4gDQo+IFRoaXMgaXMgcmVhbGx5IHN0cmFuZ2Ugc2luY2Ugd2UgYWxyZWFkeSBo YXZlIGEgc3dhcCBlbnRyeSBjaGVjayBiZWZvcmUgY2FsbGluZw0KPiBzd2FwX2R1cGxpY2F0ZSgp Lg0KPiANCj4gY29weV9ub25wcmVzZW50X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3RfbW0sIHN0 cnVjdCBtbV9zdHJ1Y3QgKnNyY19tbSwNCj4gICAgICAgICAgICAgICAgIHB0ZV90ICpkc3RfcHRl LCBwdGVfdCAqc3JjX3B0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0DQo+ICpkc3Rfdm1hLA0KPiAg ICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpzcmNfdm1hLCB1bnNpZ25lZCBs b25nIGFkZHIsIGludA0KPiAqcnNzKSB7DQo+ICAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9mbGFn cyA9IGRzdF92bWEtPnZtX2ZsYWdzOw0KPiAgICAgICAgIHB0ZV90IG9yaWdfcHRlID0gcHRlcF9n ZXQoc3JjX3B0ZSk7DQo+ICAgICAgICAgcHRlX3QgcHRlID0gb3JpZ19wdGU7DQo+ICAgICAgICAg c3RydWN0IGZvbGlvICpmb2xpbzsNCj4gICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZTsNCj4gICAg ICAgICBzd3BfZW50cnlfdCBlbnRyeSA9IHB0ZV90b19zd3BfZW50cnkob3JpZ19wdGUpOw0KPiAN Cj4gICAgICAgICBpZiAobGlrZWx5KCFub25fc3dhcF9lbnRyeShlbnRyeSkpKSB7DQo+ICAgICAg ICAgICAgICAgICBpZiAoc3dhcF9kdXBsaWNhdGUoZW50cnkpIDwgMCkNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU87DQo+IC4uLg0KPiB9DQo+IA0KPiBsaWtlbHkgdGhlIHN3 YXBfdHlwZSBpcyBsYXJnZXIgdGhhbiBNQVhfU1dBUEZJTEVTIHNvIHdlIGdldCBhIE5VTEw/DQo+ IA0KPiBzdGF0aWMgc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnN3YXBfdHlwZV90b19zd2FwX2lu Zm8oaW50IHR5cGUpIHsNCj4gICAgICAgICBpZiAodHlwZSA+PSBNQVhfU1dBUEZJTEVTKQ0KPiAg ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+IA0KPiAgICAgICAgIHJldHVybiBSRUFEX09O Q0Uoc3dhcF9pbmZvW3R5cGVdKTsgLyogcmN1X2RlcmVmZXJlbmNlKCkgKi8gfQ0KPiANCj4gQnV0 IG5vbl9zd2FwX2VudHJ5KCkgZ3VhcmFudGVlcyB0aGF0IHN3cF90eXBlIGlzIHNtYWxsZXIgdGhh bg0KPiBNQVhfU1dBUEZJTEVTLg0KPiANCj4gc3RhdGljIGlubGluZSBpbnQgbm9uX3N3YXBfZW50 cnkoc3dwX2VudHJ5X3QgZW50cnkpIHsNCj4gICAgICAgICByZXR1cm4gc3dwX3R5cGUoZW50cnkp ID49IE1BWF9TV0FQRklMRVM7IH0NCj4gDQo+IFNvIGFub3RoZXIgcG9zc2liaWxpdHkgaXMgdGhh dCB3ZSBoYXZlIGFuIG92ZXJmbG93IG9mIHN3YXBfaW5mb1tdIHdoZXJlIHR5cGUgaXMgPA0KPiBN QVhfU1dBUEZJTEVTIGJ1dCBpcyBub3QgYSB2YWxpZCBleGlzdGluZyBzd2FwZmlsZT8NCkluIHRo ZSBsb2cgb2YgdGhpcyBpc3N1ZSwgdGhlcmUgaXMgYSBwcmludGVkIGVudHJ5OiBnZXRfc3dhcF9k ZXZpY2U6DQpCYWQgc3dhcCBmaWxlIGVudHJ5IDE4MDAwMDAwMDAyZDJkMmYuDQpJdCBjYW4gYmUg Y2FsY3VsYXRlZCB0aGF0IHN3cF90eXBlKDE4MDAwMDAwMDAyZDJkMmYpID0gNi4NCkluIHRoZSBB bmRyb2lkIDE1LWxpbnV4Ni42Og0Kc3lzdGVtOiBNQVhfU1dBUEZJTEVTID0gMjgsIG5yX3N3YXBm aWxlcyA9IDEuDQpTaW5jZSBzd3BfdHlwZSgxODAwMDAwMDAwMmQyZDJmKT02IGlzIGxlc3MgdGhh biBNQVhfU1dBUEZJTEVTIGJ1dCBncmVhdGVyDQp0aGFuIG5yX3N3YXBmaWxlcywgdGhlIHZhbHVl IG9mIHRoaXMgZW50cnkgaXMgYWJub3JtYWwuDQoNCnN0YXRpYyB1bnNpZ25lZCBpbnQgbnJfc3dh cGZpbGVzOw0Kc3RhdGljIHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzd2FwX2luZm9bTUFYX1NX QVBGSUxFU107DQpzd2FwX2luZm8gaXMgYSBzdGF0aWMgYXJyYXksIHdpdGggaXRzIHZhbHVlcyBp bml0aWFsaXplZCB0byAwLiANClRoZSBzaXplIG9mIHRoZSBhcnJheSBpcyBNQVhfU1dBUEZJTEVT LCBhbmQgdGhlIHNpemUgb2YgdmFsaWQgdmFsdWVzIGluIHRoZSBhcnJheSBpcw0KbnJfc3dhcGZp bGVzLiBUaGVyZWZvcmUsIHdoZW4gd2UgdmFsaWRhdGUgdGhlIHZhbGlkaXR5IG9mIHN3cF90eXBl KGVudHJ5KSwNCndlIHNob3VsZCBjb21wYXJlIGl0IHdpdGggbnJfc3dhcGZpbGVzLCBub3QgTUFY X1NXQVBGSUxFUy4NClRoZSBjb2RlIGZvciB2YWxpZGF0aW5nIHN3cF90eXBlIG1heSBuZWVkIHRv IGJlIG1vZGlmaWVkIGFzIGZvbGxvd3M6DQpzdGF0aWMgaW5saW5lIGludCBub25fc3dhcF9lbnRy eShzd3BfZW50cnlfdCBlbnRyeSkNCnsNCi0JcmV0dXJuIHN3cF90eXBlKGVudHJ5KSA+PSBNQVhf U1dBUEZJTEVTOw0KKwlyZXR1cm4gc3dwX3R5cGUoZW50cnkpID49IG5yX3N3YXBmaWxlczsNCn0N Cg0Kc3RhdGljIHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzd2FwX3R5cGVfdG9fc3dhcF9pbmZv KGludCB0eXBlKQ0Kew0KLQlpZiAodHlwZSA+PSBNQVhfU1dBUEZJTEVTKQ0KKwlpZiAodHlwZSA+ PSBucl9zd2FwZmlsZXMpDQoJCXJldHVybiBOVUxMOw0KDQoJcmV0dXJuIFJFQURfT05DRShzd2Fw X2luZm9bdHlwZV0pOyAvKiByY3VfZGVyZWZlcmVuY2UoKSAqLw0KfQ0KPiANCj4gSSBkb24ndCBz ZWUgaG93IHRoZSBjdXJyZW50IHBhdGNoIGNvbnRyaWJ1dGVzIHRvIGRlYnVnZ2luZyBvciBmaXhp bmcgYW55dGhpbmcNCj4gcmVsYXRlZCB0byB0aGlzIGR1bXBlZCBzdGFjay4gQ2FuIHdlIGR1bXAg c3dwX3R5cGUoKSBhcyB3ZWxsPw0KPiANCj4gPiAgY29weV9wcm9jZXNzKzB4MTI3OC8weDIxY2MN Cj4gPiAga2VybmVsX2Nsb25lKzB4OTAvMHg0MzgNCj4gPiAgX19hcm02NF9zeXNfY2xvbmUrMHg1 Yy8weDhjDQo+ID4gIGludm9rZV9zeXNjYWxsKzB4NTgvMHgxMTANCj4gPiAgZG9fZWwwX3N2Yysw eDhjLzB4ZTANCj4gPiAgZWwwX3N2YysweDM4LzB4OWMNCj4gPiAgZWwwdF82NF9zeW5jX2hhbmRs ZXIrMHg0NC8weGVjDQo+ID4gIGVsMHRfNjRfc3luYysweDFhOC8weDFhYw0KPiA+IENvZGU6IDkx MzljMzVhIDcxMDA2ZjNmIDU0MDAwNTY4IGY4Nzk3YjU1IChmOTQwMmVhOCkgLS0tWyBlbmQgdHJh Y2UNCj4gPiAwMDAwMDAwMDAwMDAwMDAwIF0tLS0gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6 IE9vcHM6IEZhdGFsDQo+ID4gZXhjZXB0aW9uDQo+ID4gU01QOiBzdG9wcGluZyBzZWNvbmRhcnkg Q1BVcw0KPiA+DQo+ID4gVGhlIHBhdGNoIHNlZW1zIHRvIG9ubHkgcHJvdmlkZSBhIHdvcmthcm91 bmQsIGJ1dCB0aGVyZSBhcmUgbm8gbW9yZQ0KPiA+IGVmZmVjdGl2ZSBzb2Z0d2FyZSBzb2x1dGlv bnMgdG8gaGFuZGxlIHRoZSBiaXQgZmxpcHMgcHJvYmxlbS4gVGhpcw0KPiA+IHBhdGggd2lsbCBj aGFuZ2UgdGhlIGlzc3VlIGZyb20gYSBzeXN0ZW0gY3Jhc2ggdG8gYSBwcm9jZXNzIGV4Y2VwdGlv biwNCj4gPiB0aGVyZWJ5IHJlZHVjaW5nIHRoZSBpbXBhY3Qgb24gdGhlIGVudGlyZSBtYWNoaW5l Lg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogZ2FvIHh1IDxnYW94dTJAaG9ub3IuY29tPg0KPiA+ IC0tLQ0KPiA+IHYxIC0+IHYyOg0KPiA+IC0gQWRkIFdBUk5fT05fT05DRS4NCj4gPiAtIHVwZGF0 ZSB0aGUgY29tbWl0IGluZm8uDQo+ID4gdjIgLT4gdjM6IERlbGV0ZSB0aGUgcmV2aWV3IHRhZ3Mg KFRoaXMgaXMgbXkgaXNzdWUsIGFuZCBJIGFwb2xvZ2l6ZSkuDQo+ID4gLS0tDQo+ID4NCj4gPiBt bS9zd2FwZmlsZS5jIHwgMiArKw0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbW0vc3dhcGZpbGUuYyBiL21tL3N3YXBmaWxlLmMgaW5k ZXggNzQ0OGEzODc2Li5hMGJmZGJhOTQNCj4gPiAxMDA2NDQNCj4gPiAtLS0gYS9tbS9zd2FwZmls ZS5jDQo+ID4gKysrIGIvbW0vc3dhcGZpbGUuYw0KPiA+IEBAIC0zNTIxLDYgKzM1MjEsOCBAQCBz dGF0aWMgaW50IF9fc3dhcF9kdXBsaWNhdGUoc3dwX2VudHJ5X3QgZW50cnksDQo+IHVuc2lnbmVk IGNoYXIgdXNhZ2UsIGludCBucikNCj4gPiAgICAgICAgIGludCBlcnIsIGk7DQo+ID4NCj4gPiAg ICAgICAgIHNpID0gc3dwX3N3YXBfaW5mbyhlbnRyeSk7DQo+ID4gKyAgICAgICBpZiAoV0FSTl9P Tl9PTkNFKCFzaSkpDQo+IA0KPiBJIG1lYW4sIHByaW50ayBzb21ldGhpbmcgcmVsYXRlZCB0byBz d3BfdHlwZSgpLiBUaGlzIGlzIHJlYWxseSBzdHJhbmdlLCBidXQgdGhlDQo+IGN1cnJlbnQgc3Rh Y2sgd29uJ3QgaGVscCB3aXRoIGRlYnVnZ2luZy4NClRoZSBsb2cgY2FuIGZpbmQgaW5mbyByZWxh dGVkIHRvICJnZXRfc3dhcF9kZXZpY2U6IEJhZCBzd2FwIGZpbGUgZW50cnkgeHh4Ig0Kd2hlbiBh biBlbnRyeSBlbmNvdW50ZXJzIGFuIGV4Y2VwdGlvbi4gDQpBZGQgYSBwcmludCBpbmZvIGxvZyBs aWtlIHRoZSBmb2xsb3dpbmc6DQpwcl9lcnIoIiVzJTA4ZFxuIiwgQmFkIHN3YXAgdHlwZSwgc3dw X3R5cGUoZW50cnkpKTsNCj4gDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+DQo+ID4gICAgICAgICBvZmZzZXQgPSBzd3Bfb2Zmc2V0KGVudHJ5KTsNCj4gPiAgICAgICAg IFZNX1dBUk5fT04obnIgPiBTV0FQRklMRV9DTFVTVEVSIC0gb2Zmc2V0ICUNCj4gU1dBUEZJTEVf Q0xVU1RFUik7DQo+ID4gLS0NCj4gPiAyLjE3LjENCj4gDQo+IFRoYW5rcw0KPiBCYXJyeQ0K