mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-21 14:21:27 +00:00
Add an upstream patch and adjust board config
This commit is contained in:
parent
459a6f5895
commit
32807a7e3a
2 changed files with 135 additions and 2 deletions
|
@ -13,5 +13,4 @@ BUILD_DESKTOP="no"
|
|||
#
|
||||
KERNEL_TARGET="default,next,dev"
|
||||
CLI_TARGET="stretch,bionic:next"
|
||||
#
|
||||
CLI_BETA_TARGET="stretch,bionic:dev"
|
||||
CLI_BETA_TARGET=""
|
||||
|
|
134
patch/kernel/mvebu-default/04-patch-4.4.152-153.patch
Normal file
134
patch/kernel/mvebu-default/04-patch-4.4.152-153.patch
Normal file
|
@ -0,0 +1,134 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 523b0d4354fb..208a813be615 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 152
|
||||
+SUBLEVEL = 153
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
|
||||
index effc12767cbf..d8d19fe99e45 100644
|
||||
--- a/arch/x86/include/asm/mmu_context.h
|
||||
+++ b/arch/x86/include/asm/mmu_context.h
|
||||
@@ -109,8 +109,7 @@ static inline int init_new_context(struct task_struct *tsk,
|
||||
struct mm_struct *mm)
|
||||
{
|
||||
mm->context.ctx_id = atomic64_inc_return(&last_mm_ctx_id);
|
||||
- init_new_context_ldt(tsk, mm);
|
||||
- return 0;
|
||||
+ return init_new_context_ldt(tsk, mm);
|
||||
}
|
||||
static inline void destroy_context(struct mm_struct *mm)
|
||||
{
|
||||
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
|
||||
index 27610c2d1821..1007fa80f5a6 100644
|
||||
--- a/arch/x86/mm/pageattr.c
|
||||
+++ b/arch/x86/mm/pageattr.c
|
||||
@@ -1006,7 +1006,7 @@ static int populate_pmd(struct cpa_data *cpa,
|
||||
|
||||
pmd = pmd_offset(pud, start);
|
||||
|
||||
- set_pmd(pmd, pmd_mkhuge(pfn_pmd(cpa->pfn,
|
||||
+ set_pmd(pmd, pmd_mkhuge(pfn_pmd(cpa->pfn >> PAGE_SHIFT,
|
||||
canon_pgprot(pmd_pgprot))));
|
||||
|
||||
start += PMD_SIZE;
|
||||
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
|
||||
index c319d5eaabcf..28316b292b8a 100644
|
||||
--- a/fs/overlayfs/overlayfs.h
|
||||
+++ b/fs/overlayfs/overlayfs.h
|
||||
@@ -163,6 +163,7 @@ extern const struct file_operations ovl_dir_operations;
|
||||
int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list);
|
||||
void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list);
|
||||
void ovl_cache_free(struct list_head *list);
|
||||
+int ovl_check_d_type_supported(struct path *realpath);
|
||||
|
||||
/* inode.c */
|
||||
int ovl_setattr(struct dentry *dentry, struct iattr *attr);
|
||||
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
|
||||
index 299a6e1d6b77..0c59955c4653 100644
|
||||
--- a/fs/overlayfs/readdir.c
|
||||
+++ b/fs/overlayfs/readdir.c
|
||||
@@ -43,6 +43,7 @@ struct ovl_readdir_data {
|
||||
struct ovl_cache_entry *first_maybe_whiteout;
|
||||
int count;
|
||||
int err;
|
||||
+ bool d_type_supported;
|
||||
};
|
||||
|
||||
struct ovl_dir_file {
|
||||
@@ -581,3 +582,39 @@ void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list)
|
||||
}
|
||||
mutex_unlock(&upper->d_inode->i_mutex);
|
||||
}
|
||||
+
|
||||
+static int ovl_check_d_type(struct dir_context *ctx, const char *name,
|
||||
+ int namelen, loff_t offset, u64 ino,
|
||||
+ unsigned int d_type)
|
||||
+{
|
||||
+ struct ovl_readdir_data *rdd =
|
||||
+ container_of(ctx, struct ovl_readdir_data, ctx);
|
||||
+
|
||||
+ /* Even if d_type is not supported, DT_DIR is returned for . and .. */
|
||||
+ if (!strncmp(name, ".", namelen) || !strncmp(name, "..", namelen))
|
||||
+ return 0;
|
||||
+
|
||||
+ if (d_type != DT_UNKNOWN)
|
||||
+ rdd->d_type_supported = true;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Returns 1 if d_type is supported, 0 not supported/unknown. Negative values
|
||||
+ * if error is encountered.
|
||||
+ */
|
||||
+int ovl_check_d_type_supported(struct path *realpath)
|
||||
+{
|
||||
+ int err;
|
||||
+ struct ovl_readdir_data rdd = {
|
||||
+ .ctx.actor = ovl_check_d_type,
|
||||
+ .d_type_supported = false,
|
||||
+ };
|
||||
+
|
||||
+ err = ovl_dir_read(realpath, &rdd);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return rdd.d_type_supported;
|
||||
+}
|
||||
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
|
||||
index d70208c0de84..0035cb80ecd1 100644
|
||||
--- a/fs/overlayfs/super.c
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -1054,6 +1054,26 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||
sb->s_flags |= MS_RDONLY;
|
||||
ufs->workdir = NULL;
|
||||
}
|
||||
+
|
||||
+ /*
|
||||
+ * Upper should support d_type, else whiteouts are visible.
|
||||
+ * Given workdir and upper are on same fs, we can do
|
||||
+ * iterate_dir() on workdir. This check requires successful
|
||||
+ * creation of workdir in previous step.
|
||||
+ */
|
||||
+ if (ufs->workdir) {
|
||||
+ err = ovl_check_d_type_supported(&workpath);
|
||||
+ if (err < 0)
|
||||
+ goto out_put_workdir;
|
||||
+
|
||||
+ /*
|
||||
+ * We allowed this configuration and don't want to
|
||||
+ * break users over kernel upgrade. So warn instead
|
||||
+ * of erroring out.
|
||||
+ */
|
||||
+ if (!err)
|
||||
+ pr_warn("overlayfs: upper fs needs to support d_type.\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
err = -ENOMEM;
|
Loading…
Add table
Reference in a new issue