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 1wPglB-000xEX-2h for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 13:14:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPgl9-007kuT-2a for pgsql-hackers@arkaria.postgresql.org; Wed, 20 May 2026 13:14:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wPgl9-007kuL-15 for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 13:14:52 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPgl7-00000000YQz-3siZ for pgsql-hackers@lists.postgresql.org; Wed, 20 May 2026 13:14:51 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-bd4d7f4fa02so872557366b.3 for ; Wed, 20 May 2026 06:14:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779282888; cv=none; d=google.com; s=arc-20240605; b=ewyT2QbEt093Yk/XcK0+BWPpFv+mhExGArdHsZhURtMmQCjmURLCA4TRsXcDdOIj3U YTxmtHySHLj9/komt22ll2RPko9ifxCG+chjWJYorwJyeb266TOjgysJv5qKPAkZg/p5 qp22RpiNUETAOGoUBnKAWJxGfAJLS2o1UXKv2ZVM2SF0c0N0T3AH8AC5Q0QOFLn4+O2q CXg1H+XkLbIB/AOHePsm9EE7R2mbUqb8OyFiLVxVXXZajplyOa93Vgj/IgLGciKJEvd6 A53V7snWSR0y7i31V7wTvmHFf2icaurS6zyCfMkOSYPBj2l7YqY9Dj+7GRmyrCQiSchE mIIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=W25Ond6RVXevJlByYppU+31XgKv7+Iif7lGWj9wHwes=; fh=qUJauhOhI2wAiJPQw+ggkTamSF7T9XRi+5F79SIKvIM=; b=YFTneKnCcQyLihIoycI2e8H0pzTWg0T5a89eaJhthEYgCbvlO5UdS3H0M/gAJY0uvp RozYflk3psSUejAdiOqnvnM6gIUp+uVKwJr2Q5mVMQtPt+a5lFUMzjuPCIDSHaq/FLqF 1z+GfC6zIfc01YWNbV18E9YjdgQW8oiTzSJwKbX+xY/dhHRYSEWhu1pFuHMjhlO2Cc5G /BfdoqB5R7l6mP/SEPvxNqRab/OTKk0OsKiuib6M/6TvDh3K3f+UrpHiFGYYzrMaTaL/ 76Lbl5J/+0jm/2XOuVQgAYgvgiORMES4zEdO8WdTtP7YTXLyIpo8uQfu31TmH9r6AmXF JPzw==; 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=anachronics-com.20251104.gappssmtp.com; s=20251104; t=1779282888; x=1779887688; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=W25Ond6RVXevJlByYppU+31XgKv7+Iif7lGWj9wHwes=; b=vej+7zCQoXjJI+NB3HMzDC1X2dtIXkZi32jatnJUgXL3TB4kJlWlpxrCY/gH+C7txC akTt4C4iHZwVNGyw+0JE5azJXBosEwk6csvJe/kHP/cyg1/ysjD5xZCuQlqRyZM2q/Uu IjptoIYSYFnCQJw95QWwcgUMmEv6sL94/8Ym15squmJ6csCQRggpGqKt3rJtwDWFwioG etm35bUti/J9l3YVek6s/K+Xas4u2Oiaq72YGFtUwyhVEBw3HemhzyFi4gdmOX4Hy6An Fer8V7TMPbnlfDc+x/87nFkdjNRCN/fSobt6Xgc57i9eH5m7H6HlpxMMvbUWZyetDhXi 0EWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779282888; x=1779887688; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W25Ond6RVXevJlByYppU+31XgKv7+Iif7lGWj9wHwes=; b=VDANsVO5mr9cAfeJInfgjuaTpgeE4rYeBN/mGO5R+CRiSQVCj14DMfa1lNZKN8sBCk bcMFxPIoV0DQsiynew4JTLRSYx0LsCVJAkTKm5XwIqxSoS3tEQ4p3e/Zb/AQg2UJccXH LpNJ4U0ejYsQrRDXOcUyg5vYo7+QFPsUpg8wKzsIEcSr8yhwZf+Hfw8Das4i/8cVoJEm Tvu01n3icm485kK13m3vFm5WcX80ZzG2dUjVOWDBQijS0BT4bngrfC6xLJ/kcA2Csuwo LujFltrxiJVWdlcOeRLN7qJY+RdGMQzzTCIGgalKMOGz/Zq3n6uWdWalJuDYujYqcBew ORig== X-Gm-Message-State: AOJu0Yy9MfqqwNKFq8YTIK6caw0PslVIPvcPkbyBj7DjzCWKUQp1GOdo 9tPl97XswY1VAmqA9IB6hak4482a7ZiAFGXtKueAzaYzr8GktdjXsjUWi5Sh9CUxNJdIXKkpH7v DZD8JgzbGdWauz7TmymxusZ/ebV4IifbGEEMK8clw3d9iXCkAcwKHew== X-Gm-Gg: Acq92OH1JsTGIbWmo2O5eQoqdWncb4KBMopvIMIOQTVselSfJ/QeDMPKL4XC98NFEQC L2cMRv84fi/NPGNMG/975748pmgQrV8vdu6dGDpWDgyzMEgmQnMHdPAMxpmXXKy6SvEdFY/qk6I xM0CrC+REs46H08RmpsUKwg5xJCRbE9mfwsmKhtwa9JpCan2VtLulKnTHobDab9fYHtHQbxk2k6 k8cZfP0YRw2w/kT7d37xRmsG6SrVT6QzWdF9crYq0F5prAHR5UwQuwmnsA0RmKkV/BQHcyGBAks AEd4qVd73CIC0NwOQg== X-Received: by 2002:a17:907:3944:b0:bd5:378:10fe with SMTP id a640c23a62f3a-bd517812d87mr1273300566b.11.1779282888541; Wed, 20 May 2026 06:14:48 -0700 (PDT) MIME-Version: 1.0 From: Lucas Jeffrey Date: Wed, 20 May 2026 10:14:36 -0300 X-Gm-Features: AVHnY4LI1vrT4BE4JilSz3c8r04hjaSDr4Rtm6AvGjM_E1ghxDG1BYDoZ9qSpsM Message-ID: Subject: [PATCH] Add reentrancy guards in ri_triggers.c To: pgsql-hackers@lists.postgresql.org Cc: Rodolfo Campero , Marcos Castedo , =?UTF-8?B?QW5kcsOpcyBLcsO8Z2Vy?= Content-Type: multipart/mixed; boundary="0000000000008805fd06523f940c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008805fd06523f940c Content-Type: multipart/alternative; boundary="0000000000008805fd06523f940a" --0000000000008805fd06523f940a Content-Type: text/plain; charset="UTF-8" Hi hackers, We found a bug where executing a DELETE on a self-referential table that fires triggers can cause a segmentation fault. This is due to a *use-after-free* of a Postgres plan generated by the referential integrity module (ri_triggers.c, RI_FKey_cascade_del). The crash occurs if the Postgres plancache is invalidated (ResetPlanCache) during the execution of a reentrant RI trigger. A reentrant RI_FKey_cascade_del can occur if a table is self-referential (i.e., it has a foreign key referencing its own primary key) and has BEFORE DELETE triggers that delete rows from that same table. - *The first patch* adds a test case that reproduces the segmentation fault. The crash itself happens in _SPI_execute_plan, but the root cause is that the plan being executed was prematurely freed by the RI module. - *The second patch* fixes ri_triggers.c by introducing reentrancy guards, which maintain a reference count of plans in execution to prevent them from being freed while active. Feedback and reviews are welcome. Best regards, Lucas Jeffrey --0000000000008805fd06523f940a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi hackers,

We found a bug where executing a= DELETE on a self-referential table that fires triggers can ca= use a segmentation fault. This is due to a use-after-free of a Postg= res plan generated by the referential integrity module (ri_triggers.c= , RI_FKey_cascade_del). The crash occurs if the Postgre= s plancache is invalidated (ResetPlanCache) durin= g the execution of a reentrant RI trigger.

A reentrant RI_FKey_= cascade_del can occur if a table is self-referential (i.e., it has a= foreign key referencing its own primary key) and has BEFORE DELETE triggers that delete rows from that same table.

  • The = first patch adds a test case that reproduces the segmentation fault. Th= e crash itself happens in _SPI_execute_plan, but the root caus= e is that the plan being executed was prematurely freed by the RI module.

  • The second patch fixes ri_triggers.c by i= ntroducing reentrancy guards, which maintain a reference count=C2=A0of plan= s in execution to prevent them from being freed while active.

=

Feedback and reviews are welcome.

Best regards,=C2=A0

Lucas = Jeffrey

--0000000000008805fd06523f940a-- --0000000000008805fd06523f940c Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Fix-crash-in-RI-triggers-by-refcounting-active-plans.patch" Content-Disposition: attachment; filename="0002-Fix-crash-in-RI-triggers-by-refcounting-active-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpe2oszj1 RnJvbSBiOTNlOGY0NWY2YjY3MDgzZjYxMGM1MzYyNGUxOTMyMGNiODBmNmU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsdXF1aWplZmZyZXkgPGx1Y2FzLmplZmZyZXlAYW5hY2hyb25p Y3MuY29tPgpEYXRlOiBUdWUsIDE5IE1heSAyMDI2IDE3OjQyOjExIC0wMzAwClN1YmplY3Q6IFtQ QVRDSCAyLzJdIEZpeCBjcmFzaCBpbiBSSSB0cmlnZ2VycyBieSByZWZjb3VudGluZyBhY3RpdmUg cGxhbnMKCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgfCA4NiArKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDg1IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlf dHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGRj ODljNjg2Mzk0Li4xMDAxOWRjOGVjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMK QEAgLTI1MSwxMiArMjUxLDI0IEBAIHR5cGVkZWYgc3RydWN0IFJJX0Zhc3RQYXRoRW50cnkKIAlp bnQJCQliYXRjaF9jb3VudDsKIH0gUklfRmFzdFBhdGhFbnRyeTsKIAorLyoKKyAqIFJJX1F1ZXJ5 UGxhbkNhY2hlRXhlY3V0aW5nUmVmQ291bnRFbnRyeQorICoKKyAqIEVudHJ5IHRvIHRyYWNrIHRo ZSBudW1iZXIgb2YgdGltZXMgYSBwcmVwYXJlZCBwbGFuIGlzIGJlaW5nIGV4ZWN1dGVkLgorICov Cit0eXBlZGVmIHN0cnVjdCBSSV9RdWVyeVBsYW5DYWNoZUV4ZWN1dGluZ1JlZkNvdW50RW50cnkK K3sKKwlTUElQbGFuUHRyICBwbGFuOworCXVpbnQzMiAgICAgIHJlZmNvdW50OyAvKiBudW1iZXIg b2YgdGltZXMgdGhpcyBwbGFuIGlzIGJlaW5nIGV4ZWN1dGVkIChjYW4gYmUgbW9yZSB0aGFuIDEg aWYgcmVlbnRyYW50KSAqLworfSBSSV9RdWVyeVBsYW5DYWNoZUV4ZWN1dGluZ1JlZkNvdW50RW50 cnk7CisKIC8qCiAgKiBMb2NhbCBkYXRhCiAgKi8KIHN0YXRpYyBIVEFCICpyaV9jb25zdHJhaW50 X2NhY2hlID0gTlVMTDsKIHN0YXRpYyBIVEFCICpyaV9xdWVyeV9jYWNoZSA9IE5VTEw7CiBzdGF0 aWMgSFRBQiAqcmlfY29tcGFyZV9jYWNoZSA9IE5VTEw7CitzdGF0aWMgSFRBQiAqcmlfcXVlcnlf cGxhbl9jYWNoZV9leGVjdXRpbmdfcmVmY291bnQgPSBOVUxMOwogc3RhdGljIGRjbGlzdF9oZWFk IHJpX2NvbnN0cmFpbnRfY2FjaGVfdmFsaWRfbGlzdDsKIAogc3RhdGljIEhUQUIgKnJpX2Zhc3Rw YXRoX2NhY2hlID0gTlVMTDsKQEAgLTI5NSw2ICszMDcsMTEgQEAgc3RhdGljIFNQSVBsYW5QdHIg cmlfRmV0Y2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSk7CiBzdGF0aWMgdm9pZCByaV9I YXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5QdHIgcGxhbik7CiBzdGF0 aWMgUklfQ29tcGFyZUhhc2hFbnRyeSAqcmlfSGFzaENvbXBhcmVPcChPaWQgZXFfb3ByLCBPaWQg dHlwZWlkKTsKIAorLyogUmVlbnRyYW5jeSBwcm90ZWN0aW9uOiBwcmV2ZW50IHNlZ2ZhdWx0IG9u IGRlbGV0aW5nIGEgcGxhbiBpbiBleGVjdXRpb24gaWYgaW52YWxpZGF0ZWQgZHVyaW5nIHJlZW50 cmFudCBSSSBjaGVjay4gKi8KK3N0YXRpYyB2b2lkIHJpX1ByZXBhcmVkUGxhbkV4ZWN1dGlvblN0 YXJ0ZWQoU1BJUGxhblB0ciBwbGFuKTsKK3N0YXRpYyB2b2lkIHJpX1ByZXBhcmVkUGxhbkV4ZWN1 dGlvbkZpbmlzaGVkKFNQSVBsYW5QdHIgcGxhbik7CitzdGF0aWMgYm9vbCByaV9QcmVwYXJlZFBs YW5DYW5SZWxlYXNlKFNQSVBsYW5QdHIgcGxhbik7CisKIHN0YXRpYyB2b2lkIHJpX0NoZWNrVHJp Z2dlcihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJ CQkJaW50IHRna2luZCk7CiBzdGF0aWMgUklfQ29uc3RyYWludEluZm8gKnJpX0ZldGNoQ29uc3Ry YWludEluZm8oVHJpZ2dlciAqdHJpZ2dlciwKQEAgLTI3MjQsNiArMjc0MSw5IEBAIHJpX1BlcmZv cm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJICAgc2F2ZV9z ZWNfY29udGV4dCB8IFNFQ1VSSVRZX0xPQ0FMX1VTRVJJRF9DSEFOR0UgfAogCQkJCQkJICAgU0VD VVJJVFlfTk9GT1JDRV9STFMpOwogCisJLyogSW5jcmVhc2UgcGxhbiB1c2UgY291bnQgZm9yIHJl ZW50cmFuY3kgcHJvdGVjdGlvbi4gKi8KKwlyaV9QcmVwYXJlZFBsYW5FeGVjdXRpb25TdGFydGVk KHFwbGFuKTsKKwogCS8qCiAJICogRmluYWxseSB3ZSBjYW4gcnVuIHRoZSBxdWVyeS4KIAkgKgpA QCAtMjczNSw2ICsyNzU1LDkgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCiAJCQkJCQkJCQkgIHZhbHMsIG51bGxzLAogCQkJCQkJCQkJICB0ZXN0X3Nu YXBzaG90LCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJICBmYWxzZSwgZmFsc2UsIGxp bWl0KTsKKwkKKwkvKiBEZWNyZWFzZSBwbGFuIHVzZSBjb3VudC4gdGhpcyBjYWxsIGNhbiBmcmVl IHRoZSBwbGFuIGlmIGl0IHdhcyBpbnZhbGlkYXRlZCBhbmQgbm8gbG9uZ2VyIGluIHVzZS4gKi8K KwlyaV9QcmVwYXJlZFBsYW5FeGVjdXRpb25GaW5pc2hlZChxcGxhbik7CiAKIAkvKiBSZXN0b3Jl IFVJRCBhbmQgc2VjdXJpdHkgY29udGV4dCAqLwogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2 ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwpAQCAtMzc2Miw2ICszNzg1LDEyIEBAIHJpX0lu aXRIYXNoVGFibGVzKHZvaWQpCiAJcmlfY29tcGFyZV9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBj b21wYXJlIGNhY2hlIiwKIAkJCQkJCQkJICAgUklfSU5JVF9RVUVSWUhBU0hTSVpFLAogCQkJCQkJ CQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKworCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFNQSVBsYW5QdHIpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlQbGFuQ2Fj aGVFeGVjdXRpbmdSZWZDb3VudEVudHJ5KTsKKwlyaV9xdWVyeV9wbGFuX2NhY2hlX2V4ZWN1dGlu Z19yZWZjb3VudCA9IGhhc2hfY3JlYXRlKCJSSSBwbGFuIGNhY2hlIGV4ZWN1dGlvbiByZWZjb3Vu dCIsCisJCQkJCQkJCSAgIFJJX0lOSVRfUVVFUllIQVNIU0laRSwKKwkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CiB9CiAKIApAQCAtMzgxMSw3ICszODQwLDcgQEAgcmlf RmV0Y2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSkKIAkgKiBtZW1vcnkgc3BhY2UgYmVm b3JlIHdlIG1ha2UgYSBuZXcgb25lLgogCSAqLwogCWVudHJ5LT5wbGFuID0gTlVMTDsKLQlpZiAo cGxhbikKKwlpZiAocGxhbiAmJiByaV9QcmVwYXJlZFBsYW5DYW5SZWxlYXNlKHBsYW4pKQogCQlT UElfZnJlZXBsYW4ocGxhbik7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTM4NDcsNiArMzg3Niw2MSBA QCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5QdHIgcGxhbikK IH0KIAogCitzdGF0aWMgdm9pZAorcmlfUHJlcGFyZWRQbGFuRXhlY3V0aW9uU3RhcnRlZChTUElQ bGFuUHRyIHBsYW4pCit7CQorCVJJX1F1ZXJ5UGxhbkNhY2hlRXhlY3V0aW5nUmVmQ291bnRFbnRy eSogZW50cnk7CisJYm9vbCBmb3VuZDsKKworCWlmICghcmlfcXVlcnlfcGxhbl9jYWNoZV9leGVj dXRpbmdfcmVmY291bnQpCisJCXJpX0luaXRIYXNoVGFibGVzKCk7CisJCisJZW50cnkgPSAoUklf UXVlcnlQbGFuQ2FjaGVFeGVjdXRpbmdSZWZDb3VudEVudHJ5KikgaGFzaF9zZWFyY2gocmlfcXVl cnlfcGxhbl9jYWNoZV9leGVjdXRpbmdfcmVmY291bnQsICZwbGFuLCBIQVNIX0VOVEVSLCAmZm91 bmQpOworCWlmIChmb3VuZCkKKwkJZW50cnktPnJlZmNvdW50Kys7CisJZWxzZQorCQllbnRyeS0+ cmVmY291bnQgPSAxOworfQorCitzdGF0aWMgdm9pZAorcmlfUHJlcGFyZWRQbGFuRXhlY3V0aW9u RmluaXNoZWQoU1BJUGxhblB0ciBwbGFuKQorewkKKwlSSV9RdWVyeVBsYW5DYWNoZUV4ZWN1dGlu Z1JlZkNvdW50RW50cnkqIGVudHJ5OworCWJvb2wgZm91bmQ7CisKKwlpZiAoIXJpX3F1ZXJ5X3Bs YW5fY2FjaGVfZXhlY3V0aW5nX3JlZmNvdW50KQorCQlyZXR1cm47CisJCisJZW50cnkgPSAoUklf UXVlcnlQbGFuQ2FjaGVFeGVjdXRpbmdSZWZDb3VudEVudHJ5KikgaGFzaF9zZWFyY2gocmlfcXVl cnlfcGxhbl9jYWNoZV9leGVjdXRpbmdfcmVmY291bnQsICZwbGFuLCBIQVNIX0ZJTkQsICZmb3Vu ZCk7CisJaWYgKCFlbnRyeSkKKwkJcmV0dXJuOworCQorCWVudHJ5LT5yZWZjb3VudC0tOworCWlm IChlbnRyeS0+cmVmY291bnQgPT0gMCAmJiAhU1BJX3BsYW5faXNfdmFsaWQocGxhbikpCisJewor CQkvLyBSZW1vdmUgdGhlIGVudHJ5CisJCWhhc2hfc2VhcmNoKHJpX3F1ZXJ5X3BsYW5fY2FjaGVf ZXhlY3V0aW5nX3JlZmNvdW50LCAmcGxhbiwgSEFTSF9SRU1PVkUsIE5VTEwpOworCQlTUElfZnJl ZXBsYW4ocGxhbik7CisJfQorfQorCitzdGF0aWMgYm9vbAorcmlfUHJlcGFyZWRQbGFuQ2FuUmVs ZWFzZShTUElQbGFuUHRyIHBsYW4pCit7CisJUklfUXVlcnlQbGFuQ2FjaGVFeGVjdXRpbmdSZWZD b3VudEVudHJ5KiBlbnRyeTsKKwlib29sIGZvdW5kOworCisJaWYgKCFyaV9xdWVyeV9wbGFuX2Nh Y2hlX2V4ZWN1dGluZ19yZWZjb3VudCkKKwkJcmV0dXJuIHRydWU7CisJCisJZW50cnkgPSAoUklf UXVlcnlQbGFuQ2FjaGVFeGVjdXRpbmdSZWZDb3VudEVudHJ5KikgaGFzaF9zZWFyY2gocmlfcXVl cnlfcGxhbl9jYWNoZV9leGVjdXRpbmdfcmVmY291bnQsICZwbGFuLCBIQVNIX0ZJTkQsICZmb3Vu ZCk7CisJaWYgKCFlbnRyeSkKKwkJcmV0dXJuIHRydWU7CisJCisJcmV0dXJuIGVudHJ5LT5yZWZj b3VudCA9PSAwOworfQorCisKIC8qCiAgKiByaV9LZXlzRXF1YWwgLQogICoKLS0gCjIuMzQuMQoK --0000000000008805fd06523f940c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-isolation-test-case-for-RI-plan-invalidation-cra.patch" Content-Disposition: attachment; filename="0001-Add-isolation-test-case-for-RI-plan-invalidation-cra.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpe2osz80 RnJvbSBhZTllZDM3Y2NmYTg4YzY4NzRiYTkxMTQ5NTNmNTAzMmNjODVkMDg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsdXF1aWplZmZyZXkgPGx1Y2FzLmplZmZyZXlAYW5hY2hyb25p Y3MuY29tPgpEYXRlOiBUdWUsIDE5IE1heSAyMDI2IDE3OjQyOjExIC0wMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIEFkZCBpc29sYXRpb24gdGVzdCBjYXNlIGZvciBSSSBwbGFuIGludmFsaWRhdGlv biBjcmFzaAoKLS0tCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL3JpLWNhc2NhZGUtZGVsLm91dCAg ICAgfCAyOCArKysrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAg ICAgICB8ICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9yaS1jYXNjYWRlLWRlbC5zcGVj ICB8IDg1ICsrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcmkt Y2FzY2FkZS1kZWwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3JpLWNhc2NhZGUtZGVsLnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvcmktY2FzY2FkZS1kZWwub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L3JpLWNhc2NhZGUtZGVsLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMDUxMDgzYjE3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvcmktY2FzY2FkZS1kZWwub3V0CkBAIC0wLDAgKzEsMjggQEAKK1BhcnNlZCB0ZXN0IHNw ZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9sb2NrIHMxX2Rl bGV0ZSBzMl9pbnZhbCBzMl91bmxvY2sgczFfY29tbWl0CitzdGVwIHMyX2xvY2s6IFNFTEVDVCBw Z19hZHZpc29yeV9sb2NrKDEpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX2RlbGV0ZTogREVMRVRFIEZST00g Y3Jhc2hfcmVlbnRyYW5jaWFfdGFibGFfYXV0b3JlZGVyZW5jaWFsIFdIRVJFIGlkID0gMTsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMl9pbnZhbDogCisgIERPICQkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgIEJFR0lOCisgICAgRk9SIGkgSU4gMS4uMTAwMCBMT09QCisgICAg ICBFWEVDVVRFICdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHRfdGVtcF9pbnZhbF8oaWQgSU5URUdF UiBQUklNQVJZIEtFWSknOworICAgICAgRVhFQ1VURSAnRFJPUCBUQUJMRSB0X3RlbXBfaW52YWxf JzsKKyAgICBFTkQgTE9PUDsKKyAgRU5EOworICAkJDsKKworc3RlcCBzMl91bmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soMSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0t LS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfZGVsZXRlOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbl9zY2hlZHVsZQppbmRleCAxNTc4YmExOTFjOC4uMzlhMGExZWU3OTIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3Qv aXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTIsNiArMTIsNyBAQCB0ZXN0OiBwcm9q ZWN0LW1hbmFnZXIKIHRlc3Q6IGNsYXNzcm9vbS1zY2hlZHVsaW5nCiB0ZXN0OiB0b3RhbC1jYXNo CiB0ZXN0OiByZWZlcmVudGlhbC1pbnRlZ3JpdHkKK3Rlc3Q6IHJpLWNhc2NhZGUtZGVsCiB0ZXN0 OiByaS10cmlnZ2VyCiB0ZXN0OiBwYXJ0aWFsLWluZGV4CiB0ZXN0OiB0d28taWRzCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcmktY2FzY2FkZS1kZWwuc3BlYyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9yaS1jYXNjYWRlLWRlbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYThlMDkwYzdhZAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9yaS1jYXNjYWRlLWRlbC5zcGVjCkBAIC0wLDAgKzEsODUg QEAKKyMgU2V0dXAgZm9yIHJlZmVyZW50aWFsIGludGVncml0eSBjcmFzaCB0ZXN0CitzZXR1cAor eworICAgIENSRUFURSBUQUJMRSBjcmFzaF9yZWVudHJhbmNpYV90YWJsYV9hdXRvcmVkZXJlbmNp YWwgKAorICAgICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgICAgIG5vbWJyZSB0ZXh0LAor ICAgICAgICBwYWRyZV9pZCBpbnQgUkVGRVJFTkNFUyBjcmFzaF9yZWVudHJhbmNpYV90YWJsYV9h dXRvcmVkZXJlbmNpYWwoaWQpIE9OIERFTEVURSBDQVNDQURFCisgICAgKTsKKworICAgIENSRUFU RSBUQUJMRSBjcmFzaF9yZWVudHJhbmNpYV9zZWd1bmRhX3RhYmxhICgKKyAgICAgICAgaWQgICAg aW50IFBSSU1BUlkgS0VZLAorICAgICAgICB2YWxvciB0ZXh0CisgICAgKTsKKworICAgIENSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGNyYXNoX3JlZW50cmFuY2lhX2JlZm9yZV9kZWxldGUoKQor ICAgIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorICAgIERFQ0xBUkUKKyAgICAgICAgdl92YWxvciB0 ZXh0OworICAgIEJFR0lOCisgICAgICAgIElGIE9MRC5pZCAlIDIgPSAxIFRIRU4gCisgICAgICAg ICAgICBSRVRVUk4gT0xEOworICAgICAgICBFTkQgSUY7CisKKyAgICAgICAgLS0gV2FpdCBmb3Ig UzIgdG8gZmluaXNoIGZsb29kaW5nIHRoZSBpbnZhbGlkYXRpb24gbWVzc2FnZSBxdWV1ZQorICAg ICAgICBJRiBPTEQuaWQgPSAyIFRIRU4KKyAgICAgICAgICAgIFBFUkZPUk0gcGdfYWR2aXNvcnlf bG9jaygxKTsKKyAgICAgICAgICAgIFBFUkZPUk0gcGdfYWR2aXNvcnlfdW5sb2NrKDEpOworICAg ICAgICBFTkQgSUY7CisKKyAgICAgICAgSUYgT0xELmlkID4gNCBUSEVOCisgICAgICAgICAgICAt LSBUaGlzIG9wZW5zIHRoZSB0YWJsZSBhbmQgZm9yY2VzIHByb2Nlc3Npbmcgb2YgcGVuZGluZyBp bnZhbCBtZXNzYWdlcworICAgICAgICAgICAgU0VMRUNUIHZhbG9yIElOVE8gdl92YWxvciBGUk9N IGNyYXNoX3JlZW50cmFuY2lhX3NlZ3VuZGFfdGFibGEgV0hFUkUgaWQgPSBPTEQuaWQ7CisgICAg ICAgIEVORCBJRjsKKyAgICAgICAgCisgICAgICAgIERFTEVURSBGUk9NIGNyYXNoX3JlZW50cmFu Y2lhX3RhYmxhX2F1dG9yZWRlcmVuY2lhbCBXSEVSRSBwYWRyZV9pZCA9IE9MRC5pZDsKKyAgICAg ICAgUkVUVVJOIE9MRDsKKyAgICBFTkQ7CisgICAgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworICAg IENSRUFURSBUUklHR0VSIHRyZ19jcmFzaF9yZWVudHJhbmNpYV9iZWZvcmVfZGVsZXRlCisgICAg ICAgIEJFRk9SRSBERUxFVEUgT04gY3Jhc2hfcmVlbnRyYW5jaWFfdGFibGFfYXV0b3JlZGVyZW5j aWFsCisgICAgICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIGNyYXNoX3JlZW50cmFu Y2lhX2JlZm9yZV9kZWxldGUoKTsKKworICAgIElOU0VSVCBJTlRPIGNyYXNoX3JlZW50cmFuY2lh X3RhYmxhX2F1dG9yZWRlcmVuY2lhbCBWQUxVRVMgKDEsICdBJywgTlVMTCk7CisgICAgSU5TRVJU IElOVE8gY3Jhc2hfcmVlbnRyYW5jaWFfdGFibGFfYXV0b3JlZGVyZW5jaWFsIFZBTFVFUyAoMiwg J0InLCAxKTsKKyAgICBJTlNFUlQgSU5UTyBjcmFzaF9yZWVudHJhbmNpYV90YWJsYV9hdXRvcmVk ZXJlbmNpYWwgVkFMVUVTICgzLCAnQycsIDIpOworICAgIElOU0VSVCBJTlRPIGNyYXNoX3JlZW50 cmFuY2lhX3RhYmxhX2F1dG9yZWRlcmVuY2lhbCBWQUxVRVMgKDQsICdEJywgMyk7CisgICAgSU5T RVJUIElOVE8gY3Jhc2hfcmVlbnRyYW5jaWFfdGFibGFfYXV0b3JlZGVyZW5jaWFsIFZBTFVFUyAo NSwgJ0UnLCA0KTsKKyAgICBJTlNFUlQgSU5UTyBjcmFzaF9yZWVudHJhbmNpYV90YWJsYV9hdXRv cmVkZXJlbmNpYWwgVkFMVUVTICg2LCAnRicsIDUpOworCisgICAgSU5TRVJUIElOVE8gY3Jhc2hf cmVlbnRyYW5jaWFfc2VndW5kYV90YWJsYSBWQUxVRVMgCisgICAgICAgICgxLCAnYScpLCAoMiwg J2InKSwgKDMsICdjJyksICg0LCAnZCcpLCAoNSwgJ2UnKSwgKDYsICdmJyk7Cit9CisKK3RlYXJk b3duCit7CisgICAgRFJPUCBUUklHR0VSIHRyZ19jcmFzaF9yZWVudHJhbmNpYV9iZWZvcmVfZGVs ZXRlIE9OIGNyYXNoX3JlZW50cmFuY2lhX3RhYmxhX2F1dG9yZWRlcmVuY2lhbDsKKyAgICBEUk9Q IEZVTkNUSU9OIGNyYXNoX3JlZW50cmFuY2lhX2JlZm9yZV9kZWxldGUgQ0FTQ0FERTsKKyAgICBE Uk9QIFRBQkxFIGNyYXNoX3JlZW50cmFuY2lhX3RhYmxhX2F1dG9yZWRlcmVuY2lhbCBDQVNDQURF OworICAgIERST1AgVEFCTEUgY3Jhc2hfcmVlbnRyYW5jaWFfc2VndW5kYV90YWJsYSBDQVNDQURF OworfQorCitzZXNzaW9uIHMxCitzZXR1cCB7IEJFR0lOOyB9CitzdGVwIHMxX2RlbGV0ZSB7IERF TEVURSBGUk9NIGNyYXNoX3JlZW50cmFuY2lhX3RhYmxhX2F1dG9yZWRlcmVuY2lhbCBXSEVSRSBp ZCA9IDE7IH0KK3N0ZXAgczFfY29tbWl0IHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAg czJfbG9jayB7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEpOyB9CitzdGVwIHMyX2ludmFsIHsK KyAgRE8gJCQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgQkVHSU4KKyAg ICBGT1IgaSBJTiAxLi4xMDAwIExPT1AKKyAgICAgIEVYRUNVVEUgJ0NSRUFURSBURU1QT1JBUlkg VEFCTEUgdF90ZW1wX2ludmFsXyhpZCBJTlRFR0VSIFBSSU1BUlkgS0VZKSc7CisgICAgICBFWEVD VVRFICdEUk9QIFRBQkxFIHRfdGVtcF9pbnZhbF8nOworICAgIEVORCBMT09QOworICBFTkQ7Cisg ICQkOworfQorc3RlcCBzMl91bmxvY2sgeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEpOyB9 CisKKyMgRXhlY3V0aW9uIHBlcm11dGF0aW9uCisjIFMyIGxvY2tzIC0+IFMxIGJsb2NrcyBvbiBT MiAtPiBTMiBmb3JjZXMgaW52YWwgcXVldWUgb3ZlcmZsb3cgLT4gUzIgdW5sb2NrcworIyBTMSBh d2FrZW5zIC0+IFMxIGZvcmNlcyB0YWJsZV9vcGVuIC0+IGludmFsaWRhdGlvbiBwcm9jZXNzZWQg LT4gc2VnZmF1bHQhCitwZXJtdXRhdGlvbiBzMl9sb2NrIHMxX2RlbGV0ZSBzMl9pbnZhbCBzMl91 bmxvY2sgczFfY29tbWl0Ci0tIAoyLjM0LjEKCg== --0000000000008805fd06523f940c--