Index: kernel/generic/src/proc/program.c
===================================================================
--- kernel/generic/src/proc/program.c	(revision ae7d03c05f24b857bbbdbcf3dafbf8ecc6c286ab)
+++ kernel/generic/src/proc/program.c	(revision 13db20447e9ad45e946906ed3a8fb2e7b7de7f23)
@@ -71,8 +71,15 @@
 errno_t program_create(as_t *as, uintptr_t entry_addr, char *name, program_t *prg)
 {
+	uspace_arg_t *kernel_uarg = (uspace_arg_t *)
+	    malloc(sizeof(uspace_arg_t), FRAME_ATOMIC);
+	if (!kernel_uarg)
+		return ENOMEM;
+
 	prg->loader_status = EE_OK;
 	prg->task = task_create(as, name);
-	if (!prg->task)
+	if (!prg->task) {
+		free(kernel_uarg);
 		return ELIMIT;
+	}
 
 	/*
@@ -90,11 +97,9 @@
 	    &anon_backend, NULL, &virt, bound);
 	if (!area) {
+		free(kernel_uarg);
 		task_destroy(prg->task);
 		prg->task = NULL;
 		return ENOMEM;
 	}
-
-	uspace_arg_t *kernel_uarg = (uspace_arg_t *)
-	    malloc(sizeof(uspace_arg_t), 0);
 
 	kernel_uarg->uspace_entry = (void *) entry_addr;
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision ae7d03c05f24b857bbbdbcf3dafbf8ecc6c286ab)
+++ kernel/generic/src/proc/thread.c	(revision 13db20447e9ad45e946906ed3a8fb2e7b7de7f23)
@@ -949,5 +949,7 @@
 	 */
 	uspace_arg_t *kernel_uarg =
-	    (uspace_arg_t *) malloc(sizeof(uspace_arg_t), 0);
+	    (uspace_arg_t *) malloc(sizeof(uspace_arg_t), FRAME_ATOMIC);
+	if (!kernel_uarg)
+		return (sys_errno_t) ENOMEM;
 
 	rc = copy_from_uspace(kernel_uarg, uspace_uarg, sizeof(uspace_arg_t));
