patch-2.4.25 linux-2.4.25/fs/open.c
Next file: linux-2.4.25/fs/partitions/check.c
Previous file: linux-2.4.25/fs/ntfs/support.c
Back to the patch index
Back to the overall index
- Lines: 41
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/fs/open.c
- Orig date:
2003-08-25 04:44:43.000000000 -0700
diff -urN linux-2.4.24/fs/open.c linux-2.4.25/fs/open.c
@@ -274,6 +274,9 @@
/* Don't worry, the checks are done in inode_change_ok() */
newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME;
if (times) {
+ error = -EPERM;
+ if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
+ goto dput_and_out;
error = get_user(newattrs.ia_atime, ×->actime);
if (!error)
error = get_user(newattrs.ia_mtime, ×->modtime);
@@ -282,6 +285,9 @@
newattrs.ia_valid |= ATTR_ATIME_SET | ATTR_MTIME_SET;
} else {
+ error = -EACCES;
+ if (IS_IMMUTABLE(inode))
+ goto dput_and_out;
if (current->fsuid != inode->i_uid &&
(error = permission(inode,MAY_WRITE)) != 0)
goto dput_and_out;
@@ -320,6 +326,9 @@
newattrs.ia_valid = ATTR_CTIME | ATTR_MTIME | ATTR_ATIME;
if (utimes) {
struct timeval times[2];
+ error = -EPERM;
+ if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
+ goto dput_and_out;
error = -EFAULT;
if (copy_from_user(×, utimes, sizeof(times)))
goto dput_and_out;
@@ -327,6 +336,10 @@
newattrs.ia_mtime = times[1].tv_sec;
newattrs.ia_valid |= ATTR_ATIME_SET | ATTR_MTIME_SET;
} else {
+ error = -EACCES;
+ if (IS_IMMUTABLE(inode))
+ goto dput_and_out;
+
if (current->fsuid != inode->i_uid &&
(error = permission(inode,MAY_WRITE)) != 0)
goto dput_and_out;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)