[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <174786677869.1383760.310634374176043971.stgit@frogsfrogsfrogs>
Date: Wed, 21 May 2025 15:39:36 -0700
From: "Darrick J. Wong" <djwong@...nel.org>
To: tytso@....edu
Cc: linux-ext4@...r.kernel.org
Subject: [PATCH 18/29] fuse2fs: return EPERM for write access to
EXT2_IMMUTABLE_FL files
From: Darrick J. Wong <djwong@...nel.org>
The kernel drivers return EPERM for attempts to write to immutable
files, so switch the error code.
Signed-off-by: "Darrick J. Wong" <djwong@...nel.org>
---
misc/fuse2fs.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c
index e73730cfe27130..06d59a3e824e09 100644
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -524,11 +524,14 @@ static int check_inum_access(struct fuse2fs *ff, ext2_ino_t ino, int mask)
return translate_error(fs, ino, err);
perms = inode.i_mode & 0777;
- dbg_printf(ff, "access ino=%d mask=e%s%s%s perms=0%o fuid=%d fgid=%d "
- "uid=%d gid=%d\n", ino,
- (mask & R_OK ? "r" : ""), (mask & W_OK ? "w" : ""),
- (mask & X_OK ? "x" : ""), perms, inode_uid(inode),
- inode_gid(inode), ctxt->uid, ctxt->gid);
+ dbg_printf(ff, "access ino=%d mask=e%s%s%s perms=0%o iflags=0x%x "
+ "fuid=%d fgid=%d uid=%d gid=%d\n", ino,
+ (mask & R_OK ? "r" : ""),
+ (mask & W_OK ? "w" : ""),
+ (mask & X_OK ? "x" : ""),
+ perms, inode.i_flags,
+ inode_uid(inode), inode_gid(inode),
+ ctxt->uid, ctxt->gid);
/* existence check */
if (mask == 0)
@@ -537,7 +540,7 @@ static int check_inum_access(struct fuse2fs *ff, ext2_ino_t ino, int mask)
/* is immutable? */
if ((mask & W_OK) &&
(inode.i_flags & EXT2_IMMUTABLE_FL))
- return -EACCES;
+ return -EPERM;
/* If kernel is responsible for mode and acl checks, we're done. */
if (ff->kernel)
Powered by blists - more mailing lists