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.94.2) (envelope-from ) id 1r3mzz-005mcx-Pt for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 00:46:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r3mzy-00ALX4-BF for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 00:46:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r3mzx-00ALWw-KJ for pgsql-hackers@lists.postgresql.org; Fri, 17 Nov 2023 00:46:18 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r3mzt-005wFL-AC for pgsql-hackers@postgresql.org; Fri, 17 Nov 2023 00:46:16 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1cc131e52f1so19724355ad.0 for ; Thu, 16 Nov 2023 16:46:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1700181972; x=1700786772; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=N633MFH4azIiupo4qBjmejFPQTK9bRhMjuS/DS2x1f4=; b=mFyfLvrjw0Teh/HypgI7YuYAO0amv0ynZzKN0DtAmYETRUyhEnU3t6RWkoTQFsoJxV zvIEHu5KINukJl0eSxfVoCxrEgWC6YX+y2xzzP3UCifbR4tG1WjoVUqsLTtiU9MfvXg7 nsKVSXYJFokA1+jasReAkU61IiSFXCaExf0tVghUvIiuvC6q4+YQaqwbDDvAKZ77HYBq vm8AKOjTBARvD1Ce2PJHahwR5KzNC7+Vv+lsCgj4VsILM0V7oTj4Xm3pDpRIph1Avyaq iE5jbkCFz1y+6PCnoRxzkt+Imt+lgGU4vcVaQQEF+1AKmQIMMQBddP1R2qsXrLHWX4rY 21jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700181972; x=1700786772; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=N633MFH4azIiupo4qBjmejFPQTK9bRhMjuS/DS2x1f4=; b=vWetMqVahwjf3cMnsxtIWm5P2bTWNPCrx39KyJU9zB1zPu1wHU7pADUZY8pZQlnFwS GP2DS2nFs87ki5OaSehHwxudMzwbz6loroS6cJi6EfMDb1gNgeUP6w5LtAXn6ZF5JSjb 2BBBcqOXT7HVyiOkJSVdZZVxcZSE0GURXaTGPqijqNqLsL0dj4S9LSlbSqSiT0W75ajf USxGbK0xTD9wbDMwCRuRVZ2v6xIbLpwYY0FOZtbWgJjVcmxJbxr52jgiIfbk7R2EuR8e B3uilF4VTesexEAgN1uHRjtHQiUf0TGL6wn+0o/7IwfdvjmTWTm7a2hLINDwCWLlGXnW xECw== X-Gm-Message-State: AOJu0YwQRfjMDvOXRJwyC/KEljMFRDmAmgrA3mfvZaMmxfiEOzSwau/b yF2KAYVA1JRk8h4V8Jb2Ncbjws0cllNTmF7mm6A= X-Google-Smtp-Source: AGHT+IFaun95xVtmRfJNLonhao+BwaUg/T0y8zlUxYnXEdLYDHUHA0Lr5vvvaExw3ALxeB6/BibmYQ== X-Received: by 2002:a17:902:d505:b0:1c2:193e:1126 with SMTP id b5-20020a170902d50500b001c2193e1126mr4585178plg.28.1700181972025; Thu, 16 Nov 2023 16:46:12 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id jj7-20020a170903048700b001ca21c8abf7sm253981plb.188.2023.11.16.16.46.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Nov 2023 16:46:11 -0800 (PST) Message-ID: Subject: Re: Faster "SET search_path" From: Jeff Davis To: Nathan Bossart Cc: Isaac Morland , pgsql-hackers@postgresql.org Date: Thu, 16 Nov 2023 16:46:10 -0800 In-Reply-To: <695668acc40b937258985669f3d55b94cce82c3c.camel@j-davis.com> References: <04c8592dbd694e4114a3ed87139a7a04e4363030.camel@j-davis.com> <20230802050720.GB866741@nathanxps13> <20230807223908.GB1284531@nathanxps13> <3b2d57ead15798adcbf6a53a15e35cdbadb2c147.camel@j-davis.com> <5bb4d9c21cc918e5d05021bf0d5e0e7d34a0377c.camel@j-davis.com> <695668acc40b937258985669f3d55b94cce82c3c.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-M+YoPHYxHubhzyTGumpw" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-M+YoPHYxHubhzyTGumpw Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2023-11-14 at 20:13 -0800, Jeff Davis wrote: > On Thu, 2023-10-19 at 19:01 -0700, Jeff Davis wrote: > > 0003: Cache for recomputeNamespacePath. >=20 > Committed with some further simplification around the OOM handling. While I considered OOM during hash key initialization, I missed some other potential out-of-memory hazards. Attached a fixup patch 0003, which re-introduces one list copy but it simplifies things substantially in addition to being safer around OOM conditions. > > 0004: Use the same cache to optimize check_search_path(). > > 0005: Optimize cache for repeated lookups of the same value. Also attached new versions of these patches. Regards, Jeff Davis --=-M+YoPHYxHubhzyTGumpw Content-Disposition: attachment; filename*0=v9-0005-Optimize-SearchPathCache-by-saving-the-last-entry.pat; filename*1=ch Content-Type: text/x-patch; name="v9-0005-Optimize-SearchPathCache-by-saving-the-last-entry.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2ZWQwNzg1YzI5YTQzY2NiZDM2YWEzZjliZDNiZTc1MTEzMWE2YmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDE5IE9jdCAyMDIzIDE1OjQ4OjE2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2OSA1LzVdIE9w dGltaXplIFNlYXJjaFBhdGhDYWNoZSBieSBzYXZpbmcgdGhlIGxhc3QgZW50cnkuCgpSZXBlYXRl ZCBsb29rdXBzIGFyZSBjb21tb24sIHNvIGl0J3Mgd29ydGggaXQgdG8gY2hlY2sgdGhlIGxhc3Qg ZW50cnkKYmVmb3JlIGRvaW5nIGFub3RoZXIgaGFzaCBsb29rdXAuCgpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tLzA0Yzg1OTJkYmQ2OTRlNDExNGEzZWQ4NzEzOWE3YTA0ZTQzNjMwMzAu Y2FtZWwlNDBqLWRhdmlzLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMg fCA4OCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 NyBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpp bmRleCAwNzg1ZjJiNzk3Li5mNTQwZGE3ZWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAg LTI0MSw3ICsyNDEsOCBAQCBzdGF0aWMgYm9vbCBNYXRjaE5hbWVkQ2FsbChIZWFwVHVwbGUgcHJv Y3R1cCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywKICAqCiAgKiBUaGUgc2VhcmNoIHBhdGgg Y2FjaGUgaXMgYmFzZWQgb24gYSB3cmFwcGVyIGFyb3VuZCBhIHNpbXBsZWhhc2ggaGFzaCB0YWJs ZQogICogKG5zcGhhc2gsIGRlZmluZWQgYmVsb3cpLiBUaGUgc3BjYWNoZSB3cmFwcGVyIGRlYWxz IHdpdGggT09NIHdoaWxlIHRyeWluZwotICogdG8gaW5pdGlhbGl6ZSBhIGtleSwgYW5kIGFsc28g b2ZmZXJzIGEgbW9yZSBjb252ZW5pZW50IEFQSS4KKyAqIHRvIGluaXRpYWxpemUgYSBrZXksIG9w dGltaXplcyByZXBlYXRlZCBsb29rdXBzIG9mIHRoZSBzYW1lIGtleSwgYW5kIGFsc28KKyAqIG9m ZmVycyBhIG1vcmUgY29udmVuaWVudCBBUEkuCiAgKi8KIAogc3RhdGljIGlubGluZSB1aW50MzIK QEAgLTI4MSw2ICsyODIsNyBAQCBzcGNhY2hla2V5X2VxdWFsKFNlYXJjaFBhdGhDYWNoZUtleSBh LCBTZWFyY2hQYXRoQ2FjaGVLZXkgYikKICNkZWZpbmUgU1BDQUNIRV9SRVNFVF9USFJFU0hPTEQJ CTI1NgogCiBzdGF0aWMgbnNwaGFzaF9oYXNoICogU2VhcmNoUGF0aENhY2hlID0gTlVMTDsKK3N0 YXRpYyBTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqIExhc3RTZWFyY2hQYXRoQ2FjaGVFbnRyeSA9IE5V TEw7CiAKIC8qCiAgKiBDcmVhdGUgb3IgcmVzZXQgc2VhcmNoX3BhdGggY2FjaGUgYXMgbmVjZXNz YXJ5LgpAQCAtMjk1LDYgKzI5Nyw3IEBAIHNwY2FjaGVfaW5pdCh2b2lkKQogCQkJcmV0dXJuOwog CiAJTWVtb3J5Q29udGV4dFJlc2V0KFNlYXJjaFBhdGhDYWNoZUNvbnRleHQpOworCUxhc3RTZWFy Y2hQYXRoQ2FjaGVFbnRyeSA9IE5VTEw7CiAJLyogYXJiaXRyYXJ5IGluaXRpYWwgc3RhcnRpbmcg c2l6ZSBvZiAxNiBlbGVtZW50cyAqLwogCVNlYXJjaFBhdGhDYWNoZSA9IG5zcGhhc2hfY3JlYXRl KFNlYXJjaFBhdGhDYWNoZUNvbnRleHQsIDE2LCBOVUxMKTsKIAlzZWFyY2hQYXRoQ2FjaGVWYWxp ZCA9IHRydWU7CkBAIC0zMDcsMTIgKzMxMCwyNSBAQCBzcGNhY2hlX2luaXQodm9pZCkKIHN0YXRp YyBTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqCiBzcGNhY2hlX2xvb2t1cChjb25zdCBjaGFyICpzZWFy Y2hQYXRoLCBPaWQgcm9sZWlkKQogewotCVNlYXJjaFBhdGhDYWNoZUtleSBjYWNoZWtleSA9IHsK LQkJLnNlYXJjaFBhdGggPSBzZWFyY2hQYXRoLAotCQkucm9sZWlkID0gcm9sZWlkCi0JfTsKKwlp ZiAoTGFzdFNlYXJjaFBhdGhDYWNoZUVudHJ5ICYmCisJCUxhc3RTZWFyY2hQYXRoQ2FjaGVFbnRy eS0+a2V5LnJvbGVpZCA9PSByb2xlaWQgJiYKKwkJc3RyY21wKExhc3RTZWFyY2hQYXRoQ2FjaGVF bnRyeS0+a2V5LnNlYXJjaFBhdGgsIHNlYXJjaFBhdGgpID09IDApCisJeworCQlyZXR1cm4gTGFz dFNlYXJjaFBhdGhDYWNoZUVudHJ5OworCX0KKwllbHNlCisJeworCQlTZWFyY2hQYXRoQ2FjaGVF bnRyeSAqZW50cnk7CisJCVNlYXJjaFBhdGhDYWNoZUtleSBjYWNoZWtleSA9IHsKKwkJCS5zZWFy Y2hQYXRoID0gc2VhcmNoUGF0aCwKKwkJCS5yb2xlaWQgPSByb2xlaWQKKwkJfTsKKworCQllbnRy eSA9IG5zcGhhc2hfbG9va3VwKFNlYXJjaFBhdGhDYWNoZSwgY2FjaGVrZXkpOwogCi0JcmV0dXJu IG5zcGhhc2hfbG9va3VwKFNlYXJjaFBhdGhDYWNoZSwgY2FjaGVrZXkpOworCQlMYXN0U2VhcmNo UGF0aENhY2hlRW50cnkgPSBlbnRyeTsKKwkJcmV0dXJuIGVudHJ5OworCX0KIH0KIAogLyoKQEAg LTMyNCwzNSArMzQwLDQ1IEBAIHNwY2FjaGVfbG9va3VwKGNvbnN0IGNoYXIgKnNlYXJjaFBhdGgs IE9pZCByb2xlaWQpCiBzdGF0aWMgU2VhcmNoUGF0aENhY2hlRW50cnkgKgogc3BjYWNoZV9pbnNl cnQoY29uc3QgY2hhciAqc2VhcmNoUGF0aCwgT2lkIHJvbGVpZCkKIHsKLQlTZWFyY2hQYXRoQ2Fj aGVFbnRyeSAqZW50cnk7Ci0JU2VhcmNoUGF0aENhY2hlS2V5IGNhY2hla2V5ID0gewotCQkuc2Vh cmNoUGF0aCA9IHNlYXJjaFBhdGgsCi0JCS5yb2xlaWQgPSByb2xlaWQKLQl9OwotCi0JLyoKLQkg KiBzZWFyY2hQYXRoIGlzIG5vdCBzYXZlZCBpbiBTZWFyY2hQYXRoQ2FjaGVDb250ZXh0LiBGaXJz dCBwZXJmb3JtIGEKLQkgKiBsb29rdXAsIGFuZCBjb3B5IHNlYXJjaFBhdGggb25seSBpZiB3ZSBu ZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeS4KLQkgKi8KLQllbnRyeSA9IG5zcGhhc2hfbG9va3Vw KFNlYXJjaFBhdGhDYWNoZSwgY2FjaGVrZXkpOwotCi0JaWYgKCFlbnRyeSkKKwlpZiAoTGFzdFNl YXJjaFBhdGhDYWNoZUVudHJ5ICYmCisJCUxhc3RTZWFyY2hQYXRoQ2FjaGVFbnRyeS0+a2V5LnJv bGVpZCA9PSByb2xlaWQgJiYKKwkJc3RyY21wKExhc3RTZWFyY2hQYXRoQ2FjaGVFbnRyeS0+a2V5 LnNlYXJjaFBhdGgsIHNlYXJjaFBhdGgpID09IDApCiAJewotCQlib29sCQlmb3VuZDsKKwkJcmV0 dXJuIExhc3RTZWFyY2hQYXRoQ2FjaGVFbnRyeTsKKwl9CisJZWxzZQorCXsKKwkJU2VhcmNoUGF0 aENhY2hlRW50cnkgKmVudHJ5OworCQlTZWFyY2hQYXRoQ2FjaGVLZXkgY2FjaGVrZXkgPSB7CisJ CQkuc2VhcmNoUGF0aCA9IHNlYXJjaFBhdGgsCisJCQkucm9sZWlkID0gcm9sZWlkCisJCX07CiAK LQkJY2FjaGVrZXkuc2VhcmNoUGF0aCA9IE1lbW9yeUNvbnRleHRTdHJkdXAoU2VhcmNoUGF0aENh Y2hlQ29udGV4dCwgc2VhcmNoUGF0aCk7Ci0JCWVudHJ5ID0gbnNwaGFzaF9pbnNlcnQoU2VhcmNo UGF0aENhY2hlLCBjYWNoZWtleSwgJmZvdW5kKTsKLQkJQXNzZXJ0KCFmb3VuZCk7CisJCS8qCisJ CSAqIHNlYXJjaFBhdGggaXMgbm90IHNhdmVkIGluIFNlYXJjaFBhdGhDYWNoZUNvbnRleHQuIEZp cnN0IHBlcmZvcm0gYQorCQkgKiBsb29rdXAsIGFuZCBjb3B5IHNlYXJjaFBhdGggb25seSBpZiB3 ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeS4KKwkJICovCisJCWVudHJ5ID0gbnNwaGFzaF9s b29rdXAoU2VhcmNoUGF0aENhY2hlLCBjYWNoZWtleSk7CiAKLQkJZW50cnktPm9pZGxpc3QgPSBO SUw7Ci0JCWVudHJ5LT5maW5hbFBhdGggPSBOSUw7Ci0JCWVudHJ5LT5maXJzdE5TID0gSW52YWxp ZE9pZDsKLQkJZW50cnktPnRlbXBfbWlzc2luZyA9IGZhbHNlOwotCQllbnRyeS0+Zm9yY2VSZWNv bXB1dGUgPSBmYWxzZTsKLQkJLyogZG8gbm90IHRvdWNoIGVudHJ5LT5zdGF0dXMsIHVzZWQgYnkg c2ltcGxlaGFzaCAqLwotCX0KKwkJaWYgKCFlbnRyeSkKKwkJeworCQkJYm9vbAkJZm91bmQ7CisK KwkJCWNhY2hla2V5LnNlYXJjaFBhdGggPSBNZW1vcnlDb250ZXh0U3RyZHVwKFNlYXJjaFBhdGhD YWNoZUNvbnRleHQsIHNlYXJjaFBhdGgpOworCQkJZW50cnkgPSBuc3BoYXNoX2luc2VydChTZWFy Y2hQYXRoQ2FjaGUsIGNhY2hla2V5LCAmZm91bmQpOworCQkJQXNzZXJ0KCFmb3VuZCk7CisKKwkJ CWVudHJ5LT5vaWRsaXN0ID0gTklMOworCQkJZW50cnktPmZpbmFsUGF0aCA9IE5JTDsKKwkJCWVu dHJ5LT5maXJzdE5TID0gSW52YWxpZE9pZDsKKwkJCWVudHJ5LT50ZW1wX21pc3NpbmcgPSBmYWxz ZTsKKwkJCWVudHJ5LT5mb3JjZVJlY29tcHV0ZSA9IGZhbHNlOworCQkJLyogZG8gbm90IHRvdWNo IGVudHJ5LT5zdGF0dXMsIHVzZWQgYnkgc2ltcGxlaGFzaCAqLworCQl9CiAKLQlyZXR1cm4gZW50 cnk7CisJCUxhc3RTZWFyY2hQYXRoQ2FjaGVFbnRyeSA9IGVudHJ5OworCQlyZXR1cm4gZW50cnk7 CisJfQogfQogCiAvKgotLSAKMi4zNC4xCgo= --=-M+YoPHYxHubhzyTGumpw Content-Disposition: attachment; filename*0=v9-0004-Optimize-check_search_path-by-using-SearchPathCac.pat; filename*1=ch Content-Type: text/x-patch; name="v9-0004-Optimize-check_search_path-by-using-SearchPathCac.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlN2ViNjE2Y2VhMDFmNTc1NDE3ZjU2NjE1ZWRiOWJkMjRiZmMyNDUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDE5IE9jdCAyMDIzIDE1OjE5OjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2OSA0LzVdIE9w dGltaXplIGNoZWNrX3NlYXJjaF9wYXRoKCkgYnkgdXNpbmcgU2VhcmNoUGF0aENhY2hlLgoKQSBo YXNoIGxvb2t1cCBpcyBmYXN0ZXIgdGhhbiByZS12YWxpZGF0aW5nIHRoZSBzdHJpbmcsIHBhcnRp Y3VsYXJseQpiZWNhdXNlIHdlIHVzZSBTcGxpdElkZW50aWZpZXJTdHJpbmcoKSBmb3IgdmFsaWRh dGlvbi4KCkltcG9ydGFudCB3aGVuIHNlYXJjaF9wYXRoIGNoYW5nZXMgZnJlcXVlbnRseS4KCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMDRjODU5MmRiZDY5NGU0MTE0YTNlZDg3MTM5 YTdhMDRlNDM2MzAzMC5jYW1lbCU0MGotZGF2aXMuY29tCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9uYW1lc3BhY2UuYyB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBm aWxlIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv bmFtZXNwYWNlLmMKaW5kZXggMWE3NWI1MDgwNy4uMDc4NWYyYjc5NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25h bWVzcGFjZS5jCkBAIC0yMzUsNiArMjM1LDEwIEBAIHN0YXRpYyBib29sIE1hdGNoTmFtZWRDYWxs KEhlYXBUdXBsZSBwcm9jdHVwLCBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLAogICogd2hlbiBh IGZ1bmN0aW9uIGhhcyBzZWFyY2hfcGF0aCBzZXQgaW4gcHJvY29uZmlnLiBBZGQgYSBzZWFyY2gg cGF0aCBjYWNoZQogICogdGhhdCBjYW4gYmUgdXNlZCBieSByZWNvbXB1dGVOYW1lc3BhY2VQYXRo KCkuCiAgKgorICogVGhlIGNhY2hlIGlzIGFsc28gdXNlZCB0byByZW1lbWJlciBhbHJlYWR5LXZh bGlkYXRlZCBzdHJpbmdzIGluCisgKiBjaGVja19zZWFyY2hfcGF0aCgpIHRvIGF2b2lkIHRoZSBu ZWVkIHRvIGNhbGwgU3BsaXRJZGVudGlmaWVyU3RyaW5nKCkKKyAqIHJlcGVhdGVkbHkuCisgKgog ICogVGhlIHNlYXJjaCBwYXRoIGNhY2hlIGlzIGJhc2VkIG9uIGEgd3JhcHBlciBhcm91bmQgYSBz aW1wbGVoYXNoIGhhc2ggdGFibGUKICAqIChuc3BoYXNoLCBkZWZpbmVkIGJlbG93KS4gVGhlIHNw Y2FjaGUgd3JhcHBlciBkZWFscyB3aXRoIE9PTSB3aGlsZSB0cnlpbmcKICAqIHRvIGluaXRpYWxp emUgYSBrZXksIGFuZCBhbHNvIG9mZmVycyBhIG1vcmUgY29udmVuaWVudCBBUEkuCkBAIC0yOTYs NiArMzAwLDIxIEBAIHNwY2FjaGVfaW5pdCh2b2lkKQogCXNlYXJjaFBhdGhDYWNoZVZhbGlkID0g dHJ1ZTsKIH0KIAorLyoKKyAqIExvb2sgdXAgZW50cnkgaW4gc2VhcmNoIHBhdGggY2FjaGUgd2l0 aG91dCBpbnNlcnRpbmcuIFJldHVybnMgTlVMTCBpZiBub3QKKyAqIHByZXNlbnQuCisgKi8KK3N0 YXRpYyBTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqCitzcGNhY2hlX2xvb2t1cChjb25zdCBjaGFyICpz ZWFyY2hQYXRoLCBPaWQgcm9sZWlkKQoreworCVNlYXJjaFBhdGhDYWNoZUtleSBjYWNoZWtleSA9 IHsKKwkJLnNlYXJjaFBhdGggPSBzZWFyY2hQYXRoLAorCQkucm9sZWlkID0gcm9sZWlkCisJfTsK KworCXJldHVybiBuc3BoYXNoX2xvb2t1cChTZWFyY2hQYXRoQ2FjaGUsIGNhY2hla2V5KTsKK30K KwogLyoKICAqIExvb2sgdXAgb3IgaW5zZXJ0IGVudHJ5IGluIHNlYXJjaCBwYXRoIGNhY2hlLgog ICoKQEAgLTQ1NzcsMTEgKzQ1OTYsMzkgQEAgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCkK IGJvb2wKIGNoZWNrX3NlYXJjaF9wYXRoKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3Vj U291cmNlIHNvdXJjZSkKIHsKKwlPaWQJCQlyb2xlaWQgPSBJbnZhbGlkT2lkOworCWNvbnN0IGNo YXIgKnNlYXJjaFBhdGggPSAqbmV3dmFsOwogCWNoYXIJICAgKnJhd25hbWU7CiAJTGlzdAkgICAq bmFtZWxpc3Q7CiAKLQkvKiBOZWVkIGEgbW9kaWZpYWJsZSBjb3B5IG9mIHN0cmluZyAqLwotCXJh d25hbWUgPSBwc3RyZHVwKCpuZXd2YWwpOworCS8qCisJICogV2UgdXNlZCB0byB0cnkgdG8gY2hl Y2sgdGhhdCB0aGUgbmFtZWQgc2NoZW1hcyBleGlzdCwgYnV0IHRoZXJlIGFyZQorCSAqIG1hbnkg dmFsaWQgdXNlLWNhc2VzIGZvciBoYXZpbmcgc2VhcmNoX3BhdGggc2V0dGluZ3MgdGhhdCBpbmNs dWRlCisJICogc2NoZW1hcyB0aGF0IGRvbid0IGV4aXN0OyBhbmQgb2Z0ZW4sIHdlIGFyZSBub3Qg aW5zaWRlIGEgdHJhbnNhY3Rpb24KKwkgKiBoZXJlIGFuZCBzbyBjYW4ndCBjb25zdWx0IHRoZSBz eXN0ZW0gY2F0YWxvZ3MgYW55d2F5LiAgU28gbm93LCB0aGUgb25seQorCSAqIHJlcXVpcmVtZW50 IGlzIHN5bnRhY3RpYyB2YWxpZGl0eSBvZiB0aGUgaWRlbnRpZmllciBsaXN0LgorCSAqLworCisJ LyoKKwkgKiBDaGVja2luZyBvbmx5IHRoZSBzeW50YWN0aWMgdmFsaWRpdHkgYWxzbyBhbGxvd3Mg dXMgdG8gdXNlIHRoZSBzZWFyY2gKKwkgKiBwYXRoIGNhY2hlIChpZiBhdmFpbGFibGUpIHRvIGF2 b2lkIGNhbGxpbmcgU3BsaXRJZGVudGlmaWVyU3RyaW5nKCkgb24KKwkgKiB0aGUgc2FtZSBzdHJp bmcgcmVwZWF0ZWRseS4KKwkgKi8KKwlpZiAoU2VhcmNoUGF0aENhY2hlQ29udGV4dCAhPSBOVUxM KQorCXsKKwkJc3BjYWNoZV9pbml0KCk7CisKKwkJcm9sZWlkID0gR2V0VXNlcklkKCk7CisKKwkJ aWYgKHNwY2FjaGVfbG9va3VwKHNlYXJjaFBhdGgsIHJvbGVpZCkgIT0gTlVMTCkKKwkJCXJldHVy biB0cnVlOworCX0KKworCS8qCisJICogRW5zdXJlIHZhbGlkaXR5IGNoZWNrIHN1Y2NlZWRzIGJl Zm9yZSBjcmVhdGluZyBjYWNoZSBlbnRyeS4KKwkgKi8KKworCXJhd25hbWUgPSBwc3RyZHVwKHNl YXJjaFBhdGgpOwkvKiBuZWVkIGEgbW9kaWZpYWJsZSBjb3B5ICovCiAKIAkvKiBQYXJzZSBzdHJp bmcgaW50byBsaXN0IG9mIGlkZW50aWZpZXJzICovCiAJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJp bmcocmF3bmFtZSwgJywnLCAmbmFtZWxpc3QpKQpAQCAtNDYwNCw2ICs0NjUxLDEwIEBAIGNoZWNr X3NlYXJjaF9wYXRoKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJj ZSkKIAlwZnJlZShyYXduYW1lKTsKIAlsaXN0X2ZyZWUobmFtZWxpc3QpOwogCisJLyogY3JlYXRl IGVtcHR5IGNhY2hlIGVudHJ5ICovCisJaWYgKFNlYXJjaFBhdGhDYWNoZUNvbnRleHQgIT0gTlVM TCkKKwkJKHZvaWQpIHNwY2FjaGVfaW5zZXJ0KHNlYXJjaFBhdGgsIHJvbGVpZCk7CisKIAlyZXR1 cm4gdHJ1ZTsKIH0KIAotLSAKMi4zNC4xCgo= --=-M+YoPHYxHubhzyTGumpw Content-Disposition: attachment; filename*0=v9-0003-Be-more-paranoid-about-OOM-when-changing-search_p.pat; filename*1=ch Content-Type: text/x-patch; name="v9-0003-Be-more-paranoid-about-OOM-when-changing-search_p.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4ZDg3MDc1NWI2MzhhMTkzYTQwMjI5MmYyNjVjYjdlMmY3OGFlNDMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDE2IE5vdiAyMDIzIDEyOjEyOjQ5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2OSAzLzVdIEJl IG1vcmUgcGFyYW5vaWQgYWJvdXQgT09NIHdoZW4gY2hhbmdpbmcgc2VhcmNoX3BhdGguCgpDb21t aXQgZjI2YzIzNjhkYyBpbnRyb2R1Y2VkIGEgc2VhcmNoX3BhdGggY2FjaGUsIGFuZCBsZWZ0IHNv bWUgcm9vbQpmb3IgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggb3V0LW9mLW1lbW9yeSBjb25kaXRp b25zLgoKVGhpcyBjaGFuZ2UgcmUtaW50cm9kdWNlcyBvbmUgbGlzdF9jb3B5KCksIGJ1dCBzaW1w bGlmaWVzIHRoaW5ncwpzdWJzdGFudGlhbGx5IGluIGFkZGl0aW9uIHRvIGJldHRlciBoYW5kbGlu ZyBPT00uCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyB8IDExOCArKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMo KyksIDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCmluZGV4IDY5ZGJlNDUw MGYuLjFhNzViNTA4MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtMjc5LDQyICsyNzks MjMgQEAgc3BjYWNoZWtleV9lcXVhbChTZWFyY2hQYXRoQ2FjaGVLZXkgYSwgU2VhcmNoUGF0aENh Y2hlS2V5IGIpCiBzdGF0aWMgbnNwaGFzaF9oYXNoICogU2VhcmNoUGF0aENhY2hlID0gTlVMTDsK IAogLyoKLSAqIENyZWF0ZSBzZWFyY2ggcGF0aCBjYWNoZS4KKyAqIENyZWF0ZSBvciByZXNldCBz ZWFyY2hfcGF0aCBjYWNoZSBhcyBuZWNlc3NhcnkuCiAgKi8KIHN0YXRpYyB2b2lkCiBzcGNhY2hl X2luaXQodm9pZCkKIHsKIAlBc3NlcnQoU2VhcmNoUGF0aENhY2hlQ29udGV4dCk7CiAKLQlpZiAo U2VhcmNoUGF0aENhY2hlKQotCQlyZXR1cm47CisJaWYgKFNlYXJjaFBhdGhDYWNoZSAmJiBzZWFy Y2hQYXRoQ2FjaGVWYWxpZCAmJgorCQlTZWFyY2hQYXRoQ2FjaGUtPm1lbWJlcnMgPCBTUENBQ0hF X1JFU0VUX1RIUkVTSE9MRCkKKwkJCXJldHVybjsKIAorCU1lbW9yeUNvbnRleHRSZXNldChTZWFy Y2hQYXRoQ2FjaGVDb250ZXh0KTsKIAkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzdGFydGluZyBzaXpl IG9mIDE2IGVsZW1lbnRzICovCiAJU2VhcmNoUGF0aENhY2hlID0gbnNwaGFzaF9jcmVhdGUoU2Vh cmNoUGF0aENhY2hlQ29udGV4dCwgMTYsIE5VTEwpOwogCXNlYXJjaFBhdGhDYWNoZVZhbGlkID0g dHJ1ZTsKIH0KIAotLyoKLSAqIFJlc2V0IGFuZCByZWluaXRpYWxpemUgc2VhcmNoIHBhdGggY2Fj aGUuCi0gKi8KLXN0YXRpYyB2b2lkCi1zcGNhY2hlX3Jlc2V0KHZvaWQpCi17Ci0JQXNzZXJ0KFNl YXJjaFBhdGhDYWNoZUNvbnRleHQpOwotCUFzc2VydChTZWFyY2hQYXRoQ2FjaGUpOwotCi0JTWVt b3J5Q29udGV4dFJlc2V0KFNlYXJjaFBhdGhDYWNoZUNvbnRleHQpOwotCVNlYXJjaFBhdGhDYWNo ZSA9IE5VTEw7Ci0KLQlzcGNhY2hlX2luaXQoKTsKLX0KLQotc3RhdGljIHVpbnQzMgotc3BjYWNo ZV9tZW1iZXJzKHZvaWQpCi17Ci0JcmV0dXJuIFNlYXJjaFBhdGhDYWNoZS0+bWVtYmVyczsKLX0K LQogLyoKICAqIExvb2sgdXAgb3IgaW5zZXJ0IGVudHJ5IGluIHNlYXJjaCBwYXRoIGNhY2hlLgog ICoKQEAgLTMyNSwyNyArMzA2LDI1IEBAIHN0YXRpYyBTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqCiBz cGNhY2hlX2luc2VydChjb25zdCBjaGFyICpzZWFyY2hQYXRoLCBPaWQgcm9sZWlkKQogewogCVNl YXJjaFBhdGhDYWNoZUVudHJ5ICplbnRyeTsKLQlib29sCQlmb3VuZDsKIAlTZWFyY2hQYXRoQ2Fj aGVLZXkgY2FjaGVrZXkgPSB7CiAJCS5zZWFyY2hQYXRoID0gc2VhcmNoUGF0aCwKIAkJLnJvbGVp ZCA9IHJvbGVpZAogCX07CiAKIAkvKgotCSAqIElmIGEgbmV3IGVudHJ5IGlzIGNyZWF0ZWQsIHdl IG11c3QgZW5zdXJlIHRoYXQgaXQncyBwcm9wZXJseQotCSAqIGluaXRpYWxpemVkLiBTZXQgdGhl IGNhY2hlIGludmFsaWQgdGVtcG9yYXJpbHksIHNvIHRoYXQgaWYgdGhlCi0JICogTWVtb3J5Q29u dGV4dFN0cmR1cCgpIGJlbG93IHJhaXNlcyBhbiBPT00sIHRoZSBjYWNoZSB3aWxsIGJlIHJlc2V0 IG9uCi0JICogdGhlIG5leHQgdXNlLCBjbGVhcmluZyB0aGUgdW5pbml0aWFsaXplZCBlbnRyeS4K KwkgKiBzZWFyY2hQYXRoIGlzIG5vdCBzYXZlZCBpbiBTZWFyY2hQYXRoQ2FjaGVDb250ZXh0LiBG aXJzdCBwZXJmb3JtIGEKKwkgKiBsb29rdXAsIGFuZCBjb3B5IHNlYXJjaFBhdGggb25seSBpZiB3 ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeS4KIAkgKi8KLQlzZWFyY2hQYXRoQ2FjaGVWYWxp ZCA9IGZhbHNlOworCWVudHJ5ID0gbnNwaGFzaF9sb29rdXAoU2VhcmNoUGF0aENhY2hlLCBjYWNo ZWtleSk7CiAKLQllbnRyeSA9IG5zcGhhc2hfaW5zZXJ0KFNlYXJjaFBhdGhDYWNoZSwgY2FjaGVr ZXksICZmb3VuZCk7Ci0KLQkvKiBlbnN1cmUgdGhhdCBrZXkgaXMgaW5pdGlhbGl6ZWQgYW5kIHRo ZSByZXN0IGlzIHplcm9lZCAqLwotCWlmICghZm91bmQpCisJaWYgKCFlbnRyeSkKIAl7Ci0JCWVu dHJ5LT5rZXkuc2VhcmNoUGF0aCA9IE1lbW9yeUNvbnRleHRTdHJkdXAoU2VhcmNoUGF0aENhY2hl Q29udGV4dCwgc2VhcmNoUGF0aCk7Ci0JCWVudHJ5LT5rZXkucm9sZWlkID0gcm9sZWlkOworCQli b29sCQlmb3VuZDsKKworCQljYWNoZWtleS5zZWFyY2hQYXRoID0gTWVtb3J5Q29udGV4dFN0cmR1 cChTZWFyY2hQYXRoQ2FjaGVDb250ZXh0LCBzZWFyY2hQYXRoKTsKKwkJZW50cnkgPSBuc3BoYXNo X2luc2VydChTZWFyY2hQYXRoQ2FjaGUsIGNhY2hla2V5LCAmZm91bmQpOworCQlBc3NlcnQoIWZv dW5kKTsKKwogCQllbnRyeS0+b2lkbGlzdCA9IE5JTDsKIAkJZW50cnktPmZpbmFsUGF0aCA9IE5J TDsKIAkJZW50cnktPmZpcnN0TlMgPSBJbnZhbGlkT2lkOwpAQCAtMzU0LDcgKzMzMyw2IEBAIHNw Y2FjaGVfaW5zZXJ0KGNvbnN0IGNoYXIgKnNlYXJjaFBhdGgsIE9pZCByb2xlaWQpCiAJCS8qIGRv IG5vdCB0b3VjaCBlbnRyeS0+c3RhdHVzLCB1c2VkIGJ5IHNpbXBsZWhhc2ggKi8KIAl9CiAKLQlz ZWFyY2hQYXRoQ2FjaGVWYWxpZCA9IHRydWU7CiAJcmV0dXJuIGVudHJ5OwogfQogCkBAIC00MTgz LDMxICs0MTYxLDE1IEBAIGZpbmFsTmFtZXNwYWNlUGF0aChMaXN0ICpvaWRsaXN0LCBPaWQgKmZp cnN0TlMpCiAvKgogICogUmV0cmlldmUgc2VhcmNoIHBhdGggaW5mb3JtYXRpb24gZnJvbSB0aGUg Y2FjaGU7IG9yIGlmIG5vdCB0aGVyZSwgZmlsbAogICogaXQuIFRoZSByZXR1cm5lZCBlbnRyeSBp cyB2YWxpZCBvbmx5IHVudGlsIHRoZSBuZXh0IGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4KLSAqCi0g KiBXZSBhbHNvIGRldGVybWluZSBpZiB0aGUgbmV3bHktY29tcHV0ZWQgZmluYWxQYXRoIGlzIHRo ZSBzYW1lIGFzIHRoZQotICogcHJldlBhdGggcGFzc2VkIGJ5IHRoZSBjYWxsZXIgKGkuZS4gYSBu by1vcCBvciBhIHJlYWwgY2hhbmdlPykuIEl0J3MgbW9yZQotICogZWZmaWNpZW50IHRvIGNoZWNr IGZvciBhIGNoYW5nZSBpbiB0aGlzIGZ1bmN0aW9uIHRoYW4gdGhlIGNhbGxlciwgYmVjYXVzZQot ICogd2UgY2FuIGF2b2lkIHVubmVjZXNzYXJ5IHRlbXBvcmFyeSBjb3BpZXMgb2YgdGhlIHByZXZp b3VzIHBhdGguCiAgKi8KIHN0YXRpYyBjb25zdCBTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqCi1jYWNo ZWROYW1lc3BhY2VQYXRoKGNvbnN0IGNoYXIgKnNlYXJjaFBhdGgsIE9pZCByb2xlaWQsIExpc3Qg KnByZXZQYXRoLAotCQkJCQlib29sICpzYW1lKQorY2FjaGVkTmFtZXNwYWNlUGF0aChjb25zdCBj aGFyICpzZWFyY2hQYXRoLCBPaWQgcm9sZWlkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY3h0Owog CVNlYXJjaFBhdGhDYWNoZUVudHJ5ICplbnRyeTsKLQlMaXN0CSAgICpwcmV2UGF0aENvcHkgPSBO SUw7CiAKIAlzcGNhY2hlX2luaXQoKTsKIAotCS8qIGludmFsaWRhdGUgY2FjaGUgaWYgbmVjZXNz YXJ5ICovCi0JaWYgKCFzZWFyY2hQYXRoQ2FjaGVWYWxpZCB8fCBzcGNhY2hlX21lbWJlcnMoKSA+ PSBTUENBQ0hFX1JFU0VUX1RIUkVTSE9MRCkKLQl7Ci0JCS8qIHByZXZQYXRoIHdpbGwgYmUgZGVz dHJveWVkOyBtYWtlIHRlbXAgY29weSBmb3IgbGF0ZXIgY29tcGFyaXNvbiAqLwotCQlwcmV2UGF0 aENvcHkgPSBsaXN0X2NvcHkocHJldlBhdGgpOwotCQlwcmV2UGF0aCA9IHByZXZQYXRoQ29weTsK LQkJc3BjYWNoZV9yZXNldCgpOwotCX0KLQogCWVudHJ5ID0gc3BjYWNoZV9pbnNlcnQoc2VhcmNo UGF0aCwgcm9sZWlkKTsKIAogCS8qCkBAIC00MjMyLDIzICs0MTk0LDE0IEBAIGNhY2hlZE5hbWVz cGFjZVBhdGgoY29uc3QgY2hhciAqc2VhcmNoUGF0aCwgT2lkIHJvbGVpZCwgTGlzdCAqcHJldlBh dGgsCiAJaWYgKGVudHJ5LT5maW5hbFBhdGggPT0gTklMIHx8IG9iamVjdF9hY2Nlc3NfaG9vayB8 fAogCQllbnRyeS0+Zm9yY2VSZWNvbXB1dGUpCiAJewotCQkvKgotCQkgKiBEbyBub3QgZnJlZSB0 aGUgc3RhbGUgdmFsdWUgb2YgZW50cnktPmZpbmFsUGF0aCB1bnRpbCB3ZSd2ZQotCQkgKiBwZXJm b3JtZWQgdGhlIGNvbXBhcmlzb24sIGluIGNhc2UgaXQncyBhbGlhc2VkIGJ5IHByZXZQYXRoICh3 aGljaAotCQkgKiBjYW4gb25seSBoYXBwZW4gd2hlbiByZWNvbXB1dGluZyBkdWUgdG8gYW4gb2Jq ZWN0X2FjY2Vzc19ob29rKS4KLQkJICovCi0JCUxpc3QJICAgKmZpbmFsUGF0aDsKKwkJbGlzdF9m cmVlKGVudHJ5LT5maW5hbFBhdGgpOworCQllbnRyeS0+ZmluYWxQYXRoID0gTklMOwogCiAJCW9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZWFyY2hQYXRoQ2FjaGVDb250ZXh0KTsKLQkJ ZmluYWxQYXRoID0gZmluYWxOYW1lc3BhY2VQYXRoKGVudHJ5LT5vaWRsaXN0LAotCQkJCQkJCQkJ ICAgJmVudHJ5LT5maXJzdE5TKTsKKwkJZW50cnktPmZpbmFsUGF0aCA9IGZpbmFsTmFtZXNwYWNl UGF0aChlbnRyeS0+b2lkbGlzdCwKKwkJCQkJCQkJCQkJICAmZW50cnktPmZpcnN0TlMpOwogCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAotCQkqc2FtZSA9IGVxdWFsKHByZXZQYXRo LCBmaW5hbFBhdGgpOwotCi0JCWxpc3RfZnJlZShlbnRyeS0+ZmluYWxQYXRoKTsKLQkJZW50cnkt PmZpbmFsUGF0aCA9IGZpbmFsUGF0aDsKLQogCQkvKgogCQkgKiBJZiBhbiBvYmplY3RfYWNjZXNz X2hvb2sgc2V0IHdoZW4gZmluYWxQYXRoIGlzIGNhbGN1bGF0ZWQsIHRoZQogCQkgKiByZXN1bHQg bWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBob29rLiBGb3JjZSByZWNvbXB1dGF0aW9uIG9mCkBAIC00 MjU3LDEzICs0MjEwLDYgQEAgY2FjaGVkTmFtZXNwYWNlUGF0aChjb25zdCBjaGFyICpzZWFyY2hQ YXRoLCBPaWQgcm9sZWlkLCBMaXN0ICpwcmV2UGF0aCwKIAkJICovCiAJCWVudHJ5LT5mb3JjZVJl Y29tcHV0ZSA9IG9iamVjdF9hY2Nlc3NfaG9vayA/IHRydWUgOiBmYWxzZTsKIAl9Ci0JZWxzZQot CXsKLQkJLyogdXNlIGNhY2hlZCB2ZXJzaW9uIG9mIGZpbmFsUGF0aCAqLwotCQkqc2FtZSA9IGVx dWFsKHByZXZQYXRoLCBlbnRyeS0+ZmluYWxQYXRoKTsKLQl9Ci0KLQlsaXN0X2ZyZWUocHJldlBh dGhDb3B5KTsKIAogCXJldHVybiBlbnRyeTsKIH0KQEAgLTQyNzUsNyArNDIyMSw2IEBAIHN0YXRp YyB2b2lkCiByZWNvbXB1dGVOYW1lc3BhY2VQYXRoKHZvaWQpCiB7CiAJT2lkCQkJcm9sZWlkID0g R2V0VXNlcklkKCk7Ci0JYm9vbAkJbmV3UGF0aEVxdWFsOwogCWJvb2wJCXBhdGhDaGFuZ2VkOwog CWNvbnN0CQlTZWFyY2hQYXRoQ2FjaGVFbnRyeSAqZW50cnk7CiAKQEAgLTQyODMsMjQgKzQyMjgs MzEgQEAgcmVjb21wdXRlTmFtZXNwYWNlUGF0aCh2b2lkKQogCWlmIChiYXNlU2VhcmNoUGF0aFZh bGlkICYmIG5hbWVzcGFjZVVzZXIgPT0gcm9sZWlkKQogCQlyZXR1cm47CiAKLQllbnRyeSA9IGNh Y2hlZE5hbWVzcGFjZVBhdGgobmFtZXNwYWNlX3NlYXJjaF9wYXRoLCByb2xlaWQsIGJhc2VTZWFy Y2hQYXRoLAotCQkJCQkJCQkmbmV3UGF0aEVxdWFsKTsKKwllbnRyeSA9IGNhY2hlZE5hbWVzcGFj ZVBhdGgobmFtZXNwYWNlX3NlYXJjaF9wYXRoLCByb2xlaWQpOwogCiAJaWYgKGJhc2VDcmVhdGlv bk5hbWVzcGFjZSA9PSBlbnRyeS0+Zmlyc3ROUyAmJgogCQliYXNlVGVtcENyZWF0aW9uUGVuZGlu ZyA9PSBlbnRyeS0+dGVtcF9taXNzaW5nICYmCi0JCW5ld1BhdGhFcXVhbCkKKwkJZXF1YWwoZW50 cnktPmZpbmFsUGF0aCwgYmFzZVNlYXJjaFBhdGgpKQogCXsKIAkJcGF0aENoYW5nZWQgPSBmYWxz ZTsKIAl9CiAJZWxzZQogCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJCUxpc3QgKm5ld3Bh dGg7CisKIAkJcGF0aENoYW5nZWQgPSB0cnVlOwotCX0KIAotCS8qIE5vdyBzYWZlIHRvIGFzc2ln biB0byBzdGF0ZSB2YXJpYWJsZXMuICovCi0JYmFzZVNlYXJjaFBhdGggPSBlbnRyeS0+ZmluYWxQ YXRoOwotCWJhc2VDcmVhdGlvbk5hbWVzcGFjZSA9IGVudHJ5LT5maXJzdE5TOwotCWJhc2VUZW1w Q3JlYXRpb25QZW5kaW5nID0gZW50cnktPnRlbXBfbWlzc2luZzsKKwkJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOworCQluZXdwYXRoID0gbGlzdF9jb3B5 KGVudHJ5LT5maW5hbFBhdGgpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwor CQkvKiBOb3cgc2FmZSB0byBhc3NpZ24gdG8gc3RhdGUgdmFyaWFibGVzLiAqLworCQlsaXN0X2Zy ZWUoYmFzZVNlYXJjaFBhdGgpOworCQliYXNlU2VhcmNoUGF0aCA9IG5ld3BhdGg7CisJCWJhc2VD cmVhdGlvbk5hbWVzcGFjZSA9IGVudHJ5LT5maXJzdE5TOworCQliYXNlVGVtcENyZWF0aW9uUGVu ZGluZyA9IGVudHJ5LT50ZW1wX21pc3Npbmc7CisJfQogCiAJLyogTWFyayB0aGUgcGF0aCB2YWxp ZC4gKi8KIAliYXNlU2VhcmNoUGF0aFZhbGlkID0gdHJ1ZTsKLS0gCjIuMzQuMQoK --=-M+YoPHYxHubhzyTGumpw--