From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C00E4A0C4D; Mon, 6 Sep 2021 05:54:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 838EA40E32; Mon, 6 Sep 2021 05:54:59 +0200 (CEST) Received: from m13193.mail.163.com (m13193.mail.163.com [220.181.13.193]) by mails.dpdk.org (Postfix) with ESMTP id 1EE8340C35 for ; Mon, 6 Sep 2021 05:54:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=zyXyn WJeqeRvbn3BWq/sU2r3nePdj/sW3H5MY4JPEgA=; b=AWr7WFCB3dSfBlYty24P0 MXv6xyvIxGPNbHxCcj4xT8KQk0IEOHZXhLKWaA1vepD0y0WofgaKFL4K7rQyHMhT marapvWnlBQdm/7yrvMl32xgGLQ83QED51SoVxoGBrtmEMNaFP0h2j1LQApNouCq /TY/YngoPtA6T4rKs6aGfE= Received: from gaoxiangliu0$163.com ( [2409:8928:c92:5558:6586:259:7f04:f9e2] ) by ajax-webmail-wmsvr193 (Coremail) ; Mon, 6 Sep 2021 11:54:40 +0800 (GMT+08:00) X-Originating-IP: [2409:8928:c92:5558:6586:259:7f04:f9e2] Date: Mon, 6 Sep 2021 11:54:40 +0800 (GMT+08:00) From: "Gaoxiang Liu" To: "Xia, Chenbo" Cc: "maxime.coquelin@redhat.com" , "dev@dpdk.org" , "liugaoxiang@huawei.com" X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.13 build 20210622(1d4788a8) Copyright (c) 2002-2021 www.mailtech.cn 163com In-Reply-To: References: <20210820154615.551-1-gaoxiangliu0@163.com> <20210827141925.1500-1-gaoxiangliu0@163.com> <120eb1f4.155.17ba7294da6.Coremail.gaoxiangliu0@163.com> MIME-Version: 1.0 Message-ID: <65ad2c8b.7034.17bb93e6a16.Coremail.gaoxiangliu0@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: wcGowACHIB8BkTVhxL_xAA--.41413W X-CM-SenderInfo: xjdr5xxdqjzxjxq6il2tof0z/1tbiQx4GOlc7VTHJbQABsM X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-dev] [PATCH v6] vhost: fix crash on port deletion X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQ2hlbmJvLAoKQnV0IHNhbWUgaXNzdWUgaGFwcGVucyB3aGVuIHlvdSBkZWxldGVkICd2c29j a2V0LT5zb2NrZXRfZmQnIGJ1dCBmYWlsZWQgdG8gZGVsZXRlIG9uZQpvZiB0aGUgY29ubl9mZDog eW91IHdpbGwgZ290byBhZ2FpbiBhbmQgdHJ5IHRvIGRlbGV0ZSBzb2NrZXRfZmQgYWdhaW4gYW5k IHRoZW4gbG9vcApmb3JldmVyLiBTbyBhbnl3YXkgeW91IG5lZWQgdG8gcHJldmVudCB0aGlzIGZy b20gaGFwcGVuaW5nLgoKPT0+Ckl0IHdpbGwgbm90IGhhcHBlbiwgYmVjYXVzZSBmZHNldF90cnlf ZGVsIG9ubHkgcmV0dXJucyAtMSB3aGVuIHRoZSBmZCBleGlzdHMgYW5kIGlzIGJ1c3kuCkUuZy4s IHdoZW4gdGhyZWFkMSBkZWxldGVkICd2c29ja2V0LT5zb2NrZXRfZmQnIGJ1dCBmYWlsZWQgdG8g ZGVsZXRlIG9uZSBvZiB0aGUgY29ubl9mZCwKaXQgd2lsbCBnbyB0byBhZ2FpbiBhbmQgdHJ5IHRv IGRlbGV0ZSBzb2NrZXQgYWdhaW4sIGFuZCBpdCB3aWxsIG5vdCBmYWlsLCBiZWNhdXNlICd2c29j a2V0LT5zb2NrZXRfZmQnIGhhcyBiZWVuIGRlbGV0ZWQgYW5kIGZkc2V0X3RyeV9kZWwgcmV0dXJu cyAwLgpUaHJlYWQxIHdpbGwgY29udGludWUgdG8gZGVsZXRlIHRoZSBsZWZ0IGNvbm5fZmQuCgpU aGFua3MuCkdhb3hpYW5nCgoKCgoKCgoKT24gMDkvMDYvMjAyMSAxMToxOCwgWGlhLCBDaGVuYm8g d3JvdGU6CkhpIEdhb3hpYW5nLAoKPgo+Cj5Gcm9tOiBHYW94aWFuZyBMaXUgPGdhb3hpYW5nbGl1 MEAxNjMuY29tPgo+U2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyLCAyMDIxIDExOjM4IFBNCj5U bzogWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwuY29tPgo+Q2M6IG1heGltZS5jb3F1ZWxp bkByZWRoYXQuY29tOyBkZXZAZHBkay5vcmc7IGxpdWdhb3hpYW5nQGh1YXdlaS5jb20KPlN1Ympl Y3Q6IFJlOlJFOiBbUEFUQ0ggdjZdIHZob3N0OiBmaXggY3Jhc2ggb24gcG9ydCBkZWxldGlvbgo+ Cj4KPkhpIGNoZW5ibywKPndoeSB0aGlzIGlzIG5vdCBtb3ZlZCB1cD8KPj4+ICsgICAgICAgICAg aWYgKHZzb2NrZXQtPmlzX3NlcnZlcikgewo+Pj4gKyAgICAgICAgICAgICAgIGNsb3NlKHZzb2Nr ZXQtPnNvY2tldF9mZCk7Cj4+PiArICAgICAgICAgICAgICAgdW5saW5rKHBhdGgpOwo+Pj4gICAg ICAgICAgICB9Cj49PT5CZWNhdXNlIGlmIHRoaXMgaXMgbW92ZWQgdXAsIGFuZCBpZiBkZWxldGlu ZyBjb25uIGZkIGZyb20gZmRzZXRzIGZhaWxlZCwKPml0IHdpbGwgYXJyaXZlIHRoZSAiYWdhaW4i IGxhYmVsLCB0aGVuIGNsb3NlIHZzb2NrZXQtPnNvY2tldF9mZCBhbmQgdXBsaW5rICJwYXRoIiBh Z2Fpbi4KPml0J3Mgbm90IG5lY2Vzc2FyeS4KPkFuZCBjbG9zaW5nIHNvY2tldF9mZCBkb2VzIG5v dCAgdHJpZ2dlciB2aG9zdF91c2VyX3NlcnZlcl9uZXdfY29ubmVjdGlvbi4KCkJ1dCBzYW1lIGlz c3VlIGhhcHBlbnMgd2hlbiB5b3UgZGVsZXRlZCAndnNvY2tldC0+c29ja2V0X2ZkJyBidXQgZmFp bGVkIHRvIGRlbGV0ZSBvbmUKb2YgdGhlIGNvbm5fZmQ6IHlvdSB3aWxsIGdvdG8gYWdhaW4gYW5k IHRyeSB0byBkZWxldGUgc29ja2V0X2ZkIGFnYWluIGFuZCB0aGVuIGxvb3AKZm9yZXZlci4gU28g YW55d2F5IHlvdSBuZWVkIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZy4KClRoYW5rcywK Q2hlbmJvCgo+Cj5UaGFua3MuCj5HYW94aWFuZwoKQXQgMjAyMS0wOC0zMSAxMzozNzozOCwgIlhp YSwgQ2hlbmJvIiA8bWFpbHRvOmNoZW5iby54aWFAaW50ZWwuY29tPiB3cm90ZToKPkhpIEdhb3hp YW5nLAo+Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IEdhb3hpYW5nIExp dSA8bWFpbHRvOmdhb3hpYW5nbGl1MEAxNjMuY29tPgo+PiBTZW50OiBGcmlkYXksIEF1Z3VzdCAy NywgMjAyMSAxMDoxOSBQTQo+PiBUbzogbWFpbHRvOm1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29t OyBYaWEsIENoZW5ibyA8bWFpbHRvOmNoZW5iby54aWFAaW50ZWwuY29tPgo+PiBDYzogbWFpbHRv OmRldkBkcGRrLm9yZzsgbWFpbHRvOmxpdWdhb3hpYW5nQGh1YXdlaS5jb207IEdhb3hpYW5nIExp dSA8bWFpbHRvOmdhb3hpYW5nbGl1MEAxNjMuY29tPgo+PiBTdWJqZWN0OiBbUEFUQ0ggdjZdIHZo b3N0OiBmaXggY3Jhc2ggb24gcG9ydCBkZWxldGlvbgo+Pgo+PiBUaGUgcnRlX3Zob3N0X2RyaXZl cl91bnJlZ2lzdGVyKCkgYW5kIHZob3N0X3VzZXJfcmVhZF9jYigpCj4+IGNhbiBiZSBjYWxsZWQg YXQgdGhlIHNhbWUgdGltZSBieSAyIHRocmVhZHMuCj4+IHdoZW4gbWVtb3J5IG9mIHZzb2NrZXQg aXMgZnJlZWQgaW4gcnRlX3Zob3N0X2RyaXZlcl91bnJlZ2lzdGVyKCksCj4+IHRoZSBpbnZhbGlk IG1lbW9yeSBvZiB2c29ja2V0IGlzIGFjY2Vzc2VkIGluIHZob3N0X3VzZXJfcmVhZF9jYigpLgo+ PiBJdCdzIGEgYnVnIG9mIGJvdGggbW9kZSBmb3Igdmhvc3QgYXMgc2VydmVyIG9yIGNsaWVudC4K Pj4KPj4gRS5nLix2aG9zdHVzZXIgcG9ydCBpcyBjcmVhdGVkIGFzIHNlcnZlci4KPgo+UHV0IGEg c3BhY2UgYWZ0ZXIgJywnCj4KPj4gVGhyZWFkMSBjYWxscyBydGVfdmhvc3RfZHJpdmVyX3VucmVn aXN0ZXIoKS4KPj4gQmVmb3JlIHRoZSBsaXN0ZW4gZmQgaXMgZGVsZXRlZCBmcm9tIHBvbGwgd2Fp dGluZyBmZHMsCj4+ICJ2aG9zdC1ldmVudHMiIHRocmVhZCB0aGVuIGNhbGxzIHZob3N0X3VzZXJf c2VydmVyX25ld19jb25uZWN0aW9uKCksCj4+IHRoZW4gYSBuZXcgY29ubiBmZCBpcyBhZGRlZCBp biBmZHNldCB3aGVuIHRyeWluZyB0byByZWNvbm5lY3QuCj4+ICJ2aG9zdC1ldmVudHMiIHRocmVh ZCB0aGVuIGNhbGxzIHZob3N0X3VzZXJfcmVhZF9jYigpIGFuZAo+PiBhY2Nlc3NlcyBpbnZhbGlk IG1lbW9yeSBvZiBzb2NrZXQgd2hpbGUgdGhyZWFkMSBmcmVlcyB0aGUgbWVtb3J5IG9mCj4+IHZz b2NrZXQuCj4+Cj4+IEUuZy4sdmhvc3R1c2VyIHBvcnQgaXMgY3JlYXRlZCBhcyBjbGllbnQuCj4K PlNhbWUgaGVyZS4KPgo+PiBUaHJlYWQxIGNhbGxzIHJ0ZV92aG9zdF9kcml2ZXJfdW5yZWdpc3Rl cigpLgo+PiBCZWZvcmUgdnNvY2tldCBvZiByZWNvbm4gaXMgZGVsZXRlZCBmcm9tIHJlY29ubiBs aXN0LAo+PiAidmhvc3RfcmVjb25uIiB0aHJlYWQgdGhlbiBjYWxscyB2aG9zdF91c2VyX2FkZF9j b25uZWN0aW9uKCkKPj4gdGhlbiBhIG5ldyBjb25uIGZkIGlzIGFkZGVkIGluIGZkc2V0IHdoZW4g dHJ5aW5nIHRvIHJlY29ubmVjdC4KPj4gInZob3N0LWV2ZW50cyIgdGhyZWFkIHRoZW4gY2FsbHMg dmhvc3RfdXNlcl9yZWFkX2NiKCkgYW5kCj4+IGFjY2Vzc2VzIGludmFsaWQgbWVtb3J5IG9mIHNv Y2tldCB3aGlsZSB0aHJlYWQxIGZyZWVzIHRoZSBtZW1vcnkgb2YKPj4gdnNvY2tldC4KPj4KPj4g VGhlIGZpeCBpcyB0byBtb3ZlIHRoZSAiZmRzZXRfdHJ5X2RlbCIgaW4gZnJvbnQgb2YgZnJlZSBt ZW1vcnkgb2YgY29ubiwKPj4gdGhlbiBhdm9pZCB0aGUgcmFjZSBjb25kaXRpb24uCj4+Cj4+IFRo ZSBjb3JlIHRyYWNlIGlzOgo+PiBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMTEsIFNl Z21lbnRhdGlvbiBmYXVsdC4KPj4KPj4gRml4ZXM6IDUyZDg3NGRjNjcwNSAoInZob3N0OiBmaXgg Y3Jhc2ggb24gY2xvc2luZyBpbiBjbGllbnQgbW9kZSIpCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEdh b3hpYW5nIExpdSA8bWFpbHRvOmxpdWdhb3hpYW5nQGh1YXdlaS5jb20+Cj4+IC0tLQo+Pgo+PiB2 MjoKPj4gKiBGaXggY29kaW5nIHN0eWxlIGlzc3Vlcy4KPj4KPj4gdjM6Cj4+ICogQWRkIGRldGFp bGVkIGxvZy4KPj4KPj4gdjQ6Cj4+ICogQWRkIHRoZSByZWFzb24sIHdoZW4gdmhvc3R1c2VyIHBv cnQgaXMgY3JlYXRlZCBhcyBzZXJ2ZXIuCj4+Cj4+IHY1Ogo+PiAqIEFkZCBkZXRhaWxlZCBsb2cg d2hlbiB2aG9zdHVzZXIgcG9ydCBpcyBjcmVhdGVkIGFzIGNsaWVudAo+Pgo+PiB2NjoKPj4gKiBB ZGQgJ3BhdGgnIGNoZWNrIGJlZm9yZSBkZWxldGluZyBsaXN0ZW4gZmQKPj4gKiBGaXggc3BlbGxp bmcgaXNzdWVzCj4+IC0tLQo+PiAgbGliL3Zob3N0L3NvY2tldC5jIHwgMTA4ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDU0 IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGliL3Zo b3N0L3NvY2tldC5jIGIvbGliL3Zob3N0L3NvY2tldC5jCj4+IGluZGV4IDVkMGQ3MjhkNS4uMjdk NWU4Njk1IDEwMDY0NAo+PiAtLS0gYS9saWIvdmhvc3Qvc29ja2V0LmMKPj4gKysrIGIvbGliL3Zo b3N0L3NvY2tldC5jCj4+IEBAIC0xMDIzLDY2ICsxMDIzLDY2IEBAIHJ0ZV92aG9zdF9kcml2ZXJf dW5yZWdpc3Rlcihjb25zdCBjaGFyICpwYXRoKQo+Pgo+PiAgICAgICBmb3IgKGkgPSAwOyBpIDwg dmhvc3RfdXNlci52c29ja2V0X2NudDsgaSsrKSB7Cj4+ICAgICAgICAgICAgc3RydWN0IHZob3N0 X3VzZXJfc29ja2V0ICp2c29ja2V0ID0gdmhvc3RfdXNlci52c29ja2V0c1tpXTsKPj4gKyAgICAg ICAgICBpZiAoc3RyY21wKHZzb2NrZXQtPnBhdGgsIHBhdGgpKSB7Cj4+ICsgICAgICAgICAgICAg ICBjb250aW51ZTsKPj4gKyAgICAgICAgICB9Cj4KPmJyYWNlcyB7fSBhcmUgbm90IG5lY2Vzc2Fy eSBmb3Igc2luZ2xlIHN0YXRlbWVudCBibG9ja3MKPgo+Pgo+PiAtICAgICAgICAgIGlmICghc3Ry Y21wKHZzb2NrZXQtPnBhdGgsIHBhdGgpKSB7Cj4+IC0gICAgICAgICAgICAgICBwdGhyZWFkX211 dGV4X2xvY2soJnZzb2NrZXQtPmNvbm5fbXV0ZXgpOwo+PiAtICAgICAgICAgICAgICAgZm9yIChj b25uID0gVEFJTFFfRklSU1QoJnZzb2NrZXQtPmNvbm5fbGlzdCk7Cj4+IC0gICAgICAgICAgICAg ICAgICAgIGNvbm4gIT0gTlVMTDsKPj4gLSAgICAgICAgICAgICAgICAgICAgY29ubiA9IG5leHQp IHsKPj4gLSAgICAgICAgICAgICAgICAgICAgbmV4dCA9IFRBSUxRX05FWFQoY29ubiwgbmV4dCk7 Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICAgICAgLyoKPj4gLSAgICAgICAgICAgICAgICAgICAg ICogSWYgci93Y2IgaXMgZXhlY3V0aW5nLCByZWxlYXNlIHZzb2NrZXQncwo+PiAtICAgICAgICAg ICAgICAgICAgICAgKiBjb25uX211dGV4IGFuZCB2aG9zdF91c2VyJ3MgbXV0ZXggbG9ja3MsIGFu ZAo+PiAtICAgICAgICAgICAgICAgICAgICAgKiB0cnkgYWdhaW4gc2luY2UgdGhlIHIvd2NiIG1h eSB1c2UgdGhlCj4+IC0gICAgICAgICAgICAgICAgICAgICAqIGNvbm5fbXV0ZXggYW5kIG11dGV4 IGxvY2tzLgo+PiAtICAgICAgICAgICAgICAgICAgICAgKi8KPj4gLSAgICAgICAgICAgICAgICAg ICAgaWYgKGZkc2V0X3RyeV9kZWwoJnZob3N0X3VzZXIuZmRzZXQsCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbm4tPmNvbm5mZCkgPT0gLTEpIHsKPj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnZzb2NrZXQtPmNvbm5fbXV0ZXgpOwo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ2aG9zdF91c2VyLm11dGV4KTsKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwo+PiAtICAgICAgICAgICAgICAg ICAgICB9Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICAgICAgVkhPU1RfTE9HX0NPTkZJRyhJTkZP LAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIGNvbm5mZCA9ICVkIGZvciBkZXZp Y2UgJyVzJ1xuIiwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5jb25uZmQsIHBh dGgpOwo+PiAtICAgICAgICAgICAgICAgICAgICBjbG9zZShjb25uLT5jb25uZmQpOwo+PiAtICAg ICAgICAgICAgICAgICAgICB2aG9zdF9kZXN0cm95X2RldmljZShjb25uLT52aWQpOwo+PiAtICAg ICAgICAgICAgICAgICAgICBUQUlMUV9SRU1PVkUoJnZzb2NrZXQtPmNvbm5fbGlzdCwgY29ubiwg bmV4dCk7Cj4+IC0gICAgICAgICAgICAgICAgICAgIGZyZWUoY29ubik7Cj4+IC0gICAgICAgICAg ICAgICB9Cj4+IC0gICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmdnNvY2tldC0+ Y29ubl9tdXRleCk7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgIGlmICh2c29ja2V0LT5pc19zZXJ2 ZXIpIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgLyoKPj4gLSAgICAgICAgICAgICAgICAgICAg ICogSWYgci93Y2IgaXMgZXhlY3V0aW5nLCByZWxlYXNlIHZob3N0X3VzZXIncwo+PiAtICAgICAg ICAgICAgICAgICAgICAgKiBtdXRleCBsb2NrLCBhbmQgdHJ5IGFnYWluIHNpbmNlIHRoZSByL3dj Ygo+PiAtICAgICAgICAgICAgICAgICAgICAgKiBtYXkgdXNlIHRoZSBtdXRleCBsb2NrLgo+PiAt ICAgICAgICAgICAgICAgICAgICAgKi8KPj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGZkc2V0 X3RyeV9kZWwoJnZob3N0X3VzZXIuZmRzZXQsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2c29ja2V0LT5zb2NrZXRfZmQpID09IC0xKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnZob3N0X3VzZXIubXV0ZXgpOwo+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47Cj4+IC0gICAgICAgICAgICAgICAgICAgIH0K Pj4gLQo+PiAtICAgICAgICAgICAgICAgICAgICBjbG9zZSh2c29ja2V0LT5zb2NrZXRfZmQpOwo+ PiAtICAgICAgICAgICAgICAgICAgICB1bmxpbmsocGF0aCk7Cj4+IC0gICAgICAgICAgICAgICB9 IGVsc2UgaWYgKHZzb2NrZXQtPnJlY29ubmVjdCkgewo+PiAtICAgICAgICAgICAgICAgICAgICB2 aG9zdF91c2VyX3JlbW92ZV9yZWNvbm5lY3QodnNvY2tldCk7Cj4+ICsgICAgICAgICAgaWYgKHZz b2NrZXQtPmlzX3NlcnZlcikgewo+PiArICAgICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAg ICAgICAqIElmIHIvd2NiIGlzIGV4ZWN1dGluZywgcmVsZWFzZSB2aG9zdF91c2VyJ3MKPj4gKyAg ICAgICAgICAgICAgICAqIG11dGV4IGxvY2ssIGFuZCB0cnkgYWdhaW4gc2luY2UgdGhlIHIvd2Ni Cj4+ICsgICAgICAgICAgICAgICAgKiBtYXkgdXNlIHRoZSBtdXRleCBsb2NrLgo+PiArICAgICAg ICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBpZiAoZmRzZXRfdHJ5X2RlbCgmdmhvc3Rf dXNlci5mZHNldCwgdnNvY2tldC0+c29ja2V0X2ZkKSA9PQo+PiAtMSkgewo+PiArICAgICAgICAg ICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmdmhvc3RfdXNlci5tdXRleCk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW47Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ICsg ICAgICAgICAgfSBlbHNlIGlmICh2c29ja2V0LT5yZWNvbm5lY3QpIHsKPj4gKyAgICAgICAgICAg ICAgIHZob3N0X3VzZXJfcmVtb3ZlX3JlY29ubmVjdCh2c29ja2V0KTsKPj4gKyAgICAgICAgICB9 Cj4+Cj4+IC0gICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJnZzb2NrZXQtPmNv bm5fbXV0ZXgpOwo+PiAtICAgICAgICAgICAgICAgdmhvc3RfdXNlcl9zb2NrZXRfbWVtX2ZyZWUo dnNvY2tldCk7Cj4+ICsgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZ2c29ja2V0LT5jb25u X211dGV4KTsKPj4gKyAgICAgICAgICBmb3IgKGNvbm4gPSBUQUlMUV9GSVJTVCgmdnNvY2tldC0+ Y29ubl9saXN0KTsKPj4gKyAgICAgICAgICAgICAgICBjb25uICE9IE5VTEw7Cj4+ICsgICAgICAg ICAgICAgICAgY29ubiA9IG5leHQpIHsKPj4gKyAgICAgICAgICAgICAgIG5leHQgPSBUQUlMUV9O RVhUKGNvbm4sIG5leHQpOwo+Pgo+PiAtICAgICAgICAgICAgICAgY291bnQgPSAtLXZob3N0X3Vz ZXIudnNvY2tldF9jbnQ7Cj4+IC0gICAgICAgICAgICAgICB2aG9zdF91c2VyLnZzb2NrZXRzW2ld ID0gdmhvc3RfdXNlci52c29ja2V0c1tjb3VudF07Cj4+IC0gICAgICAgICAgICAgICB2aG9zdF91 c2VyLnZzb2NrZXRzW2NvdW50XSA9IE5VTEw7Cj4+IC0gICAgICAgICAgICAgICBwdGhyZWFkX211 dGV4X3VubG9jaygmdmhvc3RfdXNlci5tdXRleCk7Cj4+ICsgICAgICAgICAgICAgICAvKgo+PiAr ICAgICAgICAgICAgICAgICogSWYgci93Y2IgaXMgZXhlY3V0aW5nLCByZWxlYXNlIHZzb2NrZXQn cwo+PiArICAgICAgICAgICAgICAgICogY29ubl9tdXRleCBhbmQgdmhvc3RfdXNlcidzIG11dGV4 IGxvY2tzLCBhbmQKPj4gKyAgICAgICAgICAgICAgICAqIHRyeSBhZ2FpbiBzaW5jZSB0aGUgci93 Y2IgbWF5IHVzZSB0aGUKPj4gKyAgICAgICAgICAgICAgICAqIGNvbm5fbXV0ZXggYW5kIG11dGV4 IGxvY2tzLgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICBpZiAoZmRz ZXRfdHJ5X2RlbCgmdmhvc3RfdXNlci5mZHNldCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbm4tPmNvbm5mZCkgPT0gLTEpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJnZzb2NrZXQtPmNvbm5fbXV0ZXgpOwo+PiArICAgICAgICAgICAgICAg ICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmdmhvc3RfdXNlci5tdXRleCk7Cj4+ICsgICAgICAg ICAgICAgICAgICAgIGdvdG8gYWdhaW47Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICAgICAgICAgIFZIT1NUX0xPR19DT05GSUcoSU5GTywKPj4gKyAgICAgICAgICAgICAgICAg ICAgImZyZWUgY29ubmZkID0gJWQgZm9yIGRldmljZSAnJXMnXG4iLAo+PiArICAgICAgICAgICAg ICAgICAgICBjb25uLT5jb25uZmQsIHBhdGgpOwo+PiArICAgICAgICAgICAgICAgY2xvc2UoY29u bi0+Y29ubmZkKTsKPj4gKyAgICAgICAgICAgICAgIHZob3N0X2Rlc3Ryb3lfZGV2aWNlKGNvbm4t PnZpZCk7Cj4+ICsgICAgICAgICAgICAgICBUQUlMUV9SRU1PVkUoJnZzb2NrZXQtPmNvbm5fbGlz dCwgY29ubiwgbmV4dCk7Cj4+ICsgICAgICAgICAgICAgICBmcmVlKGNvbm4pOwo+PiArICAgICAg ICAgIH0KPj4gKyAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmdnNvY2tldC0+Y29ubl9t dXRleCk7Cj4+Cj4+IC0gICAgICAgICAgICAgICByZXR1cm4gMDsKPj4gKyAgICAgICAgICBpZiAo dnNvY2tldC0+aXNfc2VydmVyKSB7Cj4+ICsgICAgICAgICAgICAgICBjbG9zZSh2c29ja2V0LT5z b2NrZXRfZmQpOwo+PiArICAgICAgICAgICAgICAgdW5saW5rKHBhdGgpOwo+PiAgICAgICAgICAg IH0KPgo+SSB0aGluayB5b3UgbWlzcyBteSBjb21tZW50IGluIFY1IG9mIGFza2luZyB3aHkgdGhp cyBpcyBub3QgbW92ZWQgdXAgYWZ0ZXIKPmZkc2V0X3RyeV9kZWwgc2VydmVyIHNvY2tldCBmZC4K Pgo+VGhhbmtzLAo+Q2hlbmJvCj4KPj4gKwo+PiArICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVz dHJveSgmdnNvY2tldC0+Y29ubl9tdXRleCk7Cj4+ICsgICAgICAgICAgdmhvc3RfdXNlcl9zb2Nr ZXRfbWVtX2ZyZWUodnNvY2tldCk7Cj4+ICsKPj4gKyAgICAgICAgICBjb3VudCA9IC0tdmhvc3Rf dXNlci52c29ja2V0X2NudDsKPj4gKyAgICAgICAgICB2aG9zdF91c2VyLnZzb2NrZXRzW2ldID0g dmhvc3RfdXNlci52c29ja2V0c1tjb3VudF07Cj4+ICsgICAgICAgICAgdmhvc3RfdXNlci52c29j a2V0c1tjb3VudF0gPSBOVUxMOwo+PiArICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ2 aG9zdF91c2VyLm11dGV4KTsKPj4gKyAgICAgICAgICByZXR1cm4gMDsKPj4gICAgICAgfQo+PiAg ICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmdmhvc3RfdXNlci5tdXRleCk7Cj4+Cj4+IC0tCj4+ IDIuMzIuMAo+Pgo+CgogCg==