Index: generic/src/ddi/ddi.c
===================================================================
--- generic/src/ddi/ddi.c	(revision 738ad2ee5caf06cfdb3fc173c15ee2efe64f1de8)
+++ generic/src/ddi/ddi.c	(revision 203dcd45d0ab1a42c96306e965756396de8dcec4)
@@ -41,7 +41,7 @@
 #include <security/cap.h>
 #include <mm/frame.h>
-#include <mm/page.h>
 #include <mm/as.h>
 #include <synch/spinlock.h>
+#include <syscall/copy.h>
 #include <arch.h>
 #include <align.h>
@@ -184,6 +184,10 @@
 {
 	ddi_memarg_t arg;
-	
-	copy_from_uspace(&arg, uspace_mem_arg, sizeof(ddi_memarg_t));
+	int rc;
+	
+	rc = copy_from_uspace(&arg, uspace_mem_arg, sizeof(ddi_memarg_t));
+	if (rc != 0)
+		return (__native) rc;
+		
 	return (__native) ddi_physmem_map((task_id_t) arg.task_id, ALIGN_DOWN((__address) arg.phys_base, FRAME_SIZE),
 					  ALIGN_DOWN((__address) arg.virt_base, PAGE_SIZE), (count_t) arg.pages,
@@ -200,6 +204,10 @@
 {
 	ddi_ioarg_t arg;
-	
-	copy_from_uspace(&arg, uspace_io_arg, sizeof(ddi_ioarg_t));
+	int rc;
+	
+	rc = copy_from_uspace(&arg, uspace_io_arg, sizeof(ddi_ioarg_t));
+	if (rc != 0)
+		return (__native) rc;
+		
 	return (__native) ddi_iospace_enable((task_id_t) arg.task_id, (__address) arg.ioaddr, (size_t) arg.size);
 }
