mirror of https://github.com/hak5/openwrt-owl.git
kernel: update linux 3.10 to 3.10 final
3.10 final is out, so refresh patches and add md5sum. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 37116owl
parent
7e19bb1854
commit
96f8c15a36
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue