diff --git a/src/flag.rs b/src/flag.rs index 3411048562..dff3aa9eee 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -54,6 +54,8 @@ pub const FUTEX_WAKE: usize = 1; pub const FUTEX_REQUEUE: usize = 2; pub const FUTEX_WAIT64: usize = 3; +pub const SKMSG_FRETURNFD: usize = 0; + bitflags! { pub struct MapFlags: usize { const PROT_NONE = 0x0000_0000; diff --git a/src/scheme/mod.rs b/src/scheme/mod.rs index 054817a463..61655dabf3 100644 --- a/src/scheme/mod.rs +++ b/src/scheme/mod.rs @@ -1,6 +1,6 @@ use core::{slice, str}; -use crate::{Error, Result, EOPNOTSUPP, ESKMSG, Packet}; +use crate::{Error, Result, EOPNOTSUPP, ESKMSG, Packet, SKMSG_FRETURNFD}; pub use self::scheme::Scheme; pub use self::scheme_mut::SchemeMut; @@ -49,7 +49,8 @@ pub(crate) fn convert_in_scheme_handle(packet: &mut Packet, result: Result Ok(number), Ok(OpenResult::OtherScheme { fd }) => { - packet.b = fd; + packet.b = SKMSG_FRETURNFD; + packet.c = fd; Err(Error::new(ESKMSG)) } Err(err) => Err(err),