mirror of
https://github.com/postgres/postgres.git
synced 2025-06-02 00:01:40 -04:00
Fix off-by-one in LimitAdditionalPins()
Due to the bug LimitAdditionalPins() could return 0, violating LimitAdditionalPins()'s API ("One additional pin is always allowed"). This could be hit when setting shared_buffers very low and using a fair amount of concurrency. This bug was introduced in 31966b151e6a. Author: "Anton A. Melnikov" <aamelnikov@inbox.ru> Reported-by: "Anton A. Melnikov" <aamelnikov@inbox.ru> Reported-by: Victoria Shepard Discussion: https://postgr.es/m/ae46f2fb-5586-3de0-b54b-1bb0f6410ebd@inbox.ru Backpatch: 16-
This commit is contained in:
parent
d6677b93c7
commit
f3bc519288
@ -1767,7 +1767,7 @@ LimitAdditionalPins(uint32 *additional_pins)
|
||||
*/
|
||||
max_proportional_pins -= PrivateRefCountOverflowed + REFCOUNT_ARRAY_ENTRIES;
|
||||
|
||||
if (max_proportional_pins < 0)
|
||||
if (max_proportional_pins <= 0)
|
||||
max_proportional_pins = 1;
|
||||
|
||||
if (*additional_pins > max_proportional_pins)
|
||||
|
Loading…
x
Reference in New Issue
Block a user