diff options
Diffstat (limited to 'fs/overlayfs/super.c')
| -rw-r--r-- | fs/overlayfs/super.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 5f0d1993e6e3..bf8537c7f455 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c | |||
| @@ -529,7 +529,7 @@ static int ovl_remount(struct super_block *sb, int *flags, char *data) | |||
| 529 | { | 529 | { |
| 530 | struct ovl_fs *ufs = sb->s_fs_info; | 530 | struct ovl_fs *ufs = sb->s_fs_info; |
| 531 | 531 | ||
| 532 | if (!(*flags & MS_RDONLY) && !ufs->upper_mnt) | 532 | if (!(*flags & MS_RDONLY) && (!ufs->upper_mnt || !ufs->workdir)) |
| 533 | return -EROFS; | 533 | return -EROFS; |
| 534 | 534 | ||
| 535 | return 0; | 535 | return 0; |
| @@ -925,9 +925,10 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) | |||
| 925 | ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry); | 925 | ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry); |
| 926 | err = PTR_ERR(ufs->workdir); | 926 | err = PTR_ERR(ufs->workdir); |
| 927 | if (IS_ERR(ufs->workdir)) { | 927 | if (IS_ERR(ufs->workdir)) { |
| 928 | pr_err("overlayfs: failed to create directory %s/%s\n", | 928 | pr_warn("overlayfs: failed to create directory %s/%s (errno: %i); mounting read-only\n", |
| 929 | ufs->config.workdir, OVL_WORKDIR_NAME); | 929 | ufs->config.workdir, OVL_WORKDIR_NAME, -err); |
| 930 | goto out_put_upper_mnt; | 930 | sb->s_flags |= MS_RDONLY; |
| 931 | ufs->workdir = NULL; | ||
| 931 | } | 932 | } |
| 932 | } | 933 | } |
| 933 | 934 | ||
| @@ -997,7 +998,6 @@ out_put_lower_mnt: | |||
| 997 | kfree(ufs->lower_mnt); | 998 | kfree(ufs->lower_mnt); |
| 998 | out_put_workdir: | 999 | out_put_workdir: |
| 999 | dput(ufs->workdir); | 1000 | dput(ufs->workdir); |
| 1000 | out_put_upper_mnt: | ||
| 1001 | mntput(ufs->upper_mnt); | 1001 | mntput(ufs->upper_mnt); |
| 1002 | out_put_lowerpath: | 1002 | out_put_lowerpath: |
| 1003 | for (i = 0; i < numlower; i++) | 1003 | for (i = 0; i < numlower; i++) |
