diff --git a/cdda2wav/semshm.c b/cdda2wav/semshm.c
index 36f75c8..474b960 100644
--- a/cdda2wav/semshm.c
+++ b/cdda2wav/semshm.c
@@ -557,7 +557,7 @@ shm_request(size, memptr)
 		B_ANY_ADDRESS,		/* type of address constraint */
 		size,			/* size in bytes (multiple of pagesize) */
 		B_NO_LOCK, /* B_FULL_LOCK, */ /* memory locking */
-		B_READ_AREA | B_WRITE_AREA);	/* read and write permissions */
+		B_READ_AREA | B_WRITE_AREA | B_CLONEABLE_AREA);	/* read and write permissions */
 
 	if (aid < B_OK)
 		comerrno(aid, _("create_area() failed\n"));
diff --git a/cdrecord/fifo.c b/cdrecord/fifo.c
index 95e4846..3216c87 100644
--- a/cdrecord/fifo.c
+++ b/cdrecord/fifo.c
@@ -366,7 +366,7 @@ mkbeosshm(size)
 	faio_aid = create_area(faio_name, &faio_addr,
 			B_ANY_ADDRESS,
 			size,
-			B_NO_LOCK, B_READ_AREA|B_WRITE_AREA);
+			B_NO_LOCK, B_READ_AREA|B_WRITE_AREA|B_CLONEABLE_AREA);
 	if (faio_addr == NULL) {
 		comerrno(faio_aid,
 			_("Cannot get create_area for %d Bytes FIFO.\n"), size);
@@ -390,7 +390,7 @@ beosshm_child()
 	 * using the pointer in the child. So we noe use B_EXACT_ADDRESS.
 	 */
 	faio_aid = clone_area(faio_name, &faio_addr,
-			B_EXACT_ADDRESS, B_READ_AREA|B_WRITE_AREA,
+			B_EXACT_ADDRESS, B_READ_AREA|B_WRITE_AREA|B_CLONEABLE_AREA,
 			faio_aid);
 	if (bufbase != faio_addr) {
 		comerrno(EX_BAD, _("Panic FIFO addr.\n"));
