diff --git a/src/backend/utils/mmgr/freepage.c b/src/backend/utils/mmgr/freepage.c
index d110030b63..18c3c188e8 100644
--- a/src/backend/utils/mmgr/freepage.c
+++ b/src/backend/utils/mmgr/freepage.c
@@ -1526,6 +1526,8 @@ FreePageManagerPutInternal(FreePageManager *fpm, Size first_page, Size npages,
 
 			if (!relptr_is_null(fpm->btree_recycle))
 				root = FreePageBtreeGetRecycled(fpm);
+			else if (soft)
+				return 0;		/* Should not allocate if soft. */
 			else if (FreePageManagerGetInternal(fpm, 1, &root_page))
 				root = (FreePageBtree *) fpm_page_to_pointer(base, root_page);
 			else
