ovl: mount read-only if workdir can't be created
[cascardo/linux.git] / fs / overlayfs / dir.c
index 2578a0c..692ceda 100644 (file)
@@ -222,6 +222,9 @@ static struct dentry *ovl_clear_empty(struct dentry *dentry,
        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(struct dentry *dentry, struct inode *inode,
        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(struct dentry *dentry, bool is_dir)
        struct dentry *opaquedir = NULL;
        int err;
 
+       if (WARN_ON(!workdir))
+               return -EROFS;
+
        if (is_dir) {
                if (OVL_TYPE_MERGE_OR_LOWER(ovl_path_type(dentry))) {
                        opaquedir = ovl_check_empty_and_clear(dentry);