diff --git a/src/arch/aarch64/kernel/scheduler.rs b/src/arch/aarch64/kernel/scheduler.rs
index 6d8f9bced40de53b5dcf766566999d950cc4c9ae..919f4c89d44349cf72b01a1322b1542111eda08e 100644
--- a/src/arch/aarch64/kernel/scheduler.rs
+++ b/src/arch/aarch64/kernel/scheduler.rs
@@ -227,12 +227,6 @@ impl Drop for TaskTLS {
 	}
 }
 
-impl Clone for TaskTLS {
-	fn clone(&self) -> Self {
-		TaskTLS::from_environment()
-	}
-}
-
 extern "C" fn leave_task() -> ! {
 	core_scheduler().exit(0)
 }
diff --git a/src/arch/x86_64/kernel/scheduler.rs b/src/arch/x86_64/kernel/scheduler.rs
index bfcfa8bda4038b37cdab678496b4eeb3528bd3c7..eada7cb644956a9f9c9b231c9f1e49a300a7354a 100644
--- a/src/arch/x86_64/kernel/scheduler.rs
+++ b/src/arch/x86_64/kernel/scheduler.rs
@@ -299,12 +299,6 @@ impl TaskTLS {
 	}
 }
 
-impl Clone for TaskTLS {
-	fn clone(&self) -> Self {
-		Self::from_environment()
-	}
-}
-
 #[cfg(not(any(target_os = "none", target_os = "hermit")))]
 extern "C" fn task_start(_f: extern "C" fn(usize), _arg: usize, _user_stack: u64) -> ! {
 	unimplemented!()
diff --git a/src/scheduler/task.rs b/src/scheduler/task.rs
index e178ba80895e11499ddb8c6d3d504c3274c29098..dad6297de170e061df486b256f1bfcd49edd91d4 100644
--- a/src/scheduler/task.rs
+++ b/src/scheduler/task.rs
@@ -440,7 +440,7 @@ impl Task {
 			stacks: task.stacks.clone(),
 			next: None,
 			prev: None,
-			tls: task.tls.clone(),
+			tls: None,
 			last_wakeup_reason: task.last_wakeup_reason,
 			#[cfg(feature = "newlib")]
 			lwip_errno: 0,