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: 37116
This commit is contained in:
Jonas Gorski 2013-07-01 13:21:06 +00:00
parent 7e19bb1854
commit 96f8c15a36
22 changed files with 120 additions and 107 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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());
}

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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);
}

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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:

View File

@ -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,
};

View File

@ -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.

View File

@ -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

View File

@ -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);
}

View File

@ -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