pr_debug("waiting for mount name=%pd\n", path->dentry);
                status = autofs4_wait(sbi, path, NFY_MOUNT);
                pr_debug("mount wait done status=%d\n", status);
+               ino->last_used = jiffies;
        }
-       ino->last_used = jiffies;
        return status;
 }
 
         */
        if (autofs_type_indirect(sbi->type) && d_unhashed(dentry)) {
                struct dentry *parent = dentry->d_parent;
-               struct autofs_info *ino;
                struct dentry *new;
 
                new = d_lookup(parent, &dentry->d_name);
                if (!new)
                        return NULL;
-               ino = autofs4_dentry_ino(new);
-               ino->last_used = jiffies;
-               dput(path->dentry);
-               path->dentry = new;
+               if (new == dentry)
+                       dput(new);
+               else {
+                       struct autofs_info *ino;
+
+                       ino = autofs4_dentry_ino(new);
+                       ino->last_used = jiffies;
+                       dput(path->dentry);
+                       path->dentry = new;
+               }
        }
        return path->dentry;
 }