diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h
index c9cae956a541e40deaba299b854553a4cc8562e1..511d7409e6ef850794aaa09d47faf732daf26000 100644
--- a/src/include/storage/buf_internals.h
+++ b/src/include/storage/buf_internals.h
@@ -242,8 +242,8 @@ extern PGDLLIMPORT LWLockMinimallyPadded *BufferIOLWLockArray;
 extern uint32 LockBufHdr(BufferDesc *desc);
 #define UnlockBufHdr(desc, s)	\
 	do {	\
-		pg_atomic_write_u32(&(desc)->state, (s) & (~BM_LOCKED)); \
 		pg_write_barrier(); \
+		pg_atomic_write_u32(&(desc)->state, (s) & (~BM_LOCKED)); \
 	} while (0)