diff --git a/kernel/src/device/random.rs b/kernel/src/device/random.rs index f614c9f4c..2f04c1df9 100644 --- a/kernel/src/device/random.rs +++ b/kernel/src/device/random.rs @@ -47,7 +47,9 @@ impl Pollable for Random { impl FileIo for Random { fn read(&self, writer: &mut VmWriter) -> Result { let mut buf = vec![0; writer.avail()]; - Self::getrandom(buf.as_mut_slice()) + let size = Self::getrandom(buf.as_mut_slice()); + writer.write_fallible(&mut buf.as_slice().into())?; + size } fn write(&self, reader: &mut VmReader) -> Result { diff --git a/kernel/src/device/urandom.rs b/kernel/src/device/urandom.rs index 04e5d8121..faace7a71 100644 --- a/kernel/src/device/urandom.rs +++ b/kernel/src/device/urandom.rs @@ -47,7 +47,9 @@ impl Pollable for Urandom { impl FileIo for Urandom { fn read(&self, writer: &mut VmWriter) -> Result { let mut buf = vec![0; writer.avail()]; - Self::getrandom(buf.as_mut_slice()) + let size = Self::getrandom(buf.as_mut_slice()); + writer.write_fallible(&mut buf.as_slice().into())?; + size } fn write(&self, reader: &mut VmReader) -> Result {