kernel: fix kfdwrite signature to match RB-modified trait (add arg param, cloexec field)
The RB fork's KernelScheme trait has an extra 'arg: u64' parameter in kfdwrite (not in upstream). Also RB's FileDescriptor has a 'cloexec' field. Both are now handled correctly.
This commit is contained in:
+3
-1
@@ -940,6 +940,7 @@ impl KernelScheme for ProcScheme {
|
|||||||
id: usize,
|
id: usize,
|
||||||
descs: Vec<Arc<context::file::LockedFileDescription>>,
|
descs: Vec<Arc<context::file::LockedFileDescription>>,
|
||||||
flags: CallFlags,
|
flags: CallFlags,
|
||||||
|
_arg: u64,
|
||||||
metadata: &[u64],
|
metadata: &[u64],
|
||||||
token: &mut CleanLockToken,
|
token: &mut CleanLockToken,
|
||||||
) -> Result<usize> {
|
) -> Result<usize> {
|
||||||
@@ -969,7 +970,7 @@ impl KernelScheme for ProcScheme {
|
|||||||
file.close(token)?;
|
file.close(token)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut file = descs.get(0).unwrap();
|
let file = descs.get(0).unwrap();
|
||||||
let mut context = context.write(token.token());
|
let mut context = context.write(token.token());
|
||||||
let (context, mut token) = context.token_split();
|
let (context, mut token) = context.token_split();
|
||||||
context
|
context
|
||||||
@@ -977,6 +978,7 @@ impl KernelScheme for ProcScheme {
|
|||||||
FileHandle(usize::try_from(*target_fd).map_err(|_| Error::new(EBADFD))?),
|
FileHandle(usize::try_from(*target_fd).map_err(|_| Error::new(EBADFD))?),
|
||||||
context::file::FileDescriptor {
|
context::file::FileDescriptor {
|
||||||
description: file.clone(),
|
description: file.clone(),
|
||||||
|
cloexec: false,
|
||||||
},
|
},
|
||||||
&mut token,
|
&mut token,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user