Hi,
I did quick test in debugger:
I configured descriptor 0 to overlay 32 bytes of flash at address 0x08F98000 by RAM at 0x40010000. When I enable the descriptor, I can see the RAM content at flash address:

If I disable the overlay, I can see original content (all 0xFF) at 0x08F98000:

Please check my configuration.
By the way, this piece of code:
C55FMC.MCR.B.PGM = 1;
*(unsigned int *)Small_Flash_Memory_Block_0_BEGIN = 0xffffffff;
C55FMC.MCR.B.PGM = 0;
... doesn't make sense. When you enable the overlay, it does not copy any data. It just re-map the RAM, so you see the RAM at flash addresses. If you want to see the flash again at the same addresses, you have to disable the overlay.
Regards,
Lukas