From beeffcced7a070dc79cbb05f350efc29d1e94a93 Mon Sep 17 00:00:00 2001 From: Qi Zheng Date: Mon, 15 Jan 2024 14:20:49 +0800 Subject: [PATCH] [libos] faccessat only accepts three parameters --- src/libos/src/fs/file_ops/access.rs | 19 +++++-------------- src/libos/src/fs/file_ops/mod.rs | 2 +- src/libos/src/fs/syscalls.rs | 11 +++++------ src/libos/src/syscall/mod.rs | 2 +- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/libos/src/fs/file_ops/access.rs b/src/libos/src/fs/file_ops/access.rs index 84116fdf..d5993b16 100644 --- a/src/libos/src/fs/file_ops/access.rs +++ b/src/libos/src/fs/file_ops/access.rs @@ -22,6 +22,7 @@ impl AccessibilityCheckMode { } } +#[allow(dead_code)] bitflags! { pub struct AccessibilityCheckFlags : u32 { /// If path is a symbolic link, do not dereference it @@ -31,31 +32,21 @@ bitflags! { } } +#[allow(dead_code)] impl AccessibilityCheckFlags { pub fn from_u32(bits: u32) -> Result { AccessibilityCheckFlags::from_bits(bits).ok_or_else(|| errno!(EINVAL, "invalid flags")) } } -pub fn do_faccessat( - fs_path: &FsPath, - mode: AccessibilityCheckMode, - flags: AccessibilityCheckFlags, -) -> Result<()> { - debug!( - "faccessat: fs_path: {:?}, mode: {:?}, flags: {:?}", - fs_path, mode, flags - ); +pub fn do_faccessat(fs_path: &FsPath, mode: AccessibilityCheckMode) -> Result<()> { + debug!("faccessat: fs_path: {:?}, mode: {:?}", fs_path, mode); let inode = { let path = fs_path.to_abs_path()?; let current = current!(); let fs = current.fs().read().unwrap(); - if flags.contains(AccessibilityCheckFlags::AT_SYMLINK_NOFOLLOW) { - fs.lookup_inode_no_follow(&path)? - } else { - fs.lookup_inode(&path)? - } + fs.lookup_inode(&path)? }; if mode.test_for_exist() { return Ok(()); diff --git a/src/libos/src/fs/file_ops/mod.rs b/src/libos/src/fs/file_ops/mod.rs index 0d237dad..101b7a95 100644 --- a/src/libos/src/fs/file_ops/mod.rs +++ b/src/libos/src/fs/file_ops/mod.rs @@ -1,7 +1,7 @@ use super::*; use process::Process; -pub use self::access::{do_faccessat, AccessibilityCheckFlags, AccessibilityCheckMode}; +pub use self::access::{do_faccessat, AccessibilityCheckMode}; pub use self::chmod::{do_fchmod, do_fchmodat, FileMode}; pub use self::chown::{do_fchown, do_fchownat, ChownFlags}; pub use self::close::do_close; diff --git a/src/libos/src/fs/syscalls.rs b/src/libos/src/fs/syscalls.rs index c9b0662e..526c162c 100644 --- a/src/libos/src/fs/syscalls.rs +++ b/src/libos/src/fs/syscalls.rs @@ -1,8 +1,8 @@ use super::event_file::EventCreationFlags; use super::file_ops; use super::file_ops::{ - get_abs_path_by_fd, get_utimes, AccessibilityCheckFlags, AccessibilityCheckMode, ChownFlags, - FcntlCmd, FsPath, LinkFlags, StatFlags, UnlinkFlags, Utime, UtimeFlags, AT_FDCWD, UTIME_OMIT, + get_abs_path_by_fd, get_utimes, AccessibilityCheckMode, ChownFlags, FcntlCmd, FsPath, + LinkFlags, StatFlags, UnlinkFlags, Utime, UtimeFlags, AT_FDCWD, UTIME_OMIT, }; use super::fs_ops; use super::fs_ops::{MountFlags, MountOptions, UmountFlags}; @@ -304,17 +304,16 @@ pub fn do_fstatat(dirfd: i32, path: *const i8, stat_buf: *mut Stat, flags: u32) } pub fn do_access(path: *const i8, mode: u32) -> Result { - self::do_faccessat(AT_FDCWD, path, mode, 0) + self::do_faccessat(AT_FDCWD, path, mode) } -pub fn do_faccessat(dirfd: i32, path: *const i8, mode: u32, flags: u32) -> Result { +pub fn do_faccessat(dirfd: i32, path: *const i8, mode: u32) -> Result { let path = from_user::clone_cstring_safely(path)? .to_string_lossy() .into_owned(); let fs_path = FsPath::new(&path, dirfd, false)?; let mode = AccessibilityCheckMode::from_u32(mode)?; - let flags = AccessibilityCheckFlags::from_u32(flags)?; - file_ops::do_faccessat(&fs_path, mode, flags).map(|_| 0) + file_ops::do_faccessat(&fs_path, mode).map(|_| 0) } pub fn do_lseek(fd: FileDesc, offset: off_t, whence: i32) -> Result { diff --git a/src/libos/src/syscall/mod.rs b/src/libos/src/syscall/mod.rs index 87c0cd33..30effff4 100644 --- a/src/libos/src/syscall/mod.rs +++ b/src/libos/src/syscall/mod.rs @@ -366,7 +366,7 @@ macro_rules! process_syscall_table_with_callback { (Symlinkat = 266) => do_symlinkat(target: *const i8, new_dirfd: i32, link_path: *const i8), (Readlinkat = 267) => do_readlinkat(dirfd: i32, path: *const i8, buf: *mut u8, size: usize), (Fchmodat = 268) => do_fchmodat(dirfd: i32, path: *const i8, mode: u16), - (Faccessat = 269) => do_faccessat(dirfd: i32, path: *const i8, mode: u32, flags: u32), + (Faccessat = 269) => do_faccessat(dirfd: i32, path: *const i8, mode: u32), (Pselect6 = 270) => do_pselect6(nfds: c_int, readfds: *mut libc::fd_set, writefds: *mut libc::fd_set, exceptfds: *mut libc::fd_set, timeout: *mut timespec_t, data: *const sigset_argpack), (Ppoll = 271) => do_ppoll(fds: *mut libc::pollfd, nfds: libc::nfds_t, timeout_ts: *const timespec_t, sigmask: *const sigset_t), (Unshare = 272) => handle_unsupported(),