From 3f1518f019136f15e7c0967b3f6da970ed634e23 Mon Sep 17 00:00:00 2001 From: teamol Date: Thu, 15 Apr 2021 16:29:14 +0800 Subject: [PATCH] Description: Linux_Kernel Team: OTHERS Feature or Bugfix:Feature Binary Source:gcc toolchain PrivateCode(Yes/No):No Change-Id: I9ab5ca3c00f43a159b5ade169f05ef618944acd2 --- fs/jffs2/fs.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index d25e6f8..ebf9b74 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c @@ -92,11 +92,27 @@ int jffs2_setattr (struct jffs2_inode *inode, struct IATTR *attr) tmp_mode = attr->attr_chg_mode | tmp_mode; // add old file type } } + if (ivalid & CHG_ATIME) { + if ((c_uid != inode->i_uid) || (attr->attr_chg_uid != inode->i_uid)) { + return -EPERM; + } else { + ri->atime = cpu_to_je32(attr->attr_chg_atime); + } + } else { + ri->atime = cpu_to_je32(inode->i_atime); + } + if (ivalid & CHG_MTIME) { + if ((c_uid != inode->i_uid) || (attr->attr_chg_uid != inode->i_uid)) { + return -EPERM; + } else { + ri->mtime = cpu_to_je32(attr->attr_chg_mtime); + } + } else { + ri->mtime = cpu_to_je32(Jffs2CurSec()); + } ri->mode = cpu_to_jemode(tmp_mode); ri->isize = cpu_to_je32((ivalid & CHG_SIZE) ? attr->attr_chg_size : inode->i_size); - ri->atime = cpu_to_je32(inode->i_atime); - ri->mtime = cpu_to_je32(Jffs2CurSec()); ri->ctime = cpu_to_je32(Jffs2CurSec()); ri->offset = cpu_to_je32(0); -- Gitee