diff --git a/src/scheme/user.rs b/src/scheme/user.rs
index fe76233c6254caebe1ee30680e5fb160de85e579..1f3f131eb6c918245d12f58854a511731263a639 100644
--- a/src/scheme/user.rs
+++ b/src/scheme/user.rs
@@ -270,7 +270,7 @@ impl UserInner {
                 SKMSG_FRETURNFD => {
                     let fd = packet.c;
 
-                    let desc = context::current()?.read().get_file(FileHandle::from(fd)).ok_or(Error::new(EINVAL))?.description;
+                    let desc = context::current()?.read().remove_file(FileHandle::from(fd)).ok_or(Error::new(EINVAL))?.description;
 
                     self.done.send(packet.id, Response::Fd(desc));
                 }