diff --git a/Data/Primitive/ByteArray.hs b/Data/Primitive/ByteArray.hs
index 90f1b09411bed59c270c6b8e0dae988ec231c3c8..e1d4a8c1c12e1da78949294167d6a54af4f02a44 100644
--- a/Data/Primitive/ByteArray.hs
+++ b/Data/Primitive/ByteArray.hs
@@ -144,7 +144,7 @@ byteArrayAsForeignPtr (ByteArray arr#) = ForeignPtr (byteArrayContents# arr#) (P
 -- the foreign pointer.
 mutableByteArrayAsForeignPtr :: MutableByteArray RealWorld -> ForeignPtr Word8
 {-# INLINE mutableByteArrayAsForeignPtr #-}
-mutableByteArrayAsForeignPtr (MutableByteArray arr#) = ForeignPtr (mutableByteArrayContents# arr#) (PlainPtr arr#)
+mutableByteArrayAsForeignPtr (MutableByteArray arr#) = ForeignPtr (mutableByteArrayContentsShim arr#) (PlainPtr arr#)
 
 -- | Yield a pointer to the array's data. This operation is only safe on
 -- /pinned/ byte arrays. Byte arrays allocated by 'newPinnedByteArray' and