From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-04.nifty.com (conssluserg-04.nifty.com [210.131.2.83]) by sourceware.org (Postfix) with ESMTPS id 3A1953858408 for ; Sun, 12 Sep 2021 11:04:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3A1953858408 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from Express5800-S70 (z221123.dynamic.ppp.asahi-net.or.jp [110.4.221.123]) (authenticated) by conssluserg-04.nifty.com with ESMTP id 18CB4MgF010974 for ; Sun, 12 Sep 2021 20:04:23 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-04.nifty.com 18CB4MgF010974 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1631444663; bh=AtMH3XTIrtxNYvsNNq6YcK3gjMMngGzxLmXr/p7s2KM=; h=Date:From:To:Subject:In-Reply-To:References:From; b=Ds9peuUuFoBGC5nh+wV5hFJSpoDv3Z3q24OZTgtGgH3Xgjkz6nSn4ypbsIayv9XLp O5lNFKNN+578xTq7jlQn0bmDZ6AoXgY6Ffm+Nxqu01l+S3R9hi/Ftc8YJUF5NN25Ib vABPtpGbj7R0ZWjOd2NnVk8WjDMkvW2rQsa/X4unft0LwDPhn3CmrpFZaXZw00ay8F 2h/NSQOhjSfX62NQTgiKuQzOm1mdbMKO33eLn0IuIMLxYx3Fs4GzMgOPz8l22t/ZLG ZHOwMM9Wg7xOiEtOLbCpTIOTrfSc7eB5PpncESWTS+B2LPW93PcgCqHC8shkrO6dAN GjNmHYEfxtBFQ== X-Nifty-SrcIP: [110.4.221.123] Date: Sun, 12 Sep 2021 20:04:23 +0900 From: Takashi Yano To: cygwin-developers@cygwin.com Subject: Re: cygrunsrv + sshd + rsync = 20 times too slow -- throttled? Message-Id: <20210912200423.667e40eb1adc52461bbefa20@nifty.ne.jp> In-Reply-To: <20210912174849.3d38107568065a95aeb19c7c@nifty.ne.jp> References: <41A583E1-C8E7-42AB-9F24-EEC33A41EC60@house.org> <20210826062934.54f2f2216021c095bb7ba13b@nifty.ne.jp> <3b560051-ab27-f392-ca4b-d1fd9b5733b0@cornell.edu> <20210827202440.47706fc2fc07c5e9a1bc0047@nifty.ne.jp> <20210907122631.65452be8d021ec72259431d5@nifty.ne.jp> <20210909124115.555c6be15d675500617d284a@nifty.ne.jp> <20210909170549.506cc3c1f6029d904fece6dd@nifty.ne.jp> <20210909211940.51ef391e27d43f0421962cb8@nifty.ne.jp> <20210909214246.cd1ff1a3062fea27e51ad4ae@nifty.ne.jp> <33386baf-3b2d-d57f-2ad3-1bd328ed7935@cornell.edu> <20210911075734.aaf37697ba7db2ad14d911a3@nifty.ne.jp> <20210911113517.f74fc3ac1971bbf04c7a9bd1@nifty.ne.jp> <695ce1f4-4f7d-f3f3-6dd3-087467d67b28@cornell.edu> <20210912174849.3d38107568065a95aeb19c7c@nifty.ne.jp> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Sun__12_Sep_2021_20_04_23_+0900_G7mVMgeHKOenQe/W" X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin-developers@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component developers mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Sep 2021 11:04:56 -0000 This is a multi-part message in MIME format. --Multipart=_Sun__12_Sep_2021_20_04_23_+0900_G7mVMgeHKOenQe/W Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sun, 12 Sep 2021 17:48:49 +0900 Takashi Yano wrote: > On Sat, 11 Sep 2021 09:12:02 -0400 > Ken Brown wrote: > > On 9/10/2021 10:35 PM, Takashi Yano wrote: > > > On Fri, 10 Sep 2021 22:17:21 -0400 > > > Ken Brown wrote: > > >> On 9/10/2021 6:57 PM, Takashi Yano wrote: > > >>> On Fri, 10 Sep 2021 11:17:58 -0400 > > >>> Ken Brown wrote: > > >>>> I've rerun your test with the latest version, and the test results are similar. > > >>>> I've also run a suite of fifo tests that I've accumulated, and they all pass > > >>>> also, so I pushed your patch. > > >>>> > > >>>> I think we're in pretty good shape now. The only detail remaining, AFAIK, is > > >>>> how to best avoid a deadlock if the pipe has been created by a non-Cygwin > > >>>> process. I've proposed a timeout, but maybe there's a better idea. > > >>> > > >>> I am not pretty sure what is the problem, but is not the following > > >>> patch enough? > > >>> > > >>> diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h > > >>> index d309be2f7..13fba9a14 100644 > > >>> --- a/winsup/cygwin/fhandler.h > > >>> +++ b/winsup/cygwin/fhandler.h > > >>> @@ -1205,6 +1205,7 @@ public: > > >>> select_record *select_except (select_stuff *); > > >>> char *get_proc_fd_name (char *buf); > > >>> int open (int flags, mode_t mode = 0); > > >>> + void open_setup (int flags); > > >>> void fixup_after_fork (HANDLE); > > >>> int dup (fhandler_base *child, int); > > >>> int close (); > > >>> diff --git a/winsup/cygwin/fhandler_pipe.cc b/winsup/cygwin/fhandler_pipe.cc > > >>> index 6994a5dce..d84e6ad84 100644 > > >>> --- a/winsup/cygwin/fhandler_pipe.cc > > >>> +++ b/winsup/cygwin/fhandler_pipe.cc > > >>> @@ -191,6 +191,17 @@ out: > > >>> return 0; > > >>> } > > >>> > > >>> +void > > >>> +fhandler_pipe::open_setup (int flags) > > >>> +{ > > >>> + fhandler_base::open_setup (flags); > > >>> + if (get_dev () == FH_PIPER && !read_mtx) > > >>> + { > > >>> + SECURITY_ATTRIBUTES *sa = sec_none_cloexec (flags); > > >>> + read_mtx = CreateMutexW (sa, FALSE, NULL); > > >>> + } > > >>> +} > > >>> + > > >>> off_t > > >>> fhandler_pipe::lseek (off_t offset, int whence) > > >>> { > > >>> > > >>> > > >>> AFAIK, another problem remaining is: > > >>> > > >>> On Mon, 6 Sep 2021 14:49:55 +0200 > > >>> Corinna Vinschen wrote: > > >>>> - What about calling select for writing on pipes read by non-Cygwin > > >>>> processes? In that case, we still can't rely on WriteQuotaAvailable, > > >>>> just as before. > > >> > > >> This is the problem I was talking about. In this case the non-Cygwin process > > >> might have a large pending read, so that the Cygwin process calling select on > > >> the write side will see WriteQuotaAvailable == 0. This could lead to a deadlock > > >> with the Cygwin process waiting for write ready while the non-Cygwin process is > > >> blocked trying to read. > > > > > > Then, the above patch is for another issue. > > > The problem happes when: > > > 1) Start command prompt. > > > 2) Run 'echo AAAAAAAAAAAA | \cygwin64\bin\cat > > > This causes hang up in cat. In this case, pipe is created by cmd.exe. > > > Therefore, read_mtx is not created. > > > > Confirmed, and your patch fixes it. Maybe you should check for error in the > > call to CreateMutexW and print a debug message in that case. > > > > >> My suggestion is that we impose a timeout in this situation, after which select > > >> reports write ready. > > > > > > Keeping read handle in write pipe (Corinna's query_hdl) causes problem > > > that write side cannot detect close on read side. > > > Is it possible to open read handle temporally when pipe_data_available() > > > is called? > > > > That would be nice, but I have no idea how you could do that. > > Hmm. Then, what about PoC code attached? This returns to Corinna's > query_hdl, and counts read/write handles to detect closing reader side. > > If the number of read handles is equal to number of write handles, > only the pairs of write handle and query_hdl are alive. So, read pipe > supposed to be closed. > > This patch depends another patch I posted a few hours ago. Revised a bit. -- Takashi Yano --Multipart=_Sun__12_Sep_2021_20_04_23_+0900_G7mVMgeHKOenQe/W Content-Type: application/octet-stream; name="0001-Cygwin-pipe-Return-to-query_hdl-strategy-with-counti.patch" Content-Disposition: attachment; filename="0001-Cygwin-pipe-Return-to-query_hdl-strategy-with-counti.patch" Content-Transfer-Encoding: base64 RnJvbSBmYzYxMWJlNDExZTFkMzgwZjEyNThiYjBiMjI1ZDk5NzU3YjRlZjU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogU3VuLCAxMiBTZXAgMjAyMSAxOTo1OTo1MyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd IEN5Z3dpbjogcGlwZTogUmV0dXJuIHRvIHF1ZXJ5X2hkbCBzdHJhdGVneSB3aXRoIGNvdW50aW5n IHIvdwogaGFuZGxlcy4KCi0tLQogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5oICAgICAgIHwgIDUg KysKIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcGlwZS5jYyB8IDk4ICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIHdpbnN1cC9jeWd3aW4vc2VsZWN0LmNjICAgICAgICB8IDUwICsr KysrKysrKysrKysrLS0tCiB3aW5zdXAvY3lnd2luL3NwYXduLmNjICAgICAgICAgfCAgMiArCiA0 IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmggYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVy LmgKaW5kZXggMTNmYmE5YTE0Li5mMDlhZjJjMzcgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4v ZmhhbmRsZXIuaAorKysgYi93aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmgKQEAgLTExNzYsMTAgKzEx NzYsMTUgQEAgY2xhc3MgZmhhbmRsZXJfcGlwZV9maWZvOiBwdWJsaWMgZmhhbmRsZXJfYmFzZQog ewogIHByb3RlY3RlZDoKICAgc2l6ZV90IHBpcGVfYnVmX3NpemU7CisgIEhBTkRMRSBxdWVyeV9o ZGw7CiAKICBwdWJsaWM6CiAgIGZoYW5kbGVyX3BpcGVfZmlmbyAoKTsKIAorICBIQU5ETEUgZ2V0 X3F1ZXJ5X2hhbmRsZSAoKSBjb25zdCB7IHJldHVybiBxdWVyeV9oZGw7IH0KKyAgdm9pZCBjbG9z ZV9xdWVyeV9oYW5kbGUgKCkgeyBDbG9zZUhhbmRsZSAocXVlcnlfaGRsKTsgcXVlcnlfaGRsID0g TlVMTDsgfQorICBib29sIHJlYWRlcl9jbG9zZWQgKCk7CisKICAgc3NpemVfdCBfX3JlZzMgcmF3 X3dyaXRlIChjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogCiB9OwpkaWZmIC0tZ2l0IGEv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNjIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9w aXBlLmNjCmluZGV4IDliNDI1NWNmZC4uYjA1MWY1YzAzIDEwMDY0NAotLS0gYS93aW5zdXAvY3ln d2luL2ZoYW5kbGVyX3BpcGUuY2MKKysrIGIvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9waXBlLmNj CkBAIC01Niw2ICs1Niw4IEBAIGZoYW5kbGVyX3BpcGU6OnNldF9waXBlX25vbl9ibG9ja2luZyAo Ym9vbCBub25ibG9ja2luZykKICAgZnBpLlJlYWRNb2RlID0gRklMRV9QSVBFX0JZVEVfU1RSRUFN X01PREU7CiAgIGZwaS5Db21wbGV0aW9uTW9kZSA9IG5vbmJsb2NraW5nID8gRklMRV9QSVBFX0NP TVBMRVRFX09QRVJBVElPTgogICAgIDogRklMRV9QSVBFX1FVRVVFX09QRVJBVElPTjsKKyAgaWYg KHF1ZXJ5X2hkbCkKKyAgICBmcGkuQ29tcGxldGlvbk1vZGUgPSBGSUxFX1BJUEVfQ09NUExFVEVf T1BFUkFUSU9OOwogICBzdGF0dXMgPSBOdFNldEluZm9ybWF0aW9uRmlsZSAoZ2V0X2hhbmRsZSAo KSwgJmlvLCAmZnBpLCBzaXplb2YgZnBpLAogCQkJCSBGaWxlUGlwZUluZm9ybWF0aW9uKTsKICAg aWYgKCFOVF9TVUNDRVNTIChzdGF0dXMpKQpAQCAtMjAyLDYgKzIwNCw4IEBAIGZoYW5kbGVyX3Bp cGU6Om9wZW5fc2V0dXAgKGludCBmbGFncykKICAgICAgIGlmICghcmVhZF9tdHgpCiAJZGVidWdf cHJpbnRmICgiQ3JlYXRlTXV0ZXggZmFpbGVkOiAlRSIpOwogICAgIH0KKyAgaWYgKGdldF9kZXYg KCkgPT0gRkhfUElQRVcgJiYgIXF1ZXJ5X2hkbCkKKyAgICBzZXRfcGlwZV9ub25fYmxvY2tpbmcg KGlzX25vbmJsb2NraW5nICgpKTsKIH0KIAogb2ZmX3QKQEAgLTI2OCwzOSArMjcyLDIyIEBAIGZo YW5kbGVyX3BpcGU6OnJhd19yZWFkICh2b2lkICpwdHIsIHNpemVfdCYgbGVuKQogICB3aGlsZSAo bmJ5dGVzIDwgbGVuKQogICAgIHsKICAgICAgIFVMT05HX1BUUiBuYnl0ZXNfbm93ID0gMDsKLSAg ICAgIHNpemVfdCBsZWZ0ID0gbGVuIC0gbmJ5dGVzOwotICAgICAgVUxPTkcgbGVuMSA9IChVTE9O RykgbGVmdDsKKyAgICAgIFVMT05HIGxlbjEgPSAoVUxPTkcpIChsZW4gLSBuYnl0ZXMpOwogICAg ICAgd2FpdHJldCA9IFdBSVRfT0JKRUNUXzA7CiAKICAgICAgIGlmIChldnQpCiAJUmVzZXRFdmVu dCAoZXZ0KTsKLSAgICAgIGlmICghaXNfbm9uYmxvY2tpbmcgKCkpCisgICAgICBGSUxFX1BJUEVf TE9DQUxfSU5GT1JNQVRJT04gZnBsaTsKKyAgICAgIHN0YXR1cyA9IE50UXVlcnlJbmZvcm1hdGlv bkZpbGUgKGdldF9oYW5kbGUgKCksICZpbywKKwkJCQkgICAgICAgJmZwbGksIHNpemVvZiAoZnBs aSksCisJCQkJICAgICAgIEZpbGVQaXBlTG9jYWxJbmZvcm1hdGlvbik7CisgICAgICBpZiAoTlRf U1VDQ0VTUyAoc3RhdHVzKSkKIAl7Ci0JICBGSUxFX1BJUEVfTE9DQUxfSU5GT1JNQVRJT04gZnBs aTsKLQotCSAgLyogSWYgdGhlIHBpcGUgaXMgZW1wdHksIGRvbid0IHJlcXVlc3QgbW9yZSBieXRl cyB0aGFuIHBpcGUKLQkgICAgIGJ1ZmZlciBzaXplIC0gMS4gUGVuZGluZyByZWFkIGxvd2VycyBX cml0ZVF1b3RhQXZhaWxhYmxlIG9uCi0JICAgICB0aGUgd3JpdGUgc2lkZSBhbmQgdGh1cyBhZmZl Y3RzIHNlbGVjdCdzIGFiaWxpdHkgdG8gcmV0dXJuCi0JICAgICBtb3JlIG9yIGxlc3MgcmVsaWFi bGUgaW5mbyB3aGV0aGVyIGEgd3JpdGUgc3VjY2VlZHMgb3Igbm90LiAqLwotCSAgVUxPTkcgY2h1 bmsgPSBwaXBlX2J1Zl9zaXplIC0gMTsKLQkgIHN0YXR1cyA9IE50UXVlcnlJbmZvcm1hdGlvbkZp bGUgKGdldF9oYW5kbGUgKCksICZpbywKLQkJCQkJICAgJmZwbGksIHNpemVvZiAoZnBsaSksCi0J CQkJCSAgIEZpbGVQaXBlTG9jYWxJbmZvcm1hdGlvbik7Ci0JICBpZiAoTlRfU1VDQ0VTUyAoc3Rh dHVzKSkKLQkgICAgewotCSAgICAgIGlmIChmcGxpLlJlYWREYXRhQXZhaWxhYmxlID4gMCkKLQkJ Y2h1bmsgPSBsZWZ0OwotCSAgICAgIGVsc2UgaWYgKG5ieXRlcyAhPSAwKQotCQlicmVhazsKLQkg ICAgICBlbHNlCi0JCWNodW5rID0gZnBsaS5JbmJvdW5kUXVvdGEgLSAxOwotCSAgICB9Ci0JICBl bHNlIGlmIChuYnl0ZXMgIT0gMCkKLQkgICAgYnJlYWs7Ci0KLQkgIGlmIChsZW4xID4gY2h1bmsp Ci0JICAgIGxlbjEgPSBjaHVuazsKKwlpZiAoZnBsaS5SZWFkRGF0YUF2YWlsYWJsZSA9PSAwICYm IG5ieXRlcyAhPSAwKQorCSAgYnJlYWs7CiAJfQorICAgICAgZWxzZSBpZiAobmJ5dGVzICE9IDAp CisJYnJlYWs7CiAgICAgICBzdGF0dXMgPSBOdFJlYWRGaWxlIChnZXRfaGFuZGxlICgpLCBldnQs IE5VTEwsIE5VTEwsICZpbywgcHRyLAogCQkJICAgbGVuMSwgTlVMTCwgTlVMTCk7CiAgICAgICBp ZiAoZXZ0ICYmIHN0YXR1cyA9PSBTVEFUVVNfUEVORElORykKQEAgLTM4NSw2ICszNzIsMTYgQEAg ZmhhbmRsZXJfcGlwZTo6cmF3X3JlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiAgIGxlbiA9 IG5ieXRlczsKIH0KIAorYm9vbAorZmhhbmRsZXJfcGlwZV9maWZvOjpyZWFkZXJfY2xvc2VkICgp Cit7CisgIGlmICghcXVlcnlfaGRsKQorICAgIHJldHVybiBmYWxzZTsKKyAgaW50IG5fcmVhZGVy ID0gZ2V0X29ial9oYW5kbGVfY291bnQgKHF1ZXJ5X2hkbCk7CisgIGludCBuX3dyaXRlciA9IGdl dF9vYmpfaGFuZGxlX2NvdW50IChnZXRfaGFuZGxlICgpKTsKKyAgcmV0dXJuIG5fcmVhZGVyID09 IG5fd3JpdGVyOworfQorCiBzc2l6ZV90IF9fcmVnMwogZmhhbmRsZXJfcGlwZV9maWZvOjpyYXdf d3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsKQEAgLTQ5Myw3ICs0OTAsMjAg QEAgZmhhbmRsZXJfcGlwZV9maWZvOjpyYXdfd3JpdGUgKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90 IGxlbikKIAkJCSAgICAgIGdldF9vYmpfaGFuZGxlX2NvdW50IChzZWxlY3Rfc2VtKSwgTlVMTCk7 CiAJICAvKiAwIGJ5dGVzIHJldHVybmVkPyAgRUFHQUlOLiAgU2VlIGFib3ZlLiAqLwogCSAgaWYg KE5UX1NVQ0NFU1MgKHN0YXR1cykgJiYgbmJ5dGVzID09IDApCi0JICAgIHNldF9lcnJubyAoRUFH QUlOKTsKKwkgICAgeworCSAgICAgIGlmIChyZWFkZXJfY2xvc2VkICgpKQorCQl7CisJCSAgc2V0 X2Vycm5vIChFUElQRSk7CisJCSAgcmFpc2UgKFNJR1BJUEUpOworCQl9CisJICAgICAgZWxzZSBp ZiAoaXNfbm9uYmxvY2tpbmcgKCkpCisJCXNldF9lcnJubyAoRUFHQUlOKTsKKwkgICAgICBlbHNl CisJCXsKKwkJICBjeWd3YWl0IChzZWxlY3Rfc2VtLCAxMCk7CisJCSAgY29udGludWU7CisJCX0K KwkgICAgfQogCX0KICAgICAgIGVsc2UgaWYgKFNUQVRVU19QSVBFX0lTX0NMT1NFRCAoc3RhdHVz KSkKIAl7CkBAIC01MjIsNiArNTMyLDEwIEBAIGZoYW5kbGVyX3BpcGU6OmZpeHVwX2FmdGVyX2Zv cmsgKEhBTkRMRSBwYXJlbnQpCiAgICAgZm9ya19maXh1cCAocGFyZW50LCByZWFkX210eCwgInJl YWRfbXR4Iik7CiAgIGlmIChzZWxlY3Rfc2VtKQogICAgIGZvcmtfZml4dXAgKHBhcmVudCwgc2Vs ZWN0X3NlbSwgInNlbGVjdF9zZW0iKTsKKyAgLyogRG8gbm90IGR1cGxpY2F0ZSBxdWVyeV9oZGwg aWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBpbmhlcml0ZWQuICovCisgIGlmIChxdWVyeV9oZGwgJiYg IWdldF9vYmpfaGFuZGxlX2NvdW50IChxdWVyeV9oZGwpKQorICAgIGZvcmtfZml4dXAgKHBhcmVu dCwgcXVlcnlfaGRsLCAicXVlcnlfaGRsIik7CisKICAgZmhhbmRsZXJfYmFzZTo6Zml4dXBfYWZ0 ZXJfZm9yayAocGFyZW50KTsKIH0KIApAQCAtNTUyLDYgKzU2NiwxNSBAQCBmaGFuZGxlcl9waXBl OjpkdXAgKGZoYW5kbGVyX2Jhc2UgKmNoaWxkLCBpbnQgZmxhZ3MpCiAgICAgICBmdHAtPmNsb3Nl ICgpOwogICAgICAgcmVzID0gLTE7CiAgICAgfQorICBlbHNlIGlmIChxdWVyeV9oZGwgJiYKKwkg ICAhRHVwbGljYXRlSGFuZGxlIChHZXRDdXJyZW50UHJvY2VzcyAoKSwgcXVlcnlfaGRsLAorCQkJ ICAgIEdldEN1cnJlbnRQcm9jZXNzICgpLCAmZnRwLT5xdWVyeV9oZGwsCisJCQkgICAgMCwgIShm bGFncyAmIE9fQ0xPRVhFQyksIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpCisgICAgeworICAgICAg X19zZXRlcnJubyAoKTsKKyAgICAgIGZ0cC0+Y2xvc2UgKCk7CisgICAgICByZXMgPSAtMTsKKyAg ICB9CiAKICAgZGVidWdfcHJpbnRmICgicmVzICVkIiwgcmVzKTsKICAgcmV0dXJuIHJlczsKQEAg LTU2Nyw2ICs1OTAsOCBAQCBmaGFuZGxlcl9waXBlOjpjbG9zZSAoKQogICAgICAgUmVsZWFzZVNl bWFwaG9yZSAoc2VsZWN0X3NlbSwgZ2V0X29ial9oYW5kbGVfY291bnQgKHNlbGVjdF9zZW0pLCBO VUxMKTsKICAgICAgIENsb3NlSGFuZGxlIChzZWxlY3Rfc2VtKTsKICAgICB9CisgIGlmIChxdWVy eV9oZGwpCisgICAgQ2xvc2VIYW5kbGUgKHF1ZXJ5X2hkbCk7CiAgIHJldHVybiBmaGFuZGxlcl9i YXNlOjpjbG9zZSAoKTsKIH0KIApAQCAtNzkxLDYgKzgxNiwyMyBAQCBmaGFuZGxlcl9waXBlOjpj cmVhdGUgKGZoYW5kbGVyX3BpcGUgKmZoc1syXSwgdW5zaWduZWQgcHNpemUsIGludCBtb2RlKQog CUR1cGxpY2F0ZUhhbmRsZSAoR2V0Q3VycmVudFByb2Nlc3MgKCksIGZoc1swXS0+c2VsZWN0X3Nl bSwKIAkJCSBHZXRDdXJyZW50UHJvY2VzcyAoKSwgJmZoc1sxXS0+c2VsZWN0X3NlbSwKIAkJCSAw LCAxLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOworICAgICAgaWYgKCFEdXBsaWNhdGVIYW5kbGUg KEdldEN1cnJlbnRQcm9jZXNzICgpLCByLAorCQkJICAgIEdldEN1cnJlbnRQcm9jZXNzICgpLCAm ZmhzWzFdLT5xdWVyeV9oZGwsCisJCQkgICAgR0VORVJJQ19SRUFELCAhKG1vZGUgJiBPX0NMT0VY RUMpLCAwKSkKKwl7CisJICBDbG9zZUhhbmRsZSAoZmhzWzBdLT5zZWxlY3Rfc2VtKTsKKwkgIGRl bGV0ZSBmaHNbMF07CisJICBDbG9zZUhhbmRsZSAocik7CisJICBDbG9zZUhhbmRsZSAoZmhzWzFd LT5zZWxlY3Rfc2VtKTsKKwkgIGRlbGV0ZSBmaHNbMV07CisJICBDbG9zZUhhbmRsZSAodyk7CisJ fQorICAgICAgZWxzZQorCXsKKwkgIC8qIENhbGwgc2V0X3BpcGVfbm9uX2Jsb2NraW5nKCkgYWdh aW4gYWZ0ZXIgY3JlYXRpbmcgcXVlcnlfaGRsLiAqLworCSAgZmhzWzFdLT5zZXRfcGlwZV9ub25f YmxvY2tpbmcgKGZoc1sxXS0+aXNfbm9uYmxvY2tpbmcgKCkpOworCSAgcmVzID0gMDsKKwl9CiAg ICAgfQogCiAgIGRlYnVnX3ByaW50ZiAoIiVSID0gcGlwZShbJXAsICVwXSwgJWQsICV5KSIsIHJl cywgZmhzWzBdLCBmaHNbMV0sIHBzaXplLCBtb2RlKTsKZGlmZiAtLWdpdCBhL3dpbnN1cC9jeWd3 aW4vc2VsZWN0LmNjIGIvd2luc3VwL2N5Z3dpbi9zZWxlY3QuY2MKaW5kZXggNWU1ODM0MzRjLi5j NTY5YTA1OWMgMTAwNjQ0Ci0tLSBhL3dpbnN1cC9jeWd3aW4vc2VsZWN0LmNjCisrKyBiL3dpbnN1 cC9jeWd3aW4vc2VsZWN0LmNjCkBAIC02MDgsMTIgKzYwOCw0MyBAQCBwaXBlX2RhdGFfYXZhaWxh YmxlIChpbnQgZmQsIGZoYW5kbGVyX2Jhc2UgKmZoLCBIQU5ETEUgaCwgYm9vbCB3cml0aW5nKQog ICAgIH0KICAgaWYgKHdyaXRpbmcpCiAgICAgewotICAgICAgLyogV3JpdGVRdW90YUF2YWlsYWJs ZSBpcyBkZWNyZW1lbnRlZCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZAotCSBieSBh IGJsb2NraW5nIHJlYWRlciBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcGlwZS4gIEN5Z3dpbiBy ZWFkZXJzCi0JIGFyZSBzZXJpYWxpemVkIGFuZCBuZXZlciByZXF1ZXN0IGEgbnVtYmVyIG9mIGJ5 dGVzIGVxdWl2YWxlbnQgdG8gdGhlCi0JIGZ1bGwgYnVmZmVyIHNpemUuICBTbyBXcml0ZVF1b3Rh QXZhaWxhYmxlIGlzIDAgb25seSBpZiBlaXRoZXIgdGhlCi0JIHJlYWQgYnVmZmVyIG9uIHRoZSBv dGhlciBzaWRlIGlzIHJlYWxseSBmdWxsLCBvciBpZiB3ZSBoYXZlIG5vbi1DeWd3aW4KLQkgcmVh ZGVycy4gKi8KKyAgICAgIC8qIElmIHRoZXJlIGlzIGFueXRoaW5nIGF2YWlsYWJsZSBpbiB0aGUg cGlwZSBidWZmZXIgdGhlbiBzaWduYWwKKyAgICAgICAgdGhhdC4gIFRoaXMgbWVhbnMgdGhhdCBh IHBpcGUgY291bGQgc3RpbGwgYmxvY2sgc2luY2UgeW91IGNvdWxkCisgICAgICAgIGJlIHRyeWlu ZyB0byB3cml0ZSBtb3JlIHRvIHRoZSBwaXBlIHRoYW4gaXMgYXZhaWxhYmxlIGluIHRoZQorICAg ICAgICBidWZmZXIgYnV0IHRoYXQgaXMgdGhlIGhhemFyZCBvZiBzZWxlY3QoKS4KKworICAgICAg ICBOb3RlIHRoYXQgV3JpdGVRdW90YUF2YWlsYWJsZSBpcyB1bnJlbGlhYmxlLgorCisgICAgICAg IFVzdWFsbHkgV3JpdGVRdW90YUF2YWlsYWJsZSBvbiB0aGUgd3JpdGUgc2lkZSByZWZsZWN0cyB0 aGUgc3BhY2UKKyAgICAgICAgYXZhaWxhYmxlIGluIHRoZSBpbmJvdW5kIGJ1ZmZlciBvbiB0aGUg cmVhZCBzaWRlLiAgSG93ZXZlciwgaWYgYQorICAgICAgICBwaXBlIHJlYWQgaXMgY3VycmVudGx5 IHBlbmRpbmcsIFdyaXRlUXVvdGFBdmFpbGFibGUgb24gdGhlIHdyaXRlIHNpZGUKKyAgICAgICAg aXMgZGVjcmVtZW50ZWQgYnkgdGhlIG51bWJlciBvZiBieXRlcyB0aGUgcmVhZCBzaWRlIGlzIHJl cXVlc3RpbmcuCisgICAgICAgIFNvIGl0J3MgcG9zc2libGUgKGV2ZW4gbGlrZWx5KSB0aGF0IFdy aXRlUXVvdGFBdmFpbGFibGUgaXMgMCwgZXZlbgorICAgICAgICBpZiB0aGUgaW5ib3VuZCBidWZm ZXIgb24gdGhlIHJlYWQgc2lkZSBpcyBub3QgZnVsbC4gIFRoaXMgY2FuIGxlYWQgdG8KKyAgICAg ICAgYSBkZWFkbG9jayBzaXR1YXRpb246IFRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgZGF0YSwg YnV0IHNlbGVjdAorICAgICAgICBvbiB0aGUgd3JpdGVyIHNpZGUgYXNzdW1lcyB0aGF0IG5vIHNw YWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVhZAorICAgICAgICBzaWRlIGluYm91bmQgYnVmZmVy LgorCisgICAgICAgIENvbnNlcXVlbnRpYWxseSwgdGhlIG9ubHkgcmVsaWFibGUgaW5mb3JtYXRp b24gaXMgYXZhaWxhYmxlIG9uIHRoZQorICAgICAgICByZWFkIHNpZGUsIHNvIGZldGNoIGluZm8g ZnJvbSB0aGUgcmVhZCBzaWRlIHZpYSB0aGUgcGlwZS1zcGVjaWZpYworICAgICAgICBxdWVyeSBo YW5kbGUuICBVc2UgZnBsaS5Xcml0ZVF1b3RhQXZhaWxhYmxlIGFzIHN0b3JhZ2UgZm9yIHRoZSBh Y3R1YWwKKyAgICAgICAgaW50ZXJlc3RpbmcgdmFsdWUsIHdoaWNoIGlzIHRoZSBPdXRib3VuZFF1 b3RlIG9uIHRoZSB3cml0ZSBzaWRlLAorICAgICAgICBkZWNyZW1lbnRlZCBieSB0aGUgbnVtYmVy IG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhhdCBidWZmZXIuICovCisgICAgICAvKiBOb3RlOiBEbyBu b3QgdXNlIE50UXVlcnlJbmZvcm1hdGlvbkZpbGUoKSBmb3IgcXVlcnlfaGRsIGJlY2F1c2UKKwkg TnRRdWVyeUluZm9ybWF0aW9uRmlsZSgpIHNlZW1zIHRvIGludGVyZmVyZSB3aXRoIHJlYWRpbmcg cGlwZXMKKwkgaW4gbm9uLWN5Z3dpbiBhcHBzLiBJbnN0ZWFkLCB1c2UgUGVla05hbWVkUGlwZSgp IGhlcmUuICovCisgICAgICBpZiAoZmgtPmdldF9kZXZpY2UgKCkgPT0gRkhfUElQRVcpCisJewor CSAgSEFORExFIHF1ZXJ5X2hkbCA9ICgoZmhhbmRsZXJfcGlwZSAqKSBmaCktPmdldF9xdWVyeV9o YW5kbGUgKCk7CisJICBpZiAocXVlcnlfaGRsKQorCSAgICB7CisJICAgICAgRFdPUkQgbmJ5dGVz X2luX3BpcGU7CisJICAgICAgUGVla05hbWVkUGlwZSAocXVlcnlfaGRsLCBOVUxMLCAwLCBOVUxM LCAmbmJ5dGVzX2luX3BpcGUsIE5VTEwpOworCSAgICAgIGZwbGkuV3JpdGVRdW90YUF2YWlsYWJs ZSA9IGZwbGkuT3V0Ym91bmRRdW90YSAtIG5ieXRlc19pbl9waXBlOworCSAgICB9CisJICBlbHNl CisJICAgIHJldHVybiAxOworCX0KICAgICAgIGlmIChmcGxpLldyaXRlUXVvdGFBdmFpbGFibGUg PiAwKQogCXsKIAkgIHBhcmFub2lkX3ByaW50ZiAoImZkICVkLCAlcywgd3JpdGU6IHNpemUgJXUs IGF2YWlsICV1IiwgZmQsCkBAIC03MTIsNiArNzQzLDEzIEBAIG91dDoKICAgaCA9IGZoLT5nZXRf b3V0cHV0X2hhbmRsZSAoKTsKICAgaWYgKHMtPndyaXRlX3NlbGVjdGVkICYmIGRldiAhPSBGSF9Q SVBFUikKICAgICB7CisgICAgICBpZiAoZGV2ID09IEZIX1BJUEVXICYmICgoZmhhbmRsZXJfcGlw ZSAqKSBmaCktPnJlYWRlcl9jbG9zZWQgKCkpCisJeworCSAgZ290b25lICs9IHMtPndyaXRlX3Jl YWR5ID0gdHJ1ZTsKKwkgIGlmIChzLT5leGNlcHRfc2VsZWN0ZWQpCisJICAgIGdvdG9uZSArPSBz LT5leGNlcHRfcmVhZHkgPSB0cnVlOworCSAgcmV0dXJuIGdvdG9uZTsKKwl9CiAgICAgICBnb3Rv bmUgKz0gcy0+d3JpdGVfcmVhZHkgPSAgcGlwZV9kYXRhX2F2YWlsYWJsZSAocy0+ZmQsIGZoLCBo LCB0cnVlKTsKICAgICAgIHNlbGVjdF9wcmludGYgKCJ3cml0ZTogJXMsIGdvdG9uZSAlZCIsIGZo LT5nZXRfbmFtZSAoKSwgZ290b25lKTsKICAgICB9CmRpZmYgLS1naXQgYS93aW5zdXAvY3lnd2lu L3NwYXduLmNjIGIvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYwppbmRleCAwYmRlMGIwNGQuLmU5MDJi NTA4MCAxMDA2NDQKLS0tIGEvd2luc3VwL2N5Z3dpbi9zcGF3bi5jYworKysgYi93aW5zdXAvY3ln d2luL3NwYXduLmNjCkBAIC02NTcsNiArNjU3LDggQEAgY2hpbGRfaW5mb19zcGF3bjo6d29ya2Vy IChjb25zdCBjaGFyICpwcm9nX2FyZywgY29uc3QgY2hhciAqY29uc3QgKmFyZ3YsCiAJCXB0eXMt PmNyZWF0ZV9pbnZpc2libGVfY29uc29sZSAoKTsKIAkJcHR5cy0+c2V0dXBfbG9jYWxlICgpOwog CSAgICAgIH0KKwkgICAgZWxzZSBpZiAoY2ZkLT5nZXRfZGV2ICgpID09IEZIX1BJUEVXKQorCSAg ICAgICgoZmhhbmRsZXJfcGlwZSAqKShmaGFuZGxlcl9iYXNlICopIGNmZCktPmNsb3NlX3F1ZXJ5 X2hhbmRsZSAoKTsKIAl9CiAKICAgICAgIGJvb2wgZW5hYmxlX3Bjb24gPSBmYWxzZTsKLS0gCjIu MzMuMAoK --Multipart=_Sun__12_Sep_2021_20_04_23_+0900_G7mVMgeHKOenQe/W--