0001-Fix-unsafe-access-BufferDescriptors.patch
application/octet-stream
Filename: 0001-Fix-unsafe-access-BufferDescriptors.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Fix unsafe access BufferDescriptors.
| File | + | − |
|---|---|---|
| src/backend/storage/buffer/bufmgr.c | 2 | 1 |
From a26245086f080fa31d5d8076ded7ca2db6a4f4b0 Mon Sep 17 00:00:00 2001
From: Tender Wang <tndrwang@gmail.com>
Date: Thu, 7 Nov 2024 18:47:36 +0800
Subject: [PATCH] Fix unsafe access BufferDescriptors.
---
src/backend/storage/buffer/bufmgr.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 0f02bf62fa..2c5d7ff5de 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -3984,10 +3984,10 @@ BufferIsPermanent(Buffer buffer)
XLogRecPtr
BufferGetLSNAtomic(Buffer buffer)
{
- BufferDesc *bufHdr = GetBufferDescriptor(buffer - 1);
char *page = BufferGetPage(buffer);
XLogRecPtr lsn;
uint32 buf_state;
+ BufferDesc *bufHdr;
/*
* If we don't need locking for correctness, fastpath out.
@@ -3999,6 +3999,7 @@ BufferGetLSNAtomic(Buffer buffer)
Assert(BufferIsValid(buffer));
Assert(BufferIsPinned(buffer));
+ bufHdr = GetBufferDescriptor(buffer - 1);
buf_state = LockBufHdr(bufHdr);
lsn = PageGetLSN(page);
UnlockBufHdr(bufHdr, buf_state);
--
2.25.1