[OpenWrt-Devel] [PATCH] kernel: update 4.1 to 4.1.4

Daniel Golle daniel at makrotopia.org
Tue Aug 4 18:53:10 EDT 2015


Changelog:
 * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.4

Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 include/kernel-version.mk                          |   4 +-
 ...79-add-gpio-func-register-for-QCA955x-SoC.patch |   2 +-
 .../813-MIPS-ath79-add-ap147-support.patch         |   6 +-
 .../140-overlayfs_readdir_locking_fix.patch        | 148 ---------------------
 .../generic/patches-4.1/834-ledtrig-libata.patch   |  10 +-
 5 files changed, 11 insertions(+), 159 deletions(-)
 delete mode 100644 target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index e03590f..9f68716 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -4,11 +4,11 @@ LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .19
 LINUX_VERSION-4.0 = .9
-LINUX_VERSION-4.1 = .3
+LINUX_VERSION-4.1 = .4
 
 LINUX_KERNEL_MD5SUM-3.18.19 = a143f9421bd8413752609d0d771c2955
 LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
-LINUX_KERNEL_MD5SUM-4.1.3 = 96c2c77b1c54ba01cfd8fc2d13fbf828
+LINUX_KERNEL_MD5SUM-4.1.4 = 32cb4dd9f14d37bf71bafa6ed368f769
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch b/target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch
index 24ce7d8..23425dc 100644
--- a/target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch
+++ b/target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/gpio.c
 +++ b/arch/mips/ath79/gpio.c
-@@ -185,15 +185,27 @@ void __init ath79_gpio_output_select(uns
+@@ -221,15 +221,27 @@ void __init ath79_gpio_output_select(uns
  {
  	void __iomem *base = ath79_gpio_base;
  	unsigned long flags;
diff --git a/target/linux/ar71xx/patches-4.1/813-MIPS-ath79-add-ap147-support.patch b/target/linux/ar71xx/patches-4.1/813-MIPS-ath79-add-ap147-support.patch
index 2ca9a1e..ed0d984 100644
--- a/target/linux/ar71xx/patches-4.1/813-MIPS-ath79-add-ap147-support.patch
+++ b/target/linux/ar71xx/patches-4.1/813-MIPS-ath79-add-ap147-support.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/Kconfig
 +++ b/arch/mips/ath79/Kconfig
-@@ -118,6 +118,19 @@ config ATH79_MACH_AP143
+@@ -138,6 +138,19 @@ config ATH79_MACH_AP143
  	  Say 'Y' here if you want your kernel to support the
  	  Atheros AP143 reference board.
  
@@ -22,7 +22,7 @@
  	select SOC_AR913X
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -47,6 +47,7 @@ obj-$(CONFIG_ATH79_MACH_AP121)		+= mach-
+@@ -49,6 +49,7 @@ obj-$(CONFIG_ATH79_MACH_AP121)		+= mach-
  obj-$(CONFIG_ATH79_MACH_AP132)		+= mach-ap132.o
  obj-$(CONFIG_ATH79_MACH_AP136)		+= mach-ap136.o
  obj-$(CONFIG_ATH79_MACH_AP143)		+= mach-ap143.o
@@ -32,7 +32,7 @@
  obj-$(CONFIG_ATH79_MACH_AP96)		+= mach-ap96.o
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -29,6 +29,7 @@ enum ath79_mach_type {
+@@ -31,6 +31,7 @@ enum ath79_mach_type {
  	ATH79_MACH_AP136_010,		/* Atheros AP136-010 reference board */
  	ATH79_MACH_AP136_020,		/* Atheros AP136-020 reference board */
  	ATH79_MACH_AP143,		/* Atheros AP143 reference board */
diff --git a/target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch b/target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch
deleted file mode 100644
index 67dff98..0000000
--- a/target/linux/generic/patches-4.1/140-overlayfs_readdir_locking_fix.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-Patch by: Miklos Szeredi <miklos at szeredi.hu>
-
-Some filesystems (e.g. jffs2) lock the same resources for both readdir
-and lookup, leading to a deadlock in ovl_cache_entry_new, which is called
-from the filldir, and calls lookup itself.
-
---- a/fs/overlayfs/readdir.c
-+++ b/fs/overlayfs/readdir.c
-@@ -23,6 +23,7 @@ struct ovl_cache_entry {
- 	u64 ino;
- 	struct list_head l_node;
- 	struct rb_node node;
-+	struct ovl_cache_entry *next_maybe_whiteout;
- 	bool is_whiteout;
- 	char name[];
- };
-@@ -39,7 +40,7 @@ struct ovl_readdir_data {
- 	struct rb_root root;
- 	struct list_head *list;
- 	struct list_head middle;
--	struct dentry *dir;
-+	struct ovl_cache_entry *first_maybe_whiteout;
- 	int count;
- 	int err;
- };
-@@ -79,7 +80,7 @@ static struct ovl_cache_entry *ovl_cache
- 	return NULL;
- }
- 
--static struct ovl_cache_entry *ovl_cache_entry_new(struct dentry *dir,
-+static struct ovl_cache_entry *ovl_cache_entry_new(struct ovl_readdir_data *rdd,
- 						   const char *name, int len,
- 						   u64 ino, unsigned int d_type)
- {
-@@ -98,29 +99,8 @@ static struct ovl_cache_entry *ovl_cache
- 	p->is_whiteout = false;
- 
- 	if (d_type == DT_CHR) {
--		struct dentry *dentry;
--		const struct cred *old_cred;
--		struct cred *override_cred;
--
--		override_cred = prepare_creds();
--		if (!override_cred) {
--			kfree(p);
--			return NULL;
--		}
--
--		/*
--		 * CAP_DAC_OVERRIDE for lookup
--		 */
--		cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
--		old_cred = override_creds(override_cred);
--
--		dentry = lookup_one_len(name, dir, len);
--		if (!IS_ERR(dentry)) {
--			p->is_whiteout = ovl_is_whiteout(dentry);
--			dput(dentry);
--		}
--		revert_creds(old_cred);
--		put_cred(override_cred);
-+		p->next_maybe_whiteout = rdd->first_maybe_whiteout;
-+		rdd->first_maybe_whiteout = p;
- 	}
- 	return p;
- }
-@@ -148,7 +128,7 @@ static int ovl_cache_entry_add_rb(struct
- 			return 0;
- 	}
- 
--	p = ovl_cache_entry_new(rdd->dir, name, len, ino, d_type);
-+	p = ovl_cache_entry_new(rdd, name, len, ino, d_type);
- 	if (p == NULL)
- 		return -ENOMEM;
- 
-@@ -169,7 +149,7 @@ static int ovl_fill_lower(struct ovl_rea
- 	if (p) {
- 		list_move_tail(&p->l_node, &rdd->middle);
- 	} else {
--		p = ovl_cache_entry_new(rdd->dir, name, namelen, ino, d_type);
-+		p = ovl_cache_entry_new(rdd, name, namelen, ino, d_type);
- 		if (p == NULL)
- 			rdd->err = -ENOMEM;
- 		else
-@@ -219,6 +199,43 @@ static int ovl_fill_merge(struct dir_con
- 		return ovl_fill_lower(rdd, name, namelen, offset, ino, d_type);
- }
- 
-+static int ovl_check_whiteouts(struct dentry *dir, struct ovl_readdir_data *rdd)
-+{
-+	int err = 0;
-+
-+	mutex_lock(&dir->d_inode->i_mutex);
-+	while (rdd->first_maybe_whiteout) {
-+		struct dentry *dentry;
-+		const struct cred *old_cred;
-+		struct cred *override_cred;
-+		struct ovl_cache_entry *p = rdd->first_maybe_whiteout;
-+
-+		rdd->first_maybe_whiteout = p->next_maybe_whiteout;
-+
-+		override_cred = prepare_creds();
-+		if (!override_cred) {
-+			err = -ENOMEM;
-+			break;
-+		}
-+		/*
-+		 * CAP_DAC_OVERRIDE for lookup
-+		 */
-+		cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
-+		old_cred = override_creds(override_cred);
-+
-+		dentry = lookup_one_len(p->name, dir, p->len);
-+		if (!IS_ERR(dentry)) {
-+			p->is_whiteout = ovl_is_whiteout(dentry);
-+			dput(dentry);
-+		}
-+		revert_creds(old_cred);
-+		put_cred(override_cred);
-+	}
-+	mutex_unlock(&dir->d_inode->i_mutex);
-+
-+	return err;
-+}
-+
- static inline int ovl_dir_read(struct path *realpath,
- 			       struct ovl_readdir_data *rdd)
- {
-@@ -229,7 +246,7 @@ static inline int ovl_dir_read(struct pa
- 	if (IS_ERR(realfile))
- 		return PTR_ERR(realfile);
- 
--	rdd->dir = realpath->dentry;
-+	rdd->first_maybe_whiteout = NULL;
- 	rdd->ctx.pos = 0;
- 	do {
- 		rdd->count = 0;
-@@ -238,6 +255,10 @@ static inline int ovl_dir_read(struct pa
- 		if (err >= 0)
- 			err = rdd->err;
- 	} while (!err && rdd->count);
-+
-+	if (!err && rdd->first_maybe_whiteout)
-+		err = ovl_check_whiteouts(realpath->dentry, rdd);
-+
- 	fput(realfile);
- 
- 	return err;
diff --git a/target/linux/generic/patches-4.1/834-ledtrig-libata.patch b/target/linux/generic/patches-4.1/834-ledtrig-libata.patch
index 2a0fb07..b794c46 100644
--- a/target/linux/generic/patches-4.1/834-ledtrig-libata.patch
+++ b/target/linux/generic/patches-4.1/834-ledtrig-libata.patch
@@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -4774,6 +4787,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4789,6 +4802,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	qc = __ata_qc_from_tag(ap, tag);
  	qc->tag = tag;
-@@ -5671,6 +5687,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5686,6 +5702,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5692,6 +5711,12 @@ static void ata_host_release(struct devi
+@@ -5707,6 +5726,12 @@ static void ata_host_release(struct devi
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6138,7 +6163,23 @@ int ata_host_register(struct ata_host *h
+@@ -6153,7 +6178,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
@@ -138,7 +138,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  /*
   * Define if arch has non-standard setup.  This is a _PCI_ standard
-@@ -873,6 +876,12 @@ struct ata_port {
+@@ -876,6 +879,12 @@ struct ata_port {
  #ifdef CONFIG_ATA_ACPI
  	struct ata_acpi_gtm	__acpi_init_gtm; /* use ata_acpi_init_gtm() */
  #endif
-- 
2.5.0
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list