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 1wUIBF-001434-0T for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 06:00:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wUIBE-00Czme-0E for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 06:00: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.96) (envelope-from ) id 1wUIBD-00CzmU-1h for pgsql-hackers@lists.postgresql.org; Tue, 02 Jun 2026 06:00:47 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wUIBB-00000000hLw-1TeJ for pgsql-hackers@lists.postgresql.org; Tue, 02 Jun 2026 06:00:46 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-68b90fc6a1dso8502918a12.1 for ; Mon, 01 Jun 2026 23:00:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780380044; cv=none; d=google.com; s=arc-20240605; b=MZJRf11p93/m8Ioe0fsPs4NGDVhIkekA+jMxCNlIteNnL8563WMFlugMV6IGLVXaz1 jcPHsfQ0m8nj4bQoWJyQW0zqbqAsrSsP9fonUcWR/Ou9Y+XmgL26WiJVAe3r4PORT0N0 4Q/ivnphhl0XYGhYi0nzUdkYusjRCho/2Ds5+pjk138KYy1E0ZfBKi76T+Btmv2RQ/qc YjKn9l5S5oMwkIUrk5slmPOARX4hFOnVek4B1DkQppUycZiw8RDPoH0KBRIcikYrrvXY 9vOsWwg8cxQOEONekZJ+rKdD9WdKfHjv4zn8iyKIRIqK7L53L/aIyH9I3fybxQr3vIuE Hx/A== 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:in-reply-to:references :mime-version:dkim-signature; bh=DCBNbJEPprJ37wn4wqKl9EuAxjmcz7yZ5d2M1Asr8p4=; fh=3gHdYIZvPAmhomE/HTS7VUv9Czrfr3Uu+7Ch6IbwBnQ=; b=dGF2g4ip0NfASveCiWCD5j/bBEwLn5k18ktheRBSDjC262wvW2uRcN3kMLKJ9ZjIdr WVlTvSWqHwujJuHO/5UNmEscF9I0GOyZ8Ll+igPUsYo4bdfOsW2tfuO4XWu68Yz5JV2s 4fBfHl2CdGlJK/WxK/325SPFH4XU2woQdYRclTLF15N3eVmz/i0F6nTskcEZ2GlJJBf0 tMem9CQ9YvTq8KYTpTzE+xKnWYKTedtMsLIgE+nbi8lIHa2XOILeGhhS2hzljPgA0vPm tsIYfT+USwbu8eYp5OWZBM9neFpH6bgJjDNxxLYaataaqrqDukAS6tKxmzULPzgP2MJ3 ryCA==; 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=1780380044; x=1780984844; 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=DCBNbJEPprJ37wn4wqKl9EuAxjmcz7yZ5d2M1Asr8p4=; b=XqlqiFl+1HQ6RqsC8tVx0eX03dJB+wdnyReT9Qfa6QsV97qVM/NhYpchoV1dTP59dQ nNoxBJEt9PNyT3HGRh/JdyiRy68SI57RfnrSlHxeDemzLPV1VY+KN7Pq4FB1SuEjDLJ9 Pl2HTGmB7SP4j9y1GIJnDrJlPWQyO2wUZ2hIvUwm6/SZWn7y+hKBrPpA1+N+1B1yiqe1 o4BfHmugY5tT8B5XJSFZdarcvRFw9YysROqsNfDYq1YV51k1RNlWma+zKy1BEv4+O6DV 1bZx3Enkh6D4KZxP+g48ebFkWG0hWcdEdUvtl4dUB+nsMGIRfgSyCm7LcWyXRd6C8271 JEmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780380044; x=1780984844; 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=DCBNbJEPprJ37wn4wqKl9EuAxjmcz7yZ5d2M1Asr8p4=; b=MdULcoAEWWxxjz84FdWNG0ALH57/HKLGO/j5mPF1OkoD/Uf0dAcG9Rd36IqHnyAeTh S1RCWaUXQ0et953qPjpOgaN5xQ6GjCY/NWQjjcpQYYjp/wYOiPNnVfONof+s4W13eLsQ ELLLq3PCjrn0yhTKZwj+hkLtJ8Z0TEZPedCUUSAYjrlNyGnKQXl1DsgkgMduo+dvigp3 /L2mOB855wZlDoKpvczOPUt3fh0QeUHUqJXm5IR7fFoj0tRCBpBv4P311cakVrZ2gEdf Rmrd5m2MiFv+/63AJrNr9BYNN/RpadJiBah4iM5jpR43/lcj0t5Pe2bzyitq1rqaXORe ua7g== X-Forwarded-Encrypted: i=1; AFNElJ9so6Thq5MPAiFR6Of/ZbIMngtA9fSi7Z4FEypZCrp3rpopxEgPbZAXVGWchu9E/pDWz/q+Jgmr0Ki0LRdn@lists.postgresql.org X-Gm-Message-State: AOJu0YzZ+DOB4+zxpmqyqY50RjLAY4OQ2iY7S54vNBvR0bGsxl1igW/4 TyjYG/djTw2HECtM9Az0q1THOssbgMz9BWWlVqxHwWApveHkIa1F30CCawXCEO6lj23QmIhjJMs gDCpaCSFrt1PU8nLebzCwy70K7CcLEMU= X-Gm-Gg: Acq92OHrEovWBf+RL7F1LpbkTAj5WswJVWh0Z4yDYvie6qmMfJxaBhTF1u1eZ/uiWVI mkG2ovpE46ECMHIpuGNw5wvaF/vN/70XfrutYuAQFUwYVrGmBA5w2b5d3FdP42QFPeqco4/Dvci 4Qbu46rLdh86JH3nVcckxyP5iyy4MFckdjZLX0ElOAsv4kdcMWuBUmjLtneCwiYuZaMwpHVlmUE L2O+8/134RKBNamF11TKOu2yUjtV4CIS9M4RGwZdaOkScy/kYVvWOVBIutmOo1tSAeY/dMrrUsu 6sPml5O6wL14TcjEr97n9CEAEZxGQmpY0cpXgHJRS0at+13i/XR8IiM11Bupo7J7UwaOPWK16lu gDmok0L0kUNR/1oNxiQ== X-Received: by 2002:a17:907:7b82:b0:bee:72b9:f5a4 with SMTP id a640c23a62f3a-beefb1e18admr146077566b.13.1780380043256; Mon, 01 Jun 2026 23:00:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Tue, 2 Jun 2026 14:00:29 +0800 X-Gm-Features: AVHnY4IszBnFhRo001RMUuy5Wd099LvXf5lHXXaH74jFKCpMlZVl6C68wTgzZBk Message-ID: Subject: Re: Fix race in ReplicationSlotRelease for ephemeral slots To: "Zhijie Hou (Fujitsu)" , Fujii Masao Cc: Srinath Reddy Sadipiralla , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000b6b5a06533f0852" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000b6b5a06533f0852 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Sat, May 30, 2026 at 4:14=E2=80=AFPM Zhijie Hou (Fujitsu) wrote: > > On Saturday, May 30, 2026 1:44 AM Srinath Reddy Sadipiralla wrote: > > > > On Wed, May 27, 2026 at 5:20=E2=80=AFPM Zhijie Hou (Fujitsu) wrote: > > > I haven't attached a test for this fix, as the change is straightforw= ard and the > > > Likelihood of encountering this bug is low, so it may not be worth ad= ding test > > > cycles for it. However, if others feel differently, I'm OK to add one= . > > > > +1 for a test. The fix is just an else, so a future refactor could chan= ge it and silently > > reintroduce the corruption, since it scribbles on an unrelated reused s= lot, nothing > > would catch it. Injection points make it deterministic; I've attached a= diff patch that adds > > a test that fails without the fix and passes with it. > > Thanks for the test. > > I'm not sure if adding an injection point for this rare case is worthwhil= e. Even > if we were to add one, future refactoring of that function could shift th= e > position of the injection point, so its long-term usefulness is uncertain= . I > don't have a strong opinion on this, so I'll leave it to Fujii-San to dec= ide. Thanks for reporting this issue. I can reproduce it with lldb on Mac. postgres=3D# SELECT pg_create_logical_replication_slot( postgres(# 'test_slot_dropped', postgres(# 'pgoutput2', postgres(# false, postgres(# false, postgres(# true postgres(# ); ERROR: could not access file "pgoutput2": No such file or directory 787 * decoding be disabled. 788 */ 789 ReplicationSlotDropAcquired(is_logical); -> 790 } 791 792 /* 793 * If slot needed to temporarily restrain both data and catalog xmin = to Target 0: (postgres) stopped. (lldb) expr -- slot->data.name.data (char[64]) $0 =3D "test_slot_created" (lldb) expr -- slot->data.persistency (ReplicationSlotPersistency) $1 =3D RS_PERSISTENT (lldb) expr -- slot->active_proc (ProcNumber) $2 =3D 126 The fix looks good to me. There's an adjacent bug around drop_local_obsolete_slots. The root cause of them looks similar -- ReplicationSlot * is a pointer to a reusable shared-memory array cell, not a durable identity for the same slot. In drop_local_obsolete_slots, the issue is that the slot has been freed after ReplicationSlotDropAcquired(false); however, another backend may reuse the same cell before the unlock/log reads. This seems less severe -- it does not normally corrupt slot state, because the code only read after the drop. But it can still unlock/log misusing the identity of a different slot. Attached a test using injection point to reproduce it and a patch to fix it. -- Regards, Xuneng Zhou HighGo Software Co., Ltd. --0000000000000b6b5a06533f0852 Content-Type: text/x-perl-script; charset="US-ASCII"; name="repro_slotsync_stale_pointer.pl" Content-Disposition: attachment; filename="repro_slotsync_stale_pointer.pl" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpw6sup60 dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwoKdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CnVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKdXNlIFRlc3Q6Ok1v cmU7CgpteSAkdGFnID0gJCQ7Cm15ICRwcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCJyZXByb19pcF9wcmltYXJ5XyR0YWciKTsKCiRwcmltYXJ5LT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKJHByaW1hcnktPmFwcGVuZF9jb25mKAoJJ3Bvc3RncmVz cWwuY29uZicsIHFxKAphdXRvdmFjdXVtID0gb2ZmCmxvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcy JwopKTsKJHByaW1hcnktPnN0YXJ0OwoKaWYgKCEkcHJpbWFyeS0+Y2hlY2tfZXh0ZW5zaW9uKCdp bmplY3Rpb25fcG9pbnRzJykpCnsKCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rp b25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOwp9CgojIENyZWF0ZSB0aGUgZXh0ZW5zaW9uIGJlZm9y ZSB0aGUgYmFzZSBiYWNrdXAgc28gdGhlIHN0YW5kYnkgY2FuIGNhbGwgaXRzCiMgZnVuY3Rpb25z IHdoaWxlIGluIHJlY292ZXJ5LgokcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVB VEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CgpteSAkYmFja3VwX25hbWUgPSAnYmFj a3VwJzsKJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOwoKbXkgJHN0YW5kYnkgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoInJlcHJvX2lwX3N0YW5kYnlfJHRhZyIpOwokc3Rh bmRieS0+aW5pdF9mcm9tX2JhY2t1cCgKCSRwcmltYXJ5LCAkYmFja3VwX25hbWUsCgloYXNfc3Ry ZWFtaW5nID0+IDEsCgloYXNfcmVzdG9yaW5nID0+IDEpOwoKbXkgJHByaW1hcnlfY29ubnN0ciA9 ICRwcmltYXJ5LT5jb25uc3RyOwokc3RhbmRieS0+YXBwZW5kX2NvbmYoCgkncG9zdGdyZXNxbC5j b25mJywgcXEoCmhvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KcHJpbWFyeV9zbG90X25hbWUgPSAn cGh5c19zbG90JwpwcmltYXJ5X2Nvbm5pbmZvID0gJyRwcmltYXJ5X2Nvbm5zdHIgZGJuYW1lPXBv c3RncmVzJwpsb2dfbWluX21lc3NhZ2VzID0gJ2RlYnVnMicKKSk7CgokcHJpbWFyeS0+c2FmZV9w c3FsKAoJJ3Bvc3RncmVzJywKCXF7ClNFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlv bl9zbG90KCd2aWN0aW1fc2xvdCcsICdwZ291dHB1dCcsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7ClNF TEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgncGh5c19zbG90Jyk7Cn0p OwoKJHN0YW5kYnktPnN0YXJ0OwokcHJpbWFyeS0+YWR2YW5jZV93YWwoMSk7CiRwcmltYXJ5LT53 YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieSk7Cgpub3RlKCdhdHRhY2ggaW5qZWN0aW9u IHBvaW50IG9uIHN0YW5kYnknKTsKJHN0YW5kYnktPnNhZmVfcHNxbCgKCSdwb3N0Z3JlcycsCglx e1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnc2xvdHN5bmMtb2Jzb2xldGUtYWZ0ZXIt ZHJvcCcsICd3YWl0Jyk7fQopOwoKbm90ZSgnc3luYyBmYWlsb3ZlciBzbG90IHRvIHN0YW5kYnkn KTsKJHN0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIHBnX3N5bmNfcmVwbGlj YXRpb25fc2xvdHMoKTsnKTsKCmlzKCAkc3RhbmRieS0+c2FmZV9wc3FsKAoJCSdwb3N0Z3Jlcycs CgkJcXtTRUxFQ1Qgc3luY2VkIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9u YW1lID0gJ3ZpY3RpbV9zbG90Jzt9CgkpLAoJJ3QnLAoJJ3ZpY3RpbSBzbG90IGlzIHN5bmNocm9u aXplZCB0byB0aGUgc3RhbmRieScpOwoKbm90ZSgnZHJvcCByZW1vdGUgZmFpbG92ZXIgc2xvdCcp OwokcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCglxe1NFTEVDVCBwZ19kcm9wX3JlcGxp Y2F0aW9uX3Nsb3QoJ3ZpY3RpbV9zbG90Jyk7fSk7CgpteSAkbG9nX29mZnNldCA9IC1zICRzdGFu ZGJ5LT5sb2dmaWxlOwoKbm90ZSgnc3RhcnQgc2xvdCBzeW5jIGFuZCB3YWl0IGF0IGluamVjdGlv biBwb2ludCBhZnRlciBsb2NhbCBkcm9wJyk7Cm15ICRzeW5jID0gJHN0YW5kYnktPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwokc3luYy0+cXVlcnlfdW50 aWwoCglxci9zdGFydF9zeW5jLywKCXEoClxlY2hvIHN0YXJ0X3N5bmMKU0VMRUNUIHBnX3N5bmNf cmVwbGljYXRpb25fc2xvdHMoKTsKKSk7Cgokc3RhbmRieS0+d2FpdF9mb3JfZXZlbnQoJ2NsaWVu dCBiYWNrZW5kJywgJ3Nsb3RzeW5jLW9ic29sZXRlLWFmdGVyLWRyb3AnKTsKCm9rKCAkc3RhbmRi eS0+cG9sbF9xdWVyeV91bnRpbCgKCQkncG9zdGdyZXMnLAoJCXF7U0VMRUNUIE5PVCBFWElTVFMg KFNFTEVDVCAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ3Zp Y3RpbV9zbG90Jyk7fQoJKSwKCSd2aWN0aW0gc2xvdCBoYXMgYmVlbiBkcm9wcGVkIGxvY2FsbHkn KTsKCm5vdGUoJ3JldXNlIGZyZWVkIHNsb3QgYXJyYXkgY2VsbCB3aXRoIGEgcGh5c2ljYWwgc2xv dCcpOwokc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCglxe1NFTEVDVCBwZ19jcmVhdGVf cGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVwbGFjZW1lbnRfc2xvdCcpO30pOwoKbm90ZSgn cmVsZWFzZSBpbmplY3Rpb24gcG9pbnQnKTsKJHN0YW5kYnktPnNhZmVfcHNxbCgKCSdwb3N0Z3Jl cycsCglxewpTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3Nsb3RzeW5jLW9ic29sZXRl LWFmdGVyLWRyb3AnKTsKU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzbG90c3luYy1v YnNvbGV0ZS1hZnRlci1kcm9wJyk7Cn0pOwoKb2soICRzdGFuZGJ5LT53YWl0X2Zvcl9sb2coCgkJ cXIvZHJvcHBlZCByZXBsaWNhdGlvbiBzbG90ICJyZXBsYWNlbWVudF9zbG90IiBvZiBkYXRhYmFz ZSB3aXRoIE9JRCAwfHlvdSBkb24ndCBvd24gYSBsb2NrIG9mIHR5cGUgQWNjZXNzU2hhcmVMb2Nr LywKCQkkbG9nX29mZnNldCksCgknc3RhbGUgbG9jYWxfc2xvdCBwb2ludGVyIHdhcyBvYnNlcnZl ZCBhZnRlciBkcm9wJyk7CgppcyggJHN0YW5kYnktPnNhZmVfcHNxbCgKCQkncG9zdGdyZXMnLAoJ CXF7U0VMRUNUIHNsb3RfdHlwZSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3Rf bmFtZSA9ICdyZXBsYWNlbWVudF9zbG90Jzt9CgkpLAoJJ3BoeXNpY2FsJywKCSdyZXBsYWNlbWVu dCBzbG90IHN0aWxsIGV4aXN0cycpOwoKJHN5bmMtPnF1aXQ7Cgpkb25lX3Rlc3RpbmcoKTsK --0000000000000b6b5a06533f0852 Content-Type: application/octet-stream; name="v1-0001-Avoid-stale-slot-access-after-dropping-obsolete-s.patch" Content-Disposition: attachment; filename="v1-0001-Avoid-stale-slot-access-after-dropping-obsolete-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpw6tjfx1 RnJvbSBlOTIwYWRjYjVjMDE1MTBmOTRlZTc1ZjI2MTMzZTBlZmE2MDg5MDM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAyIEp1biAyMDI2IDEzOjE0OjU0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2MV0gQXZvaWQg c3RhbGUgc2xvdCBhY2Nlc3MgYWZ0ZXIgZHJvcHBpbmcgb2Jzb2xldGUgc3luY2VkCiBzbG90cwoK ZHJvcF9sb2NhbF9vYnNvbGV0ZV9zbG90cygpIGtlcHQgdXNpbmcgbG9jYWxfc2xvdCBhZnRlciBj YWxsaW5nClJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCgpLiAgT25jZSB0aGUgZHJvcCBjb21w bGV0ZXMsIHRoZSBzbG90IGFycmF5IGVudHJ5IGNhbgpiZSByZXVzZWQgYnkgYW5vdGhlciBiYWNr ZW5kLCBzbyBsYXRlciByZWFkcyBvZiBsb2NhbF9zbG90LT5kYXRhIGNvdWxkIHJlZmVyIHRvIGEK ZGlmZmVyZW50IHNsb3QuCgpDb3B5IHRoZSBzbG90IG5hbWUgYW5kIGRhdGFiYXNlIE9JRCBiZWZv cmUgZHJvcHBpbmcgdGhlIHNsb3QsIGFuZCB1c2UgdGhvc2UKc2F2ZWQgdmFsdWVzIGZvciB1bmxv Y2tpbmcgYW5kIGxvZ2dpbmcgYWZ0ZXIgdGhlIGRyb3AuCi0tLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zbG90c3luYy5jIHwgMjUgKysrKysrKysrKysrKystLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDkzZjQxYmUzMmFmLi5lYTcz ZjBhYTI2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90 c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpA QCAtNTQxLDYgKzU0MSw5IEBAIGRyb3BfbG9jYWxfb2Jzb2xldGVfc2xvdHMoTGlzdCAqcmVtb3Rl X3Nsb3RfbGlzdCkKIAkJLyogRHJvcCB0aGUgbG9jYWwgc2xvdCBpZiBpdCBpcyBub3QgcmVxdWly ZWQgdG8gYmUgcmV0YWluZWQuICovCiAJCWlmICghbG9jYWxfc3luY19zbG90X3JlcXVpcmVkKGxv Y2FsX3Nsb3QsIHJlbW90ZV9zbG90X2xpc3QpKQogCQl7CisJCQlib29sCQlkcm9wcGVkID0gZmFs c2U7CisJCQlOYW1lRGF0YQlzbG90X25hbWUgPSB7MH07CisJCQlPaWQJCQlzbG90X2RhdGFiYXNl ID0gbG9jYWxfc2xvdC0+ZGF0YS5kYXRhYmFzZTsKIAkJCWJvb2wJCXN5bmNlZF9zbG90OwogCiAJ CQkvKgpAQCAtNTQ4LDggKzU1MSw4IEBAIGRyb3BfbG9jYWxfb2Jzb2xldGVfc2xvdHMoTGlzdCAq cmVtb3RlX3Nsb3RfbGlzdCkKIAkJCSAqIFJlcGxpY2F0aW9uU2xvdHNEcm9wREJTbG90cygpLCB0 cnlpbmcgdG8gZHJvcCB0aGUgc2FtZSBzbG90CiAJCQkgKiBkdXJpbmcgYSBkcm9wLWRhdGFiYXNl IG9wZXJhdGlvbi4KIAkJCSAqLwotCQkJTG9ja1NoYXJlZE9iamVjdChEYXRhYmFzZVJlbGF0aW9u SWQsIGxvY2FsX3Nsb3QtPmRhdGEuZGF0YWJhc2UsCi0JCQkJCQkJIDAsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCQlMb2NrU2hhcmVkT2JqZWN0KERhdGFiYXNlUmVsYXRpb25JZCwgc2xvdF9kYXRhYmFz ZSwgMCwKKwkJCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKIAogCQkJLyoKIAkJCSAqIEluIHRoZSBz bWFsbCB3aW5kb3cgYmV0d2VlbiBnZXR0aW5nIHRoZSBzbG90IHRvIGRyb3AgYW5kCkBAIC01NjIs NiArNTY1LDggQEAgZHJvcF9sb2NhbF9vYnNvbGV0ZV9zbG90cyhMaXN0ICpyZW1vdGVfc2xvdF9s aXN0KQogCQkJICovCiAJCQlTcGluTG9ja0FjcXVpcmUoJmxvY2FsX3Nsb3QtPm11dGV4KTsKIAkJ CXN5bmNlZF9zbG90ID0gbG9jYWxfc2xvdC0+aW5fdXNlICYmIGxvY2FsX3Nsb3QtPmRhdGEuc3lu Y2VkOworCQkJaWYgKHN5bmNlZF9zbG90KQorCQkJCXNsb3RfbmFtZSA9IGxvY2FsX3Nsb3QtPmRh dGEubmFtZTsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmbG9jYWxfc2xvdC0+bXV0ZXgpOwogCiAJCQlp ZiAoc3luY2VkX3Nsb3QpCkBAIC01NzIsMTcgKzU3NywxOSBAQCBkcm9wX2xvY2FsX29ic29sZXRl X3Nsb3RzKExpc3QgKnJlbW90ZV9zbG90X2xpc3QpCiAJCQkJICogYSBzdGFuZGJ5LCB3aGljaCBk ZXJpdmVzIGl0cyBsb2dpY2FsIGRlY29kaW5nIHN0YXRlIGZyb20KIAkJCQkgKiB0aGUgcHJpbWFy eSwgaXQgd291bGQgYmUgd3JvbmcgdG8gZG8gc28uCiAJCQkJICovCi0JCQkJUmVwbGljYXRpb25T bG90QWNxdWlyZShOYW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSksIHRydWUsIGZhbHNlKTsK KwkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoc2xvdF9uYW1lKSwgdHJ1ZSwgZmFs c2UpOwogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZChmYWxzZSk7CisJCQkJZHJvcHBl ZCA9IHRydWU7CiAJCQl9CiAKLQkJCVVubG9ja1NoYXJlZE9iamVjdChEYXRhYmFzZVJlbGF0aW9u SWQsIGxvY2FsX3Nsb3QtPmRhdGEuZGF0YWJhc2UsCi0JCQkJCQkJICAgMCwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJCVVubG9ja1NoYXJlZE9iamVjdChEYXRhYmFzZVJlbGF0aW9uSWQsIHNsb3RfZGF0 YWJhc2UsIDAsCisJCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrKTsKIAotCQkJZXJlcG9ydChMT0cs Ci0JCQkJCWVycm1zZygiZHJvcHBlZCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBvZiBkYXRhYmFz ZSB3aXRoIE9JRCAldSIsCi0JCQkJCQkgICBOYW1lU3RyKGxvY2FsX3Nsb3QtPmRhdGEubmFtZSks Ci0JCQkJCQkgICBsb2NhbF9zbG90LT5kYXRhLmRhdGFiYXNlKSk7CisJCQlpZiAoZHJvcHBlZCkK KwkJCQllcmVwb3J0KExPRywKKwkJCQkJCWVycm1zZygiZHJvcHBlZCByZXBsaWNhdGlvbiBzbG90 IFwiJXNcIiBvZiBkYXRhYmFzZSB3aXRoIE9JRCAldSIsCisJCQkJCQkJICAgTmFtZVN0cihzbG90 X25hbWUpLAorCQkJCQkJCSAgIHNsb3RfZGF0YWJhc2UpKTsKIAkJfQogCX0KIH0KLS0gCjIuNTEu MAoK --0000000000000b6b5a06533f0852--