X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Fpatches-3.18%2F090-overlayfs-fallback-to-readonly-when-full.patch;h=340a4126b810d8115c213e5c480e9bbb30ca0bd8;hb=5603e83223a4bd5b3c97e7168fa69b3a3e215671;hp=53d9e516fcde507c104f54895da79c33fa4f63a5;hpb=aeeedded345be475ab18e83ca89a3334fb07bae9;p=openwrt.git diff --git a/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch b/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch index 53d9e516fc..340a4126b8 100644 --- a/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch +++ b/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch @@ -45,53 +45,53 @@ Miklos --- 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; - + struct cred *override_cred; + char *link = NULL; + + if (WARN_ON(!workdir)) + return -EROFS; + - ovl_path_upper(parent, &parentpath); - upperdir = parentpath.dentry; - + 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; - + struct kstat stat; + int err; + + if (WARN_ON(!workdir)) + return ERR_PTR(-EROFS); + - err = ovl_lock_rename_workdir(workdir, upperdir); - if (err) - goto out; + 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; - + struct dentry *newdentry; + int err; + + if (WARN_ON(!workdir)) + return -EROFS; + - err = ovl_lock_rename_workdir(workdir, upperdir); - if (err) - goto out; + 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; - + 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); + 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)) { + 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; @@ -104,6 +104,6 @@ Miklos + ufs->config.workdir, OVL_WORKDIR_NAME); + goto out_put_lower_mnt; + } - } - - /* + } + + /*