kernel: bump to 3.14.35, 3.18.9, 3.19.1 and 4.0-rc4
also refresh generic patches for 3.14, 3.18, 3.19 and 4.0 targets might need a minor refresh as well, however, it looks like everything still applies cleanly with occasional small offsets. Signed-off-by: Daniel Golle <daniel@makrotopia.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44876 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
5abe49b74e
commit
5d4be21553
|
@ -5,18 +5,18 @@ LINUX_RELEASE?=1
|
||||||
LINUX_VERSION-3.8 = .13
|
LINUX_VERSION-3.8 = .13
|
||||||
LINUX_VERSION-3.10 = .58
|
LINUX_VERSION-3.10 = .58
|
||||||
LINUX_VERSION-3.13 = .7
|
LINUX_VERSION-3.13 = .7
|
||||||
LINUX_VERSION-3.14 = .34
|
LINUX_VERSION-3.14 = .35
|
||||||
LINUX_VERSION-3.18 = .8
|
LINUX_VERSION-3.18 = .9
|
||||||
LINUX_VERSION-3.19 =
|
LINUX_VERSION-3.19 = .1
|
||||||
LINUX_VERSION-4.0 = -rc1
|
LINUX_VERSION-4.0 = -rc4
|
||||||
|
|
||||||
LINUX_KERNEL_MD5SUM-3.8.13 = 2af19d06cd47ec459519159cdd10542d
|
LINUX_KERNEL_MD5SUM-3.8.13 = 2af19d06cd47ec459519159cdd10542d
|
||||||
LINUX_KERNEL_MD5SUM-3.10.58 = 3ff3478b6351143cef22d4b81cf48b01
|
LINUX_KERNEL_MD5SUM-3.10.58 = 3ff3478b6351143cef22d4b81cf48b01
|
||||||
LINUX_KERNEL_MD5SUM-3.13.7 = 370adced5e5c1cb1d0d621c2dae2723f
|
LINUX_KERNEL_MD5SUM-3.13.7 = 370adced5e5c1cb1d0d621c2dae2723f
|
||||||
LINUX_KERNEL_MD5SUM-3.14.34 = 4061154fb66b24a8a1982a8adbe94335
|
LINUX_KERNEL_MD5SUM-3.14.35 = e5e92c40d14bc8ae9a8701db4e1cbb27
|
||||||
LINUX_KERNEL_MD5SUM-3.18.8 = 94673d5f4521a6077eb6fe0ab2633b35
|
LINUX_KERNEL_MD5SUM-3.18.9 = 44cd16ada5eb03589f696f083cd2323b
|
||||||
LINUX_KERNEL_MD5SUM-3.19 = d3fc8316d4d4d04b65cbc2d70799e763
|
LINUX_KERNEL_MD5SUM-3.19.1 = 90e9cdcaecf587acba4e94904f5f8606
|
||||||
LINUX_KERNEL_MD5SUM-4.0-rc1 = 547b340dca94d358b68d2658822080fa
|
LINUX_KERNEL_MD5SUM-4.0-rc4 = 0e37c076159538ff882f190d87fe9798
|
||||||
|
|
||||||
ifdef KERNEL_PATCHVER
|
ifdef KERNEL_PATCHVER
|
||||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -556,6 +562,17 @@ static int jffs2_scan_eraseblock (struct
|
@@ -561,6 +567,17 @@ full_scan:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IP_FIB_TRIE_STATS */
|
#endif /* CONFIG_IP_FIB_TRIE_STATS */
|
||||||
|
|
||||||
@@ -2191,7 +2219,7 @@ static int fib_triestat_seq_show(struct
|
@@ -2191,7 +2219,7 @@ static int fib_triestat_seq_show(struct
|
||||||
trie_collect_stats(t, &stat);
|
trie_collect_stats(t, &stat);
|
||||||
trie_show_stats(seq, &stat);
|
trie_show_stats(seq, &stat);
|
||||||
#ifdef CONFIG_IP_FIB_TRIE_STATS
|
#ifdef CONFIG_IP_FIB_TRIE_STATS
|
||||||
|
|
|
@ -410,7 +410,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
pr_debug("entering trie_leaf_remove(%p)\n", l);
|
pr_debug("entering trie_leaf_remove(%p)\n", l);
|
||||||
|
|
||||||
@@ -2375,7 +2347,7 @@ static int fib_trie_seq_show(struct seq_
|
@@ -2374,7 +2346,7 @@ static int fib_trie_seq_show(struct seq_
|
||||||
|
|
||||||
if (IS_TNODE(n)) {
|
if (IS_TNODE(n)) {
|
||||||
struct tnode *tn = (struct tnode *) n;
|
struct tnode *tn = (struct tnode *) n;
|
||||||
|
|
|
@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
static inline void free_leaf_info(struct leaf_info *leaf)
|
static inline void free_leaf_info(struct leaf_info *leaf)
|
||||||
{
|
{
|
||||||
kfree_rcu(leaf, rcu);
|
kfree_rcu(leaf, rcu);
|
||||||
@@ -360,43 +369,24 @@ static struct tnode *tnode_alloc(size_t
|
@@ -360,43 +369,24 @@ static struct tnode *tnode_alloc(size_t
|
||||||
return vzalloc(size);
|
return vzalloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -823,7 +823,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
seq_printf(seq, "Null ptrs: %u\n", stat->nullpointers);
|
seq_printf(seq, "Null ptrs: %u\n", stat->nullpointers);
|
||||||
seq_printf(seq, "Total size: %u kB\n", (bytes + 1023) / 1024);
|
seq_printf(seq, "Total size: %u kB\n", (bytes + 1023) / 1024);
|
||||||
}
|
}
|
||||||
@@ -2163,7 +2124,7 @@ static int fib_triestat_seq_show(struct
|
@@ -2163,7 +2124,7 @@ static int fib_triestat_seq_show(struct
|
||||||
seq_printf(seq,
|
seq_printf(seq,
|
||||||
"Basic info: size of leaf:"
|
"Basic info: size of leaf:"
|
||||||
" %Zd bytes, size of tnode: %Zd bytes.\n",
|
" %Zd bytes, size of tnode: %Zd bytes.\n",
|
||||||
|
@ -859,7 +859,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
++*pos;
|
++*pos;
|
||||||
/* next node in same table */
|
/* next node in same table */
|
||||||
@@ -2330,29 +2291,26 @@ static inline const char *rtn_type(char
|
@@ -2329,29 +2290,26 @@ static inline const char *rtn_type(char
|
||||||
static int fib_trie_seq_show(struct seq_file *seq, void *v)
|
static int fib_trie_seq_show(struct seq_file *seq, void *v)
|
||||||
{
|
{
|
||||||
const struct fib_trie_iter *iter = seq->private;
|
const struct fib_trie_iter *iter = seq->private;
|
||||||
|
@ -896,7 +896,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
struct fib_alias *fa;
|
struct fib_alias *fa;
|
||||||
|
|
||||||
list_for_each_entry_rcu(fa, &li->falh, fa_list) {
|
list_for_each_entry_rcu(fa, &li->falh, fa_list) {
|
||||||
@@ -2402,9 +2360,9 @@ struct fib_route_iter {
|
@@ -2401,9 +2359,9 @@ struct fib_route_iter {
|
||||||
t_key key;
|
t_key key;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -908,7 +908,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
struct trie *t = iter->main_trie;
|
struct trie *t = iter->main_trie;
|
||||||
|
|
||||||
/* use cache location of last found key */
|
/* use cache location of last found key */
|
||||||
@@ -2449,7 +2407,7 @@ static void *fib_route_seq_start(struct
|
@@ -2448,7 +2406,7 @@ static void *fib_route_seq_start(struct
|
||||||
static void *fib_route_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
static void *fib_route_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||||
{
|
{
|
||||||
struct fib_route_iter *iter = seq->private;
|
struct fib_route_iter *iter = seq->private;
|
||||||
|
@ -917,7 +917,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
++*pos;
|
++*pos;
|
||||||
if (v == SEQ_START_TOKEN) {
|
if (v == SEQ_START_TOKEN) {
|
||||||
@@ -2495,7 +2453,7 @@ static unsigned int fib_flag_trans(int t
|
@@ -2494,7 +2452,7 @@ static unsigned int fib_flag_trans(int t
|
||||||
*/
|
*/
|
||||||
static int fib_route_seq_show(struct seq_file *seq, void *v)
|
static int fib_route_seq_show(struct seq_file *seq, void *v)
|
||||||
{
|
{
|
||||||
|
|
|
@ -149,9 +149,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
+ if (IS_LEAF(n))
|
+ if (IS_LEAF(n))
|
||||||
goto found;
|
goto found;
|
||||||
- }
|
- }
|
||||||
|
|
||||||
- cn = n;
|
|
||||||
-
|
-
|
||||||
|
- cn = n;
|
||||||
|
|
||||||
- /*
|
- /*
|
||||||
- * It's a tnode, and we can do some extra checks here if we
|
- * It's a tnode, and we can do some extra checks here if we
|
||||||
- * like, to avoid descending into a dead-end branch.
|
- * like, to avoid descending into a dead-end branch.
|
||||||
|
|
|
@ -88,12 +88,12 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
- * If we point to a T_TNODE, check if it matches our key. Note that
|
- * If we point to a T_TNODE, check if it matches our key. Note that
|
||||||
- * a T_TNODE might be skipping any number of bits - its 'pos' need
|
- * a T_TNODE might be skipping any number of bits - its 'pos' need
|
||||||
- * not be the parent's 'pos'+'bits'!
|
- * not be the parent's 'pos'+'bits'!
|
||||||
*
|
- *
|
||||||
- * If it does match the current key, get pos/bits from it, extract
|
- * If it does match the current key, get pos/bits from it, extract
|
||||||
- * the index from our key, push the T_TNODE and walk the tree.
|
- * the index from our key, push the T_TNODE and walk the tree.
|
||||||
- *
|
- *
|
||||||
- * If it doesn't, we have to replace it with a new T_TNODE.
|
- * If it doesn't, we have to replace it with a new T_TNODE.
|
||||||
- *
|
*
|
||||||
- * If we point to a T_LEAF, it might or might not have the same key
|
- * If we point to a T_LEAF, it might or might not have the same key
|
||||||
- * as we do. If it does, just change the value, update the T_LEAF's
|
- * as we do. If it does, just change the value, update the T_LEAF's
|
||||||
- * value, and return it.
|
- * value, and return it.
|
||||||
|
@ -129,13 +129,13 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
+ if (index >> n->bits)
|
+ if (index >> n->bits)
|
||||||
break;
|
break;
|
||||||
- }
|
- }
|
||||||
|
-
|
||||||
- /*
|
- /*
|
||||||
- * n ----> NULL, LEAF or TNODE
|
- * n ----> NULL, LEAF or TNODE
|
||||||
- *
|
- *
|
||||||
- * tp is n's (parent) ----> NULL or TNODE
|
- * tp is n's (parent) ----> NULL or TNODE
|
||||||
- */
|
- */
|
||||||
-
|
|
||||||
- BUG_ON(tp && IS_LEAF(tp));
|
- BUG_ON(tp && IS_LEAF(tp));
|
||||||
-
|
-
|
||||||
- /* Case 1: n is a leaf. Compare prefixes */
|
- /* Case 1: n is a leaf. Compare prefixes */
|
||||||
|
@ -162,9 +162,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
-
|
-
|
||||||
- if (!l)
|
- if (!l)
|
||||||
- return NULL;
|
- return NULL;
|
||||||
-
|
|
||||||
- li = leaf_info_new(plen);
|
|
||||||
|
|
||||||
|
- li = leaf_info_new(plen);
|
||||||
|
-
|
||||||
- if (!li) {
|
- if (!li) {
|
||||||
- node_free(l);
|
- node_free(l);
|
||||||
+ l = leaf_new(key);
|
+ l = leaf_new(key);
|
||||||
|
|
|
@ -306,7 +306,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
if (!tn) {
|
if (!tn) {
|
||||||
free_leaf_info(li);
|
free_leaf_info(li);
|
||||||
node_free(l);
|
node_free(l);
|
||||||
@@ -1559,12 +1532,7 @@ static int trie_flush_leaf(struct tnode
|
@@ -1559,12 +1532,7 @@ static int trie_flush_leaf(struct tnode
|
||||||
static struct tnode *leaf_walk_rcu(struct tnode *p, struct tnode *c)
|
static struct tnode *leaf_walk_rcu(struct tnode *p, struct tnode *c)
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
|
@ -329,7 +329,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
tn = p;
|
tn = p;
|
||||||
--iter->depth;
|
--iter->depth;
|
||||||
goto rescan;
|
goto rescan;
|
||||||
@@ -2187,10 +2155,10 @@ static int fib_trie_seq_show(struct seq_
|
@@ -2186,10 +2154,10 @@ static int fib_trie_seq_show(struct seq_
|
||||||
if (IS_TNODE(n)) {
|
if (IS_TNODE(n)) {
|
||||||
__be32 prf = htonl(n->key);
|
__be32 prf = htonl(n->key);
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
struct tnode *tn, *left, *right;
|
struct tnode *tn, *left, *right;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -1532,9 +1530,9 @@ static int trie_flush_leaf(struct tnode
|
@@ -1532,9 +1530,9 @@ static int trie_flush_leaf(struct tnode
|
||||||
static struct tnode *leaf_walk_rcu(struct tnode *p, struct tnode *c)
|
static struct tnode *leaf_walk_rcu(struct tnode *p, struct tnode *c)
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -47,7 +47,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_IP_MULTIPLE_TABLES */
|
#else /* CONFIG_IP_MULTIPLE_TABLES */
|
||||||
@@ -247,20 +250,25 @@ static inline int fib_lookup(struct net
|
@@ -247,20 +250,25 @@ static inline int fib_lookup(struct net
|
||||||
struct fib_result *res)
|
struct fib_result *res)
|
||||||
{
|
{
|
||||||
if (!net->ipv4.fib_has_custom_rules) {
|
if (!net->ipv4.fib_has_custom_rules) {
|
||||||
|
@ -164,7 +164,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nl_fib_input(struct sk_buff *skb)
|
static void nl_fib_input(struct sk_buff *skb)
|
||||||
@@ -952,7 +958,6 @@ static void nl_fib_input(struct sk_buff
|
@@ -952,7 +958,6 @@ static void nl_fib_input(struct sk_buff
|
||||||
struct net *net;
|
struct net *net;
|
||||||
struct fib_result_nl *frn;
|
struct fib_result_nl *frn;
|
||||||
struct nlmsghdr *nlh;
|
struct nlmsghdr *nlh;
|
||||||
|
@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
u32 portid;
|
u32 portid;
|
||||||
|
|
||||||
net = sock_net(skb->sk);
|
net = sock_net(skb->sk);
|
||||||
@@ -967,9 +972,7 @@ static void nl_fib_input(struct sk_buff
|
@@ -967,9 +972,7 @@ static void nl_fib_input(struct sk_buff
|
||||||
nlh = nlmsg_hdr(skb);
|
nlh = nlmsg_hdr(skb);
|
||||||
|
|
||||||
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
||||||
|
|
|
@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
/* tnodes to free after resize(); protected by RTNL */
|
/* tnodes to free after resize(); protected by RTNL */
|
||||||
static struct callback_head *tnode_free_head;
|
static struct callback_head *tnode_free_head;
|
||||||
static size_t tnode_free_size;
|
static size_t tnode_free_size;
|
||||||
@@ -447,161 +445,6 @@ static void put_child_root(struct tnode
|
@@ -447,161 +445,6 @@ static void put_child_root(struct tnode
|
||||||
rcu_assign_pointer(t->trie, n);
|
rcu_assign_pointer(t->trie, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
int max_work;
|
int max_work;
|
||||||
|
|
||||||
if (!tn)
|
if (!tn)
|
||||||
@@ -668,86 +750,12 @@ static struct tnode *resize(struct trie
|
@@ -668,86 +750,12 @@ static struct tnode *resize(struct trie
|
||||||
/* One child */
|
/* One child */
|
||||||
if (tn->empty_children == (tnode_child_length(tn) - 1))
|
if (tn->empty_children == (tnode_child_length(tn) - 1))
|
||||||
goto one_child;
|
goto one_child;
|
||||||
|
@ -229,7 +229,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
old_tn = tn;
|
old_tn = tn;
|
||||||
tn = inflate(t, tn);
|
tn = inflate(t, tn);
|
||||||
|
|
||||||
@@ -764,16 +772,11 @@ static struct tnode *resize(struct trie
|
@@ -764,16 +772,11 @@ static struct tnode *resize(struct trie
|
||||||
if (max_work != MAX_WORK)
|
if (max_work != MAX_WORK)
|
||||||
return tn;
|
return tn;
|
||||||
|
|
||||||
|
|
|
@ -231,7 +231,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
/* No children */
|
/* No children */
|
||||||
if (tn->empty_children > (tnode_child_length(tn) - 1))
|
if (tn->empty_children > (tnode_child_length(tn) - 1))
|
||||||
goto no_children;
|
goto no_children;
|
||||||
@@ -755,39 +756,35 @@ static struct tnode *resize(struct trie
|
@@ -755,39 +756,35 @@ static struct tnode *resize(struct trie
|
||||||
* nonempty nodes that are above the threshold.
|
* nonempty nodes that are above the threshold.
|
||||||
*/
|
*/
|
||||||
max_work = MAX_WORK;
|
max_work = MAX_WORK;
|
||||||
|
|
|
@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
static size_t tnode_free_size;
|
static size_t tnode_free_size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -307,32 +305,6 @@ static struct tnode *tnode_alloc(size_t
|
@@ -307,32 +305,6 @@ static struct tnode *tnode_alloc(size_t
|
||||||
return vzalloc(size);
|
return vzalloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
static struct tnode *leaf_new(t_key key)
|
static struct tnode *leaf_new(t_key key)
|
||||||
{
|
{
|
||||||
struct tnode *l = kmem_cache_alloc(trie_leaf_kmem, GFP_KERNEL);
|
struct tnode *l = kmem_cache_alloc(trie_leaf_kmem, GFP_KERNEL);
|
||||||
@@ -433,17 +405,33 @@ static void put_child_root(struct tnode
|
@@ -433,17 +405,33 @@ static void put_child_root(struct tnode
|
||||||
rcu_assign_pointer(t->trie, n);
|
rcu_assign_pointer(t->trie, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -599,17 +593,20 @@ static int halve(struct trie *t, struct
|
@@ -599,17 +593,20 @@ static int halve(struct trie *t, struct
|
||||||
struct tnode *newn;
|
struct tnode *newn;
|
||||||
|
|
||||||
newn = tnode_new(left->key, oldtnode->pos, 1);
|
newn = tnode_new(left->key, oldtnode->pos, 1);
|
||||||
|
@ -192,7 +192,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
for (i = 0; i < olen; i += 2) {
|
for (i = 0; i < olen; i += 2) {
|
||||||
struct tnode *newBinNode;
|
struct tnode *newBinNode;
|
||||||
|
|
||||||
@@ -636,11 +633,14 @@ static int halve(struct trie *t, struct
|
@@ -636,11 +633,14 @@ static int halve(struct trie *t, struct
|
||||||
|
|
||||||
put_child(tn, i / 2, newBinNode);
|
put_child(tn, i / 2, newBinNode);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/net/ipv4/fib_trie.c
|
+++ b/net/ipv4/fib_trie.c
|
||||||
@@ -391,8 +391,6 @@ static void put_child(struct tnode *tn,
|
@@ -391,8 +391,6 @@ static void put_child(struct tnode *tn,
|
||||||
else if (!wasfull && isfull)
|
else if (!wasfull && isfull)
|
||||||
tn->full_children++;
|
tn->full_children++;
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
pr_debug("In halve\n");
|
pr_debug("In halve\n");
|
||||||
|
|
||||||
@@ -577,68 +575,64 @@ static int halve(struct trie *t, struct
|
@@ -577,68 +575,64 @@ static int halve(struct trie *t, struct
|
||||||
if (!tn)
|
if (!tn)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
tn->pos = pos;
|
tn->pos = pos;
|
||||||
tn->bits = bits;
|
tn->bits = bits;
|
||||||
tn->key = (shift < KEYLENGTH) ? (key >> shift) << shift : 0;
|
tn->key = (shift < KEYLENGTH) ? (key >> shift) << shift : 0;
|
||||||
@@ -387,6 +390,9 @@ static void put_child(struct tnode *tn,
|
@@ -387,6 +390,9 @@ static void put_child(struct tnode *tn,
|
||||||
else if (!wasfull && isfull)
|
else if (!wasfull && isfull)
|
||||||
tn->full_children++;
|
tn->full_children++;
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
rcu_assign_pointer(tn->child[i], n);
|
rcu_assign_pointer(tn->child[i], n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,6 +641,41 @@ static int halve(struct trie *t, struct
|
@@ -635,6 +641,41 @@ static int halve(struct trie *t, struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
-static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new)
|
-static void insert_leaf_info(struct hlist_head *head, struct leaf_info *new)
|
||||||
+static void leaf_pull_suffix(struct tnode *l)
|
+static void leaf_pull_suffix(struct tnode *l)
|
||||||
{
|
+{
|
||||||
+ struct tnode *tp = node_parent(l);
|
+ struct tnode *tp = node_parent(l);
|
||||||
+
|
+
|
||||||
+ while (tp && (tp->slen > tp->pos) && (tp->slen > l->slen)) {
|
+ while (tp && (tp->slen > tp->pos) && (tp->slen > l->slen)) {
|
||||||
|
@ -169,7 +169,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void insert_leaf_info(struct tnode *l, struct leaf_info *new)
|
+static void insert_leaf_info(struct tnode *l, struct leaf_info *new)
|
||||||
+{
|
{
|
||||||
+ struct hlist_head *head = &l->list;
|
+ struct hlist_head *head = &l->list;
|
||||||
struct leaf_info *li = NULL, *last = NULL;
|
struct leaf_info *li = NULL, *last = NULL;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/net/ipv4/fib_trie.c
|
+++ b/net/ipv4/fib_trie.c
|
||||||
@@ -396,8 +396,30 @@ static void put_child(struct tnode *tn,
|
@@ -396,8 +396,30 @@ static void put_child(struct tnode *tn,
|
||||||
rcu_assign_pointer(tn->child[i], n);
|
rcu_assign_pointer(tn->child[i], n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +150,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
- tp = node_parent(oldtnode);
|
- tp = node_parent(oldtnode);
|
||||||
- NODE_INIT_PARENT(tn, tp);
|
- NODE_INIT_PARENT(tn, tp);
|
||||||
- put_child_root(tp, t, tn->key, tn);
|
- put_child_root(tp, t, tn->key, tn);
|
||||||
-
|
+ /* setup the parent pointers into and out of this node */
|
||||||
|
+ replace(t, oldtnode, tn);
|
||||||
|
|
||||||
- /* prepare oldtnode to be freed */
|
- /* prepare oldtnode to be freed */
|
||||||
- tnode_free_init(oldtnode);
|
- tnode_free_init(oldtnode);
|
||||||
-
|
-
|
||||||
|
@ -170,9 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
- /* fetch new nodes */
|
- /* fetch new nodes */
|
||||||
- node1 = tnode_get_child(tn, 2 * i + 1);
|
- node1 = tnode_get_child(tn, 2 * i + 1);
|
||||||
- node0 = tnode_get_child(tn, 2 * i);
|
- node0 = tnode_get_child(tn, 2 * i);
|
||||||
+ /* setup the parent pointers into and out of this node */
|
-
|
||||||
+ replace(t, oldtnode, tn);
|
|
||||||
|
|
||||||
- /* bits == 1 then node0 and node1 represent inode's children */
|
- /* bits == 1 then node0 and node1 represent inode's children */
|
||||||
- if (inode->bits == 1) {
|
- if (inode->bits == 1) {
|
||||||
- node_set_parent(node1, tn);
|
- node_set_parent(node1, tn);
|
||||||
|
@ -207,7 +207,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
|
|
||||||
pr_debug("In halve\n");
|
pr_debug("In halve\n");
|
||||||
@@ -577,14 +588,18 @@ static int halve(struct trie *t, struct
|
@@ -577,14 +588,18 @@ static int halve(struct trie *t, struct
|
||||||
if (!tn)
|
if (!tn)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -228,7 +228,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
/* At least one of the children is empty */
|
/* At least one of the children is empty */
|
||||||
if (!node1 || !node0) {
|
if (!node1 || !node0) {
|
||||||
@@ -609,34 +624,8 @@ static int halve(struct trie *t, struct
|
@@ -609,34 +624,8 @@ static int halve(struct trie *t, struct
|
||||||
put_child(tn, i / 2, inode);
|
put_child(tn, i / 2, inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
struct tnode __rcu *child[0];
|
struct tnode __rcu *child[0];
|
||||||
};
|
};
|
||||||
/* This list pointer if valid if bits == 0 (LEAF) */
|
/* This list pointer if valid if bits == 0 (LEAF) */
|
||||||
@@ -302,6 +303,16 @@ static struct tnode *tnode_alloc(size_t
|
@@ -302,6 +303,16 @@ static struct tnode *tnode_alloc(size_t
|
||||||
return vzalloc(size);
|
return vzalloc(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("AT %p s=%zu %zu\n", tn, sizeof(struct tnode),
|
pr_debug("AT %p s=%zu %zu\n", tn, sizeof(struct tnode),
|
||||||
@@ -375,11 +388,11 @@ static void put_child(struct tnode *tn,
|
@@ -375,11 +388,11 @@ static void put_child(struct tnode *tn,
|
||||||
|
|
||||||
BUG_ON(i >= tnode_child_length(tn));
|
BUG_ON(i >= tnode_child_length(tn));
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
/* update fullChildren */
|
/* update fullChildren */
|
||||||
wasfull = tnode_full(tn, chi);
|
wasfull = tnode_full(tn, chi);
|
||||||
@@ -630,6 +643,24 @@ static int halve(struct trie *t, struct
|
@@ -630,6 +643,24 @@ static int halve(struct trie *t, struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
static unsigned char update_suffix(struct tnode *tn)
|
static unsigned char update_suffix(struct tnode *tn)
|
||||||
{
|
{
|
||||||
unsigned char slen = tn->pos;
|
unsigned char slen = tn->pos;
|
||||||
@@ -729,10 +760,12 @@ static bool should_inflate(const struct
|
@@ -729,10 +760,12 @@ static bool should_inflate(const struct
|
||||||
|
|
||||||
/* Keep root node larger */
|
/* Keep root node larger */
|
||||||
threshold *= tp ? inflate_threshold : inflate_threshold_root;
|
threshold *= tp ? inflate_threshold : inflate_threshold_root;
|
||||||
|
|
|
@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
struct fib_info *fi)
|
struct fib_info *fi)
|
||||||
--- a/net/ipv4/fib_semantics.c
|
--- a/net/ipv4/fib_semantics.c
|
||||||
+++ b/net/ipv4/fib_semantics.c
|
+++ b/net/ipv4/fib_semantics.c
|
||||||
@@ -414,24 +414,6 @@ errout:
|
@@ -410,24 +410,6 @@ errout:
|
||||||
rtnl_set_sk_err(info->nl_net, RTNLGRP_IPV4_ROUTE, err);
|
rtnl_set_sk_err(info->nl_net, RTNLGRP_IPV4_ROUTE, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
l->slen = KEYLENGTH - new->plen;
|
l->slen = KEYLENGTH - new->plen;
|
||||||
leaf_push_suffix(l);
|
leaf_push_suffix(l);
|
||||||
}
|
}
|
||||||
@@ -1613,6 +1606,7 @@ static int trie_flush_leaf(struct tnode
|
@@ -1613,6 +1606,7 @@ static int trie_flush_leaf(struct tnode
|
||||||
struct hlist_head *lih = &l->list;
|
struct hlist_head *lih = &l->list;
|
||||||
struct hlist_node *tmp;
|
struct hlist_node *tmp;
|
||||||
struct leaf_info *li = NULL;
|
struct leaf_info *li = NULL;
|
||||||
|
@ -72,7 +72,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
hlist_for_each_entry_safe(li, tmp, lih, hlist) {
|
hlist_for_each_entry_safe(li, tmp, lih, hlist) {
|
||||||
found += trie_flush_list(&li->falh);
|
found += trie_flush_list(&li->falh);
|
||||||
@@ -1620,8 +1614,14 @@ static int trie_flush_leaf(struct tnode
|
@@ -1620,8 +1614,14 @@ static int trie_flush_leaf(struct tnode
|
||||||
if (list_empty(&li->falh)) {
|
if (list_empty(&li->falh)) {
|
||||||
hlist_del_rcu(&li->hlist);
|
hlist_del_rcu(&li->hlist);
|
||||||
free_leaf_info(li);
|
free_leaf_info(li);
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -556,6 +562,17 @@ static int jffs2_scan_eraseblock (struct
|
@@ -561,6 +567,17 @@ full_scan:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
static void rt_fibinfo_free(struct rtable __rcu **rtp)
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/net/ipv4/fib_trie.c
|
+++ b/net/ipv4/fib_trie.c
|
||||||
@@ -2324,6 +2324,7 @@ static const char *const rtn_type_names[
|
@@ -2236,6 +2236,7 @@ static const char *const rtn_type_names[
|
||||||
[RTN_THROW] = "THROW",
|
[RTN_THROW] = "THROW",
|
||||||
[RTN_NAT] = "NAT",
|
[RTN_NAT] = "NAT",
|
||||||
[RTN_XRESOLVE] = "XRESOLVE",
|
[RTN_XRESOLVE] = "XRESOLVE",
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|
||||||
--- a/include/linux/usb/hcd.h
|
--- a/include/linux/usb/hcd.h
|
||||||
+++ b/include/linux/usb/hcd.h
|
+++ b/include/linux/usb/hcd.h
|
||||||
@@ -442,7 +442,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
@@ -444,7 +444,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
||||||
extern void usb_hcd_pci_remove(struct pci_dev *dev);
|
extern void usb_hcd_pci_remove(struct pci_dev *dev);
|
||||||
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
|
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
* @dev: device the buffer will be used with
|
* @dev: device the buffer will be used with
|
||||||
--- a/include/linux/usb.h
|
--- a/include/linux/usb.h
|
||||||
+++ b/include/linux/usb.h
|
+++ b/include/linux/usb.h
|
||||||
@@ -700,6 +700,7 @@ static inline bool usb_device_no_sg_cons
|
@@ -695,6 +695,7 @@ static inline bool usb_device_no_sg_cons
|
||||||
return udev && udev->bus && udev->bus->no_sg_constraint;
|
return udev && udev->bus && udev->bus->no_sg_constraint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,7 @@
|
||||||
|
|
||||||
--- a/net/ipv4/fib_trie.c
|
--- a/net/ipv4/fib_trie.c
|
||||||
+++ b/net/ipv4/fib_trie.c
|
+++ b/net/ipv4/fib_trie.c
|
||||||
@@ -2581,10 +2581,12 @@ static const struct file_operations fib_
|
@@ -2490,10 +2490,12 @@ static const struct file_operations fib_
|
||||||
|
|
||||||
int __net_init fib_proc_init(struct net *net)
|
int __net_init fib_proc_init(struct net *net)
|
||||||
{
|
{
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
&fib_triestat_fops))
|
&fib_triestat_fops))
|
||||||
goto out2;
|
goto out2;
|
||||||
|
|
||||||
@@ -2594,17 +2596,21 @@ int __net_init fib_proc_init(struct net
|
@@ -2503,17 +2505,21 @@ int __net_init fib_proc_init(struct net
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out3:
|
out3:
|
||||||
|
|
|
@ -12,8 +12,6 @@ Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
|
||||||
3 files changed, 167 insertions(+), 27 deletions(-)
|
3 files changed, 167 insertions(+), 27 deletions(-)
|
||||||
create mode 100644 arch/mips/kernel/machine_kexec.h
|
create mode 100644 arch/mips/kernel/machine_kexec.h
|
||||||
|
|
||||||
diff --git a/arch/mips/kernel/machine_kexec.c b/arch/mips/kernel/machine_kexec.c
|
|
||||||
index 50980bf3..b9c0f75 100644
|
|
||||||
--- a/arch/mips/kernel/machine_kexec.c
|
--- a/arch/mips/kernel/machine_kexec.c
|
||||||
+++ b/arch/mips/kernel/machine_kexec.c
|
+++ b/arch/mips/kernel/machine_kexec.c
|
||||||
@@ -10,45 +10,145 @@
|
@@ -10,45 +10,145 @@
|
||||||
|
@ -195,7 +193,9 @@ index 50980bf3..b9c0f75 100644
|
||||||
kexec_indirection_page = (unsigned long)&image->head;
|
kexec_indirection_page = (unsigned long)&image->head;
|
||||||
}
|
}
|
||||||
+ pr_info("kexec_indirection_page = %p\n", (void *)kexec_indirection_page);
|
+ pr_info("kexec_indirection_page = %p\n", (void *)kexec_indirection_page);
|
||||||
+
|
|
||||||
|
- memcpy((void*)reboot_code_buffer, relocate_new_kernel,
|
||||||
|
- relocate_new_kernel_size);
|
||||||
+ pr_info("Where is memcpy: %p\n", memcpy);
|
+ pr_info("Where is memcpy: %p\n", memcpy);
|
||||||
+ pr_info("kexec_relocate_new_kernel = %p, kexec_relocate_new_kernel_end = %p\n",
|
+ pr_info("kexec_relocate_new_kernel = %p, kexec_relocate_new_kernel_end = %p\n",
|
||||||
+ (void *)kexec_relocate_new_kernel, &kexec_relocate_new_kernel_end);
|
+ (void *)kexec_relocate_new_kernel, &kexec_relocate_new_kernel_end);
|
||||||
|
@ -203,9 +203,7 @@ index 50980bf3..b9c0f75 100644
|
||||||
+ (void *)kexec_relocate_new_kernel, (void *)reboot_code_buffer);
|
+ (void *)kexec_relocate_new_kernel, (void *)reboot_code_buffer);
|
||||||
+ memcpy((void*)reboot_code_buffer, kexec_relocate_new_kernel,
|
+ memcpy((void*)reboot_code_buffer, kexec_relocate_new_kernel,
|
||||||
+ KEXEC_RELOCATE_NEW_KERNEL_SIZE);
|
+ KEXEC_RELOCATE_NEW_KERNEL_SIZE);
|
||||||
|
+
|
||||||
- memcpy((void*)reboot_code_buffer, relocate_new_kernel,
|
|
||||||
- relocate_new_kernel_size);
|
|
||||||
+ pr_info("Before _print_args().\n");
|
+ pr_info("Before _print_args().\n");
|
||||||
+ machine_kexec_print_args();
|
+ machine_kexec_print_args();
|
||||||
+ pr_info("Before eval loop.\n");
|
+ pr_info("Before eval loop.\n");
|
||||||
|
@ -232,9 +230,6 @@ index 50980bf3..b9c0f75 100644
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
atomic_set(&kexec_ready_to_reboot, 1);
|
atomic_set(&kexec_ready_to_reboot, 1);
|
||||||
#endif
|
#endif
|
||||||
diff --git a/arch/mips/kernel/machine_kexec.h b/arch/mips/kernel/machine_kexec.h
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..ae0961e
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/mips/kernel/machine_kexec.h
|
+++ b/arch/mips/kernel/machine_kexec.h
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,20 @@
|
||||||
|
@ -258,8 +253,6 @@ index 0000000..ae0961e
|
||||||
+#define KEXEC_MAX_ARGC (KEXEC_ARGV_SIZE / sizeof(long))
|
+#define KEXEC_MAX_ARGC (KEXEC_ARGV_SIZE / sizeof(long))
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
diff --git a/arch/mips/kernel/relocate_kernel.S b/arch/mips/kernel/relocate_kernel.S
|
|
||||||
index 74bab9d..2c92c50 100644
|
|
||||||
--- a/arch/mips/kernel/relocate_kernel.S
|
--- a/arch/mips/kernel/relocate_kernel.S
|
||||||
+++ b/arch/mips/kernel/relocate_kernel.S
|
+++ b/arch/mips/kernel/relocate_kernel.S
|
||||||
@@ -12,8 +12,9 @@
|
@@ -12,8 +12,9 @@
|
||||||
|
@ -291,18 +284,15 @@ index 74bab9d..2c92c50 100644
|
||||||
+ EXPORT(kexec_argv_buf)
|
+ EXPORT(kexec_argv_buf)
|
||||||
+ .skip KEXEC_COMMAND_LINE_SIZE
|
+ .skip KEXEC_COMMAND_LINE_SIZE
|
||||||
+ .size kexec_argv_buf, KEXEC_COMMAND_LINE_SIZE
|
+ .size kexec_argv_buf, KEXEC_COMMAND_LINE_SIZE
|
||||||
|
+
|
||||||
|
+kexec_argv:
|
||||||
|
+ EXPORT(kexec_argv)
|
||||||
|
+ .skip KEXEC_ARGV_SIZE
|
||||||
|
+ .size kexec_argv, KEXEC_ARGV_SIZE
|
||||||
|
|
||||||
-relocate_new_kernel_size:
|
-relocate_new_kernel_size:
|
||||||
- EXPORT(relocate_new_kernel_size)
|
- EXPORT(relocate_new_kernel_size)
|
||||||
- PTR relocate_new_kernel_end - relocate_new_kernel
|
- PTR relocate_new_kernel_end - relocate_new_kernel
|
||||||
- .size relocate_new_kernel_size, PTRSIZE
|
- .size relocate_new_kernel_size, PTRSIZE
|
||||||
+kexec_argv:
|
|
||||||
+ EXPORT(kexec_argv)
|
|
||||||
+ .skip KEXEC_ARGV_SIZE
|
|
||||||
+ .size kexec_argv, KEXEC_ARGV_SIZE
|
|
||||||
+
|
|
||||||
+kexec_relocate_new_kernel_end:
|
+kexec_relocate_new_kernel_end:
|
||||||
+ EXPORT(kexec_relocate_new_kernel_end)
|
+ EXPORT(kexec_relocate_new_kernel_end)
|
||||||
--
|
|
||||||
1.7.10.4
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/fs/yaffs2/yaffs_vfs.c
|
--- a/fs/yaffs2/yaffs_vfs.c
|
||||||
+++ b/fs/yaffs2/yaffs_vfs.c
|
+++ b/fs/yaffs2/yaffs_vfs.c
|
||||||
@@ -796,13 +796,13 @@
|
@@ -796,13 +796,13 @@ static int yaffs_sync_object(struct file
|
||||||
static const struct file_operations yaffs_file_operations = {
|
static const struct file_operations yaffs_file_operations = {
|
||||||
.read = do_sync_read,
|
.read = do_sync_read,
|
||||||
.write = do_sync_write,
|
.write = do_sync_write,
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
.llseek = generic_file_llseek,
|
.llseek = generic_file_llseek,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1050,7 +1050,7 @@
|
@@ -1050,7 +1050,7 @@ static int yaffs_readlink(struct dentry
|
||||||
if (!alias)
|
if (!alias)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -556,6 +562,17 @@ static int jffs2_scan_eraseblock (struct
|
@@ -561,6 +567,17 @@ full_scan:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,9 @@ Can we have it for 3.20, please?
|
||||||
drivers/net/ethernet/broadcom/bgmac.c | 5 +++--
|
drivers/net/ethernet/broadcom/bgmac.c | 5 +++--
|
||||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
|
|
||||||
index 3007d95..728373b 100644
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||||
@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct bgmac *bgmac)
|
@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct
|
||||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
|
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
|
||||||
static int bgmac_probe(struct bcma_device *core)
|
static int bgmac_probe(struct bcma_device *core)
|
||||||
{
|
{
|
||||||
|
@ -30,7 +28,7 @@ index 3007d95..728373b 100644
|
||||||
struct net_device *net_dev;
|
struct net_device *net_dev;
|
||||||
struct bgmac *bgmac;
|
struct bgmac *bgmac;
|
||||||
struct ssb_sprom *sprom = &core->bus->sprom;
|
struct ssb_sprom *sprom = &core->bus->sprom;
|
||||||
@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_device *core)
|
@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_devic
|
||||||
bgmac_chip_reset(bgmac);
|
bgmac_chip_reset(bgmac);
|
||||||
|
|
||||||
/* For Northstar, we have to take all GMAC core out of reset */
|
/* For Northstar, we have to take all GMAC core out of reset */
|
||||||
|
@ -41,6 +39,3 @@ index 3007d95..728373b 100644
|
||||||
struct bcma_device *ns_core;
|
struct bcma_device *ns_core;
|
||||||
int ns_gmac;
|
int ns_gmac;
|
||||||
|
|
||||||
--
|
|
||||||
1.8.4.5
|
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|
||||||
--- a/include/linux/usb/hcd.h
|
--- a/include/linux/usb/hcd.h
|
||||||
+++ b/include/linux/usb/hcd.h
|
+++ b/include/linux/usb/hcd.h
|
||||||
@@ -445,7 +445,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
@@ -447,7 +447,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
||||||
extern void usb_hcd_pci_remove(struct pci_dev *dev);
|
extern void usb_hcd_pci_remove(struct pci_dev *dev);
|
||||||
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
|
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
* @dev: device the buffer will be used with
|
* @dev: device the buffer will be used with
|
||||||
--- a/include/linux/usb.h
|
--- a/include/linux/usb.h
|
||||||
+++ b/include/linux/usb.h
|
+++ b/include/linux/usb.h
|
||||||
@@ -700,6 +700,7 @@ static inline bool usb_device_no_sg_cons
|
@@ -695,6 +695,7 @@ static inline bool usb_device_no_sg_cons
|
||||||
return udev && udev->bus && udev->bus->no_sg_constraint;
|
return udev && udev->bus && udev->bus->no_sg_constraint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/fs/yaffs2/yaffs_vfs.c
|
--- a/fs/yaffs2/yaffs_vfs.c
|
||||||
+++ b/fs/yaffs2/yaffs_vfs.c
|
+++ b/fs/yaffs2/yaffs_vfs.c
|
||||||
@@ -796,13 +796,13 @@
|
@@ -796,13 +796,13 @@ static int yaffs_sync_object(struct file
|
||||||
static const struct file_operations yaffs_file_operations = {
|
static const struct file_operations yaffs_file_operations = {
|
||||||
.read = do_sync_read,
|
.read = do_sync_read,
|
||||||
.write = do_sync_write,
|
.write = do_sync_write,
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
.llseek = generic_file_llseek,
|
.llseek = generic_file_llseek,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1050,7 +1050,7 @@
|
@@ -1050,7 +1050,7 @@ static int yaffs_readlink(struct dentry
|
||||||
if (!alias)
|
if (!alias)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
#define PACKET_FANOUT_LB 1
|
#define PACKET_FANOUT_LB 1
|
||||||
--- a/net/packet/af_packet.c
|
--- a/net/packet/af_packet.c
|
||||||
+++ b/net/packet/af_packet.c
|
+++ b/net/packet/af_packet.c
|
||||||
@@ -1533,6 +1533,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1541,6 +1541,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
{
|
{
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
struct sockaddr_pkt *spkt;
|
struct sockaddr_pkt *spkt;
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When we registered the protocol we saved the socket in the data
|
* When we registered the protocol we saved the socket in the data
|
||||||
@@ -1540,6 +1541,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1548,6 +1549,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sk = pt->af_packet_priv;
|
sk = pt->af_packet_priv;
|
||||||
|
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Yank back the headers [hope the device set this
|
* Yank back the headers [hope the device set this
|
||||||
@@ -1552,7 +1554,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1560,7 +1562,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
* so that this procedure is noop.
|
* so that this procedure is noop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
@@ -1759,12 +1761,12 @@ static int packet_rcv(struct sk_buff *sk
|
@@ -1767,12 +1769,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||||
int skb_len = skb->len;
|
int skb_len = skb->len;
|
||||||
unsigned int snaplen, res;
|
unsigned int snaplen, res;
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -1884,12 +1886,12 @@ static int tpacket_rcv(struct sk_buff *s
|
@@ -1892,12 +1894,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -2845,6 +2847,7 @@ static int packet_create(struct net *net
|
@@ -2853,6 +2855,7 @@ static int packet_create(struct net *net
|
||||||
spin_lock_init(&po->bind_lock);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@@ -3428,6 +3431,16 @@ packet_setsockopt(struct socket *sock, i
|
@@ -3442,6 +3445,16 @@ packet_setsockopt(struct socket *sock, i
|
||||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
@@ -3479,6 +3492,13 @@ static int packet_getsockopt(struct sock
|
@@ -3493,6 +3506,13 @@ static int packet_getsockopt(struct sock
|
||||||
case PACKET_VNET_HDR:
|
case PACKET_VNET_HDR:
|
||||||
val = po->has_vnet_hdr;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
|
|
||||||
int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
|
int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
|
||||||
u32 banned_flags)
|
u32 banned_flags)
|
||||||
@@ -5524,6 +5523,9 @@ int __init addrconf_init(void)
|
@@ -5539,6 +5538,9 @@ int __init addrconf_init(void)
|
||||||
|
|
||||||
ipv6_addr_label_rtnl_register();
|
ipv6_addr_label_rtnl_register();
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
return 0;
|
return 0;
|
||||||
errout:
|
errout:
|
||||||
rtnl_af_unregister(&inet6_ops);
|
rtnl_af_unregister(&inet6_ops);
|
||||||
@@ -5543,6 +5545,9 @@ void addrconf_cleanup(void)
|
@@ -5558,6 +5560,9 @@ void addrconf_cleanup(void)
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
obj-$(CONFIG_CICADA_PHY) += cicada.o
|
obj-$(CONFIG_CICADA_PHY) += cicada.o
|
||||||
--- a/include/uapi/linux/Kbuild
|
--- a/include/uapi/linux/Kbuild
|
||||||
+++ b/include/uapi/linux/Kbuild
|
+++ b/include/uapi/linux/Kbuild
|
||||||
@@ -380,6 +380,7 @@ header-y += stddef.h
|
@@ -379,6 +379,7 @@ header-y += stddef.h
|
||||||
header-y += string.h
|
header-y += string.h
|
||||||
header-y += suspend_ioctls.h
|
header-y += suspend_ioctls.h
|
||||||
header-y += swab.h
|
header-y += swab.h
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/net/phy/phy.c
|
--- a/drivers/net/phy/phy.c
|
||||||
+++ b/drivers/net/phy/phy.c
|
+++ b/drivers/net/phy/phy.c
|
||||||
@@ -338,6 +338,50 @@ int phy_ethtool_gset(struct phy_device *
|
@@ -357,6 +357,50 @@ int phy_ethtool_gset(struct phy_device *
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(phy_ethtool_gset);
|
EXPORT_SYMBOL(phy_ethtool_gset);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
#include <bcm47xx_nvram.h>
|
#include <bcm47xx_nvram.h>
|
||||||
|
|
||||||
static const struct bcma_device_id bgmac_bcma_tbl[] = {
|
static const struct bcma_device_id bgmac_bcma_tbl[] = {
|
||||||
@@ -1405,6 +1406,17 @@ static void bgmac_mii_unregister(struct
|
@@ -1398,6 +1399,17 @@ static void bgmac_mii_unregister(struct
|
||||||
mdiobus_free(mii_bus);
|
mdiobus_free(mii_bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* BCMA bus ops
|
* BCMA bus ops
|
||||||
**************************************************/
|
**************************************************/
|
||||||
@@ -1524,6 +1536,16 @@ static int bgmac_probe(struct bcma_devic
|
@@ -1517,6 +1529,16 @@ static int bgmac_probe(struct bcma_devic
|
||||||
goto err_dma_free;
|
goto err_dma_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
err = register_netdev(bgmac->net_dev);
|
err = register_netdev(bgmac->net_dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
bgmac_err(bgmac, "Cannot register net device\n");
|
bgmac_err(bgmac, "Cannot register net device\n");
|
||||||
@@ -1550,6 +1572,10 @@ static void bgmac_remove(struct bcma_dev
|
@@ -1543,6 +1565,10 @@ static void bgmac_remove(struct bcma_dev
|
||||||
{
|
{
|
||||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ Subject: [PATCH] bgmac: check length of received frame
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||||
@@ -363,6 +363,27 @@ static int bgmac_dma_rx_read(struct bgma
|
@@ -360,6 +360,27 @@ static int bgmac_dma_rx_read(struct bgma
|
||||||
dma_addr_t old_dma_addr = slot->dma_addr;
|
dma_addr_t old_dma_addr = slot->dma_addr;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
|
|
@ -830,7 +830,7 @@
|
||||||
+be done automatically.
|
+be done automatically.
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -4463,6 +4463,11 @@ T: git git://linuxtv.org/anttip/media_tr
|
@@ -4474,6 +4474,11 @@ T: git git://linuxtv.org/anttip/media_tr
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/usb/hackrf/
|
F: drivers/media/usb/hackrf/
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/fs/locks.c
|
--- a/fs/locks.c
|
||||||
+++ b/fs/locks.c
|
+++ b/fs/locks.c
|
||||||
@@ -2640,6 +2640,8 @@ static const struct file_operations proc
|
@@ -2641,6 +2641,8 @@ static const struct file_operations proc
|
||||||
|
|
||||||
static int __init proc_locks_init(void)
|
static int __init proc_locks_init(void)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/mm/vmalloc.c
|
+++ b/mm/vmalloc.c
|
||||||
@@ -2661,6 +2661,8 @@ static const struct file_operations proc
|
@@ -2662,6 +2662,8 @@ static const struct file_operations proc
|
||||||
|
|
||||||
static int __init proc_vmalloc_init(void)
|
static int __init proc_vmalloc_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -245,7 +245,7 @@
|
||||||
end = bdata->node_low_pfn;
|
end = bdata->node_low_pfn;
|
||||||
--- a/kernel/module.c
|
--- a/kernel/module.c
|
||||||
+++ b/kernel/module.c
|
+++ b/kernel/module.c
|
||||||
@@ -105,6 +105,9 @@ static LIST_HEAD(modules);
|
@@ -104,6 +104,9 @@ static LIST_HEAD(modules);
|
||||||
#ifdef CONFIG_KGDB_KDB
|
#ifdef CONFIG_KGDB_KDB
|
||||||
struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
|
struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
|
||||||
#endif /* CONFIG_KGDB_KDB */
|
#endif /* CONFIG_KGDB_KDB */
|
||||||
|
|
Loading…
Reference in New Issue