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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8658FC31E4B for ; Fri, 14 Jun 2019 21:02:59 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 50F7D217D6 for ; Fri, 14 Jun 2019 21:02:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="UyOo/C3Q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 50F7D217D6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hbtLO-0001O1-8p; Fri, 14 Jun 2019 21:02:42 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hbtLN-0001Nu-NQ for xen-devel@lists.xenproject.org; Fri, 14 Jun 2019 21:02:41 +0000 X-Inumbo-ID: be97192b-8ee7-11e9-8980-bc764e045a96 Received: from mail.kernel.org (unknown [198.145.29.99]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id be97192b-8ee7-11e9-8980-bc764e045a96; Fri, 14 Jun 2019 21:02:40 +0000 (UTC) Received: from localhost (c-67-164-102-47.hsd1.ca.comcast.net [67.164.102.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4A10720644; Fri, 14 Jun 2019 21:02:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560546159; bh=XA0HSRkbEbqNVXOdFE/HTgKaHfZrD0RwoGH1vRH4cO4=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=UyOo/C3Qo68nAkL/QhJuKZsMqz9AsSQ07mFt1a+MSFIPMkTcyp9rRtHO4d1aG7B+m b0I7dWaFH0rhtuKQpz6wlZeU3P9s6plr4IBjUwRcx+Ksfb/F1ApTh6VINNGv5XtK+h 4WtqLq3obQ8zFgbIn0pza37GlLaMy+NNwuL7HQRc= Date: Fri, 14 Jun 2019 14:02:38 -0700 (PDT) From: Stefano Stabellini X-X-Sender: sstabellini@sstabellini-ThinkPad-T480s To: Julien Grall In-Reply-To: <20190614175144.20046-4-julien.grall@arm.com> Message-ID: References: <20190614175144.20046-1-julien.grall@arm.com> <20190614175144.20046-4-julien.grall@arm.com> User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Subject: Re: [Xen-devel] [PATCH MM-PART3 v3 3/9] xen/arm: mm: Sanity check any update of Xen page tables X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: xen-devel@lists.xenproject.org, Stefano Stabellini , Andrii Anisov , Oleksandr_Tyshchenko@epam.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gRnJpLCAxNCBKdW4gMjAxOSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IFRoZSBjb2RlIGhhbmRs aW5nIFhlbiBQVCB1cGRhdGUgaGFzIHF1aXRlIGEgZmV3IHJlc3RyaWN0aW9ucyBvbiB3aGF0IGl0 Cj4gY2FuIGRvLiBUaGlzIGlzIG5vdCBhIGJhZCB0aGluZyBhcyBpdCBrZWVwcyB0aGUgY29kZSBz aW1wbGUuCj4gCj4gVGhlcmUgYXJlIGFscmVhZHkgYSBmZXcgY2hlY2tzIHNjYXR0ZXJlZCBpbiBj dXJyZW50IHBhZ2UgdGFibGUgaGFuZGxpbmcuCj4gSG93ZXZlciB0aGV5IGFyZSBub3Qgc3VmZmlj aWVudCBhcyB0aGV5IGNvdWxkIHN0aWxsIGFsbG93IHRvCj4gbW9kaWZ5L3JlbW92ZSBlbnRyeSB3 aXRoIGNvbnRpZ3VvdXMgYml0IHNldC4KPiAKPiBUaGUgY2hlY2tzIGFyZSBkaXZpZGVkIGluIHR3 byBzZXRzOgo+ICAgICAtIHBlciBlbnRyeSBjaGVjazogVGhleSBhcmUgZ2F0aGVyZWQgaW4gYSBu ZXcgZnVuY3Rpb24gdGhhdCB3aWxsCj4gICAgIGNoZWNrIHdoZXRoZXIgYW4gdXBkYXRlIGlzIHZh bGlkIGJhc2VkIG9uIHRoZSBmbGFncyBwYXNzZWQgYW5kIHRoZQo+ICAgICBjdXJyZW50IHZhbHVl IG9mIGFuIGVudHJ5Lgo+ICAgICAtIGdsb2JhbCBjaGVjazogVGhleSBhcmUgc2FuaXR5IGNoZWNr IG9uIHhlbl9wdF91cGRhdGUoKSBwYXJhbWV0ZXJzLgo+IAo+IEFkZGl0aW9uYWxseSB0byBjb250 aWd1b3VzIGNoZWNrLCB3ZSBhbHNvIG5vdyBjaGVjayB0aGF0IHRoZSBjYWxsZXIgaXMKPiBub3Qg dHJ5aW5nIHRvIG1vZGlmeSB0aGUgbWVtb3J5IGF0dHJpYnV0ZXMgb2YgYW4gZW50cnkuCj4gCj4g TGFzdGx5LCBpdCB3YXMgcHJvYmFibHkgYSBiaXQgb3ZlciB0aGUgdG9wIHRvIGZvcmJpZCByZW1v dmluZyBhbgo+IGludmFsaWQgbWFwcGluZy4gVGhpcyBjb3VsZCBqdXN0IGJlIGlnbm9yZWQuIFRo ZSBuZXcgYmVoYXZpb3Igd2lsbCBiZQo+IGhlbHBmdWwgaW4gZnV0dXJlIGNoYW5nZXMuCj4gCj4g U2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBSZXZp ZXdlZC1ieTogQW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KClJldmlld2Vk LWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgoKPiAtLS0K PiAgICAgQ2hhbmdlcyBpbiB2MzoKPiAgICAgICAgIC0gT25seSBhbGxvdyBtb2RpZmljYXRpb24g b24gdmFsaWQgZW50cnkKPiAKPiAgICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAgICAgIC0gQ29ycmVj dGx5IGRldGVjdCB0aGUgcmVtb3ZhbCBvZiBhIHBhZ2UKPiAgICAgICAgIC0gRml4IEFTU0VSVCBv biBmbGFncyBpbiB0aGUgZWxzZSBjYXNlCj4gICAgICAgICAtIEFkZCBBbmRyaWkncyByZXZpZXdl ZC1ieQo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vbW0uYyB8IDEyMiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEw NCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IGluZGV4IGIxM2Q5YWRmNDAuLmRjZjA0 MTU3OGIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21tLmMKPiArKysgYi94ZW4vYXJjaC9h cm0vbW0uYwo+IEBAIC01MCw2ICs1MCwxOSBAQAo+ICAjdW5kZWYgbWZuX3RvX3ZpcnQKPiAgI2Rl ZmluZSBtZm5fdG9fdmlydChtZm4pIF9fbWZuX3RvX3ZpcnQobWZuX3gobWZuKSkKPiAgCj4gKyNp ZmRlZiBOREVCVUcKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK19fYXR0cmlidXRlX18gKChfX2Zv cm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpCj4gK21tX3ByaW50ayhjb25zdCBjaGFyICpmbXQs IC4uLikge30KPiArI2Vsc2UKPiArI2RlZmluZSBtbV9wcmludGsoZm10LCBhcmdzLi4uKSAgICAg ICAgICAgICBcCj4gKyAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg ICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIGZtdCwgIyMgYXJncyk7ICBcCj4gKyAgICAgICAgV0FS TigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgfSB3aGlsZSAoMCk7Cj4g KyNlbmRpZgo+ICsKPiAgI2RlZmluZSBERUZJTkVfUEFHRV9UQUJMRVMobmFtZSwgbnIpICAgICAg ICAgICAgICAgICAgICBcCj4gIGxwYWVfdCBfX2FsaWduZWQoUEFHRV9TSVpFKSBuYW1lW0xQQUVf RU5UUklFUyAqIChucildCj4gIAo+IEBAIC05NDEsMTIgKzk1NCw4MSBAQCBlbnVtIHhlbm1hcF9v cGVyYXRpb24gewo+ICAgICAgUkVTRVJWRQo+ICB9Owo+ICAKPiArLyogU2FuaXR5IGNoZWNrIG9m IHRoZSBlbnRyeSAqLwo+ICtzdGF0aWMgYm9vbCB4ZW5fcHRfY2hlY2tfZW50cnkobHBhZV90IGVu dHJ5LCBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncykKPiArewo+ICsgICAgLyogU2FuaXR5 IGNoZWNrIHdoZW4gbW9kaWZ5aW5nIGEgcGFnZS4gKi8KPiArICAgIGlmICggKGZsYWdzICYgX1BB R0VfUFJFU0VOVCkgJiYgbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKPiArICAgIHsKPiArICAg ICAgICAvKiBXZSBkb24ndCBhbGxvdyBtb2RpZnlpbmcgYW4gaW52YWxpZCBlbnRyeS4gKi8KPiAr ICAgICAgICBpZiAoICFscGFlX2lzX3ZhbGlkKGVudHJ5KSApCj4gKyAgICAgICAgewo+ICsgICAg ICAgICAgICBtbV9wcmludGsoIk1vZGlmeWluZyBpbnZhbGlkIGVudHJ5IGlzIG5vdCBhbGxvd2Vk LlxuIik7Cj4gKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiArICAgICAgICB9Cj4gKwo+ICsg ICAgICAgIC8qIFdlIGRvbid0IGFsbG93IGNoYW5naW5nIG1lbW9yeSBhdHRyaWJ1dGVzLiAqLwo+ ICsgICAgICAgIGlmICggZW50cnkucHQuYWkgIT0gUEFHRV9BSV9NQVNLKGZsYWdzKSApCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBtbV9wcmludGsoIk1vZGlmeWluZyBtZW1vcnkgYXR0cmli dXRlcyBpcyBub3QgYWxsb3dlZCAoMHgleCAtPiAweCV4KS5cbiIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICBlbnRyeS5wdC5haSwgUEFHRV9BSV9NQVNLKGZsYWdzKSk7Cj4gKyAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0IGFs bG93IG1vZGlmeWluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldC4gKi8KPiArICAgICAg ICBpZiAoIGVudHJ5LnB0LmNvbnRpZyApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBtbV9w cmludGsoIk1vZGlmeWluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldCBpcyBub3QgYWxs b3dlZC5cbiIpOwo+ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsgICAgLyogU2FuaXR5IGNoZWNrIHdoZW4gaW5zZXJ0aW5nIGEgcGFnZSAqLwo+ICsg ICAgZWxzZSBpZiAoIGZsYWdzICYgX1BBR0VfUFJFU0VOVCApCj4gKyAgICB7Cj4gKyAgICAgICAg LyogV2Ugc2hvdWxkIGJlIGhlcmUgd2l0aCBhIHZhbGlkIE1GTi4gKi8KPiArICAgICAgICBBU1NF UlQoIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSk7Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0 IGFsbG93IHJlcGxhY2luZyBhbnkgdmFsaWQgZW50cnkuICovCj4gKyAgICAgICAgaWYgKCBscGFl X2lzX3ZhbGlkKGVudHJ5KSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBtbV9wcmludGso IkNoYW5naW5nIE1GTiBmb3IgYSB2YWxpZCBlbnRyeSBpcyBub3QgYWxsb3dlZCAoJSMiUFJJX21m biIgLT4gJSMiUFJJX21mbiIpLlxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgIG1mbl94KGxw YWVfZ2V0X21mbihlbnRyeSkpLCBtZm5feChtZm4pKTsKPiArICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIC8qIFNhbml0eSBjaGVjayB3aGVuIHJl bW92aW5nIGEgcGFnZS4gKi8KPiArICAgIGVsc2UgaWYgKCAoZmxhZ3MgJiAoX1BBR0VfUFJFU0VO VHxfUEFHRV9QT1BVTEFURSkpID09IDAgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIFdlIHNob3Vs ZCBiZSBoZXJlIHdpdGggYW4gaW52YWxpZCBNRk4uICovCj4gKyAgICAgICAgQVNTRVJUKG1mbl9l cShtZm4sIElOVkFMSURfTUZOKSk7Cj4gKwo+ICsgICAgICAgIC8qIFdlIGRvbid0IGFsbG93IHJl bW92aW5nIHBhZ2Ugd2l0aCBjb250aWd1b3VzIGJpdCBzZXQuICovCj4gKyAgICAgICAgaWYgKCBl bnRyeS5wdC5jb250aWcgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgbW1fcHJpbnRrKCJS ZW1vdmluZyBlbnRyeSB3aXRoIGNvbnRpZ3VvdXMgYml0IHNldCBpcyBub3QgYWxsb3dlZC5cbiIp Owo+ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsg ICAgLyogU2FuaXR5IGNoZWNrIHdoZW4gcG9wdWxhdGluZyB0aGUgcGFnZS10YWJsZS4gTm8gY2hl Y2sgc28gZmFyLiAqLwo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIEFTU0VSVChmbGFn cyAmIF9QQUdFX1BPUFVMQVRFKTsKPiArICAgICAgICAvKiBXZSBzaG91bGQgYmUgaGVyZSB3aXRo IGFuIGludmFsaWQgTUZOICovCj4gKyAgICAgICAgQVNTRVJUKG1mbl9lcShtZm4sIElOVkFMSURf TUZOKSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIHN0YXRp YyBpbnQgeGVuX3B0X3VwZGF0ZV9lbnRyeShlbnVtIHhlbm1hcF9vcGVyYXRpb24gb3AsIHVuc2ln bmVkIGxvbmcgYWRkciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IG1m biwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICB7Cj4gICAgICBscGFlX3QgcHRlLCAqZW50cnk7Cj4g ICAgICBscGFlX3QgKnRoaXJkID0gTlVMTDsKPiAgCj4gKyAgICAvKiBfUEFHRV9QT1BVTEFURSBh bmQgX1BBR0VfUFJFU0VOVCBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvZ2V0aGVyLiAqLwo+ICsgICAg QVNTRVJUKChmbGFncyAmIChfUEFHRV9QT1BVTEFURXxfUEFHRV9QUkVTRU5UKSkgIT0gKF9QQUdF X1BPUFVMQVRFfF9QQUdFX1BSRVNFTlQpKTsKPiArCj4gICAgICBlbnRyeSA9ICZ4ZW5fc2Vjb25k W3NlY29uZF9saW5lYXJfb2Zmc2V0KGFkZHIpXTsKPiAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQo KmVudHJ5KSB8fCAhbHBhZV9pc190YWJsZSgqZW50cnksIDIpICkKPiAgICAgIHsKPiBAQCAtOTYy LDE1ICsxMDQ0LDEyIEBAIHN0YXRpYyBpbnQgeGVuX3B0X3VwZGF0ZV9lbnRyeShlbnVtIHhlbm1h cF9vcGVyYXRpb24gb3AsIHVuc2lnbmVkIGxvbmcgYWRkciwKPiAgICAgIHRoaXJkID0gbWZuX3Rv X3ZpcnQobHBhZV9nZXRfbWZuKCplbnRyeSkpOwo+ICAgICAgZW50cnkgPSAmdGhpcmRbdGhpcmRf dGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAgCj4gKyAgICBpZiAoICF4ZW5fcHRfY2hlY2tfZW50cnko KmVudHJ5LCBtZm4sIGZsYWdzKSApCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICAg ICAgc3dpdGNoICggb3AgKSB7Cj4gICAgICAgICAgY2FzZSBJTlNFUlQ6Cj4gICAgICAgICAgY2Fz ZSBSRVNFUlZFOgo+IC0gICAgICAgICAgICBpZiAoIGxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCj4g LSAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIHByaW50aygiJXM6IHRyeWluZyB0byBy ZXBsYWNlIGFuIGV4aXN0aW5nIG1hcHBpbmcgYWRkcj0lbHggbWZuPSUiUFJJX21mbiJcbiIsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIsIG1mbl94KG1mbikpOwo+IC0g ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICAgICAgIH0KPiAgICAgICAg ICAgICAgaWYgKCBvcCA9PSBSRVNFUlZFICkKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAg ICAgICAgICAgICBwdGUgPSBtZm5fdG9feGVuX2VudHJ5KG1mbiwgUEFHRV9BSV9NQVNLKGZsYWdz KSk7Cj4gQEAgLTk4MiwxMiArMTA2MSw2IEBAIHN0YXRpYyBpbnQgeGVuX3B0X3VwZGF0ZV9lbnRy eShlbnVtIHhlbm1hcF9vcGVyYXRpb24gb3AsIHVuc2lnbmVkIGxvbmcgYWRkciwKPiAgICAgICAg ICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSBNT0RJRlk6Cj4gICAgICAgICAgY2FzZSBSRU1P VkU6Cj4gLSAgICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCj4gLSAgICAg ICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIHByaW50aygiJXM6IHRyeWluZyB0byAlcyBhIG5v bi1leGlzdGluZyBtYXBwaW5nIGFkZHI9JWx4XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCBvcCA9PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnkiLCBhZGRyKTsKPiAt ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgICAgICB9Cj4gICAgICAg ICAgICAgIGlmICggb3AgPT0gUkVNT1ZFICkKPiAgICAgICAgICAgICAgICAgIHB0ZS5iaXRzID0g MDsKPiAgICAgICAgICAgICAgZWxzZQo+IEBAIC05OTUsMTIgKzEwNjgsNiBAQCBzdGF0aWMgaW50 IHhlbl9wdF91cGRhdGVfZW50cnkoZW51bSB4ZW5tYXBfb3BlcmF0aW9uIG9wLCB1bnNpZ25lZCBs b25nIGFkZHIsCj4gICAgICAgICAgICAgICAgICBwdGUgPSAqZW50cnk7Cj4gICAgICAgICAgICAg ICAgICBwdGUucHQucm8gPSBQQUdFX1JPX01BU0soZmxhZ3MpOwo+ICAgICAgICAgICAgICAgICAg cHRlLnB0LnhuID0gUEFHRV9YTl9NQVNLKGZsYWdzKTsKPiAtICAgICAgICAgICAgICAgIGlmICgg IXB0ZS5wdC5ybyAmJiAhcHRlLnB0LnhuICkKPiAtICAgICAgICAgICAgICAgIHsKPiAtICAgICAg ICAgICAgICAgICAgICBwcmludGsoIiVzOiBJbmNvcnJlY3QgY29tYmluYXRpb24gZm9yIGFkZHI9 JWx4XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYWRkcik7Cj4g LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICAgICAgICAgICB9 Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgd3JpdGVfcHRlKGVudHJ5LCBwdGUpOwo+ ICAgICAgICAgICAgICBicmVhazsKPiBAQCAtMTAyMiw2ICsxMDg5LDI1IEBAIHN0YXRpYyBpbnQg eGVuX3B0X3VwZGF0ZShlbnVtIHhlbm1hcF9vcGVyYXRpb24gb3AsCj4gICAgICBpbnQgcmMgPSAw Owo+ICAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gdmlydCwgYWRkcl9lbmQgPSBhZGRyICsgbnJf bWZucyAqIFBBR0VfU0laRTsKPiAgCj4gKyAgICAvKgo+ICsgICAgICogVGhlIGhhcmR3YXJlIHdh cyBjb25maWd1cmVkIHRvIGZvcmJpZCBtYXBwaW5nIGJvdGggd3JpdGVhYmxlIGFuZAo+ICsgICAg ICogZXhlY3V0YWJsZS4KPiArICAgICAqIFdoZW4gbW9kaWZ5aW5nL2NyZWF0aW5nIG1hcHBpbmcg KGkuZSBfUEFHRV9QUkVTRU5UIGlzIHNldCksCj4gKyAgICAgKiBwcmV2ZW50IGFueSB1cGRhdGUg aWYgdGhpcyBoYXBwZW4uCj4gKyAgICAgKi8KPiArICAgIGlmICggKGZsYWdzICYgX1BBR0VfUFJF U0VOVCkgJiYgIVBBR0VfUk9fTUFTSyhmbGFncykgJiYKPiArICAgICAgICAgIVBBR0VfWE5fTUFT SyhmbGFncykgKQo+ICsgICAgewo+ICsgICAgICAgIG1tX3ByaW50aygiTWFwcGluZ3Mgc2hvdWxk IG5vdCBiZSBib3RoIFdyaXRlYWJsZSBhbmQgRXhlY3V0YWJsZS5cbiIpOwo+ICsgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggIUlTX0FMSUdORUQodmlydCwg UEFHRV9TSVpFKSApCj4gKyAgICB7Cj4gKyAgICAgICAgbW1fcHJpbnRrKCJUaGUgdmlydHVhbCBh ZGRyZXNzIGlzIG5vdCBhbGlnbmVkIHRvIHRoZSBwYWdlLXNpemUuXG4iKTsKPiArICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiArICAgIH0KPiArCj4gICAgICBzcGluX2xvY2soJnhlbl9wdF9sb2Nr KTsKPiAgCj4gICAgICBmb3IoIDsgYWRkciA8IGFkZHJfZW5kOyBhZGRyICs9IFBBR0VfU0laRSAp Cj4gLS0gCj4gMi4xMS4wCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVu LWRldmVs