mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-15 00:06:47 +00:00
Make the generic inode permisson check faster
This commit is contained in:
parent
b9ce3e64ad
commit
6de5be1ecc
@ -512,16 +512,17 @@ pub trait Inode: Any + Sync + Send {
|
||||
|
||||
perm =
|
||||
perm.intersection(Permission::MAY_READ | Permission::MAY_WRITE | Permission::MAY_EXEC);
|
||||
let mode = self.mode().unwrap();
|
||||
let metadata = self.metadata();
|
||||
let mode = metadata.mode;
|
||||
|
||||
if self.metadata().uid == creds.fsuid() {
|
||||
if metadata.uid == creds.fsuid() {
|
||||
if (perm.may_read() && !mode.is_owner_readable())
|
||||
|| (perm.may_write() && !mode.is_owner_writable())
|
||||
|| (perm.may_exec() && !mode.is_owner_executable())
|
||||
{
|
||||
return_errno_with_message!(Errno::EACCES, "owner permission check failed");
|
||||
}
|
||||
} else if self.metadata().gid == creds.fsgid() {
|
||||
} else if metadata.gid == creds.fsgid() {
|
||||
if (perm.may_read() && !mode.is_group_readable())
|
||||
|| (perm.may_write() && !mode.is_group_writable())
|
||||
|| (perm.may_exec() && !mode.is_group_executable())
|
||||
|
Loading…
x
Reference in New Issue
Block a user