[PATCH] Fix TOCTOU race in ReplicationSlotsComputeRequiredLSN() - Mailing list pgsql-hackers

From JoongHyuk Shin
Subject [PATCH] Fix TOCTOU race in ReplicationSlotsComputeRequiredLSN()
Date
Msg-id CACSdjfMQYL3DV-3inrxdReqpFMOky4JxLbN0gTTY+qGJqrUJXw@mail.gmail.com
Whole thread
Responses RE: [PATCH] Fix TOCTOU race in ReplicationSlotsComputeRequiredLSN()
List pgsql-hackers
Hi,

Commit 2a5225b99d7 fixed a race in ReplicationSlotsComputeRequiredXmin()
where ReplicationSlotControlLock was released before the global xmin
update, allowing a concurrent backend to overwrite a correct value with
a stale one.

ReplicationSlotsComputeRequiredLSN() has the same problem, it releases the lock before calling XLogSetReplicationSlotMinimumLSN(), so a stale minimum LSN can overwrite a correct (lower) one, potentially leading to premature WAL removal.

The attached patch moves LWLockRelease() to after the LSN update,
matching the xmin fix. Since 2a5225b99d7 was backpatched to all supported versions, I believe this should be as well.
Attachment

pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: [doc] pg_ctl: fix wrong description for -l
Next
From: "Zhijie Hou (Fujitsu)"
Date:
Subject: RE: [PATCH] Fix TOCTOU race in ReplicationSlotsComputeRequiredLSN()