kernel: update 3.10 to 3.10.12
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 38000
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
Patch by: Nathan Zimmer <nzimmer@sgi.com>
|
||||
|
||||
Fixes a regression in the commit
|
||||
"timer_list: Convert timer list to be a proper seq_file" which causes
|
||||
/proc/timer_list to return an infinite amount of data
|
||||
|
||||
|
||||
--- a/kernel/time/timer_list.c
|
||||
+++ b/kernel/time/timer_list.c
|
||||
@@ -305,24 +305,26 @@ static void *timer_list_start(struct seq
|
||||
if (!*offset) {
|
||||
iter->cpu = -1;
|
||||
iter->now = ktime_to_ns(ktime_get());
|
||||
- } else if (iter->cpu >= nr_cpu_ids) {
|
||||
+ } else {
|
||||
+ iter->cpu = cpumask_next(iter->cpu, cpu_online_mask);
|
||||
+ if (iter->cpu >= nr_cpu_ids) {
|
||||
#ifdef CONFIG_GENERIC_CLOCKEVENTS
|
||||
- if (!iter->second_pass) {
|
||||
- iter->cpu = -1;
|
||||
- iter->second_pass = true;
|
||||
- } else
|
||||
- return NULL;
|
||||
+ if (!iter->second_pass) {
|
||||
+ iter->cpu = -1;
|
||||
+ iter->second_pass = true;
|
||||
+ } else
|
||||
+ return NULL;
|
||||
#else
|
||||
- return NULL;
|
||||
+ return NULL;
|
||||
#endif
|
||||
+ }
|
||||
}
|
||||
+
|
||||
return iter;
|
||||
}
|
||||
|
||||
static void *timer_list_next(struct seq_file *file, void *v, loff_t *offset)
|
||||
{
|
||||
- struct timer_list_iter *iter = file->private;
|
||||
- iter->cpu = cpumask_next(iter->cpu, cpu_online_mask);
|
||||
++*offset;
|
||||
return timer_list_start(file, offset);
|
||||
}
|
||||
@@ -31,7 +31,7 @@
|
||||
bool
|
||||
--- a/include/linux/regmap.h
|
||||
+++ b/include/linux/regmap.h
|
||||
@@ -46,7 +46,7 @@ struct reg_default {
|
||||
@@ -47,7 +47,7 @@ struct reg_default {
|
||||
unsigned int def;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* Our partition linked list */
|
||||
static LIST_HEAD(mtd_partitions);
|
||||
static DEFINE_MUTEX(mtd_partitions_mutex);
|
||||
@@ -232,13 +234,60 @@ static int part_erase(struct mtd_info *m
|
||||
@@ -231,13 +233,60 @@ static int part_erase(struct mtd_info *m
|
||||
struct mtd_part *part = PART(mtd);
|
||||
int ret;
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -246,7 +295,25 @@ void mtd_erase_callback(struct erase_inf
|
||||
@@ -245,7 +294,25 @@ void mtd_erase_callback(struct erase_inf
|
||||
{
|
||||
if (instr->mtd->_erase == part_erase) {
|
||||
struct mtd_part *part = PART(instr->mtd);
|
||||
@@ -96,7 +96,7 @@
|
||||
if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
|
||||
instr->fail_addr -= part->offset;
|
||||
instr->addr -= part->offset;
|
||||
@@ -506,18 +573,24 @@ static struct mtd_part *allocate_partiti
|
||||
@@ -505,18 +572,24 @@ static struct mtd_part *allocate_partiti
|
||||
if ((slave->mtd.flags & MTD_WRITEABLE) &&
|
||||
mtd_mod_by_eb(slave->offset, &slave->mtd)) {
|
||||
/* Doesn't start on a boundary of major erase size */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/mtdpart.c
|
||||
+++ b/drivers/mtd/mtdpart.c
|
||||
@@ -332,7 +332,14 @@ static int part_lock(struct mtd_info *mt
|
||||
@@ -331,7 +331,14 @@ static int part_lock(struct mtd_info *mt
|
||||
static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
|
||||
{
|
||||
struct mtd_part *part = PART(mtd);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/Kconfig
|
||||
+++ b/drivers/mtd/Kconfig
|
||||
@@ -172,6 +172,22 @@ config MTD_BCM47XX_PARTS
|
||||
@@ -176,6 +176,22 @@ config MTD_BCM47XX_PARTS
|
||||
This provides partitions parser for devices based on BCM47xx
|
||||
boards.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/include/uapi/linux/pkt_sched.h
|
||||
+++ b/include/uapi/linux/pkt_sched.h
|
||||
@@ -214,6 +214,33 @@ struct tc_sfq_xstats {
|
||||
@@ -222,6 +222,33 @@ struct tc_sfq_xstats {
|
||||
__s32 allot;
|
||||
};
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3275,6 +3288,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3277,6 +3290,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
|
||||
--- a/net/ipv6/addrconf.c
|
||||
+++ b/net/ipv6/addrconf.c
|
||||
@@ -1321,7 +1321,7 @@ out:
|
||||
@@ -1319,7 +1319,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
const struct in6_addr *daddr, unsigned int prefs,
|
||||
struct in6_addr *saddr)
|
||||
{
|
||||
@@ -1446,7 +1446,6 @@ try_nextdev:
|
||||
@@ -1444,7 +1444,6 @@ try_nextdev:
|
||||
in6_ifa_put(hiscore->ifa);
|
||||
return 0;
|
||||
}
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
|
||||
unsigned char banned_flags)
|
||||
@@ -5145,6 +5144,9 @@ int __init addrconf_init(void)
|
||||
@@ -5143,6 +5142,9 @@ int __init addrconf_init(void)
|
||||
|
||||
ipv6_addr_label_rtnl_register();
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
return 0;
|
||||
errout:
|
||||
rtnl_af_unregister(&inet6_ops);
|
||||
@@ -5163,6 +5165,9 @@ void addrconf_cleanup(void)
|
||||
@@ -5161,6 +5163,9 @@ void addrconf_cleanup(void)
|
||||
struct net_device *dev;
|
||||
int i;
|
||||
|
||||
|
||||
@@ -21,16 +21,6 @@
|
||||
__FR_ACT_MAX,
|
||||
};
|
||||
|
||||
--- a/include/uapi/linux/icmpv6.h
|
||||
+++ b/include/uapi/linux/icmpv6.h
|
||||
@@ -115,6 +115,7 @@ struct icmp6hdr {
|
||||
#define ICMPV6_NOT_NEIGHBOUR 2
|
||||
#define ICMPV6_ADDR_UNREACH 3
|
||||
#define ICMPV6_PORT_UNREACH 4
|
||||
+#define ICMPV6_FAILED_POLICY 5
|
||||
|
||||
/*
|
||||
* Codes for Time Exceeded
|
||||
--- a/include/uapi/linux/rtnetlink.h
|
||||
+++ b/include/uapi/linux/rtnetlink.h
|
||||
@@ -203,6 +203,7 @@ enum {
|
||||
@@ -69,7 +59,7 @@
|
||||
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -2334,6 +2334,7 @@ static const char *const rtn_type_names[
|
||||
@@ -2331,6 +2331,7 @@ static const char *const rtn_type_names[
|
||||
[RTN_THROW] = "THROW",
|
||||
[RTN_NAT] = "NAT",
|
||||
[RTN_XRESOLVE] = "XRESOLVE",
|
||||
@@ -153,13 +143,13 @@
|
||||
|
||||
+static int ip6_pkt_failed_policy(struct sk_buff *skb)
|
||||
+{
|
||||
+ return ip6_pkt_drop(skb, ICMPV6_FAILED_POLICY, IPSTATS_MIB_INNOROUTES);
|
||||
+ return ip6_pkt_drop(skb, ICMPV6_POLICY_FAIL, IPSTATS_MIB_INNOROUTES);
|
||||
+}
|
||||
+
|
||||
+static int ip6_pkt_failed_policy_out(struct sk_buff *skb)
|
||||
+{
|
||||
+ skb->dev = skb_dst(skb)->dev;
|
||||
+ return ip6_pkt_drop(skb, ICMPV6_FAILED_POLICY, IPSTATS_MIB_OUTNOROUTES);
|
||||
+ return ip6_pkt_drop(skb, ICMPV6_POLICY_FAIL, IPSTATS_MIB_OUTNOROUTES);
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
if (!root_irq_dir)
|
||||
--- a/kernel/time/timer_list.c
|
||||
+++ b/kernel/time/timer_list.c
|
||||
@@ -357,6 +357,8 @@ static int __init init_timer_list_procfs
|
||||
@@ -362,6 +362,8 @@ static int __init init_timer_list_procfs
|
||||
{
|
||||
struct proc_dir_entry *pe;
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
--- a/net/ipv4/fib_trie.c
|
||||
+++ b/net/ipv4/fib_trie.c
|
||||
@@ -2590,10 +2590,12 @@ static const struct file_operations fib_
|
||||
@@ -2587,10 +2587,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;
|
||||
|
||||
@@ -2603,17 +2605,21 @@ int __net_init fib_proc_init(struct net
|
||||
@@ -2600,17 +2602,21 @@ int __net_init fib_proc_init(struct net
|
||||
return 0;
|
||||
|
||||
out3:
|
||||
|
||||
Reference in New Issue
Block a user