From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from zg8tmtyylji0my4xnjeumjiw.icoremail.net (zg8tmtyylji0my4xnjeumjiw.icoremail.net [162.243.161.220]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4584D313543 for ; Fri, 21 Aug 2026 04:16:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.243.161.220 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787285771; cv=none; b=R40r3+hLCA8b5NzvKe/In7XzhuL5GETQYHgRHEJhnZ3UqFg+ThojOIq6EJOg/LbXrViBl368H/Bq2wD7iDd7Jofqg0wi6urw4Cty8PxL9gxAIxPtluaXSGX6zk93ue5EDmAb/Ea6LDUkt+sK5NLH1PSGEst5KsOvymWYuOhDikM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787285771; c=relaxed/simple; bh=VukrZm6YEZHEWKQ/6ANAOvRBud/xoXK4g/NupKUulcE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=B/amojYDr6olptIWr8xP6xLhNEMaXTV6y3EEXSmku52VkP+z5pO2Jxk+C2+ywWtKNHgGgNjSJF+uN0x0/pR6hU6d8Uf0nUbyyGsMz3ATTU/aIZLhihu1ihbR9e2ShA6oHO4yOzymxxT8uS29e5ATPT5LG+GLsk7F37JomO2ChwU= 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=162.243.161.220 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 _____wC3sD_90IdqYKCwAA--.10948S3; Fri, 21 Aug 2026 12:15:57 +0800 (CST) Received: from stitch$zju.edu.cn ( [10.190.129.65] ) by ajax-webmail-mail-app3 (Coremail) ; Fri, 21 Aug 2026 12:15:57 +0800 (GMT+08:00) Date: Fri, 21 Aug 2026 12:15:57 +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 4/5] gfs2: protect demote requests during superblock 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: <3ee7b770.162d1.1a022885d61.Coremail.stitch@zju.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:zS_KCgBngHL90IdqXe+NBA--.19920W X-CM-SenderInfo: qtrxiiaqttimo62m3hxhgxhubq/1tbiAwQJC2qGXxcNSAAIss X-CM-DELIVERINFO: =?B?gckH8gXKKxbFmtjJiESix3B1w3tMoM3snk/k5SVzZVydjEqe1eefKHnLf95EnB4iem egW9p9QbwFO/M6dbbDVJYHFkZ8tOrTfRNhWv0XtHADsjPHTue9kye1RcsFm6ebIWvk4PAX aEMVeg7QKTAEsr5fj46rMnQzUTmpudiqhhTnJZh9KUn2G/FMb1FOqLBnRCtR/g== X-Coremail-Antispam: 1Uk129KBj93XoW3XFyxWrW7XryrWFWxZFWDAwc_yoWxAw4fpF 4qvay5Cr4kGr17uayS9a1rWa4Fg3yfuF47Ar1Ig3W7Ar90qrsagFyftFy0vFyrCws7Cr1j qF40qasI9ryDGFXCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUPCb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AK xVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUAVWUtwAv7VC2z280aVAF wI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4x0Y48IcxkI7V AKI48G6xCjnVAKz4kxM4xvF2IEb7IF0Fy264kE64k0F24lFcxC0VAYjxAxZF0Ex2IqxwCF 04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r 18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vI r41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr 1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvE x4A2jsIEc7CjxVAFwI0_Gr0_Gr1UMVCEFcxC0VAYjxAxZFUvcSsGvfC2KfnxnUUI43ZEXa 7IU8TCJJUUUUU== VGhlIGRlbW90ZV9ycSBzeXNmcyBjYWxsYmFjayBjYW4gb2J0YWluIGEgZ2xvY2sgd2hpbGUgdW5t b3VudCBpcwp0ZWFyaW5nIGRvd24gdGhlIGdsb2NrIGhhc2ggYW5kIGRlc3Ryb3lpbmcgc2RfZ2xv Y2tfd3EuIFRoZSBjYWxsYmFjawptYXkgdGhlbiBxdWV1ZSB3b3JrIHRocm91Z2ggdGhlIGRlc3Ry b3llZCB3b3JrcXVldWUuCgpTZXJpYWxpemUgdGhlIGNvbXBsZXRlIGRlbW90ZSBvcGVyYXRpb24g d2l0aCBzX3Vtb3VudCBhbmQgcmVqZWN0CnJlcXVlc3RzIHdoaWxlIHRoZSBzdXBlcmJsb2NrIGlz IG5vdCBhY3RpdmUuIHRyeWxvY2sgc2VtYW50aWNzIGF2b2lkCmRlYWRsb2NraW5nIHdpdGggbW91 bnQgZmFpbHVyZSBhbmQgdW5tb3VudCBwYXRocyB0aGF0IHJlbW92ZSBzeXNmcy4KClNpZ25lZC1v ZmYtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1LmVkdS5jbj4KLS0tCiBmcy9nZnMyL3N5cy5j IHwgMTggKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9nZnMyL3N5cy5jIGIvZnMvZ2ZzMi9z eXMuYwppbmRleCA5NGIyM2E2ZDdlZmUuLjk5NTk2YjFhYzA4YiAxMDA2NDQKLS0tIGEvZnMvZ2Zz Mi9zeXMuYworKysgYi9mcy9nZnMyL3N5cy5jCkBAIC0zMTUsNiArMzE1LDcgQEAgc3RhdGljIHNz aXplX3QgcXVvdGFfcmVmcmVzaF9ncm91cF9zdG9yZShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgY29u c3QgY2hhciAqYnVmLAogCiBzdGF0aWMgc3NpemVfdCBkZW1vdGVfcnFfc3RvcmUoc3RydWN0IGdm czJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKIHsKKyAgICAgICBzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2RwLT5zZF92ZnM7CiAgICAgICAgc3RydWN0IGdmczJfZ2xv Y2sgKmdsOwogICAgICAgIGNvbnN0IHN0cnVjdCBnZnMyX2dsb2NrX29wZXJhdGlvbnMgKmdsb3Bz OwogICAgICAgIHVuc2lnbmVkIGludCBnbG1vZGU7CkBAIC0zNDgsMTQgKzM0OSwyNyBAQCBzdGF0 aWMgc3NpemVfdCBkZW1vdGVfcnFfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNo YXIgKmJ1Ziwgc2l6ZV90IGxlbgogICAgICAgICAgICAgICAgZ2xvcHMgPSBnZnMyX2dsb3BzX2xp c3RbZ2x0eXBlXTsKICAgICAgICBpZiAoZ2xvcHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgICAgaWYgKCFkb3duX3JlYWRfdHJ5bG9jaygmc2ItPnNfdW1v dW50KSkKKyAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOworCisgICAgICAgaWYgKCEoc2It PnNfZmxhZ3MgJiBTQl9BQ1RJVkUpKSB7CisgICAgICAgICAgICAgICBydiA9IC1FQUdBSU47Cisg ICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgICAgfQorCiAgICAgICAgaWYgKCF0 ZXN0X2FuZF9zZXRfYml0KFNERl9ERU1PVEUsICZzZHAtPnNkX2ZsYWdzKSkKICAgICAgICAgICAg ICAgIGZzX2luZm8oc2RwLCAiZGVtb3RlIGludGVyZmFjZSB1c2VkXG4iKTsKICAgICAgICBydiA9 IGdmczJfZ2xvY2tfZ2V0KHNkcCwgZ2xudW0sIGdsb3BzLCBOT19DUkVBVEUsICZnbCk7CiAgICAg ICAgaWYgKHJ2KQotICAgICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICAgICAgICAgZ290 byBvdXRfdW5sb2NrOwogICAgICAgIGdmczJfZ2xvY2tfY2IoZ2wsIGdsbW9kZSk7CiAgICAgICAg Z2ZzMl9nbG9ja19wdXQoZ2wpOwotICAgICAgIHJldHVybiBsZW47CisgICAgICAgcnYgPSAwOwor CitvdXRfdW5sb2NrOgorICAgICAgIHVwX3JlYWQoJnNiLT5zX3Vtb3VudCk7CisgICAgICAgcmV0 dXJuIHJ2ID8gcnYgOiBsZW47CiB9CiAKIAotLSAKMi4yNS4xCgoKPiAtLS0tLeWOn+Wni+mCruS7 ti0tLS0tCj4g5Y+R5Lu25Lq6OiAiSmlhY2hlbmcgWHUiIDxzdGl0Y2hAemp1LmVkdS5jbj4KPiDl j5HpgIHml7bpl7Q6MjAyNi0wOC0yMSAxMjowOToyMSAo5pif5pyf5LqUKQo+IOaUtuS7tuS6ujog IkFuZHJlYXMgR3J1ZW5iYWNoZXIiIDxhZ3J1ZW5iYUByZWRoYXQuY29tPgo+IOaKhOmAgTogZ2Zz MkBsaXN0cy5saW51eC5kZXYsIGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPiDkuLvpopg6 IFtQQVRDSCB2MiAwLzVdIGdmczI6IHByb3RlY3Qgc3lzZnMgY2FsbGJhY2tzIGZyb20gc3VwZXJi bG9jayB0ZWFyZG93bgo+IAo+IFRoZSBHRlMyIHN5c2ZzIGZpbGVzIGJlY29tZSB2aXNpYmxlIGJl Zm9yZSBmaWxsX3N1cGVyKCkgY29tcGxldGVzIGFuZAo+IHJlbWFpbiBwcmVzZW50IHVudGlsIGFm dGVyIGZpbGVzeXN0ZW0gcmVzb3VyY2VzIGhhdmUgYmVlbiByZWxlYXNlZC4KPiBDb25zZXF1ZW50 bHksIGNhbGxiYWNrcyB0aGF0IGFjY2VzcyBxdW90YSwgc3RhdGZzLCBnbG9jayBvciBqb3VybmFs Cj4gc3RhdGUgY2FuIHJhY2Ugd2l0aCBtb3VudCBmYWlsdXJlIHJvbGxiYWNrIG9yIHVubW91bnQg dGVhcmRvd24uCj4gCj4gVGhlIHF1b3RhIHJlZnJlc2ggZml4IHdhcyBvcmlnaW5hbGx5IHNlbnQg YXMgYSBzdGFuZGFsb25lIFtQQVRDSF0uIFRoaXMKPiB2ZXJzaW9uIGZvbGRzIGl0IGludG8gYSBj b21wbGV0ZSBzZXJpZXMgYW5kIGFkZHMgdGhlIGNvcnJlc3BvbmRpbmcKPiBsaWZldGltZSBwcm90 ZWN0aW9uIGZvciB0aGUgb3RoZXIgYWZmZWN0ZWQgc3lzZnMgY2FsbGJhY2tzLgo+IAo+IEFsbCBj YWxsYmFja3MgdXNlIGRvd25fcmVhZF90cnlsb2NrKCkgb24gc191bW91bnQgYW5kIHZlcmlmeSBT Ql9BQ1RJVkUuCj4gUmV0dXJuaW5nIC1FQUdBSU4gYXZvaWRzIGRlYWRsb2NrIHdoZW4gbW91bnQg ZmFpbHVyZSBvciB1bm1vdW50IGhvbGRzCj4gdGhlIHdyaXRlIHNpZGUgb2Ygc191bW91bnQgd2hp bGUgcmVtb3ZpbmcgdGhlIHN5c2ZzIGZpbGVzLgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBGb2xk ZWQgdGhlIG9yaWdpbmFsIHF1b3RhIHJlZnJlc2ggZml4IGludG8gYSBmaXZlLXBhdGNoIHNlcmll cy4KPiAtIEFkZGVkIHN0YXRmc19zeW5jLCBxdW90YV9zeW5jLCBkZW1vdGVfcnEgYW5kIHN0YXR1 cyBmaXhlcy4KPiAKPiBKaWFjaGVuZyBYdSAoNSk6Cj4gICBnZnMyOiBwcm90ZWN0IHF1b3RhIHJl ZnJlc2ggZnJvbSBzdXBlcmJsb2NrIHRlYXJkb3duCj4gICBnZnMyOiBwcm90ZWN0IHN0YXRmcyBz eW5jIHN5c2ZzIGNhbGxiYWNrCj4gICBnZnMyOiBwcm90ZWN0IHF1b3RhIHN5bmMgc3lzZnMgY2Fs bGJhY2sKPiAgIGdmczI6IHByb3RlY3QgZGVtb3RlIHJlcXVlc3RzIGR1cmluZyBzdXBlcmJsb2Nr IHRlYXJkb3duCj4gICBnZnMyOiBwcm90ZWN0IHN0YXR1cyBzeXNmcyByZWFkcyBkdXJpbmcgdGVh cmRvd24KPiAKPiAgZnMvZ2ZzMi9xdW90YS5jIHwgMTkgKysrKysrKysrKysrKystCj4gIGZzL2dm czIvc3lzLmMgICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQo+IAo+IAo+IGJhc2UtY29tbWl0OiAwZjIzZDU2ZjE3ZmRmYzdkYjY5ZDUxZjY0YzhiOTFi YmFiOTQ3YWE5Cj4gLS0gCj4gMi4yNS4xCj4gCj4gPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4g PiDlj5Hku7bkuro6ICJKaWFjaGVuZyBYdSIgPHN0aXRjaEB6anUuZWR1LmNuPgo+ID4g5Y+R6YCB 5pe26Ze0OjIwMjYtMDgtMTkgMTU6MDE6MDcgKOaYn+acn+S4iSkKPiA+IOaUtuS7tuS6ujogIkFu ZHJlYXMgR3J1ZW5iYWNoZXIiIDxhZ3J1ZW5iYUByZWRoYXQuY29tPgo+ID4g5oqE6YCBOiBnZnMy QGxpc3RzLmxpbnV4LmRldiwgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwo+ID4g5Li76aKY OiBbUEFUQ0hdIGdmczI6IEZpeCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gcXVvdGEgcmVm cmVzaAo+ID4gCj4gPiBUaGUgR0ZTMiBzeXNmcyBmaWxlcyBhcmUgcmVnaXN0ZXJlZCBiZWZvcmUg aW5pdF9pbm9kZXMoKSBjb21wbGV0ZXMuCj4gPiBDb25zZXF1ZW50bHksIHRoZSBxdW90YV9yZWZy ZXNoX3VzZXIgYW5kIHF1b3RhX3JlZnJlc2hfZ3JvdXAgc3lzZnMKPiA+IGF0dHJpYnV0ZXMgY2Fu IGJlIGFjY2Vzc2VkIHdoaWxlIHNkcC0+c2RfcXVvdGFfaW5vZGUgaGFzIG5vdCBiZWVuCj4gPiBp bml0aWFsaXplZCB5ZXQuCj4gPiAKPiA+IEEgY29uY3VycmVudCB3cml0ZSB0byBxdW90YV9yZWZy ZXNoX3VzZXIgbWF5IHRoZW4gY2FsbCBkb19nbG9jaygpLCB3aGljaAo+ID4gZGVyZWZlcmVuY2Vz IHNkcC0+c2RfcXVvdGFfaW5vZGUuIFRoaXMgY2FuIHJlc3VsdCBpbiBhIE5VTEwgcG9pbnRlciBk ZXJlZmVyZW5jZSAKPiA+IGluIGRvX2dsb2NrKCkuIFRoZSBzYW1lIGNhbGxiYWNrIGNhbiBhbHNv IHJhY2Ugd2l0aCBzdXBlcmJsb2NrCj4gPiB0ZWFyZG93biBhbmQgYWNjZXNzIGRhdGEgYWZ0ZXIg dGhlIGZpbGVzeXN0ZW0gaGFzIHN0YXJ0ZWQgdG8gc2h1dCBkb3duLgo+ID4gCj4gPiBNb3Zpbmcg c3lzZnMgcmVnaXN0cmF0aW9uIGFmdGVyIGluaXRfaW5vZGVzKCkgd291bGQgYXZvaWQgdGhlIGlu aXRpYWxpemF0aW9uCj4gPiB3aW5kb3csIGJ1dCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGUg bG9jayBtYW5hZ2VyIG1heSBuZWVkIHRoZSBHRlMyCj4gPiBzeXNmcyBmaWxlcyBkdXJpbmcgdGhl IHJlbWFpbmluZyBtb3VudCBzZXF1ZW5jZS4KPiA+IAo+ID4gU2VyaWFsaXplIGdmczJfcXVvdGFf cmVmcmVzaCgpIHdpdGggdGhlIHN1cGVyYmxvY2sgbGlmZXRpbWUgaW5zdGVhZC4KPiA+IEFjcXVp cmUgc191bW91bnQgZm9yIHJlYWRpbmcgYmVmb3JlIGFjY2Vzc2luZyBxdW90YSBkYXRhLiBNb3Vu dCBmYWlsdXJlIGFuZAo+ID4gdW5tb3VudCBwYXRocyBob2xkIHNfdW1vdW50IGZvciB3cml0aW5n LCBzbyB0aGlzIHByZXZlbnRzIHRoZSBjYWxsYmFjayBmcm9tCj4gPiBydW5uaW5nIHdoaWxlIHRo ZSBzdXBlcmJsb2NrIGlzIGJlaW5nIGluaXRpYWxpemVkIG9yIGRlc3Ryb3llZC4KPiA+IAo+ID4g VXNlIGRvd25fcmVhZF90cnlsb2NrKCkgaW5zdGVhZCBvZiBkb3duX3JlYWQoKSBiZWNhdXNlIHRo ZSBtb3VudCBmYWlsdXJlCj4gPiBwYXRoIG1heSBhbHJlYWR5IGhvbGQgc191bW91bnQgZm9yIHdy aXRpbmcgd2hpbGUgcmVtb3ZpbmcgdGhlIHN5c2ZzIGZpbGVzLgo+ID4gUmV0dXJuaW5nIC1FQUdB SU4gYWxsb3dzIHRoZSBzeXNmcyB3cml0ZSB0byBmYWlsIHdpdGhvdXQgaW50cm9kdWNpbmcgYQo+ ID4gZGVhZGxvY2suCj4gPiAKPiA+IEFsc28gdmVyaWZ5IFNCX0FDVElWRSBhZnRlciBhY3F1aXJp bmcgdGhlIHJlYWQgbG9jaywgc2luY2UgdGhlIHN5c2ZzCj4gPiBhdHRyaWJ1dGVzIGJlY29tZSB2 aXNpYmxlIGJlZm9yZSB0aGUgc3VwZXJibG9jayBpcyBmdWxseSBhY3RpdmUuCj4gPiAKPiA+IFRo ZSByZXByb2R1Y2VyIG9mIHRoZSBpc3N1ZSBpcyBhdHRhY2hlZC4gQWZ0ZXIgYXBwbHlpbmcgdGhp cyBwYXRjaCwgCj4gPiB0aGUgcmVwcm9kdWNlciBubyBsb25nZXIgdHJpZ2dlcnMgdGhlIGtlcm5l bCBjcmFzaC4gCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1 LmVkdS5jbj4KPiA+IFRlc3RlZC1ieTogSmlhY2hlbmcgWHUgPHN0aXRjaEB6anUuZWR1LmNuPgo+ ID4gLS0tCj4gPiBmcy9nZnMyL3F1b3RhLmMgfCAxOSArKysrKysrKysrKysrKysrKystCj4gPiAx IGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gCj4gPiBk aWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90YS5jIGIvZnMvZ2ZzMi9xdW90YS5jCj4gPiBpbmRleCAw MDFjOGIzOWNhNTUuLmQ1MDUzNGVkOTM3OSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2dmczIvcXVvdGEu Ywo+ID4gKysrIGIvZnMvZ2ZzMi9xdW90YS5jCj4gPiBAQCAtMTM4NCwxOSArMTM4NCwzNiBAQCBp bnQgZ2ZzMl9xdW90YV9zeW5jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKQo+ID4g Cj4gPiBpbnQgZ2ZzMl9xdW90YV9yZWZyZXNoKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3Qg a3FpZCBxaWQpCj4gPiB7Cj4gPiArICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2RwLT5z ZF92ZnM7Cj4gPiAgICAgICBzdHJ1Y3QgZ2ZzMl9xdW90YV9kYXRhICpxZDsKPiA+ICAgICAgIHN0 cnVjdCBnZnMyX2hvbGRlciBxX2doOwo+ID4gICAgICAgaW50IGVycm9yOwo+ID4gCj4gPiArICAg ICAvKgo+ID4gKyAgICAgICogVGhlIHN5c2ZzIGZpbGVzIGFyZSBjcmVhdGVkIGJlZm9yZSBmaWxs X3N1cGVyIGNvbXBsZXRlcy4gQXZvaWQKPiA+ICsgICAgICAqIGJsb2NraW5nIG9uIHNfdW1vdW50 IGJlY2F1c2UgdGhlIG1vdW50IGZhaWx1cmUgcGF0aCByZW1vdmVzIHRoZQo+ID4gKyAgICAgICog c3lzZnMgZmlsZXMgd2hpbGUgaG9sZGluZyBpdCBmb3Igd3JpdGluZy4KPiA+ICsgICAgICAqLwo+ ID4gKyAgICAgaWYgKCFkb3duX3JlYWRfdHJ5bG9jaygmc2ItPnNfdW1vdW50KSkKPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FQUdBSU47Cj4gPiArCj4gPiArICAgICBpZiAoIShzYi0+c19mbGFn cyAmIFNCX0FDVElWRSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJyb3IgPSAtRUFHQUlOOwo+ID4g KyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAgICAg ICBlcnJvciA9IHFkX2dldChzZHAsIHFpZCwgJnFkKTsKPiA+ICAgICAgIGlmIChlcnJvcikKPiA+ IC0gICAgICAgICAgICAgcmV0dXJuIGVycm9yOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91 bmxvY2s7Cj4gPiAKPiA+ICAgICAgIGVycm9yID0gZG9fZ2xvY2socWQsIEZPUkNFLCAmcV9naCk7 Cj4gPiAgICAgICBpZiAoIWVycm9yKQo+ID4gICAgICAgICAgICAgZ2ZzMl9nbG9ja19kcV91bmlu aXQoJnFfZ2gpOwo+ID4gCj4gPiAgICAgICBxZF9wdXQocWQpOwo+ID4gCj4gPiArb3V0X3VubG9j azoKPiA+ICsgICAgIHVwX3JlYWQoJnNiLT5zX3Vtb3VudCk7Cj4gPiAgICAgICByZXR1cm4gZXJy b3I7Cj4gPiB9Cg==