diff --git a/src/scheme/debug.rs b/src/scheme/debug.rs
index f97452b2813cf28c3ea1adca0cd0942b174a3b90..aa69f83c08c6d056cf3da15f32a9d1f7ac2cf275 100644
--- a/src/scheme/debug.rs
+++ b/src/scheme/debug.rs
@@ -49,7 +49,7 @@ impl Scheme for DebugScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let flags = {
diff --git a/src/scheme/env.rs b/src/scheme/env.rs
index cbe5b7eb59f7fa75b9cb6c2d68b20ff50c5dc327..0f31b8e5314cf5bc403ac11db65be3b372da2bba 100644
--- a/src/scheme/env.rs
+++ b/src/scheme/env.rs
@@ -92,7 +92,7 @@ impl Scheme for EnvScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let new_handle = {
diff --git a/src/scheme/event.rs b/src/scheme/event.rs
index 24afc1e95f48c75948a433d0992df11f076e7d33..210b5ddd990668ecaa7a9a75e9234be8f4983a3c 100644
--- a/src/scheme/event.rs
+++ b/src/scheme/event.rs
@@ -41,7 +41,7 @@ impl Scheme for EventScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let handle = {
diff --git a/src/scheme/initfs.rs b/src/scheme/initfs.rs
index 7f9b7dd430f624b68886a43358e1fd0b1cc81d4c..ff8ee9ed795375a5327f2e9ac1823c038e193ec5 100644
--- a/src/scheme/initfs.rs
+++ b/src/scheme/initfs.rs
@@ -67,7 +67,7 @@ impl Scheme for InitFsScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let (path, flags, data, mode, seek) = {
diff --git a/src/scheme/irq.rs b/src/scheme/irq.rs
index 854cc992bc58ffacf4fe1f66bc32e614c784d1a3..b5499c8d40f191d8757ab89260a119ece197c375 100644
--- a/src/scheme/irq.rs
+++ b/src/scheme/irq.rs
@@ -50,7 +50,7 @@ impl Scheme for IrqScheme {
 
     fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         Ok(file)
diff --git a/src/scheme/live.rs b/src/scheme/live.rs
index bc6b84597b7d7ccfc63130a9e2f11f7a09d656b7..93835ca476d64c150943163c98a8e840b49e238d 100644
--- a/src/scheme/live.rs
+++ b/src/scheme/live.rs
@@ -51,7 +51,7 @@ impl Scheme for DiskScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let (path, data, mode, seek) = {
diff --git a/src/scheme/null.rs b/src/scheme/null.rs
index c8df5933ae54a23c2b2448aa74c373681b4ffd94..3906d32de6dfcea7dba8bdd6f11bf57077be92bd 100644
--- a/src/scheme/null.rs
+++ b/src/scheme/null.rs
@@ -10,7 +10,7 @@ impl Scheme for NullScheme {
 
     fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         Ok(0)
diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs
index 0989e84b0cad427f59c512b57562f54b9a8a42be..11f99fc6009b604d521f65ae1ce28dd80754f912 100644
--- a/src/scheme/pipe.rs
+++ b/src/scheme/pipe.rs
@@ -53,7 +53,7 @@ impl PipeScheme {
 impl Scheme for PipeScheme {
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let mut pipes = pipes_mut();
diff --git a/src/scheme/root.rs b/src/scheme/root.rs
index 6261ff72065f64e9829ea5717060497cdcb0d19e..c4175b3ded917e3fcc4bc9868db08ae34057021d 100644
--- a/src/scheme/root.rs
+++ b/src/scheme/root.rs
@@ -73,7 +73,7 @@ impl Scheme for RootScheme {
 
     fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let mut handles = self.handles.write();
diff --git a/src/scheme/sys/mod.rs b/src/scheme/sys/mod.rs
index 63ddfd2daae6923f64f2c4d0c094a5f2450c5944..bcc5097d0604daac0090723164710a097cfdbcbc 100644
--- a/src/scheme/sys/mod.rs
+++ b/src/scheme/sys/mod.rs
@@ -102,7 +102,7 @@ impl Scheme for SysScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let (path, data, mode, seek) = {
diff --git a/src/scheme/time.rs b/src/scheme/time.rs
index b41bad668966dd2f212e94bcf528342692524be1..7953cd9ef4766f009ff095f32d2a3fbd57240dbc 100644
--- a/src/scheme/time.rs
+++ b/src/scheme/time.rs
@@ -47,7 +47,7 @@ impl Scheme for TimeScheme {
 
     fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         let clock = {
diff --git a/src/scheme/zero.rs b/src/scheme/zero.rs
index e2a202bb8fd9875356eff279bb0bfd5a0557dbd9..05b1cdcff20f8ca364fe5f6c76854d296b6be2cc 100644
--- a/src/scheme/zero.rs
+++ b/src/scheme/zero.rs
@@ -10,7 +10,7 @@ impl Scheme for ZeroScheme {
 
     fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> {
         if ! buf.is_empty() {
-            return Err(Error::new(ENOENT));
+            return Err(Error::new(EINVAL));
         }
 
         Ok(0)