static inline int ovl_do_rmdir(struct ovl_fs *ofs,
                               struct inode *dir, struct dentry *dentry)
 {
-       int err = vfs_rmdir(&init_user_ns, dir, dentry);
+       int err = vfs_rmdir(ovl_upper_mnt_userns(ofs), dir, dentry);
 
        pr_debug("rmdir(%pd2) = %i\n", dentry, err);
        return err;
 static inline int ovl_do_unlink(struct ovl_fs *ofs, struct inode *dir,
                                struct dentry *dentry)
 {
-       int err = vfs_unlink(&init_user_ns, dir, dentry, NULL);
+       int err = vfs_unlink(ovl_upper_mnt_userns(ofs), dir, dentry, NULL);
 
        pr_debug("unlink(%pd2) = %i\n", dentry, err);
        return err;
 static inline int ovl_do_link(struct ovl_fs *ofs, struct dentry *old_dentry,
                              struct inode *dir, struct dentry *new_dentry)
 {
-       int err = vfs_link(old_dentry, &init_user_ns, dir, new_dentry, NULL);
+       int err = vfs_link(old_dentry, ovl_upper_mnt_userns(ofs), dir, new_dentry, NULL);
 
        pr_debug("link(%pd2, %pd2) = %i\n", old_dentry, new_dentry, err);
        return err;
                                struct inode *dir, struct dentry *dentry,
                                umode_t mode)
 {
-       int err = vfs_create(&init_user_ns, dir, dentry, mode, true);
+       int err = vfs_create(ovl_upper_mnt_userns(ofs), dir, dentry, mode, true);
 
        pr_debug("create(%pd2, 0%o) = %i\n", dentry, mode, err);
        return err;
                               struct inode *dir, struct dentry *dentry,
                               umode_t mode)
 {
-       int err = vfs_mkdir(&init_user_ns, dir, dentry, mode);
+       int err = vfs_mkdir(ovl_upper_mnt_userns(ofs), dir, dentry, mode);
        pr_debug("mkdir(%pd2, 0%o) = %i\n", dentry, mode, err);
        return err;
 }
                               struct inode *dir, struct dentry *dentry,
                               umode_t mode, dev_t dev)
 {
-       int err = vfs_mknod(&init_user_ns, dir, dentry, mode, dev);
+       int err = vfs_mknod(ovl_upper_mnt_userns(ofs), dir, dentry, mode, dev);
 
        pr_debug("mknod(%pd2, 0%o, 0%o) = %i\n", dentry, mode, dev, err);
        return err;
                                 struct inode *dir, struct dentry *dentry,
                                 const char *oldname)
 {
-       int err = vfs_symlink(&init_user_ns, dir, dentry, oldname);
+       int err = vfs_symlink(ovl_upper_mnt_userns(ofs), dir, dentry, oldname);
 
        pr_debug("symlink(\"%s\", %pd2) = %i\n", oldname, dentry, err);
        return err;
 {
        int err;
        struct renamedata rd = {
-               .old_mnt_userns = &init_user_ns,
+               .old_mnt_userns = ovl_upper_mnt_userns(ofs),
                .old_dir        = olddir,
                .old_dentry     = olddentry,
-               .new_mnt_userns = &init_user_ns,
+               .new_mnt_userns = ovl_upper_mnt_userns(ofs),
                .new_dir        = newdir,
                .new_dentry     = newdentry,
                .flags          = flags,
 static inline int ovl_do_whiteout(struct ovl_fs *ofs,
                                  struct inode *dir, struct dentry *dentry)
 {
-       int err = vfs_whiteout(&init_user_ns, dir, dentry);
+       int err = vfs_whiteout(ovl_upper_mnt_userns(ofs), dir, dentry);
        pr_debug("whiteout(%pd2) = %i\n", dentry, err);
        return err;
 }
 static inline struct dentry *ovl_do_tmpfile(struct ovl_fs *ofs,
                                            struct dentry *dentry, umode_t mode)
 {
-       struct dentry *ret = vfs_tmpfile(&init_user_ns, dentry, mode, 0);
+       struct dentry *ret = vfs_tmpfile(ovl_upper_mnt_userns(ofs), dentry, mode, 0);
        int err = PTR_ERR_OR_ZERO(ret);
 
        pr_debug("tmpfile(%pd2, 0%o) = %i\n", dentry, mode, err);