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.98.2) (envelope-from ) id 1xCwCh-00000000Dzi-1Usa for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 09:38:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xCwCe-00000001xEk-2dCA for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Oct 2026 09:38:48 +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.98.2) (envelope-from ) id 1xCwCe-00000001xEc-07Q6 for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 09:38:48 +0000 Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xCwCZ-000000008q1-3HOM for pgsql-hackers@lists.postgresql.org; Sat, 03 Oct 2026 09:38:46 +0000 Received: by mail-ua1-x92f.google.com with SMTP id a1e0cc1a2514c-988ca07c69cso192046241.0 for ; Sat, 03 Oct 2026 02:38:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791020322; x=1791625122; darn=lists.postgresql.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:content-type:from:to:cc:subject:date:message-id :reply-to:content-type; bh=c1xZfpRlpnoNUaFAjI8zOYglG+DRIMPbFAzhVUQGa/8=; b=eQ9tGzjOqrAUyxGaBgk2V0mtsbIGJ020W1uN7WZV2yfs9NO2+BESL4614QAtXfcnfs nyvBOskyzSDJg7UiAOoba02T5qBMJjg+IecIb41H2mMTaAcbZv44q7UZXYhc+Ou/GTUh blgz8SR0qRIDq1CRwRaIqM5bnM5UxUeIml1e1hmMGA0nJMSnZedawAyqmokm0Ay3pyL2 e09ykZBr08jIJG6xICjsQ8MKFWj63fkNtFPL5Ki9jm0Yf6kMzxQoA1neT6bzzSLRzBap 7FYJC6NkcyaB6u5Bi9BI/T6QlnpLX032liz4LgjAwFXmXhbd2b80S8opFcq2aRaSm4yu wqJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791020322; x=1791625122; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:content-type:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=c1xZfpRlpnoNUaFAjI8zOYglG+DRIMPbFAzhVUQGa/8=; b=yATUWPOVa44jd5nWC7vN90k62YlfBpICnpQPrkB43vFqnS9p8ZC94pOJriqof5byqg ygcY8oUT/wsBIUJ/qctjafSie2ClnMxnRJBd9BQjOjh5eBGhndyMfptoxjjTElOt0n9f H5LdsG4T1axdhCt6V741ISjofxNQEM7SS6nwRlw0VZ1UNDSZoTRNDGivWKvR1kPsIGTj wqKRN+Q7Eo13ixaem7/Re4K1I5qO/dI8VKoBjSd4F56Pfui6h+UwL+J3/ZXI8sMo/P7W CBHMa7fPGIGTeyOow29/09jLfA3FG1lgo0+gZFj17Sem7i3KRgOyrehKRvWsMnMZ9/Nd TmFg== X-Forwarded-Encrypted: i=1; AKwUvBzjGi8XSYoTeZAv5lfiL1Cj0xN32XB0c5Ses5dgVHRgDSmbY962K1JTa5vFPl0jOaaUJM9kjEdr0NZy9cEb@lists.postgresql.org X-Gm-Message-State: AFq9FYLSmiwuNSmaB122G7zhyM87ztNbV+fz+4505UCf1oc8S4BFM7Md 3DMGySuNQpCMAohjLx7r78G414EiC/V2jNPAv8kv/7zuwLVOFdVqz2nT X-Gm-Gg: AYBFou1qZBd2UYz/9d179ld45Zn8k2FAM+0yzaD06M15pkFapsIWmNCMq1wXgKn7TXN GvgSZPcKd1KgGC7s2klDRnejc1E1y3WhNVJyKxUyhhYli9lQ391kEth8FkiXoB7c7Q9f1QE4PKq /IY30bX0KoQRzxu6n+7Lslpfiik/JjSX89CSl/mSH6tHSRwebaxyBoyhikfhtUbBKYtc0LxQCgk ioaSFA6+Urlf9jI7Ln4fGU9y2x67R6Df19/VpSoek0l30Eb529YpfJrlO1oqoSwC32wDkYmuI/C SO0tVCd1tQe+OcX5sjnUA5iT980+ljszF1lwI7yVW0E/IqS+fVBpc9u2xczRtZ73ccL2lQ97fIT SFPV1PR2g+M8a66xUZIoSIbKTniW8f/PuaN+kVffEPLlJ/JCw/0i/kQnE0cVW5KPstChOpSjEvM zFylcDLO0Klg9sVJ9Wcu7zxlzeTFWR9Di2IGSghpVuT91PusjT3qQHVJB4qXXlwupRL9gJkzF3c 5jqPluNlpkvMO456xpv X-Received: by 2002:a05:6102:4188:b0:7b3:4199:2dd4 with SMTP id ada2fe7eead31-7c2452be9efmr548791137.20.1791020322150; Sat, 03 Oct 2026 02:38:42 -0700 (PDT) Received: from localhost ([2804:14d:32a7:4273:3415:3dd3:ba2e:a744]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-98b2efcd4b7sm5506617241.8.2026.10.03.02.38.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 03 Oct 2026 02:38:41 -0700 (PDT) Content-Type: multipart/mixed; boundary=52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513 Mime-Version: 1.0 Date: Sat, 03 Oct 2026 06:38:37 -0300 Message-Id: Cc: "Fujii Masao" , "PostgreSQL Hackers" Subject: Re: postgres_fdw: transaction mode inheritance corner cases From: "Matheus Alcantara" To: "Etsuro Fujita" , "Nikolay Samokhvalov" X-Mailer: aerc 0.21.0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513 Content-Type: multipart/alternative; boundary=46ae602f4ecb61be0498f82ca6ba6dd3b169ed1d8bfa5b56225f24d2fe9b --46ae602f4ecb61be0498f82ca6ba6dd3b169ed1d8bfa5b56225f24d2fe9b Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Fri Oct 2, 2026 at 12:54 PM -03, Etsuro Fujita wrote: > On Fri, Oct 2, 2026 at 2:32=E2=80=AFAM Etsuro Fujita wrote: >> On Fri, Oct 2, 2026 at 1:47=E2=80=AFAM Nikolay Samokhvalov wrote: >> > My AI harness for testing reproduced this on >> > REL_19_STABLE at 9e73b209 with Etsuro's v1 patch and prepared the >> > attached incremental patch. It declares the remote cursor before >> > advancing the remote savepoint level, then synchronizes the transactio= n >> > mode before FETCH. The second FETCH fails with 34000 on v1 and succeed= s >> > with this patch. >> >> Will look into the patch. > > I think the patch assumes that create_cursor() is called at the same > transaction nesting depth as the local cursor, but that doesn't always > hold; for eg, the case I showed yesterday, that doesn't hold, so it > still fails. So it's a partial solution as proposed. Rather than > complicating the code, I'd like to propose to fix this by just > disallowing first fetching of a cursor within a deeper subtransaction > than it was created in. Here is an updated version for that. This is > an existing issue, so I split it into two: > > * v2-0001-Fix-open-cursor-handling.patch > This addresses the existing issue by disallowing the fetching (and the > issue #1 reported by Fujii-san as a side effect). > > * v2-0002-Fix-xact-prop-issues.patch > This addresses the remaining issues #2, #3 and #5 reported by > Fujii-san (#4 is not a bug). I will add test cases next. > Thanks for the v2 patches! I tested them and the hot standby issue is fixed by 0002, and the deferred trigger case works as expected. I found two problems with 0001, 0002 looks good to me. 1: the check in 0001 doesn't cover sibling savepoints Since created_at only keeps the nesting depth, a cursor declared in one savepoint and first fetched in a sibling savepoint at the same depth passes the check: begin; savepoint s1; declare c cursor for select * from ft; release s1; savepoint s2; fetch 1 from c; rollback to s2; fetch all from c; commit; ERROR: 34000: cursor "c1" does not exist CONTEXT: remote SQL command: CLOSE c1 2: it rejects cases that work on master A PL/pgSQL refcursor that is opened outside an exception block and first fetched inside it works on master, but fails with 0001 with the new error. It also fails if the exception handler swallows errors: the new error is hidden inside the block, the portal is left failed, and the later fetch outside the block fails with a confusing 'portal "" cannot be run'. On master this works because no remote savepoint exists yet, so the remote cursor is created at remote level 1. If we keep this restriction, I'm wondering if needs a documentation note and a release note, what do you think? I'm attaching a prototype 0003 on top of 0001 and 0002 that fixes both issues that I've mention. The idea is that the real problem is not the local nesting depth, but whether the remote savepoint depth at the time of the DECLARE is deeper than the level where the local cursor lives, since rolling back a remote savepoint at or below that depth destroys the remote cursor. So 0003 declares the remote cursor before synchronizing the remote savepoint level, and raises the error only if the current remote depth is deeper than the level of the local cursor. To know that level it records the subtransaction ID and the nesting level when the scan is created; if that subtransaction was already released, it conservatively assumes the cursor lives at the top level. With this, the cases above work, and your earlier example, where another scan advances the remote savepoint level before the first fetch, still errors. The postgres_fdw tests pass, and I adjusted the cursor tests of 0001 accordingly. It's a prototype, I haven't tested the async path beyond the existing tests. What do you think? -- Matheus Alcantara EDB: https://www.enterprisedb.com --46ae602f4ecb61be0498f82ca6ba6dd3b169ed1d8bfa5b56225f24d2fe9b-- --52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Fix-open-cursor-handling.patch Content-Type: text/plain; charset=utf-8; name=v2-0001-Fix-open-cursor-handling.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCBiNWQ0Y2YzZGNjYy4uNjUyZmE0YTk0M2Qg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTM5Nyw3ICszOTcsOCBAQCBtYWtlX25l d19jb25uZWN0aW9uKENvbm5DYWNoZUVudHJ5ICplbnRyeSwgVXNlck1hcHBpbmcgKnVzZXIpCiAJ ZW50cnktPm1hcHBpbmdfaGFzaHZhbHVlID0KIAkJR2V0U3lzQ2FjaGVIYXNoVmFsdWUxKFVTRVJN QVBQSU5HT0lELAogCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh1c2VyLT51bWlkKSk7Ci0JbWVt c2V0KCZlbnRyeS0+c3RhdGUsIDAsIHNpemVvZihlbnRyeS0+c3RhdGUpKTsKKwllbnRyeS0+c3Rh dGUucGVuZGluZ0FyZXEgPSBOVUxMOworCWVudHJ5LT5zdGF0ZS5lbnRyeSA9IGVudHJ5OwogCiAJ LyoKIAkgKiBEZXRlcm1pbmUgd2hldGhlciB0byBrZWVwIHRoZSBjb25uZWN0aW9uIHRoYXQgd2Un cmUgYWJvdXQgdG8gbWFrZSBoZXJlCkBAIC0xMDYxLDYgKzEwNjIsMjAgQEAgR2V0UHJlcFN0bXRO dW1iZXIoUEdjb25uICpjb25uKQogCXJldHVybiArK3ByZXBfc3RtdF9udW1iZXI7CiB9CiAKKy8q CisgKiBFeHBvcnRlZCB2ZXJzaW9uIG9mIGJlZ2luX3JlbW90ZV94YWN0KCkuCisgKgorICogVGhp cyBjYW4gYmUgY2FsbGVkIGZvciBjb25uZWN0aW9ucyBvbiB3aGljaCBiZWdpbl9yZW1vdGVfeGFj dCgpIGhhcyBzdGFydGVkCisgKiBhIHJlbW90ZSB0cmFuc2FjdGlvbi4KKyAqLwordm9pZAorcGdm ZHdfYmVnaW5fcmVtb3RlX3hhY3QoQ29ubkNhY2hlRW50cnkgKmVudHJ5KQoreworCUFzc2VydChl bnRyeSk7CisJQXNzZXJ0KGVudHJ5LT54YWN0X2RlcHRoID4gMCk7CisJYmVnaW5fcmVtb3RlX3hh Y3QoZW50cnkpOworfQorCiAvKgogICogU3VibWl0IGEgcXVlcnkgYW5kIHdhaXQgZm9yIHRoZSBy ZXN1bHQuCiAgKgpAQCAtMTA3Nyw2ICsxMDkyLDEzIEBAIHBnZmR3X2V4ZWNfcXVlcnkoUEdjb25u ICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwgUGdGZHdDb25uU3RhdGUgKnN0YXRlKQogCWlmIChz dGF0ZSAmJiBzdGF0ZS0+cGVuZGluZ0FyZXEpCiAJCXByb2Nlc3NfcGVuZGluZ19yZXF1ZXN0KHN0 YXRlLT5wZW5kaW5nQXJlcSk7CiAKKwkvKgorCSAqIFNlY29uZCwgc3luY2hyb25pemUgdGhlIGxv Y2FsL3JlbW90ZSB0cmFuc2FjdGlvbnMuICBOb3RlIHRoYXQgd2UgbmVlZAorCSAqIHRvIGRvIHRo aXMgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBvcGVuIGN1cnNvcnMu CisJICovCisJaWYgKHN0YXRlKQorCQlwZ2Zkd19iZWdpbl9yZW1vdGVfeGFjdChzdGF0ZS0+ZW50 cnkpOworCiAJaWYgKCFQUXNlbmRRdWVyeShjb25uLCBxdWVyeSkpCiAJCXJldHVybiBOVUxMOwog CXJldHVybiBwZ2Zkd19nZXRfcmVzdWx0KGNvbm4pOwpAQCAtMTkyOSwxMCArMTk1MSwxMCBAQCBw Z2Zkd19hYm9ydF9jbGVhbnVwKENvbm5DYWNoZUVudHJ5ICplbnRyeSwgYm9vbCB0b3BsZXZlbCkK IAkgKiBJZiBwZW5kaW5nQXJlcSBvZiB0aGUgcGVyLWNvbm5lY3Rpb24gc3RhdGUgaXMgbm90IE5V TEwsIGl0IG1lYW5zIHRoYXQKIAkgKiBhbiBhc3luY2hyb25vdXMgZmV0Y2ggYmVndW4gYnkgZmV0 Y2hfbW9yZV9kYXRhX2JlZ2luKCkgd2FzIG5vdCBkb25lCiAJICogc3VjY2Vzc2Z1bGx5IGFuZCB0 aHVzIHRoZSBwZXItY29ubmVjdGlvbiBzdGF0ZSB3YXMgbm90IHJlc2V0IGluCi0JICogZmV0Y2hf bW9yZV9kYXRhKCk7IGluIHRoYXQgY2FzZSByZXNldCB0aGUgcGVyLWNvbm5lY3Rpb24gc3RhdGUg aGVyZS4KKwkgKiBmZXRjaF9tb3JlX2RhdGEoKTsgaW4gdGhhdCBjYXNlIHJlc2V0IHBlbmRpbmdB cmVxIGhlcmUuCiAJICovCiAJaWYgKGVudHJ5LT5zdGF0ZS5wZW5kaW5nQXJlcSkKLQkJbWVtc2V0 KCZlbnRyeS0+c3RhdGUsIDAsIHNpemVvZihlbnRyeS0+c3RhdGUpKTsKKwkJZW50cnktPnN0YXRl LnBlbmRpbmdBcmVxID0gTlVMTDsKIAogCS8qIERpc2FybSBjaGFuZ2luZ194YWN0X3N0YXRlIGlm IGl0IGFsbCB3b3JrZWQgKi8KIAllbnRyeS0+Y2hhbmdpbmdfeGFjdF9zdGF0ZSA9IGZhbHNlOwpA QCAtMjIyMSw5ICsyMjQzLDkgQEAgcGdmZHdfZmluaXNoX2Fib3J0X2NsZWFudXAoTGlzdCAqcGVu ZGluZ19lbnRyaWVzLCBMaXN0ICpjYW5jZWxfcmVxdWVzdGVkLAogCQkJZW50cnktPmhhdmVfZXJy b3IgPSBmYWxzZTsKIAkJfQogCi0JCS8qIFJlc2V0IHRoZSBwZXItY29ubmVjdGlvbiBzdGF0ZSBp ZiBuZWVkZWQgKi8KKwkJLyogUmVzZXQgcGVuZGluZ0FyZXEgaGVyZSBpZiBhbnkgKi8KIAkJaWYg KGVudHJ5LT5zdGF0ZS5wZW5kaW5nQXJlcSkKLQkJCW1lbXNldCgmZW50cnktPnN0YXRlLCAwLCBz aXplb2YoZW50cnktPnN0YXRlKSk7CisJCQllbnRyeS0+c3RhdGUucGVuZGluZ0FyZXEgPSBOVUxM OwogCiAJCS8qIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIGVudHJ5OyB1bnNldCB0aGUgY2hhbmdpbmdf eGFjdF9zdGF0ZSBmbGFnICovCiAJCWVudHJ5LT5jaGFuZ2luZ194YWN0X3N0YXRlID0gZmFsc2U7 CkBAIC0yMjY2LDkgKzIyODgsOSBAQCBwZ2Zkd19maW5pc2hfYWJvcnRfY2xlYW51cChMaXN0ICpw ZW5kaW5nX2VudHJpZXMsIExpc3QgKmNhbmNlbF9yZXF1ZXN0ZWQsCiAJCWVudHJ5LT5oYXZlX3By ZXBfc3RtdCA9IGZhbHNlOwogCQllbnRyeS0+aGF2ZV9lcnJvciA9IGZhbHNlOwogCi0JCS8qIFJl c2V0IHRoZSBwZXItY29ubmVjdGlvbiBzdGF0ZSBpZiBuZWVkZWQgKi8KKwkJLyogUmVzZXQgcGVu ZGluZ0FyZXEgaGVyZSBpZiBhbnkgKi8KIAkJaWYgKGVudHJ5LT5zdGF0ZS5wZW5kaW5nQXJlcSkK LQkJCW1lbXNldCgmZW50cnktPnN0YXRlLCAwLCBzaXplb2YoZW50cnktPnN0YXRlKSk7CisJCQll bnRyeS0+c3RhdGUucGVuZGluZ0FyZXEgPSBOVUxMOwogCiAJCS8qIFdlJ3JlIGRvbmUgd2l0aCB0 aGlzIGVudHJ5OyB1bnNldCB0aGUgY2hhbmdpbmdfeGFjdF9zdGF0ZSBmbGFnICovCiAJCWVudHJ5 LT5jaGFuZ2luZ194YWN0X3N0YXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCA3MzlmNDNhZjdiYi4uM2FhYjU2YjA2NDIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApA QCAtNTMzMiw2ICs1MzMyLDggQEAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUxURVIgQ09MVU1O IGM4IFRZUEUgdXNlcl9lbnVtOwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gc3VidHJhbnNhY3Rpb24KIC0t ICArIGxvY2FsL3JlbW90ZSBlcnJvciBkb2Vzbid0IGJyZWFrIGN1cnNvcgorLS0gICsgY3Vyc29y cyBvcGVuZWQgYmVmb3JlIGEgc2F2ZXBvaW50IGFyZSBkaXNhbGxvd2VkIHRvIGJlIGZpcnN0Cist LSAgICBmZXRjaGVkIHdpdGhpbiBpdAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQkVHSU47CiBERUNMQVJFIGMg Q1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIGZ0MSBPUkRFUiBCWSBjMTsKQEAgLTUzNzEsNiArNTM3 MywxMiBAQCBTRUxFQ1QgKiBGUk9NIGZ0MSBPUkRFUiBCWSBjMSBMSU1JVCAxOwogKDEgcm93KQog CiBDT01NSVQ7CitCRUdJTjsKK0RFQ0xBUkUgYyBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gZnQx IE9SREVSIEJZIGMxOworU0FWRVBPSU5UIHM7CitGRVRDSCBjOworRVJST1I6ICBjYW5ub3QgcGVy Zm9ybSB0aGUgZmlyc3QgZmV0Y2ggb2YgYSBjdXJzb3Igd2l0aGluIGEgZGVlcGVyIHN1YnRyYW5z YWN0aW9uIHRoYW4gaXQgd2FzIGNyZWF0ZWQgaW4KK0FCT1JUOwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g dGVzdCBoYW5kbGluZyBvZiBjb2xsYXRpb25zCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDJiY2ZmNGIyNmI0Li5iMWQ3NTQ4N2M2NyAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nl c3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJjb21tYW5kcy9leHBsYWluX2Zvcm1hdC5oIgpAQCAtMTg5LDYgKzE5MCw3IEBAIHR5cGVk ZWYgc3RydWN0IFBnRmR3U2NhblN0YXRlCiAJRm1nckluZm8gICAqcGFyYW1fZmxpbmZvOwkvKiBv dXRwdXQgY29udmVyc2lvbiBmdW5jdGlvbnMgZm9yIHRoZW0gKi8KIAlMaXN0CSAgICpwYXJhbV9l eHByczsJLyogZXhlY3V0YWJsZSBleHByZXNzaW9ucyBmb3IgcGFyYW0gdmFsdWVzICovCiAJY29u c3QgY2hhciAqKnBhcmFtX3ZhbHVlczsJLyogdGV4dHVhbCB2YWx1ZXMgb2YgcXVlcnkgcGFyYW1l dGVycyAqLworCWludAkJCWNyZWF0ZWRfYXQ7CQkvKiB4YWN0IGRlcHRoIGF0IHdoaWNoIHRoZSBz Y2FuIHdhcyBjcmVhdGVkICovCiAKIAkvKiBmb3Igc3RvcmluZyByZXN1bHQgdHVwbGVzICovCiAJ SGVhcFR1cGxlICAqdHVwbGVzOwkJCS8qIGFycmF5IG9mIGN1cnJlbnRseS1yZXRyaWV2ZWQgdHVw bGVzICovCkBAIC0xNzYzLDYgKzE3NjUsOSBAQCBwb3N0Z3Jlc0JlZ2luRm9yZWlnblNjYW4oRm9y ZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIAlmc3N0YXRlLT5jdXJzb3JfbnVtYmVy ID0gR2V0Q3Vyc29yTnVtYmVyKGZzc3RhdGUtPmNvbm4pOwogCWZzc3RhdGUtPmN1cnNvcl9leGlz dHMgPSBmYWxzZTsKIAorCS8qIEdldCB0aGUgY3VycmVudCBsb2NhbCB0cmFuc2FjdGlvbidzIG5l c3RpbmcgZGVwdGggKi8KKwlmc3N0YXRlLT5jcmVhdGVkX2F0ID0gR2V0Q3VycmVudFRyYW5zYWN0 aW9uTmVzdExldmVsKCk7CisKIAkvKiBHZXQgcHJpdmF0ZSBpbmZvIGNyZWF0ZWQgYnkgcGxhbm5l ciBmdW5jdGlvbnMuICovCiAJZnNzdGF0ZS0+cXVlcnkgPSBzdHJWYWwobGlzdF9udGgoZnNwbGFu LT5mZHdfcHJpdmF0ZSwKIAkJCQkJCQkJCSBGZHdTY2FuUHJpdmF0ZVNlbGVjdFNxbCkpOwpAQCAt NDA1NCwxMCArNDA1OSwyMSBAQCBjcmVhdGVfY3Vyc29yKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUp CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAorCWlmIChmc3N0YXRl LT5jcmVhdGVkX2F0IDwgR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVzdExldmVsKCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCSBlcnJtc2coImNhbm5vdCBwZXJmb3JtIHRoZSBmaXJzdCBmZXRjaCBvZiBhIGN1cnNvciB3 aXRoaW4gYSBkZWVwZXIgc3VidHJhbnNhY3Rpb24gdGhhbiBpdCB3YXMgY3JlYXRlZCBpbiIpKSk7 CisKIAkvKiBGaXJzdCwgcHJvY2VzcyBhIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3QsIGlm IGFueS4gKi8KIAlpZiAoZnNzdGF0ZS0+Y29ubl9zdGF0ZS0+cGVuZGluZ0FyZXEpCiAJCXByb2Nl c3NfcGVuZGluZ19yZXF1ZXN0KGZzc3RhdGUtPmNvbm5fc3RhdGUtPnBlbmRpbmdBcmVxKTsKIAor CS8qCisJICogU2Vjb25kLCBzeW5jaHJvbml6ZSB0aGUgbG9jYWwvcmVtb3RlIHRyYW5zYWN0aW9u cy4gIE5vdGUgdGhhdCB3ZSBuZWVkCisJICogdG8gZG8gdGhpcyBiZWNhdXNlIHRoaXMgZnVuY3Rp b24gY2FuIGJlIGNhbGxlZCBmcm9tIG9wZW4gY3Vyc29ycy4KKwkgKi8KKwlwZ2Zkd19iZWdpbl9y ZW1vdGVfeGFjdChmc3N0YXRlLT5jb25uX3N0YXRlLT5lbnRyeSk7CisKIAkvKgogCSAqIENvbnN0 cnVjdCBhcnJheSBvZiBxdWVyeSBwYXJhbWV0ZXIgdmFsdWVzIGluIHRleHQgZm9ybWF0LiAgV2Ug ZG8gdGhlCiAJICogY29udmVyc2lvbnMgaW4gdGhlIHNob3J0LWxpdmVkIHBlci10dXBsZSBjb250 ZXh0LCBzbyBhcyBub3QgdG8gY2F1c2UgYQpAQCAtNDE0Nyw3ICs0MTYzLDcgQEAgZmV0Y2hfbW9y ZV9kYXRhKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX1RVUExFU19PSykKIAkJCXBnZmR3X3JlcG9ydF9lcnJvcihyZXMsIGNvbm4sIGZz c3RhdGUtPnF1ZXJ5KTsKIAotCQkvKiBSZXNldCBwZXItY29ubmVjdGlvbiBzdGF0ZSAqLworCQkv KiBSZXNldCB0aGUgcGVuZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdCAqLwogCQlmc3N0YXRlLT5j b25uX3N0YXRlLT5wZW5kaW5nQXJlcSA9IE5VTEw7CiAJfQogCWVsc2UKQEAgLTQzOTQsNiArNDQx MCw5IEBAIGNyZWF0ZV9mb3JlaWduX21vZGlmeShFU3RhdGUgKmVzdGF0ZSwKICAqCQlyZXN1bHQg aWYgYW55LiAgKFRoaXMgaXMgdGhlIHNoYXJlZCBndXRzIG9mIHBvc3RncmVzRXhlY0ZvcmVpZ25J bnNlcnQsCiAgKgkJcG9zdGdyZXNFeGVjRm9yZWlnbkJhdGNoSW5zZXJ0LCBwb3N0Z3Jlc0V4ZWNG b3JlaWduVXBkYXRlLCBhbmQKICAqCQlwb3N0Z3Jlc0V4ZWNGb3JlaWduRGVsZXRlLikKKyAqCisg KiBOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCBmcm9tIG9wZW4gY3Vyc29ycywg dGh1cyBubyBuZWVkIHRvCisgKiBzeW5jaHJvbml6ZSB0aGUgbG9jYWwvcmVtb3RlIHRyYW5zYWN0 aW9ucy4KICAqLwogc3RhdGljIFR1cGxlVGFibGVTbG90ICoqCiBleGVjdXRlX2ZvcmVpZ25fbW9k aWZ5KEVTdGF0ZSAqZXN0YXRlLApAQCAtNDgzMiw2ICs0ODUxLDkgQEAgcmVidWlsZF9mZHdfc2Nh bl90bGlzdChGb3JlaWduU2NhbiAqZnNjYW4sIExpc3QgKnRsaXN0KQogCiAvKgogICogRXhlY3V0 ZSBhIGRpcmVjdCBVUERBVEUvREVMRVRFIHN0YXRlbWVudC4KKyAqCisgKiBOb3RlOiB0aGlzIGZ1 bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCBmcm9tIG9wZW4gY3Vyc29ycywgdGh1cyBubyBuZWVkIHRv CisgKiBzeW5jaHJvbml6ZSB0aGUgbG9jYWwvcmVtb3RlIHRyYW5zYWN0aW9ucy4KICAqLwogc3Rh dGljIHZvaWQKIGV4ZWN1dGVfZG1sX3N0bXQoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKQEAgLTg4 NDAsOSArODg2MiwxNCBAQCBmZXRjaF9tb3JlX2RhdGFfYmVnaW4oQXN5bmNSZXF1ZXN0ICphcmVx KQogCiAJQXNzZXJ0KCFmc3N0YXRlLT5jb25uX3N0YXRlLT5wZW5kaW5nQXJlcSk7CiAKLQkvKiBD cmVhdGUgdGhlIGN1cnNvciBzeW5jaHJvbm91c2x5LiAqLworCS8qCisJICogQ3JlYXRlIHRoZSBj dXJzb3Igc3luY2hyb25vdXNseSBpZiBub3QgYWxyZWFkeSBkb25lLiAgT3RoZXJ3aXNlLAorCSAq IHN5bmNocm9uaXplIHRoZSBsb2NhbC9yZW1vdGUgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgZGF0 YSBmZXRjaC4KKwkgKi8KIAlpZiAoIWZzc3RhdGUtPmN1cnNvcl9leGlzdHMpCiAJCWNyZWF0ZV9j dXJzb3Iobm9kZSk7CisJZWxzZQorCQlwZ2Zkd19iZWdpbl9yZW1vdGVfeGFjdChmc3N0YXRlLT5j b25uX3N0YXRlLT5lbnRyeSk7CiAKIAkvKiBXZSB3aWxsIHNlbmQgdGhpcyBxdWVyeSwgYnV0IG5v dCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuICovCiAJc25wcmludGYoc3FsLCBzaXplb2Yoc3FsKSwg IkZFVENIICVkIEZST00gYyV1IiwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5oIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmgKaW5kZXgg ZGE3ZGExYzJlYTkuLmI5YjQ2MDE0MWY5IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuaAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu aApAQCAtMTQ2LDcgKzE0Niw4IEBAIHR5cGVkZWYgc3RydWN0IFBnRmR3UmVsYXRpb25JbmZvCiAg Ki8KIHR5cGVkZWYgc3RydWN0IFBnRmR3Q29ublN0YXRlCiB7Ci0JQXN5bmNSZXF1ZXN0ICpwZW5k aW5nQXJlcTsJLyogcGVuZGluZyBhc3luYyByZXF1ZXN0ICovCisJQXN5bmNSZXF1ZXN0ICpwZW5k aW5nQXJlcTsJCS8qIHBlbmRpbmcgYXN5bmMgcmVxdWVzdCAqLworCXN0cnVjdCBDb25uQ2FjaGVF bnRyeSAqZW50cnk7CS8qIGxpbmsgdG8gY29udGFpbmluZyBDb25uQ2FjaGVFbnRyeSAqLwogfSBQ Z0Zkd0Nvbm5TdGF0ZTsKIAogLyoKQEAgLTE3Myw2ICsxNzQsNyBAQCBleHRlcm4gdm9pZCBSZWxl YXNlQ29ubmVjdGlvbihQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIHVuc2lnbmVkIGludCBHZXRDdXJz b3JOdW1iZXIoUEdjb25uICpjb25uKTsKIGV4dGVybiB1bnNpZ25lZCBpbnQgR2V0UHJlcFN0bXRO dW1iZXIoUEdjb25uICpjb25uKTsKIGV4dGVybiB2b2lkIGRvX3NxbF9jb21tYW5kKFBHY29ubiAq Y29ubiwgY29uc3QgY2hhciAqc3FsKTsKK2V4dGVybiB2b2lkIHBnZmR3X2JlZ2luX3JlbW90ZV94 YWN0KHN0cnVjdCBDb25uQ2FjaGVFbnRyeSAqZW50cnkpOwogZXh0ZXJuIFBHcmVzdWx0ICpwZ2Zk d19nZXRfcmVzdWx0KFBHY29ubiAqY29ubik7CiBleHRlcm4gUEdyZXN1bHQgKnBnZmR3X2V4ZWNf cXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkJCQkJCQkJICBQZ0Zkd0Nv bm5TdGF0ZSAqc3RhdGUpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bv c3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNx bAppbmRleCBmMWNhMzIwNDM4Mi4uOWMyNzE5NTMyMDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0xNjM1LDYgKzE2MzUsOCBAQCBBTFRFUiBGT1JFSUdO IFRBQkxFIGZ0MSBBTFRFUiBDT0xVTU4gYzggVFlQRSB1c2VyX2VudW07CiAtLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLSBzdWJ0cmFuc2FjdGlvbgogLS0gICsgbG9jYWwvcmVtb3RlIGVycm9yIGRvZXNuJ3QgYnJl YWsgY3Vyc29yCistLSAgKyBjdXJzb3JzIG9wZW5lZCBiZWZvcmUgYSBzYXZlcG9pbnQgYXJlIGRp c2FsbG93ZWQgdG8gYmUgZmlyc3QKKy0tICAgIGZldGNoZWQgd2l0aGluIGl0CiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiBCRUdJTjsKIERFQ0xBUkUgYyBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gZnQxIE9SREVS IEJZIGMxOwpAQCAtMTY1MCw2ICsxNjUyLDEyIEBAIEZFVENIIGM7CiBTRUxFQ1QgKiBGUk9NIGZ0 MSBPUkRFUiBCWSBjMSBMSU1JVCAxOwogQ09NTUlUOwogCitCRUdJTjsKK0RFQ0xBUkUgYyBDVVJT T1IgRk9SIFNFTEVDVCAqIEZST00gZnQxIE9SREVSIEJZIGMxOworU0FWRVBPSU5UIHM7CitGRVRD SCBjOworQUJPUlQ7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgaGFuZGxpbmcgb2YgY29sbGF0 aW9ucwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQo= --52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-Fix-xact-prop-issues.patch Content-Type: text/plain; charset=utf-8; name=v2-0002-Fix-xact-prop-issues.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA2NTJmYTRhOTQzZC4uNzdhZWMwZmQ5ZWIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTExMiw2ICsxMTIsMjAgQEAgc3RhdGlj IHVpbnQzMiBwZ2Zkd193ZV9nZXRfcmVzdWx0ID0gMDsKICAqLwogI2RlZmluZSBSRVRSWV9DQU5D RUxfVElNRU9VVAkxMDAwCiAKKy8qCisgKiBNYWNybyBmb3IgY29uc3RydWN0aW5nIGNvbW1pdCBj b21tYW5kIHRvIGJlIHNlbnQKKyAqCisgKiBXZSBzeW5jaHJvbml6ZSB0aGUgcmVhZC93cml0ZSBt b2RlIGJlZm9yZSBjb21taXR0aW5nIHJlbW90ZSB0cmFuc2FjdGlvbnMKKyAqIHNvIGRlZmVycmVk IHRyaWdnZXJzIG9uIHJlbW90ZSBzZXJ2ZXJzIGNhbiBydW4gaW4gdGhlIHJpZ2h0IG1vZGUuCisg Ki8KKyNkZWZpbmUgQ09OU1RSVUNUX0NPTU1JVF9DT01NQU5EKHNxbCwgZW50cnkpIFwKKwlkbyB7 IFwKKwkJaWYgKChyZWFkX29ubHlfbGV2ZWwgPiAwKSAmJiAhKGVudHJ5KS0+eGFjdF9yZWFkX29u bHkpIFwKKwkJCXN0cmNweSgoc3FsKSwgIlNFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7IENPTU1J VCBUUkFOU0FDVElPTiIpOyBcCisJCWVsc2UgXAorCQkJc3RyY3B5KChzcWwpLCAiQ09NTUlUIFRS QU5TQUNUSU9OIik7IFwKKwl9IHdoaWxlKDApCisKIC8qIE1hY3JvIGZvciBjb25zdHJ1Y3Rpbmcg YWJvcnQgY29tbWFuZCB0byBiZSBzZW50ICovCiAjZGVmaW5lIENPTlNUUlVDVF9BQk9SVF9DT01N QU5EKHNxbCwgZW50cnksIHRvcGxldmVsKSBcCiAJZG8geyBcCkBAIC05NDIsNyArOTU2LDcgQEAg YmVnaW5fcmVtb3RlX3hhY3QoQ29ubkNhY2hlRW50cnkgKmVudHJ5KQogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmc3FsLCAiUkVQRUFUQUJMRSBSRUFEIik7CiAJCWlmIChybykKIAkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJnNxbCwgIiBSRUFEIE9OTFkiKTsKLQkJaWYgKFhhY3REZWZlcnJh YmxlKQorCQlpZiAoWGFjdERlZmVycmFibGUgJiYgUFFzZXJ2ZXJWZXJzaW9uKGVudHJ5LT5jb25u KSA+PSA5MDEwMCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnNxbCwgIiBERUZFUlJBQkxF Iik7CiAJCWVudHJ5LT5jaGFuZ2luZ194YWN0X3N0YXRlID0gdHJ1ZTsKIAkJZG9fc3FsX2NvbW1h bmQoZW50cnktPmNvbm4sIHNxbC5kYXRhKTsKQEAgLTk3Miw3ICs5ODYsNyBAQCBiZWdpbl9yZW1v dGVfeGFjdChDb25uQ2FjaGVFbnRyeSAqZW50cnkpCiAJCWlmIChlbnRyeS0+eGFjdF9kZXB0aCA9 PSByZWFkX29ubHlfbGV2ZWwpCiAJCXsKIAkJCWVudHJ5LT5jaGFuZ2luZ194YWN0X3N0YXRlID0g dHJ1ZTsKLQkJCWRvX3NxbF9jb21tYW5kKGVudHJ5LT5jb25uLCAiU0VUIHRyYW5zYWN0aW9uX3Jl YWRfb25seSA9IG9uIik7CisJCQlkb19zcWxfY29tbWFuZChlbnRyeS0+Y29ubiwgIlNFVCBUUkFO U0FDVElPTiBSRUFEIE9OTFkiKTsKIAkJCWVudHJ5LT54YWN0X3JlYWRfb25seSA9IHRydWU7CiAJ CQllbnRyeS0+Y2hhbmdpbmdfeGFjdF9zdGF0ZSA9IGZhbHNlOwogCQl9CkBAIC0xMDA1LDcgKzEw MTksNyBAQCBiZWdpbl9yZW1vdGVfeGFjdChDb25uQ2FjaGVFbnRyeSAqZW50cnkpCiAJCWluaXRT dHJpbmdJbmZvKCZzcWwpOwogCQlhcHBlbmRTdHJpbmdJbmZvKCZzcWwsICJTQVZFUE9JTlQgcyVk IiwgZW50cnktPnhhY3RfZGVwdGggKyAxKTsKIAkJaWYgKHJvKQotCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmc3FsLCAiOyBTRVQgdHJhbnNhY3Rpb25fcmVhZF9vbmx5ID0gb24iKTsKKwkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJnNxbCwgIjsgU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWSIp OwogCQllbnRyeS0+Y2hhbmdpbmdfeGFjdF9zdGF0ZSA9IHRydWU7CiAJCWRvX3NxbF9jb21tYW5k KGVudHJ5LT5jb25uLCBzcWwuZGF0YSk7CiAJCWVudHJ5LT54YWN0X2RlcHRoKys7CkBAIC0xMjA2 LDYgKzEyMjAsMjQgQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhYYWN0RXZlbnQgZXZlbnQsIHZvaWQg KmFyZykKIAlpZiAoIXhhY3RfZ290X2Nvbm5lY3Rpb24pCiAJCXJldHVybjsKIAorCS8qCisJICog SWYgd2UgYXJlIGNhbGxlZCBmb3IgcHJlLWNvbW1pdCBjbGVhbnVwLCBlbnN1cmUgcmVhZF9vbmx5 X2xldmVsIGlzIHNldAorCSAqIGZvciBsYXRlciBwcm9jZXNzaW5nLiAgTm90ZSB0aGF0IHdlIG5l ZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBsb2NhbAorCSAqIHRyYW5zYWN0aW9uIG1heSBoYXZl IGJlY29tZSByZWFkLW9ubHkgc2luY2UgdGhlIGxhc3QgcmVtb3RlIG9wZXJhdGlvbi4KKwkgKi8K KwlpZiAoZXZlbnQgPT0gWEFDVF9FVkVOVF9QQVJBTExFTF9QUkVfQ09NTUlUIHx8CisJCWV2ZW50 ID09IFhBQ1RfRVZFTlRfUFJFX0NPTU1JVCkKKwl7CisJCWlmIChYYWN0UmVhZE9ubHkpCisJCXsK KwkJCWlmIChyZWFkX29ubHlfbGV2ZWwgPT0gMCkKKwkJCQlyZWFkX29ubHlfbGV2ZWwgPSAxOwor CQkJQXNzZXJ0KHJlYWRfb25seV9sZXZlbCA9PSAxKTsKKwkJfQorCQllbHNlCisJCQlBc3NlcnQo cmVhZF9vbmx5X2xldmVsID09IDApOworCX0KKwogCS8qCiAJICogU2NhbiBhbGwgY29ubmVjdGlv biBjYWNoZSBlbnRyaWVzIHRvIGZpbmQgb3BlbiByZW1vdGUgdHJhbnNhY3Rpb25zLCBhbmQKIAkg KiBjbG9zZSB0aGVtLgpAQCAtMTIyMiw2ICsxMjU0LDggQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhY YWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKIAkJLyogSWYgaXQgaGFzIGFuIG9wZW4gcmVtb3Rl IHRyYW5zYWN0aW9uLCB0cnkgdG8gY2xvc2UgaXQgKi8KIAkJaWYgKGVudHJ5LT54YWN0X2RlcHRo ID4gMCkKIAkJeworCQkJY2hhcgkJc3FsWzEwMF07CisKIAkJCWVsb2coREVCVUczLCAiY2xvc2lu ZyByZW1vdGUgdHJhbnNhY3Rpb24gb24gY29ubmVjdGlvbiAlcCIsCiAJCQkJIGVudHJ5LT5jb25u KTsKIApAQCAtMTIzNywxNCArMTI3MSwxNyBAQCBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVu dCBldmVudCwgdm9pZCAqYXJnKQogCQkJCQlwZ2Zkd19yZWplY3RfaW5jb21wbGV0ZV94YWN0X3N0 YXRlX2NoYW5nZShlbnRyeSk7CiAKIAkJCQkJLyogQ29tbWl0IGFsbCByZW1vdGUgdHJhbnNhY3Rp b25zIGR1cmluZyBwcmUtY29tbWl0ICovCisJCQkJCUNPTlNUUlVDVF9DT01NSVRfQ09NTUFORChz cWwsIGVudHJ5KTsKIAkJCQkJZW50cnktPmNoYW5naW5nX3hhY3Rfc3RhdGUgPSB0cnVlOwogCQkJ CQlpZiAoZW50cnktPnBhcmFsbGVsX2NvbW1pdCkKIAkJCQkJewotCQkJCQkJZG9fc3FsX2NvbW1h bmRfYmVnaW4oZW50cnktPmNvbm4sICJDT01NSVQgVFJBTlNBQ1RJT04iKTsKKwkJCQkJCWRvX3Nx bF9jb21tYW5kX2JlZ2luKGVudHJ5LT5jb25uLCBzcWwpOwogCQkJCQkJcGVuZGluZ19lbnRyaWVz ID0gbGFwcGVuZChwZW5kaW5nX2VudHJpZXMsIGVudHJ5KTsKIAkJCQkJCWNvbnRpbnVlOwogCQkJ CQl9Ci0JCQkJCWRvX3NxbF9jb21tYW5kKGVudHJ5LT5jb25uLCAiQ09NTUlUIFRSQU5TQUNUSU9O Iik7CisJCQkJCWRvX3NxbF9jb21tYW5kKGVudHJ5LT5jb25uLCBzcWwpOworCQkJCQlpZiAoKHJl YWRfb25seV9sZXZlbCA+IDApICYmICFlbnRyeS0+eGFjdF9yZWFkX29ubHkpCisJCQkJCQllbnRy eS0+eGFjdF9yZWFkX29ubHkgPSB0cnVlOwogCQkJCQllbnRyeS0+Y2hhbmdpbmdfeGFjdF9zdGF0 ZSA9IGZhbHNlOwogCiAJCQkJCS8qCkBAIC0yMDQxLDYgKzIwNzgsOCBAQCBwZ2Zkd19maW5pc2hf cHJlX2NvbW1pdF9jbGVhbnVwKExpc3QgKnBlbmRpbmdfZW50cmllcykKIAkgKi8KIAlmb3JlYWNo KGxjLCBwZW5kaW5nX2VudHJpZXMpCiAJeworCQljaGFyCQlzcWxbMTAwXTsKKwogCQllbnRyeSA9 IChDb25uQ2FjaGVFbnRyeSAqKSBsZmlyc3QobGMpOwogCiAJCUFzc2VydChlbnRyeS0+Y2hhbmdp bmdfeGFjdF9zdGF0ZSk7CkBAIC0yMDQ5LDcgKzIwODgsMTAgQEAgcGdmZHdfZmluaXNoX3ByZV9j b21taXRfY2xlYW51cChMaXN0ICpwZW5kaW5nX2VudHJpZXMpCiAJCSAqIFdlIG1pZ2h0IGFscmVh ZHkgaGF2ZSByZWNlaXZlZCB0aGUgcmVzdWx0IG9uIHRoZSBzb2NrZXQsIHNvIHBhc3MKIAkJICog Y29uc3VtZV9pbnB1dD10cnVlIHRvIHRyeSB0byBjb25zdW1lIGl0IGZpcnN0CiAJCSAqLwotCQlk b19zcWxfY29tbWFuZF9lbmQoZW50cnktPmNvbm4sICJDT01NSVQgVFJBTlNBQ1RJT04iLCB0cnVl KTsKKwkJQ09OU1RSVUNUX0NPTU1JVF9DT01NQU5EKHNxbCwgZW50cnkpOworCQlkb19zcWxfY29t bWFuZF9lbmQoZW50cnktPmNvbm4sIHNxbCwgdHJ1ZSk7CisJCWlmICgocmVhZF9vbmx5X2xldmVs ID4gMCkgJiYgIShlbnRyeSktPnhhY3RfcmVhZF9vbmx5KQorCQkJZW50cnktPnhhY3RfcmVhZF9v bmx5ID0gdHJ1ZTsKIAkJZW50cnktPmNoYW5naW5nX3hhY3Rfc3RhdGUgPSBmYWxzZTsKIAogCQkv KiBEbyBhIERFQUxMT0NBVEUgQUxMIGluIHBhcmFsbGVsIGlmIG5lZWRlZCAqLwpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Bvc3RncmVz LWZkdy5zZ21sCmluZGV4IGZlNGU2NDc4ZTI4Li4wMTU3N2Q4ZDY5YiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1m ZHcuc2dtbApAQCAtMTE0OCwyMCArMTE0OCwxNyBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIG15X3N1 YnNjcmlwdGlvbiBTRVJWRVIgc3Vic2NyaXB0aW9uX3NlcnZlciBQVUJMSUNBVElPTiB0ZXN0cAog ICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgcmVtb3RlIHRyYW5zYWN0aW9uIGlzIG9wZW5l ZCBpbiB0aGUgc2FtZSByZWFkL3dyaXRlIG1vZGUgYXMgdGhlIGxvY2FsCi0gICB0cmFuc2FjdGlv bjogaWYgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIGlzIDxsaXRlcmFsPlJFQUQgT05MWTwvbGl0ZXJh bD4sCi0gICB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGlzIG9wZW5lZCBpbiA8bGl0ZXJhbD5SRUFE IE9OTFk8L2xpdGVyYWw+IG1vZGUsCi0gICBvdGhlcndpc2UgaXQgaXMgb3BlbmVkIGluIDxsaXRl cmFsPlJFQUQgV1JJVEU8L2xpdGVyYWw+IG1vZGUuCi0gICAoVGhpcyBydWxlIGlzIGFsc28gYXBw bGllZCB0byByZW1vdGUgYW5kIGxvY2FsIHN1YnRyYW5zYWN0aW9ucy4pCisgICBMb2NhbCA8bGl0 ZXJhbD5SRUFEIE9OTFk8L2xpdGVyYWw+IHRyYW5zYWN0aW9ucyBwcm9wYWdhdGUgdGhlaXIgcmVh ZC1vbmx5CisgICBtb2RlIHRvIHJlbW90ZSBzZXNzaW9ucy4KKyAgIChUaGlzIHJ1bGUgaXMgYWxz byBhcHBsaWVkIHRvIGxvY2FsIHN1YnRyYW5zYWN0aW9ucy4pCiAgICBOb3RlIHRoYXQgdGhpcyBk b2VzIG5vdCBwcmV2ZW50IGxvZ2luIHRyaWdnZXJzIGV4ZWN1dGVkIG9uIHRoZSByZW1vdGUKICAg IHNlcnZlciBmcm9tIHdyaXRpbmcuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSByZW1v dGUgdHJhbnNhY3Rpb24gaXMgYWxzbyBvcGVuZWQgaW4gdGhlIHNhbWUgZGVmZXJyYWJsZSBtb2Rl IGFzIHRoZQotICAgbG9jYWwgdHJhbnNhY3Rpb246IGlmIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBp cyA8bGl0ZXJhbD5ERUZFUlJBQkxFPC9saXRlcmFsPiwKLSAgIHRoZSByZW1vdGUgdHJhbnNhY3Rp b24gaXMgb3BlbmVkIGluIDxsaXRlcmFsPkRFRkVSUkFCTEU8L2xpdGVyYWw+IG1vZGUsCi0gICBv dGhlcndpc2UgaXQgaXMgb3BlbmVkIGluIDxsaXRlcmFsPk5PVCBERUZFUlJBQkxFPC9saXRlcmFs PiBtb2RlLgorICAgQWxzbywgbG9jYWwgPGxpdGVyYWw+REVGRVJSQUJMRTwvbGl0ZXJhbD4gdHJh bnNhY3Rpb25zIHByb3BhZ2F0ZSB0aGVpcgorICAgZGVmZXJyYWJsZSBtb2RlIHRvIHJlbW90ZSBz ZXNzaW9ucy4KKyAgIChUaGlzIHJ1bGUgaXMgb25seSBhcHBsaWVkIHRvIHJlbW90ZSBzZXJ2ZXJz IDkuMSBhbmQgbmV3ZXIuKQogICA8L3BhcmE+CiAKICAgPHBhcmE+Cg== --52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0003-Refine-open-cursor-handling.patch Content-Type: text/plain; charset=utf-8; name=v2-0003-Refine-open-cursor-handling.patch ZGlmZiAtcnUgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVj dGlvbi5jCTIwMjYtMTAtMDMgMDU6NTU6MjcKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29u bmVjdGlvbi5jCTIwMjYtMTAtMDMgMDU6NTU6MjcKQEAgLTEwOTEsNiArMTA5MSwxNiBAQAogfQog CiAvKgorICogUmV0dXJuIHRoZSBuZXN0aW5nIGRlcHRoIG9mIHRoZSByZW1vdGUgKHN1Yil0cmFu c2FjdGlvbiBjdXJyZW50bHkgb3BlbiBvbgorICogdGhlIGNvbm5lY3Rpb24gKDAgaWYgbm9uZSku CisgKi8KK2ludAorcGdmZHdfcmVtb3RlX3hhY3RfZGVwdGgoQ29ubkNhY2hlRW50cnkgKmVudHJ5 KQoreworCXJldHVybiBlbnRyeS0+eGFjdF9kZXB0aDsKK30KKworLyoKICAqIFN1Ym1pdCBhIHF1 ZXJ5IGFuZCB3YWl0IGZvciB0aGUgcmVzdWx0LgogICoKICAqIFNpbmNlIHdlIGRvbid0IHVzZSBu b24tYmxvY2tpbmcgbW9kZSwgdGhpcyBjYW4ndCBwcm9jZXNzIGludGVycnVwdHMgd2hpbGUKZGlm ZiAtcnUgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAotLS0gYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CTIwMjYtMTAtMDMgMDU6 NTU6MjcKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91 dAkyMDI2LTEwLTAzIDA1OjU1OjI3CkBAIC01MzczLDkgKzUzNzMsNTAgQEAKICgxIHJvdykKIAog Q09NTUlUOworLS0gZmlyc3QgZmV0Y2ggd2l0aGluIGEgc2F2ZXBvaW50IGlzIGZpbmUgaWYgcmVt b3RlIHNhdmVwb2ludCBsZXZlbCBpcworLS0gbm90IGFkdmFuY2VkIGJleW9uZCB0aGUgb25lIHRo ZSBjdXJzb3Igd2FzIGNyZWF0ZWQgaW4KIEJFR0lOOwogREVDTEFSRSBjIENVUlNPUiBGT1IgU0VM RUNUICogRlJPTSBmdDEgT1JERVIgQlkgYzE7CiBTQVZFUE9JTlQgczsKK0ZFVENIIGM7CisgYzEg fCBjMiB8ICBjMyAgIHwgICAgICAgICAgICAgIGM0ICAgICAgICAgICAgICB8ICAgICAgICAgICAg YzUgICAgICAgICAgICB8IGM2IHwgICAgIGM3ICAgICB8IGM4ICAKKy0tLS0rLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tKy0tLS0tLS0tLS0tLSstLS0tLQorICAxIHwgIDEgfCAwMDAwMSB8IEZyaSBKYW4gMDIg MDA6MDA6MDAgMTk3MCBQU1QgfCBGcmkgSmFuIDAyIDAwOjAwOjAwIDE5NzAgfCAxICB8IDEgICAg ICAgICAgfCBmb28KKygxIHJvdykKKworUk9MTEJBQ0sgVE8gczsKK0ZFVENIIGM7CisgYzEgfCBj MiB8ICBjMyAgIHwgICAgICAgICAgICAgIGM0ICAgICAgICAgICAgICB8ICAgICAgICAgICAgYzUg ICAgICAgICAgICB8IGM2IHwgICAgIGM3ICAgICB8IGM4ICAKKy0tLS0rLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tKy0tLS0tLS0tLS0tLSstLS0tLQorICAyIHwgIDIgfCAwMDAwMiB8IFNhdCBKYW4gMDMgMDA6 MDA6MDAgMTk3MCBQU1QgfCBTYXQgSmFuIDAzIDAwOjAwOjAwIDE5NzAgfCAyICB8IDIgICAgICAg ICAgfCBmb28KKygxIHJvdykKKworQ09NTUlUOworLS0gLi4uIGJ1dCBub3Qgb3RoZXJ3aXNlCitC RUdJTjsKK0RFQ0xBUkUgYyBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gZnQxIE9SREVSIEJZIGMx OworU0FWRVBPSU5UIHM7CitTRUxFQ1QgY291bnQoKikgRlJPTSBmdDE7CisgY291bnQgCistLS0t LS0tCisgIDEwMDAKKygxIHJvdykKKworRkVUQ0ggYzsKK0VSUk9SOiAgY2Fubm90IHBlcmZvcm0g dGhlIGZpcnN0IGZldGNoIG9mIGEgY3Vyc29yIHdpdGhpbiBhIGRlZXBlciBzdWJ0cmFuc2FjdGlv biB0aGFuIGl0IHdhcyBjcmVhdGVkIGluCitBQk9SVDsKKy0tIGEgY3Vyc29yIGNyZWF0ZWQgaW4g YSByZWxlYXNlZCBzYXZlcG9pbnQgaXMgaGFuZGVkIHRvIGl0cyBwYXJlbnQKK0JFR0lOOworU0FW RVBPSU5UIHMxOworREVDTEFSRSBjIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBmdDEgT1JERVIg QlkgYzE7CitSRUxFQVNFIHMxOworU0FWRVBPSU5UIHMyOworU0VMRUNUIGNvdW50KCopIEZST00g ZnQxOworIGNvdW50IAorLS0tLS0tLQorICAxMDAwCisoMSByb3cpCisKIEZFVENIIGM7CiBFUlJP UjogIGNhbm5vdCBwZXJmb3JtIHRoZSBmaXJzdCBmZXRjaCBvZiBhIGN1cnNvciB3aXRoaW4gYSBk ZWVwZXIgc3VidHJhbnNhY3Rpb24gdGhhbiBpdCB3YXMgY3JlYXRlZCBpbgogQUJPUlQ7CmRpZmYg LXJ1IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwkyMDI2LTEwLTAzIDA1OjU1OjI3CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCTIwMjYtMTAtMDMgMDU6NTU6MjcKQEAgLTE5MCw3ICsxOTAsOCBAQAogCUZt Z3JJbmZvICAgKnBhcmFtX2ZsaW5mbzsJLyogb3V0cHV0IGNvbnZlcnNpb24gZnVuY3Rpb25zIGZv ciB0aGVtICovCiAJTGlzdAkgICAqcGFyYW1fZXhwcnM7CS8qIGV4ZWN1dGFibGUgZXhwcmVzc2lv bnMgZm9yIHBhcmFtIHZhbHVlcyAqLwogCWNvbnN0IGNoYXIgKipwYXJhbV92YWx1ZXM7CS8qIHRl eHR1YWwgdmFsdWVzIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgKi8KLQlpbnQJCQljcmVhdGVkX2F0OwkJ LyogeGFjdCBkZXB0aCBhdCB3aGljaCB0aGUgc2NhbiB3YXMgY3JlYXRlZCAqLworCVN1YlRyYW5z YWN0aW9uSWQgY3JlYXRlZF9zdWJpZDsgLyogc3VieGFjdCBpbiB3aGljaCB0aGUgc2NhbiB3YXMg Y3JlYXRlZCAqLworCWludAkJCWNyZWF0ZWRfbGV2ZWw7CS8qIGl0cyBuZXN0aW5nIGRlcHRoIGF0 IHRoYXQgdGltZSAqLwogCiAJLyogZm9yIHN0b3JpbmcgcmVzdWx0IHR1cGxlcyAqLwogCUhlYXBU dXBsZSAgKnR1cGxlczsJCQkvKiBhcnJheSBvZiBjdXJyZW50bHktcmV0cmlldmVkIHR1cGxlcyAq LwpAQCAtMTc2NSw4ICsxNzY2LDkgQEAKIAlmc3N0YXRlLT5jdXJzb3JfbnVtYmVyID0gR2V0Q3Vy c29yTnVtYmVyKGZzc3RhdGUtPmNvbm4pOwogCWZzc3RhdGUtPmN1cnNvcl9leGlzdHMgPSBmYWxz ZTsKIAotCS8qIEdldCB0aGUgY3VycmVudCBsb2NhbCB0cmFuc2FjdGlvbidzIG5lc3RpbmcgZGVw dGggKi8KLQlmc3N0YXRlLT5jcmVhdGVkX2F0ID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVzdExl dmVsKCk7CisJLyogUmVtZW1iZXIgdGhlIGxvY2FsIChzdWIpdHJhbnNhY3Rpb24gdGhhdCB0aGUg c2NhbiBpcyBjcmVhdGVkIGluICovCisJZnNzdGF0ZS0+Y3JlYXRlZF9zdWJpZCA9IEdldEN1cnJl bnRTdWJUcmFuc2FjdGlvbklkKCk7CisJZnNzdGF0ZS0+Y3JlYXRlZF9sZXZlbCA9IEdldEN1cnJl bnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpOwogCiAJLyogR2V0IHByaXZhdGUgaW5mbyBjcmVhdGVk IGJ5IHBsYW5uZXIgZnVuY3Rpb25zLiAqLwogCWZzc3RhdGUtPnF1ZXJ5ID0gc3RyVmFsKGxpc3Rf bnRoKGZzcGxhbi0+ZmR3X3ByaXZhdGUsCkBAIC00MDU5LDIyICs0MDYxLDM0IEBACiAJU3RyaW5n SW5mb0RhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAotCWlmIChmc3N0YXRlLT5jcmVhdGVk X2F0IDwgR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVzdExldmVsKCkpCi0JCWVyZXBvcnQoRVJST1Is Ci0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJt c2coImNhbm5vdCBwZXJmb3JtIHRoZSBmaXJzdCBmZXRjaCBvZiBhIGN1cnNvciB3aXRoaW4gYSBk ZWVwZXIgc3VidHJhbnNhY3Rpb24gdGhhbiBpdCB3YXMgY3JlYXRlZCBpbiIpKSk7CisJLyoKKwkg KiBUaGUgcmVtb3RlIGN1cnNvciBpcyBkZWNsYXJlZCBhdCB0aGUgY3VycmVudCByZW1vdGUgKHN1 Yil0cmFuc2FjdGlvbgorCSAqIGRlcHRoLCBhbmQgcm9sbGluZyBiYWNrIGEgcmVtb3RlIHNhdmVw b2ludCBhdCBvciBiZWxvdyB0aGF0IGRlcHRoCisJICogZGVzdHJveXMgaXQuICBUaGF0IGlzIG9u bHkgc2FmZSBpZiBldmVyeSBsb2NhbCBzYXZlcG9pbnQgd2hvc2Ugcm9sbGJhY2sKKwkgKiBrZWVw cyB0aGUgbG9jYWwgY3Vyc29yIGFsaXZlIGlzIGRlZXBlciB0aGFuIHRoYXQuICBUaGUgbG9jYWwg Y3Vyc29yCisJICogbGl2ZXMgYXQgdGhlIGRlcHRoIG9mIHRoZSAoc3ViKXRyYW5zYWN0aW9uIHRo YXQgY3JlYXRlZCBpdCwgaWYgdGhhdCBpcworCSAqIHN0aWxsIG9wZW47IGlmIGl0IGhhcyBiZWVu IHJlbGVhc2VkLCB0aGUgY3Vyc29yIGhhcyBiZWVuIGhhbmRlZCB0byBzb21lCisJICogZW5jbG9z aW5nIGxldmVsLCB3aGljaCB3ZSBjb25zZXJ2YXRpdmVseSBhc3N1bWUgaXMgdGhlIHRvcCBsZXZl bC4KKwkgKi8KKwl7CisJCWludAkJCWN1cnNvcl9sZXZlbDsKIAorCQlpZiAoU3ViVHJhbnNhY3Rp b25Jc0FjdGl2ZShmc3N0YXRlLT5jcmVhdGVkX3N1YmlkKSkKKwkJCWN1cnNvcl9sZXZlbCA9IGZz c3RhdGUtPmNyZWF0ZWRfbGV2ZWw7CisJCWVsc2UKKwkJCWN1cnNvcl9sZXZlbCA9IDE7CisKKwkJ aWYgKHBnZmR3X3JlbW90ZV94YWN0X2RlcHRoKGZzc3RhdGUtPmNvbm5fc3RhdGUtPmVudHJ5KSA+ IGN1cnNvcl9sZXZlbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IHBlcmZvcm0gdGhl IGZpcnN0IGZldGNoIG9mIGEgY3Vyc29yIHdpdGhpbiBhIGRlZXBlciBzdWJ0cmFuc2FjdGlvbiB0 aGFuIGl0IHdhcyBjcmVhdGVkIGluIikpKTsKKwl9CisKIAkvKiBGaXJzdCwgcHJvY2VzcyBhIHBl bmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3QsIGlmIGFueS4gKi8KIAlpZiAoZnNzdGF0ZS0+Y29u bl9zdGF0ZS0+cGVuZGluZ0FyZXEpCiAJCXByb2Nlc3NfcGVuZGluZ19yZXF1ZXN0KGZzc3RhdGUt PmNvbm5fc3RhdGUtPnBlbmRpbmdBcmVxKTsKIAogCS8qCi0JICogU2Vjb25kLCBzeW5jaHJvbml6 ZSB0aGUgbG9jYWwvcmVtb3RlIHRyYW5zYWN0aW9ucy4gIE5vdGUgdGhhdCB3ZSBuZWVkCi0JICog dG8gZG8gdGhpcyBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIG9wZW4g Y3Vyc29ycy4KLQkgKi8KLQlwZ2Zkd19iZWdpbl9yZW1vdGVfeGFjdChmc3N0YXRlLT5jb25uX3N0 YXRlLT5lbnRyeSk7Ci0KLQkvKgogCSAqIENvbnN0cnVjdCBhcnJheSBvZiBxdWVyeSBwYXJhbWV0 ZXIgdmFsdWVzIGluIHRleHQgZm9ybWF0LiAgV2UgZG8gdGhlCiAJICogY29udmVyc2lvbnMgaW4g dGhlIHNob3J0LWxpdmVkIHBlci10dXBsZSBjb250ZXh0LCBzbyBhcyBub3QgdG8gY2F1c2UgYQog CSAqIG1lbW9yeSBsZWFrIG92ZXIgcmVwZWF0ZWQgc2NhbnMuCkBAIC00MTE2LDYgKzQxMzAsMTUg QEAKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQlwZ2Zk d19yZXBvcnRfZXJyb3IocmVzLCBjb25uLCBmc3N0YXRlLT5xdWVyeSk7CiAJUFFjbGVhcihyZXMp OworCisJLyoKKwkgKiBOb3cgc3luY2hyb25pemUgdGhlIGxvY2FsL3JlbW90ZSB0cmFuc2FjdGlv bnMuICBXZSBkbyB0aGlzIGFmdGVyCisJICogZGVjbGFyaW5nIHRoZSBjdXJzb3IsIG5vdCBiZWZv cmUsIHNvIHRoYXQgdGhlIHJlbW90ZSBjdXJzb3IgaXMgbm90CisJICogY3JlYXRlZCBpbnNpZGUg YSByZW1vdGUgc2F2ZXBvaW50IHRoYXQgdGhlIGxvY2FsIGN1cnNvciBkb2Vzbid0CisJICogYmVs b25nIHRvLiAgKFdlIG5lZWQgdG8gc3luY2hyb25pemUgaGVyZSBiZWNhdXNlIHRoaXMgZnVuY3Rp b24gY2FuIGJlCisJICogY2FsbGVkIGZyb20gb3BlbiBjdXJzb3JzLikKKwkgKi8KKwlwZ2Zkd19i ZWdpbl9yZW1vdGVfeGFjdChmc3N0YXRlLT5jb25uX3N0YXRlLT5lbnRyeSk7CiAKIAkvKiBNYXJr IHRoZSBjdXJzb3IgYXMgY3JlYXRlZCwgYW5kIHNob3cgbm8gdHVwbGVzIGhhdmUgYmVlbiByZXRy aWV2ZWQgKi8KIAlmc3N0YXRlLT5jdXJzb3JfZXhpc3RzID0gdHJ1ZTsKZGlmZiAtcnUgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuaCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5oCi0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5oCTIw MjYtMTAtMDMgMDU6NTU6MjcKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmgJMjAyNi0xMC0wMyAwNTo1NToyNwpAQCAtMTc1LDYgKzE3NSw3IEBACiBleHRlcm4gdW5zaWdu ZWQgaW50IEdldFByZXBTdG10TnVtYmVyKFBHY29ubiAqY29ubik7CiBleHRlcm4gdm9pZCBkb19z cWxfY29tbWFuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNxbCk7CiBleHRlcm4gdm9pZCBw Z2Zkd19iZWdpbl9yZW1vdGVfeGFjdChzdHJ1Y3QgQ29ubkNhY2hlRW50cnkgKmVudHJ5KTsKK2V4 dGVybiBpbnQJcGdmZHdfcmVtb3RlX3hhY3RfZGVwdGgoc3RydWN0IENvbm5DYWNoZUVudHJ5ICpl bnRyeSk7CiBleHRlcm4gUEdyZXN1bHQgKnBnZmR3X2dldF9yZXN1bHQoUEdjb25uICpjb25uKTsK IGV4dGVybiBQR3Jlc3VsdCAqcGdmZHdfZXhlY19xdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKnF1ZXJ5LAogCQkJCQkJCQkgIFBnRmR3Q29ublN0YXRlICpzdGF0ZSk7CmRpZmYgLXJ1IGEv Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAkyMDI2LTEwLTAzIDA1OjU1OjI3CisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCTIwMjYtMTAtMDMgMDU6NTU6MjcKQEAgLTE2 NTIsOSArMTY1MiwzMSBAQAogU0VMRUNUICogRlJPTSBmdDEgT1JERVIgQlkgYzEgTElNSVQgMTsK IENPTU1JVDsKIAorLS0gZmlyc3QgZmV0Y2ggd2l0aGluIGEgc2F2ZXBvaW50IGlzIGZpbmUgaWYg cmVtb3RlIHNhdmVwb2ludCBsZXZlbCBpcworLS0gbm90IGFkdmFuY2VkIGJleW9uZCB0aGUgb25l IHRoZSBjdXJzb3Igd2FzIGNyZWF0ZWQgaW4KIEJFR0lOOwogREVDTEFSRSBjIENVUlNPUiBGT1Ig U0VMRUNUICogRlJPTSBmdDEgT1JERVIgQlkgYzE7CiBTQVZFUE9JTlQgczsKK0ZFVENIIGM7CitS T0xMQkFDSyBUTyBzOworRkVUQ0ggYzsKK0NPTU1JVDsKKworLS0gLi4uIGJ1dCBub3Qgb3RoZXJ3 aXNlCitCRUdJTjsKK0RFQ0xBUkUgYyBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gZnQxIE9SREVS IEJZIGMxOworU0FWRVBPSU5UIHM7CitTRUxFQ1QgY291bnQoKikgRlJPTSBmdDE7CitGRVRDSCBj OworQUJPUlQ7CisKKy0tIGEgY3Vyc29yIGNyZWF0ZWQgaW4gYSByZWxlYXNlZCBzYXZlcG9pbnQg aXMgaGFuZGVkIHRvIGl0cyBwYXJlbnQKK0JFR0lOOworU0FWRVBPSU5UIHMxOworREVDTEFSRSBj IENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBmdDEgT1JERVIgQlkgYzE7CitSRUxFQVNFIHMxOwor U0FWRVBPSU5UIHMyOworU0VMRUNUIGNvdW50KCopIEZST00gZnQxOwogRkVUQ0ggYzsKIEFCT1JU OwogCg== --52250c583908aa60c53ddf87137e8483ccbf458f9253e72df51ce9922513--