ovl: don't check rename to self
authorMiklos Szeredi <mszeredi@redhat.com>
Fri, 16 Dec 2016 10:02:55 +0000 (11:02 +0100)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 16 Dec 2016 10:02:55 +0000 (11:02 +0100)
This is redundant, the vfs already performed this check (and was broken,
see commit 9409e22acdfc ("vfs: rename: check backing inode being equal")).

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/dir.c

index 4ef0d53..a806fb1 100644 (file)
@@ -826,18 +826,6 @@ static int ovl_rename(struct inode *olddir, struct dentry *old,
                err = -EXDEV;
                if (!overwrite && OVL_TYPE_MERGE_OR_LOWER(new_type) && new_is_dir)
                        goto out;
-
-               err = 0;
-               if (!OVL_TYPE_UPPER(new_type) && !OVL_TYPE_UPPER(old_type)) {
-                       if (ovl_dentry_lower(old)->d_inode ==
-                           ovl_dentry_lower(new)->d_inode)
-                               goto out;
-               }
-               if (OVL_TYPE_UPPER(new_type) && OVL_TYPE_UPPER(old_type)) {
-                       if (ovl_dentry_upper(old)->d_inode ==
-                           ovl_dentry_upper(new)->d_inode)
-                               goto out;
-               }
        } else {
                if (ovl_dentry_is_opaque(new))
                        new_type = __OVL_PATH_UPPER;
@@ -933,6 +921,9 @@ static int ovl_rename(struct inode *olddir, struct dentry *old,
        if (newdentry == trap)
                goto out_dput;
 
+       if (WARN_ON(olddentry->d_inode == newdentry->d_inode))
+               goto out_dput;
+
        if (is_dir && !old_opaque && new_opaque) {
                err = ovl_set_opaque(olddentry);
                if (err)