Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcWxJ-003QWg-30 for pgsql-bugs@arkaria.postgresql.org; Wed, 24 Jun 2026 23:24:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcWxI-002y8P-2i for pgsql-bugs@arkaria.postgresql.org; Wed, 24 Jun 2026 23:24:28 +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.96) (envelope-from ) id 1wcWxI-002y8H-1U for pgsql-bugs@lists.postgresql.org; Wed, 24 Jun 2026 23:24:28 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcWxG-0000000062S-37v3 for pgsql-bugs@lists.postgresql.org; Wed, 24 Jun 2026 23:24:27 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-37df72c9984so93299a91.3 for ; Wed, 24 Jun 2026 16:24:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782343466; cv=none; d=google.com; s=arc-20260327; b=LoPZo73A4eye9n5K1frjvUJ5rQHi6jQ5VedgI7LEyXW0P3T9I3TU9n/DXT1Ip4NNWN ZG9m6M0lJ6B9k9Hq53QBleulu6EWS3njSJzQ4nVDMfevBGbZ9+oU21yZMk0GyXh4Zca8 /sRxOkOJlANgrhy4Ff9H4fuHaBIfeM7aCGS2HLkLSLjhcdmKzuJPut91hHGD2YOpklsX U3UKzws1nC9LBjcRyqThQgZhs3hypbLK2OWTqJJkOskmEq2nf5yMc+Rut7+MhCeKIp54 Cq9zEwqygAvMUO0vk3Z9M7JpdfVP/D5fiFWQPJH4I5obipfXp6Q2eaMaNF5w7QY/dd/Q omJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=xXukR1Fv8OrMcxJN8NRiAcQu7re7KBVxCGnBVEV/4R4=; fh=jKGfhTpHVJPg1H7s+Bgp1TWkZrKeintsqMOtEIB1HEo=; b=p4rEkPUQnvUkxyrGYb9IhTNfV7rsmXwMHPGmueN4Wx5QUxdNslzrnU20Tf7H7QgQ/b 7MbyB2mTBfeu0FrwBFjq0tMLppAnGIP4GSPHf6aS0iY/H0AnMxS5HywCsFeWUzPogLLP VucwLLITCranzPyVPaj2OUq8R81iFQl4HBHYyBYV/KyF64tpwVxQopn9SLjZ80Qrw+Zy fwh4mqJyyooXfqSPLS6Zg1nhlif3Z2aUJ5A5FJy2LF3IQwlYyLtfJKb5GvefXTG/56Mf 1enelD3VSWRk/rcmxvg0+hHQbM/fCrOT3veE9oT4yRDKHxN+9B3YcolkjVIgkMKeORfm dL+A==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782343466; x=1782948266; 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=xXukR1Fv8OrMcxJN8NRiAcQu7re7KBVxCGnBVEV/4R4=; b=Cmfrl5NSsnY8uG276w3cts2MJtJefXGMUgsv45LxH9KyYsQXcejxZuehNU3p+V2iHR /NqlLeOfKFgfTqWBhlDLHNODhvBUJnvidbfZfGz6QyTVdiOQvzafnfeoi0xYzLoQQJau f1CDKzPPYle4i0J0BUKUtqo1HdZP2m8dB2ugPn62MvMWEC2z4/01JDl+TmJS/qq/MZKr eFG2xbVvtCkiWtBnllzZbcm+/e8QddBSCWMeMFJW+BW5odET6hRQsG//rV7Zd09YFPwu ih+CKEm4T3cTzQ/Izhsz7jRCwNOmL3JiWWXYuaXlEZ+KC61c1lDVhOaHEtyckjuhHv9j AOug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782343466; x=1782948266; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xXukR1Fv8OrMcxJN8NRiAcQu7re7KBVxCGnBVEV/4R4=; b=YbSvuTIUpqgOD4NBsLO4DI7CupAGpGKWqTQ0VwVQO/+991+/5Eu3idl+wCovUPuTVw g8Ytv6V9QEM+MxGCOABZcLTUb/cReG6kfSM8RPFeMMWpP1Q08ZPT5Wa3s4uEdVcHeWQW DB9Kpd+AIwuuO1xJ6B/X4JCdnDwMWxsIk+q8osSht/UQsCrNTSAv1MUlTaSFPYpn3/5d 2kIzgQZBwvExidO0Qllx+FKT6AqWKRYrLpw+XVEvHmQiC5k5jAN9tpnCauxwXERkP7Xb XjM42MJHDy8B7n1j005ydoNQcCJkEgYKBT3EhNhQdtokA4FSfzjt5yY8krz6KvDgWgIJ EAtg== X-Forwarded-Encrypted: i=1; AFNElJ9mbPbrJxUSfKY+38MAcvtZIj5s87UYn6lQ0Qq13ey8j0vOVHSkafl2nhBHSBGiNWMWFOXU5+KTlZ+O@lists.postgresql.org X-Gm-Message-State: AOJu0YzPWUt21RU9tsNzQV1EaaGAMXgxRl14TArafcARb4cu8YKKkb9z 45nv3ZjcJm9F1k3kuz1WX5hsSJiPtwfqZOTQ1NYkrEHqQ1ILY0lkjkRoWGnPaPfFEW4wPcpb/se JWEUAXlpSZI2c/EP3x7kHKPauQghpwUY= X-Gm-Gg: AfdE7clsycOg0UWxiluWiWfDZalGaAQDDihK1Qeay2ETel54N2t0VO2/ScTkU2xpMwg FdC/RvfVe0/+KHYX+boZid8byZCamVFEQWNzYgT8BEfr2RrgCrQxnT8lkJ6wioYmMhwHQ0n5WCN tf0ruOJ5WvwKCGLkIzNoETpg51uEwM7oV5t7GEMsS9Ea2f+7A67W00PwjlS3H+8cspvcG5gn/UM 7tvAthtjwYpIeBVTwrQJKFqFo4yw20B7gT9eRwcsXWQgUB5ngmDjqoXLLpjJx86+lM62UgKA3nX cHy4O3byxLpbO/pv7CWo7nSMR9FJE+LVBpnSr9WkEFQ7pODBkTgU8A== X-Received: by 2002:a05:6a20:939f:b0:3b4:5c70:ca3e with SMTP id adf61e73a8af0-3bd4aec7134mr163366637.25.1782343465761; Wed, 24 Jun 2026 16:24:25 -0700 (PDT) MIME-Version: 1.0 References: <19484-a3cb82c8cde3c8fa@postgresql.org> In-Reply-To: From: Amit Langote Date: Thu, 25 Jun 2026 08:24:08 +0900 X-Gm-Features: AVVi8CepyTQPJZolUWBovrbCbu8siBi7H9aaZ3vE-Ky8kzEp6c2OHfcGsAwEe7w Message-ID: Subject: Re: BUG #19484: Segmentation fault triggered by FDW To: Etsuro Fujita Cc: Richard Guo , Matheus Alcantara , Ayush Tiwari , Rafia Sabih , 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Amit Langote Content-Type: multipart/mixed; boundary="0000000000002518ab0655082d76" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002518ab0655082d76 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Fujita-san, On Thu, Jun 25, 2026 at 2:02=E2=80=AFAM Etsuro Fujita wrote: > On Wed, Jun 24, 2026 at 8:20=E2=80=AFPM Amit Langote wrote: > > On Wed, Jun 24, 2026 at 6:15=E2=80=AFPM Etsuro Fujita wrote: > > > + /* > > > + * node->fdwPrivLists is indexed by the original, pre-pru= ning > > > + * result relation order and is parallel to node->resultR= elations. > > > + * Initial pruning may have dropped earlier relations, so= the kept > > > + * index j need not match the original position; find thi= s > > > + * relation's entry by its range table index instead. > > > + */ > > > + forboth(lc1, node->resultRelations, lc2, node->fdwPrivLis= ts) > > > + { > > > + if (lfirst_int(lc1) =3D=3D (int) rti) > > > + { > > > + fdw_private =3D (List *) lfirst(lc2); > > > + break; > > > + } > > > + } > > > > > > I think it's good to skip this for efficiency, when there are no > > > pruned result relations. > > > > Thanks for the review. v2 attached implements your suggestion: it > > indexes node->fdwPrivLists directly with j when no result relations > > were pruned, and only falls back to matching by range table index when > > pruning appears to have dropped some. > > Thank you for doing that work! > > This might be nitpicking, but: > > + if (list_length(node->resultRelations) =3D=3D mtstate->mt_nre= ls) > + fdw_private =3D (List *) list_nth(node->fdwPrivLists, j); > + else > + { > + Index rti =3D resultRelInfo->ri_RangeTableIndex; > + ListCell *lc1; > + ListCell *lc2; > + > + fdw_private =3D NIL; > + forboth(lc1, node->resultRelations, lc2, node->fdwPrivLis= ts) > + { > + if (lfirst_int(lc1) =3D=3D (int) rti) > + { > + fdw_private =3D (List *) lfirst(lc2); > + break; > + } > + } > + } > > I'd put the if-test outside of the outer loop to save cycles. Right, it's loop-invariant. v3 attached computes a boolean (nopruning), like labeltargets, once before the loop and uses it inside. > Other than that v2 looks good to me. > > (The forboth loop actually causes an n-squared calculation, but it's > done only when pruning occurs, in which case the number of remaining > result relations would be reduced, so that wouldn't be a problem.) Right, though strictly the inner forboth scans node->resultRelations, which pruning leaves at its original length, so it's the original relation count that bounds the scan rather than the reduced one. Either way it's EXPLAIN-only with small counts, so it's not a concern. Thanks again for the review. --=20 Thanks, Amit Langote --0000000000002518ab0655082d76 Content-Type: application/octet-stream; name="v3-0001-Avoid-ABI-break-in-ModifyTableState-from-the-FDW-.patch" Content-Disposition: attachment; filename="v3-0001-Avoid-ABI-break-in-ModifyTableState-from-the-FDW-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqsp61mq0 RnJvbSAwOGY0YWVhZmY2YmJjMWJkZTY1NTU0Yzg1MWQ0YjNkYTYyNmNiM2FhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjUgSnVuIDIwMjYgMDg6MTM6MjggKzA5MDAKU3ViamVjdDogW1BBVENIIHYz XSBBdm9pZCBBQkkgYnJlYWsgaW4gTW9kaWZ5VGFibGVTdGF0ZSBmcm9tIHRoZSBGRFcgcHJ1bmlu ZwogZml4CgpDb21taXQgMWVmOTE3ZTNhNiBmaXhlZCB0aGUgcmUtaW5kZXhpbmcgb2YgTW9kaWZ5 VGFibGUncyBGRFcgYXJyYXlzCndoZW4gaW5pdGlhbCBydW50aW1lIHBydW5pbmcgcmVtb3ZlcyBy ZXN1bHQgcmVsYXRpb25zLCBidXQgaXQgZGlkIHNvCmJ5IGFkZGluZyBhIG5ldyBtdF9mZHdQcml2 TGlzdHMgZmllbGQgdG8gTW9kaWZ5VGFibGVTdGF0ZS4gIEFsdGhvdWdoCnRoZSBmaWVsZCB3YXMg cGxhY2VkIGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdCB0byBrZWVwIHRoZSBvZmZzZXRzIG9mCmV4 aXN0aW5nIGZpZWxkcyBzdGFibGUsIGl0IHN0aWxsIGVubGFyZ2VzIHNpemVvZihNb2RpZnlUYWJs ZVN0YXRlKSwKd2hpY2ggdGhlIEFCSSBjb21wbGlhbmNlIGNoZWNrIGZsYWdzIG9uIHRoZSBidWls ZGZhcm0gKGUuZy4gY3Jha2UpLgoKVGhlIGZpZWxkIGV4aXN0ZWQgb25seSBzbyB0aGF0IHNob3df bW9kaWZ5dGFibGVfaW5mbygpIGNvdWxkIHJlY292ZXIgdGhlCnJlLWluZGV4ZWQgZmR3X3ByaXZh dGUgYWZ0ZXIgZXhlY3V0b3Igc3RhcnR1cDsgdGhlIGV4ZWN1dG9yLXNpZGUgZml4IGluCkV4ZWNJ bml0TW9kaWZ5VGFibGUoKSB0aGF0IGFjdHVhbGx5IHByZXZlbnRzIHRoZSBjcmFzaCBkb2VzIG5v dCBkZXBlbmQgb24KaXQuICBSZW1vdmUgdGhlIGZpZWxkIGFuZCBoYXZlIHNob3dfbW9kaWZ5dGFi bGVfaW5mbygpIGluc3RlYWQgbG9vayB1cAplYWNoIGtlcHQgcmVsYXRpb24ncyBmZHdfcHJpdmF0 ZSBmcm9tIHRoZSBvcmlnaW5hbCwgcHJlLXBydW5pbmcKbm9kZS0+ZmR3UHJpdkxpc3RzLCB3aGlj aCBpcyBwYXJhbGxlbCB0byBub2RlLT5yZXN1bHRSZWxhdGlvbnMgYW5kIGxlZnQKaW50YWN0IGJ5 IHBydW5pbmcuICBXaGVuIG5vdGhpbmcgd2FzIHBydW5lZCB0aGUgbG9va3VwIGlzIGEgZGlyZWN0 IGluZGV4OwpvdGhlcndpc2UgaXQgbWF0Y2hlcyBvbiB0aGUgcmFuZ2UgdGFibGUgaW5kZXguCgpU aGlzIGlzIGFwcGxpZWQgdG8gUkVMXzE4IG9ubHk7IG1hc3RlciBrZWVwcyB0aGUgbXRfZmR3UHJp dkxpc3RzIGZpZWxkCmFuZCBpcyB1bmFmZmVjdGVkLCBzbyB0aGUgdHdvIGRpdmVyZ2Ugc2xpZ2h0 bHkgaGVyZS4KClJlcG9ydGVkIG9uIHRoZSBidWlsZGZhcm0gKG1lbWJlciBjcmFrZSkuCgpQZXIg YSBzdWdnZXN0aW9uIGZyb20gVG9tIExhbmUuCgpSZXZpZXdlZC1ieTogRXRzdXJvIEZ1aml0YSA8 ZXRzdXJvLmZ1aml0YUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0ErSGl3cUVoZTctdjVRMC1vT29XM1JhTzR2b1ljR0stSmZpbmJZRVdYd3V0REdTT3RRQG1haWwu Z21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgfCAz NiArKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgfCAgMSAtCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAg ICB8ICA4ICsrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA2ZDI2MjRlNzViOC4uMTVlZjMzMDQ4 NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQ1MjQsNiArNDUyNCw3IEBAIHNob3dfbW9k aWZ5dGFibGVfaW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBMaXN0ICphbmNlc3RvcnMs CiAJY29uc3QgY2hhciAqb3BlcmF0aW9uOwogCWNvbnN0IGNoYXIgKmZvcGVyYXRpb247CiAJYm9v bAkJbGFiZWx0YXJnZXRzOworCWJvb2wJCW5vcHJ1bmluZzsKIAlpbnQJCQlqOwogCUxpc3QJICAg KmlkeE5hbWVzID0gTklMOwogCUxpc3RDZWxsICAgKmxzdDsKQEAgLTQ1NzEsNiArNDU3MiwxNiBA QCBzaG93X21vZGlmeXRhYmxlX2luZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCWlmIChsYWJlbHRhcmdldHMpCiAJCUV4cGxhaW5PcGVuR3JvdXAoIlRhcmdl dCBUYWJsZXMiLCAiVGFyZ2V0IFRhYmxlcyIsIGZhbHNlLCBlcyk7CiAKKwkvKgorCSAqIG5vZGUt PmZkd1ByaXZMaXN0cyBpcyBwYXJhbGxlbCB0byBub2RlLT5yZXN1bHRSZWxhdGlvbnMsIGluIHRo ZQorCSAqIG9yaWdpbmFsIHByZS1wcnVuaW5nIG9yZGVyLiAgSWYgbm8gcmVzdWx0IHJlbGF0aW9u cyB3ZXJlIHBydW5lZCwgdGhlCisJICogZW50cmllcyBpbiBtdHN0YXRlLT5yZXN1bHRSZWxJbmZv W10gYXJlIGluIHRoYXQgc2FtZSBvcmRlciBhbmQgY2FuIGJlCisJICogbWF0Y2hlZCB0byBmZHdQ cml2TGlzdHMgcG9zaXRpb25hbGx5OyBvdGhlcndpc2Ugd2UgaGF2ZSB0byBsb29rIGVhY2gKKwkg KiBvbmUgdXAgYnkgcmFuZ2UgdGFibGUgaW5kZXggYmVsb3cuICBUaGlzIHRlc3QgaXMgbG9vcC1p bnZhcmlhbnQsIHNvCisJICogY29tcHV0ZSBpdCBvbmNlIGhlcmUuCisJICovCisJbm9wcnVuaW5n ID0gKGxpc3RfbGVuZ3RoKG5vZGUtPnJlc3VsdFJlbGF0aW9ucykgPT0gbXRzdGF0ZS0+bXRfbnJl bHMpOworCiAJZm9yIChqID0gMDsgaiA8IG10c3RhdGUtPm10X25yZWxzOyBqKyspCiAJewogCQlS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5mbyArIGo7 CkBAIC00NjA5LDcgKzQ2MjAsMzAgQEAgc2hvd19tb2RpZnl0YWJsZV9pbmZvKE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCWZkd3JvdXRpbmUgIT0gTlVMTCAm JgogCQkJZmR3cm91dGluZS0+RXhwbGFpbkZvcmVpZ25Nb2RpZnkgIT0gTlVMTCkKIAkJewotCQkJ TGlzdAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChtdHN0YXRlLT5tdF9mZHdQ cml2TGlzdHMsIGopOworCQkJTGlzdAkgICAqZmR3X3ByaXZhdGU7CisKKwkJCS8qCisJCQkgKiBG aW5kIHRoaXMgcmVsYXRpb24ncyBmZHdfcHJpdmF0ZTogaW5kZXggZmR3UHJpdkxpc3RzIGRpcmVj dGx5CisJCQkgKiB3aGVuIG5vdGhpbmcgd2FzIHBydW5lZCwgZWxzZSBtYXRjaCBieSByYW5nZSB0 YWJsZSBpbmRleC4KKwkJCSAqLworCQkJaWYgKG5vcHJ1bmluZykKKwkJCQlmZHdfcHJpdmF0ZSA9 IChMaXN0ICopIGxpc3RfbnRoKG5vZGUtPmZkd1ByaXZMaXN0cywgaik7CisJCQllbHNlCisJCQl7 CisJCQkJSW5kZXgJCXJ0aSA9IHJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKKwkJ CQlMaXN0Q2VsbCAgICpsYzE7CisJCQkJTGlzdENlbGwgICAqbGMyOworCisJCQkJZmR3X3ByaXZh dGUgPSBOSUw7CisJCQkJZm9yYm90aChsYzEsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucywgbGMyLCBu b2RlLT5mZHdQcml2TGlzdHMpCisJCQkJeworCQkJCQlpZiAobGZpcnN0X2ludChsYzEpID09IChp bnQpIHJ0aSkKKwkJCQkJeworCQkJCQkJZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsZmlyc3QobGMy KTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQlmZHdyb3V0aW5lLT5F eHBsYWluRm9yZWlnbk1vZGlmeShtdHN0YXRlLAogCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mbywK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggY2FjMzA2NjY2NjMuLjdj MWQwZTk1ODhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDc3 MCw3ICs0NzcwLDYgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbXRzdGF0ZS0+bXRfdXBkYXRlQ29sbm9zTGlzdHMg PSB1cGRhdGVDb2xub3NMaXN0czsKIAltdHN0YXRlLT5tdF9tZXJnZUFjdGlvbkxpc3RzID0gbWVy Z2VBY3Rpb25MaXN0czsKIAltdHN0YXRlLT5tdF9tZXJnZUpvaW5Db25kaXRpb25zID0gbWVyZ2VK b2luQ29uZGl0aW9uczsKLQltdHN0YXRlLT5tdF9mZHdQcml2TGlzdHMgPSBmZHdQcml2TGlzdHM7 CiAKIAkvKi0tLS0tLS0tLS0KIAkgKiBSZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMg aXMgdGhlIHNhbWUgYXM6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDY2NzdhMDNjYWFiLi40MDll MTcyYmZiNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE0NTMsMTUgKzE0NTMsMTMgQEAgdHlw ZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGVTdGF0ZQogCWRvdWJsZQkJbXRfbWVyZ2VfZGVsZXRlZDsK IAogCS8qCi0JICogTGlzdHMgb2YgdmFsaWQgdXBkYXRlQ29sbm9zTGlzdHMsIG1lcmdlQWN0aW9u TGlzdHMsCi0JICogbWVyZ2VKb2luQ29uZGl0aW9ucywgYW5kIGZkd1ByaXZMaXN0cy4gIFRoZXNl IGNvbnRhaW4gb25seSBlbnRyaWVzIGZvcgotCSAqIHVucHJ1bmVkIHJlbGF0aW9ucywgZmlsdGVy ZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBsaXN0cyBpbgotCSAqIE1vZGlmeVRhYmxlLgorCSAq IExpc3RzIG9mIHZhbGlkIHVwZGF0ZUNvbG5vc0xpc3RzLCBtZXJnZUFjdGlvbkxpc3RzLCBhbmQK KwkgKiBtZXJnZUpvaW5Db25kaXRpb25zLiAgVGhlc2UgY29udGFpbiBvbmx5IGVudHJpZXMgZm9y IHVucHJ1bmVkCisJICogcmVsYXRpb25zLCBmaWx0ZXJlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5n IGxpc3RzIGluIE1vZGlmeVRhYmxlLgogCSAqLwogCUxpc3QJICAgKm10X3VwZGF0ZUNvbG5vc0xp c3RzOwogCUxpc3QJICAgKm10X21lcmdlQWN0aW9uTGlzdHM7CiAJTGlzdAkgICAqbXRfbWVyZ2VK b2luQ29uZGl0aW9uczsKLQlMaXN0CSAgICptdF9mZHdQcml2TGlzdHM7CiB9IE1vZGlmeVRhYmxl U3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNDcuMwoK --0000000000002518ab0655082d76--