summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/kernel-version.mk3
-rw-r--r--target/linux/generic/config-3.101
-rw-r--r--target/linux/generic/patches-3.10/100-overlayfs.patch109
-rw-r--r--target/linux/generic/patches-3.10/101-overlayfs_path_ref.patch10
-rw-r--r--target/linux/generic/patches-3.10/203-kallsyms_uncompressed.patch2
-rw-r--r--target/linux/generic/patches-3.10/220-gc_sections.patch4
-rw-r--r--target/linux/generic/patches-3.10/260-crypto_test_dependencies.patch4
-rw-r--r--target/linux/generic/patches-3.10/540-crypto-xz-decompression-support.patch2
-rw-r--r--target/linux/generic/patches-3.10/630-packet_socket_type.patch4
-rw-r--r--target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch4
-rw-r--r--target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch2
-rw-r--r--target/linux/generic/patches-3.10/655-increase_skb_pad.patch2
-rw-r--r--target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch2
-rw-r--r--target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch50
-rw-r--r--target/linux/generic/patches-3.10/700-swconfig.patch2
-rw-r--r--target/linux/generic/patches-3.10/721-phy_packets.patch8
-rw-r--r--target/linux/generic/patches-3.10/902-debloat_proc.patch6
-rw-r--r--target/linux/generic/patches-3.10/903-debloat_direct_io.patch2
-rw-r--r--target/linux/generic/patches-3.10/930-crashlog.patch2
-rw-r--r--target/linux/generic/patches-3.10/940-ocf_kbuild_integration.patch2
-rw-r--r--target/linux/generic/patches-3.10/950-vm_exports.patch4
-rw-r--r--target/linux/imx6/Makefile2
22 files changed, 120 insertions, 107 deletions
diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 1911176..340cb4d 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -17,6 +17,9 @@ endif
ifeq ($(LINUX_VERSION),3.9.8)
LINUX_KERNEL_MD5SUM:=04d74575ef1c484ad00be61f32bb4557
endif
+ifeq ($(LINUX_VERSION),3.10)
+ LINUX_KERNEL_MD5SUM:=4f25cd5bec5f8d5a7d935b3f2ccb8481
+endif
# disable the md5sum check for unknown kernel versions
LINUX_KERNEL_MD5SUM?=x
diff --git a/target/linux/generic/config-3.10 b/target/linux/generic/config-3.10
index 1e40bdb..7c65537 100644
--- a/target/linux/generic/config-3.10
+++ b/target/linux/generic/config-3.10
@@ -32,6 +32,7 @@ CONFIG_AIO=y
# CONFIG_ALCHEMY_GPIO_INDIRECT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_ALTERA_STAPL is not set
+# CONFIG_ALX is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_AMD_PHY is not set
# CONFIG_AMIGA_PARTITION is not set
diff --git a/target/linux/generic/patches-3.10/100-overlayfs.patch b/target/linux/generic/patches-3.10/100-overlayfs.patch
index e8896aa..5d1c5f6 100644
--- a/target/linux/generic/patches-3.10/100-overlayfs.patch
+++ b/target/linux/generic/patches-3.10/100-overlayfs.patch
@@ -243,7 +243,7 @@
will be called when part or all of the page is to be removed
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -6009,6 +6009,13 @@ F: drivers/scsi/osd/
+@@ -6019,6 +6019,13 @@ F: drivers/scsi/osd/
F: include/scsi/osd_*
F: fs/exofs/
@@ -287,7 +287,7 @@
+
+ rc = -EINVAL;
+ if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
-+ printk(KERN_ERR "eCryptfs: maximum fs stacking depth exceeded\n");
++ pr_err("eCryptfs: maximum fs stacking depth exceeded\n");
+ goto out_free;
+ }
@@ -307,6 +307,19 @@
* namespace.c
*/
extern int copy_mount_options(const void __user *, unsigned long *);
+@@ -132,12 +127,6 @@ extern struct dentry *__d_alloc(struct s
+ extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *);
+
+ /*
+- * splice.c
+- */
+-extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
+- loff_t *opos, size_t len, unsigned int flags);
+-
+-/*
+ * pipe.c
+ */
+ extern const struct file_operations pipefifo_fops;
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -402,6 +402,7 @@ int __inode_permission(struct inode *ino
@@ -335,10 +348,19 @@
goto out;
--- a/fs/namespace.c
+++ b/fs/namespace.c
-@@ -1442,6 +1442,24 @@ void drop_collected_mounts(struct vfsmou
+@@ -1442,6 +1442,33 @@ void drop_collected_mounts(struct vfsmou
namespace_unlock();
}
++/**
++ * clone_private_mount - create a private clone of a path
++ *
++ * This creates a new vfsmount, which will be the clone of @path. The new will
++ * not be attached anywhere in the namespace and will be private (i.e. changes
++ * to the originating mount won't be propagated into this).
++ *
++ * Release with mntput().
++ */
+struct vfsmount *clone_private_mount(struct path *path)
+{
+ struct mount *old_mnt = real_mount(path->mnt);
@@ -350,8 +372,8 @@
+ down_read(&namespace_sem);
+ new_mnt = clone_mnt(old_mnt, path->dentry, CL_PRIVATE);
+ up_read(&namespace_sem);
-+ if (!new_mnt)
-+ return ERR_PTR(-ENOMEM);
++ if (IS_ERR(new_mnt))
++ return ERR_CAST(new_mnt);
+
+ return &new_mnt->mnt;
+}
@@ -401,11 +423,17 @@
int lookup_flags = 0;
--- /dev/null
+++ b/fs/overlayfs/Kconfig
-@@ -0,0 +1,4 @@
+@@ -0,0 +1,10 @@
+config OVERLAYFS_FS
+ tristate "Overlay filesystem support"
+ help
-+ Add support for overlay filesystem.
++ An overlay filesystem combines two filesystems - an 'upper' filesystem
++ and a 'lower' filesystem. When a name exists in both filesystems, the
++ object in the 'upper' filesystem is visible while the object in the
++ 'lower' filesystem is either hidden or, in the case of directories,
++ merged with the 'upper' object.
++
++ For more information see Documentation/filesystems/overlayfs.txt
--- /dev/null
+++ b/fs/overlayfs/Makefile
@@ -0,0 +1,7 @@
@@ -418,7 +446,7 @@
+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
--- /dev/null
+++ b/fs/overlayfs/copy_up.c
-@@ -0,0 +1,385 @@
+@@ -0,0 +1,387 @@
+/*
+ *
+ * Copyright (C) 2011 Novell Inc.
@@ -494,6 +522,8 @@
+{
+ struct file *old_file;
+ struct file *new_file;
++ loff_t old_pos = 0;
++ loff_t new_pos = 0;
+ int error = 0;
+
+ if (len == 0)
@@ -511,7 +541,6 @@
+
+ /* FIXME: copy up sparse files efficiently */
+ while (len) {
-+ loff_t offset = new_file->f_pos;
+ size_t this_len = OVL_COPY_UP_CHUNK_SIZE;
+ long bytes;
+
@@ -523,8 +552,9 @@
+ break;
+ }
+
-+ bytes = do_splice_direct(old_file, &offset, new_file, this_len,
-+ SPLICE_F_MOVE);
++ bytes = do_splice_direct(old_file, &old_pos,
++ new_file, &new_pos,
++ this_len, SPLICE_F_MOVE);
+ if (bytes <= 0) {
+ error = bytes;
+ break;
@@ -806,7 +836,7 @@
+}
--- /dev/null
+++ b/fs/overlayfs/dir.c
-@@ -0,0 +1,604 @@
+@@ -0,0 +1,605 @@
+/*
+ *
+ * Copyright (C) 2011 Novell Inc.
@@ -881,7 +911,7 @@
+ * There's no way to recover from failure to whiteout.
+ * What should we do? Log a big fat error and... ?
+ */
-+ printk(KERN_ERR "overlayfs: ERROR - failed to whiteout '%s'\n",
++ pr_err("overlayfs: ERROR - failed to whiteout '%s'\n",
+ dentry->d_name.name);
+ }
+
@@ -1254,8 +1284,10 @@
+ }
+ newinode = ovl_new_inode(old->d_sb, newdentry->d_inode->i_mode,
+ new->d_fsdata);
-+ if (!newinode)
++ if (!newinode) {
++ err = -ENOMEM;
+ goto link_fail;
++ }
+ ovl_copyattr(upperdir->d_inode, newinode);
+
+ ovl_dentry_version_inc(new->d_parent);
@@ -1272,7 +1304,6 @@
+ mutex_unlock(&upperdir->d_inode->i_mutex);
+out:
+ return err;
-+
+}
+
+static int ovl_rename(struct inode *olddir, struct dentry *old,
@@ -2218,7 +2249,7 @@
+ loff_t res;
+ struct ovl_dir_file *od = file->private_data;
+
-+ mutex_lock(&file->f_dentry->d_inode->i_mutex);
++ mutex_lock(&file_inode(file)->i_mutex);
+ if (!file->f_pos)
+ ovl_dir_reset(file);
+
@@ -2248,7 +2279,7 @@
+ res = offset;
+ }
+out_unlock:
-+ mutex_unlock(&file->f_dentry->d_inode->i_mutex);
++ mutex_unlock(&file_inode(file)->i_mutex);
+
+ return res;
+}
@@ -2394,7 +2425,7 @@
+
+ dentry = lookup_one_len(p->name, upperdir, p->len);
+ if (IS_ERR(dentry)) {
-+ printk(KERN_WARNING
++ pr_warn(
+ "overlayfs: failed to lookup whiteout %.*s: %li\n",
+ p->len, p->name, PTR_ERR(dentry));
+ continue;
@@ -2402,7 +2433,7 @@
+ ret = vfs_unlink(upperdir->d_inode, dentry);
+ dput(dentry);
+ if (ret)
-+ printk(KERN_WARNING
++ pr_warn(
+ "overlayfs: failed to unlink whiteout %.*s: %i\n",
+ p->len, p->name, ret);
+ }
@@ -2818,7 +2849,6 @@
+
+struct file *ovl_path_open(struct path *path, int flags)
+{
-+ path_get(path);
+ return dentry_open(path, flags, current_cred());
+}
+
@@ -2906,15 +2936,15 @@
+};
+
+enum {
-+ Opt_lowerdir,
-+ Opt_upperdir,
-+ Opt_err,
++ OPT_LOWERDIR,
++ OPT_UPPERDIR,
++ OPT_ERR,
+};
+
+static const match_table_t ovl_tokens = {
-+ {Opt_lowerdir, "lowerdir=%s"},
-+ {Opt_upperdir, "upperdir=%s"},
-+ {Opt_err, NULL}
++ {OPT_LOWERDIR, "lowerdir=%s"},
++ {OPT_UPPERDIR, "upperdir=%s"},
++ {OPT_ERR, NULL}
+};
+
+static int ovl_parse_opt(char *opt, struct ovl_config *config)
@@ -2933,14 +2963,14 @@
+
+ token = match_token(p, ovl_tokens, args);
+ switch (token) {
-+ case Opt_upperdir:
++ case OPT_UPPERDIR:
+ kfree(config->upperdir);
+ config->upperdir = match_strdup(&args[0]);
+ if (!config->upperdir)
+ return -ENOMEM;
+ break;
+
-+ case Opt_lowerdir:
++ case OPT_LOWERDIR:
+ kfree(config->lowerdir);
+ config->lowerdir = match_strdup(&args[0]);
+ if (!config->lowerdir)
@@ -2976,7 +3006,7 @@
+
+ err = -EINVAL;
+ if (!ufs->config.upperdir || !ufs->config.lowerdir) {
-+ printk(KERN_ERR "overlayfs: missing upperdir or lowerdir\n");
++ pr_err("overlayfs: missing upperdir or lowerdir\n");
+ goto out_free_config;
+ }
+
@@ -2999,7 +3029,7 @@
+
+ err = vfs_statfs(&lowerpath, &statfs);
+ if (err) {
-+ printk(KERN_ERR "overlayfs: statfs failed on lowerpath\n");
++ pr_err("overlayfs: statfs failed on lowerpath\n");
+ goto out_put_lowerpath;
+ }
+ ufs->lower_namelen = statfs.f_namelen;
@@ -3009,7 +3039,7 @@
+
+ err = -EINVAL;
+ if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
-+ printk(KERN_ERR "overlayfs: maximum fs stacking depth exceeded\n");
++ pr_err("overlayfs: maximum fs stacking depth exceeded\n");
+ goto out_put_lowerpath;
+ }
+
@@ -3017,14 +3047,14 @@
+ ufs->upper_mnt = clone_private_mount(&upperpath);
+ err = PTR_ERR(ufs->upper_mnt);
+ if (IS_ERR(ufs->upper_mnt)) {
-+ printk(KERN_ERR "overlayfs: failed to clone upperpath\n");
++ pr_err("overlayfs: failed to clone upperpath\n");
+ goto out_put_lowerpath;
+ }
+
+ ufs->lower_mnt = clone_private_mount(&lowerpath);
+ err = PTR_ERR(ufs->lower_mnt);
+ if (IS_ERR(ufs->lower_mnt)) {
-+ printk(KERN_ERR "overlayfs: failed to clone lowerpath\n");
++ pr_err("overlayfs: failed to clone lowerpath\n");
+ goto out_put_upper_mnt;
+ }
+
@@ -3103,6 +3133,7 @@
+ .mount = ovl_mount,
+ .kill_sb = kill_anon_super,
+};
++MODULE_ALIAS_FS("overlayfs");
+
+static int __init ovl_init(void)
+{
@@ -3118,7 +3149,7 @@
+module_exit(ovl_exit);
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -1311,6 +1311,7 @@ long do_splice_direct(struct file *in, l
+@@ -1313,6 +1313,7 @@ long do_splice_direct(struct file *in, l
return ret;
}
@@ -3177,6 +3208,16 @@
extern int generic_permission(struct inode *, int);
static inline bool execute_ok(struct inode *inode)
+@@ -2414,6 +2428,9 @@ extern ssize_t generic_file_splice_write
+ struct file *, loff_t *, size_t, unsigned int);
+ extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
+ struct file *out, loff_t *, size_t len, unsigned int flags);
++extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
++ loff_t *opos, size_t len, unsigned int flags);
++
+
+ extern void
+ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -68,6 +68,9 @@ extern void mnt_pin(struct vfsmount *mnt
diff --git a/target/linux/generic/patches-3.10/101-overlayfs_path_ref.patch b/target/linux/generic/patches-3.10/101-overlayfs_path_ref.patch
deleted file mode 100644
index 0891ddf..0000000
--- a/target/linux/generic/patches-3.10/101-overlayfs_path_ref.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/fs/overlayfs/super.c
-+++ b/fs/overlayfs/super.c
-@@ -385,7 +385,6 @@ struct dentry *ovl_lookup(struct inode *
-
- struct file *ovl_path_open(struct path *path, int flags)
- {
-- path_get(path);
- return dentry_open(path, flags, current_cred());
- }
-
diff --git a/target/linux/generic/patches-3.10/203-kallsyms_uncompressed.patch b/target/linux/generic/patches-3.10/203-kallsyms_uncompressed.patch
index 5d04f6d..ac9aa54 100644
--- a/target/linux/generic/patches-3.10/203-kallsyms_uncompressed.patch
+++ b/target/linux/generic/patches-3.10/203-kallsyms_uncompressed.patch
@@ -51,7 +51,7 @@
} else if (argc != 1)
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1244,6 +1244,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
+@@ -1245,6 +1245,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW
the unaligned access emulation.
see arch/parisc/kernel/unaligned.c for reference
diff --git a/target/linux/generic/patches-3.10/220-gc_sections.patch b/target/linux/generic/patches-3.10/220-gc_sections.patch
index 3489709..f541deb 100644
--- a/target/linux/generic/patches-3.10/220-gc_sections.patch
+++ b/target/linux/generic/patches-3.10/220-gc_sections.patch
@@ -506,11 +506,11 @@
.init.data : {
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
-@@ -122,6 +122,7 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
+@@ -123,6 +123,7 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
ORIG_CFLAGS := $(KBUILD_CFLAGS)
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
endif
+KBUILD_CFLAGS_KERNEL := $(patsubst -f%-sections,,$(KBUILD_CFLAGS_KERNEL))
ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
- asflags-y := -Wa,-march=all -DZIMAGE
+ asflags-y := -DZIMAGE
diff --git a/target/linux/generic/patches-3.10/260-crypto_test_dependencies.patch b/target/linux/generic/patches-3.10/260-crypto_test_dependencies.patch
index 8cc15e4..a28f693 100644
--- a/target/linux/generic/patches-3.10/260-crypto_test_dependencies.patch
+++ b/target/linux/generic/patches-3.10/260-crypto_test_dependencies.patch
@@ -17,7 +17,7 @@
tristate "Userspace cryptographic algorithm configuration"
--- a/crypto/algboss.c
+++ b/crypto/algboss.c
-@@ -247,6 +247,9 @@ static int cryptomgr_schedule_test(struc
+@@ -248,6 +248,9 @@ static int cryptomgr_schedule_test(struc
type = alg->cra_flags;
/* This piece of crap needs to disappear into per-type test hooks. */
@@ -27,7 +27,7 @@
if ((!((type ^ CRYPTO_ALG_TYPE_BLKCIPHER) &
CRYPTO_ALG_TYPE_BLKCIPHER_MASK) && !(type & CRYPTO_ALG_GENIV) &&
((alg->cra_flags & CRYPTO_ALG_TYPE_MASK) ==
-@@ -255,6 +258,7 @@ static int cryptomgr_schedule_test(struc
+@@ -256,6 +259,7 @@ static int cryptomgr_schedule_test(struc
(!((type ^ CRYPTO_ALG_TYPE_AEAD) & CRYPTO_ALG_TYPE_MASK) &&
alg->cra_type == &crypto_nivaead_type && alg->cra_aead.ivsize))
type |= CRYPTO_ALG_TESTED;
diff --git a/target/linux/generic/patches-3.10/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-3.10/540-crypto-xz-decompression-support.patch
index eddd8e5..c1384b3 100644
--- a/target/linux/generic/patches-3.10/540-crypto-xz-decompression-support.patch
+++ b/target/linux/generic/patches-3.10/540-crypto-xz-decompression-support.patch
@@ -1,6 +1,6 @@
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
-@@ -1359,6 +1359,13 @@ config CRYPTO_842
+@@ -1361,6 +1361,13 @@ config CRYPTO_842
help
This is the 842 algorithm.
diff --git a/target/linux/generic/patches-3.10/630-packet_socket_type.patch b/target/linux/generic/patches-3.10/630-packet_socket_type.patch
index 7f43aff..e7f05de 100644
--- a/target/linux/generic/patches-3.10/630-packet_socket_type.patch
+++ b/target/linux/generic/patches-3.10/630-packet_socket_type.patch
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3227,6 +3230,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3226,6 +3229,16 @@ packet_setsockopt(struct socket *sock, i
po->tp_tx_has_off = !!val;
return 0;
}
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
default:
return -ENOPROTOOPT;
}
-@@ -3276,6 +3289,13 @@ static int packet_getsockopt(struct sock
+@@ -3275,6 +3288,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch b/target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch
index 02a76c3..3d3c625 100644
--- a/target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch
+++ b/target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch
@@ -49,7 +49,7 @@
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
unsigned char banned_flags)
-@@ -5133,6 +5132,9 @@ int __init addrconf_init(void)
+@@ -5137,6 +5136,9 @@ int __init addrconf_init(void)
ipv6_addr_label_rtnl_register();
@@ -59,7 +59,7 @@
return 0;
errout:
rtnl_af_unregister(&inet6_ops);
-@@ -5151,6 +5153,9 @@ void addrconf_cleanup(void)
+@@ -5155,6 +5157,9 @@ void addrconf_cleanup(void)
struct net_device *dev;
int i;
diff --git a/target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch b/target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch
index 8204bba..bc56b71 100644
--- a/target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch
+++ b/target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch
@@ -58,7 +58,7 @@
default:
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
-@@ -782,7 +782,7 @@ static void __br_multicast_send_query(st
+@@ -783,7 +783,7 @@ static void __br_multicast_send_query(st
if (port) {
__skb_push(skb, sizeof(struct ethhdr));
skb->dev = port->dev;
diff --git a/target/linux/generic/patches-3.10/655-increase_skb_pad.patch b/target/linux/generic/patches-3.10/655-increase_skb_pad.patch
index d109371..b1a0fb7 100644
--- a/target/linux/generic/patches-3.10/655-increase_skb_pad.patch
+++ b/target/linux/generic/patches-3.10/655-increase_skb_pad.patch
@@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -1847,7 +1847,7 @@ static inline int pskb_network_may_pull(
+@@ -1848,7 +1848,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
diff --git a/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch
index 402148d..59cfa6a 100644
--- a/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch
+++ b/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch
@@ -14,7 +14,7 @@ when needed.
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -1892,6 +1892,24 @@ static inline void pskb_trim_unique(stru
+@@ -1893,6 +1893,24 @@ static inline void pskb_trim_unique(stru
BUG_ON(err);
}
diff --git a/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 505bc2b..72cff92 100644
--- a/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -1,5 +1,3 @@
-diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h
-index 005e2c2..a6a1df4 100644
--- a/include/net/netns/ipv6.h
+++ b/include/net/netns/ipv6.h
@@ -55,6 +55,7 @@ struct netns_ipv6 {
@@ -10,8 +8,6 @@ index 005e2c2..a6a1df4 100644
struct rt6_info *ip6_blk_hole_entry;
struct fib6_table *fib6_local_tbl;
struct fib_rules_ops *fib6_rules_ops;
-diff --git a/include/uapi/linux/fib_rules.h b/include/uapi/linux/fib_rules.h
-index 51da65b..1429852 100644
--- a/include/uapi/linux/fib_rules.h
+++ b/include/uapi/linux/fib_rules.h
@@ -64,6 +64,10 @@ enum {
@@ -25,8 +21,6 @@ index 51da65b..1429852 100644
__FR_ACT_MAX,
};
-diff --git a/include/uapi/linux/icmpv6.h b/include/uapi/linux/icmpv6.h
-index e0133c7..dabfa1a 100644
--- a/include/uapi/linux/icmpv6.h
+++ b/include/uapi/linux/icmpv6.h
@@ -115,6 +115,7 @@ struct icmp6hdr {
@@ -37,8 +31,6 @@ index e0133c7..dabfa1a 100644
/*
* Codes for Time Exceeded
-diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
-index 7a2144e..8f643f1 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -203,6 +203,7 @@ enum {
@@ -49,11 +41,9 @@ index 7a2144e..8f643f1 100644
__RTN_MAX
};
-diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
-index 26aa65d..2f66341 100644
--- a/net/ipv4/fib_rules.c
+++ b/net/ipv4/fib_rules.c
-@@ -84,6 +84,10 @@ static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp,
+@@ -84,6 +84,10 @@ static int fib4_rule_action(struct fib_r
err = -EACCES;
goto errout;
@@ -64,11 +54,9 @@ index 26aa65d..2f66341 100644
case FR_ACT_BLACKHOLE:
default:
err = -EINVAL;
-diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
-index 8f6cb7a..dbae75d 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
-@@ -138,6 +138,10 @@ const struct fib_prop fib_props[RTN_MAX + 1] = {
+@@ -138,6 +138,10 @@ const struct fib_prop fib_props[RTN_MAX
.error = -EINVAL,
.scope = RT_SCOPE_NOWHERE,
},
@@ -79,11 +67,9 @@ index 8f6cb7a..dbae75d 100644
};
static void rt_fibinfo_free(struct rtable __rcu **rtp)
-diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
-index 49616fe..e2845bd 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -2334,6 +2334,7 @@ static const char *const rtn_type_names[__RTN_MAX] = {
+@@ -2334,6 +2334,7 @@ static const char *const rtn_type_names[
[RTN_THROW] = "THROW",
[RTN_NAT] = "NAT",
[RTN_XRESOLVE] = "XRESOLVE",
@@ -91,11 +77,9 @@ index 49616fe..e2845bd 100644
};
static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
-diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
-index df97f0a..2bd33cc 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
-@@ -181,6 +181,7 @@ static int ipmr_rule_action(struct fib_rule *rule, struct flowi *flp,
+@@ -181,6 +181,7 @@ static int ipmr_rule_action(struct fib_r
case FR_ACT_UNREACHABLE:
return -ENETUNREACH;
case FR_ACT_PROHIBIT:
@@ -103,11 +87,9 @@ index df97f0a..2bd33cc 100644
return -EACCES;
case FR_ACT_BLACKHOLE:
default:
-diff --git a/net/ipv6/fib6_rules.c b/net/ipv6/fib6_rules.c
-index 2e1a432..c4413b2 100644
--- a/net/ipv6/fib6_rules.c
+++ b/net/ipv6/fib6_rules.c
-@@ -69,6 +69,9 @@ static int fib6_rule_action(struct fib_rule *rule, struct flowi *flp,
+@@ -69,6 +69,9 @@ static int fib6_rule_action(struct fib_r
case FR_ACT_PROHIBIT:
rt = net->ipv6.ip6_prohibit_entry;
goto discard_pkt;
@@ -117,11 +99,9 @@ index 2e1a432..c4413b2 100644
}
table = fib6_get_table(net, rule->table);
-diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
-index 583e8d4..1e524da 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
-@@ -166,6 +166,8 @@ static int ip6mr_rule_action(struct fib_rule *rule, struct flowi *flp,
+@@ -166,6 +166,8 @@ static int ip6mr_rule_action(struct fib_
return -ENETUNREACH;
case FR_ACT_PROHIBIT:
return -EACCES;
@@ -130,11 +110,9 @@ index 583e8d4..1e524da 100644
case FR_ACT_BLACKHOLE:
default:
return -EINVAL;
-diff --git a/net/ipv6/route.c b/net/ipv6/route.c
-index 2b87418..864f5fe 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
-@@ -245,6 +245,24 @@ static const struct rt6_info ip6_prohibit_entry_template = {
+@@ -245,6 +245,24 @@ static const struct rt6_info ip6_prohibi
.rt6i_ref = ATOMIC_INIT(1),
};
@@ -159,7 +137,7 @@ index 2b87418..864f5fe 100644
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
-@@ -1459,6 +1477,9 @@ int ip6_route_add(struct fib6_config *cfg)
+@@ -1459,6 +1477,9 @@ int ip6_route_add(struct fib6_config *cf
case RTN_THROW:
rt->dst.error = -EAGAIN;
break;
@@ -169,7 +147,7 @@ index 2b87418..864f5fe 100644
default:
rt->dst.error = -ENETUNREACH;
break;
-@@ -2035,6 +2056,17 @@ static int ip6_pkt_prohibit_out(struct sk_buff *skb)
+@@ -2035,6 +2056,17 @@ static int ip6_pkt_prohibit_out(struct s
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@@ -187,7 +165,7 @@ index 2b87418..864f5fe 100644
#endif
/*
-@@ -2240,7 +2272,8 @@ static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,
+@@ -2240,7 +2272,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@@ -197,7 +175,7 @@ index 2b87418..864f5fe 100644
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -2442,6 +2475,9 @@ static int rt6_fill_node(struct net *net,
+@@ -2442,6 +2475,9 @@ static int rt6_fill_node(struct net *net
case -EACCES:
rtm->rtm_type = RTN_PROHIBIT;
break;
@@ -207,7 +185,7 @@ index 2b87418..864f5fe 100644
case -EAGAIN:
rtm->rtm_type = RTN_THROW;
break;
-@@ -2692,6 +2728,8 @@ static int ip6_route_dev_notify(struct notifier_block *this,
+@@ -2692,6 +2728,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -216,7 +194,7 @@ index 2b87418..864f5fe 100644
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -2952,6 +2990,17 @@ static int __net_init ip6_route_net_init(struct net *net)
+@@ -2952,6 +2990,17 @@ static int __net_init ip6_route_net_init
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
@@ -243,7 +221,7 @@ index 2b87418..864f5fe 100644
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -2987,6 +3038,7 @@ static void __net_exit ip6_route_net_exit(struct net *net)
+@@ -2987,6 +3038,7 @@ static void __net_exit ip6_route_net_exi
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
diff --git a/target/linux/generic/patches-3.10/700-swconfig.patch b/target/linux/generic/patches-3.10/700-swconfig.patch
index 3b71723..d7eb1b0 100644
--- a/target/linux/generic/patches-3.10/700-swconfig.patch
+++ b/target/linux/generic/patches-3.10/700-swconfig.patch
@@ -29,7 +29,7 @@
obj-$(CONFIG_CICADA_PHY) += cicada.o
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
-@@ -360,6 +360,7 @@ header-y += stddef.h
+@@ -361,6 +361,7 @@ header-y += stddef.h
header-y += string.h
header-y += suspend_ioctls.h
header-y += swab.h
diff --git a/target/linux/generic/patches-3.10/721-phy_packets.patch b/target/linux/generic/patches-3.10/721-phy_packets.patch
index e9b5996..8692007 100644
--- a/target/linux/generic/patches-3.10/721-phy_packets.patch
+++ b/target/linux/generic/patches-3.10/721-phy_packets.patch
@@ -34,7 +34,7 @@
#define IF_GET_IFACE 0x0001 /* for querying only */
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -1877,6 +1877,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -1878,6 +1878,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
@@ -45,7 +45,7 @@
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2001,16 +2005,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2002,16 +2006,6 @@ static inline struct sk_buff *dev_alloc_
}
@@ -79,7 +79,7 @@
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -2542,9 +2542,19 @@ int dev_hard_start_xmit(struct sk_buff *
+@@ -2576,9 +2576,19 @@ int dev_hard_start_xmit(struct sk_buff *
if (!list_empty(&ptype_all))
dev_queue_xmit_nit(skb, dev);
@@ -102,7 +102,7 @@
if (rc == NETDEV_TX_OK)
txq_trans_update(txq);
return rc;
-@@ -2560,9 +2570,19 @@ gso:
+@@ -2594,9 +2604,19 @@ gso:
if (!list_empty(&ptype_all))
dev_queue_xmit_nit(nskb, dev);
diff --git a/target/linux/generic/patches-3.10/902-debloat_proc.patch b/target/linux/generic/patches-3.10/902-debloat_proc.patch
index 526132b..479c52d 100644
--- a/target/linux/generic/patches-3.10/902-debloat_proc.patch
+++ b/target/linux/generic/patches-3.10/902-debloat_proc.patch
@@ -173,7 +173,7 @@
goto err;
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -2851,6 +2851,8 @@ static __net_initdata struct pernet_oper
+@@ -2838,6 +2838,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
@@ -184,7 +184,7 @@
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -2589,10 +2589,12 @@ static const struct file_operations fib_
+@@ -2590,10 +2590,12 @@ static const struct file_operations fib_
int __net_init fib_proc_init(struct net *net)
{
@@ -199,7 +199,7 @@
&fib_triestat_fops))
goto out2;
-@@ -2602,17 +2604,21 @@ int __net_init fib_proc_init(struct net
+@@ -2603,17 +2605,21 @@ int __net_init fib_proc_init(struct net
return 0;
out3:
diff --git a/target/linux/generic/patches-3.10/903-debloat_direct_io.patch b/target/linux/generic/patches-3.10/903-debloat_direct_io.patch
index a16eff6..4f3545d 100644
--- a/target/linux/generic/patches-3.10/903-debloat_direct_io.patch
+++ b/target/linux/generic/patches-3.10/903-debloat_direct_io.patch
@@ -26,7 +26,7 @@
endif
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -2467,12 +2467,26 @@ enum {
+@@ -2468,12 +2468,26 @@ enum {
DIO_SKIP_HOLES = 0x02,
};
diff --git a/target/linux/generic/patches-3.10/930-crashlog.patch b/target/linux/generic/patches-3.10/930-crashlog.patch
index dea0ea3..22778c0 100644
--- a/target/linux/generic/patches-3.10/930-crashlog.patch
+++ b/target/linux/generic/patches-3.10/930-crashlog.patch
@@ -20,7 +20,7 @@
+#endif
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1185,6 +1185,10 @@ config RELAY
+@@ -1186,6 +1186,10 @@ config RELAY
If unsure, say N.
diff --git a/target/linux/generic/patches-3.10/940-ocf_kbuild_integration.patch b/target/linux/generic/patches-3.10/940-ocf_kbuild_integration.patch
index 475a408..97d5bcc 100644
--- a/target/linux/generic/patches-3.10/940-ocf_kbuild_integration.patch
+++ b/target/linux/generic/patches-3.10/940-ocf_kbuild_integration.patch
@@ -1,6 +1,6 @@
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
-@@ -1404,3 +1404,6 @@ source "drivers/crypto/Kconfig"
+@@ -1406,3 +1406,6 @@ source "drivers/crypto/Kconfig"
source crypto/asymmetric_keys/Kconfig
endif # if CRYPTO
diff --git a/target/linux/generic/patches-3.10/950-vm_exports.patch b/target/linux/generic/patches-3.10/950-vm_exports.patch
index 1159b88..993d384 100644
--- a/target/linux/generic/patches-3.10/950-vm_exports.patch
+++ b/target/linux/generic/patches-3.10/950-vm_exports.patch
@@ -52,7 +52,7 @@
* When we die, we re-parent all our children, and try to:
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3694,6 +3694,7 @@ int can_nice(const struct task_struct *p
+@@ -3707,6 +3707,7 @@ int can_nice(const struct task_struct *p
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
capable(CAP_SYS_NICE));
}
@@ -62,7 +62,7 @@
--- a/mm/memory.c
+++ b/mm/memory.c
-@@ -1413,6 +1413,7 @@ void zap_page_range(struct vm_area_struc
+@@ -1404,6 +1404,7 @@ void zap_page_range(struct vm_area_struc
mmu_notifier_invalidate_range_end(mm, start, end);
tlb_finish_mmu(&tlb, start, end);
}
diff --git a/target/linux/imx6/Makefile b/target/linux/imx6/Makefile
index e866c0b..38a0016 100644
--- a/target/linux/imx6/Makefile
+++ b/target/linux/imx6/Makefile
@@ -13,7 +13,7 @@ FEATURES:=audio display gpio pcie usb usbgadget squashfs targz
CFLAGS:=-Os -pipe -mtune=cortex-a9 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp
MAINTAINER:=Luka Perkov <luka@openwrt.org>
-LINUX_VERSION:=3.10-rc3
+LINUX_VERSION:=3.10
include $(INCLUDE_DIR)/target.mk