From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id 202976B000E for ; Fri, 5 Oct 2018 13:18:45 -0400 (EDT) Received: by mail-pf1-f197.google.com with SMTP id i81-v6so9370013pfj.1 for ; Fri, 05 Oct 2018 10:18:45 -0700 (PDT) Received: from mga02.intel.com (mga02.intel.com. [134.134.136.20]) by mx.google.com with ESMTPS id 1-v6si9434124plx.140.2018.10.05.10.18.43 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Oct 2018 10:18:43 -0700 (PDT) From: "Edgecombe, Rick P" Subject: Re: [PATCH v7 1/4] vmalloc: Add __vmalloc_node_try_addr function Date: Fri, 5 Oct 2018 17:18:09 +0000 Message-ID: <1538760003.3560.136.camel@intel.com> References: <1538429927-17834-1-git-send-email-rick.p.edgecombe@intel.com> <1538429927-17834-2-git-send-email-rick.p.edgecombe@intel.com> In-Reply-To: <1538429927-17834-2-git-send-email-rick.p.edgecombe@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <72D7E421AA1A7643B5BDCFCE6515CFB9@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: owner-linux-mm@kvack.org List-ID: To: "linux-kernel@vger.kernel.org" , "daniel@iogearbox.net" , "jannh@google.com" , "keescook@chromium.org" , "willy@infradead.org" , "tglx@linutronix.de" , "linux-mm@kvack.org" , "x86@kernel.org" , "akpm@linux-foundation.org" , "hpa@zytor.com" , "mingo@redhat.com" , "kernel-hardening@lists.openwall.com" Cc: "kristen@linux.intel.com" , "arjan@linux.intel.com" , "Hansen, Dave" Rm9yZ290IHRvIGluY2x1ZGUgdGhpczoNCg0KUmV2aWV3ZWQtYnk6IEtlZXMgQ29vayA8a2Vlc2Nv b2tAY2hyb21pdW0ub3JnPg0KDQpPbiBNb24sIDIwMTgtMTAtMDEgYXQgMTQ6MzggLTA3MDAsIFJp Y2sgRWRnZWNvbWJlIHdyb3RlOg0KPiBDcmVhdGUgX192bWFsbG9jX25vZGVfdHJ5X2FkZHIgZnVu Y3Rpb24gdGhhdCB0cmllcyB0byBhbGxvY2F0ZSBhdCBhIHNwZWNpZmljDQo+IGFkZHJlc3MgYW5k IHN1cHBvcnRzIGNhbGxlciBzcGVjaWZpZWQgYmVoYXZpb3IgZm9yIHdoZXRoZXIgYW55IGxhenkg cHVyZ2luZw0KPiBoYXBwZW5zIGlmIHRoZXJlIGlzIGEgY29sbGlzaW9uLg0KPiANCj4gVGhpcyBu ZXcgZnVuY3Rpb24gZHJhd3MgZnJvbSB0aGUgX192bWFsbG9jX25vZGVfcmFuZ2UgaW1wbGVtZW50 YXRpb24uIEF0dGVtcHRzDQo+IHRvIG1lcmdlIHRoZSB0d28gaW50byBhIHNpbmdsZSBhbGxvY2F0 b3IgcmVzdWx0ZWQgaW4gbG9naWMgdGhhdCB3YXMgZGlmZmljdWx0DQo+IHRvIGZvbGxvdywgc28g dGhleSBhcmUgbGVmdCBzZXBhcmF0ZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJpY2sgRWRnZWNv bWJlIDxyaWNrLnAuZWRnZWNvbWJlQGludGVsLmNvbT4NCj4gLS0tDQo+IMKgaW5jbHVkZS9saW51 eC92bWFsbG9jLmggfMKgwqDCoDMgKw0KPiDCoG1tL3ZtYWxsb2MuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHwgMTc3DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQ0KPiDCoDIgZmlsZXMgY2hhbmdlZCwgMTc5IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCBiL2luY2x1 ZGUvbGludXgvdm1hbGxvYy5oDQo+IGluZGV4IDM5OGU5YzkuLmM3NzEyYzggMTAwNjQ0DQo+IC0t LSBhL2luY2x1ZGUvbGludXgvdm1hbGxvYy5oDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvdm1hbGxv Yy5oDQo+IEBAIC04Miw2ICs4Miw5IEBAIGV4dGVybiB2b2lkICpfX3ZtYWxsb2Nfbm9kZV9yYW5n ZSh1bnNpZ25lZCBsb25nIHNpemUsDQo+IHVuc2lnbmVkIGxvbmcgYWxpZ24sDQo+IMKgCQkJdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGdmcF90DQo+IGdmcF9tYXNrLA0K PiDCoAkJCXBncHJvdF90IHByb3QsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MsIGludCBub2RlLA0K PiDCoAkJCWNvbnN0IHZvaWQgKmNhbGxlcik7DQo+ICtleHRlcm4gdm9pZCAqX192bWFsbG9jX25v ZGVfdHJ5X2FkZHIodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsDQo+ICsJ CQlnZnBfdCBnZnBfbWFzaywJcGdwcm90X3QgcHJvdCwgdW5zaWduZWQgbG9uZw0KPiB2bV9mbGFn cywNCj4gKwkJCWludCBub2RlLCBpbnQgdHJ5X3B1cmdlLCBjb25zdCB2b2lkICpjYWxsZXIpOw0K PiDCoCNpZm5kZWYgQ09ORklHX01NVQ0KPiDCoGV4dGVybiB2b2lkICpfX3ZtYWxsb2Nfbm9kZV9m bGFncyh1bnNpZ25lZCBsb25nIHNpemUsIGludCBub2RlLCBnZnBfdCBmbGFncyk7DQo+IMKgc3Rh dGljIGlubGluZSB2b2lkICpfX3ZtYWxsb2Nfbm9kZV9mbGFnc19jYWxsZXIodW5zaWduZWQgbG9u ZyBzaXplLCBpbnQgbm9kZSwNCj4gZGlmZiAtLWdpdCBhL21tL3ZtYWxsb2MuYyBiL21tL3ZtYWxs b2MuYw0KPiBpbmRleCBhNzI4ZmM0Li4xOTU0NDU4IDEwMDY0NA0KPiAtLS0gYS9tbS92bWFsbG9j LmMNCj4gKysrIGIvbW0vdm1hbGxvYy5jDQo+IEBAIC0xNzA5LDYgKzE3MDksMTgxIEBAIHN0YXRp YyB2b2lkICpfX3ZtYWxsb2NfYXJlYV9ub2RlKHN0cnVjdCB2bV9zdHJ1Y3QNCj4gKmFyZWEsIGdm cF90IGdmcF9tYXNrLA0KPiDCoAlyZXR1cm4gTlVMTDsNCj4gwqB9DQo+IMKgDQo+ICtzdGF0aWMg Ym9vbCBwdm1fZmluZF9uZXh0X3ByZXYodW5zaWduZWQgbG9uZyBlbmQsDQo+ICsJCQnCoMKgwqDC oMKgwqDCoHN0cnVjdCB2bWFwX2FyZWEgKipwbmV4dCwNCj4gKwkJCcKgwqDCoMKgwqDCoMKgc3Ry dWN0IHZtYXBfYXJlYSAqKnBwcmV2KTsNCj4gKw0KPiArLyogVHJ5IHRvIGFsbG9jYXRlIGEgcmVn aW9uIG9mIEtWQSBvZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgYW5kIHNpemUuICovDQo+ICtzdGF0 aWMgc3RydWN0IHZtYXBfYXJlYSAqdHJ5X2FsbG9jX3ZtYXBfYXJlYSh1bnNpZ25lZCBsb25nIGFk ZHIsDQo+ICsJCQkJdW5zaWduZWQgbG9uZyBzaXplLCBpbnQgbm9kZSwgZ2ZwX3QgZ2ZwX21hc2ss DQo+ICsJCQkJaW50IHRyeV9wdXJnZSkNCj4gK3sNCj4gKwlzdHJ1Y3Qgdm1hcF9hcmVhICp2YTsN Cj4gKwlzdHJ1Y3Qgdm1hcF9hcmVhICpjdXJfdmEgPSBOVUxMOw0KPiArCXN0cnVjdCB2bWFwX2Fy ZWEgKmZpcnN0X2JlZm9yZSA9IE5VTEw7DQo+ICsJaW50IG5lZWRfcHVyZ2UgPSAwOw0KPiArCWlu dCBibG9ja2VkID0gMDsNCj4gKwlpbnQgcHVyZ2VkID0gMDsNCj4gKwl1bnNpZ25lZCBsb25nIGFk ZHJfZW5kOw0KPiArDQo+ICsJV0FSTl9PTighc2l6ZSk7DQo+ICsJV0FSTl9PTihvZmZzZXRfaW5f cGFnZShzaXplKSk7DQo+ICsNCj4gKwlhZGRyX2VuZCA9IGFkZHIgKyBzaXplOw0KPiArCWlmIChh ZGRyID4gYWRkcl9lbmQpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FT1ZFUkZMT1cpOw0KPiArDQo+ ICsJbWlnaHRfc2xlZXAoKTsNCj4gKw0KPiArCXZhID0ga21hbGxvY19ub2RlKHNpemVvZihzdHJ1 Y3Qgdm1hcF9hcmVhKSwNCj4gKwkJCWdmcF9tYXNrICYgR0ZQX1JFQ0xBSU1fTUFTSywgbm9kZSk7 DQo+ICsJaWYgKHVubGlrZWx5KCF2YSkpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0K PiArDQo+ICsJLyoNCj4gKwnCoCogT25seSBzY2FuIHRoZSByZWxldmFudCBwYXJ0cyBjb250YWlu aW5nIHBvaW50ZXJzIHRvIG90aGVyIG9iamVjdHMNCj4gKwnCoCogdG8gYXZvaWQgZmFsc2UgbmVn YXRpdmVzLg0KPiArCcKgKi8NCj4gKwlrbWVtbGVha19zY2FuX2FyZWEoJnZhLT5yYl9ub2RlLCBT SVpFX01BWCwgZ2ZwX21hc2sgJg0KPiBHRlBfUkVDTEFJTV9NQVNLKTsNCj4gKw0KPiArcmV0cnk6 DQo+ICsJc3Bpbl9sb2NrKCZ2bWFwX2FyZWFfbG9jayk7DQo+ICsNCj4gKwlwdm1fZmluZF9uZXh0 X3ByZXYoYWRkciwgJmN1cl92YSwgJmZpcnN0X2JlZm9yZSk7DQo+ICsNCj4gKwlpZiAoIWN1cl92 YSkNCj4gKwkJZ290byBmb3VuZDsNCj4gKw0KPiArCS8qDQo+ICsJwqAqIElmIHRoZXJlIGlzIG5v IFZBIHRoYXQgc3RhcnRzIGJlZm9yZSB0aGUgdGFyZ2V0IGFkZHJlc3MsIHN0YXJ0IHRoZQ0KPiAr CcKgKiBjaGVjayBmcm9tIHRoZSBjbG9zZXN0IFZBIGluIG9yZGVyIHRvIGNvdmVyIHRoZSBjYXNl IHdoZXJlIHRoZQ0KPiArCcKgKiBhbGxvY2F0aW9uIG92ZXJsYXBzIGF0IHRoZSBlbmQuDQo+ICsJ wqAqLw0KPiArCWlmIChmaXJzdF9iZWZvcmUgJiYgYWRkciA8IGZpcnN0X2JlZm9yZS0+dmFfZW5k KQ0KPiArCQljdXJfdmEgPSBmaXJzdF9iZWZvcmU7DQo+ICsNCj4gKwkvKiBMaW5lYXJseSBzZWFy Y2ggdGhyb3VnaCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgYSBob2xlICovDQo+ICsJd2hpbGUgKGN1 cl92YS0+dmFfc3RhcnQgPCBhZGRyX2VuZCkgew0KPiArCQlpZiAoY3VyX3ZhLT52YV9lbmQgPiBh ZGRyKSB7DQo+ICsJCQlpZiAoY3VyX3ZhLT5mbGFncyAmIFZNX0xBWllfRlJFRSkgew0KPiArCQkJ CW5lZWRfcHVyZ2UgPSAxOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlibG9ja2VkID0gMTsNCj4g KwkJCQlicmVhazsNCj4gKwkJCX0NCj4gKwkJfQ0KPiArDQo+ICsJCWlmIChsaXN0X2lzX2xhc3Qo JmN1cl92YS0+bGlzdCwgJnZtYXBfYXJlYV9saXN0KSkNCj4gKwkJCWJyZWFrOw0KPiArDQo+ICsJ CWN1cl92YSA9IGxpc3RfbmV4dF9lbnRyeShjdXJfdmEsIGxpc3QpOw0KPiArCX0NCj4gKw0KPiAr CS8qDQo+ICsJwqAqIElmIGEgbm9uLWxhenkgZnJlZSB2YSBibG9ja3MgdGhlIGFsbG9jYXRpb24s IG9yDQo+ICsJwqAqIHdlIGFyZSBub3Qgc3VwcG9zZWQgdG8gcHVyZ2UsIGJ1dCB3ZSBuZWVkIHRv LCB0aGUNCj4gKwnCoCogYWxsb2NhdGlvbiBmYWlscy4NCj4gKwnCoCovDQo+ICsJaWYgKGJsb2Nr ZWQgfHwgKG5lZWRfcHVyZ2UgJiYgIXRyeV9wdXJnZSkpDQo+ICsJCWdvdG8gZmFpbDsNCj4gKw0K PiArCWlmICh0cnlfcHVyZ2UgJiYgbmVlZF9wdXJnZSkgew0KPiArCQkvKiBpZiBwdXJnZWQgb25j ZSBiZWZvcmUsIGdpdmUgdXAgKi8NCj4gKwkJaWYgKHB1cmdlZCkNCj4gKwkJCWdvdG8gZmFpbDsN Cj4gKw0KPiArCQkvKg0KPiArCQnCoCogSWYgdGhlIHZhIGJsb2NraW5nIHRoZSBhbGxvY2F0aW9u IGlzIHNldCB0bw0KPiArCQnCoCogYmUgcHVyZ2VkIHRoZW4gcHVyZ2UgYWxsIHZtYXBfYXJlYXMg dGhhdCBhcmUNCj4gKwkJwqAqIHNldCB0byBwdXJnZWQgc2luY2UgdGhpcyB3aWxsIGZsdXNoIHRo ZSBUTEJzDQo+ICsJCcKgKiBhbnl3YXkuDQo+ICsJCcKgKi8NCj4gKwkJc3Bpbl91bmxvY2soJnZt YXBfYXJlYV9sb2NrKTsNCj4gKwkJcHVyZ2Vfdm1hcF9hcmVhX2xhenkoKTsNCj4gKwkJbmVlZF9w dXJnZSA9IDA7DQo+ICsJCXB1cmdlZCA9IDE7DQo+ICsJCWdvdG8gcmV0cnk7DQo+ICsJfQ0KPiAr DQo+ICtmb3VuZDoNCj4gKwl2YS0+dmFfc3RhcnQgPSBhZGRyOw0KPiArCXZhLT52YV9lbmQgPSBh ZGRyX2VuZDsNCj4gKwl2YS0+ZmxhZ3MgPSAwOw0KPiArCV9faW5zZXJ0X3ZtYXBfYXJlYSh2YSk7 DQo+ICsJc3Bpbl91bmxvY2soJnZtYXBfYXJlYV9sb2NrKTsNCj4gKw0KPiArCXJldHVybiB2YTsN Cj4gK2ZhaWw6DQo+ICsJc3Bpbl91bmxvY2soJnZtYXBfYXJlYV9sb2NrKTsNCj4gKwlrZnJlZSh2 YSk7DQo+ICsJaWYgKG5lZWRfcHVyZ2UgJiYgIWJsb2NrZWQpDQo+ICsJCXJldHVybiBFUlJfUFRS KC1FVUNMRUFOKTsNCj4gKwlyZXR1cm4gRVJSX1BUUigtRUJVU1kpOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAqCV9fdm1hbGxvY190cnlfYWRkcsKgwqAtwqDCoHRyeSB0byBhbGxvYyBhdCBhIHNw ZWNpZmljIGFkZHJlc3MNCj4gKyAqCUBhZGRyOgkJYWRkcmVzcyB0byB0cnkNCj4gKyAqCUBzaXpl OgkJc2l6ZSB0byB0cnkNCj4gKyAqCUBnZnBfbWFzazoJZmxhZ3MgZm9yIHRoZSBwYWdlIGxldmVs IGFsbG9jYXRvcg0KPiArICoJQHByb3Q6CQlwcm90ZWN0aW9uIG1hc2sgZm9yIHRoZSBhbGxvY2F0 ZWQgcGFnZXMNCj4gKyAqCUB2bV9mbGFnczoJYWRkaXRpb25hbCB2bSBhcmVhIGZsYWdzIChlLmcu ICVWTV9OT19HVUFSRCkNCj4gKyAqCUBub2RlOgkJbm9kZSB0byB1c2UgZm9yIGFsbG9jYXRpb24g b3IgTlVNQV9OT19OT0RFDQo+ICsgKglAdHJ5X3B1cmdlOgl0cnkgdG8gcHVyZ2UgaWYgbmVlZGVk IHRvIGZ1bGZpbGwgYW5kIGFsbG9jYXRpb24NCj4gKyAqCUBjYWxsZXI6CWNhbGxlcidzIHJldHVy biBhZGRyZXNzDQo+ICsgKg0KPiArICoJVHJ5IHRvIGFsbG9jYXRlIGF0IHRoZSBzcGVjaWZpYyBh ZGRyZXNzLiBJZiBpdCBzdWNjZWVkcyB0aGUgYWRkcmVzcw0KPiBpcw0KPiArICoJcmV0dXJuZWQu IElmIGl0IGZhaWxzIGFuIEVCVVNZIEVSUl9QVFIgaXMgcmV0dXJuZWQuIElmIHRyeV9wdXJnZSBp cw0KPiArICoJemVybywgaXQgd2lsbCByZXR1cm4gYW4gRVVDTEVBTiBFUlJfUFRSIGlmIGl0IGNv dWxkIGhhdmUgYWxsb2NhdGVkDQo+IGlmIGl0DQo+ICsgKgl3YXMgYWxsb3dlZCB0byBwdXJnZS4g SXQgbWF5IHRyaWdnZXIgVExCIGZsdXNoZXMgaWYgYSBwdXJnZSBpcw0KPiBuZWVkZWQsDQo+ICsg KglhbmQgdHJ5X3B1cmdlIGlzIHNldC4NCj4gKyAqLw0KPiArdm9pZCAqX192bWFsbG9jX25vZGVf dHJ5X2FkZHIodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsDQo+ICsJCQln ZnBfdCBnZnBfbWFzaywJcGdwcm90X3QgcHJvdCwgdW5zaWduZWQgbG9uZw0KPiB2bV9mbGFncywN Cj4gKwkJCWludCBub2RlLCBpbnQgdHJ5X3B1cmdlLCBjb25zdCB2b2lkICpjYWxsZXIpDQo+ICt7 DQo+ICsJc3RydWN0IHZtYXBfYXJlYSAqdmE7DQo+ICsJc3RydWN0IHZtX3N0cnVjdCAqYXJlYTsN Cj4gKwl2b2lkICphbGxvY19hZGRyOw0KPiArCXVuc2lnbmVkIGxvbmcgcmVhbF9zaXplID0gc2l6 ZTsNCj4gKw0KPiArCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOw0KPiArCWlmICghc2l6ZSB8fCAo c2l6ZSA+PiBQQUdFX1NISUZUKSA+IHRvdGFscmFtX3BhZ2VzKQ0KPiArCQlyZXR1cm4gTlVMTDsN Cj4gKw0KPiArCVdBUk5fT04oaW5faW50ZXJydXB0KCkpOw0KPiArDQo+ICsJaWYgKCEodm1fZmxh Z3MgJiBWTV9OT19HVUFSRCkpDQo+ICsJCXNpemUgKz0gUEFHRV9TSVpFOw0KPiArDQo+ICsJdmEg PSB0cnlfYWxsb2Nfdm1hcF9hcmVhKGFkZHIsIHNpemUsIG5vZGUsIGdmcF9tYXNrLCB0cnlfcHVy Z2UpOw0KPiArCWlmIChJU19FUlIodmEpKQ0KPiArCQlnb3RvIGZhaWw7DQo+ICsNCj4gKwlhcmVh ID0ga3phbGxvY19ub2RlKHNpemVvZigqYXJlYSksIGdmcF9tYXNrICYgR0ZQX1JFQ0xBSU1fTUFT SywNCj4gbm9kZSk7DQo+ICsJaWYgKHVubGlrZWx5KCFhcmVhKSkgew0KPiArCQl3YXJuX2FsbG9j KGdmcF9tYXNrLCBOVUxMLCAia21hbGxvYzogYWxsb2NhdGlvbiBmYWlsdXJlIik7DQo+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPiArCX0NCj4gKw0KPiArCXNldHVwX3ZtYWxsb2Nfdm0o YXJlYSwgdmEsIHZtX2ZsYWdzLCBjYWxsZXIpOw0KPiArDQo+ICsJYWxsb2NfYWRkciA9IF9fdm1h bGxvY19hcmVhX25vZGUoYXJlYSwgZ2ZwX21hc2ssIHByb3QsIG5vZGUpOw0KPiArCWlmICghYWxs b2NfYWRkcikgew0KPiArCQl3YXJuX2FsbG9jKGdmcF9tYXNrLCBOVUxMLA0KPiArCQkJInZtYWxs b2M6IGFsbG9jYXRpb24gZmFpbHVyZTogJWx1IGJ5dGVzIiwgcmVhbF9zaXplKTsNCj4gKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+ICsJfQ0KPiArDQo+ICsJY2xlYXJfdm1fdW5pbml0aWFs aXplZF9mbGFnKGFyZWEpOw0KPiArDQo+ICsJa21lbWxlYWtfdm1hbGxvYyhhcmVhLCByZWFsX3Np emUsIGdmcF9tYXNrKTsNCj4gKw0KPiArCXJldHVybiBhbGxvY19hZGRyOw0KPiArZmFpbDoNCj4g KwlyZXR1cm4gdmE7DQo+ICt9DQo+ICsNCj4gwqAvKioNCj4gwqAgKglfX3ZtYWxsb2Nfbm9kZV9y YW5nZcKgwqAtwqDCoGFsbG9jYXRlIHZpcnR1YWxseSBjb250aWd1b3VzIG1lbW9yeQ0KPiDCoCAq CUBzaXplOgkJYWxsb2NhdGlvbiBzaXplDQo+IEBAIC0yMzU1LDcgKzI1MzAsNiBAQCB2b2lkIGZy ZWVfdm1fYXJlYShzdHJ1Y3Qgdm1fc3RydWN0ICphcmVhKQ0KPiDCoH0NCj4gwqBFWFBPUlRfU1lN Qk9MX0dQTChmcmVlX3ZtX2FyZWEpOw0KPiDCoA0KPiAtI2lmZGVmIENPTkZJR19TTVANCj4gwqBz dGF0aWMgc3RydWN0IHZtYXBfYXJlYSAqbm9kZV90b192YShzdHJ1Y3QgcmJfbm9kZSAqbikNCj4g wqB7DQo+IMKgCXJldHVybiByYl9lbnRyeV9zYWZlKG4sIHN0cnVjdCB2bWFwX2FyZWEsIHJiX25v ZGUpOw0KPiBAQCAtMjQwMyw2ICsyNTc3LDcgQEAgc3RhdGljIGJvb2wgcHZtX2ZpbmRfbmV4dF9w cmV2KHVuc2lnbmVkIGxvbmcgZW5kLA0KPiDCoAlyZXR1cm4gdHJ1ZTsNCj4gwqB9DQo+IMKgDQo+ ICsjaWZkZWYgQ09ORklHX1NNUA0KPiDCoC8qKg0KPiDCoCAqIHB2bV9kZXRlcm1pbmVfZW5kIC0g ZmluZCB0aGUgaGlnaGVzdCBhbGlnbmVkIGFkZHJlc3MgYmV0d2VlbiB0d28NCj4gdm1hcF9hcmVh cw0KPiDCoCAqIEBwbmV4dDogaW4vb3V0IGFyZyBmb3IgdGhlIG5leHQgdm1hcF9hcmVh