Hi Miklos, On 2015/5/19 17:03, Miklos Szeredi wrote: > > --- > fs/overlayfs/copy_up.c | 3 +++ > fs/overlayfs/dir.c | 9 +++++++++ > fs/overlayfs/super.c | 12 +++++++++--- > 3 files changed, 21 insertions(+), 3 deletions(-) > > --- a/fs/overlayfs/copy_up.c > +++ b/fs/overlayfs/copy_up.c > @@ -300,6 +300,9 @@ int ovl_copy_up_one(struct dentry *paren > struct cred *override_cred; > char *link = NULL; > > + if (WARN_ON(!workdir)) > + return -EROFS; > + When will this condition occur? > ovl_path_upper(parent, &parentpath); > upperdir = parentpath.dentry; > > --- a/fs/overlayfs/dir.c > +++ b/fs/overlayfs/dir.c > @@ -222,6 +222,9 @@ static struct dentry *ovl_clear_empty(st > struct kstat stat; > int err; > > + if (WARN_ON(!workdir)) > + return ERR_PTR(-EROFS); > + > err = ovl_lock_rename_workdir(workdir, upperdir); > if (err) > goto out; > @@ -322,6 +325,9 @@ static int ovl_create_over_whiteout(stru > struct dentry *newdentry; > int err; > > + if (WARN_ON(!workdir)) > + return -EROFS; > + > err = ovl_lock_rename_workdir(workdir, upperdir); > if (err) > goto out; > @@ -506,6 +512,9 @@ static int ovl_remove_and_whiteout(struc > struct dentry *opaquedir = NULL; > int err; > > + if (WARN_ON(!workdir)) > + return -EROFS; > + > if (is_dir) { > opaquedir = ovl_check_empty_and_clear(dentry); > err = PTR_ERR(opaquedir); > --- a/fs/overlayfs/super.c > +++ b/fs/overlayfs/super.c > @@ -740,9 +740,15 @@ static int ovl_fill_super(struct super_b > ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry); > err = PTR_ERR(ufs->workdir); > if (IS_ERR(ufs->workdir)) { > - pr_err("overlayfs: failed to create directory %s/%s\n", > - ufs->config.workdir, OVL_WORKDIR_NAME); > - goto out_put_lower_mnt; > + if (err == -ENOSPC || err == -EROFS) { Since upper fs should not be R/O after commit 71cbad7e694ee81, could the return value here be -EROFS? > + pr_warning("overlayfs: failed to work directory (%s), mounting read-only\n", err == ENOSPC ? "ENOSPC" : "EROFS"); > + sb->s_flags |= MS_RDONLY; > + ufs->workdir = NULL; > + } else { > + pr_err("overlayfs: failed to create directory %s/%s\n", > + ufs->config.workdir, OVL_WORKDIR_NAME); > + goto out_put_lower_mnt; > + } > } > > /* > -- > To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > > . > -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html