diff --git a/Kernel/arch/armv7/mm_virt.c b/Kernel/arch/armv7/mm_virt.c
index 03c8cc7d1a8399545b37993b077eea9d23acdbf5..53531d3721d18eacfcdf798d7e42546c19573afb 100644
--- a/Kernel/arch/armv7/mm_virt.c
+++ b/Kernel/arch/armv7/mm_virt.c
@@ -545,7 +545,11 @@ tPAddr MM_Clone(void)
 	tmp_map = new_lvl1_1;
 	for( i = 0; i < 0x800-4; i ++ )
 	{
-//		Log("i = %i", i);
+		// HACK! Ignore the original identity mapping
+		if( i == 0 && Threads_GetTID() == 0 ) {
+			tmp_map[0] = 0;
+			continue;
+		}
 		if( i == 0x400 )
 			tmp_map = &new_lvl1_2[-0x400];
 		switch( cur[i] & 3 )
diff --git a/Kernel/arch/armv7/proc.c b/Kernel/arch/armv7/proc.c
index d61160f01d36c3094a66e6482b65c9e7637efcec..a0a646b672c3cea0ce252b2732d9dd6dc0d332d9 100644
--- a/Kernel/arch/armv7/proc.c
+++ b/Kernel/arch/armv7/proc.c
@@ -127,7 +127,7 @@ tTID Proc_SpawnWorker( void (*Fnc)(void*), void *Ptr )
 
 	new = Threads_CloneThreadZero();
 	if(!new)	return -1;
-	free(new->ThreadName);
+	if(new->ThreadName)	free(new->ThreadName);
 	new->ThreadName = NULL;
 
 	new->KernelStack = MM_NewKStack(1);