Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vSH6b-00ANko-24 for pgsql-hackers@arkaria.postgresql.org; Sun, 07 Dec 2025 15:55:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSH6a-00DZqM-0j for pgsql-hackers@arkaria.postgresql.org; Sun, 07 Dec 2025 15:55:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vSH6Z-00DZqE-2l for pgsql-hackers@lists.postgresql.org; Sun, 07 Dec 2025 15:55:24 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vSH6X-003hNS-2D for pgsql-hackers@postgresql.org; Sun, 07 Dec 2025 15:55:23 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-b76b5afdf04so553307866b.1 for ; Sun, 07 Dec 2025 07:55:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1765122920; x=1765727720; darn=postgresql.org; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=FFr+6IXuQFEtuwttOtRrXI6fomMI91ARNcdgd2T0fSM=; b=MZaiimIQCx2VD0Ob2F/NEnD9Nd0iwhkWE6e+n8vcUE/bCLOfRlwmflcv6trJgXUH8H Sqe8CPvSyTCvehAdm2nfpDl91gFndtzwre5YY5VhP154FYoRdDnWaVlsv6hWDCvTBh4n 4LpIeXEU/LkICIvrhkhTi9gYDEyJRtx8LdclwWHmNA4GqtaSwx66sOY2x7OtkwKbXImT uz8He8OLdyMBlQkDEt0dVbu/IflUIO/LPtQE+D6A5fIzBlDhXAuqmph2uXYJAW4AMHya DXLmpDRY15wPwnwvq61koZ5wxrYFvmuBqyXDgWQgsXHeJAr3o9sRp61bK7Q7t3skR3Tb 3D+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765122920; x=1765727720; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FFr+6IXuQFEtuwttOtRrXI6fomMI91ARNcdgd2T0fSM=; b=JzqF7jD5nqGjAisp10ioqDeopwZG/C9CwvF4ww5nAI/l0NXgGpfdpKDEVDtASO1TbU 8LYsRhN+0Tev2zXl02hZxavmEJVuBF53A/e4eWF8SP/rAT1mevDQx/J1KOFGctD5ub3Y 49nj60vfljDfDaM4G0YeEYQBlqQW7alFH2BbQYX/gCbEXdX7ZL6ry+7/tOMzuddIUi8m rM+2nF95ljxj9wIGJbEc3f511KJFXRgPB7pp2qruuBHmj+H/fGPYpeCcfaMc2SPKeHXE xUpfhZjGR1k/bZw55+MpKxH92EbfaiwQSvoxntLEKY1kFn5ns3JyoumqdcbcdXivsijk 15Jg== X-Gm-Message-State: AOJu0Yw5OGYLtGXy3jByfgMZ1rFp28N8QhD39Y0YG0zQpx3ZeTHtljCd tVIUaSqqLv0/hFDw5/MTR+O147GLv0yk4oUy7EEyTJ4tYMFP0+FSpzaV0nSkxd1y+kk= X-Gm-Gg: ASbGncu8SLelVsNVbNyHpEK9c9B84yhoG4GkrOxk1thdKDMTO8ZRl0BaGagDIRxCl/l 31IQVKmlI+2QKanenX3zE+BnJAakWVsa4L2s0PMJBlS4dnoHP2UTWEL7jU+bHF6UmhQ9uEhBgin b/ByhNoLfOBNdvQ4YSYTefRPPSx7b5GnayV7kRspCQ2Cd9c4Brma9e9EnIhfc0Ut/+6HzfT/rFx ji6iLhHoX/69k41uy4c1rY1to+aUIbEq99flljWAHf5PkHV7lD3lPAVDxJziuLVplgg0y3HbF22 AMG5FyjRRjd1b2F8ADzRHawfic815SZiCT96Y539ousEipKYUHqJuVNzYCdjvYiWKXLrRMl4fbq JO77padV4nXBThmGMs6a3UtIezgWws0bIAwpF+UMdmBF8ajAcKQZri3gBBt888LxKugeHwxbN0Q kj49J4R73RxFpqsvKEoSMdWuLfp3rKtV5ZQTU= X-Google-Smtp-Source: AGHT+IEtaV2//5LWBWSPuQVC32YIPdaS25e/rtOI4zhjnI0497eN/vy5DcIxnmyJIORlecl2m8hqCA== X-Received: by 2002:a17:907:1c8e:b0:b77:1bcf:5a85 with SMTP id a640c23a62f3a-b7a247f3fd9mr529959166b.39.1765122919014; Sun, 07 Dec 2025 07:55:19 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b79f4a60f50sm855931966b.70.2025.12.07.07.55.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Dec 2025 07:55:18 -0800 (PST) Content-Type: multipart/mixed; boundary=c17a774fd6978be0d97a585af3604bd263fe608fd2d538a506b2431e0886 Mime-Version: 1.0 Date: Sun, 07 Dec 2025 16:55:17 +0100 Message-Id: Subject: Re: Bump soft open file limit (RLIMIT_NOFILE) to hard limit on startup To: "Andres Freund" From: "Jelte Fennema-Nio" Cc: "PostgreSQL-development" , "Heikki Linnakangas" , "Tom Lane" , "Tomas Vondra" , "PostgreSQL-development" , "Peter Eisentraut" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <4qacnswlyykgj6p2gon4pvv7r2cb4adtedguer6pmaktr4xdve@om6ej7u4qw7p> In-Reply-To: <4qacnswlyykgj6p2gon4pvv7r2cb4adtedguer6pmaktr4xdve@om6ej7u4qw7p> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --c17a774fd6978be0d97a585af3604bd263fe608fd2d538a506b2431e0886 Content-Type: multipart/alternative; boundary=9fc3a455443858f3aeae8da18af8628a435546dfa210f1d8888e3a5212f9 --9fc3a455443858f3aeae8da18af8628a435546dfa210f1d8888e3a5212f9 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Feb 11, 2025 at 8:42 PM CET, Andres Freund wrote: > Not sure that's quite the right thing to do for postmaster. What I'd star= t > with is to increase the soft limit to > "already used files" + max_files_per_process. I needed to rebase this patch, and that made me finally take the time to do the restoration of the file limit for subprocesses properly: In previous versions of this patch it restored the limit before the call to system() and it didn't restore it at all for popen. This latest version the patch adds custom pg_system() and pg_popen() functions that restore the limits in the child process right after the fork, but before the exec. There are two reasons to do this: 1. Any executables that still use select(2) will get clear "out of file descriptors" errors instead of failing in mysterious ways. 2. Future looking when we'll have multi-threading (which this change is needed for) it would be problematic to restore the original limit temporarily in the postgres process tree. Some other thread might want to open a file while the limit is too low. By only calling setrlimit with the lower value in the child process there's not a single moment where the original Postgres process has a too low limit. --9fc3a455443858f3aeae8da18af8628a435546dfa210f1d8888e3a5212f9-- --c17a774fd6978be0d97a585af3604bd263fe608fd2d538a506b2431e0886 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0001-Bump-postmaster-soft-open-file-limit-RLIMIT_NOFIL.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0001-Bump-postmaster-soft-open-file-limit-RLIMIT_NOFIL.patch RnJvbSA2OTljNDlkMWY3NWMxNDMyNzcwMDdiNjE3MWM5NDk5YmZiNjc1N2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDcgRGVjIDIwMjUgMTU6MDc6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 IDEvMl0gQnVtcCBwb3N0bWFzdGVyIHNvZnQgb3BlbiBmaWxlIGxpbWl0IChSTElNSVRfTk9GSUxF KQogd2hlbiBuZWNlc3NhcnkKClRoZSBkZWZhdWx0IG9wZW4gZmlsZSBsaW1pdCBvZiAxMDI0IG9u IExpbnV4IGlzIGV4dHJlbWVseSBsb3cuIFRoZQpyZWFzb24gdGhhdCB0aGlzIGhhc24ndCBjaGFu Z2VkIGNoYW5nZSBpcyBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIGJyZWFrCmxlZ2FjeSBwcm9ncmFt cyB0aGF0IHVzZSB0aGUgc2VsZWN0KDIpIHN5c3RlbSBjYWxsIGluIGhhcmQgdG8gZGVidWcKd2F5 cy4gU28gaW5zdGVhZCBwcm9ncmFtcyB0aGF0IHdhbnQgdG8gb3B0LWluIHRvIGEgaGlnaGVyIG9w ZW4gZmlsZQpsaW1pdCBhcmUgZXhwZWN0ZWQgdG8gYnVtcCB0aGVpciBzb2Z0IGxpbWl0IHRvIHRo ZWlyIGhhcmQgbGltaXQgb24Kc3RhcnR1cC4gRGV0YWlscyBvbiB0aGlzIGFyZSB2ZXJ5IHdlbGwg ZXhwbGFpbmVkIGluIGEgYmxvZ3Bvc3QgYnkgdGhlCnN5c3RlbWQgYXV0aG9yWzFdLiBUaGVyZSdz IGFsc28gYSBzaW1pbGFyIGNoYW5nZSBkb25lIGJ5IHRoZSBHbwpsYW5ndWFnZVsyXS4KClRoaXMg c3RhcnRzIGJ1bXBpbmcgcG9zdG1hc3RlciBpdHMgc29mdCBvcGVuIGZpbGUgbGltaXQgd2hlbiB3 ZSByZWFsaXplCnRoYXQgd2UnbGwgcnVuIGludG8gdGhlIHNvZnQgbGltaXQgd2l0aCB0aGUgcmVx dWVzdGVkCm1heF9maWxlc19wZXJfcHJvY2VzcyBHVUMuIFdlIGRvIHNvIGJ5IHNsaWdodGx5IGNo YW5naW5nIHRoZSBtZWFuaW5nIG9mCnRoZSBtYXhfZmlsZXNfcGVyX3Byb2Nlc3MgR1VDLiBUaGUg YWN0dWFsIChub3QgcHVibGljbHkgZXhwb3NlZCkgbGltaXQKaXMgbWF4X3NhZmVfZmRzLCBwcmV2 aW91c2x5IHRoaXMgd291bGQgYmUgc2V0IHRvOgptYXhfZmlsZXNfcGVyX3Byb2Nlc3MgLSBhbHJl YWR5X29wZW5fZmlsZXMgLSBOVU1fUkVTRVJWRURfRkRTCkFmdGVyIHRoaXMgY2hhbmdlIHdlIG5v dyB0cnkgdG8gc2V0IG1heF9zYWZlX2ZkcyB0bwptYXhfZmlsZXNfcGVyX3Byb2Nlc3MgaWYgdGhl IHN5c3RlbSBhbGxvd3MgdGhhdC4gVGhpcyBpcyBkZWVtZWQgbW9yZQpuYXR1cmFsIHRvIHVuZGVy c3RhbmQgZm9yIHVzZXJzLCBiZWNhdXNlIG5vdyB0aGUgbGltaXQgb2YgZmlsZXMgdGhhdAp0aGV5 IGNhbiBvcGVuIGlzIGFjdHVhbGx5IHdoYXQgdGhleSBjb25maWd1cmVkIGluIG1heF9maWxlc19w ZXJfcHJvY2Vzcy4KCkFkZGluZyB0aGlzIGluZnJhc3RydWN0dXJlIHRvIGNoYW5nZSBSTElNSVRf Tk9GSUxFIHdoZW4gbmVlZGVkIGlzCmVzcGVjaWFsbHkgdXNlZnVsIGZvciB0aGUgQUlPIHdvcmss IGJlY2F1c2UgaW9fdXJpbmcgY29uc3VtZXMgYSBsb3Qgb2YKZmlsZSBkZXNjcmlwdG9ycy4gRXZl biB3aXRob3V0IGxvb2tpbmcgYXQgQUlPIHRoZXJlIGlzIGEgbGFyZ2UgbnVtYmVyIG9mCnJlcG9y dHMgZnJvbSBwZW9wbGUgdGhhdCByZXF1aXJlIGNoYW5naW5nIHRoZWlyIHNvZnQgZmlsZSBsaW1p dCBiZWZvcmUKc3RhcnRpbmcgUG9zdGdyZXMsIHNvbWV0aW1lcyBmYWxsaW5nIGJhY2sgdG8gbG93 ZXJpbmcKbWF4X2ZpbGVzX3Blcl9wcm9jZXNzIHdoZW4gdGhleSBmYWlsIHRvIGRvIHNvWzMtOF0u Ckl0J3MgYWxzbyBub3QgYWxsIHRoYXQgc3RyYW5nZSB0byBmYWlsIGF0IHNldHRpbmcgdGhlIHNv ZnQgb3BlbiBmaWxlCmxpbWl0IGJlY2F1c2UgdGhlcmUgYXJlIG11bHRpcGxlIHBsYWNlcyB3aGVy ZSBvbmUgY2FuIGNvbmZpZ3VyZSBzdWNoCmxpbWl0cyBhbmQgdXN1YWxseSBvbmx5IG9uZSBvZiB0 aGVtIGlzIGVmZmVjdGl2ZSAod2hpY2ggb25lIGRlcGVuZHMgb24KaG93IFBvc3RncmVzIGlzIHN0 YXJ0ZWQpLiBJbiBjbG91ZCBlbnZpcm9ubWVudHMgaXRzIGFsc28gb2Z0ZW4gbm90CnBvc3NpYmxl IGZvciB1c2VyIHRvIGNoYW5nZSB0aGUgc29mdCBsaW1pdCwgYmVjYXVzZSB0aGV5IGRvbid0IGNv bnRyb2wKdGhlIHdheSB0aGF0IFBvc3RncmVzIGlzIHN0YXJ0ZWQuIEZpbmFsbHksIGZvciB0aGUg bXVsdGktdGhyZWFkaW5nIHdvcmsKdGhpcyBpcyBhbHNvIHZlcnkgaW1wb3J0YW50IGJlY2F1c2Ug dGhlbiB0aGUgb3BlbiBmaWxlIGxpbWl0IGlzIG5vdApwZXItYmFja2VuZCBhbnltb3JlLCBidXQg Zm9yIHRoZSB3aG9sZSBzeXN0ZW0uCgpUaGUgbW9zdCBjb21wbGV4IGNoYW5nZSBpbiB0aGlzIHBh dGNoIGlzIGhvdyB3ZSBzaGVsbCBvdXQgdG8gb3RoZXIKc3lzdGVtcyBleGVjdXRhYmxlcy4gSW5z dGVhZCBvZiB1c2luZyBzeXN0ZW0gYW5kIHBvcGVuIGRpcmVjdGx5IHdlIG5vdwppbXBsZW1lbnQg b3VyIG93biB2ZXJzaW9ucyBvZiB0aGVzZSBjb21tYW5kcyB0aGF0IHJlc3RvcmUgdGhlIG9yaWdp bmFsCmZpbGUgbGltaXRzIGJlZm9yZSBzdGFydGluZyB0aGUgb3RoZXIgZXhlY3V0YWJsZXMuIFRo aXMgaXMgZG9uZSBhcyBhCnByZWNhdXRpb24gaW4gY2FzZSB0aG9zZSBleGVjdXRhYmxlcyBhcmUg dXNpbmcgc2VsZWN0KDIpLgoKUC5TLiBUaGUgaW5pdGRiIHRlc3QgbmVlZGVkIHRvIGJlIHVwZGF0 ZWQgYmVjYXVzZSBvbiBvdXIgT3BlbkJTRCBDSSB0aGUKc3RkZXJyIHdvdWxkIG5vdyBjb250YWlu OgoKTE9HOiAgaW5jcmVhc2VkIG9wZW4gZmlsZSBsaW1pdCB0byAxMDA0CgpbMV06IGh0dHBzOi8v MHBvaW50ZXIubmV0L2Jsb2cvZmlsZS1kZXNjcmlwdG9yLWxpbWl0cy5odG1sClsyXTogaHR0cHM6 Ly9naXRodWIuY29tL2dvbGFuZy9nby9pc3N1ZXMvNDYyNzkKWzNdOiBodHRwczovL3NlcnZlcmZh dWx0LmNvbS9xdWVzdGlvbnMvNzg1MzMwL2dldHRpbmctdG9vLW1hbnktb3Blbi1maWxlcy1lcnJv ci1mb3ItcG9zdGdyZXMKWzRdOiBodHRwczovL3NlcnZlcmZhdWx0LmNvbS9xdWVzdGlvbnMvNzE2 OTgyL2hvdy10by1yYWlzZS1tYXgtbm8tb2YtZmlsZS1kZXNjcmlwdG9ycy1mb3ItZGFlbW9ucy1y dW5uaW5nLW9uLWRlYmlhbi1qZXNzaWUKWzVdOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL2ZsYXQvQ0FLdGM4dlhoN052UF9xV2o4RXFxb3JQWTk3YnZ4U2FYM2g1dTdhOVBw dFJGSFc1eDdnJTQwbWFpbC5nbWFpbC5jb20KWzZdOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkL2ZsYXQvMTEzY2UzMWIwOTA4MTIwOTU1dzc3MDI5MDk5aTdlY2VjYzA1MzA4 NDA5NWElNDBtYWlsLmdtYWlsLmNvbQpbN106IGh0dHBzOi8vZ2l0aHViLmNvbS9hYmlvc29mdC9j b2xpbWEvZGlzY3Vzc2lvbnMvODM2Cls4XTogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVz c2FnZS1pZC9mbGF0LzI5NjYzLjEwMDc3Mzg5NTclNDBzc3MucGdoLnBhLnVzIzIwNzllYzllMmQ4 YjI1MTU5MzgxMmEzNzExYmZlOWU5Ci0tLQogbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2 ZS5jIHwgIDE4ICstCiBzcmMvYmFja2VuZC9hcmNoaXZlL3NoZWxsX2FyY2hpdmUuYyAgICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyAgICAgICAgICAgIHwgNDQyICsr KysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwgICAg ICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgICAgICAgICAgICAg IHwgICAzICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaCAgICAgICAgICAgICAgICAgfCAgIDEg KwogNyBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA2ZTdkZGQ3NDY4My4u YWM3NzhiODc4MTggMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBA IC0yODkxLDYgKzI4OTEsNyBAQCBmdW5jX2NoZWNrcyA9IFsKICAgWydsb2NhbGVjb252X2wnXSwK ICAgWydtYnN0b3djc19sJ10sCiAgIFsnbWtkdGVtcCddLAorICBbJ3BpcGUyJ10sCiAgIFsncG9z aXhfZmFkdmlzZSddLAogICBbJ3Bvc2l4X2ZhbGxvY2F0ZSddLAogICBbJ3Bwb2xsJ10sCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYwppbmRleCAxZWYxNzEzYzkxYS4uNWE5 OWRkYzI5MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNo aXZlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYwpAQCAt MTU4LDEwICsxNTgsOSBAQCBSZXN0b3JlQXJjaGl2ZWRGaWxlKGNoYXIgKnBhdGgsIGNvbnN0IGNo YXIgKnhsb2dmbmFtZSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoImV4ZWN1dGluZyByZXN0b3JlIGNv bW1hbmQgXCIlc1wiIiwKIAkJCQkJCQkgeGxvZ1Jlc3RvcmVDbWQpKSk7CiAKLQlmZmx1c2goTlVM TCk7Ci0JcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfUkVTVE9SRV9DT01NQU5E KTsKLQogCS8qCisJICogQ29weSB4bG9nIGZyb20gYXJjaGl2YWwgc3RvcmFnZSB0byBYTE9HRElS CisJICoKIAkgKiBQcmVSZXN0b3JlQ29tbWFuZCgpIGluZm9ybXMgdGhlIFNJR1RFUk0gaGFuZGxl ciBmb3IgdGhlIHN0YXJ0dXAgcHJvY2VzcwogCSAqIHRoYXQgaXQgc2hvdWxkIHByb2NfZXhpdCgp IHJpZ2h0IGF3YXkuICBUaGlzIGlzIGRvbmUgZm9yIHRoZSBkdXJhdGlvbgogCSAqIG9mIHRoZSBz eXN0ZW0oKSBjYWxsIGJlY2F1c2UgdGhlcmUgaXNuJ3QgYSBnb29kIHdheSB0byBicmVhayBvdXQg d2hpbGUKQEAgLTE2OSwxNiArMTY4LDEzIEBAIFJlc3RvcmVBcmNoaXZlZEZpbGUoY2hhciAqcGF0 aCwgY29uc3QgY2hhciAqeGxvZ2ZuYW1lLAogCSAqIGl0IGlzIGJlc3QgdG8gcHV0IGFueSBhZGRp dGlvbmFsIGxvZ2ljIGJlZm9yZSBvciBhZnRlciB0aGUKIAkgKiBQcmVSZXN0b3JlQ29tbWFuZCgp L1Bvc3RSZXN0b3JlQ29tbWFuZCgpIHNlY3Rpb24uCiAJICovCisJZmZsdXNoKE5VTEwpOworCXBn c3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1JFU1RPUkVfQ09NTUFORCk7CiAJUHJl UmVzdG9yZUNvbW1hbmQoKTsKLQotCS8qCi0JICogQ29weSB4bG9nIGZyb20gYXJjaGl2YWwgc3Rv cmFnZSB0byBYTE9HRElSCi0JICovCi0JcmMgPSBzeXN0ZW0oeGxvZ1Jlc3RvcmVDbWQpOwotCisJ cmMgPSBwZ19zeXN0ZW0oeGxvZ1Jlc3RvcmVDbWQpOwogCVBvc3RSZXN0b3JlQ29tbWFuZCgpOwot CiAJcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOworCiAJcGZyZWUoeGxvZ1Jlc3RvcmVDbWQpOwog CiAJaWYgKHJjID09IDApCkBAIC0zMjcsNyArMzIzLDcgQEAgRXhlY3V0ZVJlY292ZXJ5Q29tbWFu ZChjb25zdCBjaGFyICpjb21tYW5kLCBjb25zdCBjaGFyICpjb21tYW5kTmFtZSwKIAkgKi8KIAlm Zmx1c2goTlVMTCk7CiAJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KHdhaXRfZXZlbnRfaW5mbyk7 Ci0JcmMgPSBzeXN0ZW0oeGxvZ1JlY292ZXJ5Q21kKTsKKwlyYyA9IHBnX3N5c3RlbSh4bG9nUmVj b3ZlcnlDbWQpOwogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAogCXBmcmVlKHhsb2dSZWNv dmVyeUNtZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hcmNoaXZlL3NoZWxsX2FyY2hpdmUu YyBiL3NyYy9iYWNrZW5kL2FyY2hpdmUvc2hlbGxfYXJjaGl2ZS5jCmluZGV4IDgyODcyM2FmZTQ3 Li5iZWI4MWVlN2Q5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYXJjaGl2ZS9zaGVsbF9hcmNo aXZlLmMKKysrIGIvc3JjL2JhY2tlbmQvYXJjaGl2ZS9zaGVsbF9hcmNoaXZlLmMKQEAgLTIyLDYg KzIyLDcgQEAKICNpbmNsdWRlICJhcmNoaXZlL3NoZWxsX2FyY2hpdmUuaCIKICNpbmNsdWRlICJj b21tb24vcGVyY2VudHJlcGwuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAKIHN0YXRpYyBib29sIHNoZWxsX2FyY2hpdmVfY29uZmlndXJlZChBcmNoaXZl TW9kdWxlU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyBib29sIHNoZWxsX2FyY2hpdmVfZmlsZShBcmNo aXZlTW9kdWxlU3RhdGUgKnN0YXRlLApAQCAtNzcsNyArNzgsNyBAQCBzaGVsbF9hcmNoaXZlX2Zp bGUoQXJjaGl2ZU1vZHVsZVN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqZmlsZSwKIAogCWZmbHVz aChOVUxMKTsKIAlwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoV0FJVF9FVkVOVF9BUkNISVZFX0NP TU1BTkQpOwotCXJjID0gc3lzdGVtKHhsb2dhcmNoY21kKTsKKwlyYyA9IHBnX3N5c3RlbSh4bG9n YXJjaGNtZCk7CiAJcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwogCiAJaWYgKHJjICE9IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvZmlsZS9mZC5jCmluZGV4IGU5ZWFhZjljODI5Li40MDIxMmQ3MzNlOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9maWxlL2ZkLmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNp Zm5kZWYgV0lOMzIKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+ CiAjZW5kaWYKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTkx LDYgKzkyLDcgQEAKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29t bW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgorI2luY2x1ZGUg ImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCkBAIC0xNTgsNiArMTYwLDEz IEBAIGludAkJCW1heF9maWxlc19wZXJfcHJvY2VzcyA9IDEwMDA7CiAgKi8KIGludAkJCW1heF9z YWZlX2ZkcyA9IEZEX01JTkZSRUU7CS8qIGRlZmF1bHQgaWYgbm90IGNoYW5nZWQgKi8KIAorI2lm ZGVmIEhBVkVfR0VUUkxJTUlUCitzdGF0aWMgYm9vbCBzYXZlZF9vcmlnaW5hbF9tYXhfb3Blbl9m aWxlczsKK3N0YXRpYyBzdHJ1Y3QgcmxpbWl0IG9yaWdpbmFsX21heF9vcGVuX2ZpbGVzOworc3Rh dGljIHN0cnVjdCBybGltaXQgY3VzdG9tX21heF9vcGVuX2ZpbGVzOworI2VuZGlmCisKKwogLyog V2hldGhlciBpdCBpcyBzYWZlIHRvIGNvbnRpbnVlIHJ1bm5pbmcgYWZ0ZXIgZnN5bmMoKSBmYWls cy4gKi8KIGJvb2wJCWRhdGFfc3luY19yZXRyeSA9IGZhbHNlOwogCkBAIC0yNjEsNiArMjcwLDEx IEBAIHR5cGVkZWYgc3RydWN0CiAJCUZJTEUJICAgKmZpbGU7CiAJCURJUgkJICAgKmRpcjsKIAkJ aW50CQkJZmQ7CisJCXN0cnVjdAorCQl7CisJCQlGSUxFCSAgICpmaWxlOworCQkJcGlkX3QJCXBp ZDsKKwkJfQkJCXBpcGU7CiAJfQkJCWRlc2M7CiB9IEFsbG9jYXRlRGVzYzsKIApAQCAtOTQzLDYg Kzk1NywxMjggQEAgSW5pdFRlbXBvcmFyeUZpbGVBY2Nlc3Modm9pZCkKICNlbmRpZgogfQogCisv KgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNzZWQgaW4gaGlnaGVzdGZkIGlzIHRoZSBsYXN0 IG9uZSB0aGF0IHdlJ3JlIGFsbG93ZWQKKyAqIHRvIG9wZW4gYmFzZWQgb24gb3VyLiBUaGlzIHNo b3VsZCBvbmx5IGJlIGNhbGxlZCBpZgorICovCitzdGF0aWMgYm9vbAorSXNPcGVuRmlsZUxpbWl0 KGludCBoaWdoZXN0ZmQpCit7CisjaWZkZWYgSEFWRV9HRVRSTElNSVQKKwlpZiAoIXNhdmVkX29y aWdpbmFsX21heF9vcGVuX2ZpbGVzKQorCXsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVy biBoaWdoZXN0ZmQgPj0gY3VzdG9tX21heF9vcGVuX2ZpbGVzLnJsaW1fY3VyIC0gMTsKKyNlbHNl CisJcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKy8qCisgKiBJbmNyZWFzZXMgdGhlIG9wZW4g ZmlsZSBsaW1pdCAoUkxJTUlUX05PRklMRSkgYnkgdGhlIHJlcXVlc3RlZCBhbW91bnQuCisgKiBS ZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMg Ym9vbAorSW5jcmVhc2VPcGVuRmlsZUxpbWl0KGludCBleHRyYV9maWxlcykKK3sKKyNpZmRlZiBI QVZFX0dFVFJMSU1JVAorCXN0cnVjdCBybGltaXQgcmxpbTsKKworCWlmICghc2F2ZWRfb3JpZ2lu YWxfbWF4X29wZW5fZmlsZXMpCisJeworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmxpbSA9IGN1 c3RvbV9tYXhfb3Blbl9maWxlczsKKworCS8qIElmIHdlJ3JlIGFscmVhZHkgYXQgdGhlIG1heCB3 ZSByZWFjaGVkIG91ciBsaW1pdCAqLworCWlmIChybGltLnJsaW1fY3VyID09IG9yaWdpbmFsX21h eF9vcGVuX2ZpbGVzLnJsaW1fbWF4KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPdGhlcndpc2Ug dHJ5IHRvIGluY3JlYXNlIHRoZSBzb2Z0IGxpbWl0IHRvIHdoYXQgd2UgbmVlZCAqLworCXJsaW0u cmxpbV9jdXIgPSBNaW4ocmxpbS5ybGltX2N1ciArIGV4dHJhX2ZpbGVzLCBybGltLnJsaW1fbWF4 KTsKKworCWlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsaW0pICE9IDApCisJeworCQkv KiBXZSBtYWRlIHN1cmUgbm90IHRvIGV4Y2VlZCB0aGUgaGFyZCBsaW1pdCwgc28gdGhpcyBzaG91 bGRuJ3QgZmFpbCAqLworCQllcmVwb3J0KFdBUk5JTkcsIChlcnJtc2coInNldHJsaW1pdCBmYWls ZWQ6ICVtIikpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWN1c3RvbV9tYXhfb3Blbl9maWxl cyA9IHJsaW07CisKKwllbG9nKExPRywgImluY3JlYXNlZCBvcGVuIGZpbGUgbGltaXQgdG8gJWxk IiwgKGxvbmcpIHJsaW0ucmxpbV9jdXIpOworCisJcmV0dXJuIHRydWU7CisjZWxzZQorCXJldHVy biBmYWxzZTsKKyNlbmRpZgorfQorCisvKgorICogU2F2ZXMgdGhlIG9yaWdpbmFsIG9wZW4gZmls ZSBsaW1pdCAoUkxJTUlUX05PRklMRSkgdGhlIGZpcnN0IHRpbWUgd2hlbiB0aGlzCisgKiBpcyBj YWxsZWQuIElmIGNhbGxlZCBhZ2FpbiBpdCdzIGEgbm8tb3AuCisgKgorICogUmV0dXJucyB0cnVl IGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIHZvaWQKK1NhdmVP cmlnaW5hbE9wZW5GaWxlTGltaXQodm9pZCkKK3sKKyNpZmRlZiBIQVZFX0dFVFJMSU1JVAorCWlu dAkJCXN0YXR1czsKKworCWlmIChzYXZlZF9vcmlnaW5hbF9tYXhfb3Blbl9maWxlcykKKwl7CisJ CS8qIEFscmVhZHkgc2F2ZWQsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW4gKi8KKwkJcmV0dXJuOwor CX0KKworCXN0YXR1cyA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmb3JpZ2luYWxfbWF4X29w ZW5fZmlsZXMpOworCWlmIChzdGF0dXMgIT0gMCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywgKGVy cm1zZygiZ2V0cmxpbWl0IGZhaWxlZDogJW0iKSkpOworCQlyZXR1cm47CisJfQorCisJY3VzdG9t X21heF9vcGVuX2ZpbGVzID0gb3JpZ2luYWxfbWF4X29wZW5fZmlsZXM7CisJc2F2ZWRfb3JpZ2lu YWxfbWF4X29wZW5fZmlsZXMgPSB0cnVlOworCXJldHVybjsKKyNlbmRpZgorfQorCisjaWZuZGVm IFdJTjMyCisvKgorICogVXNlT3JpZ2luYWxPcGVuRmlsZUxpbWl0IC0tLSBNYWtlcyB0aGUgcHJv Y2VzcyB1c2UgdGhlIG9yaWdpbmFsIG9wZW4gZmlsZQorICogCQlsaW1pdCB0aGF0IHdhcyBwcmVz ZW50IGF0IHBvc3RtYXN0ZXIgc3RhcnQuCisgKgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJl Zm9yZSBzcGF3bmluZyBzdWJwcm9jZXNzZXMgdGhhdCBtaWdodCB1c2Ugc2VsZWN0KDIpCisgKiB3 aGljaCBjYW4gb25seSBoYW5kbGUgZmlsZSBkZXNjcmlwdG9ycyB1cCB0byAxMDI0LgorICovCitz dGF0aWMgdm9pZAorVXNlT3JpZ2luYWxPcGVuRmlsZUxpbWl0KHZvaWQpCit7CisjaWZkZWYgSEFW RV9HRVRSTElNSVQKKwlpZiAoIXNhdmVkX29yaWdpbmFsX21heF9vcGVuX2ZpbGVzKQorCXsKKwkJ cmV0dXJuOworCX0KKworCWlmIChjdXN0b21fbWF4X29wZW5fZmlsZXMucmxpbV9jdXIgPT0gb3Jp Z2luYWxfbWF4X29wZW5fZmlsZXMucmxpbV9jdXIpCisJeworCQkvKiBOb3QgY2hhbmdlZCwgc28g bm8gbmVlZCB0byBjYWxsIHNldHJsaW1pdCBhdCBhbGwgKi8KKwkJcmV0dXJuOworCX0KKworCWlm IChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJm9yaWdpbmFsX21heF9vcGVuX2ZpbGVzKSAhPSAw KQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLCAoZXJybXNnKCJzZXRybGltaXQgZmFpbGVkOiAlbSIp KSk7CisJfQorI2VuZGlmCit9CisjZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KKwogLyoKICAqIGNv dW50X3VzYWJsZV9mZHMgLS0tIGNvdW50IGhvdyBtYW55IEZEcyB0aGUgc3lzdGVtIHdpbGwgbGV0 IHVzIG9wZW4sCiAgKgkJYW5kIGVzdGltYXRlIGhvdyBtYW55IGFyZSBhbHJlYWR5IG9wZW4uCkBA IC05NjYsMzggKzExMDIsMzkgQEAgY291bnRfdXNhYmxlX2ZkcyhpbnQgbWF4X3RvX3Byb2JlLCBp bnQgKnVzYWJsZV9mZHMsIGludCAqYWxyZWFkeV9vcGVuKQogCWludAkJCWhpZ2hlc3RmZCA9IDA7 CiAJaW50CQkJajsKIAotI2lmZGVmIEhBVkVfR0VUUkxJTUlUCi0Jc3RydWN0IHJsaW1pdCBybGlt OwotCWludAkJCWdldHJsaW1pdF9zdGF0dXM7Ci0jZW5kaWYKLQogCXNpemUgPSAxMDI0OwogCWZk ID0gKGludCAqKSBwYWxsb2Moc2l6ZSAqIHNpemVvZihpbnQpKTsKIAotI2lmZGVmIEhBVkVfR0VU UkxJTUlUCi0JZ2V0cmxpbWl0X3N0YXR1cyA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmxp bSk7Ci0JaWYgKGdldHJsaW1pdF9zdGF0dXMgIT0gMCkKLQkJZXJlcG9ydChXQVJOSU5HLCAoZXJy bXNnKCJnZXRybGltaXQgZmFpbGVkOiAlbSIpKSk7Ci0jZW5kaWYJCQkJCQkJLyogSEFWRV9HRVRS TElNSVQgKi8KKwlTYXZlT3JpZ2luYWxPcGVuRmlsZUxpbWl0KCk7CiAKIAkvKiBkdXAgdW50aWwg ZmFpbHVyZSBvciBwcm9iZSBsaW1pdCByZWFjaGVkICovCiAJZm9yICg7OykKIAl7CiAJCWludAkJ CXRoaXNmZDsKIAotI2lmZGVmIEhBVkVfR0VUUkxJTUlUCi0KIAkJLyoKIAkJICogZG9uJ3QgZ28g YmV5b25kIFJMSU1JVF9OT0ZJTEU7IGNhdXNlcyBpcnJpdGF0aW5nIGtlcm5lbCBsb2dzIG9uCiAJ CSAqIHNvbWUgcGxhdGZvcm1zCiAJCSAqLwotCQlpZiAoZ2V0cmxpbWl0X3N0YXR1cyA9PSAwICYm IGhpZ2hlc3RmZCA+PSBybGltLnJsaW1fY3VyIC0gMSkKLQkJCWJyZWFrOwotI2VuZGlmCisJCWlm IChJc09wZW5GaWxlTGltaXQoaGlnaGVzdGZkKSkKKwkJeworCQkJaWYgKCFJbmNyZWFzZU9wZW5G aWxlTGltaXQobWF4X3RvX3Byb2JlIC0gdXNlZCkpCisJCQkJYnJlYWs7CisJCX0KIAogCQl0aGlz ZmQgPSBkdXAoMik7CiAJCWlmICh0aGlzZmQgPCAwKQogCQl7CisJCQkvKgorCQkJICogRXZlbnRo b3VnaCB3ZSBkbyB0aGUgcHJlLWNoZWNrIGFib3ZlLCBpdCdzIHN0aWxsIHBvc3NpYmxlIHRoYXQK KwkJCSAqIHRoZSBjYWxsIHRvIGR1cCBmYWlscyB3aXRoIEVNRklMRS4gVGhpcyBjYW4gaGFwcGVu IGlmIHRoZSBsYXN0CisJCQkgKiBmaWxlIGRlc2NyaXB0b3Igd2FzIGFscmVhZHkgYXNzaWduZWQg dG8gYW4gImFscmVhZHkgb3BlbiIgZmlsZS4KKwkJCSAqIE9uZSBleGFtcGxlIG9mIHRoaXMgaGFw cGVuaW5nLCBpcyBpZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBzb2Z0CisJCQkgKiBsaW1pdCB3aGVu IHdlIGNhbGwgY291bnRfdXNhYmxlX2Zkcy4KKwkJCSAqLworCQkJaWYgKGVycm5vID09IEVNRklM RSAmJiBJbmNyZWFzZU9wZW5GaWxlTGltaXQobWF4X3RvX3Byb2JlIC0gdXNlZCkpCisJCQkJY29u dGludWU7CisKIAkJCS8qIEV4cGVjdCBFTUZJTEUgb3IgRU5GSUxFLCBlbHNlIGl0J3MgZmlzaHkg Ki8KIAkJCWlmIChlcnJubyAhPSBFTUZJTEUgJiYgZXJybm8gIT0gRU5GSUxFKQogCQkJCWVsb2co V0FSTklORywgImR1cGxpY2F0aW5nIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgZmFpbGVkIGFmdGVy ICVkIHN1Y2Nlc3NlczogJW0iLCB1c2VkKTsKQEAgLTI3MzEsNiArMjg2OCwyNjUgQEAgT3BlblRy YW5zaWVudEZpbGVQZXJtKGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBpbnQgZmlsZUZsYWdzLCBtb2Rl X3QgZmlsZU1vZGUpCiAJcmV0dXJuIC0xOwkJCQkJLyogZmFpbHVyZSAqLwogfQogCisjaWZuZGVm IFdJTjMyCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGZvcmsgYSBjaGlsZCBwcm9jZXNzIGZv ciBleGVjdXRpbmcgYSBzaGVsbCBjb21tYW5kLgorICoKKyAqIFRoaXMgaGFuZGxlcyBhbGwgdGhl IHN0YW5kYXJkIGNoaWxkIHByb2Nlc3Mgc2V0dXA6CisgKiAtIEJsb2NrcyBzaWduYWxzIGJlZm9y ZSBmb3JrIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucworICogLSBMb3dlcnMgdGhlIGZpbGUgbGlt aXQgaW4gdGhlIGNoaWxkIChVc2VPcmlnaW5hbE9wZW5GaWxlTGltaXQpCisgKiAtIFJlc2V0cyBz aWduYWwgaGFuZGxlcnMgdGhhdCB0aGUgYmFja2VuZCBoYXMgc2V0IHRvIFNJR19JR04KKyAqIC0g VW5ibG9ja3Mgc2lnbmFscyBpbiBib3RoIHBhcmVudCBhbmQgY2hpbGQgYWZ0ZXIgc2V0dXAKKyAq CisgKiBSZXR1cm5zIC0xIG9uIGZvcmsgZmFpbHVyZSwgMCBpbiB0aGUgY2hpbGQsIG9yIHRoZSBj aGlsZCBQSUQgaW4gdGhlIHBhcmVudC4KKyAqIEFmdGVyIHRoaXMgcmV0dXJucyBpbiB0aGUgY2hp bGQsIHRoZSBjYWxsZXIgc2hvdWxkIGRvIGFueSBhZGRpdGlvbmFsIHNldHVwCisgKiAobGlrZSBw aXBlIHJlZGlyZWN0aW9uKSBhbmQgdGhlbiBjYWxsIGV4ZWNfc2hlbGxfY29tbWFuZCgpLgorICov CitzdGF0aWMgcGlkX3QKK2ZvcmtfZm9yX3NoZWxsX2NvbW1hbmQodm9pZCkKK3sKKwlwaWRfdAkJ cGlkOworCXNpZ3NldF90CXNhdmVfbWFzazsKKworCS8qIEJsb2NrIHNpZ25hbHMgZHVyaW5nIGZv cmsgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGluIGNoaWxkIHNldHVwICovCisJc2lncHJvY21h c2soU0lHX1NFVE1BU0ssICZCbG9ja1NpZywgJnNhdmVfbWFzayk7CisKKwlwaWQgPSBmb3JrKCk7 CisJaWYgKHBpZCA9PSAwKQorCXsKKwkJLyogQ2hpbGQgcHJvY2VzcyAqLworCQlVc2VPcmlnaW5h bE9wZW5GaWxlTGltaXQoKTsKKworCQkvKgorCQkgKiBSZXNldCBzaWduYWwgaGFuZGxlcnMgdG8g ZGVmYXVsdC4gVGhlIGJhY2tlbmQgaWdub3JlcyB0aGVzZSwgYW5kCisJCSAqIFNJR19JR04gaXMg cHJlc2VydmVkIGFjcm9zcyBleGVjLCBzbyB3ZSBtdXN0IHJlc2V0IHRoZW0gdG8gYWxsb3cKKwkJ ICogdGhlIGNoaWxkIHByb2Nlc3MgdG8gcmVzcG9uZCB0byBzaWduYWxzIG5vcm1hbGx5LgorCQkg Ki8KKwkJcHFzaWduYWwoU0lHSU5ULCBTSUdfREZMKTsKKwkJcHFzaWduYWwoU0lHUVVJVCwgU0lH X0RGTCk7CisJCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19ERkwpOworCX0KKworCS8qIFJlc3RvcmUv dW5ibG9jayBzaWduYWxzIGluIGJvdGggcGFyZW50IGFuZCBjaGlsZCAoYWxzbyBpZiBmb3JrIGZh aWxlZCkgKi8KKwlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJnNhdmVfbWFzaywgTlVMTCk7CisK KwlyZXR1cm4gcGlkOworfQorCisvKgorICogRXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgdmlhIC9i aW4vc2guIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuLgorICogU2hvdWxkIGJlIGNhbGxl ZCBpbiB0aGUgY2hpbGQgcHJvY2VzcyBhZnRlciBmb3JrX2Zvcl9zaGVsbF9jb21tYW5kKCkuCisg Ki8KK3N0YXRpYyBwZ19ub3JldHVybiB2b2lkCitleGVjX3NoZWxsX2NvbW1hbmQoY29uc3QgY2hh ciAqY29tbWFuZCkKK3sKKwlleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIGNvbW1hbmQsIChj aGFyICopIE5VTEwpOworCV9leGl0KDEyNyk7Cit9CisjZW5kaWYKKworLyoKKyAqIHBnX3N5c3Rl bSAtIEN1c3RvbSBzeXN0ZW0oKSB0aGF0IGxvd2VycyBmaWxlIGxpbWl0IGluIGNoaWxkIHByb2Nl c3MuCisgKgorICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBidW1wZWQgdGhl IHNvZnQgUkxJTUlUX05PRklMRSBsaW1pdAorICogYWJvdmUgaXRzIG9yaWdpbmFsIHZhbHVlLiBU aGUgY2hpbGQgcHJvY2VzcyBzaG91bGQgdXNlIHRoZSBvcmlnaW5hbCBsaW1pdAorICogdG8gYXZv aWQgaXNzdWVzIHdpdGggcHJvZ3JhbXMgdGhhdCB1c2Ugc2VsZWN0KDIpLCB3aGljaCBjYW4gb25s eSBoYW5kbGUKKyAqIEZEcyB1cCB0byBGRF9TRVRTSVpFICh0eXBpY2FsbHkgMTAyNCkuCisgKgor ICogV2UgY2FuJ3QganVzdCBjYWxsIFVzZU9yaWdpbmFsT3BlbkZpbGVMaW1pdCgpIGJlZm9yZSB0 aGUgc3RhbmRhcmQgc3lzdGVtKCkKKyAqIGJlY2F1c2UgdGhhdCB3b3VsZCB0ZW1wb3JhcmlseSBs b3dlciB0aGUgbGltaXQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLAorICogd2hpY2ggY291bGQgY2F1 c2UgY29uY3VycmVudCBmaWxlIG9wZXJhdGlvbnMgdG8gZmFpbCBpbiBhIG11bHRpdGhyZWFkZWQK KyAqIGVudmlyb25tZW50LgorICovCitpbnQKK3BnX3N5c3RlbShjb25zdCBjaGFyICpjb21tYW5k KQoreworI2lmbmRlZiBXSU4zMgorCXBpZF90CQlwaWQ7CisJaW50CQkJc3RhdHVzOworCXBpZF90 CQl3YWl0cmVzdWx0OworCisJcGlkID0gZm9ya19mb3Jfc2hlbGxfY29tbWFuZCgpOworCWlmIChw aWQgPT0gKHBpZF90KSAtMSkKKwkJcmV0dXJuIC0xOworCWlmIChwaWQgPT0gMCkKKwkJZXhlY19z aGVsbF9jb21tYW5kKGNvbW1hbmQpOwkvKiBkb2VzIG5vdCByZXR1cm4gKi8KKworCS8qIFdhaXQg Zm9yIGNoaWxkICovCisJZG8KKwl7CisJCXdhaXRyZXN1bHQgPSB3YWl0cGlkKHBpZCwgJnN0YXR1 cywgMCk7CisJfSB3aGlsZSAod2FpdHJlc3VsdCA9PSAocGlkX3QpIC0xICYmIGVycm5vID09IEVJ TlRSKTsKKworCWlmICh3YWl0cmVzdWx0ICE9IHBpZCkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJu IHN0YXR1czsKKyNlbHNlCisJLyogT24gV2luZG93cywganVzdCB1c2Ugc3RhbmRhcmQgc3lzdGVt KCkgLSBubyBSTElNSVRfTk9GSUxFIGJ1bXBpbmcgdGhlcmUgKi8KKwlyZXR1cm4gc3lzdGVtKGNv bW1hbmQpOworI2VuZGlmCit9CisKKworLyoKKyAqIHBnX3BvcGVuIC0gQ3VzdG9tIHBvcGVuKCkg dGhhdCBsb3dlcnMgZmlsZSBsaW1pdCBpbiBjaGlsZCBwcm9jZXNzLgorICoKKyAqIFRoaXMgaXMg bmVlZGVkIGJlY2F1c2Ugd2UgbWF5IGhhdmUgYnVtcGVkIHRoZSBzb2Z0IFJMSU1JVF9OT0ZJTEUg bGltaXQKKyAqIGFib3ZlIGl0cyBvcmlnaW5hbCB2YWx1ZS4gVGhlIGNoaWxkIHByb2Nlc3Mgc2hv dWxkIHVzZSB0aGUgb3JpZ2luYWwgbGltaXQKKyAqIHRvIGF2b2lkIGlzc3VlcyB3aXRoIHByb2dy YW1zIHRoYXQgdXNlIHNlbGVjdCgyKSwgd2hpY2ggY2FuIG9ubHkgaGFuZGxlCisgKiBGRHMgdXAg dG8gRkRfU0VUU0laRSAodHlwaWNhbGx5IDEwMjQpLgorICoKKyAqIFdlIGNhbid0IGp1c3QgY2Fs bCBVc2VPcmlnaW5hbE9wZW5GaWxlTGltaXQoKSBiZWZvcmUgcG9wZW4oKSBvZiB0aGUgc3RkbGli CisgKiBiZWNhdXNlIHBvcGVuKCkgb3BlbnMgYSBmaWxlIGRlc2NyaXB0b3IgaW4gdGhlIHBhcmVu dCBwcm9jZXNzICh0aGUgcGFyZW50J3MKKyAqIHNpZGUgb2YgdGhlIHBpcGUpLCB3aGljaCB3b3Vs ZCBmYWlsIGlmIHdlJ3JlIGFscmVhZHkgYWJvdmUgdGhlIG9yaWdpbmFsCisgKiBsaW1pdC4KKyAq CisgKiBSZXR1cm5zIHRoZSBGSUxFKiBmb3IgdGhlIHBpcGUsIG9yIE5VTEwgb24gZXJyb3IuCisg KiBPbiBzdWNjZXNzLCAqY2hpbGRfcGlkIGlzIHNldCB0byB0aGUgY2hpbGQncyBQSUQgKG9yIDAg b24gV2luZG93cyB3aGVyZQorICogd2UgdXNlIHN0YW5kYXJkIHBvcGVuKS4KKyAqLworc3RhdGlj IEZJTEUgKgorcGdfcG9wZW4oY29uc3QgY2hhciAqY29tbWFuZCwgY29uc3QgY2hhciAqbW9kZSwg cGlkX3QgKmNoaWxkX3BpZCkKK3sKKyNpZm5kZWYgV0lOMzIKKwlpbnQJCQlwaXBlX2Zkc1syXTsK KwlpbnQJCQlwYXJlbnRfZmQ7CisJaW50CQkJY2hpbGRfZmQ7CisJaW50CQkJY2hpbGRfdGFyZ2V0 X2ZkOworCXBpZF90CQlwaWQ7CisJRklMRQkgICAqcGlwZV9maWxlOworCWludAkJCXNhdmVfZXJy bm87CisKKwkvKiBPbmx5ICJyIiBhbmQgInciIG1vZGVzIGFyZSBzdXBwb3J0ZWQgKi8KKwlpZiAo bW9kZVswXSA9PSAncicpCisJeworCQkvKiBQYXJlbnQgcmVhZHMgZnJvbSBjaGlsZCdzIHN0ZG91 dCAqLworCQlwYXJlbnRfZmQgPSAwOworCQljaGlsZF9mZCA9IDE7CisJCWNoaWxkX3RhcmdldF9m ZCA9IFNURE9VVF9GSUxFTk87CisJfQorCWVsc2UgaWYgKG1vZGVbMF0gPT0gJ3cnKQorCXsKKwkJ LyogUGFyZW50IHdyaXRlcyB0byBjaGlsZCdzIHN0ZGluICovCisJCXBhcmVudF9mZCA9IDE7CisJ CWNoaWxkX2ZkID0gMDsKKwkJY2hpbGRfdGFyZ2V0X2ZkID0gU1RESU5fRklMRU5POworCX0KKwll bHNlCisJeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyoKKwkg KiBTZXQgY2xvc2Utb24tZXhlYyB0byBwcmV2ZW50IG90aGVyIGNvbmN1cnJlbnRseSBzcGF3bmVk IGNoaWxkIHByb2Nlc3NlcworCSAqIGZyb20gaW5oZXJpdGluZyB0aGUgcGlwZSBmaWxlIGRlc2Ny aXB0b3JzLiBUaGlzIGlzIGltcG9zc2libGUgd2hpbGUKKwkgKiB3ZSdyZSBub3QgdXNpbmcgdGhy ZWFkcywgYnV0IHNpbmNlIHRoaXMgaXMgcGFydCBvZiBhZGRpbmcgc3VjaAorCSAqIG11bHRpdGhy ZWFkaW5nIHN1cHBvcnQgbGV0J3MgcHJldGVuZCB0aGF0IHdlIGFscmVhZHkgaGF2ZSBpdC4gRm9y CisJICogc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgcGlwZTIsIHRoZXJlJ3MgYWx3YXlzIGEgcmlz ayBvZiByYWNlCisJICogY29uZGl0aW9ucywgYnV0IGxldCdzIG1pbmltaXplIHRoYXQgYnkgcXVp Y2tseSBzZXR0aW5nIHRoZQorCSAqIGNsb3NlLW9uLWV4ZWMgZmxhZyB3aXRoIGZuY3RsLgorCSAq LworI2lmZGVmIEhBVkVfUElQRTIKKwlpZiAocGlwZTIocGlwZV9mZHMsIE9fQ0xPRVhFQykgPCAw KQorCQlyZXR1cm4gTlVMTDsKKyNlbHNlCisJaWYgKHBpcGUocGlwZV9mZHMpIDwgMCkKKwkJcmV0 dXJuIE5VTEw7CisJaWYgKGZjbnRsKHBpcGVfZmRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9 PSAtMSB8fAorCQlmY250bChwaXBlX2Zkc1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEp CisJeworCQlzYXZlX2Vycm5vID0gZXJybm87CisJCWNsb3NlKHBpcGVfZmRzWzBdKTsKKwkJY2xv c2UocGlwZV9mZHNbMV0pOworCQllcnJubyA9IHNhdmVfZXJybm87CisJCXJldHVybiBOVUxMOwor CX0KKyNlbmRpZgorCisJZmZsdXNoKE5VTEwpOworCisJcGlkID0gZm9ya19mb3Jfc2hlbGxfY29t bWFuZCgpOworCWlmIChwaWQgPCAwKQorCXsKKwkJLyogZm9yayBmYWlsZWQgKi8KKwkJc2F2ZV9l cnJubyA9IGVycm5vOworCQljbG9zZShwaXBlX2Zkc1swXSk7CisJCWNsb3NlKHBpcGVfZmRzWzFd KTsKKwkJZXJybm8gPSBzYXZlX2Vycm5vOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAocGlk ID09IDApCisJeworCQkvKiBDaGlsZCBwcm9jZXNzIC0gc2V0IHVwIHBpcGUgcmVkaXJlY3Rpb24g YW5kIGV4ZWMgKi8KKwkJY2xvc2UocGlwZV9mZHNbcGFyZW50X2ZkXSk7CisJCWlmIChwaXBlX2Zk c1tjaGlsZF9mZF0gIT0gY2hpbGRfdGFyZ2V0X2ZkKQorCQl7CisJCQlkdXAyKHBpcGVfZmRzW2No aWxkX2ZkXSwgY2hpbGRfdGFyZ2V0X2ZkKTsKKwkJCWNsb3NlKHBpcGVfZmRzW2NoaWxkX2ZkXSk7 CisJCX0KKworCQlleGVjX3NoZWxsX2NvbW1hbmQoY29tbWFuZCk7CS8qIGRvZXMgbm90IHJldHVy biAqLworCX0KKworCS8qIFBhcmVudCBwcm9jZXNzICovCisJY2xvc2UocGlwZV9mZHNbY2hpbGRf ZmRdKTsKKwlwaXBlX2ZpbGUgPSBmZG9wZW4ocGlwZV9mZHNbcGFyZW50X2ZkXSwgbW9kZSk7CisJ aWYgKHBpcGVfZmlsZSA9PSBOVUxMKQorCXsKKwkJc2F2ZV9lcnJubyA9IGVycm5vOworCQljbG9z ZShwaXBlX2Zkc1twYXJlbnRfZmRdKTsKKwkJZXJybm8gPSBzYXZlX2Vycm5vOworCQlyZXR1cm4g TlVMTDsKKwl9CisKKwkqY2hpbGRfcGlkID0gcGlkOworCXJldHVybiBwaXBlX2ZpbGU7CisjZWxz ZQorCS8qIE9uIFdpbmRvd3MsIGp1c3QgdXNlIHN0YW5kYXJkIHBvcGVuIC0gbm8gUkxJTUlUX05P RklMRSBidW1waW5nIHRoZXJlICovCisJZmZsdXNoKE5VTEwpOworCSpjaGlsZF9waWQgPSAwOwor CXJldHVybiBwb3Blbihjb21tYW5kLCBtb2RlKTsKKyNlbmRpZgorfQorCisvKgorICogcGdfcGNs b3NlIC0gQ2xvc2UgYSBwaXBlIG9wZW5lZCBieSBwZ19wb3BlbigpLgorICoKKyAqIE9uIFVuaXgs IHRoaXMgY2xvc2VzIHRoZSBGSUxFKiBhbmQgd2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzLgor ICogT24gV2luZG93cywgdGhpcyBqdXN0IGNhbGxzIHBjbG9zZSgpLgorICoKKyAqIFJldHVybnMg dGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgKGxpa2UgcGNsb3NlKSwgb3IgLTEgb24gZXJyb3IuCisg Ki8KK3N0YXRpYyBpbnQKK3BnX3BjbG9zZShGSUxFICpmcCwgcGlkX3QgY2hpbGRfcGlkKQorewor I2lmbmRlZiBXSU4zMgorCWludAkJCXN0YXR1czsKKwlwaWRfdAkJd2FpdHJlc3VsdDsKKworCS8q IENsb3NlIHRoZSBGSUxFKiBmaXJzdCAqLworCWlmIChmY2xvc2UoZnApICE9IDApCisJCXJldHVy biAtMTsKKworCS8qIFRoZW4gd2FpdCBmb3IgdGhlIGNoaWxkIHByb2Nlc3MsIGxpa2UgcGNsb3Nl KCkgZG9lcyAqLworCWRvCisJeworCQl3YWl0cmVzdWx0ID0gd2FpdHBpZChjaGlsZF9waWQsICZz dGF0dXMsIDApOworCX0gd2hpbGUgKHdhaXRyZXN1bHQgPT0gKHBpZF90KSAtMSAmJiBlcnJubyA9 PSBFSU5UUik7CisKKwlpZiAod2FpdHJlc3VsdCA9PSBjaGlsZF9waWQpCisJCXJldHVybiBzdGF0 dXM7CisJZWxzZQorCQlyZXR1cm4gLTE7CisjZWxzZQorCSh2b2lkKSBjaGlsZF9waWQ7CQkJLyog dW51c2VkIG9uIFdpbmRvd3MgKi8KKwlyZXR1cm4gcGNsb3NlKGZwKTsKKyNlbmRpZgorfQorCiAv KgogICogUm91dGluZXMgdGhhdCB3YW50IHRvIGluaXRpYXRlIGEgcGlwZSBzdHJlYW0gc2hvdWxk IHVzZSBPcGVuUGlwZVN0cmVhbQogICogcmF0aGVyIHRoYW4gcGxhaW4gcG9wZW4oKS4gIFRoaXMg bGV0cyBmZC5jIGRlYWwgd2l0aCBmcmVlaW5nIEZEcyBpZgpAQCAtMjc0NSw2ICszMTQxLDcgQEAg T3BlblBpcGVTdHJlYW0oY29uc3QgY2hhciAqY29tbWFuZCwgY29uc3QgY2hhciAqbW9kZSkKIHsK IAlGSUxFCSAgICpmaWxlOwogCWludAkJCXNhdmVfZXJybm87CisJcGlkX3QJCWNoaWxkX3BpZDsK IAogCURPX0RCKGVsb2coTE9HLCAiT3BlblBpcGVTdHJlYW06IEFsbG9jYXRlZCAlZCAoJXMpIiwK IAkJCSAgIG51bUFsbG9jYXRlZERlc2NzLCBjb21tYW5kKSk7CkBAIC0yNzYwLDIyICszMTU3LDIx IEBAIE9wZW5QaXBlU3RyZWFtKGNvbnN0IGNoYXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIgKm1vZGUp CiAJUmVsZWFzZUxydUZpbGVzKCk7CiAKIFRyeUFnYWluOgotCWZmbHVzaChOVUxMKTsKLQlwcXNp Z25hbChTSUdQSVBFLCBTSUdfREZMKTsKKwogCWVycm5vID0gMDsKLQlmaWxlID0gcG9wZW4oY29t bWFuZCwgbW9kZSk7CisJZmlsZSA9IHBnX3BvcGVuKGNvbW1hbmQsIG1vZGUsICZjaGlsZF9waWQp OwogCXNhdmVfZXJybm8gPSBlcnJubzsKIAlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQll cnJubyA9IHNhdmVfZXJybm87CiAJaWYgKGZpbGUgIT0gTlVMTCkKIAl7CiAJCUFsbG9jYXRlRGVz YyAqZGVzYyA9ICZhbGxvY2F0ZWREZXNjc1tudW1BbGxvY2F0ZWREZXNjc107CiAKIAkJZGVzYy0+ a2luZCA9IEFsbG9jYXRlRGVzY1BpcGU7Ci0JCWRlc2MtPmRlc2MuZmlsZSA9IGZpbGU7CisJCWRl c2MtPmRlc2MucGlwZS5maWxlID0gZmlsZTsKKwkJZGVzYy0+ZGVzYy5waXBlLnBpZCA9IGNoaWxk X3BpZDsKIAkJZGVzYy0+Y3JlYXRlX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQo KTsKIAkJbnVtQWxsb2NhdGVkRGVzY3MrKzsKLQkJcmV0dXJuIGRlc2MtPmRlc2MuZmlsZTsKKwkJ cmV0dXJuIGRlc2MtPmRlc2MucGlwZS5maWxlOwogCX0KIAogCWlmIChlcnJubyA9PSBFTUZJTEUg fHwgZXJybm8gPT0gRU5GSUxFKQpAQCAtMjgwOCw3ICszMjA0LDcgQEAgRnJlZURlc2MoQWxsb2Nh dGVEZXNjICpkZXNjKQogCQkJcmVzdWx0ID0gZmNsb3NlKGRlc2MtPmRlc2MuZmlsZSk7CiAJCQli cmVhazsKIAkJY2FzZSBBbGxvY2F0ZURlc2NQaXBlOgotCQkJcmVzdWx0ID0gcGNsb3NlKGRlc2Mt PmRlc2MuZmlsZSk7CisJCQlyZXN1bHQgPSBwZ19wY2xvc2UoZGVzYy0+ZGVzYy5waXBlLmZpbGUs IGRlc2MtPmRlc2MucGlwZS5waWQpOwogCQkJYnJlYWs7CiAJCWNhc2UgQWxsb2NhdGVEZXNjRGly OgogCQkJcmVzdWx0ID0gY2xvc2VkaXIoZGVzYy0+ZGVzYy5kaXIpOwpAQCAtMzA2MCw3ICszNDU2 LDcgQEAgQ2xvc2VQaXBlU3RyZWFtKEZJTEUgKmZpbGUpCiAJewogCQlBbGxvY2F0ZURlc2MgKmRl c2MgPSAmYWxsb2NhdGVkRGVzY3NbaV07CiAKLQkJaWYgKGRlc2MtPmtpbmQgPT0gQWxsb2NhdGVE ZXNjUGlwZSAmJiBkZXNjLT5kZXNjLmZpbGUgPT0gZmlsZSkKKwkJaWYgKGRlc2MtPmtpbmQgPT0g QWxsb2NhdGVEZXNjUGlwZSAmJiBkZXNjLT5kZXNjLnBpcGUuZmlsZSA9PSBmaWxlKQogCQkJcmV0 dXJuIEZyZWVEZXNjKGRlc2MpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvdC8w MDFfaW5pdGRiLnBsIGIvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5pdGRiLnBsCmluZGV4IDFlOTU0 M2MyNTg1Li45YTc1OGUyNmZiNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvdC8wMDFfaW5p dGRiLnBsCisrKyBiL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbApAQCAtMTMxLDcgKzEz MSw3IEBAIGlmICgkRU5We3dpdGhfaWN1fSBlcSAneWVzJykKIAkJXSwKIAkJJ29wdGlvbiAtLWlj dS1sb2NhbGUnKTsKIAotCWNvbW1hbmRfbGlrZSgKKwljb21tYW5kX2NoZWNrc19hbGwoCiAJCVsK IAkJCSdpbml0ZGInLCAnLS1uby1zeW5jJywKIAkJCSctLWF1dGgnID0+ICd0cnVzdCcsCkBAIC0x NDUsNyArMTQ1LDkgQEAgaWYgKCRFTlZ7d2l0aF9pY3V9IGVxICd5ZXMnKQogCQkJJy0tbGMtdGlt ZScgPT4gJ0MnLAogCQkJIiR0ZW1wZGlyL2RhdGE0IgogCQldLAotCQlxci9eXHMrZGVmYXVsdCBj b2xsYXRpb246XHMrdW5kXG4vbXMsCisJCTAsCisJCVtxci9eXHMrZGVmYXVsdCBjb2xsYXRpb246 XHMrdW5kXG4vbXNdLAorCQlbXSwgICAgIyBzdGRlcnIgbWF5IGhhdmUgTE9HIG1lc3NhZ2VzCiAJ CSdvcHRpb25zIC0tbG9jYWxlLXByb3ZpZGVyPWljdSAtLWxvY2FsZT11bmQgLS1sYy0qPUMnKTsK IAogCWNvbW1hbmRfZmFpbHNfbGlrZSgKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggYjBiMGNmZGFmNzkuLmJl ZWVlNjEwMTdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9z cmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtMzA3LDYgKzMwNyw5IEBACiAvKiBEZWZpbmUg dG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBhbS9wYW1fYXBwbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1 bmRlZiBIQVZFX1BBTV9QQU1fQVBQTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSBgcGlwZTInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUElQRTIKKwogLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBI QVZFX1BPU0lYX0ZBRFZJU0UKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCmluZGV4IGExYmRlZmVjNGE1Li40NDg0ZDU1N2Mz NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9mZC5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvZmQuaApAQCAtMTg2LDYgKzE4Niw3IEBAIGV4dGVybiBpbnQJcGdfZnN5bmNfd3Jp dGV0aHJvdWdoKGludCBmZCk7CiBleHRlcm4gaW50CXBnX2ZkYXRhc3luYyhpbnQgZmQpOwogZXh0 ZXJuIGJvb2wgcGdfZmlsZV9leGlzdHMoY29uc3QgY2hhciAqbmFtZSk7CiBleHRlcm4gdm9pZCBw Z19mbHVzaF9kYXRhKGludCBmZCwgcGdvZmZfdCBvZmZzZXQsIHBnb2ZmX3QgbmJ5dGVzKTsKK2V4 dGVybiBpbnQJcGdfc3lzdGVtKGNvbnN0IGNoYXIgKmNvbW1hbmQpOwogZXh0ZXJuIGludAlwZ190 cnVuY2F0ZShjb25zdCBjaGFyICpwYXRoLCBwZ29mZl90IGxlbmd0aCk7CiBleHRlcm4gdm9pZCBm c3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2Rpcik7CiBleHRlcm4gaW50CWZz eW5jX2ZuYW1lX2V4dChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgYm9vbCBpZ25vcmVf cGVybSwgaW50IGVsZXZlbCk7CgpiYXNlLWNvbW1pdDogNjQ5ODI4NzY5NmRhZmMxZWJkMzgwZWE0 ZWIyNDkxMjQ5ODkyOTRkMwotLSAKMi41Mi4wCgo= --c17a774fd6978be0d97a585af3604bd263fe608fd2d538a506b2431e0886 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v9-0002-Reflect-the-value-of-max_safe_fds-in-max_files_pe.patch Content-Type: text/x-patch; charset=utf-8; name=v9-0002-Reflect-the-value-of-max_safe_fds-in-max_files_pe.patch RnJvbSA5NGMxOWQzODU3MTAyZGJmNjQ3MGQ2NDI5NWZjMjYzYjZlNjg1NTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDcgRGVjIDIwMjUgMTU6MDY6NTQgKzAxMDAKU3ViamVjdDogW1BBVENIIHY5 IDIvMl0gUmVmbGVjdCB0aGUgdmFsdWUgb2YgbWF4X3NhZmVfZmRzIGluCiBtYXhfZmlsZXNfcGVy X3Byb2Nlc3MKCkl0IGlzIGN1cnJlbnRseSBoYXJkIHRvIGZpZ3VyZSBvdXQgaWYgbWF4X3NhZmVf ZmRzIGlzIHNpZ25pZmljYW50bHkKbG93ZXIgdGhhbiBtYXhfZmlsZXNfcGVyX3Byb2Nlc3MuIFRo aXMgc3RhcnRzIHJlZmxlY3RpbmcgdGhlIHZhbHVlIG9mCm1heF9zYWZlX2ZkcyBpbiBtYXhfZmls ZXNfcGVyX3Byb2Nlc3MgYWZ0ZXIgb3VyIGxpbWl0IGRldGVjdGlvbi4gV2UKc3RpbGwgd2FudCB0 byBoYXZlIHR3byBzZXBhcmF0ZSB2YXJpYWJsZXMgYmVjYXVzZSBmb3IgdGhlIGJvb3RzdHJhcCBv cgpzdGFuZGFsb25lLWJhY2tlbmQgY2FzZXMgdGhlaXIgdmFsdWVzIGRpZmZlciBvbiBwdXJwb3Nl LgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIHwgMTEgKysrKysrKysrKysKIDEg ZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwppbmRleCA0 MDIxMmQ3MzNlOS4uMmQyNzIwN2FiODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9mZC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0xMTc5LDYg KzExNzksNyBAQCBzZXRfbWF4X3NhZmVfZmRzKHZvaWQpCiB7CiAJaW50CQkJdXNhYmxlX2ZkczsK IAlpbnQJCQlhbHJlYWR5X29wZW47CisJY2hhcgkgICAqbWF4X3NhZmVfZmRzX3N0cmluZzsKIAog CS8qLS0tLS0tLS0tLQogCSAqIFdlIHdhbnQgdG8gc2V0IG1heF9zYWZlX2ZkcyB0bwpAQCAtMTE5 NCw2ICsxMTk1LDE2IEBAIHNldF9tYXhfc2FmZV9mZHModm9pZCkKIAogCW1heF9zYWZlX2ZkcyA9 IE1pbih1c2FibGVfZmRzLCBtYXhfZmlsZXNfcGVyX3Byb2Nlc3MpOwogCisJLyoKKwkgKiBVcGRh dGUgR1VDIHZhcmlhYmxlIHRvIGFsbG93IHVzZXJzIHRvIHNlZSBpZiB0aGUgcmVzdWx0IGlzIGRp ZmZlcmVudAorCSAqIHRoYW4gd2hhdCB0aGUgdXNlZCB2YWx1ZSB0dXJucyBvdXQgdG8gYmUgZGlm ZmVyZW50IHRoYW4gd2hhdCB0aGV5IGhhZAorCSAqIGNvbmZpZ3VyZWQuCisJICovCisJbWF4X3Nh ZmVfZmRzX3N0cmluZyA9IHBzcHJpbnRmKCIlZCIsIG1heF9zYWZlX2Zkcyk7CisJU2V0Q29uZmln T3B0aW9uKCJtYXhfZmlsZXNfcGVyX3Byb2Nlc3MiLCBtYXhfc2FmZV9mZHNfc3RyaW5nLAorCQkJ CQlQR0NfUE9TVE1BU1RFUiwgUEdDX1NfT1ZFUlJJREUpOworCXBmcmVlKG1heF9zYWZlX2Zkc19z dHJpbmcpOworCiAJLyoKIAkgKiBUYWtlIG9mZiB0aGUgRkRzIHJlc2VydmVkIGZvciBzeXN0ZW0o KSBldGMuCiAJICovCi0tIAoyLjUyLjAKCg== --c17a774fd6978be0d97a585af3604bd263fe608fd2d538a506b2431e0886--