diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c
index 74ffa9d..e4c836e 100644
--- a/src/backend/access/hash/hashpage.c
+++ b/src/backend/access/hash/hashpage.c
@@ -653,13 +653,21 @@ restart_expand:
 	 */
 	if (H_NEEDS_SPLIT_CLEANUP(oopaque))
 	{
+		/*
+		 * Copy bucket mapping info now; refer the comment in code below where
+		 * we copy this information before calling _hash_splitbucket to see
+		 * why this is okay.
+		 */
+		maxbucket = metap->hashm_maxbucket;
+		highmask = metap->hashm_highmask;
+		lowmask = metap->hashm_lowmask;
+
 		/* Release the metapage lock. */
 		_hash_chgbufaccess(rel, metabuf, HASH_READ, HASH_NOLOCK);
 
 		hashbucketcleanup(rel, old_bucket, buf_oblkno, start_oblkno, NULL,
-						  metap->hashm_maxbucket, metap->hashm_highmask,
-						  metap->hashm_lowmask, NULL,
-						  NULL, true, NULL, NULL);
+						  maxbucket, highmask, lowmask, NULL, NULL, true,
+						  NULL, NULL);
 
 		_hash_dropbuf(rel, buf_oblkno);
 
