From f0c38fe609d666254ec29f6906603c3a3940ee46 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 16 Apr 2017 12:52:07 -0600 Subject: [PATCH] Perform cloexec in kernel --- mount/redox/resource.rs | 24 ++++++++++-------------- mount/redox/scheme.rs | 4 ++-- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/mount/redox/resource.rs b/mount/redox/resource.rs index 586621b423..7921da2bdb 100644 --- a/mount/redox/resource.rs +++ b/mount/redox/resource.rs @@ -3,11 +3,11 @@ use redoxfs::FileSystem; use std::cmp::{min, max}; use syscall::error::{Error, Result, EBADF, EINVAL}; -use syscall::flag::{O_ACCMODE, O_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR, F_GETFL, F_SETFL}; +use syscall::flag::{O_ACCMODE, O_RDONLY, O_WRONLY, O_RDWR, F_GETFL, F_SETFL}; use syscall::{Stat, SEEK_SET, SEEK_CUR, SEEK_END}; pub trait Resource { - fn dup(&self, buf: &[u8]) -> Result>; + fn dup(&self) -> Result>; fn read(&mut self, buf: &mut [u8], fs: &mut FileSystem) -> Result; fn write(&mut self, buf: &[u8], fs: &mut FileSystem) -> Result; fn seek(&mut self, offset: usize, whence: usize, fs: &mut FileSystem) -> Result; @@ -37,7 +37,7 @@ impl DirResource { } impl Resource for DirResource { - fn dup(&self, _buf: &[u8]) -> Result> { + fn dup(&self) -> Result> { Ok(Box::new(DirResource { path: self.path.clone(), block: self.block, @@ -128,17 +128,13 @@ impl FileResource { } impl Resource for FileResource { - fn dup(&self, buf: &[u8]) -> Result> { - if buf == b"exec" && self.flags & O_CLOEXEC == O_CLOEXEC { - Err(Error::new(EBADF)) - } else { - Ok(Box::new(FileResource { - path: self.path.clone(), - block: self.block, - flags: self.flags, - seek: self.seek, - })) - } + fn dup(&self) -> Result> { + Ok(Box::new(FileResource { + path: self.path.clone(), + block: self.block, + flags: self.flags, + seek: self.seek, + })) } fn read(&mut self, buf: &mut [u8], fs: &mut FileSystem) -> Result { diff --git a/mount/redox/scheme.rs b/mount/redox/scheme.rs index 503adb07d9..807a334038 100644 --- a/mount/redox/scheme.rs +++ b/mount/redox/scheme.rs @@ -297,12 +297,12 @@ impl Scheme for FileScheme { /* Resource operations */ #[allow(unused_variables)] - fn dup(&self, old_id: usize, buf: &[u8]) -> Result { + fn dup(&self, old_id: usize, _buf: &[u8]) -> Result { // println!("Dup {}", old_id); let mut files = self.files.lock(); let resource = if let Some(old_resource) = files.get(&old_id) { - old_resource.dup(buf)? + old_resource.dup()? } else { return Err(Error::new(EBADF)); };