From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [13.75.44.102]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6DDD530D3FF for ; Fri, 21 Aug 2026 04:11:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=13.75.44.102 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787285521; cv=none; b=Bex146ySA6N6UEJIk3Q6U9uAm3GUzkYolm5A6Lm3NP+XVAE7PJgnaMubTl/H4quddUh+F+qs/UEC3FPZ/URikkA/FHflCLVcB1cnQi5o08CMrTlsL8pPvrYjfUWhannKx/EFnnQvsDfrGdRIzVm5+xepgIMJ1+9AnUG6CDhyXQI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787285521; c=relaxed/simple; bh=TvvW9Yj8lfRbmwzYyg06PReI+La2u5Ur66VQ/yFMs7g=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=fUH1KbyLHiesmT4U455yEA57sLCgA37TJs+dWVaIAq3K3JsqGZzMBDbwus0ZgofR5tWjfHeHVQiYGuk/HlHBdPa+uSabdFhaB2LbnxbI3o/wa03VhCxLPfvnQe1YUXDflAagkb+lQ4tcAbL8lXZ0ktFnqNt7U4bo4psIl5EZVDo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zju.edu.cn; spf=pass smtp.mailfrom=zju.edu.cn; arc=none smtp.client-ip=13.75.44.102 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=zju.edu.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zju.edu.cn Received: from zju.edu.cn (unknown [10.190.129.65]) by mtasvr (Coremail) with SMTP id _____wAH8TYK0Idqup2wAA--.10763S3; Fri, 21 Aug 2026 12:11:54 +0800 (CST) Received: from stitch$zju.edu.cn ( [10.190.129.65] ) by ajax-webmail-mail-app3 (Coremail) ; Fri, 21 Aug 2026 12:11:53 +0800 (GMT+08:00) Date: Fri, 21 Aug 2026 12:11:53 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: "Jiacheng Xu" To: "Andreas Gruenbacher" Cc: gfs2@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/5] gfs2: protect quota refresh from superblock teardown X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2025.3-cmXT6 build 20260617(6f868824) Copyright (c) 2002-2026 www.mailtech.cn zju.edu.cn In-Reply-To: <6a91508.162bd.1a0228251e8.Coremail.stitch@zju.edu.cn> References: <6a91508.162bd.1a0228251e8.Coremail.stitch@zju.edu.cn> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <42b8a85f.162c4.1a02284a6da.Coremail.stitch@zju.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:zS_KCgC3oncJ0IdqE+qNBA--.24696W X-CM-SenderInfo: qtrxiiaqttimo62m3hxhgxhubq/1tbiAwQJC2qGXxcNSAAFsh X-CM-DELIVERINFO: =?B?NUT0xwXKKxbFmtjJiESix3B1w3tMoM3snk/k5SVzZVydjEqe1eefKHnLf95EnB4iem egW9p9QbwFO/M6dbbDVJYHFkbukLGKhicS5+qqIqsPA4n5zu03F8m2kMq7pX/yo13R3fBi JBUm3IRBay9n0E9oY7jv4JWfJdYHBuv6fQUOO6pruRvTMZr4W/HzcqpKp2CMQQ== X-Coremail-Antispam: 1Uk129KBj93XoW3ArWfAryUAFyrAF1rKr4ftFc_yoWxCFW7pF 4qvay5Gr4DGr17ursIy3WrWa4Fg3yfuF47Ar1Ig3W7AryqyrsagFy7tF10vFWUGwsFyw15 XF40gasI9ryDGrXCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUPGb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AK xVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAF wI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4x0Y48IcxkI7V AKI48G6xCjnVAKz4kxM4xvF2IEb7IF0Fy264kE64k0F24lFcxC0VAYjxAxZF0Ex2IqxwCF 04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r 18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vI r41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr 1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvE x4A2jsIEc7CjxVAFwI0_Jr0_Gr1l6VACY4xI67k04243AbIYCTnIWIevJa73UjIFyTuYvj xU7LZcUUUUU VGhlIHF1b3RhX3JlZnJlc2ggc3lzZnMgYXR0cmlidXRlcyBiZWNvbWUgdmlzaWJsZSBiZWZvcmUg ZmlsbF9zdXBlcigpCmhhcyBjb21wbGV0ZWQsIHNvIHRoZSBxdW90YSBpbm9kZSBjYW4gc3RpbGwg YmUgdW5pbml0aWFsaXplZCB3aGVuIGEKdXNlcnNwYWNlIHdyaXRlIHJlYWNoZXMgZ2ZzMl9xdW90 YV9yZWZyZXNoKCkuIFRoZSBzYW1lIGNhbGxiYWNrIGNhbgphbHNvIHJhY2Ugd2l0aCBzdXBlcmJs b2NrIHRlYXJkb3duLgoKU2VyaWFsaXplIHRoZSBjYWxsYmFjayB3aXRoIHRoZSBzdXBlcmJsb2Nr IGxpZmV0aW1lIHVzaW5nIGEgcmVhZC1zaWRlCnNfdW1vdW50IGxvY2suIFVzZSBkb3duX3JlYWRf dHJ5bG9jaygpIHNvIHRoZSBtb3VudCBmYWlsdXJlIHBhdGggY2FuCnJlbW92ZSB0aGUgc3lzZnMg ZmlsZXMgd2hpbGUgaG9sZGluZyB0aGUgd3JpdGUgc2lkZSBvZiB0aGUgbG9jayB3aXRob3V0CmRl YWRsb2NraW5nLCBhbmQgcmVqZWN0IGFjY2Vzc2VzIGJlZm9yZSBTQl9BQ1RJVkUgaXMgc2V0LgoK UmV0dXJuIC1FQUdBSU4gd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBub3QgYXZhaWxhYmxlIGZvciB0 aGUgY2FsbGJhY2suCgpUZXN0ZWQtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1LmVkdS5jbj4K U2lnbmVkLW9mZi1ieTogSmlhY2hlbmcgWHUgPHN0aXRjaEB6anUuZWR1LmNuPgotLS0KIGZzL2dm czIvcXVvdGEuYyB8IDE5ICsrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5j IGIvZnMvZ2ZzMi9xdW90YS5jCmluZGV4IDAwMWM4YjM5Y2E1NS4uZDA2NWI1MTk1MGQ3IDEwMDY0 NAotLS0gYS9mcy9nZnMyL3F1b3RhLmMKKysrIGIvZnMvZ2ZzMi9xdW90YS5jCkBAIC0xMzg0LDE5 ICsxMzg0LDM2IEBAIGludCBnZnMyX3F1b3RhX3N5bmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg aW50IHR5cGUpCiAKIGludCBnZnMyX3F1b3RhX3JlZnJlc2goc3RydWN0IGdmczJfc2JkICpzZHAs IHN0cnVjdCBrcWlkIHFpZCkKIHsKKyAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2Rw LT5zZF92ZnM7CiAgICAgICAgc3RydWN0IGdmczJfcXVvdGFfZGF0YSAqcWQ7CiAgICAgICAgc3Ry dWN0IGdmczJfaG9sZGVyIHFfZ2g7CiAgICAgICAgaW50IGVycm9yOwogCisgICAgICAgLyoKKyAg ICAgICAgKiBUaGUgc3lzZnMgZmlsZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIGZpbGxfc3VwZXIgY29t cGxldGVzLiBBdm9pZAorICAgICAgICAqIGJsb2NraW5nIG9uIHNfdW1vdW50IGJlY2F1c2UgdGhl IG1vdW50IGZhaWx1cmUgcGF0aCByZW1vdmVzIHRoZQorICAgICAgICAqIHN5c2ZzIGZpbGVzIHdo aWxlIGhvbGRpbmcgaXQgZm9yIHdyaXRpbmcuCisgICAgICAgICovCisgICAgICAgaWYgKCFkb3du X3JlYWRfdHJ5bG9jaygmc2ItPnNfdW1vdW50KSkKKyAgICAgICAgICAgICAgIHJldHVybiAtRUFH QUlOOworCisgICAgICAgaWYgKCEoc2ItPnNfZmxhZ3MgJiBTQl9BQ1RJVkUpKSB7CisgICAgICAg ICAgICAgICBlcnJvciA9IC1FQUdBSU47CisgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7 CisgICAgICAgfQorCiAgICAgICAgZXJyb3IgPSBxZF9nZXQoc2RwLCBxaWQsICZxZCk7CiAgICAg ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAg ICAgZ290byBvdXRfdW5sb2NrOwogCiAgICAgICAgZXJyb3IgPSBkb19nbG9jayhxZCwgRk9SQ0Us ICZxX2doKTsKICAgICAgICBpZiAoIWVycm9yKQogICAgICAgICAgICAgICAgZ2ZzMl9nbG9ja19k cV91bmluaXQoJnFfZ2gpOwogCiAgICAgICAgcWRfcHV0KHFkKTsKKworb3V0X3VubG9jazoKKyAg ICAgICB1cF9yZWFkKCZzYi0+c191bW91bnQpOwogICAgICAgIHJldHVybiBlcnJvcjsKIH0KIAot LSAKMi4yNS4xCgoKPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4g5Y+R5Lu25Lq6OiAiSmlhY2hl bmcgWHUiIDxzdGl0Y2hAemp1LmVkdS5jbj4KPiDlj5HpgIHml7bpl7Q6MjAyNi0wOC0yMSAxMjow OToyMSAo5pif5pyf5LqUKQo+IOaUtuS7tuS6ujogIkFuZHJlYXMgR3J1ZW5iYWNoZXIiIDxhZ3J1 ZW5iYUByZWRoYXQuY29tPgo+IOaKhOmAgTogZ2ZzMkBsaXN0cy5saW51eC5kZXYsIGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmcKPiDkuLvpopg6IFtQQVRDSCB2MiAwLzVdIGdmczI6IHByb3Rl Y3Qgc3lzZnMgY2FsbGJhY2tzIGZyb20gc3VwZXJibG9jayB0ZWFyZG93bgo+IAo+IFRoZSBHRlMy IHN5c2ZzIGZpbGVzIGJlY29tZSB2aXNpYmxlIGJlZm9yZSBmaWxsX3N1cGVyKCkgY29tcGxldGVz IGFuZAo+IHJlbWFpbiBwcmVzZW50IHVudGlsIGFmdGVyIGZpbGVzeXN0ZW0gcmVzb3VyY2VzIGhh dmUgYmVlbiByZWxlYXNlZC4KPiBDb25zZXF1ZW50bHksIGNhbGxiYWNrcyB0aGF0IGFjY2VzcyBx dW90YSwgc3RhdGZzLCBnbG9jayBvciBqb3VybmFsCj4gc3RhdGUgY2FuIHJhY2Ugd2l0aCBtb3Vu dCBmYWlsdXJlIHJvbGxiYWNrIG9yIHVubW91bnQgdGVhcmRvd24uCj4gCj4gVGhlIHF1b3RhIHJl ZnJlc2ggZml4IHdhcyBvcmlnaW5hbGx5IHNlbnQgYXMgYSBzdGFuZGFsb25lIFtQQVRDSF0uIFRo aXMKPiB2ZXJzaW9uIGZvbGRzIGl0IGludG8gYSBjb21wbGV0ZSBzZXJpZXMgYW5kIGFkZHMgdGhl IGNvcnJlc3BvbmRpbmcKPiBsaWZldGltZSBwcm90ZWN0aW9uIGZvciB0aGUgb3RoZXIgYWZmZWN0 ZWQgc3lzZnMgY2FsbGJhY2tzLgo+IAo+IEFsbCBjYWxsYmFja3MgdXNlIGRvd25fcmVhZF90cnls b2NrKCkgb24gc191bW91bnQgYW5kIHZlcmlmeSBTQl9BQ1RJVkUuCj4gUmV0dXJuaW5nIC1FQUdB SU4gYXZvaWRzIGRlYWRsb2NrIHdoZW4gbW91bnQgZmFpbHVyZSBvciB1bm1vdW50IGhvbGRzCj4g dGhlIHdyaXRlIHNpZGUgb2Ygc191bW91bnQgd2hpbGUgcmVtb3ZpbmcgdGhlIHN5c2ZzIGZpbGVz Lgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBGb2xkZWQgdGhlIG9yaWdpbmFsIHF1b3RhIHJlZnJl c2ggZml4IGludG8gYSBmaXZlLXBhdGNoIHNlcmllcy4KPiAtIEFkZGVkIHN0YXRmc19zeW5jLCBx dW90YV9zeW5jLCBkZW1vdGVfcnEgYW5kIHN0YXR1cyBmaXhlcy4KPiAKPiBKaWFjaGVuZyBYdSAo NSk6Cj4gICBnZnMyOiBwcm90ZWN0IHF1b3RhIHJlZnJlc2ggZnJvbSBzdXBlcmJsb2NrIHRlYXJk b3duCj4gICBnZnMyOiBwcm90ZWN0IHN0YXRmcyBzeW5jIHN5c2ZzIGNhbGxiYWNrCj4gICBnZnMy OiBwcm90ZWN0IHF1b3RhIHN5bmMgc3lzZnMgY2FsbGJhY2sKPiAgIGdmczI6IHByb3RlY3QgZGVt b3RlIHJlcXVlc3RzIGR1cmluZyBzdXBlcmJsb2NrIHRlYXJkb3duCj4gICBnZnMyOiBwcm90ZWN0 IHN0YXR1cyBzeXNmcyByZWFkcyBkdXJpbmcgdGVhcmRvd24KPiAKPiAgZnMvZ2ZzMi9xdW90YS5j IHwgMTkgKysrKysrKysrKysrKystCj4gIGZzL2dmczIvc3lzLmMgICB8IDY1ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2Vk LCA3NiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IAo+IGJhc2UtY29tbWl0OiAw ZjIzZDU2ZjE3ZmRmYzdkYjY5ZDUxZjY0YzhiOTFiYmFiOTQ3YWE5Cj4gLS0gCj4gMi4yNS4xCj4g Cj4gPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4gPiDlj5Hku7bkuro6ICJKaWFjaGVuZyBYdSIg PHN0aXRjaEB6anUuZWR1LmNuPgo+ID4g5Y+R6YCB5pe26Ze0OjIwMjYtMDgtMTkgMTU6MDE6MDcg KOaYn+acn+S4iSkKPiA+IOaUtuS7tuS6ujogIkFuZHJlYXMgR3J1ZW5iYWNoZXIiIDxhZ3J1ZW5i YUByZWRoYXQuY29tPgo+ID4g5oqE6YCBOiBnZnMyQGxpc3RzLmxpbnV4LmRldiwgbGludXgta2Vy bmVsQHZnZXIua2VybmVsLm9yZwo+ID4g5Li76aKYOiBbUEFUQ0hdIGdmczI6IEZpeCBOVUxMIHBv aW50ZXIgZGVyZWZlcmVuY2UgaW4gcXVvdGEgcmVmcmVzaAo+ID4gCj4gPiBUaGUgR0ZTMiBzeXNm cyBmaWxlcyBhcmUgcmVnaXN0ZXJlZCBiZWZvcmUgaW5pdF9pbm9kZXMoKSBjb21wbGV0ZXMuCj4g PiBDb25zZXF1ZW50bHksIHRoZSBxdW90YV9yZWZyZXNoX3VzZXIgYW5kIHF1b3RhX3JlZnJlc2hf Z3JvdXAgc3lzZnMKPiA+IGF0dHJpYnV0ZXMgY2FuIGJlIGFjY2Vzc2VkIHdoaWxlIHNkcC0+c2Rf cXVvdGFfaW5vZGUgaGFzIG5vdCBiZWVuCj4gPiBpbml0aWFsaXplZCB5ZXQuCj4gPiAKPiA+IEEg Y29uY3VycmVudCB3cml0ZSB0byBxdW90YV9yZWZyZXNoX3VzZXIgbWF5IHRoZW4gY2FsbCBkb19n bG9jaygpLCB3aGljaAo+ID4gZGVyZWZlcmVuY2VzIHNkcC0+c2RfcXVvdGFfaW5vZGUuIFRoaXMg Y2FuIHJlc3VsdCBpbiBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSAKPiA+IGluIGRvX2dsb2Nr KCkuIFRoZSBzYW1lIGNhbGxiYWNrIGNhbiBhbHNvIHJhY2Ugd2l0aCBzdXBlcmJsb2NrCj4gPiB0 ZWFyZG93biBhbmQgYWNjZXNzIGRhdGEgYWZ0ZXIgdGhlIGZpbGVzeXN0ZW0gaGFzIHN0YXJ0ZWQg dG8gc2h1dCBkb3duLgo+ID4gCj4gPiBNb3Zpbmcgc3lzZnMgcmVnaXN0cmF0aW9uIGFmdGVyIGlu aXRfaW5vZGVzKCkgd291bGQgYXZvaWQgdGhlIGluaXRpYWxpemF0aW9uCj4gPiB3aW5kb3csIGJ1 dCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGUgbG9jayBtYW5hZ2VyIG1heSBuZWVkIHRoZSBH RlMyCj4gPiBzeXNmcyBmaWxlcyBkdXJpbmcgdGhlIHJlbWFpbmluZyBtb3VudCBzZXF1ZW5jZS4K PiA+IAo+ID4gU2VyaWFsaXplIGdmczJfcXVvdGFfcmVmcmVzaCgpIHdpdGggdGhlIHN1cGVyYmxv Y2sgbGlmZXRpbWUgaW5zdGVhZC4KPiA+IEFjcXVpcmUgc191bW91bnQgZm9yIHJlYWRpbmcgYmVm b3JlIGFjY2Vzc2luZyBxdW90YSBkYXRhLiBNb3VudCBmYWlsdXJlIGFuZAo+ID4gdW5tb3VudCBw YXRocyBob2xkIHNfdW1vdW50IGZvciB3cml0aW5nLCBzbyB0aGlzIHByZXZlbnRzIHRoZSBjYWxs YmFjayBmcm9tCj4gPiBydW5uaW5nIHdoaWxlIHRoZSBzdXBlcmJsb2NrIGlzIGJlaW5nIGluaXRp YWxpemVkIG9yIGRlc3Ryb3llZC4KPiA+IAo+ID4gVXNlIGRvd25fcmVhZF90cnlsb2NrKCkgaW5z dGVhZCBvZiBkb3duX3JlYWQoKSBiZWNhdXNlIHRoZSBtb3VudCBmYWlsdXJlCj4gPiBwYXRoIG1h eSBhbHJlYWR5IGhvbGQgc191bW91bnQgZm9yIHdyaXRpbmcgd2hpbGUgcmVtb3ZpbmcgdGhlIHN5 c2ZzIGZpbGVzLgo+ID4gUmV0dXJuaW5nIC1FQUdBSU4gYWxsb3dzIHRoZSBzeXNmcyB3cml0ZSB0 byBmYWlsIHdpdGhvdXQgaW50cm9kdWNpbmcgYQo+ID4gZGVhZGxvY2suCj4gPiAKPiA+IEFsc28g dmVyaWZ5IFNCX0FDVElWRSBhZnRlciBhY3F1aXJpbmcgdGhlIHJlYWQgbG9jaywgc2luY2UgdGhl IHN5c2ZzCj4gPiBhdHRyaWJ1dGVzIGJlY29tZSB2aXNpYmxlIGJlZm9yZSB0aGUgc3VwZXJibG9j ayBpcyBmdWxseSBhY3RpdmUuCj4gPiAKPiA+IFRoZSByZXByb2R1Y2VyIG9mIHRoZSBpc3N1ZSBp cyBhdHRhY2hlZC4gQWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaCwgCj4gPiB0aGUgcmVwcm9kdWNl ciBubyBsb25nZXIgdHJpZ2dlcnMgdGhlIGtlcm5lbCBjcmFzaC4gCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1LmVkdS5jbj4KPiA+IFRlc3RlZC1ieTogSmlh Y2hlbmcgWHUgPHN0aXRjaEB6anUuZWR1LmNuPgo+ID4gLS0tCj4gPiBmcy9nZnMyL3F1b3RhLmMg fCAxOSArKysrKysrKysrKysrKysrKystCj4gPiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5j IGIvZnMvZ2ZzMi9xdW90YS5jCj4gPiBpbmRleCAwMDFjOGIzOWNhNTUuLmQ1MDUzNGVkOTM3OSAx MDA2NDQKPiA+IC0tLSBhL2ZzL2dmczIvcXVvdGEuYwo+ID4gKysrIGIvZnMvZ2ZzMi9xdW90YS5j Cj4gPiBAQCAtMTM4NCwxOSArMTM4NCwzNiBAQCBpbnQgZ2ZzMl9xdW90YV9zeW5jKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIGludCB0eXBlKQo+ID4gCj4gPiBpbnQgZ2ZzMl9xdW90YV9yZWZyZXNo KHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3Qga3FpZCBxaWQpCj4gPiB7Cj4gPiArICAgICBz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2RwLT5zZF92ZnM7Cj4gPiAgICAgICBzdHJ1Y3QgZ2Zz Ml9xdW90YV9kYXRhICpxZDsKPiA+ICAgICAgIHN0cnVjdCBnZnMyX2hvbGRlciBxX2doOwo+ID4g ICAgICAgaW50IGVycm9yOwo+ID4gCj4gPiArICAgICAvKgo+ID4gKyAgICAgICogVGhlIHN5c2Zz IGZpbGVzIGFyZSBjcmVhdGVkIGJlZm9yZSBmaWxsX3N1cGVyIGNvbXBsZXRlcy4gQXZvaWQKPiA+ ICsgICAgICAqIGJsb2NraW5nIG9uIHNfdW1vdW50IGJlY2F1c2UgdGhlIG1vdW50IGZhaWx1cmUg cGF0aCByZW1vdmVzIHRoZQo+ID4gKyAgICAgICogc3lzZnMgZmlsZXMgd2hpbGUgaG9sZGluZyBp dCBmb3Igd3JpdGluZy4KPiA+ICsgICAgICAqLwo+ID4gKyAgICAgaWYgKCFkb3duX3JlYWRfdHJ5 bG9jaygmc2ItPnNfdW1vdW50KSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FQUdBSU47Cj4g PiArCj4gPiArICAgICBpZiAoIShzYi0+c19mbGFncyAmIFNCX0FDVElWRSkpIHsKPiA+ICsgICAg ICAgICAgICAgZXJyb3IgPSAtRUFHQUlOOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxv Y2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAgICAgICBlcnJvciA9IHFkX2dldChzZHAsIHFpZCwg JnFkKTsKPiA+ICAgICAgIGlmIChlcnJvcikKPiA+IC0gICAgICAgICAgICAgcmV0dXJuIGVycm9y Owo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4gPiAKPiA+ICAgICAgIGVycm9y ID0gZG9fZ2xvY2socWQsIEZPUkNFLCAmcV9naCk7Cj4gPiAgICAgICBpZiAoIWVycm9yKQo+ID4g ICAgICAgICAgICAgZ2ZzMl9nbG9ja19kcV91bmluaXQoJnFfZ2gpOwo+ID4gCj4gPiAgICAgICBx ZF9wdXQocWQpOwo+ID4gCj4gPiArb3V0X3VubG9jazoKPiA+ICsgICAgIHVwX3JlYWQoJnNiLT5z X3Vtb3VudCk7Cj4gPiAgICAgICByZXR1cm4gZXJyb3I7Cj4gPiB9Cg==