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 7DE6737B00E for ; Fri, 21 Aug 2026 04:15: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=1787285707; cv=none; b=tjjnr1saIySOJDszJlk0DGgv5guT7mWyjmvWdQGr9F2IOJbR5bH5A1WwV/IiEVcpXvJGTb/+MLxp22mInJBJCMOFOAPop8PlGYL/n1tb4j2RkREsT8GQwq5t9TF4aWJASYNcDxMGU4nXidRZqANIqS7niyiDr/iXHc553/CilMw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787285707; c=relaxed/simple; bh=YW5I84G4bP6qI7hB41anPcWtGZh6Ggplsw+z84pHteE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=SNqhjZSOBsyESsaM//e0XY/o8aBv40KA5Rb20RBakLRbxZrrNlVuQfvMksJeyujoBmfg12Td0zXvE3O3o3sCG4AirE45B1PCz9Y7b4xULnPPQubQH7rALRONRJ3tpliuah6BETRDNBlOcBcpM514FSrCbr2QFA/tiT+J4Njm/Ko= 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 _____wBnEz3E0Idqz5+wAA--.11013S3; Fri, 21 Aug 2026 12:15:00 +0800 (CST) Received: from stitch$zju.edu.cn ( [10.190.129.65] ) by ajax-webmail-mail-app3 (Coremail) ; Fri, 21 Aug 2026 12:14:59 +0800 (GMT+08:00) Date: Fri, 21 Aug 2026 12:14:59 +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 3/5] gfs2: protect quota sync sysfs callback 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: <2b17084e.162cb.1a022877d91.Coremail.stitch@zju.edu.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID:zS_KCgDnsXXD0IdqZ+6NBA--.25461W X-CM-SenderInfo: qtrxiiaqttimo62m3hxhgxhubq/1tbiAwQJC2qGXxcNSAAHsj X-CM-DELIVERINFO: =?B?vzbmuQXKKxbFmtjJiESix3B1w3tMoM3snk/k5SVzZVydjEqe1eefKHnLf95EnB4iem egW9p9QbwFO/M6dbbDVJYHFkYZVCyhUtN23FgWKwQINYs9uGCIZHWPwAVxC/i9kS1+2X6z 1U2AS2zB/DfFrX2NtsADLkIYk2rYF5/76hBsvYvDZAzQpZCY0tmtBHpXTWN/1Q== X-Coremail-Antispam: 1Uk129KBj93XoWxKFWkCryUGryfJF43Xry8Xrc_yoWxXw1kpF 4qvay5Cr4kJr17uFW3KF4rWa4rW3yfuF47Jr4Ig3W7Ar98trsagFyIqFy0vFyUGwsrCr1U XF4vqasI9ryDGFXCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUPCb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AK xVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUXVWUAwAv7VC2z280aVAF wI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4x0Y48IcxkI7V AKI48G6xCjnVAKz4kxM4xvF2IEb7IF0Fy264kE64k0F24lFcxC0VAYjxAxZF0Ex2IqxwCF 04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r 18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vI r41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr 1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvE x4A2jsIEc7CjxVAFwI0_Gr0_Gr1UMVCEFcxC0VAYjxAxZFUvcSsGvfC2KfnxnUUI43ZEXa 7IU8ag4PUUUUU== VGhlIHF1b3RhX3N5bmMgc3lzZnMgY2FsbGJhY2sgY2FuIHJ1biB3aGlsZSBxdW90YSBjbGVhbnVw IGlzIHJlbGVhc2luZwp0aGUgcXVvdGEgYml0bWFwIGFuZCBpbnRlcm5hbCBxdW90YSBpbm9kZXMg ZHVyaW5nIG1vdW50IHJvbGxiYWNrIG9yCnVubW91bnQuCgpIb2xkIHNfdW1vdW50IGZvciByZWFk aW5nIHdoaWxlIHN5bmNocm9uaXppbmcgcXVvdGEgZGF0YSBhbmQgcmVqZWN0CnJlcXVlc3RzIGJl Zm9yZSB0aGUgc3VwZXJibG9jayBpcyBhY3RpdmUuIFVzZSB0cnlsb2NrIHNlbWFudGljcyBzbyB0 aGUKY2FsbGJhY2sgY2Fubm90IGRlYWRsb2NrIHdpdGggdGhlIHdyaXRlLXNpZGUgdGVhcmRvd24g cGF0aC4KClNpZ25lZC1vZmYtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1LmVkdS5jbj4KLS0t CiBmcy9nZnMyL3N5cy5jIHwgMTYgKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE0 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9zeXMu YyBiL2ZzL2dmczIvc3lzLmMKaW5kZXggMGUyZDY1OTgyYzI5Li45NGIyM2E2ZDdlZmUgMTAwNjQ0 Ci0tLSBhL2ZzL2dmczIvc3lzLmMKKysrIGIvZnMvZ2ZzMi9zeXMuYwpAQCAtMjQxLDYgKzI0MSw3 IEBAIHN0YXRpYyBzc2l6ZV90IHN0YXRmc19zeW5jX3N0b3JlKHN0cnVjdCBnZnMyX3NiZCAqc2Rw LCBjb25zdCBjaGFyICpidWYsCiBzdGF0aWMgc3NpemVfdCBxdW90YV9zeW5jX3N0b3JlKHN0cnVj dCBnZnMyX3NiZCAqc2RwLCBjb25zdCBjaGFyICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IGxlbikKIHsKKyAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0g c2RwLT5zZF92ZnM7CiAgICAgICAgaW50IGVycm9yLCB2YWw7CiAKICAgICAgICBpZiAoIWNhcGFi bGUoQ0FQX1NZU19BRE1JTikpCkBAIC0yNTMsOCArMjU0LDE5IEBAIHN0YXRpYyBzc2l6ZV90IHF1 b3RhX3N5bmNfc3RvcmUoc3RydWN0IGdmczJfc2JkICpzZHAsIGNvbnN0IGNoYXIgKmJ1ZiwKICAg ICAgICBpZiAodmFsICE9IDEpCiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAg ICAgIGdmczJfcXVvdGFfc3luYyhzZHAtPnNkX3ZmcywgMCk7Ci0gICAgICAgcmV0dXJuIGxlbjsK KyAgICAgICBpZiAoIWRvd25fcmVhZF90cnlsb2NrKCZzYi0+c191bW91bnQpKQorICAgICAgICAg ICAgICAgcmV0dXJuIC1FQUdBSU47CisKKyAgICAgICBpZiAoIShzYi0+c19mbGFncyAmIFNCX0FD VElWRSkpIHsKKyAgICAgICAgICAgICAgIGVycm9yID0gLUVBR0FJTjsKKyAgICAgICAgICAgICAg IGdvdG8gb3V0X3VubG9jazsKKyAgICAgICB9CisKKyAgICAgICBnZnMyX3F1b3RhX3N5bmMoc2Is IDApOworCitvdXRfdW5sb2NrOgorICAgICAgIHVwX3JlYWQoJnNiLT5zX3Vtb3VudCk7CisgICAg ICAgcmV0dXJuIGVycm9yID8gZXJyb3IgOiBsZW47CiB9CiAKIHN0YXRpYyBzc2l6ZV90IHF1b3Rh X3JlZnJlc2hfdXNlcl9zdG9yZShzdHJ1Y3QgZ2ZzMl9zYmQgKnNkcCwgY29uc3QgY2hhciAqYnVm LAotLSAKMi4yNS4xCgoKPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4g5Y+R5Lu25Lq6OiAiSmlh Y2hlbmcgWHUiIDxzdGl0Y2hAemp1LmVkdS5jbj4KPiDlj5HpgIHml7bpl7Q6MjAyNi0wOC0yMSAx MjowOToyMSAo5pif5pyf5LqUKQo+IOaUtuS7tuS6ujogIkFuZHJlYXMgR3J1ZW5iYWNoZXIiIDxh Z3J1ZW5iYUByZWRoYXQuY29tPgo+IOaKhOmAgTogZ2ZzMkBsaXN0cy5saW51eC5kZXYsIGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPiDkuLvpopg6IFtQQVRDSCB2MiAwLzVdIGdmczI6IHBy b3RlY3Qgc3lzZnMgY2FsbGJhY2tzIGZyb20gc3VwZXJibG9jayB0ZWFyZG93bgo+IAo+IFRoZSBH RlMyIHN5c2ZzIGZpbGVzIGJlY29tZSB2aXNpYmxlIGJlZm9yZSBmaWxsX3N1cGVyKCkgY29tcGxl dGVzIGFuZAo+IHJlbWFpbiBwcmVzZW50IHVudGlsIGFmdGVyIGZpbGVzeXN0ZW0gcmVzb3VyY2Vz IGhhdmUgYmVlbiByZWxlYXNlZC4KPiBDb25zZXF1ZW50bHksIGNhbGxiYWNrcyB0aGF0IGFjY2Vz cyBxdW90YSwgc3RhdGZzLCBnbG9jayBvciBqb3VybmFsCj4gc3RhdGUgY2FuIHJhY2Ugd2l0aCBt b3VudCBmYWlsdXJlIHJvbGxiYWNrIG9yIHVubW91bnQgdGVhcmRvd24uCj4gCj4gVGhlIHF1b3Rh IHJlZnJlc2ggZml4IHdhcyBvcmlnaW5hbGx5IHNlbnQgYXMgYSBzdGFuZGFsb25lIFtQQVRDSF0u IFRoaXMKPiB2ZXJzaW9uIGZvbGRzIGl0IGludG8gYSBjb21wbGV0ZSBzZXJpZXMgYW5kIGFkZHMg dGhlIGNvcnJlc3BvbmRpbmcKPiBsaWZldGltZSBwcm90ZWN0aW9uIGZvciB0aGUgb3RoZXIgYWZm ZWN0ZWQgc3lzZnMgY2FsbGJhY2tzLgo+IAo+IEFsbCBjYWxsYmFja3MgdXNlIGRvd25fcmVhZF90 cnlsb2NrKCkgb24gc191bW91bnQgYW5kIHZlcmlmeSBTQl9BQ1RJVkUuCj4gUmV0dXJuaW5nIC1F QUdBSU4gYXZvaWRzIGRlYWRsb2NrIHdoZW4gbW91bnQgZmFpbHVyZSBvciB1bm1vdW50IGhvbGRz Cj4gdGhlIHdyaXRlIHNpZGUgb2Ygc191bW91bnQgd2hpbGUgcmVtb3ZpbmcgdGhlIHN5c2ZzIGZp bGVzLgo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gLSBGb2xkZWQgdGhlIG9yaWdpbmFsIHF1b3RhIHJl ZnJlc2ggZml4IGludG8gYSBmaXZlLXBhdGNoIHNlcmllcy4KPiAtIEFkZGVkIHN0YXRmc19zeW5j LCBxdW90YV9zeW5jLCBkZW1vdGVfcnEgYW5kIHN0YXR1cyBmaXhlcy4KPiAKPiBKaWFjaGVuZyBY dSAoNSk6Cj4gICBnZnMyOiBwcm90ZWN0IHF1b3RhIHJlZnJlc2ggZnJvbSBzdXBlcmJsb2NrIHRl YXJkb3duCj4gICBnZnMyOiBwcm90ZWN0IHN0YXRmcyBzeW5jIHN5c2ZzIGNhbGxiYWNrCj4gICBn ZnMyOiBwcm90ZWN0IHF1b3RhIHN5bmMgc3lzZnMgY2FsbGJhY2sKPiAgIGdmczI6IHByb3RlY3Qg ZGVtb3RlIHJlcXVlc3RzIGR1cmluZyBzdXBlcmJsb2NrIHRlYXJkb3duCj4gICBnZnMyOiBwcm90 ZWN0IHN0YXR1cyBzeXNmcyByZWFkcyBkdXJpbmcgdGVhcmRvd24KPiAKPiAgZnMvZ2ZzMi9xdW90 YS5jIHwgMTkgKysrKysrKysrKysrKystCj4gIGZzL2dmczIvc3lzLmMgICB8IDY1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiAgMiBmaWxlcyBjaGFu Z2VkLCA3NiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IAo+IGJhc2UtY29tbWl0 OiAwZjIzZDU2ZjE3ZmRmYzdkYjY5ZDUxZjY0YzhiOTFiYmFiOTQ3YWE5Cj4gLS0gCj4gMi4yNS4x Cj4gCj4gPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4gPiDlj5Hku7bkuro6ICJKaWFjaGVuZyBY dSIgPHN0aXRjaEB6anUuZWR1LmNuPgo+ID4g5Y+R6YCB5pe26Ze0OjIwMjYtMDgtMTkgMTU6MDE6 MDcgKOaYn+acn+S4iSkKPiA+IOaUtuS7tuS6ujogIkFuZHJlYXMgR3J1ZW5iYWNoZXIiIDxhZ3J1 ZW5iYUByZWRoYXQuY29tPgo+ID4g5oqE6YCBOiBnZnMyQGxpc3RzLmxpbnV4LmRldiwgbGludXgt a2VybmVsQHZnZXIua2VybmVsLm9yZwo+ID4g5Li76aKYOiBbUEFUQ0hdIGdmczI6IEZpeCBOVUxM IHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gcXVvdGEgcmVmcmVzaAo+ID4gCj4gPiBUaGUgR0ZTMiBz eXNmcyBmaWxlcyBhcmUgcmVnaXN0ZXJlZCBiZWZvcmUgaW5pdF9pbm9kZXMoKSBjb21wbGV0ZXMu Cj4gPiBDb25zZXF1ZW50bHksIHRoZSBxdW90YV9yZWZyZXNoX3VzZXIgYW5kIHF1b3RhX3JlZnJl c2hfZ3JvdXAgc3lzZnMKPiA+IGF0dHJpYnV0ZXMgY2FuIGJlIGFjY2Vzc2VkIHdoaWxlIHNkcC0+ c2RfcXVvdGFfaW5vZGUgaGFzIG5vdCBiZWVuCj4gPiBpbml0aWFsaXplZCB5ZXQuCj4gPiAKPiA+ IEEgY29uY3VycmVudCB3cml0ZSB0byBxdW90YV9yZWZyZXNoX3VzZXIgbWF5IHRoZW4gY2FsbCBk b19nbG9jaygpLCB3aGljaAo+ID4gZGVyZWZlcmVuY2VzIHNkcC0+c2RfcXVvdGFfaW5vZGUuIFRo aXMgY2FuIHJlc3VsdCBpbiBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSAKPiA+IGluIGRvX2ds b2NrKCkuIFRoZSBzYW1lIGNhbGxiYWNrIGNhbiBhbHNvIHJhY2Ugd2l0aCBzdXBlcmJsb2NrCj4g PiB0ZWFyZG93biBhbmQgYWNjZXNzIGRhdGEgYWZ0ZXIgdGhlIGZpbGVzeXN0ZW0gaGFzIHN0YXJ0 ZWQgdG8gc2h1dCBkb3duLgo+ID4gCj4gPiBNb3Zpbmcgc3lzZnMgcmVnaXN0cmF0aW9uIGFmdGVy IGluaXRfaW5vZGVzKCkgd291bGQgYXZvaWQgdGhlIGluaXRpYWxpemF0aW9uCj4gPiB3aW5kb3cs IGJ1dCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGUgbG9jayBtYW5hZ2VyIG1heSBuZWVkIHRo ZSBHRlMyCj4gPiBzeXNmcyBmaWxlcyBkdXJpbmcgdGhlIHJlbWFpbmluZyBtb3VudCBzZXF1ZW5j ZS4KPiA+IAo+ID4gU2VyaWFsaXplIGdmczJfcXVvdGFfcmVmcmVzaCgpIHdpdGggdGhlIHN1cGVy YmxvY2sgbGlmZXRpbWUgaW5zdGVhZC4KPiA+IEFjcXVpcmUgc191bW91bnQgZm9yIHJlYWRpbmcg YmVmb3JlIGFjY2Vzc2luZyBxdW90YSBkYXRhLiBNb3VudCBmYWlsdXJlIGFuZAo+ID4gdW5tb3Vu dCBwYXRocyBob2xkIHNfdW1vdW50IGZvciB3cml0aW5nLCBzbyB0aGlzIHByZXZlbnRzIHRoZSBj YWxsYmFjayBmcm9tCj4gPiBydW5uaW5nIHdoaWxlIHRoZSBzdXBlcmJsb2NrIGlzIGJlaW5nIGlu aXRpYWxpemVkIG9yIGRlc3Ryb3llZC4KPiA+IAo+ID4gVXNlIGRvd25fcmVhZF90cnlsb2NrKCkg aW5zdGVhZCBvZiBkb3duX3JlYWQoKSBiZWNhdXNlIHRoZSBtb3VudCBmYWlsdXJlCj4gPiBwYXRo IG1heSBhbHJlYWR5IGhvbGQgc191bW91bnQgZm9yIHdyaXRpbmcgd2hpbGUgcmVtb3ZpbmcgdGhl IHN5c2ZzIGZpbGVzLgo+ID4gUmV0dXJuaW5nIC1FQUdBSU4gYWxsb3dzIHRoZSBzeXNmcyB3cml0 ZSB0byBmYWlsIHdpdGhvdXQgaW50cm9kdWNpbmcgYQo+ID4gZGVhZGxvY2suCj4gPiAKPiA+IEFs c28gdmVyaWZ5IFNCX0FDVElWRSBhZnRlciBhY3F1aXJpbmcgdGhlIHJlYWQgbG9jaywgc2luY2Ug dGhlIHN5c2ZzCj4gPiBhdHRyaWJ1dGVzIGJlY29tZSB2aXNpYmxlIGJlZm9yZSB0aGUgc3VwZXJi bG9jayBpcyBmdWxseSBhY3RpdmUuCj4gPiAKPiA+IFRoZSByZXByb2R1Y2VyIG9mIHRoZSBpc3N1 ZSBpcyBhdHRhY2hlZC4gQWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaCwgCj4gPiB0aGUgcmVwcm9k dWNlciBubyBsb25nZXIgdHJpZ2dlcnMgdGhlIGtlcm5lbCBjcmFzaC4gCj4gPiAKPiA+IFNpZ25l ZC1vZmYtYnk6IEppYWNoZW5nIFh1IDxzdGl0Y2hAemp1LmVkdS5jbj4KPiA+IFRlc3RlZC1ieTog SmlhY2hlbmcgWHUgPHN0aXRjaEB6anUuZWR1LmNuPgo+ID4gLS0tCj4gPiBmcy9nZnMyL3F1b3Rh LmMgfCAxOSArKysrKysrKysrKysrKysrKystCj4gPiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9xdW90 YS5jIGIvZnMvZ2ZzMi9xdW90YS5jCj4gPiBpbmRleCAwMDFjOGIzOWNhNTUuLmQ1MDUzNGVkOTM3 OSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2dmczIvcXVvdGEuYwo+ID4gKysrIGIvZnMvZ2ZzMi9xdW90 YS5jCj4gPiBAQCAtMTM4NCwxOSArMTM4NCwzNiBAQCBpbnQgZ2ZzMl9xdW90YV9zeW5jKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKQo+ID4gCj4gPiBpbnQgZ2ZzMl9xdW90YV9yZWZy ZXNoKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCBzdHJ1Y3Qga3FpZCBxaWQpCj4gPiB7Cj4gPiArICAg ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gc2RwLT5zZF92ZnM7Cj4gPiAgICAgICBzdHJ1Y3Qg Z2ZzMl9xdW90YV9kYXRhICpxZDsKPiA+ICAgICAgIHN0cnVjdCBnZnMyX2hvbGRlciBxX2doOwo+ ID4gICAgICAgaW50IGVycm9yOwo+ID4gCj4gPiArICAgICAvKgo+ID4gKyAgICAgICogVGhlIHN5 c2ZzIGZpbGVzIGFyZSBjcmVhdGVkIGJlZm9yZSBmaWxsX3N1cGVyIGNvbXBsZXRlcy4gQXZvaWQK PiA+ICsgICAgICAqIGJsb2NraW5nIG9uIHNfdW1vdW50IGJlY2F1c2UgdGhlIG1vdW50IGZhaWx1 cmUgcGF0aCByZW1vdmVzIHRoZQo+ID4gKyAgICAgICogc3lzZnMgZmlsZXMgd2hpbGUgaG9sZGlu ZyBpdCBmb3Igd3JpdGluZy4KPiA+ICsgICAgICAqLwo+ID4gKyAgICAgaWYgKCFkb3duX3JlYWRf dHJ5bG9jaygmc2ItPnNfdW1vdW50KSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FQUdBSU47 Cj4gPiArCj4gPiArICAgICBpZiAoIShzYi0+c19mbGFncyAmIFNCX0FDVElWRSkpIHsKPiA+ICsg ICAgICAgICAgICAgZXJyb3IgPSAtRUFHQUlOOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91 bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAgICAgICBlcnJvciA9IHFkX2dldChzZHAsIHFp ZCwgJnFkKTsKPiA+ICAgICAgIGlmIChlcnJvcikKPiA+IC0gICAgICAgICAgICAgcmV0dXJuIGVy cm9yOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4gPiAKPiA+ICAgICAgIGVy cm9yID0gZG9fZ2xvY2socWQsIEZPUkNFLCAmcV9naCk7Cj4gPiAgICAgICBpZiAoIWVycm9yKQo+ ID4gICAgICAgICAgICAgZ2ZzMl9nbG9ja19kcV91bmluaXQoJnFfZ2gpOwo+ID4gCj4gPiAgICAg ICBxZF9wdXQocWQpOwo+ID4gCj4gPiArb3V0X3VubG9jazoKPiA+ICsgICAgIHVwX3JlYWQoJnNi LT5zX3Vtb3VudCk7Cj4gPiAgICAgICByZXR1cm4gZXJyb3I7Cj4gPiB9Cg==