struct dentry *old, struct inode *newdir,
struct dentry *new, unsigned int flags)
{
- const struct cred *old_cred = NULL;
struct ovl_renamedata ovlrd = {
.old_parent = old->d_parent,
.old_dentry = old,
int err;
err = ovl_rename_start(&ovlrd, &list);
- if (err)
- goto out;
-
- old_cred = ovl_override_creds(old->d_sb);
-
- err = ovl_rename_upper(&ovlrd, &list);
+ if (!err) {
+ with_ovl_creds(old->d_sb)
+ err = ovl_rename_upper(&ovlrd, &list);
+ ovl_rename_end(&ovlrd);
+ }
- ovl_revert_creds(old_cred);
- ovl_rename_end(&ovlrd);
-out:
- dput(ovlrd->opaquedir);
+ dput(ovlrd.opaquedir);
ovl_cache_free(&list);
return err;
}