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 1uaM5e-004DDl-Mu for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jul 2025 22:19:35 +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 1uaM5c-007Qj3-OK for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Jul 2025 22:19:33 +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 1uaM5b-007Qit-Nz for pgsql-hackers@lists.postgresql.org; Fri, 11 Jul 2025 22:19:32 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uaM5Z-006pcz-2S for pgsql-hackers@lists.postgresql.org; Fri, 11 Jul 2025 22:19:31 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-607cf70b00aso4918458a12.2 for ; Fri, 11 Jul 2025 15:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752272368; x=1752877168; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=29sGDR/QsR7I22/TaWMzOHyHzZT2zBeEFniAqiQIx18=; b=OAoeqtElpa80SG74kY2d7sST9laWUJgJVAMIwbVK46JOgm9vup0d5RvTG7Ms90e9Km nRmwCcGI1WTwTjMgrvyaMLKaUw9Gvl5ZsjKr79O7uS0FN5JkigPlk6H5I5ARf9eZZU0x Nad9qk/lV0SyYnxTo0bSRexPk/SDl3+FI+pRz3HNtTiUwofmwYQRoWnuOdtqBPDLKv+6 3dO+UBuLZ2OacraTOGJ2X0CnTIQ9RBLO+gzkdeepXMXYvkD9Mgl5U/w5SHXumMPzF97f 5gmccloksoFexXQ2Xnpm/njU36csctKi+rgr/3nnspNPZ88JLwsDMEWKXCwkx/ByKRtO OQmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752272368; x=1752877168; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=29sGDR/QsR7I22/TaWMzOHyHzZT2zBeEFniAqiQIx18=; b=W4qdRuF0E5a8Gh+cmaChjIwjEsJN9ZorbQp55oiBLLSkAkNfbNoABDk3gTi7Ytpl7u za9mZF/NPzCP1QlInT1QvujRfX52mTyKvIPi/Mg2o+DtuQ5dV6mEzXPOmFFhY8UU+Q0s DeZf2MXTpIBBvXf4xlA+ujyEVptxGQRdS9jg2KPOmGzgWeJwFPOfXnlggwu+YS7Mnrz9 2JygB/VBPqCs+SLkcNF4gql0fABG1/SmNDvZZt6kO4MSEltnCmYfFlly52pb0IahnZgT tdWEbx0klsJuJtFXw+pdRBS26tChcdwuYn9gv7NwLQLwYS+noCKfObiiuFgGWQD32OfI isuw== X-Gm-Message-State: AOJu0YxpbiQ4SV2F44U/NVByZUX3o1gbmSSnz4CgFhwZilYEJu/ZdxZF 0Qc3jIYm2mSB93eErzkeT1xMNZd/rKiQ7Xz2pdLQfnz31sCKpk99azFxYDcGdYcDhV5yQZmUS6r S/E+f1JTmWozn9om16uhYv6iu/tkKYSPO3Q== X-Gm-Gg: ASbGncuyKCUmwwcQC3EMDzoYvmv6gwqI6lvp4XBUU57MHwiWUmzIg4+CagF83zuhsXk esGcXzVn7GSVuGaK6WDDSc1RJo6PY5JhuPNaOEnPSdqMiv2VV00FFsK7QOu2APtMSi0TZauAsOj /JPamZhlt7URjjdSazlkHE4yhDqFqCF2REDds+KOI8f+nTVeQunBSUuYf7lS1VnR3kjh4rRh8n7 JLws+OPGcYc0cHNrA== X-Google-Smtp-Source: AGHT+IFHPDM5Lb4AykIVsX5AAlCUjaMK/FUat3jUlUWNhy9isz75sUl28tMQjjB9amfuT0WLycG37xbRT5BRoKSO+9o= X-Received: by 2002:a50:9ecc:0:b0:609:d20b:1af5 with SMTP id 4fb4d7f45d1cf-611e760e572mr3094734a12.2.1752272367557; Fri, 11 Jul 2025 15:19:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Melanie Plageman Date: Fri, 11 Jul 2025 18:19:15 -0400 X-Gm-Features: Ac12FXxcLrge7RiMwdaj9OmgIK4QjpOrpaJYmWlcsv5KQIkvvpGYPP62KPb4cVQ Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: PostgreSQL Hackers Cc: Andres Freund , Robert Haas , "Andrey M. Borodin" Content-Type: multipart/mixed; boundary="00000000000004eee90639aeb4d3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000004eee90639aeb4d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 9, 2025 at 5:59=E2=80=AFPM Melanie Plageman wrote: > > On Thu, Jun 26, 2025 at 6:04=E2=80=AFPM Melanie Plageman > wrote: > > > > Rebased in light of recent changes on master: > > This needed another rebase, and, in light of the discussion in [1], > I've also removed the patch to add heap wrappers for setting pages > all-visible. Andrey Borodin made the excellent point off-list that I forgot to remove the xl_heap_visible struct itself -- which is rather important to a patch set purporting to eliminate xl_heap_visible! New version attached. - Melanie --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0002-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v4-0002-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5gy1 RnJvbSA2OGYyNmRmODNmNmFjMGY4Y2U5YThjNzM4OTRkMjI5OGM1MjczOTk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwMi8xM10gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBpbiBDT1BZIEZSRUVaRQoK SW5zdGVhZCBvZiBlbWl0dGluZyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIHNldHRpbmcgdGhl IFZNIGJpdHMgaW4KeGxfaGVhcF92aXNpYmxlLCBpbmNsdWRlIHRoZSByZXF1aXJlZCB1cGRhdGUg aW4gdGhlIHhsX2hlYXBfbXVsdGlfaW5zZXJ0CnJlY29yZCBpbnN0ZWFkLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICB8IDQ3ICsrKysrKysrKysrLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICAgfCAzOSArKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCA1OSArKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYyAgfCAgNSArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggICAgICB8 ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMGRjZDZlZTgxN2UuLjY4ZGI0MzI1Mjg1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjQ5Myw5ICsyNDkzLDYgQEAgaGVhcF9t dWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGlu dCBudHVwbGVzLAogCQkvKgogCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZSwgbmVlZCB0 byBjbGVhciB0aGF0LCB1bmxlc3Mgd2UncmUgb25seQogCQkgKiBnb2luZyB0byBhZGQgZnVydGhl ciBmcm96ZW4gcm93cyB0byBpdC4KLQkJICoKLQkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxy ZWFkeSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKLQkJICogcGFnZSwgbWFyayBp dCBhcyBhbGwtdmlzaWJsZS4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYm ICEob3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1MDUsOCArMjUwMiwy MiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCUJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCQl9CisK KwkJLyoKKwkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxyZWFkeSBmcm96ZW4gcm93cyB0byBh IHByZXZpb3VzbHkgZW1wdHkKKwkJICogcGFnZSwgbWFyayBpdCBhcyBhbGwtZnJvemVuIGFuZCB1 cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiBXZSdyZQorCQkgKiBhbHJlYWR5IGhvbGRpbmcgYSBw aW4gb24gdGhlIHZtYnVmZmVyLgorCQkgKi8KIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCisJ CXsKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwg QlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZShyZWxh dGlvbiwKKwkJCQkJCQkJCSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCQkJ IHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJ CQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisJCX0KIAogCQkvKgogCQkgKiBYWFggU2hv dWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8gU2VlIGhlYXBfaW5zZXJ0 KCkKQEAgLTI1NTQsNiArMjU2NSwxMiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxh dGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCQl4bHJlYy0+Zmxh Z3MgPSAwOwogCQkJaWYgKGFsbF92aXNpYmxlX2NsZWFyZWQpCiAJCQkJeGxyZWMtPmZsYWdzID0g WExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVEOworCisJCQkvKgorCQkJICogV2UgZG9uJ3Qg aGF2ZSB0byB3b3JyeSBhYm91dCBpbmNsdWRpbmcgYSBjb25mbGljdCB4aWQgaW4gdGhlCisJCQkg KiBXQUwgcmVjb3JkIGFzIEhFQVBfSU5TRVJUX0ZST1pFTiBpbnRlbnRpb25hbGx5IHZpb2xhdGVz CisJCQkgKiB2aXNpYmlsaXR5IHJ1bGVzLgorCQkJICovCiAJCQlpZiAoYWxsX2Zyb3plbl9zZXQp CiAJCQkJeGxyZWMtPmZsYWdzID0gWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVDsKIApAQCAtMjYx Niw3ICsyNjMzLDEwIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBs ZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7 CiAJCQlYTG9nUmVnaXN0ZXJEYXRhKHhscmVjLCB0dXBsZWRhdGEgLSBzY3JhdGNoLmRhdGEpOwor CiAJCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQgfCBidWZm bGFncyk7CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEs IHZtYnVmZmVyLCAwKTsKIAogCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCB0dXBsZWRhdGEsIHRv dGFsZGF0YWxlbik7CiAKQEAgLTI2MjYsMjkgKzI2NDYsMTQgQEAgaGVhcF9tdWx0aV9pbnNlcnQo UmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAog CQkJcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgaW5mbyk7CiAKIAkJCVBhZ2VTZXRM U04ocGFnZSwgcmVjcHRyKTsKKwkJCWlmIChhbGxfZnJvemVuX3NldCkKKwkJCQlQYWdlU2V0TFNO KEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCByZWNwdHIpOwogCQl9CiAKIAkJRU5EX0NSSVRfU0VD VElPTigpOwogCi0JCS8qCi0JCSAqIElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBw YWdlLCB1cGRhdGUgdGhlIHZpc2liaWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGlu ZyBwaW4gb24gdGhlIHZtYnVmZmVyLgotCQkgKi8KIAkJaWYgKGFsbF9mcm96ZW5fc2V0KQotCQl7 Ci0JCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JCQlBc3NlcnQodmlzaWJpbGl0 eW1hcF9waW5fb2soQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpKTsKLQot CQkJLyoKLQkJCSAqIEl0J3MgZmluZSB0byB1c2UgSW52YWxpZFRyYW5zYWN0aW9uSWQgaGVyZSAt IHRoaXMgaXMgb25seSB1c2VkCi0JCQkgKiB3aGVuIEhFQVBfSU5TRVJUX0ZST1pFTiBpcyBzcGVj aWZpZWQsIHdoaWNoIGludGVudGlvbmFsbHkKLQkJCSAqIHZpb2xhdGVzIHZpc2liaWxpdHkgcnVs ZXMuCi0JCQkgKi8KLQkJCXZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9uLCBCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLCBidWZmZXIsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwgdm1i dWZmZXIsCi0JCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCQl9CisJCQlM b2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCiAJCVVubG9ja1JlbGVh c2VCdWZmZXIoYnVmZmVyKTsKIAkJbmRvbmUgKz0gbnRoaXNwYWdlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggZWI0YmQzZDZhZTMuLjI0ODVjMzQ0MTkxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTU1Miw2ICs1NTIsNyBAQCBoZWFwX3hs b2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWludAkJCWk7CiAJYm9v bAkJaXNpbml0ID0gKFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiBYTE9HX0hFQVBfSU5JVF9QQUdF KSAhPSAwOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAogCS8qCiAJICogSW5zZXJ0aW9uIGRvZXNuJ3Qgb3ZlcndyaXRlIE1WQ0Mg ZGF0YSwgc28gbm8gY29uZmxpY3QgcHJvY2Vzc2luZyBpcwpAQCAtNTcyLDExICs1NzMsMTEgQEAg aGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlpZiAoeGxy ZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVEKQogCXsKIAkJUmVsYXRp b24JcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQkJQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkJdmlzaWJpbGl0eW1hcF9waW4ocmVsbiwgYmxr bm8sICZ2bWJ1ZmZlcik7CiAJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsbiwgYmxrbm8sIHZtYnVm ZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVy KTsKKwkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQlGcmVlRmFrZVJlbGNhY2hlRW50cnko cmVsbik7CiAJfQogCkBAIC02NjMsNiArNjY0LDQyIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKIAkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCisJYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsK KworCS8qCisJICogTm93IHJlYWQgYW5kIHVwZGF0ZSB0aGUgVk0gYmxvY2suIEV2ZW4gaWYgd2Ug c2tpcHBlZCB1cGRhdGluZyB0aGUgaGVhcAorCSAqIHBhZ2UgZHVlIHRvIHRoZSBmaWxlIGJlaW5n IGRyb3BwZWQgb3IgdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCBpdCdzCisJICogc3RpbGwg c2FmZSB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBj bGVhcnMKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5n IHRoZSBwYWdlIExTTiwgc28gYW55CisJICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3 aWxsIHN0aWxsIGJlIGNsZWFyZWQuCisJICoKKwkgKiBJdCBpcyBvbmx5IG9rYXkgdG8gc2V0IHRo ZSBWTSBiaXRzIHdpdGhvdXQgaG9sZGluZyB0aGUgaGVhcCBwYWdlIGxvY2sKKwkgKiBiZWNhdXNl IHdlIGNhbiBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycyBvZiB0aGlzIHBhZ2UuCisJICovCisJaWYg KHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgJiYKKwkJWExvZ1JlYWRC dWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAxLCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2Us CisJCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCisJeworCQlSZWxhdGlv bglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCXZpc2liaWxp dHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJ5dGUocmVsbiwgYmxrbm8sCisJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK KworCQkvKgorCQkgKiBJdCBpcyBub3QgcG9zc2libGUgdGhhdCB0aGUgVk0gd2FzIGFscmVhZHkg c2V0IGZvciB0aGlzIGhlYXAgcGFnZSwKKwkJICogc28gdGhlIHZtYnVmZmVyIG11c3QgaGF2ZSBi ZWVuIG1vZGlmaWVkIGFuZCBtYXJrZWQgZGlydHkuCisJCSAqLworCQlBc3NlcnQoQnVmZmVySXNE aXJ0eSh2bWJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBs c24pOworCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CisJfQorCisJaWYgKEJ1ZmZlcklz VmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKKwogCS8q CiAJICogSWYgdGhlIHBhZ2UgaXMgcnVubmluZyBsb3cgb24gZnJlZSBzcGFjZSwgdXBkYXRlIHRo ZSBGU00gYXMgd2VsbC4KIAkgKiBBcmJpdHJhcmlseSwgb3VyIGRlZmluaXRpb24gb2YgImxvdyIg aXMgbGVzcyB0aGFuIDIwJS4gV2UgY2FuJ3QgZG8gbXVjaApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jCmluZGV4IDc0NWEwNGVmMjZlLi41NzNkZjZmNjg5MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMzE4LDYgKzMxOCw2NSBAQCB2aXNp YmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBo ZWFwQnVmLAogCXJldHVybiBzdGF0dXM7CiB9CiAKKy8qCisgKiBTZXQgZmxhZ3MgaW4gdGhlIFZN IGJsb2NrIGNvbnRhaW5lZCBpbiB0aGUgcGFzc2VkIGluIHZtQnVmLgorICoKKyAqIFRoaXMgZnVu Y3Rpb24gaXMgZm9yIGNhbGxlcnMgd2hpY2ggaW5jbHVkZSB0aGUgVk0gY2hhbmdlcyBpbiB0aGUg c2FtZSBXQUwKKyAqIHJlY29yZCBhcyB0aGUgbW9kaWZpY2F0aW9ucyBvZiB0aGUgaGVhcCBwYWdl IHdoaWNoIHJlbmRlcmVkIGl0IGFsbC12aXNpYmxlLgorICogQ2FsbGVycyBzZXBhcmF0ZWx5IGxv Z2dpbmcgdGhlIFZNIGNoYW5nZXMgc2hvdWxkIGludm9rZSB2aXNpYmlsaXR5bWFwX3NldCgpCisg KiBpbnN0ZWFkLgorICoKKyAqIENhbGxlciBtdXN0IGhhdmUgcGlubmVkIGFuZCBleGNsdXNpdmUg bG9ja2VkIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSBWTSBpbgorICogdm1CdWYuCisgKgorICog RHVyaW5nIG5vcm1hbCBvcGVyYXRpb24gKGkuZS4gbm90IHJlY292ZXJ5KSwgdGhpcyBzaG91bGQg YmUgY2FsbGVkIGluIGEKKyAqIGNyaXRpY2FsIHNlY3Rpb24gd2hpY2ggYWxzbyBtYWtlcyBhbnkg bmVjZXNzYXJ5IGNoYW5nZXMgdG8gdGhlIGhlYXAgcGFnZQorICogYW5kLCBpZiByZWxldmFudCwg ZW1pdHMgV0FMLgorICoKKyAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgV0FMIGxvZ2dpbmcg dGhlIGNoYW5nZXMgdG8gdGhlIFZNIGJ1ZmZlciBhbmQgZm9yCisgKiBtYWtpbmcgYW55IGNoYW5n ZXMgbmVlZGVkIHRvIHRoZSBhc3NvY2lhdGVkIGhlYXAgcGFnZS4KKyAqLwordWludDgKK3Zpc2li aWxpdHltYXBfc2V0X3ZtYnl0ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJ CQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncykKK3sKKwlCbG9ja051bWJlciBtYXBCbG9j ayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CisJdWludDMyCQltYXBCeXRlID0gSEVB UEJMS19UT19NQVBCWVRFKGhlYXBCbGspOworCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RP X09GRlNFVChoZWFwQmxrKTsKKwlQYWdlCQlwYWdlOworCXVpbnQ4CSAgICptYXA7CisJdWludDgJ CXN0YXR1czsKKworI2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlNQVAKKwllbG9nKERFQlVHMSwgInZt X3NldCAlcyAlZCIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOworI2Vu ZGlmCisKKwkvKiBDYWxsIGluIHNhbWUgY3JpdGljYWwgc2VjdGlvbiB3aGVyZSBXQUwgaXMgZW1p dHRlZC4gKi8KKwlBc3NlcnQoSW5SZWNvdmVyeSB8fCBDcml0U2VjdGlvbkNvdW50ID4gMCk7CisK KwkvKiBGbGFncyBzaG91bGQgYmUgdmFsaWQuIEFsc28gbmV2ZXIgY2xlYXIgYml0cyB3aXRoIHRo aXMgZnVuY3Rpb24gKi8KKwlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSA9PSBmbGFncyk7CisKKwkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3aXRob3V0 IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KKwlBc3NlcnQoZmxhZ3MgIT0gVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKTsKKworCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQg Vk0gcGFnZSBwaW5uZWQgKi8KKwlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKKwkJZWxvZyhFUlJPUiwgIndyb25nIFZN IGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKKworCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKHZtQnVmKTsKKwltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOwor CisJc3RhdHVzID0gKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQpICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTOworCWlmIChmbGFncyAhPSBzdGF0dXMpCisJeworCQltYXBbbWFwQnl0ZV0gfD0g KGZsYWdzIDw8IG1hcE9mZnNldCk7CisJCU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7CisJfQorCisJ cmV0dXJuIHN0YXR1czsKK30KKwogLyoKICAqCXZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyAtIGdl dCBzdGF0dXMgb2YgYml0cwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMK aW5kZXggODJiNjJjOTVkZTUuLmI0OGQ3ZGMxZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBh bV94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCisjaW5jbHVkZSAi YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVm cy5oIgogCiAvKgpAQCAtMzU0LDYgKzM1NSwxMCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVm LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJudHVw bGVzOiAlZCwgZmxhZ3M6IDB4JTAyWCIsIHhscmVjLT5udHVwbGVzLAogCQkJCQkJIHhscmVjLT5m bGFncyk7CiAKKwkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQp CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsCisJCQkJCQkJ IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwor CiAJCWlmIChYTG9nUmVjSGFzQmxvY2tEYXRhKHJlY29yZCwgMCkgJiYgIWlzaW5pdCkKIAkJewog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsIG9mZnNldHM6Iik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3Zpc2liaWxpdHltYXAuaAppbmRleCBiZTIxYzZkZDFhMy4uOTc3NTY2ZjZiOTggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMzcsNiArMzcsOCBAQCBleHRlcm4gdWludDggdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKIAkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJCQkJICAgdWludDggZmxhZ3Mp OworZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZShSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Mp OwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0 eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tO dW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJl cGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0003-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Disposition: attachment; filename="v4-0003-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5h02 RnJvbSAwODQ2YjcxMDZkNzJjNmFkZTA0ZWNjZWJlNTFkY2MxZTFjZWRkMzlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwMy8xM10gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIHR3byBwYXJhbWV0ZXJzIGZyb20gdGhlCkxWUmVsU3RhdGUs IHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyB8IDQ1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMTQwMzZjMjdlODcuLjhhNjJhOTNlZWU1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsOCArNDY0LDExIEBAIHN0 YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sIE9mZnNldE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCAqYWxsX2Zy b3plbik7CitzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxp dHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsK IHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNy ZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0 aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAt MjAxMCw4ICsyMDEzLDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAog CQlBc3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJaWYgKCFoZWFwX3BhZ2Vf aXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWYsCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZk ZWJ1Z19hbGxfZnJvemVuKSkKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVs LT5yZWwsIGJ1ZiwKKwkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0p KQogCQkJQXNzZXJ0KGZhbHNlKTsKIAogCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRl YnVnX2FsbF9mcm96ZW4pOwpAQCAtMjkwNyw4ICsyOTExLDggQEAgbGF6eV92YWN1dW1faGVhcF9w YWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJICogZW1pdHRlZC4KIAkgKi8KIAlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwot CWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWZmZXIsICZ2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCi0JCQkJCQkJCSAmYWxsX2Zyb3plbikpCisJaWYgKGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1p biwKKwkJCQkJCQkJICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVs LT5vZmZudW0pKQogCXsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJM RTsKIApAQCAtMzU5Miw5ICszNTk2LDE2IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRl ICp2YWNyZWwpCiAKIC8qCiAgKiBDaGVjayBpZiBldmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFn ZSBpcyB2aXNpYmxlIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUKLSAqIHRyYW5zYWN0aW9ucy4g QWxzbyByZXR1cm4gdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aGljaCBpcyB0aGUgaGlnaGVz dAotICogeG1pbiBhbW9uZ3N0IHRoZSB2aXNpYmxlIHR1cGxlcy4gIFNldCAqYWxsX2Zyb3plbiB0 byB0cnVlIGlmIGV2ZXJ5IHR1cGxlCi0gKiBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICogdHJh bnNhY3Rpb25zLgorICoKKyAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJp bGl0eS4KKyAqCisgKiAqbG9nZ2luZ19vZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXROdW1iZXIg b2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVpbmcKKyAqIHByb2Nlc3NlZCBmb3IgdmFjdXVtJ3MgZXJy b3IgY2FsbGJhY2sgc3lzdGVtLgorICoKKyAqIFJldHVybiB0aGUgdmlzaWJpbGl0eV9jdXRvZmZf eGlkIHdoaWNoIGlzIHRoZSBoaWdoZXN0IHhtaW4gYW1vbmdzdCB0aGUKKyAqIHZpc2libGUgdHVw bGVzLiBTZXRzICphbGxfZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdl IGlzCisgKiBmcm96ZW4uCiAgKgogICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBv ZiBsYXp5X3NjYW5fcHJ1bmUoKS4gIElmIHlvdSBjaGFuZ2UKICAqIGFueXRoaW5nIGhlcmUsIG1h a2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgpAQCAt MzYwMiw5ICszNjEzLDExIEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwp CiAgKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBib29s Ci1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVm LAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJ CQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwK IAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgYm9v bCAqYWxsX2Zyb3plbikKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewog CVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CkBAIC0zNjI3LDcgKzM2NDAsNyBAQCBoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkgKiBT ZXQgdGhlIG9mZnNldCBudW1iZXIgc28gdGhhdCB3ZSBjYW4gZGlzcGxheSBpdCBhbG9uZyB3aXRo IGFueQogCQkgKiBlcnJvciB0aGF0IG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyB0dXBs ZS4KIAkJICovCi0JCXZhY3JlbC0+b2ZmbnVtID0gb2ZmbnVtOworCQkqbG9nZ2luZ19vZmZudW0g PSBvZmZudW07CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAogCQkv KiBVbnVzZWQgb3IgcmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QgKi8K QEAgLTM2NTEsOSArMzY2NCw5IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAKIAkJdHVwbGUudF9kYXRhID0gKEhlYXBUdXBsZUhlYWRl cikgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAkJdHVwbGUudF9sZW4gPSBJdGVtSWRHZXRM ZW5ndGgoaXRlbWlkKTsKLQkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQodmFj cmVsLT5yZWwpOworCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwog Ci0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBsZSwgdmFjcmVsLT5jdXRv ZmZzLk9sZGVzdFhtaW4sCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBs ZSwgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVf TElWRToKQEAgLTM2NzQsNyArMzY4Nyw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCSAqLwogCQkJCQl4bWluID0gSGVhcFR1 cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwogCQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQ cmVjZWRlcyh4bWluLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbikp CisJCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9 IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKQEAgLTM3MDksNyArMzcyMiw3IEBA IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYs CiAJfQkJCQkJCQkvKiBzY2FuIGFsb25nIHBhZ2UgKi8KIAogCS8qIENsZWFyIHRoZSBvZmZzZXQg aW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KLQl2 YWNyZWwtPm9mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJKmxvZ2dpbmdfb2ZmbnVtID0g SW52YWxpZE9mZnNldE51bWJlcjsKIAogCXJldHVybiBhbGxfdmlzaWJsZTsKIH0KLS0gCjIuNDMu MAoK --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0005-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Disposition: attachment; filename="v4-0005-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5h64 RnJvbSA2MGIzNmNkOGI0ZDllMmRlMTI1NjkwYTdmY2ZiYWI3MzMwYzEyMjg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwNS8xM10gVXNlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkIGZvciBzZXR0aW5nIGVtcHR5 IHBhZ2VzCiBhbGwtdmlzaWJsZQoKQXMgcGFydCBvZiBhIHByb2plY3QgdG8gZWxpbWluYXRlIHhs X2hlYXBfdmlzaWJsZSByZWNvcmRzLCBlbGltaW5hdGUKdGhlaXIgdXNhZ2UgaW4gcGhhc2UgSSB2 YWN1dW0gb2YgZW1wdHkgcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTQgKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgNTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCsp LCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDY4 ZWNmNTA4NDhiLi4yNzI0Y2Y3ZjY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTgzNiw2ICs4MzYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVz dF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwg YnVmZmVyLAorCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwgMCwg ZmFsc2UsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29u LApAQCAtMjA1Miw2ICsyMDUzLDkgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJl ZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVh ZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCiAgKiBzdGls bCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KICAqCisgKiBmb3JjZV9oZWFwX2ZwaSBpbmRpY2F0ZXMg dGhhdCBhIGZ1bGwgcGFnZSBpbWFnZSBvZiB0aGUgaGVhcCBibG9jayBzaG91bGQgYmUKKyAqIGZv cmNlZC4KKyAqCiAgKiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIHRodXMgc2hvdWxkIHVwZGF0ZQogICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hl Y2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CiAgKiBw cnVuZSBvciBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlLgpAQCAtMjA2Miw2ICsyMDY2LDcgQEAg aGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVz LAogICovCiB2b2lkCiBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkgIGJvb2wgc2V0 X3BkX2FsbF92aXMsCkBAIC0yMDkwLDEzICsyMDk1LDE2IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxyZWMuZmxhZ3MgPSAw OwogCXJlZ2J1Zl9mbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKIAorCWlmIChmb3JjZV9oZWFwX2Zw aSkKKwkJcmVnYnVmX2ZsYWdzIHw9IFJFR0JVRl9GT1JDRV9JTUFHRTsKKwogCS8qCiAJICogV2Ug Y2FuIGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJlIG1ha2luZyB0 byB0aGUgaGVhcAogCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBjaGVja3N1 bXMvd2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCiAJICovCi0JaWYgKCFkb19wcnVuZSAmJgot CQluZnJvemVuID09IDAgJiYKLQkJKCFzZXRfcGRfYWxsX3ZpcyB8fCAhWExvZ0hpbnRCaXRJc05l ZWRlZCgpKSkKKwllbHNlIGlmICghZG9fcHJ1bmUgJiYKKwkJCSBuZnJvemVuID09IDAgJiYKKwkJ CSAoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCQlyZWdidWZf ZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCA0NjBjZGJkODQxNy4uZDllMTk1MjY5ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzgsMzMgKzE4NzgsNDcgQEAgbGF6eV9zY2FuX25ld19v cl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25v LAogCQkgKi8KIAkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQl1aW50OAkJ bmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCVZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTjsKKwogCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkJCS8qIG1hcmsg YnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5nIGEgV0FMIHJlY29yZCAqLworCQkJUGFnZVNldEFs bFZpc2libGUocGFnZSk7CiAJCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKIAotCQkJLyoKLQkJCSAq IEl0J3MgcG9zc2libGUgdGhhdCBhbm90aGVyIGJhY2tlbmQgaGFzIGV4dGVuZGVkIHRoZSBoZWFw LAotCQkJICogaW5pdGlhbGl6ZWQgdGhlIHBhZ2UsIGFuZCB0aGVuIGZhaWxlZCB0byBXQUwtbG9n IHRoZSBwYWdlIGR1ZQotCQkJICogdG8gYW4gRVJST1IuICBTaW5jZSBoZWFwIGV4dGVuc2lvbiBp cyBub3QgV0FMLWxvZ2dlZCwgcmVjb3ZlcnkKLQkJCSAqIG1pZ2h0IHRyeSB0byByZXBsYXkgb3Vy IHJlY29yZCBzZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIGFuZAotCQkJICogZmluZCB0aGF0 IHRoZSBwYWdlIGlzbid0IGluaXRpYWxpemVkLCB3aGljaCB3aWxsIGNhdXNlIGEgUEFOSUMuCi0J CQkgKiBUbyBwcmV2ZW50IHRoYXQsIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcHJl dmlvdXNseQotCQkJICogV0FMLWxvZ2dlZCwgYW5kIGlmIG5vdCwgZG8gdGhhdCBub3cuCi0JCQkg Ki8KLQkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSAmJgotCQkJCVBhZ2VHZXRM U04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1 ZiwgdHJ1ZSk7CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUp OworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHZhY3JlbC0+cmVsLCBibGtubywKKwkJCQkJ CQkJCSB2bWJ1ZmZlciwgbmV3X3ZtYml0cyk7CisKKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZh Y3JlbC0+cmVsKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEl0J3MgcG9zc2libGUgdGhhdCBhbm90 aGVyIGJhY2tlbmQgaGFzIGV4dGVuZGVkIHRoZSBoZWFwLAorCQkJCSAqIGluaXRpYWxpemVkIHRo ZSBwYWdlLCBhbmQgdGhlbiBmYWlsZWQgdG8gV0FMLWxvZyB0aGUgcGFnZQorCQkJCSAqIGR1ZSB0 byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9uIGlzIG5vdCBXQUwtbG9nZ2VkLAorCQkJ CSAqIHJlY292ZXJ5IG1pZ2h0IHRyeSB0byByZXBsYXkgb3VyIHJlY29yZCBzZXR0aW5nIHRoZSBw YWdlCisJCQkJICogYWxsLXZpc2libGUgYW5kIGZpbmQgdGhhdCB0aGUgcGFnZSBpc24ndCBpbml0 aWFsaXplZCwgd2hpY2gKKwkJCQkgKiB3aWxsIGNhdXNlIGEgUEFOSUMuIFRvIHByZXZlbnQgdGhh dCwgaWYgdGhlIHBhZ2UgaGFzbid0CisJCQkJICogYmVlbiBwcmV2aW91c2x5IFdBTC1sb2dnZWQs IGZvcmNlIGEgaGVhcCBGUEkuCisJCQkJICovCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgUGFnZUdldExTTihwYWdlKSA9PSBJbnZh bGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJCSAgbmV3X3Zt Yml0cywKKwkJCQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKKwkJCQkJCQkJCQkgIGZhbHNlLCBQUlVORV9WQUNVVU1fU0NBTiwKKwkJCQkJCQkJCQkgIE5V TEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJ CQkJCQkgIE5VTEwsIDApOworCQkJfQogCi0JCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCSAgSW52 YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQs Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkgIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7CiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkJCS8qIENvdW50 IHRoZSBuZXdseSBhbGwtZnJvemVuIHBhZ2VzIGZvciBsb2dnaW5nICovCisJCQlMb2NrQnVmZmVy KHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCQkvKiBDb3VudCB0aGUgbmV3bHkg YWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZy4gKi8KIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJ CX0KQEAgLTI5MTgsNiArMjkzMiw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChSZWxhdGlv bk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKIAl7CiAJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwKKwkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJICB2bWJ1ZmZl ciwKIAkJCQkJCQkJICB2bWZsYWdzLAogCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCmluZGV4IDhiNDcyOTVlZmEyLi5lNzEyOWE2NDRhMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMzk0LDYgKzM5NCw3IEBAIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJl ciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1 cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lk IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCisJCQkJCQkJCQkgIGJvb2wgZm9yY2VfaGVhcF9mcGksCiAJCQkJCQkJCQkgIEJ1ZmZlciB2 bWJ1ZmZlciwKIAkJCQkJCQkJCSAgdWludDggdm1mbGFncywKIAkJCQkJCQkJCSAgYm9vbCB2bV9t b2RpZmllZF9oZWFwX3BhZ2UsCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0001-Add-assert-to-heap_prune_record_unchanged_lp_norm.patch" Content-Disposition: attachment; filename="v4-0001-Add-assert-to-heap_prune_record_unchanged_lp_norm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5gp0 RnJvbSBkOTgxNTZkM2Q4YWM1MjIzODFkYzNjY2Y5YTg2MDgxNjg2NDlmZGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDcgSnVsIDIwMjUgMTc6MzM6MjYgLTA0MDAKU3ViamVjdDogW1BB VENIIHY0IDAxLzEzXSBBZGQgYXNzZXJ0IHRvIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwKCk5vdCBhbGwgY2FsbGVycyBwcm92aWRlIFZhY3V1bUN1dG9mZnMgdG8gaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKSwKc28gYXNzZXJ0IHRob3NlIGFyZSBwcm92aWRlZCBiZWZv cmUgcGFzc2luZyB0aGVtIGFsb25nIHRvCmhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKS4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDEgKwogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBh ODAyNTg4OWJlMC4uZGQwMDkzMWYxNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC0xNDgwLDYgKzE0ODAsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9y bWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCXsKIAkJYm9v bAkJdG90YWxseV9mcm96ZW47CiAKKwkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMpOwogCQlpZiAo KGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoaHR1cCwKIAkJCQkJCQkJCSAgIHByc3RhdGUtPmN1 dG9mZnMsCiAJCQkJCQkJCQkgICAmcHJzdGF0ZS0+cGFnZWZyeiwKLS0gCjIuNDMuMAoK --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0004-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v4-0004-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5h33 RnJvbSA1MTkwMGY4Yjk0YTFlYmZjNzc3N2E5ZDlhNGFmMzc5YmU4NTk3Y2ViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwNC8xM10gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSB4bF9oZWFwX3Zpc2libGUgcmVj b3JkIGZvciBlYWNoIHBhZ2UgdGhhdAppcyByZW5kZXJlZCBhbGwtdmlzaWJsZSBieSB2YWN1dW0n cyB0aGlyZCBwaGFzZSwgaW5jbHVkZSB0aGUgdXBkYXRlcyB0bwp0aGUgVk0gaW4gdGhlIGFscmVh ZHkgZW1pdHRlZCB4bF9oZWFwX3BydW5lIHJlY29yZC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1feGxvZy5jICB8IDE0MiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgfCAgNDggKysrKysrKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIHwgIDEzICsrLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgfCAgIDkgKysKIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgIHwgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwg Mjk2IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDI0ODVjMzQ0MTkxLi4xNDU0MWUyZTk0ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0zNSw3ICszNSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQnVmZmVyCQlidWZmZXI7CiAJUmVs RmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rp b24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCXVpbnQ4CQl2 bWZsYWdzID0gMDsKIAogCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwg TlVMTCwgJmJsa25vKTsKIAltZW1jcHkoJnhscmVjLCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBy dW5lKTsKQEAgLTUxLDEwICs1MiwxNSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkgICAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJ T05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykpID09IDApOwogCiAJLyoKLQkgKiBXZSBhcmUgYWJv dXQgdG8gcmVtb3ZlIGFuZC9vciBmcmVlemUgdHVwbGVzLiAgSW4gSG90IFN0YW5kYnkgbW9kZSwK LQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0 aGUgcmVtb3ZlZCB0dXBsZXMKLQkgKiBhcmUgc3RpbGwgdmlzaWJsZSBvciB3aGljaCBzdGlsbCBj b25zaWRlciB0aGUgZnJvemVuIHhpZHMgYXMgcnVubmluZy4KLQkgKiBUaGUgY29uZmxpY3QgaG9y aXpvbiBYSUQgY29tZXMgYWZ0ZXIgeGxfaGVhcF9wcnVuZS4KKwkgKiBBZnRlciB4bF9oZWFwX3By dW5lIGlzIHRoZSBvcHRpb25hbCBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgorCSAqCisJICog SW4gSG90IFN0YW5kYnkgbW9kZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcnVu bmluZyBxdWVyaWVzCisJICogd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgY2hhbmdlcyBp biB0aGlzIHJlY29yZC4gSWYgcHJ1bmluZywgdGhhdAorCSAqIG1lYW5zIHdlIGNhbm5vdCByZW1v dmUgdHVwbGVzIHN0aWxsIHZpc2libGUgdG8gdHJhbnNhY3Rpb25zIG9uIHRoZQorCSAqIHN0YW5k YnkuIElmIGZyZWV6aW5nLCB0aGF0IG1lYW5zIHdlIGNhbm5vdCBmcmVlemUgdHVwbGVzIHdpdGgg eGlkcyB0aGF0CisJICogYXJlIHN0aWxsIGNvbnNpZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRi eS4gQW5kIGZvciBzZXR0aW5nIHRoZSBWTSwgd2UKKwkgKiBjYW5ub3QgZG8gc28gaWYgdGhlIHBh Z2UgaXNuJ3QgYWxsLXZpc2libGUgdG8gYWxsIHRyYW5zYWN0aW9ucyBvbiB0aGUKKwkgKiBzdGFu ZGJ5LgogCSAqLwogCWlmICgoeGxyZWMuZmxhZ3MgJiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9O KSAhPSAwKQogCXsKQEAgLTcwLDEzICs3NiwyOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIAorCS8q IE5leHQgYXJlIHRoZSBvcHRpb25hbGx5IGluY2x1ZGVkIHZtZmxhZ3MuIENvcHkgdGhlbSBvdXQg Zm9yIGxhdGVyIHVzZS4gKi8KKwlpZiAoKHhscmVjLmZsYWdzICYgWExIUF9IQVNfVk1GTEFHUykg IT0gMCkKKwl7CisJCW1lbWNweSgmdm1mbGFncywgbWFpbmRhdGFwdHIsIHNpemVvZih1aW50OCkp OworCQltYWluZGF0YXB0ciArPSBzaXplb2YodWludDgpOworCisJCS8qCisJCSAqIFdlIGRvbid0 IHNldCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwgaW4gdGhlIGNvbWJpbmVkIHJlY29y ZAorCQkgKiBiZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSBYTEhQX0lTX0NBVEFMT0dfUkVMLgorCQkg Ki8KKwkJQXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZs YWdzKTsKKwkJLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNl dHRpbmcgYWxsX3Zpc2libGUgYml0ICovCisJCUFzc2VydCh2bWZsYWdzICE9IFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTik7CisJfQorCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGlt YWdlLCByZXN0b3JlIGl0IGFuZCB3ZSdyZSBkb25lLgorCSAqIElmIHdlIGhhdmUgYSBmdWxsLXBh Z2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2ssIHJlc3RvcmUgaXQgYW5kIHdlJ3JlCisJICogZG9u ZSB3aXRoIHRoZSBoZWFwIGJsb2NrLgogCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9y UmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX05PUk1BTCwKLQkJCQkJCQkJCQkgICAoeGxyZWMu ZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgIT0gMCwKLQkJCQkJCQkJCQkgICAmYnVmZmVyKTsK LQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQorCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJl ZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsCisJCQkJCQkJCQkgICh4bHJlYy5mbGFn cyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwLAorCQkJCQkJCQkJICAmYnVmZmVyKSA9PSBCTEtf TkVFRFNfUkVETykKIAl7CiAJCVBhZ2UJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZm ZXIpOwogCQlPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQ7CkBAIC04OSw2ICsxMTAsOSBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlTaXplCQlkYXRh bGVuOwogCQl4bGhwX2ZyZWV6ZV9wbGFuICpwbGFuczsKIAkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zm c2V0czsKKwkJYm9vbAkJZG9fcHJ1bmU7CisJCWJvb2wJCW1hcmtfYnVmZmVyX2RpcnR5OworCQli b29sCQlzZXRfaGVhcF9sc247CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tE YXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVu ZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZsYWdzLApAQCAtOTcsMTEgKzEyMSwxOCBAQCBo ZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJ CQkgICAmbmRlYWQsICZub3dkZWFkLAogCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNl ZCk7CiAKKwkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVz ZWQgPiAwOworCQlzZXRfaGVhcF9sc24gPSBtYXJrX2J1ZmZlcl9kaXJ0eSA9IGRvX3BydW5lIHx8 IG5wbGFucyA+IDA7CisKKwkJLyogRW5zdXJlIHRoZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8K KwkJQXNzZXJ0KGRvX3BydW5lIHx8IG5wbGFucyA+IDAgfHwKKwkJCSAgIHZtZmxhZ3MgJiBWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpOworCiAJCS8qCiAJCSAqIFVwZGF0ZSBhbGwgbGluZSBwb2lu dGVycyBwZXIgdGhlIHJlY29yZCwgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uCiAJCSAqIGlmIG5l ZWRlZC4KIAkJICovCi0JCWlmIChucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVz ZWQgPiAwKQorCQlpZiAoZG9fcHJ1bmUpCiAJCQloZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShidWZm ZXIsCiAJCQkJCQkJCQkoeGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJ CQkJCQkJCXJlZGlyZWN0ZWQsIG5yZWRpcmVjdGVkLApAQCAtMTM4LDI2ICsxNjksNzIgQEAgaGVh cF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUg c2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAqLwogCQlBc3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMg PT0gZGF0YXB0ciArIGRhdGFsZW4pOwogCisJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikg JiYKKwkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikgPT0gYmxrbm8pOworCisJCS8q CisJCSAqIE5vdyBzZXQgUERfQUxMX1ZJU0lCTEUsIGlmIHJlcXVpcmVkLiBXZSdsbCBvbmx5IGRv IHRoaXMgaWYgd2UgYXJlCisJCSAqIGFsc28gZ29pbmcgdG8gc2V0IGJpdHMgaW4gdGhlIFZNIGxh dGVyLgorCQkgKgorCQkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoIHRoZSBWTSBiaXQgc2V0 IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkgKiBQRF9BTExfVklTSUJMRSBiaXQgY2xlYXIuIElmIHRo YXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1ZW50IHBhZ2UKKwkJICogbW9kaWZpY2F0aW9uIHdv dWxkIGZhaWwgdG8gY2xlYXIgdGhlIFZNIGJpdC4KKwkJICovCisJCWlmICgodm1mbGFncyAmIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXsK KwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCisJCQkvKgorCQkJICogSWYgdGhlIG9ubHkg Y2hhbmdlIHRvIHRoZSBoZWFwIHBhZ2UgaXMgc2V0dGluZyBQRF9BTExfVklTSUJMRSwKKwkJCSAq IHdlIGNhbiBhdm9pZCBzZXR0aW5nIHRoZSBwYWdlIExTTiB1bmxlc3MgY2hlY2tzdW1zIG9yCisJ CQkgKiB3YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkLgorCQkJICovCisJCQlzZXRfaGVhcF9sc24g PSBYTG9nSGludEJpdElzTmVlZGVkKCkgPyB0cnVlIDogc2V0X2hlYXBfbHNuOworCQkJbWFya19i dWZmZXJfZGlydHkgPSB0cnVlOworCQl9CisKIAkJLyoKIAkJICogTm90ZTogd2UgZG9uJ3Qgd29y cnkgYWJvdXQgdXBkYXRpbmcgdGhlIHBhZ2UncyBwcnVuYWJpbGl0eSBoaW50cy4KIAkJICogQXQg d29yc3QgdGhpcyB3aWxsIGNhdXNlIGFuIGV4dHJhIHBydW5lIGN5Y2xlIHRvIG9jY3VyIHNvb24u CiAJCSAqLwogCi0JCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1 ZmZlcik7CisJCWlmIChtYXJrX2J1ZmZlcl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOworCQlpZiAoc2V0X2hlYXBfbHNuKQorCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCX0K IAogCS8qCi0JICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMsIHVw ZGF0ZSB0aGUgZnJlZSBzcGFjZSBtYXAuCisJICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9y IGxpbmUgcG9pbnRlcnMgb3Igd2lsbCBiZSBzZXR0aW5nIGEgcGFnZSBpbgorCSAqIHRoZSB2aXNp YmlsaXR5IG1hcCwgdXBkYXRlIHRoZSBmcmVlIHNwYWNlIG1hcC4KKwkgKgorCSAqIEV2ZW4gaWYg d2UgYXJlIGp1c3QgdXBkYXRpbmcgdGhlIFZNIChhbmQgdGh1cyBub3QgZnJlZWluZyB1cCBhbnkK KwkgKiBzcGFjZSksIHdlJ2xsIHN0aWxsIHVwZGF0ZSB0aGUgRlNNIGZvciB0aGlzIHBhZ2UuIFNp bmNlIEZTTSBpcyBub3QKKwkgKiBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGlj YWxseSwgaXQgZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4KKwkgKiBzdGFuZGJ5cy4gIElmIHRoZSBz dGFuZGJ5IGlzIGxhdGVyIHByb21vdGVkIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbAorCSAqIHNr aXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQg YmVjYW1lCisJICogYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZyBvbiB0aGUg dmFjdXVtIG1vZGUsKSB3aGljaCBpcworCSAqIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFw VmFjdXVtIHByb3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZQorCSAqIHNwYWNlIHZhbHVlcyB0 byB1cHBlciBGU00gbGF5ZXJzOyBsYXRlciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2Vz CisJICogb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkgYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4g Y2F1c2UgbG9uZyBzdGFsbHMKKwkgKiB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2ggcGFnZXMuCisJ ICoKKwkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBh Ym91dCBhIHBhZ2UgdGhhdCBpcworCSAqIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96 ZW4uCiAJICoKIAkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVp bmcgYXBwbGllZCwgc2luY2UgdGhlIEZTTQogCSAqIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFu eXdheS4KKwkgKgorCSAqIFdlIHdhbnQgdG8gYXZvaWQgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9j ayBvbiB0aGUgaGVhcCBidWZmZXIgd2hpbGUKKwkgKiBkb2luZyBJTyAoZWl0aGVyIG9mIHRoZSBG U00gb3IgdGhlIFZNKSwgc28gd2UnbGwgcmVsZWFzZSB0aGUgbG9jayBvbgorCSAqIHRoZSBoZWFw IGJ1ZmZlciBiZWZvcmUgZG9pbmcgZWl0aGVyLgogCSAqLwogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1 ZmZlcikpCiAJewotCQlpZiAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwK LQkJCQkJCSAgIFhMSFBfSEFTX0RFQURfSVRFTVMgfAotCQkJCQkJICAgWExIUF9IQVNfTk9XX1VO VVNFRF9JVEVNUykpCisJCWlmICgoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05T IHwKKwkJCQkJCQlYTEhQX0hBU19ERUFEX0lURU1TIHwKKwkJCQkJCQlYTEhQX0hBU19OT1dfVU5V U0VEX0lURU1TKSkgfHwKKwkJCXZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCiAJ CXsKIAkJCVNpemUJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBh Z2UoYnVmZmVyKSk7CiAKQEAgLTE2OCw2ICsyNDUsMzcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6 ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJZWxzZQogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOwogCX0KKworCS8qCisJICogUmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4g RXZlbiBpZiB3ZSBza2lwcGVkIHVwZGF0aW5nIHRoZSBoZWFwIHBhZ2UKKwkgKiBkdWUgdG8gdGhl IGZpbGUgYmVpbmcgZHJvcHBlZCBvciB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0J3MK KwkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJl Y29yZCB0aGF0IGNsZWFycworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZv cmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0byBi ZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KKwkgKgorCSAqIE5vdGUgdGhhdCBpdCBp cyAqb25seSogb2theSB0aGF0IHdlIGRvIG5vdCBob2xkIGEgbG9jayBvbiB0aGUgaGVhcCBwYWdl CisJICogYmVjYXVzZSB3ZSBhcmUgaW4gcmVjb3ZlcnkgYW5kIGNhbiBleHBlY3Qgbm8gb3RoZXIg d3JpdGVycyB0byBjbGVhcgorCSAqIFBEX0FMTF9WSVNJQkxFIGJlZm9yZSB3ZSBhcmUgYWJsZSB0 byB1cGRhdGUgdGhlIFZNLgorCSAqLworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTICYmCisJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwKKwkJ CQkJCQkJCSAgUkJNX1pFUk9fT05fRVJST1IsCisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJ ICAmdm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQorCXsKKwkJdWludDgJCW9sZF92bWJpdHMg PSAwOworCQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3Ip OworCisJCXZpc2liaWxpdHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOworCQlvbGRf dm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwg dm1mbGFncyk7CisJCS8qIE9ubHkgc2V0IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBw YWdlICovCisJCWlmIChvbGRfdm1iaXRzICE9IHZtZmxhZ3MpCisJCQlQYWdlU2V0TFNOKEJ1ZmZl ckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOworCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7 CisJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKHZtYnVmZmVyKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggZGQwMDkzMWYxNzkuLjY4ZWNmNTA4NDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2lu Y2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Zh Y3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTgzNSw2ICs4MzYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShy ZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKIAkJ CQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJ CQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCkBAIC0yMDQ2LDEyICsyMDQ4LDIz IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1 cGxlcywKICAqIHJlcGxheWluZyAndW51c2VkJyBpdGVtcyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhl eSB3ZXJlIGFsbCBwcmV2aW91c2x5IG1hcmtlZAogICogYXMgZGVhZC4KICAqCisgKiBJZiB0aGUg Vk0gaXMgYmVpbmcgdXBkYXRlZCwgdm1mbGFncyB3aWxsIGNvbnRhaW4gdGhlIGJpdHMgdG8gc2V0 LiBJbiB0aGlzCisgKiBjYXNlLCB2bWJ1ZmZlciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gdXBk YXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBzaG91bGQKKyAqIHN0aWxsIGJlIHBpbm5lZCBhbmQg bG9ja2VkLgorICoKKyAqIHNldF9wZF9hbGxfdmlzIGluZGljYXRlcyB0aGF0IHdlIHNldCBQRF9B TExfVklTSUJMRSBhbmQgdGh1cyBzaG91bGQgdXBkYXRlCisgKiB0aGUgcGFnZSBMU04gd2hlbiBj aGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCBldmVuIGlmIHdlIGRpZCBub3QKKyAq IHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisgKgogICogTm90ZTogVGhpcyBm dW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdmcm96ZW4nIGFycmF5LgogICoKICAqIE5vdGU6IFRo aXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gY2FyZWZ1bCB3aGF0IHlvdSBk byBoZXJlLgogICovCiB2b2lkCiBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkg IHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkgIFRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywKIAkJ CQkJCSAgUHJ1bmVSZWFzb24gcmVhc29uLApAQCAtMjA2Myw2ICsyMDc2LDcgQEAgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bF9o ZWFwX3BydW5lIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwogCXVpbnQ4CQlpbmZvOworCXVp bnQ4CQlyZWdidWZfZmxhZ3M7CiAKIAkvKiBUaGUgZm9sbG93aW5nIGxvY2FsIHZhcmlhYmxlcyBo b2xkIGRhdGEgcmVnaXN0ZXJlZCBpbiB0aGUgV0FMIHJlY29yZDogKi8KIAl4bGhwX2ZyZWV6ZV9w bGFuIHBsYW5zW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKQEAgLTIwNzEsOCArMjA4NSwxOSBAQCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCXhsaHBfcHJ1bmVfaXRlbXMgZGVhZF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIHVudXNl ZF9pdGVtczsKIAlPZmZzZXROdW1iZXIgZnJ6X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2Vd OworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51 c2VkID4gMDsKIAogCXhscmVjLmZsYWdzID0gMDsKKwlyZWdidWZfZmxhZ3MgPSBSRUdCVUZfU1RB TkRBUkQ7CisKKwkvKgorCSAqIFdlIGNhbiBhdm9pZCBhbiBGUEkgaWYgdGhlIG9ubHkgbW9kaWZp Y2F0aW9uIHdlIGFyZSBtYWtpbmcgdG8gdGhlIGhlYXAKKwkgKiBwYWdlIGlzIHRvIHNldCBQRF9B TExfVklTSUJMRSBhbmQgY2hlY2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGRpc2FibGVkLgorCSAq LworCWlmICghZG9fcHJ1bmUgJiYKKwkJbmZyb3plbiA9PSAwICYmCisJCSghc2V0X3BkX2FsbF92 aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZf Tk9fSU1BR0U7CiAKIAkvKgogCSAqIFByZXBhcmUgZGF0YSBmb3IgdGhlIGJ1ZmZlci4gIFRoZSBh cnJheXMgYXJlIG5vdCBhY3R1YWxseSBpbiB0aGUKQEAgLTIwODAsNyArMjEwNSwxMSBAQCBsb2df aGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog CSAqIHBhZ2UgaW1hZ2UsIHRoZSBhcnJheXMgY2FuIGJlIG9taXR0ZWQuCiAJICovCiAJWExvZ0Jl Z2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5E QVJEKTsKKwlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCByZWdidWZfZmxhZ3MpOworCisJ aWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJCVhMb2dSZWdpc3RlckJ1 ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CisKIAlpZiAobmZyb3plbiA+IDApCiAJewogCQlpbnQJCQlu cGxhbnM7CkBAIC0yMTM3LDYgKzIxNjYsOCBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIFByZXBhcmUgdGhlIG1haW4geGxf aGVhcF9wcnVuZSByZWNvcmQuICBXZSBhbHJlYWR5IHNldCB0aGUgWExIUF9IQVNfKgogCSAqIGZs YWcgYWJvdmUuCiAJICovCisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX1ZNRkxBR1M7CiAJaWYgKFJlbGF0aW9uSXNBY2Nl c3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsYXRpb24pKQogCQl4bHJlYy5mbGFncyB8PSBYTEhQ X0lTX0NBVEFMT0dfUkVMOwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQp KQpAQCAtMjE1MSw2ICsyMTgyLDggQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6 ZU9mSGVhcFBydW5lKTsKIAlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoY29uZmxpY3RfeGlkKSkK IAkJWExvZ1JlZ2lzdGVyRGF0YSgmY29uZmxpY3RfeGlkLCBzaXplb2YoVHJhbnNhY3Rpb25JZCkp OworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQlYTG9nUmVnaXN0 ZXJEYXRhKCZ2bWZsYWdzLCBzaXplb2YodWludDgpKTsKIAogCXN3aXRjaCAocmVhc29uKQogCXsK QEAgLTIxNjksNSArMjIwMiwxNiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCX0KIAlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hF QVAyX0lELCBpbmZvKTsKIAotCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNw dHIpOworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQlQYWdlU2V0 TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCByZWNwdHIpOworCisJLyoKKwkgKiBJZiBwcnVu aW5nIG9yIGZyZWV6aW5nIHR1cGxlcyBvciBzZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIHdo ZW4KKwkgKiBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBhcmUgZW5hYmxlZCwgd2UgbXVzdCBi dW1wIHRoZSBMU04uIFRvcm4KKwkgKiBwYWdlcyBhcmUgcG9zc2libGUgaWYgd2UgdXBkYXRlIFBE X0FMTF9WSVNJQkxFIHdpdGhvdXQgYnVtcGluZyB0aGUgTFNOLAorCSAqIGJ1dCB0aGlzIGlzIGRl ZW1lZCBva2F5IGZvciBwYWdlIGhpbnQgdXBkYXRlcy4KKwkgKi8KKwlpZiAoZG9fcHJ1bmUgfHwg bmZyb3plbiA+IDAgfHwKKwkJKHNldF9wZF9hbGxfdmlzICYmIFhMb2dIaW50Qml0SXNOZWVkZWQo KSkpCisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDhhNjJhOTNlZWU1Li40NjBjZGJkODQx NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDY0LDExICs0NjQsMTMg QEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051 bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoKIAkJCQkJCSAgIGludCBudW1fb2Zmc2V0cyk7CiBz dGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jlc2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMg dm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKLXN0YXRpYyBib29s IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96 ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJ CQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9scGRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAorCQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKKwkJCQkJCQkJCQkJCSAgIGludCBhbGxvd2Vk X251bV9vZmZzZXRzLAorCQkJCQkJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3Jl bHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1 dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1f ZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0yODQ3LDggKzI4NDksMTEgQEAgbGF6 eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFn ZV07CiAJaW50CQkJbnVudXNlZCA9IDA7CiAJVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQ7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlib29sCQlhbGxfZnJvemVuOwogCUxWU2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOwor CXVpbnQ4CQl2bWZsYWdzID0gMDsKKwlib29sCQlzZXRfcGRfYWxsX3ZpcyA9IGZhbHNlOwogCiAJ QXNzZXJ0KHZhY3JlbC0+ZG9faW5kZXhfdmFjdXVtaW5nKTsKIApAQCAtMjg1OSw2ICsyODY0LDIw IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCSBWQUNVVU1fRVJSQ0JfUEhBU0VfVkFDVVVN X0hFQVAsIGJsa25vLAogCQkJCQkJCSBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAorCWlmIChoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhjZXB0X2xwZGVhZCh2YWNyZWwtPnJlbCwgYnVmZmVyLAor CQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkJICAg ZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAorCQkJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZp c2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKKwl7 CisJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJaWYgKGFsbF9mcm96 ZW4pCisJCXsKKwkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQpKTsKKwkJfQor CX0KKwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1f b2Zmc2V0czsgaSsrKQpAQCAtMjg3OCw2ICsyODk3LDE4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CS8qIEF0dGVtcHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVyIGFycmF5IG5vdyAqLwogCVBhZ2VU cnVuY2F0ZUxpbmVQb2ludGVyQXJyYXkocGFnZSk7CiAKKwlpZiAoKHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpICE9IDApCisJeworCQlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUo cGFnZSkpOworCQlzZXRfcGRfYWxsX3ZpcyA9IHRydWU7CisJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQl2 aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUodmFjcmVsLT5yZWwsCisJCQkJCQkJCSBibGtubywKKwkJ CQkJCQkJIHZtYnVmZmVyLCB2bWZsYWdzKTsKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9j dXRvZmZfeGlkOworCX0KKwogCS8qCiAJICogTWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdlIHdy aXRlIFdBTC4KIAkgKi8KQEAgLTI4ODcsNyArMjkxOCwxMCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0JCQkJCQkJCSAgSW52YWxpZFRyYW5z YWN0aW9uSWQsCisJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJ CQkJICBzZXRfcGRfYWxsX3ZpcywKKwkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAg ZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJlZCAqLwogCQkJCQkJCQkgIFBSVU5FX1ZB Q1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwpAQCAtMjg5Niwz OSArMjkzMCwxMiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC bG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB1bnVzZWQsIG51bnVz ZWQpOwogCX0KIAotCS8qCi0JICogRW5kIGNyaXRpY2FsIHNlY3Rpb24sIHNvIHdlIHNhZmVseSBj YW4gZG8gdmlzaWJpbGl0eSB0ZXN0cyAod2hpY2gKLQkgKiBwb3NzaWJseSBuZWVkIHRvIHBlcmZv cm0gSU8gYW5kIGFsbG9jYXRlIG1lbW9yeSEpLiBJZiB3ZSBjcmFzaCBub3cgdGhlCi0JICogcGFn ZSAoaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHZtIGJpdCkgbWlnaHQgbm90IGJlIG1hcmtl ZCBhbGwKLQkgKiB2aXNpYmxlLCBidXQgdGhhdCdzIGZpbmUuIEEgbGF0ZXIgdmFjdXVtIHdpbGwg Zml4IHRoYXQuCi0JICovCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyoKLQkgKiBOb3cgdGhh dCB3ZSBoYXZlIHJlbW92ZWQgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSwgb25jZSBh Z2FpbgotCSAqIGNoZWNrIGlmIHRoZSBwYWdlIGhhcyBiZWNvbWUgYWxsLXZpc2libGUuICBUaGUg cGFnZSBpcyBhbHJlYWR5IG1hcmtlZAotCSAqIGRpcnR5LCBleGNsdXNpdmVseSBsb2NrZWQsIGFu ZCwgaWYgbmVlZGVkLCBhIGZ1bGwgcGFnZSBpbWFnZSBoYXMgYmVlbgotCSAqIGVtaXR0ZWQuCi0J ICovCi0JQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RY bWluLAotCQkJCQkJCQkgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsICZ2YWNy ZWwtPm9mZm51bSkpCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkg IT0gMCkKIAl7Ci0JCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0K LQkJaWYgKGFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU47Ci0JCX0KLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1h cF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFsaWRYTG9nUmVj UHRyLAotCQkJCQkJICB2bWJ1ZmZlciwgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJICBm bGFncyk7Ci0KIAkJLyogQ291bnQgdGhlIG5ld2x5IHNldCBWTSBwYWdlIGZvciBsb2dnaW5nICov CisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKIAkJaWYgKGFsbF9mcm96ZW4pCiAJCQl2YWNyZWwtPnZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwpAQCAtMzU5NCw2ICszNjAxLDI1IEBAIGRlYWRf aXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAJdmFjcmVsLT5wdnMgPSBOVUxMOwog fQogCisvKgorICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9s cGRlYWQoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IKKyAqIGNhbGxlcnMgdGhhdCBleHBlY3Qgbm8g TFBfREVBRCBvbiB0aGUgcGFnZS4KKyAqLworYm9vbAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK K3sKKworCXJldHVybiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhjZXB0X2xwZGVhZChyZWws IGJ1ZiwgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkJCSAg YWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJ CQkJCQkJICBsb2dnaW5nX29mZm51bSk7Cit9CisKIC8qCiAgKiBDaGVjayBpZiBldmVyeSB0dXBs ZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpcyB2aXNpYmxlIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUK ICAqIHRyYW5zYWN0aW9ucy4KQEAgLTM2MDcsMjMgKzM2MzMsMzUgQEAgZGVhZF9pdGVtc19jbGVh bnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKICAqIHZpc2libGUgdHVwbGVzLiBTZXRzICphbGxfZnJv emVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdlIGlzCiAgKiBmcm96ZW4uCiAg KgotICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBvZiBsYXp5X3NjYW5fcHJ1bmUo KS4gIElmIHlvdSBjaGFuZ2UKLSAqIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5 dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgotICogYXNzZXJ0aW9uIGNhbGxzIHVz IHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlIHRvIGF2b2lk Ci0gKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCisgKiBkZWFkb2Zmc2V0cyBh cmUgdGhlIG9mZnNldHMgd2Uga25vdyBhYm91dCBhbmQgYXJlIGFib3V0IHRvIHNldCBMUF9VTlVT RUQuCisgKiBhbGxvd2VkX251bV9vZmZzZXRzIGlzIHRoZSBudW1iZXIgb2YgdGhvc2UuIEFzIGxv bmcgYXMgdGhlIExQX0RFQUQgaXRlbXMgd2UKKyAqIGVuY291bnRlciBvbiB0aGUgcGFnZSBtYXRj aCB0aG9zZSBleGFjdGx5LCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlCisgKiBpbiB0 aGUgVk0uCisgKgorICogQ2FsbGVycyBsb29raW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlz IGFsbC12aXNpYmxlIGNhbiBjYWxsCisgKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKS4KKyAq CisgKiBUaGlzIGlzIHNpbWlsYXIgbG9naWMgdG8gdGhhdCBpbiBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKCkgSWYKKyAqIHlvdSBjaGFuZ2UgYW55dGhpbmcgaGVyZSwgbWFr ZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5jLiAgTm90ZQorICogdGhhdCBhbiBh c3NlcnRpb24gY2FsbHMgdXMgdG8gdmVyaWZ5IHRoYXQgZXZlcnlib2R5IHN0aWxsIGFncmVlcy4g IEJlIHN1cmUKKyAqIHRvIGF2b2lkIGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4K ICAqLwogc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJIGJv b2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZf eGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCitoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGVfZXhjZXB0X2xwZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJICAgaW50IGFsbG93ZWRfbnVtX29mZnNldHMsCisJ CQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5n X29mZm51bSkKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVt YmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwogCU9mZnNldE51bWJlciBv ZmZudW0sCiAJCQkJbWF4b2ZmOwogCWJvb2wJCWFsbF92aXNpYmxlID0gdHJ1ZTsKKwlPZmZzZXRO dW1iZXIgY3VycmVudF9kZWFkX29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCXNpemVf dAkJY3VycmVudF9udW1fb2Zmc2V0cyA9IDA7CiAKIAkqdmlzaWJpbGl0eV9jdXRvZmZfeGlkID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJKmFsbF9mcm96ZW4gPSB0cnVlOwpAQCAtMzY1NSw5ICsz NjkzLDggQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKIAkJICovCiAJCWlmIChJdGVtSWRJc0RlYWQoaXRlbWlkKSkKIAkJewotCQkJYWxsX3Zpc2li bGUgPSBmYWxzZTsKLQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQlicmVhazsKKwkJCWN1cnJl bnRfZGVhZF9vZmZzZXRzW2N1cnJlbnRfbnVtX29mZnNldHMrK10gPSBvZmZudW07CisJCQljb250 aW51ZTsKIAkJfQogCiAJCUFzc2VydChJdGVtSWRJc05vcm1hbChpdGVtaWQpKTsKQEAgLTM3MjQs NyArMzc2MSwyMyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHBy b2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAkqbG9nZ2luZ19vZmZudW0gPSBJbnZhbGlkT2Zm c2V0TnVtYmVyOwogCi0JcmV0dXJuIGFsbF92aXNpYmxlOworCS8qIElmIHdlIGFscmVhZHkga25v dyBpdCdzIG5vdCBhbGwtdmlzaWJsZSwgcmV0dXJuIGZhbHNlICovCisJaWYgKCFhbGxfdmlzaWJs ZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogSWYgd2Ugd2VyZW4ndCBhbGxvd2VkIGFueSBkZWFk IG9mZnNldHMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYWxsb3dlZF9udW1fb2Zmc2V0cyA9PSAwKQor CQlyZXR1cm4gY3VycmVudF9udW1fb2Zmc2V0cyA9PSAwOworCisJLyogSWYgdGhlIG51bWJlciBv ZiBkZWFkIG9mZnNldHMgaGFzIGNoYW5nZWQsIHRoYXQncyB3cm9uZyAqLworCWlmIChjdXJyZW50 X251bV9vZmZzZXRzICE9IGFsbG93ZWRfbnVtX29mZnNldHMpCisJCXJldHVybiBmYWxzZTsKKwor CUFzc2VydChkZWFkb2Zmc2V0cyk7CisKKwkvKiBUaGUgZGVhZCBvZmZzZXRzIG11c3QgYmUgdGhl IHNhbWUgZGVhZCBvZmZzZXRzICovCisJcmV0dXJuIG1lbWNtcChjdXJyZW50X2RlYWRfb2Zmc2V0 cywgZGVhZG9mZnNldHMsCisJCQkJICBhbGxvd2VkX251bV9vZmZzZXRzICogc2l6ZW9mKE9mZnNl dE51bWJlcikpID09IDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jCmluZGV4IGI0OGQ3ZGMxZDI0Li5kNmM4NmNjYWMyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2hlYXBkZXNjLmMKQEAgLTI2Niw2ICsyNjYsNyBAQCBoZWFwMl9kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIHsKIAljaGFyCSAgICpyZWMgPSBYTG9n UmVjR2V0RGF0YShyZWNvcmQpOwogCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3Jk KSAmIH5YTFJfSU5GT19NQVNLOworCWNoYXIJICAgKm1haW5kYXRhcHRyID0gcmVjICsgU2l6ZU9m SGVhcFBydW5lOwogCiAJaW5mbyAmPSBYTE9HX0hFQVBfT1BNQVNLOwogCWlmIChpbmZvID09IFhM T0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTIHx8CkBAIC0yNzgsNyArMjc5LDggQEAgaGVhcDJfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXsKIAkJCVRyYW5z YWN0aW9uSWQgY29uZmxpY3RfeGlkOwogCi0JCQltZW1jcHkoJmNvbmZsaWN0X3hpZCwgcmVjICsg U2l6ZU9mSGVhcFBydW5lLCBzaXplb2YoVHJhbnNhY3Rpb25JZCkpOworCQkJbWVtY3B5KCZjb25m bGljdF94aWQsIG1haW5kYXRhcHRyLCBzaXplb2YoVHJhbnNhY3Rpb25JZCkpOworCQkJbWFpbmRh dGFwdHIgKz0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwogCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAldSIsCiAJCQkJCQkJIGNvbmZsaWN0X3hpZCk7 CkBAIC0yODcsNiArMjg5LDE1IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgaXNDYXRhbG9nUmVs OiAlYyIsCiAJCQkJCQkgeGxyZWMtPmZsYWdzICYgWExIUF9JU19DQVRBTE9HX1JFTCA/ICdUJyA6 ICdGJyk7CiAKKwkJaWYgKHhscmVjLT5mbGFncyAmIFhMSFBfSEFTX1ZNRkxBR1MpCisJCXsKKwkJ CXVpbnQ4CQl2bWZsYWdzOworCisJCQltZW1jcHkoJnZtZmxhZ3MsIG1haW5kYXRhcHRyLCBzaXpl b2YodWludDgpKTsKKwkJCW1haW5kYXRhcHRyICs9IHNpemVvZih1aW50OCk7CisJCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsIHZtZmxhZ3MpOworCQl9CisKIAkJ aWYgKFhMb2dSZWNIYXNCbG9ja0RhdGEocmVjb3JkLCAwKSkKIAkJewogCQkJU2l6ZQkJZGF0YWxl bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCBhMmJkNWE4OTdmOC4uOGI0NzI5NWVmYTIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTM0NCw2ICszNDQsMTIgQEAgZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3Vw ZGF0ZV9hbmRfdW5sb2NrKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3VubG9jayhSZWxhdGlvbiByZWxhdGlv biwKIAkJCQkJCQkJSGVhcFR1cGxlIG9sZHR1cCwgQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBi b29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJ CQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJIGJvb2wgKmFsbF9m cm96ZW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAor CQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogZXh0ZXJuIGJvb2wgaGVh cF9wcmVwYXJlX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkg IGNvbnN0IHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAogCQkJCQkJCQkJICBIZWFwUGFn ZUZyZWV6ZSAqcGFnZWZyeiwKQEAgLTM4OCw2ICszOTQsOSBAQCBleHRlcm4gdm9pZCBoZWFwX3Bh Z2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJ CQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQpOwogZXh0ZXJuIHZv aWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zm c2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJ CQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkJCQkgIGJvb2wgdm1fbW9kaWZpZWRfaGVhcF9w YWdlLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAg Ym9vbCBjbGVhbnVwX2xvY2ssCiAJCQkJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMjc3ZGY2YjNjZjAuLmNlYWU5YzA4M2ZmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjk1LDYgKzI5NSw5IEBAIHR5cGVkZWYgc3RydWN0IHhs X2hlYXBfcHJ1bmUKIAogI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBf cHJ1bmUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCiAKKy8qIElmIHRoZSByZWNvcmQgc2hvdWxk IHVwZGF0ZSB0aGUgVk0sIHRoaXMgaXMgdGhlIG5ldyB2YWx1ZSAqLworI2RlZmluZQkJWExIUF9I QVNfVk1GTEFHUwkJCSgxIDw8IDApCisKIC8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBk dXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAjZGVmaW5lCQlYTEhQX0lTX0NB VEFMT0dfUkVMCQkJKDEgPDwgMSkKIAotLSAKMi40My4wCgo= --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0010-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Disposition: attachment; filename="v4-0010-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5hf9 RnJvbSBiZjlmNWNhYWNmYjBmMWYxMmJmZjM1ZThjZDAwNDUxOWRlZWE2ZTExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAxMC8xM10gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJCiBwcnVuZS9mcmVlemUKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVj b3JkIGZvciBldmVyeSBibG9jayByZW5kZXJlZAphbGwtdmlzaWJsZS9mcm96ZW4gYnkgdmFjdXVt J3MgcGhhc2UgSSwgaW5jbHVkZSB0aGUgY2hhbmdlcyB0byB0aGUgVk0gaW4KdGhlIHhsX2hlYXBf cHJ1bmUgcmVjb3JkIGFscmVhZHkgZW1pdHRlZC4KClRoaXMgaXMgb25seSBlbmFibGVkIGZvciB2 YWN1dW0ncyBwcnVuZS9mcmVlemUgd29yaywgbm90IGZvciBvbi1hY2Nlc3MKcHJ1bmluZy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCA0MDIgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAg MzAgLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICAxNSArLQogMyBm aWxlcyBjaGFuZ2VkLCAyMzcgaW5zZXJ0aW9ucygrKSwgMjEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNzk3YjM3MTA4NjIuLjYyMDhmNTUxNzZmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDQsNiArNDQsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hldGhlciB0byBhdHRlbXB0 IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWZyZWV6ZTsKKworCS8qCisJICogV2hldGhlciBv ciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21lIGJvb2trZWVw aW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlrZSB0byB1cGRh dGUgdGhlIFZNLgorCSAqLworCWJvb2wJCXVwZGF0ZV92bTsKKwogCXN0cnVjdCBWYWN1dW1DdXRv ZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkg KgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1bmluZyBpdHNlbGYgZm9yIHRo ZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gYWJv dXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQotCSAqIHBhZ2UgaXMgaW4gYWZ0 ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxsZXIuICBUaGV5IGFyZQotCSAq IGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1bHQgYXQgdGhlIGVuZC4KKwkg KiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4gdXBkYXRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgY2FsbGVyLiAgVGhleSBh cmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJlZXplUmVzdWx0IGF0IHRoZSBl bmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0eXBlZGVmIHN0cnVjdAogCSAq IGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxs X2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxs X2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkgKiBjb252ZW5p ZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNp ZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUg YWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVuZC4KKwkgKiBO T1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRl bXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLiBXZSBpZ25vcmUg TFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhlciBvciBub3QgdG8gb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5nIHRoZQorCSAqIHNuYXBzaG90 IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemluZyB0dXBsZXMuCiAJICoKIAkg KiBhbGxfZnJvemVuIHNob3VsZCBvbmx5IGJlIGNvbnNpZGVyZWQgdmFsaWQgaWYgYWxsX3Zpc2li bGUgaXMgYWxzbyBzZXQ7CiAJICogd2UgZG9uJ3QgYm90aGVyIHRvIGNsZWFyIHRoZSBhbGxfZnJv emVuIGZsYWcgZXZlcnkgdGltZSB3ZSBjbGVhciB0aGUKQEAgLTM3NywxMSArMzg0LDE1IEBAIGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKICAqIGNvbnNp ZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBz byBub3cuICBUaGUKICAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQn IGFuZCAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKICAqIGFyZSByZXF1aXJlZCB3aGVuIGZy ZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNvCi0g KiBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhp dCwgdG8gaW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBh bHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgbm90IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycworICogc2V0IHBy ZXN1bHQtPmFsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIG9uIGV4aXQsIGZvciB1 c2Ugd2hlbgorICogdmFsaWRhdGluZyB0aGUgY2hhbmdlcyBtYWRlIHRvIHRoZSBWTS4gVGhleSBh cmUgYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuCisgKiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIG5vdCBzZXQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKICAqIHRo YXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9uLgogICoKKyAqIElmIEhFQVBfUEFH RV9QUlVORV9VUERBVEVfVk0gaXMgc2V0IGFuZCB0aGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhl IHBhZ2UKKyAqIGhhcyBjaGFuZ2VkLCB3ZSB3aWxsIHVwZGF0ZSB0aGUgVk0gYXQgdGhlIHNhbWUg dGltZSBhcyBwcnVuaW5nIGFuZCBmcmVlemluZworICogdGhlIGhlYXAgcGFnZS4KKyAqCiAgKiBi bGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFz IG9mIHRoZSBsYXN0IGNhbGwKICAqIHRvIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiB2 bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQgbWF5IGFscmVhZHkKICAqIGNvbnRhaW4gdGhlIHJl cXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KQEAgLTM5Niw2ICs0MDcsOCBAQCBp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCiAgKiAgIEZS RUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kIHdpbGwg cmV0dXJuCiAgKiAgICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2Fs bGVyLgogICoKKyAqICAgVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0IHRoZSBw YWdlJ3Mgc3RhdHVzIGluIHRoZSBWTS4KKyAqCiAgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVl emUgY3V0b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVNIGF0IHRoZSBiZWdpbm5pbmcKICAqIG9m IHZhY3V1bWluZyB0aGUgcmVsYXRpb24uICBSZXF1aXJlZCBpZiBIRUFQX1BSVU5FX0ZSRUVaRSBv cHRpb24gaXMgc2V0LgogICogY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQgdG8gZGV0 ZXJtaW5lIGlmIGRlYWQgdHVwbGVzIGFyZQpAQCAtNDQxLDE1ICs0NTQsMTkgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJYm9v bAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwogCWJvb2wJCWRvX2hpbnQ7CisJYm9vbAkJ ZG9fc2V0X3ZtOwogCXVpbnQ4CQl2bWZsYWdzID0gMDsKIAl1aW50OAkJb2xkX3ZtYml0cyA9IDA7 CiAJYm9vbAkJaGludF9iaXRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53 YWxfZnBpOworCWJvb2wJCWFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQgPSBmYWxzZTsKKwlib29s CQlzZXRfcGRfYWxsX3Zpc2libGUgPSBmYWxzZTsKIAogCS8qIENvcHkgcGFyYW1ldGVycyB0byBw cnN0YXRlICovCiAJcHJzdGF0ZS52aXN0ZXN0ID0gdmlzdGVzdDsKIAlwcnN0YXRlLm1hcmtfdW51 c2VkX25vdyA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVykgIT0g MDsKIAlwcnN0YXRlLmZyZWV6ZSA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkg IT0gMDsKKwlwcnN0YXRlLnVwZGF0ZV92bSA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQ REFURV9WTSkgIT0gMDsKIAlwcnN0YXRlLmN1dG9mZnMgPSBjdXRvZmZzOwogCiAJLyoKQEAgLTQ5 Niw1MCArNTEzLDUzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5kZWFk b2Zmc2V0czsKIAogCS8qCi0JICogQ2FsbGVyIG1heSB1cGRhdGUgdGhlIFZNIGFmdGVyIHdlJ3Jl IGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRoZXIgdGhlIHBhZ2Ugd2lsbCBi ZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVuaW5nIGFuZAotCSAqIGZyZWV6 aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hl dGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQKKwkgKiBhbGwtZnJv emVuIGZvciB1c2UgaW4gb3Bwb3J0dW5pc3RpYyBmcmVlemluZyBhbmQgdG8gdXBkYXRlIHRoZSBW TSBpZgorCSAqIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCisJICoKKwkgKiBDdXJyZW50bHksIG9u bHkgVkFDVVVNIGF0dGVtcHRzIGZyZWV6aW5nIGFuZCBzZXR0aW5nIHRoZSBWTSBiaXRzLiBCdXQK KwkgKiBvdGhlciBjYWxsZXJzIGNvdWxkIGRvIGVpdGhlciBvbmUuIFRoZSB2aXNpYmlsaXR5IGJv b2trZWVwaW5nIGlzCisJICogcmVxdWlyZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgKGlu IGFkZGl0aW9uIHRvIHNldHRpbmcgdGhlIFZNCisJICogYml0cykgYmVjYXVzZSB3ZSBvbmx5IGNv bnNpZGVyIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nIHR1cGxlcyBpZiB0aGUKKwkgKiB3aG9s ZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJvemVuIG9yIGlmIHRoZSB3aG9sZSBwYWdlIHdpbGwg YmUgZnJvemVuCisJICogZXhjZXB0IGZvciBkZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVtb3Zl ZCBieSB2YWN1dW0uCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIHNldHMgdGhlIFZN IGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkgKiB0aGUgYm9va2tlZXBpbmcg aWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhhdCdzIHRpZWQgdG8KLQkgKiBI RUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUgYSBzZXBhcmF0ZSBmbGFnIGlm IHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMgd2l0aG91dCBhbHNvIGZyZWV6 aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5nIHRoZSBWTSBiaXRzLgorCSAq IERlYWQgdHVwbGVzIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bWlu ZyBzaG91bGQgbm90CisJICogcHJlY2x1ZGUgdXMgZnJvbSBvcHBvcnR1bmlzdGljYWxseSBmcmVl emluZywgc28gd2UgZG8gbm90IGNsZWFyCisJICogYWxsX3Zpc2libGUgd2hlbiB3ZSBzZWUgTFBf REVBRCBpdGVtcy4gV2UgZml4IHRoYXQgYWZ0ZXIgZGV0ZXJtaW5pbmcKKwkgKiB3aGV0aGVyIG9y IG5vdCB0byBmcmVlemUgYnV0IGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0byB1cGRh dGUKKwkgKiB0aGUgVk0gc28gdGhhdCB3ZSBkb24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3Rs eS4KIAkgKgotCSAqIEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVyIGl0 IGNhbiBzZXQgdGhlIFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFuZCAn YWxsX2Zyb3plbicgZm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3aG9s ZSBwYWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNhbGx5 Ci0JICogZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUgdGhl IHdob2xlIHBhZ2UgaWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUgbm90 IHZpc2libGUgdG8gZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMgd2hp Y2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gKLQkg KiB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBwcmVj bHVkZSB1cyBmcm9tCi0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNlIG9m IHRoYXQsIHdlIGRvIG5vdCBjbGVhcgotCSAqIGFsbF92aXNpYmxlIHdoZW4gd2Ugc2VlIExQX0RF QUQgaXRlbXMuICBXZSBmaXggdGhhdCBhdCB0aGUgZW5kIG9mIHRoZQotCSAqIGZ1bmN0aW9uLCB3 aGVuIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlciwgc28gdGhhdCB0aGUgY2FsbGVy Ci0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KKwkgKiBJZiBub3QgZnJl ZXppbmcgb3IgdXBkYXRpbmcgdGhlIFZNLCB3ZSBvdGhlcndpc2UgYXZvaWQgdGhlIGV4dHJhCisJ ICogYm9va2tlZXBpbmcuIEluaXRpYWxpemluZyBhbGxfdmlzaWJsZSB0byBmYWxzZSBhbGxvd3Mg c2tpcHBpbmcgdGhlIHdvcmsKKwkgKiB0byB1cGRhdGUgdGhlbSBpbiBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAJICovCiAJaWYgKHByc3RhdGUuZnJlZXplKQogCXsK IAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9IHRy dWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUudXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS5hbGxf dmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNl CiAJewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRo ZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJ cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0 eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkg KiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25m bGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0u ICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBp cyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5p bmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUg cGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5z IEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMg dGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkgKiBvbGRlciB0aGFu IE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRh dGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlz IGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQg aXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRhaW5lZCwgaXQgY2Fu IGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgorCSAq IFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9v ciBmcmVlemluZyBhbGwKKwkgKiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgdXBkYXRl ZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIKKwkgKiBiZWNhdXNlIHZhY3V1bSBkb2Vz IGFzc2VydC1idWlsZCBvbmx5IHZhbGlkYXRpb24gb24gdGhlIHBhZ2UgdXNpbmcgdGhpcworCSAq IGZpZWxkLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CiAKQEAgLTgyNyw2ICs4NDcsNjggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqLwogCX0KIAorCS8q CisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8gaWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zp c2libGUgZWFybGllciBvbiB0bworCSAqIG1ha2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5v dCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZlY3RlZCBieSB0aGUKKwkgKiBzaG9ydC10ZXJtIHBy ZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBUaGVzZSBMUF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBl ZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAg SXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBh c3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAqIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3pl biwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0 aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFsaXplZCwgdW5zZXQgYWxsX3Zpc2libGUgaWYgdGhl cmUgYXJlCisJICogYW55IExQX0RFQUQgaXRlbXMgb24gdGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJl ZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YKKwkgKiB0aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRv IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byB1cGRhdGUgdGhlIFZNLgorCSAqCisJICogS2Vl cCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgYWxsLWZyb3plbiBleGNlcHQg TFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUgcHVycG9zZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJICogdGhvdWdoLgorCSAqLworCWFsbF9mcm96ZW5f ZXhjZXB0X2xwX2RlYWQgPSBwcnN0YXRlLmFsbF9mcm96ZW47CisJaWYgKHByc3RhdGUubHBkZWFk X2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0 ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQorCisJLyoKKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNp YmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICog b2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zp c2libGUgYW5kCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICovCisJaWYgKHByc3RhdGUu dXBkYXRlX3ZtKQorCXsKKwkJLyoKKwkJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMg ZG9lcyBub3QgbmVlZCB0byBiZSBpbiBhIGNyaXRpY2FsCisJCSAqIHNlY3Rpb24sIHNvIHdlIGRv IGl0IGZpcnN0LiBJZiBQRF9BTExfVklTSUJMRSBpcyBpbmNvcnJlY3RseSBzZXQsCisJCSAqIHdl IG1heSBtYXJrIHRoZSBoZWFwIHBhZ2UgYnVmZmVyIGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1 cCBkb2luZworCQkgKiBzbyBhZ2FpbiBsYXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBp c3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgKKwkJICogb2YgVk0gY29ycnVwdGlvbiwgc28gd2UgZG9u J3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgZXh0cmEKKwkJICogcGVyZm9ybWFuY2Ugb3Zlcmhl YWQuCisJCSAqLworCQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9u LAorCQkJCQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtf a25vd25fYXYsIHByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCisJCXsKKwkJCS8qIElm IHdlIGZpeCBjb3JydXB0aW9uLCBkb24ndCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KKwkJfQor CisJCS8qIERldGVybWluZSBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvIHNldCB0aGUgVk0gYW5kIHdo aWNoIGJpdHMgdG8gc2V0LiAqLworCQllbHNlIGlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCisJ CQkJICghYmxrX2tub3duX2F2IHx8CisJCQkJICAocHJzdGF0ZS5hbGxfZnJvemVuICYmICFWTV9B TExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25vLCAmdm1idWZmZXIpKSkpCisJCXsKKwkJCXZtZmxh Z3MgfD0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJCWlmIChwcnN0YXRlLmFsbF9mcm96 ZW4pCisJCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisJCX0KKwl9CisK Kwlkb19zZXRfdm0gPSB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCXNldF9w ZF9hbGxfdmlzaWJsZSA9IGRvX3NldF92bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdlKTsKKwor CS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIgaW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2 bWZsYWdzICovCisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IHZtZmxhZ3M7CisKIAkvKiBBbnkgZXJy b3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklU X1NFQ1RJT04oKTsKIApAQCAtODQ4LDEzICs5MzAsMTMgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJCSAqIElmIHRo YXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlzIGEgbm9uLVdBTC1sb2dn ZWQKIAkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUgdGhlIHBh Z2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJlbG93LgorCQkgKiB0aGUg YnVmZmVyIGRpcnR5IGFuZCBlbWl0IFdBTCBiZWxvdy4KIAkJICovCi0JCWlmICghZG9fZnJlZXpl ICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmICFkb19zZXRf dm0pCiAJCQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRv X3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3Nl dF92bSkKIAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWly IHBhZ2UgZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtODY4LDEyICs5NTAs MzQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBs ZXMoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVm ZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKHNldF9wZF9hbGxfdmlzaWJsZSkKKwkJCVBhZ2VTZXRB bGxWaXNpYmxlKHBhZ2UpOworCisJCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgc2V0X3Bk X2FsbF92aXNpYmxlKQorCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJaWYgKGRvX3Nl dF92bSkKKwkJeworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVsYXRpb24sIGJs b2Nrbm8sCisJCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKKworCQkJaWYgKG9sZF92 bWJpdHMgPT0gdm1mbGFncykKKwkJCXsKKwkJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJf TE9DS19VTkxPQ0spOworCQkJCWRvX3NldF92bSA9IGZhbHNlOworCQkJCS8qIDAgb3V0IHZtZmxh Z3Mgc28gd2UgZG9uJ3QgZW1pdCBWTSB1cGRhdGUgV0FMICovCisJCQkJdm1mbGFncyA9IDA7CisJ CQl9CisJCX0KIAogCQkvKgotCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkVfRlJFRVpF IHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkCisJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9Q UlVORV9GUkVFWkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQuIElmCisJCSAqIHdlIHdlcmUg b25seSB1cGRhdGluZyB0aGUgVk0gYW5kIGl0IHR1cm5zIG91dCBpdCB3YXMgYWxyZWFkeSBzZXQs CisJCSAqIHdlIHdpbGwgaGF2ZSB1bnNldCBkb19zZXRfdm0gYWJvdmUuIEFzIHN1Y2gsIGNoZWNr IGl0IGFnYWluIGJlZm9yZQorCQkgKiBlbWl0dGluZyB0aGUgcmVjb3JkLgogCQkgKi8KLQkJaWYg KFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQorCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxh dGlvbikgJiYgKGRvX3NldF92bSB8fCBkb19wcnVuZSB8fCBkb19mcmVlemUpKQogCQl7CiAJCQkv KgogCQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3Jk IHNob3VsZCBiZSB0aGUKQEAgLTg4NSwzNSArOTg5LDU3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJICogb24gdGhlIHN0 YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMKIAkJCSAq IHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgogCQkJICovCi0JCQlUcmFuc2FjdGlv bklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCQlUcmFu c2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKwkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkJCS8qCi0JCQkgKiBXZSBjYW4gdXNlIHRoZSB2aXNp YmlsaXR5X2N1dG9mZl94aWQgYXMgb3VyIGN1dG9mZiBmb3IKLQkJCSAqIGNvbmZsaWN0cyB3aGVu IHRoZSB3aG9sZSBwYWdlIGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVuCi0JCQkgKiBp biB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuICBPdGhlcndpc2Ugd2UgZ2VuZXJhdGUg YQotCQkJICogY29uc2VydmF0aXZlIGN1dG9mZiBieSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0 WG1pbi4KKwkJCSAqIElmIHdlIGFyZSB1cGRhdGluZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jp em9uIGlzIGFsbW9zdAorCQkJICogYWx3YXlzIHRoZSB2aXNpYmlsaXR5IGN1dG9mZiBYSUQuCisJ CQkgKgorCQkJICogU2VwYXJhdGVseSwgaWYgd2UgYXJlIGZyZWV6aW5nIGFueSB0dXBsZXMsIGFz IGFuIG9wdGltaXphdGlvbiwKKwkJCSAqIHdlIGNhbiB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2Zm X3hpZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiBpZgorCQkJICogdGhlIHBhZ2Ugd2lsbCBiZSBh bGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUKKwkJCSAqIExQX0RFQUQg bGluZSBwb2ludGVycyBiZWNhdXNlIHdlIGlnbm9yZWQgdGhvc2Ugd2hlbiBtYWludGFpbmluZwor CQkJICogdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KIAkJCSAqLwotCQkJaWYgKGRvX2ZyZWV6 ZSkKKwkJCWlmIChkb19zZXRfdm0gfHwgKGRvX2ZyZWV6ZSAmJiBhbGxfZnJvemVuX2V4Y2VwdF9s cF9kZWFkKSkKKwkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hp ZDsKKworCQkJLyoKKwkJCSAqIE90aGVyd2lzZSwgaWYgd2UgYXJlIGZyZWV6aW5nIGJ1dCB0aGUg cGFnZSB3b3VsZCBub3QgYmUKKwkJCSAqIGFsbC1mcm96ZW4sIHdlIGhhdmUgdG8gdXNlIHRoZSBt b3JlIHBlc3NpbWlzdGljIGhvcml6b24gb2YKKwkJCSAqIE9sZGVzdFhtaW4sIHdoaWNoIG1heSBi ZSBuZXdlciB0aGFuIHRoZSBuZXdlc3QgdHVwbGUgd2UgZnJvemUuCisJCQkgKiBUaGF0J3MgYmVj YXVzZSB3ZSB3b24ndCBoYXZlIG1haW50YWluZWQgdGhlCisJCQkgKiB2aXNpYmlsaXR5X2N1dG9m Zl94aWQuCisJCQkgKi8KKwkJCWVsc2UgaWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJz dGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZyel9jb25mbGlj dF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJ CXsKLQkJCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRi YWNrIGluIHVzZSAqLwotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zm cy0+T2xkZXN0WG1pbjsKLQkJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hv cml6b24pOwotCQkJCX0KKwkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVz dFhtaW47CisJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoY29uZmxpY3RfeGlkKTsKIAkJCX0KIAot CQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9uLCBwcnN0YXRl LmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hv cml6b247Ci0JCQllbHNlCisJCQkvKgorCQkJICogSWYgd2UgYXJlIHJlbW92aW5nIHR1cGxlcyB3 aXRoIGEgeW91bmdlciB4bWF4IHRoYW4gb3VyIHNvIGZhcgorCQkJICogY2FsY3VsYXRlZCBjb25m bGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJCQkgKi8KKwkJCWlm IChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgY29uZmxp Y3RfeGlkKSkKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsK IAorCQkJLyoKKwkJCSAqIFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9u IGlmIHdlIGFyZSBub3QgcHJ1bmluZworCQkJICogb3IgZnJlZXppbmcgYW55IHR1cGxlcyBhbmQg YXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZQorCQkJICogcGFnZSBhbGwtZnJvemVu IGluIHRoZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbgorCQkJICogdGhl IHBhZ2UgbXVzdCBhbHJlYWR5IGJlIHZpc2libGUgdG8gYWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRo ZQorCQkJICogc3RhbmRieS4KKwkJCSAqLworCQkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXpl ICYmIGRvX3NldF92bSAmJgorCQkJCWJsa19rbm93bl9hdiAmJiAodm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTikpCisJCQkJY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwKIAkJ CQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAsIGZhbHNlLAorCQkJ CQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJCQkJCSAgc2V0X3Bk X2FsbF92aXNpYmxlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUs IHJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKQEAg LTkyNSwxMjQgKzEwNTEsNTUgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkvKiBD b3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwotCXByZXN1bHQtPm5kZWxldGVkID0g cHJzdGF0ZS5uZGVsZXRlZDsKLQlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsK LQlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwotCXByZXN1bHQtPmxpdmVfdHVw bGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKLQlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxl cyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7CisJaWYgKGRvX3NldF92bSkKKwkJTG9j a0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCS8qCi0JICogSXQgd2Fz IGNvbnZlbmllbnQgdG8gaWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGll ciBvbiB0bwotCSAqIG1ha2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUg dGhlIHBhZ2UgdW5hZmZlY3RlZCBieSB0aGUKLQkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQ X0RFQUQgaXRlbXMuICBUaGVzZSBMUF9ERUFEIGl0ZW1zIHdlcmUKLQkgKiBlZmZlY3RpdmVseSBh c3N1bWVkIHRvIGJlIExQX1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAot CSAqIG1hdHRlciB3aGljaCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwg cGFzcykgZW5kcyB1cAotCSAqIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBh cyB0aGUgb25nb2luZyBWQUNVVU0gZG9lcyBpdC4KLQkgKgotCSAqIE5vdyB0aGF0IGZyZWV6aW5n IGhhcyBiZWVuIGZpbmFsaXplZCwgdW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCi0JICog YW55IExQX0RFQUQgaXRlbXMgb24gdGhlIHBhZ2UuICBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBw cmVzZW50IHN0YXRlCi0JICogb2YgdGhlIHBhZ2UsIGFzIGV4cGVjdGVkIGZvciB1cGRhdGluZyB0 aGUgdmlzaWJpbGl0eSBtYXAuCi0JICovCi0JaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYgcHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkKLQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJz dGF0ZS5hbGxfdmlzaWJsZTsKLQkJcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3RhdGUuYWxsX2Zy b3plbjsKLQl9Ci0JZWxzZQotCXsKLQkJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJ cHJlc3VsdC0+YWxsX2Zyb3plbiA9IGZhbHNlOwotCX0KLQotCXByZXN1bHQtPmhhc3R1cCA9IHBy c3RhdGUuaGFzdHVwOworCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5s cGRlYWRfaXRlbXMgPT0gMCkpOwogCiAJLyoKLQkgKiBJZiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0 eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJlY29yZAotCSAqIG11c3QgYmUg dGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMKLQkg KiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUgdm1f Y29uZmxpY3RfaG9yaXpvbgotCSAqIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQu ICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKLQkgKiBqdXN0IGZyb3plIGFsbCB0aGUg dHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0aGUKLQkgKiBjb25mbGlj dCBYSUQgYWxyZWFkeSBzbyB0aGUgVk0gdXBkYXRlIHJlY29yZCBkb2Vzbid0IG5lZWQgaXQuCisJ ICogVkFDVVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBkdXJpbmcgdGhl IHNlY29uZCBwYXNzIG92ZXIKKwkgKiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRoaXMKKwkgKiBpcyBhIHNwZWNpYWxpemVk IHZlcnNpb24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0aGF0CisJICog d2UndmUgZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3Jl IGluIHRvdGFsCisJICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkg dXNpbmcgYW4gYXNzZXJ0aW9uLiBXZSB3aWxsCisJICogaGF2ZSBhbHJlYWR5IHNldCB0aGUgcGFn ZSBpbiB0aGUgVk0sIHNvIHRoaXMgYXNzZXJ0aW9uIHdpbGwgb25seSBsZXQKKwkgKiB5b3Uga25v dyB0aGF0IHlvdSd2ZSBhbHJlYWR5IGRvbmUgc29tZXRoaW5nIHdyb25nLgogCSAqLwotCWlmIChw cmVzdWx0LT5hbGxfZnJvemVuKQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9u ID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0KLQkvKgotCSAqIEhhbmRsZSBzZXR0 aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAo YXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJv bSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4KLQkgKi8KLQlpZiAo b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlKQogCXsKLQkJaWYgKGlkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9ja25vLCBidWZm ZXIsIHBhZ2UsCi0JCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LAotCQkJCQkJCQkJCSAgIHByc3Rh dGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZpeCBjb3JydXB0 aW9uLCBkb24ndCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQorCQlUcmFuc2FjdGlvbklk IGRlYnVnX2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQkvKgotCQkgKiBJ ZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSBWTSBvciBpdCBp cyBhbmQKLQkJICogbmVlZHMgdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0g Tm90ZSB0aGF0IGFsbF9mcm96ZW4KLQkJICogaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBp cyB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGgKLQkJICogYWxsX3Zpc2libGUgYW5kIGFsbF9m cm96ZW4uCi0JCSAqLwotCQllbHNlIGlmIChwcmVzdWx0LT5hbGxfdmlzaWJsZSAmJgotCQkJCSAo IWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByZXN1bHQtPmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9G Uk9aRU4ocmVsYXRpb24sIGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKLQkJewotCQkJQXNzZXJ0KHBy c3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwotCQkJdm1mbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEU7CisJCUFzc2VydChjdXRvZmZzKTsKIAotCQkJLyoKLQkJCSAqIElmIHRoZSBwYWdl IGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCi0JCQkg KiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNp ZW50IHRvCi0JCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdo ZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJCSAqIHdlcmUgZnJvemVuLgotCQkJICovCi0JCQlpZiAo cHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJCXsKLQkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCQl2bWZsYWdzIHw9IFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJCX0KKwkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1z ID09IDApOwogCi0JCQkvKgotCQkJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIFZNIGJpdCB0byBi ZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0Ci0JCQkgKiB0byBiZSBzZXQgaWYgY2hlY2tz dW1zIGFyZSBub3QgZW5hYmxlZC4KLQkJCSAqCi0JCQkgKiBBbmQgZXZlbiBpZiB3ZSBhcmUganVz dCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQgaW4KLQkJCSAqIHRoZSBWTSwgd2Ug c2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEKLQkJCSAq IHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBz aW5jZSBpdAotCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3RhbGUuCi0JCQkgKgotCQkJICogSWYg dGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3 ZQotCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLiAgSG93ZXZlciwgaWYg Y2hlY2tzdW1zIGFyZQotCQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhh dCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZp c2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlCi0JCQkgKiBsb2dnZWQuCi0JCQkg Ki8KLQkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJCXsKLQkJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKLQkJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQkJCX0KKwkJaWYg KCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJCQkJCSAg Y3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJ CQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsKIAotCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9uLCBibG9ja25vLCBidWZmZXIs IEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0LT52bV9j b25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCSAgIHZtZmxhZ3MpOwotCQl9CisJCUFzc2VydChw cnN0YXRlLmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0KCFUcmFu c2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRvZmYgPT0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyogQ29weSBp bmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3Rh dGUubmRlbGV0ZWQ7CisJcHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJcHJl c3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1cGxlcyA9 IHByc3RhdGUubGl2ZV90dXBsZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBw cnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRf dm1iaXRzOworCS8qIG5ld192bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQtPmhhc3R1 cCA9IHByc3RhdGUuaGFzdHVwOwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBk ZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFk eSBmaWxsZWQgaW4gKi8KIAotCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwotCXBy ZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuZnJlZXplKQogCXsK IAkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQpAQCAtMTYyNCw3ICsxNjgxLDEyIEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAJCQlicmVhazsKIAl9CiAKLQkvKiBDb25zaWRlciBmcmVlemlu ZyBhbnkgbm9ybWFsIHR1cGxlcyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICovCisJLyoKKwkg KiBDb25zaWRlciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxlcyB3aGljaCB3aWxsIG5vdCBiZSBy ZW1vdmVkLgorCSAqIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3Qgd2Ugd2FudCB0byBmcmVl emUgdGhlIHR1cGxlcywgaWYgd2Ugd2FudAorCSAqIHRvIHVwZGF0ZSB0aGUgVk0sIHdlIGhhdmUg dG8gY2FsbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgb24gZXZlcnkKKwkgKiB0dXBsZSB0 byBrbm93IHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgdG90YWxseSBmcm96ZW4uCisJ ICovCiAJaWYgKHByc3RhdGUtPmZyZWV6ZSkKIAl7CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwpA QCAtMjIzOCw2ICsyMzAwLDggQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlPZmZzZXROdW1iZXIgZnJ6X29mZnNldHNbTWF4SGVh cFR1cGxlc1BlclBhZ2VdOwogCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5k ZWFkID4gMCB8fCBudW51c2VkID4gMDsKIAorCUFzc2VydChkb19wcnVuZSB8fCBuZnJvemVuID4g MCB8fCB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwogCXhscmVjLmZsYWdz ID0gMDsKIAlyZWdidWZfZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCBjNDllODFiYzVkZC4uOTFlMjA5OTAxYjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTIwMTQsMzQgKzIwMTQsNiBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVf cGFnZXMrKzsKIAl9CiAKLQkvKgotCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8g ZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlz Ci0JICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVu Y3Rpb24uICBOb3cgdGhhdAotCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5n LCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBf cGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCi0JLyogTm90ZSB0aGF0IGFsbF9mcm96ZW4gdmFsdWUgZG9lcyBu b3QgbWF0dGVyIHdoZW4gIWFsbF92aXNpYmxlICovCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUp Ci0JewotCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zy b3plbjsKLQotCQlBc3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJaWYgKCFo ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFj cmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAm ZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKLQotCQlB c3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0 b2ZmID09IHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgog CSAqIE5vdyBzYXZlIGRldGFpbHMgb2YgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBp biB2YWNyZWwKIAkgKi8KQEAgLTIwNzUsOCArMjA0Nyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFz X2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFw cmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKLQogCS8qCiAJICog Rm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFn ZSB3YXMgbmV3bHkKIAkgKiBzZXQgYWxsLXZpc2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZy b3plbi4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBiODU2NDg0NTZlOS4uMGI5YmIxYzliMTMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmgKQEAgLTIzNSwxOSArMjM1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUmVzdWx0CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAqIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIHBhZ2UgYXMg cmVmbGVjdGVkCi0JICogaW4gdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBydW5pbmcsIGZyZWV6 aW5nLCBhbmQgc2V0dGluZyBhbnkgcGFnZXMKLQkgKiBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJp bGl0eSBtYXAuCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJs ZSBhbmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1 cGRhdGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBh cmUgdGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCiAJ ICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZQotCSAqIChvbGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBv bmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBub3Qgc2V0IHRoZQotCSAqIHBhZ2UgYWxsLWZyb3plbiBp biB0aGUgVk0uCi0JICoKLQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVf RlJFRVpFIG9wdGlvbiBpcyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNIG9wdGlvbiBpcyBzZXQuCiAJICovCi0JYm9vbAkJYWxsX3Zp c2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hv cml6b247CiAJdWludDgJCW9sZF92bWJpdHM7CiAJdWludDgJCW5ld192bWJpdHM7CiAKLS0gCjIu NDMuMAoK --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0009-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v4-0009-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5hd8 RnJvbSA0YWFlMzUwMTAyZDE5N2ZiNTExYjQ1YjQ3OGZlODg3ZTE5MDBjM2E3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHY0IDA5LzEzXSBVcGRhdGUgVk0gaW4gcHJ1bmVoZWFwLmMKCkFzIGEgc3RlcCB0b3dhcmQg dXBkYXRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNv cmQgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcgKGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZyks IGZpcnN0IG1vdmUKdGhlIFZNIHVwZGF0ZSAoc3RpbGwgaW4gaXRzIG93biBjcml0aWNhbCBzZWN0 aW9uIGFuZCBXQUwgcmVjb3JkKSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFRo aXMgbWFrZXMgcmV2aWV3IGVhc2llci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCA5OCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8IDE1ICsrKy0tCiAzIGZpbGVz IGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAwNzBkNjRmYTljMy4uNzk3YjM3MTA4NjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0zNjQsNyArMzY0LDggQEAgaWRlbnRpZnlf YW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogCiAvKgogICogUHJ1bmUg YW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9u IHRoZQotICogc3BlY2lmaWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2Un cyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0u CiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24g dGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0 aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtNDQwLDYg KzQ0MSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29s CQlkb19oaW50OworCXVpbnQ4CQl2bWZsYWdzID0gMDsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7 CiAJYm9vbAkJaGludF9iaXRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53 YWxfZnBpOwogCkBAIC05MzksNyArOTQyLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICoKIAkgKiBOb3cgdGhhdCBmcmVl emluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQog CSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVlZHMgdG8gcmVmbGVjdCB0 aGUgcHJlc2VudCBzdGF0ZQotCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBieSBvdXIgY2Fs bGVyLgorCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBmb3IgdXBkYXRpbmcgdGhlIHZpc2li aWxpdHkgbWFwLgogCSAqLwogCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBk ZWFkX2l0ZW1zID09IDApCiAJewpAQCAtOTU1LDMxICs5NTgsOTEgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJcHJlc3VsdC0+ aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CiAKIAkvKgotCSAqIEZvciBjYWxsZXJzIHBsYW5uaW5n IHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uCi0JICog Zm9yIHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93 ZXZlciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJl IG5vIGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIHNob3VsZCByZW1h aW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzCi0JICogdGhlIGNhc2UgdGhh dCB3ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZAot CSAqIGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgY2FsbGVyIGRvZXNu J3QgbmVlZCBpdC4KKwkgKiBJZiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25m bGljdCBob3Jpem9uIGZvciB0aGF0IHJlY29yZAorCSAqIG11c3QgYmUgdGhlIG5ld2VzdCB4bWlu IG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMKKwkgKiBjb21wbGV0ZWx5IGZy b3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUgdm1fY29uZmxpY3RfaG9yaXpv bgorCSAqIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVz IHRoZSBjYXNlIHRoYXQgd2UKKwkgKiBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1 bmUtZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0aGUKKwkgKiBjb25mbGljdCBYSUQgYWxyZWFkeSBz byB0aGUgVk0gdXBkYXRlIHJlY29yZCBkb2Vzbid0IG5lZWQgaXQuCiAJICovCiAJaWYgKHByZXN1 bHQtPmFsbF9mcm96ZW4pCiAJCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKIAllbHNlCiAJCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAotCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9 IHByc3RhdGUubHBkZWFkX2l0ZW1zOwotCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJh eSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KLQogCS8qCi0JICogQ2xlYXIgYW55IFZNIGNvcnJ1 cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGluIGEgY3JpdGljYWwKLQkgKiBz ZWN0aW9uLgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBp bmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKKwkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVu IHZhcmlhYmxlcy4KIAkgKi8KLQlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gZmFsc2U7CiAJaWYg KG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNKQotCQlwcmVzdWx0LT52bV9jb3Jy dXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAotCQkJCQkJ CQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKLQkJCQkJCQkJCQkJCQkJCQlibGtfa25v d25fYXYsCi0JCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsK Kwl7CisJCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJ CQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCBwYWdlLAorCQkJCQkJCQkJCSAgIGJsa19rbm93bl9h diwKKwkJCQkJCQkJCQkgICBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQl7CisJ CQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICov CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12aXNp YmxlIGluIHRoZSBWTSBvciBpdCBpcyBhbmQKKwkJICogbmVlZHMgdG8gbWUgbWFya2VkIGFsbC1m cm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4KKwkJICogaXMgb25seSB2 YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGgKKwkJICog YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4uCisJCSAqLworCQllbHNlIGlmIChwcmVzdWx0LT5h bGxfdmlzaWJsZSAmJgorCQkJCSAoIWJsa19rbm93bl9hdiB8fAorCQkJCSAgKHByZXN1bHQtPmFs bF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGJsb2Nrbm8sICZ2bWJ1ZmZlcikp KSkKKwkJeworCQkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOworCQkJdm1mbGFn cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFn ZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcworCQkJ ICogb3VyIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmlj aWVudCB0bworCQkJICogbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3 aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCisJCQkgKiB3ZXJlIGZyb3plbi4KKwkJCSAqLworCQkJaWYg KHByZXN1bHQtPmFsbF9mcm96ZW4pCisJCQl7CisJCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNW YWxpZChwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uKSk7CisJCQkJdm1mbGFncyB8PSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU47CisJCQl9CisKKwkJCS8qCisJCQkgKiBJdCdzIHBvc3NpYmxl IGZvciB0aGUgVk0gYml0IHRvIGJlIGNsZWFyIGFuZCB0aGUgcGFnZS1sZXZlbCBiaXQKKwkJCSAq IHRvIGJlIHNldCBpZiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkLgorCQkJICoKKwkJCSAqIEFu ZCBldmVuIGlmIHdlIGFyZSBqdXN0IHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgZnJvemVuIGJpdCBp bgorCQkJICogdGhlIFZNLCB3ZSBzaG91bGRuJ3QgcmVseSBvbiBhbGxfdmlzaWJsZV9hY2NvcmRp bmdfdG9fdm0gYXMgYQorCQkJICogcHJveHkgZm9yIHRoZSBwYWdlLWxldmVsIFBEX0FMTF9WSVNJ QkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0CisJCQkgKiBtaWdodCBoYXZlIGJlY29tZSBzdGFs ZS4KKwkJCSAqCisJCQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUg Vk0gYml0IGlzIG5vdCBzZXQsIHdlCisJCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFw IHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCisJCQkgKiBlbmFibGVkLCB3ZSBkbyBu ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMgZGlydGllZAorCQkJICogYmVm b3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUK KwkJCSAqIGxvZ2dlZC4KKwkJCSAqLworCQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQor CQkJeworCQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJCU1hcmtCdWZmZXJEaXJ0eShi dWZmZXIpOworCQkJfQorCisJCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRp b24sIGJsb2Nrbm8sIGJ1ZmZlciwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkJICAgdm1mbGFn cyk7CisJCX0KKwl9CisKKwlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9p dGVtczsKKwkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmls bGVkIGluICovCisKKwlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0 LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCWlmIChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlm IChwcmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpp bmRleCA2MTEwYjdmODBjZS4uYzQ5ZTgxYmM1ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKQEAgLTE5MzMsNyArMTkzMyw2IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAlyZXR1cm4g ZmFsc2U7CiB9CiAKLQogLyogcXNvcnQgY29tcGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1i ZXJzICovCiBzdGF0aWMgaW50CiBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIpCkBAIC0xOTQ5LDcgKzE5NDgsOCBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZv aWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5p bmcgdGhlIFZNIGJsb2NrIHdpdGggdmlzaWJpbGl0eSBpbmZvcm1hdGlvbgogICogZm9yIHRoZSBo ZWFwIGJsb2NrLCBibGtuby4gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGlzIHRoZSBzYXZl ZAogICogdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgYmxvY2sgbG9va2VkIHVwIGVhcmxp ZXIgYnkgdGhlIGNhbGxlci4gV2UKLSAqIHdvbid0IHJlbHkgZW50aXJlbHkgb24gdGhpcyBzdGF0 dXMsIGFzIGl0IG1heSBiZSBvdXQgb2YgZGF0ZS4KKyAqIHdvbid0IHJlbHkgZW50aXJlbHkgb24g dGhpcyBzdGF0dXMsIGFzIGl0IG1heSBiZSBvdXQgb2YgZGF0ZS4gVGhlc2Ugd2lsbCBiZQorICog cGFzc2VkIG9uIHRvIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8gdXNlIHdoaWxlIHNl dHRpbmcgdGhlIFZNLgogICoKICAqICpoYXNfbHBkZWFkX2l0ZW1zIGlzIHNldCB0byB0cnVlIG9y IGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyLCB1cG9uIHJldHVybgogICogZnJvbSB0aGlzIGZ1 bmN0aW9uLCBhbnkgTFBfREVBRCBpdGVtcyBhcmUgc3RpbGwgcHJlc2VudCBvbiB0aGUgcGFnZS4K QEAgLTE5NzgsNiArMTk3OCw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAKIAkvKgogCSAqIFBydW5lIGFsbCBIT1QtdXBkYXRlIGNoYWlucyBhbmQgcG90ZW50aWFsbHkg ZnJlZXplIHR1cGxlcyBvbiB0aGlzIHBhZ2UuCisJICogVGhlbiwgaWYgdGhlIHBhZ2UncyB2aXNp YmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIHRoZSBWTS4KIAkgKgogCSAqIElmIHRo ZSByZWxhdGlvbiBoYXMgbm8gaW5kZXhlcywgd2UgY2FuIGltbWVkaWF0ZWx5IG1hcmsgd291bGQt YmUgZGVhZAogCSAqIGl0ZW1zIExQX1VOVVNFRC4KQEAgLTE5ODYsMTAgKzE5ODcsNiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSAqIHByZXN1bHQubmRlbGV0ZWQuICBJ dCBzaG91bGQgbm90IGJlIGNvbmZ1c2VkIHdpdGggcHJlc3VsdC5scGRlYWRfaXRlbXM7CiAJICog cHJlc3VsdC5scGRlYWRfaXRlbXMncyBmaW5hbCB2YWx1ZSBjYW4gYmUgdGhvdWdodCBvZiBhcyB0 aGUgbnVtYmVyIG9mCiAJICogdHVwbGVzIHRoYXQgd2VyZSBkZWxldGVkIGZyb20gaW5kZXhlcy4K LQkgKgotCSAqIFdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhZnRlciBjb2xsZWN0aW5nIExQX0RFQUQg aXRlbXMgYW5kIGZyZWV6aW5nCi0JICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1p bmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCi0JICogYWxsLXZpc2libGUuCiAJICovCiAJ cHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVf VVBEQVRFX1ZNOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCkBAIC0yMDgxLDg3ICsyMDc4 LDI2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJQXNzZXJ0KCFwcmVz dWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKIAogCS8qCi0JICogSGFu ZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20g dGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCks IGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAq IEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBh Z2Ugd2FzIG5ld2x5CisJICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1m cm96ZW4uCiAJICovCi0JaWYgKHByZXN1bHQudm1fY29ycnVwdGlvbikKKwlpZiAoKHByZXN1bHQu b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDAgJiYKKwkJKHByZXN1 bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewotCQkv KiBEb24ndCB1cGRhdGUgdGhlIFZNIGlmIHdlIGp1c3QgY2xlYXJlZCBjb3JydXB0aW9uIGluIGl0 ICovCi0JfQotCi0JLyoKLQkgKiBJZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12aXNp YmxlIGluIHRoZSBWTSBvciBpdCBpcyBhbmQgbmVlZHMKLQkgKiB0byBtZSBtYXJrZWQgYWxsLWZy b3plbiwgdXBkYXRlIHRoZSBWTSBOb3RlIHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5Ci0JICogdmFs aWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNp YmxlIGFuZAotCSAqIGFsbF9mcm96ZW4uCi0JICovCi0JZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlz aWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChwcmVz dWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1i dWZmZXIpKSkpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQkJdWludDgJCWZsYWdzID0gVklT SUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQkvKgotCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwt ZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIKLQkJICogY3V0 b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1h a2UKLQkJICogZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcyB3ZXJlCi0JCSAqIGZyb3plbi4KLQkJICovCi0JCWlmIChwcmVzdWx0LmFsbF9m cm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9j b25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47 Ci0JCX0KLQotCQkvKgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUg dmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0 IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1z IGFyZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UK LQkJICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoKLQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBh bGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZSBkb24ndAotCQkgKiBuZWVk IHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlIGVuYWJs ZWQsIHdlCi0JCSAqIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBk aXJ0aWVkIGJlZm9yZSBwYXNzaW5nCi0JCSAqIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJl Y2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShw YWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGly dHkoYnVmKTsKLQkJfQotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5y ZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJ CSAgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBm bGFncyk7Ci0KLQkJLyoKLQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBhbGwt ZnJvemVuIGJpdCwgdGhlcmUgaXMgYSBzbWFsbAotCQkgKiBjaGFuY2UgdGhhdCB0aGUgVk0gd2Fz IG1vZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4gc2V0dGluZwotCQkgKiBhbGxfdmlzaWJsZV9hY2Nv cmRpbmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5IGR1cmluZwotCQkgKiBwcnVu aW5nLiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgdG8gZW5zdXJlIHRoZQot CQkgKiB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0 ZS4KLQkJICoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxl IGFuZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0 IGZvciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysr OwotCQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192 aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9 Ci0JCX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p ID09IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsK KwkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9m cm96ZW4gPSB0cnVlOwogCQl9CiAJfQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCXsKKwkJQXNzZXJ0KChwcmVzdWx0 Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJdmFjcmVs LT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CisJfQog CiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMGM3ZWI1 ZTQ2ZjQuLmI4NTY0ODQ1NmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yMzUsMjAgKzIzNSwyMSBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5X2RlYWRf dHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBp ZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmls aXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCisJICogYWxs X3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgcGFnZSBh cyByZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcHJ1bmluZywgZnJl ZXppbmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNpYmxlIGluIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4 bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2Ug aXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQK LQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCks IGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlz IHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZQorCSAqIChvbGRlciB0 aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBub3Qgc2V0 IHRoZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoKIAkgKiBUaGVzZSBhcmUg b25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJ Ym9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZt X2NvbmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsKKwl1aW50OAkJb2xkX3Zt Yml0czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhl IHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KLS0gCjIu NDMuMAoK --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0006-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v4-0006-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5h85 RnJvbSA5YWNhYzJkY2M2MTEzNDUwMmEzMDVlMDU1ZDJkNTQwM2M5YzNkNTU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwNi8xM10gQ29tYmluZSBsYXp5X3NjYW5fcHJ1bmUgVk0gY29ycnVwdGlvbiBjYXNl cwoKbGF6eV9zY2FuX3BydW5lKCkgdXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhh c2UgSSBvZiBoZWFwCnZhY3V1bWluZy4gSXQgYWxzbyBjaGVja3MgYW5kIGZpeGVzIGNvcnJ1cHRp b24gaW4gdGhlIFZNLiBUaGUgY29ycnVwdGlvbgpjYXNlcyB3aGVyZSBtaXhlZCBpbiB3aXRoIHRo ZSBub3JtYWwgdmlzaWJpbGl0eSBtYXAgdXBkYXRlIGNhc2VzLgoKQ2FyZWZ1bCBzdHVkeSBvZiB0 aGUgb3JkZXJpbmcgb2YgdGhlIGN1cnJlbnQgbG9naWMgcmV2ZWFscyB0aGF0IHRoZQpjb3JydXB0 aW9uIGNhc2VzIGNhbiBiZSByZW9yZGVyZWQgYW5kIGV4dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUK ZnVuY3Rpb24uIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBubyBhZGRpdGlvbmFsIG92ZXJoZWFkIHdo ZW4gY29tcGFyZWQgdG8KcHJldmlvdXMgZXhlY3V0aW9uLgoKVGhpcyByZW9yZGVyaW5nIG1ha2Vz IGl0IGNsZWFyIHdoaWNoIGNhc2VzIGFyZSBhYm91dCBjb3JydXB0aW9uIGFuZAp3aGljaCBjYXNl cyBhcmUgbm9ybWFsIFZNIHVwZGF0ZXMuIFNlcGFyYXRpbmcgdGhlbSBhbHNvIG1ha2VzIGl0CnBv c3NpYmxlIHRvIGNvbWJpbmUgdGhlIG5vcm1hbCBjYXNlcyBpbiBhIGZ1dHVyZSBjb21taXQuIFRo aXMgd2lsbCBtYWtlCnRoZSBsb2dpYyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWxsb3cgZm9y IGZ1cnRoZXIgc2VwYXJhdGlvbiBvZiB0aGUKbG9naWMgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIFZN IGluIHRoZSBzYW1lIHJlY29yZCBhcyBwcnVuaW5nIGFuZApmcmVlemluZyBpbiBwaGFzZSBJLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDExNCArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDllMTk1 MjY5ZDIuLjA0YTdiNmM0MTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC00MzEsNiArNDMxLDEyIEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxh enlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNo YXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhf dm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9w YWdlLAorCQkJCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAg aW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3Rh dGljIGludAlsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVm ZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5MzMsNiArMTkzOSw2 NiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1 ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogV2hlbiB1 cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywg d2UgdGFrZSB0aGUKKyAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNv cnJ1cHRpb24uCisgKgorICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3Rh dHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0 IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitz dGF0aWMgYm9vbAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBo ZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93 bl9hdiwKKwkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2 bWJ1ZmZlcikKK3sKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0 eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQg aXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBj bGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdl IG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhh dCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBh Z2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcs ICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBp cyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0 aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUg dmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklk KCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNl ZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5 ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHht aW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1v dmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyBy ZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ug c2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0 IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBh cmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkg KiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9B TExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+ IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAi cGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGlu IHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxhdGlvbiksIGhlYXBfYmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwor CQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisKIC8qIHFz b3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGludAog Y21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpAQCAtMjA3OSw5 ICsyMTQ1LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoKIAkg KiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBj YWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMK KwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNv cnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJl c3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHZh Y3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCXsKKwkJLyog RG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAq LworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQu YWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0g VklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzMsNDUgKzIyMDQsNiBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkgKiBBcyBvZiBQ b3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0 IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3Nz aWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1ZmZl ciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0JICovCi0J ZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxWaXNpYmxl KHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCSB2YWNyZWwtPnJlbG5hbWUsIGJsa25vKTsKLQkJdmlzaWJp bGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoK LQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwt dmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgdmFjcmVsLT5yZWxuYW1l LCBibGtubyk7Ci0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0 eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZm ZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KIAkvKgogCSAqIElm IHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3Vj aCB5ZXQsIG1hcmsKIAkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4g aXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotLSAKMi40My4wCgo= --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0008-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Disposition: attachment; filename="v4-0008-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5hb7 RnJvbSAyYzA4NDQ0ZDZlZjBmMjJhOTc4YWExZjhiMDk5Y2VlNzUxNzkzMGYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwOC8xM10gRmluZCBhbmQgZml4IFZNIGNvcnJ1cHRpb24gaW4KIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVwZGF0ZSB0aGUgVk0gaW4gdGhl IHNhbWUgY3JpdGljYWwgc2VjdGlvbiBhbmQgV0FMCnJlY29yZCBhcyBwcnVuaW5nIGFuZCBmcmVl emluZy4gRm9yIGVhc2Ugb2YgcmV2aWV3LCB0aGlzIGNvbW1pdCBtYWtlcwpvbmUgc3RlcCB0b3dh cmQgZG9pbmcgdGhpcy4gSXQgbW92ZXMgdGhlIFZNIGNvcnJ1cHRpb24gaGFuZGxpbmcgY2FzZSB0 bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDc3ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDQgKysKIDMgZmls ZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAyNzI0Y2Y3ZjY0Zi4uMDcwZDY0ZmE5YzMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgi CisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCkBAIC0xNzcsNiArMTc3LDEzIEBAIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROCiAK IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCitzdGF0aWMg Ym9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhl YXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tu b3duX2F2LAorCQkJCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKTsKKwogCiAvKgogICogT3B0aW9uYWxseSBwcnVuZSBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24gaW4gdGhlIHNwZWNpZmllZCBwYWdlLgpAQCAtMjYxLDcgKzI2OCw5IEBA IGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJ CQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBjYW5ub3Qgc2FmZWx5 IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcgd2l0aCB0aGUg Y3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUocmVsYXRpb24sIGJ1ZmZlciwgdmlzdGVzdCwgMCwKKwkJCWhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAorCQkJCQkJCQkJICAgSW52YWxpZEJ1 ZmZlciwKKwkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCiAJCQkJCQkJCQkgICBOVUxMLCAmcHJlc3Vs dCwgUFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CiAKIAkJCS8q CkBAIC0yOTQsNiArMzAzLDY0IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJfQogfQogCisvKgorICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKKyAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCisgKgor ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitzdGF0aWMgYm9vbAoraWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKKwkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKK3sKKwkv KgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawor CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcsICJwYWdlIGlzIG5vdCBt YXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRp b24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywg dm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQg YnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNr d2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBh cHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FM TF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBu ZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUg dGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJh ZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsg YXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkg KiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQg bmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQs CisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAicGFnZSBjb250YWluaW5n IExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNc IiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBf YmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGly dHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Js aywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJu IHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAt MzE0LDYgKzM4MSwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyKQogICogSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBzZXQsIGJl Y2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKICAqIHRoYXQgYWxzbyBmcmVlemUgbmVl ZCB0aGF0IGluZm9ybWF0aW9uLgogICoKKyAqIGJsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJpbGl0 eSBzdGF0dXMgb2YgdGhlIGhlYXAgYmxvY2sgYXMgb2YgdGhlIGxhc3QgY2FsbAorICogdG8gZmlu ZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkuIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhhdCBt YXkgYWxyZWFkeQorICogY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YgdGhlIHZpc2liaWxp dHkgbWFwLgorICoKICAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1 cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECiAgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNm aWVzX3ZhY3V1bSkuCiAgKgpAQCAtMzQ5LDYgKzQyMCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAgKi8KIHZvaWQKIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJ ICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkg ICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJ ICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCkBAIC04OTcsNiArOTcwLDE2IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRo ZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIAor CS8qCisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBi ZSBkb25lIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLworCXByZXN1bHQtPnZtX2Nv cnJ1cHRpb24gPSBmYWxzZTsKKwlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0pCisJCXByZXN1bHQtPnZtX2NvcnJ1cHRpb24gPSBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1 cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJCQkJCQkJYmxvY2tubywgYnVmZmVyLCBwYWdlLAor CQkJCQkJCQkJCQkJCQkJCWJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkJCQkJCQlwcnN0YXRlLmxw ZGVhZF9pdGVtcywgdm1idWZmZXIpOwogCWlmIChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChw cmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRl eCBkYTcxZjA5NWRhOS4uNjExMGI3ZjgwY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKQEAgLTQzMSwxMiArNDMxLDYgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpOwogc3RhdGlj IGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJCSAg IGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwotc3RhdGljIGJvb2wgaWRlbnRpZnlf YW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJs b2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJ CQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl cik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLApAQCAtMTkzOSw2 NSArMTkzMyw2IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC dWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qCi0g KiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAgdmFj dXVtaW5nLCB3ZSB0YWtlIHRoZQotICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZpeCBh bnkgVk0gY29ycnVwdGlvbi4KLSAqCi0gKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJp bGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKLSAqIHdoaWxlIGZpbmRpbmcg dGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCku Ci0gKi8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsYXRpb24sCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCi0JCQkJCQkJICAg QnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKLQkJCQkJCQkgICBib29sIGhlYXBf YmxrX2tub3duX2F2LAotCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCi0JCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKQotewotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmIChoZWFwX2Jsa19rbm93bl9h diAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCi0JCXZpc2liaWxpdHltYXBfZ2V0 X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2Jsayk7Ci0JCXZpc2liaWxpdHltYXBfY2xl YXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUg Zm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3Ig dXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9u ZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFs IHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVz dE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29t ZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBz byBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVw bGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFj dHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4K LQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3 aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWlmIChubHBkZWFk X2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCi0JewotCQllbG9nKFdB Uk5JTkcsICJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZp c2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOwotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBf cGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0K IAogLyogcXNvcnQgY29tcGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0 aWMgaW50CkBAIC0yMDU2LDExICsxOTkxLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRo ZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0 aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwt Pm5pbmRleGVzID09IDApCiAJCXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktf VU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNy ZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo cmVsLCBidWYsCisJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJ CSAgIHZtYnVmZmVyLAorCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywK IAkJCQkJCQkgICAmdmFjcmVsLT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4s CiAJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZy b3plblhpZCwgJnZhY3JlbC0+TmV3UmVsbWluTXhpZCk7CkBAIC0yMTQ1LDEwICsyMDgzLDkgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0 aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAo YXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJv bSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9v a2luZyBmb3IgYW55IFZNIGNvcnJ1cHRpb24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJ ICovCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxr bm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJCSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwg cHJlc3VsdC5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0 aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29y cnVwdGlvbiBpbiBpdCAqLwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNzEyOWE2NDRhMS4uMGM3 ZWI1ZTQ2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25z IiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhF QVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFU RV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1 bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwog CWJvb2wJCWFsbF9mcm96ZW47CiAJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwor CWJvb2wJCXZtX2NvcnJ1cHRpb247CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdl IG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiAr MzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJl bGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFn ZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZv aWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAgIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwK IAkJCQkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9m ZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0007-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v4-0007-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5ha6 RnJvbSA3NzVkNmMxN2Q4MzA5NWJhYzAxYjJlMGI3ZTM0NGQ4MDliNWRlZDdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAwNy8xM10gQ29tYmluZSB2YWN1dW0gcGhhc2UgSSBWTSB1cGRhdGUgY2FzZXMKCkFm dGVyIHBoYXNlIEkgb2YgdmFjdXVtIHdlIHVwZGF0ZSB0aGUgVk0sIGVpdGhlciBzZXR0aW5nIHRo ZSBWTSBiaXRzCndoZW4gYWxsIGJpdHMgYXJlIGN1cnJlbnRseSB1bnNldCBvciBzZXR0aW5nIGp1 c3QgdGhlIGZyb3plbiBiaXQgd2hlbgp0aGUgYWxsLXZpc2libGUgYml0IGlzIGFscmVhZHkgc2V0 LiBUaG9zZSBjYXNlcyBoYWQgYSBsb3Qgb2YgZHVwbGljYXRlZApjb2RlLiBDb21iaW5lIHRoZW0u IFRoaXMgaXMgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBhbHNvIGFsbG93cyBtYWtlcwp0aGUg Y29kZSBjb21wYWN0IGVub3VnaCB0byBzdGFydCB1c2luZyB0byB1cGRhdGUgdGhlIFZNIHdoaWxl IHBydW5pbmcKYW5kIGZyZWV6aW5nLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyB8IDEwMCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzMSBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKaW5kZXggMDRhN2I2YzQxODEuLmRhNzFmMDk1ZGE5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMTUyLDExICsyMTUyLDI2IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJewogCQkvKiBEb24ndCB1cGRhdGUgdGhlIFZNIGlm IHdlIGp1c3QgY2xlYXJlZCBjb3JydXB0aW9uIGluIGl0ICovCiAJfQotCWVsc2UgaWYgKCFhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKworCS8qCisJ ICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3Ig aXQgaXMgYW5kIG5lZWRzCisJICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUg Vk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seQorCSAqIHZhbGlkIGlmIGFsbF92aXNpYmxl IGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxf ZnJvemVuLgorCSAqLworCWVsc2UgaWYgKHByZXN1bHQuYWxsX3Zpc2libGUgJiYKKwkJCSAoIWFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSB8fAorCQkJICAocHJlc3VsdC5hbGxfZnJvemVuICYm ICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkpKQogCXsKIAkJ dWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEU7CiAKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBh c3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyCisJCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEg c25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCisJCSAqIGV2ZXJ5dGhp bmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQor CQkgKiBmcm96ZW4uCisJCSAqLwogCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQl7CiAJCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikp OwpAQCAtMjE2OSwyMSArMjE4NCwyOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBi b3RoIGJpdHMgc28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkgKiBO QjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qg c2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVy LCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRv IHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2 ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBh ZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICogSWYg dGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3 ZSBkb24ndAorCQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBj aGVja3N1bXMgYXJlIGVuYWJsZWQsIHdlCisJCSAqIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg dGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCisJCSAqIGl0IHRvIHZpc2li aWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KIAkJICovCi0JCVBhZ2VT ZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJaWYgKCFQYWdl SXNBbGxWaXNpYmxlKHBhZ2UpKQorCQl7CisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJ CU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQl9CiAJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVj UHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwK IAkJCQkJCQkJCSAgIGZsYWdzKTsKIAogCQkvKgorCQkgKiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNl dHRpbmcgdGhlIGFsbC1mcm96ZW4gYml0LCB0aGVyZSBpcyBhIHNtYWxsCisJCSAqIGNoYW5jZSB0 aGF0IHRoZSBWTSB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2VlbiBzZXR0aW5nCisJCSAqIGFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkgZHVy aW5nCisJCSAqIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyB0 byBlbnN1cmUgdGhlCisJCSAqIHZpc2liaWxpdHkgbWFwIGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dp bmcgYXJlIGFjY3VyYXRlLgorCQkgKgogCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBz ZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlCiAJCSAqIFZNLCBjb3VudCBp dCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCiAJCSAqLwpAQCAtMjIwNCw2NiArMjIyNiw2IEBA IGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCX0KIAl9CiAKLQkvKgotCSAq IElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMg c3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96 ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotCSAqIHRydWUsIHNvIHdlIG11c3Qg Y2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KLQkgKi8KLQllbHNlIGlmIChh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJ IHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8s ICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQotCQkvKgotCQkgKiBBdm9p ZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhcyBhIHByb3h5IGZvciB0 aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBp dCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBldmVuIHdoZW4gYWxsX3Zpc2libGUg aXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JCXsKLQkJCVBh Z2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCX0KLQot CQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5kIGFsbC12aXNpYmxlKSBpbiB0 aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzIG91 ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZp Y2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8KLQkJICogd2FzIGxvZ2dlZCB3 aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkgKi8KLQkJQXNzZXJ0KCFUcmFu c2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJb2xkX3Zt Yml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJ CQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgSW52YWxpZFRy YW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJ CQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkJLyoKLQkJICogVGhlIHBh Z2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uIEhvd2V2ZXIs Ci0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQgaXQgd2FzIG1vZGlmaWVkIHNvbWV0 aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYW5k IGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmluZyBwcnVuaW5nLiBDaGVjayB0aGUg cmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRvCi0JCSAqIGVuc3VyZSB0aGUgdmlz aWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUuCi0JCSAq LwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQot CQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQl2YWNyZWwtPnZtX25l d192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJ fQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBwYWdlIHdhcyBub3Qg c2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBzbyB3ZSBkb24ndCBuZWVkIHRv IHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwotCQllbHNlCi0JCXsKLQkJCXZh Y3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsK LQkJfQotCX0KLQogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwogfQogCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0011-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v4-0011-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5hh10 RnJvbSBiNTU0YmU2MDU5OTgxMjNiYjFlNTdlZGM2NjY5MTQ3YWE4Zjk3OWE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NCAxMS8xM10gUmVtb3ZlIHhsX2hlYXBfdmlzaWJsZSBlbnRpcmVseQoKVGhlcmUgYXJl IG5vdyBubyB1c2VycyBvZiB0aGlzLCBzbyBlbGltaW5hdGUgaXQgZW50aXJlbHkuCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgMyArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NCArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8ICAxMCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICB8IDEwMyArLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwLmggICAgICAgfCAgMTEgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgfCAgIDEgLQogMTIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwg MzU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v YnVmbWFzay5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIy NjBjZmZhNjguLjFmZmYwMTM4M2IzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2J1Zm1hc2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpA QCAtNTYsOCArNTYsNyBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJ ICogRHVyaW5nIHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBY TE9HIHJlY29yZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxl LiBTZWUgaGVhcF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0 IG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2libGUuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShw YWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNjhkYjQzMjUyODUuLjQ4Zjdi ODQxNTZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNDAsNiArNDAsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0 aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZGF0YWJhc2VfZC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtMjUx MiwxMSArMjUxMywxMSBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVw bGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCXsKIAkJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwogCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZShyZWxhdGlvbiwKLQkJCQkJCQkJCSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJ IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwKKwkJCQkJCQkgIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKTsKIAkJfQogCiAJCS8qCkBAIC04Nzg0LDQ5ICs4Nzg1LDYgQEAgYm90dG9tdXBfc29ydF9h bmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2 b3JhYmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJs ZSBvcGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12 aXNpYmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNv cnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVh ZHkgYmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGlj dEhvcml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0g KiBtYXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSBy ZWNvdmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMg YXJlIGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBv ZiBoZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNw ZWNpZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hp Y2ggY2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2Un cyBMU04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQg c25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNp YmxlIHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2Vy dChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1f YnVmZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklM SVRZTUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lz dGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZl cigwLCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFY TG9nSGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9n UmVnaXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJ bnNlcnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRy OwotfQogCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJh dGlvbi4gIENhbGxlciBtdXN0IGFscmVhZHkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCmluZGV4IDE0NTQxZTJlOTRmLi42NGYwNmQ0NmJmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jCkBAIC04MiwxMCArODIsNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQltZW1jcHkoJnZtZmxhZ3MsIG1haW5kYXRhcHRy LCBzaXplb2YodWludDgpKTsKIAkJbWFpbmRhdGFwdHIgKz0gc2l6ZW9mKHVpbnQ4KTsKIAotCQkv KgotCQkgKiBXZSBkb24ndCBzZXQgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGluIHRo ZSBjb21iaW5lZCByZWNvcmQKLQkJICogYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUgWExIUF9JU19D QVRBTE9HX1JFTC4KLQkJICovCiAJCUFzc2VydCgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUykgPT0gdm1mbGFncyk7CiAJCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0 IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwogCQlBc3NlcnQodm1mbGFn cyAhPSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwpAQCAtMjY3LDcgKzI2Myw3IEBAIGhlYXBf eGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVJlbGF0aW9uCXJl bG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7CiAKIAkJdmlzaWJpbGl0eW1h cF9waW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5 bWFwX3NldF92bWJ5dGUocmVsbiwgYmxrbm8sIHZtYnVmZmVyLCB2bWZsYWdzKTsKKwkJb2xkX3Zt Yml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7 CiAJCS8qIE9ubHkgc2V0IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCiAJ CWlmIChvbGRfdm1iaXRzICE9IHZtZmxhZ3MpCiAJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo dm1idWZmZXIpLCBsc24pOwpAQCAtMjc4LDE0MyArMjc0LDYgQEAgaGVhcF94bG9nX3BydW5lX2Zy ZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1 ZmZlcik7CiB9CiAKLS8qCi0gKiBSZXBsYXkgWExPR19IRUFQMl9WSVNJQkxFIHJlY29yZHMuCi0g KgotICogVGhlIGNyaXRpY2FsIGludGVncml0eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2Ug bXVzdCBuZXZlciBlbmQgdXAgd2l0aAotICogYSBzaXR1YXRpb24gd2hlcmUgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBpcyBzZXQsIGFuZCB0aGUgcGFnZS1sZXZlbAotICogUERfQUxMX1ZJU0lCTEUg Yml0IGlzIGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCB0aGVuIGEgc3Vic2VxdWVudAot ICogcGFnZSBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgdmlzaWJpbGl0eSBt YXAgYml0LgotICovCi1zdGF0aWMgdm9pZAotaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCi17Ci0JWExvZ1JlY1B0cglsc24gPSByZWNvcmQtPkVuZFJlY1B0cjsKLQl4 bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpOwotCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlcgkJ YnVmZmVyOwotCVBhZ2UJCXBhZ2U7Ci0JUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7Ci0JQmxvY2tO dW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwotCi0JQXNzZXJ0KCh4bHJlYy0+ ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUykgPT0geGxyZWMtPmZsYWdzKTsK LQotCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDEsICZybG9jYXRvciwgTlVMTCwgJmJsa25v KTsKLQotCS8qCi0JICogSWYgdGhlcmUgYXJlIGFueSBIb3QgU3RhbmRieSB0cmFuc2FjdGlvbnMg cnVubmluZyB0aGF0IGhhdmUgYW4geG1pbgotCSAqIGhvcml6b24gb2xkIGVub3VnaCB0aGF0IHRo aXMgcGFnZSBpc24ndCBhbGwtdmlzaWJsZSBmb3IgdGhlbSwgdGhleQotCSAqIG1pZ2h0IGluY29y cmVjdGx5IGRlY2lkZSB0aGF0IGFuIGluZGV4LW9ubHkgc2NhbiBjYW4gc2tpcCBhIGhlYXAgZmV0 Y2guCi0JICoKLQkgKiBOQjogSXQgbWlnaHQgYmUgYmV0dGVyIHRvIHRocm93IHNvbWUga2luZCBv ZiAic29mdCIgY29uZmxpY3QgaGVyZSB0aGF0Ci0JICogZm9yY2VzIGFueSBpbmRleC1vbmx5IHNj YW4gdGhhdCBpcyBpbiBmbGlnaHQgdG8gcGVyZm9ybSBoZWFwIGZldGNoZXMsCi0JICogcmF0aGVy IHRoYW4ga2lsbGluZyB0aGUgdHJhbnNhY3Rpb24gb3V0cmlnaHQuCi0JICovCi0JaWYgKEluSG90 U3RhbmRieSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkJCQl4bHJlYy0+ZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwsCi0JCQkJCQkJCQkJCXJsb2NhdG9yKTsKLQotCS8qCi0J ICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBoZWFwIGZp bGUgaGFzIGRyb3BwZWQgb3IKLQkgKiB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIHdlIGRv bid0IG5lZWQgdG8gdXBkYXRlIHRoZSBwYWdlLCBidXQgd2UnZAotCSAqIGJldHRlciBzdGlsbCB1 cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVy Rm9yUmVkbyhyZWNvcmQsIDEsICZidWZmZXIpOwotCWlmIChhY3Rpb24gPT0gQkxLX05FRURTX1JF RE8pCi0JewotCQkvKgotCQkgKiBXZSBkb24ndCBidW1wIHRoZSBMU04gb2YgdGhlIGhlYXAgcGFn ZSB3aGVuIHNldHRpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogbWFwIGJpdCAodW5sZXNzIGNoZWNr c3VtcyBvciB3YWxfaGludF9iaXRzIGlzIGVuYWJsZWQsIGluIHdoaWNoCi0JCSAqIGNhc2Ugd2Ug bXVzdCkuIFRoaXMgZXhwb3NlcyB1cyB0byB0b3JuIHBhZ2UgaGF6YXJkcywgYnV0IHNpbmNlCi0J CSAqIHdlJ3JlIG5vdCBpbnNwZWN0aW5nIHRoZSBleGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFu eSB3YXksIHdlCi0JCSAqIGRvbid0IGNhcmUuCi0JCSAqLwotCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOwotCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCi0JCWlmIChYTG9nSGlu dEJpdElzTmVlZGVkKCkpCi0JCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0KLQkJTWFya0J1ZmZl ckRpcnR5KGJ1ZmZlcik7Ci0JfQotCWVsc2UgaWYgKGFjdGlvbiA9PSBCTEtfUkVTVE9SRUQpCi0J ewotCQkvKgotCQkgKiBJZiBoZWFwIGJsb2NrIHdhcyBiYWNrZWQgdXAsIHdlIGFscmVhZHkgcmVz dG9yZWQgaXQgYW5kIHRoZXJlJ3MKLQkJICogbm90aGluZyBtb3JlIHRvIGRvLiAoVGhpcyBjYW4g b25seSBoYXBwZW4gd2l0aCBjaGVja3N1bXMgb3IKLQkJICogd2FsX2xvZ19oaW50cyBlbmFibGVk LikKLQkJICovCi0JfQotCi0JaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKLQl7Ci0JCVNpemUJ CXNwYWNlID0gUGFnZUdldEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwotCi0JCVVu bG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBTaW5jZSBGU00gaXMgbm90 IFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBpdAotCQkgKiBlYXNp bHkgYmVjb21lcyBzdGFsZSBpbiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHBy b21vdGVkCi0JCSAqIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbCBza2lwIHVwZGF0aW5nIGluZGl2 aWR1YWwgZnJlZSBzcGFjZQotCQkgKiBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2FtZSBhbGwt dmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nCi0JCSAqIG9uIHRoZSB2YWN1dW0gbW9k ZSwpIHdoaWNoIGlzIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtCi0JCSAqIHBy b3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxh eWVyczsKLQkJICogbGF0ZXIgaW5zZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcyBvbmx5IHRv IGZpbmQgb3V0IHRoYXQgdGhleQotCQkgKiBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBs b25nIHN0YWxscyB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2gKLQkJICogcGFnZXMuCi0JCSAqCi0J CSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0 IGEgcGFnZSB0aGF0Ci0JCSAqIGlzIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4u Ci0JCSAqCi0JCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWlu ZyBhcHBsaWVkLCBzaW5jZSB0aGUKLQkJICogRlNNIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFu eXdheS4KLQkJICovCi0JCWlmICh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpCi0JCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBzcGFj ZSk7Ci0JfQotCi0JLyoKLQkgKiBFdmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRh dGUgZHVlIHRvIHRoZSBMU04gaW50ZXJsb2NrLCBpdCdzCi0JICogc3RpbGwgc2FmZSB0byB1cGRh dGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKLQkgKiB0 aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExT Tiwgc28gYW55Ci0JICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJl IGNsZWFyZWQuCi0JICovCi0JaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29y ZCwgMCwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLAotCQkJCQkJCQkJICAmdm1idWZmZXIpID09 IEJMS19ORUVEU19SRURPKQotCXsKLQkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1 ZmZlcik7Ci0JCVJlbGF0aW9uCXJlbG47Ci0JCXVpbnQ4CQl2bWJpdHM7Ci0KLQkJLyogaW5pdGlh bGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLwotCQlpZiAoUGFnZUlzTmV3 KHZtcGFnZSkpCi0JCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7Ci0KLQkJLyogcmVtb3Zl IFZJU0lCSUxJVFlNQVBfWExPR18qICovCi0JCXZtYml0cyA9IHhscmVjLT5mbGFncyAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUzsKLQotCQkvKgotCQkgKiBYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZCBsb2NrZWQgdGhlIGJ1ZmZlci4gQnV0Ci0JCSAqIHZpc2liaWxpdHltYXBfc2V0IHdp bGwgaGFuZGxlIGxvY2tpbmcgaXRzZWxmLgotCQkgKi8KLQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwg QlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQlyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnko cmxvY2F0b3IpOwotCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywgJnZtYnVmZmVyKTsK LQotCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2 bWJ1ZmZlciwKLQkJCQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMp OwotCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnko cmVsbik7Ci0JfQotCWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIg ZmllbGQgZnJvbSBhbiBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAg KiBnaXZlbiBpbmZvbWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0 aGUgcmVjb3JkLgpAQCAtNzkxLDE2ICs2NTAsMTYgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJUmVsYXRpb24JcmVsbiA9IENyZWF0ZUZha2VSZWxj YWNoZUVudHJ5KHJsb2NhdG9yKTsKIAogCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywg JnZtYnVmZmVyKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLAotCQkJ CQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAKIAkJLyoKIAkJICogSXQgaXMgbm90 IHBvc3NpYmxlIHRoYXQgdGhlIFZNIHdhcyBhbHJlYWR5IHNldCBmb3IgdGhpcyBoZWFwIHBhZ2Us CiAJCSAqIHNvIHRoZSB2bWJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBtb2RpZmllZCBhbmQgbWFya2Vk IGRpcnR5LgogCQkgKi8KIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJdmlz aWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJICBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKTsKIAkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKIAkJRnJl ZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwogCX0KQEAgLTEzODAsOSArMTIzOSw2IEBAIGhlYXAy X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9W QUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJy ZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJl Y29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhl YXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwppbmRleCA2MjA4ZjU1MTc2Zi4uZjY1MDk2OTVlM2EgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC05NTksOCArOTU5LDggQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCWlmIChkb19z ZXRfdm0pCiAJCXsKIAkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7Ci0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbGF0aW9uLCBi bG9ja25vLAotCQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgdm1mbGFncyk7CisJCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIGJsb2Nrbm8sCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIHZtZmxhZ3MpOwogCiAJCQlpZiAob2xkX3ZtYml0cyA9PSB2bWZsYWdzKQogCQkJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDkxZTIwOTkwMWI4Li42YTBmYTM3 MWEwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg4Nyw4ICsxODg3 LDggQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCUxv Y2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0JCQl2aXNpYmlsaXR5 bWFwX3NldF92bWJ5dGUodmFjcmVsLT5yZWwsIGJsa25vLAotCQkJCQkJCQkJIHZtYnVmZmVyLCBu ZXdfdm1iaXRzKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywKKwkJ CQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwo dmFjcmVsLT5yZWwpKQogCQkJewpAQCAtMjc1NCw5ICsyNzU0LDkgQEAgbGF6eV92YWN1dW1faGVh cF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZm ZXIsCiAJCXNldF9wZF9hbGxfdmlzID0gdHJ1ZTsKIAkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYnl0ZSh2YWNyZWwtPnJlbCwKLQkJCQkJCQkJIGJsa25vLAotCQkJCQkJ CQkgdm1idWZmZXIsIHZtZmxhZ3MpOworCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwK KwkJCQkJCSAgYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKIAkJY29uZmxpY3Rf eGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jCmluZGV4IDU3M2RmNmY2ODkxLi40NzhiMDhmYTUyMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjE5LDEwNSArMjE5LDYgQEAgdmlz aWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKQogCXJl dHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcih2bWJ1Zikg PT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAtIHNldCBiaXQocykg b24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVjcHRyIGlzIHRoZSBMU04gb2Yg dGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2UncmUgaW4gcmVjb3ZlcnksCi0g KiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmluZy4gIFRoZSBWTSBwYWdlIExT TiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsgaW4gbm9ybWFsIHJ1bm5pbmcs IHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQgdGhlCi0gKiBwYWdlIExTTiB0 byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExTTiBtYXkgKm5vdCogYmUgdXBk YXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRoZSBsYXJnZXN0IHhtaW4gb24g dGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsgaXQgaXMgbmVlZGVkIGZvciBI b3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogaWYgdGhlIHBh Z2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIEludmFsaWRUcmFu c2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgYWxsLXZpc2libGUgaXMg YmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVyIGlzIGV4cGVjdGVkIHRvIHNl dCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBjYWxsaW5nCi0gKiB0 aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91bGQgYWxzbyBwYXNz IHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFibGVkIGFuZCB3ZSdy ZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUgaGVhcCBidWZmZXIgdG8gdGhl IFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAqCi0gKiBZb3UgbXVz dCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2UgdG8gdGhpcyBm dW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGluIHRoZSByaWdo dCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAqCi0gKiBSZXR1 cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNldHRpbmcgZmxhZ3Mu Ci0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciByZWNwdHIsIEJ1ZmZl ciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCSAgdWludDggZmxhZ3MpCi17 Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBCbGspOwot CXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKLQl1aW50OAkJ bWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7Ci0JUGFnZQkJcGFnZTsKLQl1 aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0KLSNpZmRlZiBUUkFDRV9WSVNJQklMSVRZ TUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgJXMgJWQiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRpZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgWExvZ1Jl Y1B0cklzSW52YWxpZChyZWNwdHIpKTsKLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBQYWdlSXNBbGxW aXNpYmxlKChQYWdlKSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3MpOwotCi0JLyogTXVzdCBuZXZlciBz ZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICov Ci0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVj ayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8K LQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcihoZWFw QnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2Vk IHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJp Z2h0IFZNIHBhZ2UgcGlubmVkICovCi0JaWYgKCFCdWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZm ZXJHZXRCbG9ja051bWJlcih2bUJ1ZikgIT0gbWFwQmxvY2spCi0JCWVsb2coRVJST1IsICJ3cm9u ZyBWTSBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlwYWdlID0gQnVm ZmVyR2V0UGFnZSh2bUJ1Zik7Ci0JbWFwID0gKHVpbnQ4ICopIFBhZ2VHZXRDb250ZW50cyhwYWdl KTsKLQlMb2NrQnVmZmVyKHZtQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwotCi0Jc3RhdHVz ID0gKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQpICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT OwotCWlmIChmbGFncyAhPSBzdGF0dXMpCi0JewotCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKLQot CQltYXBbbWFwQnl0ZV0gfD0gKGZsYWdzIDw8IG1hcE9mZnNldCk7Ci0JCU1hcmtCdWZmZXJEaXJ0 eSh2bUJ1Zik7Ci0KLQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKLQkJewotCQkJaWYgKFhM b2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQoIUluUmVjb3Zlcnkp OwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0 b2ZmX3hpZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUg ZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVlZCB0byBwcm90ZWN0 IHRoZSBoZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJICogSWYgbm90LCB0 aGVuIHdlIG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uIEluCi0JCQkJICog dGhpcyBjYXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0dGVkIGZyb20gdGhl Ci0JCQkJICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291bGQgYmUgaW5jb3Jy ZWN0IHRvCi0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0JCQkJICovCi0JCQkJ aWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJCWhlYXBQYWdlID0g QnVmZmVyR2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhlYXBQYWdlLCByZWNw dHIpOwotCQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKLQkJfQotCi0J CUVORF9DUklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVmLCBCVUZGRVJfTE9D S19VTkxPQ0spOwotCXJldHVybiBzdGF0dXM7Ci19Ci0KIC8qCiAgKiBTZXQgZmxhZ3MgaW4gdGhl IFZNIGJsb2NrIGNvbnRhaW5lZCBpbiB0aGUgcGFzc2VkIGluIHZtQnVmLgogICoKQEAgLTMzNyw4 ICsyMzgsOCBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogbWFraW5nIGFueSBjaGFuZ2VzIG5lZWRlZCB0byB0 aGUgYXNzb2NpYXRlZCBoZWFwIHBhZ2UuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92 bWJ5dGUoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2 bUJ1ZiwgdWludDggZmxhZ3MpCit2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKQogewogCUJs b2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50 MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IGQ2Yzg2Y2NhYzIwLi5mNzg4MGE0ZWQ4MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTM1MSwxMyArMzUxLDYgQEAg aGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9 CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4 bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAw eCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZs YWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7 CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAq KSByZWM7CkBAIC00NjIsOSArNDU1LDYgQEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJ Y2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFD VVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJ aWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VS VDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5Li4yZmRkNGFmOTBhOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYg QEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhM T0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNV VU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQ Ml9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94 bG9nLmgKaW5kZXggY2VhZTljMDgzZmYuLmE2NDY3N2I3YmNhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt X3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FD Q0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAKICNk ZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhMT0df SEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAweDUw CiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQ Ml9ORVdfQ0lECQkweDcwCkBAIC00MzgsMjAgKzQzNyw2IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hl YXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBsYWNlCShvZmZzZXRvZih4bF9o ZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0vKgotICogVGhpcyBpcyB3aGF0 IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBtYXAgYml0Ci0gKgot ICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIKLSAqIEJhY2t1cCBibGsgMTog aGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCi17Ci0JVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1aW50OAkJZmxhZ3M7Ci19IHhs X2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlzaWJsZSAob2Zmc2V0b2YoeGxf aGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQotCiB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNDk1LDExICs0ODAsNiBAQCBleHRlcm4gdm9pZCBo ZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRl cm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBo ZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBY TG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZm ZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwot CiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQv YmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVf YW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQ4IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50 ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcC5oCmluZGV4IDk3NzU2NmY2Yjk4Li5jNWIxZTFmN2FkYiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSAog CiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCi0jaW5jbHVkZSAiYWNjZXNz L3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKQEAgLTMxLDE0ICszMCw4IEBA IGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBC bG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9v bCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYp OwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkg ICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVj UHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rp b25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2 aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxr LAotCQkJCQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKTsKK2V4dGVybiB1aW50OCB2 aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJ CQkJICAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7CiBleHRlcm4gdWludDggdmlzaWJpbGl0 eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVy ICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAqYWxsX2Zyb3plbik7CiBleHRl cm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJl bCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKaW5kZXggNWFkNWMwMjA4Nzcu LmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAt MjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCTB4MDIKICNk ZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZp c2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLwotLyoKLSAqIFRvIGRldGVj dCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5 LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1c2VyIGNhdGFsb2cgdGFibGUu IEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQgaW50byB4bF9oZWFwX3Zpc2li bGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAqCi0gKiBOQjogVklTSUJJTElU WU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKS4KLSAq LwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwJMHgwNAotI2RlZmluZSBW SVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTIHwg VklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5kaWYJCQkJCQkJLyogVklTSUJJ TElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA4MzE5MjAzODU3 MS4uZTY1MDk0Y2I1ZGYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC00MjY5LDcgKzQy NjksNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVfbWFwcGluZwogeGxfaGVhcF90 cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJsZQogeGxfaW52YWxpZF9wYWdl CiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3 Content-Type: application/x-patch; name="v4-0012-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v4-0012-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mczdp5hi11 RnJvbSBlNjA3MTBjY2ZmNTMyYzZmNmRhOWM0NzBlZGM2ZWFiOWVjZGJjMzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDcgSnVsIDIwMjUgMTc6MzA6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHY0IDEyLzEzXSBBbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBzZXQgcGFnZXMgYWxsLXZp c2libGUKCk1hbnkgcXVlcmllcyBkbyBub3QgbW9kaWZ5IHRoZSB1bmRlcmx5aW5nIHJlbGF0aW9u LiBGb3Igc3VjaCBxdWVyaWVzLCBpZgpvbi1hY2Nlc3MgcHJ1bmluZyBvY2N1cnMgZHVyaW5nIHRo ZSBzY2FuLCB3ZSBjYW4gY2hlY2sgd2hldGhlciB0aGUgcGFnZQpoYXMgYmVjb21lIGFsbC12aXNp YmxlIGFuZCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwIGFjY29yZGluZ2x5LgpQcmV2aW91c2x5 LCBvbmx5IHZhY3V1bSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4K ClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9ybWF0aW9uIGFib3V0IHdoZXRo ZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4ZWN1dG9yIGRvd24gdG8gdGhl IHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVudHMgb24tYWNjZXNzIFZNIHNl dHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBmb3IgdGhlIHVuZGVybHlpbmcg aGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFwIGhlYXAKc2NhbnMuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgfCAxNSArKysrKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgIHwgMTcgKysrKysrLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgfCA1OSArKysrKysrKysrKysr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAgfCA0 NiArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMg ICAgICAgIHwgMzkgKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jICAgICAgICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAg ICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j IHwgIDYgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICB8IDE3 ICsrKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgIHwgMTcg KysrKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgfCAxMiAr KysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgfCAxMSArKysr Kwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAyNCArKysrKysr LS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmggICAgICAgICAgICAgIHwgIDYgKysrCiBz cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysr LQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgfCAxNyArKysrKysr CiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAgICAgICAgICAgICB8ICAxICsKIDE3IGZp bGVzIGNoYW5nZWQsIDI4NSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCmluZGV4IDQ4ZjdiODQxNTZhLi41MGIwZDE2OWQ1NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTU2MCw2ICs1NjAsNyBAQCBoZWFwX3ByZXBhcmVfcGFnZXNj YW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpbnQJCQlsaW5lczsKIAlib29sCQlhbGxfdmlzaWJs ZTsKIAlib29sCQljaGVja19zZXJpYWxpemFibGU7CisJYm9vbAkJYWxsb3dfdm1zZXQ7CiAKIAlB c3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBibG9jayk7CiAKQEAgLTU3MCw3 ICs1NzEsOSBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAkv KgogCSAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBmb3IgdGhlIHdob2xlIHBhZ2Us IGlmIHBvc3NpYmxlLgogCSAqLwotCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5y c19yZCwgYnVmZmVyKTsKKwlhbGxvd192bXNldCA9IHNzY2FuLT5yc19mbGFncyAmIFNPX0FMTE9X X1ZNX1NFVDsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZl ciwKKwkJCQkJCWFsbG93X3Ztc2V0ID8gJnNjYW4tPnJzX3ZtYnVmZmVyIDogTlVMTCwgYWxsb3df dm1zZXQpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVmZmVy IGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCkBAIC0xMjM2LDYgKzEyMzksNyBAQCBoZWFw X2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJ CQkJCQkJCSAgc2l6ZW9mKFRCTUl0ZXJhdGVSZXN1bHQpKTsKIAl9CiAKKwlzY2FuLT5yc192bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gKFRhYmxlU2NhbkRlc2MpIHNjYW47CiB9 CkBAIC0xMjc0LDYgKzEyNzgsMTIgQEAgaGVhcF9yZXNjYW4oVGFibGVTY2FuRGVzYyBzc2Nhbiwg U2NhbktleSBrZXksIGJvb2wgc2V0X3BhcmFtcywKIAkJc2Nhbi0+cnNfY2J1ZiA9IEludmFsaWRC dWZmZXI7CiAJfQogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCXsK KwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisJCXNjYW4tPnJzX3ZtYnVmZmVy ID0gSW52YWxpZEJ1ZmZlcjsKKwl9CisKIAkvKgogCSAqIFNPX1RZUEVfQklUTUFQU0NBTiB3b3Vs ZCBiZSBjbGVhbmVkIHVwIGhlcmUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIGFueQogCSAqIGFkZGl0 aW9uYWwgZGF0YSB2cyBhIG5vcm1hbCBIZWFwU2NhbgpAQCAtMTMwNiw2ICsxMzE2LDkgQEAgaGVh cF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+ cnNfY2J1ZikpCiAJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfY2J1Zik7CiAKKwlpZiAoQnVmZmVy SXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1i dWZmZXIpOworCiAJLyoKIAkgKiBNdXN0IGZyZWUgdGhlIHJlYWQgc3RyZWFtIGJlZm9yZSBmcmVl aW5nIHRoZSBCdWZmZXJBY2Nlc3NTdHJhdGVneS4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGNiNGJjMzVjOTNlLi5mYjQ1MGM1YTg0ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC04NSw2ICs4NSw3IEBAIGhl YXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCiAKIAloc2Nhbi0+eHNfYmFzZS5y ZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpA QCAtOTksNiArMTAwLDEyIEBAIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNldChJbmRleEZldGNoVGFi bGVEYXRhICpzY2FuKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c19jYnVmKTsKIAkJaHNjYW4t PnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KKworCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2Fu LT54c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c192bWJ1ZmZlcik7 CisJCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQogfQogCiBzdGF0aWMg dm9pZApAQCAtMTM4LDcgKzE0NSw5IEBAIGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShzdHJ1Y3Qg SW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJICogUHJ1bmUgcGFnZSwgYnV0IG9ubHkgaWYg d2Ugd2VyZW4ndCBhbHJlYWR5IG9uIHRoaXMgcGFnZQogCQkgKi8KIAkJaWYgKHByZXZfYnVmICE9 IGhzY2FuLT54c19jYnVmKQotCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5y ZWwsIGhzY2FuLT54c19jYnVmKTsKKwkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jh c2UucmVsLCBoc2Nhbi0+eHNfY2J1ZiwKKwkJCQkJCQkJc2Nhbi0+bW9kaWZpZXNfYmFzZV9yZWwg PyBOVUxMIDogJmhzY2FuLT54c192bWJ1ZmZlciwKKwkJCQkJCQkJIXNjYW4tPm1vZGlmaWVzX2Jh c2VfcmVsKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNvIHdl IGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzEsNiArMjQ4MCw3IEBAIEJpdG1hcEhl YXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0ICp0 Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0VdOwog CWludAkJCW5vZmZzZXRzID0gLTE7CisJYm9vbAkJYWxsb3dfdm1zZXQgPSBmYWxzZTsKIAogCUFz c2VydChzY2FuLT5yc19mbGFncyAmIFNPX1RZUEVfQklUTUFQU0NBTik7CiAJQXNzZXJ0KGhzY2Fu LT5yc19yZWFkX3N0cmVhbSk7CkBAIC0yNTE3LDcgKzI1MjcsMTAgQEAgQml0bWFwSGVhcFNjYW5O ZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBm cmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVh cF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlhbGxvd192bXNldCA9IHNj YW4tPnJzX2ZsYWdzICYgU09fQUxMT1dfVk1fU0VUOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nh bi0+cnNfcmQsIGJ1ZmZlciwKKwkJCQkJCWFsbG93X3Ztc2V0ID8gJmhzY2FuLT5yc192bWJ1ZmZl ciA6IE5VTEwsCisJCQkJCQlhbGxvd192bXNldCk7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBz aGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZjY1MDk2OTVlM2EuLmFmMjMwMDhkZGY3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTU4LDYgKzE1OCw3IEBAIHR5 cGVkZWYgc3RydWN0CiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlU cmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlUcmFuc2FjdGlvbklkIG9sZGVz dF94bWluOwogfSBQcnVuZVN0YXRlOwogCiAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KQEAgLTIwMyw5 ICsyMDQsMTMgQEAgc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55IHVzZSBpbiBwcnVuaW5nLgog ICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZmZXIsIGFuZCBtdXN0ICpub3Qq IGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIGFsbG93X3Ztc2V0IGlzIHRydWUsIGl0IGlz IG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBpZgorICogdGhlIHBh Z2UgaXMgYWxsIHZpc2libGUuCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQlCdWZmZXIgKnZtYnVmZmVyLCBib29sIGFs bG93X3Ztc2V0KQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJh bnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0yNjAsNiArMjY1LDkgQEAgaGVhcF9wYWdlX3BydW5l X29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJaWYgKCFDb25kaXRpb25h bExvY2tCdWZmZXJGb3JDbGVhbnVwKGJ1ZmZlcikpCiAJCQlyZXR1cm47CiAKKwkJLyogQ2FsbGVy IHNob3VsZCBub3QgcGFzcyBhIHZtYnVmZmVyIGlmIGFsbG93X3Ztc2V0IGlzIGZhbHNlLiAqLwor CQlBc3NlcnQoYWxsb3dfdm1zZXQgfHwgdm1idWZmZXIgPT0gTlVMTCk7CisKIAkJLyoKIAkJICog Tm93IHRoYXQgd2UgaGF2ZSBidWZmZXIgbG9jaywgZ2V0IGFjY3VyYXRlIGluZm9ybWF0aW9uIGFi b3V0IHRoZQogCQkgKiBwYWdlJ3MgZnJlZSBzcGFjZSwgYW5kIHJlY2hlY2sgdGhlIGhldXJpc3Rp YyBhYm91dCB3aGV0aGVyIHRvCkBAIC0yNjksNiArMjc3LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9v cHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCXsKIAkJCU9mZnNldE51bWJl ciBkdW1teV9vZmZfbG9jOwogCQkJUHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKKwkJCWludAkJ CW9wdGlvbnMgPSAwOworCisJCQlpZiAoYWxsb3dfdm1zZXQpCisJCQl7CisJCQkJdmlzaWJpbGl0 eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIHZtYnVmZmVy KTsKKwkJCQlvcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTTsKKwkJCX0KIAogCQkJ LyoKIAkJCSAqIEZvciBub3csIHBhc3MgbWFya191bnVzZWRfbm93IGFzIGZhbHNlIHJlZ2FyZGxl c3Mgb2Ygd2hldGhlciBvcgpAQCAtMjc2LDggKzI5MSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1h Y2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCiAJ CQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKLQkJ CQkJCQkJCSAgIEludmFsaWRCdWZmZXIsCi0JCQkJCQkJCQkgICB2aXN0ZXN0LCAwLAorCQkJCQkJ CQkJICAgdm1idWZmZXIgPyAqdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICAg dmlzdGVzdCwgb3B0aW9ucywKIAkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9B Q0NFU1MsICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKQEAgLTQ2Nyw2ICs0 ODIsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9IDA7CiAJcHJzdGF0ZS5mcmVlemUgPSAob3B0 aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CiAJcHJzdGF0ZS51cGRhdGVfdm0g PSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CisJaWYgKGN1dG9m ZnMpCisJCXByc3RhdGUub2xkZXN0X3htaW4gPSBjdXRvZmZzLT5PbGRlc3RYbWluOworCWVsc2UK KwkJcHJzdGF0ZS5vbGRlc3RfeG1pbiA9IE9sZGVzdFhtaW5Gcm9tR2xvYmFsVmlzU3RhdGUodmlz dGVzdCk7CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC04NzcsNiArODk2 LDIwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCSAqLwogCWlmIChwcnN0YXRlLnVwZGF0ZV92bSkKIAl7CisJCS8qCisJCSAq IElmIHRoaXMgaXMgb24tYWNjZXNzIGFuZCB3ZSBhcmVuJ3QgYWN0dWFsbHkgcHJ1bmluZywgZG9u J3Qgc2V0IHRoZQorCQkgKiBWTSBpZiBkb2luZyBzbyB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVh cCBwYWdlIG9yLCBpZiB0aGUgcGFnZSBpcworCQkgKiBhbHJlYWR5IGRpcnR5LCBpZiB0aGUgV0FM IHJlY29yZCBlbWl0dGVkIHdvdWxkIGhhdmUgdG8gY29udGFpbiBhbgorCQkgKiBGUEkgb2YgdGhl IGhlYXAgcGFnZS4gVGhpcyBzaG91bGQgcmFyZWx5IGhhcHBlbiwgYXMgd2Ugb25seSBhdHRlbXB0 CisJCSAqIG9uLWFjY2VzcyBwcnVuaW5nIHdoZW4gcGRfcHJ1bmVfeGlkIGlzIHZhbGlkLgorCQkg Ki8KKwkJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJCSFkb19wcnVuZSAmJiAh ZG9fZnJlZXplICYmCisJCQkoIUJ1ZmZlcklzRGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKSkKKwkJeworCQkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSAq LworCQl9CisKIAkJLyoKIAkJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBu b3QgbmVlZCB0byBiZSBpbiBhIGNyaXRpY2FsCiAJCSAqIHNlY3Rpb24sIHNvIHdlIGRvIGl0IGZp cnN0LiBJZiBQRF9BTExfVklTSUJMRSBpcyBpbmNvcnJlY3RseSBzZXQsCkBAIC04ODUsOSArOTE4 LDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCSAqIG9mIFZNIGNvcnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29y cnkgYWJvdXQgdGhlIGV4dHJhCiAJCSAqIHBlcmZvcm1hbmNlIG92ZXJoZWFkLgogCQkgKi8KLQkJ aWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkg ICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LCBwcnN0 YXRlLmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQllbHNlIGlmIChpZGVudGlmeV9hbmRfZml4 X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJCQlibG9ja25vLCBidWZmZXIsIHBh Z2UsCisJCQkJCQkJCQkJCQlibGtfa25vd25fYXYsIHByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1 ZmZlcikpCiAJCXsKIAkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24ndCB1cGRhdGUgdGhl IFZNIGZ1cnRoZXIgKi8KIAkJfQpAQCAtMTAxMyw3ICsxMDQ2LDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkgKi8KIAkJ CWVsc2UgaWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmN1 dG9mZnMtPk9sZGVzdFhtaW47CisJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5vbGRlc3RfeG1p bjsKIAkJCQlUcmFuc2FjdGlvbklkUmV0cmVhdChjb25mbGljdF94aWQpOwogCQkJfQogCkBAIC0x MDcxLDEyICsxMTA0LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJ Ym9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQoY3V0b2Zmcyk7Ci0KIAkJQXNzZXJ0 KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCiAJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIGN1dG9mZnMtPk9sZGVzdFhtaW4s CisJCQkJCQkJCQkgIHByc3RhdGUub2xkZXN0X3htaW4sCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxf ZnJvemVuLAogCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChm YWxzZSk7CkBAIC0xMTM2LDkgKzExNjcsOCBAQCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0o UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1ZmZlcikKIAkgKiB2 YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiBPbGRlc3RYbWluIGlzIHVzZWQgZm9yIGZyZWV6aW5nIGRl dGVybWluYXRpb24KIAkgKiBhbmQgd2UgY2Fubm90IGZyZWV6ZSBkZWFkIHR1cGxlcycgeG1heGVz LgogCSAqLwotCWlmIChwcnN0YXRlLT5jdXRvZmZzICYmCi0JCVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pICYmCi0JCU5vcm1hbFRyYW5zYWN0aW9uSWRQ cmVjZWRlcyhkZWFkX2FmdGVyLCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKKwlpZiAo VHJhbnNhY3Rpb25JZElzVmFsaWQocHJzdGF0ZS0+b2xkZXN0X3htaW4pICYmCisJCU5vcm1hbFRy YW5zYWN0aW9uSWRQcmVjZWRlcyhkZWFkX2FmdGVyLCBwcnN0YXRlLT5vbGRlc3RfeG1pbikpCiAJ CXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCS8qCkBAIC0xNjA3LDggKzE2MzcsNyBAQCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJCSAqIGNvdWxkIHVzZSBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVYaWQgaW5zdGVhZCwgaWYgYQogCQkJCSAqIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVk IHRvIHNldCB0aGUgVk0gYml0LgogCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZz KTsKLQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZz LT5PbGRlc3RYbWluKSkKKwkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0 YXRlLT5vbGRlc3RfeG1pbikpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZh bHNlOwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDIxOWRm MTk3MWRhLi5kODAzYzMwNzUxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBAIC0y NzksNiArMjc5LDMyIEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ cmV0dXJuIHNjYW47CiB9CiAKKy8qCisgKiBTaW1pbGFyIHRvIGluZGV4X2JlZ2luc2NhbigpLCBi dXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAqIHF1ZXJ5IG1v ZGlmaWVzIHRoZSB1bmRlcmx5aW5nIGJhc2UgcmVsYXRpb24uIFRoaXMgaXMgdXNlZCB3aGVuIHRo ZSBjYWxsZXIKKyAqIHdhbnRzIHRvIGF0dGVtcHQgbWFya2luZyBwYWdlcyBpbiB0aGUgYmFzZSBy ZWxhdGlvbiBhcyBhbGwtdmlzaWJsZSBpbiB0aGUKKyAqIHZpc2liaWxpdHkgbWFwIGR1cmluZyBv bi1hY2Nlc3MgcHJ1bmluZy4KKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3Zt c2V0KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u LAorCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkgIEluZGV4U2Nhbkluc3RydW1lbnRh dGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIGJvb2wg bW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJc2NhbiA9IGlu ZGV4X2JlZ2luc2NhbihoZWFwUmVsYXRpb24sCisJCQkJCQkgICBpbmRleFJlbGF0aW9uLAorCQkJ CQkJICAgc25hcHNob3QsCisJCQkJCQkgICBpbnN0cnVtZW50LAorCQkJCQkJICAgbmtleXMsIG5v cmRlcmJ5cyk7CisKKwlzY2FuLT54c19oZWFwZmV0Y2gtPm1vZGlmaWVzX2Jhc2VfcmVsID0gbW9k aWZpZXNfYmFzZV9yZWw7CisKKwlyZXR1cm4gc2NhbjsKK30KKwogLyoKICAqIGluZGV4X2JlZ2lu c2Nhbl9iaXRtYXAgLSBzdGFydCBhIHNjYW4gb2YgYW4gaW5kZXggd2l0aCBhbWdldGJpdG1hcAog ICoKQEAgLTYxMCw2ICs2MzYsMjYgQEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9u IGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICog UGFyYWxsZWwgdmVyc2lvbiBvZiBpbmRleF9iZWdpbnNjYW5fdm1zZXQoKQorICovCitJbmRleFNj YW5EZXNjCitpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gaGVhcHJlbCwg UmVsYXRpb24gaW5kZXhyZWwsCisJCQkJCQkJICAgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICpp bnN0cnVtZW50LAorCQkJCQkJCSAgIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywKKwkJCQkJCQkg ICBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJICAgYm9vbCBtb2RpZmllc19i YXNlX3JlbCkKK3sKKwlJbmRleFNjYW5EZXNjIHNjYW47CisKKwlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuX3BhcmFsbGVsKGhlYXByZWwsIGluZGV4cmVsLAorCQkJCQkJCQkJaW5zdHJ1bWVudCwKKwkJ CQkJCQkJCW5rZXlzLCBub3JkZXJieXMsCisJCQkJCQkJCQlwc2Nhbik7CisJc2Nhbi0+eHNfaGVh cGZldGNoLT5tb2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCXJldHVybiBz Y2FuOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBpbmRleF9nZXRuZXh0X3RpZCAtIGdl dCB0aGUgbmV4dCBUSUQgZnJvbSBhIHNjYW4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YwppbmRleCBhNTZjNWVjZWIxNC4uNjdkYmY5OWY1YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3Rh YmxlYW0uYwpAQCAtNDksNiArNDksMTAgQEAKIGNoYXIJICAgKmRlZmF1bHRfdGFibGVfYWNjZXNz X21ldGhvZCA9IERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRDsKIGJvb2wJCXN5bmNocm9uaXpl X3NlcXNjYW5zID0gdHJ1ZTsKIAorLyogSGVscGVyIGZvciB0YWJsZV9iZWdpbnNjYW5fcGFyYWxs ZWwoKSBhbmQgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KCkgKi8KK3N0YXRpYyBUYWJs ZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9jb21tb24oUmVsYXRpb24gcmVsYXRp b24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQkgdWludDMyIGZs YWdzKTsKKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTbG90IGZ1bmN0aW9ucy4KQEAg LTE2MiwxMiArMTY2LDE0IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9u IHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAogCX0KIH0KIAotVGFibGVTY2FuRGVz YwotdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRh YmxlU2NhbkRlc2MgcHNjYW4pCisvKgorICogQ29tbW9uIGhlbHBlciBmb3IgdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldCgpCisgKi8K K3N0YXRpYyBUYWJsZVNjYW5EZXNjCit0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKFJl bGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCXVp bnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJCWZsYWdzID0gU09f VFlQRV9TRVFTQ0FOIHwKLQkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxM T1dfUEFHRU1PREU7CiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJk X2xvY2F0b3IsIHBzY2FuLT5waHNfbG9jYXRvcikpOwogCkBAIC0xODgsNiArMTk0LDMxIEBAIHRh YmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNj YW5EZXNjIHBzY2FuKQogCQkJCQkJCQkJCQlwc2NhbiwgZmxhZ3MpOwogfQogCitUYWJsZVNjYW5E ZXNjCit0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbikKK3sKKwl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FO IHwKKwkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7 CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2NvbW1vbihyZWxhdGlvbiwgcHNj YW4sIGZsYWdzKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgdGFibGVfYmVnaW5z Y2FuX3Ztc2V0KCkKKyAqLworVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X3Ztc2V0KFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJ CQkJCQkJICAgYm9vbCBtb2RpZmllc19yZWwpCit7CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVf U0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BB R0VNT0RFOworCisJaWYgKCFtb2RpZmllc19yZWwpCisJCWZsYWdzIHw9IFNPX0FMTE9XX1ZNX1NF VDsKKworCXJldHVybiB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29tbW9uKHJlbGF0aW9uLCBw c2NhbiwgZmxhZ3MpOworfQorCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEluZGV4IHNj YW4gcmVsYXRlZCBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAwMzkxNzk4 ZGQyYy4uMDY1Njc2ZWI3Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtOTE3LDYgKzkx NywxMCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQkJ YnJlYWs7CiAJCQl9CiAKKwkJCS8qIElmIGl0IGhhcyBhIHJvd21hcmssIHRoZSByZWxhdGlvbiBp cyBtb2RpZmllZCAqLworCQkJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21l bWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkJcmMtPnJ0aSk7 CisKIAkJCS8qIENoZWNrIHRoYXQgcmVsYXRpb24gaXMgYSBsZWdhbCB0YXJnZXQgZm9yIG1hcmtp bmcgKi8KIAkJCWlmIChyZWxhdGlvbikKIAkJCQlDaGVja1ZhbGlkUm93TWFya1JlbChyZWxhdGlv biwgcmMtPm1hcmtUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZmRjNjVjMmI0 MmIuLjI4YTA2ZGNkMjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODkzLDYgKzg5 Myw4IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8sCiAJCWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9ucyA9IChSZXN1 bHRSZWxJbmZvICoqKQogCQkJcGFsbG9jMChlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemUgKiBz aXplb2YoUmVzdWx0UmVsSW5mbyAqKSk7CiAJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zW3J0 aSAtIDFdID0gcmVzdWx0UmVsSW5mbzsKKwllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJt c19hZGRfbWVtYmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJcnRp KTsKIAogCS8qCiAJICogU2F2aW5nIGluIHRoZSBsaXN0IGFsbG93cyB0byBhdm9pZCBuZWVkbGVz c2x5IHRyYXZlcnNpbmcgdGhlIHdob2xlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBI ZWFwc2Nhbi5jCmluZGV4IGJmMjRmM2Q3ZmUwLi4yYzU3YmM3YWM0OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTEwOSw3ICsxMDksOCBAQCBCaXRtYXBU YWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCQkJdGFibGVfYmVnaW5z Y2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5w cy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJ CQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIG5vZGUtPm1vZGlmaWVzX3JlbCk7CiAJfQogCiAJbm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjLT5zdC5yc190Ym1pdGVyYXRvciA9IHRibWl0ZXJhdG9y OwpAQCAtMzYwLDYgKzM2MSw5IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNj YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXNjYW5zdGF0ZS0+aW5pdGlh bGl6ZWQgPSBmYWxzZTsKIAlzY2Fuc3RhdGUtPnBzdGF0ZSA9IE5VTEw7CiAJc2NhbnN0YXRlLT5y ZWNoZWNrID0gdHJ1ZTsKKwlzY2Fuc3RhdGUtPm1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1i ZXIobm9kZS0+c2Nhbi5zY2FucmVsaWQsCisJCQkJCSAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxp ZHMpOwogCiAJLyoKIAkgKiBNaXNjZWxsYW5lb3VzIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmY5MWM2YjE3NjIwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDYsMTIgKzEwNiwxMyBAQCBJbmRl eE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkg Ki8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkgICBlc3Rh dGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCi0JCQkJ CQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9y ZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9kZS0+c3Mu c3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAor CQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+aXNzX0lu c3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJCQkJCQkg bm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfTW9kaWZpZXNC YXNlUmVsKTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApAQCAtOTM1LDYg KzkzNiwxMCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1 cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxM OwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwogCisJaW5kZXhzdGF0ZS0+aXNzX01vZGlmaWVzQmFz ZVJlbCA9CisJCWJtc19pc19tZW1iZXIobm9kZS0+c2Nhbi5zY2FucmVsaWQsCisJCQkJCSAgZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4gdHlwZSBm cm9tIHRoZSByZWxhdGlvbiBkZXNjcmlwdG9yLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKaW5kZXggZWQzNWM1OGMyYzMuLmNkZWQ3ZjE1NzAzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMKQEAgLTY5LDkgKzY5LDkgQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUp CiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3 ZSdyZSBzZXJpYWxseQogCQkgKiBleGVjdXRpbmcgYSBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8g YmUgcGFyYWxsZWwuCiAJCSAqLwotCQlzY2FuZGVzYyA9IHRhYmxlX2JlZ2luc2Nhbihub2RlLT5z cy5zc19jdXJyZW50UmVsYXRpb24sCi0JCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0J CQkJCQkJCSAgIDAsIE5VTEwpOworCQlzY2FuZGVzYyA9IHRhYmxlX2JlZ2luc2Nhbl92bXNldChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCQkJIGVzdGF0ZS0+ZXNfc25hcHNo b3QsCisJCQkJCQkJCQkJIDAsIE5VTEwsIG5vZGUtPm1vZGlmaWVzX3JlbCk7CiAJCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMjM3LDYgKzIzNywxMCBA QCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOwogCisJ c2NhbnN0YXRlLT5tb2RpZmllc19yZWwgPQorCQlibXNfaXNfbWVtYmVyKG5vZGUtPnNjYW4uc2Nh bnJlbGlkLAorCQkJCQkgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKKwogCS8qIGFuZCBj cmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0eXBlICovCiAJRXhlY0luaXRTY2Fu VHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+c3MsCiAJCQkJCQkgIFJlbGF0aW9uR2V0RGVz Y3Ioc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24pLApAQCAtMzcwLDcgKzM3NCw4IEBA IEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSAg ZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5z cy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJl bGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5z cy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkJICAgbm9kZS0+bW9kaWZpZXNf cmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDAzLDUgKzQwOCw3IEBAIEV4ZWNTZXFTY2FuSW5p dGlhbGl6ZVdvcmtlcihTZXFTY2FuU3RhdGUgKm5vZGUsCiAKIAlwc2NhbiA9IHNobV90b2NfbG9v a3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwog CW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAg IHBzY2FuLAorCQkJCQkJCQkJICAgbm9kZS0+bW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZTViOTQ1YTllZTMuLjAxZDJiZGEzZjcyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDEzMyw2ICs0MTMzLDE4IEBAIEdsb2JhbFZp c1Rlc3RGb3IoUmVsYXRpb24gcmVsKQogCXJldHVybiBzdGF0ZTsKIH0KIAorLyoKKyAqIFJldHVy bnMgbWF5YmVfbmVlZGVkIGFzIGEgMzItYml0IFRyYW5zYWN0aW9uSWQuIENhbiBiZSB1c2VkIGlu IGNhbGxlcnMgdGhhdAorICogbmVlZCB0byBjb21wYXJlIHRyYW5zYWN0aW9uIElEcyB0byBhIHNp bmdsZSB2YWx1ZSBhbmQgYXJlIG9rYXkgd2l0aCB1c2luZworICogdGhlIG1vcmUgY29uc2VydmF0 aXZlIGJvdW5kYXJ5LgorICovCitUcmFuc2FjdGlvbklkCitPbGRlc3RYbWluRnJvbUdsb2JhbFZp c1N0YXRlKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1cm4gWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKHN0YXRlLT5tYXliZV9uZWVkZWQpOworfQorCisKIC8qCiAgKiBSZXR1cm4gdHJ1 ZSBpZiBpdCdzIHdvcnRoIHVwZGF0aW5nIHRoZSBhY2N1cmF0ZSBtYXliZV9uZWVkZWQgYm91bmRh cnkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA1YjJhYjE4MWI1Zi4uYmYyNzJjMmMzN2YgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oCkBAIC0xODAsNiArMTgwLDExIEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4 X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkgU25hcHNob3Qgc25h cHNob3QsCiAJCQkJCQkJCQkgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAog CQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gSW5kZXhTY2FuRGVz YyBpbmRleF9iZWdpbnNjYW5fdm1zZXQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJ CSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJICAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkJCQkJICAgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAor CQkJCQkJCQkJCSAgIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywgYm9vbCBtb2RpZmllc19oZWFw X3JlbCk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0 aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ CQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCkBAIC0yMDYsNiArMjEx LDEyIEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxh dGlvbiBoZWFwcmVsLAogCQkJCQkJCQkJCQkgIEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudCwKIAkJCQkJCQkJCQkJICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsCiAJCQkJCQkJ CQkJCSAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuKTsKKworZXh0ZXJuIEluZGV4U2NhbkRl c2MgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0 aW9uIGluZGV4cmVsLAorCQkJCQkJCQkJCQkJCUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudCwKKwkJCQkJCQkJCQkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsCisJCQkJCQkJ CQkJCQkJUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9k aWZpZXNfcmVsKTsKIGV4dGVybiBJdGVtUG9pbnRlciBpbmRleF9nZXRuZXh0X3RpZChJbmRleFNj YW5EZXNjIHNjYW4sCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24pOwogc3RydWN0 IFR1cGxlVGFibGVTbG90OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDBiOWJiMWM5YjEzLi40NmVhOGI4 NDU1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtOTQsNiArOTQsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg SGVhcFNjYW5EZXNjRGF0YQogCSAqLwogCVBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRh ICpyc19wYXJhbGxlbHdvcmtlcmRhdGE7CiAKKwkvKgorCSAqIEZvciBzZXF1ZW50aWFsIHNjYW5z IGFuZCBiaXRtYXAgaGVhcCBzY2Fucy4gSWYgdGhlIHJlbGF0aW9uIGlzIG5vdAorCSAqIGJlaW5n IG1vZGlmaWVkLCBvbi1hY2Nlc3MgcHJ1bmluZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFw IHBhZ2UncworCSAqIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8gdGhpcyBidWZmZXIuCisJICov CisJQnVmZmVyCQlyc192bWJ1ZmZlcjsKKwogCS8qIHRoZXNlIGZpZWxkcyBvbmx5IHVzZWQgaW4g cGFnZS1hdC1hLXRpbWUgbW9kZSBhbmQgZm9yIGJpdG1hcCBzY2FucyAqLwogCXVpbnQzMgkJcnNf Y2luZGV4OwkJLyogY3VycmVudCB0dXBsZSdzIGluZGV4IGluIHZpc3R1cGxlcyAqLwogCXVpbnQz MgkJcnNfbnR1cGxlczsJCS8qIG51bWJlciBvZiB2aXNpYmxlIHR1cGxlcyBvbiBwYWdlICovCkBA IC0xMTYsOCArMTIzLDE4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hIZWFwRGF0YQogewog CUluZGV4RmV0Y2hUYWJsZURhdGEgeHNfYmFzZTsJLyogQU0gaW5kZXBlbmRlbnQgcGFydCBvZiB0 aGUgZGVzY3JpcHRvciAqLwogCi0JQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1 ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KLQkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxp ZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCS8qCisJICogQ3VycmVu dCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkuIE5COiBpZiB4c19jYnVmIGlzIG5vdAorCSAq IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIuCisJICovCisJQnVm ZmVyCQl4c19jYnVmOworCisJLyoKKwkgKiBGb3IgaW5kZXggc2NhbnMgdGhhdCBkbyBub3QgbW9k aWZ5IHRoZSB1bmRlcmx5aW5nIGhlYXAgdGFibGUsIG9uLWFjY2VzcworCSAqIHBydW5pbmcgbWF5 IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MgY29ycmVzcG9uZGluZyBWTSBibG9jayB0 bworCSAqIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfdm1idWZmZXI7CiB9IEluZGV4 RmV0Y2hIZWFwRGF0YTsKIAogLyogUmVzdWx0IGNvZGVzIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW0gKi8KQEAgLTM3NCw3ICszOTEsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2lu ZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5j ICovCiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7Ci1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVf b3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKK2V4dGVybiB2b2lkIGhlYXBf cGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJ CUJ1ZmZlciAqdm1idWZmZXIsIGJvb2wgYWxsb3dfdm1zZXQpOwogZXh0ZXJuIHZvaWQgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ CQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl ciwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IGI1ZTBmYjM4NmMwLi5mNDk2ZTBiNDkzOSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvcmVsc2Nhbi5oCkBAIC0xMjEsNiArMTIxLDEyIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVs QmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRhICpQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyOwog dHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YQogewogCVJlbGF0aW9uCXJlbDsKKwor CS8qCisJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpZiB0aGUg cXVlcnkgZG9lcyBub3QgbW9kaWZ5CisJICogdGhlIHVuZGVybHlpbmcgcmVsYXRpb24uIFRyYWNr IHRoYXQgaGVyZS4KKwkgKi8KKwlib29sCQltb2RpZmllc19iYXNlX3JlbDsKIH0gSW5kZXhGZXRj aFRhYmxlRGF0YTsKIAogc3RydWN0IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFi bGVhbS5oCmluZGV4IDFjOWU4MDJhNmIxLi4wZTk4NmQ4ZWY3MiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CkBAIC02Miw2ICs2Miw4IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJLyogdW5yZWdp c3RlciBzbmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9UID0gMSA8PCA5 LAorCS8qIHdoZXRoZXIgb3Igbm90IHNjYW4gc2hvdWxkIGF0dGVtcHQgdG8gc2V0IHRoZSBWTSAq LworCVNPX0FMTE9XX1ZNX1NFVCA9IDEgPDwgMTAsCiB9CQkJU2Nhbk9wdGlvbnM7CiAKIC8qCkBA IC04NzYsNiArODc4LDI1IEBAIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFw c2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQogCisvKgorICogU2ltaWxhciB0byB0 YWJsZV9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRo ZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24uIFRoaXMgaXMgdXNlZCB3aGVu IHRoZSBjYWxsZXIgd2FudHMgdG8gYXR0ZW1wdAorICogbWFya2luZyBwYWdlcyBpbiB0aGUgcmVs YXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGR1cmluZworICogb24t YWNjZXNzIHBydW5pbmcuCisgKi8KK3N0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwordGFibGVf YmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCSAg aW50IG5rZXlzLCBzdHJ1Y3QgU2NhbktleURhdGEgKmtleSwgYm9vbCBtb2RpZmllc19yZWwpCit7 CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwg U09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJaWYgKCFtb2RpZmllc19yZWwp CisJCWZsYWdzIHw9IFNPX0FMTE9XX1ZNX1NFVDsKKworCXJldHVybiByZWwtPnJkX3RhYmxlYW0t PnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOworfQor CiAvKgogICogTGlrZSB0YWJsZV9iZWdpbnNjYW4oKSwgYnV0IGZvciBzY2FubmluZyBjYXRhbG9n LiBJdCdsbCBhdXRvbWF0aWNhbGx5IHVzZSBhCiAgKiBzbmFwc2hvdCBhcHByb3ByaWF0ZSBmb3Ig c2Nhbm5pbmcgY2F0YWxvZyByZWxhdGlvbnMuCkBAIC05MTMsMTAgKzkzNCwxMyBAQCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKICAqLwogc3Rh dGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5fYm0oUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkgICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0 YSAqa2V5KQorCQkJCSAgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJvb2wg bW9kaWZpZXNfcmVsKQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX0JJVE1BUFNDQU4gfCBT T19BTExPV19QQUdFTU9ERTsKIAorCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19B TExPV19WTV9TRVQ7CisKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwg c25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CiB9CkBAIC0x MTI1LDYgKzExNDksMTAgQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUoUmVsYXRpb24gcmVsLAogZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2Fu RGVzYyBwc2Nhbik7CiAKK2V4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQlQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJCQkJYm9vbCBtb2RpZmllc19yZWwpOworCiAvKgog ICogUmVzdGFydCBhIHBhcmFsbGVsIHNjYW4uICBDYWxsIHRoaXMgaW4gdGhlIGxlYWRlciBwcm9j ZXNzLiAgQ2FsbGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhhdCBhbGwg d29ya2VycyBoYXZlIGZpbmlzaGVkIHRoZSBzY2FuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGUx MDdkNmU1ZjgxLi4xZDBiMzc0YjY1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY4MCw2ICs2 ODAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkgKiBFeGVjRG9Jbml0aWFs UHJ1bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQg ZnJvbSBRdWVyeURlc2MgKi8KIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgbW9k aWZpZWQgYnkgdGhlIHF1ZXJ5IGVpdGhlciB0aHJvdWdoCisJICogVVBEQVRFL0RFTEVURS9JTlNF UlQvTUVSR0Ugb3IgU0VMRUNUIEZPUiBVUERBVEUKKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2Rp ZmllZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwg anVuayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUg dHVwbGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwpAQCAtMTYzMSw2ICsx NjM3LDEzIEBAIHR5cGVkZWYgc3RydWN0IFNlcVNjYW5TdGF0ZQogewogCVNjYW5TdGF0ZQlzczsJ CQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KIAlTaXplCQlwc2Nhbl9sZW47CQkv KiBzaXplIG9mIHBhcmFsbGVsIGhlYXAgc2NhbiBkZXNjcmlwdG9yICovCisKKwkvKgorCSAqIFdo ZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24gc2Nhbm5lZCBieSB0 aGlzIG5vZGUuCisJICogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBvcHRp bWl6YXRpb25zIHRoYXQgYXJlIG9ubHkKKwkgKiBlZmZlY3RpdmUgZm9yIHRhYmxlcyBub3QgbW9k aWZpZWQgYnkgdGhlIHF1ZXJ5LgorCSAqLworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIH0gU2VxU2Nh blN0YXRlOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzAyLDYgKzE3MTUsNyBAQCB0eXBl ZGVmIHN0cnVjdAogICoJCU9yZGVyQnlUeXBCeVZhbHMgICBpcyB0aGUgZGF0YXR5cGUgb2Ygb3Jk ZXIgYnkgZXhwcmVzc2lvbiBwYXNzLWJ5LXZhbHVlPwogICoJCU9yZGVyQnlUeXBMZW5zCSAgIHR5 cGxlbnMgb2YgdGhlIGRhdGF0eXBlcyBvZiBvcmRlciBieSBleHByZXNzaW9ucwogICoJCVBzY2Fu TGVuCQkgICBzaXplIG9mIHBhcmFsbGVsIGluZGV4IHNjYW4gZGVzY3JpcHRvcgorICoJCU1vZGlm aWVzQmFzZVJlbCAgICB0cnVlIGlmIHF1ZXJ5IG1vZGlmaWVzIGJhc2UgcmVsYXRpb24KICAqIC0t LS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuU3RhdGUKQEAgLTE3 MzEsNiArMTc0NSw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhblN0YXRlCiAJYm9vbAkgICAq aXNzX09yZGVyQnlUeXBCeVZhbHM7CiAJaW50MTYJICAgKmlzc19PcmRlckJ5VHlwTGVuczsKIAlT aXplCQlpc3NfUHNjYW5MZW47CisJYm9vbAkJaXNzX01vZGlmaWVzQmFzZVJlbDsKIH0gSW5kZXhT Y2FuU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4ODgsNiArMTkwMyw3IEBAIHR5 cGVkZWYgc3RydWN0IFNoYXJlZEJpdG1hcEhlYXBJbnN0cnVtZW50YXRpb24KICAqCQlwc3RhdGUJ CQkgICBzaGFyZWQgc3RhdGUgZm9yIHBhcmFsbGVsIGJpdG1hcCBzY2FuCiAgKgkJc2luc3RydW1l bnQJCSAgIHN0YXRpc3RpY3MgZm9yIHBhcmFsbGVsIHdvcmtlcnMKICAqCQlyZWNoZWNrCQkJICAg ZG8gY3VycmVudCBwYWdlJ3MgdHVwbGVzIG5lZWQgcmVjaGVjaworICoJCW1vZGlmaWVzX3JlbAkg ICBkb2VzIHRoZSBxdWVyeSBtb2RpZnkgdGhlIGJhc2UgcmVsYXRpb24KICAqIC0tLS0tLS0tLS0t LS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW5TdGF0ZQpAQCAtMTkwMCw2 ICsxOTE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW5TdGF0ZQogCVBhcmFsbGVs Qml0bWFwSGVhcFN0YXRlICpwc3RhdGU7CiAJU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlv biAqc2luc3RydW1lbnQ7CiAJYm9vbAkJcmVjaGVjazsKKwlib29sCQltb2RpZmllc19yZWw7CiB9 IEJpdG1hcEhlYXBTY2FuU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3Iu aAppbmRleCBkMzQ2YmU3MTY0Mi4uZmNiMTBiOGQxMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL3NuYXBtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKQEAgLTEw MSw2ICsxMDEsNyBAQCBleHRlcm4gYm9vbCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoR2xv YmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZAogZXh0ZXJuIGJvb2wgR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFu c2FjdGlvbklkIGZ4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVYaWQo UmVsYXRpb24gcmVsLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gYm9vbCBHbG9iYWxWaXND aGVja1JlbW92YWJsZUZ1bGxYaWQoUmVsYXRpb24gcmVsLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW5Gcm9tR2xvYmFsVmlzU3RhdGUoR2xv YmFsVmlzU3RhdGUgKnN0YXRlKTsKIAogLyoKICAqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBpbXBs ZW1lbnRpbmcgdmlzaWJpbGl0eSByb3V0aW5lcyBpbiB0YWJsZSBBTXMuCi0tIAoyLjQzLjAKCg== --00000000000004eee90639aeb4d3--