X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Futimes.c;h=a35e909cf8e395b6dd760b4b5a3188c4181de82a;hb=45568625feacf13f1450da6b8cec17bf97c5a3fd;hp=aa138d64560a6a3c2133bc70d57e367cc8c1476d;hpb=29be6345bbaec8502a70c4e2204d5818b48c4e8f;p=firefly-linux-kernel-4.4.55.git diff --git a/fs/utimes.c b/fs/utimes.c index aa138d64560a..a35e909cf8e3 100644 --- a/fs/utimes.c +++ b/fs/utimes.c @@ -87,24 +87,11 @@ static int utimes_common(struct path *path, struct timespec *times) */ newattrs.ia_valid |= ATTR_TIMES_SET; } else { - /* - * If times is NULL (or both times are UTIME_NOW), - * then we need to check permissions, because - * inode_change_ok() won't do it. - */ - error = -EACCES; - if (IS_IMMUTABLE(inode)) - goto mnt_drop_write_and_out; - - if (!inode_owner_or_capable(inode)) { - error = inode_permission(inode, MAY_WRITE); - if (error) - goto mnt_drop_write_and_out; - } + newattrs.ia_valid |= ATTR_TOUCH; } retry_deleg: mutex_lock(&inode->i_mutex); - error = notify_change(path->dentry, &newattrs, &delegated_inode); + error = notify_change2(path->mnt, path->dentry, &newattrs, &delegated_inode); mutex_unlock(&inode->i_mutex); if (delegated_inode) { error = break_deleg_wait(&delegated_inode); @@ -112,7 +99,6 @@ retry_deleg: goto retry_deleg; } -mnt_drop_write_and_out: mnt_drop_write(path->mnt); out: return error;