|
@@ -49,13 +49,13 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr)
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
- upperdentry = ovl_dentry_upper(dentry);
|
|
|
|
- if (upperdentry) {
|
|
|
|
|
|
+ err = ovl_copy_up(dentry);
|
|
|
|
+ if (!err) {
|
|
|
|
+ upperdentry = ovl_dentry_upper(dentry);
|
|
|
|
+
|
|
mutex_lock(&upperdentry->d_inode->i_mutex);
|
|
mutex_lock(&upperdentry->d_inode->i_mutex);
|
|
err = notify_change(upperdentry, attr, NULL);
|
|
err = notify_change(upperdentry, attr, NULL);
|
|
mutex_unlock(&upperdentry->d_inode->i_mutex);
|
|
mutex_unlock(&upperdentry->d_inode->i_mutex);
|
|
- } else {
|
|
|
|
- err = ovl_copy_up_last(dentry, attr, false);
|
|
|
|
}
|
|
}
|
|
ovl_drop_write(dentry);
|
|
ovl_drop_write(dentry);
|
|
out:
|
|
out:
|