Both are identical except for IMustLock() and lookup_one_len[_unlocked]().
Deduplicate them w/ an internal function. No functional changes intended.

Signed-off-by: Mauricio Faria de Oliveira <m...@canonical.com>
---
 fs/aufs/vfsub.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c
index f07554901ec0..77682fba944f 100644
--- a/fs/aufs/vfsub.c
+++ b/fs/aufs/vfsub.c
@@ -165,14 +165,21 @@ int vfsub_kern_path(const char *name, unsigned int flags, 
struct path *path)
        return err;
 }
 
-struct dentry *vfsub_lookup_one_len_unlocked(const char *name,
-                                            struct dentry *parent, int len)
+struct dentry *__vfsub_lookup_one_len(const char *name, struct dentry *parent,
+                                     int len, bool locked)
 {
        struct path path = {
                .mnt = NULL
        };
 
-       path.dentry = lookup_one_len_unlocked(name, parent, len);
+       if (locked) {
+               /* VFS checks it too, but by WARN_ON_ONCE() */
+               IMustLock(d_inode(parent));
+               path.dentry = lookup_one_len(name, parent, len);
+       } else {
+               path.dentry = lookup_one_len_unlocked(name, parent, len);
+       }
+
        if (IS_ERR(path.dentry))
                goto out;
        if (d_is_positive(path.dentry))
@@ -183,25 +190,16 @@ out:
        return path.dentry;
 }
 
+struct dentry *vfsub_lookup_one_len_unlocked(const char *name,
+                                            struct dentry *parent, int len)
+{
+       return __vfsub_lookup_one_len(name, parent, len, false);
+}
+
 struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent,
                                    int len)
 {
-       struct path path = {
-               .mnt = NULL
-       };
-
-       /* VFS checks it too, but by WARN_ON_ONCE() */
-       IMustLock(d_inode(parent));
-
-       path.dentry = lookup_one_len(name, parent, len);
-       if (IS_ERR(path.dentry))
-               goto out;
-       if (d_is_positive(path.dentry))
-               vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/
-
-out:
-       AuTraceErrPtr(path.dentry);
-       return path.dentry;
+       return __vfsub_lookup_one_len(name, parent, len, true);
 }
 
 void vfsub_call_lkup_one(void *args)
-- 
2.30.2


Reply via email to