From 1fac73764621fd8c4959c5eff0f2aa81109f7120 Mon Sep 17 00:00:00 2001 From: Marsman1996 Date: Mon, 18 Nov 2024 19:45:00 +0800 Subject: [PATCH] Fix not write back error in (U)Random::read --- kernel/src/device/random.rs | 4 +++- kernel/src/device/urandom.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) 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 {